import { RuleMeta } from "./rules/piece-movement/rules";
import { Board } from "./board";
import { PieceMeta } from "./piece/piece.types";
import { GlobalRule } from "./rules/global/check-mate.global-rule";
import { PostMovementRuleMeta } from "./rules/piece-post-movement";
import { Coordinate } from "./coordinate";
import { Color } from "./color";
import { PieceType } from "./piece/piece.constants";
export type Position = {
    [key in Color]: {
        type: PieceType;
        coordinate: Coordinate;
    }[];
};
export type RulesMeta = {
    movementRules: RuleMeta[];
    postMovementRules?: PostMovementRuleMeta[];
};
export declare class GameInitializer {
    getDefaultGlobalRules(): GlobalRule[];
    spawnDefaultRulesAndDefaultPosition(board: Board): Position;
    private rulesRepository;
    getDefaultRulesForPiece(type: PieceType, color: Color, withPostRulest?: boolean): RulesMeta;
    spawnBeforeTransformPostiion(board: Board): Position;
    buildPieceMeta(type: PieceType, color: Color, rulesMeta: RulesMeta): PieceMeta;
    spawnDefaultRulesCustomPosition(board: Board, position: Position, withPostRulest?: boolean): void;
}
