diff --git a/foundry/src/TychoRouter.sol b/foundry/src/TychoRouter.sol index 32b54a5..1b693fd 100644 --- a/foundry/src/TychoRouter.sol +++ b/foundry/src/TychoRouter.sol @@ -58,9 +58,6 @@ import {IPoolManager} from "@uniswap/v4-core/src/interfaces/IPoolManager.sol"; error TychoRouter__AddressZero(); error TychoRouter__EmptySwaps(); error TychoRouter__NegativeSlippage(uint256 amount, uint256 minAmount); -error TychoRouter__AmountInDiffersFromConsumed( - uint256 amountIn, uint256 amountConsumed -); error TychoRouter__MessageValueMismatch(uint256 value, uint256 amount); error TychoRouter__InvalidDataLength(); error TychoRouter__UndefinedMinAmountOut(); diff --git a/foundry/src/executors/CurveExecutor.sol b/foundry/src/executors/CurveExecutor.sol index 38173e9..933077e 100644 --- a/foundry/src/executors/CurveExecutor.sol +++ b/foundry/src/executors/CurveExecutor.sol @@ -6,6 +6,7 @@ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "./TokenTransfer.sol"; error CurveExecutor__AddressZero(); +error CurveExecutor__InvalidDataLength(); interface CryptoPool { // slither-disable-next-line naming-convention @@ -53,6 +54,8 @@ contract CurveExecutor is IExecutor, TokenTransfer { payable returns (uint256) { + if (data.length != 65) revert CurveExecutor__InvalidDataLength(); + ( address tokenIn, address tokenOut, diff --git a/foundry/src/executors/TokenTransfer.sol b/foundry/src/executors/TokenTransfer.sol index 886e1f9..b5f8629 100644 --- a/foundry/src/executors/TokenTransfer.sol +++ b/foundry/src/executors/TokenTransfer.sol @@ -14,15 +14,15 @@ contract TokenTransfer { enum TransferType { // Assume funds are in the TychoRouter - transfer into the pool - TRANSFER, + TRANSFER_TO_PROTOCOL, // Assume funds are in msg.sender's wallet - transferFrom into the pool - TRANSFER_FROM, + TRANSFER_FROM_TO_PROTOCOL, // Assume funds are in msg.sender's wallet - permit2TransferFrom into the pool - TRANSFER_PERMIT2, + TRANSFER_PERMIT2_TO_PROTOCOL, // Assume funds are in msg.sender's wallet - but the pool requires it to be // in the router contract when calling swap - transferFrom into the router // contract - TRANSFER_TO_ROUTER, + TRANSFER_FROM_TO_ROUTER, // Assume funds are in msg.sender's wallet - but the pool requires it to be // in the router contract when calling swap - transferFrom into the router // contract using permit2 @@ -45,19 +45,19 @@ contract TokenTransfer { uint256 amount, TransferType transferType ) internal { - if (transferType == TransferType.TRANSFER) { + if (transferType == TransferType.TRANSFER_TO_PROTOCOL) { if (tokenIn == address(0)) { payable(receiver).transfer(amount); } else { IERC20(tokenIn).safeTransfer(receiver, amount); } - } else if (transferType == TransferType.TRANSFER_FROM) { + } else if (transferType == TransferType.TRANSFER_FROM_TO_PROTOCOL) { // slither-disable-next-line arbitrary-send-erc20 IERC20(tokenIn).safeTransferFrom(sender, receiver, amount); - } else if (transferType == TransferType.TRANSFER_PERMIT2) { + } else if (transferType == TransferType.TRANSFER_PERMIT2_TO_PROTOCOL) { // Permit2.permit is already called from the TychoRouter permit2.transferFrom(sender, receiver, uint160(amount), tokenIn); - } else if (transferType == TransferType.TRANSFER_TO_ROUTER) { + } else if (transferType == TransferType.TRANSFER_FROM_TO_ROUTER) { // slither-disable-next-line arbitrary-send-erc20 IERC20(tokenIn).safeTransferFrom(sender, address(this), amount); } else if (transferType == TransferType.TRANSFER_PERMIT2_TO_ROUTER) { diff --git a/foundry/test/TychoRouterSequentialSwap.t.sol b/foundry/test/TychoRouterSequentialSwap.t.sol index 031f66c..9efd39b 100644 --- a/foundry/test/TychoRouterSequentialSwap.t.sol +++ b/foundry/test/TychoRouterSequentialSwap.t.sol @@ -18,8 +18,8 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup { // (univ2) (univ2) TokenTransfer.TransferType transferType = permit2 - ? TokenTransfer.TransferType.TRANSFER_PERMIT2 - : TokenTransfer.TransferType.TRANSFER_FROM; + ? TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL + : TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL; bytes[] memory swaps = new bytes[](2); // WETH -> DAI @@ -38,7 +38,7 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup { DAI_USDC_POOL, tychoRouterAddr, true, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ) ); return swaps; @@ -222,7 +222,7 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup { WETH_DAI_POOL, tychoRouterAddr, false, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ) ); @@ -234,7 +234,7 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup { DAI_USDC_POOL, tychoRouterAddr, true, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ) ); @@ -282,7 +282,7 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup { DAI_USDC_POOL, tychoRouterAddr, false, - TokenTransfer.TransferType.TRANSFER_PERMIT2 + TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL ) ); @@ -294,7 +294,7 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup { WETH_DAI_POOL, tychoRouterAddr, true, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ) ); @@ -331,7 +331,7 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup { tychoRouterAddr, USDC_WETH_USV3, true, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ); bytes memory usdcWethV3Pool2OneZeroData = encodeUniswapV3Swap( @@ -340,7 +340,7 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup { tychoRouterAddr, USDC_WETH_USV3_2, false, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ); bytes[] memory swaps = new bytes[](2); diff --git a/foundry/test/TychoRouterSingleSwap.t.sol b/foundry/test/TychoRouterSingleSwap.t.sol index 2c85586..8a8a4d3 100644 --- a/foundry/test/TychoRouterSingleSwap.t.sol +++ b/foundry/test/TychoRouterSingleSwap.t.sol @@ -26,7 +26,7 @@ contract TychoRouterSingleSwapTest is TychoRouterTestSetup { WETH_DAI_POOL, tychoRouterAddr, false, - TokenTransfer.TransferType.TRANSFER_PERMIT2 + TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL ); bytes memory swap = @@ -67,7 +67,7 @@ contract TychoRouterSingleSwapTest is TychoRouterTestSetup { WETH_DAI_POOL, tychoRouterAddr, false, - TokenTransfer.TransferType.TRANSFER_FROM + TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL ); bytes memory swap = @@ -108,7 +108,7 @@ contract TychoRouterSingleSwapTest is TychoRouterTestSetup { WETH_DAI_POOL, tychoRouterAddr, false, - TokenTransfer.TransferType.TRANSFER_FROM + TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL ); bytes memory swap = @@ -134,7 +134,7 @@ contract TychoRouterSingleSwapTest is TychoRouterTestSetup { WETH_DAI_POOL, tychoRouterAddr, false, - TokenTransfer.TransferType.TRANSFER_FROM + TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL ); bytes memory swap = @@ -169,7 +169,7 @@ contract TychoRouterSingleSwapTest is TychoRouterTestSetup { WETH_DAI_POOL, tychoRouterAddr, false, - TokenTransfer.TransferType.TRANSFER_FROM + TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL ); bytes memory swap = @@ -218,7 +218,7 @@ contract TychoRouterSingleSwapTest is TychoRouterTestSetup { WETH_DAI_POOL, tychoRouterAddr, false, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ); bytes memory swap = @@ -261,7 +261,7 @@ contract TychoRouterSingleSwapTest is TychoRouterTestSetup { WETH_DAI_POOL, tychoRouterAddr, true, - TokenTransfer.TransferType.TRANSFER_PERMIT2 + TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL ); bytes memory swap = diff --git a/foundry/test/TychoRouterSplitSwap.t.sol b/foundry/test/TychoRouterSplitSwap.t.sol index a182ecd..00f8406 100644 --- a/foundry/test/TychoRouterSplitSwap.t.sol +++ b/foundry/test/TychoRouterSplitSwap.t.sol @@ -21,8 +21,8 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup { bytes[] memory swaps = new bytes[](4); TokenTransfer.TransferType inTransferType = permit2 - ? TokenTransfer.TransferType.TRANSFER_PERMIT2 - : TokenTransfer.TransferType.TRANSFER_FROM; + ? TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL + : TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL; // WETH -> WBTC (60%) swaps[0] = encodeSplitSwap( @@ -49,7 +49,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup { USDC_WBTC_POOL, tychoRouterAddr, true, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ) ); // WETH -> DAI @@ -74,7 +74,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup { DAI_USDC_POOL, tychoRouterAddr, true, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ) ); @@ -270,7 +270,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup { WETH_DAI_POOL, tychoRouterAddr, false, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ); bytes memory swap = encodeSplitSwap( @@ -319,7 +319,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup { WETH_DAI_POOL, tychoRouterAddr, true, - TokenTransfer.TransferType.TRANSFER_PERMIT2 + TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL ); bytes memory swap = encodeSplitSwap( @@ -370,7 +370,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup { tychoRouterAddr, DAI_WETH_USV3, zeroForOne, - TokenTransfer.TransferType.TRANSFER_PERMIT2 + TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL ); bytes memory swap = encodeSplitSwap( uint8(0), uint8(1), uint24(0), address(usv3Executor), protocolData @@ -511,7 +511,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup { tychoRouterAddr, USDC_WETH_USV3, true, - TokenTransfer.TransferType.TRANSFER_FROM + TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL ); bytes memory usdcWethV3Pool2ZeroOneData = encodeUniswapV3Swap( @@ -520,7 +520,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup { tychoRouterAddr, USDC_WETH_USV3_2, true, - TokenTransfer.TransferType.TRANSFER_FROM + TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL ); bytes memory wethUsdcV2OneZeroData = encodeUniswapV2Swap( @@ -528,7 +528,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup { USDC_WETH_USV2, tychoRouterAddr, false, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ); bytes[] memory swaps = new bytes[](3); @@ -578,7 +578,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup { USDC_WETH_USV2, tychoRouterAddr, true, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ); bytes memory usdcWethV3Pool1OneZeroData = encodeUniswapV3Swap( @@ -587,7 +587,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup { tychoRouterAddr, USDC_WETH_USV3, false, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ); bytes memory usdcWethV3Pool2OneZeroData = encodeUniswapV3Swap( @@ -596,7 +596,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup { tychoRouterAddr, USDC_WETH_USV3_2, false, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ); bytes[] memory swaps = new bytes[](3); @@ -639,7 +639,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup { USDC_MAG7_POOL, tychoRouterAddr, true, - TokenTransfer.TransferType.TRANSFER_FROM + TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL ); bytes memory swap = encodeSplitSwap( diff --git a/foundry/test/executors/UniswapV2Executor.t.sol b/foundry/test/executors/UniswapV2Executor.t.sol index a001a1e..64be1d2 100644 --- a/foundry/test/executors/UniswapV2Executor.t.sol +++ b/foundry/test/executors/UniswapV2Executor.t.sol @@ -84,7 +84,7 @@ contract UniswapV2ExecutorTest is Test, Constants, Permit2TestHelper { address(2), address(3), false, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ); ( @@ -100,7 +100,8 @@ contract UniswapV2ExecutorTest is Test, Constants, Permit2TestHelper { assertEq(receiver, address(3)); assertEq(zeroForOne, false); assertEq( - uint8(TokenTransfer.TransferType.TRANSFER), uint8(transferType) + uint8(TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL), + uint8(transferType) ); } @@ -157,7 +158,7 @@ contract UniswapV2ExecutorTest is Test, Constants, Permit2TestHelper { WETH_DAI_POOL, BOB, zeroForOne, - uint8(TokenTransfer.TransferType.TRANSFER) + uint8(TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL) ); deal(WETH_ADDR, address(uniswapV2Exposed), amountIn); @@ -176,7 +177,7 @@ contract UniswapV2ExecutorTest is Test, Constants, Permit2TestHelper { WETH_DAI_POOL, BOB, zeroForOne, - uint8(TokenTransfer.TransferType.TRANSFER_FROM) + uint8(TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL) ); deal(WETH_ADDR, address(this), amountIn); @@ -197,7 +198,7 @@ contract UniswapV2ExecutorTest is Test, Constants, Permit2TestHelper { WETH_DAI_POOL, ALICE, zeroForOne, - uint8(TokenTransfer.TransferType.TRANSFER_PERMIT2) + uint8(TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL) ); deal(WETH_ADDR, ALICE, amountIn); @@ -283,7 +284,7 @@ contract UniswapV2ExecutorTest is Test, Constants, Permit2TestHelper { fakePool, BOB, zeroForOne, - uint8(TokenTransfer.TransferType.TRANSFER) + uint8(TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL) ); deal(WETH_ADDR, address(uniswapV2Exposed), amountIn); @@ -303,7 +304,7 @@ contract UniswapV2ExecutorTest is Test, Constants, Permit2TestHelper { USDC_MAG7_POOL, BOB, zeroForOne, - uint8(TokenTransfer.TransferType.TRANSFER) + uint8(TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL) ); deal(BASE_USDC, address(uniswapV2Exposed), amountIn); diff --git a/foundry/test/executors/UniswapV3Executor.t.sol b/foundry/test/executors/UniswapV3Executor.t.sol index 5b134b8..cd77697 100644 --- a/foundry/test/executors/UniswapV3Executor.t.sol +++ b/foundry/test/executors/UniswapV3Executor.t.sol @@ -71,7 +71,7 @@ contract UniswapV3ExecutorTest is Test, Constants, Permit2TestHelper { address(2), address(3), false, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ); ( @@ -91,7 +91,8 @@ contract UniswapV3ExecutorTest is Test, Constants, Permit2TestHelper { assertEq(target, address(3)); assertEq(zeroForOne, false); assertEq( - uint8(transferType), uint8(TokenTransfer.TransferType.TRANSFER) + uint8(transferType), + uint8(TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL) ); } @@ -126,7 +127,7 @@ contract UniswapV3ExecutorTest is Test, Constants, Permit2TestHelper { WETH_ADDR, DAI_ADDR, poolFee, - TokenTransfer.TransferType.TRANSFER, + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL, address(uniswapV3Exposed) ); uint256 dataOffset = 3; // some offset @@ -160,7 +161,7 @@ contract UniswapV3ExecutorTest is Test, Constants, Permit2TestHelper { address(this), fakePool, zeroForOne, - TokenTransfer.TransferType.TRANSFER + TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL ); vm.expectRevert(UniswapV3Executor__InvalidTarget.selector); diff --git a/foundry/test/executors/UniswapV4Executor.t.sol b/foundry/test/executors/UniswapV4Executor.t.sol index 4c925f2..62f61c9 100644 --- a/foundry/test/executors/UniswapV4Executor.t.sol +++ b/foundry/test/executors/UniswapV4Executor.t.sol @@ -52,7 +52,7 @@ contract UniswapV4ExecutorTest is Test, Constants { uint24 pool2Fee = 1000; int24 tickSpacing2 = -10; TokenTransfer.TransferType transferType = - TokenTransfer.TransferType.TRANSFER_FROM; + TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL; UniswapV4Executor.UniswapV4Pool[] memory pools = new UniswapV4Executor.UniswapV4Pool[](2); diff --git a/src/encoding/evm/strategy_encoder/transfer_optimizations.rs b/src/encoding/evm/strategy_encoder/transfer_optimizations.rs index 77c23d4..5188986 100644 --- a/src/encoding/evm/strategy_encoder/transfer_optimizations.rs +++ b/src/encoding/evm/strategy_encoder/transfer_optimizations.rs @@ -33,21 +33,21 @@ pub trait TransferOptimization { } else if is_first_swap && send_funds_to_pool { if permit2 { // Transfer from swapper to pool using permit2. - TransferType::Permit2Transfer + TransferType::TransferPermit2ToProtocol } else { // Transfer from swapper to pool. - TransferType::TransferFrom + TransferType::TransferFromToProtocol } } else if is_first_swap && funds_expected_in_router { if permit2 { // Transfer from swapper to router using permit2. - TransferType::Permit2TransferToRouter + TransferType::TransferPermit2ToRouter } else { // Transfer from swapper to router. - TransferType::TransferToRouter + TransferType::TransferFromToRouter } } else { - TransferType::Transfer + TransferType::TransferToProtocol } } } @@ -93,7 +93,7 @@ mod tests { let strategy = MockStrategy {}; let transfer_method = strategy.get_transfer_type(swap.clone(), weth(), eth(), weth(), true, false); - assert_eq!(transfer_method, TransferType::Permit2Transfer); + assert_eq!(transfer_method, TransferType::TransferPermit2ToProtocol); } #[test] @@ -111,7 +111,7 @@ mod tests { let strategy = MockStrategy {}; let transfer_method = strategy.get_transfer_type(swap.clone(), weth(), eth(), weth(), false, false); - assert_eq!(transfer_method, TransferType::TransferFrom); + assert_eq!(transfer_method, TransferType::TransferFromToProtocol); } #[test] @@ -149,7 +149,7 @@ mod tests { let strategy = MockStrategy {}; let transfer_method = strategy.get_transfer_type(swap.clone(), eth(), eth(), weth(), false, true); - assert_eq!(transfer_method, TransferType::TransferFrom); + assert_eq!(transfer_method, TransferType::TransferFromToProtocol); } #[test] @@ -168,6 +168,6 @@ mod tests { let strategy = MockStrategy {}; let transfer_method = strategy.get_transfer_type(swap.clone(), weth(), eth(), weth(), false, false); - assert_eq!(transfer_method, TransferType::Transfer); + assert_eq!(transfer_method, TransferType::TransferToProtocol); } } diff --git a/src/encoding/evm/swap_encoder/swap_encoders.rs b/src/encoding/evm/swap_encoder/swap_encoders.rs index 1602ae3..0ec212e 100644 --- a/src/encoding/evm/swap_encoder/swap_encoders.rs +++ b/src/encoding/evm/swap_encoder/swap_encoders.rs @@ -595,7 +595,7 @@ mod tests { router_address: Some(Bytes::zero(20)), group_token_in: token_in.clone(), group_token_out: token_out.clone(), - transfer_type: TransferType::Transfer, + transfer_type: TransferType::TransferToProtocol, }; let encoder = UniswapV2SwapEncoder::new( String::from("0x543778987b293C7E8Cf0722BB2e935ba6f4068D4"), @@ -649,7 +649,7 @@ mod tests { router_address: Some(Bytes::zero(20)), group_token_in: token_in.clone(), group_token_out: token_out.clone(), - transfer_type: TransferType::Transfer, + transfer_type: TransferType::TransferToProtocol, }; let encoder = UniswapV3SwapEncoder::new( String::from("0x543778987b293C7E8Cf0722BB2e935ba6f4068D4"), @@ -773,7 +773,7 @@ mod tests { group_token_in: token_in.clone(), group_token_out: token_out.clone(), - transfer_type: TransferType::Transfer, + transfer_type: TransferType::TransferToProtocol, }; let encoder = UniswapV4SwapEncoder::new( String::from("0xF62849F9A0B5Bf2913b396098F7c7019b51A820a"), @@ -842,7 +842,7 @@ mod tests { group_token_in: group_token_in.clone(), // Token out is the same as the group token out group_token_out: token_out.clone(), - transfer_type: TransferType::Transfer, + transfer_type: TransferType::TransferToProtocol, }; let encoder = UniswapV4SwapEncoder::new( @@ -885,7 +885,7 @@ mod tests { router_address: Some(router_address.clone()), group_token_in: usde_address.clone(), group_token_out: wbtc_address.clone(), - transfer_type: TransferType::Transfer, + transfer_type: TransferType::TransferToProtocol, }; // Setup - First sequence: USDE -> USDT @@ -1017,7 +1017,7 @@ mod tests { group_token_out: token_out.clone(), exact_out: false, router_address: Some(Bytes::default()), - transfer_type: TransferType::Transfer, + transfer_type: TransferType::TransferToProtocol, }; let encoder = @@ -1060,7 +1060,7 @@ mod tests { group_token_out: group_token_out.clone(), exact_out: false, router_address: Some(Bytes::default()), - transfer_type: TransferType::Transfer, + transfer_type: TransferType::TransferToProtocol, }; let first_swap = Swap { diff --git a/src/encoding/evm/tycho_encoders.rs b/src/encoding/evm/tycho_encoders.rs index 40beb97..1ecf41f 100644 --- a/src/encoding/evm/tycho_encoders.rs +++ b/src/encoding/evm/tycho_encoders.rs @@ -260,7 +260,7 @@ impl TychoExecutorEncoder { router_address: None, group_token_in: grouped_swap.input_token.clone(), group_token_out: grouped_swap.output_token.clone(), - transfer_type: TransferType::Transfer, + transfer_type: TransferType::TransferToProtocol, }; let protocol_data = swap_encoder.encode_swap(swap.clone(), encoding_context.clone())?; grouped_protocol_data.extend(protocol_data); diff --git a/src/encoding/models.rs b/src/encoding/models.rs index 9d5fc47..052df36 100644 --- a/src/encoding/models.rs +++ b/src/encoding/models.rs @@ -100,20 +100,20 @@ pub struct Transaction { /// /// # Fields /// -/// * `Transfer`: Transfer the token from the router into the pool. -/// * `TransferFrom`: Transfer the token from the swapper to the pool. -/// * `Permit2Transfer`: Transfer the token from the sender to the pool using Permit2. -/// * `TransferToRouter`: Transfer the token from the swapper to the router. -/// * `Permit2TransferToRouter`: Transfer the token from the swapper to the router using Permit2. +/// * `TransferToProtocol`: Transfer the token from the router into the protocol. +/// * `TransferFromToProtocol`: Transfer the token from the sender to the protocol. +/// * `TransferPermit2ToProtocol`: Transfer the token from the sender to the protocol using Permit2. +/// * `TransferFromToRouter`: Transfer the token from the sender to the router. +/// * `TransferPermit2ToRouter`: Transfer the token from the sender to the router using Permit2. /// * `None`: No transfer is needed. Tokens are already in the pool. #[repr(u8)] #[derive(Clone, Debug, PartialEq)] pub enum TransferType { - Transfer = 0, - TransferFrom = 1, - Permit2Transfer = 2, - TransferToRouter = 3, - Permit2TransferToRouter = 4, + TransferToProtocol = 0, + TransferFromToProtocol = 1, + TransferPermit2ToProtocol = 2, + TransferFromToRouter = 3, + TransferPermit2ToRouter = 4, None = 5, }