import React, { ElementType, Ref } from 'react'; import { ByComparator, EnsureArray, Expand, Props } from '../../types.js'; import { PropsForFeatures } from '../../utils/render.js'; declare let DEFAULT_COMBOBOX_TAG: React.ExoticComponent<{ children?: React.ReactNode; }>; interface ComboboxRenderPropArg { open: boolean; disabled: boolean; activeIndex: number | null; activeOption: T | null; value: T; } declare type O = 'value' | 'defaultValue' | 'nullable' | 'multiple' | 'onChange' | 'by'; declare type ComboboxValueProps = Extract<({ value?: EnsureArray; defaultValue?: EnsureArray; nullable: true; multiple: true; onChange?(value: EnsureArray): void; by?: ByComparator; } & Props>, 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>, O>>) | ({ value?: TValue; nullable?: false; multiple?: false; defaultValue?: TValue; onChange?(value: TValue): void; by?: ByComparator; } & Props, O>), { nullable?: TNullable; multiple?: TMultiple; }>; declare type ComboboxProps = ComboboxValueProps & { disabled?: boolean; __demoMode?: boolean; 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; interface InputRenderPropArg { open: boolean; disabled: boolean; } declare type InputPropsWeControl = 'role' | 'aria-labelledby' | 'aria-expanded' | 'aria-activedescendant' | 'onKeyDown' | 'onChange' | 'displayValue'; interface ButtonRenderPropArg { open: boolean; disabled: boolean; value: any; } declare type ButtonPropsWeControl = 'type' | 'tabIndex' | 'aria-haspopup' | 'aria-controls' | 'aria-expanded' | 'aria-labelledby' | 'disabled' | 'onClick' | 'onKeyDown'; interface LabelRenderPropArg { open: boolean; disabled: boolean; } declare type LabelPropsWeControl = 'ref' | 'onClick'; interface OptionsRenderPropArg { open: boolean; } declare type OptionsPropsWeControl = 'aria-activedescendant' | 'aria-labelledby' | 'hold' | 'onKeyDown' | 'role' | 'tabIndex'; declare let OptionsRenderFeatures: number; interface OptionRenderPropArg { active: boolean; selected: boolean; disabled: boolean; } declare type ComboboxOptionPropsWeControl = 'role' | 'tabIndex' | 'aria-disabled' | 'aria-selected'; export declare let Combobox: typeof ComboboxFn & { displayName: string; } & { Input: ( = "input", TType = {}[] | undefined>(props: Props & { displayValue?(item: TType): string; onChange(event: React.ChangeEvent): void; }, ref: Ref) => React.ReactElement> | null) & { displayName: string; }; Button: ( = "button">(props: Props, ref: Ref) => React.ReactElement> | null) & { displayName: string; }; Label: ( = "label">(props: Props, ref: Ref) => React.ReactElement> | null) & { displayName: string; }; Options: ( = "ul">(props: Props & (({ static?: undefined; } & { unmount?: boolean | undefined; }) | ({ unmount?: undefined; } & { static?: boolean | undefined; })) & { hold?: boolean | undefined; }, ref: Ref) => React.ReactElement> | null) & { displayName: string; }; Option: ( = "li", TType_1 = {}[] | undefined>(props: Props & { disabled?: boolean | undefined; value: TType_1; }, ref: Ref) => React.ReactElement> | null) & { displayName: string; }; }; export {};