class RunStats:
    @property
    def points(self) -> int: ...
    @property
    def points_dropped(self) -> int: ...
    @property
    def batches(self) -> int: ...
    @property
    def bytes_compressed(self) -> int: ...
    @property
    def bytes_uncompressed(self) -> int: ...
    @property
    def batches_sent(self) -> int: ...
    @property
    def batches_acked(self) -> int: ...
    @property
    def batches_rejected(self) -> int: ...

class Run:
    def __init__(
        self,
        *,
        name: str | None = None,
        project: str | None = None,
        experiment: str | None = None,
        tags: list[str] | None = None,
        endpoint: str | None = None,
    ) -> None: ...

    def log(self, key: str, value: float, step: int) -> None: ...
    def finish(self) -> RunStats: ...

    @property
    def id(self) -> str: ...
    @property
    def points_logged(self) -> int: ...
    @property
    def points_dropped(self) -> int: ...

    def __enter__(self) -> "Run": ...
    def __exit__(
        self,
        exc_type: type[BaseException] | None,
        exc_val: BaseException | None,
        exc_tb: object | None,
    ) -> bool: ...
