import { HTMLAttributes, JSX, ReactNode } from "react";
type ListboxOption<T> = {
    value: T;
    label?: string;
    disabled?: boolean;
};
interface ListboxBaseProps<T> extends Omit<HTMLAttributes<HTMLUListElement>, "onChange" | "defaultValue" | "value"> {
    options: ListboxOption<T>[];
    focusOnMount?: boolean;
    renderItem?: (option: ListboxOption<T>, selected: boolean, active: boolean) => ReactNode;
    getKey?: (option: ListboxOption<T>, index: number) => string;
}
interface ListboxSingleProps<T> extends ListboxBaseProps<T> {
    multiple?: false;
    value?: T;
    defaultValue?: T;
    onChange?: (value: T, option: ListboxOption<T>) => void;
}
interface ListboxMultiProps<T> extends ListboxBaseProps<T> {
    multiple: true;
    value?: T[];
    defaultValue?: T[];
    onChange?: (value: T[], option: ListboxOption<T>) => void;
}
/**
 * Компонент выбора одного или нескольких элементов из списка. Поддерживает controlled API, поиск по данным и рендер кастомных опций.
 */
export declare function Listbox<T>(props: ListboxSingleProps<T>): JSX.Element;
export declare function Listbox<T>(props: ListboxMultiProps<T>): JSX.Element;
export {};
//# sourceMappingURL=Listbox.d.ts.map