import { ExtractPropTypes, PropType } from 'vue';
export declare const basicUploadCoreProps: {
    capture: {
        type: PropType<boolean | "user" | "environment">;
    };
    multipart: {
        type: BooleanConstructor;
        default: boolean;
    };
    name: {
        type: StringConstructor;
        default: string;
    };
    disabled: {
        type: BooleanConstructor;
    };
    componentTag: {
        type: PropType<any>;
        default: string;
    };
    action: {
        type: PropType<Action>;
    };
    method: {
        type: PropType<UploadRequestMethod>;
    };
    directory: {
        type: BooleanConstructor;
    };
    data: {
        type: PropType<Record<string, unknown> | ((file: RcFile | string | Blob) => Record<string, unknown>)>;
        default: () => {};
    };
    headers: {
        type: PropType<UploadRequestHeader>;
        default: () => {};
    };
    accept: {
        type: StringConstructor;
    };
    multiple: {
        type: BooleanConstructor;
    };
    onBatchStart: {
        type: PropType<(fileList: Array<{
            file: RcFile;
            parsedFile: Exclude<BeforeUploadFileType, boolean>;
        }>) => void>;
    };
    onReject: {
        type: PropType<(fileList: RcFile[]) => void>;
    };
    onStart: {
        type: PropType<(file: RcFile) => void>;
        default: () => void;
    };
    onError: {
        type: PropType<(error: Error, ret: Record<string, unknown>, file: RcFile) => void>;
        default: () => void;
    };
    onSuccess: {
        type: PropType<(response: Record<string, unknown>, file: RcFile, xhr: XMLHttpRequest) => void>;
        default: () => void;
    };
    onProgress: {
        type: PropType<(event: UploadProgressEvent, file: RcFile) => void>;
    };
    beforeUpload: {
        type: PropType<(file: RcFile, FileList: RcFile[]) => BeforeUploadFileType | Promise<unknown | BeforeUploadFileType>>;
        default: null;
    };
    customRequest: {
        type: PropType<(option: UploadRequestOption) => void>;
        default: null;
    };
    withCredentials: {
        type: BooleanConstructor;
        default: boolean;
    };
    openFileDialogOnClick: {
        type: BooleanConstructor;
        default: boolean;
    };
    prefixCls: {
        type: StringConstructor;
        default: string;
    };
    id: {
        type: StringConstructor;
    };
    onMouseenter: {
        type: PropType<(e: MouseEvent) => void>;
    };
    onMouseleave: {
        type: PropType<(e: MouseEvent) => void>;
    };
    onClick: {
        type: PropType<(e: MouseEvent | KeyboardEvent) => void>;
    };
};
export type BeforeUploadFileType = File | Blob | boolean | string;
export type Action = string | ((file: RcFile) => string | PromiseLike<string>);
export declare const uploadProps: () => {
    capture: PropType<boolean | "user" | "environment">;
    multipart: {
        type: BooleanConstructor;
        default: undefined;
    };
    name: StringConstructor;
    disabled: {
        type: BooleanConstructor;
        default: undefined;
    };
    componentTag: PropType<any>;
    action: PropType<Action>;
    method: PropType<UploadRequestMethod>;
    directory: {
        type: BooleanConstructor;
        default: undefined;
    };
    data: PropType<Record<string, unknown> | ((file: RcFile | string | Blob) => Record<string, unknown>)>;
    headers: PropType<UploadRequestHeader>;
    accept: StringConstructor;
    multiple: {
        type: BooleanConstructor;
        default: undefined;
    };
    onBatchStart: PropType<(fileList: Array<{
        file: RcFile;
        parsedFile: Exclude<BeforeUploadFileType, boolean>;
    }>) => void>;
    onReject: PropType<(fileList: RcFile[]) => void>;
    onStart: PropType<(file: RcFile) => void>;
    onError: PropType<(error: Error, ret: Record<string, unknown>, file: RcFile) => void>;
    onSuccess: PropType<(response: Record<string, unknown>, file: RcFile, xhr: XMLHttpRequest) => void>;
    onProgress: PropType<(event: UploadProgressEvent, file: RcFile) => void>;
    beforeUpload: PropType<(file: RcFile, FileList: RcFile[]) => BeforeUploadFileType | Promise<unknown | BeforeUploadFileType>>;
    customRequest: PropType<(option: UploadRequestOption) => void>;
    withCredentials: {
        type: BooleanConstructor;
        default: undefined;
    };
    openFileDialogOnClick: {
        type: BooleanConstructor;
        default: undefined;
    };
    prefixCls: StringConstructor;
    id: StringConstructor;
    onMouseenter: PropType<(e: MouseEvent) => void>;
    onMouseleave: PropType<(e: MouseEvent) => void>;
    onClick: PropType<(e: MouseEvent | KeyboardEvent) => void>;
};
export type UploadProps = Partial<ExtractPropTypes<ReturnType<typeof uploadProps>>>;
export interface UploadProgressEvent extends Partial<ProgressEvent> {
    percent?: number;
}
export type UploadRequestMethod = 'POST' | 'PUT' | 'PATCH' | 'post' | 'put' | 'patch';
export type UploadRequestHeader = Record<string, string>;
export interface UploadRequestError extends Error {
    status?: number;
    method?: UploadRequestMethod;
    url?: string;
}
export interface UploadRequestOption<T = any> {
    onProgress?: (event: UploadProgressEvent) => void;
    onError?: (event: UploadRequestError | ProgressEvent, body?: T) => void;
    onSuccess?: (body: T, xhr?: XMLHttpRequest) => void;
    data?: Record<string, unknown>;
    filename?: string;
    file: Exclude<BeforeUploadFileType, File | boolean> | RcFile;
    withCredentials?: boolean;
    action: string;
    headers?: UploadRequestHeader;
    method: UploadRequestMethod;
}
export interface RcFile extends File {
    uid: string;
}
export interface BasicUploadCoreContext {
    name: string;
}
//# sourceMappingURL=interface.d.ts.map