Router02

Because routers are stateless and do not hold token balances, they can be replaced safely and trustlessly, if necessary. This may happen if more efficient smart contract patterns are discovered, or if additional functionality is desired. For this reason, routers have release numbers, starting at 01. This is the only release for ReefSwap, 02.

Code

ReefswapV2Router02.solarrow-up-right

Address

ReefswapV2Router02 is deployed at 0x641e34931C03751BFED14C4087bA395303bEd1A5 on the Reef mainnetarrow-up-right, and the Scubaarrow-up-righttestnet. It was built from commit 5bd61f0arrow-up-right.

Read-Only Functions

factory

function factory() external pure returns (address);

Returns factory addressarrow-up-right.

quote

See quotearrow-up-right.

getAmountOut

See getAmountOutarrow-up-right.

getAmountIn

See getAmountInarrow-up-right.

getAmountsOut

See getAmountsOutarrow-up-right.

getAmountsIn

See getAmountsInarrow-up-right.

State-Changing Functions

addLiquidity

Adds liquidity to an ERC-20⇄ERC-20 pool.

  • To cover all possible scenarios, msg.sender should have already given the router an allowance of at least amountADesired/amountBDesired on tokenA/tokenB.

  • Always adds assets at the ideal ratio, according to the price when the transaction is executed.

  • If a pool for the passed tokens does not exists, one is created automatically, and exactly amountADesired/amountBDesired tokens are added.

Name
Type

tokenA

address

A pool token.

tokenB

address

A pool token.

amountADesired

uint

The amount of tokenA to add as liquidity if the B/A price is <= amountBDesired/amountADesired (A depreciates).

amountBDesired

uint

The amount of tokenB to add as liquidity if the A/B price is <= amountADesired/amountBDesired (B depreciates).

amountAMin

uint

Bounds the extent to which the B/A price can go up before the transaction reverts. Must be <= amountADesired.

amountBMin

uint

Bounds the extent to which the A/B price can go up before the transaction reverts. Must be <= amountBDesired.

to

address

Recipient of the liquidity tokens.

deadline

uint

Unix timestamp after which the transaction will revert.

amountA

uint

The amount of tokenA sent to the pool.

amountB

uint

The amount of tokenB sent to the pool.

liquidity

uint

The amount of liquidity tokens minted.

addLiquidityREEF

Adds liquidity to an ERC-20⇄REEF pool with REEF.

  • To cover all possible scenarios, msg.sender should have already given the router an allowance of at least amountTokenDesired on token.

  • Always adds assets at the ideal ratio, according to the price when the transaction is executed.

  • msg.value is treated as a amountREEFDesired.

  • Leftover REEF, if any, is returned to msg.sender.

  • If a pool for the passed token and REEF does not exists, one is created automatically, and exactly amountTokenDesired/msg.value tokens are added.

Name
Type

token

address

A pool token.

amountTokenDesired

uint

The amount of token to add as liquidity if the REEF/token price is <= msg.value/amountTokenDesired (token depreciates).

msg.value (amountREEFDesired)

uint

The amount of REEF to add as liquidity if the token/REEF price is <= amountTokenDesired/msg.value (REEF depreciates).

amountTokenMin

uint

Bounds the extent to which the REEF/token price can go up before the transaction reverts. Must be <= amountTokenDesired.

amountREEFMin

uint

Bounds the extent to which the token/REEF price can go up before the transaction reverts. Must be <= msg.value.

to

address

Recipient of the liquidity tokens.

deadline

uint

Unix timestamp after which the transaction will revert.

amountToken

uint

The amount of token sent to the pool.

liquidity

uint

The amount of liquidity tokens minted.

removeLiquidity

Removes liquidity from an ERC-20⇄ERC-20 pool.

  • msg.sender should have already given the router an allowance of at least liquidity on the pool.

Name
Type

tokenA

address

A pool token.

tokenB

address

A pool token.

liquidity

uint

The amount of liquidity tokens to remove.

amountAMin

uint

The minimum amount of tokenA that must be received for the transaction not to revert.

amountBMin

uint

The minimum amount of tokenB that must be received for the transaction not to revert.

to

address

Recipient of the underlying assets.

deadline

uint

Unix timestamp after which the transaction will revert.

amountA

uint

The amount of tokenA received.

amountB

uint

The amount of tokenB received.

removeLiquidityREEF

Removes liquidity from an ERC-20⇄REEF pool and receive REEF.

  • msg.sender should have already given the router an allowance of at least liquidity on the pool.

Name
Type

token

address

A pool token.

liquidity

uint

The amount of liquidity tokens to remove.

amountTokenMin

uint

The minimum amount of token that must be received for the transaction not to revert.

amountREEFMin

uint

The minimum amount of REEF that must be received for the transaction not to revert.

to

address

Recipient of the underlying assets.

deadline

uint

Unix timestamp after which the transaction will revert.

amountToken

uint

The amount of token received.

amountREEF

uint

The amount of REEF received.

removeLiquidityWithPermit

Removes liquidity from an ERC-20⇄ERC-20 pool without pre-approval, thanks to permitarrow-up-right.

Name
Type

tokenA

address

A pool token.

tokenB

address

A pool token.

liquidity

uint

The amount of liquidity tokens to remove.

amountAMin

uint

The minimum amount of tokenA that must be received for the transaction not to revert.

amountBMin

uint

The minimum amount of tokenB that must be received for the transaction not to revert.

to

address

Recipient of the underlying assets.

deadline

uint

Unix timestamp after which the transaction will revert.

approveMax

bool

Whether or not the approval amount in the signature is for liquidity or uint(-1).

v

uint8

The v component of the permit signature.

r

bytes32

The r component of the permit signature.

s

bytes32

The s component of the permit signature.

amountA

uint

The amount of tokenA received.

amountB

uint

The amount of tokenB received.

removeLiquidityREEFWithPermit

Removes liquidity from an ERC-20⇄REEF pool and receive REEF without pre-approval, thanks to permitarrow-up-right.

Name
Type

token

address

A pool token.

liquidity

uint

The amount of liquidity tokens to remove.

amountTokenMin

uint

The minimum amount of token that must be received for the transaction not to revert.

amountREEFMin

uint

The minimum amount of REEF that must be received for the transaction not to revert.

to

address

Recipient of the underlying assets.

deadline

uint

Unix timestamp after which the transaction will revert.

approveMax

bool

Whether or not the approval amount in the signature is for liquidity or uint(-1).

v

uint8

The v component of the permit signature.

r

bytes32

The r component of the permit signature.

s

bytes32

The s component of the permit signature.

amountToken

uint

The amount of token received.

amountREEF

uint

The amount of REEF received.

removeLiquidityREEFSupportingFeeOnTransferTokens

Identical to removeLiquidityREEF, but succeeds for tokens that take a fee on transfer.

  • msg.sender should have already given the router an allowance of at least liquidity on the pool.

Name
Type

token

address

A pool token.

liquidity

uint

The amount of liquidity tokens to remove.

amountTokenMin

uint

The minimum amount of token that must be received for the transaction not to revert.

amountREEFMin

uint

The minimum amount of REEF that must be received for the transaction not to revert.

to

address

Recipient of the underlying assets.

deadline

uint

Unix timestamp after which the transaction will revert.

amountREEF

uint

The amount of REEF received.

removeLiquidityREEFWithPermitSupportingFeeOnTransferTokens

Identical to removeLiquidityREEFWithPermit, but succeeds for tokens that take a fee on transfer.

Name
Type

token

address

A pool token.

liquidity

uint

The amount of liquidity tokens to remove.

amountTokenMin

uint

The minimum amount of token that must be received for the transaction not to revert.

amountREEFMin

uint

The minimum amount of REEF that must be received for the transaction not to revert.

to

address

Recipient of the underlying assets.

deadline

uint

Unix timestamp after which the transaction will revert.

approveMax

bool

Whether or not the approval amount in the signature is for liquidity or uint(-1).

v

uint8

The v component of the permit signature.

r

bytes32

The r component of the permit signature.

s

bytes32

The s component of the permit signature.

amountREEF

uint

The amount of REEF received.

swapExactTokensForTokens

Swaps an exact amount of input tokens for as many output tokens as possible, along the route determined by the path. The first element of path is the input token, the last is the output token, and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).

  • msg.sender should have already given the router an allowance of at least amountIn on the input token.

Name
Type

amountIn

uint

The amount of input tokens to send.

amountOutMin

uint

The minimum amount of output tokens that must be received for the transaction not to revert.

path

address[] calldata

An array of token addresses. path.length must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity.

to

address

Recipient of the output tokens.

deadline

uint

Unix timestamp after which the transaction will revert.

amounts

uint[] memory

The input token amount and all subsequent output token amounts.

swapTokensForExactTokens

Receive an exact amount of output tokens for as few input tokens as possible, along the route determined by the path. The first element of path is the input token, the last is the output token, and any intermediate elements represent intermediate tokens to trade through (if, for example, a direct pair does not exist).

  • msg.sender should have already given the router an allowance of at least amountInMax on the input token.

Name
Type

amountOut

uint

The amount of output tokens to receive.

amountInMax

uint

The maximum amount of input tokens that can be required before the transaction reverts.

path

address[] calldata

An array of token addresses. path.length must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity.

to

address

Recipient of the output tokens.

deadline

uint

Unix timestamp after which the transaction will revert.

amounts

uint[] memory

The input token amount and all subsequent output token amounts.

swapExactREEFForTokens

Swaps an exact amount of REEF for as many output tokens as possible, along the route determined by the path. The first element of path must be REEF, the last is the output token, and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).

Name
Type

msg.value (amountIn)

uint

The amount of REEF to send.

amountOutMin

uint

The minimum amount of output tokens that must be received for the transaction not to revert.

path

address[] calldata

An array of token addresses. path.length must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity.

to

address

Recipient of the output tokens.

deadline

uint

Unix timestamp after which the transaction will revert.

amounts

uint[] memory

The input token amount and all subsequent output token amounts.

swapTokensForExactREEF

Receive an exact amount of REEF for as few input tokens as possible, along the route determined by the path. The first element of path is the input token, the last must be REEF, and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).

  • msg.sender should have already given the router an allowance of at least amountInMax on the input token.

  • If the to address is a smart contract, it must have the ability to receive REEF.

Name
Type

amountOut

uint

The amount of REEF to receive.

amountInMax

uint

The maximum amount of input tokens that can be required before the transaction reverts.

path

address[] calldata

An array of token addresses. path.length must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity.

to

address

Recipient of REEF.

deadline

uint

Unix timestamp after which the transaction will revert.

amounts

uint[] memory

The input token amount and all subsequent output token amounts.

swapExactTokensForREEF

Swaps an exact amount of tokens for as much REEF as possible, along the route determined by the path. The first element of path is the input token, the last must be REEF, and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).

  • If the to address is a smart contract, it must have the ability to receive REEF.

Name
Type

amountIn

uint

The amount of input tokens to send.

amountOutMin

uint

The minimum amount of output tokens that must be received for the transaction not to revert.

path

address[] calldata

An array of token addresses. path.length must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity.

to

address

Recipient of the REEF.

deadline

uint

Unix timestamp after which the transaction will revert.

amounts

uint[] memory

The input token amount and all subsequent output token amounts.

swapREEFForExactTokens

Receive an exact amount of tokens for as little REEF as possible, along the route determined by the path. The first element of path must be REEF, the last is the output token and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).

  • Leftover REEF, if any, is returned to msg.sender.

Name
Type

amountOut

uint

The amount of tokens to receive.

msg.value (amountInMax)

uint

The maximum amount of REEF that can be required before the transaction reverts.

path

address[] calldata

An array of token addresses. path.length must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity.

to

address

Recipient of the output tokens.

deadline

uint

Unix timestamp after which the transaction will revert.

amounts

uint[] memory

The input token amount and all subsequent output token amounts.

swapExactTokensForTokensSupportingFeeOnTransferTokens

Identical to swapExactTokensForTokens, but succeeds for tokens that take a fee on transfer.

  • msg.sender should have already given the router an allowance of at least amountIn on the input token.

Name
Type

amountIn

uint

The amount of input tokens to send.

amountOutMin

uint

The minimum amount of output tokens that must be received for the transaction not to revert.

path

address[] calldata

An array of token addresses. path.length must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity.

to

address

Recipient of the output tokens.

deadline

uint

Unix timestamp after which the transaction will revert.

swapExactREEFForTokensSupportingFeeOnTransferTokens

Identical to swapExactREEFForTokens, but succeeds for tokens that take a fee on transfer.

Name
Type

msg.value (amountIn)

uint

The amount of REEF to send.

amountOutMin

uint

The minimum amount of output tokens that must be received for the transaction not to revert.

path

address[] calldata

An array of token addresses. path.length must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity.

to

address

Recipient of the output tokens.

deadline

uint

Unix timestamp after which the transaction will revert.

swapExactTokensForREEFSupportingFeeOnTransferTokens

Identical to swapExactTokensForREEF, but succeeds for tokens that take a fee on transfer.

  • If the to address is a smart contract, it must have the ability to receive REEF.

Name
Type

amountIn

uint

The amount of input tokens to send.

amountOutMin

uint

The minimum amount of output tokens that must be received for the transaction not to revert.

path

address[] calldata

An array of token addresses. path.length must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity.

to

address

Recipient of the REEF.

deadline

uint

Unix timestamp after which the transaction will revert.

Interface

ABI

https://unpkg.com/@uniswap/v2-periphery@1.1.0-beta.0/build/IUniswapV2Router02.jsonarrow-up-right

Last updated