export interface LeagueConfigFormModel {
  leagueId?: string;
  basics: {
    name: string;
    description?: string;
    visibility: 'public' | 'private' | 'unlisted';
    gameId: string;
  };
  structure: {
    mode: 'solo' | 'fixedTeams';
    maxDrivers?: number;
    maxTeams?: number;
    driversPerTeam?: number;
    /** Prototype flag kept for backward compatibility with older wizard UI */
    multiClassEnabled?: boolean;
  };
  championships: {
    enableDriverChampionship: boolean;
    enableTeamChampionship: boolean;
    enableNationsChampionship: boolean;
    enableTrophyChampionship: boolean;
  };
  scoring: {
    patternId?: string;
    customScoringEnabled?: boolean;
  };
  dropPolicy: {
    strategy: 'none' | 'bestNResults' | 'dropWorstN';
    n?: number;
  };
  timings: {
    practiceMinutes?: number;
    qualifyingMinutes?: number;
    sprintRaceMinutes?: number;
    mainRaceMinutes?: number;
    sessionCount?: number;
    roundsPlanned?: number;
    raceDayOfWeek?: number;
    raceTimeUtc?: string;
    weekdays?: string[];
    recurrenceStrategy?: string;
    timezoneId?: string;
    seasonStartDate?: string;
    /** Prototype fields used by scheduling UI */
    seasonEndDate?: string;
    raceStartTime?: string;
  };
  stewarding: {
    /**
     * Matches API `LeagueConfigFormModelStewardingDTO.decisionMode`.
     * Website should not depend on core enums.
     */
    decisionMode:
      | 'single_steward'
      | 'committee_vote'
      // legacy wizard values
      | 'owner_only'
      | 'admin_vote'
      | 'steward_panel'
      | 'admin_only'
      | 'steward_vote';
    requiredVotes?: number;
    requireDefense: boolean;
    defenseTimeLimit: number;
    voteTimeLimit: number;
    protestDeadlineHours: number;
    stewardingClosesHours: number;
    notifyAccusedOnProtest: boolean;
    notifyOnVoteRequired: boolean;
  };
}
