export type UploadStrategy = 'immediate' | 'deferred'; export type UploadImageFn = (file: File) => Promise; export type InsertImageFormatter = (args: { url: string; alt: string; uploading?: boolean; }) => string; export interface PendingUpload { id: string; blobUrl: string; file: File; alt: string; status: 'pending' | 'uploading' | 'done' | 'error'; finalUrl?: string; error?: string; } export interface UseImageUploadOptions { uploadImage?: UploadImageFn; strategy?: UploadStrategy; maxImageSize?: number; acceptedImageTypes?: string[]; formatInsert: InsertImageFormatter; onError?: (message: string, file?: File) => void; } export interface UseImageUploadResult { pending: PendingUpload[]; handleFiles: (files: FileList | File[] | null | undefined) => Promise; flushUploads: (value: string) => Promise; validateFile: (file: File) => string | null; hasUploader: boolean; isUploading: boolean; } export declare function useImageUpload(options: UseImageUploadOptions): UseImageUploadResult;