import { TemplateResult } from 'lit';
import { FloatingStrategy, PopupPlacement } from '../../common/types';
import { DdsElement } from '../../internal/dds-hu-element';
declare const PopupBaseElement_base: typeof DdsElement & {
    new (...args: any[]): import('../../internal/mixin/sizedMixin').SizedElementInterface;
    prototype: import('../../internal/mixin/sizedMixin').SizedElementInterface;
};
export default class PopupBaseElement extends PopupBaseElement_base {
    static readonly styles: import('lit').CSSResult;
    protected triggerElement: Element | null;
    private cleanup;
    private intersectionObserver;
    protected readonly popup: HTMLDivElement;
    private readonly arrowElement?;
    /** The disabled state of the popup. */
    disabled?: boolean | undefined;
    /** The open state of the popup. */
    opened?: boolean | undefined;
    /** The placement of the popup.
     * @type {'top' | 'right' | 'bottom' | 'left' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end' | 'right-start' | 'right-end'}
     */
    placement: PopupPlacement;
    /** The floating strategy of the popup.
     * @type {'absolute' | 'fixed'}
     */
    floatingStrategy: FloatingStrategy;
    /** The offset of the popup. */
    offset: number;
    /** Whether the popup should sync its width with the trigger. */
    sync?: boolean;
    /** The maximum height of the popup. */
    maxHeight: number | 'auto';
    /** The maximum width of the popup. */
    maxWidth: number | 'auto';
    /** Whether the popup has an arrow. */
    hasArrow: boolean;
    /** Whether the popup should overflow. */
    overflow: boolean;
    /** Whether the popup should take full width of the screen. */
    fullWidth: boolean;
    /** Whether to keep popup open when trigger leaves viewport. */
    disableViewportAutoClose: boolean;
    connectedCallback(): Promise<void>;
    protected firstUpdated(changedProps: Map<string, unknown>): void;
    updated(changedProps: Map<string, unknown>): Promise<void>;
    _handleTriggerSlotChange(e?: Event | undefined): Promise<void>;
    _handleTriggerSlotChangeCallback(_e?: Event): void;
    _handleContentSlotChange(_e: Event): void;
    startUpdate(): void;
    stopUpdate(): Promise<void>;
    disconnectedCallback(): void;
    protected updatePosition(): Promise<void>;
    renderTrigger(): TemplateResult;
    renderPopup(): TemplateResult;
}
export {};
