/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { BaseComponent, IBaseComponent } from '../core/base/base-component';
import { IPopupPosition, IPopupPositionEventData, PopupAnimationType, PopupPlacement, PopupStateCallback } from './popup-constants';
export interface IPopupComponent extends IBaseComponent {
    targetElement: HTMLElement;
    placement: PopupPlacement;
    fallbackPlacements: PopupPlacement[];
    open: boolean;
    manageFocus: boolean;
    animationType: `${PopupAnimationType}`;
    static: boolean;
    offset: IPopupPosition;
    hideWhenClipped: boolean;
    position(): void;
    openCallback: PopupStateCallback;
    closeCallback: PopupStateCallback;
}
export interface IPopupCloseEventData {
    popup: IPopupComponent;
}
declare global {
    interface HTMLElementTagNameMap {
        'forge-popup': IPopupComponent;
    }
    interface HTMLElementEventMap {
        'forge-popup-open': CustomEvent<void>;
        'forge-popup-close': CustomEvent<IPopupCloseEventData>;
        'forge-popup-position': CustomEvent<IPopupPositionEventData>;
        'forge-popup-blur': CustomEvent<void>;
    }
}
/**
 * The web component class behind the `<forge-popup>` custom element.
 *
 * @tag forge-popup
 */
export declare class PopupComponent extends BaseComponent implements IPopupComponent {
    private _foundation;
    static get observedAttributes(): string[];
    constructor();
    disconnectedCallback(): void;
    attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
    targetElement: HTMLElement;
    placement: `${PopupPlacement}`;
    fallbackPlacements: `${PopupPlacement}`[];
    open: boolean;
    manageFocus: boolean;
    animationType: `${PopupAnimationType}`;
    static: boolean;
    hideWhenClipped: boolean;
    openCallback: PopupStateCallback;
    closeCallback: PopupStateCallback;
    offset: IPopupPosition;
    position(): void;
}
