Skip to main content
The outcomeRewards module reads what the Outcome Markets liquidity-rewards programme has paid out. It is a standalone export - it does not require createHIP4Adapter, a signer, or any authentication. The data comes from a public, unauthenticated payouts service that reads Monarch’s finalized reward periods and the actual USDC transfers on Hypercore, and is normalized to camelCase by the SDK.
This replaces the retired liquidityRewards module, but answers a different question. liquidityRewards told you which books were eligible today for one campaign; outcomeRewards tells you what has already been paid out, across every Outcome Market. There’s no eligibility-checking equivalent here.
Every totals shape below carries the same three amounts:

programme

Programme-wide totals - no arguments required:

wallet

One wallet’s totals and reward history:
Carries the same paidUsdc / pendingUsdc / awardedUsdc / payments fields as programme, scoped to the wallet, plus rewards: OutcomeRewardsWalletReward[] - one row per reward period the wallet earned in:
An address with no rewards returns zeroes and an empty rewards list - not an error.

periods

Every finalized reward period, newest first:
Returns OutcomeRewardsPeriod[]:

leaderboard

Wallets ranked by USDC actually paid - not awarded, so a rank never changes without a real payment:
Returns OutcomeRewardsLeaderboardEntry[]: rank, wallet, paidUsdc, payments, rewardPeriods.

Request options

periods and leaderboard accept a limit on top of the shared options below:

Errors and retries

Requests retry once on 5xx and network errors, matching the rest of the SDK. 4xx responses - including 429 rate-limiting - throw an OutcomeRewardsError immediately rather than retrying into the limit:
OutcomeRewardsError carries the HTTP status and, when the response included one, the upstream machine-readable code (e.g. "bad-request" for a malformed wallet address).
The upstream API allows 120 requests a minute per IP and caches responses for 60 seconds (30 seconds for a single wallet). The underlying ledger changes at most once every ten minutes, when the payout sweep runs - polling faster than that buys nothing.

Exports

Runtime exports and all outcome-rewards types come from the main entry point (they are not part of @outcome.xyz/hip4/types):