import { Decimal } from "decimal.js"; import type { FormContext, FormItemContext, UploadFile, UploadFiles, UploadProps, UploadRawFile, UploadRequestOptions, UploadUserFile } from "element-plus"; import type { ComputedRef, Ref, WritableComputedRef } from "vue"; interface UploadComposable { fileList: WritableComputedRef; loading: Ref; formContext: FormContext | undefined; formItemContext: FormItemContext | undefined; maxSizeMB: ComputedRef; handleValue: () => void; handleHttpRequest: (options: UploadRequestOptions) => Promise; handleOnSuccess: (fileUrl: string, uploadFile: UploadFile, uploadFiles: UploadFiles) => void; handleOnError: (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void; handleOnRemove: (uploadFile: UploadFile, uploadFiles: UploadFiles) => void; handleOnExceed: (files: File[], uploadFiles: UploadUserFile[]) => void; handleOnUpload: (file: UploadFile | UploadRawFile) => boolean; handleOnChange: (uploadFile: UploadFile, uploadFiles: UploadFiles) => void; } /** * 创建上传组件共享的文件状态和操作方法。 * * @param componentName - 组件名称。 * @param fileTypeName - 文件类型名称。 * @param props - 上传组件的 Props。 * @param emit - 上传组件的事件触发器。 * @param options - 文件大小和类型校验配置。 * @returns 文件列表、加载状态和上传操作方法。 */ export declare const useUpload: (componentName: string, fileTypeName: string, props: Partial & { modelValue?: T | null; }, emit: ((event: "update:fileList", value: UploadUserFile[]) => void) & ((event: "update:modelValue", value: T | null) => void), data?: { maxSize?: string | number; uploadApi?: (formData: FormData) => Promise; uploadUrl?: string; }) => UploadComposable; export {};