vaultsDocumentation

Withdrawals and in-kind exits

Testnet only

Two exits with different guarantees. One of them keeps working when everything else has failed.

Two exits, with deliberately different guarantees. Collapsing them into one ambiguous "Withdraw" would leave you unsure what you will receive or when, so the interface never does.

#In-kind exit — the guarantee

Burn shares, receive your exact pro-rata share of every asset the vault holds: the base asset and every position token, in proportion to your shares.

flowchart LR
  S["Burn N shares"] --> C["Contract computes<br/>N / totalSupply"]
  C --> W["Transfer that fraction<br/>of WETH held"]
  C --> T1["Transfer that fraction<br/>of each position token"]

What makes this the guarantee:

  • No pause check. There is no switch that stops it.
  • No price feed. It never calls the valuation path, so it works when every oracle is failing.
  • No epoch. It settles in the same transaction.
  • No discretion. The fraction is arithmetic on totalSupply.

Security. This path is tested by forcing every price feed to fail, asserting that NAV computation reverts, and then asserting that the in-kind exit still succeeds. That test is the point of the whole design.

You receive a basket, not a cash value. If the vault holds three tokens, you get three tokens.

#Base-asset exit — the convenience

Request a redemption denominated in WETH. Your shares are escrowed immediately and burned when the epoch settles.

Everyone in an epoch is treated identically, so there is no advantage to being first — which is what stops a redemption queue from becoming a race.

Settlement never forces a liquidation. It pays out of base asset the vault already holds. If there is not enough, you wait for the next epoch or take the in-kind exit, which is always open.

That constraint exists because the alternative is worse: if one large redeemer could force sales, that redeemer would be dictating when everyone else's positions were sold, and at what price.

#Choosing between them

In kindBase asset
ReceiveEvery asset, pro rataWETH
TimingImmediateAt epoch settlement
Works while execution is pausedYesYes
Works while oracles are failingYesYes
Can be blocked by a pauseNoNo
Can be delayed by insufficient base assetNoYes

#Both sit alongside deposit

Withdrawal is not hidden behind a menu. A product that puts Deposit in a prominent button and buries withdrawal is making a choice about which direction it wants to be easy.