import { Key } from "react";
import { CollectionChildren } from "@react-types/shared";
import { ListBoxFooter, ListBoxOption } from "../internal/ListBox";
export declare type ComboBoxOption<OptionKey extends Key = string> = ListBoxOption<OptionKey>;
export declare type ComboBoxContainerProps<OptionKey extends Key> = {
    /** An HTML ID attribute that will be attached to the the rendered component. Useful for targeting it from tests */
    id?: string;
    /** Controls if this ComboBox should steal focus when first rendered */
    autoFocus?: boolean;
    /** A list of Options to render inside this ComboBox */
    children?: CollectionChildren<ComboBoxOption<OptionKey>>;
    /** Value to be pre-populated in the input when this ComboBox is first rendered */
    defaultInputValue?: string;
    /** Key of the Option that is selected when this ComboBox is first rendered */
    defaultSelectedKey?: OptionKey;
    /** An optional hint to show next to the ComboBox that describes what this ComboBox expects */
    hint?: string;
    /** An optional error to show next to the ComboBox. If a `validator` is also supplied, the `validator` takes precendence */
    error?: string;
    /** Controls if this ComboBox is disabled */
    isDisabled?: boolean;
    /** A string describing what this ComboBox represents */
    label: string;
    /** A (dynamic) list of options to render within this ComboBox.
     * This may be provided upfront instead of providing static children.
     */
    options?: ComboBoxOption<OptionKey>[];
    /** Controls if this ComboBox's options are not yet available, but will be in the future */
    isLoading?: boolean;
    /** Name of the value held by this ComboBox when placed inside a form */
    name?: string;
    /** A value to display in the TextField when it is empty */
    placeholder?: string;
    /** The current selection */
    selectedKey?: OptionKey;
    /** Callback invoked when the ComboBox's selection changes */
    onSelectionChange?: (key: OptionKey) => void;
};
/**
 * A ComboBox is a specialized text field that only allows you its value to be one of the pre-provided options.
 * It displays a list of options below the text field. This list keeps getting shorter as you type, since fewer options match the text field's value.
 */
declare function ComboBoxContainer<OptionKey extends Key = string>({ id, autoFocus, children, defaultInputValue, defaultSelectedKey, error, hint, isDisabled, isLoading, options, label, name, placeholder, selectedKey, onSelectionChange, }: ComboBoxContainerProps<OptionKey>): JSX.Element;
export declare const ComboBox: {
    Container: typeof ComboBoxContainer;
    Section: <T>(props: import("@react-types/shared").SectionProps<T>) => JSX.Element;
    Option: <Key_1 extends string>(props: {
        key: Key_1;
        children: string;
        leadingIcon?: string | undefined;
        trailingIcon?: string | undefined;
        leadingImageSrc?: string | undefined;
        description?: string | undefined;
    }) => JSX.Element;
    Footer: typeof ListBoxFooter;
};
export {};
