import type { Protest, ProtestStatus, ProtestIncident } from '../../domain/entities/Protest';
import type { Presenter } from '@core/shared/presentation/Presenter';

export interface RaceProtestViewModel {
  id: string;
  raceId: string;
  protestingDriverId: string;
  protestingDriverName: string;
  accusedDriverId: string;
  accusedDriverName: string;
  incident: ProtestIncident;
  comment?: string;
  proofVideoUrl?: string;
  status: ProtestStatus;
  reviewedBy?: string;
  reviewedByName?: string;
  decisionNotes?: string;
  filedAt: string;
  reviewedAt?: string;
}

export interface RaceProtestsViewModel {
  protests: RaceProtestViewModel[];
}

export interface RaceProtestsResultDTO {
  protests: Protest[];
  driverMap: Map<string, string>;
}

export interface IRaceProtestsPresenter
  extends Presenter<RaceProtestsResultDTO, RaceProtestsViewModel> {}