kusd-mint issues kUSD, a stablecoin backed by a basket of whitelisted
stables (USDC is the primary reserve). It includes a staking pool that
distributes external yield and a T+1 intent mechanism for cross-stable swaps.
Instruction surface
Core (USDC path)
| Instruction | Purpose |
|---|---|
initialize | One-time setup, creates MintConfig, kUSD mint, USDC reserve vault |
mint_kusd(amount) | Deposit USDC, receive kUSD 1:1 |
redeem_kusd(amount) | Burn kUSD, withdraw USDC 1:1 |
freeze_account / thaw_account | Oracle-driven risk controls |
Multi-stable backing
| Instruction | Purpose |
|---|---|
add_reserve(mint, weight_cap_bps) | Whitelist an alternative stable (e.g. kamino.usd) |
mint_kusd_with_backing(amount) | Deposit any registered stable → kUSD |
redeem_kusd_for_backing(amount) | Burn kUSD → specific backing stable |
Staking & yield distribution
| Instruction | Purpose |
|---|---|
initialize_stake_pool | Set up stake vault + reward vault |
stake_kusd(amount) | Lock kUSD, start earning |
unstake_kusd(amount) | Unlock (yield preserved) |
fund_yield_pool(amount) | Authorized caller pushes USDC rewards |
claim_staking_yield | Claim accumulated USDC |
T+1 cross-stable swaps
Liquidity across stables is finite. Kimia uses a two-phase intent:| Instruction | Purpose |
|---|---|
create_swap_intent(from_amount, to_mint) | kUSD minted immediately; to_mint queued |
settle_swap_intent | Admin crank marks intent settled after off-chain rebalance |
claim_swap_intent | User claims to_mint, burns kUSD |
rebalance_legs(from_amount, to_amount) | Admin rebalances token vaults |
Reserve yield
| Instruction | Purpose |
|---|---|
deploy_reserves(amount) | Lend idle USDC to an external yield manager |
pull_vault_yield(principal, yield_amount) | Return principal + route yield to stakers |
Read next
Program IDs
Devnet addresses.

