Files
tycho-execution/foundry/src/interfaces/ISwapExecutor.sol
Diana Carvalho 5627a1902b feat: UniswapV2 SwapExecutor
--- don't change below this line ---
ENG-4033 Took 52 minutes

Took 3 minutes

Took 5 minutes

Took 36 seconds

Took 2 minutes


Took 30 seconds
2025-01-24 17:03:00 +00:00

38 lines
1.5 KiB
Solidity

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.28;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
pragma abicoder v2;
interface ISwapExecutor {
/**
* @notice Performs a swap on a liquidity pool.
* @dev This method can either take the amount of the input token or the amount
* of the output token that we would like to swap. If called with the amount of
* the input token, the amount of the output token will be returned, and vice
* versa. Whether it is the input or output that is given, is encoded in the data
* parameter.
*
* Note Part of the informal interface is that the executor supports sending the received
* tokens to a receiver address. If the underlying smart contract does not provide this
* functionality consider adding an additional transfer in the implementation.
*
* This function is marked as `payable` to accommodate delegatecalls, which can forward
* a potential `msg.value` to it.
*
* @param givenAmount The amount of either the input token or output token to swap.
* @param data Data that holds information necessary to perform the swap.
* @return calculatedAmount The amount of either the input token or output token
* swapped, depending on the givenAmount inputted.
*/
function swap(uint256 givenAmount, bytes calldata data)
external
returns (uint256 calculatedAmount);
}
interface ISwapExecutorErrors {
error InvalidParameterLength(uint256);
error UnknownCurveType(uint8);
}