import { ModulVue } from '../../utils/vue/vue';
import { MOpenTrigger } from '../open-trigger/open-trigger';
export interface PortalMixin {
    propOpen: boolean;
    preload: boolean;
    loaded: boolean;
    getPortalElement(): HTMLElement;
    getReference(): HTMLElement | undefined;
    getTrigger(): HTMLElement | undefined;
    setFocusToPortal(): void;
    setFocusToTrigger(): void;
    tryClose(): void;
}
export interface PortalMixinImpl {
    doCustomPropOpen(value: boolean, el: HTMLElement): boolean;
    handlesFocus(): boolean;
    getBackdropMode(): BackdropMode;
    getPortalElement(): HTMLElement;
}
export declare enum BackdropMode {
    None = 0,
    ScrollOnly = 1,
    BackdropFast = 2,
    BackdropSlow = 3
}
export declare enum PortalTransitionDuration {
    Fast = 200,
    Regular = 300,
    Slow = 450,
    XSlow = 600
}
export declare class Portal extends ModulVue implements PortalMixin {
    readonly openTrigger: MOpenTrigger;
    readonly open: boolean;
    readonly id: string;
    readonly disabled: boolean;
    readonly reference: HTMLElement;
    readonly trigger: HTMLElement;
    readonly className: string;
    readonly preload: boolean;
    readonly lazy: boolean;
    loaded: boolean;
    propId: string;
    private internalTrigger;
    private portalTargetEl;
    private internalOpen;
    private stackId;
    private internalTransitionDuration;
    private opening;
    private portalTargetCreated;
    private portalTargetMounted;
    private clickEventListener;
    private mouseenterEventListener;
    private mousedownEventListener;
    emitUpdateOpen(open: boolean): void;
    emitOpen(): void;
    emitClose(): void;
    emitPortalMounted(): void;
    emitPortalAfterOpen(): void;
    emitPortalAfterClose(): void;
    emitAfterEnter(_el: HTMLElement): void;
    emitClick(event: MouseEvent): void;
    onOpenChange(open: boolean): void;
    setFocusToPortal(): void;
    setFocusToTrigger(): void;
    getPortalElement(): HTMLElement;
    getReference(): HTMLElement | undefined;
    getTrigger(): HTMLElement | undefined;
    tryClose(): Promise<void>;
    protected created(): void;
    protected mounted(): void;
    protected beforeDestroy(): void;
    get propOpen(): boolean;
    manageOpeningAndClosing(open: boolean): void;
    set propOpen(open: boolean);
    get transitionDuration(): number;
    set transitionDuration(speed: number);
    get portalTargetSelector(): string;
    get portalCreated(): boolean;
    get portalMounted(): boolean;
    private onTriggerChange;
    private onTriggerHookChange;
    private handleTrigger;
    private toggle;
    private handleMouseEnter;
    private ensurePortalTargetEl;
}
//# sourceMappingURL=portal.d.ts.map