import { LookupRow, ProposalChooser, ProposalTreeNode, SmartFieldLookupResult, Tree, TreeLayoutResetter, TreeNode, TreeNodeClickEvent, TreeNodesSelectedEvent } from '../../../index';
export declare class TreeProposalChooser<TValue> extends ProposalChooser<TValue, Tree, ProposalTreeNode<TValue>> {
    protected _createContent(): Tree;
    protected _postRender(): void;
    protected _onNodeSelected(event: TreeNodesSelectedEvent): void;
    protected _renderSelectedNode(node: TreeNode): void;
    protected _createLayoutResetter(): TreeLayoutResetter;
    protected _onNodeClick(event: TreeNodeClickEvent): void;
    selectedRow(): ProposalTreeNode<TValue>;
    isBrowseLoadIncremental(): boolean;
    getSelectedLookupRow(): LookupRow<TValue>;
    selectFirstLookupRow(): void;
    clearSelection(): void;
    setLookupResult(result: SmartFieldLookupResult<TValue>): void;
    protected _expandAllParentNodes(treeNodesFlat: TreeNode[]): void;
    trySelectCurrentValue(): void;
    protected _createTreeNode(lookupRow: LookupRow<TValue>): ProposalTreeNode<TValue>;
    protected _createNodeId(value: TValue): string;
    /**
     * This function is required in the 'accept input' case to find out
     * if we have exactly one lookup row that matches. With a tree this is a bit difficult
     * because the lookup call does not only return the lookup rows with a match, but also
     * their parent nodes up to the root node (which don't match).
     *
     * Note: because we only match nodes that have the property leaf set to true, it's not
     * possible to accept a node with accept input that is not a leaf.
     *
     * @returns the leafs in the current tree content.
     */
    findLeafs(): ProposalTreeNode<TValue>[];
    /**
     * This function creates a list of flat tree nodes from a list of lookup rows.
     * Nodes with duplicate ids are filtered, only the first node with the same id is kept.
     */
    protected _lookupRowsToFlatList(lookupRows: LookupRow<TValue>[]): ProposalTreeNode<TValue>[];
    /**
     * This function creates a subtree from a list of flat tree nodes. It sets the parent/child references
     * between the nodes and returns the top-level nodes of the subtree. This subtree is not yet attached
     * to the real tree (= this.content).
     */
    protected _flatListToSubTree(treeNodesFlat: ProposalTreeNode<TValue>[]): ProposalTreeNode<TValue>[];
    /**
     * This functions appends a tree node to a parent node and sets the required flags on the parent node.
     */
    protected _appendChildNode(parentNode: TreeNode, treeNode: TreeNode): void;
    clearLookupRows(): void;
}
//# sourceMappingURL=TreeProposalChooser.d.ts.map