from typing import Any, overload

class Singleton(type):
    @overload
    def __init__(self, __o: object) -> None: ...
    @overload
    def __init__(self, __name: str, __bases: tuple[type, ...], __dict: dict[str, Any], **kwds: Any) -> None: ...
    def __call__(self, *args: Any, **kwds: Any) -> Any: ...

class Cached(type):
    @overload
    def __init__(self, __o: object) -> None: ...
    @overload
    def __init__(self, __name: str, __bases: tuple[type, ...], __dict: dict[str, Any], **kwds: Any) -> None: ...
    def __call__(self, *args: Any) -> Any: ...
