import { AfterContentInit, EventEmitter } from '@angular/core';
import { Nullable } from '@fundamental-ngx/cdk/utils';
import { NestedListContentDirective } from '../nested-content/nested-list-content.directive';
import { NestedLinkDirective } from '../nested-link/nested-link.directive';
import { NestedListKeyboardService } from '../nested-list-keyboard.service';
import { NestedListStateService } from '../nested-list-state.service';
import { NestedItemInterface } from './nested-item.interface';
import { NestedItemService } from './nested-item.service';
import * as i0 from "@angular/core";
export declare class NestedItemDirective implements AfterContentInit, NestedItemInterface {
    private _itemService;
    private _keyboardService;
    private _stateService;
    /** Whether item should be expanded */
    set expanded(expanded: boolean);
    /** @hidden */
    get expanded(): boolean;
    /** Event thrown, when expanded state is changed */
    readonly expandedChange: EventEmitter<boolean>;
    /** Event thrown, when any keyboard event is dispatched on this, or link element */
    readonly keyboardTriggered: EventEmitter<KeyboardEvent>;
    /** @hidden */
    fdNestedListItemClass: boolean;
    /**
     * @hidden
     * Reference to the link directive, to allow manipulating the properties of this element.
     */
    linkItem: NestedLinkDirective;
    /**
     * @hidden
     * Mostly used, when this item has list
     * Reference to the content directive, to allow manipulating the properties of this element.
     */
    contentItem: NestedListContentDirective;
    /** @hidden */
    _ariaLevel: Nullable<number>;
    /** @hidden */
    _title: string;
    /** @hidden */
    private _role;
    /** @hidden */
    private _ariaExpanded;
    /** @hidden */
    private _ariaSelected;
    /** @hidden */
    private _ariaDisabled;
    /** @hidden */
    private _ariaLabel;
    /** @hidden */
    private _ariaHidden;
    /** @hidden */
    private _expanded;
    /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)  */
    private readonly _destroyRef;
    /** Unique element ID */
    private readonly _elementId;
    /** @hidden */
    constructor(_itemService: NestedItemService, _keyboardService: NestedListKeyboardService, _stateService: NestedListStateService);
    /** @hidden */
    ngAfterContentInit(): void;
    /** Check if the item element has any child */
    get hasChildren(): boolean;
    /** Get all of the children item elements */
    get allChildrenItems(): NestedItemInterface[];
    /** Method that expand the item and propagate it to children */
    triggerOpen(): void;
    /** Method that close the item and propagate it to children */
    triggerClose(): void;
    /** Method that toggle the item and propagate it to children */
    toggle(): void;
    /** Method that dispatches `click` event on link item*/
    click(): void;
    /** Method that focuses link item*/
    focus(): void;
    /** Method that provides information if element, or children of this element has passed id */
    containsId(id: string): boolean;
    /**
     * @hidden
     * Propagate open state to all of the children
     */
    private propagateOpenChange;
    /** @hidden */
    private _shouldRefreshKeyboardService;
    /** @hidden */
    private _setUpSubscriptions;
    /** @hidden */
    private _propagateHasChildrenProperty;
    /** Pass this element to popover child item, to allow control `expanded` value */
    private _passItemReferences;
    /** Change of selected state of content or link, if there is any children with I */
    private _selectedChange;
    static ɵfac: i0.ɵɵFactoryDeclaration<NestedItemDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<NestedItemDirective, "[fdNestedItem], [fd-nested-list-item]", never, { "expanded": { "alias": "expanded"; "required": false; }; }, { "expandedChange": "expandedChange"; "keyboardTriggered": "keyboardTriggered"; }, ["linkItem", "contentItem"], never, true, never>;
}
