import Pieces from "./pieces";
import { Colour } from "./colour";
import { SquareIndex } from "./square";
export type Piece = typeof Pieces.BlackKing | typeof Pieces.WhiteKing | typeof Pieces.BlackBishop | typeof Pieces.WhiteBishop | typeof Pieces.WhiteQueen | typeof Pieces.BlackQueen | typeof Pieces.WhitePawn | typeof Pieces.BlackPawn | typeof Pieces.BlackKnight | typeof Pieces.WhiteKnight | typeof Pieces.WhiteRook | typeof Pieces.BlackRook | typeof Pieces.Empty;
interface IPiece {
    getColour(piece: Piece): Colour | null;
    isWhite(piece: Piece): boolean;
    isBlack(piece: Piece): boolean;
    isEmpty(piece: Piece): boolean;
    isColour(piece: Piece, colour: Colour): boolean;
    compareColour(colour1: Colour, colour2: Colour): boolean;
    isEnemy(piece: Piece, colour: Colour): boolean;
    allWhite: Array<Piece>;
    allBlack: Array<Piece>;
    isEnemy(piece: Piece, colour: Colour): boolean;
    isEnemyOrEmpty(piece: Piece, colour: Colour): boolean;
    isEnemyOrNull(piece: Piece, colour: Colour): boolean;
    isRook(piece: Piece): boolean;
    isPawn(piece: Piece): boolean;
    isQueen(piece: Piece): boolean;
    isBishop(piece: Piece): boolean;
    isKnight(piece: Piece): boolean;
    isKing(piece: Piece): boolean;
    isColourEnemyOrNull(tColour: Colour | null, colour: Colour): boolean;
    getKing(colour: Colour): Piece;
    getPawn(colour: Colour): Piece;
    getRook(colour: Colour): Piece;
    getQueen(colour: Colour): Piece;
    getKnight(colour: Colour): Piece;
    getBishop(colour: Colour): Piece;
    getBishopSquareColour(i: SquareIndex): Colour;
    getBishopSquareColourByCoords(x: number, y: number): Colour;
}
export declare const Piece: IPiece;
export {};
