code: async def sign_and_submit_request(pool_handle: int,
                                    wallet_handle: int,
                                    submitter_did: str,
                                    request_json: str) -> str:
      
  
      logger = logging.getLogger(__name__)
      logger.debug("sign_and_submit_request: >>> pool_handle: %r, wallet_handle: %r, submitter_did: %r, request_json: %r",
                   pool_handle,
                   wallet_handle,
                   submitter_did,
                   request_json)
  
      if not hasattr(sign_and_submit_request, "cb"):
          logger.debug("sign_and_submit_request: Creating callback")
          sign_and_submit_request.cb = create_cb(CFUNCTYPE(None, c_int32, c_int32, c_char_p))
  
      c_pool_handle = c_int32(pool_handle)
      c_wallet_handle = c_int32(wallet_handle)
      c_submitter_did = c_char_p(submitter_did.encode('utf-8'))
      c_request_json = c_char_p(request_json.encode('utf-8'))
  
      request_result = await do_call('indy_sign_and_submit_request',
                                     c_pool_handle,
                                     c_wallet_handle,
                                     c_submitter_did,
                                     c_request_json,
                                     sign_and_submit_request.cb)
  
      res = request_result.decode()
      logger.debug("sign_and_submit_request: <<< res: %r", res)
      return res
docs: Signs and submits request message to validator pool.
  
      Adds submitter information to passed request json, signs it with submitter
      sign key (see wallet_sign), and sends signed request message
      to validator pool (see write_request).
  
      :param pool_handle: pool handle (created by open_pool_ledger).
      :param wallet_handle: wallet handle (created by open_wallet).
      :param submitter_did: Id of Identity stored in secured Wallet.
      :param request_json: Request data json.
      :return: Request result as json.