Skip to main content
Kimia ships six Anchor programs. They share a math crate (kimia-math / perps-math) and a shared utility crate (perps-common) for oracle validation.
ProgramPurposeDevnet Program ID
kimia-perpPerpetuals matching engine, funding, liquidation, spot poolSee program IDs
delta-vaultDelta-neutral yield vault (USDC + SOL-PERP short)HyCt6unDrKvvG2n6u99FZvhgSbtkTCuA2u8Bc8gdTuJ2
split-enginePT / YT tokenization of vault sharesCKnwfi5e1jXipqXwccW3u7g3kwrZNZFi9XzVSUuNF36q
yield-ammxyt=kx \cdot y^t = k AMM for PT / underlying7d48WW4sUSdsfGKxqHRYeL92kmqJxW5YmKbT78mVCT9e
intent-routerFixed-rate intent state machineCU3A8MLxrJsz4CiahcduqubCA2WrniiVS4jdovxyyjR6
kusd-mintkUSD stablecoin with multi-reserve backing94kLqc35iGWgJ4sZTMeXnvLSyzCAgqUarJfbj2JvkTZ2

What uses what

intent-router   ─ reads ─► delta-vault, split-engine, yield-amm accounts
delta-vault     ─ CPI  ──► kimia-perp (deposit_collateral, place_order,
                                        spot_swap, settle_funding)
split-engine    ─ reads ─► delta-vault.Vault (for share price)
yield-amm       ─ standalone (uses kimia-math only)
kusd-mint       ─ standalone (integrates with external reserves)
kimia-perp      ─ leaf (calls Pyth Receiver only)

Where IDLs live

After anchor build:
Perp-engine/target/idl/kimia_perp.json
Programs/target/idl/delta_vault.json
Programs/target/idl/split_engine.json
Programs/target/idl/yield_amm.json
Programs/target/idl/intent_router.json
Programs/target/idl/kusd_mint.json
The frontend’s codama.*.json files pin each IDL and regenerate TS clients under app/generated/<program>/.

Generated client layout

Every program gets a uniform client shape:
app/generated/<program>/
├── accounts/          # typed account codecs + PDA helpers
├── instructions/      # builder functions that return IInstruction
├── programs/          # program ID constant
├── pdas/              # findXPda helpers
└── errors/            # typed error enum
Each builder accepts @solana/kit primitives directly, so instructions compose without adapters.