import type { Ref, WatchOptions, WatchStopHandle } from 'vue'; declare type MaybeRef = T | Ref; declare type Fn = () => void; export declare type FunctionArgs = (...args: Args) => Return; export interface FunctionWrapperOptions { fn: FunctionArgs; args: Args; thisArg: This; } export declare type EventFilter = (invoke: Fn, options: FunctionWrapperOptions) => void; /** * Create an EventFilter that debounce the events * * @param ms */ export declare function debounceFilter(ms: MaybeRef): EventFilter; export interface DebouncedWatchOptions extends WatchOptions { debounce?: MaybeRef; } interface ConfigurableEventFilter { eventFilter?: EventFilter; } export interface WatchWithFilterOptions extends WatchOptions, ConfigurableEventFilter { } export declare function watchWithFilter = false>(source: any, cb: any, options?: WatchWithFilterOptions): WatchStopHandle; export default function debouncedWatch = false>(source: any, cb: any, options?: DebouncedWatchOptions): WatchStopHandle; export {};