docs: async def issuer_create_credential_offer(wallet_handle: int,
                                           cred_def_id: str) -> str:
      """
      Create credential offer that will be used by Prover for
      credential request creation. Offer includes nonce and key correctness proof
      for authentication between protocol steps and integrity checking.
  
      :param wallet_handle: wallet handler (created by open_wallet).
      :param cred_def_id: id of credential definition stored in the wallet
      :return:credential offer json:
       {
           "schema_id": string,
           "cred_def_id": string,
           // Fields below can depend on Cred Def type
           "nonce": string,
           "key_correctness_proof" : <key_correctness_proof>
       }
      """
  
      logger = logging.getLogger(__name__)
      logger.debug("issuer_create_credential_offer: >>> wallet_handle: %r, cred_def_id: %r",
                   wallet_handle,
                   cred_def_id)
  
      if not hasattr(issuer_create_credential_offer, "cb"):
          logger.debug("issuer_create_credential_offer: Creating callback")
          issuer_create_credential_offer.cb = create_cb(CFUNCTYPE(None, c_int32, c_int32, c_char_p))
  
      c_wallet_handle = c_int32(wallet_handle)
      c_cred_def_id = c_char_p(cred_def_id.encode('utf-8'))
  
      credential_offer_json = await do_call('indy_issuer_create_credential_offer',
                                            c_wallet_handle,
                                            c_cred_def_id,
                                            issuer_create_credential_offer.cb)
  
      res = credential_offer_json.decode()
      logger.debug("issuer_create_credential_offer: <<< res: %r", res)
      return res