/**
 * Simulator interface and shared types for sport-specific EV simulation.
 *
 * Each simulator takes a sportsSeasonId, reads the data it needs from the DB,
 * runs its algorithm, and returns a probability distribution for every participant.
 */

export interface SimulationProbabilities {
  probFirst: number;
  probSecond: number;
  probThird: number;
  probFourth: number;
  probFifth: number;
  probSixth: number;
  probSeventh: number;
  probEighth: number;
}

/**
 * Result for a single participant from a simulation run.
 * Probabilities are 0-1 decimals (not percentages).
 */
export interface SimulationResult {
  participantId: string;
  probabilities: SimulationProbabilities;
  /** Human-readable name of the algorithm used, e.g. 'bracket_monte_carlo' */
  source: string;
}

/**
 * Common interface all sport simulators must implement.
 */
export interface Simulator {
  simulate(sportsSeasonId: string): Promise<SimulationResult[]>;
}
