UNPKG

solana-dex-parser

Version:

Solana Dex Transaction Parser

126 lines (125 loc) 3.26 kB
import { ParsedTransactionWithMeta, TransactionResponse, VersionedTransactionResponse } from '@solana/web3.js'; /** * Union type for different Solana transaction formats * Supports both parsed and compiled transaction types */ export type SolanaTransaction = ParsedTransactionWithMeta | VersionedTransactionResponse | (TransactionResponse & VersionedTransactionResponse); /** * Configuration options for transaction parsing */ export interface ParseConfig { /** * If true, will try to parse unknown DEXes, results may be inaccurate * @default true */ tryUnknowDEX?: boolean; /** * If set, will only parse transactions from these programIds * @default undefined */ programIds?: string[]; /** * If set, will ignore transactions from these programIds * @default undefined */ ignoreProgramIds?: string[]; } /** * Basic DEX protocol information */ export interface DexInfo { programId?: string; amm?: string; route?: string; } /** * Token information including balances and accounts */ export interface TokenInfo { mint: string; amount: number; amountRaw: string; decimals: number; authority?: string; destination?: string; destinationOwner?: string; destinationBalance?: TokenAmount; destinationPreBalance?: TokenAmount; source?: string; sourceBalance?: TokenAmount; sourcePreBalance?: TokenAmount; } /** * Standard token amount format with both raw and UI amounts */ export interface TokenAmount { amount: string; uiAmount: number | null; decimals: number; } /** * Transfer information for tracking token movements */ export interface TransferInfo { type: 'TRANSFER_IN' | 'TRANSFER_OUT'; token: TokenInfo; from: string; to: string; timestamp: number; signature: string; } /** * Detailed transfer data including account information */ export interface TransferData { type: 'transfer' | 'transferChecked' | string; programId: string; info: { authority?: string; destination: string; destinationOwner?: string; mint: string; source: string; tokenAmount: { amount: string; decimals: number; uiAmount: number; }; sourceBalance?: TokenAmount; sourcePreBalance?: TokenAmount; destinationBalance?: TokenAmount; destinationPreBalance?: TokenAmount; }; idx: string; timestamp: number; signature: string; isFee?: boolean; } /** * Trade direction type */ export type TradeType = 'BUY' | 'SELL'; /** * Comprehensive trade information */ export interface TradeInfo { user: string; type: TradeType; inputToken: TokenInfo; outputToken: TokenInfo; fee?: TokenInfo; programId?: string; amm?: string; route?: string; slot: number; timestamp: number; signature: string; idx: string; } /** * Converts raw token amount to human-readable format * @param amount Raw amount in bigint or string format * @param decimals Token decimals (defaults to 9) * @returns Human-readable amount as number */ export declare const convertToUiAmount: (amount: bigint | string, decimals?: number) => number;