import { buildYtDlpDownloadArgs, type YtDlpMediaMetadata } from "./yt-dlp-protocol.js";
type YtDlpDurationRequest = {
    ytDlpPath: string | null;
    url: string;
    timeoutMs?: number;
};
export declare function fetchMediaMetadataWithYtDlp({ ytDlpPath, url, timeoutMs, }: YtDlpDurationRequest): Promise<YtDlpMediaMetadata | null>;
export declare function fetchDurationSecondsWithYtDlp(request: YtDlpDurationRequest): Promise<number | null>;
export declare function runYtDlpDownload({ ytDlpPath, url, output, format, extractAudio, extraArgs, onProgress, }: {
    ytDlpPath: string;
    url: string;
    output: string;
    format: string;
    extractAudio: boolean;
    extraArgs?: string[];
    onProgress?: ((downloadedBytes: number, totalBytes: number | null) => void) | null;
}): Promise<void>;
export { buildYtDlpDownloadArgs };
export type { YtDlpMediaMetadata };
