use sol_parser_sdk::parse_transaction_from_rpc;
use solana_client::rpc_client::RpcClient;
use solana_sdk::signature::Signature;
use std::str::FromStr;
fn main() {
let default_sig =
"64srGF8CnTz9zPbdayWYmzs5aVRFBcfjDcidFVvBgAD25VMh52wr88vma7ytSbAZT3C5Giu5BPyGfNfLexLSrKhP";
let tx_sig = std::env::var("TX_SIGNATURE").unwrap_or_else(|_| default_sig.to_string());
println!("=== PumpFun Transaction Parser ===\n");
println!("Transaction Signature: {}\n", tx_sig);
let rpc_url = std::env::var("SOLANA_RPC_URL")
.unwrap_or_else(|_| "https://api.mainnet-beta.solana.com".to_string());
println!("Connecting to: {}", rpc_url);
let client = RpcClient::new(rpc_url);
let signature = Signature::from_str(&tx_sig).expect("Failed to parse signature");
println!("\n=== Parsing with sol-parser-sdk ===");
println!("Fetching and parsing transaction...\n");
let events = match parse_transaction_from_rpc(&client, &signature, None) {
Ok(events) => events,
Err(e) => {
eprintln!("✗ Failed to parse transaction: {}", e);
eprintln!("\nNote: If the error says 'Transaction not found (RPC returned null)', the tx may be pruned.");
eprintln!("Use an archive RPC (e.g. Helius, QuickNode) or set SOLANA_RPC_URL.");
eprintln!(
"Example: export SOLANA_RPC_URL=https://mainnet.helius-rpc.com/?api-key=YOUR_KEY"
);
std::process::exit(1);
}
};
println!("✓ Parsing completed!");
println!(" Found {} DEX events\n", events.len());
if events.is_empty() {
println!("⚠ No DEX events found in this transaction.");
} else {
println!("=== Parsed Events (SDK Format) ===\n");
for (i, event) in events.iter().enumerate() {
println!("Event #{}: {:?}\n", i + 1, event);
}
}
println!("\n=== Summary ===");
println!("✓ sol-parser-sdk successfully parsed the transaction!");
println!(" The new RPC parsing API supports:");
println!(" - Direct parsing from RPC (no gRPC streaming needed)");
println!(" - Inner instruction parsing (16-byte discriminators)");
println!(" - All 10 DEX protocols (including PumpFun)");
println!(" - Perfect for testing and validation");
println!("\n✓ Example completed!");
}