import * as _acorex_cdk_common from '@acorex/cdk/common';
import { MXInteractiveComponent, MXLookComponent, AXEvent } from '@acorex/cdk/common';
import * as i0 from '@angular/core';
import { OnInit, EventEmitter, OnDestroy } from '@angular/core';
import * as polytype from 'polytype';
import * as i6 from '@acorex/components/popover';
import { AXPopoverComponent } from '@acorex/components/popover';
import { Subscription } from 'rxjs';
import * as i1 from '@angular/common';
import * as i3 from '@angular/cdk/a11y';
import * as i4 from '@angular/cdk/overlay';
import * as i5 from '@acorex/components/decorators';

declare const AXDropdownBoxComponent_base: polytype.Polytype.ClusteredConstructor<[typeof MXInteractiveComponent, typeof MXLookComponent]>;
declare class AXDropdownBoxComponent extends AXDropdownBoxComponent_base implements OnInit {
    readonly hasInput: i0.InputSignal<boolean>;
    readonly popoverWidth: i0.InputSignal<string>;
    private _platform;
    /**
     *  @ignore
     */
    protected _isMobile: boolean;
    /**
     *  @ignore
     */
    protected _target: HTMLDivElement;
    /**
     *  @ignore
     */
    protected _popoverTitle: string;
    /**
     *  @ignore
     */
    protected _popoverWidth: string;
    /**
     *  @ignore
     */
    protected _placement: _acorex_cdk_common.AXConnectedPosition[];
    /**
     *  @ignore
     */
    protected _popover: AXPopoverComponent;
    /**
     * Emitted when the drawer is opened.
     *
     * @event
     */
    onOpened: EventEmitter<AXEvent>;
    /**
     * Emitted when the drawer is closed.
     *
     * @event
     */
    onClosed: EventEmitter<AXEvent>;
    /**
     *  @ignore
     */
    ngOnInit(): void;
    /**
     *  @ignore
     */
    protected _handlePopupOnOpened(e: AXEvent): void;
    /**
     *  @ignore
     */
    protected _handlePopupOnClosed(e: AXEvent): void;
    /**
     *  @ignore
     */
    protected _handleKeydown(e: KeyboardEvent): void;
    /**
     * Updates the position of the popover.
     * @ignore
     */
    updatePosition(): void;
    /**
     * Toggles the popover open or closed, if not disabled.
     * @ignore
     */
    toggle(): void;
    /**
     * Closes the popover if it's open and not disabled, then focuses the element.
     * @ignore
     */
    close(): void;
    /**
     * Opens the popover if it's not already open and not disabled, then focuses the popover.
     * @ignore
     */
    open(): void;
    /**
     * Indicates if the popover is currently open.
     * @ignore
     */
    get isOpen(): boolean;
    /**
     * Indicates if the popover is styled as an actionsheet.
     */
    get isActionsheetStyle(): boolean;
    /**
     *  @ignore
     */
    private get __hostClass();
    static ɵfac: i0.ɵɵFactoryDeclaration<AXDropdownBoxComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXDropdownBoxComponent, "ax-dropdown-box", never, { "disabled": { "alias": "disabled"; "required": false; }; "look": { "alias": "look"; "required": false; }; "hasInput": { "alias": "hasInput"; "required": false; "isSignal": true; }; "popoverWidth": { "alias": "popoverWidth"; "required": false; "isSignal": true; }; }, { "disabledChange": "disabledChange"; "onBlur": "onBlur"; "onFocus": "onFocus"; "onClick": "onClick"; "onOpened": "onOpened"; "onClosed": "onClosed"; }, never, ["[input]", "[panel]"], true, never>;
}

declare abstract class MXDropdownBoxBaseComponent extends MXInteractiveComponent {
    /**
     * Emitted when the dropdown/popup is opened.
     *
     * @event
     */
    onOpened: EventEmitter<AXEvent>;
    /**
     * Emits the `onOpened` event with component context.
     * @ignore
     */
    protected emitOnOpenedEvent(): void;
    /**
     * Emitted when the dropdown/popup is closed.
     *
     * @event
     */
    onClosed: EventEmitter<AXEvent>;
    /**
     * Emits the `onClosed` event with component context.
     * @ignore
     */
    protected emitOnClosedEvent(): void;
    /**
     * Reference to the underlying dropdown controller.
     */
    protected abstract dropdown: AXDropdownBoxComponent;
    /**
     * Toggles the dropdown if the component is not disabled.
     *
     * @returns void - No return value. Switches between open and closed states.
     */
    toggle(): void;
    /**
     * Closes the dropdown if it is open and the component is not disabled, then focuses the host.
     *
     * @returns void - No return value. Dropdown is closed and focus returns to the host.
     */
    close(): void;
    /**
     * Opens the dropdown if it is not already open and the component is not disabled, then focuses the dropdown.
     *
     * @returns void - No return value. Dropdown becomes open and receives focus.
     */
    open(): void;
    /**
     * Indicates whether the dropdown is currently open.
     *
     * @returns boolean - True if open; otherwise false.
     */
    get isOpen(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<MXDropdownBoxBaseComponent, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<MXDropdownBoxBaseComponent>;
}

/**
 * A panel for displaying dropdown content with configurable width and positioning.
 *
 * @category Components
 */
declare class AXDropdownPanelComponent extends MXInteractiveComponent implements OnDestroy {
    #private;
    private _platform;
    /**
     *  @ignore
     */
    protected _isMobile: boolean;
    /**
     *  @ignore
     */
    protected _popoverTitle: string;
    /**
     *  @ignore
     */
    protected _placement: _acorex_cdk_common.AXConnectedPosition[];
    readonly placement: i0.InputSignal<"bottom-start" | "bottom-end">;
    /**
     *  @ignore
     */
    _subs: Subscription[];
    /**
     *  @ignore
     */
    private __target;
    /**
     * Gets the target HTML element for the dropdown panel.
     */
    get _target(): HTMLDivElement;
    /**
     * Sets the target HTML element for the dropdown panel.
     */
    set _target(v: HTMLDivElement);
    /**
     *  @ignore
     */
    protected _popover: AXPopoverComponent;
    /**
     * Emitted when the dropdown panel is opened.
     *
     * @event
     */
    onOpened: EventEmitter<AXEvent>;
    /**
     * Emitted when the dropdown panel is closed.
     *
     * @event
     */
    onClosed: EventEmitter<AXEvent>;
    /**
     * Determines if adaptivity is enabled for the component.
     *
     * @defaultValue  false
     */
    adaptivityEnabled: boolean;
    /**
     *  @ignore
     */
    constructor();
    /**
     *  @ignore
     */
    ngOnInit(): void;
    /**
     *  @ignore
     */
    ngAfterViewInit(): void;
    /**
     *  @ignore
     */
    ngOnDestroy(): void;
    /**
     *  @ignore
     */
    protected _handlePopupOnOpened(e: AXEvent): void;
    /**
     *  @ignore
     */
    protected _handlePopupOnClosed(e: AXEvent): void;
    /**
     * Toggles the popover open or closed, if not disabled.
     * @ignore
     */
    toggle(): void;
    /**
     * Closes the popover if it is open and not disabled.
     * @ignore
     */
    close(): void;
    /**
     * Opens the popover if it is not already open and not disabled.
     * @ignore
     */
    open(): void;
    /**
     * Gets whether the popover is currently open.
     * @ignore
     */
    get isOpen(): boolean;
    /**
     * Gets whether the popover is styled as an actionsheet.
     * @ignore
     */
    get isActionsheetStyle(): boolean;
    /**
     *  @ignore
     */
    private get __hostClass();
    static ɵfac: i0.ɵɵFactoryDeclaration<AXDropdownPanelComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXDropdownPanelComponent, "ax-dropdown-panel", never, { "isOpen": { "alias": "isOpen"; "required": false; }; "fitParent": { "alias": "fitParent"; "required": false; }; "dropdownWidth": { "alias": "dropdownWidth"; "required": false; }; "position": { "alias": "position"; "required": false; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "_target": { "alias": "_target"; "required": false; }; "adaptivityEnabled": { "alias": "adaptivityEnabled"; "required": false; }; }, { "onOpened": "onOpened"; "onClosed": "onClosed"; }, never, ["*"], true, never>;
}

declare class AXDropdownModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXDropdownModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXDropdownModule, never, [typeof i1.CommonModule, typeof _acorex_cdk_common.AXCommonModule, typeof i3.A11yModule, typeof i4.OverlayModule, typeof i5.AXDecoratorModule, typeof i6.AXPopoverModule, typeof AXDropdownPanelComponent, typeof AXDropdownBoxComponent], [typeof AXDropdownPanelComponent, typeof AXDropdownBoxComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXDropdownModule>;
}

export { AXDropdownBoxComponent, AXDropdownModule, AXDropdownPanelComponent, MXDropdownBoxBaseComponent };
