import { AfterViewInit, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges } from '@angular/core';
import { CssClassBuilder, Nullable, SelectComponentRootToken, SelectableListValueType } from '@fundamental-ngx/cdk/utils';
import { FdTreeAcceptableDataSource, FdTreeItemType } from './data-source/tree-data-source';
import { TreeItemDefDirective } from './directives/tree-item-def.directive';
import { TreeItemDirective } from './directives/tree-item.directive';
import { BaseTreeItem } from './models/base-tree-item.class';
import { SelectionPlacement, SelectionType } from './models/selection-type';
import { TreeItem, TreeItemGeneric } from './models/tree-item';
import { TreeService } from './tree.service';
import * as i0 from "@angular/core";
import * as i1 from "@fundamental-ngx/cdk/data-source";
import * as i2 from "@fundamental-ngx/cdk/forms";
export declare class TreeComponent<P extends FdTreeAcceptableDataSource, T extends TreeItem = FdTreeItemType<P>> implements CssClassBuilder, OnInit, OnChanges, AfterViewInit, SelectComponentRootToken, OnDestroy {
    /** @hidden */
    class: string;
    /**
     * Whether the tree should be borderless.
     */
    noBorder: boolean;
    /** Type of tree items selection. */
    selection: SelectionType;
    /** Placement of the selection control. */
    selectionPlacement: SelectionPlacement;
    /**
     * Whether the sections should be dependent for selection mode.
     * If true, selection control will shift, according to the level.
     * If false, selection control will stay on the same place ignoring the item level.
     */
    independentSections: boolean;
    /**
     * Whether the Tree component has navigation indicators.
     */
    set navigationIndicator(value: boolean);
    get navigationIndicator(): boolean;
    /** Event emitted when data loading is started. */
    dataRequested: EventEmitter<boolean>;
    /** Event emitted when data loading is finished. */
    dataReceived: EventEmitter<boolean>;
    /** Event emitted when selected state changed. */
    selectedChange: EventEmitter<any>;
    /** Tree item template definition. */
    set treeItemDef(value: Nullable<TreeItemDefDirective>);
    get treeItemDef(): Nullable<TreeItemDefDirective>;
    /** @hidden */
    _treeItemDirectives: QueryList<TreeItemDirective<TreeItem, any>>;
    /** @hidden */
    readonly _projectedTreeItems: QueryList<BaseTreeItem>;
    /** @hidden */
    _items: TreeItem<TreeItemGeneric<T>>[];
    /** @hidden */
    get multiple(): boolean;
    /** @hidden */
    get toggle(): boolean;
    /**
     * @hidden
     * Used for skeleton to appear before first meaningful data being loaded.
     */
    _initialDataLoaded: boolean;
    /** @hidden */
    readonly elementRef: ElementRef<any>;
    /** @hidden */
    readonly _treeService: TreeService;
    /** @hidden */
    private _navigationIndicator;
    /** @hidden */
    private _treeItemDef;
    /** @hidden */
    private readonly _contentDensityObserver;
    /** @hidden */
    private readonly _dataSourceDirective;
    /** @hidden */
    private readonly _destroyRef;
    /** @hidden */
    private readonly _selectionService;
    /** @hidden */
    private readonly _rtl;
    /** @hidden */
    private readonly _cvaDirective;
    /** @hidden */
    private readonly _cdr;
    /** @hidden */
    private _dsSubscription;
    /** @hidden */
    private _expandedLevel;
    /** @hidden */
    private _focusKeyManager;
    /**
     * @hidden
     * Sorted tree item components.
     */
    private _sortedTreeItems;
    /**
     * @hidden
     * All tree item components.
     */
    private _allItems;
    /** @hidden */
    private _eventSub;
    /** @hidden */
    private _selectionSub;
    /** @hidden */
    constructor();
    /** @hidden */
    buildComponentCssClass(): string[];
    /**
     * @hidden
     * Keyboard navigation
     * @param event Keyboard event.
     */
    private _onKeyUp;
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngOnChanges(changes: SimpleChanges): void;
    /** @hidden */
    ngAfterViewInit(): void;
    /** @hidden */
    ngOnDestroy(): void;
    /** @hidden */
    _onItemFocused(treeItem: BaseTreeItem): void;
    /** @hidden */
    _onItemKeyDown(event: KeyboardEvent, treeItem: Nullable<BaseTreeItem>): void;
    /** @hidden */
    _trackFn(index: number, item: TreeItem<TreeItemGeneric<T>>): string;
    /**
     * @hidden
     * Select list interface method implementation.
     * Sets value for control value accessor and emits it.
     * @param value value of the selection.
     */
    onChange(value: SelectableListValueType<any>): void;
    /** @hidden */
    private _expandTreeSection;
    /** @hidden */
    private _collapseTreeSection;
    /** @hidden */
    private _openDataStream;
    /** @hidden */
    private _setupEventListeners;
    /** @hidden */
    private _sortTreeItems;
    /** @hidden */
    private _setSelectionListener;
    /** @hidden */
    private _listenToTreeItemDirectiveChanges;
    /** @hidden */
    private _listenToTreeItemsChanges;
    /** @hidden */
    private _setFlattenedItems;
    static ɵfac: i0.ɵɵFactoryDeclaration<TreeComponent<any, any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TreeComponent<any, any>, "fd-tree", never, { "class": { "alias": "class"; "required": false; }; "noBorder": { "alias": "noBorder"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "selectionPlacement": { "alias": "selectionPlacement"; "required": false; }; "independentSections": { "alias": "independentSections"; "required": false; }; "navigationIndicator": { "alias": "navigationIndicator"; "required": false; }; }, { "dataRequested": "dataRequested"; "dataReceived": "dataReceived"; "selectedChange": "selectedChange"; }, ["treeItemDef", "_projectedTreeItems"], ["fd-tree-item"], true, [{ directive: typeof i1.DataSourceDirective; inputs: { "dataSource": "dataSource"; }; outputs: { "dataChanged": "dataChanged"; }; }, { directive: typeof i2.CvaDirective; inputs: { "name": "name"; "id": "id"; "state": "state"; "stateMessage": "stateMessage"; "disabled": "disabled"; "readonly": "readonly"; }; outputs: {}; }]>;
}
