import { ExtractPropTypes, PropType } from 'vue';
import { UploadAjaxError } from './ajax';
import { default as Upload } from './upload.vue';
export declare const uploadListTypes: readonly ["text", "picture", "picture-card"];
export declare const genFileId: () => number;
export type UploadStatus = 'ready' | 'uploading' | 'success' | 'fail';
export type UploadProgressEvent = ProgressEvent & {
    percent: number;
};
export interface UploadRequestOptions {
    action: string;
    method: string;
    data: Record<string, string | Blob | [Blob, string]>;
    filename: string;
    file: UploadRawFile;
    headers: Headers | Record<string, string | number | null | undefined>;
    onError: (evt: UploadAjaxError) => void;
    onProgress: (evt: UploadProgressEvent) => void;
    onSuccess: (response: any) => void;
}
export interface UploadFile {
    uid?: number;
    name: string;
    url?: string;
    percentage?: number;
    raw?: UploadRawFile;
    size?: number;
    status: UploadStatus;
    response?: unknown;
}
export type UploadFiles = UploadFile[];
export declare const uploadBaseProps: {
    readonly fileList: {
        readonly type: PropType<UploadFiles>;
        readonly default: () => readonly [];
    };
    readonly action: {
        readonly type: StringConstructor;
        readonly default: "";
    };
    readonly multiple: {
        readonly type: BooleanConstructor;
        readonly default: false;
    };
    readonly name: {
        readonly type: StringConstructor;
        readonly default: "file";
    };
    readonly accept: {
        readonly type: StringConstructor;
        readonly default: "";
    };
    readonly method: {
        readonly type: StringConstructor;
        readonly default: "post";
    };
    readonly headers: {
        readonly type: ObjectConstructor;
        readonly default: () => {};
    };
    readonly data: {
        readonly type: ObjectConstructor;
        readonly default: () => {};
    };
    readonly autoUpload: {
        readonly type: BooleanConstructor;
        readonly default: true;
    };
    readonly listType: {
        readonly type: StringConstructor;
        readonly values: readonly ["text", "picture", "picture-card"];
        readonly default: "text";
    };
    readonly limit: {
        readonly type: NumberConstructor;
    };
    readonly drag: {
        readonly type: BooleanConstructor;
        readonly default: false;
    };
    readonly directory: {
        readonly type: BooleanConstructor;
        readonly default: false;
    };
    readonly disabled: {
        readonly type: BooleanConstructor;
        readonly default: false;
    };
};
export type UploadRawFile = File & {
    uid: number;
};
export declare const uploadProps: {
    readonly beforeUpload: {
        readonly type: PropType<(file: UploadRawFile) => Promise<boolean> | boolean>;
        readonly default: () => void;
    };
    readonly onPreview: {
        readonly type: PropType<(file: UploadFile) => void>;
        readonly default: () => void;
    };
    readonly onChange: {
        readonly type: PropType<(file: UploadFile, uploadFiles: UploadFiles) => void>;
        readonly default: () => void;
    };
    readonly beforeRemove: {
        readonly type: PropType<(file: UploadFile, uploadFiles: UploadFiles) => Promise<boolean> | boolean>;
        readonly default: () => void;
    };
    readonly onProgress: {
        readonly type: PropType<(evt: UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void>;
        readonly default: () => void;
    };
    readonly onRemove: {
        readonly type: PropType<(file: UploadFile, uploadFiles: UploadFiles) => void>;
        readonly default: () => void;
    };
    readonly onSuccess: {
        readonly type: PropType<(response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void>;
        readonly default: () => void;
    };
    readonly onError: {
        readonly type: PropType<(error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void>;
        readonly default: () => void;
    };
    readonly onExceed: {
        readonly type: PropType<(files: File[], uploadFiles: UploadFile[]) => void>;
        readonly default: () => void;
    };
    readonly fileList: {
        readonly type: PropType<UploadFiles>;
        readonly default: () => readonly [];
    };
    readonly action: {
        readonly type: StringConstructor;
        readonly default: "";
    };
    readonly multiple: {
        readonly type: BooleanConstructor;
        readonly default: false;
    };
    readonly name: {
        readonly type: StringConstructor;
        readonly default: "file";
    };
    readonly accept: {
        readonly type: StringConstructor;
        readonly default: "";
    };
    readonly method: {
        readonly type: StringConstructor;
        readonly default: "post";
    };
    readonly headers: {
        readonly type: ObjectConstructor;
        readonly default: () => {};
    };
    readonly data: {
        readonly type: ObjectConstructor;
        readonly default: () => {};
    };
    readonly autoUpload: {
        readonly type: BooleanConstructor;
        readonly default: true;
    };
    readonly listType: {
        readonly type: StringConstructor;
        readonly values: readonly ["text", "picture", "picture-card"];
        readonly default: "text";
    };
    readonly limit: {
        readonly type: NumberConstructor;
    };
    readonly drag: {
        readonly type: BooleanConstructor;
        readonly default: false;
    };
    readonly directory: {
        readonly type: BooleanConstructor;
        readonly default: false;
    };
    readonly disabled: {
        readonly type: BooleanConstructor;
        readonly default: false;
    };
};
export type UploadProps = ExtractPropTypes<typeof uploadProps>;
export type UploadInstance = InstanceType<typeof Upload> & unknown;
