import { DisposableCollection, Emitter } from '@opensumi/ide-utils';
import { ICompositeTreeNode, ITree, ITreeNodeOrCompositeTreeNode } from '../types';
import { CompositeTreeNode, TreeNode } from './TreeNode';
export declare abstract class Tree implements ITree {
    protected _root: CompositeTreeNode | undefined;
    protected readonly onChangedEmitter: Emitter<void>;
    protected readonly toDispose: DisposableCollection;
    protected nodes: {
        [id: string]: TreeNode | undefined;
    };
    dispose(): void;
    get root(): CompositeTreeNode | undefined;
    set root(root: CompositeTreeNode | undefined);
    protected fireChanged(): void;
    abstract resolveChildren(parent?: ICompositeTreeNode): Promise<ITreeNodeOrCompositeTreeNode[] | null>;
    sortComparator(a: ITreeNodeOrCompositeTreeNode, b: ITreeNodeOrCompositeTreeNode): number;
}
//# sourceMappingURL=Tree.d.ts.map