import { BaseTreeControl } from './base-tree-control';
import { FlatTreeControlFilter } from './flat-tree-control.filters';
export declare function defaultCompareValues(firstValue: string, secondValue: string): boolean;
export declare function defaultCompareViewValues(firstViewValue: string, secondViewValue: string): boolean;
/** Flat tree control. Able to expand/collapse a subtree recursively for flattened tree. */
export declare class FlatTreeControl<T> extends BaseTreeControl<T> {
    getLevel: (dataNode: T) => number;
    isExpandable: (dataNode: T) => boolean;
    /** getValue will be used to determine if the tree contains value or not. Used in method hasValue */
    getValue: (dataNode: T) => any;
    /** getViewValue will be used for filter nodes. Returned value will be first argument in filterNodesFunction */
    getViewValue: (dataNode: T) => string;
    /** compareValues will be used to comparing values. */
    compareValues: (firstValue: any, secondValue: any) => boolean;
    /** compareValues will be used to comparing values. */
    compareViewValues: (firstViewValue: any, secondViewValue: any) => boolean;
    /** isDisabled will be used to determine if the node is disabled. */
    isDisabled: (dataNode: T) => boolean;
    expandedItemsBeforeFiltration: T[];
    private filters;
    /** Construct with flat tree data node functions getLevel, isExpandable, getValue and getViewValue. */
    constructor(getLevel: (dataNode: T) => number, isExpandable: (dataNode: T) => boolean, 
    /** getValue will be used to determine if the tree contains value or not. Used in method hasValue */
    getValue: (dataNode: T) => any, 
    /** getViewValue will be used for filter nodes. Returned value will be first argument in filterNodesFunction */
    getViewValue: (dataNode: T) => string, 
    /** compareValues will be used to comparing values. */
    compareValues?: (firstValue: any, secondValue: any) => boolean, 
    /** compareValues will be used to comparing values. */
    compareViewValues?: (firstViewValue: any, secondViewValue: any) => boolean, 
    /** isDisabled will be used to determine if the node is disabled. */
    isDisabled?: (dataNode: T) => boolean);
    getFilters(): FlatTreeControlFilter<T>[];
    setFilters(...filters: FlatTreeControlFilter<T>[]): void;
    /**
     * Gets a list of the data node's subtree of descendent data nodes.
     *
     * To make this working, the `dataNodes` of the TreeControl must be flattened tree nodes
     * with correct levels.
     */
    getDescendants(dataNode: T): T[];
    /**
     * Expands all data nodes in the tree.
     *
     * To make this working, the `dataNodes` variable of the TreeControl must be set to all flattened
     * data nodes of the tree.
     */
    expandAll(): void;
    getParents(node: any, result: T[]): T[];
    hasValue(value: string): T | undefined;
    filterNodes(value?: string | null): void;
    private updateFilterValue;
    private saveExpansionState;
    private restoreExpansionState;
}
