UNPKG

solana-dex-parser

Version:

Solana Dex Transaction Parser

40 lines 1.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MeteoraParser = void 0; const constants_1 = require("../../constants"); const utils_1 = require("../../utils"); const base_parser_1 = require("../base-parser"); class MeteoraParser extends base_parser_1.BaseParser { processTrades() { const trades = []; this.classifiedInstructions.forEach(({ instruction, programId, outerIndex, innerIndex }) => { if ([constants_1.DEX_PROGRAMS.METEORA.id, constants_1.DEX_PROGRAMS.METEORA_POOLS.id].includes(programId) && this.notLiquidityEvent(instruction)) { const transfers = this.getTransfersForInstruction(programId, outerIndex, innerIndex); if (transfers.length >= 2) { const trade = this.utils.processSwapData(transfers, { ...this.dexInfo, amm: this.dexInfo.amm || (0, utils_1.getProgramName)(programId), }); if (trade) { trades.push(trade); } } } }); return trades; } notLiquidityEvent(instruction) { const data = (0, utils_1.getInstructionData)(instruction); if (!data) return true; const instructionType = data.slice(0, 8); const isDLMMLiquidity = Object.values(constants_1.DISCRIMINATORS.METEORA_DLMM) .flatMap((it) => Object.values(it)) .some((it) => instructionType.equals(it)); const isPoolsLiquidity = Object.values(constants_1.DISCRIMINATORS.METEORA_POOLS).some((it) => instructionType.equals(it)); return !isDLMMLiquidity && !isPoolsLiquidity; } } exports.MeteoraParser = MeteoraParser; //# sourceMappingURL=parser-meteora.js.map