solana-dex-parser
Version:
Solana Dex Transaction Parser
126 lines (125 loc) • 3.26 kB
TypeScript
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;