from ... import types as _sqltypes
from ...sql.type_api import TypeEngine
from typing import Any

class RangeOperators:
    class comparator_factory(TypeEngine.Comparator):
        def __ne__(self, other: Any): ...
        def contains(self, other: Any, **kw: Any): ...
        def contained_by(self, other: Any): ...
        def overlaps(self, other: Any): ...
        def strictly_left_of(self, other: Any): ...
        __lshift__: Any = ...
        def strictly_right_of(self, other: Any): ...
        __rshift__: Any = ...
        def not_extend_right_of(self, other: Any): ...
        def not_extend_left_of(self, other: Any): ...
        def adjacent_to(self, other: Any): ...
        def __add__(self, other: Any): ...

class INT4RANGE(RangeOperators, _sqltypes.TypeEngine[Any]):
    __visit_name__: str = ...

class INT8RANGE(RangeOperators, _sqltypes.TypeEngine[Any]):
    __visit_name__: str = ...

class NUMRANGE(RangeOperators, _sqltypes.TypeEngine[Any]):
    __visit_name__: str = ...

class DATERANGE(RangeOperators, _sqltypes.TypeEngine[Any]):
    __visit_name__: str = ...

class TSRANGE(RangeOperators, _sqltypes.TypeEngine[Any]):
    __visit_name__: str = ...

class TSTZRANGE(RangeOperators, _sqltypes.TypeEngine[Any]):
    __visit_name__: str = ...
