chore: renamings for clarity

- Also added a check for length in the Curve executor.
This commit is contained in:
TAMARA LIPOWSKI
2025-04-15 12:44:03 -04:00
committed by Diana Carvalho
parent 3a73fef933
commit 30dc3f7682
13 changed files with 82 additions and 80 deletions

View File

@@ -58,9 +58,6 @@ import {IPoolManager} from "@uniswap/v4-core/src/interfaces/IPoolManager.sol";
error TychoRouter__AddressZero(); error TychoRouter__AddressZero();
error TychoRouter__EmptySwaps(); error TychoRouter__EmptySwaps();
error TychoRouter__NegativeSlippage(uint256 amount, uint256 minAmount); error TychoRouter__NegativeSlippage(uint256 amount, uint256 minAmount);
error TychoRouter__AmountInDiffersFromConsumed(
uint256 amountIn, uint256 amountConsumed
);
error TychoRouter__MessageValueMismatch(uint256 value, uint256 amount); error TychoRouter__MessageValueMismatch(uint256 value, uint256 amount);
error TychoRouter__InvalidDataLength(); error TychoRouter__InvalidDataLength();
error TychoRouter__UndefinedMinAmountOut(); error TychoRouter__UndefinedMinAmountOut();

View File

@@ -6,6 +6,7 @@ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "./TokenTransfer.sol"; import "./TokenTransfer.sol";
error CurveExecutor__AddressZero(); error CurveExecutor__AddressZero();
error CurveExecutor__InvalidDataLength();
interface CryptoPool { interface CryptoPool {
// slither-disable-next-line naming-convention // slither-disable-next-line naming-convention
@@ -53,6 +54,8 @@ contract CurveExecutor is IExecutor, TokenTransfer {
payable payable
returns (uint256) returns (uint256)
{ {
if (data.length != 65) revert CurveExecutor__InvalidDataLength();
( (
address tokenIn, address tokenIn,
address tokenOut, address tokenOut,

View File

@@ -14,15 +14,15 @@ contract TokenTransfer {
enum TransferType { enum TransferType {
// Assume funds are in the TychoRouter - transfer into the pool // 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 // 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 // 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 // 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 // in the router contract when calling swap - transferFrom into the router
// contract // contract
TRANSFER_TO_ROUTER, TRANSFER_FROM_TO_ROUTER,
// Assume funds are in msg.sender's wallet - but the pool requires it to be // 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 // in the router contract when calling swap - transferFrom into the router
// contract using permit2 // contract using permit2
@@ -45,19 +45,19 @@ contract TokenTransfer {
uint256 amount, uint256 amount,
TransferType transferType TransferType transferType
) internal { ) internal {
if (transferType == TransferType.TRANSFER) { if (transferType == TransferType.TRANSFER_TO_PROTOCOL) {
if (tokenIn == address(0)) { if (tokenIn == address(0)) {
payable(receiver).transfer(amount); payable(receiver).transfer(amount);
} else { } else {
IERC20(tokenIn).safeTransfer(receiver, amount); 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 // slither-disable-next-line arbitrary-send-erc20
IERC20(tokenIn).safeTransferFrom(sender, receiver, amount); 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.permit is already called from the TychoRouter
permit2.transferFrom(sender, receiver, uint160(amount), tokenIn); 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 // slither-disable-next-line arbitrary-send-erc20
IERC20(tokenIn).safeTransferFrom(sender, address(this), amount); IERC20(tokenIn).safeTransferFrom(sender, address(this), amount);
} else if (transferType == TransferType.TRANSFER_PERMIT2_TO_ROUTER) { } else if (transferType == TransferType.TRANSFER_PERMIT2_TO_ROUTER) {

View File

@@ -18,8 +18,8 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup {
// (univ2) (univ2) // (univ2) (univ2)
TokenTransfer.TransferType transferType = permit2 TokenTransfer.TransferType transferType = permit2
? TokenTransfer.TransferType.TRANSFER_PERMIT2 ? TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL
: TokenTransfer.TransferType.TRANSFER_FROM; : TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL;
bytes[] memory swaps = new bytes[](2); bytes[] memory swaps = new bytes[](2);
// WETH -> DAI // WETH -> DAI
@@ -38,7 +38,7 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup {
DAI_USDC_POOL, DAI_USDC_POOL,
tychoRouterAddr, tychoRouterAddr,
true, true,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
) )
); );
return swaps; return swaps;
@@ -222,7 +222,7 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup {
WETH_DAI_POOL, WETH_DAI_POOL,
tychoRouterAddr, tychoRouterAddr,
false, false,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
) )
); );
@@ -234,7 +234,7 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup {
DAI_USDC_POOL, DAI_USDC_POOL,
tychoRouterAddr, tychoRouterAddr,
true, true,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
) )
); );
@@ -282,7 +282,7 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup {
DAI_USDC_POOL, DAI_USDC_POOL,
tychoRouterAddr, tychoRouterAddr,
false, false,
TokenTransfer.TransferType.TRANSFER_PERMIT2 TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL
) )
); );
@@ -294,7 +294,7 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup {
WETH_DAI_POOL, WETH_DAI_POOL,
tychoRouterAddr, tychoRouterAddr,
true, true,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
) )
); );
@@ -331,7 +331,7 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup {
tychoRouterAddr, tychoRouterAddr,
USDC_WETH_USV3, USDC_WETH_USV3,
true, true,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
); );
bytes memory usdcWethV3Pool2OneZeroData = encodeUniswapV3Swap( bytes memory usdcWethV3Pool2OneZeroData = encodeUniswapV3Swap(
@@ -340,7 +340,7 @@ contract TychoRouterSequentialSwapTest is TychoRouterTestSetup {
tychoRouterAddr, tychoRouterAddr,
USDC_WETH_USV3_2, USDC_WETH_USV3_2,
false, false,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
); );
bytes[] memory swaps = new bytes[](2); bytes[] memory swaps = new bytes[](2);

View File

@@ -26,7 +26,7 @@ contract TychoRouterSingleSwapTest is TychoRouterTestSetup {
WETH_DAI_POOL, WETH_DAI_POOL,
tychoRouterAddr, tychoRouterAddr,
false, false,
TokenTransfer.TransferType.TRANSFER_PERMIT2 TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL
); );
bytes memory swap = bytes memory swap =
@@ -67,7 +67,7 @@ contract TychoRouterSingleSwapTest is TychoRouterTestSetup {
WETH_DAI_POOL, WETH_DAI_POOL,
tychoRouterAddr, tychoRouterAddr,
false, false,
TokenTransfer.TransferType.TRANSFER_FROM TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL
); );
bytes memory swap = bytes memory swap =
@@ -108,7 +108,7 @@ contract TychoRouterSingleSwapTest is TychoRouterTestSetup {
WETH_DAI_POOL, WETH_DAI_POOL,
tychoRouterAddr, tychoRouterAddr,
false, false,
TokenTransfer.TransferType.TRANSFER_FROM TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL
); );
bytes memory swap = bytes memory swap =
@@ -134,7 +134,7 @@ contract TychoRouterSingleSwapTest is TychoRouterTestSetup {
WETH_DAI_POOL, WETH_DAI_POOL,
tychoRouterAddr, tychoRouterAddr,
false, false,
TokenTransfer.TransferType.TRANSFER_FROM TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL
); );
bytes memory swap = bytes memory swap =
@@ -169,7 +169,7 @@ contract TychoRouterSingleSwapTest is TychoRouterTestSetup {
WETH_DAI_POOL, WETH_DAI_POOL,
tychoRouterAddr, tychoRouterAddr,
false, false,
TokenTransfer.TransferType.TRANSFER_FROM TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL
); );
bytes memory swap = bytes memory swap =
@@ -218,7 +218,7 @@ contract TychoRouterSingleSwapTest is TychoRouterTestSetup {
WETH_DAI_POOL, WETH_DAI_POOL,
tychoRouterAddr, tychoRouterAddr,
false, false,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
); );
bytes memory swap = bytes memory swap =
@@ -261,7 +261,7 @@ contract TychoRouterSingleSwapTest is TychoRouterTestSetup {
WETH_DAI_POOL, WETH_DAI_POOL,
tychoRouterAddr, tychoRouterAddr,
true, true,
TokenTransfer.TransferType.TRANSFER_PERMIT2 TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL
); );
bytes memory swap = bytes memory swap =

View File

@@ -21,8 +21,8 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup {
bytes[] memory swaps = new bytes[](4); bytes[] memory swaps = new bytes[](4);
TokenTransfer.TransferType inTransferType = permit2 TokenTransfer.TransferType inTransferType = permit2
? TokenTransfer.TransferType.TRANSFER_PERMIT2 ? TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL
: TokenTransfer.TransferType.TRANSFER_FROM; : TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL;
// WETH -> WBTC (60%) // WETH -> WBTC (60%)
swaps[0] = encodeSplitSwap( swaps[0] = encodeSplitSwap(
@@ -49,7 +49,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup {
USDC_WBTC_POOL, USDC_WBTC_POOL,
tychoRouterAddr, tychoRouterAddr,
true, true,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
) )
); );
// WETH -> DAI // WETH -> DAI
@@ -74,7 +74,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup {
DAI_USDC_POOL, DAI_USDC_POOL,
tychoRouterAddr, tychoRouterAddr,
true, true,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
) )
); );
@@ -270,7 +270,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup {
WETH_DAI_POOL, WETH_DAI_POOL,
tychoRouterAddr, tychoRouterAddr,
false, false,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
); );
bytes memory swap = encodeSplitSwap( bytes memory swap = encodeSplitSwap(
@@ -319,7 +319,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup {
WETH_DAI_POOL, WETH_DAI_POOL,
tychoRouterAddr, tychoRouterAddr,
true, true,
TokenTransfer.TransferType.TRANSFER_PERMIT2 TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL
); );
bytes memory swap = encodeSplitSwap( bytes memory swap = encodeSplitSwap(
@@ -370,7 +370,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup {
tychoRouterAddr, tychoRouterAddr,
DAI_WETH_USV3, DAI_WETH_USV3,
zeroForOne, zeroForOne,
TokenTransfer.TransferType.TRANSFER_PERMIT2 TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL
); );
bytes memory swap = encodeSplitSwap( bytes memory swap = encodeSplitSwap(
uint8(0), uint8(1), uint24(0), address(usv3Executor), protocolData uint8(0), uint8(1), uint24(0), address(usv3Executor), protocolData
@@ -511,7 +511,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup {
tychoRouterAddr, tychoRouterAddr,
USDC_WETH_USV3, USDC_WETH_USV3,
true, true,
TokenTransfer.TransferType.TRANSFER_FROM TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL
); );
bytes memory usdcWethV3Pool2ZeroOneData = encodeUniswapV3Swap( bytes memory usdcWethV3Pool2ZeroOneData = encodeUniswapV3Swap(
@@ -520,7 +520,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup {
tychoRouterAddr, tychoRouterAddr,
USDC_WETH_USV3_2, USDC_WETH_USV3_2,
true, true,
TokenTransfer.TransferType.TRANSFER_FROM TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL
); );
bytes memory wethUsdcV2OneZeroData = encodeUniswapV2Swap( bytes memory wethUsdcV2OneZeroData = encodeUniswapV2Swap(
@@ -528,7 +528,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup {
USDC_WETH_USV2, USDC_WETH_USV2,
tychoRouterAddr, tychoRouterAddr,
false, false,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
); );
bytes[] memory swaps = new bytes[](3); bytes[] memory swaps = new bytes[](3);
@@ -578,7 +578,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup {
USDC_WETH_USV2, USDC_WETH_USV2,
tychoRouterAddr, tychoRouterAddr,
true, true,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
); );
bytes memory usdcWethV3Pool1OneZeroData = encodeUniswapV3Swap( bytes memory usdcWethV3Pool1OneZeroData = encodeUniswapV3Swap(
@@ -587,7 +587,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup {
tychoRouterAddr, tychoRouterAddr,
USDC_WETH_USV3, USDC_WETH_USV3,
false, false,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
); );
bytes memory usdcWethV3Pool2OneZeroData = encodeUniswapV3Swap( bytes memory usdcWethV3Pool2OneZeroData = encodeUniswapV3Swap(
@@ -596,7 +596,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup {
tychoRouterAddr, tychoRouterAddr,
USDC_WETH_USV3_2, USDC_WETH_USV3_2,
false, false,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
); );
bytes[] memory swaps = new bytes[](3); bytes[] memory swaps = new bytes[](3);
@@ -639,7 +639,7 @@ contract TychoRouterSplitSwapTest is TychoRouterTestSetup {
USDC_MAG7_POOL, USDC_MAG7_POOL,
tychoRouterAddr, tychoRouterAddr,
true, true,
TokenTransfer.TransferType.TRANSFER_FROM TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL
); );
bytes memory swap = encodeSplitSwap( bytes memory swap = encodeSplitSwap(

View File

@@ -84,7 +84,7 @@ contract UniswapV2ExecutorTest is Test, Constants, Permit2TestHelper {
address(2), address(2),
address(3), address(3),
false, false,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
); );
( (
@@ -100,7 +100,8 @@ contract UniswapV2ExecutorTest is Test, Constants, Permit2TestHelper {
assertEq(receiver, address(3)); assertEq(receiver, address(3));
assertEq(zeroForOne, false); assertEq(zeroForOne, false);
assertEq( 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, WETH_DAI_POOL,
BOB, BOB,
zeroForOne, zeroForOne,
uint8(TokenTransfer.TransferType.TRANSFER) uint8(TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL)
); );
deal(WETH_ADDR, address(uniswapV2Exposed), amountIn); deal(WETH_ADDR, address(uniswapV2Exposed), amountIn);
@@ -176,7 +177,7 @@ contract UniswapV2ExecutorTest is Test, Constants, Permit2TestHelper {
WETH_DAI_POOL, WETH_DAI_POOL,
BOB, BOB,
zeroForOne, zeroForOne,
uint8(TokenTransfer.TransferType.TRANSFER_FROM) uint8(TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL)
); );
deal(WETH_ADDR, address(this), amountIn); deal(WETH_ADDR, address(this), amountIn);
@@ -197,7 +198,7 @@ contract UniswapV2ExecutorTest is Test, Constants, Permit2TestHelper {
WETH_DAI_POOL, WETH_DAI_POOL,
ALICE, ALICE,
zeroForOne, zeroForOne,
uint8(TokenTransfer.TransferType.TRANSFER_PERMIT2) uint8(TokenTransfer.TransferType.TRANSFER_PERMIT2_TO_PROTOCOL)
); );
deal(WETH_ADDR, ALICE, amountIn); deal(WETH_ADDR, ALICE, amountIn);
@@ -283,7 +284,7 @@ contract UniswapV2ExecutorTest is Test, Constants, Permit2TestHelper {
fakePool, fakePool,
BOB, BOB,
zeroForOne, zeroForOne,
uint8(TokenTransfer.TransferType.TRANSFER) uint8(TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL)
); );
deal(WETH_ADDR, address(uniswapV2Exposed), amountIn); deal(WETH_ADDR, address(uniswapV2Exposed), amountIn);
@@ -303,7 +304,7 @@ contract UniswapV2ExecutorTest is Test, Constants, Permit2TestHelper {
USDC_MAG7_POOL, USDC_MAG7_POOL,
BOB, BOB,
zeroForOne, zeroForOne,
uint8(TokenTransfer.TransferType.TRANSFER) uint8(TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL)
); );
deal(BASE_USDC, address(uniswapV2Exposed), amountIn); deal(BASE_USDC, address(uniswapV2Exposed), amountIn);

View File

@@ -71,7 +71,7 @@ contract UniswapV3ExecutorTest is Test, Constants, Permit2TestHelper {
address(2), address(2),
address(3), address(3),
false, false,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
); );
( (
@@ -91,7 +91,8 @@ contract UniswapV3ExecutorTest is Test, Constants, Permit2TestHelper {
assertEq(target, address(3)); assertEq(target, address(3));
assertEq(zeroForOne, false); assertEq(zeroForOne, false);
assertEq( 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, WETH_ADDR,
DAI_ADDR, DAI_ADDR,
poolFee, poolFee,
TokenTransfer.TransferType.TRANSFER, TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL,
address(uniswapV3Exposed) address(uniswapV3Exposed)
); );
uint256 dataOffset = 3; // some offset uint256 dataOffset = 3; // some offset
@@ -160,7 +161,7 @@ contract UniswapV3ExecutorTest is Test, Constants, Permit2TestHelper {
address(this), address(this),
fakePool, fakePool,
zeroForOne, zeroForOne,
TokenTransfer.TransferType.TRANSFER TokenTransfer.TransferType.TRANSFER_TO_PROTOCOL
); );
vm.expectRevert(UniswapV3Executor__InvalidTarget.selector); vm.expectRevert(UniswapV3Executor__InvalidTarget.selector);

View File

@@ -52,7 +52,7 @@ contract UniswapV4ExecutorTest is Test, Constants {
uint24 pool2Fee = 1000; uint24 pool2Fee = 1000;
int24 tickSpacing2 = -10; int24 tickSpacing2 = -10;
TokenTransfer.TransferType transferType = TokenTransfer.TransferType transferType =
TokenTransfer.TransferType.TRANSFER_FROM; TokenTransfer.TransferType.TRANSFER_FROM_TO_PROTOCOL;
UniswapV4Executor.UniswapV4Pool[] memory pools = UniswapV4Executor.UniswapV4Pool[] memory pools =
new UniswapV4Executor.UniswapV4Pool[](2); new UniswapV4Executor.UniswapV4Pool[](2);

View File

@@ -33,21 +33,21 @@ pub trait TransferOptimization {
} else if is_first_swap && send_funds_to_pool { } else if is_first_swap && send_funds_to_pool {
if permit2 { if permit2 {
// Transfer from swapper to pool using permit2. // Transfer from swapper to pool using permit2.
TransferType::Permit2Transfer TransferType::TransferPermit2ToProtocol
} else { } else {
// Transfer from swapper to pool. // Transfer from swapper to pool.
TransferType::TransferFrom TransferType::TransferFromToProtocol
} }
} else if is_first_swap && funds_expected_in_router { } else if is_first_swap && funds_expected_in_router {
if permit2 { if permit2 {
// Transfer from swapper to router using permit2. // Transfer from swapper to router using permit2.
TransferType::Permit2TransferToRouter TransferType::TransferPermit2ToRouter
} else { } else {
// Transfer from swapper to router. // Transfer from swapper to router.
TransferType::TransferToRouter TransferType::TransferFromToRouter
} }
} else { } else {
TransferType::Transfer TransferType::TransferToProtocol
} }
} }
} }
@@ -93,7 +93,7 @@ mod tests {
let strategy = MockStrategy {}; let strategy = MockStrategy {};
let transfer_method = let transfer_method =
strategy.get_transfer_type(swap.clone(), weth(), eth(), weth(), true, false); strategy.get_transfer_type(swap.clone(), weth(), eth(), weth(), true, false);
assert_eq!(transfer_method, TransferType::Permit2Transfer); assert_eq!(transfer_method, TransferType::TransferPermit2ToProtocol);
} }
#[test] #[test]
@@ -111,7 +111,7 @@ mod tests {
let strategy = MockStrategy {}; let strategy = MockStrategy {};
let transfer_method = let transfer_method =
strategy.get_transfer_type(swap.clone(), weth(), eth(), weth(), false, false); strategy.get_transfer_type(swap.clone(), weth(), eth(), weth(), false, false);
assert_eq!(transfer_method, TransferType::TransferFrom); assert_eq!(transfer_method, TransferType::TransferFromToProtocol);
} }
#[test] #[test]
@@ -149,7 +149,7 @@ mod tests {
let strategy = MockStrategy {}; let strategy = MockStrategy {};
let transfer_method = let transfer_method =
strategy.get_transfer_type(swap.clone(), eth(), eth(), weth(), false, true); strategy.get_transfer_type(swap.clone(), eth(), eth(), weth(), false, true);
assert_eq!(transfer_method, TransferType::TransferFrom); assert_eq!(transfer_method, TransferType::TransferFromToProtocol);
} }
#[test] #[test]
@@ -168,6 +168,6 @@ mod tests {
let strategy = MockStrategy {}; let strategy = MockStrategy {};
let transfer_method = let transfer_method =
strategy.get_transfer_type(swap.clone(), weth(), eth(), weth(), false, false); strategy.get_transfer_type(swap.clone(), weth(), eth(), weth(), false, false);
assert_eq!(transfer_method, TransferType::Transfer); assert_eq!(transfer_method, TransferType::TransferToProtocol);
} }
} }

View File

@@ -595,7 +595,7 @@ mod tests {
router_address: Some(Bytes::zero(20)), router_address: Some(Bytes::zero(20)),
group_token_in: token_in.clone(), group_token_in: token_in.clone(),
group_token_out: token_out.clone(), group_token_out: token_out.clone(),
transfer_type: TransferType::Transfer, transfer_type: TransferType::TransferToProtocol,
}; };
let encoder = UniswapV2SwapEncoder::new( let encoder = UniswapV2SwapEncoder::new(
String::from("0x543778987b293C7E8Cf0722BB2e935ba6f4068D4"), String::from("0x543778987b293C7E8Cf0722BB2e935ba6f4068D4"),
@@ -649,7 +649,7 @@ mod tests {
router_address: Some(Bytes::zero(20)), router_address: Some(Bytes::zero(20)),
group_token_in: token_in.clone(), group_token_in: token_in.clone(),
group_token_out: token_out.clone(), group_token_out: token_out.clone(),
transfer_type: TransferType::Transfer, transfer_type: TransferType::TransferToProtocol,
}; };
let encoder = UniswapV3SwapEncoder::new( let encoder = UniswapV3SwapEncoder::new(
String::from("0x543778987b293C7E8Cf0722BB2e935ba6f4068D4"), String::from("0x543778987b293C7E8Cf0722BB2e935ba6f4068D4"),
@@ -773,7 +773,7 @@ mod tests {
group_token_in: token_in.clone(), group_token_in: token_in.clone(),
group_token_out: token_out.clone(), group_token_out: token_out.clone(),
transfer_type: TransferType::Transfer, transfer_type: TransferType::TransferToProtocol,
}; };
let encoder = UniswapV4SwapEncoder::new( let encoder = UniswapV4SwapEncoder::new(
String::from("0xF62849F9A0B5Bf2913b396098F7c7019b51A820a"), String::from("0xF62849F9A0B5Bf2913b396098F7c7019b51A820a"),
@@ -842,7 +842,7 @@ mod tests {
group_token_in: group_token_in.clone(), group_token_in: group_token_in.clone(),
// Token out is the same as the group token out // Token out is the same as the group token out
group_token_out: token_out.clone(), group_token_out: token_out.clone(),
transfer_type: TransferType::Transfer, transfer_type: TransferType::TransferToProtocol,
}; };
let encoder = UniswapV4SwapEncoder::new( let encoder = UniswapV4SwapEncoder::new(
@@ -885,7 +885,7 @@ mod tests {
router_address: Some(router_address.clone()), router_address: Some(router_address.clone()),
group_token_in: usde_address.clone(), group_token_in: usde_address.clone(),
group_token_out: wbtc_address.clone(), group_token_out: wbtc_address.clone(),
transfer_type: TransferType::Transfer, transfer_type: TransferType::TransferToProtocol,
}; };
// Setup - First sequence: USDE -> USDT // Setup - First sequence: USDE -> USDT
@@ -1017,7 +1017,7 @@ mod tests {
group_token_out: token_out.clone(), group_token_out: token_out.clone(),
exact_out: false, exact_out: false,
router_address: Some(Bytes::default()), router_address: Some(Bytes::default()),
transfer_type: TransferType::Transfer, transfer_type: TransferType::TransferToProtocol,
}; };
let encoder = let encoder =
@@ -1060,7 +1060,7 @@ mod tests {
group_token_out: group_token_out.clone(), group_token_out: group_token_out.clone(),
exact_out: false, exact_out: false,
router_address: Some(Bytes::default()), router_address: Some(Bytes::default()),
transfer_type: TransferType::Transfer, transfer_type: TransferType::TransferToProtocol,
}; };
let first_swap = Swap { let first_swap = Swap {

View File

@@ -260,7 +260,7 @@ impl TychoExecutorEncoder {
router_address: None, router_address: None,
group_token_in: grouped_swap.input_token.clone(), group_token_in: grouped_swap.input_token.clone(),
group_token_out: grouped_swap.output_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())?; let protocol_data = swap_encoder.encode_swap(swap.clone(), encoding_context.clone())?;
grouped_protocol_data.extend(protocol_data); grouped_protocol_data.extend(protocol_data);

View File

@@ -100,20 +100,20 @@ pub struct Transaction {
/// ///
/// # Fields /// # Fields
/// ///
/// * `Transfer`: Transfer the token from the router into the pool. /// * `TransferToProtocol`: Transfer the token from the router into the protocol.
/// * `TransferFrom`: Transfer the token from the swapper to the pool. /// * `TransferFromToProtocol`: Transfer the token from the sender to the protocol.
/// * `Permit2Transfer`: Transfer the token from the sender to the pool using Permit2. /// * `TransferPermit2ToProtocol`: Transfer the token from the sender to the protocol using Permit2.
/// * `TransferToRouter`: Transfer the token from the swapper to the router. /// * `TransferFromToRouter`: Transfer the token from the sender to the router.
/// * `Permit2TransferToRouter`: Transfer the token from the swapper to the router using Permit2. /// * `TransferPermit2ToRouter`: Transfer the token from the sender to the router using Permit2.
/// * `None`: No transfer is needed. Tokens are already in the pool. /// * `None`: No transfer is needed. Tokens are already in the pool.
#[repr(u8)] #[repr(u8)]
#[derive(Clone, Debug, PartialEq)] #[derive(Clone, Debug, PartialEq)]
pub enum TransferType { pub enum TransferType {
Transfer = 0, TransferToProtocol = 0,
TransferFrom = 1, TransferFromToProtocol = 1,
Permit2Transfer = 2, TransferPermit2ToProtocol = 2,
TransferToRouter = 3, TransferFromToRouter = 3,
Permit2TransferToRouter = 4, TransferPermit2ToRouter = 4,
None = 5, None = 5,
} }