/** * Motion-overlay review surface (Phase 3). * * Renders a finished `MotionOverlayPlan` into a standalone, self-contained * `review/review.html` approval surface — the **contract** the operator signs * off before any provider spend. Each take card shows: * - the take clip filename + reel beat (anatomy), * - the take's anatomy / span / duration, * - the FULL composed prompt that will be sent to Omni Flash V2V verbatim. * * It reuses the preview-portal's `PORTAL_CSS` (including its aspect-aware media * classes via `body[data-aspect]`) for visual consistency, but it does NOT go * through the portal's project-discovery `render.ts` — that surface is driven by * on-disk project assets, whereas motion-overlay renders straight from the * deterministic plan manifest. Pure string assembly except for the single * file write in `writeMotionOverlayReview`. */ import type { MotionOverlayPlan } from './types.js'; export interface RenderMotionOverlayReviewResult { /** Absolute path to the emitted review.html. */ reviewPath: string; /** The full rendered HTML (returned for tests / callers that want it inline). */ html: string; } /** * Render the plan into the review HTML string. Pure — no I/O. The aspect * (`plan.input.aspect`) drives `body[data-aspect]` so portrait/square clips get * tall cards via PORTAL_CSS's aspect-aware rules. */ export declare function renderMotionOverlayReview(plan: MotionOverlayPlan): string; /** * Render the plan into `/review/review.html` and return its path + html. * Creates the `review/` dir if needed. The only side effect. */ export declare function writeMotionOverlayReview(workdir: string, plan: MotionOverlayPlan): Promise; //# sourceMappingURL=preview.d.ts.map