Adds BattlePassSalesPeriodInfoDto, BattlePassProductDto, BattlePassItemListResponse DTOs, GetItemListAsync on BattlePassService (one product if not premium + CanPurchase, empty if already premium or off-season), and the /battle_pass/item_list controller action. 2 new integration tests; all 408 pass.
23 lines
978 B
C#
23 lines
978 B
C#
using SVSim.EmulatedEntrypoint.Models.Dtos;
|
|
using SVSim.EmulatedEntrypoint.Models.Dtos.BattlePass;
|
|
|
|
namespace SVSim.EmulatedEntrypoint.Services;
|
|
|
|
public interface IBattlePassService
|
|
{
|
|
/// <summary>Global level curve as wire-string dictionary; null if no levels seeded.</summary>
|
|
Task<IReadOnlyDictionary<string, BattlePassLevel>?> GetLevelCurveAsync(CancellationToken ct);
|
|
|
|
/// <summary>
|
|
/// /battle_pass/info payload. Returns null when no active season window covers <c>now</c>
|
|
/// (controller emits empty body in that case).
|
|
/// </summary>
|
|
Task<BattlePassInfoResponse?> GetInfoAsync(long viewerId, CancellationToken ct);
|
|
|
|
/// <summary>
|
|
/// /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.
|
|
/// </summary>
|
|
Task<BattlePassItemListResponse?> GetItemListAsync(long viewerId, CancellationToken ct);
|
|
}
|