import { Ref, InjectionKey, CSSProperties } from 'vue'; import type { MergedTheme } from '../../_mixins'; import type { UploadTheme } from '../styles'; export interface FileInfo { id: string; name: string; percentage: number; status: 'pending' | 'uploading' | 'finished' | 'removed' | 'error'; url?: string | null; file?: File | null; thumbnailUrl?: string | null; type?: string | null; } export declare type FuncOrRecordOrUndef = Record | (({ file }: { file: FileInfo; }) => Record) | undefined; export declare type OnChange = (data: { file: FileInfo; fileList: FileInfo[]; event: ProgressEvent | Event | undefined; }) => void; export declare type OnFinish = ({ file, event }: { file: FileInfo; event: Event; }) => FileInfo | undefined; export declare type OnRemove = (data: { file: FileInfo; fileList: FileInfo[]; }) => Promise | boolean | any; export declare type OnDownload = (file: FileInfo) => Promise | boolean | any; export interface UploadInternalInst { doChange: DoChange; XhrMap: Map; onFinish?: OnFinish; } export declare type DoChange = (fileAfterChange: FileInfo, event?: ProgressEvent | Event, options?: { append?: boolean; remove?: boolean; }) => void; export declare type OnUpdateFileList = (fileList: FileInfo[]) => void; export interface UploadInjection { mergedClsPrefixRef: Ref; mergedThemeRef: Ref>; showCancelButtonRef: Ref; showRemoveButtonRef: Ref; showDownloadButtonRef: Ref; showRetryButtonRef: Ref; mergedFileListRef: Ref; onRemoveRef: Ref; onDownloadRef: Ref; XhrMap: Map; doChange: DoChange; showPreviewButtonRef: Ref; onPreviewRef: Ref; listTypeRef: Ref; dragOverRef: Ref; draggerInsideRef: { value: boolean; }; fileListStyleRef: Ref; mergedDisabledRef: Ref; maxReachedRef: Ref; abstractRef: Ref; cssVarsRef: Ref; submit: (fileId?: string) => void; getFileThumbnailUrl: (file: FileInfo) => Promise; handleFileAddition: (files: FileList | null, e?: Event) => void; openFileDialog: () => void; } export declare const uploadInjectionKey: InjectionKey; export interface XhrHandlers { handleXHRLoad: (e: ProgressEvent) => void; handleXHRAbort: (e: ProgressEvent) => void; handleXHRProgress: (e: ProgressEvent) => void; handleXHRError: (e: ProgressEvent) => void; } export interface UploadInst { submit: () => void; } export declare type OnBeforeUpload = (data: { file: FileInfo; fileList: FileInfo[]; }) => Promise; export declare type listType = 'text' | 'image' | 'image-card'; export declare type OnPreview = (file: FileInfo) => void; export declare type CreateThumbnailUrl = (file: File) => Promise;