All of the steps in this guide can be done through the UX or SDKs.
1
Shareholder submits an intent
A signed deposit or withdrawal request lands in the vault’s queue. Deposits hold the funds on the shareholder’s
source subaccount until settled or cancelled.
2
Curator quotes and settles
You poll the queue, pick a share price, and sign a mint (deposit) or burn (withdrawal) approval bound to that exact
request.
3
Protocol executes
The sequencer re-verifies your approval, checks your quoted price against the vault’s own mark-to-market price,
mints/burns shares, and moves the funds.
The shareholder side
You’ll want this to test your vault end-to-end, and to build a deposit UI. From a shareholder’s wallet:Withdrawals are blocked until the vault’s
cooldownSec has elapsed since the holder’s last deposit
(vault_cooldown_active, 18011). Intent signatures default to a 10-minute validity in the SDK — pass
signatureExpirySec to extend it (the API caps it at 30 days out); an intent whose signature lapses before you settle
it expires.The settle loop
Queued intents sit in two per-vault FIFO queues. There is no WebSocket channel for them — poll, then settle. A settle approval is bound to one exact request by its user-action hash, so you cannot pair a price with the wrong request.Your quote is bounded on both sides by the vault’s immutable
maxSlippageBps against the protocol’s mtm-derived
price.1
Poll the queues
getLiveMintRequests (pending deposits) and getLiveBurnRequests (pending withdrawals) return a FIFO page of
requests plus the queue’s total length. Each request carries a composite id and the user_action_hash your
approval commits to.2
Pick a share price
Read the vault and quote at (or near)
simulated_share_price_usd — the live price a depositor faces with your fees
settled. The protocol rejects a quote outside maxSlippageBps of its own mtm price.3
Settle each request
mintShares settles a deposit; burnShares settles a withdrawal. Both are signed on the vault subaccount and bound
to the request’s hash.Request lifecycle
Every request moves through these statuses:
Shareholders see the full status trail via
getRequestHistory; the settled events are
public in getActionHistory.
Reading vault state
All unauthenticated and read-only, onclient.vaults:
getVault is the one you poll while settling — simulated_share_price_usd is your
quote anchor, and nav_usd is negative if the vault is insolvent.
Trade
Keep enough of the deposit asset liquid to pay redemptions.
Fees
Every settle here is also when your fees are minted.
