import { ModificationTree } from '../types'; declare type WatcherCallback = (modificationTree: ModificationTree) => void; export declare abstract class Observable { private static idCounter; readonly _observableId: number; protected _watchedTargets: { [id: string]: { target: Observable; watcherCount: number; }; }; protected _watchers: Array<{ context: any; callback: WatcherCallback; }>; _watchBy(context: any, callback: WatcherCallback): void; _stopWatchBy(context: any): void; protected _emitValueChange(modificationTree: ModificationTree): void; protected _registerChild(field: () => string | string, child: Observable): void; protected _unregisterChild(childOrChildId: Observable | string): void; } export {};