/** * Pure motion-overlay plan assembler. * * `buildMotionOverlayPlan` composes a `MotionOverlayPlan` (`schemaVersion: 1`) * from already-computed inputs: the input probe, the resolved style, the take * splits, each take's analysis, and each take's composed prompt. It performs NO * I/O and NO provider/ffmpeg/STT calls — those happen upstream (transcribe, * slice, analyze-reel, compose-prompt) and are passed in. This keeps the * manifest shape deterministic and unit-testable. * * The per-take `file` / `promptFile` paths are the work-folder-relative names * (`takes/…mp4`, `prompts/…md`) the `write.ts` emitter will produce; this module * only names them, it does not write them. */ import type { MotionLayout, MotionOverlayPlan, MotionStyleId, TakeAnalysis, TakeSplit } from './types.js'; export interface BuildMotionOverlayPlanArgs { input: { path: string; durationSeconds: number; width: number; height: number; aspect: string; }; layout: MotionLayout; style: MotionStyleId; /** Resolved accent (hex or already-resolved name) recorded on the manifest. */ accent: string; language: string; /** Work-folder path (absolute or relative; recorded verbatim). */ workdir: string; /** The take splits (one per output clip), in order. */ splits: TakeSplit[]; /** Per-take analysis, parallel to `splits` (keyed by index). */ analyses: TakeAnalysis[]; /** Per-take composed prompts, parallel to `splits` (keyed by index). */ prompts: string[]; } /** Build the work-folder-relative take clip filename for a take. */ export declare function takeFileName(split: TakeSplit): string; /** Build the work-folder-relative prompt markdown filename for a take. */ export declare function takePromptFileName(split: TakeSplit): string; /** Shared stem, e.g. `take-01_0s-10s` (1-based index, whole-second bounds). */ export declare function takeStem(split: TakeSplit): string; /** * Assemble the `MotionOverlayPlan`. Pure. Throws if the analyses/prompts arrays * don't line up with the splits (a programmer error, surfaced loudly). */ export declare function buildMotionOverlayPlan(args: BuildMotionOverlayPlanArgs): MotionOverlayPlan; //# sourceMappingURL=plan.d.ts.map