pass
    @abstractmethod
    def readlines(self, hint: int = -1) -> List[AnyStr]:
        pass
    @abstractmethod
    def seek(self, offset: int, whence: int = 0) -> int:
        pass
    @abstractmethod
    def seekable(self) -> bool:
        pass
    @abstractmethod
    def tell(self) -> int:
        pass
    @abstractmethod
    def truncate(self, size: int = None) -> int:
        pass
    @abstractmethod
    def writable(self) -> bool:
        pass
    @abstractmethod
    def write(self, s: AnyStr) -> int:
        pass
    @abstractmethod
    def writelines(self, lines: List[AnyStr]) -> None:
        pass
    @abstractmethod
    def __enter__(self) -> 'IO[AnyStr]':
        pass
    @abstractmethod
    def __exit__(self, type, value, traceback) -> None:
        pass
class BinaryIO(IO[bytes]):
    """Typed version of the return of open() in binary mode."""
    __slots__ = ()
    @abstractmethod
    def write(self, s: Union[bytes, bytearray]) -> int:
        pass
    @abstractmethod
    def __enter__(self) -> 'BinaryIO':
        pass
class TextIO(IO[str]):
    """Typed version of the return of open() in text mode."""
    __slots__ = ()
    @property
    @abstractmethod
    def buffer(self) -> BinaryIO:
        pass
    @property
    @abstractmethod
    def encoding(self) -> str:
        pass
    @property
    @abstractmethod
    def errors(self) -> Optional[str]:
        pass
    @property
    @abstractmethod