Skip to main content

VaultSubVaults

Git Source ↗

Inherits: VaultImmutables →, Initializable ↗, ReentrancyGuardUpgradeable ↗, VaultAdmin →, VaultState →, IVaultSubVaults

Defines the functionality for managing the Vault sub-vaults.

Structs

SubVaultState

Struct for sub vault state

struct SubVaultState {
uint128 stakedShares;
uint128 queuedShares;
}

Properties

NameTypeDescription
stakedSharesuint128The number of shares staked in the sub vault
queuedSharesuint128The number of shares queued for exit in the sub vault

SubVaultExitRequest

Struct for submitting sub vault exit request

struct SubVaultExitRequest {
uint256 exitQueueIndex;
address vault;
uint64 timestamp;
}

Properties

NameTypeDescription
exitQueueIndexuint256The index of the exit queue
vaultaddressThe address of the vault
timestampuint64The timestamp of the exit request

Events

RewardsNonceUpdated

Emitted when the rewards nonce is updated

event RewardsNonceUpdated(uint256 rewardsNonce);

Parameters

NameTypeDescription
rewardsNonceuint256The new rewards nonce

SubVaultsHarvested

Emitted when the sub vaults are harvested

event SubVaultsHarvested(int256 totalAssetsDelta);

Parameters

NameTypeDescription
totalAssetsDeltaint256The change in total assets after the harvest

SubVaultAdded

Emitted when the new sub-vault is added

event SubVaultAdded(address indexed caller, address indexed vault);

Parameters

NameTypeDescription
calleraddressThe address of the caller
vaultaddressThe address of the sub-vault

SubVaultEjecting

Emitted when the sub-vault is ejecting

event SubVaultEjecting(address indexed caller, address indexed vault);

Parameters

NameTypeDescription
calleraddressThe address of the caller
vaultaddressThe address of the sub-vault

SubVaultEjected

Emitted when the sub-vault is ejected

event SubVaultEjected(address indexed caller, address indexed vault);

Parameters

NameTypeDescription
calleraddressThe address of the caller
vaultaddressThe address of the sub-vault

SubVaultsCuratorUpdated

Emitted when the sub-vaults curator is updated

event SubVaultsCuratorUpdated(address indexed caller, address indexed curator);

Parameters

NameTypeDescription
calleraddressThe address of the caller
curatoraddressThe address of the new sub-vaults curator

Functions

subVaultsCurator

Sub-vaults curator contract

function subVaultsCurator() external view returns (address);

Returns

NameTypeDescription
<none>addressThe address of the Sub-vaults curator contract

ejectingSubVault

Ejecting sub-vault

function ejectingSubVault() external view returns (address);

Returns

NameTypeDescription
<none>addressThe address of the ejecting sub-vault

subVaultsRewardsNonce

Function to get the rewards nonce of the sub-vaults

function subVaultsRewardsNonce() external view returns (uint128);

Returns

NameTypeDescription
<none>uint128The rewards nonce

subVaultsStates

Function to get the state of a sub-vault

function subVaultsStates(address vault) external view override returns (SubVaultState memory);

Parameters

NameTypeDescription
vaultaddressThe address of the sub-vault

Returns

NameTypeDescription
<none>SubVaultStateThe state of the sub-vault

getSubVaults

Function to get the list sub-vaults

function getSubVaults() public view override returns (address[] memory);

Returns

NameTypeDescription
<none>address[]An array of addresses of the sub-vaults

setSubVaultsCurator

Function to update the the sub-vaults curator. Can only be called by the admin.

function setSubVaultsCurator(address curator) external override;

Parameters

NameTypeDescription
curatoraddressThe address of the new sub-vaults curator

addSubVault

Function to add a new sub-vault. Can only be called by the admin.

function addSubVault(address vault) public virtual override;

Parameters

NameTypeDescription
vaultaddressThe address of the sub-vault to add

ejectSubVault

Function to remove a sub-vault. Can only be called by the admin. All the sub-vault shares will be added to the exit queue.

function ejectSubVault(address vault) public virtual override;

Parameters

NameTypeDescription
vaultaddressThe address of the sub-vault to remove

isStateUpdateRequired

Check whether state update is required

function isStateUpdateRequired() public view virtual override returns (bool);

Returns

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

canUpdateState

Checks whether the meta vault can be updated

function canUpdateState() external view override returns (bool);

Returns

NameTypeDescription
<none>booltrue if the meta vault can be updated, false otherwise

isCollateralized

Checks whether the vault is collateralized

function isCollateralized() external view override returns (bool);

Returns

NameTypeDescription
<none>booltrue if the vault is collateralized, false otherwise

depositToSubVaults

Deposit available assets to the sub vaults

function depositToSubVaults() external override nonReentrant;

claimSubVaultsExitedAssets

Claim the exited assets from the sub vaults

function claimSubVaultsExitedAssets(SubVaultExitRequest[] calldata exitRequests) external override;

Parameters

NameTypeDescription
exitRequestsSubVaultExitRequest[]The array of exit requests to claim

updateState

Updates the total amount of assets in the Vault and its exit queue

function updateState(IKeeperRewards.HarvestParams calldata) public virtual override;

Parameters

NameTypeDescription
<none>IKeeperRewards.HarvestParams