import { default as Component } from '../../component';
import { OpenerProps } from '../popup/opener/types';
export interface PopupOptions {
    popup?: string;
    id?: string;
    p?: number;
    notch?: boolean;
    class?: string;
    posBy?: 'left' | 'right' | 'fixed' | Element;
    frontSelector?: string;
    invertX?: boolean;
    openByHover?: boolean;
    useOriginal?: boolean;
    transitionDuration?: number;
    isFullScreen?: boolean;
}
/**
 * Основной объект js компонента TopPopup
 *
 * Добавляет jQuery события на this.el, если jQuery загружен:
 *
 * - aftershow.top-menu-popup
 * - afterclose.top-menu-popup
 */
export declare class TopLibPopup<T extends Record<string, any> | undefined = Record<string, any>> extends Component {
    static componentName: string;
    el: HTMLElement & {
        __TopPopupOpenerProps: OpenerProps<T>;
    };
    elActiveByDefault: boolean | undefined;
    elPopup: HTMLElement | undefined;
    elPopupInner: HTMLElement | undefined;
    elPopupHeader: HTMLElement | undefined | null;
    elPopupWidget: HTMLElement | undefined | null;
    elPopupBody: HTMLElement | undefined | null;
    elPopupFooter: HTMLElement | undefined | null;
    elFront: HTMLElement | undefined | null;
    /**
     * Для openerIsInput фокусировка срабатывает при входе в поле ввода
     *
     * Фокусировка на сам Popup не производится
     *
     * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/combobox_role
     */
    openerIsInput: boolean;
    popupParent: TopLibPopup | undefined;
    $: JQuery<HTMLElement> | undefined;
    elStartPosition: HTMLElement | undefined | null;
    shift: {
        top: number;
        left: number;
    };
    isClosed: boolean;
    isFirstClick: boolean;
    type: string | undefined;
    options: PopupOptions;
    events: {};
    /**
     * Создать Popup
     * @param el - элемент, открывающий меню
     * @param options
     */
    constructor(el: HTMLElement, options: PopupOptions);
    mount(): Promise<void>;
    mountJQuery(): Promise<void>;
    /**
     * Выполнить фокусировку на нужный элемент после открытия окна
     */
    focus(): void;
    mountEvents(): void;
    /**
     * Обработка клика вне окна
     */
    private onMousedown;
    /**
     * Произошла фокусировка на этот popup
     */
    private onFocus;
    /**
     * Закрыть другие Popup при фокусе на элемент формы в текущем
     */
    private onFocusCloseOthers;
    /**
     * Закрыть Popup при отведении мыши
     */
    private onMouseleave;
    /**
     * Контроль положения Popup при fixed позиционировании
     */
    private onResize;
    unmount(): void;
    recalcPosition(pForce?: typeof this.options.p): void;
    onTouchmove(e: TouchEvent): void;
    close(): void;
    vueOpen(): Promise<void>;
    vueClose(): void;
    vueGetComponent(): any;
}
