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

# Constants & PDAs

> Protocol constants, enums, and PDA derivation helpers.

## Constants

```typescript TypeScript theme={null}
import {
  PROGRAM_ID,
  MIN_BET_USDC,
  MIN_CREATOR_BOND,
  ODDS_SCALE,
  // ...
} from "@cypher-zk/sdk";
```

| Constant | Value | Description |
| - | - | - |
| `PROGRAM_ID` | `PublicKey` | Cypher program ID (sourced from synced IDL) |
| `MIN_BET_USDC` | `1_000_000n` | Minimum bet - \$1.00 USDC |
| `MIN_CREATOR_BOND` | `20_000_000n` | Minimum creator bond - \$20.00 USDC |
| `ODDS_SCALE` | `1_000_000_000n` | Fixed-point scale for `entryOdds` and `payoutRatio` |
| `MAX_QUESTION_BYTES` | `200` | Maximum question string length in bytes |
| `MIN_OUTCOMES_MULTI` | `2` | Minimum outcomes for a MultiOutcome market |
| `MAX_OUTCOMES_MULTI` | `4` | Maximum outcomes for a MultiOutcome market |
| `MIN_CHALLENGE_PERIOD_SECS` | `86400` | Minimum challenge window - 24 hours |
| `MAX_CHALLENGE_PERIOD_SECS` | `172800` | Maximum challenge window - 48 hours |
| `DEFAULT_RESOLUTION_WINDOW_SECS` | `604800` | 7 days after close time for resolver to post outcome |
| `DEFAULT_CLAIM_PERIOD_SECS` | `1209600` | 14 days after resolution for winners to claim |
| `DEFAULT_REFUND_PERIOD_SECS` | `1209600` | 14 days after resolution deadline for refunds |
| `MAX_PROTOCOL_FEE_BPS` | `100` | 1% maximum protocol fee |
| `MAX_LP_FEE_BPS` | `500` | 5% maximum LP fee |
| `BPS_DENOMINATOR` | `10_000n` | Denominator for basis-point fee math |

***

## Enums

### MarketState

| Value | Name | Description |
| - | - | - |
| `0` | `Active` | Betting is open |
| `1` | `Closed` | Market was cancelled |
| `2` | `Resolved` | Outcome posted, payouts open |
| `3` | `Unresolved` | Resolver missed deadline, refunds open |
| `4` | `PendingResolution` | MPC reveal ran, in challenge window |

```typescript TypeScript theme={null}
import { MarketState } from "@cypher-zk/sdk";

if (market.state === MarketState.Active) { /* ... */ }
```

### MarketType

| Value | Name | Description |
| - | - | - |
| `0` | `YesNo` | Two outcomes: NO (0) and YES (1) |
| `1` | `MultiOutcome` | Two to four named outcomes |

### MarketCategory

| Value | Name |
| - | - |
| `0` | `Crypto` |
| `1` | `Politics` |
| `2` | `Sports` |
| `3` | `Tech` |
| `4` | `Economy` |
| `5` | `Culture` |
| `6` | `Beyond` |

***

## PDAs

All PDA derivation helpers accept an optional `programId` argument for non-default deployments.

```typescript TypeScript theme={null}
import {
  globalStatePda,
  marketPda,
  marketVaultPda,
  positionPda,
  userStatePda,
  lpPositionPda,
  marketQuestionPda,
  arciumSignerPda,
} from "@cypher-zk/sdk";
```

| Function | Seeds | Description |
| - | - | - |
| `globalStatePda(programId?)` | `["global_state"]` | Singleton protocol config |
| `marketPda(marketId, programId?)` | `["market", id_u64_LE]` | One per market ID |
| `marketVaultPda(market, programId?)` | `["market_vault", market]` | SPL token vault holding stakes |
| `positionPda(market, user, betIndex?, programId?)` | `["position", market, user, betIndex_u64_LE]` | One per bet (defaults `betIndex` to `0n`) |
| `userStatePda(user, programId?)` | `["user_state", user]` | Per-user bet index counter |
| `lpPositionPda(market, creator, programId?)` | `["lp-position", market, creator]` | Creator bond + LP fees |
| `marketQuestionPda(market, programId?)` | `["market_question", market]` | Question text for v0.2+ markets |
| `arciumSignerPda(programId?)` | `["ArciumSignerAccount"]` | Arcium CPI authority for callbacks |

### Usage

```typescript TypeScript theme={null}
const [marketAddress, bump] = marketPda(42n);
const [positionAddress] = positionPda(marketAddress, userPublicKey, 0n);
```

***

## Known mints

<Note>
  Always read `globalState.acceptedMint` at runtime instead of hardcoding. The mint differs between devnet and mainnet.
</Note>

| Constant | Mint | Network |
| - | - | - |
| `KNOWN_MINTS.devnetCSDC` | `8AF9BABN...` | Devnet (Cypher Coin) |
| `KNOWN_MINTS.mainnetUSDC` | `EPjFWdd5...` | Mainnet (Circle USDC) |

These are informational only. They are not used in any action path.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.