Withdrawals and in-kind exits
Testnet onlyTwo 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 kind | Base asset | |
|---|---|---|
| Receive | Every asset, pro rata | WETH |
| Timing | Immediate | At epoch settlement |
| Works while execution is paused | Yes | Yes |
| Works while oracles are failing | Yes | Yes |
| Can be blocked by a pause | No | No |
| Can be delayed by insufficient base asset | No | Yes |
#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.