import type { League } from '../../domain/entities/League';
import type { Season } from '../../domain/entities/Season';
import type { LeagueScoringConfig } from '../../domain/entities/LeagueScoringConfig';
import type { Game } from '../../domain/entities/Game';
import type { LeagueScoringPresetDTO } from '../ports/LeagueScoringPresetProvider';
import type { Presenter } from '@core/shared/presentation';

export interface LeagueSummaryViewModel {
  id: string;
  name: string;
  description: string;
  ownerId: string;
  createdAt: string;
  maxDrivers: number;
  usedDriverSlots: number;
  maxTeams?: number;
  usedTeamSlots?: number;
  structureSummary: string;
  scoringPatternSummary?: string;
  timingSummary: string;
  scoring?: {
    gameId: string;
    gameName: string;
    primaryChampionshipType: 'driver' | 'team' | 'nations' | 'trophy';
    scoringPresetId: string;
    scoringPresetName: string;
    dropPolicySummary: string;
    scoringPatternSummary: string;
  };
}

export interface AllLeaguesWithCapacityAndScoringViewModel {
  leagues: LeagueSummaryViewModel[];
  totalCount: number;
}

export interface LeagueEnrichedData {
  league: League;
  usedDriverSlots: number;
  season?: Season;
  scoringConfig?: LeagueScoringConfig;
  game?: Game;
  preset?: LeagueScoringPresetDTO;
}

export interface IAllLeaguesWithCapacityAndScoringPresenter
  extends Presenter<LeagueEnrichedData[], AllLeaguesWithCapacityAndScoringViewModel> {}