import { Job } from 'bull';
import ffmpeg, { FfmpegCommand } from 'fluent-ffmpeg';
import { AvailableEncoders } from '../../shared/models/videos';
declare function resetSupportedEncoders(): void;
declare function convertWebPToJPG(path: string, destination: string): Promise<void>;
declare function processGIF(path: string, destination: string, newSize: {
    width: number;
    height: number;
}): Promise<void>;
declare function generateImageFromVideoFile(fromPath: string, folder: string, imageName: string, size: {
    width: number;
    height: number;
}): Promise<void>;
declare type TranscodeOptionsType = 'hls' | 'hls-from-ts' | 'quick-transcode' | 'video' | 'merge-audio' | 'only-audio';
interface BaseTranscodeOptions {
    type: TranscodeOptionsType;
    inputPath: string;
    outputPath: string;
    availableEncoders: AvailableEncoders;
    profile: string;
    resolution: number;
    isPortraitMode?: boolean;
    job?: Job;
}
interface HLSTranscodeOptions extends BaseTranscodeOptions {
    type: 'hls';
    copyCodecs: boolean;
    hlsPlaylist: {
        videoFilename: string;
    };
}
interface HLSFromTSTranscodeOptions extends BaseTranscodeOptions {
    type: 'hls-from-ts';
    isAAC: boolean;
    hlsPlaylist: {
        videoFilename: string;
    };
}
interface QuickTranscodeOptions extends BaseTranscodeOptions {
    type: 'quick-transcode';
}
interface VideoTranscodeOptions extends BaseTranscodeOptions {
    type: 'video';
}
interface MergeAudioTranscodeOptions extends BaseTranscodeOptions {
    type: 'merge-audio';
    audioPath: string;
}
interface OnlyAudioTranscodeOptions extends BaseTranscodeOptions {
    type: 'only-audio';
}
declare type TranscodeOptions = HLSTranscodeOptions | HLSFromTSTranscodeOptions | VideoTranscodeOptions | MergeAudioTranscodeOptions | OnlyAudioTranscodeOptions | QuickTranscodeOptions;
declare function transcode(options: TranscodeOptions): Promise<void>;
declare function getLiveTranscodingCommand(options: {
    inputUrl: string;
    outPath: string;
    masterPlaylistName: string;
    resolutions: number[];
    fps: number;
    bitrate: number;
    ratio: number;
    availableEncoders: AvailableEncoders;
    profile: string;
}): Promise<ffmpeg.FfmpegCommand>;
declare function getLiveMuxingCommand(inputUrl: string, outPath: string, masterPlaylistName: string): ffmpeg.FfmpegCommand;
declare function buildStreamSuffix(base: string, streamNum?: number): string;
declare function buildx264VODCommand(command: FfmpegCommand, options: TranscodeOptions): Promise<ffmpeg.FfmpegCommand>;
declare function getFFmpegVersion(): Promise<string>;
declare function runCommand(options: {
    command: FfmpegCommand;
    silent?: boolean;
    job?: Job;
}): Promise<void>;
export { getLiveTranscodingCommand, getLiveMuxingCommand, buildStreamSuffix, convertWebPToJPG, processGIF, generateImageFromVideoFile, TranscodeOptions, TranscodeOptionsType, transcode, runCommand, getFFmpegVersion, resetSupportedEncoders, buildx264VODCommand };
//# sourceMappingURL=ffmpeg-utils.d.ts.map