BaseSommelierStrategy

Overview

The BaseSommelierStrategy contract serves as the foundation for strategies that interact with Sommelier protocol in the MaxAPY ecosystem. It manages deposits into Sommelier Cellars, handles reward collection, and executes withdrawals.

Errors

error NotEnoughFundsToInvest();        // Insufficient funds for investment
error CellarIsPaused();                // Sommelier Cellar is paused
error InvalidZeroAddress();             // Zero address provided

Events

event Invested(address indexed strategy, uint256 amountInvested);
event Divested(address indexed strategy, uint256 requestedShares, uint256 amountDivested);
event MinSingleTradeUpdated(uint256 minSingleTrade);
event MaxSingleTradeUpdated(uint256 maxSingleTrade);

State Variables

ICellar public cellar;                 // Sommelier Cellar contract
uint256 public maxSingleTrade;         // Maximum size for a single trade
uint256 public minSingleTrade;         // Minimum size for a single trade

Functions

Initialization Functions

initialize

Initializes the strategy with Sommelier components.

Parameters:

  • _vault: MaxApy vault address

  • _keepers: Array of keeper addresses

  • _strategyName: Name of the strategy

  • _strategist: Strategist address

  • _cellar: Sommelier Cellar address

Core Functions

liquidateExact

Withdraws exact amount of assets from Cellar.

Parameters:

  • amountNeeded: Amount of assets to withdraw

Returns:

  • Amount of loss incurred

View Functions

previewLiquidate

Calculates expected output for a withdrawal.

Parameters:

  • requestedAmount: Amount requested to withdraw

Returns:

  • Expected liquidated amount

previewLiquidateExact

Calculates input needed for desired withdrawal amount.

Parameters:

  • liquidatedAmount: Desired output amount

Returns:

  • Required input amount

maxLiquidate

Returns maximum withdrawable amount after losses.

Returns:

  • Maximum withdrawable amount

maxLiquidateExact

Returns maximum withdrawable amount before losses.

Returns:

  • Maximum withdrawable amount before losses

Configuration Functions

setMinSingleTrade

Sets minimum trade size for the strategy.

Parameters:

  • _minSingleTrade: New minimum trade size

setMaxSingleTrade

Sets maximum trade size for the strategy.

Parameters:

  • _maxSingleTrade: New maximum trade size

Internal Functions

_prepareReturn

Prepares strategy returns and handles profits/losses.

Parameters:

  • debtOutstanding: Outstanding debt amount

  • minExpectedBalance: Minimum expected balance

Returns:

  • unrealizedProfit: Unrealized profit amount

  • loss: Loss amount

  • debtPayment: Debt payment amount

_invest

Deposits assets into Sommelier Cellar.

Parameters:

  • amount: Amount to invest

  • minOutputAfterInvestment: Minimum expected shares

Returns:

  • Amount of deposits received

_divest

Withdraws assets from Sommelier Cellar.

Parameters:

  • shares: Amount of shares to withdraw

Returns:

  • Amount of assets received

Internal View Functions

_shareValue

Calculates underlying value of Cellar shares.

Parameters:

  • shares: Amount of shares

Returns:

  • Underlying asset value

_sharesForAmount

Calculates shares needed for given amount.

Parameters:

  • amount: Amount of underlying assets

Returns:

  • Required shares amount

_shareBalance

Returns strategy's Cellar share balance.

Returns:

  • Current share balance

_estimatedTotalAssets

Calculates total assets under management.

Returns:

  • Total assets value

Last updated