from typing import Callable
from typing_extensions import Self

from sympy.core.basic import Basic

def make_eval_method(fact) -> Callable[..., bool | None]: ...

class AssumptionsWrapper(Basic):
    def __new__(cls, expr, assumptions=...) -> Self: ...

    _eval_is_algebraic = ...
    _eval_is_antihermitian = ...
    _eval_is_commutative = ...
    _eval_is_complex = ...
    _eval_is_composite = ...
    _eval_is_even = ...
    _eval_is_extended_negative = ...
    _eval_is_extended_nonnegative = ...
    _eval_is_extended_nonpositive = ...
    _eval_is_extended_nonzero = ...
    _eval_is_extended_positive = ...
    _eval_is_extended_real = ...
    _eval_is_finite = ...
    _eval_is_hermitian = ...
    _eval_is_imaginary = ...
    _eval_is_infinite = ...
    _eval_is_integer = ...
    _eval_is_irrational = ...
    _eval_is_negative = ...
    _eval_is_noninteger = ...
    _eval_is_nonnegative = ...
    _eval_is_nonpositive = ...
    _eval_is_nonzero = ...
    _eval_is_odd = ...
    _eval_is_polar = ...
    _eval_is_positive = ...
    _eval_is_prime = ...
    _eval_is_rational = ...
    _eval_is_real = ...
    _eval_is_transcendental = ...
    _eval_is_zero = ...

def is_infinite(obj, assumptions=...) -> bool | None: ...
def is_extended_real(obj, assumptions=...) -> bool | None: ...
def is_extended_nonnegative(obj, assumptions=...) -> bool | None: ...
