Skip to main content

Overview

MultiDepositorVault extends BaseVault to support multiple depositors with tokenized ERC-20 vault units. Depositors interact with the vault through the Provisioner contract, which manages minting, redeeming, and async order fulfillment. The vault itself holds assets and executes guardian operations, while the Provisioner handles the depositor-facing interface. Multi-depositor vaults use a more complex guardian model than single-depositor vaults. The guardian submits operations through the standard submit function inherited from BaseVault, but the vault also integrates with a PriceAndFeeCalculator for unit-based pricing and fee calculation. Price reporting uses managed accountant snapshots to prevent fee manipulation. Transfer hooks (IBeforeTransferHook) can be configured on the vault’s ERC-20 units to enforce compliance, blocklists, or transfer restrictions. See Hooks for hook interface details.

Functions

totalAssets

Returns the total value of assets held by the vault, denominated in the vault’s unit of account. Used for share price calculations. Signature:

convertToShares

Converts an asset amount to the equivalent number of vault shares at the current exchange rate. Signature:

convertToAssets

Converts a share amount to the equivalent number of assets at the current exchange rate. Signature:

balanceOf

Returns the vault unit balance for a given address. Signature:

totalSupply

Returns the total supply of vault units. Signature:

transfer

Transfers vault units between addresses. Transfer hooks fire before the transfer if configured. Signature:

setTransferHook

Sets the before-transfer hook contract for vault unit transfers. Only callable by the vault owner. Signature:

setPriceCalculator

Sets the price and fee calculator contract. Only callable by the vault owner. Signature:

Events

Transfer

Standard ERC-20 transfer event for vault units.

TransferHookSet

Emitted when the transfer hook is configured.

PriceCalculatorSet

Emitted when the price calculator is configured.

Errors

MultiDepositorVault__TransferHookFailed

Thrown when the before-transfer hook reverts during a vault unit transfer.

MultiDepositorVault__InsufficientBalance

Thrown when a transfer or redemption exceeds the sender’s vault unit balance.

Inheritance

  • BaseVault — Core guardian operations, Merkle verification, hooks, pause
    • MultiDepositorVault — Adds multi-depositor ERC-20 units, pricing, transfer hooks
This page was manually created as a baseline. Run the contract reference generation pipeline to update with complete NatSpec documentation from the Solidity source.