async def delete_proof(cls, controller: AcaPyClient, proof_id: str):
     try:
         pres_ex_id = pres_id_no_version(proof_id=proof_id)
         await controller.present_proof_v1_0.delete_record(pres_ex_id=pres_ex_id)
     except Exception as e:
         logger.error(f"{e!r}")
         raise e from e
 async def accept_proof_request(
     cls, controller: AcaPyClient, proof_request: AcceptProofRequest
 ) -> PresentationExchange:
     proof_id = pres_id_no_version(proof_id=proof_request.proof_id)
     presentation_record = await controller.present_proof_v1_0.send_presentation(
         pres_ex_id=proof_id, body=proof_request.presentation_spec
     )
     return record_to_model(presentation_record)
 async def get_credentials_for_request(cls, controller: AcaPyClient,
                                       proof_id: str):
     try:
         pres_ex_id = pres_id_no_version(proof_id=proof_id)
         return await controller.present_proof_v2_0.get_matching_credentials(
             pres_ex_id=pres_ex_id)
     except Exception as e:
         logger.error(f"{e!r}")
         raise e from e
 async def get_proof_record(cls, controller: AcaPyClient, proof_id: str):
     try:
         pres_ex_id = pres_id_no_version(proof_id)
         presentation_exchange = await controller.present_proof_v2_0.get_record(
             pres_ex_id=pres_ex_id)
         return record_to_model(presentation_exchange)
     except Exception as e:
         logger.error(f"{e!r}")
         raise e from e
    async def reject_proof_request(cls, controller: AcaPyClient,
                                   proof_request: RejectProofRequest) -> None:
        # get the record
        pres_ex_id = pres_id_no_version(proof_id=proof_request.proof_id)
        # Report problem if desired
        if proof_request.problem_report:
            try:
                await controller.present_proof_v2_0.report_problem(
                    pres_ex_id=pres_ex_id,
                    body=V20PresProblemReportRequest(
                        description=proof_request.problem_report),
                )
            except Exception as e:
                raise e from e

        try:
            # delete exchange record
            await controller.present_proof_v2_0.delete_record(
                pres_ex_id=pres_ex_id)
        except:
            raise HTTPException(status_code=500,
                                detail="Failed to delete record")