export type LocalPendingStatus = "uploading" | "running" | "completed" | "failed"; export interface LocalPendingEntry { readonly jobId: string; readonly status: LocalPendingStatus; readonly createdAt: number; readonly updatedAt: number; readonly meta?: Record; } /** * Framework-agnostic observable registry of in-flight transcription jobs. * Persisted to localStorage when available (so it survives reloads), with * an in-memory fallback otherwise. Subscribe with `subscribe(listener)`; * read with `getSnapshot()` (stable reference between mutations, so it * plugs directly into React's `useSyncExternalStore`). */ export declare class LocalPendingTranscribeTracker { #private; constructor(); /** Current entries. Stable reference until the next mutation. */ getSnapshot(): readonly LocalPendingEntry[]; list(): readonly LocalPendingEntry[]; /** Subscribe to changes. Returns an unsubscribe function. */ subscribe(listener: () => void): () => void; upsert(jobId: string, status: LocalPendingStatus, meta?: Record): void; remove(jobId: string): void; clear(): void; } export interface TranscribeDraftMeta { readonly title?: string; readonly tag?: string; readonly contentType?: string; } export interface TranscribeDraftRecord { readonly draftId: string; readonly blob: Blob; readonly metadata: TranscribeDraftMeta; readonly createdAt: number; } export declare class TranscribeDraftUnavailableError extends Error { constructor(); } /** * IndexedDB-backed queue of recorded audio Blobs. Save a recording the * instant it finishes (before any network), then `upload` it when the * user confirms — so a flaky network or a closed tab never loses audio. * Browser-only: methods reject with {@link TranscribeDraftUnavailableError} * when IndexedDB is absent. */ export declare class TranscribeDraftStore { save(blob: Blob, meta?: TranscribeDraftMeta): Promise<{ readonly draftId: string; }>; list(): Promise; get(draftId: string): Promise; delete(draftId: string): Promise; } //# sourceMappingURL=transcribe-resilience.d.ts.map