import { TopLibPopup } from './popup';
import { OpenerProps } from '../popup/opener/types';
export type Options = {
    /**
     * Глобальное событие, которое будет вызвано перед открытием TopPopup
     */
    decoratorBeforeOpen?: (popup: TopLibPopup) => void;
    /**
     * Глобальное событие, которое будет вызвано после открытия TopPopup
     */
    decoratorAfterOpen?: (popup: TopLibPopup) => void;
    /**
     * Определитель того, что клик вне Popup нужно игнорировать
     * @returns {boolean} - если true, то click не приведет к закрытию Popup
     */
    decoratorIsIgnoreOuterClick?: (e: MouseEvent) => boolean;
};
declare class Worker {
    /**
     * Глобальное выключение закрытия меню, используется при различных оверлеях
     */
    static noClose: boolean;
    /**
     * Для взаимодействия с vue
     */
    static vueConnectors: Map<any, any>;
    static options: Options;
    /**
     * Вернуть объект компонента popup, привязанный к элементу
     */
    static getPopup(elPopup: HTMLElement): TopLibPopup;
    static getElPopupOpener(el: Element): HTMLElement | null;
    static getPopupFromOpener(el: HTMLElement): TopLibPopup | null;
    /**
     * Вернуть все элементы с Popup
     */
    static getAll(): HTMLElement[];
    /**
     * Вернуть все элементы с открытыми Popup
     */
    static getAllVisible(): HTMLElement[];
    /**
     * Открыть Popup от указанного elOpener
     * @param {HTMLElement} elOpener - элемент, который должен вызвать открытие Popup
     */
    static openByOpener(elOpener: HTMLElement): Promise<TopLibPopup | undefined>;
    /**
     * Создать и открыть Popup
     * @param elOpener - элемент, вызвавший открытие Popup
     * @param options - опции Popup
     */
    private static open;
    static close(elPopup: HTMLElement, restoreFocus?: boolean): void;
    static recalcPosition(elPopup: HTMLElement): void;
    /**
     * Скролл к активному элементу списка
     */
    static scrollToActive(elPopup: HTMLElement): void;
    static decoratorBeforeOpen(popup: TopLibPopup<any>): void;
    static decoratorAfterOpen(popup: TopLibPopup<any>): void;
    static decoratorIsIgnoreOuterClick(e: MouseEvent): boolean;
    /**
     * Зарегистрировать Vue компонент
     *
     * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js
     */
    static regVueComponent(id: string, vueConnector: any): void;
    /**
     * Снять с регистрации Vue компонент
     */
    static unregVueComponent(id: string): void;
    /**
     * Сгенерировать элемент для открытия popup
     */
    static genElPopupOpener(tagName: string, props: OpenerProps, ...elsChildrens: HTMLElement[] | string[]): HTMLElement;
}
export default Worker;
