import { AfterViewInit, ElementRef, EventEmitter, OnDestroy, OnInit, QueryList } from '@angular/core';
import { HasElementRef, Nullable, SelectableItemToken } from '@fundamental-ngx/cdk/utils';
import { Observable } from 'rxjs';
import { FdTreeAcceptableDataSource } from '../../data-source/tree-data-source';
import { BaseTreeItem } from '../../models/base-tree-item.class';
import { TreeItem, TreeItemState } from '../../models/tree-item';
import { TreeService } from '../../tree.service';
import * as i0 from "@angular/core";
import * as i1 from "@fundamental-ngx/cdk/data-source";
export declare class TreeItemComponent<T extends TreeItem = TreeItem, P = any> extends BaseTreeItem<T, P> implements Partial<SelectableItemToken<HTMLElement, P>>, OnInit, AfterViewInit, OnDestroy, HasElementRef {
    /**
     * Tree item value.
     */
    value: P;
    /**
     * Tree item ID.
     */
    id: string;
    /**
     * Tree item aria label.
     */
    ariaLabel: string;
    /**
     * Tree item parent ID.
     */
    set parentId(value: Nullable<string>);
    get parentId(): Nullable<string>;
    /**
     * Whether the tree item is navigatable.
     */
    navigatable: boolean;
    /**
     * Tree item state.
     */
    state: Nullable<TreeItemState>;
    /**
     * Tree item child nodes data source.
     */
    childNodes: FdTreeAcceptableDataSource<T>;
    /**
     * Whether to wrap content.
     */
    wrapContent: boolean;
    /**
     * Tree item level.
     */
    set level(value: number);
    get level(): number;
    /**
     * Whether the tree item is expanded.
     */
    set expanded(value: boolean);
    get expanded(): boolean;
    /**
     * Event emitted when user clicks on tree item.
     */
    readonly treeItemClick: EventEmitter<MouseEvent | KeyboardEvent>;
    /**
     * Event emitted when `expanded` state changes.
     */
    expandedChange: EventEmitter<boolean>;
    /** Tree item focusable container. */
    itemContainer: Nullable<ElementRef<HTMLElement>>;
    /** Selectable item. */
    selectableListItem: SelectableItemToken;
    /** @hidden */
    _projectedTreeItems: QueryList<BaseTreeItem>;
    /**
     * @hidden
     * Selection state.
     */
    _selectionState: boolean;
    /** @hidden */
    children: T[];
    /** @hidden */
    childrenLoaded: boolean;
    /** @Hidden */
    _containerTabIndex: number;
    /** @hidden */
    _setSize: number;
    /** @hidden */
    _currentPosition: number;
    /** @hidden */
    _totalChildrenLoaded: boolean;
    /** Clicked behavior implementation. */
    clicked: Observable<MouseEvent | KeyboardEvent>;
    /** @hidden */
    readonly elementRef: ElementRef<any>;
    /** @hidden */
    readonly _treeService: TreeService;
    /** Whether the tree item has any type of child nodes. */
    get hasChildren(): boolean;
    /** Whether the tree item has content-projected child nodes. */
    get hasProjectedChildren(): boolean;
    /** Whether the tree item has data source children. */
    get hasDsChildren(): boolean;
    /** Whether the item is accessible via keyboard. */
    get keyboardAccessible(): boolean;
    /**
     * Custom background color
     */
    backgroundColor: import("@angular/core").InputSignal<string | undefined>;
    /**
     * Custom styles
     */
    customStyles: import("@angular/core").InputSignal<object | undefined>;
    /** @hidden */
    private _parentId;
    /** @hidden */
    private _level;
    /** @hidden */
    private _expanded;
    /** @hidden */
    private _dsChildrenNumber;
    /** @hidden */
    private readonly _clicked$;
    /** @hidden */
    private readonly _treeItemDir;
    /** @hidden */
    private readonly _dataSourceDirective;
    /** @hidden */
    private readonly _cdr;
    /** @hidden */
    private readonly _destroyRef;
    /** @hidden */
    private readonly _parentTreeItem;
    /** @hidden */
    constructor();
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngAfterViewInit(): void;
    /** @hidden */
    ngOnDestroy(): void;
    /**
     * Sets position of the current item in the set.
     * @param totalItems Total items amount in the set.
     * @param currentIndex Current item position in the set.
     */
    setPosition(totalItems: number, currentIndex: number): void;
    /** Method to focus on the tree item. */
    focus(): void;
    /** Method for setting the focusable tabindex. */
    setContainerTabIndex(value: number): void;
    /** @hidden */
    _toggleExpandState(event: MouseEvent): void;
    /** @hidden */
    _onClick(event: MouseEvent | KeyboardEvent): void;
    /** @hidden */
    _setSelected(selected: boolean): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TreeItemComponent<any, any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TreeItemComponent<any, any>, "fd-tree-item", never, { "value": { "alias": "value"; "required": false; }; "id": { "alias": "id"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "parentId": { "alias": "parentId"; "required": false; }; "navigatable": { "alias": "navigatable"; "required": false; }; "state": { "alias": "state"; "required": false; }; "childNodes": { "alias": "childNodes"; "required": false; }; "wrapContent": { "alias": "wrapContent"; "required": false; }; "level": { "alias": "level"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; "isSignal": true; }; "customStyles": { "alias": "customStyles"; "required": false; "isSignal": true; }; }, { "treeItemClick": "treeItemClick"; "expandedChange": "expandedChange"; }, ["_projectedTreeItems"], ["[fdTreeItemIcon]", "[fdTreeItemText]", "[fdTreeItemButton]", "fd-tree-item"], true, [{ directive: typeof i1.DataSourceDirective; inputs: {}; outputs: {}; }]>;
}
