export interface Runner {
  id: string;
  number: number;
  name: string;
  rider: string;  // Jockey for thoroughbred, Driver for harness, empty for greyhound
  trainer: string;
  weight?: number;  // Only for horses
  barrier: number;
  form: string;
  win_probability: number;
  place_probability: number;
  badges: string[];
  odds?: number;       // Current betting odds
  elo_rating?: number; // Elo rating from the ratings engine
}

export interface Race {
  id: string;
  racing_type: 'thoroughbred' | 'harness' | 'greyhound';
  track: string;
  race_number: number;
  start_time: string;
  distance: number;
  race_class: string;
  conditions: string;
  prize_money?: number;
  runners?: Runner[];
  runner_count?: number;
}

export interface TipReason {
  text: string;
  type: 'positive' | 'neutral' | 'caution';
}

export interface Tip {
  id: string;
  race_id: string;
  bet_type: string;
  recommended_bet: string;
  confidence: 'low' | 'medium' | 'high';
  runners: Runner[];
  racing_type?: string;
  reasons: TipReason[];
  created_at: string;
  race_info?: {
    track: string;
    race_number: number;
    start_time: string;
    distance: number;
    race_class: string;
    conditions: string;
    racing_type?: string;
  };
}

export interface Schedule {
  id: string;
  race_id: string;
  bet_type: string;
  minutes_before: number;
  channels: string[];
  status: string;
  created_at: string;
  scheduled_time: string;
  race_info?: {
    track: string;
    race_number: number;
    start_time: string;
    distance: number;
    race_class: string;
  };
}

export interface Notification {
  id: string;
  type: string;
  title: string;
  body: string;
  race_id?: string;
  schedule_id?: string;
  channel: string;
  status: string;
  created_at: string;
}

export interface UserPreferences {
  id: string;
  default_bet_type: string;
  default_lead_time: number;
  favorite_tracks: string[];
  notification_channels: {
    push: boolean;
    sms: boolean;
    email: boolean;
  };
  quiet_hours_start?: string;
  quiet_hours_end?: string;
  onboarding_complete: boolean;
  // Race preferences
  preferred_racing_types: string[];
  preferred_race_classes: string[];
  preferred_distances: string[];
  preferred_conditions: string[];
  min_prize_money?: number;
}

export interface RaceOption {
  id: string;
  name: string;
  description: string;
  range?: number[];
  icon?: string;
}

export interface RaceOptions {
  racing_types: RaceOption[];
  race_classes: RaceOption[];
  distances: RaceOption[];
  conditions: RaceOption[];
}

export interface BetType {
  id: string;
  name: string;
  description: string;
}

export interface AuthUser {
  id: string;
  email: string;
  name?: string;
  created_at: string;
}

export interface TokenResponse {
  access_token: string;
  token_type: string;
}

export interface LoginCredentials {
  email: string;
  password: string;
}

export interface RegisterCredentials {
  email: string;
  password: string;
  name?: string;
}
