import type { UploadTarget } from "./api.js"; import type { ManifestEntry } from "./manifest.js"; export declare class UploadFailed extends Error { readonly path: string; readonly status: number; readonly badDigest: boolean; constructor(path: string, status: number, badDigest: boolean); } export interface UploadProgress { filesDone: number; filesTotal: number; bytesDone: number; bytesTotal: number; } export interface UploadOptions { distDir: string; targets: UploadTarget[]; manifest: ManifestEntry[]; concurrency?: number; onProgress?: (p: UploadProgress) => void; fetchImpl?: typeof fetch; /** Per-file retries for a transient network/5xx failure. A BadDigest is retried once. */ maxAttempts?: number; } /** * PUT every file. A re-run that finds files already landed simply uploads * fewer — resumption is silent, because the creator did not ask for a resume, * they asked to publish. */ export declare function uploadAll(opts: UploadOptions): Promise;