import { PiCustomBehavior, PiBehavior, PiTriggerType, PiBinaryExpressionCreator, PiExpressionCreator } from "./PiAction";
import { PiElement, PiExpression, PiBinaryExpression } from "../language/PiModel";
import { Box } from "./boxes/Box";
import { PiEditor } from "../editor/PiEditor";
import { PiCaret } from "../util/BehaviorUtils";
export declare abstract class InternalBehavior implements PiBehavior {
    trigger: PiTriggerType;
    activeInBoxRoles: string[];
    isRegexp: boolean;
    isApplicable?: (box: Box) => boolean;
    boxRoleToSelect?: string;
    caretPosition?: PiCaret;
    abstract execute(box: Box, aliasId: string, editor: PiEditor): any;
}
export declare class InternalBinaryBehavior extends InternalBehavior implements PiBinaryExpressionCreator {
    expressionBuilder: (box: Box, aliasId: string, editor: PiEditor) => PiBinaryExpression;
    constructor(initializer?: Partial<InternalBinaryBehavior>);
    execute(box: Box, aliasId: string, editor: PiEditor): Promise<void>;
}
export declare class InternalExpressionBehavior extends InternalBehavior implements PiExpressionCreator {
    expressionBuilder: (box: Box, aliasId: string, editor: PiEditor) => PiExpression;
    constructor(initializer?: Partial<InternalExpressionBehavior>);
    execute(box: Box, aliasId: string, editor: PiEditor): Promise<void>;
}
export declare class InternalCustomBehavior extends InternalBehavior implements PiCustomBehavior {
    action: (box: Box, aliasId: string, editor: PiEditor) => PiElement | null;
    constructor(initializer?: Partial<InternalCustomBehavior>);
    execute(box: Box, aliasId: string, editor: PiEditor): Promise<void>;
}
//# sourceMappingURL=InternalBehavior.d.ts.map