export type BetOutcome = 'win' | 'lose' | 'push' | 'cashout' | 'postponed'; export type BetType = 'single' | 'parlays'; export type SingleBetType = 'over' | 'under' | 'spread' | 'moneyline' | 'prop'; export type BetLeague = string; export type BetSport = string; export interface Rewardable { id?: string; type?: string; userId?: string; } export interface BetExecuted extends Rewardable { type: 'betExecuted'; betType: BetType; odds: number; description: string; wagerAmount: number; netProfit: number; outcome: BetOutcome; isLive: boolean; betDate: number; bets: SingleBet[]; } export interface BetMade extends Rewardable { type: 'betMade'; betType: BetType; odds: number; description: string; wagerAmount: number; isLive: boolean; betDate: number; bets: SingleBet[]; } export interface SingleBet { type: SingleBetType; odds: number; teamBetOn?: string; teamBetAgainst?: string; player?: string; league: BetLeague; sport: BetSport; }