using SVSim.EmulatedEntrypoint.Models.Dtos; using SVSim.EmulatedEntrypoint.Models.Dtos.BattlePass; namespace SVSim.EmulatedEntrypoint.Services; public interface IBattlePassService { /// Global level curve as wire-string dictionary; null if no levels seeded. Task?> GetLevelCurveAsync(CancellationToken ct); /// /// /battle_pass/info payload. Returns null when no active season window covers now /// (controller emits empty body in that case). /// Task GetInfoAsync(long viewerId, CancellationToken ct); /// /// /battle_pass/item_list payload. Returns one product per active season; empty products /// array if the viewer already owns premium for the active season. Null when no active season. /// Task GetItemListAsync(long viewerId, CancellationToken ct); }