import React, { type ElementType, type MouseEventHandler, type MutableRefObject, type Ref } from 'react'; import type { Props } from '../../types.js'; import { type HasDisplayName, type PropsForFeatures, type RefProp } from '../../utils/render.js'; type MouseEvent = Parameters>[0]; declare let DEFAULT_POPOVER_TAG: "div"; interface PopoverRenderPropArg { open: boolean; close(focusableElement?: HTMLElement | MutableRefObject | MouseEvent): void; } export type PopoverProps = Props; declare function PopoverFn(props: PopoverProps, ref: Ref): JSX.Element; declare let DEFAULT_BUTTON_TAG: "button"; interface ButtonRenderPropArg { open: boolean; } type ButtonPropsWeControl = 'aria-controls' | 'aria-expanded'; export type PopoverButtonProps = Props; declare function ButtonFn(props: PopoverButtonProps, ref: Ref): JSX.Element; declare let DEFAULT_OVERLAY_TAG: "div"; interface OverlayRenderPropArg { open: boolean; } type OverlayPropsWeControl = 'aria-hidden'; declare let OverlayRenderFeatures: number; export type PopoverOverlayProps = Props & PropsForFeatures; declare function OverlayFn(props: PopoverOverlayProps, ref: Ref): React.ReactElement> | null; declare let DEFAULT_PANEL_TAG: "div"; interface PanelRenderPropArg { open: boolean; close: (focusableElement?: HTMLElement | MutableRefObject) => void; } declare let PanelRenderFeatures: number; type PanelPropsWeControl = 'tabIndex'; export type PopoverPanelProps = Props & { focus?: boolean; }>; declare function PanelFn(props: PopoverPanelProps, ref: Ref): JSX.Element; declare let DEFAULT_GROUP_TAG: "div"; interface GroupRenderPropArg { } export type PopoverGroupProps = Props; declare function GroupFn(props: PopoverGroupProps, ref: Ref): JSX.Element; export interface _internal_ComponentPopover extends HasDisplayName { (props: PopoverProps & RefProp): JSX.Element; } export interface _internal_ComponentPopoverButton extends HasDisplayName { (props: PopoverButtonProps & RefProp): JSX.Element; } export interface _internal_ComponentPopoverOverlay extends HasDisplayName { (props: PopoverOverlayProps & RefProp): JSX.Element; } export interface _internal_ComponentPopoverPanel extends HasDisplayName { (props: PopoverPanelProps & RefProp): JSX.Element; } export interface _internal_ComponentPopoverGroup extends HasDisplayName { (props: PopoverGroupProps & RefProp): JSX.Element; } export declare let Popover: _internal_ComponentPopover & { Button: _internal_ComponentPopoverButton; Overlay: _internal_ComponentPopoverOverlay; Panel: _internal_ComponentPopoverPanel; Group: _internal_ComponentPopoverGroup; }; export {};