import type { League } from '../../domain/entities/League';
import type { Presenter } from '@core/shared/presentation';

export interface LeagueWithCapacityViewModel {
  id: string;
  name: string;
  description: string;
  ownerId: string;
  settings: {
    maxDrivers: number;
    sessionDuration?: number;
    visibility?: string;
  };
  createdAt: string;
  socialLinks?: {
    discordUrl?: string;
    youtubeUrl?: string;
    websiteUrl?: string;
  };
  usedSlots: number;
}

export interface AllLeaguesWithCapacityViewModel {
  leagues: LeagueWithCapacityViewModel[];
  totalCount: number;
}

export interface AllLeaguesWithCapacityResultDTO {
  leagues: League[];
  memberCounts: Map<string, number>;
}

export interface IAllLeaguesWithCapacityPresenter
  extends Presenter<AllLeaguesWithCapacityResultDTO, AllLeaguesWithCapacityViewModel> {}