import type { DebuggerOptions, ReactiveMarker, WatchCallback, WatchEffect, WatchHandle, WatchSource } from "@vue/reactivity"; export type { WatchHandle, WatchStopHandle, WatchEffect, WatchSource, WatchCallback, OnCleanup, } from "@vue/reactivity"; type MaybeUndefined = I extends true ? T | undefined : T; type MapSources = { [K in keyof T]: T[K] extends WatchSource ? MaybeUndefined : T[K] extends object ? MaybeUndefined : never; }; export interface WatchEffectOptions extends DebuggerOptions { flush?: "pre" | "post" | "sync"; } export interface WatchOptions extends WatchEffectOptions { immediate?: Immediate; deep?: boolean | number; once?: boolean; } export declare function watchEffect(effect: WatchEffect, options?: WatchEffectOptions): WatchHandle; export declare function watchPostEffect(effect: WatchEffect, options?: DebuggerOptions): WatchHandle; export declare function watchSyncEffect(effect: WatchEffect, options?: DebuggerOptions): WatchHandle; export type MultiWatchSources = Array | object>; export declare function watch = false>(source: WatchSource, cb: WatchCallback>, options?: WatchOptions): WatchHandle; export declare function watch, Immediate extends Readonly = false>(sources: readonly [...T] | T, cb: [T] extends [ReactiveMarker] ? WatchCallback> : WatchCallback, MapSources>, options?: WatchOptions): WatchHandle; export declare function watch = false>(sources: [...T], cb: WatchCallback, MapSources>, options?: WatchOptions): WatchHandle; export declare function watch = false>(source: T, cb: WatchCallback>, options?: WatchOptions): WatchHandle;