import math
MAX_SAFE = 2**53 - 1
def integer_sqrt(n: int) -> int:
"""The largest whole number whose square does not exceed ``n``.
``math.isqrt`` is exact; the range check keeps the answers the same as the
TypeScript and Rust ports, which are limited to 2^53 - 1.
"""
if isinstance(n, bool) or not isinstance(n, int) or n < 0 or n > MAX_SAFE:
raise ValueError("n must be a whole number from 0 to 2^53 - 1, received %r" % (n,))
return math.isqrt(n)