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