import { ObservableMap, IObservableArray } from "mobx"; import { IStateTreeNode, IReversibleJsonPatch, IJsonPatch } from "./NodeUtils"; import { IDisposer } from "../utils"; import { ISnapshottable, IType } from '../types/Type'; import { ObjectNode } from "./ObjectNode"; import { INode, NodeCreateOptions } from './interface'; export declare type MakeField = (options: NodeCreateOptions) => INode; export declare function onSnapshot(target: ObservableMap, callback: (snapshot: { [key: string]: S; }) => void): IDisposer; export declare function onSnapshot(target: IObservableArray, callback: (snapshot: S[]) => void): IDisposer; export declare function onSnapshot(target: ISnapshottable, callback: (snapshot: S) => void): IDisposer; export declare function addDisposer(target: IStateTreeNode, disposer: () => void): void; export declare function walk(thing: IStateTreeNode, processor: (item: IStateTreeNode) => void): void; export declare function getEnv(target: IStateTreeNode, failIsNil?: boolean): T; export declare function onPatch(target: IStateTreeNode, callback: (patch: IJsonPatch) => void): IDisposer; export declare function onPatch(target: IStateTreeNode, callback: (patch: IReversibleJsonPatch) => void, includeOldValue: true): IDisposer; export declare function clone(source: T, keepEnvironment?: boolean | any): T; export declare function detach(thing: T): T; export declare function destroy(thing: IStateTreeNode, keepSnapshot?: boolean): void; export declare function applyPatch(target: IStateTreeNode, patch: IJsonPatch | IJsonPatch[]): void; export declare function applySnapshot(target: IStateTreeNode, snapshot: S): void; export declare function getSnapshot(target: ObservableMap): { [key: string]: S; }; export declare function getSnapshot(target: IObservableArray): S[]; export declare function getSnapshot(target: ISnapshottable): S; export declare function isAlive(thing: IStateTreeNode): boolean; export declare function protect(target: IStateTreeNode): void; export declare function unprotect(target: IStateTreeNode): void; export declare function isProtected(target: IStateTreeNode): boolean; export declare function isRoot(target: IStateTreeNode): boolean; export declare function getRoot(target: IStateTreeNode): any & IStateTreeNode; export declare function getRoot(target: IStateTreeNode): T & IStateTreeNode; export declare function getPath(target: IStateTreeNode): string; export declare function getPathParts(target: IStateTreeNode): string[]; export declare function resolveNodeByPathParts(base: ObjectNode, pathParts: string[]): INode; export declare function resolveNodeByPathParts(base: ObjectNode, pathParts: string[], failIfResolveFails: boolean): INode | undefined; export declare function tryResolve(target: IStateTreeNode, path: string): IStateTreeNode | any; export declare function resolveNodeByPath(base: ObjectNode, pathParts: string): INode; export declare function resolveNodeByPath(base: ObjectNode, pathParts: string, failIfResolveFails: boolean): INode | undefined; export declare function getRelativePathBetweenNodes(base: ObjectNode, target: INode): string; export declare function resolveIdentifier(type: IType, target: IStateTreeNode, identifier: string | number): any;