export interface LeagueConfigFormModel { basics?: { name?: string; description?: string; visibility?: string; gameId?: string; }; structure?: { mode?: string; maxDrivers?: number; }; championships?: { enableDriverChampionship?: boolean; enableTeamChampionship?: boolean; enableNationsChampionship?: boolean; enableTrophyChampionship?: boolean; }; scoring?: { patternId?: string; customScoringEnabled?: boolean; }; dropPolicy?: { strategy?: string; n?: number; }; timings?: { qualifyingMinutes?: number; mainRaceMinutes?: number; sessionCount?: number; roundsPlanned?: number; seasonStartDate?: string; raceStartTime?: string; timezoneId?: string; recurrenceStrategy?: string; weekdays?: string[]; intervalWeeks?: number; monthlyOrdinal?: number; monthlyWeekday?: string; }; stewarding?: { decisionMode?: string; requiredVotes?: number; requireDefense?: boolean; defenseTimeLimit?: number; voteTimeLimit?: number; protestDeadlineHours?: number; stewardingClosesHours?: number; notifyAccusedOnProtest?: boolean; notifyOnVoteRequired?: boolean; }; } export interface LeagueStructureFormDTO { name: string; description: string; ownerId: string; } export interface LeagueChampionshipsFormDTO { pointsSystem: string; customPoints?: Record; } export interface LeagueScoringFormDTO { pointsSystem: string; customPoints?: Record; } export interface LeagueDropPolicyFormDTO { dropWeeks?: number; bestResults?: number; } export interface LeagueStructureMode { mode: 'simple' | 'advanced'; } export interface LeagueTimingsFormDTO { sessionDuration?: number; qualifyingFormat?: string; } export interface LeagueStewardingFormDTO { decisionMode: string; requiredVotes?: number; requireDefense?: boolean; defenseTimeLimit?: number; voteTimeLimit?: number; protestDeadlineHours?: number; stewardingClosesHours?: number; notifyAccusedOnProtest?: boolean; notifyOnVoteRequired?: boolean; }