ETHButtonswapRouter
Inherits: BasicButtonswapRouter, IETHButtonswapRouter
State Variables
WETH
Returns the address of the WETH token
address public immutable override WETH;
Functions
constructor
constructor(address _factory, address _WETH) BasicButtonswapRouter(_factory);
receive
Only accepts ETH via fallback from the WETH contract
receive() external payable;
addLiquidityETH
Similar to addLiquidity
but one of the tokens is ETH wrapped into WETH.
Adds liquidity to a pair, creating it if it doesn't exist yet, and transfers the liquidity tokens to the recipient.
*If the pair is empty, amountTokenMin and amountETHMin are ignored. If the pair is nonempty, it deposits as much of token and WETH as possible while maintaining 3 conditions:
- The ratio of token to WETH in the pair remains approximately the same
- The amount of token in the pair is at least amountTokenMin but less than or equal to amountTokenDesired
- The amount of WETH in the pair is at least amountETHMin but less than or equal to ETH sent*
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
uint16 movingAveragePrice0ThresholdBps,
address to,
uint256 deadline
)
external
payable
virtual
override
ensure(deadline)
returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
Parameters
Name | Type | Description |
---|---|---|
token | address | The address of the non-WETH token in the pair. |
amountTokenDesired | uint256 | The maximum amount of the non-ETH token to add to the pair. |
amountTokenMin | uint256 | The minimum amount of the non-ETH token to add to the pair. |
amountETHMin | uint256 | The minimum amount of ETH/WETH to add to the pair. |
movingAveragePrice0ThresholdBps | uint16 | The percentage threshold that movingAveragePrice0 can deviate from the current price. |
to | address | The address to send the liquidity tokens to. |
deadline | uint256 | The time after which this transaction can no longer be executed. |
Returns
Name | Type | Description |
---|---|---|
amountToken | uint256 | The amount of token actually added to the pair. |
amountETH | uint256 | The amount of ETH/WETH actually added to the pair. |
liquidity | uint256 | The amount of liquidity tokens minted. |
addLiquidityETHWithReservoir
Similar to addLiquidityWithReservoir
but one of the tokens is ETH wrapped into WETH.
Adds liquidity to a pair, opposite to the existing reservoir, and transfers the liquidity tokens to the recipient
*Since there at most one reservoir at a given time, some conditions are checked:
- If there is no reservoir, it rejects
- If the non-WETH token has the reservoir, amountTokenDesired parameter ignored.
- The token/WETH with the reservoir has its amount deducted from the reservoir (checked against corresponding amountMin parameter)*
function addLiquidityETHWithReservoir(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
virtual
override
ensure(deadline)
returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
Parameters
Name | Type | Description |
---|---|---|
token | address | The address of the non-WETH token in the pair. |
amountTokenDesired | uint256 | The maximum amount of the non-WETH token to add to the pair. |
amountTokenMin | uint256 | The minimum amount of the non-WETH token to add to the pair. |
amountETHMin | uint256 | The minimum amount of WETH to add to the pair. |
to | address | The address to send the liquidity tokens to. |
deadline | uint256 | The time after which this transaction can no longer be executed. |
Returns
Name | Type | Description |
---|---|---|
amountToken | uint256 | The amount of the non-ETH token actually added to the pair. |
amountETH | uint256 | The amount of WETH actually added to the pair. |
liquidity | uint256 | The amount of liquidity tokens minted. |
removeLiquidityETH
Similar to removeLiquidity()
but one of the tokens is ETH wrapped into WETH.
Removes liquidity from a pair, and transfers the tokens to the recipient.
function removeLiquidityETH(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) public virtual override ensure(deadline) returns (uint256 amountToken, uint256 amountETH);
Parameters
Name | Type | Description |
---|---|---|
token | address | The address of the non-WETH token in the pair. |
liquidity | uint256 | The amount of liquidity tokens to burn. |
amountTokenMin | uint256 | The minimum amount of the non-WETH token to withdraw from the pair. |
amountETHMin | uint256 | The minimum amount of ETH/WETH to withdraw from the pair. |
to | address | The address to send the tokens to. |
deadline | uint256 | The time after which this transaction can no longer be executed. |
Returns
Name | Type | Description |
---|---|---|
amountToken | uint256 | The amount of the non-WETH token actually withdrawn from the pair. |
amountETH | uint256 | The amount of ETH/WETH actually withdrawn from the pair. |
removeLiquidityETHFromReservoir
Similar to removeLiquidityFromReservoir()
but one of the tokens is ETH wrapped into WETH.
Removes liquidity from the reservoir of a pair and transfers the tokens to the recipient.
function removeLiquidityETHFromReservoir(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) public virtual override ensure(deadline) returns (uint256 amountToken, uint256 amountETH);
Parameters
Name | Type | Description |
---|---|---|
token | address | The address of the non-WETH token in the pair. |
liquidity | uint256 | The amount of liquidity tokens to burn. |
amountTokenMin | uint256 | The minimum amount of the non-WETH token to withdraw from the pair. |
amountETHMin | uint256 | The minimum amount of ETH/WETH to withdraw from the pair. |
to | address | The address to send the tokens to. |
deadline | uint256 | The time after which this transaction can no longer be executed. |
Returns
Name | Type | Description |
---|---|---|
amountToken | uint256 | The amount of the non-WETH token actually withdrawn from the pair. |
amountETH | uint256 | The amount of ETH/WETH actually withdrawn from the pair. |
removeLiquidityETHWithPermit
function removeLiquidityETHWithPermit(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external virtual override returns (uint256 amountToken, uint256 amountETH);
swapExactETHForTokens
Similar to swapExactTokensForTokens()
the first token is ETH wrapped into WETH.
Given an ordered array of tokens, performs consecutive swaps from a specific amount of the first token to the last token in the array.
function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline)
external
payable
virtual
override
ensure(deadline)
returns (uint256[] memory amounts);
Parameters
Name | Type | Description |
---|---|---|
amountOutMin | uint256 | The minimum amount of the last token to receive from the swap. |
path | address[] | An array of token addresses [tokenA, tokenB, tokenC, ...] representing the path the input token takes to get to the output token |
to | address | The address to send the output token to. |
deadline | uint256 | The time after which this transaction can no longer be executed. |
swapTokensForExactETH
Similar to swapTokensForExactTokens()
the last token is ETH wrapped into WETH.
Given an ordered array of tokens, performs consecutive swaps from the first token to a specific amount of the last token in the array.
function swapTokensForExactETH(
uint256 amountOut,
uint256 amountInMax,
address[] calldata path,
address to,
uint256 deadline
) external virtual override ensure(deadline) returns (uint256[] memory amounts);
Parameters
Name | Type | Description |
---|---|---|
amountOut | uint256 | The amount of ETH to receive from the swap. |
amountInMax | uint256 | The maximum amount of the first token to swap. |
path | address[] | An array of token addresses [tokenA, tokenB, tokenC, ...] representing the path the input token takes to get to the output token |
to | address | The address to send the output token to. |
deadline | uint256 | The time after which this transaction can no longer be executed. |
swapExactTokensForETH
Similar to swapExactTokensForTokens()
but the last token is ETH wrapped into WETH.
Given an ordered array of tokens, performs consecutive swaps from a specific amount of the first token to the last token in the array.
function swapExactTokensForETH(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external virtual override ensure(deadline) returns (uint256[] memory amounts);
Parameters
Name | Type | Description |
---|---|---|
amountIn | uint256 | The amount of the first token to swap. |
amountOutMin | uint256 | The minimum amount of the last token to receive from the swap. |
path | address[] | An array of token addresses [tokenA, tokenB, tokenC, ...] representing the path the input token takes to get to the output token |
to | address | The address to send the output token to. |
deadline | uint256 | The time after which this transaction can no longer be executed. |
swapETHForExactTokens
Similar to swapTokensForExactTokens()
but the first token is ETH wrapped into WETH.
Given an ordered array of tokens, performs consecutive swaps from the first token to a specific amount of the last token in the array.
function swapETHForExactTokens(uint256 amountOut, address[] calldata path, address to, uint256 deadline)
external
payable
virtual
override
ensure(deadline)
returns (uint256[] memory amounts);
Parameters
Name | Type | Description |
---|---|---|
amountOut | uint256 | The amount of the last token to receive from the swap. |
path | address[] | An array of token addresses [tokenA, tokenB, tokenC, ...] representing the path the input token takes to get to the output token |
to | address | The address to send the output token to. |
deadline | uint256 | The time after which this transaction can no longer be executed. |