/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
import "./menu.scss";
import React from "react";
import type { StrictReactNode } from "@openlens/utilities";
import type { IconProps } from "../icon";
export declare const MenuContext: React.Context<MenuContextValue | null>;
export interface MenuContextValue {
    readonly props: Readonly<MenuProps>;
    close: () => void;
}
export interface MenuPosition {
    left?: boolean;
    top?: boolean;
    right?: boolean;
    bottom?: boolean;
}
export interface MenuStyle {
    top: string;
    left: string;
}
export interface MenuProps {
    isOpen?: boolean;
    open(): void;
    close(): void;
    id?: string;
    className?: string;
    htmlFor?: string;
    autoFocus?: boolean;
    usePortal?: boolean | HTMLElement;
    closeOnClickItem?: boolean;
    closeOnClickOutside?: boolean;
    closeOnScroll?: boolean;
    position?: MenuPosition;
    children?: StrictReactNode;
    animated?: boolean;
    toggleEvent?: "click" | "contextmenu";
    "data-testid"?: string;
}
export declare const Menu: React.FunctionComponent<MenuProps>;
export declare function SubMenu(props: Partial<MenuProps>): React.JSX.Element;
export interface MenuItemProps extends React.HTMLProps<any> {
    icon?: string | Partial<IconProps>;
    disabled?: boolean;
    active?: boolean;
    spacer?: boolean;
    href?: string;
}
export declare class MenuItem extends React.Component<MenuItemProps> {
    static defaultProps: object;
    static contextType: React.Context<MenuContextValue | null>;
    context: MenuContextValue;
    elem: HTMLElement | null;
    constructor(props: MenuItemProps);
    get isFocusable(): boolean;
    get isLink(): boolean;
    onClick(evt: React.MouseEvent): void;
    protected bindRef(elem: HTMLElement): void;
    render(): React.JSX.Element;
}
