import * as React from "react"; export type AsyncSelectOption = { value: TValue; label: React.ReactNode; disabled?: boolean; disabledReason?: React.ReactNode; description?: React.ReactNode; data?: TData; }; export type AsyncSelectOptionGroup = AsyncSelectOption> = { label?: React.ReactNode; options: TOption[]; }; export type AsyncSelectOptionsResult = AsyncSelectOption> = TOption[] | AsyncSelectOptionGroup[]; export type AsyncSelectRenderState = AsyncSelectOption> = { search: string; minSearchLength: number; options: TOption[]; selectedCount?: number; maxSelected?: number; }; export type AsyncSelectStateRenderer = AsyncSelectOption> = (state: AsyncSelectRenderState) => React.ReactNode; export type AsyncSelectLabels = { placeholder?: string; multiPlaceholder?: string; searchPlaceholder?: string; loading?: string; creating?: string; empty?: string; error?: string; clear?: string; clearAll?: string; selectAll?: string; minSearchLength?: (minSearchLength: number) => string; maxSelected?: (maxSelected: number) => string; selectedCount?: (count: number) => string; hiddenSelected?: (count: number) => string; }; export type AsyncSelectProps = AsyncSelectOption> = Omit, "onChange"> & { isMulti?: false; value?: TValue; selectedOption?: TOption | null; onValueChange?: (value: TValue | undefined, option?: TOption) => void; loadOptions: (search: string, signal?: AbortSignal) => Promise>; loadSelectedOption?: (value: TValue, signal?: AbortSignal) => Promise; defaultOptions?: AsyncSelectOptionsResult; disabled?: boolean; clearable?: boolean; cacheOptions?: boolean; cacheTtl?: number; debounceMs?: number; minSearchLength?: number; labels?: AsyncSelectLabels; renderOption?: (option: TOption, state: { selected: boolean; }) => React.ReactNode; renderValue?: (option: TOption) => React.ReactNode; renderLoading?: AsyncSelectStateRenderer; renderEmpty?: AsyncSelectStateRenderer; renderError?: AsyncSelectStateRenderer; renderMinSearch?: AsyncSelectStateRenderer; onCreateOption?: (search: string) => Promise | TOption; createOptionLabel?: (search: string) => React.ReactNode; showCreateOption?: (search: string, options: TOption[]) => boolean; showSelectedDescription?: boolean; triggerClassName?: string; contentClassName?: string; searchClassName?: string; optionClassName?: string; invalid?: boolean; }; export type AsyncSelectMultiModeProps = AsyncSelectOption> = AsyncMultiSelectProps & { isMulti: true; }; export type AsyncMultiSelectProps = AsyncSelectOption> = Omit, "onChange"> & { value?: TValue[]; selectedOptions?: TOption[]; onValueChange?: (value: TValue[], options: TOption[]) => void; loadOptions: (search: string, signal?: AbortSignal) => Promise>; loadSelectedOptions?: (values: TValue[], signal?: AbortSignal) => Promise; defaultOptions?: AsyncSelectOptionsResult; disabled?: boolean; clearable?: boolean; cacheOptions?: boolean; cacheTtl?: number; closeOnSelect?: boolean; debounceMs?: number; minSearchLength?: number; maxSelected?: number; maxVisibleTags?: number; showSelectAll?: boolean; labels?: AsyncSelectLabels; renderOption?: (option: TOption, state: { selected: boolean; }) => React.ReactNode; renderValue?: (option: TOption) => React.ReactNode; renderTag?: (option: TOption, state: { remove: () => void; }) => React.ReactNode; renderLoading?: AsyncSelectStateRenderer; renderEmpty?: AsyncSelectStateRenderer; renderError?: AsyncSelectStateRenderer; renderMinSearch?: AsyncSelectStateRenderer; renderMaxSelected?: AsyncSelectStateRenderer; onCreateOption?: (search: string) => Promise | TOption; createOptionLabel?: (search: string) => React.ReactNode; showCreateOption?: (search: string, options: TOption[]) => boolean; showSelectedDescription?: boolean; triggerClassName?: string; contentClassName?: string; searchClassName?: string; optionClassName?: string; tagClassName?: string; invalid?: boolean; }; /** * @deprecated Prefer `AsyncSelect` with `isMulti` for new usage. */ declare function AsyncMultiSelect = AsyncSelectOption>({ className, value, selectedOptions, onValueChange, loadOptions, loadSelectedOptions, defaultOptions, disabled, clearable, cacheOptions, cacheTtl, closeOnSelect, debounceMs, minSearchLength, maxSelected, maxVisibleTags, showSelectAll, labels, renderOption, renderValue, renderTag, renderLoading, renderEmpty, renderError, renderMinSearch, renderMaxSelected, onCreateOption, createOptionLabel, showCreateOption, showSelectedDescription, triggerClassName, contentClassName, searchClassName, optionClassName, tagClassName, invalid, ...props }: AsyncMultiSelectProps): React.JSX.Element; declare function AsyncSelect = AsyncSelectOption>(props: AsyncSelectProps | AsyncSelectMultiModeProps): React.JSX.Element; export { AsyncSelect, AsyncMultiSelect };