/// <reference types="react" />
import { OUIAProps } from '../../helpers';
import type { MenuItemProps } from './MenuItem';
export interface MenuProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'ref' | 'onSelect'>, OUIAProps {
    /** Anything that can be rendered inside of the Menu */
    children?: React.ReactNode;
    /** Additional classes added to the Menu */
    className?: string;
    /** ID of the menu */
    id?: string;
    /** Callback for updating when item selection changes. You can also specify onClick on the MenuItem. */
    onSelect?: (event?: React.MouseEvent, itemId?: MenuItemProps['itemId']) => void;
    /** Single itemId for single select menus, or array of itemIds for multi select. You can also specify isSelected on the MenuItem. */
    selected?: any | any[];
    /** Callback called when an MenuItems's action button is clicked. You can also specify it within a MenuItemAction. */
    onActionClick?: (event?: any, itemId?: any, actionId?: any) => void;
    /** Indicates if menu contains a flyout menu */
    containsFlyout?: boolean;
    /** Indicating that the menu should have nav flyout styling */
    isNavFlyout?: boolean;
    /** Indicates if menu contains a drilldown menu */
    containsDrilldown?: boolean;
    /** Indicates if a menu is drilled into */
    isMenuDrilledIn?: boolean;
    /** Indicates the path of drilled in menu itemIds */
    drilldownItemPath?: string[];
    /** Array of menus that are drilled in */
    drilledInMenus?: string[];
    /** Callback for drilling into a submenu */
    onDrillIn?: (event: React.KeyboardEvent | React.MouseEvent, fromItemId: string, toItemId: string, itemId: string) => void;
    /** Callback for drilling out of a submenu */
    onDrillOut?: (event: React.KeyboardEvent | React.MouseEvent, toItemId: string, itemId: string) => void;
    /** Callback for collecting menu heights */
    onGetMenuHeight?: (menuId: string, height: number) => void;
    /** ID of parent menu for drilldown menus */
    parentMenu?: string;
    /** ID of the currently active menu for the drilldown variant */
    activeMenu?: string;
    /** itemId of the currently active item. You can also specify isActive on the MenuItem. */
    activeItemId?: string | number;
    /** @hide Forwarded ref */
    innerRef?: React.Ref<HTMLDivElement>;
    /** Internal flag indicating if the Menu is the root of a menu tree */
    isRootMenu?: boolean;
    /** Indicates if the menu should be without the outer box-shadow */
    isPlain?: boolean;
    /** Indicates if the menu should be srollable */
    isScrollable?: boolean;
    /** Value to overwrite the randomly generated data-ouia-component-id.*/
    ouiaId?: number | string;
    /** Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false. */
    ouiaSafe?: boolean;
    /** Determines the accessible role of the menu. For a non-checkbox menu that can have
     * one or more items selected, pass in "listbox". */
    role?: string;
}
export interface MenuState {
    transitionMoveTarget: HTMLElement;
    flyoutRef: React.Ref<HTMLLIElement> | null;
    currentDrilldownMenuId: string;
}
export declare const Menu: import("react").ForwardRefExoticComponent<MenuProps & import("react").RefAttributes<HTMLDivElement>>;
//# sourceMappingURL=Menu.d.ts.map