import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import { LogInstance, Loggable } from '../../utils/log';
import { PopupComponentInterface } from './variants';
import { HTMLStencilElement } from '../../stencil-public-runtime';
export declare class Popup implements ComponentInterface, PopupComponentInterface, Loggable {
    private popupId;
    private isClickedOutsideOnMouseDown;
    private isClickedOutsideOnMouseUp;
    private popoverVariantRenderer;
    private fullscreenVariantRenderer;
    private drawerVariantRenderer;
    private lastVariant;
    private lastFocus?;
    private lastVariantRenderer?;
    el: HTMLStencilElement;
    containerEl: HTMLDivElement | undefined;
    contentEl: HTMLDivElement | undefined;
    backdropEl: HTMLDivElement | undefined;
    arrowEl: HTMLDivElement | undefined;
    innerEl: HTMLBalStackElement | undefined;
    activeClosable: boolean;
    activeBackdropDismiss: boolean;
    activeVariant: BalProps.BalPopupVariant;
    trigger?: Element;
    lastTrigger?: Element;
    minContainerWidth: string;
    log: LogInstance;
    createLogger(log: LogInstance): void;
    /**
     * PUBLIC PROPERTY API
     * ------------------------------------------------------
     */
    /**
     * Label or title of the popup element
     */
    label: string;
    /**
     * Id of the reference element default is the trigger element.
     */
    reference?: string;
    /**
     * Defines the variant / type of popup
     */
    variant: BalProps.BalPopupVariant;
    protected variantChanged(newVariant: BalProps.BalPopupVariant, oldVariant: BalProps.BalPopupVariant): Promise<void>;
    /**
     * If set it turns a popover into a fullscreen or a drawer on touch devices
     */
    placement: BalProps.BalPopupPlacement;
    /**
     * If `true`, it shows a little indicator to the trigger element.
     */
    arrow: boolean;
    /**
     * If `true`, a backdrop will be displayed behind the modal.
     */
    backdrop: boolean;
    /**
     * Offset form trigger to popup.
     */
    offset: number;
    /**
     * If `true`, the modal can be closed with the escape key or the little close button.
     */
    closable: boolean;
    /**
     * If `true`, the modal can be closed with the click outside of the modal
     */
    backdropDismiss: boolean;
    /**
     * If `true` the popup is open.
     */
    active: boolean;
    protected activeChanged(newActive: boolean, oldActive: boolean): Promise<void>;
    /**
     * Internal active state
     */
    presented: boolean;
    private initialActive;
    /**
     * Defines the width of the content
     */
    contentWidth?: number;
    contentWidthChanged(newValue?: number, oldValue?: number): void;
    /**
     * @internal
     */
    demo: boolean;
    /**
     * Emitted when the accordion has opened or closed
     */
    balChange: EventEmitter<BalEvents.BalPopupChangeDetail>;
    /**
     * Emitted before the animation starts
     */
    balWillAnimate: EventEmitter<BalEvents.BalPopupWillAnimateDetail>;
    /**
     * Emitted after the animation has finished
     */
    balDidAnimate: EventEmitter<BalEvents.BalPopupDidAnimateDetail>;
    /**
     * LIFECYCLE
     * ------------------------------------------------------
     */
    componentDidLoad(): void;
    /**
     * LISTENERS
     * ------------------------------------------------------
     */
    private debouncedGlobalClick;
    listenOnGlobalClick(ev: MouseEvent): Promise<void>;
    listenOnKeyDown(ev: KeyboardEvent): Promise<void>;
    listenOnMouseDown(ev: MouseEvent): Promise<void>;
    listenOnMouseUp(ev: MouseEvent): Promise<void>;
    listenOnComponentClick(): Promise<void>;
    /**
     * PUBLIC METHODS
     * ------------------------------------------------------
     */
    /**
     * Opens the popup
     */
    present(): Promise<void>;
    /**
     * Closes the popup
     */
    dismiss(): Promise<void>;
    /**
     * Triggers the popup
     */
    toggle(): Promise<void>;
    /**
     * @internal
     */
    setMinWidth(value: number): Promise<void>;
    /**
     * @internal
     */
    _emitChange(): Promise<void>;
    /**
     * @internal
     */
    _present(): Promise<boolean>;
    /**
     * @internal
     */
    _dismiss(): Promise<boolean>;
    /**
     * GETTERS
     * ------------------------------------------------------
     */
    private getVariantRenderer;
    getValue(trigger: Element | HTMLElement, attributeName: string, componentValue: any): any;
    getNumberValue(trigger: Element | HTMLElement, attributeName: string, componentValue: number): number;
    getBooleanValue(trigger: Element | HTMLElement, attributeName: string, componentValue: boolean): boolean;
    /**
     * PRIVATE METHODS
     * ------------------------------------------------------
     */
    private notifyGlobalClick;
    private resetAllVariants;
    private dismissAllOtherPopups;
    private focusFirstDescendant;
    /**
     * EVENT BINDING
     * ------------------------------------------------------
     */
    private onBackdropClick;
    private onCloseClick;
    /**
     * RENDER
     * ------------------------------------------------------
     */
    render(): any;
}
