import React, { type ElementType, type Ref } from 'react'; import { type ByComparator } from '../../hooks/use-by-comparator.js'; import { type AnchorPropsWithSelection } from '../../internal/floating.js'; import type { Props } from '../../types.js'; import { type HasDisplayName, type PropsForFeatures, type RefProp } from '../../utils/render.js'; import { type _internal_ComponentLabel } from '../label/label.js'; declare let DEFAULT_LISTBOX_TAG: React.ExoticComponent<{ children?: React.ReactNode; }>; type ListboxRenderPropArg = { open: boolean; disabled: boolean; invalid: boolean; value: T; }; export type ListboxProps = Props, 'value' | 'defaultValue' | 'onChange' | 'by' | 'disabled' | 'horizontal' | 'name' | 'multiple', { value?: TType; defaultValue?: TType; onChange?: (value: TType) => void; by?: ByComparator; disabled?: boolean; invalid?: boolean; horizontal?: boolean; form?: string; name?: string; multiple?: boolean; __demoMode?: boolean; }>; declare function ListboxFn(props: ListboxProps, ref: Ref): React.JSX.Element; declare let DEFAULT_BUTTON_TAG: "button"; type ButtonRenderPropArg = { disabled: boolean; invalid: boolean; hover: boolean; focus: boolean; autofocus: boolean; open: boolean; active: boolean; value: any; }; type ButtonPropsWeControl = 'aria-controls' | 'aria-expanded' | 'aria-haspopup' | 'aria-labelledby' | 'disabled'; export type ListboxButtonProps = Props; declare function ButtonFn(props: ListboxButtonProps, ref: Ref): React.ReactElement> | null; declare let DEFAULT_OPTIONS_TAG: "div"; type OptionsRenderPropArg = { open: boolean; }; type OptionsPropsWeControl = 'aria-activedescendant' | 'aria-labelledby' | 'aria-multiselectable' | 'aria-orientation' | 'role' | 'tabIndex'; declare let OptionsRenderFeatures: number; export type ListboxOptionsProps = Props>; declare function OptionsFn(props: ListboxOptionsProps, ref: Ref): React.JSX.Element; declare let DEFAULT_OPTION_TAG: "div"; type OptionRenderPropArg = { /** @deprecated use `focus` instead */ active: boolean; focus: boolean; selected: boolean; disabled: boolean; selectedOption: boolean; }; type OptionPropsWeControl = 'aria-disabled' | 'aria-selected' | 'role' | 'tabIndex'; export type ListboxOptionProps = Props; declare function OptionFn[0]['value']>(props: ListboxOptionProps, ref: Ref): React.ReactElement> | null; declare let DEFAULT_SELECTED_OPTION_TAG: React.ExoticComponent<{ children?: React.ReactNode; }>; type SelectedOptionRenderPropArg = {}; type SelectedOptionPropsWeControl = never; export type ListboxSelectedOptionProps = Props; declare function SelectedFn(props: ListboxSelectedOptionProps, ref: Ref): React.JSX.Element; export interface _internal_ComponentListbox extends HasDisplayName { (props: ListboxProps & RefProp): React.JSX.Element; } export interface _internal_ComponentListboxButton extends HasDisplayName { (props: ListboxButtonProps & RefProp): React.JSX.Element; } export interface _internal_ComponentListboxLabel extends _internal_ComponentLabel { } export interface _internal_ComponentListboxOptions extends HasDisplayName { (props: ListboxOptionsProps & RefProp): React.JSX.Element; } export interface _internal_ComponentListboxOption extends HasDisplayName { [0]['value']>(props: ListboxOptionProps & RefProp): React.JSX.Element; } export interface _internal_ComponentListboxSelectedOption extends HasDisplayName { (props: ListboxSelectedOptionProps & RefProp): React.JSX.Element; } declare let ListboxRoot: _internal_ComponentListbox; export declare let ListboxButton: _internal_ComponentListboxButton; /** @deprecated use `