/**
 * Repository Interface: PrizeRepository
 * 
 * Defines operations for Prize entity persistence
 */

import type { Prize } from '../entities/prize/Prize';
import type { PrizeStatusValue } from '../entities/prize/PrizeStatus';

export interface PrizeRepository {
  findById(id: string): Promise<Prize | null>;
  findBySeasonId(seasonId: string): Promise<Prize[]>;
  findByDriverId(driverId: string): Promise<Prize[]>;
  findByStatus(status: PrizeStatusValue): Promise<Prize[]>;
  findBySeasonAndPosition(seasonId: string, position: number): Promise<Prize | null>;
  create(prize: Prize): Promise<Prize>;
  update(prize: Prize): Promise<Prize>;
  delete(id: string): Promise<void>;
  exists(id: string): Promise<boolean>;
}