docs: async def pack_message(wallet_handle: int,
                         message: str,
                         recipient_verkeys: list,
                         sender_verkey: Optional[str]) -> bytes:
      """
      Packs a message by encrypting the message and serializes it in a JWE-like format (Experimental)
  
      Note to use DID keys with this function you can call did.key_for_did to get key id (verkey)
      for specific DID.
  
      #Params
      command_handle: command handle to map callback to user context.
      wallet_handle: wallet handler (created by open_wallet)
      message: the message being sent as a string. If it's JSON formatted it should be converted to a string
      recipient_verkeys: a list of Strings which are recipient verkeys
      sender_verkey: the sender's verkey as a string. -> When None is passed in this parameter, anoncrypt mode is used
  
      returns an Agent Wire Message format as a byte array. See HIPE 0028 for detailed formats
      """
  
      logger = logging.getLogger(__name__)
      logger.debug("pack_message: >>> wallet_handle: %r, message: %r, recipient_verkeys: %r, sender_verkey: %r",
                   wallet_handle,
                   message,
                   recipient_verkeys,
                   sender_verkey)
  
      def transform_cb(arr_ptr: POINTER(c_uint8), arr_len: c_uint32):
          return bytes(arr_ptr[:arr_len]),
  
      if not hasattr(pack_message, "cb"):
          logger.debug("pack_message: Creating callback")
          pack_message.cb = create_cb(CFUNCTYPE(None, c_int32, c_int32, POINTER(c_uint8), c_uint32), transform_cb)
  
      c_wallet_handle = c_int32(wallet_handle)
      msg_bytes = message.encode("utf-8")
      c_msg_len = c_uint32(len(msg_bytes))
      c_recipient_verkeys = c_char_p(json.dumps(recipient_verkeys).encode('utf-8'))
      c_sender_vk = c_char_p(sender_verkey.encode('utf-8')) if sender_verkey is not None else None
      res = await do_call('indy_pack_message',
                          c_wallet_handle,
                          msg_bytes,
                          c_msg_len,
                          c_recipient_verkeys,
                          c_sender_vk,
                          pack_message.cb)
      logger.debug("pack_message: <<< res: %r", res)
      return res