import { Chess } from "../chessops/src/chess";
import { Move } from "../chessops/src/types";
import { DepthItem } from "./index";
import { chessgroundDests } from "../chessops/src/compat";
export { chessgroundDests };
export declare type Uci = string;
export declare type San = string;
export declare type Variant = string;
export declare type Fen = string;
export declare type GameNodeId = string;
export declare type Shape = string;
export declare const PROMOTION_PIECES: string[];
export declare const PROMOTION_PIECE_NAMES: string[];
export declare const PROMOTION_PIECES_EXT: string[];
export declare const MOVE_RATINGS: string[];
export declare function storeKey(variant: Variant, fen: Fen): string;
export declare class Pos_ {
    pos: Chess;
    constructor();
    get rules(): Variant;
    get variant(): Variant;
    rawLegalUcis(): string[];
    chessgroundDests(): Map<"b1" | "b2" | "b3" | "b4" | "b5" | "b6" | "b7" | "b8" | "a1" | "a2" | "a3" | "a4" | "a5" | "a6" | "a7" | "a8" | "c1" | "c2" | "c3" | "c4" | "c5" | "c6" | "c7" | "c8" | "d1" | "d2" | "d3" | "d4" | "d5" | "d6" | "d7" | "d8" | "e1" | "e2" | "e3" | "e4" | "e5" | "e6" | "e7" | "e8" | "f1" | "f2" | "f3" | "f4" | "f5" | "f6" | "f7" | "f8" | "g1" | "g2" | "g3" | "g4" | "g5" | "g6" | "g7" | "g8" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "h7" | "h8", ("b1" | "b2" | "b3" | "b4" | "b5" | "b6" | "b7" | "b8" | "a1" | "a2" | "a3" | "a4" | "a5" | "a6" | "a7" | "a8" | "c1" | "c2" | "c3" | "c4" | "c5" | "c6" | "c7" | "c8" | "d1" | "d2" | "d3" | "d4" | "d5" | "d6" | "d7" | "d8" | "e1" | "e2" | "e3" | "e4" | "e5" | "e6" | "e7" | "e8" | "f1" | "f2" | "f3" | "f4" | "f5" | "f6" | "f7" | "f8" | "g1" | "g2" | "g3" | "g4" | "g5" | "g6" | "g7" | "g8" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "h7" | "h8")[]>;
    setVariant(variant: Variant): this;
    setFen(fen: Fen): this;
    reportFen(): string;
    sanToMove(san: San): Move | undefined;
    moveToSan(move: Move): string;
    uciToMove(uci: Uci): Move | undefined;
    moveToUci(move: Move): string;
    play(move: Move): this;
    playSan(san: San): this;
    playUci(uci: Uci): this;
    sanToUci(san: San): Uci | undefined;
    uciToSan(uci: Uci): San | undefined;
    toString(): string;
    legalsForUci(uci: Uci): string[];
    isUciLegal(uci: Uci): boolean;
    isSanLegal(san: San): boolean;
    allLegalUcis(): string[];
    allLegalSans(): (string | undefined)[];
}
export declare function Pos(): Pos_;
export declare type RichLegalSan = {
    san: San | undefined;
    uci: Uci | undefined;
    rating: string;
    class: string;
    isMainline: boolean;
    isVariation: boolean;
    weights: number[];
};
export declare class Game_ {
    variant: Variant;
    pos: Pos_;
    root: GameNode_;
    current: GameNode_;
    nodes: {
        [id: string]: GameNode_;
    };
    constructor();
    chessgroundDests(): Map<"b1" | "b2" | "b3" | "b4" | "b5" | "b6" | "b7" | "b8" | "a1" | "a2" | "a3" | "a4" | "a5" | "a6" | "a7" | "a8" | "c1" | "c2" | "c3" | "c4" | "c5" | "c6" | "c7" | "c8" | "d1" | "d2" | "d3" | "d4" | "d5" | "d6" | "d7" | "d8" | "e1" | "e2" | "e3" | "e4" | "e5" | "e6" | "e7" | "e8" | "f1" | "f2" | "f3" | "f4" | "f5" | "f6" | "f7" | "f8" | "g1" | "g2" | "g3" | "g4" | "g5" | "g6" | "g7" | "g8" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "h7" | "h8", ("b1" | "b2" | "b3" | "b4" | "b5" | "b6" | "b7" | "b8" | "a1" | "a2" | "a3" | "a4" | "a5" | "a6" | "a7" | "a8" | "c1" | "c2" | "c3" | "c4" | "c5" | "c6" | "c7" | "c8" | "d1" | "d2" | "d3" | "d4" | "d5" | "d6" | "d7" | "d8" | "e1" | "e2" | "e3" | "e4" | "e5" | "e6" | "e7" | "e8" | "f1" | "f2" | "f3" | "f4" | "f5" | "f6" | "f7" | "f8" | "g1" | "g2" | "g3" | "g4" | "g5" | "g6" | "g7" | "g8" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "h7" | "h8")[]>;
    storeKey(): string;
    getChildNodes(): GameNode_[];
    richLegalSans(): RichLegalSan[];
    fromProps(props: any): this;
    serialize(): any;
    stringify(): string;
    pretty(): string;
    parse(json: string): Game_;
    reportFen(): Fen;
    prev(): GameNode_;
    next(): GameNode_;
    setCurrent(node: GameNode_): Game_;
    selectId(id: GameNodeId): Game_;
    back(): boolean;
    toBegin(): boolean;
    forward(): boolean;
    toEnd(): boolean;
    del(): boolean;
    mainLine(): GameNode_[];
    setVariant(variant: Variant, fen: Fen | undefined): Game_;
    playSans(sans: San[]): Game_;
    playSansStr(sans: string): Game_;
    playSan(san: San): boolean;
    playUci(uci: Uci): boolean;
    clone(): Game_;
}
export declare function Game(): Game_;
export declare class GameNode_ {
    id: GameNodeId;
    fen: Fen;
    genUci: Uci;
    genSan: San;
    weights: {
        [san: string]: number[];
    };
    comment: string;
    shapes: Shape[];
    analysis: DepthItem | undefined;
    index: number;
    parentGame: Game_;
    constructor(parentGame: Game_);
    chessgroundDests(): Map<"b1" | "b2" | "b3" | "b4" | "b5" | "b6" | "b7" | "b8" | "a1" | "a2" | "a3" | "a4" | "a5" | "a6" | "a7" | "a8" | "c1" | "c2" | "c3" | "c4" | "c5" | "c6" | "c7" | "c8" | "d1" | "d2" | "d3" | "d4" | "d5" | "d6" | "d7" | "d8" | "e1" | "e2" | "e3" | "e4" | "e5" | "e6" | "e7" | "e8" | "f1" | "f2" | "f3" | "f4" | "f5" | "f6" | "f7" | "f8" | "g1" | "g2" | "g3" | "g4" | "g5" | "g6" | "g7" | "g8" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "h7" | "h8", ("b1" | "b2" | "b3" | "b4" | "b5" | "b6" | "b7" | "b8" | "a1" | "a2" | "a3" | "a4" | "a5" | "a6" | "a7" | "a8" | "c1" | "c2" | "c3" | "c4" | "c5" | "c6" | "c7" | "c8" | "d1" | "d2" | "d3" | "d4" | "d5" | "d6" | "d7" | "d8" | "e1" | "e2" | "e3" | "e4" | "e5" | "e6" | "e7" | "e8" | "f1" | "f2" | "f3" | "f4" | "f5" | "f6" | "f7" | "f8" | "g1" | "g2" | "g3" | "g4" | "g5" | "g6" | "g7" | "g8" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "h7" | "h8")[]>;
    storeKey(): string;
    clone(): GameNode_;
    fromProps(props: any): this;
    serialize(): any;
    stringify(): string;
    parse(json: string): GameNode_;
    prevId(): GameNodeId;
    getMaxPriority(): number;
    getMinPriority(): number;
    normalizePriorities(): GameNode_;
    clearPriorities(): GameNode_;
    bringForwardChild(san: San): GameNode_;
    get isTerminal(): boolean;
    getNode(id: GameNodeId): GameNode_;
    getNodeForSan(san: San): GameNode_;
    next(): GameNode_;
    get isRoot(): boolean;
    prev(): GameNode_;
    get displaySan(): San;
    getChildNodes(): GameNode_[];
    getWeightsForSan(san: San): number[];
    getWeight(san: San, index: number): number;
    setWeight(san: San, index: number, weight: number): GameNode_;
    getPriority(san: San): number;
    getPrevPriority(): number;
    setPriority(san: San, weight: number): GameNode_;
    getMyWeight(san: San): number;
    setMyWeight(san: San, weight: number): GameNode_;
    getOppWeight(san: San): number;
    setOppWeight(san: San, weight: number): GameNode_;
}
export declare function GameNode(parentGame: Game_): GameNode_;
