github.com/InjectiveLabs/sdk-go@v1.53.0/chain/stream/types/response.go (about) 1 package types 2 3 import ( 4 "fmt" 5 "time" 6 ) 7 8 type StreamResponseMap struct { 9 tradeEventsCounter uint64 10 BlockHeight uint64 11 BlockTime time.Time 12 BankBalancesByAccount map[string][]*BankBalance 13 SpotOrdersBySubaccount map[string][]*SpotOrderUpdate 14 SpotOrdersByMarketID map[string][]*SpotOrderUpdate 15 DerivativeOrdersBySubaccount map[string][]*DerivativeOrderUpdate 16 DerivativeOrdersByMarketID map[string][]*DerivativeOrderUpdate 17 SpotOrderbookUpdatesByMarketID map[string][]*OrderbookUpdate 18 DerivativeOrderbookUpdatesByMarketID map[string][]*OrderbookUpdate 19 SubaccountDepositsBySubaccountID map[string][]*SubaccountDeposits 20 SpotTradesBySubaccount map[string][]*SpotTrade 21 SpotTradesByMarketID map[string][]*SpotTrade 22 DerivativeTradesBySubaccount map[string][]*DerivativeTrade 23 DerivativeTradesByMarketID map[string][]*DerivativeTrade 24 PositionsBySubaccount map[string][]*Position 25 PositionsByMarketID map[string][]*Position 26 OraclePriceBySymbol map[string][]*OraclePrice 27 } 28 29 func NewStreamResponseMap() *StreamResponseMap { 30 return &StreamResponseMap{ 31 BankBalancesByAccount: map[string][]*BankBalance{}, 32 SpotOrdersBySubaccount: map[string][]*SpotOrderUpdate{}, 33 SpotOrdersByMarketID: map[string][]*SpotOrderUpdate{}, 34 DerivativeOrdersBySubaccount: map[string][]*DerivativeOrderUpdate{}, 35 DerivativeOrdersByMarketID: map[string][]*DerivativeOrderUpdate{}, 36 SpotOrderbookUpdatesByMarketID: map[string][]*OrderbookUpdate{}, 37 DerivativeOrderbookUpdatesByMarketID: map[string][]*OrderbookUpdate{}, 38 SubaccountDepositsBySubaccountID: map[string][]*SubaccountDeposits{}, 39 SpotTradesBySubaccount: map[string][]*SpotTrade{}, 40 SpotTradesByMarketID: map[string][]*SpotTrade{}, 41 DerivativeTradesBySubaccount: map[string][]*DerivativeTrade{}, 42 DerivativeTradesByMarketID: map[string][]*DerivativeTrade{}, 43 PositionsBySubaccount: map[string][]*Position{}, 44 PositionsByMarketID: map[string][]*Position{}, 45 OraclePriceBySymbol: map[string][]*OraclePrice{}, 46 } 47 } 48 49 func NewChainStreamResponse() *StreamResponse { 50 return &StreamResponse{ 51 BankBalances: []*BankBalance{}, 52 SubaccountDeposits: []*SubaccountDeposits{}, 53 SpotTrades: []*SpotTrade{}, 54 DerivativeTrades: []*DerivativeTrade{}, 55 SpotOrders: []*SpotOrderUpdate{}, 56 DerivativeOrders: []*DerivativeOrderUpdate{}, 57 SpotOrderbookUpdates: []*OrderbookUpdate{}, 58 DerivativeOrderbookUpdates: []*OrderbookUpdate{}, 59 Positions: []*Position{}, 60 OraclePrices: []*OraclePrice{}, 61 } 62 } 63 64 func (m *StreamRequest) Validate() error { 65 if m.BankBalancesFilter == nil && 66 m.SubaccountDepositsFilter == nil && 67 m.SpotTradesFilter == nil && 68 m.DerivativeTradesFilter == nil && 69 m.SpotOrdersFilter == nil && 70 m.DerivativeOrdersFilter == nil && 71 m.SpotOrderbooksFilter == nil && 72 m.DerivativeOrderbooksFilter == nil && 73 m.PositionsFilter == nil && 74 m.OraclePriceFilter == nil { 75 return fmt.Errorf("at least one filter must be set") 76 } 77 return nil 78 } 79 80 func (m *StreamResponseMap) NextTradeEventNumber() (tradeNumber uint64) { 81 currentTradesNumber := m.tradeEventsCounter 82 m.tradeEventsCounter++ 83 return currentTradesNumber 84 }