Files
gridpilot.gg/packages/racing/application/presenters/IRaceResultsDetailPresenter.ts
2025-12-11 00:57:32 +01:00

40 lines
1.1 KiB
TypeScript

import type { RaceStatus } from '../../domain/entities/Race';
import type { Result } from '../../domain/entities/Result';
import type { Driver } from '../../domain/entities/Driver';
import type { PenaltyType } from '../../domain/entities/Penalty';
export interface RaceResultsHeaderViewModel {
id: string;
leagueId: string;
track: string;
scheduledAt: Date;
status: RaceStatus;
}
export interface RaceResultsLeagueViewModel {
id: string;
name: string;
}
export interface RaceResultsPenaltySummaryViewModel {
driverId: string;
type: PenaltyType;
value?: number;
}
export interface RaceResultsDetailViewModel {
race: RaceResultsHeaderViewModel | null;
league: RaceResultsLeagueViewModel | null;
results: Result[];
drivers: Driver[];
penalties: RaceResultsPenaltySummaryViewModel[];
pointsSystem: Record<number, number>;
fastestLapTime?: number;
currentDriverId?: string;
error?: string;
}
export interface IRaceResultsDetailPresenter {
present(viewModel: RaceResultsDetailViewModel): RaceResultsDetailViewModel;
getViewModel(): RaceResultsDetailViewModel | null;
}