--- /dev/null
+from collections.abc import Iterator, Mapping, Set
+from typing_extensions import TypedDict
+
+from pygments.token import _TokenType
+
+ansicolors: Set[str] # not intended to be mutable (== typing.AbstractSet, not builtins.set)
+
+class _StyleDict(TypedDict):
+ color: str | None
+ bold: bool
+ italic: bool
+ underline: bool
+ bgcolor: str | None
+ border: str | None
+ roman: bool | None # lol yes, can be True or False or None
+ sans: bool | None
+ mono: bool | None
+ ansicolor: str | None
+ bgansicolor: str | None
+
+class StyleMeta(type):
+ def __new__(cls, name, bases, dct): ...
+ def style_for_token(cls, token: _TokenType) -> _StyleDict: ...
+ def styles_token(cls, ttype: _TokenType) -> bool: ...
+ def list_styles(cls) -> list[tuple[_TokenType, _StyleDict]]: ...
+ def __iter__(cls) -> Iterator[tuple[_TokenType, _StyleDict]]: ...
+ def __len__(cls) -> int: ...
+ # These are a bit tricky.
+ # Technically should be ClassVar in class Style.
+ # But then we can't use StyleMeta to denote a style class.
+ # We need that because Type[Style] is not iterable, for example.
+ background_color: str
+ highlight_color: str
+ line_number_color: str
+ line_number_background_color: str
+ line_number_special_color: str
+ line_number_special_background_color: str
+ styles: Mapping[_TokenType, str] # not intended to be mutable
+
+class Style(metaclass=StyleMeta): ...