import type { ButtonProps } from 'ant-design-vue/es/button/buttonTypes';
import type { CSSProperties, ComputedRef, PropType, VNodeChild } from 'vue';
export declare type VueNode = VNodeChild | JSX.Element;
export declare const modalProps: {
    visible: {
        type: BooleanConstructor;
    };
    scrollTop: {
        type: BooleanConstructor;
        default: boolean;
    };
    height: {
        type: NumberConstructor;
    };
    minHeight: {
        type: NumberConstructor;
    };
    draggable: {
        type: BooleanConstructor;
        default: boolean;
    };
    centered: {
        type: BooleanConstructor;
    };
    cancelText: {
        type: StringConstructor;
    };
    okText: {
        type: StringConstructor;
    };
    closeFunc: PropType<() => Promise<boolean>>;
};
export declare const basicProps: {
    visible: {
        type: BooleanConstructor;
    };
    scrollTop: {
        type: BooleanConstructor;
        default: boolean;
    };
    height: {
        type: NumberConstructor;
    };
    minHeight: {
        type: NumberConstructor;
    };
    draggable: {
        type: BooleanConstructor;
        default: boolean;
    };
    centered: {
        type: BooleanConstructor;
    };
    cancelText: {
        type: StringConstructor;
    };
    okText: {
        type: StringConstructor;
    };
    closeFunc: PropType<() => Promise<boolean>>;
} & {
    defaultFullscreen: {
        type: BooleanConstructor;
    };
    canFullscreen: {
        type: BooleanConstructor;
        default: boolean;
    };
    wrapperFooterOffset: {
        type: NumberConstructor;
        default: number;
    };
    helpMessage: PropType<string | string[]>;
    useWrapper: {
        type: BooleanConstructor;
        default: boolean;
    };
    loading: {
        type: BooleanConstructor;
    };
    loadingTip: {
        type: StringConstructor;
    };
    /**
     * @description: Show close button
     */
    showCancelBtn: {
        type: BooleanConstructor;
        default: boolean;
    };
    /**
     * @description: Show confirmation button
     */
    showOkBtn: {
        type: BooleanConstructor;
        default: boolean;
    };
    wrapperProps: PropType<Partial<ModalWrapperProps>>;
    afterClose: PropType<() => Promise<VueNode>>;
    bodyStyle: PropType<CSSProperties>;
    style: PropType<CSSProperties>;
    closable: {
        type: BooleanConstructor;
        default: boolean;
    };
    closeIcon: PropType<VueNode>;
    confirmLoading: {
        type: BooleanConstructor;
    };
    destroyOnClose: {
        type: BooleanConstructor;
    };
    footer: PropType<VueNode>;
    getContainer: PropType<() => any>;
    mask: {
        type: BooleanConstructor;
        default: boolean;
    };
    maskClosable: {
        type: BooleanConstructor;
        default: boolean;
    };
    keyboard: {
        type: BooleanConstructor;
        default: boolean;
    };
    maskStyle: PropType<CSSProperties>;
    okType: {
        type: StringConstructor;
        default: string;
    };
    okButtonProps: PropType<Partial<{
        prefixCls?: unknown;
        type?: unknown;
        htmlType?: unknown;
        shape?: unknown;
        size?: unknown;
        loading?: unknown;
        disabled?: unknown;
        ghost?: unknown;
        block?: unknown;
        danger?: unknown;
        icon?: unknown;
        href?: unknown;
        target?: unknown;
        title?: unknown;
        onClick?: unknown;
        onMousedown?: unknown;
    } & {
        htmlType: import("ant-design-vue/es/button/buttonTypes").ButtonHTMLType;
        loading: boolean | {
            delay?: number | undefined;
        };
    } & {
        type?: import("ant-design-vue/es/button/buttonTypes").ButtonType | undefined;
        target?: string | undefined;
        size?: import("ant-design-vue/es/button").ButtonSize;
        icon?: any;
        prefixCls?: string | undefined;
        ghost?: boolean | undefined;
        shape?: import("ant-design-vue/es/button/buttonTypes").ButtonShape | undefined;
        block?: boolean | undefined;
        danger?: boolean | undefined;
        href?: string | undefined;
        title?: string | undefined;
        disabled?: boolean | undefined;
        onClick?: ((event: MouseEvent) => void) | undefined;
        onMousedown?: ((event: MouseEvent) => void) | undefined;
    }>>;
    cancelButtonProps: PropType<Partial<{
        prefixCls?: unknown;
        type?: unknown;
        htmlType?: unknown;
        shape?: unknown;
        size?: unknown;
        loading?: unknown;
        disabled?: unknown;
        ghost?: unknown;
        block?: unknown;
        danger?: unknown;
        icon?: unknown;
        href?: unknown;
        target?: unknown;
        title?: unknown;
        onClick?: unknown;
        onMousedown?: unknown;
    } & {
        htmlType: import("ant-design-vue/es/button/buttonTypes").ButtonHTMLType;
        loading: boolean | {
            delay?: number | undefined;
        };
    } & {
        type?: import("ant-design-vue/es/button/buttonTypes").ButtonType | undefined;
        target?: string | undefined;
        size?: import("ant-design-vue/es/button").ButtonSize;
        icon?: any;
        prefixCls?: string | undefined;
        ghost?: boolean | undefined;
        shape?: import("ant-design-vue/es/button/buttonTypes").ButtonShape | undefined;
        block?: boolean | undefined;
        danger?: boolean | undefined;
        href?: string | undefined;
        title?: string | undefined;
        disabled?: boolean | undefined;
        onClick?: ((event: MouseEvent) => void) | undefined;
        onMousedown?: ((event: MouseEvent) => void) | undefined;
    }>>;
    title: {
        type: StringConstructor;
    };
    visible: {
        type: BooleanConstructor;
    };
    width: PropType<string | number>;
    wrapClassName: {
        type: StringConstructor;
    };
    zIndex: {
        type: NumberConstructor;
    };
};
/**
 * @description: 弹窗对外暴露的方法
 */
export interface ModalMethods {
    redoThumbHeight: () => void;
    setModalProps: (props: Partial<ModalProps>) => void;
    emitVisible?: (visible: boolean, uid: number) => void;
    redoModalHeight?: () => void;
}
declare type RegisterFn = (modalMethods: ModalMethods, uuid?: string) => void;
export interface ModalReturnMethods extends ModalMethods {
    openModal: <T = any>(props?: boolean, data?: T, openOnSet?: boolean) => void;
    closeModal: () => void;
    getVisible?: ComputedRef<boolean>;
}
export declare type UseModalReturnType = [RegisterFn, ModalReturnMethods];
export interface ReturnInnerMethods extends ModalMethods {
    closeModal: () => void;
    changeLoading: (loading: boolean) => void;
    changeOkLoading: (loading: boolean) => void;
    getVisible?: ComputedRef<boolean>;
    redoModalHeight: () => void;
}
export declare type UseModalInnerReturnType = [RegisterFn, ReturnInnerMethods];
export interface ModalProps {
    minHeight?: number;
    height?: number;
    wrapperFooterOffset?: number;
    draggable?: boolean;
    scrollTop?: boolean;
    canFullscreen?: boolean;
    defaultFullscreen?: boolean;
    visible?: boolean;
    helpMessage: string | string[];
    useWrapper: boolean;
    loading: boolean;
    loadingTip?: string;
    wrapperProps: Omit<ModalWrapperProps, 'loading'>;
    showOkBtn: boolean;
    showCancelBtn: boolean;
    closeFunc: () => Promise<any>;
    /**
     * Specify a function that will be called when modal is closed completely.
     * @type Function
     */
    afterClose?: () => any;
    /**
     * Body style for modal body element. Such as height, padding etc.
     * @default {}
     * @type object
     */
    bodyStyle?: CSSProperties;
    style?: CSSProperties;
    /**
     * Text of the Cancel button
     * @default 'cancel'
     * @type string
     */
    cancelText?: string;
    /**
     * Centered Modal
     * @default false
     * @type boolean
     */
    centered?: boolean;
    /**
     * Whether a close (x) button is visible on top right of the modal dialog or not
     * @default true
     * @type boolean
     */
    closable?: boolean;
    /**
     * Whether a close (x) button is visible on top right of the modal dialog or not
     */
    closeIcon?: VNodeChild | JSX.Element;
    /**
     * Whether to apply loading visual effect for OK button or not
     * @default false
     * @type boolean
     */
    confirmLoading?: boolean;
    /**
     * Whether to unmount child components on onClose
     * @default false
     * @type boolean
     */
    destroyOnClose?: boolean;
    /**
     * Footer content, set as :footer="null" when you don't need default buttons
     * @default OK and Cancel buttons
     * @type any (string | slot)
     */
    footer?: VNodeChild | JSX.Element;
    /**
     * Return the mount node for Modal
     * @default () => document.body
     * @type Function
     */
    getContainer?: (instance: any) => HTMLElement;
    /**
     * Whether show mask or not.
     * @default true
     * @type boolean
     */
    mask?: boolean;
    /**
     * Whether to close the modal dialog when the mask (area outside the modal) is clicked
     * @default true
     * @type boolean
     */
    maskClosable?: boolean;
    /**
     * Style for modal's mask element.
     * @default {}
     * @type object
     */
    maskStyle?: CSSProperties;
    /**
     * Text of the OK button
     * @default 'OK'
     * @type string
     */
    okText?: string;
    /**
     * Button type of the OK button
     * @default 'primary'
     * @type string
     */
    okType?: 'primary' | 'danger' | 'dashed' | 'ghost' | 'default';
    /**
     * The ok button props, follow jsx rules
     * @type object
     */
    okButtonProps?: ButtonProps;
    /**
     * The cancel button props, follow jsx rules
     * @type object
     */
    cancelButtonProps?: ButtonProps;
    /**
     * The modal dialog's title
     * @type any (string | slot)
     */
    title?: VNodeChild | JSX.Element;
    /**
     * Width of the modal dialog
     * @default 520
     * @type string | number
     */
    width?: string | number;
    /**
     * The class name of the container of the modal dialog
     * @type string
     */
    wrapClassName?: string;
    /**
     * The z-index of the Modal
     * @default 1000
     * @type number
     */
    zIndex?: number;
}
export interface ModalWrapperProps {
    footerOffset?: number;
    loading: boolean;
    modalHeaderHeight: number;
    modalFooterHeight: number;
    minHeight: number;
    height: number;
    visible: boolean;
    fullScreen: boolean;
    useWrapper: boolean;
}
export declare type Recordable<T = any> = Record<string, T>;
export declare type Record<K extends keyof any, T> = {
    [P in K]: T;
};
export interface ComponentElRef<T extends HTMLElement = HTMLDivElement> {
    $el: T;
}
export declare type ComponentRef<T extends HTMLElement = HTMLDivElement> = ComponentElRef<T> | null;
export interface Fn<T = any, R = T> {
    (...arg: T[]): R;
}
export declare type Nullable<T> = T | null;
export declare type ElRef<T extends HTMLElement = HTMLDivElement> = Nullable<T>;
export {};
