import * as React from 'react'; import { ProgressProps } from '../progress'; export declare type UploadFileStatus = 'error' | 'success' | 'done' | 'uploading' | 'removed' | 'notStart'; export declare type UploadRequestMethod = 'POST' | 'PUT' | 'PATCH' | 'post' | 'put' | 'patch'; export declare type Action = string | ((file: UploadFile) => string) | ((file: UploadFile) => PromiseLike); export interface HttpRequestHeader { [key: string]: string; } export interface UploadFile extends File { uid: string; size: number; name: string; type: string; fileName?: string; readonly lastModified: number; readonly lastModifiedDate: Date; webkitRelativePath: string; url?: string; status?: UploadFileStatus; percent?: number; thumbUrl?: string; originFileObj?: File | Blob; response?: T; error?: any; linkProps?: any; xhr?: T; preview?: string; } export interface UploadChangeParam { file: T; fileList: Array; event?: { percent: number; }; } export interface ShowUploadListInterface { showRemoveIcon?: boolean; showPreviewIcon?: boolean; showDownloadIcon?: boolean; removeIcon?: React.ReactNode | ((file: UploadFile) => React.ReactNode); downloadIcon?: React.ReactNode | ((file: UploadFile) => React.ReactNode); } 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'; export declare type UploadListProgressProps = Omit; export declare type ItemRender = (originNode: React.ReactElement, file: UploadFile, fileList?: Array>) => React.ReactNode; declare type PreviewFileHandler = (file: File | Blob) => PromiseLike; declare type TransformFileHandler = (file: UploadFile) => string | Blob | File | PromiseLike; export interface UploadProps { type?: UploadType; name?: string; defaultFileList?: Array>; fileList?: Array>; action?: Action; directory?: boolean; data?: Record | ((file: UploadFile) => Record); method?: 'POST' | 'PUT' | 'PATCH' | 'post' | 'put' | 'patch'; headers?: HttpRequestHeader; showUploadList?: boolean | ShowUploadListInterface; multiple?: boolean; accept?: string; beforeUpload?: (file: UploadFile, FileList: UploadFile[]) => boolean | Promise; onStart?: (file: UploadFile) => void; onChange?: (info: UploadChangeParam) => void; listType?: UploadListType; className?: string; onPreview?: (file: UploadFile) => void; onDownload?: (file: UploadFile) => void; onRemove?: (file: UploadFile) => void | boolean | Promise; supportServerRender?: boolean; style?: React.CSSProperties; disabled?: boolean; prefixCls?: string; customRequest?: (options: UploadRequestOption) => void; withCredentials?: boolean; openFileDialogOnClick?: boolean; locale?: UploadLocale; id?: string; previewFile?: PreviewFileHandler; /** @deprecated Please use `beforeUpload` directly */ transformFile?: TransformFileHandler; iconRender?: (file: UploadFile, listType?: UploadListType) => React.ReactNode; isImageUrl?: (file: UploadFile) => boolean; progress?: UploadListProgressProps; itemRender?: ItemRender; onError?: (error: Error, ret: Record, file: UploadFile) => void; onSuccess?: (response: Record, file: UploadFile, xhr: XMLHttpRequest) => void; onProgress?: (event: UploadProgressEvent, file: UploadFile) => void; onMouseEnter?: (e: React.MouseEvent) => void; onMouseLeave?: (e: React.MouseEvent) => void; onClick?: (e: React.MouseEvent | React.KeyboardEvent) => void; } export interface UploadState { fileList: UploadFile[]; dragState: string; } export interface UploadListProps { listType?: UploadListType; onPreview?: (file: UploadFile) => void; onDownload?: (file: UploadFile) => void; onRemove?: (file: UploadFile) => void | boolean; items?: Array>; progress?: UploadListProgressProps; prefixCls?: string; showRemoveIcon?: boolean; showDownloadIcon?: boolean; showPreviewIcon?: boolean; removeIcon?: React.ReactNode | ((file: UploadFile) => React.ReactNode); downloadIcon?: React.ReactNode | ((file: UploadFile) => React.ReactNode); locale: UploadLocale; previewFile?: PreviewFileHandler; iconRender?: (file: UploadFile, listType?: UploadListType) => React.ReactNode; isImageUrl?: (file: UploadFile) => boolean; appendAction?: React.ReactNode; itemRender?: ItemRender; } export interface UploadRequestError extends Error { status?: number; method?: UploadRequestMethod; url?: string; } export interface UploadProgressEvent extends ProgressEvent { percent: number; } export interface UploadRequestOption { onProgress?: (event: UploadProgressEvent) => void; onError?: (event: UploadRequestError | ProgressEvent, body?: T) => void; onSuccess?: (body: T, xhr: XMLHttpRequest) => void; data?: Record; filename?: string; file: UploadFile; withCredentials?: boolean; action: string; headers?: HttpRequestHeader; method: UploadRequestMethod; } export interface IFileItem { file: UploadFile; prefixCls: string; listType: string; disabled: boolean; onPreview?: (file: UploadFile) => void; handleReUpload: (file: UploadFile, e: React.MouseEvent) => void; handleRemove: (file: UploadFile, e: React.MouseEvent) => void; } export {};