import type { Season } from '../entities/Season';

export interface ISeasonRepository {
  findById(id: string): Promise<Season | null>;
  /**
   * Backward-compatible alias retained for existing callers.
   * Prefer listByLeague for new usage.
   */
  findByLeagueId(leagueId: string): Promise<Season[]>;
  /**
   * Backward-compatible alias retained for existing callers.
   * Prefer add for new usage.
   */
  create(season: Season): Promise<Season>;

  /**
   * Add a new Season aggregate.
   */
  add(season: Season): Promise<void>;

  /**
   * Persist changes to an existing Season aggregate.
   */
  update(season: Season): Promise<void>;

  /**
   * List all Seasons for a given League.
   */
  listByLeague(leagueId: string): Promise<Season[]>;

  /**
   * List Seasons for a League that are currently active.
   */
  listActiveByLeague(leagueId: string): Promise<Season[]>;
}