import { type StyleValue } from 'vue';
import { type TransitionHookName } from '../../use';
import { type DefaultProps } from '../config';
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;
    overlayClosable?: boolean;
    lockScroll?: boolean;
    backPress?: 'close' | 'back';
}
export declare const defaultPopupProps: () => DefaultProps<PopupProps>;
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 TransitionHookCallbacks {
    onVisibleHook?: (name: TransitionHookName) => void;
    onBeforeEnter?: () => void;
    onEnter?: () => void;
    onAfterEnter?: () => void;
    onEnterCancelled?: () => void;
    onBeforeLeave?: () => void;
    onLeave?: () => void;
    onAfterLeave?: () => void;
    onLeaveCancelled?: () => void;
}
export interface PopupEmits extends TransitionHookEmits {
    (e: 'overlay-click', event: any): void;
    (e: 'update:visible', visible: boolean): void;
    (e: 'back-press'): 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): {
    context: PopupContext | null;
};
export declare function useInPopup(): boolean;
