import ffmpeg from "@modernized/fluent-ffmpeg";
type FfmpegCommand = ReturnType<typeof ffmpeg>;
export type FfmpegContext = {
    command: FfmpegCommand;
    inputCount: number;
    filterComplex: string[];
};
export declare const setFfmpegPath: (ffmpegPath: string) => void;
export declare const setFfprobePath: (ffprobePath: string) => void;
export declare const FfmpegContextInit: () => FfmpegContext;
export declare const FfmpegContextAddInput: (context: FfmpegContext, input: string, inputOptions?: string[]) => number;
export declare const FfmpegContextPushFormattedAudio: (context: FfmpegContext, sourceId: string, outputId: string, duration?: number | undefined) => void;
export declare const FfmpegContextInputFormattedAudio: (context: FfmpegContext, input: string, duration?: number | undefined, inputOptions?: string[]) => string;
export declare const FfmpegContextGenerateOutput: (context: FfmpegContext, output: string, options?: string[]) => Promise<number>;
/** Round up odd dimensions to even (required by libx264 yuv420p) */
export declare const normalizeEvenDimensions: (width: number, height: number) => {
    width: number;
    height: number;
};
/**
 * Convert a sequence of PNG frames into a video file.
 * Expects files named frame_00000.png, frame_00001.png, etc. in framesDir.
 */
export declare const framesToVideo: (framesDir: string, outputPath: string, fps: number, width: number, height: number) => Promise<void>;
export declare const ffmpegGetMediaDuration: (filePath: string) => Promise<{
    duration: number;
    hasAudio: boolean;
}>;
export declare const extractImageFromMovie: (movieFile: string, imagePath: string, useLastFrame?: boolean) => Promise<object>;
export declare const trimMusic: (inputFile: string, startTime: number, duration: number) => Promise<Buffer>;
export declare const createSilentAudio: (filePath: string, durationSec: number) => Promise<void>;
export declare const pcmToMp3: (rawPcm: Buffer, sampleRate?: number) => Promise<Buffer>;
export {};
