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: {
        readonly type: PropType<string | HTMLElement>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: "body";
    };
    lockScroll: {
        readonly type: PropType<boolean>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: true;
    };
    modal: {
        readonly type: PropType<boolean>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: true;
    };
    openDelay: {
        readonly type: PropType<number>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: 0;
    };
    closeDelay: {
        readonly type: PropType<number>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: 0;
    };
    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: {
        readonly type: PropType<string>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: "2";
    };
    center: BooleanConstructor;
    alignCenter: BooleanConstructor;
    closeIcon: {
        readonly type: PropType<string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    overflow: BooleanConstructor;
    fullscreen: BooleanConstructor;
    ariaLevel: {
        readonly type: PropType<string>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: "2";
    };
};
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;
};
