import type { PropType, ExtractPropTypes, StyleValue } from 'vue';
import type { Arrayable, ComponentSize, JSXElement } from '../../_utils/types';
import type { HttpRequestHeader } from '../../download/src/props';
import { UploadUserFile } from '../../element-plus';
type IUploadButton = {
    text?: string;
    type?: 'default' | 'primary';
    icon?: JSXElement;
};
export type IFile = UploadUserFile & {
    name: string;
    url: string;
};
export declare const _props: {
    downloadWithHeaders: {
        type: PropType<boolean | HttpRequestHeader>;
        default: boolean;
    };
    headers: {
        type: PropType<HttpRequestHeader>;
    };
    size: {
        type: PropType<ComponentSize>;
        validator: (val: string) => boolean;
    };
    fileTypes: {
        type: PropType<string[]>;
        default: () => never[];
    };
    fileSize: {
        type: NumberConstructor;
        default: number;
    };
    draggable: {
        type: BooleanConstructor;
        default: boolean;
    };
    batchDownload: {
        type: PropType<boolean | ((fileList: IFile[]) => Promise<void>)>;
        default: boolean;
    };
    showTip: {
        type: BooleanConstructor;
        default: boolean;
    };
    dataKey: {
        type: StringConstructor;
        default: string;
    };
    beforeUpload: {
        type: FunctionConstructor;
        default: undefined;
    };
    fieldAliasMap: {
        type: PropType<Record<string, string> | (() => Record<string, string>)>;
    };
    button: {
        type: PropType<IUploadButton>;
        default: () => {};
    };
    class: {
        type: PropType<string | Arrayable<Record<string, boolean>>>;
    };
    style: {
        type: PropType<StyleValue>;
    };
    onPreview: {
        type: PropType<(file: IFile, cb: (file?: IFile) => void) => void>;
    };
    onRemove: {
        type: PropType<(file: IFile) => void>;
    };
    beforeRemove: {
        readonly type: PropType<(uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => boolean | Promise<boolean>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    onChange: {
        readonly type: PropType<(uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: () => void;
    };
    onSuccess: {
        readonly type: PropType<(response: any, uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: () => void;
    };
    onProgress: {
        readonly type: PropType<(evt: import("element-plus").UploadProgressEvent, uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: () => void;
    };
    onError: {
        readonly type: PropType<(error: Error, uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: () => void;
    };
    onExceed: {
        readonly type: PropType<(files: File[], uploadFiles: UploadUserFile[]) => void>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: () => void;
    };
    crossorigin: {
        readonly type: PropType<"" | "anonymous" | "use-credentials">;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    action: {
        readonly type: PropType<string>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: "#";
    };
    method: {
        readonly type: PropType<string>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: "post";
    };
    data: {
        readonly type: PropType<{
            [x: string]: any;
        } | Promise<{
            [x: string]: any;
        }>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: () => {};
    };
    multiple: BooleanConstructor;
    name: {
        readonly type: PropType<string>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: "file";
    };
    drag: BooleanConstructor;
    withCredentials: BooleanConstructor;
    showFileList: {
        readonly type: PropType<boolean>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: true;
    };
    accept: {
        readonly type: PropType<string>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: "";
    };
    fileList: {
        readonly type: PropType<UploadUserFile[]>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: () => [];
    };
    autoUpload: {
        readonly type: PropType<boolean>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: true;
    };
    listType: {
        readonly type: PropType<"text" | "picture" | "picture-card">;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: "text";
    };
    httpRequest: {
        readonly type: PropType<import("element-plus").UploadRequestHandler>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    } & {
        readonly default: import("element-plus").UploadRequestHandler;
    };
    disabled: BooleanConstructor;
    limit: NumberConstructor;
};
export declare const _emits: {
    "update:fileList": (fileList: IFile[]) => boolean;
    preview: (file: IFile, cb: any) => boolean;
    remove: (file: IFile) => boolean;
    sortChange: (fileList: IFile[]) => boolean;
};
export type UploadFileProps = ExtractPropTypes<typeof _props>;
export type UploadFileEmits = typeof _emits;
export {};
