<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def get_creds_by_id(self, proof_req_json: str, cred_ids: set) -> str: """ Get creds structure from HolderProver wallet by credential identifiers. :param proof_req_json: proof request as per get_creds() above :param cred_ids: set of credential identifiers of interest :return: json with cred(s) for input credential identifier(s) """


        LOGGER.debug('HolderProver.get_creds_by_id >>> proof_req_json: %s, cred_ids: %s', proof_req_json, cred_ids)

        creds_json = await anoncreds.prover_get_credentials_for_proof_req(self.wallet.handle, proof_req_json)

        # retain only creds of interest: find corresponding referents
        rv_json = prune_creds_json(json.loads(creds_json), cred_ids)
        LOGGER.debug('HolderProver.get_cred_by_referent <<< %s', rv_json)
        return rv_json