import abc
from typing import Any
from typing import Generator
from typing import TypeVar

_TStartableContext = TypeVar("_TStartableContext", bound=StartableContext)

class StartableContext(abc.ABC, metaclass=abc.ABCMeta):
    @abc.abstractmethod
    async def start(self: _TStartableContext) -> _TStartableContext: ...
    def __await__(
        self: _TStartableContext,
    ) -> Generator[Any, None, _TStartableContext]: ...
    async def __aenter__(self: _TStartableContext) -> _TStartableContext: ...
    @abc.abstractmethod
    async def __aexit__(
        self, type_: Any, value: Any, traceback: Any
    ) -> None: ...

class ProxyComparable:
    def __hash__(self) -> int: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
