syntax = "proto3";

package test;

import "google/protobuf/timestamp.proto";
import "google/protobuf/struct.proto";
import "spawn/actors/extensions.proto";

enum EnumTest {
  ENUM_TEST_UNKNOWN = 0;
  ENUM_TEST_ACTIVE = 1;
  ENUM_TEST_INACTIVE = 2;
}

message TestMessage {
  string name = 1 [(spawn.actors.actor_id) = true];

  int32 age = 2 [(spawn.actors.searchable) = true];;

  double balance = 3;

  bool active = 4;

  bytes document = 5;

  // Nested message type field
  message Address {
    string street = 1;
    string city = 2;
    string state = 3;
    string zip_code = 4;
    message Country {
      string name = 1;
      string code = 2;
    }
    Country country = 5;
  }
  Address address = 7;

  google.protobuf.Timestamp created_at = 8;

  // JSON type field (represented by google.protobuf.Struct)
  google.protobuf.Struct metadata = 9;

  repeated string tags = 10;

  map<string, string> attributes = 11;

  EnumTest enum_test = 12;
}
