YearnUSDTStrategy
Overview
The YearnUSDTStrategy contract is a strategy that supplies USDT into a Yearn V3 Vault. It manages conversions between USDCe and USDT through Curve's AtriCrypto zapper and includes safety margins for liquidations.
Constants
ICurveAtriCryptoZapper constant zapper = ICurveAtriCryptoZapper(CURVE_AAVE_ATRICRYPTO_ZAPPER_POLYGON); // Curve zapper
address public constant usdt = USDT_POLYGON; // USDT addressFunctions
Initialization Functions
initialize
function initialize(
IMaxApyVault _vault,
address[] calldata _keepers,
bytes32 _strategyName,
address _strategist,
IYVaultV3 _yVault
) public virtual override initializerInitializes the strategy with trading limits.
Parameters:
_vault: MaxApy vault address_keepers: Array of keeper addresses_strategyName: Name of the strategy_strategist: Strategist address_yVault: Yearn V3 vault address
Core Functions
liquidateExact
function liquidateExact(uint256 amountNeeded) external override checkRoles(VAULT_ROLE) returns (uint256 loss)Withdraws exact amount to vault with loss calculation.
Parameters:
amountNeeded: Amount to withdraw
Returns:
loss: Amount of realized loss
View Functions
previewLiquidate
function previewLiquidate(uint256 requestedAmount) public view override returns (uint256 liquidatedAmount)Simulates withdrawal including losses.
Parameters:
requestedAmount: Amount to withdraw
Returns:
liquidatedAmount: Expected output amount
previewLiquidateExact
function previewLiquidateExact(uint256 liquidatedAmount) public view override returns (uint256 requestedAmount)Calculates input needed with 1% buffer.
Parameters:
liquidatedAmount: Desired output amount
Returns:
requestedAmount: Required input amount
maxLiquidate
function maxLiquidate() public view override returns (uint256)Returns maximum withdrawable amount after losses.
Returns:
Maximum withdrawable amount
maxLiquidateExact
function maxLiquidateExact() public view override returns (uint256)Returns maximum withdrawable amount with 1% safety margin.
Returns:
Maximum withdrawable amount before losses
Internal Core Functions
_invest
function _invest(uint256 amount, uint256 minOutputAfterInvestment) internal override returns (uint256 depositedAmount)Invests assets by:
Converting USDCe to USDT through zapper
Depositing into Yearn vault
Parameters:
amount: Amount to investminOutputAfterInvestment: Minimum expected shares
Returns:
depositedAmount: Amount of tokens received
_divest
function _divest(uint256 shares) internal override returns (uint256 withdrawn)Withdraws assets by:
Redeeming from Yearn vault
Converting USDT to USDCe through zapper
Parameters:
shares: Amount of shares to withdraw
Returns:
withdrawn: Amount of assets received
Internal View Functions
_shareValue
function _shareValue(uint256 shares) internal view override returns (uint256 _assets)Calculates underlying value including conversion.
Parameters:
shares: Share amount
Returns:
Underlying asset value
_sharesForAmount
function _sharesForAmount(uint256 amount) internal view override returns (uint256 _shares)Calculates shares needed including spot price.
Parameters:
amount: Asset amount
Returns:
Required shares
_spotPriceDy
function _spotPriceDy(uint256 i, uint256 amount) internal view returns (uint256 _spotDy)Calculates spot price conversion without slippage.
Parameters:
i: Direction (1: USDC->USDT, 2: USDT->USDC)amount: Amount to convert
Returns:
Converted amount at spot price
Last updated