syntax = "proto3";
package marketdata_messages;


message MarketdataMessage {
  repeated Currency Currencies = 1;
  string Source = 2; // cryptorank for example
}

// did:ethr:0x1 // ETH on Mainnet
// did:ethr:0x1:0x111111111117dc0aa78b770fa6a738034120c302 // 1inch on mainnet
// did:btcr // BTC Mainnet
// did:near // NEAR on mainnet
// did:sol:devnet:2eK2DKs6vdzTEoj842Gfcs6DdtffPpw1iF6JbzQL4TuK

message Token {
  string Id = 1;
  string Did = 2;
  string Network = 3;
  optional string Address = 4;
  optional string TokenId = 5; // For networks like TRON and TRC-10
  bool IsNative = 6;
}

message Currency {
  repeated Token Tokens = 1;
  string Name = 2;
  string Symbol = 3;
  string OriginalId = 4;
  PriceBucket Bucket = 6;
}

message Price {
  uint64 Time = 1;
  double Usd = 2;
}

message PriceBucket {
  uint32 Interval = 1; // Interval in seconds between prices
  repeated Price Prices = 2;
  uint64 LastUpdatedAt = 3;
}
