import { Chess } from 'chess.js';
import { Move } from '../components/types';
export declare function useChessEngine(initialFen?: string): {
    engine: import('vue').Ref<{
        clear: ({ preserveHeaders }?: {
            preserveHeaders?: boolean | undefined;
        }) => void;
        load: (fen: string, { skipValidation, preserveHeaders }?: {
            skipValidation?: boolean | undefined;
            preserveHeaders?: boolean | undefined;
        }) => void;
        fen: () => string;
        reset: () => void;
        get: (square: import('chess.js').Square) => import('chess.js').Piece | undefined;
        put: ({ type, color }: {
            type: import('chess.js').PieceSymbol;
            color: import('chess.js').Color;
        }, square: import('chess.js').Square) => boolean;
        remove: (square: import('chess.js').Square) => import('chess.js').Piece | undefined;
        attackers: (square: import('chess.js').Square, attackedBy?: import('chess.js').Color) => import('chess.js').Square[];
        isAttacked: (square: import('chess.js').Square, attackedBy: import('chess.js').Color) => boolean;
        isCheck: () => boolean;
        inCheck: () => boolean;
        isCheckmate: () => boolean;
        isStalemate: () => boolean;
        isInsufficientMaterial: () => boolean;
        isThreefoldRepetition: () => boolean;
        isDrawByFiftyMoves: () => boolean;
        isDraw: () => boolean;
        isGameOver: () => boolean;
        moves: {
            (): string[];
            ({ square }: {
                square: import('chess.js').Square;
            }): string[];
            ({ piece }: {
                piece: import('chess.js').PieceSymbol;
            }): string[];
            ({ square, piece }: {
                square: import('chess.js').Square;
                piece: import('chess.js').PieceSymbol;
            }): string[];
            ({ verbose, square }: {
                verbose: true;
                square?: import('chess.js').Square;
            }): import('chess.js').Move[];
            ({ verbose, square }: {
                verbose: false;
                square?: import('chess.js').Square;
            }): string[];
            ({ verbose, square, }: {
                verbose?: boolean;
                square?: import('chess.js').Square;
            }): string[] | import('chess.js').Move[];
            ({ verbose, piece }: {
                verbose: true;
                piece?: import('chess.js').PieceSymbol;
            }): import('chess.js').Move[];
            ({ verbose, piece }: {
                verbose: false;
                piece?: import('chess.js').PieceSymbol;
            }): string[];
            ({ verbose, piece, }: {
                verbose?: boolean;
                piece?: import('chess.js').PieceSymbol;
            }): string[] | import('chess.js').Move[];
            ({ verbose, square, piece, }: {
                verbose: true;
                square?: import('chess.js').Square;
                piece?: import('chess.js').PieceSymbol;
            }): import('chess.js').Move[];
            ({ verbose, square, piece, }: {
                verbose: false;
                square?: import('chess.js').Square;
                piece?: import('chess.js').PieceSymbol;
            }): string[];
            ({ verbose, square, piece, }: {
                verbose?: boolean;
                square?: import('chess.js').Square;
                piece?: import('chess.js').PieceSymbol;
            }): string[] | import('chess.js').Move[];
            ({ square, piece }: {
                square?: import('chess.js').Square;
                piece?: import('chess.js').PieceSymbol;
            }): import('chess.js').Move[];
        };
        move: (move: string | {
            from: string;
            to: string;
            promotion?: string;
        }, { strict }?: {
            strict?: boolean;
        }) => import('chess.js').Move;
        undo: () => import('chess.js').Move | null;
        pgn: ({ newline, maxWidth, }?: {
            newline?: string;
            maxWidth?: number;
        }) => string;
        header: (...args: string[]) => Record<string, string>;
        setHeader: (key: string, value: string) => Record<string, string>;
        removeHeader: (key: string) => boolean;
        getHeaders: () => Record<string, string>;
        loadPgn: (pgn: string, { strict, newlineChar, }?: {
            strict?: boolean;
            newlineChar?: string;
        }) => void;
        ascii: () => string;
        perft: (depth: number) => number;
        turn: () => import('chess.js').Color;
        board: () => ({
            square: import('chess.js').Square;
            type: import('chess.js').PieceSymbol;
            color: import('chess.js').Color;
        } | null)[][];
        squareColor: (square: import('chess.js').Square) => "light" | "dark" | null;
        history: {
            (): string[];
            ({ verbose }: {
                verbose: true;
            }): import('chess.js').Move[];
            ({ verbose }: {
                verbose: false;
            }): string[];
            ({ verbose }: {
                verbose: boolean;
            }): string[] | import('chess.js').Move[];
        };
        getComment: () => string;
        setComment: (comment: string) => void;
        deleteComment: () => string;
        removeComment: () => string;
        getComments: () => {
            fen: string;
            comment: string;
        }[];
        deleteComments: () => {
            fen: string;
            comment: string;
        }[];
        removeComments: () => {
            fen: string;
            comment: string;
        }[];
        setCastlingRights: (color: import('chess.js').Color, rights: Partial<Record<typeof import('chess.js').KING | typeof import('chess.js').QUEEN, boolean>>) => boolean;
        getCastlingRights: (color: import('chess.js').Color) => {
            k: boolean;
            q: boolean;
        };
        moveNumber: () => number;
    }, Chess | {
        clear: ({ preserveHeaders }?: {
            preserveHeaders?: boolean | undefined;
        }) => void;
        load: (fen: string, { skipValidation, preserveHeaders }?: {
            skipValidation?: boolean | undefined;
            preserveHeaders?: boolean | undefined;
        }) => void;
        fen: () => string;
        reset: () => void;
        get: (square: import('chess.js').Square) => import('chess.js').Piece | undefined;
        put: ({ type, color }: {
            type: import('chess.js').PieceSymbol;
            color: import('chess.js').Color;
        }, square: import('chess.js').Square) => boolean;
        remove: (square: import('chess.js').Square) => import('chess.js').Piece | undefined;
        attackers: (square: import('chess.js').Square, attackedBy?: import('chess.js').Color) => import('chess.js').Square[];
        isAttacked: (square: import('chess.js').Square, attackedBy: import('chess.js').Color) => boolean;
        isCheck: () => boolean;
        inCheck: () => boolean;
        isCheckmate: () => boolean;
        isStalemate: () => boolean;
        isInsufficientMaterial: () => boolean;
        isThreefoldRepetition: () => boolean;
        isDrawByFiftyMoves: () => boolean;
        isDraw: () => boolean;
        isGameOver: () => boolean;
        moves: {
            (): string[];
            ({ square }: {
                square: import('chess.js').Square;
            }): string[];
            ({ piece }: {
                piece: import('chess.js').PieceSymbol;
            }): string[];
            ({ square, piece }: {
                square: import('chess.js').Square;
                piece: import('chess.js').PieceSymbol;
            }): string[];
            ({ verbose, square }: {
                verbose: true;
                square?: import('chess.js').Square;
            }): import('chess.js').Move[];
            ({ verbose, square }: {
                verbose: false;
                square?: import('chess.js').Square;
            }): string[];
            ({ verbose, square, }: {
                verbose?: boolean;
                square?: import('chess.js').Square;
            }): string[] | import('chess.js').Move[];
            ({ verbose, piece }: {
                verbose: true;
                piece?: import('chess.js').PieceSymbol;
            }): import('chess.js').Move[];
            ({ verbose, piece }: {
                verbose: false;
                piece?: import('chess.js').PieceSymbol;
            }): string[];
            ({ verbose, piece, }: {
                verbose?: boolean;
                piece?: import('chess.js').PieceSymbol;
            }): string[] | import('chess.js').Move[];
            ({ verbose, square, piece, }: {
                verbose: true;
                square?: import('chess.js').Square;
                piece?: import('chess.js').PieceSymbol;
            }): import('chess.js').Move[];
            ({ verbose, square, piece, }: {
                verbose: false;
                square?: import('chess.js').Square;
                piece?: import('chess.js').PieceSymbol;
            }): string[];
            ({ verbose, square, piece, }: {
                verbose?: boolean;
                square?: import('chess.js').Square;
                piece?: import('chess.js').PieceSymbol;
            }): string[] | import('chess.js').Move[];
            ({ square, piece }: {
                square?: import('chess.js').Square;
                piece?: import('chess.js').PieceSymbol;
            }): import('chess.js').Move[];
        };
        move: (move: string | {
            from: string;
            to: string;
            promotion?: string;
        }, { strict }?: {
            strict?: boolean;
        }) => import('chess.js').Move;
        undo: () => import('chess.js').Move | null;
        pgn: ({ newline, maxWidth, }?: {
            newline?: string;
            maxWidth?: number;
        }) => string;
        header: (...args: string[]) => Record<string, string>;
        setHeader: (key: string, value: string) => Record<string, string>;
        removeHeader: (key: string) => boolean;
        getHeaders: () => Record<string, string>;
        loadPgn: (pgn: string, { strict, newlineChar, }?: {
            strict?: boolean;
            newlineChar?: string;
        }) => void;
        ascii: () => string;
        perft: (depth: number) => number;
        turn: () => import('chess.js').Color;
        board: () => ({
            square: import('chess.js').Square;
            type: import('chess.js').PieceSymbol;
            color: import('chess.js').Color;
        } | null)[][];
        squareColor: (square: import('chess.js').Square) => "light" | "dark" | null;
        history: {
            (): string[];
            ({ verbose }: {
                verbose: true;
            }): import('chess.js').Move[];
            ({ verbose }: {
                verbose: false;
            }): string[];
            ({ verbose }: {
                verbose: boolean;
            }): string[] | import('chess.js').Move[];
        };
        getComment: () => string;
        setComment: (comment: string) => void;
        deleteComment: () => string;
        removeComment: () => string;
        getComments: () => {
            fen: string;
            comment: string;
        }[];
        deleteComments: () => {
            fen: string;
            comment: string;
        }[];
        removeComments: () => {
            fen: string;
            comment: string;
        }[];
        setCastlingRights: (color: import('chess.js').Color, rights: Partial<Record<typeof import('chess.js').KING | typeof import('chess.js').QUEEN, boolean>>) => boolean;
        getCastlingRights: (color: import('chess.js').Color) => {
            k: boolean;
            q: boolean;
        };
        moveNumber: () => number;
    }>;
    isGameOver: import('vue').ComputedRef<boolean>;
    legalMoves: import('vue').ComputedRef<Map<any, any>>;
    makeMove: (move: Move) => import('chess.js').Move;
    validateMove: (move: Move) => boolean;
    currentFen: import('vue').ComputedRef<string>;
};
//# sourceMappingURL=useChessEngine.d.ts.map