import { IEventDetail, IEventEmitter } from '@breadstone/mosaik-elements';
import { type ISlottable } from '../../../Behaviors/Slottable';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { IMenuItemElementEvents } from './IMenuItemElementEvents';
import type { IMenuItemElementProps } from './IMenuItemElementProps';
import { TextOverflow } from '../../../Types/TextOverflow';
import { IExpandable } from '../../Interfaces/IExpandable';
import { SubMenuMode } from '../../../Types/SubMenuMode';
declare const MenuItemElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Valueable").IValueableProps<unknown>) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Variantable").IVariantableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Focusable").IFocusableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Slottable").ISlottableProps & ISlottable) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Labelable").ILabelableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Menu Item - An individual option or choice within a menu.
 *
 * @element mosaik-menu-item
 *
 * @slot - The default slot for child menu items.
 * @slot start - The start slot.
 * @slot icon - The icon slot.
 * @slot label - The label slot.
 * @slot subLabel - The subLabel slot.
 * @slot end - The end slot.
 *
 * @fires activated - Called when the element is activated.
 *
 * @public
 */
export declare class MenuItemElement extends MenuItemElement_base implements IMenuItemElementProps, IMenuItemElementEvents, ISlottable, IExpandable {
    private readonly _keyboardController;
    private _projectionController;
    private _submenuProjectionController;
    private readonly _activated;
    private _subLabel;
    private _icon;
    private _isActive;
    private _isChecked;
    private _hasChildren;
    private _isExpanded;
    private _textOverflow;
    private _menuMode;
    private _hoverCloseDelayId;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `subLabel` property.
     *
     * @public
     * @attr
     */
    get subLabel(): string;
    set subLabel(value: string);
    /**
     * Gets or sets the `icon` property.
     *
     * @public
     */
    get icon(): string;
    set icon(value: string);
    /**
     * Gets or sets the `isActive` property.
     *
     * @public
     * @attr
     */
    get isActive(): boolean;
    set isActive(value: boolean);
    /**
     * Gets or sets the `isChecked` property.
     *
     * @public
     * @attr
     */
    get isChecked(): boolean;
    set isChecked(value: boolean);
    /**
     * Gets or sets the `isExpanded` property.
     *
     * @public
     * @attr
     */
    get isExpanded(): boolean;
    set isExpanded(value: boolean);
    /**
     * The `hasChildren` property represents whether the element has children or not.
     *
     * @public
     * @readonly
     * @attr
     */
    get hasChildren(): boolean;
    private set hasChildren(value);
    /**
     * Gets or sets the `textOverflow` property.
     *
     * @public
     * @attr
     */
    get textOverflow(): TextOverflow;
    set textOverflow(value: TextOverflow);
    /**
     * Determines how child menus are displayed.
     *
     * @public
     * @attr
     */
    get menuMode(): SubMenuMode;
    set menuMode(value: SubMenuMode);
    /**
     * Called when the element is activated.
     * Provides reference to `{@link IEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get activated(): IEventEmitter<IEventDetail<this>>;
    /**
     * Expands the menu item.
     *
     * @public
     */
    expand(): void;
    /**
     * Collapses the menu item.
     *
     * @public
     */
    collapse(): void;
    /**
     * Toggles the expanded state of the menu item.
     *
     * @public
     */
    toggle(): void;
    /**
     * @public
     * @override
     */
    connectedCallback(): void;
    /**
     * @public
     * @override
     */
    disconnectedCallback(): void;
    /**
     * @public
     * @overload
     */
    onSlotChanges(slotName?: string): void;
    /**
     * Handles pointer leave from the floating submenu element.
     * This is called when the pointer leaves the Portal-projected floating element.
     * Only collapses on mouse leave (not touch).
     *
     * @private
     * @template
     */
    handleFloatingPointerLeave(event: PointerEvent): void;
    /**
     * Emits the {@link activated} event.
     *
     * @protected
     */
    protected onActivated(args: IEventDetail): void;
    /**
     * Clears the hover close delay timer.
     *
     * @private
     */
    private clearHoverCloseDelay;
    /**
     * Handles pointer enter for hover-based expansion.
     * Only expands on mouse hover (not touch), as touch devices use tap to toggle.
     *
     * @private
     */
    private handlePointerEnter;
    /**
     * Handles pointer leave for hover-based collapse.
     * Uses relatedTarget to determine if the pointer moved into a child element (floating submenu).
     * Only collapses on mouse leave (not touch), as touch devices use tap to toggle.
     *
     * @private
     */
    private handlePointerLeave;
    /**
     * Handles pointer down for touch-based toggling.
     * On touch devices, toggle the expanded state on tap.
     *
     * @private
     */
    private handlePointerDown;
    /**
     * Handles focus transitions to close the popover when focus leaves the item.
     *
     * @private
     */
    private handleFocusOut;
    /**
     * Checks whether the given target is contained within this element or its shadow DOM children.
     * This includes the floating submenu element projected via Portal to document.body.
     * Also checks nested submenus (3+ levels deep) by traversing child menu items.
     *
     * @private
     */
    private containsRelatedTarget;
}
/**
 * @public
 */
export declare namespace MenuItemElement {
    type Props = IMenuItemElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-menu-item': MenuItemElement;
    }
    interface HTMLElementEventMap {
        activated: CustomEvent<IEventDetail>;
    }
}
export {};
//# sourceMappingURL=MenuItemElement.d.ts.map