34 lines
950 B
TypeScript
34 lines
950 B
TypeScript
import type { Driver } from '../../domain/entities/Driver';
|
|
import type { SkillLevel } from '../../domain/services/SkillLevelService';
|
|
|
|
export type { SkillLevel };
|
|
|
|
export interface DriverLeaderboardItemViewModel {
|
|
id: string;
|
|
name: string;
|
|
rating: number;
|
|
skillLevel: SkillLevel;
|
|
nationality: string;
|
|
racesCompleted: number;
|
|
wins: number;
|
|
podiums: number;
|
|
isActive: boolean;
|
|
rank: number;
|
|
avatarUrl: string;
|
|
}
|
|
|
|
export interface DriversLeaderboardViewModel {
|
|
drivers: DriverLeaderboardItemViewModel[];
|
|
totalRaces: number;
|
|
totalWins: number;
|
|
activeCount: number;
|
|
}
|
|
|
|
export interface IDriversLeaderboardPresenter {
|
|
present(
|
|
drivers: Driver[],
|
|
rankings: Array<{ driverId: string; rating: number; overallRank: number }>,
|
|
stats: Record<string, { rating: number; wins: number; podiums: number; totalRaces: number; overallRank: number }>,
|
|
avatarUrls: Record<string, string>
|
|
): DriversLeaderboardViewModel;
|
|
} |