import { MutexInterface } from 'async-mutex';
import { Job } from 'bullmq';
import { FfmpegCommand } from 'fluent-ffmpeg';
import { AvailableEncoders } from '../../../shared/models';
declare type TranscodeVODOptionsType = 'hls' | 'hls-from-ts' | 'quick-transcode' | 'video' | 'merge-audio' | 'only-audio';
interface BaseTranscodeVODOptions {
    type: TranscodeVODOptionsType;
    inputPath: string;
    outputPath: string;
    inputFileMutexReleaser: MutexInterface.Releaser;
    availableEncoders: AvailableEncoders;
    profile: string;
    resolution: number;
    job?: Job;
}
interface HLSTranscodeOptions extends BaseTranscodeVODOptions {
    type: 'hls';
    copyCodecs: boolean;
    hlsPlaylist: {
        videoFilename: string;
    };
}
interface HLSFromTSTranscodeOptions extends BaseTranscodeVODOptions {
    type: 'hls-from-ts';
    isAAC: boolean;
    hlsPlaylist: {
        videoFilename: string;
    };
}
interface QuickTranscodeOptions extends BaseTranscodeVODOptions {
    type: 'quick-transcode';
}
interface VideoTranscodeOptions extends BaseTranscodeVODOptions {
    type: 'video';
}
interface MergeAudioTranscodeOptions extends BaseTranscodeVODOptions {
    type: 'merge-audio';
    audioPath: string;
}
interface OnlyAudioTranscodeOptions extends BaseTranscodeVODOptions {
    type: 'only-audio';
}
declare type TranscodeVODOptions = HLSTranscodeOptions | HLSFromTSTranscodeOptions | VideoTranscodeOptions | MergeAudioTranscodeOptions | OnlyAudioTranscodeOptions | QuickTranscodeOptions;
declare function transcodeVOD(options: TranscodeVODOptions): Promise<void>;
export { transcodeVOD, buildVODCommand, TranscodeVODOptions, TranscodeVODOptionsType };
declare function buildVODCommand(command: FfmpegCommand, options: TranscodeVODOptions): Promise<FfmpegCommand>;
//# sourceMappingURL=ffmpeg-vod.d.ts.map