import { IBoard } from "./board";
import { IMove } from "./move";
import { Colour } from "./colour";
export declare const Terminations: {
    Mate: number;
    Timeout: number;
    Resignation: number;
    Stalemate: number;
    InsufficientMaterial: number;
    FiftyMoveRule: number;
    Repetition: number;
    Agreement: number;
};
export type Termination = typeof Terminations.Mate | typeof Terminations.Timeout | typeof Terminations.Resignation | typeof Terminations.Stalemate | typeof Terminations.InsufficientMaterial | typeof Terminations.FiftyMoveRule | typeof Terminations.Repetition | typeof Terminations.Agreement;
export declare const TerminationApi: ITerminationApi;
export interface ITerminationApi {
    getTermination(board: IBoard, legalMoves: Array<IMove>, enemyMoves: Array<IMove>): Termination | null;
    isInMateWhenNoLegalMoves(board: IBoard, attacksOurKing: boolean): Colour | null;
    isInStalemateWhenNoLegalMoves(board: IBoard, attacksOurKing: boolean): boolean;
    isFiftyMoveRule(board: IBoard): boolean;
    isInsufficientMaterial(board: IBoard): boolean;
}
