# ruff: noqa: B008
"""Type stubs for django-environ to fix Pylance type checking issues."""

import builtins
from typing import Any, overload

class NoValue:
    pass

class Env:
    def __init__(self, **schema: Any) -> None: ...
    @overload
    def __call__(self, var_name: str) -> str: ...
    @overload
    def __call__(self, var_name: str, *, default: Any) -> Any: ...
    def __call__(self, var_name: str, *, default: Any = NoValue()) -> Any: ...
    @overload
    def str(self, var_name: str) -> str: ...
    @overload
    def str(self, var_name: str, *, default: Any) -> str: ...
    def str(self, var_name: str, *, default: Any = NoValue()) -> str: ...
    @overload
    def int(self, var_name: str) -> int: ...
    @overload
    def int(self, var_name: str, *, default: Any) -> int: ...
    def int(self, var_name: str, *, default: Any = NoValue()) -> int: ...
    @overload
    def bool(self, var_name: str) -> bool: ...
    @overload
    def bool(self, var_name: str, *, default: Any) -> bool: ...
    def bool(self, var_name: str, *, default: Any = NoValue()) -> bool: ...
    @overload
    def list(self, var_name: str) -> builtins.list[str]: ...
    @overload
    def list(self, var_name: str, *, default: Any) -> builtins.list[str]: ...
    def list(self, var_name: str, *, default: Any = NoValue()) -> builtins.list[str]: ...
    @overload
    def db(self, var_name: str) -> builtins.dict[str, Any]: ...
    @overload
    def db(self, var_name: str, *, default: Any) -> builtins.dict[str, Any]: ...
    def db(self, var_name: str, *, default: Any = NoValue()) -> builtins.dict[str, Any]: ...
    @overload
    def cache(self, var_name: str) -> builtins.dict[str, Any]: ...
    @overload
    def cache(self, var_name: str, *, default: Any) -> builtins.dict[str, Any]: ...
    def cache(self, var_name: str, *, default: Any = NoValue()) -> builtins.dict[str, Any]: ...
    @overload
    def email(self, var_name: str) -> builtins.dict[str, Any]: ...
    @overload
    def email(self, var_name: str, *, default: Any) -> builtins.dict[str, Any]: ...
    def email(self, var_name: str, *, default: Any = NoValue()) -> builtins.dict[str, Any]: ...
    @overload
    def tuple(self, var_name: str) -> builtins.tuple[str, ...]: ...
    @overload
    def tuple(self, var_name: str, *, default: Any) -> builtins.tuple[str, ...]: ...
    def tuple(self, var_name: str, *, default: Any = NoValue()) -> builtins.tuple[str, ...]: ...
    @overload
    def dict(self, var_name: str) -> builtins.dict[str, Any]: ...
    @overload
    def dict(self, var_name: str, *, default: Any) -> builtins.dict[str, Any]: ...
    def dict(self, var_name: str, *, default: Any = NoValue()) -> builtins.dict[str, Any]: ...
    @overload
    def float(self, var_name: str) -> float: ...
    @overload
    def float(self, var_name: str, *, default: Any) -> float: ...
    def float(self, var_name: str, *, default: Any = NoValue()) -> float: ...
    @overload
    def bytes(self, var_name: str) -> bytes: ...
    @overload
    def bytes(self, var_name: str, *, default: Any) -> bytes: ...
    def bytes(self, var_name: str, *, default: Any = NoValue()) -> bytes: ...
    @overload
    def json(self, var_name: str) -> Any: ...
    @overload
    def json(self, var_name: str, *, default: Any) -> Any: ...
    def json(self, var_name: str, *, default: Any = NoValue()) -> Any: ...
    @overload
    def path(self, var_name: str) -> str: ...
    @overload
    def path(self, var_name: str, *, default: Any) -> str: ...
    def path(self, var_name: str, *, default: Any = NoValue()) -> str: ...
    @overload
    def url(self, var_name: str) -> str: ...
    @overload
    def url(self, var_name: str, *, default: Any) -> str: ...
    def url(self, var_name: str, *, default: Any = NoValue()) -> str: ...
    @staticmethod
    def read_env(env_file: Any = None, **kwargs: Any) -> None: ...
