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  }