40 lines
1.1 KiB
TypeScript
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;
|
|
} |