/**
 * Shared FFmpeg Adapter for Video Operations
 *
 * Centralizes FFmpeg binary resolution, process execution, and temporary file
 * management for all video adapter modules (frameExtractor, videoMerger).
 *
 * Follows the adapter pattern used in `src/lib/adapters/tts/` and
 * `src/lib/adapters/providerImageAdapter.ts`.
 *
 * @module adapters/video/ffmpegAdapter
 */
import { readFile, writeFile } from "node:fs/promises";
import { join } from "node:path";
/** Timeout for frame-extraction FFmpeg operations (30 seconds) */
export declare const FFMPEG_FRAME_TIMEOUT_MS = 30000;
/** Timeout for merge/concat FFmpeg operations (2 minutes) */
export declare const FFMPEG_MERGE_TIMEOUT_MS = 120000;
/** Max stdout/stderr buffer for frame extraction (10 MB) */
export declare const FFMPEG_FRAME_MAX_BUFFER: number;
/** Max stdout/stderr buffer for merge operations (50 MB) */
export declare const FFMPEG_MERGE_MAX_BUFFER: number;
/** FFmpeg JPEG quality scale (2 = high quality, range 2-31) */
export declare const JPEG_QUALITY = "2";
/** Seconds before end-of-video to seek when extracting last frame */
export declare const LAST_FRAME_SEEK_OFFSET = "0.5";
/** Minimum valid MP4 buffer size in bytes (ftyp header = 8 bytes minimum) */
export declare const MIN_VIDEO_BUFFER_SIZE = 12;
/**
 * Create a tracked temporary directory for FFmpeg operations.
 *
 * @param prefix - Directory name prefix (e.g. "frame", "merge")
 * @returns Absolute path to the created directory
 */
export declare function createTrackedTempDir(prefix: string): Promise<string>;
/**
 * Clean up temporary files and their parent directory.
 * Logs failures at debug level instead of swallowing silently.
 *
 * @param tempDir - The temporary directory to remove
 * @param files - File paths within tempDir to delete
 */
export declare function cleanupTempFiles(tempDir: string, ...files: string[]): Promise<void>;
/**
 * Resolve the FFmpeg binary path.
 *
 * Resolution order:
 * 1. `FFMPEG_PATH` environment variable
 * 2. `ffmpeg-static` npm package (optional peer dependency)
 * 3. System `ffmpeg` on PATH
 *
 * @returns Absolute or relative path to the FFmpeg binary
 */
export declare function getFfmpegPath(): Promise<string>;
/**
 * Run an FFmpeg command via `child_process.execFile`.
 *
 * @param args - FFmpeg CLI arguments (without the binary path)
 * @param options - Timeout and buffer size overrides
 * @returns stdout and stderr from the process
 * @throws Error if the process exits with a non-zero code or times out
 */
export declare function runFfmpeg(args: string[], options?: {
    timeoutMs?: number;
    maxBuffer?: number;
}): Promise<{
    stdout: string;
    stderr: string;
}>;
/**
 * Validate that a buffer looks like a valid MP4 video.
 *
 * Checks minimum size and the presence of an `ftyp` box header.
 *
 * @param buffer - Buffer to validate
 * @returns `true` if the buffer passes basic MP4 validation
 */
export declare function isValidMp4Buffer(buffer: Buffer): boolean;
export { writeFile, readFile, join };
