import { Ref } from '../reactivity'; declare type CleanupRegistrator = (invalidate: () => void) => void; declare type SimpleEffect = (onCleanup: CleanupRegistrator) => void; declare type StopHandle = () => void; declare type WatcherCallBack = (newVal: T, oldVal: T, onCleanup: CleanupRegistrator) => void; declare type WatcherSource = Ref | (() => T); declare type MapSources = { [K in keyof T]: T[K] extends WatcherSource ? V : never; }; declare type FlushMode = 'pre' | 'post' | 'sync'; interface WatcherOption { lazy: boolean; deep: boolean; flush: FlushMode; } export declare function watch(source: SimpleEffect, options?: Omit, 'lazy'>): StopHandle; export declare function watch(source: WatcherSource, cb: WatcherCallBack, options?: Partial): StopHandle; export declare function watch[]>(sources: T, cb: (newValues: MapSources, oldValues: MapSources, onCleanup: CleanupRegistrator) => any, options?: Partial): StopHandle; export {};