/**
 * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author David Sehnal <david.sehnal@gmail.com>
 */
import { Map as ImmutableMap, OrderedSet } from 'immutable';
import { StateTransform } from '../transform';
import { StateTree } from './immutable';
export { TransientTree };
declare class TransientTree implements StateTree {
    private tree;
    transforms: ImmutableMap<string, StateTransform<import("../transformer").StateTransformer<import("../object").StateObject<any, import("../object").StateObject.Type<any>>, import("../object").StateObject<any, import("../object").StateObject.Type<any>>, any>>>;
    children: ImmutableMap<string, OrderedSet<string>>;
    dependencies: ImmutableMap<string, OrderedSet<string>>;
    private changedNodes;
    private changedChildren;
    private changedDependencies;
    private _childMutations;
    private _dependencyMutations;
    private _stateUpdates;
    private get childMutations();
    private get dependencyMutations();
    private changeNodes;
    private changeChildren;
    private changeDependencies;
    get root(): StateTransform<import("../transformer").StateTransformer<import("../object").StateObject<any, import("../object").StateObject.Type<any>>, import("../object").StateObject<any, import("../object").StateObject.Type<any>>, any>>;
    asTransient(): TransientTree;
    private addChild;
    private removeChild;
    private clearRoot;
    private mutateDependency;
    changeParent(ref: StateTransform.Ref, newParent: StateTransform.Ref): void;
    add(transform: StateTransform): this;
    /** Calls Transform.definition.params.areEqual if available, otherwise uses shallowEqual to check if the params changed */
    setParams(ref: StateTransform.Ref, params: any): boolean;
    /** Calls Transform.definition.params.areEqual if available, otherwise uses shallowEqual to check if the params changed */
    setTags(ref: StateTransform.Ref, tags: string | string[] | undefined): boolean;
    assignState(ref: StateTransform.Ref, state?: Partial<StateTransform.State>): StateTransform<import("../transformer").StateTransformer<import("../object").StateObject<any, import("../object").StateObject.Type<any>>, import("../object").StateObject<any, import("../object").StateObject.Type<any>>, any>>;
    remove(ref: StateTransform.Ref): StateTransform[];
    asImmutable(): StateTree;
    constructor(tree: StateTree);
}
