import { HTMLAttributes } from 'react';
import { UploadStatusType } from '../const/types.cjs';
import { IconType } from '../icon/index.cjs';
export interface UploadFile {
uid?: string;
url?: string;
filename?: string;
size?: string;
status?: UploadStatusType;
percent?: number;
preview?: string | null;
response?: unknown;
errorText?: string;
xhr?: XMLHttpRequest;
}
export interface UploadChangeEvent {
file: UploadFile;
fileList: UploadFile[];
}
export interface UploadSortEvent extends UploadChangeEvent {
oldIndex: number;
newIndex: number;
}
export interface UploadRequestOptions {
action?: string;
method: string;
name: string;
file: File | Blob;
filename: string;
data: Record;
headers: Record;
withCredentials: boolean;
timeout: number;
onProgress: (percent: number) => void;
onSuccess: (response?: unknown) => void;
onError: (error?: unknown) => void;
}
export interface UploadRequestHandle {
abort: () => void;
}
export type UploadCustomRequest = (options: UploadRequestOptions) => void | UploadRequestHandle | Promise;
export interface UploadRef {
upload: () => void;
abort: (file?: UploadFile) => void;
retry: (file: UploadFile) => void;
}
export interface UploadProps extends Omit, "onChange" | "onSelect" | "defaultValue" | "defaultChecked"> {
method?: string;
name?: string;
action?: string;
type?: "list" | "picture";
data?: Record;
disabled?: boolean;
readOnly?: boolean;
directory?: boolean;
multiple?: boolean;
accept?: string;
headers?: Record;
withCredentials?: boolean;
timeout?: number;
customRequest?: UploadCustomRequest;
parseResponse?: (xhr: XMLHttpRequest) => unknown;
showUploadList?: boolean;
transformFile?: (file: File) => File | Blob | Promise;
fileList?: UploadFile[];
autoTrigger?: boolean;
limit?: number;
minSize?: number;
maxSize?: number;
uploadText?: string;
uploadSubText?: string;
uploadIcon?: IconType[];
draggable?: boolean;
sortable?: boolean;
preview?: boolean;
validateAccept?: boolean;
maxConcurrent?: number;
onChange?: (event: UploadChangeEvent) => void;
onRemove?: (event: UploadChangeEvent) => void;
onSelectFiles?: (files: UploadFile[]) => void;
onExceed?: () => void;
onSizeError?: (event: UploadChangeEvent) => void;
onTypeError?: (event: UploadChangeEvent) => void;
onSort?: (event: UploadSortEvent) => void;
onBeforeUpload?: (item: UploadFile, file: File) => boolean | File | Blob | void | Promise;
}
export type UploadContext = UploadProps & UploadRef;
declare const _default: import('react').ForwardRefExoticComponent>;
export default _default;