using SVSim.Database.Models;
namespace SVSim.Database.Repositories.BattlePass;
public interface IBattlePassRepository
{
///
/// Active season for the given moment (StartDate <= when < EndDate). Returns null
/// if none. If multiple match (overlap), the most recently started wins.
///
Task GetActiveSeasonAsync(DateTimeOffset when, CancellationToken ct);
///
/// Season by id (no time-window filter). Used by /battle_pass/buy to validate request.season_id.
///
Task GetSeasonAsync(int seasonId, CancellationToken ct);
///
/// All rewards for a season, both tracks. Sorted by (Track, Level) for deterministic wire order.
///
Task> GetSeasonRewardsAsync(int seasonId, CancellationToken ct);
///
/// Global level curve. Cached after first load.
///
Task> GetLevelCurveAsync(CancellationToken ct);
}