Before starting, make sure you have:
- A wallet with guardian permissions on the target vault
- viem 2.x installed (
npm install viem) or Foundry for thecastCLI - Familiarity with the Aera V3 Guardian Model
- Understanding of the Provisioner model for depositor interactions (see Cross-Chain for conceptual overview)
Setup
Configure your environment for interacting with the vault, Provisioner, and PriceAndFeeCalculator contracts. Multi-depositor vaults require more contract addresses than single-depositor vaults because pricing and order fulfillment involve additional periphery contracts.Strategy Execution
Strategy execution in multi-depositor vaults uses the samesubmit(Operation[]) pattern as single-depositor vaults — the guardian submits batched operations that are validated against a Merkle tree. See the Single-Depositor Vaults guide for full details on operation submission, vault state reads, and rebalancing.
Order Solving
Order solving is the primary difference between multi-depositor and single-depositor vault operations. Depositors interact with the vault through the Provisioner contract using an asynchronous request/fulfill lifecycle. The guardian (acting as solver) monitors pending requests and fulfills them through the vault’s submit flow.How Orders Work
The async order lifecycle has three stages:- Request — A depositor calls
requestDepositorrequestRedeemon the Provisioner, locking their assets (for deposits) or vault units (for redemptions). Each request receives a uniquerequestId. - Fulfill — The guardian processes the request through the vault’s submit flow. For deposit requests, the guardian ensures assets are accounted for and vault units are allocated. For redemption requests, the guardian ensures exit positions are unwound and assets are available.
- Claim — The depositor (or receiver) calls
claimDepositorclaimRedeemon the Provisioner to receive their vault units or underlying assets.
Monitoring Pending Orders
Monitor the Provisioner for incoming deposit and redemption requests by watching forDepositRequested and RedeemRequested events. This lets the guardian detect new orders that need fulfillment.
Fulfilling Deposit Orders
When a depositor places a deposit request viarequestDeposit, the guardian fulfills it by processing the request through the vault’s submit flow. Once fulfilled, the depositor can claim their vault units by calling claimDeposit on the Provisioner.
Fulfilling Redemption Orders
Redemption requests follow the same async pattern. The depositor callsrequestRedeem on the Provisioner, and after the guardian ensures the underlying assets are available (by unwinding positions if needed via submit), the depositor claims the assets with claimRedeem.
Order fulfillment is executed through the guardian’s
submit flow on the vault. The exact fulfillment mechanics depend on whether the deposit/redemption is same-chain or cross-chain. See the Provisioner Contract Reference for full function signatures and the Cross-Chain page for how cross-chain bridging integrates with the order lifecycle.Price Reporting
Price reporting is unique to multi-depositor vaults. Because multiple depositors share the same pool, accurate unit pricing is essential for fair minting and redemption of vault shares. ThePriceAndFeeCalculator contract manages price snapshots and uses them for both share pricing and fee computation.
Why Prices Matter
In a multi-depositor vault, each depositor’s ownership is represented by ERC-20 vault units. The unit price determines how many shares a depositor receives on deposit and how many assets they receive on redemption. Accurate, timely price reporting ensures:- Fair entry and exit prices for all depositors
- Correct NAV (Net Asset Value) calculation for the vault
- Accurate fee accrual based on vault performance
PriceAndFeeCalculator uses managed accountant snapshots rather than real-time pricing to prevent fee manipulation through short-term vault value changes. See the Periphery Contract Reference for full function signatures.
Taking Snapshots
The guardian takes price snapshots by callingsnapshot on the PriceAndFeeCalculator. This records the current unit price and total supply for fee calculation. Snapshots are typically taken as part of the submit flow via an afterSubmit hook, but can also be called directly.
Monitoring Prices
Read the current vault state to determine the unit price and total supply before taking a snapshot or verifying pricing accuracy.Fee Reporting
Multi-depositor vaults use thePriceAndFeeCalculator for fee computation instead of the DelayedFeeCalculator used by single-depositor vaults. The same two fee types apply — management fees (percentage of AUM over time) and performance fees (percentage of gains above a high-water mark). See the Single-Depositor Vaults guide for the conceptual explanation of how these fee types work.
Reporting Fees
Report fees by providing the current vault value to the fee vault. ThePriceAndFeeCalculator uses its most recent snapshot to compute accrued fees.
Claiming Fees
The fee recipient claims accrued fees from the fee vault. Specify the token, amount, and recipient address. See the FeeVault Contract Reference for full function details.Transfer Hooks
Multi-depositor vault units are ERC-20 tokens that can be transferred between addresses. Transfer hooks allow the vault owner to enforce restrictions on these transfers — for example, compliance blocklists, lock-up periods, or allowlists for approved recipients.Setting Transfer Hooks
Setting the transfer hook is an owner operation (not a guardian operation), but understanding the mechanism is important for guardians because transfer hooks affect how vault units flow between depositors.beforeTransfer(address from, address to, uint256 amount) on the hook contract before executing. If the hook reverts, the transfer fails with MultiDepositorVault__TransferHookFailed. See Custom Hooks for building custom transfer hook contracts and the Hook Interfaces Contract Reference for the IBeforeTransferHook interface.
Emergency Procedures
Emergency procedures for multi-depositor vaults follow the same pattern as single-depositor vaults. See the Single-Depositor Vaults guide for full details on when and why to use these. The key operations are summarized below.Pausing the Vault
Callingpause immediately halts all guardian operations. Both the guardian and the vault owner can pause.
Checking Pause Status
Verify whether the vault is currently paused before attempting operations.Guardian Whitelist Check
Verify that the guardian is still authorized on the vault’s whitelist.Related Pages
- Single-Depositor Vaults — Base guardian operations for dedicated capital
- Custom Hooks — Building and deploying custom hooks for vault operations
- Guardian Model — How the guardian role works at the protocol level
- Cross-Chain — Cross-chain vault architecture and Provisioner model
- Hooks — How hooks validate and extend guardian operations
- MultiDepositorVault Contract Reference — Full ABI for vault unit operations
- Provisioner Contract Reference — Deposit/redeem request and claim functions
- FeeVault Contract Reference — Fee reporting and claiming functions
- Periphery Contract Reference — PriceAndFeeCalculator and OracleRegistry