code: def encode_timestamp(timestamp: hints.Buffer) -> str:
      
      length = len(timestamp)
      if length != 6:
          raise ValueError('Expects 6 bytes for timestamp; got {}'.format(length))
  
      encoding = ENCODING
  
      return \
          encoding[(timestamp[0] & 224) >> 5] + \
          encoding[timestamp[0] & 31] + \
          encoding[(timestamp[1] & 248) >> 3] + \
          encoding[((timestamp[1] & 7) << 2) | ((timestamp[2] & 192) >> 6)] + \
          encoding[((timestamp[2] & 62) >> 1)] + \
          encoding[((timestamp[2] & 1) << 4) | ((timestamp[3] & 240) >> 4)] + \
          encoding[((timestamp[3] & 15) << 1) | ((timestamp[4] & 128) >> 7)] + \
          encoding[(timestamp[4] & 124) >> 2] + \
          encoding[((timestamp[4] & 3) << 3) | ((timestamp[5] & 224) >> 5)] + \
          encoding[timestamp[5] & 31]
docs: Encode the given buffer to a :class:`~str` using Base32 encoding.
  
      The given :class:`~bytes` are expected to represent the first 6 bytes of a ULID, which
      are a timestamp in milliseconds.
  
      .. note:: This uses an optimized strategy from the `NUlid` project for encoding ULID
          bytes specifically and is not meant for arbitrary encoding.
  
      :param timestamp: Bytes to encode
      :type timestamp: :class:`~bytes`, :class:`~bytearray`, or :class:`~memoryview`
      :return: Value encoded as a Base32 string
      :rtype: :class:`~str`
      :raises ValueError: when the timestamp is not 6 bytes