using PkmnLib.Dynamic.Models;
using PkmnLib.Dynamic.Models.Choices;
using PkmnLib.Static;

namespace PkmnLib.Dynamic.Libraries;

/// <summary>
/// Miscellaneous handlings for battles.
/// </summary>
public interface IMiscLibrary
{
    /// <summary>
    /// Returns the choice that's used when a Pokemon is unable to make the move choice it wants to, or when it has no
    /// moves left, yet wants to make a move.
    /// </summary>
    ITurnChoice ReplacementChoice(IPokemon user, byte targetSide, byte targetPosition);

    /// <summary>
    /// Gets the current time of day for the battle.
    /// </summary>
    TimeOfDay GetTimeOfDay();

    bool CanFlee(IBattle battle, IFleeChoice fleeChoice);
}