import { OpenDialog } from "../client/editContext";
import { EditContextType } from "../client/editContext";
export type CommandContext<T> = {
    editContext: EditContextType;
    openDialog: OpenDialog;
    event?: React.SyntheticEvent;
    searchParams?: URLSearchParams;
    pathname?: string;
    data?: T;
};
export type KeyboardBinding = {
    key: string;
    ctrlOrMeta?: boolean;
    shift?: boolean;
    alt?: boolean;
};
export type Command<T extends CommandData> = {
    id: string;
    label: string;
    icon: React.ReactNode;
    execute(context: CommandContext<T>): Promise<any>;
    disabled: (context: CommandContext<T>) => boolean;
    keyBinding?: KeyboardBinding;
    visible?: (context: CommandContext<T>) => boolean;
};
export type CommandData = {};
export type KeyboardCommand<T extends CommandData = CommandData> = Command<T> & {
    keyBinding: KeyboardBinding | KeyboardBinding[];
};
export declare function matchesKeyboardBinding(event: KeyboardEvent, binding: KeyboardBinding | KeyboardBinding[]): boolean;
