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); }