import React from 'react'; declare type ItemEventHandler = (event: 'show' | 'hide' | 'hover') => void; interface SubMenuItemProps { popup?: React.ReactElement | (() => React.ReactElement); popupVisible?: boolean; onItemEvent?: ItemEventHandler; } interface SubMenuItemState { showPopup: boolean; hovered: boolean; } export declare class SubMenuItem extends React.PureComponent { state: { showPopup: boolean; hovered: boolean; }; showPopup: (visible: boolean) => void; onHover: (e: React.MouseEvent) => void; render(): JSX.Element; } interface MenuItemProps { onItemEvent?: ItemEventHandler; } interface MenuItemState { } export declare class MenuItem extends React.PureComponent { onHover: (e: React.MouseEvent) => void; render(): JSX.Element; } interface MenuProps { children?: React.ReactElement[]; } interface MenuState { subMenuKey: string; } export declare class Menu extends React.PureComponent { state: MenuState; _visibleCallbackMap: Map; _getVisibleCallback(key: string): ItemEventHandler; render(): JSX.Element; } interface PopupProps { children: React.ReactElement; popup: React.ReactElement | (() => React.ReactElement); trigger?: ('click' | 'hover' | 'contextMenu')[]; popupVisible?: boolean; onPopupVisibleChange?: (visible: boolean) => void; popupAlign?: any; } interface PopupState { showPopup: boolean; } export declare class Popup extends React.PureComponent { state: { showPopup: boolean; }; showPopup: (visible: boolean) => void; onBodyKeydown: (e: KeyboardEvent) => void; render(): JSX.Element; componentWillUnmount(): void; } export {};