import { IAnimatable } from '../../../Behaviors/Animatable';
import { type IAttachable } from '../../../Behaviors/Attachable';
import { ISlottable } from '../../../Behaviors/Slottable';
import { FloatingSync } from '../../../Types/FloatingSync';
import { Placement } from '../../../Types/Placement';
import { Trigger } from '../../../Types/Trigger';
import { IOverlayElement, OverlayElement } from '../../Overlays/Abstracts/OverlayElement';
import { IPopupElementProps } from './IPopupElementProps';
declare const PopupElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Animatable").IAnimatableProps & IAnimatable) & (abstract new (...args: Array<any>) => IAttachable) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Slottable").ISlottableProps & ISlottable) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Elevatable").IElevatableProps) & (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/Disableable").IDisableableProps) & typeof OverlayElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Popup - A versatile floating container that appears relative to an anchor element.
 *
 * @description
 * The Popup component provides a flexible way to display content in a floating container
 * that can be positioned relative to any anchor element. Unlike Tooltip which is text-focused,
 * Popup supports rich interactive content with features like modal backdrop, focus trapping,
 * multiple trigger modes, and extensive positioning options.
 *
 * @name Popup
 * @element mosaik-popup
 * @category Primitives
 *
 * @slot - Default slot for the trigger/anchor element.
 * @slot content - The popup content to display.
 * @slot footer - Optional footer content for the popup.
 * @slot header - Optional header content for the popup.
 *
 * @csspart backdrop - The modal backdrop (when has-backdrop=true).
 * @csspart body - The main body of the popup.
 * @csspart elevation - The elevation part.
 * @csspart footer - The footer section.
 * @csspart header - The header section.
 * @csspart popup - The floating popup container.
 * @csspart portal - The portal container.
 * @csspart content - The content projection area.
 *
 * @cssprop {String} --popup-background-color - The background color CSS custom property.
 * @cssprop {String} --popup-border-color - The border color CSS custom property.
 * @cssprop {String} --popup-border-radius - The border radius CSS custom property.
 * @cssprop {String} --popup-border-style - The border style CSS custom property.
 * @cssprop {String} --popup-border-width - The border width CSS custom property.
 * @cssprop {String} --popup-font-family - The font family CSS custom property.
 * @cssprop {String} --popup-font-letter-spacing - The font letter spacing CSS custom property.
 * @cssprop {String} --popup-font-line-height - The font line height CSS custom property.
 * @cssprop {String} --popup-font-size - The font size CSS custom property.
 * @cssprop {String} --popup-font-text-decoration - The font text decoration CSS custom property.
 * @cssprop {String} --popup-font-text-transform - The font text transform CSS custom property.
 * @cssprop {String} --popup-font-weight - The font weight CSS custom property.
 * @cssprop {String} --popup-foreground-color - The foreground color CSS custom property.
 * @cssprop {String} --popup-gap - The gap CSS custom property.
 * @cssprop {String} --popup-padding-bottom - The padding bottom CSS custom property.
 * @cssprop {String} --popup-padding-left - The padding left CSS custom property.
 * @cssprop {String} --popup-padding-right - The padding right CSS custom property.
 * @cssprop {String} --popup-padding-top - The padding top CSS custom property.
 * @cssprop {String} --popup-shadow - The shadow CSS custom property.
 * @cssprop {String} --popup-shadow-blur - The shadow blur CSS custom property.
 * @cssprop {String} --popup-shadow-color - The shadow color CSS custom property.
 * @cssprop {String} --popup-shadow-offset-x - The shadow offset x CSS custom property.
 * @cssprop {String} --popup-shadow-offset-y - The shadow offset y CSS custom property.
 * @cssprop {String} --popup-shadow-spread - The shadow spread CSS custom property.
 * @cssprop {String} --popup-transition-duration - The transition duration CSS custom property.
 * @cssprop {String} --popup-transition-mode - The transition mode CSS custom property.
 * @cssprop {String} --popup-transition-property - The transition property CSS custom property.
 * @cssprop {String} --popup-translate - The translate CSS custom property.
 *
 * @fires opened {OpenedEvent} - Fired when the popup is opened.
 * @fires closed {ClosedEvent} - Fired when the popup is closed.
 *
 * @dependency mosaik-backdrop - The Backdrop element.
 * @dependency mosaik-elevation - The Elevation element.
 * @dependency mosaik-floating - The Floating element.
 * @dependency mosaik-portal - The Portal element.
 *
 * @example
 * ```html
 * <!-- Basic popup with click trigger -->
 * <mosaik-popup trigger="click">
 *   <mosaik-button>Open Popup</mosaik-button>
 *   <div slot="content">
 *     <p>Popup content here</p>
 *   </div>
 * </mosaik-popup>
 *
 * <!-- Modal popup with backdrop -->
 * <mosaik-popup has-backdrop trap-focus press-escape-to-close>
 *   <mosaik-button>Open Modal</mosaik-button>
 *   <div slot="content">
 *     <h3 slot="header">Dialog Title</h3>
 *     <p>Modal content</p>
 *     <div slot="footer">
 *       <mosaik-button>Close</mosaik-button>
 *     </div>
 *   </div>
 * </mosaik-popup>
 *
 * <!-- Hover popup with delay -->
 * <mosaik-popup trigger="hover" show-delay="200" hide-delay="100" placement="top">
 *   <mosaik-button>Hover me</mosaik-button>
 *   <div slot="content">
 *     <p>This appears on hover</p>
 *   </div>
 * </mosaik-popup>
 * ```
 *
 * @public
 */
export declare class PopupElement extends PopupElement_base implements IPopupElementProps, IAttachable, ISlottable, IAnimatable, IOverlayElement {
    private _floatingElement;
    private readonly _projectionController;
    private readonly _clickOutsideController;
    private readonly _focusTrapController;
    private _placement;
    private _placements;
    private _distance;
    private _skidding;
    private _trigger;
    private _showDelay;
    private _hideDelay;
    private _staysOpen;
    private _closeOnScroll;
    private _interactive;
    private _flip;
    private _shift;
    private _trapFocus;
    private _hoverTimeout;
    private _sync;
    private _blurSubscription;
    private _focusSubscription;
    private _clickSubscription;
    private _mouseoverSubscription;
    private _mouseoutSubscription;
    private _scrollSubscription;
    private _slottedControl;
    private _anchorReady;
    private _previousActiveElement;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets the anchor element for the popup.
     *
     * @public
     * @readonly
     */
    get anchorElement(): HTMLElement | null;
    /**
     * Gets whether the floating element should be active.
     *
     * @public
     * @readonly
     */
    get isFloatingActive(): boolean;
    /**
     * Gets whether slotted content is projected into the popup.
     *
     * @public
     * @readonly
     */
    get hasSlottedContent(): boolean;
    /**
     * Gets or sets the `placement` property.
     *
     * @public
     * @attr
     */
    get placement(): Placement;
    set placement(value: Placement);
    /**
     * Gets or sets the `placements` property (fallback placements).
     *
     * @public
     * @attr
     */
    get placements(): Array<Placement>;
    set placements(value: Array<Placement>);
    /**
     * Gets or sets the `distance` property (horizontal offset from anchor).
     *
     * @public
     * @attr
     */
    get distance(): number;
    set distance(value: number);
    /**
     * Gets or sets the `skidding` property (vertical offset along anchor).
     *
     * @public
     * @attr
     */
    get skidding(): number;
    set skidding(value: number);
    /**
     * Gets or sets the `trigger` property.
     *
     * @public
     * @attr
     */
    get trigger(): Trigger;
    set trigger(value: Trigger);
    /**
     * Gets or sets the `showDelay` property.
     *
     * @public
     * @attr
     */
    get showDelay(): number;
    set showDelay(value: number);
    /**
     * Gets or sets the `hideDelay` property.
     *
     * @public
     * @attr
     */
    get hideDelay(): number;
    set hideDelay(value: number);
    /**
     * Gets or sets the `staysOpen` property.
     *
     * @public
     * @attr
     */
    get staysOpen(): boolean;
    set staysOpen(value: boolean);
    /**
     * Gets or sets the `closeOnScroll` property.
     *
     * @public
     * @attr
     */
    get closeOnScroll(): boolean;
    set closeOnScroll(value: boolean);
    /**
     * Gets or sets the `interactive` property.
     *
     * @public
     * @attr
     */
    get interactive(): boolean;
    set interactive(value: boolean);
    /**
     * Gets or sets the `flip` property.
     *
     * @public
     * @attr
     */
    get flip(): boolean;
    set flip(value: boolean);
    /**
     * Gets or sets the `shift` property.
     *
     * @public
     * @attr
     */
    get shift(): boolean;
    set shift(value: boolean);
    /**
     * Gets or sets the `trapFocus` property.
     *
     * @public
     * @attr
     */
    get trapFocus(): boolean;
    set trapFocus(value: boolean);
    /**
     * Syncs the popup's width or height to that of the anchor element.
     *
     * @public
     * @attr
     */
    get sync(): FloatingSync;
    set sync(value: FloatingSync);
    /**
     * Opens the popup.
     *
     * @public
     * @override
     */
    open(): Promise<void>;
    /**
     * Closes the popup.
     *
     * @public
     * @override
     */
    close(): Promise<boolean>;
    /**
     * Toggles the popup open/closed state.
     *
     * @public
     */
    toggle(): Promise<void>;
    /**
     * @public
     * @override
     */
    connectedCallback(): void;
    /**
     * @public
     * @override
     */
    disconnectedCallback(): void;
    /**
     * @protected
     * @override
     */
    protected onApplyTemplate(): void;
    /**
     * @protected
     * @override
     */
    protected firstUpdated(changedProperties: Map<keyof this, unknown>): void;
    /**
     * Checks if a trigger is active.
     *
     * @private
     */
    private hasTrigger;
    /**
     * Handles changes to the default slot.
     *
     * @private
     */
    private onDefaultSlotChange;
    /**
     * Updates the floating element's anchor reference.
     *
     * @private
     */
    private updateFloatingAnchor;
    /**
     * Binds event listeners to the control element.
     *
     * @private
     */
    private bindControlEvents;
    /**
     * Unbinds event listeners from the control element.
     *
     * @private
     */
    private unbindControlEvents;
    /**
     * Handles click on the control element.
     *
     * @private
     */
    private onControlClick;
    /**
     * Handles mouse enter on the control element.
     *
     * @private
     */
    private onControlMouseEnter;
    /**
     * Handles mouse leave on the control element.
     *
     * @private
     */
    private onControlMouseLeave;
    /**
     * Handles focus on the control element.
     *
     * @private
     */
    private onControlFocus;
    /**
     * Handles blur on the control element.
     *
     * @private
     */
    private onControlBlur;
    /**
     * Checks if the mouse is currently over the popup content.
     *
     * @private
     */
    private isMouseOverPopup;
    /**
     * Checks if the popup or anchor contains focus.
     *
     * @private
     */
    private containsFocus;
    /**
     * Handles hover events on the popup content (for staysOpen behavior).
     *
     * @private
     */
    onPopupMouseEnter(): void;
    /**
     * Handles mouse leave from the popup content.
     *
     * @private
     */
    onPopupMouseLeave(): void;
    /**
     * @private
     * @template
     */
    onBackdrop(): void;
    /**
     * @protected
     */
    protected onIsOpenPropertyChange(): void;
    /**
     * @protected
     */
    protected onForPropertyChange(): void;
    /**
     * @protected
     */
    protected onTriggerPropertyChange(): void;
    /**
     * @protected
     */
    protected onPlacementPropertyChange(): void;
    /**
     * @protected
     */
    protected onDistancePropertyChange(): void;
    /**
     * @protected
     */
    protected onSkiddingPropertyChange(): void;
    /**
     * @protected
     */
    protected onDisabledPropertyChange(): void;
}
/**
 * @public
 */
export declare namespace PopupElement {
    type Props = IPopupElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-popup': PopupElement;
    }
}
export {};
//# sourceMappingURL=PopupElement.d.ts.map