import { OnDestroy, OnInit } from '@angular/core';
import { FudisIdService } from '../../services/id/id.service';
import { DropdownBaseDirective } from '../../directives/form/dropdown-base/dropdown-base.directive';
import { ButtonComponent } from '../button/button.component';
import { FudisInputSize } from '../../types/forms';
import { FudisDropdownMenuAlign } from '../../types/miscellaneous';
import { DropdownEventService } from '../../services/dropdown/dropdown-event.service';
import * as i0 from "@angular/core";
export declare class DropdownMenuComponent extends DropdownBaseDirective implements OnInit, OnDestroy {
    private _idService;
    private _dropdownEventService;
    private _document;
    private _parentButton;
    constructor(_idService: FudisIdService, _dropdownEventService: DropdownEventService, _document: Document, _parentButton: ButtonComponent);
    /**
     * Template reference for the Dropdown Menu wrapper element
     */
    private _dropdownMenuElement;
    /**
     * Align Dropdown Menu opening position
     */
    align: FudisDropdownMenuAlign;
    /**
     * Dropdown Menu size
     */
    size: FudisInputSize;
    /**
     * Determine dropdown max-width
     */
    protected _maxWidth: string;
    /**
     * Currently focused option
     */
    private _focusedOption;
    /**
     * Subscription for dropdown width calculation event
     */
    private _subscription;
    /**
     * Add or remove currently focused option. Called from DropdownMenuItem.
     */
    setFocusedOption(id: string, type: 'add' | 'remove', event?: FocusEvent): void;
    /**
     * Check if focus is inside the Dropdown Menu component
     *
     * @param event Focus event
     * @returns Boolean
     */
    private _componentFocused;
    closeDropdownMenu(): void;
    /**
     * Host Listener for dropdown's width, it needs to be wider than its Button parent
     */
    private _getMaxWidth;
    /**
     * Host Listener for keydown events, especially Arrow Down and Escape from Dropdown Menu
     */
    private _handleDropdownMenuKeyDown;
    ngOnInit(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DropdownMenuComponent, [null, null, null, { host: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DropdownMenuComponent, "fudis-dropdown-menu", never, { "align": { "alias": "align"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, ["fudis-dropdown-menu-item", "fudis-dropdown-menu-group"], false, never>;
}
