Skip to main content

EthMetaVault

Git Source ↗

Inherits: VaultImmutables →, Initializable ↗, VaultAdmin →, VaultVersion →, VaultFee →, VaultState →, VaultEnterExit →, VaultOsToken →, VaultSubVaults →, Multicall →, IEthMetaVault

Defines the Meta Vault that delegates stake to the sub vaults on Ethereum.

Structs

EthMetaVaultConstructorArgs

Struct for deploying the EthMetaVault contract

struct EthMetaVaultConstructorArgs {
address keeper;
address vaultsRegistry;
address osTokenVaultController;
address osTokenConfig;
address osTokenVaultEscrow;
address curatorsRegistry;
uint64 exitingAssetsClaimDelay;
}

Properties

NameTypeDescription
keeperaddressThe address of the Keeper contract
vaultsRegistryaddressThe address of the VaultsRegistry contract
osTokenVaultControlleraddressThe address of the OsTokenVaultController contract
osTokenConfigaddressThe address of the OsTokenConfig contract
osTokenVaultEscrowaddressThe address of the OsTokenVaultEscrow contract
curatorsRegistryaddressThe address of the CuratorsRegistry contract
exitingAssetsClaimDelayuint64The delay after which the assets can be claimed after exiting from staking

EthMetaVaultInitParams

Struct for initializing the EthMetaVault contract

struct EthMetaVaultInitParams {
address subVaultsCurator;
uint256 capacity;
uint16 feePercent;
string metadataIpfsHash;
}

Properties

NameTypeDescription
subVaultsCuratoraddressThe address of the initial sub-vaults curator
capacityuint256The Vault stops accepting deposits after exceeding the capacity
feePercentuint16The fee percent that is charged by the Vault
metadataIpfsHashstringThe IPFS hash of the Vault's metadata file

Functions

isStateUpdateRequired

Check whether state update is required

function isStateUpdateRequired() public view override(IVaultState, VaultState, VaultSubVaults) returns (bool);

Returns

NameTypeDescription
<none>booltrue if state update is required, false otherwise

deposit

Deposit ETH to the Vault

function deposit(address receiver, address referrer) public payable virtual override returns (uint256 shares);

Parameters

NameTypeDescription
receiveraddressThe address that will receive Vault's shares
referreraddressThe address of the referrer. Set to zero address if not used.

Returns

NameTypeDescription
sharesuint256The number of shares minted

receive

Function for depositing using fallback function

receive() external payable virtual;

updateState

function updateState(IKeeperRewards.HarvestParams calldata harvestParams)
public
override(IVaultState, VaultState, VaultSubVaults);

enterExitQueue

Locks shares to the exit queue. The shares continue earning rewards until they will be burned by the Vault.

function enterExitQueue(uint256 shares, address receiver)
public
virtual
override(IVaultEnterExit, VaultEnterExit, VaultOsToken)
returns (uint256 positionTicket);

Parameters

NameTypeDescription
sharesuint256The number of shares to lock
receiveraddressThe address that will receive assets upon withdrawal

Returns

NameTypeDescription
positionTicketuint256The position ticket of the exit queue. Returns uint256 max if no ticket created.

updateStateAndDeposit

Updates Vault state and deposits ETH to the Vault

function updateStateAndDeposit(
address receiver,
address referrer,
IKeeperRewards.HarvestParams calldata harvestParams
) public payable virtual override returns (uint256 shares);

Parameters

NameTypeDescription
receiveraddressThe address that will receive Vault's shares
referreraddressThe address of the referrer. Set to zero address if not used.
harvestParamsIKeeperRewards.HarvestParamsThe parameters for harvesting Keeper rewards

Returns

NameTypeDescription
sharesuint256The number of shares minted

depositAndMintOsToken

Deposits assets to the vault and mints OsToken shares to the receiver

function depositAndMintOsToken(address receiver, uint256 osTokenShares, address referrer)
public
payable
override
returns (uint256);

Parameters

NameTypeDescription
receiveraddressThe address to receive the OsToken
osTokenSharesuint256The amount of OsToken shares to mint. If set to type(uint256).max, max OsToken shares will be minted.
referreraddressThe address of the referrer

Returns

NameTypeDescription
<none>uint256The amount of OsToken assets minted

updateStateAndDepositAndMintOsToken

Updates the state, deposits assets to the vault and mints OsToken shares to the receiver

function updateStateAndDepositAndMintOsToken(
address receiver,
uint256 osTokenShares,
address referrer,
IKeeperRewards.HarvestParams calldata harvestParams
) external payable override returns (uint256);

Parameters

NameTypeDescription
receiveraddressThe address to receive the OsToken
osTokenSharesuint256The amount of OsToken shares to mint. If set to type(uint256).max, max OsToken shares will be minted.
referreraddressThe address of the referrer
harvestParamsIKeeperRewards.HarvestParamsThe parameters for the harvest

Returns

NameTypeDescription
<none>uint256The amount of OsToken assets minted

donateAssets

Donate assets to the Vault. Must transfer ETH together with the call.

function donateAssets() external payable override;

vaultId

function vaultId() public pure virtual override(IVaultVersion, VaultVersion) returns (bytes32);

version

Version

function version() public pure virtual override(IVaultVersion, VaultVersion) returns (uint8);

Returns

NameTypeDescription
<none>uint8The version of the Vault implementation contract