import { Observer, ObserverOptions } from "./Observer"; import { Memoization, MemoizationOptions, SnapshotGetterMemo } from "./memoize"; import { Transaction } from "./Transaction"; import { Snapshots } from "./transition"; export declare function observable(targetIn: TYPE, transaction?: Transaction, nonRoot?: boolean): TYPE; export declare function releaseObservable(proxy: any): void; export declare function observe(targetIn: T, onChange: (target?: string, prop?: string) => void, observer?: (target: T) => void, observationOptions?: ObserverOptions): Observer; export declare type MemoContexts = { [key: string]: Memoization | SnapshotGetterMemo; }; export interface Target { __transaction__: Transaction; __snapshot__: Snapshots | undefined; __referenced__: boolean; __proxy__: ProxyTarget; __parentTarget__: Target; __nonObservableProps__: { [index: string]: boolean; }; __memoizedProps__: { [index: string]: MemoizationOptions; }; __contexts__: Map; __parentReferences__: Map; __memoContexts__: MemoContexts; } export interface ProxyTarget { __target__: Target; } export interface ProxyOrTarget { __target__?: Target; __proxy__?: ProxyTarget; } export declare function isInternalProperty(prop: any): boolean; export declare function target(a: T): T; export declare function jestMockFromClass(c: abstract new (...args: any) => T, o: Partial): T; export declare function nonObservable(obj?: any, propOrProps?: string | Array): (classPrototype: any, prop: string) => void; export declare function isObservable(prop: string, target: Target): boolean;