import type { Clip, Overlay, OverlayIcon, Subtitle, ExportOptions, ExportResult, ProjectFile, OutputFormat, AdSlot } from '../types/editor'; export interface UseVideoEditorInput { /** Raw recording to start from — usually the webm Blob from useScreenCapture */ source: Blob | string; /** Hint the recording's native duration (seconds) — falls back to metadata probe */ nativeDurationSec?: number; /** * If provided, export delegates to the given HTTP endpoint running native * ffmpeg. When unset, export runs client-side via ffmpeg.wasm. */ exportUrl?: string; /** * Pre-built clip list (e.g. from multi-image import). When provided, * these replace the auto-generated initial clip from `source`. * Each clip's sourceUrl must be a valid blob: or http: URL. */ initialClips?: Clip[]; /** * Pre-populated Blob map for `initialClips`. Keys = sourceUrl values * of the clips. Used by server-compose to avoid fetch(blob:...). */ initialBlobMap?: Map; /** * Pre-loaded subtitles (e.g. from a saved project). When provided, * these replace the empty initial subtitle list. */ initialSubtitles?: Subtitle[]; /** * v2.0.13+ — Pre-loaded ad slots (e.g. from a saved project). When provided, * replace the empty initial ad-slot list. */ initialAdSlots?: AdSlot[]; } export interface UseVideoEditorReturn { /** Ref for the preview