Called Bonds in the Reinvestment Vault
When the bond issuer exercises a call provision, all Bond Token holders are affected pro-rata: including the Reinvestment Vault. Without careful handling, a bond call would create a window where the vault's Bond Tokens are burned but their equivalent stablecoin proceeds have not yet been reflected in the vault's accounting.
For lending protocols using vbtXXX as collateral, any unaccounted gap in NAV during that window could trigger unnecessary liquidations of otherwise-healthy positions. The Reinvestment Vault eliminates this gap entirely.
The general issuer bond call flow (registration, full Bond Token freeze, snapshot, and relayer execution) applies to all holders. See the Issuer Bond Call Flow in Redemption. For how whitelisted vaults are settled differently from individual Bond Token holders, see Vault Settlement on Bond Call.
Why Unwinding Exists
A bond call shrinks the vault's Bond Token holdings and replaces that slice with stablecoin that sits idle (earning nothing) until it is either reinvested or paid out. Some holders are happy to stay fully invested and let that stablecoin eventually compound back into Bond Tokens or let other unwind and keep their full exposure. Others, for example some holders using vbtXXX as collateral on a lending market like Morpho, may want that cash now: to repay debt, to delever, or simply to take the proceeds without giving up the rest of their position.
claimCallProceeds lets a holder take that cash from their own shares. They burn a chosen amount of vBT and receive the call proceeds that amount represents. Those shares leave supply and the proceeds leave the vault, so the Bond Tokens behind every remaining share stay the same. The holder only withdraws idle stablecoin they chose to take. Their exit does not move Bond Token exposure or pending coupon onto anyone else.
Bondi announces a call and the resulting unwind opportunity through all its communication channels: holders who want to unwind their call slice can do so on the Bondi frontend. Bondi expects unwinding to happen promptly after a call; no special monitoring of the vault is required.
How Called Bond Settlement Works for the Reinvestment Vault
1. Relayer execution
The relayer calls Distribution.executeCallForUser(callId, vault, expectedBalance). Distribution identifies the vault as a whitelisted Bondi vault.
2. Atomic settlement
The vault's callable Bond Tokens are burned, call stablecoin proceeds are transferred to the vault, and the vault's registerCall callback is triggered in a single transaction. The vault records the stablecoin in pendingCallStable. Because the BT burn and stablecoin receipt happen atomically, the oracle's BT component and stable component update in the same block, the share price is never artificially depressed.
3. Exit paths for call proceeds
After registerCall, three paths exist for accessing pendingCallStable:
-
Pro-rata exit via
redeem(shares): Burn vault shares and receive pro-rata Bond Token backing plus pro-ratapendingCallStableand any pending coupon stablecoin. Settlement follows Compliance at Reinvestment Vault Exit. After a full bond call (callRatioBps == 10000),totalAssets() == 0so Bond Token output is zero; useredeem, notwithdraw(assets):withdrawreverts withInsufficientBondTokenForWithdrawwhen there are no Bond Tokens to back the asset amount. -
Direct claim via
claimCallProceeds(vbtToBurn): Open to every non-blacklisted holder. Burn a chosen number of vBT (up to what the Bondi frontend shows as available) and receive the call slice, without exiting the full vault position. A KYC-verified holder receives stablecoin for the call slice, and for any coupon the vault has not reinvested yet. Everyone else receives vault Principal Tokens for the call, plus vault Coupon Tokens for any coupon the vault has not reinvested yet. Remaining vBT keeps its Bond Token backing and continues earning future coupons. Holders who post vBT as collateral on Morpho use this to delever: they take the called slice as cash, repay part of the loan, and leave the rest of the position posted. -
Bondi-triggered (admin) reinvestment via
reinvestCallStable(amount): Swap a portion ofpendingCallStableback into Bond Tokens via the same oracle deviation and slippage guards as coupon reinvestment. Remaining holders benefit through a higher Bond Token NAV per share. Bondi's admin triggers it. Bondi decides per call how much to reinvest versus leave for holders to access viaclaimCallProceedsorredeem, based on pool liquidity.
Share Price Continuity Through All Lifecycle Events
VbtVaultOracle always prices vbtXXX shares as btComponent + stableComponent. This design means the share price accounts for every form of value in the vault: whether that value is held as Bond Tokens, pending coupon stablecoin, or call proceeds. No lifecycle event creates a gap:
- Pending coupon reinvestment:
stableComponentrises immediately when the coupon is registered. New depositors pay an oracle-adjusted entry price that includes the pending value. No gaming window exists. - Bond call settlement:
btComponentdrops (fewer Bond Tokens) andstableComponentrises (pendingCallStable added) in the same block. No artificial NAV drop triggers liquidations. Yet a slight net price shift can happen, reflecting the call price vs. the prevailing oracle price rather than an accounting gap. - Maturity: deposits close; exit follows Compliance at Reinvestment Vault Exit. See also Vault Settlement at Maturity.
- Oracle staleness: if the live bond price feed is temporarily unavailable,
VbtVaultOracleuses the last valid recorded bond price rather than dropping to stable-only valuation. This avoids artificial liquidation pressure from oracle downtime while preserving continuous collateral pricing.