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/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => import("element-plus/es/utils/typescript").Awaitable<boolean>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    onChange: import("element-plus/es/utils/vue/props/types").EpPropFinalized<(new (...args: any[]) => (uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | (() => (uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | {
        (): (uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void;
        new (): any;
        readonly prototype: any;
    } | ((new (...args: any[]) => (uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | (() => (uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | {
        (): (uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void;
        new (): any;
        readonly prototype: any;
    } | null)[], unknown, unknown, () => void, boolean>;
    onSuccess: import("element-plus/es/utils/vue/props/types").EpPropFinalized<(new (...args: any[]) => (response: any, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | (() => (response: any, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | {
        (): (response: any, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void;
        new (): any;
        readonly prototype: any;
    } | ((new (...args: any[]) => (response: any, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | (() => (response: any, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | {
        (): (response: any, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void;
        new (): any;
        readonly prototype: any;
    } | null)[], unknown, unknown, () => void, boolean>;
    onProgress: import("element-plus/es/utils/vue/props/types").EpPropFinalized<(new (...args: any[]) => (evt: import("element-plus/es/components/upload/src/upload").UploadProgressEvent, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | (() => (evt: import("element-plus/es/components/upload/src/upload").UploadProgressEvent, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | {
        (): (evt: import("element-plus/es/components/upload/src/upload").UploadProgressEvent, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void;
        new (): any;
        readonly prototype: any;
    } | ((new (...args: any[]) => (evt: import("element-plus/es/components/upload/src/upload").UploadProgressEvent, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | (() => (evt: import("element-plus/es/components/upload/src/upload").UploadProgressEvent, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | {
        (): (evt: import("element-plus/es/components/upload/src/upload").UploadProgressEvent, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void;
        new (): any;
        readonly prototype: any;
    } | null)[], unknown, unknown, () => void, boolean>;
    onError: import("element-plus/es/utils/vue/props/types").EpPropFinalized<(new (...args: any[]) => (error: Error, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | (() => (error: Error, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | {
        (): (error: Error, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void;
        new (): any;
        readonly prototype: any;
    } | ((new (...args: any[]) => (error: Error, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | (() => (error: Error, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void) | {
        (): (error: Error, uploadFile: import("element-plus/es/components/upload/src/upload").UploadFile, uploadFiles: import("element-plus/es/components/upload/src/upload").UploadFiles) => void;
        new (): any;
        readonly prototype: any;
    } | null)[], unknown, unknown, () => void, boolean>;
    onExceed: import("element-plus/es/utils/vue/props/types").EpPropFinalized<(new (...args: any[]) => (files: File[], uploadFiles: UploadUserFile[]) => void) | (() => (files: File[], uploadFiles: UploadUserFile[]) => void) | {
        (): (files: File[], uploadFiles: UploadUserFile[]) => void;
        new (): any;
        readonly prototype: any;
    } | ((new (...args: any[]) => (files: File[], uploadFiles: UploadUserFile[]) => void) | (() => (files: File[], uploadFiles: UploadUserFile[]) => void) | {
        (): (files: File[], uploadFiles: UploadUserFile[]) => void;
        new (): any;
        readonly prototype: any;
    } | null)[], unknown, unknown, () => void, boolean>;
    crossorigin: {
        readonly type: PropType<import("element-plus/es/utils/vue/props/types").EpPropMergeType<(new (...args: any[]) => "" | "anonymous" | "use-credentials") | (() => "" | "anonymous" | "use-credentials") | ((new (...args: any[]) => "" | "anonymous" | "use-credentials") | (() => "" | "anonymous" | "use-credentials") | null)[], unknown, unknown>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    action: import("element-plus/es/utils/vue/props/types").EpPropFinalized<StringConstructor, unknown, unknown, "#", boolean>;
    method: import("element-plus/es/utils/vue/props/types").EpPropFinalized<StringConstructor, unknown, unknown, "post", boolean>;
    data: import("element-plus/es/utils/vue/props/types").EpPropFinalized<(new (...args: any[]) => import("element-plus/es/utils/typescript").Mutable<Record<string, any>> | Promise<import("element-plus/es/utils/typescript").Mutable<Record<string, any>>> | ((rawFile: import("element-plus/es/components/upload/src/upload").UploadRawFile) => import("element-plus/es/utils/typescript").Awaitable<import("element-plus/es/utils/typescript").Mutable<Record<string, any>>>)) | (() => import("element-plus/es/utils/typescript").Awaitable<import("element-plus/es/utils/typescript").Mutable<Record<string, any>>> | ((rawFile: import("element-plus/es/components/upload/src/upload").UploadRawFile) => import("element-plus/es/utils/typescript").Awaitable<import("element-plus/es/utils/typescript").Mutable<Record<string, any>>>)) | ((new (...args: any[]) => import("element-plus/es/utils/typescript").Mutable<Record<string, any>> | Promise<import("element-plus/es/utils/typescript").Mutable<Record<string, any>>> | ((rawFile: import("element-plus/es/components/upload/src/upload").UploadRawFile) => import("element-plus/es/utils/typescript").Awaitable<import("element-plus/es/utils/typescript").Mutable<Record<string, any>>>)) | (() => import("element-plus/es/utils/typescript").Awaitable<import("element-plus/es/utils/typescript").Mutable<Record<string, any>>> | ((rawFile: import("element-plus/es/components/upload/src/upload").UploadRawFile) => import("element-plus/es/utils/typescript").Awaitable<import("element-plus/es/utils/typescript").Mutable<Record<string, any>>>)) | null)[], unknown, unknown, () => import("element-plus/es/utils/typescript").Mutable<{}>, boolean>;
    multiple: BooleanConstructor;
    name: import("element-plus/es/utils/vue/props/types").EpPropFinalized<StringConstructor, unknown, unknown, "file", boolean>;
    drag: BooleanConstructor;
    withCredentials: BooleanConstructor;
    showFileList: import("element-plus/es/utils/vue/props/types").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    accept: import("element-plus/es/utils/vue/props/types").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
    fileList: import("element-plus/es/utils/vue/props/types").EpPropFinalized<(new (...args: any[]) => UploadUserFile[]) | (() => UploadUserFile[]) | ((new (...args: any[]) => UploadUserFile[]) | (() => UploadUserFile[]) | null)[], unknown, unknown, () => [], boolean>;
    autoUpload: import("element-plus/es/utils/vue/props/types").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    listType: import("element-plus/es/utils/vue/props/types").EpPropFinalized<StringConstructor, "text" | "picture" | "picture-card", unknown, "text", boolean>;
    httpRequest: import("element-plus/es/utils/vue/props/types").EpPropFinalized<(new (...args: any[]) => import("element-plus/es/components/upload/src/upload").UploadRequestHandler) | (() => import("element-plus/es/components/upload/src/upload").UploadRequestHandler) | {
        (): import("element-plus/es/components/upload/src/upload").UploadRequestHandler;
        new (): any;
        readonly prototype: any;
    } | ((new (...args: any[]) => import("element-plus/es/components/upload/src/upload").UploadRequestHandler) | (() => import("element-plus/es/components/upload/src/upload").UploadRequestHandler) | {
        (): import("element-plus/es/components/upload/src/upload").UploadRequestHandler;
        new (): any;
        readonly prototype: any;
    } | null)[], unknown, unknown, import("element-plus/es/components/upload/src/upload").UploadRequestHandler, boolean>;
    disabled: import("element-plus/es/utils/vue/props/types").EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
    limit: NumberConstructor;
    directory: BooleanConstructor;
};
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 {};
