from typing import Any, Callable, Optional, Type

_CompareWithType = Callable[[Any, Any], bool]

def cmp_using(
    eq: Optional[_CompareWithType],
    lt: Optional[_CompareWithType],
    le: Optional[_CompareWithType],
    gt: Optional[_CompareWithType],
    ge: Optional[_CompareWithType],
    require_same_type: bool,
    class_name: str,
) -> Type: ...