RouterUtil

Overview

RouterUtil.sol provides miscellaneous utils and preview functions related to Router executions.

spotExchangeRate

Gives the spot exchange rate of token i in terms of token j.

For example spotExchangeRate(any, 1, 0) gives you the PT/IBT quote (how much IBT is worth one PT).

in IBT while spotExchangeRate(any, 0, 1) gives you the IBT/PT quote (how much PT is worth one IBT).

For the IBT-PT curve pools deployed with the factory, the coin at index 0 is the Interest Bearing Token and the coin at index 1 is the Principal Token.

Exchange rate is in 18 decimals

function spotExchangeRate(
        address _curvePool,
        uint256 _i,
        uint256 _j
    ) public view returns (uint256)

convertIBTToYTSpot

Returns the maximal amount of YT one can obtain with a given amount of IBT (i.e without fees or slippage).

This function is used for setting initial guess for the root finding algorithms used when performing flash swaps. This method should not be used to evaluate a precise YT price.

function convertIBTToYTSpot(
        uint256 _inputIBTAmount,
        address _curvePool
    ) public view returns (uint256)

previewFlashSwapIBTToExactYT

Estimates the amount of IBT required to perform a flash swap to obtain a specific amount of YT.

function previewFlashSwapIBTToExactYT(
        address _curvePool,
        uint256 _outputYTAmount
    ) public view returns (uint256, uint256)

previewFlashSwapExactIBTToYT

Estimates the amount of YT that can be obtained by providing a specific amount of IBT in a flash swap.

function previewFlashSwapExactIBTToYT(
        address _curvePool,
        uint256 _inputIBTAmount
    ) public view returns (uint256, uint256) 

previewFlashSwapExactYTToIBT

Estimates the amount of IBT that can be obtained by swapping a specific amount of YT.

function previewFlashSwapExactYTToIBT(
        address _curvePool,
        uint256 _inputYTAmount
    ) public view returns (uint256, uint256) 

getDx

Estimate the required input amount of a token (dx) for a Curve pool swap, given a target output amount (targetDy).

function getDx(
        ICurvePool curvePool,
        uint256 i,
        uint256 j,
        uint256 targetDy
    ) public view returns (uint256)

previewAddLiquidityWithAsset

Estimate the amount of LP tokens the user will get by routing assets for LP tokens (see Routing).

function previewAddLiquidityWithAsset(
        address _curvePool,
        uint256 _assets
    ) public view returns (uint256 minMintAmount)

previewAddLiquidityWithIBT

Estimate the amount of LP tokens the user will get by routing IBTs for LP tokens (see Routing).

function previewAddLiquidityWithIBT(
        address _curvePool,
        uint256 _ibts
    ) public view returns (uint256 minMintAmount)

previewAddLiquidity

Estimate the amount of LP tokens the user will get by adding amounts liquidity. amounts is an array of the amount for token 0, the IBT and for token 1, the Principal Token.

function previewAddLiquidity(
        address _curvePool,
        uint256[2] memory _amounts
    ) public view returns (uint256 minMintAmount)

previewRemoveLiquidityForAsset

Estimate the amount of underlying token (assets) a user will get for burning _lpAmount LP tokens and redeeming PT and IBT for underlying. (see Routing).

function previewRemoveLiquidityForAsset(
        address _curvePool,
        uint256 _lpAmount
    ) public view returns (uint256 assets)

previewRemoveLiquidityForIBT

Estimate the amount of IBTs a user will get for burning _lpAmount LP tokens and redeeming PT for IBT. (see Routing).

function previewRemoveLiquidityForIBT(
        address _curvePool,
        uint256 _lpAmount
    ) public view returns (uint256 ibts)

previewRemoveLiquidity

Estimate the amounts of IBT and PT received for burning _lpAmount LP tokens.

function previewRemoveLiquidity(
        address _curvePool,
        uint256 _lpAmount
    ) public view returns (uint256[2] memory minAmounts)

previewRemoveLiquidityOneCoin

Estimate the amounts of either IBT or PT received for burning _lpAmount LP tokens. _i=0 for IBT and _i=1 for PT.

function previewRemoveLiquidityOneCoin(
        address _curvePool,
        uint256 _lpAmount,
        uint256 _i
    ) public view returns (uint256 minAmount)

Last updated