import { ComponentInstance, ComponentInternalInstance, Ref } from 'vue';
import { default as TopDialog } from '../dialog.vue';
import { MoveDirection } from '../../lib/types';
import { TopDialogComponent } from './types';
/**
 * Объект для работы с диалоговым окном
 *
 * Каждое окно уникально и может быть открыто одновременно только один раз
 *
 * Можно определить много окон, после чего с ними можно вести работу в любой части приложения
 */
export declare class TopDialogHandle<T extends TopDialogComponent> {
    /**
     * Индентификатор, определяется на уровне компонента TopDialogComponent
     *
     * Может использоваться в навигации для открытия нужных окон с нужными настройками
     */
    id: string;
    /**
     * ID, используемый в верстке диалогового окна
     */
    idAttr: string;
    /**
     * Пользовательский компонент диалогового окна
     */
    Component: T;
    /**
     * Компонент инициирован
     *
     * Устанавливается после первого вызова useTopDialog()
     */
    isMounted: Ref<boolean, boolean>;
    /**
     * Компонент готов к использованию
     *
     * Используется для внутренних преобразований после отрисовки
     */
    isReady: Ref<boolean, boolean>;
    /**
     * Диалоговое окно открыто
     */
    isOpened: Ref<boolean, boolean>;
    /**
     * Имя активной страницы дилогового окна
     */
    pageActive: Ref<string, string>;
    /**
     * Диалоговое окно находится в состоянии загрузки своей страницы
     */
    isLoadingPage: Ref<boolean, boolean>;
    /**
     * Следующая активная страница
     *
     * В один момент времени может потребоваться отобразить две страницы, чтобы воспроизвести анимацию
     */
    pageActiveNext: Ref<string, string>;
    /**
     * props компонента, доступны после инициализации
     */
    props?: ComponentInstance<T>['$props'];
    /**
     * emit базового компонента `TopDialog`
     */
    emit?: ComponentInstance<typeof TopDialog>['$emit'];
    /**
     * Одноразовое событие на закрытие диалогового окна
     *
     * Используется для привязки окна к сценариям использования
     */
    onCloseOnce?: (props: typeof this.props, pageName: string) => void;
    constructor(TopDialogComponent: T);
    /**
     * Событие - компонент инициирован
     */
    onMounted(topDialogComponent: ComponentInternalInstance, topDialogBaseComponent: ComponentInternalInstance): void;
    /**
     * Открыть диалоговое окно
     *
     * Учтите, что props в диалоговом окне будут доступны не сразу, а только после инициализации vue компонента
     */
    open(pageName?: string, props?: {}, args?: [], onCloseOnce?: typeof this.onCloseOnce, moveDirection?: MoveDirection): Promise<void>;
    /**
     * Открыть диалоговое окно как ссылку, для хеш-навигации
     *
     * Диалоговые окна загружаются по имени, см. настройку плагина Core topDialogLoader
     */
    openAsLink(pageName?: string, props?: {}, _args?: string[], onCloseOnce?: typeof this.onCloseOnce, moveDirection?: MoveDirection): Promise<void>;
    /**
     * Закрыть диалоговое окно
     *
     * Не меняет состояние компонента диалогового окна
     */
    close(): Promise<void>;
    /**
     * Размонтировать $.dialog
     */
    destroy(): Promise<void>;
    /**
     * Устанвоить props
     *
     * Полностью сбрасывается состояние props
     */
    setProps(props?: ComponentInstance<T>['$props']): Promise<void>;
    /**
     * Проверить, есть ли необходимость отрисовки страницы диалогового окна
     */
    needShowPage(pageName: string): boolean;
}
