namespace PkmnLib.Tests.Integration.Models;

public class IntegrationTestModel
{
    public string FileName { get; set; } = null!;
    public string Name { get; set; } = null!;
    public string Description { get; set; } = null!;
    public IntegrationTestBattleSetup BattleSetup { get; set; } = null!;
    public IntegrationTestAction[] Actions { get; set; } = null!;

    /// <inheritdoc />
    public override string ToString() => Name;
}

public class IntegrationTestBattleSetup
{
    public int Seed { get; set; }
    public bool CanFlee { get; set; }
    public byte NumberOfSides { get; set; }
    public byte PositionsPerSide { get; set; }
    public bool HasDamageRandomness { get; set; }
    public string? EnvironmentName { get; set; }
    public IntegrationTestParty[] Parties { get; set; } = null!;
}

public class IntegrationTestParty
{
    public List<List<byte>> Indices { get; set; } = null!;
    public IntegrationTestPokemon[] Pokemon { get; set; } = null!;
}

public class IntegrationTestPokemon
{
    public string Species { get; set; } = null!;
    public LevelInt Level { get; set; }
    public string[] Moves { get; set; } = null!;
}