import { MemoContexts, ProxyOrTarget, ProxyTarget, Target } from "../proxyObserve"; import { Transaction } from "../Transaction"; import { Memoization, SnapshotGetterMemo } from "../memoize"; export declare function makeProxy(proxyOrTarget: ProxyOrTarget, transaction?: Transaction): ProxyTarget; export declare function getHandler(proxyOrTarget: ProxyOrTarget): { get(target: Target, prop: any): any; } | { get(target: Target, prop: string, receiver: any): any; set(target: Target, prop: string, value: any, receiver: unknown, isContainer?: boolean): boolean; deleteProperty(target: Target, key: any, isContainer?: boolean): boolean; }; export declare function cloneObject(target: any): any; export declare function setInternalProps(target: any, transaction: any, proxy: any, parentTarget: any, memos: MemoContexts): void; export declare function getterProps(target: Target, prop: string): any; export declare function DataChanged(target: Target, key: string, isContainer?: boolean, value?: any): void; export declare function propertyReferenced(target: Target, prop: any, value: any, setter?: (proxy: ProxyTarget) => void): any; export declare function memoReferenced(memo: Memoization | SnapshotGetterMemo): void; export declare function propertyUpdated(parentTarget: Target, prop: string, child: any, oldChild?: any): ProxyTarget | undefined; export interface LastReference { prop: string; target: Target | undefined; set: (target: any, prop: string) => void; clear: () => void; } export declare const lastReference: LastReference; export declare function getSnapshotIfNeeded(target: Target): Target; export declare function recordSnapshotIfNeeded(target: Target): void;