export declare const CUT_DEFAULT_WIDTH = 1280; export declare const CUT_DEFAULT_HEIGHT = 720; export interface BuildSegmentCutArgsInput { /** Source clip to cut from. */ clipPath: string; /** Input-seek point in seconds (the lip-sync scrub offset / B-roll in-point). */ inSeconds: number; /** Desired segment duration; quantized to an exact whole number of frames. */ durationSec: number; /** Where the cut segment is written. */ outputPath: string; /** Output frame width (default 1280). */ width?: number; /** Output frame height (default 720). */ height?: number; /** Output frame rate (default 24, matching {@link TARGET_FPS}). */ fps?: number; /** x264 CRF (default 18). */ crf?: number; /** x264 preset (default 'veryfast' — segments are re-graded later in one pass). */ preset?: string; /** Keep source audio? Default false (`-an`); montage audio is muxed at the end. */ keepAudio?: boolean; } /** Exact whole-frame count for a segment duration (>= 1). */ export declare function segmentFrameCount(durationSec: number, fps?: number): number; /** * Build the FFmpeg args for one frame-exact segment cut. PURE — the returned * array is everything AFTER `ffmpeg -y`. Outputs exactly * `segmentFrameCount(durationSec, fps)` frames starting at `inSeconds`. */ export declare function buildSegmentCutArgs(input: BuildSegmentCutArgsInput): string[]; /** * Assert the built (concatenated) video length matches the planned length to * within one frame. Throws with a descriptive message otherwise. Use this as * the post-build gate on any audio-synced assembly so cumulative drift can never * silently regress. */ export declare function assertNoDrift(plannedSeconds: number, builtSeconds: number, fps?: number): void; //# sourceMappingURL=cut-segment.d.ts.map