From b7e342427595039d62b823672ddf0373efdbc3b1 Mon Sep 17 00:00:00 2001 From: Nicholas Clarke Date: Thu, 16 Dec 2021 16:36:17 -0800 Subject: [PATCH] Add parsed for CancelAllPerpOrders --- src/anchorParsers.ts | 69 ++++++++++++++++++++++++++++++++++++++-- src/parseTransactions.ts | 1 + 2 files changed, 68 insertions(+), 2 deletions(-) diff --git a/src/anchorParsers.ts b/src/anchorParsers.ts index 4903651..95b42e1 100644 --- a/src/anchorParsers.ts +++ b/src/anchorParsers.ts @@ -353,7 +353,19 @@ export function anchorParser(parsedTransactions, result, signature, blockTime, s blockDatetime ) ) - } else { + } else if (eventName === "CancelAllPerpOrdersLog") { + parsedTransactions.cancel_all_perp_orders.push( + ...parseCancelAllPerpOrders( + eventNum, + eventData, + signature, + blockTime, + slot, + blockDatetime + ) + ); + } + else { throw new Error("Unknown anchor event: " + eventName); } @@ -1285,4 +1297,57 @@ function parseFillLog( blocktime: blockTime, }; } - \ No newline at end of file + + function parseCancelAllPerpOrders ( + instructionNum, + eventData, + signature, + blockTime, + slot, + blockDatetime + ) { + const config = new Config(IDS); + + const groupConfig = config.groups.find((g) => + g.publicKey.equals(eventData.mangoGroup) + ) as GroupConfig; + + let perpMarketConfig = groupConfig.perpMarkets.find( + (p) => p.marketIndex === eventData.marketIndex.toNumber() + ) as PerpMarketConfig; + + let mangoGroupPk = eventData.mangoGroup.toString(); + let mangoAccount = eventData.mangoAccount.toString(); + + let allOrderIds = eventData.allOrderIds.map(e => e.toString()) + let cancelledOrderIds = eventData.cancelledOrderIds.map(e => e.toString()) + + let cancelled; + let result: any = []; + for (let orderId of allOrderIds) { + + if (cancelledOrderIds.includes(orderId)) { + cancelled = true + } else { + cancelled = false + } + + result.push({ + order_id: orderId, + cancelled: cancelled, + perp_market: perpMarketConfig.name, + base_symbol: perpMarketConfig.baseSymbol, + + mango_account: mangoAccount, + instruction_num: instructionNum, + mango_group: mangoGroupPk, + block_datetime: blockDatetime, + slot: slot, + signature: signature, + blocktime: blockTime, + }); + + } + + return result; + } diff --git a/src/parseTransactions.ts b/src/parseTransactions.ts index 7319a21..1475164 100644 --- a/src/parseTransactions.ts +++ b/src/parseTransactions.ts @@ -33,6 +33,7 @@ export function parseTransactions(transactionsResult, mangoProgramId) { open_orders_balances: [], mango_accrual: [], + cancel_all_perp_orders: [], // Mango: PlacePerpOrder // Mango: CancelPerpOrderByClientI // Mango: CancelPerpOrder