solana-dex-parser
Version:
Solana Dex Transaction Parser
103 lines • 4.4 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPumpswapSellInfo = exports.getPumpswapBuyInfo = exports.getPumpfunTradeInfo = void 0;
const constants_1 = require("../../constants");
const types_1 = require("../../types");
const utils_1 = require("../../utils");
const getPumpfunTradeInfo = (event, info) => {
const tradeType = event.isBuy ? 'BUY' : 'SELL';
const isBuy = tradeType === 'BUY';
return {
type: tradeType,
inputToken: {
mint: isBuy ? constants_1.TOKENS.SOL : event.mint,
amount: isBuy ? (0, types_1.convertToUiAmount)(event.solAmount) : (0, types_1.convertToUiAmount)(event.tokenAmount, 6),
amountRaw: isBuy ? event.solAmount.toString() : event.tokenAmount.toString(),
decimals: isBuy ? 9 : 6,
},
outputToken: {
mint: isBuy ? event.mint : constants_1.TOKENS.SOL,
amount: isBuy ? (0, types_1.convertToUiAmount)(event.tokenAmount, 6) : (0, types_1.convertToUiAmount)(event.solAmount),
amountRaw: isBuy ? event.tokenAmount.toString() : event.solAmount.toString(),
decimals: isBuy ? 6 : 9,
},
user: event.user,
programId: constants_1.DEX_PROGRAMS.PUMP_FUN.id,
amm: info.dexInfo?.amm || constants_1.DEX_PROGRAMS.PUMP_FUN.name,
route: info.dexInfo?.route || '',
slot: info.slot,
timestamp: info.timestamp,
signature: info.signature,
idx: info.idx || '',
};
};
exports.getPumpfunTradeInfo = getPumpfunTradeInfo;
const getPumpswapBuyInfo = (event, inputToken, outputToken, info) => {
const { mint: inputMint, decimals: inputDecimal } = inputToken;
const { mint: outputMint, decimals: ouptDecimal } = outputToken;
return {
type: (0, utils_1.getTradeType)(inputMint, outputMint),
inputToken: {
mint: inputMint,
amount: (0, types_1.convertToUiAmount)(event.quoteAmountInWithLpFee, inputDecimal),
amountRaw: event.quoteAmountInWithLpFee.toString(),
decimals: inputDecimal,
},
outputToken: {
mint: outputMint,
amount: (0, types_1.convertToUiAmount)(event.baseAmountOut, ouptDecimal),
amountRaw: event.baseAmountOut.toString(),
decimals: ouptDecimal,
},
fee: {
mint: inputMint,
amount: (0, types_1.convertToUiAmount)(event.protocolFee, inputDecimal),
amountRaw: event.protocolFee.toString(),
decimals: inputDecimal,
},
user: event.user,
programId: info.dexInfo?.programId || constants_1.DEX_PROGRAMS.PUMP_SWAP.id,
amm: constants_1.DEX_PROGRAMS.PUMP_SWAP.name,
route: info.dexInfo?.route || '',
slot: info.slot,
timestamp: info.timestamp,
signature: info.signature,
idx: info.idx || '',
};
};
exports.getPumpswapBuyInfo = getPumpswapBuyInfo;
const getPumpswapSellInfo = (event, inputToken, outputToken, info) => {
const { mint: inputMint, decimals: inputDecimal } = inputToken;
const { mint: outputMint, decimals: ouptDecimal } = outputToken;
return {
type: (0, utils_1.getTradeType)(inputMint, outputMint),
inputToken: {
mint: inputMint,
amount: (0, types_1.convertToUiAmount)(event.baseAmountIn, inputDecimal),
amountRaw: event.baseAmountIn.toString(),
decimals: inputDecimal,
},
outputToken: {
mint: outputMint,
amount: (0, types_1.convertToUiAmount)(event.userQuoteAmountOut, ouptDecimal),
amountRaw: event.userQuoteAmountOut.toString(),
decimals: ouptDecimal,
},
fee: {
mint: outputMint,
amount: (0, types_1.convertToUiAmount)(event.protocolFee, ouptDecimal),
amountRaw: event.protocolFee.toString(),
decimals: ouptDecimal,
},
user: event.user,
programId: info.dexInfo?.programId || constants_1.DEX_PROGRAMS.PUMP_SWAP.id,
amm: constants_1.DEX_PROGRAMS.PUMP_SWAP.name,
route: info.dexInfo?.route || '',
slot: info.slot,
timestamp: info.timestamp,
signature: info.signature,
idx: info.idx || '',
};
};
exports.getPumpswapSellInfo = getPumpswapSellInfo;
//# sourceMappingURL=util.js.map