import type { Clip } from '../types/editor'; import type { MediaTake } from './take-types'; export interface TakesToEditorInputResult { /** Liste de Clip prêts pour useVideoEditor.initialClips. */ initialClips: Clip[]; /** Map sourceUrl → Blob (pour server-compose sans fetch(blob:...)). */ initialBlobMap: Map; /** Takes filtrés (audio-only / sans source vidéo). Le consumer peut les * router vers un playback dédié au lieu de VideoEditor. */ skippedAudioTakes: MediaTake[]; } /** * Adapte une liste de takes finalisés en input pour le composant VideoEditor. * * Chaque take vidéo devient un Clip dans la timeline éditeur, dans l'ordre * d'enregistrement. Les blobs sont indexés par sourceUrl dans la map pour * permettre à server-compose de skipper les fetch(blob:...) (que Firefox * bloque sous COEP strict). * * Defense-in-depth : les takes audio-only (videoResult.kind === 'audio' ou * mimeType commençant par 'audio/') sont filtrés. Sinon ffmpeg-compose tente * un pipeline vidéo sur un stream audio → "ffmpeg clip 0 failed (code 1)". * Le consumer doit router ces takes (renvoyés dans `skippedAudioTakes`) * vers un playback audio dédié (cf. camera-studio phase 'audio-done'). * * Si un take n'a pas de blob (storage 'filesystem' ou 'server' sans fetchback), * son clip aura un sourceUrl vide ou pointant vers `serverUrl` — l'éditeur * gérera la résolution au moment du load. */ export declare function takesToEditorInput(takes: MediaTake[]): TakesToEditorInputResult; //# sourceMappingURL=take-to-clip.d.ts.map