import { IType } from '../types/Type'; import { INode } from './interface'; import { ObjectNode } from './ObjectNode'; export declare enum NodeLifeCycle { INITIALIZING = 0, CREATED = 1, FINALIZED = 2, DETACHING = 3, DEAD = 4, } export declare type IJsonPatch = { op: 'replace' | 'add' | 'remove'; path: string; index?: number; value?: any; field?: INode; }; export declare type IReversibleJsonPatch = IJsonPatch & { oldValue?: any; }; export declare function toJSON(this: IStateTreeNode): any; export declare type IStateTreeNode = { readonly $treenode?: any; }; export declare function isStateTreeNode(value: any): boolean; export declare function getStateTreeNode(value: IStateTreeNode): ObjectNode; export declare function getType(object: IStateTreeNode): IType; export declare function canAttachNode(value: any): boolean;