export interface CreateFileArgs { shopID: string; name: string; contentType: string; size: number; storage?: "general" | "private"; } export interface FileInfo { id: string; image_alt: string; image_color: string; image_height: number; image_width: number; mime: string; name: string; path: string; public_url: string; size: string; storage: "general" | "private"; } export declare type FileStatus = { kind: "pending"; } | { kind: "uploaded"; file: FileInfo; } | { kind: "not_uploaded"; }; export interface APIProvider { createFile(args: CreateFileArgs): Promise; uploadFile(shopID: string, id: string): Promise; fileUploaded(shopID: string, id: string): Promise; fileStatus(shopID: string, id: string): Promise; getDataSlice(data: Data, from: number, to: number): Promise; } export declare type ResultErrorCode = "create_failure" | "upload_failure" | "post_failure" | "put_failure" | "uploaded_failure" | "get_status_failure" | "not_uploaded_failure"; export declare type Result = { kind: ResultErrorCode; } | { kind: "ok"; file: FileInfo; }; export interface ProgressReport { uploadedBytes: number; totalBytes: number; } export interface UploadFileGenericArgs { api: APIProvider; data: Data; shopID: string; name: string; size: number; contentType: string; storage?: "general" | "private"; onProgress?: (report: ProgressReport) => void; } export declare function uploadFileGeneric(a: UploadFileGenericArgs): Promise;