feat: refactor trading API and add multi-token type support (v1.2.0)

- Bump version to 1.2.0
- Remove TradeSwapParams to simplify API structure
- Add TradeTokenType enum supporting SOL/WSOL/USD1 tokens
- Standardize parameter naming: sol_amount → input_token_amount, token_amount → input_token_amount
- Refactor account management parameters: create_wsol_ata → create_input_token_ata etc.
- Update all example code to use new API
- Synchronize English and Chinese documentation

BREAKING CHANGE:
- Removed TradeSwapParams struct
- Modified field names in TradeBuyParams and TradeSellParams
- Existing code needs migration to use new parameter structure
This commit is contained in:
ysq
2025-09-22 23:18:53 +08:00
parent 020187a57a
commit ce5243702c
19 changed files with 274 additions and 435 deletions
+22 -27
View File
@@ -14,7 +14,7 @@ use sol_trade_sdk::solana_streamer_sdk::streaming::yellowstone_grpc::{
use sol_trade_sdk::solana_streamer_sdk::streaming::YellowstoneGrpc;
use sol_trade_sdk::{
common::AnyResult,
swqos::{SwqosConfig, TradeType},
swqos::SwqosConfig,
trading::{core::params::BonkParams, factory::DexType},
SolanaTrade,
};
@@ -123,35 +123,35 @@ async fn bonk_copy_trade_with_grpc(trade_info: BonkTradeEvent) -> AnyResult<()>
let client = create_solana_trade_client().await?;
let mint_pubkey = trade_info.base_token_mint;
let quote_mint_pubkey = trade_info.quote_token_mint;
let slippage_basis_points = Some(100);
let recent_blockhash = client.rpc.get_latest_blockhash().await?;
// Buy tokens
println!("Buying tokens from Bonk...");
let input_token_type =
if trade_info.quote_token_mint == sol_trade_sdk::constants::USD1_TOKEN_ACCOUNT {
sol_trade_sdk::TradeTokenType::USD1
} else {
sol_trade_sdk::TradeTokenType::SOL
};
let buy_sol_amount = 100_000;
let buy_params = sol_trade_sdk::TradeSwapParams {
let buy_params = sol_trade_sdk::TradeBuyParams {
dex_type: DexType::Bonk,
trade_type: TradeType::Buy,
input_mint: quote_mint_pubkey,
output_mint: mint_pubkey,
input_token_program: trade_info.quote_token_program,
output_token_program: trade_info.base_token_program,
input_amount: buy_sol_amount,
input_token_type: input_token_type.clone(),
mint: mint_pubkey,
input_token_amount: buy_sol_amount,
slippage_basis_points: slippage_basis_points,
recent_blockhash: Some(recent_blockhash),
extension_params: Box::new(BonkParams::from_trade(trade_info.clone())),
lookup_table_key: None,
wait_transaction_confirmed: true,
create_input_mint_ata: true,
close_input_mint_ata: false,
create_output_mint_ata: true,
close_output_mint_ata: true,
create_input_token_ata: true,
close_input_token_ata: false,
create_mint_ata: true,
open_seed_optimize: false,
durable_nonce: None,
with_tip: true,
};
client.swap(buy_params).await?;
client.buy(buy_params).await?;
// Sell tokens
println!("Selling tokens from Bonk...");
@@ -164,14 +164,11 @@ async fn bonk_copy_trade_with_grpc(trade_info: BonkTradeEvent) -> AnyResult<()>
let amount_token = balance.amount.parse::<u64>().unwrap();
println!("Selling {} tokens", amount_token);
let sell_params = sol_trade_sdk::TradeSwapParams {
let sell_params = sol_trade_sdk::TradeSellParams {
dex_type: DexType::Bonk,
trade_type: TradeType::Sell,
input_mint: mint_pubkey,
output_mint: quote_mint_pubkey,
input_token_program: trade_info.base_token_program,
output_token_program: trade_info.quote_token_program,
input_amount: amount_token,
output_token_type: input_token_type,
mint: mint_pubkey,
input_token_amount: amount_token,
slippage_basis_points: slippage_basis_points,
recent_blockhash: Some(recent_blockhash),
extension_params: Box::new(BonkParams::from_trade(trade_info.clone())),
@@ -180,12 +177,10 @@ async fn bonk_copy_trade_with_grpc(trade_info: BonkTradeEvent) -> AnyResult<()>
open_seed_optimize: false,
with_tip: false,
durable_nonce: None,
create_input_mint_ata: false,
close_input_mint_ata: false,
create_output_mint_ata: true,
close_output_mint_ata: false,
create_output_token_ata: false,
close_output_token_ata: false,
};
client.swap(sell_params).await?;
client.sell(sell_params).await?;
// Exit program
std::process::exit(0);