syntax = "proto3";
package ethereum.map.v3;
// Amounts are USD stocks, never throughput. Containers add no capital.
// tier_code = 0 means unknown; otherwise local tier is tier_code - 1.
message Asset {
  string id = 1; string symbol = 2; string name = 3; string kind = 4;
  uint32 tier_code = 5; string reason = 6; repeated string sources = 7;
  repeated string dependencies = 8; string underlying = 9; bool tier_bound = 10;
}
message Place {
  string id = 1; string name = 2; string kind = 3; string parent = 4;
  uint32 tier_code = 5; string reason = 6; repeated string sources = 7;
  double reported_usd = 8; repeated string dependencies = 9; bool tier_bound = 10;
}
message Holding {
  string id = 1; string asset = 2; string place = 3; double usd = 4;
  uint64 observed_at = 5; string quality = 6; string source = 7; string note = 8;
}
message Snapshot {
  uint32 schema_version = 1; uint64 built_at = 2; uint64 observed_at = 3;
  string cycle = 4; repeated Asset assets = 5; repeated Place places = 6;
  repeated Holding holdings = 7; repeated string notes = 8;
  double inventory_usd = 9; double excluded_usd = 10;
}
