import { ClassNamesFn } from '../theme';
import React from 'react';
interface ContextMenuProps {
    className?: string;
    classPrefix: string;
    classnames: ClassNamesFn;
    container?: HTMLElement | null | (() => HTMLElement);
}
export declare type MenuItem = {
    label: string;
    icon?: string;
    disabled?: boolean;
    children?: Array<MenuItem | MenuDivider>;
    data?: any;
    onSelect?: (data: any) => void;
    onHighlight?: (isHiglight: boolean, data: any) => void;
};
export declare type MenuDivider = '|';
interface ContextMenuState {
    isOpened: boolean;
    menus: Array<MenuItem | MenuDivider>;
    x: number;
    y: number;
    align?: 'left' | 'right';
}
export declare class ContextMenu extends React.Component<ContextMenuProps, ContextMenuState> {
    static instance: any;
    static getInstance(): any;
    state: ContextMenuState;
    menuRef: React.RefObject<HTMLDivElement>;
    componentWillMount(): void;
    componentDidMount(): void;
    componentWillUnmount(): void;
    openContextMenus(info: {
        x: number;
        y: number;
    }, menus: Array<MenuItem>): void;
    close(): void;
    handleClick(item: MenuItem): void;
    handleKeyDown(e: KeyboardEvent): void;
    handleMouseEnter(item: MenuItem): void;
    handleMouseLeave(item: MenuItem): void;
    handleEnter(menu: HTMLElement): void;
    handleOverlayContextMenu(e: React.MouseEvent): void;
    renderMenus(menus: Array<MenuItem | MenuDivider>): JSX.Element[];
    render(): JSX.Element;
}
export declare const ThemedContextMenu: React.ComponentClass<Pick<ContextMenuProps, "className" | "container"> & {
    theme?: string | undefined;
    classPrefix?: string | undefined;
    classnames?: ClassNamesFn | undefined;
}, any> & {
    ComposedComponent: typeof ContextMenu;
};
export default ThemedContextMenu;
export declare function openContextMenus(info: Event | {
    x: number;
    y: number;
}, menus: Array<MenuItem | MenuDivider>): any;
