Final stat after the game. Populated by the settlement watcher (or read directly from a settled-state screenshot when the user uploads post-game). NULL while pending.
PrizePicks-only - Underdog parsers always emit 'standard'.
DFS slips show ↑ = over for nearly all lines; we still capture it for under-DFS markets.
Audit snapshot captured the moment the settlement watcher graded this leg. Used by the dispute path (Phase G) and by reconciliation crons that re-check stat-correction windows. NULL while pending.
Stable id within a bet - used for DNP edits.
Resolution metadata for the player. Populated by dfs-linkage-service after parse / manual entry. The settlement watcher only auto-grades legs whose linkage.status === 'resolved'; ambiguous and unmatched legs surface a verification prompt to the user before grading.
Lives alongside playerAthleteId for backwards compatibility — when status === 'resolved', playerAthleteId is also set to the chosen athlete's id.
In-progress fingerprint refreshed every tick by the live watcher (Phase D). Mirrors leg.actualValue at the moment of the last polled stat update; lastLiveStatAt advances only when actualValue actually changes (diff-based writes). Cleared (null) when the settlement watcher grades the leg — gradingSnapshot becomes the authoritative record from then on.
Internal players.id when matched. Plain-string fallback otherwise.
"Points", "Rebounds", "Rec Yards", "Pts + Rebs + Asts" — verbatim from slip.
Optionalsettlement
@buzzr/dfs-engine — pure-functional DFS prop grading, payouts, and stat normalization for PrizePicks/Underdog-style contests.
All exports are pure functions or types — no I/O, no React, no native deps. Feed it data, get grading decisions and payout math back.