import React, { type ElementType, type Ref } from 'react'; import { type AnchorProps } from '../../internal/floating.js'; import type { Props } from '../../types.js'; import { type HasDisplayName, type RefProp } from '../../utils/render.js'; declare let DEFAULT_MENU_TAG: React.ExoticComponent<{ children?: React.ReactNode; }>; type MenuRenderPropArg = { open: boolean; close: () => void; }; type MenuPropsWeControl = never; export type MenuProps = Props; declare function MenuFn(props: MenuProps, ref: Ref): React.JSX.Element; declare let DEFAULT_BUTTON_TAG: "button"; type ButtonRenderPropArg = { open: boolean; active: boolean; hover: boolean; focus: boolean; disabled: boolean; autofocus: boolean; }; type ButtonPropsWeControl = 'aria-controls' | 'aria-expanded' | 'aria-haspopup'; export type MenuButtonProps = Props; declare function ButtonFn(props: MenuButtonProps, ref: Ref): React.ReactElement> | null; declare let DEFAULT_ITEMS_TAG: "div"; type ItemsRenderPropArg = { open: boolean; }; type ItemsPropsWeControl = 'aria-activedescendant' | 'aria-labelledby' | 'role' | 'tabIndex'; export type MenuItemsProps = Props; declare function ItemsFn(props: MenuItemsProps, ref: Ref): React.JSX.Element; declare let DEFAULT_ITEM_TAG: React.ExoticComponent<{ children?: React.ReactNode; }>; type ItemRenderPropArg = { /** @deprecated use `focus` instead */ active: boolean; focus: boolean; disabled: boolean; close: () => void; }; type ItemPropsWeControl = 'aria-describedby' | 'aria-disabled' | 'aria-labelledby' | 'role' | 'tabIndex'; export type MenuItemProps = Props; declare function ItemFn(props: MenuItemProps, ref: Ref): React.JSX.Element; declare let DEFAULT_SECTION_TAG: "div"; type SectionRenderPropArg = {}; type SectionPropsWeControl = 'role' | 'aria-labelledby'; export type MenuSectionProps = Props; declare function SectionFn(props: MenuSectionProps, ref: Ref): React.JSX.Element; declare let DEFAULT_HEADING_TAG: "header"; type HeadingRenderPropArg = {}; type HeadingPropsWeControl = 'role'; export type MenuHeadingProps = Props; declare function HeadingFn(props: MenuHeadingProps, ref: Ref): React.ReactElement> | null; declare let DEFAULT_SEPARATOR_TAG: "div"; type SeparatorRenderPropArg = {}; type SeparatorPropsWeControl = 'role'; export type MenuSeparatorProps = Props; declare function SeparatorFn(props: MenuSeparatorProps, ref: Ref): React.ReactElement> | null; export interface _internal_ComponentMenu extends HasDisplayName { (props: MenuProps & RefProp): React.JSX.Element; } export interface _internal_ComponentMenuButton extends HasDisplayName { (props: MenuButtonProps & RefProp): React.JSX.Element; } export interface _internal_ComponentMenuItems extends HasDisplayName { (props: MenuItemsProps & RefProp): React.JSX.Element; } export interface _internal_ComponentMenuItem extends HasDisplayName { (props: MenuItemProps & RefProp): React.JSX.Element; } export interface _internal_ComponentMenuSection extends HasDisplayName { (props: MenuSectionProps & RefProp): React.JSX.Element; } export interface _internal_ComponentMenuHeading extends HasDisplayName { (props: MenuHeadingProps & RefProp): React.JSX.Element; } export interface _internal_ComponentMenuSeparator extends HasDisplayName { (props: MenuSeparatorProps & RefProp): React.JSX.Element; } export declare let MenuButton: _internal_ComponentMenuButton; export declare let MenuItems: _internal_ComponentMenuItems; export declare let MenuItem: _internal_ComponentMenuItem; export declare let MenuSection: _internal_ComponentMenuSection; export declare let MenuHeading: _internal_ComponentMenuHeading; export declare let MenuSeparator: _internal_ComponentMenuSeparator; export declare let Menu: _internal_ComponentMenu & { /** @deprecated use `` instead of `` */ Button: _internal_ComponentMenuButton; /** @deprecated use `` instead of `` */ Items: _internal_ComponentMenuItems; /** @deprecated use `` instead of `` */ Item: _internal_ComponentMenuItem; /** @deprecated use `` instead of `` */ Section: _internal_ComponentMenuSection; /** @deprecated use `` instead of `` */ Heading: _internal_ComponentMenuHeading; /** @deprecated use `` instead of `` */ Separator: _internal_ComponentMenuSeparator; }; export {};