import { type DiarizationPreference, type TranscriptionProvider, type TranscriptionSegment } from "../../../../transcription/whisper.js";
import type { MediaCache } from "../../../cache/types.js";
import type { LinkPreviewProgressEvent } from "../../../link-preview/deps.js";
import { type TranscriptionConfig } from "../../transcription-config.js";
export { buildYtDlpDownloadArgs, fetchDurationSecondsWithYtDlp, fetchMediaMetadataWithYtDlp, type YtDlpMediaMetadata, } from "./yt-dlp-process.js";
type YtDlpTranscriptResult = {
    text: string | null;
    provider: TranscriptionProvider | null;
    error: Error | null;
    notes: string[];
    segments?: TranscriptionSegment[] | null;
};
type YtDlpRequest = {
    ytDlpPath: string | null;
    transcription?: Partial<TranscriptionConfig> | null;
    env?: Record<string, string | undefined>;
    groqApiKey?: string | null;
    assemblyaiApiKey?: string | null;
    elevenlabsApiKey?: string | null;
    geminiApiKey?: string | null;
    openaiApiKey?: string | null;
    falApiKey?: string | null;
    deepgramApiKey?: string | null;
    diarization?: DiarizationPreference | null;
    downloadVideo?: boolean;
    url: string;
    onProgress?: ((event: LinkPreviewProgressEvent) => void) | null;
    service?: "youtube" | "podcast" | "generic";
    mediaKind?: "video" | "audio" | null;
    mediaCache?: MediaCache | null;
    extraArgs?: string[];
};
export declare const fetchTranscriptWithYtDlp: ({ ytDlpPath, transcription, env, groqApiKey, assemblyaiApiKey, elevenlabsApiKey, geminiApiKey, openaiApiKey, falApiKey, deepgramApiKey, diarization, downloadVideo, url, onProgress, service, mediaKind, mediaCache, extraArgs, }: YtDlpRequest) => Promise<YtDlpTranscriptResult>;
