import { type DependencyList } from "react"; import { type DebounceSettings } from "./useDebounce"; type AsyncEffect = (shouldContinueEffect: () => boolean) => Promise; type CleanupFunction = (result: T | void) => void; /** * useDebouncedAsyncEffect * @description A version of useEffect that accepts an async function and debounces its execution based on dependency changes * @param effect Async function that receives a shouldContinueEffect callback * @param deps The dependency list that triggers the effect * @param delay The debounce delay in milliseconds * @param cleanup Optional cleanup function that receives the previous result * @param options Optional debounce settings (leading, trailing, maxWait) * @see https://rooks.vercel.app/docs/hooks/useDebouncedAsyncEffect * @example * ```jsx * useDebouncedAsyncEffect( * async (shouldContinueEffect) => { * const data = await fetchData(searchQuery); * if (shouldContinueEffect()) { * setResults(data); * } * }, * [searchQuery], * 500, * (previousResult) => { * // Cleanup * } * ); * ``` */ declare function useDebouncedAsyncEffect(effect: AsyncEffect, deps: DependencyList, delay?: number, cleanup?: CleanupFunction, options?: DebounceSettings): void; export { useDebouncedAsyncEffect }; export type { AsyncEffect, CleanupFunction };