import type { SessionSource } from './take-types'; export interface PersistedTakeMeta { takeId: string; index: number; /** sessionId IDB de chunk-storage où sont les chunks vidéo (= `${rootSessionId}-take${index}-video`). */ videoChunkSessionId: string; /** sessionId IDB chunk-storage audio si `recordAudioSeparately` (= `${rootSessionId}-take${index}-audio`). */ audioChunkSessionId?: string; durationMs: number; mimeType: string; startedAt: number; title?: string; } export interface PersistedSession { /** Identifiant root (clé primaire). */ sessionId: string; createdAt: number; updatedAt: number; status: 'in-progress' | 'finalized' | 'discarded'; sourcesUsed: SessionSource[]; takes: PersistedTakeMeta[]; } /** * Append (upsert) un take dans une session. * Crée la row si elle n'existe pas. Met à jour `updatedAt`. */ export declare function appendTakeToSession(sessionId: string, take: PersistedTakeMeta, sourcesUsed?: SessionSource[]): Promise; /** * Retire un take d'une session + supprime ses chunks (vidéo + audio). * Si la session devient vide après suppression, la row reste (in-progress * sans take) pour permettre une reprise propre — utiliser `discardSession` * pour purger complètement. */ export declare function removeTakeFromSession(sessionId: string, takeId: string): Promise; /** * Liste les sessions ouvertes (status = 'in-progress') avec au moins un take. * Triées par updatedAt décroissant (plus récente en premier). */ export declare function listOpenSessions(): Promise; /** Recharge une session. null si absente. */ export declare function loadSession(sessionId: string): Promise; /** Marque une session comme finalisée (l'utilisateur a validé → passe à l'éditeur). * La row reste pour audit mais n'apparaît plus dans listOpenSessions. */ export declare function finalizeSession(sessionId: string): Promise; /** * Supprime une session ET tous ses chunks (vidéo + audio). * À appeler sur "Annuler la session" ou après upload réussi côté serveur. */ export declare function discardSession(sessionId: string): Promise; /** * Garbage-collect les sessions in-progress qui dépassent `maxAgeMs` depuis * leur `updatedAt` (par défaut 7 jours). Évite que l'IDB se remplisse * silencieusement avec des sessions abandonnées (crash, fermeture onglet). * * Retourne le nombre de sessions purgées. */ export declare function gcExpiredSessions(maxAgeMs?: number): Promise; //# sourceMappingURL=session-storage.d.ts.map