@sensiblestats/widget-sdk 0.66.0 → 0.67.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -701,6 +701,162 @@ interface NbaInsight {
701
701
  interface NbaInsightEventData {
702
702
  insight: NbaInsight;
703
703
  }
704
+ type NflInsightKind = 'settle_recap' | 'prop_reason' | 'ladder' | 'injury_report' | 'line_move' | 'ats_record' | 'matchup';
705
+ interface NflInsightSelection {
706
+ key: string;
707
+ marketDeveloperName: string;
708
+ selectionLabel: string;
709
+ side: string;
710
+ line?: string | null;
711
+ price: number;
712
+ quotedAtUtc: string;
713
+ }
714
+ interface NflPropReasonGame {
715
+ week: number;
716
+ opponent: string;
717
+ value?: number | null;
718
+ result?: string | null;
719
+ }
720
+ interface NflPropReasonEvidence {
721
+ playerId: number;
722
+ playerName: string;
723
+ propType: string;
724
+ line: string;
725
+ hits: number;
726
+ misses: number;
727
+ pushes: number;
728
+ n: number;
729
+ games: NflPropReasonGame[];
730
+ }
731
+ interface NflLadderRung {
732
+ at: string;
733
+ hits: number;
734
+ selectionKey: string;
735
+ }
736
+ interface NflLadderEvidence {
737
+ playerId: number;
738
+ playerName: string;
739
+ propType: string;
740
+ n: number;
741
+ rungs: NflLadderRung[];
742
+ }
743
+ interface NflInjuryPlayer {
744
+ name: string;
745
+ position?: string | null;
746
+ status: string;
747
+ }
748
+ interface NflInjuryReportEvidence {
749
+ teamId: number;
750
+ teamName: string;
751
+ teamAbbr: string;
752
+ opponentAbbr: string;
753
+ players: NflInjuryPlayer[];
754
+ morePlayers: number;
755
+ }
756
+ interface NflLineMoveLane {
757
+ market: string;
758
+ side: string;
759
+ openLine?: string | null;
760
+ openPrice: number;
761
+ openAt: string;
762
+ line?: string | null;
763
+ price: number;
764
+ quotedAtUtc: string;
765
+ }
766
+ interface NflLineMoveEvidence {
767
+ lanes: NflLineMoveLane[];
768
+ }
769
+ interface NflAtsGame {
770
+ week: number;
771
+ opponentAbbr: string;
772
+ spreadLine: string;
773
+ result: string;
774
+ }
775
+ interface NflAtsRecordEvidence {
776
+ teamId: number;
777
+ teamName: string;
778
+ teamAbbr: string;
779
+ finishedGames: number;
780
+ n: number;
781
+ w: number;
782
+ l: number;
783
+ p: number;
784
+ withoutOpening: number;
785
+ games: NflAtsGame[];
786
+ }
787
+ interface NflMatchupEvidence {
788
+ defenseTeamName: string;
789
+ defenseAbbr: string;
790
+ offenseTeamName: string;
791
+ offenseAbbr: string;
792
+ position: string;
793
+ basis: string;
794
+ yardsPerGame: number;
795
+ touchdownsPerGame: number;
796
+ rank: number;
797
+ rankedTeams: number;
798
+ n: number;
799
+ }
800
+ interface NflSettleRecapLine {
801
+ propType: string;
802
+ line?: string | null;
803
+ actual?: number | null;
804
+ result: string;
805
+ }
806
+ interface NflSettleRecapPlayer {
807
+ playerId: number;
808
+ name: string;
809
+ lines: NflSettleRecapLine[];
810
+ }
811
+ interface NflSettleRecapSummary {
812
+ over: number;
813
+ under: number;
814
+ pushes: number;
815
+ yes: number;
816
+ no: number;
817
+ voids: number;
818
+ n: number;
819
+ }
820
+ interface NflSettleRecapEvidence {
821
+ finalScore: string;
822
+ lineBasis: string;
823
+ players: NflSettleRecapPlayer[];
824
+ morePlayers: number;
825
+ summary: NflSettleRecapSummary;
826
+ }
827
+ interface NflInsight {
828
+ insightId: string;
829
+ matchId: number;
830
+ kind: string;
831
+ text: string;
832
+ title: string;
833
+ marketDeveloperName?: string | null;
834
+ marketLabel?: string | null;
835
+ selections: NflInsightSelection[];
836
+ disclaimer?: string | null;
837
+ homeTeamName: string;
838
+ awayTeamName: string;
839
+ homeTeamAbbr: string;
840
+ awayTeamAbbr: string;
841
+ competitionName: string;
842
+ addToSlipEnabled: boolean;
843
+ pinEnabled: boolean;
844
+ kickoffUtc?: string | null;
845
+ kickoffLabel?: string | null;
846
+ quotedAtUtc?: string | null;
847
+ sport: string;
848
+ propReason?: NflPropReasonEvidence | null;
849
+ ladder?: NflLadderEvidence | null;
850
+ injuryReport?: NflInjuryReportEvidence | null;
851
+ lineMove?: NflLineMoveEvidence | null;
852
+ atsRecord?: NflAtsRecordEvidence | null;
853
+ matchup?: NflMatchupEvidence | null;
854
+ settleRecap?: NflSettleRecapEvidence | null;
855
+ [key: string]: unknown;
856
+ }
857
+ interface NflInsightEventData {
858
+ insight: NflInsight;
859
+ }
704
860
  interface MarketOddsRow {
705
861
  selectionLabel: string;
706
862
  side?: string | null;
@@ -738,8 +894,11 @@ interface MarketOddsCard {
738
894
  competitionImagePath?: string | null;
739
895
  /** Server-rendered kickoff chip in the operator's zone + language. Prefer over local formatting of kickoffUtc. */
740
896
  kickoffLabel?: string | null;
741
- /** `basketball` on an NBA game card; absent or null reads as football. */
897
+ /** `basketball` on an NBA game card, `americanfootball` on an NFL one; absent or null reads as football. */
742
898
  sport?: string | null;
899
+ /** Short team names (NFL), drawn as the badge in place of a crest. */
900
+ homeTeamAbbr?: string | null;
901
+ awayTeamAbbr?: string | null;
743
902
  /** The strongest stat for this card's market and fixture, already in the turn's language. */
744
903
  insight?: MarketOddsCardInsight | null;
745
904
  /** Up to 2 stats for this card's exact market, strongest first; insights[0] is always the same
@@ -1162,7 +1321,7 @@ interface EventEnvelope<TType extends string, TData> {
1162
1321
  timestamp: string;
1163
1322
  data: TData;
1164
1323
  }
1165
- type ChatEvent = EventEnvelope<'progress', ProgressEventData> | EventEnvelope<'answer', AnswerEventData> | EventEnvelope<'entity_card', EntityCardEventData> | EventEnvelope<'action_button', ActionButtonEventData> | EventEnvelope<'intent_chip', IntentChipEventData> | EventEnvelope<'actions_loading', ActionsLoadingEventData> | EventEnvelope<'turn_complete', TurnCompleteEventData> | EventEnvelope<'betting_insight', BettingInsightEventData> | EventEnvelope<'nba_insight', NbaInsightEventData> | EventEnvelope<'market_odds', MarketOddsEventData> | EventEnvelope<'combo_card', ComboCardEventData> | EventEnvelope<'odds_movement', OddsMovementEventData> | EventEnvelope<'error', StreamErrorEventData>;
1324
+ type ChatEvent = EventEnvelope<'progress', ProgressEventData> | EventEnvelope<'answer', AnswerEventData> | EventEnvelope<'entity_card', EntityCardEventData> | EventEnvelope<'action_button', ActionButtonEventData> | EventEnvelope<'intent_chip', IntentChipEventData> | EventEnvelope<'actions_loading', ActionsLoadingEventData> | EventEnvelope<'turn_complete', TurnCompleteEventData> | EventEnvelope<'betting_insight', BettingInsightEventData> | EventEnvelope<'nba_insight', NbaInsightEventData> | EventEnvelope<'nfl_insight', NflInsightEventData> | EventEnvelope<'market_odds', MarketOddsEventData> | EventEnvelope<'combo_card', ComboCardEventData> | EventEnvelope<'odds_movement', OddsMovementEventData> | EventEnvelope<'error', StreamErrorEventData>;
1166
1325
  interface GameSummary {
1167
1326
  gameId: string;
1168
1327
  gameDay: string;
@@ -1384,6 +1543,38 @@ interface ClubRecordsPayload {
1384
1543
  sinceSeasonName: string | null;
1385
1544
  }
1386
1545
 
1546
+ interface SportSpec {
1547
+ readonly slipPrefix: string;
1548
+ readonly monitorPrefix: string;
1549
+ readonly label: string;
1550
+ readonly slippable: boolean;
1551
+ }
1552
+ declare const SPORTS: {
1553
+ readonly basketball: {
1554
+ readonly slipPrefix: "bb:";
1555
+ readonly monitorPrefix: "nba:";
1556
+ readonly label: "NBA";
1557
+ readonly slippable: true;
1558
+ };
1559
+ readonly americanfootball: {
1560
+ readonly slipPrefix: "af:";
1561
+ readonly monitorPrefix: "nfl:";
1562
+ readonly label: "NFL";
1563
+ readonly slippable: false;
1564
+ };
1565
+ };
1566
+ type NonFootballSport = keyof typeof SPORTS;
1567
+ /** The sports whose prices can reach an operator slip or a pin: those the map marks slippable. */
1568
+ type SlipSport = {
1569
+ [K in NonFootballSport]: (typeof SPORTS)[K]['slippable'] extends true ? K : never;
1570
+ }[NonFootballSport];
1571
+ /** undefined means football: every sport the map does not know is football. */
1572
+ declare function sportOf(v: unknown): NonFootballSport | undefined;
1573
+ /** True for football (no sport) and for a sport the map marks slippable: the only cases that may pin or slip. */
1574
+ declare function mayPinOrSlip(v: unknown): boolean;
1575
+ /** The sport when it may take a slip pick or a pin; undefined for football and for a sport that never does. */
1576
+ declare function slipSportOf(v: unknown): SlipSport | undefined;
1577
+
1387
1578
  type FetchLike = (input: string, init: RequestInit) => Promise<Response>;
1388
1579
  interface StatsWidgetClientOptions {
1389
1580
  operatorId: string;
@@ -1467,7 +1658,7 @@ interface SignalInput {
1467
1658
  /** Zero-based tile position within the dashboard, when it is a dashboard tap. */
1468
1659
  tileIndex?: number;
1469
1660
  }
1470
- type SlipSport = 'basketball';
1661
+
1471
1662
  interface SlipSelection {
1472
1663
  matchOddsId: number;
1473
1664
  matchId: number;
@@ -1667,4 +1858,4 @@ interface NdjsonParser {
1667
1858
  }
1668
1859
  declare function createNdjsonParser(): NdjsonParser;
1669
1860
 
1670
- export { type ActionButtonEventData, type ActionsLoadingEventData, type AddToSlipHandler, type AddToSlipRejectReason, type AddToSlipResult, type AllTimeRow, type AnswerEventData, AuthError, type AvailableMarket, type BettingInsight, type BettingInsightEventData, type BettingInsightOdds, type ChatCallbacks, type ChatEvent, type ChatGrounding, type ChatHandle, type ChatInput, type ChatPreset, type ClubFanDashboardCard, type ClubFanDashboardHeadToHead, type ClubFanDashboardPayload, type ClubFixture, type ClubFixturesPayload, type ClubMatchLogRow, type ClubNextFixture, type ClubPerformanceMetric, type ClubPlayerAvailability, type ClubPlayerAvailabilityStatus, type ClubPlayerDetailPayload, type ClubPlayerPerformance, type ClubPlayerSeasonStats, type ClubRecordEntry, type ClubRecordsPayload, type ClubSquadPayload, type ClubSquadPlayer, type ClubSquadStatsPayload, type ClubStandingRow, type ClubStandingsPayload, type ComboCard, type ComboCardEventData, type ComboLeg, type ComboReplacedLeg, type CongestedWeekCard, type CongestedWeekData, type CongestedWeekEntry, Conversation, type CountdownCard, type CountdownData, ENTITY_TYPE_CODES, type EntityCard, type EntityCardEventData, type EntityCardScope, type EntityCardStat, type EventBatch, type EventLogger, type EventLoggerOptions, type FetchLike, type FixtureCard, type FixtureCardData, ForbiddenError, type FormAndH2H, type FormMatch, type GameListPayload, type GameResultPayload, type GameStatePayload, type GameSummary, type GreetingDashboard, type GreetingDashboardLayout, type GreetingDashboardSignalRef, type GreetingDashboardSpan, type GreetingDashboardTile, type GreetingDashboardTileEmphasis, type HeadToHead, type InjuriesCard, type InjuriesCardData, type InjuryRow, type IntentChipEventData, LIMIT_CODES, type LeaderboardChampion, type LeaderboardPayload, type LeaderboardRow, type LeagueStarResult, type LimitCode, type LimitDetails, LimitError, type LinkRow, type LinksCard, type LinksData, type LiveEventLine, type LiveMonitorBasketball, type LiveMonitorEvent, type LiveMonitorFact, type LiveMonitorMarket, type LiveMonitorMatch, type LiveMonitorSnapshot, type LiveMonitorStatPrice, type LiveMonitorStatRow, type LiveScoreCard, type LiveScoreData, type LiveStatRow, type LiveStatsCard, type LiveStatsData, type LiveTimelineCard, type LiveTimelineData, type MarketOddsBlock, type MarketOddsCard, type MarketOddsCardInsight, type MarketOddsEventData, type MarketOddsLiveBlock, type MarketOddsRow, type MatchState, type MomentumPoint, type MonitorPhase, type MonitorSport, type NbaCoHitEvidence, type NbaCoHitLeg, type NbaGameValue, type NbaInjuryEvent, type NbaInsight, type NbaInsightEventData, type NbaInsightSelection, type NbaJointGame, type NbaLadderEvidence, type NbaLadderRung, type NbaLadderStat, type NbaLineLane, type NbaLineMoveEvidence, type NbaLinePoint, type NbaListedTeammate, type NbaMatchupEvidence, type NbaMatchupPosition, type NbaMatchupTeam, type NbaPropReasonEvidence, type NbaQuarterLadderEvidence, type NbaQuarterRung, type NbaQuarterStat, type NbaSettleLine, type NbaSettlePlayer, type NbaSettleRecapEvidence, type NbaSettleSummary, type NbaSplitRow, type NbaTeammateOutEvidence, type NdjsonParser, NetworkError, type OddsMovementCard, type OddsMovementEventData, type OddsMovementPoint, type PageContext, ParseError, type PinKind, type PinRef, type PlayerPropGame, type PlayerPropPrice, type PlayerPropStat, type PlayerPropsBundle, type PostMatchGoalLine, type PostMatchGoalsCard, type PostMatchGoalsData, type PostMatchNextCard, type PostMatchNextData, type PostMatchResultCard, type PostMatchResultData, type PostMatchStatRow, type PostMatchStatsCard, type PostMatchStatsData, type PostMatchTopPerformerCard, type PostMatchTopPerformerData, type PresetComboCell, type PresetGrid, type PresetGridOptions, type PresetMarketCell, type PresetPick, type PresetSinglesCell, type ProgressEventData, RateLimitError, type ReasonToBetCard, type ReasonToBetData, type RestingFormCard, type RestingFormData, type RestingNextCard, type RestingNextData, type RestingSeasonCard, type RestingSeasonData, type RestingStandingsCard, type RestingStandingsData, SIGNAL_TYPE_CODES, type ScheduleGroup, type ScheduleMatch, type SchedulePayload, type ScheduleSport, type SignalEntityType, type SignalInput, type SignalType, type SlipSelection, type SlipSport, type StatesPayload, StatsWidgetClient, type StatsWidgetClientOptions, type StreamErrorEventData, type SubmitPlayBody, type SubmitPlayResult, type TransferRow, type TransfersCard, type TransfersData, type TurnCompleteEventData, UpstreamError, type UserContext, type WhereToWatchCard, type WhereToWatchData, type WidgetEntityEventName, type WidgetEntityType, type WidgetEventInput, type WidgetEventName, type WidgetLogInput, type WidgetOpenEventInput, type WidgetOpenEventName, type WidgetPopupAskEventInput, type WidgetPopupAskEventName, type WidgetPopupEventInput, type WidgetPopupEventName, WidgetSdkError, type WireEvent, createEventLogger, createNdjsonParser, isAddToSlipResult, isLimitCode, matchKey };
1861
+ export { type ActionButtonEventData, type ActionsLoadingEventData, type AddToSlipHandler, type AddToSlipRejectReason, type AddToSlipResult, type AllTimeRow, type AnswerEventData, AuthError, type AvailableMarket, type BettingInsight, type BettingInsightEventData, type BettingInsightOdds, type ChatCallbacks, type ChatEvent, type ChatGrounding, type ChatHandle, type ChatInput, type ChatPreset, type ClubFanDashboardCard, type ClubFanDashboardHeadToHead, type ClubFanDashboardPayload, type ClubFixture, type ClubFixturesPayload, type ClubMatchLogRow, type ClubNextFixture, type ClubPerformanceMetric, type ClubPlayerAvailability, type ClubPlayerAvailabilityStatus, type ClubPlayerDetailPayload, type ClubPlayerPerformance, type ClubPlayerSeasonStats, type ClubRecordEntry, type ClubRecordsPayload, type ClubSquadPayload, type ClubSquadPlayer, type ClubSquadStatsPayload, type ClubStandingRow, type ClubStandingsPayload, type ComboCard, type ComboCardEventData, type ComboLeg, type ComboReplacedLeg, type CongestedWeekCard, type CongestedWeekData, type CongestedWeekEntry, Conversation, type CountdownCard, type CountdownData, ENTITY_TYPE_CODES, type EntityCard, type EntityCardEventData, type EntityCardScope, type EntityCardStat, type EventBatch, type EventLogger, type EventLoggerOptions, type FetchLike, type FixtureCard, type FixtureCardData, ForbiddenError, type FormAndH2H, type FormMatch, type GameListPayload, type GameResultPayload, type GameStatePayload, type GameSummary, type GreetingDashboard, type GreetingDashboardLayout, type GreetingDashboardSignalRef, type GreetingDashboardSpan, type GreetingDashboardTile, type GreetingDashboardTileEmphasis, type HeadToHead, type InjuriesCard, type InjuriesCardData, type InjuryRow, type IntentChipEventData, LIMIT_CODES, type LeaderboardChampion, type LeaderboardPayload, type LeaderboardRow, type LeagueStarResult, type LimitCode, type LimitDetails, LimitError, type LinkRow, type LinksCard, type LinksData, type LiveEventLine, type LiveMonitorBasketball, type LiveMonitorEvent, type LiveMonitorFact, type LiveMonitorMarket, type LiveMonitorMatch, type LiveMonitorSnapshot, type LiveMonitorStatPrice, type LiveMonitorStatRow, type LiveScoreCard, type LiveScoreData, type LiveStatRow, type LiveStatsCard, type LiveStatsData, type LiveTimelineCard, type LiveTimelineData, type MarketOddsBlock, type MarketOddsCard, type MarketOddsCardInsight, type MarketOddsEventData, type MarketOddsLiveBlock, type MarketOddsRow, type MatchState, type MomentumPoint, type MonitorPhase, type MonitorSport, type NbaCoHitEvidence, type NbaCoHitLeg, type NbaGameValue, type NbaInjuryEvent, type NbaInsight, type NbaInsightEventData, type NbaInsightSelection, type NbaJointGame, type NbaLadderEvidence, type NbaLadderRung, type NbaLadderStat, type NbaLineLane, type NbaLineMoveEvidence, type NbaLinePoint, type NbaListedTeammate, type NbaMatchupEvidence, type NbaMatchupPosition, type NbaMatchupTeam, type NbaPropReasonEvidence, type NbaQuarterLadderEvidence, type NbaQuarterRung, type NbaQuarterStat, type NbaSettleLine, type NbaSettlePlayer, type NbaSettleRecapEvidence, type NbaSettleSummary, type NbaSplitRow, type NbaTeammateOutEvidence, type NdjsonParser, NetworkError, type NflAtsGame, type NflAtsRecordEvidence, type NflInjuryPlayer, type NflInjuryReportEvidence, type NflInsight, type NflInsightEventData, type NflInsightKind, type NflInsightSelection, type NflLadderEvidence, type NflLadderRung, type NflLineMoveEvidence, type NflLineMoveLane, type NflMatchupEvidence, type NflPropReasonEvidence, type NflPropReasonGame, type NflSettleRecapEvidence, type NflSettleRecapLine, type NflSettleRecapPlayer, type NflSettleRecapSummary, type NonFootballSport, type OddsMovementCard, type OddsMovementEventData, type OddsMovementPoint, type PageContext, ParseError, type PinKind, type PinRef, type PlayerPropGame, type PlayerPropPrice, type PlayerPropStat, type PlayerPropsBundle, type PostMatchGoalLine, type PostMatchGoalsCard, type PostMatchGoalsData, type PostMatchNextCard, type PostMatchNextData, type PostMatchResultCard, type PostMatchResultData, type PostMatchStatRow, type PostMatchStatsCard, type PostMatchStatsData, type PostMatchTopPerformerCard, type PostMatchTopPerformerData, type PresetComboCell, type PresetGrid, type PresetGridOptions, type PresetMarketCell, type PresetPick, type PresetSinglesCell, type ProgressEventData, RateLimitError, type ReasonToBetCard, type ReasonToBetData, type RestingFormCard, type RestingFormData, type RestingNextCard, type RestingNextData, type RestingSeasonCard, type RestingSeasonData, type RestingStandingsCard, type RestingStandingsData, SIGNAL_TYPE_CODES, SPORTS, type ScheduleGroup, type ScheduleMatch, type SchedulePayload, type ScheduleSport, type SignalEntityType, type SignalInput, type SignalType, type SlipSelection, type SlipSport, type SportSpec, type StatesPayload, StatsWidgetClient, type StatsWidgetClientOptions, type StreamErrorEventData, type SubmitPlayBody, type SubmitPlayResult, type TransferRow, type TransfersCard, type TransfersData, type TurnCompleteEventData, UpstreamError, type UserContext, type WhereToWatchCard, type WhereToWatchData, type WidgetEntityEventName, type WidgetEntityType, type WidgetEventInput, type WidgetEventName, type WidgetLogInput, type WidgetOpenEventInput, type WidgetOpenEventName, type WidgetPopupAskEventInput, type WidgetPopupAskEventName, type WidgetPopupEventInput, type WidgetPopupEventName, WidgetSdkError, type WireEvent, createEventLogger, createNdjsonParser, isAddToSlipResult, isLimitCode, matchKey, mayPinOrSlip, slipSportOf, sportOf };
package/dist/index.d.ts CHANGED
@@ -701,6 +701,162 @@ interface NbaInsight {
701
701
  interface NbaInsightEventData {
702
702
  insight: NbaInsight;
703
703
  }
704
+ type NflInsightKind = 'settle_recap' | 'prop_reason' | 'ladder' | 'injury_report' | 'line_move' | 'ats_record' | 'matchup';
705
+ interface NflInsightSelection {
706
+ key: string;
707
+ marketDeveloperName: string;
708
+ selectionLabel: string;
709
+ side: string;
710
+ line?: string | null;
711
+ price: number;
712
+ quotedAtUtc: string;
713
+ }
714
+ interface NflPropReasonGame {
715
+ week: number;
716
+ opponent: string;
717
+ value?: number | null;
718
+ result?: string | null;
719
+ }
720
+ interface NflPropReasonEvidence {
721
+ playerId: number;
722
+ playerName: string;
723
+ propType: string;
724
+ line: string;
725
+ hits: number;
726
+ misses: number;
727
+ pushes: number;
728
+ n: number;
729
+ games: NflPropReasonGame[];
730
+ }
731
+ interface NflLadderRung {
732
+ at: string;
733
+ hits: number;
734
+ selectionKey: string;
735
+ }
736
+ interface NflLadderEvidence {
737
+ playerId: number;
738
+ playerName: string;
739
+ propType: string;
740
+ n: number;
741
+ rungs: NflLadderRung[];
742
+ }
743
+ interface NflInjuryPlayer {
744
+ name: string;
745
+ position?: string | null;
746
+ status: string;
747
+ }
748
+ interface NflInjuryReportEvidence {
749
+ teamId: number;
750
+ teamName: string;
751
+ teamAbbr: string;
752
+ opponentAbbr: string;
753
+ players: NflInjuryPlayer[];
754
+ morePlayers: number;
755
+ }
756
+ interface NflLineMoveLane {
757
+ market: string;
758
+ side: string;
759
+ openLine?: string | null;
760
+ openPrice: number;
761
+ openAt: string;
762
+ line?: string | null;
763
+ price: number;
764
+ quotedAtUtc: string;
765
+ }
766
+ interface NflLineMoveEvidence {
767
+ lanes: NflLineMoveLane[];
768
+ }
769
+ interface NflAtsGame {
770
+ week: number;
771
+ opponentAbbr: string;
772
+ spreadLine: string;
773
+ result: string;
774
+ }
775
+ interface NflAtsRecordEvidence {
776
+ teamId: number;
777
+ teamName: string;
778
+ teamAbbr: string;
779
+ finishedGames: number;
780
+ n: number;
781
+ w: number;
782
+ l: number;
783
+ p: number;
784
+ withoutOpening: number;
785
+ games: NflAtsGame[];
786
+ }
787
+ interface NflMatchupEvidence {
788
+ defenseTeamName: string;
789
+ defenseAbbr: string;
790
+ offenseTeamName: string;
791
+ offenseAbbr: string;
792
+ position: string;
793
+ basis: string;
794
+ yardsPerGame: number;
795
+ touchdownsPerGame: number;
796
+ rank: number;
797
+ rankedTeams: number;
798
+ n: number;
799
+ }
800
+ interface NflSettleRecapLine {
801
+ propType: string;
802
+ line?: string | null;
803
+ actual?: number | null;
804
+ result: string;
805
+ }
806
+ interface NflSettleRecapPlayer {
807
+ playerId: number;
808
+ name: string;
809
+ lines: NflSettleRecapLine[];
810
+ }
811
+ interface NflSettleRecapSummary {
812
+ over: number;
813
+ under: number;
814
+ pushes: number;
815
+ yes: number;
816
+ no: number;
817
+ voids: number;
818
+ n: number;
819
+ }
820
+ interface NflSettleRecapEvidence {
821
+ finalScore: string;
822
+ lineBasis: string;
823
+ players: NflSettleRecapPlayer[];
824
+ morePlayers: number;
825
+ summary: NflSettleRecapSummary;
826
+ }
827
+ interface NflInsight {
828
+ insightId: string;
829
+ matchId: number;
830
+ kind: string;
831
+ text: string;
832
+ title: string;
833
+ marketDeveloperName?: string | null;
834
+ marketLabel?: string | null;
835
+ selections: NflInsightSelection[];
836
+ disclaimer?: string | null;
837
+ homeTeamName: string;
838
+ awayTeamName: string;
839
+ homeTeamAbbr: string;
840
+ awayTeamAbbr: string;
841
+ competitionName: string;
842
+ addToSlipEnabled: boolean;
843
+ pinEnabled: boolean;
844
+ kickoffUtc?: string | null;
845
+ kickoffLabel?: string | null;
846
+ quotedAtUtc?: string | null;
847
+ sport: string;
848
+ propReason?: NflPropReasonEvidence | null;
849
+ ladder?: NflLadderEvidence | null;
850
+ injuryReport?: NflInjuryReportEvidence | null;
851
+ lineMove?: NflLineMoveEvidence | null;
852
+ atsRecord?: NflAtsRecordEvidence | null;
853
+ matchup?: NflMatchupEvidence | null;
854
+ settleRecap?: NflSettleRecapEvidence | null;
855
+ [key: string]: unknown;
856
+ }
857
+ interface NflInsightEventData {
858
+ insight: NflInsight;
859
+ }
704
860
  interface MarketOddsRow {
705
861
  selectionLabel: string;
706
862
  side?: string | null;
@@ -738,8 +894,11 @@ interface MarketOddsCard {
738
894
  competitionImagePath?: string | null;
739
895
  /** Server-rendered kickoff chip in the operator's zone + language. Prefer over local formatting of kickoffUtc. */
740
896
  kickoffLabel?: string | null;
741
- /** `basketball` on an NBA game card; absent or null reads as football. */
897
+ /** `basketball` on an NBA game card, `americanfootball` on an NFL one; absent or null reads as football. */
742
898
  sport?: string | null;
899
+ /** Short team names (NFL), drawn as the badge in place of a crest. */
900
+ homeTeamAbbr?: string | null;
901
+ awayTeamAbbr?: string | null;
743
902
  /** The strongest stat for this card's market and fixture, already in the turn's language. */
744
903
  insight?: MarketOddsCardInsight | null;
745
904
  /** Up to 2 stats for this card's exact market, strongest first; insights[0] is always the same
@@ -1162,7 +1321,7 @@ interface EventEnvelope<TType extends string, TData> {
1162
1321
  timestamp: string;
1163
1322
  data: TData;
1164
1323
  }
1165
- type ChatEvent = EventEnvelope<'progress', ProgressEventData> | EventEnvelope<'answer', AnswerEventData> | EventEnvelope<'entity_card', EntityCardEventData> | EventEnvelope<'action_button', ActionButtonEventData> | EventEnvelope<'intent_chip', IntentChipEventData> | EventEnvelope<'actions_loading', ActionsLoadingEventData> | EventEnvelope<'turn_complete', TurnCompleteEventData> | EventEnvelope<'betting_insight', BettingInsightEventData> | EventEnvelope<'nba_insight', NbaInsightEventData> | EventEnvelope<'market_odds', MarketOddsEventData> | EventEnvelope<'combo_card', ComboCardEventData> | EventEnvelope<'odds_movement', OddsMovementEventData> | EventEnvelope<'error', StreamErrorEventData>;
1324
+ type ChatEvent = EventEnvelope<'progress', ProgressEventData> | EventEnvelope<'answer', AnswerEventData> | EventEnvelope<'entity_card', EntityCardEventData> | EventEnvelope<'action_button', ActionButtonEventData> | EventEnvelope<'intent_chip', IntentChipEventData> | EventEnvelope<'actions_loading', ActionsLoadingEventData> | EventEnvelope<'turn_complete', TurnCompleteEventData> | EventEnvelope<'betting_insight', BettingInsightEventData> | EventEnvelope<'nba_insight', NbaInsightEventData> | EventEnvelope<'nfl_insight', NflInsightEventData> | EventEnvelope<'market_odds', MarketOddsEventData> | EventEnvelope<'combo_card', ComboCardEventData> | EventEnvelope<'odds_movement', OddsMovementEventData> | EventEnvelope<'error', StreamErrorEventData>;
1166
1325
  interface GameSummary {
1167
1326
  gameId: string;
1168
1327
  gameDay: string;
@@ -1384,6 +1543,38 @@ interface ClubRecordsPayload {
1384
1543
  sinceSeasonName: string | null;
1385
1544
  }
1386
1545
 
1546
+ interface SportSpec {
1547
+ readonly slipPrefix: string;
1548
+ readonly monitorPrefix: string;
1549
+ readonly label: string;
1550
+ readonly slippable: boolean;
1551
+ }
1552
+ declare const SPORTS: {
1553
+ readonly basketball: {
1554
+ readonly slipPrefix: "bb:";
1555
+ readonly monitorPrefix: "nba:";
1556
+ readonly label: "NBA";
1557
+ readonly slippable: true;
1558
+ };
1559
+ readonly americanfootball: {
1560
+ readonly slipPrefix: "af:";
1561
+ readonly monitorPrefix: "nfl:";
1562
+ readonly label: "NFL";
1563
+ readonly slippable: false;
1564
+ };
1565
+ };
1566
+ type NonFootballSport = keyof typeof SPORTS;
1567
+ /** The sports whose prices can reach an operator slip or a pin: those the map marks slippable. */
1568
+ type SlipSport = {
1569
+ [K in NonFootballSport]: (typeof SPORTS)[K]['slippable'] extends true ? K : never;
1570
+ }[NonFootballSport];
1571
+ /** undefined means football: every sport the map does not know is football. */
1572
+ declare function sportOf(v: unknown): NonFootballSport | undefined;
1573
+ /** True for football (no sport) and for a sport the map marks slippable: the only cases that may pin or slip. */
1574
+ declare function mayPinOrSlip(v: unknown): boolean;
1575
+ /** The sport when it may take a slip pick or a pin; undefined for football and for a sport that never does. */
1576
+ declare function slipSportOf(v: unknown): SlipSport | undefined;
1577
+
1387
1578
  type FetchLike = (input: string, init: RequestInit) => Promise<Response>;
1388
1579
  interface StatsWidgetClientOptions {
1389
1580
  operatorId: string;
@@ -1467,7 +1658,7 @@ interface SignalInput {
1467
1658
  /** Zero-based tile position within the dashboard, when it is a dashboard tap. */
1468
1659
  tileIndex?: number;
1469
1660
  }
1470
- type SlipSport = 'basketball';
1661
+
1471
1662
  interface SlipSelection {
1472
1663
  matchOddsId: number;
1473
1664
  matchId: number;
@@ -1667,4 +1858,4 @@ interface NdjsonParser {
1667
1858
  }
1668
1859
  declare function createNdjsonParser(): NdjsonParser;
1669
1860
 
1670
- export { type ActionButtonEventData, type ActionsLoadingEventData, type AddToSlipHandler, type AddToSlipRejectReason, type AddToSlipResult, type AllTimeRow, type AnswerEventData, AuthError, type AvailableMarket, type BettingInsight, type BettingInsightEventData, type BettingInsightOdds, type ChatCallbacks, type ChatEvent, type ChatGrounding, type ChatHandle, type ChatInput, type ChatPreset, type ClubFanDashboardCard, type ClubFanDashboardHeadToHead, type ClubFanDashboardPayload, type ClubFixture, type ClubFixturesPayload, type ClubMatchLogRow, type ClubNextFixture, type ClubPerformanceMetric, type ClubPlayerAvailability, type ClubPlayerAvailabilityStatus, type ClubPlayerDetailPayload, type ClubPlayerPerformance, type ClubPlayerSeasonStats, type ClubRecordEntry, type ClubRecordsPayload, type ClubSquadPayload, type ClubSquadPlayer, type ClubSquadStatsPayload, type ClubStandingRow, type ClubStandingsPayload, type ComboCard, type ComboCardEventData, type ComboLeg, type ComboReplacedLeg, type CongestedWeekCard, type CongestedWeekData, type CongestedWeekEntry, Conversation, type CountdownCard, type CountdownData, ENTITY_TYPE_CODES, type EntityCard, type EntityCardEventData, type EntityCardScope, type EntityCardStat, type EventBatch, type EventLogger, type EventLoggerOptions, type FetchLike, type FixtureCard, type FixtureCardData, ForbiddenError, type FormAndH2H, type FormMatch, type GameListPayload, type GameResultPayload, type GameStatePayload, type GameSummary, type GreetingDashboard, type GreetingDashboardLayout, type GreetingDashboardSignalRef, type GreetingDashboardSpan, type GreetingDashboardTile, type GreetingDashboardTileEmphasis, type HeadToHead, type InjuriesCard, type InjuriesCardData, type InjuryRow, type IntentChipEventData, LIMIT_CODES, type LeaderboardChampion, type LeaderboardPayload, type LeaderboardRow, type LeagueStarResult, type LimitCode, type LimitDetails, LimitError, type LinkRow, type LinksCard, type LinksData, type LiveEventLine, type LiveMonitorBasketball, type LiveMonitorEvent, type LiveMonitorFact, type LiveMonitorMarket, type LiveMonitorMatch, type LiveMonitorSnapshot, type LiveMonitorStatPrice, type LiveMonitorStatRow, type LiveScoreCard, type LiveScoreData, type LiveStatRow, type LiveStatsCard, type LiveStatsData, type LiveTimelineCard, type LiveTimelineData, type MarketOddsBlock, type MarketOddsCard, type MarketOddsCardInsight, type MarketOddsEventData, type MarketOddsLiveBlock, type MarketOddsRow, type MatchState, type MomentumPoint, type MonitorPhase, type MonitorSport, type NbaCoHitEvidence, type NbaCoHitLeg, type NbaGameValue, type NbaInjuryEvent, type NbaInsight, type NbaInsightEventData, type NbaInsightSelection, type NbaJointGame, type NbaLadderEvidence, type NbaLadderRung, type NbaLadderStat, type NbaLineLane, type NbaLineMoveEvidence, type NbaLinePoint, type NbaListedTeammate, type NbaMatchupEvidence, type NbaMatchupPosition, type NbaMatchupTeam, type NbaPropReasonEvidence, type NbaQuarterLadderEvidence, type NbaQuarterRung, type NbaQuarterStat, type NbaSettleLine, type NbaSettlePlayer, type NbaSettleRecapEvidence, type NbaSettleSummary, type NbaSplitRow, type NbaTeammateOutEvidence, type NdjsonParser, NetworkError, type OddsMovementCard, type OddsMovementEventData, type OddsMovementPoint, type PageContext, ParseError, type PinKind, type PinRef, type PlayerPropGame, type PlayerPropPrice, type PlayerPropStat, type PlayerPropsBundle, type PostMatchGoalLine, type PostMatchGoalsCard, type PostMatchGoalsData, type PostMatchNextCard, type PostMatchNextData, type PostMatchResultCard, type PostMatchResultData, type PostMatchStatRow, type PostMatchStatsCard, type PostMatchStatsData, type PostMatchTopPerformerCard, type PostMatchTopPerformerData, type PresetComboCell, type PresetGrid, type PresetGridOptions, type PresetMarketCell, type PresetPick, type PresetSinglesCell, type ProgressEventData, RateLimitError, type ReasonToBetCard, type ReasonToBetData, type RestingFormCard, type RestingFormData, type RestingNextCard, type RestingNextData, type RestingSeasonCard, type RestingSeasonData, type RestingStandingsCard, type RestingStandingsData, SIGNAL_TYPE_CODES, type ScheduleGroup, type ScheduleMatch, type SchedulePayload, type ScheduleSport, type SignalEntityType, type SignalInput, type SignalType, type SlipSelection, type SlipSport, type StatesPayload, StatsWidgetClient, type StatsWidgetClientOptions, type StreamErrorEventData, type SubmitPlayBody, type SubmitPlayResult, type TransferRow, type TransfersCard, type TransfersData, type TurnCompleteEventData, UpstreamError, type UserContext, type WhereToWatchCard, type WhereToWatchData, type WidgetEntityEventName, type WidgetEntityType, type WidgetEventInput, type WidgetEventName, type WidgetLogInput, type WidgetOpenEventInput, type WidgetOpenEventName, type WidgetPopupAskEventInput, type WidgetPopupAskEventName, type WidgetPopupEventInput, type WidgetPopupEventName, WidgetSdkError, type WireEvent, createEventLogger, createNdjsonParser, isAddToSlipResult, isLimitCode, matchKey };
1861
+ export { type ActionButtonEventData, type ActionsLoadingEventData, type AddToSlipHandler, type AddToSlipRejectReason, type AddToSlipResult, type AllTimeRow, type AnswerEventData, AuthError, type AvailableMarket, type BettingInsight, type BettingInsightEventData, type BettingInsightOdds, type ChatCallbacks, type ChatEvent, type ChatGrounding, type ChatHandle, type ChatInput, type ChatPreset, type ClubFanDashboardCard, type ClubFanDashboardHeadToHead, type ClubFanDashboardPayload, type ClubFixture, type ClubFixturesPayload, type ClubMatchLogRow, type ClubNextFixture, type ClubPerformanceMetric, type ClubPlayerAvailability, type ClubPlayerAvailabilityStatus, type ClubPlayerDetailPayload, type ClubPlayerPerformance, type ClubPlayerSeasonStats, type ClubRecordEntry, type ClubRecordsPayload, type ClubSquadPayload, type ClubSquadPlayer, type ClubSquadStatsPayload, type ClubStandingRow, type ClubStandingsPayload, type ComboCard, type ComboCardEventData, type ComboLeg, type ComboReplacedLeg, type CongestedWeekCard, type CongestedWeekData, type CongestedWeekEntry, Conversation, type CountdownCard, type CountdownData, ENTITY_TYPE_CODES, type EntityCard, type EntityCardEventData, type EntityCardScope, type EntityCardStat, type EventBatch, type EventLogger, type EventLoggerOptions, type FetchLike, type FixtureCard, type FixtureCardData, ForbiddenError, type FormAndH2H, type FormMatch, type GameListPayload, type GameResultPayload, type GameStatePayload, type GameSummary, type GreetingDashboard, type GreetingDashboardLayout, type GreetingDashboardSignalRef, type GreetingDashboardSpan, type GreetingDashboardTile, type GreetingDashboardTileEmphasis, type HeadToHead, type InjuriesCard, type InjuriesCardData, type InjuryRow, type IntentChipEventData, LIMIT_CODES, type LeaderboardChampion, type LeaderboardPayload, type LeaderboardRow, type LeagueStarResult, type LimitCode, type LimitDetails, LimitError, type LinkRow, type LinksCard, type LinksData, type LiveEventLine, type LiveMonitorBasketball, type LiveMonitorEvent, type LiveMonitorFact, type LiveMonitorMarket, type LiveMonitorMatch, type LiveMonitorSnapshot, type LiveMonitorStatPrice, type LiveMonitorStatRow, type LiveScoreCard, type LiveScoreData, type LiveStatRow, type LiveStatsCard, type LiveStatsData, type LiveTimelineCard, type LiveTimelineData, type MarketOddsBlock, type MarketOddsCard, type MarketOddsCardInsight, type MarketOddsEventData, type MarketOddsLiveBlock, type MarketOddsRow, type MatchState, type MomentumPoint, type MonitorPhase, type MonitorSport, type NbaCoHitEvidence, type NbaCoHitLeg, type NbaGameValue, type NbaInjuryEvent, type NbaInsight, type NbaInsightEventData, type NbaInsightSelection, type NbaJointGame, type NbaLadderEvidence, type NbaLadderRung, type NbaLadderStat, type NbaLineLane, type NbaLineMoveEvidence, type NbaLinePoint, type NbaListedTeammate, type NbaMatchupEvidence, type NbaMatchupPosition, type NbaMatchupTeam, type NbaPropReasonEvidence, type NbaQuarterLadderEvidence, type NbaQuarterRung, type NbaQuarterStat, type NbaSettleLine, type NbaSettlePlayer, type NbaSettleRecapEvidence, type NbaSettleSummary, type NbaSplitRow, type NbaTeammateOutEvidence, type NdjsonParser, NetworkError, type NflAtsGame, type NflAtsRecordEvidence, type NflInjuryPlayer, type NflInjuryReportEvidence, type NflInsight, type NflInsightEventData, type NflInsightKind, type NflInsightSelection, type NflLadderEvidence, type NflLadderRung, type NflLineMoveEvidence, type NflLineMoveLane, type NflMatchupEvidence, type NflPropReasonEvidence, type NflPropReasonGame, type NflSettleRecapEvidence, type NflSettleRecapLine, type NflSettleRecapPlayer, type NflSettleRecapSummary, type NonFootballSport, type OddsMovementCard, type OddsMovementEventData, type OddsMovementPoint, type PageContext, ParseError, type PinKind, type PinRef, type PlayerPropGame, type PlayerPropPrice, type PlayerPropStat, type PlayerPropsBundle, type PostMatchGoalLine, type PostMatchGoalsCard, type PostMatchGoalsData, type PostMatchNextCard, type PostMatchNextData, type PostMatchResultCard, type PostMatchResultData, type PostMatchStatRow, type PostMatchStatsCard, type PostMatchStatsData, type PostMatchTopPerformerCard, type PostMatchTopPerformerData, type PresetComboCell, type PresetGrid, type PresetGridOptions, type PresetMarketCell, type PresetPick, type PresetSinglesCell, type ProgressEventData, RateLimitError, type ReasonToBetCard, type ReasonToBetData, type RestingFormCard, type RestingFormData, type RestingNextCard, type RestingNextData, type RestingSeasonCard, type RestingSeasonData, type RestingStandingsCard, type RestingStandingsData, SIGNAL_TYPE_CODES, SPORTS, type ScheduleGroup, type ScheduleMatch, type SchedulePayload, type ScheduleSport, type SignalEntityType, type SignalInput, type SignalType, type SlipSelection, type SlipSport, type SportSpec, type StatesPayload, StatsWidgetClient, type StatsWidgetClientOptions, type StreamErrorEventData, type SubmitPlayBody, type SubmitPlayResult, type TransferRow, type TransfersCard, type TransfersData, type TurnCompleteEventData, UpstreamError, type UserContext, type WhereToWatchCard, type WhereToWatchData, type WidgetEntityEventName, type WidgetEntityType, type WidgetEventInput, type WidgetEventName, type WidgetLogInput, type WidgetOpenEventInput, type WidgetOpenEventName, type WidgetPopupAskEventInput, type WidgetPopupAskEventName, type WidgetPopupEventInput, type WidgetPopupEventName, WidgetSdkError, type WireEvent, createEventLogger, createNdjsonParser, isAddToSlipResult, isLimitCode, matchKey, mayPinOrSlip, slipSportOf, sportOf };
package/dist/index.js CHANGED
@@ -742,6 +742,23 @@ function isAddToSlipResult(v) {
742
742
  return false;
743
743
  }
744
744
  }
745
+
746
+ // src/sports.ts
747
+ var SPORTS = {
748
+ basketball: { slipPrefix: "bb:", monitorPrefix: "nba:", label: "NBA", slippable: true },
749
+ americanfootball: { slipPrefix: "af:", monitorPrefix: "nfl:", label: "NFL", slippable: false }
750
+ };
751
+ function sportOf(v) {
752
+ return typeof v === "string" && Object.prototype.hasOwnProperty.call(SPORTS, v) ? v : void 0;
753
+ }
754
+ function mayPinOrSlip(v) {
755
+ const sport = sportOf(v);
756
+ return sport === void 0 || SPORTS[sport].slippable;
757
+ }
758
+ function slipSportOf(v) {
759
+ const sport = sportOf(v);
760
+ return sport !== void 0 && SPORTS[sport].slippable ? sport : void 0;
761
+ }
745
762
  export {
746
763
  AuthError,
747
764
  Conversation,
@@ -753,6 +770,7 @@ export {
753
770
  ParseError,
754
771
  RateLimitError,
755
772
  SIGNAL_TYPE_CODES,
773
+ SPORTS,
756
774
  StatsWidgetClient,
757
775
  UpstreamError,
758
776
  WidgetSdkError,
@@ -760,6 +778,9 @@ export {
760
778
  createNdjsonParser,
761
779
  isAddToSlipResult,
762
780
  isLimitCode,
763
- matchKey
781
+ matchKey,
782
+ mayPinOrSlip,
783
+ slipSportOf,
784
+ sportOf
764
785
  };
765
786
  //# sourceMappingURL=index.js.map