import { SxProps } from "@mui/system/styleFunctionSx/styleFunctionSx";
import { MenuItemProps } from "@mui/material/MenuItem";
import React, { RefObject, ElementType, HTMLAttributes, ReactNode, RefAttributes, ForwardRefExoticComponent } from "react";
import { MenuProps } from "@mui/material/Menu";
import { ButtonProps } from "@mui/material/Button";
export interface MenuItemData {
    uid?: string;
    label?: string;
    leftIcon?: React.ReactNode;
    rightIcon?: React.ReactNode;
    callback?: (event: React.MouseEvent<HTMLElement>, item: MenuItemData) => void;
    items?: MenuItemData[];
    disabled?: boolean;
    sx?: SxProps;
    delay?: number;
}
type IconMenuItemProps = {
    MenuItemProps?: MenuItemProps;
    className?: string;
    disabled?: boolean;
    label?: string;
    renderLabel?: () => React.ReactNode;
    leftIcon?: React.ReactNode;
    onClick?: (event: React.MouseEvent<HTMLElement>) => void;
    ref?: RefObject<HTMLLIElement>;
    rightIcon?: React.ReactNode;
    sx?: SxProps;
};
export const IconMenuItem: React.ForwardRefExoticComponent<Omit<IconMenuItemProps, "ref"> & React.RefAttributes<HTMLLIElement>>;
export type NestedMenuItemProps = Omit<MenuItemProps, 'button'> & {
    parentMenuOpen: boolean;
    component?: ElementType;
    label?: string;
    renderLabel?: () => ReactNode;
    rightIcon?: ReactNode;
    leftIcon?: ReactNode;
    children?: ReactNode;
    className?: string;
    tabIndex?: number;
    disabled?: boolean;
    ContainerProps?: HTMLAttributes<HTMLElement> & RefAttributes<HTMLElement | null>;
    MenuProps?: Partial<Omit<MenuProps, 'children'>>;
    button?: true | undefined;
    delay?: number;
};
export const NestedMenuItem: ForwardRefExoticComponent<Omit<NestedMenuItemProps, "ref"> & RefAttributes<HTMLLIElement | null>>;
export interface nestedMenuItemsFromObjectProps {
    menuItemsData: MenuItemData[];
    isOpen: boolean;
    handleClose: () => void;
}
export function nestedMenuItemsFromObject({ menuItemsData: items, isOpen, handleClose, }: nestedMenuItemsFromObjectProps): JSX.Element[];
export type ContextMenuProps = {
    children?: ReactNode;
    menuItems?: ReactNode[];
    menuItemsData?: MenuItemData[];
};
export const ContextMenu: ForwardRefExoticComponent<ContextMenuProps & RefAttributes<HTMLDivElement>>;
interface NestedDropdownProps {
    children?: React.ReactNode;
    menuItemsData?: MenuItemData;
    onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
    ButtonProps?: Partial<ButtonProps>;
    MenuProps?: Partial<MenuProps>;
}
export const NestedDropdown: ForwardRefExoticComponent<NestedDropdownProps & RefAttributes<HTMLDivElement | null>>;