import { Form, IFormProps } from "@formily/core";
import { IMiddleware } from "@formily/shared";
import type { ElDialog as ElDialogProps, ElButton as ElButtonProps } from "element-plus";
import { Component, VNode } from "vue";
type FormDialogContentProps = {
    form: Form;
};
type FormDialogContent = Component | ((props: FormDialogContentProps) => VNode);
type DialogTitle = string | number | Component | VNode | (() => VNode);
type IFormDialogProps = Omit<typeof ElDialogProps, "title"> & {
    title?: DialogTitle;
    footer?: null | Component | VNode | (() => VNode);
    cancelText?: string | Component | VNode | (() => VNode);
    cancelButtonProps?: typeof ElButtonProps;
    okText?: string | Component | VNode | (() => VNode);
    okButtonProps?: typeof ElButtonProps;
    beforeClose?: (cb: Function) => void;
    onOpen?: () => void;
    onOpend?: () => void;
    onClose?: () => void;
    onClosed?: () => void;
    onCancel?: () => void;
    onOK?: () => void;
    loadingText?: string;
};
export interface IFormDialog {
    forOpen(middleware: IMiddleware<IFormProps>): IFormDialog;
    forConfirm(middleware: IMiddleware<IFormProps>): IFormDialog;
    forCancel(middleware: IMiddleware<IFormProps>): IFormDialog;
    open(props?: IFormProps): Promise<any>;
    close(): void;
}
export interface IFormDialogComponentProps {
    content: FormDialogContent;
    resolve: () => any;
    reject: () => any;
}
export declare function FormDialog(title: IFormDialogProps | DialogTitle, content: FormDialogContent): IFormDialog;
export declare function FormDialog(title: IFormDialogProps | DialogTitle, id: string | symbol, content: FormDialogContent): IFormDialog;
export declare function FormDialog(title: DialogTitle, id: string, content: FormDialogContent): IFormDialog;
export declare namespace FormDialog {
    var Footer: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }> | null, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
    var Portal: import("vue").DefineComponent<{
        id: {
            type: (SymbolConstructor | StringConstructor)[];
            default: string | symbol;
        };
    }, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
        id: {
            type: (SymbolConstructor | StringConstructor)[];
            default: string | symbol;
        };
    }>>, {
        id: string | symbol;
    }, {}>;
}
export default FormDialog;
