import EventDispispatcher from '../EventDispatcher';
import SizeType from '../SizeType';
import Node from './Node';
import PositionType from '../PositionType';
import LayoutEventType from './LayoutEventType';
declare class LayoutManager extends EventDispispatcher<LayoutEventType> {
    private _treeSet;
    private _layout;
    private _events;
    constructor(rootNodeId: number, rootSize: SizeType);
    updateNodeSize(id: number, size: SizeType): void;
    updateShrinkState(id: number, value: boolean): void;
    find(id: number): Node;
    /**
     * @param id
     * @param position
     * @throws will throw an error if id is null or undefined
     * @throws will throw an error if position is null or undefined
     * @throws will throw an error if the position's x property is null or undefined
     * @throws will throw an error if the position's y property is null or undefined
     */
    moveNode(id: number, position: PositionType): void;
    connectNode(parentId: number, childId: number, order: number): this;
    disconnectNode(id: number): void;
    /**
     * @param id
     * @param size
     * @param position
     * @throws will throw an error if id is null or undefined
     * @return this
     */
    addNode(id: number, size: SizeType, position: PositionType): this;
    removeNode(id: number): LayoutManager;
    predict(parentId: number, nodeId: number | null, position: PositionType | null): {
        order: number;
        position: PositionType;
    };
    dump(): void;
    plot(containerId: string, size?: {
        width: number;
        height: number;
    }): any;
    layout(flush?: boolean): LayoutManager;
    private _flushEvents;
    private _collectChanges;
}
export default LayoutManager;
