Download frontend/src/types.ts from AIBRUH/big-proppa: direct link, hf CLI and curl.
- Browser
- Download file 13.7 kB
-
https://huggingface.co/AIBRUH/big-proppa/resolve/main/frontend/src/types.ts
- Command line
-
hf download hf://AIBRUH/big-proppa/frontend/src/types.ts
-
curl -L -o types.ts https://huggingface.co/AIBRUH/big-proppa/resolve/main/frontend/src/types.ts
13.7 kB
| // Data shapes per frontend/design/HANDOFF_CLAUDE_CODE.md section 6. | |
| export type NodeType = "lake" | "expert"; | |
| export interface CanvasNode { | |
| id: string; | |
| type: NodeType; | |
| name: string; | |
| sub: string; | |
| chips?: string[]; | |
| store?: string; | |
| } | |
| export interface GameBar { | |
| gameDate: string; | |
| opponent: string; | |
| value: number; | |
| } | |
| export type SourceStatus = "ok" | "stale" | "empty" | "error"; | |
| export interface CfbGame { | |
| gameId: number; | |
| week: number; | |
| home: string; | |
| away: string; | |
| homeRank: number | null; | |
| awayRank: number | null; | |
| favorite: string; | |
| favRank: number; | |
| underdog: string; | |
| dogRank: number | null; | |
| spread: number; | |
| dogAts: string; | |
| total: number; | |
| dogMl: number | null; | |
| favMl: number | null; | |
| provider: string; | |
| markets: string[]; | |
| } | |
| export interface CfbHotDogLeg { | |
| label: string; | |
| market: string; | |
| team?: string; | |
| odds: number | null; | |
| direction?: string; | |
| line?: number; | |
| gameTime?: string; | |
| } | |
| export interface CfbHotDogStat { | |
| key: string; | |
| label: string; | |
| dog: number; | |
| fav: number; | |
| dogWins: boolean; | |
| } | |
| export interface CfbOver { | |
| gameId: number; | |
| gameDate: string; | |
| gameTime: string; | |
| fav: string; | |
| favRank: number; | |
| dog: string; | |
| dogRank: number | null; | |
| totalLine: number; | |
| projTotal: number; | |
| overMargin: number; | |
| overProb: number; | |
| grade: "A" | "B" | "C" | "D"; | |
| offProj: number; | |
| defProj: number; | |
| favAvgScored: number; | |
| dogAvgScored: number; | |
| favAvgAllowed: number; | |
| dogAvgAllowed: number; | |
| bothOffensesHot: boolean; | |
| bothDefensesLeaky: boolean; | |
| dogMl: number | null; | |
| spread: number; | |
| } | |
| export interface CfbBigMoneyLeg { | |
| label: string; | |
| odds: number; | |
| bet: string; | |
| gameTime?: string; | |
| } | |
| export interface CfbBigMoneyParlay { | |
| type: "DOUBLE OVER" | "UPSET SPECIAL" | "HOT DOG TRIPLE" | "DOG FIGHT"; | |
| tag: string; | |
| legs: CfbBigMoneyLeg[]; | |
| parlayOdds: number; | |
| confidence: number; | |
| reasoning: string; | |
| } | |
| export interface CfbCrazyHorseLeg { | |
| label: string; | |
| odds: number; | |
| bet: string; | |
| gameDate?: string; | |
| gameTime?: string; | |
| day?: number; | |
| prob?: number; | |
| } | |
| export interface CfbCrazyHorse { | |
| type: "CRAZY HORSE SATURDAY" | "CRAZY HORSE SUNDAY" | "SUPER CRAZY HORSE"; | |
| tag: string; | |
| legs: CfbCrazyHorseLeg[]; | |
| parlayOdds: number | null; | |
| confidence: number; | |
| wager: number; | |
| reasoning: string; | |
| } | |
| export interface CfbHotDog { | |
| gameId: number; | |
| week: number; | |
| dog: string; | |
| fav: string; | |
| favRank: number; | |
| dogRank: number | null; | |
| certified: boolean; | |
| isLocked?: boolean; | |
| metricsWon: number; | |
| stats: CfbHotDogStat[]; | |
| dogPerf: { avg_scored: number; avg_allowed: number; avg_margin: number; wins: number; games: number }; | |
| favPerf: { avg_scored: number; avg_allowed: number; avg_margin: number; wins: number; games: number }; | |
| legs: CfbHotDogLeg[]; | |
| parlayOdds: number | null; | |
| type: "UPSET ALERT" | "RANKED DOG"; | |
| } | |
| export interface PropSplit { | |
| label: "H2H" | "L5" | "L10" | "L20"; | |
| hitRate: number | null; | |
| } | |
| export interface PlayerPropChart { | |
| playerId: string; | |
| name: string; | |
| team: string; | |
| prop: string; | |
| marketSlug: string; | |
| line: number | null; | |
| book: string; | |
| games: GameBar[]; | |
| splits: PropSplit[]; | |
| sourceStatus: SourceStatus; | |
| photoUrl: string | null; | |
| position?: string; | |
| bpl?: BplPlayerLine | null; | |
| trust?: PlayerTrust | null; | |
| error?: string; | |
| } | |
| export interface LeaderRow { | |
| rank: number; | |
| playerId: string; | |
| name: string; | |
| team: string; | |
| gp: number; | |
| value: number; | |
| role?: string; | |
| photoUrl?: string | null; | |
| bpl?: BplPlayerLine; | |
| } | |
| export interface PlayerTrust { | |
| usageIndex: number | null; | |
| role: string; | |
| shareOverall: number | null; | |
| shareCalm: number | null; | |
| shareStress: number | null; | |
| confidenceDelta: number | null; | |
| redZone: { type: string; tiers: { label: string; opps: number | null; tds: number | null; share: number | null }[] }[]; | |
| td: { | |
| total: number | null; redZone: number | null; goalToGo: number | null; rushing: number | null; receiving: number | null; | |
| gamesWithTd: number | null; perRedZoneOpp: number | null; flag: string; | |
| } | null; | |
| } | |
| export interface BplPlayerLine { | |
| market: string; | |
| seasonAvg: number | null; | |
| l5: { week: number; opp: string; value: number }[]; | |
| nextOpp: string | null; | |
| nextOppHome: boolean | null; | |
| nextOppRank: number | null; | |
| sportsbookLine: number | null; | |
| books: string[]; | |
| bpl: number | null; | |
| diffPct: number | null; | |
| parts?: { raw: number; baseline: number; oppFactor: number; homeFactor: number; oppAllowed: number } | null; | |
| version: string; | |
| } | |
| export interface DivisionStanding { | |
| team: string; | |
| wins: number; | |
| losses: number; | |
| } | |
| export interface LeadersResponse { | |
| category: string; | |
| sourceStatus: SourceStatus; | |
| rows?: LeaderRow[]; | |
| bplVersion?: string | null; | |
| divisions?: { division: string; standings: DivisionStanding[] }[]; | |
| } | |
| export interface ParlayLeg { | |
| team?: string; | |
| direction?: string; | |
| market?: string; | |
| line?: number | null; | |
| playerId?: string; | |
| teamId?: string; | |
| name: string; | |
| prop: string; | |
| l5: number; | |
| probability: number; | |
| odds: number; | |
| photoUrl?: string | null; | |
| } | |
| export interface ParlaySlip { | |
| confidence?: number; | |
| id: string; | |
| title: "HOT DOGS!" | "TOTALS!" | "BEAST MODE" | "HOT BOYS" | "TOP GUN"; | |
| legs: ParlayLeg[]; | |
| wager: number; | |
| boost: number; | |
| combinedDecimalOdds: number; | |
| payout: number; | |
| boostedPayout: number; | |
| boostedAmericanOdds: number; | |
| } | |
| export interface EngineLeg { | |
| playerId: string; | |
| name: string; | |
| team: string; | |
| market: string; | |
| direction: string; | |
| line: number | null; | |
| prop: string; | |
| probability: number; | |
| l5: number; | |
| odds: number; | |
| photoUrl?: string | null; | |
| sport?: string; | |
| correlationNote: string; | |
| } | |
| export interface EngineSlip { | |
| id: string; | |
| title: string; | |
| correlationType: "COACHES_SON" | "IB_CASCADE" | "VOLUME_STACK" | "SINGLE_HERO" | "BPL_EDGE" | "SPY_BOY" | "CRAZY_HORSE" | "FEATURED" | "THEMED"; | |
| tier?: string; | |
| floor?: number; | |
| week?: number; | |
| confidence?: number; | |
| badge?: string; | |
| group?: string; | |
| player?: { name: string; team: string; position: string; photoUrl: string | null }; | |
| hitProbability?: number; | |
| expectedValue?: number; | |
| kellyPct?: number; | |
| insight: string; | |
| legs: EngineLeg[]; | |
| wager: number; | |
| boost: number; | |
| combinedDecimalOdds: number; | |
| payout: number; | |
| boostedPayout: number; | |
| boostedAmericanOdds: number; | |
| } | |
| export interface ChartIndexRow { | |
| chart_name: string; | |
| source_table_or_view: string; | |
| grain: string; | |
| row_count: string; | |
| last_exported_at_utc: string; | |
| source_name: string; | |
| status: SourceStatus; | |
| } | |
| export interface PlayerSearchResult { | |
| playerId: string; | |
| name: string; | |
| team: string; | |
| } | |
| export interface NewsArticle { | |
| slipId: string; | |
| gameId: string; | |
| passed: boolean; | |
| passReason: string | null; | |
| correlationType: string; | |
| confidence: number; | |
| legCount: number; | |
| homeTeam: string; | |
| awayTeam: string; | |
| gameDate: string; | |
| gameTime: string; | |
| headline: string; | |
| deck: string; | |
| byline: string; | |
| dateline: string; | |
| body: string; | |
| verdict: string; | |
| } | |
| export interface PowWeek { | |
| season: number; | |
| week: number; | |
| ticketsPosted: number; | |
| ticketsGraded: number; | |
| ticketsWon: number; | |
| pow: number | null; | |
| failure: boolean; | |
| picks: number; | |
| picksGraded: number; | |
| pickAccuracy: number | null; | |
| } | |
| export interface PowSummary { | |
| sourceStatus: SourceStatus; | |
| target: number; | |
| weeks: PowWeek[]; | |
| season: { ticketsGraded: number; ticketsWon: number; pow: number | null; failedWeeks: number }; | |
| } | |
| export type MatchupUnit = "SCORING" | "RED ZONE" | "GROUND" | "AIR" | "BALL SECURITY"; | |
| export interface MatchupSide { | |
| team: string; | |
| record: string; | |
| losing: boolean; | |
| edges: Record<MatchupUnit, number>; | |
| offenseRank: number; | |
| defenseRank: number; | |
| } | |
| export interface MatchupGame { | |
| gameId: string; | |
| season: number; | |
| week: number; | |
| gameDate: string; | |
| gameTime: string; | |
| home: MatchupSide; | |
| away: MatchupSide; | |
| predictedWinner: string; | |
| winProbability: number; | |
| predictedMargin: number; | |
| } | |
| export interface BacktestRow { | |
| section: string; | |
| model: string; | |
| split: string; | |
| bucket: string; | |
| games: string; | |
| correct: string; | |
| accuracy: string; | |
| log_loss: string; | |
| note: string; | |
| } | |
| export interface HotDogStat { | |
| key: "win_pct" | "opp_ppg" | "third_down_pct" | "turnover_pct" | "def_rank"; | |
| label: string; | |
| dog: number; | |
| fav: number; | |
| dogWins: boolean; | |
| } | |
| export interface HotDogGame { | |
| gameId: string; | |
| underdog: string; | |
| favorite: string; | |
| dogRecord: string; | |
| favRecord: string; | |
| dogWinning: boolean; | |
| certifiable: boolean; | |
| certified: boolean; | |
| statsWon: number; | |
| stats: HotDogStat[]; | |
| price: { | |
| moneyline: number; | |
| spread: number; | |
| spreadOdds: number; | |
| totalLine: number; | |
| overOdds: number; | |
| underOdds: number; | |
| source: string; | |
| }; | |
| recommendedBet: string | null; | |
| recommendedTotalBet: string | null; | |
| } | |
| export interface HotDogBacktest { | |
| groups: Record<string, string>[]; | |
| chosenBet?: string; | |
| certifiedHitRate?: number; | |
| chosenTotalBet?: string; | |
| totalHitRate?: number; | |
| ledRate?: number | null; | |
| cover3Rate?: number | null; | |
| cover7Rate?: number | null; | |
| } | |
| // ββ Tank01 / Sportsbook types βββββββββββββββββββββββββββββββββββββββββββββ | |
| export interface NflGame { | |
| gameID: string; | |
| home: string; | |
| away: string; | |
| gameDate: string; | |
| gameTime: string; | |
| gameTimeEpoch?: number; | |
| gameStatus: string; | |
| homeScore?: number | null; | |
| awayScore?: number | null; | |
| // enriched fields from /api/ramp/gameday | |
| quarter?: string | null; | |
| clock?: string | null; | |
| liveStatus?: string; | |
| totalLine?: number | null; | |
| spread?: number | null; | |
| mlHome?: number | null; | |
| mlAway?: number | null; | |
| overOdds?: number | null; | |
| underOdds?: number | null; | |
| homeInjuries?: number; | |
| awayInjuries?: number; | |
| } | |
| export interface NflStandingTeam { | |
| team: string; | |
| name: string; | |
| city: string; | |
| wins: number; | |
| losses: number; | |
| ties: number; | |
| pct: number; | |
| divW: number; | |
| divL: number; | |
| confW: number; | |
| confL: number; | |
| streak: string; | |
| color1: string; | |
| logo: string; | |
| } | |
| export interface NflInjury { | |
| playerID: string; | |
| espnID: string; | |
| name: string; | |
| team: string; | |
| position: string; | |
| injuryStatus: string; | |
| injuryDescription: string; | |
| } | |
| export interface NflDepthPlayer { | |
| rank: number; | |
| playerID: string; | |
| espnID: string; | |
| name: string; | |
| } | |
| export interface NflDepthChart { | |
| [team: string]: { | |
| [position: string]: NflDepthPlayer[]; | |
| }; | |
| } | |
| export interface PlayerInfo { | |
| playerID: string; | |
| espnID: string; | |
| name: string; | |
| team: string; | |
| position: string; | |
| photoUrl: string | null; | |
| jerseyNum: string; | |
| height: string; | |
| weight: string; | |
| college: string; | |
| exp: string; | |
| } | |
| export interface NflLine { | |
| gameID: string; | |
| commence: string; | |
| home: string; | |
| away: string; | |
| ml_home: number | null; | |
| ml_away: number | null; | |
| spread_home: number | null; | |
| spread_home_odds: number | null; | |
| spread_away: number | null; | |
| spread_away_odds: number | null; | |
| total_line: number | null; | |
| over_odds: number | null; | |
| under_odds: number | null; | |
| books: string[]; | |
| } | |
| export interface LineMovement { | |
| has_movement: boolean; | |
| total_open?: number | null; | |
| total_current?: number | null; | |
| total_drift?: number | null; | |
| spread_open?: number | null; | |
| spread_current?: number | null; | |
| spread_drift?: number | null; | |
| } | |
| export interface RampGamedayResponse { | |
| games: NflGame[]; | |
| standings: Record<string, NflStandingTeam[]>; | |
| injuryCount: Record<string, number>; | |
| tank01Available: boolean; | |
| sbAvailable: boolean; | |
| } | |
| export interface JimmyBreakdown { | |
| hitRate: number | null; | |
| usageSignal: number | null; | |
| matchupSignal: number | null; | |
| projectionSignal: number | null; | |
| dfsSalarySignal: number | null; | |
| lineMoveNudge: number | null; | |
| injuryStatus: string; | |
| injuryMultiplier: number; | |
| starterMultiplier: number; | |
| regressionFactor: number; | |
| tank01Available: boolean; | |
| sbAvailable: boolean; | |
| } | |
| export interface OddsWatch { | |
| level: "money" | "watch" | null; | |
| pick: string | null; | |
| probability: number | null; | |
| reasons: string[]; | |
| } | |
| export interface OddsGame { | |
| id: string; | |
| date: string; | |
| time: string; | |
| epoch: number | null; | |
| started: boolean; | |
| away: string; | |
| home: string; | |
| awayName: string; | |
| homeName: string; | |
| awayRank: number | null; | |
| homeRank: number | null; | |
| books: number | null; | |
| spreadHome: number | null; | |
| total: number | null; | |
| mlHome: number | null; | |
| mlAway: number | null; | |
| fd: { spreadHome: number | null; total: number | null; mlHome: number | null; mlAway: number | null }; | |
| spreadMove: number; | |
| totalMove: number; | |
| source: string; | |
| watch: OddsWatch; | |
| } | |
| export interface OddsSidebar { | |
| moves: { game: string; market: string; value: number; signed: number }[]; | |
| recent: { game: string; market: string; at: string; from: number | null; to: number | null }[]; | |
| biggestSpreads: { game: string; value: number }[]; | |
| smallestSpreads: { game: string; value: number }[]; | |
| highestTotals: { game: string; value: number }[]; | |
| lowestTotals: { game: string; value: number }[]; | |
| } | |
| export interface OddsResponse { | |
| league: string; | |
| games: OddsGame[]; | |
| sidebar: OddsSidebar; | |
| updatedAt: string | null; | |
| trackingSince: string | null; | |
| } | |
| export interface EngineScan { | |
| week: number | null; | |
| sidesScored: number; | |
| byKind: Record<string, number>; | |
| gamesCovered: number; | |
| tiers: { tier: string; legs: number; games: number }[]; | |
| spyLegsStrict: number; | |
| spyLegsRelaxed: number; | |
| tickets: Record<string, number>; | |
| crazyHorseLegs: number; | |
| } | |
| export interface EngineResponse { | |
| slips: EngineSlip[]; | |
| crazyHorse: EngineSlip | null; | |
| featured?: EngineSlip | null; | |
| scan?: EngineScan; | |
| mode?: string; | |
| version?: string; | |
| } | |