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

# Market status

> Every state in the market lifecycle and what it means for trading.

## State machine

```mermaid theme={null}
stateDiagram-v2
    [*] --> DRAFT
    DRAFT --> REJECTED: review fails
    DRAFT --> PROPOSED: all reviews approved
    REJECTED --> DRAFT: resubmit
    PROPOSED --> PRE_MARKET: on-chain deployed + listed
    PROPOSED --> CANCELLED: withdrawn
    PRE_MARKET --> OPEN: liquidity + readiness approved
    PRE_MARKET --> CANCELLED: readiness fail
    OPEN --> PAUSED: ops intervention
    PAUSED --> OPEN: resume
    OPEN --> SUSPENDED: longer halt
    PAUSED --> SUSPENDED: escalation
    SUSPENDED --> OPEN: resume
    OPEN --> CLOSED: event started
    PAUSED --> CLOSED: event started
    CLOSED --> PENDING_RESOLUTION
    PENDING_RESOLUTION --> RESOLVED: oracle finalized
    PENDING_RESOLUTION --> DELAYED: data unavailable
    DELAYED --> PENDING_RESOLUTION: data recovered
    PENDING_RESOLUTION --> DISPUTED: challenge raised
    DISPUTED --> RESOLVED: challenge resolved
    DISPUTED --> VOIDED: ambiguous data
```

## Status → trading effect

| Status                              | User-facing trading                        | Notes                                        |
| ----------------------------------- | ------------------------------------------ | -------------------------------------------- |
| `DRAFT` / `PROPOSED` / `PRE_MARKET` | Not tradeable                              | Market not yet listed publicly               |
| **`OPEN`**                          | **Tradeable**                              | Only state where `POST /api/orders` succeeds |
| `PAUSED`                            | Place order rejected `409 market_not_open` | Orderbook preserved; resume is instant       |
| `SUSPENDED`                         | Same as PAUSED, longer-term                | Periodic review required per SOP             |
| `CLOSED`                            | Rejected                                   | Kickoff passed; event in progress            |
| `PENDING_RESOLUTION`                | Rejected                                   | Oracle is resolving                          |
| `DELAYED`                           | Rejected                                   | Oracle couldn't get data; manual review      |
| `DISPUTED`                          | Rejected                                   | A user challenge is being reviewed           |
| `RESOLVED`                          | Rejected                                   | Terminal — redemption available              |
| `VOIDED`                            | Rejected                                   | Terminal — all collateral refunded           |
| `CANCELLED`                         | Rejected                                   | Terminal — market killed before conclusion   |

## Terminal states — recovering value

| Status      | Holder of YES + NO shares can                                            | What to call                                                                                                                                                                                                                                                                  |
| ----------- | ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `RESOLVED`  | Redeem winning shares 1-for-1 USDC; losing shares are worth 0            | `ConditionalTokens.redeemPositions(...)` against the resolved condition. Each winning share = 1 USDC.                                                                                                                                                                         |
| `VOIDED`    | Recover the full collateral pair-style — 1 YES + 1 NO redeems for 1 USDC | `ConditionalTokens.redeemPositions(...)` with `payouts = [0, 0, ...]` set by the oracle's `voidMarket()` call. Holders of unbalanced positions (only YES, only NO) cannot recover full collateral; merge first via `vault.mergePositions(...)` and redeem the resulting pair. |
| `CANCELLED` | Same as VOIDED — collateral refunded via the void path                   | Same as VOIDED.                                                                                                                                                                                                                                                               |

Once a market is in any terminal state, any open orders against it
are auto-cancelled into `CANCELLED_BY_RESOLVE` and locked balances
refunded to `available` — you don't need to cancel them yourself.
See [Settlement & Oracle](/concepts/settlement/overview) for the
end-to-end resolution timeline.

## Subscribing to status changes

```json theme={null}
{
  "type": "market.status",
  "data": {
    "symbol": "UAE-CUP-FINAL-20260425",
    "oldStatus": "OPEN",
    "newStatus": "PAUSED",
    "reason": "stale pricing detected",
    "at": "2026-04-22T14:22:01Z"
  }
}
```

Market makers should treat any non-`OPEN` status as "pause all new
orders" and wait for the transition back to `OPEN`.
