// Complex test proto covering all features
syntax = "proto3";

package test;

// Enum for testing
enum Status {
  UNKNOWN = 0;
  ACTIVE = 1;
  INACTIVE = 2;
  DELETED = 3;
}

// Simple nested message
message Metadata {
  string key = 1;
  string value = 2;
  int64 timestamp = 3;
}

// Message with all field types
message ComplexMessage {
  // Scalar fields
  string id = 1;
  int32 count = 2;
  int64 big_number = 3;
  double price = 4;
  bool active = 5;
  bytes data = 6;

  // Enum field
  Status status = 7;

  // Repeated fields
  repeated string tags = 8;
  repeated int32 numbers = 9;
  repeated Metadata metadata_list = 10;

  // Map fields
  map<string, string> properties = 11;
  map<string, int32> counters = 12;
  map<string, Metadata> metadata_map = 13;
  map<int32, string> id_to_name = 14;

  // Nested message
  message NestedData {
    string name = 1;
    int32 value = 2;
  }
  NestedData nested = 15;

  // Oneof field
  oneof payload {
    string text_payload = 16;
    bytes binary_payload = 17;
    int32 numeric_payload = 18;
  }

  // Deep nesting
  ComplexMessage child = 19;
}

// Message for performance testing
message PerformanceTest {
  string id = 1;
  int32 value1 = 2;
  int32 value2 = 3;
  int32 value3 = 4;
  int32 value4 = 5;
  double score1 = 6;
  double score2 = 7;
  double score3 = 8;
  bool flag1 = 9;
  bool flag2 = 10;
  repeated string tags = 11;
  map<string, int32> counters = 12;
}