export declare const DEFAULT_TRAILER_SECONDS = 30; /** Music runs a little past the cut so the fade-out has material. */ export declare const MUSIC_TAIL_SEC = 4; /** The render's music/SFX balance the make-trailer skill settled on. */ export declare const MAKE_MUSIC_GAIN_DB = -4; export declare const MAKE_SFX_GAIN_DB = -3; export interface TrailerPublished { publicUrl: string; pageUrl?: string; attached: boolean; } export interface MakeOptions { root: string; /** A finished recording dir (see paths.resolveRecording). */ recordingDir: string; /** A music file to bed under the cut. */ music?: string; /** Generate the bed from this prompt through `generateMusic`. */ musicPrompt?: string; /** Target length including the end card. */ seconds?: number; /** End-card text; defaults to the game's name. */ title?: string; sub?: string; /** Draw the HUD replay (needs `harnessUrl`). */ ui?: boolean; /** `/hud-replay.html` on the running dev sidecar. */ harnessUrl?: string; /** Ceiling on HUD overlay changes per second of output; the render's default otherwise. */ uiKeyframesPerSec?: number; /** Throw away trailer/shots.json and write a fresh auto cut. */ resetShots?: boolean; /** The music lane: write an mp3 of `seconds` for `prompt` at `outPath`. */ generateMusic?: (prompt: string, seconds: number, outPath: string) => Promise; /** The publish lane: upload the render and return where it went. */ publish?: (mp4: string) => Promise; } export interface MakeResult { recordingDir: string; recordingName: string; workDir: string; analysisPath: string; shotsPath: string; /** Whether this run wrote the shots file (first cut) or cut an existing one. */ shotsWritten: boolean; edlPath: string; musicPath?: string; beatsPath?: string; mp4: string; durationSec: number; clipCount: number; published?: TrailerPublished; } /** The game's name as the work copy knows it, for the end card and the file name. */ export declare function gameNameFor(root: string): string; export declare function makeTrailer(options: MakeOptions): Promise;