/**
 * Copyright IBM Corp. 2021, 2025
 * SPDX-License-Identifier: MPL-2.0
 */
import Component from '@glimmer/component';
import type { ModifierLike } from '@glint/template';
import type Owner from '@ember/owner';
import type { HdsAnchoredPositionOptions } from '../../../modifiers/hds-anchored-position.ts';
export interface HdsPopoverPrimitiveSignature {
    Args: {
        isOpen?: boolean;
        enableSoftEvents?: boolean;
        enableClickEvents?: boolean;
        boundary?: HdsAnchoredPositionOptions['boundary'];
        onOpen?: () => void;
        onClose?: () => void;
        onFocusOut?: () => void;
    };
    Blocks: {
        default: [
            {
                setupPrimitiveContainer: ModifierLike<SetupPrimitiveContainerModifier>;
                setupPrimitiveToggle: ModifierLike<SetupPrimitiveToggleModifier>;
                setupPrimitivePopover: ModifierLike<SetupPrimitivePopoverModifier>;
                toggleElement?: HTMLButtonElement;
                popoverElement?: HTMLElement;
                isOpen: boolean;
                showPopover: () => void;
                hidePopover: (event?: Event) => void;
                togglePopover: () => void;
                boundary?: HdsAnchoredPositionOptions['boundary'];
            }
        ];
    };
}
interface SetupPrimitiveContainerModifier {
    Element: HTMLElement;
}
export interface SetupPrimitiveToggleModifier {
    Element: HTMLButtonElement;
}
export interface SetupPrimitivePopoverModifier {
    Element: HTMLElement;
    Args: {
        Positional: [];
        Named: {
            anchoredPositionOptions?: HdsAnchoredPositionOptions;
        };
    };
}
export default class HdsPopoverPrimitive extends Component<HdsPopoverPrimitiveSignature> {
    private _isOpen;
    private _isClosing;
    private _anchoredPositionOptions?;
    private _containerElement?;
    private _toggleElement?;
    private _popoverElement?;
    enableSoftEvents: boolean;
    enableClickEvents: boolean;
    private _timer?;
    constructor(owner: Owner, args: HdsPopoverPrimitiveSignature['Args']);
    setupPrimitiveContainer: import("ember-modifier").FunctionBasedModifier<{
        Element: HTMLElement;
        Args: {
            Named: import("ember-modifier/-private/signature").EmptyObject;
            Positional: [];
        };
    }>;
    setupPrimitiveToggle: import("ember-modifier").FunctionBasedModifier<{
        Element: HTMLButtonElement;
        Args: {
            Named: import("ember-modifier/-private/signature").EmptyObject;
            Positional: [];
        };
    }>;
    setupPrimitivePopover: import("ember-modifier").FunctionBasedModifier<{
        Args: {
            Positional: unknown[];
            Named: {
                anchoredPositionOptions?: HdsAnchoredPositionOptions;
            };
        };
        Element: HTMLElement;
    }>;
    private _applyAnchoredPositionModifier;
    private _linkToggleAndPopover;
    showPopover: () => void;
    hidePopover: (_event?: Event) => void;
    togglePopover: () => void;
    onBeforeTogglePopover: (event: ToggleEvent) => void;
    onTogglePopover: (event: ToggleEvent) => void;
    onMouseEnter: () => void;
    onFocusIn: () => void;
    onMouseLeave: () => void;
    onFocusOut: (event: FocusEvent) => void;
}
export {};
