"""
types-confluent-kafka: A package providing type hints for the confluent-kafka Python package.
This package is licensed under the Apache 2.0 License.
"""

# standard library
from abc import ABC, abstractmethod

class OffsetSpec(ABC):
    @property
    @abstractmethod
    def _value(self) -> int: ...
    @classmethod
    def _fill_values(cls) -> None: ...
    @classmethod
    def earliest(cls) -> EarliestSpec: ...
    @classmethod
    def latest(cls) -> LatestSpec: ...
    @classmethod
    def max_timestamp(cls) -> MaxTimestampSpec: ...
    @classmethod
    def for_timestamp(cls, timestamp) -> TimestampSpec: ...
    def __new__(cls, index: int) -> OffsetSpec: ...
    def __lt__(self, other: OffsetSpec) -> bool: ...

class TimestampSpec(OffsetSpec):
    @property
    def _value(self) -> int: ...
    def __new__(cls, _: int) -> TimestampSpec: ...
    def __init__(self, timestamp: int) -> None: ...

class MaxTimestampSpec(OffsetSpec):
    def __new__(cls) -> MaxTimestampSpec: ...
    @property
    def _value(self) -> int: ...

class LatestSpec(OffsetSpec):
    def __new__(cls) -> LatestSpec: ...
    @property
    def _value(self) -> int: ...

class EarliestSpec(OffsetSpec):
    def __new__(cls) -> EarliestSpec: ...
    @property
    def _value(self) -> int: ...

class ListOffsetsResultInfo:
    def __init__(self, offset: int, timestamp: int, leader_epoch: int | None): ...
