Continuum’s protocol layer is split across five Anchor programs. They are deployed to devnet today; mainnet IDs will be added when mainnet launches.Documentation Index
Fetch the complete documentation index at: https://continuum-ec12e897.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
| Program | Devnet ID | Role |
|---|---|---|
mint-redeem | 5MBjhNUUguLTPNR5WG6YBUUw7vUcxQ14ARw3NsS3rKu4 | User-facing mint and redeem at NAV; keeper-only single-sided ixns. |
oracle | 5vxiCrDpFnQ2W5QtgZBC66K2XTC19bjVBjinGYYBsadC | Pyth/Hermes price observations, TWAP, risk-state machine. |
clp | 8xauDRjw9XRyk4FE3hW1JKjD8nC87gfr59Xig1dJqLES | Capital and Liquidity Provider - vaults, Meteora DLMM proxy. |
registry | REGnHqnJMxLoRAKX5RqPd9VJGcZBNgmg4xs5bVGGTap | Market registry (symbol → market PDA + pools). |
faucet (devnet only) | 9tUeQAPEtVSB68NSfvFAqfwaB74GuVxm6Zbp1hrMiNKY | Drip cUSDC for testing. |
governance (scaffolded, not active) | 6es5KcjMWKGhVWrttUytYiZ3YELXe4HQyrmsMVdbVawT | CNTM staking, listings, parameter votes (future). |
How they relate
IDLs
IDLs (Anchor interface description language) are JSON files describing each program’s instructions, accounts, and types. You need them to build instruction calls from a TypeScript client. The canonical IDLs ship in the protocol repo attarget/idl/<program>.json. After cloning the repo and running anchor build, they regenerate. They’re also packaged in frontend/lib/idl/ for the official frontend.
Drop them into your project:
PDAs at a glance
| Program | PDA | Seeds |
|---|---|---|
| mint-redeem | Market | [b"market", asset_symbol] |
| mint-redeem | UserCollateralPosition | [b"user_collateral", owner, market] |
| mint-redeem | FeeWaiver | [b"fee_waiver", donor, market] |
| oracle | OracleConfig | [b"oracle_config", market_id] |
| oracle | OracleFeed | [b"oracle_feed", oracle_config, pyth_oracle] |
| clp | GlobalClp | [b"global_clp"] |
| clp | Clp | [b"clp", market_id] |
| clp | AdminWithdrawWindow | [b"admin_withdraw_window"] |
| registry | RegistryState | [b"registry"] |
| registry | MarketEntry | [b"market", symbol_padded_to_16] |
| faucet | FaucetState | [b"faucet", mint] |
| faucet | DripRecord | [b"drip", mint, recipient] |
Authority model
Different operations require different signers:| Authority | What it controls |
|---|---|
| Anyone | mint_paired, redeem_paired, redeem_paired_with_waiver, donate_to_vault, faucet::drip |
market.keeper_authority | keeper_mint_single, keeper_redeem_single, update_risk_state, all clp_* Meteora-proxy ixns |
market.authority (admin) | update_market, update_keeper_authority, update_market_oracle, configure_* |
globalClp.authority (admin) | admin_fund, admin_withdraw, initialize_clp (per-market), update_oi_cap |
oracle.admin_authority | update_oracle_config, configure_health_thresholds, force_price (devnet), emergency_pause |
oracle.keeper_authority | update_price_observation |
keeper_authority and admin_authority are typically separate keypairs - a keeper rotation doesn’t require admin signature. Mainnet authorities will be Squads multisigs.
Errors
Each program exposes its own error catalog. Anchor maps them to numeric codes starting at6000 per program.
Full lookup table: Reference → Errors.
Programs:
Choosing what to call
| Goal | Program | Instruction |
|---|---|---|
| Mint a paired position | mint-redeem | mint_paired |
| Redeem at NAV | mint-redeem | redeem_paired |
| Read NAV / risk state | mint-redeem (Market account) | account fetch only |
| Read fine-grained oracle data | oracle (OracleConfig) | account fetch only |
| Read OI cap / depth | clp (Clp account) | account fetch only |
| Get devnet cUSDC | faucet | drip |
| Operator: list a market | mint-redeem + clp | initialize_market then initialize_clp |
| Operator: fund treasury | clp | admin_fund |
See also
mint-redeem
Paired mint/redeem; keeper single-side; market admin.
oracle
Price observations, TWAP, risk states.
clp
Capital vaults, DLMM proxy, OI cap.
SDK setup
Bootstrapping a TypeScript project against these programs.

