From bf5ae62aef607b1ff718edd973e34a9be26cda02 Mon Sep 17 00:00:00 2001 From: Nour Alharithi Date: Tue, 5 Aug 2025 10:03:17 -0700 Subject: [PATCH] add mm oracle data as separate response --- src/utils/utils.ts | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/utils/utils.ts b/src/utils/utils.ts index f8f4f9f..2488ebe 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -100,9 +100,7 @@ export const getOracleForMarket = ( if (isVariant(marketType, 'spot')) { return driftClient.getOracleDataForSpotMarket(marketIndex).price.toNumber(); } else if (isVariant(marketType, 'perp')) { - return driftClient - .getMMOracleDataForPerpMarket(marketIndex) - .price.toNumber(); + return driftClient.getOracleDataForPerpMarket(marketIndex).price.toNumber(); } }; @@ -134,7 +132,8 @@ const getSerializableOraclePriceData = ( export const getOracleDataForMarket = ( driftClient: DriftClient, marketType: MarketType, - marketIndex: number + marketIndex: number, + useMMOracleData = false ): SerializableOraclePriceData => { if (isVariant(marketType, 'spot')) { return getSerializableOraclePriceData( @@ -142,7 +141,9 @@ export const getOracleDataForMarket = ( ); } else if (isVariant(marketType, 'perp')) { return getSerializableOraclePriceData( - driftClient.getMMOracleDataForPerpMarket(marketIndex) + useMMOracleData + ? driftClient.getMMOracleDataForPerpMarket(marketIndex) + : driftClient.getOracleDataForPerpMarket(marketIndex) ); } }; @@ -170,10 +171,20 @@ export const addOracletoResponse = ( marketIndex ); if (!response['oracleData'].price) { - logger.info(`oracle price is undefined for ${marketType}-${marketIndex}`); + logger.info( + `oracle price is undefined or 0 for ${marketType}-${marketIndex}` + ); } - if (Number(response['oracleData'].price) == 0) { - logger.info(`oracle price is 0 for ${marketType}-${marketIndex}`); + response['mmOracleData'] = getOracleDataForMarket( + driftClient, + marketType, + marketIndex, + true + ); + if (!response['mmOracleData'].price && response['mmOracleData'].isActive) { + logger.info( + `mm oracle price is undefined or 0 for ${marketType}-${marketIndex}` + ); } } };