using MessagePack;
using System.Text.Json.Serialization;

namespace SVSim.EmulatedEntrypoint.Models.Dtos.Responses.Practice;

/// <summary>
/// Same shape consumed by DeckGroupListData(jsonData, Format.All). Per-format keys are
/// conditional 窶・omit (don't send empty arrays) for formats the server doesn't enable.
/// </summary>
[MessagePackObject]
public class PracticeDeckListResponse
{
    /// <summary>Card ids currently disabled for maintenance (client unions with global list).</summary>
    [JsonPropertyName("maintenance_card_list")]
    [Key("maintenance_card_list")] public List<long> MaintenanceCardList { get; set; } = new();

    [JsonPropertyName("user_deck_rotation")]
    [Key("user_deck_rotation")] public List<UserDeck>? UserDeckRotation { get; set; }
    [JsonPropertyName("user_deck_unlimited")]
    [Key("user_deck_unlimited")] public List<UserDeck>? UserDeckUnlimited { get; set; }

    // The remaining format keys (pre_rotation, crossover, my_rotation, avatar, default_deck_list,
    // trial_deck_list, crossover_trial_deck_list, build_deck_list, user_leader_skin_setting_list)
    // are all conditional 窶・added when those formats are enabled.
}
