interface RecorderTypes {
    resolution?: `${number}x${number}`;
    frameRate?: 24 | 30 | 60 | 120;
    fileFormat?: 'mp4' | 'mov' | 'wmv' | 'avi' | 'mkv';
    audioSource?: string;
    outputFile?: string;
    replaceExisting?: boolean;
    verbose?: boolean;
    rateControl?: {
        mode: 'crf' | 'cq' | 'bitrate' | 'qp';
        value: number;
    };
    codec?: 'libx264' | 'libx265' | 'libvpx-vp9' | 'h264_nvenc' | 'hevc_nvenc' | 'h264_qsv' | 'hevc_qsv' | 'h264_amf' | 'hevc_amf';
    preset?: 'placebo' | 'veryslow' | 'slower' | 'slow' | 'medium' | 'fast' | 'faster' | 'veryfast' | 'superfast' | 'ultrafast';
    pixelFormat?: 'yuv420p' | 'yuv422p' | 'yuv444p' | 'rgb24' | 'gray' | 'nv12';
}
export declare class Recorder {
    private readonly config;
    private ffmpegProcess;
    isRecording: boolean;
    constructor({ resolution, frameRate, fileFormat, audioSource, outputFile, replaceExisting, verbose, rateControl, codec, preset, pixelFormat, }?: RecorderTypes);
    get getConfig(): RecorderTypes;
    start({ stopAfter }?: {
        stopAfter?: number;
    }): void;
    stop(force?: boolean): void;
}
export {};
