import { DownloadProvider } from '../DownloadProvider.js'; import { DownloadConfig } from '../schema/DownloadConfig.js'; import { DownloadResult } from '../schema/DownloadResult.js'; import { VideoMetadata } from '../schema/VideoMetadata.js'; export interface YtDlpProviderOptions { outputDir?: string; cookiesPath?: string; /** Browser to get cookies from (safari, chrome, firefox, etc.) */ cookiesFromBrowser?: string; /** Proxy URL for yt-dlp requests */ proxyUrl?: string; } /** * yt-dlp based download provider. * Supports 1000+ video platforms. * * ## Environment Variables * - `YTDLP_COOKIES_FROM_BROWSER`: Browser to get cookies from (safari, chrome, firefox) * - `YTDLP_COOKIES_PATH`: Path to cookies.txt file * - `YTDLP_PROXY`: Proxy URL for requests */ export declare class YtDlpProvider extends DownloadProvider { readonly name = "yt-dlp"; private outputDir; private optionsCookiesPath?; private optionsCookiesFromBrowser?; private optionsProxyUrl?; constructor(options?: YtDlpProviderOptions); /** * Get cookies path - checks options first, then env var (dynamic). */ private get cookiesPath(); /** * Get cookies from browser - checks options first, then env var (dynamic). */ private get cookiesFromBrowser(); /** * Get proxy URL - checks options first, then env var (dynamic). */ private get proxyUrl(); /** * Build cookies flag for yt-dlp commands. */ private getCookiesFlag; /** * Build proxy flag for yt-dlp commands. */ private getProxyFlag; download(url: string, config: DownloadConfig): Promise; extractMetadata(url: string): Promise; /** * Get extractor-specific arguments to bypass restrictions. * For YouTube, tries multiple player clients to avoid bot detection. * Order matters: tries android first, then ios, then web as fallback. */ private getExtractorArgs; isSupported(url: string): Promise; private mapMetadata; private mapChapters; private buildDownloadArgs; private findDownloadedFiles; }