using System.Text.Json.Serialization;

namespace NeonSprawl.Server.Game.Mastery;

/// <summary>POST body for <c>POST /game/players/{{id}}/__dev/mastery-fixture</c> (NEO-48 Bruno/manual QA).</summary>
public sealed class MasteryFixtureRequest
{
    public const int CurrentSchemaVersion = 1;

    [JsonPropertyName("schemaVersion")]
    public int SchemaVersion { get; init; }

    /// <summary>When true, clears all branch picks and unlocked perks for the player.</summary>
    [JsonPropertyName("resetPerkState")]
    public bool ResetPerkState { get; init; }

    /// <summary>Absolute XP totals to set per <c>skillId</c> (omitted skills unchanged).</summary>
    [JsonPropertyName("skillXp")]
    public Dictionary<string, int>? SkillXp { get; init; }
}

public sealed class MasteryFixtureResponse
{
    public const int CurrentSchemaVersion = 1;

    [JsonPropertyName("schemaVersion")]
    public int SchemaVersion { get; init; } = CurrentSchemaVersion;

    [JsonPropertyName("applied")]
    public bool Applied { get; init; }
}
