import React, { type ElementType, type Ref } from 'react'; import type { ByComparator, EnsureArray, Expand, Props } from '../../types.js'; import { type HasDisplayName, type PropsForFeatures, type RefProp } from '../../utils/render.js'; declare let DEFAULT_COMBOBOX_TAG: React.ExoticComponent<{ children?: React.ReactNode; }>; interface ComboboxRenderPropArg { open: boolean; disabled: boolean; activeIndex: number | null; activeOption: TActive | null; value: TValue; } type O = 'value' | 'defaultValue' | 'nullable' | 'multiple' | 'onChange' | 'by'; type ComboboxValueProps = Extract<({ value?: EnsureArray; defaultValue?: EnsureArray; nullable: true; multiple: true; onChange?(value: EnsureArray): void; by?: ByComparator; } & Props, TValue>, O>) | ({ value?: TValue | null; defaultValue?: TValue | null; nullable: true; multiple?: false; onChange?(value: TValue | null): void; by?: ByComparator; } & Expand, O>>) | ({ value?: EnsureArray; defaultValue?: EnsureArray; nullable?: false; multiple: true; onChange?(value: EnsureArray): void; by?: ByComparator ? U : TValue>; } & Expand, TValue>, O>>) | ({ value?: TValue; nullable?: false; multiple?: false; defaultValue?: TValue; onChange?(value: TValue): void; by?: ByComparator; } & Props, O>), { nullable?: TNullable; multiple?: TMultiple; }>; export type ComboboxProps = ComboboxValueProps & { disabled?: boolean; __demoMode?: boolean; form?: string; name?: string; }; declare function ComboboxFn(props: ComboboxProps, ref: Ref): JSX.Element; declare function ComboboxFn(props: ComboboxProps, ref: Ref): JSX.Element; declare function ComboboxFn(props: ComboboxProps, ref: Ref): JSX.Element; declare function ComboboxFn(props: ComboboxProps, ref: Ref): JSX.Element; declare let DEFAULT_INPUT_TAG: "input"; interface InputRenderPropArg { open: boolean; disabled: boolean; } type InputPropsWeControl = 'aria-activedescendant' | 'aria-autocomplete' | 'aria-controls' | 'aria-expanded' | 'aria-labelledby' | 'disabled' | 'role'; export type ComboboxInputProps = Props): void; }>; declare function InputFn[0]['value']>(props: ComboboxInputProps, ref: Ref): React.ReactElement> | null; declare let DEFAULT_BUTTON_TAG: "button"; interface ButtonRenderPropArg { open: boolean; disabled: boolean; value: any; } type ButtonPropsWeControl = 'aria-controls' | 'aria-expanded' | 'aria-haspopup' | 'aria-labelledby' | 'disabled' | 'tabIndex'; export type ComboboxButtonProps = Props; declare function ButtonFn(props: ComboboxButtonProps, ref: Ref): React.ReactElement> | null; declare let DEFAULT_LABEL_TAG: "label"; interface LabelRenderPropArg { open: boolean; disabled: boolean; } export type ComboboxLabelProps = Props; declare function LabelFn(props: ComboboxLabelProps, ref: Ref): React.ReactElement> | null; declare let DEFAULT_OPTIONS_TAG: "ul"; interface OptionsRenderPropArg { open: boolean; option: unknown; } type OptionsPropsWeControl = 'aria-labelledby' | 'aria-multiselectable' | 'role' | 'tabIndex'; declare let OptionsRenderFeatures: number; export type ComboboxOptionsProps = Props & { hold?: boolean; }>; declare function OptionsFn(props: ComboboxOptionsProps, ref: Ref): React.ReactElement> | null; declare let DEFAULT_OPTION_TAG: "li"; interface OptionRenderPropArg { active: boolean; selected: boolean; disabled: boolean; } type OptionPropsWeControl = 'role' | 'tabIndex' | 'aria-disabled' | 'aria-selected'; export type ComboboxOptionProps = Props; declare function OptionFn[0]['value']>(props: ComboboxOptionProps, ref: Ref): React.ReactElement> | null; export interface _internal_ComponentCombobox extends HasDisplayName { (props: ComboboxProps & RefProp): JSX.Element; (props: ComboboxProps & RefProp): JSX.Element; (props: ComboboxProps & RefProp): JSX.Element; (props: ComboboxProps & RefProp): JSX.Element; } export interface _internal_ComponentComboboxButton extends HasDisplayName { (props: ComboboxButtonProps & RefProp): JSX.Element; } export interface _internal_ComponentComboboxInput extends HasDisplayName { (props: ComboboxInputProps & RefProp): JSX.Element; } export interface _internal_ComponentComboboxLabel extends HasDisplayName { (props: ComboboxLabelProps & RefProp): JSX.Element; } export interface _internal_ComponentComboboxOptions extends HasDisplayName { (props: ComboboxOptionsProps & RefProp): JSX.Element; } export interface _internal_ComponentComboboxOption extends HasDisplayName { [0]['value']>(props: ComboboxOptionProps & RefProp): JSX.Element; } declare let ComboboxRoot: _internal_ComponentCombobox; export declare let Combobox: _internal_ComponentCombobox & { Input: _internal_ComponentComboboxInput; Button: _internal_ComponentComboboxButton; Label: _internal_ComponentComboboxLabel; Options: _internal_ComponentComboboxOptions; Option: _internal_ComponentComboboxOption; }; export {};