type FetchResult = { options: TOptions[]; meta?: { isAllDataLoaded: boolean; }; }; type UseAsyncOptionsParams = { /** * Функция для асинхронной загрузки опций на основе поискового запроса * При возникновении ошибки запроса данных, компонент сам ее обработает. * Для обработки ошибок вручную используйте параметр `onDataLoadError` * * @param search - Строка поиска, введенная пользователем. На основе этой * строки функция должна вернуть подходящие опции. * @param signal - Объект `AbortSignal`, который позволяет отменить запрос, * если пользователь изменил поисковый запрос или закрыл компонент. * * @returns Promise Промис, который разрешается массивом опций * (`TOptions[]`). Эти опции будут отображены в выпадающем списке. * * @example * ```typescript * const fetchOptions = async (search: string, signal: AbortSignal) => { * const response = await fetch(`/api/search?query=${search}`, { signal }); * const data = await response.json(); * return data.results; * }; * ``` */ fetchOptions: (search: string, signal?: AbortSignal) => Promise>; /** * Функция для обработки ошибок загрузки данных */ onDataLoadError?: (error: Error) => void; /** * Минимальное количество символов для выполнения запроса */ minSymbolsToFetch: number; /** * Задержка для fetchOptions */ fetchDelayMs: number; }; export declare const useAsyncOptions: ({ fetchOptions, fetchDelayMs, minSymbolsToFetch, onDataLoadError, }: UseAsyncOptionsParams) => { options: TOptions[]; meta: { isAllDataLoaded: boolean; } | undefined; isLoadingData: boolean; isEmptyOptions: boolean; onRetry: (search: string) => void; isLoadingError: boolean; debouncedFetchOptions: import("debounce").DebouncedFunction<(search: string) => void>; onInputChange: (search: string) => void; onOpen: (defaultSearch?: string, defaultValue?: TOptions | null | undefined, isAlwaysTriggerOnOpen?: boolean) => void; }; export {};