/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
import { IListVirtualDelegate } from "../list/list.mjs";
import { AbstractTree, AbstractTreeViewState, IAbstractTreeOptions } from "./abstractTree.mjs";
import { IList } from "./indexTreeModel.mjs";
import { ObjectTreeModel } from "./objectTreeModel.mjs";
import { IDataSource, ITreeModel, ITreeNode, ITreeRenderer, ITreeSorter } from "./tree.mjs";
export interface IDataTreeOptions<T, TFilterData = void> extends IAbstractTreeOptions<T, TFilterData> {
    readonly sorter?: ITreeSorter<T>;
}
export declare class DataTree<TInput, T, TFilterData = void> extends AbstractTree<T | null, TFilterData, T | null> {
    private user;
    private dataSource;
    protected model: ObjectTreeModel<T, TFilterData>;
    private input;
    private identityProvider;
    private nodesByIdentity;
    constructor(user: string, container: HTMLElement, delegate: IListVirtualDelegate<T>, renderers: ITreeRenderer<T, TFilterData, any>[], dataSource: IDataSource<TInput, T>, options?: IDataTreeOptions<T, TFilterData>);
    getInput(): TInput | undefined;
    setInput(input: TInput | undefined, viewState?: AbstractTreeViewState): void;
    updateChildren(element?: TInput | T): void;
    resort(element?: T | TInput, recursive?: boolean): void;
    refresh(element?: T): void;
    private _refresh;
    private iterate;
    protected createModel(user: string, view: IList<ITreeNode<T, TFilterData>>, options: IDataTreeOptions<T, TFilterData>): ITreeModel<T | null, TFilterData, T | null>;
}
