import { type StyleValue } from 'vue';
import { type TransitionHookName } from '../../use';
export interface PopupProps {
    rootStyle?: StyleValue;
    rootClass?: string;
    visible?: boolean;
    duration?: number;
    effect?: 'slide-top' | 'slide-right' | 'slide-bottom' | 'slide-left' | 'zoom' | 'fade' | 'full-fade';
    overlay?: boolean;
    overlayClass?: string;
    overlayStyle?: string;
    background?: string;
    transparent?: boolean;
    keepRender?: boolean;
}
export declare const defaultPopupProps: {
    duration: number;
    effect: PopupProps["effect"];
    overlay: boolean;
};
export interface PopupSlots {
    default?(props: Record<string, never>): any;
}
export interface TransitionHookEmits {
    (e: 'before-enter'): void;
    (e: 'enter'): void;
    (e: 'after-enter'): void;
    (e: 'enter-cancelled'): void;
    (e: 'before-leave'): void;
    (e: 'leave'): void;
    (e: 'after-leave'): void;
    (e: 'leave-cancelled'): void;
    (e: 'visible-hook', name: TransitionHookName): void;
}
export interface PopupEmits extends TransitionHookEmits {
    (e: 'overlay-click', event: any): void;
}
export interface PopupContext {
    visibleState: TransitionHookName | undefined;
}
export declare const popupContextSymbol: unique symbol;
export declare function usePopupVisibleHookProvide(): (name: TransitionHookName) => void;
export declare function usePopupEnter(callback: () => void): void;
export declare function useInPopup(): boolean;
