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); }