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

# Program reference

> Accounts, instructions, states, constants, limits, settlement arithmetic, and program errors.

# Program reference

## Network constants

| Item                   | Value                                          |
| ---------------------- | ---------------------------------------------- |
| Slip program           | `8VNZ5VseAcFaYhAZxetgE5N8eiD17ZZNchGhoatYUUXw` |
| TxLINE devnet program  | `6pW64gN1s2uqjHkn1unFeEjAwJkPGHoppGvS715wyP2J` |
| Devnet settlement mint | `ELWTKspHKCnCfCiCiqYw1EDH77k8VCP74dK9qytG2Ujh` |
| Fee treasury           | `DZqzfMTmFyDvhLWamA4qjiEUUzS8LoTZ6d2KMkXwsiXh` |

The checked-in unified IDL is newer than the currently published legacy devnet binary. See
[deployment status](/deployment-status).

## Accounts

### `Market`

PDA seeds: `["market", creator, id_le_u64]`

Stores the creator, settlement mint, `MarketExpression`, two to five labels, two to eight bands, five
pool counters, entry and settlement deadlines, fee and tip rates, state, winner, ticket count, claimed
winning stake, timestamps, and PDA bump.

### `MarketTicket`

PDA seeds: `["ticket", market, owner, nonce_le_u64]`

Stores market, owner, nonce, outcome index, stake, claimed flag, and PDA bump. A ticket is immutable
after purchase. Reusing a nonce for the same market and owner fails because the PDA already exists.

### Vault

The vault is the associated token account for the market PDA and the market's six-decimal classic SPL
mint.

## Instructions

| Instruction      | Required behavior                                                                                                                                 |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `create_market`  | Validates expression, labels, bands, mint decimals, fee/tip ceilings, and deadlines; initializes market and vault.                                |
| `buy_ticket`     | Before entry close, transfers at least 1 USDT into the vault and creates one ticket.                                                              |
| `resolve_market` | After `resolve_at`, verifies a terminal TxLINE proof, selects a band, routes fee/tip, and records the winner; insufficient liquidity forces void. |
| `claim_ticket`   | Refunds a voided ticket or pays a winning ticket proportionally; losing and repeat claims fail.                                                   |
| `void_market`    | Voids one-sided markets after entry close or any unresolved market after `void_at`.                                                               |

## States

| State      | Allowed transitions                             |
| ---------- | ----------------------------------------------- |
| `Open`     | `Resolved` or `Voided`                          |
| `Resolved` | No state transition; winning tickets may claim. |
| `Voided`   | No state transition; all tickets may refund.    |

## Limits

| Limit                    |                           Value |
| ------------------------ | ------------------------------: |
| Minimum stake            | `1_000_000` minor units, 1 USDT |
| Settlement mint decimals |                               6 |
| Outcomes                 |                             2–5 |
| Outcome bands            |                             2–8 |
| Outcome label            |                48 bytes maximum |
| Fee ceiling              |                         500 bps |
| Resolver tip ceiling     |                         200 bps |

## Settlement arithmetic

```text theme={null}
total = sum(pools)
fee   = floor(total * fee_bps / 10_000)
tip   = floor(total * tip_bps / 10_000)
net   = total - fee - tip
payout = floor(ticket.stake * net / winning_pool)
```

Multiplication uses `u128`. The final winning claim transfers remaining rounding dust to the fee
treasury. A void refund is exactly the ticket stake and has no fee or tip.

## Errors

| Error                     | Meaning                                                           |
| ------------------------- | ----------------------------------------------------------------- |
| `BadState`                | Account state or vault balance does not permit the instruction.   |
| `ClaimNotOpen`            | Proof timestamp or clock is before resolution eligibility.        |
| `VoidNotReached`          | Neither the one-sided entry-close rule nor timeout applies.       |
| `BpsTooHigh`              | Fee or resolver tip exceeds its ceiling.                          |
| `WrongRootsAccount`       | TxLINE roots owner, PDA, layout, or slot is invalid.              |
| `ProofInvalid`            | Merkle folding does not reproduce the anchored root.              |
| `FixtureMismatch`         | Proof fixture differs from the market fixture.                    |
| `EpochDayMismatch`        | Proof day and roots account day differ.                           |
| `MissingSecondStat`       | Expression and proof disagree on second-stat shape.               |
| `StatKeyMismatch`         | Proved stat key differs from the expression.                      |
| `EntryClosed`             | Purchase occurred at or after the entry deadline.                 |
| `InvalidTerms`            | Stat key, side, period, or operation is non-canonical.            |
| `FixtureNotFinal`         | Proof is not from phase 5, 10, 13, or 100.                        |
| `StakeBelowMinimum`       | Ticket stake is below 1 USDT.                                     |
| `WrongMintDecimals`       | Settlement mint does not use six decimals.                        |
| `LosingTicket`            | Resolved ticket does not hold the winning outcome.                |
| `TicketAlreadyClaimed`    | Ticket has already paid or refunded.                              |
| `InvalidOutcomes`         | Labels or bands do not form a valid complete market.              |
| `InvalidOutcomeIndex`     | Outcome index is outside the market's labels.                     |
| `Overflow` / `BadNumeric` | Integer calculation or conversion is outside the supported range. |
