Withdrawals
Explore the withdraw function
/// @notice Withdraws accuratel
/// @dev When called, immediately check for new interest index. Then find the adjusted amount in IbAlluo tokens
/// Then burn appropriate amount of IbAlluo tokens to receive asset token
/// @param _targetToken Asset token
/// @param _amount Amount (parsed 10**18) in asset value
function withdrawTo(
address _recipient,
address _targetToken,
uint256 _amount
) public {
updateRatio();
uint256 adjustedAmount = (_amount * multiplier) / growingRatio;
_burn(_msgSender(), adjustedAmount);
ILiquidityHandler handler = ILiquidityHandler(liquidityHandler);
if (supportedTokens.contains(_targetToken) == false) {
(address liquidToken,) = ILiquidityHandler(liquidityHandler).getAdapterCoreTokensFromIbAlluo(address(this));
// This just is used to revert if there is no active route.
require(IExchange(exchangeAddress).buildRoute(liquidToken, _targetToken).length > 0, "!Supported");
handler.withdraw(
_recipient,
liquidToken,
_amount,
_targetToken
);
} else {
handler.withdraw(
_recipient,
_targetToken,
_amount
);
}
emit TransferAssetValue(_msgSender(), address(0), adjustedAmount, _amount, growingRatio);
emit BurnedForWithdraw(_msgSender(), adjustedAmount);
}For more information about how the liquidity handler works, explore the LiquidityHandler and adapters page
Last updated