using System.Text.Json.Serialization;
using MessagePack;
namespace SVSim.EmulatedEntrypoint.Models.Dtos.Responses.Sleeve;
///
/// /sleeve/info response. Wire shape: {sleeve_list: {: SleeveSeriesDto}}.
/// Dict-keyed (not array) to match the prod capture exactly — LitJson's numeric indexer in
/// SleevePurchaseInfoTask.Parse() iterates dict values by inserted order, so either
/// shape would work, but mirroring the wire avoids surprise.
///
[MessagePackObject]
public class SleeveInfoResponse
{
[JsonPropertyName("sleeve_list")]
[Key("sleeve_list")]
public Dictionary SleeveList { get; set; } = new();
}
[MessagePackObject]
public class SleeveSeriesDto
{
[JsonPropertyName("series_id")]
[Key("series_id")]
public int SeriesId { get; set; }
[JsonPropertyName("is_new")]
[Key("is_new")]
public bool IsNew { get; set; }
/// Dict keyed by product_id string — same iteration convention as sleeve_list.
[JsonPropertyName("product_info")]
[Key("product_info")]
public Dictionary ProductInfo { get; set; } = new();
}
[MessagePackObject]
public class SleeveProductDto
{
[JsonPropertyName("product_id")]
[Key("product_id")]
public int ProductId { get; set; }
/// SystemText key (e.g. "sleeve_138") — client resolves via GetSleeveProductText.
[JsonPropertyName("name")]
[Key("name")]
public string Name { get; set; } = string.Empty;
[JsonPropertyName("rewards")]
[Key("rewards")]
public List Rewards { get; set; } = new();
[JsonPropertyName("sales_period_info")]
[Key("sales_period_info")]
public List