diff --git a/src/dlob-subscriber/DLOBSubscriberIO.ts b/src/dlob-subscriber/DLOBSubscriberIO.ts index ee984c9..b67b1b4 100644 --- a/src/dlob-subscriber/DLOBSubscriberIO.ts +++ b/src/dlob-subscriber/DLOBSubscriberIO.ts @@ -10,6 +10,7 @@ import { import { RedisClient } from '../utils/redisClient'; import { SubscriberLookup, + addMarketSlotToResponse, addOracletoResponse, l2WithBNToStrings, } from '../utils/utils'; @@ -130,7 +131,13 @@ export class DLOBSubscriberIO extends DLOBSubscriber { l2Args.marketType, l2Args.marketIndex ); - + addMarketSlotToResponse( + l2Formatted, + this.driftClient, + l2Args.marketType, + l2Args.marketIndex + ); + const l2Formatted_depth100 = Object.assign({}, l2Formatted, { bids: l2Formatted.bids.slice(0, 100), asks: l2Formatted.asks.slice(0, 100), diff --git a/src/utils/utils.ts b/src/utils/utils.ts index d8530ba..831a7fb 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -132,6 +132,21 @@ export const addOracletoResponse = ( } }; +export const addMarketSlotToResponse = ( + response: L2OrderBook | L3OrderBook, + driftClient: DriftClient, + marketType: MarketType, + marketIndex: number +): void => { + let marketSlot: number; + if (isVariant(marketType, 'perp')) { + marketSlot = driftClient.accountSubscriber.getMarketAccountAndSlot(marketIndex).slot; + } else { + marketSlot = driftClient.accountSubscriber.getSpotMarketAccountAndSlot(marketIndex).slot; + } + response['marketSlot'] = marketSlot; +}; + /** * Takes in a req.query like: `{ * marketName: 'SOL-PERP,BTC-PERP,ETH-PERP',