From 1ac52b03a9afcbe9d13bf6c2520e2fff681e316c Mon Sep 17 00:00:00 2001 From: wei <1415121722@qq.com> Date: Thu, 12 Jun 2025 20:45:22 +0800 Subject: [PATCH] Add the current price for obtaining pumpswap tokens --- src/lib.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 3402f5a..47823af 100755 --- a/src/lib.rs +++ b/src/lib.rs @@ -640,6 +640,23 @@ impl PumpFun { Ok(actual_sol_reserves) } + #[inline] + pub async fn get_current_price_with_pumpswap(&self, pool_address: &Pubkey) -> Result { + let pool = pumpswap::pool::Pool::fetch(&self.rpc, pool_address).await?; + + let (base_amount, quote_amount) = pool.get_token_balances(&self.rpc).await?; + + // Calculate price using constant product formula (x * y = k) + // Price = quote_amount / base_amount + if base_amount == 0 { + return Err(anyhow::anyhow!("Base amount is zero, cannot calculate price")); + } + + let price = quote_amount as f64 / base_amount as f64; + + Ok(price) + } + #[inline] pub async fn get_real_sol_reserves_with_pumpswap(&self, pool_address: &Pubkey) -> Result { let pool = pumpswap::pool::Pool::fetch(&self.rpc, pool_address).await?;