import { ClrTreetableChildrenFunction, ClrTreetableTreeNode } from '../interfaces/treetable-model';
import { Observable } from 'rxjs';
import { ClrTreetableState } from '../interfaces/treetable-state-model';
import * as i0 from "@angular/core";
export declare class TreetableDataStateService<T extends object> {
    private readonly _filters;
    private readonly _sort;
    private readonly _dataSource;
    private readonly _stickyIndeterminate;
    private readonly _itemsExternallySelected;
    private readonly _treetableNodes;
    private readonly _filteredNodes;
    readonly displayedNodes: import("@angular/core").Signal<ClrTreetableTreeNode<T>[]>;
    readonly areAllNodesSelected: import("@angular/core").Signal<boolean>;
    readonly selectedNodes: import("@angular/core").Signal<T[]>;
    readonly changes$: Observable<ClrTreetableState<T>>;
    constructor();
    setDataSource(items: T[], getChildren: ClrTreetableChildrenFunction<T>): void;
    setExternallySelectedItems(items: T[]): void;
    setStickyIndeterminate(value: boolean): void;
    toggleSelectionForDisplayedNodes(): void;
    private setSelectionForDisplayedNodes;
    /**
     * Recursively filters the provided <code>ClrTreetableTreeNodes</code>. It returns the lowest depth nodes of the
     * provided nodes, that pass all the filters and it's ancestors. The method returns a cloned subset of the provided nodes.
     *
     * @param nodes The nodes to filter.
     * @param activeFilters The currently active filters that have to be passed.
     * @param parent The parent node to set for the recursive filtering.
     * @private
     */
    private filterTreeRecursively;
    private sortTreeRecursively;
    private traverseTreeNodes;
    static ɵfac: i0.ɵɵFactoryDeclaration<TreetableDataStateService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<TreetableDataStateService<any>>;
}
