/** * Repository Interface: IProtestRepository * * Defines the contract for persisting and retrieving Protest entities. */ import type { Protest } from '../entities/Protest'; export interface IProtestRepository { /** * Find a protest by ID */ findById(id: string): Promise; /** * Find all protests for a race */ findByRaceId(raceId: string): Promise; /** * Find all protests filed by a specific driver */ findByProtestingDriverId(driverId: string): Promise; /** * Find all protests against a specific driver */ findByAccusedDriverId(driverId: string): Promise; /** * Find all pending protests (for steward review queue) */ findPending(): Promise; /** * Find all protests under review by a specific steward */ findUnderReviewBy(stewardId: string): Promise; /** * Save a new protest */ create(protest: Protest): Promise; /** * Update an existing protest */ update(protest: Protest): Promise; /** * Check if a protest exists */ exists(id: string): Promise; }