type Callback = (state: T, initial?: boolean) => void; interface ObservableOptions { watch: (fn: Callback) => void; watchKeys: (keys: string, fn: Callback) => void; unwatch: (fn: Callback) => void; watchAll: (fn: Callback, dontRunImmediately?: boolean) => void; setComputed: (key: string, expr: (state: T) => unknown) => void; forceUpdate: () => void; assign: (obj: Partial, clear?: boolean) => void; getChanges: () => [Partial, Partial]; getKey: () => string; clear: () => void; copy: () => T; } export type Observable = T & ObservableOptions; /** Batch multiple observable changes together into a single callback. */ export declare function batch(callback: () => void): void; /** Convert object to an observable Proxy with .watch() callbacks. */ export declare function observe(state: T, parentModel?: Observable): Observable; export {};