import * as _angular_core from '@angular/core';
import { AfterViewInit, ElementRef, Injector } from '@angular/core';
import _Menu from '@ui5/webcomponents/dist/Menu.js';
import { UI5CustomEvent } from '@ui5/webcomponents-base';

declare class Menu implements AfterViewInit {
    /**
     * Defines the header text of the menu (displayed on mobile).
     */
    headerText: _angular_core.InputSignal<string | undefined>;
    /**
     * Indicates if the menu is open.
     */
    open: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Determines on which side the component is placed at.
     */
    placement: _angular_core.InputSignal<"Start" | "End" | "Top" | "Bottom" | undefined>;
    /**
     * Determines the horizontal alignment of the menu relative to its opener control.
     */
    horizontalAlign: _angular_core.InputSignal<"Start" | "End" | "Center" | "Stretch" | undefined>;
    /**
     * Defines if a loading indicator would be displayed inside the corresponding ui5-menu popover.
     */
    loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Defines the delay in milliseconds, after which the loading indicator will be displayed inside the corresponding ui5-menu popover.
     */
    loadingDelay: _angular_core.InputSignal<number | undefined>;
    /**
     * Defines the ID or DOM Reference of the element at which the menu is shown.
  When using this attribute in a declarative way, you must only use the `id` (as a string) of the element at which you want to show the popover.
  You can only set the `opener` attribute to a DOM Reference when using JavaScript.
     */
    opener: _angular_core.InputSignal<string | HTMLElement | null | undefined>;
    /**
     * Fired when an item is being clicked.
  
  **Note:** Since 1.17.0 the event is preventable, allowing the menu to remain open after an item is pressed.
     */
    ui5ItemClick: _angular_core.OutputEmitterRef<UI5CustomEvent<_Menu, "item-click">>;
    /**
     * Fired before the menu is opened. This event can be cancelled, which will prevent the menu from opening.
  
  **Note:** Since 1.14.0 the event is also fired before a sub-menu opens.
     */
    ui5BeforeOpen: _angular_core.OutputEmitterRef<UI5CustomEvent<_Menu, "before-open">>;
    /**
     * Fired after the menu is opened.
     */
    ui5Open: _angular_core.OutputEmitterRef<UI5CustomEvent<_Menu, "open">>;
    /**
     * Fired before the menu is closed. This event can be cancelled, which will prevent the menu from closing.
     */
    ui5BeforeClose: _angular_core.OutputEmitterRef<UI5CustomEvent<_Menu, "before-close">>;
    /**
     * Fired after the menu is closed.
     */
    ui5Close: _angular_core.OutputEmitterRef<UI5CustomEvent<_Menu, "close">>;
    /**
     * Available slots for content projection in this component.
     *
     * Slots allow you to insert custom content into predefined areas of the web component.
     * Use the `slot` attribute on child elements to target specific slots.
     *
     * - **(default)**: Defines the items of this component.
  
  **Note:** Use `ui5-menu-item` and `ui5-menu-separator` for their intended design.
     *
     * @example
     * ```html
     * <ui5-menu>
     *   <div slot="header">Custom header content</div>
     *   <p>Default slot content</p>
     * </ui5-menu>
     * ```
     *
     * @readonly
     * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}
     */
    readonly slots: {
        name: string;
        description: string;
    }[];
    elementRef: ElementRef<_Menu>;
    injector: Injector;
    get element(): _Menu;
    ngAfterViewInit(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<Menu, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<Menu, "ui5-menu, [ui5-menu]", ["ui5Menu"], { "headerText": { "alias": "headerText"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "horizontalAlign": { "alias": "horizontalAlign"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingDelay": { "alias": "loadingDelay"; "required": false; "isSignal": true; }; "opener": { "alias": "opener"; "required": false; "isSignal": true; }; }, { "ui5ItemClick": "ui5ItemClick"; "ui5BeforeOpen": "ui5BeforeOpen"; "ui5Open": "ui5Open"; "ui5BeforeClose": "ui5BeforeClose"; "ui5Close": "ui5Close"; }, never, ["*"], true, never>;
}

export { Menu };
