/**
 * Custom hook for creating a debounced version of a callback function.
 *
 * Features:
 * - Delays callback execution until after a specified delay period
 * - Cancels previous pending calls when a new one is made
 * - Maintains stable function reference (only changes when delay changes)
 * - Always uses the latest callback via ref (avoids stale closures)
 * - Properly cleans up timeouts on unmount and delay changes
 * - Supports async callbacks
 * - Type-safe with generics
 *
 * @param callback - The function to debounce
 * @param delay - Delay in milliseconds before executing the callback
 * @returns Debounced version of the callback with the same signature
 *
 * @example
 * const debouncedSearch = useDebouncedCallback(
 *   (searchTerm: string) => {
 *     performSearch(searchTerm);
 *   },
 *   300
 * );
 *
 * // Later in event handler:
 * debouncedSearch(inputValue);
 */
export declare function useDebouncedCallback<T extends (...args: any[]) => any>(callback: T, delay?: number): T;
