Make use_exact_sol_amount optional with true default for PumpFun/PumpSwap

- Change use_exact_sol_amount from bool to Option<bool>
- Default to true (via unwrap_or) for PumpFun and PumpSwap DEXes
- Option is ignored for other DEXes (Raydium, Bonk, Meteora)
- Update all examples to use None (which defaults to true for applicable DEXes)
- Update README documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
vibes
2026-01-06 11:53:09 +00:00
co-authored by Claude Opus 4.5
parent ea22d48919
commit c7f694e9a0
20 changed files with 31 additions and 9 deletions
+1
View File
@@ -160,6 +160,7 @@ async fn pumpfun_copy_trade_with_grpc(trade_info: PumpFunTradeEvent) -> AnyResul
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy,
simulate: false,
use_exact_sol_amount: None,
};
client.buy(buy_params).await?;
+1
View File
@@ -175,6 +175,7 @@ async fn bonk_copy_trade_with_grpc(trade_info: BonkTradeEvent) -> AnyResult<()>
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy.clone(),
simulate: false,
use_exact_sol_amount: None,
};
client.buy(buy_params).await?;
+1
View File
@@ -143,6 +143,7 @@ async fn bonk_sniper_trade_with_shreds(trade_info: BonkTradeEvent) -> AnyResult<
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy.clone(),
simulate: false,
use_exact_sol_amount: None,
};
client.buy(buy_params).await?;
+5
View File
@@ -634,6 +634,7 @@ async fn handle_buy_pumpfun(
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy,
simulate: false,
use_exact_sol_amount: None,
};
match client.buy(buy_params).await {
Ok((_, signature, _)) => {
@@ -688,6 +689,7 @@ async fn handle_buy_pumpswap(
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy,
simulate: false,
use_exact_sol_amount: None,
};
match client.buy(buy_params).await {
Ok((_, signature, _)) => {
@@ -741,6 +743,7 @@ async fn handle_buy_bonk(
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy,
simulate: false,
use_exact_sol_amount: None,
};
match client.buy(buy_params).await {
Ok((_, signature, _)) => {
@@ -798,6 +801,7 @@ async fn handle_buy_raydium_v4(
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy,
simulate: false,
use_exact_sol_amount: None,
};
match client.buy(buy_params).await {
Ok((_, signature, _)) => {
@@ -855,6 +859,7 @@ async fn handle_buy_raydium_cpmm(
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy,
simulate: false,
use_exact_sol_amount: None,
};
match client.buy(buy_params).await {
Ok((_, signature, _)) => {
@@ -43,6 +43,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
fixed_output_token_amount: Some(1),
gas_fee_strategy: gas_fee_strategy.clone(),
simulate: false,
use_exact_sol_amount: None,
};
client.buy(buy_params).await?;
+1
View File
@@ -102,6 +102,7 @@ async fn test_middleware() -> AnyResult<()> {
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy,
simulate: false,
use_exact_sol_amount: None,
};
client.buy(buy_params).await?;
println!("tip: This transaction will not succeed because we're using a test account. You can modify the code to initialize the payer with your own private key");
+1
View File
@@ -160,6 +160,7 @@ async fn pumpfun_copy_trade_with_grpc(trade_info: PumpFunTradeEvent) -> AnyResul
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy,
simulate: false,
use_exact_sol_amount: None,
};
client.buy(buy_params).await?;
@@ -163,6 +163,7 @@ async fn pumpfun_copy_trade_with_grpc(trade_info: PumpFunTradeEvent) -> AnyResul
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy.clone(),
simulate: false,
use_exact_sol_amount: None,
};
client.buy(buy_params).await?;
@@ -122,6 +122,7 @@ async fn pumpfun_sniper_trade_with_shreds(trade_info: PumpFunTradeEvent) -> AnyR
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy.clone(),
simulate: false,
use_exact_sol_amount: None,
};
client.buy(buy_params).await?;
@@ -43,6 +43,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy.clone(),
simulate: false,
use_exact_sol_amount: None,
};
client.buy(buy_params).await?;
+1
View File
@@ -220,6 +220,7 @@ async fn pumpswap_trade_with_grpc(mint_pubkey: Pubkey, params: PumpSwapParams) -
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy.clone(),
simulate: false,
use_exact_sol_amount: None,
};
client.buy(buy_params).await?;
@@ -173,6 +173,7 @@ async fn raydium_amm_v4_copy_trade_with_grpc(trade_info: RaydiumAmmV4SwapEvent)
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy.clone(),
simulate: false,
use_exact_sol_amount: None,
};
client.buy(buy_params).await?;
@@ -158,6 +158,7 @@ async fn raydium_cpmm_copy_trade_with_grpc(trade_info: RaydiumCpmmSwapEvent) ->
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy.clone(),
simulate: false,
use_exact_sol_amount: None,
};
client.buy(buy_params).await?;
+1
View File
@@ -46,6 +46,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
fixed_output_token_amount: None,
gas_fee_strategy: gas_fee_strategy.clone(),
simulate: false,
use_exact_sol_amount: None,
};
client.buy(buy_params).await?;