import { BaseGridPlugin } from '../../core/plugin/base-plugin';
import { ContextMenuConfig, ContextMenuParams } from './types';
/**
 * Context Menu Plugin for tbw-grid
 *
 * @example
 * ```ts
 * new ContextMenuPlugin({
 *   enabled: true,
 *   items: [
 *     { id: 'edit', name: 'Edit', action: (params) => console.log('Edit', params) },
 *     { separator: true, id: 'sep', name: '' },
 *     { id: 'delete', name: 'Delete', action: (params) => console.log('Delete', params) },
 *   ],
 * })
 * ```
 */
export declare class ContextMenuPlugin extends BaseGridPlugin<ContextMenuConfig> {
    readonly name = "contextMenu";
    protected get defaultConfig(): Partial<ContextMenuConfig>;
    private isOpen;
    private position;
    private params;
    private menuElement;
    attach(grid: import('../../core/plugin/base-plugin').GridElement): void;
    detach(): void;
    private installGlobalHandlers;
    /**
     * Clean up global handlers when the last instance detaches.
     * Uses reference counting to ensure handlers persist while any grid uses the plugin.
     */
    private uninstallGlobalHandlers;
    afterRender(): void;
    /**
     * Programmatically show the context menu at the specified position.
     * @param x - X coordinate
     * @param y - Y coordinate
     * @param params - Partial context menu parameters
     */
    showMenu(x: number, y: number, params: Partial<ContextMenuParams>): void;
    /**
     * Hide the context menu.
     */
    hideMenu(): void;
    /**
     * Check if the context menu is currently open.
     * @returns Whether the menu is open
     */
    isMenuOpen(): boolean;
}
//# sourceMappingURL=ContextMenuPlugin.d.ts.map