export declare const DEFAULT_MUSIC_GAIN_DB = -6; export declare const DEFAULT_MUSIC_START_SEC = 0; export declare const DEFAULT_MUSIC_FADE_SEC = 2; /** Watermark defaults, all as fractions of the video so they hold at any resolution. */ export declare const DEFAULT_LOGO_OPACITY = 0.7; export declare const DEFAULT_LOGO_HEIGHT_FRAC = 0.055; export declare const DEFAULT_LOGO_MARGIN_FRAC = 0.025; export type LogoCorner = 'br' | 'bl' | 'tr' | 'tl'; export interface RenderOptions { /** Resolved relative to the recording dir. Default "edl.json". */ edlPath?: string; /** Resolved relative to the recording dir. Default "-trailer.mp4". */ outPath?: string; tailPadFrames?: number; /** Draw the recorded HUD over every clip that doesn't opt out via "ui": false. */ ui?: boolean; /** * Where the HUD replay harness lives — `/hud-replay.html` on the running `bitmagic dev` sidecar. * Without it a `ui` render warns and draws no overlays rather than guessing a port. */ harnessUrl?: string; /** Ceiling on HUD keyframes per second of output time. 0 disables. Default 30. */ uiKeyframesPerSec?: number; /** Music bed under the reconstructed SFX. Resolved relative to the cwd. */ musicPath?: string; /** dB applied to the music. Default -6. */ musicGainDb?: number; /** Where in the track to come in. Default 0. */ musicStartSec?: number; /** Fade-out over the last N seconds of the video. Default 2. */ musicFadeSec?: number; /** dB applied to the reconstructed-SFX bus. Default 0. */ sfxGainDb?: number; /** Watermark image (PNG with alpha). Resolved relative to the cwd. */ logoPath?: string; /** 0..1. Default 0.7. */ logoOpacity?: number; /** Logo height as a fraction of video height. Default 0.055. */ logoHeightFrac?: number; /** Margin from the edges as a fraction of video width. Default 0.025. */ logoMarginFrac?: number; /** Which corner. Default bottom-right. */ logoCorner?: LogoCorner; /** TTF used for burned-in titles. Defaults to the bundled NotoSans-Bold. */ titleFontPath?: string; /** * Replace the output file instead of writing a new revision. Off by default: * re-rendering to the same name loses the previous cut, and players like * QuickTime keep showing the stale file until they are closed and reopened. */ overwrite?: boolean; } export interface RenderResult { /** The file actually written — the requested name, or its next free `-rN` revision. */ outPath: string; durationSec: number; clipCount: number; } export declare function runRender(recordingDir: string, options?: RenderOptions): Promise;