import { SyntaxNode } from "@lezer/common";
import { UpdateDispatch } from "./popover-menu/PopoverState";
export declare type MenuEvent = addElementAsSiblingInArrayEvent | addObjectKeyEvent | nullEvent | removeElementFromArrayEvent | removeObjectKeyEvent | simpleSwapEvent | increaseItemIdxEvent | decreaseItemIdxEvent;
declare type baseEvent = {
    nodeId: string;
};
interface nullEvent extends baseEvent {
    type: "nullEvent";
}
interface simpleSwapEvent extends baseEvent {
    type: "simpleSwap";
    payload: string;
}
interface addObjectKeyEvent extends baseEvent {
    type: "addObjectKey";
    payload: {
        key: string;
        value: string;
    };
}
interface addElementAsSiblingInArrayEvent extends baseEvent {
    type: "addElementAsSiblingInArray";
    payload: string;
}
interface removeObjectKeyEvent extends baseEvent {
    type: "removeObjectKey";
}
interface removeElementFromArrayEvent extends baseEvent {
    type: "removeElementFromArray";
}
interface increaseItemIdxEvent extends baseEvent {
    type: "increaseItemIdx";
}
interface decreaseItemIdxEvent extends baseEvent {
    type: "decreaseItemIdx";
}
declare type ModifyCmd<A extends MenuEvent> = (value: A, syntaxNode: SyntaxNode, currentText: string, cursorPos: number) => UpdateDispatch | undefined;
export declare const boundCheck: (node: SyntaxNode) => {
    isFirst: boolean;
    isLast: boolean;
};
export declare const modifyCodeByCommand: ModifyCmd<any>;
export {};
