Technical ReferenceContract Functions

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)
Input ParameterTypeDescription
_curvePooladdressThe address of the curve pool contract
_iuint256The input token index
_juin256The output token index
Return ParameterTypeDescription
uint256The quote for the exchange rate of _i for _j

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)
Input ParameterTypeDescription
_inputIBTAmountaddressThe amount of IBT to convert
_curvePooluint256The address of the curve pool contract
Return ParameterTypeDescription
ytAmountuint256An upper bound on the YT amount expected

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)
Input ParameterTypeDescription
_curvePooladdressThe address of the curve pool contract
_outputYTAmountuint256The desired YT amount
Return ParameterTypeDescription
inputIBTAmountuint256The estimated IBT amount required for the swap
borrowedIBTAmountuint256The calculated IBT amount to be borrowed in the flash swap.

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) 
Input ParameterTypeDescription
_curvePooladdressThe address of the curve pool contract
_inputIBTAmountuint256IBT amount for the swap.
Return ParameterTypeDescription
minGuessOutputYTAmountuint256The minimum estimated YT obtained from the swap.
maxGuessOutputYTAmountuint256The maximum estimated YT obtained from the swap.
borrowedIBTAmountuint256The calculated IBT amount to be borrowed in the flash swap.

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) 
Input ParameterTypeDescription
_curvePooladdressThe address of the curve pool to trade in
_inputYTAmountuint256The YT amount provided for the swap.
Return ParameterTypeDescription
outputIBTAmountuint256Estimated IBT amount obtainable from the swap.
borrowedIBTAmountuint256The calculated IBT amount to be borrowed in the flash swap.

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)
Input ParameterTypeDescription
curvePooladdressThe address of the curve pool contract
iuint256The index of the input token in the Curve pool.
juint256The index of the output token in the Curve pool.
targetDyuint256The desired output amount in the swap.
Return ParameterTypeDescription
guessuint256The estimated input amount (dx) that should be provided to the Curve pool to obtain the targetDy.

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)
Input ParameterTypeDescription
_curvePooladdressThe address of the curve pool contract
_assetsuint256The amount of assets to deposit as total liquidity.
Return ParameterTypeDescription
minMintAmountuint256The estimated amount of Curve LP tokens

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)
Input ParameterTypeDescription
curvePooladdressThe address of the curve pool contract
_ibtsuint256The amount of ibts to deposit as total liquidity.
Return ParameterTypeDescription
minMintAmountuint256The estimated amount of Curve LP tokens

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)
Input ParameterTypeDescription
_curvePooladdressThe address of the curve pool contract
_amountsuint256[2]The amounts of token 0 (IBT) and token 1 (PT) to provide as liquidity
Return ParameterTypeDescription
minMintAmountuint256The estimated amount of Curve LP tokens

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)
Input ParameterTypeDescription
_curvePooladdressThe address of the curve pool contract
_lpAmountuint256The amount of lp tokens to burn
Return ParameterTypeDescription
assetsuint256The estimated assets withdrawn from the pool.

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)
Input ParameterTypeDescription
_curvePooladdressThe address of the curve pool contract
_lpAmountuint256The amount of lp tokens to burn
Return ParameterTypeDescription
ibtsuint256The estimated IBTs withdrawn from the pool.

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)
Input ParameterTypeDescription
_curvePooladdressThe address of the curve pool contract
_lpAmountuint256The amount of lp tokens to burn
Return ParameterTypeDescription
minAmountsuint256[2]The estimated amounts of IBTs and PTs withdrawn from the pool.

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)
Input ParameterTypeDescription
_curvePooladdressThe address of the curve pool contract
_lpAmountuint256The amount of LP tokens to burn
_iuin256The index of the token to withdraw
Return ParameterTypeDescription
minAmountsuint256The estimated amounts of token withdrawn

On this page