{"version":3,"file":"OpenBadgesApi.mjs","names":["OpenBadgesApi","issuerService: IssuerService","verifyService: VerifyService","consumerService: ConsumerService","keys: KeyService","credentialRepository: OpenBadgeCredentialRepository","agentContext: AgentContext"],"sources":["../../src/api/OpenBadgesApi.ts"],"sourcesContent":["import { injectable, AgentContext, inject } from '@credo-ts/core'\nimport { IssuerService } from '../services/IssuerService'\nimport { VerifyService, ConsumerService } from '../services'\nimport { KeyService } from '../services/KeyService'\nimport { OpenBadgeCredentialRepository } from '../repository/OpenBadgeCredentialRepository'\nimport { OpenBadgeCredentialRecord } from '../repository/OpenBadgeCredentialRecord'\nimport type { EndorsementCredentialInput } from '../models/EndorsementCredential'\nimport type { ClrCredentialInput } from '../models/ClrCredential'\n\n@injectable()\nexport class OpenBadgesApi {\n  public constructor(\n    private readonly issuerService: IssuerService,\n    private readonly verifyService: VerifyService,\n    private readonly consumerService: ConsumerService,\n    @inject(KeyService) private readonly keys: KeyService,\n    @inject(OpenBadgeCredentialRepository) private readonly credentialRepository: OpenBadgeCredentialRepository,\n    private readonly agentContext: AgentContext\n  ) {}\n\n  public async issue(input: any) {\n    const logger = this.agentContext.config.logger\n    logger.debug('[OB] OpenBadgesApi.issue() called')\n    const res = await this.issuerService.issueCredential(this.agentContext as unknown as AgentContext, input)\n    logger.debug('[OB] OpenBadgesApi.issue() stored record', { recordId: (res as any)?.id })\n    return res\n  }\n\n  /**\n   * Issues an EndorsementCredential - a third-party validation credential\n   */\n  public async issueEndorsement(input: EndorsementCredentialInput) {\n    const logger = this.agentContext.config.logger\n    logger.debug('[OB] OpenBadgesApi.issueEndorsement() called')\n    const res = await this.issuerService.issueEndorsement(this.agentContext as unknown as AgentContext, input)\n    logger.debug('[OB] OpenBadgesApi.issueEndorsement() stored record', { recordId: (res as any)?.id })\n    return res\n  }\n\n  public async verify(credentialOrJwt: unknown) {\n    const logger = this.agentContext.config.logger\n    logger.debug('[OB] OpenBadgesApi.verify() called')\n    const res = await this.verifyService.verify(this.agentContext as unknown as AgentContext, credentialOrJwt)\n    logger.debug('[OB] OpenBadgesApi.verify() result', { result: res })\n    return res\n  }\n\n  public async importFromUrl(url: string, options?: { discoveryUrl?: string }) {\n    return this.consumerService.importFromUrl(this.agentContext as unknown as AgentContext, url, options)\n  }\n\n  public async ensureBinding(controller: string, vmId: string) {\n    return this.keys.ensureBinding(this.agentContext as unknown as AgentContext, { controller, vmId })\n  }\n\n  /**\n   * Issues a ClrCredential - a Comprehensive Learner Record bundling multiple credentials\n   */\n  public async issueClr(input: ClrCredentialInput) {\n    const logger = this.agentContext.config.logger\n    logger.debug('[OB] OpenBadgesApi.issueClr() called')\n    const res = await this.issuerService.issueClr(this.agentContext as unknown as AgentContext, input)\n    logger.debug('[OB] OpenBadgesApi.issueClr() stored record', { recordId: (res as any)?.id })\n    return res\n  }\n\n  // Alias methods for backend compatibility\n  public async issueCredential(input: any) {\n    return this.issue(input)\n  }\n\n  public async verifyCredential(credentialOrJwt: unknown) {\n    return this.verify(credentialOrJwt)\n  }\n\n  public async getAllCredentials() {\n    this.agentContext.config.logger.trace('[OB] OpenBadgesApi.getAllCredentials() called')\n    const records = await this.credentialRepository.getAll(this.agentContext)\n    return records\n  }\n\n  public async getCredentialById(credentialId: string) {\n    this.agentContext.config.logger.trace('[OB] OpenBadgesApi.getCredentialById() called', { credentialId })\n    const record = await this.credentialRepository.findById(this.agentContext, credentialId)\n    return record ?? null\n  }\n\n  public async deleteCredential(credentialId: string) {\n    this.agentContext.config.logger.debug('[OB] OpenBadgesApi.deleteCredential() called', { credentialId })\n    const record = await this.credentialRepository.findById(this.agentContext, credentialId)\n    if (record) {\n      await this.credentialRepository.delete(this.agentContext, record)\n    }\n  }\n\n  // ============================================================\n  // WALLET ACCESS METHODS\n  // ============================================================\n\n  /**\n   * Get all credential records from wallet\n   */\n  public async getAllCredentialRecords(): Promise<OpenBadgeCredentialRecord[]> {\n    return this.credentialRepository.getAll(this.agentContext)\n  }\n\n  /**\n   * Get a credential record by its record ID\n   */\n  public async getCredentialRecordById(id: string): Promise<OpenBadgeCredentialRecord> {\n    return this.credentialRepository.getById(this.agentContext, id)\n  }\n\n  /**\n   * Find credential records by issuer DID\n   */\n  public async findCredentialsByIssuer(issuerId: string): Promise<OpenBadgeCredentialRecord[]> {\n    return this.credentialRepository.findByQuery(this.agentContext, { issuerId })\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAUO,0BAAMA,gBAAc;CACzB,AAAO,YACL,AAAiBC,eACjB,AAAiBC,eACjB,AAAiBC,iBACjB,AAAqCC,MACrC,AAAwDC,sBACxD,AAAiBC,cACjB;EANiB;EACA;EACA;EACoB;EACmB;EACvC;;CAGnB,MAAa,MAAM,OAAY;EAC7B,MAAM,SAAS,KAAK,aAAa,OAAO;AACxC,SAAO,MAAM,oCAAoC;EACjD,MAAM,MAAM,MAAM,KAAK,cAAc,gBAAgB,KAAK,cAAyC,MAAM;AACzG,SAAO,MAAM,4CAA4C,EAAE,UAAW,KAAa,IAAI,CAAC;AACxF,SAAO;;;;;CAMT,MAAa,iBAAiB,OAAmC;EAC/D,MAAM,SAAS,KAAK,aAAa,OAAO;AACxC,SAAO,MAAM,+CAA+C;EAC5D,MAAM,MAAM,MAAM,KAAK,cAAc,iBAAiB,KAAK,cAAyC,MAAM;AAC1G,SAAO,MAAM,uDAAuD,EAAE,UAAW,KAAa,IAAI,CAAC;AACnG,SAAO;;CAGT,MAAa,OAAO,iBAA0B;EAC5C,MAAM,SAAS,KAAK,aAAa,OAAO;AACxC,SAAO,MAAM,qCAAqC;EAClD,MAAM,MAAM,MAAM,KAAK,cAAc,OAAO,KAAK,cAAyC,gBAAgB;AAC1G,SAAO,MAAM,sCAAsC,EAAE,QAAQ,KAAK,CAAC;AACnE,SAAO;;CAGT,MAAa,cAAc,KAAa,SAAqC;AAC3E,SAAO,KAAK,gBAAgB,cAAc,KAAK,cAAyC,KAAK,QAAQ;;CAGvG,MAAa,cAAc,YAAoB,MAAc;AAC3D,SAAO,KAAK,KAAK,cAAc,KAAK,cAAyC;GAAE;GAAY;GAAM,CAAC;;;;;CAMpG,MAAa,SAAS,OAA2B;EAC/C,MAAM,SAAS,KAAK,aAAa,OAAO;AACxC,SAAO,MAAM,uCAAuC;EACpD,MAAM,MAAM,MAAM,KAAK,cAAc,SAAS,KAAK,cAAyC,MAAM;AAClG,SAAO,MAAM,+CAA+C,EAAE,UAAW,KAAa,IAAI,CAAC;AAC3F,SAAO;;CAIT,MAAa,gBAAgB,OAAY;AACvC,SAAO,KAAK,MAAM,MAAM;;CAG1B,MAAa,iBAAiB,iBAA0B;AACtD,SAAO,KAAK,OAAO,gBAAgB;;CAGrC,MAAa,oBAAoB;AAC/B,OAAK,aAAa,OAAO,OAAO,MAAM,gDAAgD;AAEtF,SADgB,MAAM,KAAK,qBAAqB,OAAO,KAAK,aAAa;;CAI3E,MAAa,kBAAkB,cAAsB;AACnD,OAAK,aAAa,OAAO,OAAO,MAAM,iDAAiD,EAAE,cAAc,CAAC;AAExG,SADe,MAAM,KAAK,qBAAqB,SAAS,KAAK,cAAc,aAAa,IACvE;;CAGnB,MAAa,iBAAiB,cAAsB;AAClD,OAAK,aAAa,OAAO,OAAO,MAAM,gDAAgD,EAAE,cAAc,CAAC;EACvG,MAAM,SAAS,MAAM,KAAK,qBAAqB,SAAS,KAAK,cAAc,aAAa;AACxF,MAAI,OACF,OAAM,KAAK,qBAAqB,OAAO,KAAK,cAAc,OAAO;;;;;CAWrE,MAAa,0BAAgE;AAC3E,SAAO,KAAK,qBAAqB,OAAO,KAAK,aAAa;;;;;CAM5D,MAAa,wBAAwB,IAAgD;AACnF,SAAO,KAAK,qBAAqB,QAAQ,KAAK,cAAc,GAAG;;;;;CAMjE,MAAa,wBAAwB,UAAwD;AAC3F,SAAO,KAAK,qBAAqB,YAAY,KAAK,cAAc,EAAE,UAAU,CAAC;;;;CA5GhF,YAAY;oBAMR,OAAO,WAAW;oBAClB,OAAO,8BAA8B"}