/// <reference types="node" />
import { CliOptions } from "./types/cli";
export declare const run: (options: CliOptions, { getInputVideoFilePath, getVideoDuration, getMusicFilePath, cleanup, join, }?: {
    getInputVideoFilePath?: (({ select, getLocalVideo, getYoutubeVideo, }?: {
        select?: (() => Promise<"local" | "youtube">) | undefined;
        getLocalVideo?: ((root?: string | undefined) => Promise<string>) | undefined;
        getYoutubeVideo?: (({ getYoutubeUrl, download, }?: {
            getYoutubeUrl?: (() => Promise<string>) | undefined;
            download?: ((url: string) => Promise<string>) | undefined;
        }) => Promise<string>) | undefined;
    }) => Promise<string>) | undefined;
    getVideoDuration?: ((filePath: string) => Promise<number>) | undefined;
    getMusicFilePath?: ((duration: number, options?: CliOptions, { select, getLocalMusic, getYoutubeMusic, getRandomMusic, }?: {
        select?: (() => Promise<"local" | "youtube" | "random">) | undefined;
        getLocalMusic?: ((duration: number, { truncate, getFilePath }?: {
            truncate?: ((mp3File: string, duration: number) => Promise<string>) | undefined;
            getFilePath?: ((root?: string | undefined) => Promise<string>) | undefined;
        }) => Promise<string>) | undefined;
        getYoutubeMusic?: ((duration: number, { getYoutubeUrl, download, convert, truncate, }?: {
            getYoutubeUrl?: (() => Promise<string>) | undefined;
            download?: ((url: string) => Promise<string>) | undefined;
            convert?: ((m4aFile: string) => Promise<string>) | undefined;
            truncate?: ((mp3File: string, duration: number) => Promise<string>) | undefined;
        }) => Promise<string>) | undefined;
        getRandomMusic?: ((duration: number, { getStream, }?: {
            getStream?: ((outFilePath: string) => Promise<import("stream").Readable>) | undefined;
        }) => Promise<string>) | undefined;
    }) => Promise<string>) | undefined;
    cleanup?: (() => Promise<void>) | undefined;
    join?: ((musicFilePath: string, videoFilePath: string) => Promise<string>) | undefined;
}) => Promise<string>;
export default run;
