from collections.abc import MutableMapping
from typing import Generic, Literal, TypeVar

__all__ = list[Literal['DotDict', 'JS_FUNCTIONS']]

_T = TypeVar('_T', bound=object)

class DotDict(dict, Generic[_T]):
    def __init__(self, d: MutableMapping) -> None: ...
    def __delattr__(self, key: str) -> None: ...
    def __getattr__(self, item: str) -> _T | DotDict: ...
    def __getitem__(self, key: str) -> _T | DotDict: ...
    def __setattr__(self, key: str, value: object) -> None: ...
    def __setitem__(self, key: str, value: object) -> None: ...

JS_FUNCTIONS: DotDict[str]
