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

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

/// <summary>
/// Minimum-viable stub for /arena_colosseum/get_fee_info — emits is_colosseum_period:false
/// so the client (Wizard/ColosseumEntryInfoTask.cs:99) skips the rest of the parse and the
/// home/arena screen renders without 404ing. TODO: implement the full Colosseum entry flow
/// when the Colosseum format is brought online.
/// </summary>
[MessagePackObject]
public class GetFeeInfoResponseDto
{
    /// <summary>
    /// Per-viewer Colosseum entry status (rest_entry_num, now_round_id, is_last_day, etc.).
    /// Empty object — client (ColosseumEntryInfoTask.cs:146) guards with `if (status.Count != 0)`,
    /// so an empty dict short-circuits cleanly.
    /// </summary>
    [JsonPropertyName("colosseum_status")] [Key("colosseum_status")]
    public ColosseumStatusDto ColosseumStatus { get; set; } = new();

    [JsonPropertyName("colosseum_info")] [Key("colosseum_info")]
    public ColosseumInfoDto ColosseumInfo { get; set; } = new();
}

[MessagePackObject]
public class ColosseumStatusDto { }

[MessagePackObject]
public class ColosseumInfoDto
{
    /// <summary>
    /// false = no Colosseum event running. Client (ColosseumEntryInfoTask.cs:100) gates every
    /// other field on this — emitting false is what lets us ship an otherwise-empty info block.
    /// </summary>
    [JsonPropertyName("is_colosseum_period")] [Key("is_colosseum_period")]
    public bool IsColosseumPeriod { get; set; } = false;
}
