Specialized Strategy Modules (Legacy)

Overview

A strategy must define a set of functions and structs to operate on a vault. It interacts with satay::base_strategy and Structured Prodocts.

Identifier

StrategyType is used to identify a strategy and verify its authenticity in function calls via the witnessing pattern.

struct StrategyType has drop {}

Initialize

Initialize the Vault referenced by vault_id with debt_ratio by calling base_strategy::initialize function with the StrategyType identifier.

public fun initialize(
    manager: &signer, 
    vault_id: u64, 
    debt_ratio: u64
)

Harvest

Calls structured_product::reinvest_returns and deposits StrategyCoin to vault. Rebalances the debt position given the strategy's balance and debt_ratio. Only called if harvest_trigger returns true.

Harvest Trigger

Returns a boolean regarding whether or not the vault manager should call harvest for StrategyType.

Tend

Calls structured_product::reinvest_returns and deposits farmed StrategyCoin to the Vault

Withdraw for User

Called by user when there is not enough BaseCoin in the vault, and the user wants to liquidate the respective amount of StrategyCoin for a given share_amount of VaultCoin<BaseCoin>.

Admin Functions

Implement all of the Admin Functions of the Base Strategy Module using the specialized strategy Identifier.

Last updated