import * as React from 'react';
import React__default, { ComponentProps, PropsWithChildren, ReactNode } from 'react';
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';

declare const DropdownMenuGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
declare const DropdownMenuContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
declare const DropdownMenuItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
    inset?: boolean;
} & React.RefAttributes<HTMLDivElement>>;
declare const DropdownMenuLabel: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
    inset?: boolean;
} & React.RefAttributes<HTMLDivElement>>;

interface GroupMenuItem extends ComponentProps<typeof DropdownMenuGroup> {
    groupName?: ReactNode;
    key?: string;
    groupNameProps?: ComponentProps<typeof DropdownMenuLabel>;
    items: NormalMenuItem[];
}
interface NormalMenuItem extends Omit<ComponentProps<typeof DropdownMenuItem>, 'children' | 'prefix'> {
    prefix?: ReactNode;
    name: ReactNode;
    key?: string;
    shortcut?: string;
    subItems?: MenuItem[];
}
type MenuItem = NormalMenuItem | GroupMenuItem;
interface DropdownMenuProps {
    menu: MenuItem[];
    contentProps?: ComponentProps<typeof DropdownMenuContent>;
}
declare const DropdownMenu: React__default.FC<PropsWithChildren<DropdownMenuProps>>;

export { DropdownMenu, type DropdownMenuProps };
