import type { Penalty, PenaltyType, PenaltyStatus } from '../../domain/entities/Penalty';
import type { Presenter } from '@core/shared/presentation/Presenter';

export interface RacePenaltyViewModel {
  id: string;
  raceId: string;
  driverId: string;
  driverName: string;
  type: PenaltyType;
  value?: number;
  reason: string;
  protestId?: string;
  issuedBy: string;
  issuedByName: string;
  status: PenaltyStatus;
  description: string;
  issuedAt: string;
  appliedAt?: string;
  notes?: string;
}

export interface RacePenaltiesViewModel {
  penalties: RacePenaltyViewModel[];
}

export interface RacePenaltiesResultDTO {
  penalties: Penalty[];
  driverMap: Map<string, string>;
}

export interface IRacePenaltiesPresenter
  extends Presenter<RacePenaltiesResultDTO, RacePenaltiesViewModel> {}