diff --git a/src/dlob-subscriber/DLOBSubscriberIO.ts b/src/dlob-subscriber/DLOBSubscriberIO.ts index 352a936..d288dd1 100644 --- a/src/dlob-subscriber/DLOBSubscriberIO.ts +++ b/src/dlob-subscriber/DLOBSubscriberIO.ts @@ -4,7 +4,9 @@ import { DriftEnv, L2OrderBookGenerator, MarketType, + PerpOperation, PositionDirection, + isOperationPaused, isVariant, } from '@drift-labs/sdk'; import { RedisClient } from '@drift/common'; @@ -86,9 +88,10 @@ export class DLOBSubscriberIO extends DLOBSubscriber { const perpMarket = this.driftClient.getPerpMarketAccount( market.marketIndex ); - const includeVamm = - !isVariant(perpMarket.status, 'ammPaused') && - !isVariant(perpMarket.status, 'initialized'); + const includeVamm = !isOperationPaused( + perpMarket.pausedOperations, + PerpOperation.AMM_FILL + ); this.marketArgs.push({ marketIndex: market.marketIndex, diff --git a/src/index.ts b/src/index.ts index 54c3935..b72307f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,6 +20,8 @@ import { MarketType, PhoenixSubscriber, BulkAccountLoader, + isOperationPaused, + PerpOperation, } from '@drift-labs/sdk'; import { RedisClient, RedisClientPrefix } from '@drift/common'; @@ -774,11 +776,19 @@ const main = async (): Promise => { } } + let validateIncludeVamm = false; + if (!isSpot && `${includeVamm}`.toLowerCase() === 'true') { + const perpMarket = driftClient.getPerpMarketAccount(normedMarketIndex); + validateIncludeVamm = !isOperationPaused( + perpMarket.pausedOperations, + PerpOperation.AMM_FILL + ); + } const l2 = dlobSubscriber.getL2({ marketIndex: normedMarketIndex, marketType: normedMarketType, depth: parseInt(adjustedDepth as string), - includeVamm: isSpot ? false : `${includeVamm}`.toLowerCase() === 'true', + includeVamm: validateIncludeVamm, numVammOrders: parseInt((numVammOrders ?? '100') as string), fallbackL2Generators: isSpot ? [ @@ -938,13 +948,20 @@ const main = async (): Promise => { } } + let validateIncludeVamm = false; + if (!isSpot && `${includeVamm}`.toLowerCase() === 'true') { + const perpMarket = + driftClient.getPerpMarketAccount(normedMarketIndex); + validateIncludeVamm = !isOperationPaused( + perpMarket.pausedOperations, + PerpOperation.AMM_FILL + ); + } const l2 = dlobSubscriber.getL2({ marketIndex: normedMarketIndex, marketType: normedMarketType, depth: parseInt(adjustedDepth as string), - includeVamm: isSpot - ? false - : `${normedParam['includeVamm']}`.toLowerCase() === 'true', + includeVamm: validateIncludeVamm, fallbackL2Generators: isSpot ? [ `${normedParam['includePhoenix']}`.toLowerCase() === 'true' &&