function s(e) {
  const n = typeof e;
  switch (n) {
    case "number":
      return Number.isNaN(e) ? "NaN" : Number.isFinite(e) ? e !== Math.floor(e) ? "float" : "number" : "Infinity";
    case "object":
      return e === null ? "null" : e.constructor.name;
    default:
      return n;
  }
}
function c(e) {
  return typeof e == "number" && isFinite(e) && Math.floor(e) === e;
}
const p = Number.isInteger || c;
function o(e, n, r, i) {
  const t = e[n];
  if (t == null || !p(t)) {
    const l = s(t);
    return new RangeError(`Invalid ${i} \`${n}\` of type \`${l}\` supplied to \`${r}\`, expected \`integer\`.`);
  }
  return null;
}
function f(e, n, ...r) {
  return e[n] === void 0 ? null : o(e, n, ...r);
}
function u() {
  return null;
}
f.isRequired = o;
u.isRequired = u;
const a = process.env.NODE_ENV === "production" ? u : f;
export {
  a as default,
  s as getTypeByValue
};
