/// <reference types="react" />
import noop from '../utils/noop';
import CommonMenu from './CommonMenu';
import MenuItem from './MenuItem';
import SubMenu from './SubMenu';
export interface IMenuBaseProps {
    mode?: 'inline' | 'pop';
    onClick?: (e: React.MouseEvent<HTMLDivElement | HTMLLIElement>, key: string) => void;
    onSubMenuClick?: (id?: string | number) => void;
    style?: React.CSSProperties;
    className?: string;
}
export interface IMenuInlineProps extends IMenuBaseProps {
    mode: 'inline';
    defaultExpandKeys?: string[];
    defaultExpandedKeys?: string[];
    defaultSelectedKey?: string;
    expandedKeys?: string[];
    onExpandChange?: (expanded?: string[]) => void;
    selectedKey?: string;
    onSelectChange?: (selected: string) => void;
    inlineIndent?: number;
}
export interface IMenuPopProps extends IMenuBaseProps {
    mode: 'pop';
}
export declare type IMenuProps = IMenuPopProps | IMenuInlineProps;
interface IMenuState {
    selectedKey?: string;
    expandedKeys?: string[];
    prevSelectedKeyProp?: string;
    prevExpandedKeysProp?: string[];
}
export declare class Menu extends CommonMenu<IMenuProps, IMenuState> {
    static MenuItem: typeof MenuItem;
    static SubMenu: typeof SubMenu;
    static defaultProps: {
        onClick: typeof noop;
        mode: string;
        inlineIndent: number;
        defaultExpandKeys: any[];
        onSubMenuClick: typeof noop;
    };
    constructor(props: IMenuProps);
    static getDerivedStateFromProps(props: IMenuProps, state: IMenuState): Partial<IMenuState>;
    toggleExpand: (key: string) => void;
    handleSelect: (key: string) => void;
    handleClick: (e: React.MouseEvent<HTMLDivElement | HTMLLIElement>, key: string) => void;
    renderMenuItem: (component: any, index: number) => import("react").DetailedReactHTMLElement<any, HTMLElement>;
    render(): JSX.Element;
}
export default Menu;
