import type { Clip, ExportOptions, ExportResult, OutputFormat } from '../types/editor'; type FFmpegLike = { load(opts?: { coreURL?: string; wasmURL?: string; }): Promise; writeFile(name: string, data: Uint8Array): Promise; readFile(name: string): Promise; exec(args: string[]): Promise; on(ev: 'log', cb: (e: { message: string; }) => void): void; on(ev: 'progress', cb: (e: { progress: number; }) => void): void; }; export interface EnsureFfmpegOptions { /** Override the core .js URL (absolute or relative to public/) */ coreURL?: string; /** Override the core .wasm URL */ wasmURL?: string; /** Override the worker .js URL (needed by newer ffmpeg-core builds) */ workerURL?: string; /** * Wrap the fetched URLs through `toBlobURL` (default: true). Set to false * only if you self-host the core AND have working CORP / same-origin — * skipping the wrap saves one fetch round-trip. */ wrapBlobURL?: boolean; } /** * Return a ready-to-use FFmpeg instance. Lazy-loads the wasm core on first use. * Expects cross-origin isolation (COOP/COEP) — caller must configure headers. */ export declare function ensureFfmpeg(options?: EnsureFfmpegOptions): Promise; /** * Compose every clip (with its overlays) into a single final file. * * Pipeline per clip : * video : -ss {srcStart} -to {srcEnd} -i src.webm * -filter_complex "[0:v]setpts=PTS/{speed}{overlays}[v]" * -an -c:v libvpx-vp9 -r {fps} clip_N.webm * image : -loop 1 -t {dur} -i img.png * -filter_complex "[0:v]scale={w}:-2,fps={fps}{overlays}[v]" * -an -c:v libvpx-vp9 clip_N.webm * * Concat : -f concat -i list.txt -c copy final.webm * GIF : final.webm → palettegen → paletteuse → out.gif */ export declare function composeClips(clips: Clip[], options: ExportOptions & { ffmpeg?: EnsureFfmpegOptions; } & { blobsByUrl?: Map; }): Promise; export declare function defaultExportOptions(format?: OutputFormat): ExportOptions; export {}; //# sourceMappingURL=ffmpeg-compose.d.ts.map