YearnAaveV3USDTLenderStrategy

Overview

The YearnAaveV3USDTLenderStrategy contract is a strategy that supplies USDT into a Yearn V3 Vault for AAVE v3 lending. 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 address

Functions

Initialization Functions

initialize

function initialize(
    IMaxApyVault _vault,
    address[] calldata _keepers,
    bytes32 _strategyName,
    address _strategist,
    IYVaultV3 _yVault
) public virtual override initializer

Initializes the strategy and sets up 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 and conversion rates.

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% safety margin.

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 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:

  1. Converting USDCe to USDT through zapper

  2. Depositing USDT into Yearn vault

Parameters:

  • amount: Amount to invest

  • minOutputAfterInvestment: Minimum expected shares

Returns:

  • depositedAmount: Amount of tokens received

_divest

function _divest(uint256 shares) internal override returns (uint256 withdrawn)

Withdraws assets by:

  1. Redeeming from Yearn vault

  2. 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 rate.

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 conversion.

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