import { Action } from "./affect/affect.types";
import { PostMovementRule } from "./rules/piece-post-movement/post-movement.rule";
import { RuleMeta } from "./rules/piece-movement/rules";
import { GetPiece } from "./get-piece";
import { Turn } from "./turn";
import { PieceType } from "./piece/piece.constants";
import { Entity } from "./entity";
import { PostMovementRuleMeta } from "./rules/piece-post-movement/post-movement.types";
export declare class RulesEngine {
    private movementRules;
    private postMovementRules;
    addMovementRule(ruleMeta: RuleMeta): void;
    addMovementRules(rulesMeta: RuleMeta[]): void;
    addPostMovementRule(ruleMeta: PostMovementRuleMeta): void;
    addPostMovementRules(rulesMeta: PostMovementRuleMeta[]): void;
    getAvailableMoves(ruleId: Entity["id"], x: number, y: number, getPiece: GetPiece, turns: Turn[], size: number): import("./affect/affect.types").Affects[];
    addPostMovementCorrections(rule: PostMovementRule["id"], sourceMoves: Action[], pieceType: PieceType): import("./affect/affect.types").Affects[];
}
