import { Ref, WatchSource } from 'vue'; /** * Debounce options interface */ export interface DebounceOptions { /** Delay in milliseconds (default: 300) */ delay?: number; /** Whether to trigger on the leading edge (default: false) */ leading?: boolean; /** Whether to trigger on the trailing edge (default: true) */ trailing?: boolean; /** Maximum delay before forcing execution (default: none) */ maxWait?: number; /** Enable debug logging */ debug?: boolean; } /** * Debounced function interface */ interface DebouncedFunction any> { (...args: Parameters): void; cancel: () => void; flush: () => void; pending: () => boolean; } /** * Creates a debounced version of a function * * @param func - Function to debounce * @param options - Debounce configuration options * @returns Debounced function with control methods */ export declare function useDebounce any>(func: T, options?: DebounceOptions): DebouncedFunction; /** * Creates a debounced ref watcher * * @param source - Watch source * @param callback - Callback function * @param options - Debounce and watch options * @returns Stop function */ export declare function useDebouncedWatch(source: WatchSource, callback: (value: T, oldValue: T | undefined) => void, options?: DebounceOptions & { immediate?: boolean; deep?: boolean; flush?: 'pre' | 'post' | 'sync'; }): () => void; /** * Creates a debounced ref that updates after a delay * * @param initialValue - Initial value * @param delay - Debounce delay in milliseconds * @returns Tuple of [debouncedRef, immediateRef, flush, cancel] */ export declare function useDebouncedRef(initialValue: T, delay?: number): [Ref, Ref, () => void, () => void]; export {};