solana_tx_decoding/
lib.rs

1//! # Solana Transaction Decoding
2//!
3//! Library for decoding raw Solana transactions from various sources into standardized formats.
4//!
5//! This library provides:
6//! - Multi-format transaction parsing (Archive, gRPC, JSON RPC)
7//! - Instruction classification and decoding
8//! - Parallel processing ability with Tokio broadcast channels
9//! - Standardized output types (`SwapTx`, `TokenCreation`)
10//! - Protocol-specific instruction processors (Raydium, Pumpswap, Pumpfun)
11//!
12//! ## Usage
13//!
14//! The main entry point is `analyze_tx`, which takes a `TxFormat` enum (containing any transaction
15//! format) and writes decoded swap transactions and token creations to broadcast channels.
16
17mod instruction;
18mod tx;
19mod types;
20mod utilities;
21
22// Re-exports
23pub use tx::analyze_tx::analyze_tx;
24pub use tx::top_level_instructions_loop::top_level_instructions_loop;
25pub use tx::inner_instructions_loop::inner_instructions_loop;
26pub use instruction::classify_instruction::classify_instruction;
27pub use instruction::raydium::process_raydium_ammv4_swap_instruction::process_raydium_ammv4_swap_instruction;
28pub use instruction::raydium::process_raydium_cpmm_swap_instruction::process_raydium_cpmm_swap_instruction;
29pub use instruction::raydium::process_raydium_launchpad_swap_instruction::process_raydium_launchpad_swap_instruction;
30pub use instruction::pumpswap::process_pumpswap_swap_instruction::process_pumpswap_swap_instruction;
31pub use instruction::pumpfun::process_pumpfun_event_instruction::process_pumpfun_event_instruction;
32pub use instruction::pumpfun::process_pf_bonding_curve_create_instruction::process_pf_bonding_curve_create_instruction;
33pub use instruction::raydium::is_raydium_ammv4_swap_instruction::is_raydium_ammv4_swap_instruction;
34pub use instruction::raydium::is_raydium_cpmm_swap_instruction::is_raydium_cpmm_swap_instruction;
35pub use instruction::raydium::is_raydium_launchpad_swap_instruction::is_raydium_launchpad_swap_instruction;
36pub use instruction::pumpswap::is_pumpswap_swap_instruction::is_pumpswap_swap_instruction;
37pub use instruction::pumpfun::is_pumpfun_event_instruction::is_pumpfun_event_instruction;
38pub use instruction::pumpfun::is_pf_bonding_curve_create_instruction::is_pf_bonding_curve_create_instruction;
39pub use types::tx_format::TxFormat;
40pub use types::instruction_type::InstructionType;
41pub use types::archive_tx::ArchiveTx;
42pub use types::grpc_tx::GrpcTx;
43pub use types::json_rpc_tx::JsonRpcTx;
44pub use utilities::fetch_token_metadata_from_uri::fetch_token_metadata_from_uri;