import * as i0 from '@angular/core';
import { OnDestroy, ElementRef, ComponentRef, TemplateRef, EventEmitter } from '@angular/core';
import { MXBaseComponent, AXPlacementType, AXEvent } from '@acorex/cdk/common';
import { AXComponentType } from '@acorex/core/components';
import * as i1 from '@angular/common';

type AXPopoverOpenTrigger = 'manual' | 'click' | 'hover' | 'toggle';
type AXPopoverCloseTrigger = 'manual' | 'clickOut' | 'leave';
/**
 * @category Components
 * A popover component with custom encapsulation and change detection settings.
 */
declare class AXPopoverComponent extends MXBaseComponent implements OnDestroy {
    private platform;
    private document;
    private platformID;
    private overlayService;
    private onKeyDownHandler;
    /** @ignore */
    private _overlayRef;
    /** @ignore */
    private _lastActiveElement;
    /** @ignore */
    private _targetEvents;
    /** @ignore */
    private _outsideClickHandler;
    /** @ignore */
    private resizeObserver;
    /** @ignore */
    private resize$;
    /** @ignore */
    private _disabled;
    readonly width: i0.InputSignal<string>;
    /**
     * Gets or sets whether the popover is disabled.
     * When disabled, the popover will not open and will close if already open.
     */
    get disabled(): boolean;
    set disabled(v: boolean);
    /** @ignore */
    private _offsetX;
    /**
     * Gets or sets the horizontal offset and updates it accordingly.
     */
    get offsetX(): number;
    /**
     * Sets the horizontal offset and updates it with a callback.
     */
    set offsetX(v: number);
    /** @ignore */
    private _offsetY;
    /**
     * Vertical offset with update callback.
     */
    get offsetY(): number;
    /**
     * Sets the vertical offset and updates the component position.
     */
    set offsetY(v: number);
    /** @ignore */
    private _target;
    /**
     * Gets or sets the target element, supporting Element, ElementRef, or MXBaseComponent.
     */
    get target(): Element | ElementRef | MXBaseComponent;
    /**
     * Sets the target element and updates event bindings.
     */
    set target(v: Element | ElementRef | MXBaseComponent);
    /** @ignore */
    private _defaultPlacements;
    /** @ignore */
    private _placements;
    /** @ignore */
    private _placement;
    /**
     * Gets the current placement of the component.
     */
    get placement(): AXPlacementType;
    /**
     * Sets the component's placement and updates its position settings.
     */
    set placement(v: AXPlacementType);
    /** @ignore */
    private _componentRef;
    /**
     * Gets the reference to the component.
     */
    get componentRef(): ComponentRef<unknown> | null;
    /**
     * Holds the context data for the component.
     */
    context: unknown;
    /** @ignore */
    _baseTemplate: TemplateRef<unknown>;
    /**
     * Defines the content to be displayed, which can be a template or a component.
     */
    content: TemplateRef<unknown> | AXComponentType<unknown>;
    /** @ignore */
    private _openOn;
    /**
     * Gets or sets the trigger for opening the popover and updates target events.
     */
    get openOn(): AXPopoverOpenTrigger;
    /**
     * Sets the trigger for opening the popover and updates target events.
     */
    set openOn(v: AXPopoverOpenTrigger);
    /** @ignore */
    private _closeOn;
    /**
     * Gets or sets the trigger for closing the popover.
     */
    get closeOn(): AXPopoverCloseTrigger;
    /**
     * Sets the trigger for closing the popover and rebinds target events.
     */
    set closeOn(v: AXPopoverCloseTrigger);
    /**
     * Determines if a backdrop should be displayed behind the popover.
     */
    hasBackdrop: boolean;
    /**
     * Delay in milliseconds before the popover opens after a trigger event.
     */
    openAfter: number;
    /**
     * Delay in milliseconds before the popover closes after a trigger event.
     */
    closeAfter: number;
    /**
     * CSS class to apply to the backdrop element.
     */
    backdropClass: string;
    /**
     * CSS class to apply to the panel element.
     */
    panelClass: string;
    /**
     * Enables or disables adaptivity.
     */
    adaptivityEnabled: boolean;
    /**
     * Emits when the component is opened.
     * @event
     */
    onOpened: EventEmitter<AXEvent>;
    /**
     * Emits when the component is closed.
     * @event
     */
    onClosed: EventEmitter<AXEvent>;
    /** @ignore */
    private _emitOnOpenedEvent;
    /** @ignore */
    private _emitOnClosedEvent;
    /** @ignore */
    private removeTargetEvents;
    /** @ignore */
    private bindTargetEvents;
    /** @ignore */
    private bindOverlayEvents;
    /** @ignore */
    private removeOverlayEvents;
    /** @ignore */
    private handleOverlayDisposed;
    /**
     * Toggles the component's open state.
     */
    toggle(): void;
    /**
     * Closes the component if it's open, detaches the overlay, restores focus, and emits the closed event.
     */
    close(): void;
    /**
     * Opens the component if it's not already open, saves focus, opens the overlay, and emits the opened event.
     */
    open(): Promise<void>;
    /** @ignore */
    private addKeyDownListener;
    /** @ignore */
    private removeKeyDownListener;
    /** @ignore */
    private saveFocus;
    /** @ignore */
    private restoreFocus;
    /** @ignore */
    private openOverlayInternal;
    /**
     * Checks if the overlay is currently open.
     * @returns {boolean}
     */
    get isOpen(): boolean;
    /**
     * Determines if the actionsheet style should be applied.
     * @returns {boolean}
     */
    get isActionsheetStyle(): boolean;
    /** @ignore */
    private updateOffset;
    /**
     * Updates the position of the overlay and focuses on it.
     */
    updatePosition(): void;
    /**
     * Focuses the overlay element.
     */
    focus(): void;
    /**
     * Brings this popover to the front of all other overlays.
     */
    bringToFront(): void;
    /** @ignore */
    private initializeResizeObserver;
    /** @ignore */
    private disconnectResizeObserver;
    protected ngOnInit(): void;
    /** @ignore */
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXPopoverComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXPopoverComponent, "ax-popover", never, { "width": { "alias": "width"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; }; "offsetX": { "alias": "offsetX"; "required": false; }; "offsetY": { "alias": "offsetY"; "required": false; }; "target": { "alias": "target"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "content": { "alias": "content"; "required": false; }; "openOn": { "alias": "openOn"; "required": false; }; "closeOn": { "alias": "closeOn"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "openAfter": { "alias": "openAfter"; "required": false; }; "closeAfter": { "alias": "closeAfter"; "required": false; }; "backdropClass": { "alias": "backdropClass"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "adaptivityEnabled": { "alias": "adaptivityEnabled"; "required": false; }; }, { "onOpened": "onOpened"; "onClosed": "onClosed"; }, never, ["*"], true, never>;
}

declare class AXPopoverModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXPopoverModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXPopoverModule, never, [typeof i1.CommonModule, typeof AXPopoverComponent], [typeof AXPopoverComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXPopoverModule>;
}

export { AXPopoverComponent, AXPopoverModule };
export type { AXPopoverCloseTrigger, AXPopoverOpenTrigger };
