/*!
 * -------------------------------------------------------------------------- *
 *                                                                            *
 *    Kokopu - A JavaScript/TypeScript chess library.                         *
 *    <https://www.npmjs.com/package/kokopu>                                  *
 *    Copyright (C) 2018-2025  Yoann Le Montagner <yo35 -at- melix.net>       *
 *                                                                            *
 *    Kokopu is free software: you can redistribute it and/or                 *
 *    modify it under the terms of the GNU Lesser General Public License      *
 *    as published by the Free Software Foundation, either version 3 of       *
 *    the License, or (at your option) any later version.                     *
 *                                                                            *
 *    Kokopu is distributed in the hope that it will be useful,               *
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of          *
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
 *    GNU Lesser General Public License for more details.                     *
 *                                                                            *
 *    You should have received a copy of the GNU Lesser General               *
 *    Public License along with this program. If not, see                     *
 *    <http://www.gnu.org/licenses/>.                                         *
 *                                                                            *
 * -------------------------------------------------------------------------- */
import { MoveDescriptor } from '../move_descriptor';
/**
 * Implementation of {@link MoveDescriptor}.
 */
export declare class MoveDescriptorImpl extends MoveDescriptor {
    /**
     * Instantiate a normal (aka. non-en-passant, non-promotion, non-castling) move.
     */
    static make(from: number, to: number, movingColoredPiece: number, capturedColoredPiece: number): MoveDescriptorImpl;
    /**
     * Instantiate a castling move.
     */
    static makeCastling(from: number, to: number, rookFrom: number, rookTo: number, color: number): MoveDescriptorImpl;
    /**
     * Instantiate a *en-passant* capture.
     */
    static makeEnPassant(from: number, to: number, enPassantSquare: number, color: number): MoveDescriptorImpl;
    /**
     * Instantiate a promotion.
     */
    static makePromotion(from: number, to: number, color: number, capturedColoredPiece: number, promotion: number): MoveDescriptorImpl;
    _flags: number;
    _from: number;
    _to: number;
    _movingColoredPiece: number;
    _finalColoredPiece: number;
    _optionalColoredPiece: number;
    _optionalSquare1: number;
    _optionalSquare2: number;
    private constructor();
    isCastling(): boolean;
    isEnPassant(): boolean;
    isCapture(): boolean;
    isPromotion(): boolean;
    from(): "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "d1" | "d2" | "d3" | "d4" | "d5" | "d6" | "d7" | "d8" | "a1" | "a2" | "a3" | "a4" | "a5" | "a6" | "a7" | "a8" | "b1" | "b2" | "b3" | "b4" | "b5" | "b6" | "b7" | "b8" | "g1" | "g2" | "g3" | "g4" | "g5" | "g6" | "g7" | "g8" | "c1" | "c2" | "c3" | "c4" | "c5" | "c6" | "c7" | "c8" | "e1" | "e2" | "e3" | "e4" | "e5" | "e6" | "e7" | "e8" | "f1" | "f2" | "f3" | "f4" | "f5" | "f6" | "f7" | "f8" | "h7" | "h8";
    to(): "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "d1" | "d2" | "d3" | "d4" | "d5" | "d6" | "d7" | "d8" | "a1" | "a2" | "a3" | "a4" | "a5" | "a6" | "a7" | "a8" | "b1" | "b2" | "b3" | "b4" | "b5" | "b6" | "b7" | "b8" | "g1" | "g2" | "g3" | "g4" | "g5" | "g6" | "g7" | "g8" | "c1" | "c2" | "c3" | "c4" | "c5" | "c6" | "c7" | "c8" | "e1" | "e2" | "e3" | "e4" | "e5" | "e6" | "e7" | "e8" | "f1" | "f2" | "f3" | "f4" | "f5" | "f6" | "f7" | "f8" | "h7" | "h8";
    color(): import("..").Color;
    movingPiece(): import("..").Piece;
    movingColoredPiece(): "br" | "bb" | "bp" | "bq" | "bk" | "bn" | "wr" | "wb" | "wp" | "wq" | "wk" | "wn";
    capturedPiece(): import("..").Piece;
    capturedColoredPiece(): "br" | "bb" | "bp" | "bq" | "bk" | "bn" | "wr" | "wb" | "wp" | "wq" | "wk" | "wn";
    rookFrom(): "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "d1" | "d2" | "d3" | "d4" | "d5" | "d6" | "d7" | "d8" | "a1" | "a2" | "a3" | "a4" | "a5" | "a6" | "a7" | "a8" | "b1" | "b2" | "b3" | "b4" | "b5" | "b6" | "b7" | "b8" | "g1" | "g2" | "g3" | "g4" | "g5" | "g6" | "g7" | "g8" | "c1" | "c2" | "c3" | "c4" | "c5" | "c6" | "c7" | "c8" | "e1" | "e2" | "e3" | "e4" | "e5" | "e6" | "e7" | "e8" | "f1" | "f2" | "f3" | "f4" | "f5" | "f6" | "f7" | "f8" | "h7" | "h8";
    rookTo(): "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "d1" | "d2" | "d3" | "d4" | "d5" | "d6" | "d7" | "d8" | "a1" | "a2" | "a3" | "a4" | "a5" | "a6" | "a7" | "a8" | "b1" | "b2" | "b3" | "b4" | "b5" | "b6" | "b7" | "b8" | "g1" | "g2" | "g3" | "g4" | "g5" | "g6" | "g7" | "g8" | "c1" | "c2" | "c3" | "c4" | "c5" | "c6" | "c7" | "c8" | "e1" | "e2" | "e3" | "e4" | "e5" | "e6" | "e7" | "e8" | "f1" | "f2" | "f3" | "f4" | "f5" | "f6" | "f7" | "f8" | "h7" | "h8";
    enPassantSquare(): "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "d1" | "d2" | "d3" | "d4" | "d5" | "d6" | "d7" | "d8" | "a1" | "a2" | "a3" | "a4" | "a5" | "a6" | "a7" | "a8" | "b1" | "b2" | "b3" | "b4" | "b5" | "b6" | "b7" | "b8" | "g1" | "g2" | "g3" | "g4" | "g5" | "g6" | "g7" | "g8" | "c1" | "c2" | "c3" | "c4" | "c5" | "c6" | "c7" | "c8" | "e1" | "e2" | "e3" | "e4" | "e5" | "e6" | "e7" | "e8" | "f1" | "f2" | "f3" | "f4" | "f5" | "f6" | "f7" | "f8" | "h7" | "h8";
    promotion(): import("..").Piece;
    coloredPromotion(): "br" | "bb" | "bp" | "bq" | "bk" | "bn" | "wr" | "wb" | "wp" | "wq" | "wk" | "wn";
}
