import { IMove } from "./move";
import { BoardPosition } from "./boardPosition";
import { IBoard } from "./board";
import { Colour } from "./colour";
export interface IMoveMaker {
    isCastlingMove(move: IMove): boolean;
    makePromotionMove(boardPosition: BoardPosition, move: IMove): void;
    makeCastle(boardPosition: BoardPosition, move: IMove): void;
    isEnPassant(move: IMove): {
        fromX: number;
        targetX: number;
    } | null;
    makeNormalMove(board: IBoard, boardPosition: BoardPosition, move: IMove): void;
    makeMove(board: IBoard, move: IMove): void;
    makeEnPassant(boardPosition: BoardPosition, move: IMove, fromX: number, targetX: number): void;
    disableCastling(board: IBoard, move: IMove): void;
    clearEnPassant(board: IBoard): void;
    modifyFullMoveNumber(board: IBoard, move: IMove, colour: Colour): void;
    modifyHalfMoveNumber(board: IBoard, move: IMove, colour: Colour, isCastling: boolean, isEnPassant: boolean): void;
    isAttack(board: IBoard, move: IMove, colour: Colour, isCastling: boolean, isEnPassant: boolean): boolean;
    makeNormalMoveOnBoard(boardPosition: BoardPosition, move: IMove): void;
    trySetEnPassant(board: IBoard, move: IMove): void;
    tryDisableCastling(board: IBoard, move: IMove, isCastling: boolean): void;
    updateColourToMove(board: IBoard, move: IMove, colour: Colour): void;
    makeMoveOnBoard(boardPosition: BoardPosition, move: IMove): void;
    undoCastleMove(boardPosition: BoardPosition, move: IMove): void;
    undoEnPassantMove(boardPosition: BoardPosition, move: IMove): void;
    undoNormalMove(boardPosition: BoardPosition, move: IMove): void;
    undoMoveOnBoard(boardPosition: BoardPosition, move: IMove): void;
}
export declare const MoveMaker: IMoveMaker;
