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

# DRO Resolution & Rewards

> How operators resolve markets and fund bonded community outcome reports.

The Direct Resolution Oracle (DRO) lets an approved wallet for your creator submit the
official outcome directly onchain. Resolution Rewards adds a bonded community signal
without changing that authority: users may report **YES** or **NO**, while your approved
proposer still decides the final result from the market rules and source.

<Info>
  Resolution Rewards is an engagement layer, not a vote. A user report cannot resolve a market or override your approved proposer.
</Info>

<Frame>
  <img className="block dark:hidden" src="https://mintcdn.com/forkast/_BxVThirIXvSC5LB/images/resolution-rewards-flow.svg?fit=max&auto=format&n=_BxVThirIXvSC5LB&q=85&s=68982036ed124f8bfa86b695173f62fe" alt="The market-creation fee splits between the Kuest RefillVault and Resolution Rewards, bonded reports flow through the approved resolver, and final balances become claimable or move to the Security Reserve" width="1600" height="760" data-path="images/resolution-rewards-flow.svg" />

  <img className="hidden dark:block" src="https://mintcdn.com/forkast/_BxVThirIXvSC5LB/images/dark/resolution-rewards-flow.svg?fit=max&auto=format&n=_BxVThirIXvSC5LB&q=85&s=d3c29da817cdee604599fc667a1ae11c" alt="The market-creation fee splits between the Kuest RefillVault and Resolution Rewards, bonded reports flow through the approved resolver, and final balances become claimable or move to the Security Reserve" width="1600" height="760" data-path="images/dark/resolution-rewards-flow.svg" />
</Frame>

## Resolution rules

Before resolving, verify the market's complete criteria, named source, relevant date and
timezone, thresholds, and cancellation behavior. The title summarizes the question; the
written rules determine the result.

<Warning>
  DRO resolution is final. Resolve only after the answer can be verified from the market's published rules and source.
</Warning>

## Fee and reward split

With the current global default, Kuest receives **20%** of the DRO creation fee and the
remaining **80%** funds the market's community reward pool.

| Market type                      |        Creation fee |    User reward pool |         Kuest share |
| -------------------------------- | ------------------: | ------------------: | ------------------: |
| Standard market                  |              \$5.00 |              \$4.00 |              \$1.00 |
| Multi-market / neg-risk question | \$2.00 per question | \$1.60 per question | \$0.40 per question |

The Kuest share is transferred immediately to the RefillVault. The reward pool remains in
the Resolution Rewards proxy until finalization and claim. Any integer-division remainder
also belongs to Kuest.

Kuest controls the global defaults for bond, reward percentage, timers, fee recipient, and
Security Reserve. A creator-specific override may change only the reward percentage or
disable rewards. When disabled, the full fee goes to Kuest and the market is not registered
for proposals.

<Note>
  The effective configuration is copied and frozen when each market is created. Later global or creator-level changes affect only new markets.
</Note>

Resolution Rewards uses an upgradeable proxy with a permanent address. Market records,
accounting, and claims remain in proxy storage when Kuest upgrades the implementation.

## Proposal lifecycle

<Steps>
  <Step title="A user reports an outcome">
    A canonical DepositWallet locks the market's configured bond—currently **300 USDC**—and selects **YES** or **NO**.
    Reports may be submitted at any time before official resolution, but users should wait until the answer is verifiable.
  </Step>

  <Step title="The report occupies a side">
    Each market has one active YES slot and one active NO slot. Each DepositWallet may participate only once during the
    entire market lifetime and cannot change sides.
  </Step>

  <Step title="Your approved proposer resolves">
    The proposer whitelisted for the creator evaluates the rules and submits the official outcome. It does not receive
    forfeited bonds and therefore cannot profit by resolving against a user report.
  </Step>

  <Step title="Balances become claimable">
    Users, Kuest, and the Security Reserve withdraw only their own credited balances. Finalization does not loop through
    reporters or push funds to arbitrary recipients.
  </Step>
</Steps>

The contract accepts a reporter only when both the wallet's `isDepositWallet()` marker and
the official DepositWallet Factory validation succeed. Passing through the relayer alone
does not prove that a caller is an eligible DepositWallet.

### Why reporting both sides does not pay

The protocol permits one active report on each side so opposing signals remain visible.
This does not create a risk-free strategy: after a binary result, one 300 USDC bond is
forfeited, while the correct side receives only its 300 USDC bond plus the small reward
pool. One DepositWallet cannot submit both reports.

## Withdrawal from an unresolved market

A report is locked for **48 hours**. After that period, only its originating DepositWallet
may request withdrawal. The request is irreversible and starts a further **24-hour** delay:

* reward eligibility is waived immediately;
* the bond remains exposed to the official result and the slot remains occupied;
* if the report is correct during the delay, only the bond is returned;
* if it is wrong, the bond is credited to the Security Reserve;
* if the market remains unresolved, the bond becomes claimable and the slot can be
  released permissionlessly.

No third party can redirect or claim the reporter's bond. Releasing an expired slot only
makes that bond claimable by its original DepositWallet.

## Finalization outcomes

| Official outcome                            | Bond treatment                              | Reward-pool treatment              |
| ------------------------------------------- | ------------------------------------------- | ---------------------------------- |
| Eligible active report is correct           | Bond returned to that DepositWallet         | Credited to the same DepositWallet |
| Correct report already requested withdrawal | Bond returned                               | Credited to Kuest                  |
| Report is wrong                             | Credited to the Security Reserve            | Not applicable                     |
| YES or NO with no eligible correct report   | Any wrong bond goes to the Security Reserve | Credited to Kuest                  |
| UNKNOWN / 50-50, cancellation, or emergency | Every bond is returned                      | Credited to the Security Reserve   |

If no one reports before a YES or NO resolution, the reward pool returns to Kuest. An
unresolved market may keep its pool pending while reporters remain free to complete the
withdrawal flow above.

## Reliability and accounting

* With rewards active, market creation, fee split, reward funding, and registration are
  atomic. A registration or funding failure reverts creation.
* During resolution, the Rewards hook is isolated. A Rewards failure never prevents the
  DRO from recording the official result.
* If that hook fails, anyone may call `syncFinalization(marketId)`. The retry reads the
  outcome and timestamp from the DRO and never trusts caller-supplied result data.
* Claims are pull-based and have fixed recipients. A reporter can claim only to the
  originating DepositWallet; institutional credits can go only to their frozen recipient.
* A pause blocks new registrations and proposals but does not block claims, expired bond
  release, refunds, or pending finalization sync.

## Security Reserve

Forfeited bonds and exceptional-result pools are credited to a separate Safe. The Reserve
can support security work, exceptional reimbursements, and future improvements to the
Resolution Rewards system. It is not the operator's revenue wallet.

**SAFE-SECURITY-RESERVE:** `0x089517438121eA31BAf3666554d812ca0b36c6c5`

## Kuest fee recipient

Kuest's fee share is sent to the RefillVault, which replenishes the wallets and contracts
used to operate the Kuest system.

**RefillVault:** `0xE2fD3A613f0290705d777af5ef87277C4BD82EEe`

## Contract addresses

The same addresses are used on Polygon mainnet and Amoy.

| Contract                 | Address                                      |
| ------------------------ | -------------------------------------------- |
| Direct Resolution Oracle | `0x57827d48Da09ba227aFda89C083b4E35972Aa741` |
| Resolution Rewards proxy | `0x1EedF578442F4C52429BB2B6449Ff0872ae73Be1` |
| SAFE-SECURITY-RESERVE    | `0x089517438121eA31BAf3666554d812ca0b36c6c5` |
| Kuest RefillVault        | `0xE2fD3A613f0290705d777af5ef87277C4BD82EEe` |

For the final-resolution calls, proposer checks, outcome values, and adapter addresses, see
[DRO Resolution API](/api/resolution/overview).
