import { BaseFileItem } from '@douyinfe/semi-foundation/lib/es/upload/foundation'; import { strings } from '@douyinfe/semi-foundation/lib/es/upload/constants'; import { ArrayElement } from '../_base/base'; import { VNode, CSSProperties } from 'vue'; import { RemoveIndexSignature } from '../interface'; export type PromptPositionType = ArrayElement; export type UploadListType = ArrayElement; export interface BeforeUploadProps { file: FileItem; fileList: Array; } export interface AfterUploadProps { file: FileItem; fileList: Array; response: any; } export interface OnChangeProps { fileList: Array; currentFile: FileItem; } export interface customRequestArgs { fileName: string; data: Record; file: FileItem; fileInstance: File; onProgress: (e?: { total: number; loaded: number; }) => any; onError: (userXhr: { status?: number; }, e?: Event) => any; onSuccess: (response: any, e?: Event) => any; withCredentials: boolean; action: string; } export interface CustomError extends Error { status: number; method: string; url: string; } export interface FileItem extends RemoveIndexSignature { validateMessage?: VNode | string; } export interface RenderFileItemProps extends FileItem { index?: number; previewFile?: (fileItem: RenderFileItemProps) => VNode | string; listType: UploadListType; onRemove: () => void; onRetry: () => void; onReplace: () => void; showPicInfo?: boolean; renderPicInfo?: (renderFileItemProps: RenderFileItemProps) => VNode | string; renderPicPreviewIcon?: (renderFileItemProps: RenderFileItemProps) => VNode | string; renderFileOperation?: (fileItem: RenderFileItemProps) => VNode | string; showRetry?: boolean; showReplace?: boolean; style?: CSSProperties; disabled: boolean; onPreviewClick: () => void; } export interface RenderPictureCloseProps { className: string; remove: (e: MouseEvent) => void; }