/** * DriverRankingsViewData - Pure ViewData for DriverRankingsTemplate * Contains only raw serializable data, no methods or computed properties */ export interface DriverRankingItem { id: string; name: string; rating: number; skillLevel: string; nationality: string; racesCompleted: number; wins: number; podiums: number; rank: number; avatarUrl: string; winRate: string; medalBg: string; medalColor: string; } export interface PodiumDriver { id: string; name: string; rating: number; wins: number; podiums: number; avatarUrl: string; position: 1 | 2 | 3; } export interface DriverRankingsViewData { drivers: DriverRankingItem[]; podium: PodiumDriver[]; searchQuery: string; selectedSkill: 'all' | 'pro' | 'advanced' | 'intermediate' | 'beginner'; sortBy: 'rank' | 'rating' | 'wins' | 'podiums' | 'winRate'; showFilters: boolean; onSearchChange: (query: string) => void; onSkillChange: (skill: 'all' | 'pro' | 'advanced' | 'intermediate' | 'beginner') => void; onSortChange: (sort: 'rank' | 'rating' | 'wins' | 'podiums' | 'winRate') => void; onToggleFilters: () => void; onDriverClick: (id: string) => void; onBackToLeaderboards: () => void; onClearFilters: () => void; }