code: def to_wei(number: int, unit: str) -> int:
      
      if unit.lower() not in units:
          raise ValueError(
              "Unknown unit.  Must be one of {0}".format("/".join(units.keys()))
          )
  
      if is_integer(number) or is_string(number):
          d_number = decimal.Decimal(value=number)
      elif isinstance(number, float):
          d_number = decimal.Decimal(value=str(number))
      elif isinstance(number, decimal.Decimal):
          d_number = number
      else:
          raise TypeError("Unsupported type.  Must be one of integer, float, or string")
  
      s_number = str(number)
      unit_value = units[unit.lower()]
  
      if d_number == 0:
          return 0
  
      if d_number < 1 and "." in s_number:
          with localcontext() as ctx:
              multiplier = len(s_number) - s_number.index(".") - 1
              ctx.prec = multiplier
              d_number = decimal.Decimal(value=number, context=ctx) * 10 ** multiplier
          unit_value /= 10 ** multiplier
  
      with localcontext() as ctx:
          ctx.prec = 999
          result_value = decimal.Decimal(value=d_number, context=ctx) * unit_value
  
      if result_value < MIN_WEI or result_value > MAX_WEI:
          raise ValueError("Resulting wei value must be between 1 and 2**256 - 1")
  
      return int(result_value)
docs: Takes a number of a unit and converts it to wei.