{"version":3,"file":"OpenId4VcIssuerApi.mjs","names":[],"sources":["../../src/openid4vc-issuer/OpenId4VcIssuerApi.ts"],"sourcesContent":["import { AgentContext, injectable } from '@credo-ts/core'\nimport { OpenId4VcIssuerModuleConfig } from './OpenId4VcIssuerModuleConfig'\nimport { OpenId4VcIssuerService } from './OpenId4VcIssuerService'\nimport type {\n  OpenId4VciCreateCredentialOfferOptions,\n  OpenId4VciCreateCredentialResponseOptions,\n  OpenId4VciCreateDeferredCredentialResponseOptions,\n  OpenId4VciCreateIssuerOptions,\n  OpenId4VciCreateStatelessCredentialOfferOptions,\n  OpenId4VcUpdateIssuerRecordOptions,\n} from './OpenId4VcIssuerServiceOptions'\n\n/**\n * @public\n * This class represents the API for interacting with the OpenID4VC Issuer service.\n * It provides methods for creating a credential offer, creating a response to a credential issuance request,\n * and retrieving a credential offer from a URI.\n */\n@injectable()\nexport class OpenId4VcIssuerApi {\n  public constructor(\n    public readonly config: OpenId4VcIssuerModuleConfig,\n    private agentContext: AgentContext,\n    private openId4VcIssuerService: OpenId4VcIssuerService\n  ) {}\n\n  public async getAllIssuers() {\n    return this.openId4VcIssuerService.getAllIssuers(this.agentContext)\n  }\n\n  public async getIssuerByIssuerId(issuerId: string) {\n    return this.openId4VcIssuerService.getIssuerByIssuerId(this.agentContext, issuerId)\n  }\n\n  /**\n   * Creates an issuer and stores the corresponding issuer metadata. Multiple issuers can be created, to allow different sets of\n   * credentials to be issued with each issuer.\n   */\n  public async createIssuer(options: OpenId4VciCreateIssuerOptions) {\n    return this.openId4VcIssuerService.createIssuer(this.agentContext, options)\n  }\n\n  /**\n   * Rotate the key used for signing access tokens for the issuer with the given issuerId.\n   */\n  public async rotateAccessTokenSigningKey(issuerId: string) {\n    const issuer = await this.openId4VcIssuerService.getIssuerByIssuerId(this.agentContext, issuerId)\n    return this.openId4VcIssuerService.rotateAccessTokenSigningKey(this.agentContext, issuer)\n  }\n\n  public async updateIssuerMetadata(options: OpenId4VcUpdateIssuerRecordOptions) {\n    const {\n      issuerId,\n      credentialConfigurationsSupported,\n      display,\n      dpopSigningAlgValuesSupported,\n      batchCredentialIssuance,\n      authorizationServerConfigs,\n    } = options\n\n    const issuer = await this.openId4VcIssuerService.getIssuerByIssuerId(this.agentContext, issuerId)\n\n    issuer.credentialConfigurationsSupported = credentialConfigurationsSupported\n    issuer.display = display\n    issuer.dpopSigningAlgValuesSupported = dpopSigningAlgValuesSupported\n    issuer.batchCredentialIssuance = batchCredentialIssuance\n    issuer.authorizationServerConfigs = authorizationServerConfigs\n\n    return this.openId4VcIssuerService.updateIssuer(this.agentContext, issuer)\n  }\n\n  /**\n   * Creates a stateless credential offer. This can only be used with an external authorization server, as credo only supports stateful\n   * credential offers.\n   */\n  public async createStatelessCredentialOffer(\n    options: OpenId4VciCreateStatelessCredentialOfferOptions & { issuerId: string }\n  ) {\n    const { issuerId, ...rest } = options\n    const issuer = await this.openId4VcIssuerService.getIssuerByIssuerId(this.agentContext, issuerId)\n    return await this.openId4VcIssuerService.createStatelessCredentialOffer(this.agentContext, { ...rest, issuer })\n  }\n\n  /**\n   * Creates a credential offer. Either the preAuthorizedCodeFlowConfig or the authorizationCodeFlowConfig must be provided.\n   *\n   * @returns Object containing the payload of the credential offer and the credential offer request, which can be sent to the wallet.\n   */\n  public async createCredentialOffer(options: OpenId4VciCreateCredentialOfferOptions & { issuerId: string }) {\n    const { issuerId, ...rest } = options\n    const issuer = await this.openId4VcIssuerService.getIssuerByIssuerId(this.agentContext, issuerId)\n    return await this.openId4VcIssuerService.createCredentialOffer(this.agentContext, { ...rest, issuer })\n  }\n\n  /**\n   * This function creates a response which can be sent to the holder after receiving a credential issuance request.\n   */\n  public async createCredentialResponse(\n    options: OpenId4VciCreateCredentialResponseOptions & { issuanceSessionId: string }\n  ) {\n    const { issuanceSessionId, ...rest } = options\n    const issuanceSession = await this.openId4VcIssuerService.getIssuanceSessionById(\n      this.agentContext,\n      issuanceSessionId\n    )\n\n    return await this.openId4VcIssuerService.createCredentialResponse(this.agentContext, { ...rest, issuanceSession })\n  }\n\n  /**\n   * This function creates a response which can be sent to the holder after receiving a deferred credential issuance request.\n   */\n  public async createDeferredCredentialResponse(\n    options: OpenId4VciCreateDeferredCredentialResponseOptions & { issuanceSessionId: string }\n  ) {\n    const { issuanceSessionId, ...rest } = options\n    const issuanceSession = await this.openId4VcIssuerService.getIssuanceSessionById(\n      this.agentContext,\n      issuanceSessionId\n    )\n\n    return await this.openId4VcIssuerService.createDeferredCredentialResponse(this.agentContext, {\n      ...rest,\n      issuanceSession,\n    })\n  }\n\n  public async getIssuerMetadata(issuerId: string) {\n    const issuer = await this.openId4VcIssuerService.getIssuerByIssuerId(this.agentContext, issuerId)\n    return this.openId4VcIssuerService.getIssuerMetadata(this.agentContext, issuer)\n  }\n\n  public async getIssuanceSessionById(issuanceSessionId: string) {\n    return this.openId4VcIssuerService.getIssuanceSessionById(this.agentContext, issuanceSessionId)\n  }\n}\n"],"mappings":";;;;;;;;AAmBO,+BAAM,mBAAmB;CAC9B,AAAO,YACL,AAAgB,QAChB,AAAQ,cACR,AAAQ,wBACR;EAHgB;EACR;EACA;;CAGV,MAAa,gBAAgB;AAC3B,SAAO,KAAK,uBAAuB,cAAc,KAAK,aAAa;;CAGrE,MAAa,oBAAoB,UAAkB;AACjD,SAAO,KAAK,uBAAuB,oBAAoB,KAAK,cAAc,SAAS;;;;;;CAOrF,MAAa,aAAa,SAAwC;AAChE,SAAO,KAAK,uBAAuB,aAAa,KAAK,cAAc,QAAQ;;;;;CAM7E,MAAa,4BAA4B,UAAkB;EACzD,MAAM,SAAS,MAAM,KAAK,uBAAuB,oBAAoB,KAAK,cAAc,SAAS;AACjG,SAAO,KAAK,uBAAuB,4BAA4B,KAAK,cAAc,OAAO;;CAG3F,MAAa,qBAAqB,SAA6C;EAC7E,MAAM,EACJ,UACA,mCACA,SACA,+BACA,yBACA,+BACE;EAEJ,MAAM,SAAS,MAAM,KAAK,uBAAuB,oBAAoB,KAAK,cAAc,SAAS;AAEjG,SAAO,oCAAoC;AAC3C,SAAO,UAAU;AACjB,SAAO,gCAAgC;AACvC,SAAO,0BAA0B;AACjC,SAAO,6BAA6B;AAEpC,SAAO,KAAK,uBAAuB,aAAa,KAAK,cAAc,OAAO;;;;;;CAO5E,MAAa,+BACX,SACA;EACA,MAAM,EAAE,UAAU,GAAG,SAAS;EAC9B,MAAM,SAAS,MAAM,KAAK,uBAAuB,oBAAoB,KAAK,cAAc,SAAS;AACjG,SAAO,MAAM,KAAK,uBAAuB,+BAA+B,KAAK,cAAc;GAAE,GAAG;GAAM;GAAQ,CAAC;;;;;;;CAQjH,MAAa,sBAAsB,SAAwE;EACzG,MAAM,EAAE,UAAU,GAAG,SAAS;EAC9B,MAAM,SAAS,MAAM,KAAK,uBAAuB,oBAAoB,KAAK,cAAc,SAAS;AACjG,SAAO,MAAM,KAAK,uBAAuB,sBAAsB,KAAK,cAAc;GAAE,GAAG;GAAM;GAAQ,CAAC;;;;;CAMxG,MAAa,yBACX,SACA;EACA,MAAM,EAAE,mBAAmB,GAAG,SAAS;EACvC,MAAM,kBAAkB,MAAM,KAAK,uBAAuB,uBACxD,KAAK,cACL,kBACD;AAED,SAAO,MAAM,KAAK,uBAAuB,yBAAyB,KAAK,cAAc;GAAE,GAAG;GAAM;GAAiB,CAAC;;;;;CAMpH,MAAa,iCACX,SACA;EACA,MAAM,EAAE,mBAAmB,GAAG,SAAS;EACvC,MAAM,kBAAkB,MAAM,KAAK,uBAAuB,uBACxD,KAAK,cACL,kBACD;AAED,SAAO,MAAM,KAAK,uBAAuB,iCAAiC,KAAK,cAAc;GAC3F,GAAG;GACH;GACD,CAAC;;CAGJ,MAAa,kBAAkB,UAAkB;EAC/C,MAAM,SAAS,MAAM,KAAK,uBAAuB,oBAAoB,KAAK,cAAc,SAAS;AACjG,SAAO,KAAK,uBAAuB,kBAAkB,KAAK,cAAc,OAAO;;CAGjF,MAAa,uBAAuB,mBAA2B;AAC7D,SAAO,KAAK,uBAAuB,uBAAuB,KAAK,cAAc,kBAAkB;;;iCAnHlG,YAAY"}