import React from 'react';
import type { MenuDivider, MenuItem } from '../types';
interface ContextMenuProps {
    className?: string;
    container?: HTMLElement | null | (() => HTMLElement);
}
interface ContextMenuState {
    isOpened: boolean;
    menus: Array<MenuItem | MenuDivider>;
    x: number;
    y: number;
    align?: 'left' | 'right';
    onClose?: (ctx: ContextMenu) => void;
}
export declare class ContextMenu extends React.Component<ContextMenuProps, ContextMenuState> {
    static instance: any;
    static getInstance(): Promise<any>;
    state: ContextMenuState;
    menuRef: React.RefObject<HTMLDivElement>;
    originInstance: this | null;
    prevInfo: {
        x: number;
        y: number;
    } | null;
    unmount: boolean;
    constructor(props: ContextMenuProps);
    componentDidMount(): void;
    componentWillUnmount(): void;
    openContextMenus(info: {
        x: number;
        y: number;
    }, menus: Array<MenuItem>, onClose?: (ctx: ContextMenu) => void): void;
    close(): void;
    handleOutClick(e: Event): void;
    handleClick(item: MenuItem): void;
    handleKeyDown(e: KeyboardEvent): void;
    handleMouseEnter(item: MenuItem): void;
    handleMouseLeave(item: MenuItem): void;
    handleEnter(menu: HTMLElement): void;
    handleSelfContextMenu(e: React.MouseEvent): void;
    renderMenus(menus: Array<MenuItem | MenuDivider>): JSX.Element[];
    render(): JSX.Element;
}
export default ContextMenu;
export declare function openContextMenus(info: Event | {
    x: number;
    y: number;
}, menus: Array<MenuItem | MenuDivider>, onClose?: (ctx: ContextMenu) => void): Promise<any>;
export declare function closeContextMenus(): Promise<any>;
