diff --git a/README.md b/README.md index 93031ee..f15b5e1 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Add the following to your `Cargo.toml`: ```toml [dependencies] -mai3-pumpfun-sdk = "2.4.0" +mai3-pumpfun-sdk = "2.4.2" ``` ## Usage @@ -50,6 +50,9 @@ let callback = |event: DexEvent| { DexEvent::NewTrade(trade_info) => { println!("Received new trade event: {:?}", trade_info); }, + DexEvent::NewBotTrade(trade_info) => { + println!("Received new bot trade event: {:?}", trade_info); + } DexEvent::Error(err) => { println!("Received error: {}", err); } @@ -60,7 +63,8 @@ let callback = |event: DexEvent| { let subscription = tokens_subscription( ws_url, commitment, - callback + callback, + None ).await.unwrap(); tokio::time::sleep(tokio::time::Duration::from_secs(60)).await; diff --git a/crates/pumpfun/Cargo.toml b/crates/pumpfun/Cargo.toml index 8fd2eaa..a3943c6 100644 --- a/crates/pumpfun/Cargo.toml +++ b/crates/pumpfun/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mai3-pumpfun-sdk" -version = "2.4.1" +version = "2.4.2" edition = "2021" authors = ["William "] repository = "https://github.com/MiracleAI-Labs/pumpfun-sdk" diff --git a/crates/pumpfun/src/instruction/logs_data.rs b/crates/pumpfun/src/instruction/logs_data.rs index 5ba8418..2d868cd 100644 --- a/crates/pumpfun/src/instruction/logs_data.rs +++ b/crates/pumpfun/src/instruction/logs_data.rs @@ -3,7 +3,7 @@ use serde::{Serialize, Deserialize}; #[derive(Debug)] pub enum DexInstruction { CreateToken(CreateTokenInfo), - Trade(TradeInfo), + UserTrade(TradeInfo), BotTrade(TradeInfo), Other, } diff --git a/crates/pumpfun/src/instruction/logs_events.rs b/crates/pumpfun/src/instruction/logs_events.rs index 4dd0e22..6c06eb6 100644 --- a/crates/pumpfun/src/instruction/logs_events.rs +++ b/crates/pumpfun/src/instruction/logs_events.rs @@ -4,7 +4,7 @@ use crate::instruction::logs_data::{CreateTokenInfo, TradeInfo}; #[derive(Debug, Clone, Serialize, Deserialize)] pub enum DexEvent { NewToken(CreateTokenInfo), - NewTrade(TradeInfo), + NewUserTrade(TradeInfo), NewBotTrade(TradeInfo), Error(String), } \ No newline at end of file diff --git a/crates/pumpfun/src/instruction/logs_filters.rs b/crates/pumpfun/src/instruction/logs_filters.rs index 6f22dca..5bcb9ee 100644 --- a/crates/pumpfun/src/instruction/logs_filters.rs +++ b/crates/pumpfun/src/instruction/logs_filters.rs @@ -9,7 +9,7 @@ impl LogFilter { const PROGRAM_ID: &'static str = "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"; /// Parse transaction logs and return instruction type and data - pub fn parse_instruction(logs: &[String], payer: Option) -> ClientResult> { + pub fn parse_instruction(logs: &[String], bot_wallet: Option) -> ClientResult> { let mut current_instruction = None; let mut program_data = String::new(); let mut invoke_depth = 0; @@ -65,14 +65,14 @@ impl LogFilter { }, "trade" => { if let Ok(trade_info) = parse_trade_data(&program_data) { - if let Some(payer_pubkey) = payer { - if trade_info.user == payer_pubkey.to_string() { + if let Some(bot_wallet_pubkey) = bot_wallet { + if trade_info.user == bot_wallet_pubkey.to_string() { instructions.push(DexInstruction::BotTrade(trade_info)); } else { - instructions.push(DexInstruction::Trade(trade_info)); + instructions.push(DexInstruction::UserTrade(trade_info)); } } else { - instructions.push(DexInstruction::Trade(trade_info)); + instructions.push(DexInstruction::UserTrade(trade_info)); } } }, diff --git a/crates/pumpfun/src/instruction/logs_subscribe.rs b/crates/pumpfun/src/instruction/logs_subscribe.rs index 54f79bb..2fbcdf5 100644 --- a/crates/pumpfun/src/instruction/logs_subscribe.rs +++ b/crates/pumpfun/src/instruction/logs_subscribe.rs @@ -34,7 +34,7 @@ pub async fn tokens_subscription( ws_url: &str, commitment: CommitmentConfig, callback: F, - payer: Option, + bot_wallet: Option, ) -> Result> where F: Fn(DexEvent) + Send + Sync + 'static, @@ -66,14 +66,14 @@ where continue; } - let instructions = LogFilter::parse_instruction(&msg.value.logs, payer).unwrap(); + let instructions = LogFilter::parse_instruction(&msg.value.logs, bot_wallet).unwrap(); for instruction in instructions { match instruction { DexInstruction::CreateToken(token_info) => { callback(DexEvent::NewToken(token_info)); } - DexInstruction::Trade(trade_info) => { - callback(DexEvent::NewTrade(trade_info)); + DexInstruction::UserTrade(trade_info) => { + callback(DexEvent::NewUserTrade(trade_info)); } DexInstruction::BotTrade(trade_info) => { callback(DexEvent::NewBotTrade(trade_info)); diff --git a/crates/pumpfun/src/main.rs b/crates/pumpfun/src/main.rs index b790862..c333fac 100755 --- a/crates/pumpfun/src/main.rs +++ b/crates/pumpfun/src/main.rs @@ -22,7 +22,7 @@ async fn main() -> Result<(), Box> { DexEvent::NewToken(token_info) => { println!("Received new token event: {:?}", token_info); }, - DexEvent::NewTrade(trade_info) => { + DexEvent::NewUserTrade(trade_info) => { println!("Received new trade event: {:?}", trade_info); }, DexEvent::NewBotTrade(trade_info) => {