syntax = "proto3";

package roto.test;

// A comprehensive message containing all primitive types and complex structures
// to test the proto-to-rust codegen and runtime accessors.
message ComplexMessage {
  // --- Floating Point ---
  double d_val = 1;
  float f_val = 2;

  // --- Integers (Variable Length) ---
  int32 i32_val = 3;
  int64 i64_val = 4;
  uint32 u32_val = 5;
  uint64 u64_val = 6;
  sint32 si32_val = 7;
  sint64 si64_val = 8;

  // --- Integers (Fixed Length) ---
  fixed32 fx32_val = 9;
  fixed64 fx64_val = 10;
  sfixed32 sfx32_val = 11;
  sfixed64 sfx64_val = 12;

  // --- Other Primitives ---
  bool b_val = 13;
  string s_val = 14;
  bytes bytes_val = 15;

  // --- Enumerations ---
  enum Status {
    UNKNOWN = 0;
    ACTIVE = 1;
    INACTIVE = 2;
    DELETED = 3;
  }
  Status status = 16;

  // --- Repeated Fields ---
  // Testing packed primitives and non-packed types
  repeated int32 repeated_i32 = 17;
  repeated string repeated_string = 18;
  repeated NestedMessage repeated_nested = 19;

  // --- Nested Messages ---
  message NestedMessage {
    int32 id = 1;
    string name = 2;
    bool active = 3;
  }
  NestedMessage single_nested = 20;
}
