import { FileType as AFileType, UploadFile as AUploadFile } from 'ant-design-vue/es/upload/interface';
import { isImageUrl as isAntImageUrl } from 'ant-design-vue/es/upload/utils';
import { RcFile } from 'ant-design-vue/es/vc-upload/interface';
import { Ref } from 'vue';
export interface UploadFileOriginInfo {
    fileIcon?: string;
    fileName?: string;
    fileAddress?: string;
    url?: string;
    name?: string;
    createUserName?: string;
    insertTimeForHis?: string;
    [key: string]: any;
}
export type UploadRequestKeyType = 'getPrivateFileUrls' | 'previewFile' | 'customRequest';
export type UploadRequestMapType = {
    [k in UploadRequestKeyType]: Promise<any>;
};
export type UploadFile<T = any> = AFileType | UploadFileType<T>;
export type UploadFileList<T = any> = string | UploadFile<T>;
export type UploadFiles<T> = T | T[];
export interface UploadFileType<T = any> extends AUploadFile<T> {
    originInfo?: UploadFileOriginInfo;
    isImage?: boolean;
}
export interface UploadFileRuleValue<T = any> {
    file: UploadFile<T> | Exclude<File | Blob | boolean, File | boolean> | RcFile;
    fileList?: UploadFileList<T>[];
    selectFileList?: UploadFileList<T>[];
    isImageType?: boolean;
}
export interface UploadFileRule {
    message: string | Ref<string>;
    validator: (rule: UploadFileRule, value: UploadFileRuleValue) => boolean;
}
export interface UploadFileInfoOptions {
    actionType?: 'set' | 'get';
    isImageUrl?: typeof isAntImageUrl;
    percent?: Record<string, number>;
    originInfos?: Record<string, Partial<UploadFileOriginInfo>>;
    map?: Record<UploadFileType['uid'], UploadFileType>;
}
export interface MaxSizeErrorType {
    type: string;
    useDocMsg: boolean;
    maxSize: number;
}
