/**
 * Chunk Encoder Service
 *
 * Encodes captured frames into video using FFmpeg.
 * Supports CPU (libx264) and GPU encoding.
 */
import { type EngineConfig } from "../config.js";
import { type GpuEncoder } from "../utils/gpuEncoder.js";
import { type HdrTransfer } from "../utils/hdr.js";
import { type Fps } from "@hyperframes/core";
import type { EncoderOptions, EncodeResult, MuxResult } from "./chunkEncoder.types.js";
export type { EncoderOptions, EncodeResult, MuxResult } from "./chunkEncoder.types.js";
export declare const ENCODER_PRESETS: {
    draft: {
        preset: string;
        quality: number;
        codec: "h264";
    };
    standard: {
        preset: string;
        quality: number;
        codec: "h264";
    };
    high: {
        preset: string;
        quality: number;
        codec: "h264";
    };
};
export interface EncoderPreset {
    preset: string;
    quality: number;
    codec: "h264" | "h265" | "vp9" | "prores";
    pixelFormat: string;
    hdr?: {
        transfer: HdrTransfer;
    };
}
export interface MuxVideoWithAudioOptions extends Partial<Pick<EngineConfig, "ffmpegProcessTimeout">> {
    /**
     * Codec of the sidecar audio when the caller already knows it. HyperFrames
     * render paths pass the mixed AAC sidecar by contract, so muxing should not
     * depend on the file extension alone.
     */
    audioCodec?: "aac";
    /** Preserve a priming edit list known to have been created by AAC re-encoding. */
    preserveAudioPrimingEditList?: boolean;
}
/**
 * Get encoder preset for a given quality and output format.
 * WebM uses VP9 with alpha-capable pixel format; MP4 uses h264 (or h265 for HDR);
 * MOV uses ProRes 4444 with alpha for editor-compatible transparency.
 */
export declare function getEncoderPreset(quality: "draft" | "standard" | "high", format?: "mp4" | "webm" | "mov", hdr?: {
    transfer: HdrTransfer;
}): EncoderPreset;
export { detectGpuEncoder, type GpuEncoder } from "../utils/gpuEncoder.js";
export declare function buildEncoderArgs(options: EncoderOptions, inputArgs: string[], outputPath: string, gpuEncoder?: GpuEncoder): string[];
export declare function encodeFramesFromDir(framesDir: string, framePattern: string, outputPath: string, options: EncoderOptions, signal?: AbortSignal, config?: Partial<Pick<EngineConfig, "ffmpegEncodeTimeout">>): Promise<EncodeResult>;
export declare function encodeFramesChunkedConcat(framesDir: string, framePattern: string, outputPath: string, options: EncoderOptions, chunkSizeFrames: number, signal?: AbortSignal, config?: Partial<Pick<EngineConfig, "ffmpegEncodeTimeout">>): Promise<EncodeResult>;
export declare function muxVideoWithAudio(videoPath: string, audioPath: string, outputPath: string, signal?: AbortSignal, config?: MuxVideoWithAudioOptions, fps?: Fps): Promise<MuxResult>;
export declare function applyFaststart(inputPath: string, outputPath: string, signal?: AbortSignal, config?: Partial<Pick<EngineConfig, "ffmpegProcessTimeout">>, fps?: Fps): Promise<MuxResult>;
//# sourceMappingURL=chunkEncoder.d.ts.map