import { IMove } from "./move";
import { BoardPosition } from "./boardPosition";
import { Piece } from "./piece";
import { SquareIndex } from "./square";
import { Colour } from "./colour";
interface IPawnMoveGenerator {
    generatePawnMoves(boardPosition: BoardPosition, piece: Piece, index: SquareIndex, posX: number, posY: number, colour: Colour, moveList: Array<IMove>, enPassant: SquareIndex | null): void;
    validateYPositionToMoveTwoSquare(posY: number, colour: Colour): boolean;
    isOneSquareAheadEmpty(boardPosition: BoardPosition, yDir: number, posX: number, posY: number): boolean;
    getYDir(colour: Colour): number;
    tryAddTwoSquareMoveIfLegalAndOneSquareIsEmpty(piece: Piece, boardPosition: BoardPosition, colour: Colour, yDir: number, posX: number, posY: number, index: SquareIndex, moveList: Array<IMove>): void;
    addMove(piece: Piece, from: SquareIndex, target: SquareIndex, targetPiece: Piece, moveList: Array<IMove>): void;
    addCaptureMove(boardPosition: BoardPosition, piece: Piece, index: SquareIndex, posX: number, posY: number, colour: Colour, moveList: Array<IMove>): void;
    addOneMoveIfOneSquareAheadIsEmpty(piece: Piece, index: SquareIndex, targetIndex: SquareIndex, moveList: Array<IMove>): void;
    tryAddEnPassant(piece: Piece, colour: Colour, index: SquareIndex, enPassant: SquareIndex | null, yDir: number, posX: number, posY: number, moveList: Array<IMove>): void;
    trySetEnPassantWhenMovesTwoSquare(colour: Colour, boardPosition: BoardPosition, posX: number, posY: number, targetY: number, yDir: number): SquareIndex | null;
    addMoveWithOptionalSetEnPassant(piece: Piece, from: SquareIndex, target: SquareIndex, targetPiece: Piece, moveList: Array<IMove>, setEnPassant: SquareIndex | null): void;
}
export declare const PawnMoveGenerator: IPawnMoveGenerator;
export {};
