import type { ListTable } from '@visactor/vtable';
import type { pluginsDefinition } from '@visactor/vtable';
import type { MenuItemOrSeparator, MenuClickEventArgs } from './contextmenu/types';
import { MenuKey } from './contextmenu/types';
export interface ContextMenuOptions {
    id?: string;
    cornerSeriesNumberMenuItems?: MenuItemOrSeparator[];
    columnSeriesNumberMenuItems?: MenuItemOrSeparator[];
    rowSeriesNumberMenuItems?: MenuItemOrSeparator[];
    headerCellMenuItems?: MenuItemOrSeparator[];
    bodyCellMenuItems?: MenuItemOrSeparator[];
    menuClickCallback?: MenuClickCallback | ({
        [key in MenuKey]?: MenuClickCallback;
    } & {
        [key: string]: MenuClickCallback | undefined;
    });
    beforeShowAdjustMenuItems?: (menuItems: MenuItemOrSeparator[], table: ListTable, col: number, row: number) => MenuItemOrSeparator[];
}
export type MenuClickCallback = (args: MenuClickEventArgs, table: ListTable) => void;
export declare class ContextMenuPlugin implements pluginsDefinition.IVTablePlugin {
    id: string;
    name: string;
    runTime: ("contextmenu_cell" | "plugin_event")[];
    pluginOptions: ContextMenuOptions;
    table: ListTable;
    private menuManager;
    private menuHandler;
    constructor(pluginOptions?: ContextMenuOptions);
    private initDefaultMenuItems;
    private handleContextMenuCell;
    private handlePluginEvent;
    run(...args: any[]): void;
    private handleMenuClickCallback;
    private showContextMenu;
    private handleMenuClick;
    release(): void;
}
