feat: Add protocol state to Swap object

- This consists of lots of necessary battles with lifetimes.
This commit is contained in:
TAMARA LIPOWSKI
2025-07-22 12:13:39 -04:00
parent a057588270
commit c217702560
18 changed files with 210 additions and 39 deletions

View File

@@ -48,6 +48,7 @@ fn test_uniswap_v3_uniswap_v2() {
token_out: wbtc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let swap_wbtc_usdc = Swap {
component: ProtocolComponent {
@@ -59,6 +60,7 @@ fn test_uniswap_v3_uniswap_v2() {
token_out: usdc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFrom);
@@ -127,6 +129,7 @@ fn test_uniswap_v3_uniswap_v3() {
token_out: wbtc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let swap_wbtc_usdc = Swap {
component: ProtocolComponent {
@@ -146,6 +149,7 @@ fn test_uniswap_v3_uniswap_v3() {
token_out: usdc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFrom);
@@ -213,6 +217,7 @@ fn test_uniswap_v3_curve() {
token_out: wbtc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let swap_wbtc_usdt = Swap {
@@ -242,6 +247,7 @@ fn test_uniswap_v3_curve() {
token_out: usdt.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFrom);
@@ -301,6 +307,7 @@ fn test_balancer_v2_uniswap_v2() {
token_out: wbtc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let swap_wbtc_usdc = Swap {
@@ -313,6 +320,7 @@ fn test_balancer_v2_uniswap_v2() {
token_out: usdc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFrom);
@@ -375,6 +383,7 @@ fn test_multi_protocol() {
token_out: weth.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let balancer_swap_weth_wbtc = Swap {
@@ -387,6 +396,7 @@ fn test_multi_protocol() {
token_out: wbtc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let curve_swap_wbtc_usdt = Swap {
@@ -416,6 +426,7 @@ fn test_multi_protocol() {
token_out: usdt.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
// Ekubo
@@ -438,6 +449,7 @@ fn test_multi_protocol() {
token_out: usdc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
// USV4
@@ -461,6 +473,7 @@ fn test_multi_protocol() {
token_out: eth.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFromPermit2);
@@ -533,6 +546,7 @@ fn test_uniswap_v3_balancer_v3() {
token_out: wbtc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let swap_wbtc_qnt = Swap {
component: ProtocolComponent {
@@ -544,6 +558,7 @@ fn test_uniswap_v3_balancer_v3() {
token_out: qnt.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFrom);

View File

@@ -40,6 +40,7 @@ fn test_single_encoding_strategy_ekubo() {
token_out: token_out.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFrom);
@@ -92,6 +93,7 @@ fn test_single_encoding_strategy_maverick() {
token_out: token_out.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFrom);
@@ -156,6 +158,7 @@ fn test_single_encoding_strategy_usv4_eth_in() {
token_out: pepe.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFromPermit2);
@@ -222,6 +225,7 @@ fn test_single_encoding_strategy_usv4_eth_out() {
token_out: eth.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFromPermit2);
@@ -296,6 +300,7 @@ fn test_single_encoding_strategy_usv4_grouped_swap() {
token_out: eth.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let swap_eth_pepe = Swap {
@@ -309,6 +314,7 @@ fn test_single_encoding_strategy_usv4_grouped_swap() {
token_out: pepe.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFromPermit2);
@@ -417,6 +423,7 @@ fn test_single_encoding_strategy_curve() {
token_out: token_out.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFrom);
@@ -484,6 +491,7 @@ fn test_single_encoding_strategy_curve_st_eth() {
token_out: token_out.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFrom);
@@ -537,6 +545,7 @@ fn test_single_encoding_strategy_balancer_v3() {
token_out: token_out.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFrom);

View File

@@ -37,6 +37,7 @@ fn test_sequential_swap_strategy_encoder() {
token_out: wbtc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let swap_wbtc_usdc = Swap {
component: ProtocolComponent {
@@ -48,6 +49,7 @@ fn test_sequential_swap_strategy_encoder() {
token_out: usdc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFromPermit2);
@@ -103,6 +105,7 @@ fn test_sequential_swap_strategy_encoder_no_permit2() {
token_out: wbtc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let swap_wbtc_usdc = Swap {
component: ProtocolComponent {
@@ -114,6 +117,7 @@ fn test_sequential_swap_strategy_encoder_no_permit2() {
token_out: usdc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFrom);
@@ -215,6 +219,7 @@ fn test_sequential_strategy_cyclic_swap() {
token_out: weth.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
// WETH -> USDC (Pool 2)
@@ -237,6 +242,7 @@ fn test_sequential_strategy_cyclic_swap() {
token_out: usdc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFromPermit2);

View File

@@ -33,6 +33,7 @@ fn test_single_swap_strategy_encoder() {
token_out: dai.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFromPermit2);
@@ -119,6 +120,7 @@ fn test_single_swap_strategy_encoder_no_permit2() {
token_out: dai.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFrom);
@@ -201,6 +203,7 @@ fn test_single_swap_strategy_encoder_no_transfer_in() {
token_out: dai.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::None);
@@ -284,6 +287,7 @@ fn test_single_swap_strategy_encoder_wrap() {
token_out: dai.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFromPermit2);
@@ -336,6 +340,7 @@ fn test_single_swap_strategy_encoder_unwrap() {
token_out: weth(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFromPermit2);

View File

@@ -42,6 +42,7 @@ fn test_split_swap_strategy_encoder() {
token_out: dai.clone(),
split: 0.5f64,
user_data: None,
protocol_state: None,
};
let swap_weth_wbtc = Swap {
component: ProtocolComponent {
@@ -56,6 +57,7 @@ fn test_split_swap_strategy_encoder() {
// It should still be very close to 50%
split: 0f64,
user_data: None,
protocol_state: None,
};
let swap_dai_usdc = Swap {
component: ProtocolComponent {
@@ -67,6 +69,7 @@ fn test_split_swap_strategy_encoder() {
token_out: usdc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let swap_wbtc_usdc = Swap {
component: ProtocolComponent {
@@ -78,6 +81,7 @@ fn test_split_swap_strategy_encoder() {
token_out: usdc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFromPermit2);
@@ -144,6 +148,7 @@ fn test_split_input_cyclic_swap() {
token_out: weth.clone(),
split: 0.6f64, // 60% of input
user_data: None,
protocol_state: None,
};
// USDC -> WETH (Pool 2) - 40% of input (remaining)
@@ -166,6 +171,7 @@ fn test_split_input_cyclic_swap() {
token_out: weth.clone(),
split: 0f64,
user_data: None, // Remaining 40%
protocol_state: None,
};
// WETH -> USDC (Pool 2)
@@ -188,6 +194,7 @@ fn test_split_input_cyclic_swap() {
token_out: usdc.clone(),
split: 0.0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFromPermit2);
@@ -308,6 +315,7 @@ fn test_split_output_cyclic_swap() {
token_out: weth.clone(),
split: 0.0f64,
user_data: None,
protocol_state: None,
};
let swap_weth_usdc_v3_pool1 = Swap {
@@ -327,6 +335,7 @@ fn test_split_output_cyclic_swap() {
token_out: usdc.clone(),
split: 0.6f64,
user_data: None,
protocol_state: None,
};
let swap_weth_usdc_v3_pool2 = Swap {
@@ -348,6 +357,7 @@ fn test_split_output_cyclic_swap() {
token_out: usdc.clone(),
split: 0.0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFromPermit2);

View File

@@ -51,6 +51,7 @@ fn test_sequential_swap_usx() {
token_out: usdc.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let swap_usdc_usdt = Swap {
component: ProtocolComponent {
@@ -68,6 +69,7 @@ fn test_sequential_swap_usx() {
token_out: usdt.clone(),
split: 0f64,
user_data: None,
protocol_state: None,
};
let encoder = get_tycho_router_encoder(UserTransferType::TransferFrom);