import { Board } from "./board/board";
import { Color } from "./color";
import { GlobalRule } from "./rules/global/check-mate.global-rule";
import { Turn } from "./turn";
import { BoardMeta } from "./board/board.types";
import { Coordinate } from "./coordinate";
import { Action } from "./affect/affect.types";
export declare class Player {
    pkey: string;
    nickName: string;
    constructor(pkey: string, nickName: string);
}
export type NewPlayerGameData = {
    players: {
        [key in Color]: Player;
    };
    yourColor: Color;
    timeStart: string;
    timeLeft: {
        [key in Color]: number;
    };
};
export declare class Game {
    white: Player;
    black: Player;
    board: Board;
    globalRules: GlobalRule[];
    treeLength: number;
    private timeStart;
    private timeLeft;
    private movesTree;
    private timers;
    private _nextTurnColor;
    private turns;
    result: Color | "draw" | null;
    timeEnd: string | null;
    constructor(white: Player, black: Player, board: Board, globalRules: GlobalRule[], treeLength: number, timeStart: string, timeLeft: {
        [key in Color]: number;
    });
    get nextTurnColor(): Color;
    private updateGameNextTurn;
    private onTimeEnd;
    private externalOnTimeEnd;
    startTimer(externalOnTimeStart: () => void, externalOnTimeEnd: () => void): void;
    getActionsForCoordinate(coordinate: Coordinate): Action[];
    processTurn(turn: Turn): Color | "draw" | null;
    getBoardMeta(): BoardMeta;
    getNewGameInfoForColor(color: Color): NewPlayerGameData;
}
