docs: async def prover_search_credentials(wallet_handle: int,
                                      query_json: str) -> (int, int):
      """
      Search for credentials stored in wallet.
      Credentials can be filtered by tags created during saving of credential.
  
      Instead of immediately returning of fetched credentials this call returns search_handle that can be used later
      to fetch records by small batches (with prover_credentials_search_fetch_records).
  
      :param wallet_handle: wallet handler (created by open_wallet).
      :param query_json: wql style filter for credentials searching based on tags.
          where wql query: indy-sdk/docs/design/011-wallet-query-language/README.md
      :return:
          search_handle: Search handle that can be used later to fetch records by small batches
              (with prover_credentials_search_fetch_records)
          total_count: Total count of records
      """
  
      logger = logging.getLogger(__name__)
      logger.debug("prover_search_credentials: >>> wallet_handle: %r, query_json: %r",
                   wallet_handle,
                   query_json)
  
      if not hasattr(prover_search_credentials, "cb"):
          logger.debug("prover_search_credentials: Creating callback")
          prover_search_credentials.cb = create_cb(CFUNCTYPE(None, c_int32, c_int32, c_int32, c_uint))
  
      c_wallet_handle = c_int32(wallet_handle)
      c_query_json = c_char_p(query_json.encode('utf-8'))
  
      res = await do_call('indy_prover_search_credentials',
                          c_wallet_handle,
                          c_query_json,
                          prover_search_credentials.cb)
  
      logger.debug("prover_search_credentials: <<< res: %r", res)
      return res