import { EventEmitter, OnChanges, OnDestroy, OnInit } from '@angular/core';
import { TieredMenuItemData } from './models/tiered-menu-item-data';
import * as i0 from "@angular/core";
/**
 * @description Diretiva que anexa um menu multinível (tiered menu) a qualquer elemento do DOM.
 * Ao disparar o evento configurado no elemento hospedeiro, exibe um painel flutuante
 * com itens de menu hierárquicos, suportando submenus aninhados e divisores.
 * Em telas estreitas (< 600px), o menu é exibido em modo aninhado fullscreen.
 *
 * @example
 * ```html
 * <s-button [sTieredMenu]="menuItems" triggerEvent="click">Abrir menu</s-button>
 * ```
 *
 * @category Navegação
 */
export declare class TieredMenuDirective implements OnInit, OnChanges, OnDestroy {
    private readonly _elementRef;
    private readonly _appRef;
    private readonly _componentFactoryResolver;
    private readonly _injector;
    private readonly _tieredMenuEventService;
    private readonly _tieredMenuService;
    private readonly _tieredMenuGlobalService;
    private readonly _changeDetectorRef;
    /**
     * @description Lista de itens exibidos no menu. Cada item pode conter um array de `children`
     * para criar submenus aninhados, além de propriedades como `label`, `icon`,
     * `disabled`, `command` e `divider`.
     */
    items: TieredMenuItemData[];
    /**
     * @description Item que receberá o foco inicial ao abrir o menu.
     * Útil para destacar uma opção pré-selecionada ou contextual.
     */
    focusedItem: TieredMenuItemData | undefined;
    /**
     * @description Define o evento do elemento hospedeiro que dispara a abertura do menu.
     * - `'click'`: abre o menu ao clicar no elemento (padrão).
     * - `'hover'`: abre o menu ao passar o mouse sobre o elemento.
     *
     * @default 'click'
     */
    triggerEvent: 'click' | 'hover';
    ariaLabel?: string;
    tieredMenuOpened: EventEmitter<void>;
    tieredMenuClosed: EventEmitter<void>;
    private _componentRef;
    private _showTimeout?;
    private _isNested;
    private _isOpen;
    private _unsubscribe$;
    private _lastActiveElement?;
    private _previousItems;
    private _itemsAreValid?;
    private _resizeObserver;
    ngOnInit(): void;
    ngOnChanges(): void;
    ngOnDestroy(): void;
    onClick(event: MouseEvent): void;
    private _createMenu;
    private _createTieredMenu;
    private _createNestedMenu;
    private _createComponent;
    private _destroy;
    private _setMenuPosition;
    private _setMenuComponentProperties;
    private _subscribeEvents;
    private _compareItems;
    private _rebuildMenu;
    private _updateServiceItems;
    static ɵfac: i0.ɵɵFactoryDeclaration<TieredMenuDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TieredMenuDirective, "[sTieredMenu]", never, { "items": { "alias": "items"; "required": false; }; "focusedItem": { "alias": "focusedItem"; "required": false; }; "triggerEvent": { "alias": "triggerEvent"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, { "tieredMenuOpened": "tieredMenuOpened"; "tieredMenuClosed": "tieredMenuClosed"; }, never, never, true, never>;
}
