import { ClassTrackingConfiguration, EventHook, ObjKey } from "./common"; /** * Contains change listeners for one specific object. * Note for specificity: There will be only one of the **change** events fired. The Recorded...Read.onChange handler will add the listeners to all possible candidates. It's this way around. * Does not apply to setterInvoke.. These are fired in addition (not thought through for all situations) */ declare class ObjectChangeHooks { /** * For writes on **setters** (also if these are the same/unchanged values) */ setterInvoke: import("./Util").DefaultMap; changeSpecificProperty: import("./Util").DefaultMap; changeAnyProperty: EventHook; /** * Means, the result of Object.keys will be different after the change. All iterations over the object/arrays's keys or values are informed that there was a change. Individual {@link changeSpecificProperty} are not affected! */ changeOwnKeys: EventHook; /** * These will always be called, no matter how specific a change is */ anyChange: EventHook; /** * */ unspecificChange: EventHook; } export declare const changeHooksForObject: WeakMap; export declare function getChangeHooksForObject(obj: object): ObjectChangeHooks; export declare class ObjectProxyHandler implements ProxyHandler { target: object; origPrototype: object | null; proxy: object; trackingConfig?: ClassTrackingConfiguration; constructor(target: object, trackingConfig: ClassTrackingConfiguration | undefined); installSetterTrap(key: ObjKey): void; protected withUnspecificChange(changeFn: () => R): R; get(fake_target: object, key: ObjKey, receiver: any): any; set(fake_target: object, key: ObjKey, value: any, receiver: any): boolean; getPrototypeOf(target: object): object | null; defineProperty(target: object, property: string | symbol, attributes: PropertyDescriptor): boolean; } export {}; //# sourceMappingURL=objectChangeTracking.d.ts.map