--- /dev/null
+import sys
+from _typeshed import SupportsWrite
+from typing import Any, Callable, Dict, Optional, Pattern, Sequence, TextIO, Tuple, Union
+
+if sys.platform == "win32":
+ from .winterm import WinTerm
+
+ winterm: WinTerm
+else:
+ winterm: None
+
+class StreamWrapper:
+ def __init__(self, wrapped: TextIO, converter: SupportsWrite[str]) -> None: ...
+ def __getattr__(self, name: str) -> Any: ...
+ def __enter__(self, *args: object, **kwargs: object) -> TextIO: ...
+ def __exit__(self, *args: Any, **kwargs: Any) -> None: ...
+ def write(self, text: str) -> None: ...
+ def isatty(self) -> bool: ...
+ @property
+ def closed(self) -> bool: ...
+
+_WinTermCall = Callable[[Optional[int], bool, bool], None]
+_WinTermCallDict = Dict[int, Union[Tuple[_WinTermCall], Tuple[_WinTermCall, int], Tuple[_WinTermCall, int, bool]]]
+
+class AnsiToWin32:
+ ANSI_CSI_RE: Pattern[str] = ...
+ ANSI_OSC_RE: Pattern[str] = ...
+ wrapped: TextIO = ...
+ autoreset: bool = ...
+ stream: StreamWrapper = ...
+ strip: bool = ...
+ convert: bool = ...
+ win32_calls: _WinTermCallDict = ...
+ on_stderr: bool = ...
+ def __init__(self, wrapped: TextIO, convert: bool | None = ..., strip: bool | None = ..., autoreset: bool = ...) -> None: ...
+ def should_wrap(self) -> bool: ...
+ def get_win32_calls(self) -> _WinTermCallDict: ...
+ def write(self, text: str) -> None: ...
+ def reset_all(self) -> None: ...
+ def write_and_convert(self, text: str) -> None: ...
+ def write_plain_text(self, text: str, start: int, end: int) -> None: ...
+ def convert_ansi(self, paramstring: str, command: str) -> None: ...
+ def extract_params(self, command: str, paramstring: str) -> Tuple[int, ...]: ...
+ def call_win32(self, command: str, params: Sequence[int]) -> None: ...
+ def convert_osc(self, text: str) -> str: ...