State machine
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. |
CANCELLED_BY_RESOLVE and locked balances
refunded to available — you don’t need to cancel them yourself.
See Settlement & Oracle for the
end-to-end resolution timeline.
Subscribing to status changes
OPEN status as “pause all new
orders” and wait for the transition back to OPEN.