import type { ShotScript, MusicCueSpec } from '../series/types.js'; import { type PlacementMap } from './music-cues.js'; import type { AudioMixDefaults } from '../series/types.js'; export interface ShotTrim { shotNumber: number; trimStart?: number; trimEnd?: number; flip?: boolean; } export interface AssemblyOptions { videoFiles: string[]; outputPath: string; srtPath?: string; musicPath?: string; musicVolume?: number; /** * ordered list of per-act music cues. When supplied (and non-empty), * the assembler renders them with crossfades and uses the resulting track * as the music bed in place of `musicPath`. The legacy single-bed path is * preserved for back-compat. */ musicCues?: MusicCueSpec[]; /** * Optional shot-id placement map (string keys, zero-padded for numeric * ids per ). When omitted, the assembler derives it from the * normalized clip durations using each clip's filename as the shot id. * Caller can pass an explicit map when the clip order doesn't match the * shot ids (e.g. multi-shot bundles). */ placementMap?: PlacementMap; /** * shot list used to derive musicHold automation. When omitted, * automation is skipped. */ shots?: ShotScript[]; /** Continuous ambient bed (e.g. rain loop) mixed under all clips for audio continuity */ ambientBedPath?: string; ambientBedVolume?: number; dialogueDir?: string; nativeAudioVolume?: number; /** Per-shot trim/flip metadata from script.json */ shotTrims?: ShotTrim[]; /** Optional title that fades in over the ending of the assembled episode */ endingTitleOverlay?: { text: string; fadeInSec?: number; holdSec?: number; }; /** * audio-mix defaults. When supplied, a final loudnorm pass runs * over the assembled master targeting `lufsTarget` integrated LUFS and * `truePeakDb` dBTP. Default targets: -16 LUFS / -1 dBTP. * * Set to `false` (not undefined) to disable the pass explicitly — used * by tests that don't want a re-encode they have to clean up. */ audioMix?: AudioMixDefaults | false; } export declare function assembleEpisode(options: AssemblyOptions): Promise; export declare function collectShotVideos(sceneDir: string): Promise; //# sourceMappingURL=assembler.d.ts.map