import type { CSSProperties, ImgHTMLAttributes, Ref, VNodeChild } from 'vue';
import type { MergedTheme } from '../../_mixins';
import type { ImageGroupProps } from '../../image';
import type { UploadTheme } from '../styles';
import type { UploadCustomRequestOptions, UploadFileInfo, UploadOnDownload, UploadOnFinish, UploadOnRemove, UploadSettledFileInfo } from './public-types';
export type ShouldUseThumbnailUrl = (file: UploadSettledFileInfo) => boolean;
export type FuncOrRecordOrUndef = Record | (({ file }: {
file: UploadSettledFileInfo;
}) => Record) | undefined;
export interface UploadInternalInst {
doChange: DoChange;
xhrMap: Map;
isErrorState: ((xhr: XMLHttpRequest) => boolean) | undefined;
onError: OnError | undefined;
onFinish: UploadOnFinish | undefined;
}
export type DoChange = (fileAfterChange: UploadSettledFileInfo, event?: ProgressEvent | Event, options?: {
append?: boolean;
remove?: boolean;
}) => void;
export type OnUpdateFileList = (fileList: UploadSettledFileInfo[]) => void;
export type RenderIcon = (file: UploadSettledFileInfo) => VNodeChild;
export interface UploadInjection {
mergedClsPrefixRef: Ref;
mergedThemeRef: Ref>;
showCancelButtonRef: Ref;
showRemoveButtonRef: Ref;
showDownloadButtonRef: Ref;
showRetryButtonRef: Ref;
showTriggerRef: Ref;
mergedFileListRef: Ref;
onRemoveRef: Ref;
onDownloadRef: Ref;
customDownloadRef: Ref;
xhrMap: Map;
showPreviewButtonRef: Ref;
onPreviewRef: Ref;
listTypeRef: Ref;
dragOverRef: Ref;
draggerInsideRef: {
value: boolean;
};
fileListClassRef: Ref;
fileListStyleRef: Ref;
mergedDisabledRef: Ref;
maxReachedRef: Ref;
abstractRef: Ref;
imageGroupPropsRef: Ref;
imgPropsRef: Ref;
previewedImgPropsRef: Ref;
cssVarsRef: undefined | Ref;
themeClassRef: undefined | Ref;
mergedDirectoryDndRef: Ref;
acceptRef: Ref;
triggerClassRef: Ref;
triggerStyleRef: Ref;
doChange: DoChange;
onRender: undefined | (() => void);
submit: (options?: {
fileId?: string;
retry?: boolean;
}) => void;
onRetryRef: Ref;
shouldUseThumbnailUrlRef: Ref;
getFileThumbnailUrlResolver: (file: UploadSettledFileInfo) => Promise | string;
renderIconRef: Ref;
handleFileAddition: (files: FileAndEntry[] | null, e?: Event) => void;
openOpenFileDialog: () => void;
}
export declare const uploadInjectionKey: import("vue").InjectionKey;
export interface XhrHandlers {
handleXHRLoad: (e: ProgressEvent) => void;
handleXHRAbort: (e: ProgressEvent) => void;
handleXHRProgress: (e: ProgressEvent) => void;
handleXHRError: (e: ProgressEvent) => void;
}
export type OnBeforeUpload = (data: {
file: UploadSettledFileInfo;
fileList: UploadSettledFileInfo[];
}) => Promise | boolean | void;
export type ListType = 'text' | 'image' | 'image-card';
export type OnPreview = (file: UploadSettledFileInfo, detail: {
event: MouseEvent;
}) => void;
export type CreateThumbnailUrl = (file: File | null, fileInfo: UploadSettledFileInfo) => Promise | string | undefined;
export type CustomRequest = (options: UploadCustomRequestOptions) => void;
export type OnError = ({ file, event }: {
file: UploadSettledFileInfo;
event?: ProgressEvent;
}) => UploadFileInfo | undefined | void;
export type OnRetry = ({ file }: {
file: UploadSettledFileInfo;
}) => Promise | boolean | void;
export interface FileAndEntry {
file: File;
entry: FileSystemFileEntry | null;
source: 'dnd' | 'input';
}
export interface UploadTriggerDefaultSlotOptions {
handleClick: () => void;
handleDragOver: (e: DragEvent) => void;
handleDragEnter: (e: DragEvent) => void;
handleDragLeave: (e: DragEvent) => void;
handleDrop: (e: DragEvent) => void;
}