from typing import Any, Self

class YoutubeDL:
    def __init__(
        self,
        params: dict[str, Any] | None = None,
        auto_init: bool = True,
    ) -> None: ...
    def extract_info(
        self,
        url: str,
        download: bool = True,
        ie_key: str | None = None,
        extra_info: dict[str, Any] | None = None,
        process: bool = True,
        force_generic_extractor: bool = False,
    ) -> dict[str, Any]: ...
    def prepare_filename(
        self,
        info_dict: dict[str, Any],
        dir_type: str = "",
        *,
        outtmpl: str | None = None,
        warn: bool = False,
    ) -> str: ...
    def __enter__(self) -> Self: ...
    def __exit__(self, *args: object) -> None: ...
