Skip to main content

Overview

The Provisioner 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 the OracleRegistry and mints units directly to the depositor. Signature:
Returns: Number of vault units minted.

mint

Mints a specific number of vault units by depositing the required assets. Signature:
Returns: Amount of assets deposited.

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:
Returns: Unique request ID for tracking.

requestRedeem

Places an asynchronous redemption request. The solver fulfills the request after the guardian completes exit flows and assets are available. Signature:
Returns: Unique request ID for tracking.

redeem

Redeems vault units for underlying assets synchronously. Signature:
Returns: Amount of underlying assets received.

claimDeposit

Claims vault units from a fulfilled deposit request. Signature:
Returns: Number of vault units received.

claimRedeem

Claims underlying assets from a fulfilled redemption request. Signature:
Returns: Amount of assets received.

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
This page was manually created as a baseline. Run the contract reference generation pipeline to update with complete NatSpec documentation from the Solidity source.