/**
 * A Windows-only utility class responsible for full-display screen recording during IOCD test runs.
 *
 * It wraps an ffmpeg subprocess using the `gdigrab` input device to capture the entire desktop.
 *
 * Behavior:
 * - `start()` spawns ffmpeg and begins recording.
 * - `stop()` gracefully terminates ffmpeg and finalizes the video file.
 * - Automatically ensures output directories exist.
 * - Can delete recordings for passed tests to keep artifacts clean.
 *
 * Usage:
 * ```ts
 * const recorder = new ScreenRecorder({ outDir: 'D:\DEV\desktop\wdio-tests\artifacts\videos' });
 * await recorder.start('my-test-name');
 * await recorder.stop(true);
 * ```
 */
export declare class ScreenRecorder {
    private readonly fps;
    private readonly outDir;
    private readonly ffmpegPath;
    private process?;
    private outputFile?;
    private logger;
    constructor(options: {
        fps: number;
        outDir: string;
    });
    /**
     * Builds the ffmpeg CLI arguments for full desktop capture on Windows using the `gdigrab` device.
     *
     * Notes:
     * - The configuration favors speed and stability over compression efficiency.
     * - It includes low-latency tuning and ensures the output file is playable even if recording stops abruptly.
     * - Works best with `.mkv` output (instant header finalization), but also fine with `.mp4` due to `+faststart`.
     */
    private buildFfmpegArgs;
    /**
     * Starts an ffmpeg subprocess to record the full Windows display.
     * Uses .mkv container for safer short recordings (headers are written immediately).
     * @param testName - Name of the current test (used in output filename)
     */
    start(testName: string): Promise<void>;
    /**
     * Stops the ffmpeg subprocess and optionally deletes the file.
     * @param keep - Whether to keep the file (true for failed tests, false for passed).
     * @returns The absolute path to the saved file, or null if deleted.
     */
    stop(keep: boolean): Promise<string | null>;
}
