import type { RcFile as OriRcFile, UploadRequestOption as RcCustomRequestOptions } from '../vc-upload/interface'; import type { ProgressProps } from '../progress'; import type { VueNode } from '../_util/type'; import type { ExtractPropTypes, PropType, CSSProperties } from 'vue'; export interface FileType extends OriRcFile { readonly lastModifiedDate: Date; } export declare type UploadFileStatus = 'error' | 'success' | 'done' | 'uploading' | 'removed'; export interface HttpRequestHeader { [key: string]: string; } export interface UploadFile { uid: string; size?: number; name: string; fileName?: string; lastModified?: number; lastModifiedDate?: Date; url?: string; status?: UploadFileStatus; percent?: number; thumbUrl?: string; originFileObj?: FileType; response?: T; error?: any; linkProps?: any; type?: string; xhr?: T; preview?: string; } export interface InternalUploadFile extends UploadFile { originFileObj: FileType; } export interface ShowUploadListInterface { showRemoveIcon?: boolean; showPreviewIcon?: boolean; showDownloadIcon?: boolean; } export interface UploadChangeParam { file: T; fileList: UploadFile[]; event?: { percent: number; }; } export interface UploadLocale { uploading?: string; removeFile?: string; downloadFile?: string; uploadError?: string; previewFile?: string; } export declare type UploadType = 'drag' | 'select'; export declare type UploadListType = 'text' | 'picture' | 'picture-card'; export declare type UploadListProgressProps = Omit & { class?: string; style?: CSSProperties; }; export declare type ItemRender = (opt: { originNode: VueNode; file: UploadFile; fileList: Array>; actions: { download: () => void; preview: () => void; remove: () => void; }; }) => VueNode; declare type PreviewFileHandler = (file: FileType | Blob) => PromiseLike; declare type TransformFileHandler = (file: FileType) => string | Blob | FileType | PromiseLike; declare type BeforeUploadValueType = void | boolean | string | Blob | FileType; declare function uploadProps(): { capture: PropType; type: PropType; name: StringConstructor; defaultFileList: PropType[]>; fileList: PropType[]>; action: PropType string) | ((file: FileType) => PromiseLike)>; directory: { type: BooleanConstructor; default: any; }; data: PropType | ((file: UploadFile) => Record | Promise>)>; method: PropType<"post" | "POST" | "PUT" | "PATCH" | "put" | "patch">; headers: PropType; showUploadList: { type: PropType; default: boolean | ShowUploadListInterface; }; multiple: { type: BooleanConstructor; default: any; }; accept: StringConstructor; beforeUpload: PropType<(file: FileType, FileList: FileType[]) => BeforeUploadValueType | Promise>; onChange: PropType<(info: UploadChangeParam>) => void>; 'onUpdate:fileList': PropType<(fileList: UploadChangeParam>['fileList']) => void>; onDrop: PropType<(event: DragEvent) => void>; listType: PropType; onPreview: PropType<(file: UploadFile) => void>; onDownload: PropType<(file: UploadFile) => void>; onReject: PropType<(fileList: FileType[]) => void>; onRemove: PropType<(file: UploadFile) => void | boolean | Promise>; /** @deprecated Please use `onRemove` directly */ remove: PropType<(file: UploadFile) => void | boolean | Promise>; supportServerRender: { type: BooleanConstructor; default: any; }; disabled: { type: BooleanConstructor; default: any; }; prefixCls: StringConstructor; customRequest: PropType<(options: RcCustomRequestOptions) => void>; withCredentials: { type: BooleanConstructor; default: any; }; openFileDialogOnClick: { type: BooleanConstructor; default: any; }; locale: { type: PropType; default: UploadLocale; }; id: StringConstructor; previewFile: PropType; /** @deprecated Please use `beforeUpload` directly */ transformFile: PropType; iconRender: PropType<(opt: { file: UploadFile; listType?: UploadListType; }) => VueNode>; isImageUrl: PropType<(file: UploadFile) => boolean>; progress: PropType; itemRender: PropType>; /** Config max count of `fileList`. Will replace current one when `maxCount` is 1 */ maxCount: NumberConstructor; height: (StringConstructor | NumberConstructor)[]; removeIcon: PropType<(opt: { file: UploadFile; }) => VueNode>; downloadIcon: PropType<(opt: { file: UploadFile; }) => VueNode>; previewIcon: PropType<(opt: { file: UploadFile; }) => VueNode>; }; export declare type UploadProps = Partial>>; export interface UploadState { fileList: UploadFile[]; dragState: string; } declare function uploadListProps(): { listType: PropType; onPreview: PropType<(file: UploadFile) => void>; onDownload: PropType<(file: UploadFile) => void>; onRemove: PropType<(file: UploadFile) => void | boolean>; items: PropType[]>; progress: PropType; prefixCls: PropType; showRemoveIcon: { type: BooleanConstructor; default: any; }; showDownloadIcon: { type: BooleanConstructor; default: any; }; showPreviewIcon: { type: BooleanConstructor; default: any; }; removeIcon: PropType<(opt: { file: UploadFile; }) => VueNode>; downloadIcon: PropType<(opt: { file: UploadFile; }) => VueNode>; previewIcon: PropType<(opt: { file: UploadFile; }) => VueNode>; locale: { type: PropType; default: UploadLocale; }; previewFile: PropType; iconRender: PropType<(opt: { file: UploadFile; listType?: UploadListType; }) => VueNode>; isImageUrl: PropType<(file: UploadFile) => boolean>; appendAction: PropType<() => VueNode>; appendActionVisible: { type: BooleanConstructor; default: any; }; itemRender: PropType>; }; export declare type UploadListProps = Partial>>; export { uploadProps, uploadListProps };