Delete TokenTransfer.sol
Make slither happy
Bugfixes:
- Executors
- Ekubo:
- Fix the POOL_DATA_OFFSET value and remove sender from callback data
- Use SafeERC20
- Maverick and Univ2: Use safeTransfer and not safeTransferFrom
- Univ3: update expected data length
- Univ4: update the selectors (the signature changed)
- Router:
- For split swap we don't need to pass the tokenInReceiver, it should always be the router address
- For single and sequential: change order of the parameters (to be before the permit2 specific objects)
- Encoders:
- Update selector signatures
- For split swap pass the transfer_from (we might not need to if the token in is ETH)
Took 2 hours 51 minutes
38 lines
964 B
Solidity
38 lines
964 B
Solidity
// SPDX-License-Identifier: BUSL-1.1
|
|
pragma solidity ^0.8.26;
|
|
|
|
import "@src/executors/UniswapV4Executor.sol";
|
|
|
|
library UniswapV4Utils {
|
|
function encodeExactInput(
|
|
address tokenIn,
|
|
address tokenOut,
|
|
bool zeroForOne,
|
|
bool transferFromNeeded,
|
|
bool transferNeeded,
|
|
address receiver,
|
|
UniswapV4Executor.UniswapV4Pool[] memory pools
|
|
) public pure returns (bytes memory) {
|
|
bytes memory encodedPools;
|
|
|
|
for (uint256 i = 0; i < pools.length; i++) {
|
|
encodedPools = abi.encodePacked(
|
|
encodedPools,
|
|
pools[i].intermediaryToken,
|
|
bytes3(pools[i].fee),
|
|
pools[i].tickSpacing
|
|
);
|
|
}
|
|
|
|
return abi.encodePacked(
|
|
tokenIn,
|
|
tokenOut,
|
|
zeroForOne,
|
|
transferFromNeeded,
|
|
transferNeeded,
|
|
receiver,
|
|
encodedPools
|
|
);
|
|
}
|
|
}
|