> ## 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.

# Settlement & oracle overview

> How outcomes are proposed, challenged, and finalised on-chain.

Settlement is automated via `oracle-service` and the
`PredictStreetOracle` contract. **Binary** and **neg-risk** markets
follow different on-chain settlement paths — see
[Flow](/concepts/settlement/flow) for the per-market-type timeline.

The data side is currently single-source per market (configured by
admin during market authoring). Multi-source aggregation exists in
`oracle-service` but is partial — when used, it follows a simple
majority rule across the configured sources; there is no
"primary-source must agree" gate enforced at this layer today.

<CardGroup cols={2}>
  <Card title="Flow" icon="timeline" href="/concepts/settlement/flow">
    Per-market-type timelines: binary (propose / challenge / finalize)
    and neg-risk (direct winner-index report).
  </Card>

  <Card title="Challenges" icon="gavel" href="/concepts/settlement/challenges">
    Binary-only: 10 USDC bond, 2h window, override / confirm / void outcomes.
  </Card>

  <Card title="Void / delayed" icon="hourglass" href="/concepts/settlement/void-delay">
    When automated settlement cannot proceed safely.
  </Card>
</CardGroup>

## Data sources

`oracle-service` integrates with multiple match-data providers
(Stats Perform / API-Football / Sportmonks). At the **admin authoring
flow** today, a market is configured with **one source**. Multi-source
support exists but is partial and not the default path through the
admin surface.

When multi-source IS configured, the implemented rule is **simple
majority** of the configured sources. The "2-of-3 against a primary
source" rule that earlier docs described is not enforced today.

A market moves to `DELAYED` when the configured source(s) cannot
produce a safe, unambiguous outcome — either because data is
unavailable, ambiguous, or there is no safe majority among the
configured providers. See
[Void & delayed](/concepts/settlement/void-delay).

## Bond + challenge window — binary markets only

The propose → challenge → finalize lifecycle (with bond-backed
challenge window) applies to **binary** markets. Neg-risk markets
do NOT use this lifecycle — see [Flow](/concepts/settlement/flow)
for the neg-risk path.

For binary markets:

* Challenger bond: **10 USDC**
* Challenge window: **2 hours** after proposal
* Only the **first** challenge per market is accepted

Outcomes:

| Decision         | Challenger bond             | Finalisation               |
| ---------------- | --------------------------- | -------------------------- |
| Confirm original | Forfeited to revenue wallet | Original payouts stand     |
| Override         | Returned + reward           | Corrected payouts          |
| Void             | Returned in full            | Void payout vector applied |

See [Void & delayed](/concepts/settlement/void-delay) for what the
void payout vector means for redemption.

## Emergency paths

* `markDelayed(questionId)` / `undelay(questionId)` — pause while
  waiting for data.
* `voidMarket(questionId)` — admin-authorised void path (governance
  approvals are tracked off-chain via SOP; the on-chain authorisation
  model is an admin role today, not a verified multisig).
* `initiateProposalClear` + `executeProposalClear` — 7-day timelock
  path for clearing a stuck proposal (binary markets).

## What partners typically need to know

1. **Fills are not final until the oracle finalises the market.**
2. **Subscribe to `oracle.market_resolved`** for resolved markets;
   void/cancel publishes via **`oracle.market_cancelled`** (separate
   event — both should be handled).
3. **Redemption is on-chain** — call
   `ConditionalTokens.redeemPositions` with your winning tokens.
   No off-chain helper endpoint is exposed on the partner surface;
   the on-chain `PayoutRedemption` event triggers an automatic
   credit to your `/api/me/balances.collateral` via chain-watcher.
