--- /dev/null
+from _typeshed import SupportsRead
+from collections.abc import Mapping, Sequence
+from typing import IO, Any
+
+from .events import Event
+from .nodes import Node
+from .tokens import Token
+
+def get_version_string() -> str: ...
+def get_version() -> tuple[int, int, int]: ...
+
+class Mark:
+ name: Any
+ index: int
+ line: int
+ column: int
+ buffer: Any
+ pointer: Any
+ def __init__(self, name, index: int, line: int, column: int, buffer, pointer) -> None: ...
+ def get_snippet(self): ...
+
+class CParser:
+ def __init__(self, stream: str | bytes | SupportsRead[str | bytes]) -> None: ...
+ def dispose(self) -> None: ...
+ def get_token(self) -> Token | None: ...
+ def peek_token(self) -> Token | None: ...
+ def check_token(self, *choices) -> bool: ...
+ def get_event(self) -> Event | None: ...
+ def peek_event(self) -> Event | None: ...
+ def check_event(self, *choices) -> bool: ...
+ def check_node(self) -> bool: ...
+ def get_node(self) -> Node | None: ...
+ def get_single_node(self) -> Node | None: ...
+ def raw_parse(self) -> int: ...
+ def raw_scan(self) -> int: ...
+
+class CEmitter:
+ def __init__(
+ self,
+ stream: IO[Any],
+ canonical: Any | None = ...,
+ indent: int | None = ...,
+ width: int | None = ...,
+ allow_unicode: Any | None = ...,
+ line_break: str | None = ...,
+ encoding: str | None = ...,
+ explicit_start: Any | None = ...,
+ explicit_end: Any | None = ...,
+ version: Sequence[int] | None = ...,
+ tags: Mapping[str, str] | None = ...,
+ ) -> None: ...
+ def dispose(self) -> None: ...
+ def emit(self, event_object) -> None: ...
+ def open(self) -> None: ...
+ def close(self) -> None: ...
+ def serialize(self, node) -> None: ...