- User calls
deposit(base asset) ordepositAsset(for a supported asset). - Vault previews shares from input assets.
- Vault transfers deposit tokens from user to vault.
- Vault mints shares to receiver.
UltraVault.afterDeposittransfers deposited tokens tofundsHolder.
- User/controller calls
requestRedeemorrequestRedeemOfAsset. - Shares are moved from owner to vault.
- Pending redeem accounting increases for
(controller, asset). - Request remains pending until operator fulfillment.
Cancellation is possible (full or partial) via cancel request functions, returning pending shares back to the receiver.
Only OPERATOR_ROLE can fulfill:
- Operator calls
fulfillRedeemorfulfillMultipleRedeems. - Shares are converted into claimable asset amounts.
- Pending redeem is consumed.
- Claimable redeem is increased.
- Escrowed shares in vault are burned.
Redeem fulfillment cadence depends on vault operations, with expected completion not exceeding 72 hours.
After fulfillment, users claim assets via:
redeem/redeemAsset(exact shares target)withdraw/withdrawAsset(exact assets target)
These consume claimable balances and transfer assets from vault to receiver.
- Deposits/mints are blocked when paused.
- Preview deposit/mint functions return 0 when paused.
- Withdraw/redeem of already claimable amounts continue to function.
This supports incident response while preserving user exit from fulfilled liquidity.
For oracle/rate provider/funds holder updates:
- Owner proposes new address.
- Wait timelock period.
- Accept within allowed window.
- Vault pauses automatically on accept.
- Operators verify setup and unpause when ready.