import type { PropType, CSSProperties, ExtractPropTypes, StyleValue } from 'vue';
import type { Arrayable, ComponentSize, JSXElement } from '../../_utils/types';
export declare const _props: {
    visible: {
        type: BooleanConstructor;
        default: boolean;
    };
    title: {
        type: PropType<string | JSXElement>;
    };
    size: {
        type: PropType<ComponentSize>;
        validator: (val: string) => boolean;
    };
    width: {
        type: PropType<string | number>;
        default: string;
        validator: (val: string | number) => boolean;
    };
    height: {
        type: PropType<string | number>;
        default: string;
        validator: (val: string | number) => boolean;
    };
    top: {
        type: StringConstructor;
        default: string;
        validator: (val: string) => boolean;
    };
    loading: {
        type: BooleanConstructor;
    };
    useHeight: {
        type: BooleanConstructor;
    };
    draggable: {
        type: BooleanConstructor;
        default: boolean;
    };
    showClose: {
        type: BooleanConstructor;
        default: boolean;
    };
    showHeader: {
        type: BooleanConstructor;
        default: boolean;
    };
    showFullScreen: {
        type: BooleanConstructor;
        default: boolean;
    };
    closeOnClickModal: {
        type: BooleanConstructor;
    };
    closeOnPressEscape: {
        type: BooleanConstructor;
        default: boolean;
    };
    destroyOnClose: {
        type: BooleanConstructor;
        default: boolean;
    };
    beforeClose: {
        type: PropType<() => boolean | Promise<void>>;
    };
    bodyStyle: {
        type: PropType<string | CSSProperties>;
    };
    class: {
        type: PropType<string | Arrayable<Record<string, boolean>>>;
    };
    style: {
        type: PropType<StyleValue>;
    };
    appendToBody: BooleanConstructor;
    appendTo: import("element-plus/es/utils/vue/props/types").EpPropFinalized<(new (...args: any[]) => string | HTMLElement) | (() => string | HTMLElement) | ((new (...args: any[]) => string | HTMLElement) | (() => string | HTMLElement) | null)[], unknown, unknown, "body", boolean>;
    lockScroll: import("element-plus/es/utils/vue/props/types").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    modal: import("element-plus/es/utils/vue/props/types").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    modalPenetrable: BooleanConstructor;
    openDelay: import("element-plus/es/utils/vue/props/types").EpPropFinalized<NumberConstructor, unknown, unknown, 0, boolean>;
    closeDelay: import("element-plus/es/utils/vue/props/types").EpPropFinalized<NumberConstructor, unknown, unknown, 0, boolean>;
    modelValue: BooleanConstructor;
    modalClass: StringConstructor;
    headerClass: StringConstructor;
    bodyClass: StringConstructor;
    footerClass: StringConstructor;
    zIndex: {
        readonly type: PropType<number>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    trapFocus: BooleanConstructor;
    headerAriaLevel: import("element-plus/es/utils/vue/props/types").EpPropFinalized<StringConstructor, unknown, unknown, "2", boolean>;
    transition: import("element-plus/es/utils/vue/props/types").EpPropFinalized<(new (...args: any[]) => string | import("vue").TransitionProps) | (() => import("element-plus/es/components/dialog/src/dialog").DialogTransition) | ((new (...args: any[]) => string | import("vue").TransitionProps) | (() => import("element-plus/es/components/dialog/src/dialog").DialogTransition) | null)[], unknown, unknown, undefined, boolean>;
    center: BooleanConstructor;
    alignCenter: import("element-plus/es/utils/vue/props/types").EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
    closeIcon: {
        readonly type: PropType<import("element-plus/es/utils/vue/props/types").EpPropMergeType<(new (...args: any[]) => (string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) & {}) | (() => string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) | ((new (...args: any[]) => (string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) & {}) | (() => string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) | null)[], unknown, unknown>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    overflow: import("element-plus/es/utils/vue/props/types").EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
    fullscreen: BooleanConstructor;
    ariaLevel: import("element-plus/es/utils/vue/props/types").EpPropFinalized<StringConstructor, unknown, unknown, "2", boolean>;
};
export declare const _emits: {
    "update:visible": (value: boolean) => boolean;
    open: () => boolean;
    opened: () => boolean;
    close: () => boolean;
    closed: () => boolean;
    fullChange: (value: boolean) => boolean;
    afterVisibleChange: (value: boolean) => boolean;
};
export type ModalProps = ExtractPropTypes<typeof _props>;
export type ModalEmits = typeof _emits;
export type ModalInstance = {
    DO_CLOSE: () => void;
    START_LOADING: () => void;
    STOP_LOADING: () => void;
};
