import type { Getter } from "../../internal/types.js"; export type WatchOptions = { /** * If `true`, the effect doesn't run until one of the `sources` changes. * * @default false */ lazy?: boolean; }; export declare function watch>(sources: { [K in keyof T]: Getter; }, effect: (values: T, previousValues: { [K in keyof T]: T[K] | undefined; }) => void | VoidFunction, options?: WatchOptions): void; export declare function watch(source: Getter, effect: (value: T, previousValue: T | undefined) => void | VoidFunction, options?: WatchOptions): void; export declare namespace watch { var pre: typeof watchPre; } declare function watchPre>(sources: { [K in keyof T]: Getter; }, effect: (values: T, previousValues: { [K in keyof T]: T[K] | undefined; }) => void | VoidFunction, options?: WatchOptions): void; declare function watchPre(source: Getter, effect: (value: T, previousValue: T | undefined) => void | VoidFunction, options?: WatchOptions): void; export declare function watchOnce>(sources: { [K in keyof T]: Getter; }, effect: (values: T, previousValues: T) => void | VoidFunction): void; export declare function watchOnce(source: Getter, effect: (value: T, previousValue: T) => void | VoidFunction): void; export declare namespace watchOnce { var pre: typeof watchOncePre; } declare function watchOncePre>(sources: { [K in keyof T]: Getter; }, effect: (values: T, previousValues: T) => void | VoidFunction): void; declare function watchOncePre(source: Getter, effect: (value: T, previousValue: T) => void | VoidFunction): void; export {};