import type { DId } from '../../utils/types'; import type { DFormControl } from '../form'; import React from 'react'; import { DUploadAction } from './UploadAction'; import { DUploadList } from './UploadList'; import { DUploadPictureButton } from './UploadPictureButton'; export type DUploadFileStatus = 'load' | 'error' | 'progress' | null; export interface DUploadFile { uid: DId; name: string; url?: string; thumbUrl?: string; status: DUploadFileStatus; percent?: number; originFile?: File; response?: any; [index: string | symbol]: any; } export interface DUploadProps extends Omit, 'children'> { children?: (nodes: { trigger: React.ReactNode; list: React.ReactNode; }) => React.ReactNode; dFormControl?: DFormControl; dModel?: DUploadFile[]; dTrigger?: React.ReactElement; dList?: React.ReactElement; dXHRRequest?: { method?: string; url: string | URL; responseType?: XMLHttpRequestResponseType; header?: { [index: string]: string; }; body?: (file: string | Blob) => Document | XMLHttpRequestBodyInit | null | undefined; custom?: (xhr: XMLHttpRequest) => void; }; dDrag?: boolean; dMax?: number; dCustomUpload?: (files: FileList) => void; dBeforeUpload?: (file: File, files: FileList) => boolean | string | Blob | Promise; onModelChange?: (files: DUploadFile[], data: { type: 'add' | 'update' | 'remove'; files: DUploadFile[]; }) => void; onRemove?: (file: DUploadFile) => void; } declare function Upload(props: DUploadProps, ref: React.ForwardedRef): JSX.Element | null; export declare const DUpload: { (props: DUploadProps & React.RefAttributes): ReturnType; Action: typeof DUploadAction; List: typeof DUploadList; PictureButton: typeof DUploadPictureButton; }; export {};