Technical Reference Contract Functions RouterUtil
RouterUtil.sol provides miscellaneous utils and preview functions related to Router executions.
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).
Exchange rate is in 18 decimals
function spotExchangeRate (
address _curvePool,
uint256 _i,
uint256 _j
) public view returns ( uint256 )
Input Parameter Type Description _curvePooladdress The address of the curve pool contract _iuint256 The input token index _juin256 The output token index
Return Parameter Type Description uint256 The quote for the exchange rate of _i for _j
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 Parameter Type Description _inputIBTAmountaddress The amount of IBT to convert _curvePooluint256 The address of the curve pool contract
Return Parameter Type Description ytAmountuint256 An upper bound on the YT amount expected
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 Parameter Type Description _curvePooladdress The address of the curve pool contract _outputYTAmountuint256 The desired YT amount
Return Parameter Type Description inputIBTAmountuint256 The estimated IBT amount required for the swap borrowedIBTAmountuint256 The calculated IBT amount to be borrowed in the flash swap.
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 Parameter Type Description _curvePooladdress The address of the curve pool contract _inputIBTAmountuint256 IBT amount for the swap.
Return Parameter Type Description minGuessOutputYTAmountuint256 The minimum estimated YT obtained from the swap. maxGuessOutputYTAmountuint256 The maximum estimated YT obtained from the swap. borrowedIBTAmountuint256 The calculated IBT amount to be borrowed in the flash swap.
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 Parameter Type Description _curvePooladdress The address of the curve pool to trade in _inputYTAmountuint256 The YT amount provided for the swap.
Return Parameter Type Description outputIBTAmountuint256 Estimated IBT amount obtainable from the swap. borrowedIBTAmountuint256 The calculated IBT amount to be borrowed in the flash swap.
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 Parameter Type Description curvePooladdress The address of the curve pool contract iuint256 The index of the input token in the Curve pool. juint256 The index of the output token in the Curve pool. targetDyuint256 The desired output amount in the swap.
Return Parameter Type Description guessuint256 The estimated input amount (dx) that should be provided to the Curve pool to obtain the targetDy.
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 Parameter Type Description _curvePooladdress The address of the curve pool contract _assetsuint256 The amount of assets to deposit as total liquidity.
Return Parameter Type Description minMintAmountuint256 The estimated amount of Curve LP tokens
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 Parameter Type Description curvePooladdress The address of the curve pool contract _ibtsuint256 The amount of ibts to deposit as total liquidity.
Return Parameter Type Description minMintAmountuint256 The estimated amount of Curve LP tokens
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 Parameter Type Description _curvePool address The address of the curve pool contract _amounts uint256[2] The amounts of token 0 (IBT) and token 1 (PT) to provide as liquidity
Return Parameter Type Description minMintAmountuint256 The estimated amount of Curve LP tokens
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 Parameter Type Description _curvePooladdress The address of the curve pool contract _lpAmountuint256 The amount of lp tokens to burn
Return Parameter Type Description assetsuint256 The estimated assets withdrawn from the pool.
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 Parameter Type Description _curvePooladdress The address of the curve pool contract _lpAmountuint256 The amount of lp tokens to burn
Return Parameter Type Description ibtsuint256 The estimated IBTs withdrawn from the pool.
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 Parameter Type Description _curvePooladdress The address of the curve pool contract _lpAmountuint256 The amount of lp tokens to burn
Return Parameter Type Description minAmountsuint256[2] The estimated amounts of IBTs and PTs withdrawn from the pool.
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 Parameter Type Description _curvePooladdress The address of the curve pool contract _lpAmountuint256 The amount of LP tokens to burn _iuin256 The index of the token to withdraw
Return Parameter Type Description minAmountsuint256 The estimated amounts of token withdrawn