import { type StyleValue } from 'vue';
import { type ButtonProps } from '../button';
import { type TransitionHookEmits } from '../popup/common';
export type DialogBeforeClose = (type: 'close' | 'cancel' | 'confirm', loading: {
    readonly cancel: boolean;
    readonly confirm: boolean;
    readonly close: boolean;
}) => any | Promise<any>;
export interface DialogProps {
    rootStyle?: StyleValue;
    rootClass?: string;
    popupStyle?: StyleValue;
    popupClass?: string;
    visible?: boolean;
    title?: string;
    message?: string;
    headed?: boolean;
    buttonType?: 'round' | 'text';
    showCancel?: boolean;
    cancelText?: string;
    showConfirm?: boolean;
    confirmText?: string;
    overlayClosable?: boolean;
    beforeClose?: DialogBeforeClose;
    duration?: number;
    cancelProps?: ButtonProps;
    confirmProps?: ButtonProps;
    id?: string;
}
export declare const defaultDialogProps: {
    headed: boolean;
    buttonType: DialogProps["buttonType"];
    showCancel: boolean;
    showConfirm: boolean;
    overlayClosable: boolean;
    duration: number;
};
export interface DialogSlots {
    default?(props: Record<string, never>): any;
}
export interface DialogEmits extends TransitionHookEmits {
    (e: 'update:visible', visible: boolean): void;
    (e: 'close'): void;
    (e: 'cancel'): void;
    (e: 'confirm'): void;
}
