namespace JoshHeaps.Net.Services.Interfaces;
///
/// An AI move-selection engine (e.g. Stockfish or the custom native engine).
/// Selects a move for a position; it does not enforce rules or broadcast updates.
/// Implementations own unmanaged resources, hence .
///
public interface IChessEngine : IAsyncDisposable
{
/// The engine's playing strength / search depth.
int Skill { get; }
///
/// Returns the engine's chosen move in UCI long-algebraic form (e.g. "e2e4", "e7e8q").
///
/// The current position as a FEN string.
///
/// Prior positions since the last irreversible move, oldest first, excluding the
/// current one — lets the engine detect threefold/50-move draws the FEN can't carry.
/// May be empty.
///
/// The selected move as a UCI string.
Task GetBestMoveAsync(string fen, IReadOnlyList historyFens);
}