import { Direction, MovementRuleMeta } from "./movement-rule";
import { Action } from "../../affect/affect.types";
import { StraightMovementRule, StraightMovementRuleConfig } from "./straight-movement.rule";
import { Turn } from "../../turn";
export type ActivatePositions = {
    x?: Set<number>;
    y?: Set<number>;
};
export type ActivatePositionsMeta = {
    x?: number[];
    y?: number[];
};
export type PositionSpecificMovementRuleConfig = StraightMovementRuleConfig & {
    activatePositions: ActivatePositions;
};
export type PositionSpecificMovementRuleMeta = {
    activatePositions: ActivatePositionsMeta;
} & MovementRuleMeta;
export declare class PositionSpecificMovementRule extends StraightMovementRule {
    protected activatePositions: ActivatePositions;
    constructor({ id, name, moveToEmpty, moveToKill, collision, distance, directions, speed, activatePositions, }: PositionSpecificMovementRuleConfig);
    protected possibleDirrections: Direction[];
    protected calculateNewCoord: (x: number, y: number, diff: number, dirrection: Direction, _: Turn[]) => Action;
    getMeta(): PositionSpecificMovementRuleMeta;
}
