refactor: move set_global_gas_fee_strategy to GasFeeStrategy struct

This commit is contained in:
ysq
2025-09-19 23:59:52 +08:00
parent e4a6b49aab
commit d1c001df36
21 changed files with 62 additions and 60 deletions
+1 -1
View File
@@ -134,7 +134,7 @@ let client = SolanaTrade::new(Arc::new(payer), trade_config).await;
For detailed information about Gas Fee Strategy, see the [Gas Fee Strategy Reference](docs/GAS_FEE_STRATEGY.md). For detailed information about Gas Fee Strategy, see the [Gas Fee Strategy Reference](docs/GAS_FEE_STRATEGY.md).
```rust ```rust
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
``` ```
#### 3. Build Trading Parameters #### 3. Build Trading Parameters
+1 -1
View File
@@ -135,7 +135,7 @@ let client = SolanaTrade::new(Arc::new(payer), trade_config).await;
有关 Gas Fee 策略的详细信息,请参阅 [Gas Fee 策略参考手册](docs/GAS_FEE_STRATEGY_CN.md)。 有关 Gas Fee 策略的详细信息,请参阅 [Gas Fee 策略参考手册](docs/GAS_FEE_STRATEGY_CN.md)。
```rust ```rust
// 设置全局策略 // 设置全局策略
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
``` ```
#### 3. 构建交易参数 #### 3. 构建交易参数
+2 -2
View File
@@ -16,9 +16,9 @@ Each (SwqosType, TradeType) combination can only configure one strategy. Subsequ
### 2. Set Global Strategy (can also be configured individually) ### 2. Set Global Strategy (can also be configured individually)
```rust ```rust
use sol_trade_sdk::common::{gas_fee_strategy::GasFeeStrategy, set_global_gas_fee_strategy}; use sol_trade_sdk::common::{gas_fee_strategy::GasFeeStrategy};
// Set global strategy (normal strategy) // Set global strategy (normal strategy)
set_global_gas_fee_strategy( GasFeeStrategy::set_global_fee_strategy(
150000, // cu_limit 150000, // cu_limit
500000, // cu_price 500000, // cu_price
0.001, // buy tip 0.001, // buy tip
+2 -2
View File
@@ -16,9 +16,9 @@
### 2. 设置全局策略(也可以不设置,单独去配置单个策略) ### 2. 设置全局策略(也可以不设置,单独去配置单个策略)
```rust ```rust
use sol_trade_sdk::common::{gas_fee_strategy::GasFeeStrategy, set_global_gas_fee_strategy}; use sol_trade_sdk::common::{gas_fee_strategy::GasFeeStrategy};
// 设置全局策略(normal 策略) // 设置全局策略(normal 策略)
set_global_gas_fee_strategy( GasFeeStrategy::set_global_fee_strategy(
150000, // cu_limit 150000, // cu_limit
500000, // cu_price 500000, // cu_price
0.001, // buy tip 0.001, // buy tip
+1 -1
View File
@@ -125,7 +125,7 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment); let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await; let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
// set global strategy // set global strategy
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); sol_trade_sdk::common::GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
println!("✅ SolanaTrade client initialized successfully!"); println!("✅ SolanaTrade client initialized successfully!");
Ok(solana_trade) Ok(solana_trade)
} }
+1 -1
View File
@@ -117,7 +117,7 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment); let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await; let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
// set global strategy // set global strategy
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); sol_trade_sdk::common::GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
println!("✅ SolanaTrade client initialized successfully!"); println!("✅ SolanaTrade client initialized successfully!");
Ok(solana_trade) Ok(solana_trade)
} }
+1 -1
View File
@@ -80,7 +80,7 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment); let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await; let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
// set global strategy // set global strategy
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); sol_trade_sdk::common::GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
println!("✅ SolanaTrade client initialized successfully!"); println!("✅ SolanaTrade client initialized successfully!");
Ok(solana_trade) Ok(solana_trade)
} }
+1 -1
View File
@@ -1305,7 +1305,7 @@ async fn initialize_real_client() -> AnyResult<SolanaTrade> {
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment); let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
let solana_trade = SolanaTrade::new(payer, trade_config).await; let solana_trade = SolanaTrade::new(payer, trade_config).await;
// set global strategy // set global strategy
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); sol_trade_sdk::common::GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
println!("✅ SolanaTrade client initialized successfully!"); println!("✅ SolanaTrade client initialized successfully!");
Ok(solana_trade) Ok(solana_trade)
} }
+2 -2
View File
@@ -1,5 +1,5 @@
use sol_trade_sdk::{ use sol_trade_sdk::{
common::{gas_fee_strategy::GasFeeStrategy, set_global_gas_fee_strategy}, common::gas_fee_strategy::GasFeeStrategy,
swqos::{SwqosType, TradeType}, swqos::{SwqosType, TradeType},
}; };
@@ -10,7 +10,7 @@ async fn main() {
// Set global strategy // Set global strategy
println!("1. Set global strategy"); println!("1. Set global strategy");
set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
// Print all strategies // Print all strategies
println!("\n2. Print all strategies"); println!("\n2. Print all strategies");
+1 -1
View File
@@ -67,7 +67,7 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment); let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await; let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
// set global strategy // set global strategy
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); sol_trade_sdk::common::GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
println!("✅ SolanaTrade client initialized successfully!"); println!("✅ SolanaTrade client initialized successfully!");
Ok(solana_trade) Ok(solana_trade)
} }
+1 -1
View File
@@ -106,7 +106,7 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment); let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await; let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
// set global strategy // set global strategy
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); sol_trade_sdk::common::GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
println!("✅ SolanaTrade client initialized successfully!"); println!("✅ SolanaTrade client initialized successfully!");
Ok(solana_trade) Ok(solana_trade)
} }
+1 -1
View File
@@ -105,7 +105,7 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment); let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await; let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
// set global strategy // set global strategy
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); sol_trade_sdk::common::GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
println!("✅ SolanaTrade client initialized successfully!"); println!("✅ SolanaTrade client initialized successfully!");
Ok(solana_trade) Ok(solana_trade)
} }
+1 -1
View File
@@ -74,7 +74,7 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment); let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await; let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
// set global strategy // set global strategy
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); sol_trade_sdk::common::GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
println!("✅ SolanaTrade client initialized successfully!"); println!("✅ SolanaTrade client initialized successfully!");
Ok(solana_trade) Ok(solana_trade)
} }
+1 -1
View File
@@ -86,7 +86,7 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment); let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await; let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
// set global strategy // set global strategy
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); sol_trade_sdk::common::GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
println!("✅ SolanaTrade client initialized successfully!"); println!("✅ SolanaTrade client initialized successfully!");
Ok(solana_trade) Ok(solana_trade)
} }
+1 -1
View File
@@ -131,7 +131,7 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment); let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await; let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
// set global strategy // set global strategy
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); sol_trade_sdk::common::GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
println!("✅ SolanaTrade client initialized successfully!"); println!("✅ SolanaTrade client initialized successfully!");
Ok(solana_trade) Ok(solana_trade)
} }
+1 -1
View File
@@ -105,7 +105,7 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment); let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await; let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
// set global strategy // set global strategy
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); sol_trade_sdk::common::GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
println!("✅ SolanaTrade client initialized successfully!"); println!("✅ SolanaTrade client initialized successfully!");
Ok(solana_trade) Ok(solana_trade)
} }
+1 -1
View File
@@ -127,7 +127,7 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment); let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await; let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
// set global strategy // set global strategy
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); sol_trade_sdk::common::GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
println!("✅ SolanaTrade client initialized successfully!"); println!("✅ SolanaTrade client initialized successfully!");
Ok(solana_trade) Ok(solana_trade)
} }
+1 -1
View File
@@ -95,7 +95,7 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment); let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await; let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
// set global strategy // set global strategy
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); sol_trade_sdk::common::GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
println!("✅ SolanaTrade client initialized successfully!"); println!("✅ SolanaTrade client initialized successfully!");
Ok(solana_trade) Ok(solana_trade)
} }
+1 -1
View File
@@ -36,7 +36,7 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment); let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
let solana_trade_client = SolanaTrade::new(Arc::new(payer), trade_config).await; let solana_trade_client = SolanaTrade::new(Arc::new(payer), trade_config).await;
// set global strategy // set global strategy
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); sol_trade_sdk::common::GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
println!("SolanaTrade client created successfully!"); println!("SolanaTrade client created successfully!");
Ok(solana_trade_client) Ok(solana_trade_client)
} }
+1 -1
View File
@@ -59,7 +59,7 @@ async fn create_solana_trade_client() -> Result<SolanaTrade, Box<dyn std::error:
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment); let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await; let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
// set global strategy // set global strategy
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001); sol_trade_sdk::common::GasFeeStrategy::set_global_fee_strategy(150000, 500000, 0.001, 0.001);
println!("✅ SolanaTrade client initialized successfully!"); println!("✅ SolanaTrade client initialized successfully!");
Ok(solana_trade) Ok(solana_trade)
} }
+39 -37
View File
@@ -29,44 +29,46 @@ static STRATEGIES: LazyLock<
pub struct GasFeeStrategy; pub struct GasFeeStrategy;
pub fn set_global_gas_fee_strategy(cu_limit: u32, cu_price: u64, buy_tip: f64, sell_tip: f64) {
GasFeeStrategy::add_normal_fee_strategies(
&SwqosType::values()
.into_iter()
.filter(|swqos_type| !swqos_type.eq(&SwqosType::Default))
.collect::<Vec<SwqosType>>(),
TradeType::Buy,
cu_limit,
cu_price,
buy_tip,
);
GasFeeStrategy::add_normal_fee_strategies(
&SwqosType::values()
.into_iter()
.filter(|swqos_type| !swqos_type.eq(&SwqosType::Default))
.collect::<Vec<SwqosType>>(),
TradeType::Sell,
cu_limit,
cu_price,
sell_tip,
);
GasFeeStrategy::add_normal_fee_strategy(
SwqosType::Default,
TradeType::Buy,
cu_limit,
cu_price,
0.0,
);
GasFeeStrategy::add_normal_fee_strategy(
SwqosType::Default,
TradeType::Sell,
cu_limit,
cu_price,
0.0,
);
}
impl GasFeeStrategy { impl GasFeeStrategy {
/// 设置全局费率策略
/// Set global fee strategy
pub fn set_global_fee_strategy(cu_limit: u32, cu_price: u64, buy_tip: f64, sell_tip: f64) {
GasFeeStrategy::add_normal_fee_strategies(
&SwqosType::values()
.into_iter()
.filter(|swqos_type| !swqos_type.eq(&SwqosType::Default))
.collect::<Vec<SwqosType>>(),
TradeType::Buy,
cu_limit,
cu_price,
buy_tip,
);
GasFeeStrategy::add_normal_fee_strategies(
&SwqosType::values()
.into_iter()
.filter(|swqos_type| !swqos_type.eq(&SwqosType::Default))
.collect::<Vec<SwqosType>>(),
TradeType::Sell,
cu_limit,
cu_price,
sell_tip,
);
GasFeeStrategy::add_normal_fee_strategy(
SwqosType::Default,
TradeType::Buy,
cu_limit,
cu_price,
0.0,
);
GasFeeStrategy::add_normal_fee_strategy(
SwqosType::Default,
TradeType::Sell,
cu_limit,
cu_price,
0.0,
);
}
/// 为多个服务类型添加高低费率策略,会移除(SwqosType,TradeType)的默认策略。 /// 为多个服务类型添加高低费率策略,会移除(SwqosType,TradeType)的默认策略。
/// Add high-low fee strategies for multiple service types, Will remove the default strategy of (SwqosType,TradeType) /// Add high-low fee strategies for multiple service types, Will remove the default strategy of (SwqosType,TradeType)
pub fn add_high_low_fee_strategies( pub fn add_high_low_fee_strategies(