liquidityRewards module queries reward eligibility and per-wallet reward scores for Outcome liquidity-reward campaigns. It is a standalone export - it does not require createHIP4Adapter, a signer, or any authentication. Data comes from the public Monarch rewards API and is normalized to camelCase by the SDK.
Season s1 is the World Cup 2026 campaign (June 11 - July 19, 2026). This page covers the SDK surface only - for how rewards are earned and paid out, see the World Cup Liquidity Program page.
Season handle
Everything is scoped by season.liquidityRewards.season(id) returns a LiquidityRewardsSeasonHandle:
Error immediately, listing the known seasons. When a new season launches, it ships as an SDK update - season ids and their campaign mappings live in code (LIQUIDITY_REWARDS_CONFIG), never in environment variables.
checkEligibility
Checks which books are eligible for liquidity rewards on a scoring day. Scoring days roll at 09:00 UTC. The subject parameter selects what to check, and the return type narrows with it:
subject: "teams" - winner books
Returns which countries’ winner books are inside the 1%-99% eligibility band on the scoring day:
Each
LiquidityRewardsChampionMarket carries teamName, hyperliquidOutcomeId (the outcome id from Hyperliquid outcomeMeta - join on this to address the book through the adapter), and optionally eligibilityMid with its per-source mids (the API does not always include them).
subject: "matches" - match books
Returns the match books inside the day’s incentive window as eligible: LiquidityRewardsMatchMarket[]:
checkRewards
Checks per-wallet reward scores for a scoring day. Omit wallet to get every scored wallet; the wallet filter is case-insensitive:
checkEligibility, a participantsCount total, and scores: LiquidityRewardsScore[] - one row per (wallet, scored book):
All numeric values are decimal strings, consistent with the rest of the SDK.
participantsCount is the total number of distinct wallets that scored that day. It is reported independently of the wallet filter, so it stays the full epoch count even when you pass a wallet and scores is narrowed to a single row. When the backend omits the field, the SDK falls back to the distinct-wallet count of the returned scores.
Empty
scores array for an upcoming epoch means “no scores yet”, not an error.Request options
checkEligibility and checkRewards accept the same request options:
Errors and retries
Requests retry once on 5xx and network errors, matching the rest of the SDK. 4xx responses throw aLiquidityRewardsError immediately, which carries the HTTP status:
Exports
Runtime exports and all liquidity-rewards types come from the main entry point (they are not part of@outcome.xyz/hip4/types):