export type ChunkStorage = 'memory' | 'indexeddb' | 'filesystem' | 'server'; export type ChunkKind = 'audio' | 'video'; export interface ChunkStore { /** Setup pre-record. ⚠️ pour `filesystem`, doit être appelé dans un user gesture. */ init(): Promise; /** Push chunk produit par MediaRecorder.ondataavailable. */ appendChunk(chunk: Blob): Promise; /** Stop le record : finalise le storage et retourne le résultat. */ finalize(): Promise; /** Annule le record en cours. */ abort(): Promise; } export interface ChunkRecordResult { storage: ChunkStorage; /** Type d'enregistrement : audio ou vidéo. */ kind: ChunkKind; /** MIME du record (ex: video/webm;codecs=vp9,opus, audio/webm;codecs=opus). */ mimeType: string; /** Blob reconstitué (memory / indexeddb). null pour filesystem / server. */ blob: Blob | null; /** ObjectURL utilisable dans un