Overview
TheProvisioner contract is the depositor-facing entry point for MultiDepositorVault vaults. It sits between depositors and the underlying vault, managing share accounting, deposit/redeem requests, and cross-chain entry and exit flows. Depositors interact with the Provisioner to mint vault units on deposit and burn them on redemption.
The Provisioner supports two interaction models: synchronous deposits (immediate vault unit minting) and asynchronous requests (order-based fulfillment by a solver). The async model is essential for cross-chain operations where CCTP bridging introduces latency.
For the conceptual overview of how the Provisioner fits into cross-chain vault operations, see Cross-Chain.
Functions
deposit
Deposits assets and mints vault units synchronously. The Provisioner calculates the exchange rate using theOracleRegistry and mints units directly to the depositor.
Signature:
| Parameter | Type | Description |
|---|---|---|
assets | uint256 | Amount of underlying assets to deposit |
receiver | address | Address to receive the minted vault units |
mint
Mints a specific number of vault units by depositing the required assets. Signature:| Parameter | Type | Description |
|---|---|---|
shares | uint256 | Number of vault units to mint |
receiver | address | Address to receive the minted vault units |
requestDeposit
Places an asynchronous deposit request. A solver (typically the guardian) fulfills the request in a later transaction. Used for cross-chain deposits where bridging introduces latency. Signature:| Parameter | Type | Description |
|---|---|---|
assets | uint256 | Amount of assets to deposit |
receiver | address | Address to receive vault units when fulfilled |
owner | address | Address that owns the deposit request |
requestRedeem
Places an asynchronous redemption request. The solver fulfills the request after the guardian completes exit flows and assets are available. Signature:| Parameter | Type | Description |
|---|---|---|
shares | uint256 | Number of vault units to redeem |
receiver | address | Address to receive underlying assets when fulfilled |
owner | address | Address that owns the redemption request |
redeem
Redeems vault units for underlying assets synchronously. Signature:| Parameter | Type | Description |
|---|---|---|
shares | uint256 | Number of vault units to redeem |
receiver | address | Address to receive the underlying assets |
owner | address | Address that owns the vault units |
claimDeposit
Claims vault units from a fulfilled deposit request. Signature:| Parameter | Type | Description |
|---|---|---|
requestId | uint256 | ID of the deposit request to claim |
receiver | address | Address to receive the vault units |
claimRedeem
Claims underlying assets from a fulfilled redemption request. Signature:| Parameter | Type | Description |
|---|---|---|
requestId | uint256 | ID of the redemption request to claim |
receiver | address | Address to receive the assets |
Events
Deposit
Emitted when a synchronous deposit completes.DepositRequested
Emitted when an async deposit request is placed.RedeemRequested
Emitted when an async redemption request is placed.DepositClaimed
Emitted when a fulfilled deposit request is claimed.RedeemClaimed
Emitted when a fulfilled redemption request is claimed.Errors
Provisioner__RequestNotFulfilled
Thrown when attempting to claim a request that has not yet been fulfilled by the solver.Provisioner__InsufficientAssets
Thrown when the deposit amount is below the minimum or the vault cannot cover the redemption.Provisioner__NotOwner
Thrown when an unauthorized address attempts to cancel or modify a request.Inheritance
Provisioner is a standalone contract that interacts with MultiDepositorVault:
- Provisioner — Depositor-facing deposit/redeem and async request management
- Uses MultiDepositorVault for asset custody
- Uses
OracleRegistryfor exchange rate calculations (see Periphery)
This page was manually created as a baseline. Run the contract reference generation pipeline to update with complete NatSpec documentation from the Solidity source.