/** Upload item — maps to media-service after `onUpload` resolves `mediaId`. */ export type UploadFileStatus = "idle" | "uploading" | "done" | "error" | "removed"; export type UploadFileItem = { /** Stable key for list reconciliation */ uid: string; name: string; size: number; mimeType?: string; /** Blob URL or media-service download URL */ previewUrl?: string; /** Set after issue → PUT → complete */ mediaId?: string; status: UploadFileStatus; error?: string; percent?: number; response?: unknown; url?: string; relativePath?: string; /** Local file before / during upload */ file?: File; /** Undo clears this before save — media-service has no restore API. */ pendingDelete?: boolean; /** * Draft-only: replacement staged locally; baseline kept for undo. */ pendingReplace?: boolean; replacesMediaId?: string; }; export type UploadVariant = "dropzone" | "button" | "picture-card" | "picture" | "avatar" | "avatar-crop"; /** Actions parent runs on form submit (media-service). */ export type UploadCommitAction = { /** Soft-delete on save — no restore API */ deleteMediaIds: string[]; /** Temp uploads already completed via `onUpload` — promote on save */ promoteMediaIds: string[]; }; export declare function createUploadItem(file: File, partial?: Partial): UploadFileItem; export declare function revokePreviewUrl(item: UploadFileItem | null | undefined): void; export declare function collectUploadCommitActions(items: UploadFileItem[]): UploadCommitAction; /** Returning this from beforeUpload excludes the file entirely. false keeps it staged. */ export declare const UPLOAD_LIST_IGNORE: unique symbol; export type UploadRequestContext = { signal: AbortSignal; onProgress: (percent: number) => void; }; export type UploadResult = { mediaId?: string; previewUrl?: string; url?: string; response?: unknown; }; export type UploadRejection = { file: File; reason: "accept" | "size" | "count" | "beforeUpload"; error?: unknown; }; export type UploadItemActions = { remove: () => void; preview: () => void; download: () => void; upload: () => void; cancel: () => void; };