> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kimia.live/llms.txt
> Use this file to discover all available pages before exploring further.

# kusd-mint

> kUSD stablecoin with multi-reserve backing, T+1 cross-stable swaps, and staking yield.

`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

<CardGroup cols={2}>
  <Card title="Program IDs" icon="id-card" href="/resources/program-ids">
    Devnet addresses.
  </Card>
</CardGroup>
