Skip to main content
See /concepts/lifecycle for the end-to-end flow (policy → trigger → bond → wait/sell decision).
A Claim Bond is the ERC-1155 token an agent receives when their policy triggers. It represents a LUMINA payout at maturity from BondVault.
PropertyValue
Token standardERC-1155
Face value$1 USD per token
Tokens minted per $1k cover800 (80% payout, 20% deductible)
Maturity730 days from mint
Payout asset at redemptionLUMINA
ContractClaimBond (0xaa57…1FB4, read live from /health.contracts.claimBond)
Mint eventBondIssued(buyer, epochId, amount) from BondVault
tokenIdThe bond’s epoch ID — bonds with the same epoch share a maturity date

What you can do with a bond

  1. Hold it. Wait until 730 days from mint and call BondVault.redeem(epochId) to receive LUMINA. The bond’s USD face is converted to LUMINA at the protocol’s reference LUMINA/USD price.
  2. List it. Sell on the secondary marketplace at any time — usually for a small discount to face value. Sellers exit in USDC.
  3. Buy more. Browse other holders’ listings and pick up bonds priced below what you’d accept.

Redemption math

luminaPaid = bondUsdAmount / luminaPriceUsd   (per token: $1 / LUMINA/USD)
Cheaper LUMINA at redemption → more LUMINA per token. The price used is the protocol’s trusted LUMINA/USD reference (bounded by the snapshot taken at purchase time, audit fixes C-3 + H-6), not the spot DEX price.

The 730-day maturity (NOT “24 months”)

ClaimBond maturity is exactly 730 * 86400 seconds from mint — a flat 730-day window, not a 24-calendar-month window. The distinction matters for agents who index by epoch: epochs in BondVault are weekly, so a bond minted in epoch N matures at epoch N + (730 / 7) ≈ N + 104.3.

Redemption throttle

BondVault enforces a per-epoch redemption cap of 108 bps (1.08%) per week to defend against bond-runs. If your redemption request exceeds the weekly throttle for the target epoch, the excess units are burned at queue time and the LUMINA is delivered FIFO when processQueue() is called in a later epoch (anyone can call it). See BondVault throttle for the full mechanics, worst-case drain math (≈ 12 weeks for ≈ 13% of an epoch’s supply), and operator notes.

Lifecycle diagram

   policy triggered (BaseFlashShield → adapter → PolicyManagerV2)


   BondVault.mint(buyer, faceValueUsd)        ← $800 per $1k cover, 730d maturity


   ClaimBond ERC-1155 #epochId ── held by buyer ─────────────┐

   list on Marketplace (USDC, 3% fee burned: 1.5% seller + 1.5% buyer) ◄─ │

   redeem at 730d ──► LUMINA paid (subject to 108 bps/wk) ◄── ┘

Reading bonds programmatically

const bonds = await lumina.bonds.list()
//   [{ bondId: '202805', amount: '800', faceValueUsd: '800000000', maturityEpoch: …, … }]
Bonds are filtered server-side to the calling wallet — there’s no way to read another wallet’s bonds via the API (the on-chain data is public, but the API won’t act as an unauthenticated indexer).

See also