@credo-ts/indy-vdr 0.6.1-pr-2091-20241119140918 → 0.6.2-alpha-20251210145840

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/build/IndyVdrApi.d.mts +42 -0
  2. package/build/IndyVdrApi.d.mts.map +1 -0
  3. package/build/IndyVdrApi.mjs +72 -0
  4. package/build/IndyVdrApi.mjs.map +1 -0
  5. package/build/IndyVdrModule.d.mts +20 -0
  6. package/build/IndyVdrModule.d.mts.map +1 -0
  7. package/build/IndyVdrModule.mjs +30 -0
  8. package/build/IndyVdrModule.mjs.map +1 -0
  9. package/build/IndyVdrModuleConfig.d.mts +72 -0
  10. package/build/IndyVdrModuleConfig.d.mts.map +1 -0
  11. package/build/IndyVdrModuleConfig.mjs +18 -0
  12. package/build/IndyVdrModuleConfig.mjs.map +1 -0
  13. package/build/_virtual/_@oxc-project_runtime@0.99.0/helpers/decorate.mjs +10 -0
  14. package/build/_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateMetadata.mjs +7 -0
  15. package/build/_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateParam.mjs +9 -0
  16. package/build/anoncreds/IndyVdrAnonCredsRegistry.d.mts +125 -0
  17. package/build/anoncreds/IndyVdrAnonCredsRegistry.d.mts.map +1 -0
  18. package/build/anoncreds/IndyVdrAnonCredsRegistry.mjs +586 -0
  19. package/build/anoncreds/IndyVdrAnonCredsRegistry.mjs.map +1 -0
  20. package/build/anoncreds/index.d.mts +1 -0
  21. package/build/anoncreds/index.mjs +1 -0
  22. package/build/anoncreds/utils/identifiers.mjs +29 -0
  23. package/build/anoncreds/utils/identifiers.mjs.map +1 -0
  24. package/build/anoncreds/utils/transform.mjs +63 -0
  25. package/build/anoncreds/utils/transform.mjs.map +1 -0
  26. package/build/dids/IndyVdrIndyDidRegistrar.d.mts +92 -0
  27. package/build/dids/IndyVdrIndyDidRegistrar.d.mts.map +1 -0
  28. package/build/dids/IndyVdrIndyDidRegistrar.mjs +290 -0
  29. package/build/dids/IndyVdrIndyDidRegistrar.mjs.map +1 -0
  30. package/build/dids/IndyVdrIndyDidResolver.d.mts +12 -0
  31. package/build/dids/IndyVdrIndyDidResolver.d.mts.map +1 -0
  32. package/build/dids/IndyVdrIndyDidResolver.mjs +36 -0
  33. package/build/dids/IndyVdrIndyDidResolver.mjs.map +1 -0
  34. package/build/dids/IndyVdrSovDidResolver.d.mts +13 -0
  35. package/build/dids/IndyVdrSovDidResolver.d.mts.map +1 -0
  36. package/build/dids/IndyVdrSovDidResolver.mjs +70 -0
  37. package/build/dids/IndyVdrSovDidResolver.mjs.map +1 -0
  38. package/build/dids/didIndyUtil.mjs +147 -0
  39. package/build/dids/didIndyUtil.mjs.map +1 -0
  40. package/build/dids/didSovUtil.mjs +118 -0
  41. package/build/dids/didSovUtil.mjs.map +1 -0
  42. package/build/dids/index.d.mts +3 -0
  43. package/build/dids/index.mjs +3 -0
  44. package/build/error/IndyVdrError.mjs +12 -0
  45. package/build/error/IndyVdrError.mjs.map +1 -0
  46. package/build/error/IndyVdrNotConfiguredError.mjs +12 -0
  47. package/build/error/IndyVdrNotConfiguredError.mjs.map +1 -0
  48. package/build/error/IndyVdrNotFound.mjs +12 -0
  49. package/build/error/IndyVdrNotFound.mjs.map +1 -0
  50. package/build/error/index.mjs +3 -0
  51. package/build/index.d.mts +12 -0
  52. package/build/index.mjs +12 -0
  53. package/build/pool/IndyVdrPool.d.mts +61 -0
  54. package/build/pool/IndyVdrPool.d.mts.map +1 -0
  55. package/build/pool/IndyVdrPool.mjs +104 -0
  56. package/build/pool/IndyVdrPool.mjs.map +1 -0
  57. package/build/pool/IndyVdrPoolService.d.mts +54 -0
  58. package/build/pool/IndyVdrPoolService.d.mts.map +1 -0
  59. package/build/pool/IndyVdrPoolService.mjs +157 -0
  60. package/build/pool/IndyVdrPoolService.mjs.map +1 -0
  61. package/build/pool/index.d.mts +2 -0
  62. package/build/pool/index.mjs +2 -0
  63. package/build/utils/did.mjs +48 -0
  64. package/build/utils/did.mjs.map +1 -0
  65. package/build/utils/promises.mjs +20 -0
  66. package/build/utils/promises.mjs.map +1 -0
  67. package/build/utils/sign.mjs +24 -0
  68. package/build/utils/sign.mjs.map +1 -0
  69. package/package.json +19 -19
  70. package/build/IndyVdrApi.d.ts +0 -34
  71. package/build/IndyVdrApi.js +0 -82
  72. package/build/IndyVdrApi.js.map +0 -1
  73. package/build/IndyVdrModule.d.ts +0 -14
  74. package/build/IndyVdrModule.js +0 -31
  75. package/build/IndyVdrModule.js.map +0 -1
  76. package/build/IndyVdrModuleConfig.d.ts +0 -66
  77. package/build/IndyVdrModuleConfig.js +0 -18
  78. package/build/IndyVdrModuleConfig.js.map +0 -1
  79. package/build/anoncreds/IndyVdrAnonCredsRegistry.d.ts +0 -113
  80. package/build/anoncreds/IndyVdrAnonCredsRegistry.js +0 -682
  81. package/build/anoncreds/IndyVdrAnonCredsRegistry.js.map +0 -1
  82. package/build/anoncreds/index.d.ts +0 -1
  83. package/build/anoncreds/index.js +0 -18
  84. package/build/anoncreds/index.js.map +0 -1
  85. package/build/anoncreds/utils/identifiers.d.ts +0 -5
  86. package/build/anoncreds/utils/identifiers.js +0 -40
  87. package/build/anoncreds/utils/identifiers.js.map +0 -1
  88. package/build/anoncreds/utils/transform.d.ts +0 -32
  89. package/build/anoncreds/utils/transform.js +0 -91
  90. package/build/anoncreds/utils/transform.js.map +0 -1
  91. package/build/dids/IndyVdrIndyDidRegistrar.d.ts +0 -85
  92. package/build/dids/IndyVdrIndyDidRegistrar.js +0 -338
  93. package/build/dids/IndyVdrIndyDidRegistrar.js.map +0 -1
  94. package/build/dids/IndyVdrIndyDidResolver.d.ts +0 -7
  95. package/build/dids/IndyVdrIndyDidResolver.js +0 -39
  96. package/build/dids/IndyVdrIndyDidResolver.js.map +0 -1
  97. package/build/dids/IndyVdrSovDidResolver.d.ts +0 -8
  98. package/build/dids/IndyVdrSovDidResolver.js +0 -79
  99. package/build/dids/IndyVdrSovDidResolver.js.map +0 -1
  100. package/build/dids/didIndyUtil.d.ts +0 -47
  101. package/build/dids/didIndyUtil.js +0 -241
  102. package/build/dids/didIndyUtil.js.map +0 -1
  103. package/build/dids/didSovUtil.d.ts +0 -26
  104. package/build/dids/didSovUtil.js +0 -180
  105. package/build/dids/didSovUtil.js.map +0 -1
  106. package/build/dids/index.d.ts +0 -3
  107. package/build/dids/index.js +0 -10
  108. package/build/dids/index.js.map +0 -1
  109. package/build/error/IndyVdrError.d.ts +0 -6
  110. package/build/error/IndyVdrError.js +0 -11
  111. package/build/error/IndyVdrError.js.map +0 -1
  112. package/build/error/IndyVdrNotConfiguredError.d.ts +0 -6
  113. package/build/error/IndyVdrNotConfiguredError.js +0 -11
  114. package/build/error/IndyVdrNotConfiguredError.js.map +0 -1
  115. package/build/error/IndyVdrNotFound.d.ts +0 -6
  116. package/build/error/IndyVdrNotFound.js +0 -11
  117. package/build/error/IndyVdrNotFound.js.map +0 -1
  118. package/build/error/index.d.ts +0 -3
  119. package/build/error/index.js +0 -20
  120. package/build/error/index.js.map +0 -1
  121. package/build/index.d.ts +0 -5
  122. package/build/index.js +0 -27
  123. package/build/index.js.map +0 -1
  124. package/build/pool/IndyVdrPool.d.ts +0 -54
  125. package/build/pool/IndyVdrPool.js +0 -131
  126. package/build/pool/IndyVdrPool.js.map +0 -1
  127. package/build/pool/IndyVdrPoolService.d.ts +0 -55
  128. package/build/pool/IndyVdrPoolService.js +0 -175
  129. package/build/pool/IndyVdrPoolService.js.map +0 -1
  130. package/build/pool/index.d.ts +0 -2
  131. package/build/pool/index.js +0 -19
  132. package/build/pool/index.js.map +0 -1
  133. package/build/utils/did.d.ts +0 -32
  134. package/build/utils/did.js +0 -57
  135. package/build/utils/did.js.map +0 -1
  136. package/build/utils/promises.d.ts +0 -11
  137. package/build/utils/promises.js +0 -26
  138. package/build/utils/promises.js.map +0 -1
  139. package/build/utils/sign.d.ts +0 -5
  140. package/build/utils/sign.js +0 -23
  141. package/build/utils/sign.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndyVdrAnonCredsRegistry.mjs","names":["writeRequest: CustomRequest","didIndyCredentialDefinitionId: string","schemaSeqNo: number","didIndyRevocationRegistryDefinitionId: string"],"sources":["../../src/anoncreds/IndyVdrAnonCredsRegistry.ts"],"sourcesContent":["import type {\n AnonCredsCredentialDefinition,\n AnonCredsRegistry,\n AnonCredsRevocationRegistryDefinition,\n AnonCredsSchema,\n GetCredentialDefinitionReturn,\n GetRevocationRegistryDefinitionReturn,\n GetRevocationStatusListReturn,\n GetSchemaReturn,\n RegisterCredentialDefinitionReturn,\n RegisterCredentialDefinitionReturnStateAction,\n RegisterCredentialDefinitionReturnStateFailed,\n RegisterCredentialDefinitionReturnStateFinished,\n RegisterCredentialDefinitionReturnStateWait,\n RegisterRevocationRegistryDefinitionReturn,\n RegisterRevocationRegistryDefinitionReturnStateAction,\n RegisterRevocationRegistryDefinitionReturnStateFailed,\n RegisterRevocationRegistryDefinitionReturnStateFinished,\n RegisterRevocationRegistryDefinitionReturnStateWait,\n RegisterRevocationStatusListOptions,\n RegisterRevocationStatusListReturn,\n RegisterRevocationStatusListReturnStateAction,\n RegisterRevocationStatusListReturnStateFailed,\n RegisterRevocationStatusListReturnStateFinished,\n RegisterRevocationStatusListReturnStateWait,\n RegisterSchemaReturn,\n RegisterSchemaReturnStateAction,\n RegisterSchemaReturnStateFailed,\n RegisterSchemaReturnStateFinished,\n RegisterSchemaReturnStateWait,\n} from '@credo-ts/anoncreds'\nimport {\n AnonCredsRegistryService,\n dateToTimestamp,\n getUnqualifiedCredentialDefinitionId,\n getUnqualifiedRevocationRegistryDefinitionId,\n getUnqualifiedSchemaId,\n parseIndyCredentialDefinitionId,\n parseIndyDid,\n parseIndyRevocationRegistryId,\n parseIndySchemaId,\n} from '@credo-ts/anoncreds'\nimport type { AgentContext } from '@credo-ts/core'\nimport { CredoError } from '@credo-ts/core'\nimport type { SchemaResponse } from '@hyperledger/indy-vdr-shared'\nimport {\n CredentialDefinitionRequest,\n CustomRequest,\n GetCredentialDefinitionRequest,\n GetRevocationRegistryDefinitionRequest,\n GetRevocationRegistryDeltaRequest,\n GetSchemaRequest,\n GetTransactionRequest,\n RevocationRegistryDefinitionRequest,\n RevocationRegistryEntryRequest,\n SchemaRequest,\n} from '@hyperledger/indy-vdr-shared'\nimport { verificationPublicJwkForIndyDid } from '../dids/didIndyUtil'\nimport { IndyVdrPoolService } from '../pool'\nimport { multiSignRequest } from '../utils/sign'\nimport {\n getDidIndyCredentialDefinitionId,\n getDidIndyRevocationRegistryDefinitionId,\n getDidIndyRevocationRegistryEntryId,\n getDidIndySchemaId,\n indyVdrAnonCredsRegistryIdentifierRegex,\n} from './utils/identifiers'\nimport type { RevocationRegistryDelta } from './utils/transform'\nimport { anonCredsRevocationStatusListFromIndyVdr, indyVdrCreateLatestRevocationDelta } from './utils/transform'\n\nexport class IndyVdrAnonCredsRegistry implements AnonCredsRegistry {\n public readonly methodName = 'indy'\n\n public readonly supportedIdentifier = indyVdrAnonCredsRegistryIdentifierRegex\n\n public allowsCaching = true\n public allowsLocalRecord = true\n\n public async getSchema(agentContext: AgentContext, schemaId: string): Promise<GetSchemaReturn> {\n try {\n const indyVdrPoolService = agentContext.dependencyManager.resolve(IndyVdrPoolService)\n\n // parse schema id (supports did:indy and legacy)\n const { did, namespaceIdentifier, schemaName, schemaVersion } = parseIndySchemaId(schemaId)\n const { pool } = await indyVdrPoolService.getPoolForDid(agentContext, did)\n agentContext.config.logger.debug(`Getting schema '${schemaId}' from ledger '${pool.indyNamespace}'`)\n\n // even though we support did:indy and legacy identifiers we always need to fetch using the legacy identifier\n const legacySchemaId = getUnqualifiedSchemaId(namespaceIdentifier, schemaName, schemaVersion)\n const request = new GetSchemaRequest({ schemaId: legacySchemaId })\n\n agentContext.config.logger.trace(\n `Submitting get schema request for schema '${schemaId}' to ledger '${pool.indyNamespace}'`\n )\n const response = await pool.submitRequest(request)\n\n agentContext.config.logger.trace(`Got un-parsed schema '${schemaId}' from ledger '${pool.indyNamespace}'`, {\n response,\n })\n\n if (!('attr_names' in response.result.data)) {\n agentContext.config.logger.error(`Error retrieving schema '${schemaId}'`)\n\n return {\n schemaId,\n resolutionMetadata: {\n error: 'notFound',\n message: `unable to find schema with id ${schemaId}`,\n },\n schemaMetadata: {},\n }\n }\n\n return {\n schema: {\n attrNames: response.result.data.attr_names,\n name: response.result.data.name,\n version: response.result.data.version,\n issuerId: did,\n },\n schemaId,\n resolutionMetadata: {},\n schemaMetadata: {\n didIndyNamespace: pool.indyNamespace,\n // NOTE: the seqNo is required by the indy-sdk even though not present in AnonCreds v1.\n // For this reason we return it in the metadata.\n indyLedgerSeqNo: response.result.seqNo,\n },\n }\n } catch (error) {\n agentContext.config.logger.error(`Error retrieving schema '${schemaId}'`, {\n error,\n schemaId,\n })\n\n return {\n schemaId,\n resolutionMetadata: {\n error: 'notFound',\n },\n schemaMetadata: {},\n }\n }\n }\n\n public async registerSchema(\n agentContext: AgentContext,\n options: IndyVdrRegisterSchema\n ): Promise<IndyVdrRegisterSchemaReturn> {\n const schema = options.schema\n const { issuerId, name, version, attrNames } = schema\n try {\n // This will throw an error if trying to register a schema with a legacy indy identifier. We only support did:indy identifiers\n // for registering, that will allow us to extract the namespace and means all stored records will use did:indy identifiers.\n\n const { namespaceIdentifier, namespace } = parseIndyDid(issuerId)\n const { endorserDid, endorserMode } = options.options\n const indyVdrPoolService = agentContext.dependencyManager.resolve(IndyVdrPoolService)\n\n const pool = indyVdrPoolService.getPoolForNamespace(namespace)\n\n let writeRequest: CustomRequest\n const didIndySchemaId = getDidIndySchemaId(namespace, namespaceIdentifier, schema.name, schema.version)\n\n const endorsedTransaction = options.options.endorsedTransaction\n if (endorsedTransaction) {\n agentContext.config.logger.debug(\n `Preparing endorsed tx '${endorsedTransaction}' for submission on ledger '${namespace}' with did '${issuerId}'`,\n schema\n )\n writeRequest = new CustomRequest({ customRequest: endorsedTransaction })\n } else {\n agentContext.config.logger.debug(`Create schema tx on ledger '${namespace}' with did '${issuerId}'`, schema)\n const legacySchemaId = getUnqualifiedSchemaId(namespaceIdentifier, name, version)\n\n const schemaRequest = new SchemaRequest({\n submitterDid: namespaceIdentifier,\n schema: { id: legacySchemaId, name, ver: '1.0', version, attrNames },\n })\n\n const submitterKey = await verificationPublicJwkForIndyDid(agentContext, issuerId)\n writeRequest = await pool.prepareWriteRequest(\n agentContext,\n schemaRequest,\n submitterKey,\n endorserDid !== issuerId ? endorserDid : undefined\n )\n\n if (endorserMode === 'external') {\n return {\n jobId: didIndySchemaId,\n schemaState: {\n state: 'action',\n action: 'endorseIndyTransaction',\n schemaId: didIndySchemaId,\n schema: schema,\n schemaRequest: writeRequest.body,\n },\n registrationMetadata: {},\n schemaMetadata: {},\n }\n }\n\n if (endorserMode === 'internal' && endorserDid !== issuerId) {\n const endorserKey = await verificationPublicJwkForIndyDid(agentContext, endorserDid as string)\n await multiSignRequest(agentContext, writeRequest, endorserKey, parseIndyDid(endorserDid).namespaceIdentifier)\n }\n }\n const response = await pool.submitRequest(writeRequest)\n\n agentContext.config.logger.debug(`Registered schema '${didIndySchemaId}' on ledger '${pool.indyNamespace}'`, {\n response,\n writeRequest,\n })\n\n return {\n schemaState: {\n state: 'finished',\n schema: schema,\n schemaId: didIndySchemaId,\n },\n registrationMetadata: {},\n schemaMetadata: {\n // NOTE: the seqNo is required by the indy-sdk even though not present in AnonCreds v1.\n // For this reason we return it in the metadata.\n // Cast to SchemaResponse to pass type check\n indyLedgerSeqNo: (response as SchemaResponse)?.result?.txnMetadata?.seqNo,\n },\n }\n } catch (error) {\n agentContext.config.logger.error(`Error registering schema for did '${issuerId}'`, {\n error,\n did: issuerId,\n schema: schema,\n })\n\n return {\n schemaMetadata: {},\n registrationMetadata: {},\n schemaState: {\n state: 'failed',\n schema: schema,\n reason: `unknownError: ${error.message}`,\n },\n }\n }\n }\n\n public async getCredentialDefinition(\n agentContext: AgentContext,\n credentialDefinitionId: string\n ): Promise<GetCredentialDefinitionReturn> {\n try {\n const indyVdrPoolService = agentContext.dependencyManager.resolve(IndyVdrPoolService)\n\n // we support did:indy and legacy identifiers\n const { did, namespaceIdentifier, schemaSeqNo, tag } = parseIndyCredentialDefinitionId(credentialDefinitionId)\n const { pool } = await indyVdrPoolService.getPoolForDid(agentContext, did)\n\n agentContext.config.logger.debug(\n `Getting credential definition '${credentialDefinitionId}' from ledger '${pool.indyNamespace}'`\n )\n\n const legacyCredentialDefinitionId = getUnqualifiedCredentialDefinitionId(namespaceIdentifier, schemaSeqNo, tag)\n const request = new GetCredentialDefinitionRequest({\n credentialDefinitionId: legacyCredentialDefinitionId,\n })\n\n agentContext.config.logger.trace(\n `Submitting get credential definition request for credential definition '${credentialDefinitionId}' to ledger '${pool.indyNamespace}'`\n )\n const response = await pool.submitRequest(request)\n\n // We need to fetch the schema to determine the schemaId (we only have the seqNo)\n const schema = await this.fetchIndySchemaWithSeqNo(agentContext, response.result.ref, namespaceIdentifier)\n\n if (!schema || !response.result.data) {\n agentContext.config.logger.error(`Error retrieving credential definition '${credentialDefinitionId}'`)\n\n return {\n credentialDefinitionId,\n credentialDefinitionMetadata: {},\n resolutionMetadata: {\n error: 'notFound',\n message: `unable to resolve credential definition with id ${credentialDefinitionId}`,\n },\n }\n }\n\n // Format the schema id based on the type of the credential definition id\n const schemaId = credentialDefinitionId.startsWith('did:indy')\n ? getDidIndySchemaId(pool.indyNamespace, schema.schema.issuerId, schema.schema.name, schema.schema.version)\n : schema.schema.schemaId\n\n return {\n credentialDefinitionId,\n credentialDefinition: {\n issuerId: did,\n schemaId,\n tag: response.result.tag,\n type: 'CL',\n value: response.result.data,\n },\n credentialDefinitionMetadata: {\n didIndyNamespace: pool.indyNamespace,\n },\n resolutionMetadata: {},\n }\n } catch (error) {\n agentContext.config.logger.error(`Error retrieving credential definition '${credentialDefinitionId}'`, {\n error,\n credentialDefinitionId,\n })\n\n return {\n credentialDefinitionId,\n credentialDefinitionMetadata: {},\n resolutionMetadata: {\n error: 'notFound',\n message: `unable to resolve credential definition: ${error.message}`,\n },\n }\n }\n }\n\n public async registerCredentialDefinition(\n agentContext: AgentContext,\n options: IndyVdrRegisterCredentialDefinition\n ): Promise<IndyVdrRegisterCredentialDefinitionReturn> {\n const credentialDefinition = options.credentialDefinition\n const { schemaId, issuerId, tag, value } = credentialDefinition\n\n try {\n // This will throw an error if trying to register a credential definition with a legacy indy identifier. We only support did:indy\n // identifiers for registering, that will allow us to extract the namespace and means all stored records will use did:indy identifiers.\n const { namespaceIdentifier, namespace } = parseIndyDid(issuerId)\n const { endorserDid, endorserMode } = options.options\n const indyVdrPoolService = agentContext.dependencyManager.resolve(IndyVdrPoolService)\n const pool = indyVdrPoolService.getPoolForNamespace(namespace)\n\n agentContext.config.logger.debug(\n `Registering credential definition on ledger '${namespace}' with did '${issuerId}'`,\n options.credentialDefinition\n )\n\n let writeRequest: CustomRequest\n let didIndyCredentialDefinitionId: string\n let schemaSeqNo: number\n\n const endorsedTransaction = options.options.endorsedTransaction\n if (endorsedTransaction) {\n agentContext.config.logger.debug(\n `Preparing endorsed tx '${endorsedTransaction}' for submission on ledger '${namespace}' with did '${issuerId}'`,\n credentialDefinition\n )\n writeRequest = new CustomRequest({ customRequest: endorsedTransaction })\n const operation = JSON.parse(endorsedTransaction)?.operation\n // extract the seqNo from the endorsed transaction, which is contained in the ref field of the operation\n schemaSeqNo = Number(operation?.ref)\n didIndyCredentialDefinitionId = getDidIndyCredentialDefinitionId(\n namespace,\n namespaceIdentifier,\n schemaSeqNo,\n tag\n )\n } else {\n // TODO: this will bypass caching if done on a higher level.\n const anoncredsRegistryService = agentContext.resolve(AnonCredsRegistryService)\n const { schemaMetadata, resolutionMetadata } = await anoncredsRegistryService.getSchema(\n agentContext,\n schemaId,\n {\n // Local record does not have the 'indyLedgerSeqNo', which we need to register the credential definition\n useLocalRecord: false,\n }\n )\n\n if (!schemaMetadata?.indyLedgerSeqNo || typeof schemaMetadata.indyLedgerSeqNo !== 'number') {\n return {\n registrationMetadata: {},\n credentialDefinitionMetadata: {\n didIndyNamespace: pool.indyNamespace,\n },\n credentialDefinitionState: {\n credentialDefinition: options.credentialDefinition,\n state: 'failed',\n reason: `error resolving schema with id ${schemaId}: ${resolutionMetadata.error} ${resolutionMetadata.message}`,\n },\n }\n }\n schemaSeqNo = schemaMetadata.indyLedgerSeqNo\n\n // FIXME: we need to check if schemaId has same namespace as issuerId and it should not be a legacy identifier\n // FIXME: in the other methods we also need to add checks. E.g. when creating a revocation\n // status list, you can only create a revocation status list for a credential definition registry that is created\n // under the same namespace and by the same issuer id (you can create a cred def for a schema created by another issuer\n // but you can't create a revocation registry based on a cred def created by another issuer. We need to add these checks\n // to all register methods in this file)\n const legacyCredentialDefinitionId = getUnqualifiedCredentialDefinitionId(issuerId, schemaSeqNo, tag)\n didIndyCredentialDefinitionId = getDidIndyCredentialDefinitionId(\n namespace,\n namespaceIdentifier,\n schemaSeqNo,\n tag\n )\n\n const credentialDefinitionRequest = new CredentialDefinitionRequest({\n submitterDid: namespaceIdentifier,\n credentialDefinition: {\n ver: '1.0',\n id: legacyCredentialDefinitionId,\n schemaId: schemaSeqNo.toString(),\n type: 'CL',\n tag,\n value,\n },\n })\n\n const submitterKey = await verificationPublicJwkForIndyDid(agentContext, issuerId)\n writeRequest = await pool.prepareWriteRequest(\n agentContext,\n credentialDefinitionRequest,\n submitterKey,\n endorserDid !== issuerId ? endorserDid : undefined\n )\n\n if (endorserMode === 'external') {\n return {\n jobId: didIndyCredentialDefinitionId,\n credentialDefinitionState: {\n state: 'action',\n action: 'endorseIndyTransaction',\n credentialDefinition: credentialDefinition,\n credentialDefinitionId: didIndyCredentialDefinitionId,\n credentialDefinitionRequest: writeRequest.body,\n },\n registrationMetadata: {},\n credentialDefinitionMetadata: {},\n }\n }\n\n if (endorserMode === 'internal' && endorserDid !== issuerId) {\n const endorserKey = await verificationPublicJwkForIndyDid(agentContext, endorserDid as string)\n await multiSignRequest(agentContext, writeRequest, endorserKey, parseIndyDid(endorserDid).namespaceIdentifier)\n }\n }\n\n const response = await pool.submitRequest(writeRequest)\n agentContext.config.logger.debug(\n `Registered credential definition '${didIndyCredentialDefinitionId}' on ledger '${pool.indyNamespace}'`,\n {\n response,\n credentialDefinition: options.credentialDefinition,\n }\n )\n\n return {\n credentialDefinitionMetadata: {},\n credentialDefinitionState: {\n credentialDefinition: credentialDefinition,\n credentialDefinitionId: didIndyCredentialDefinitionId,\n state: 'finished',\n },\n registrationMetadata: {},\n }\n } catch (error) {\n agentContext.config.logger.error(`Error registering credential definition for schema '${schemaId}'`, {\n error,\n did: issuerId,\n credentialDefinition: options.credentialDefinition,\n })\n\n return {\n credentialDefinitionMetadata: {},\n registrationMetadata: {},\n credentialDefinitionState: {\n credentialDefinition: options.credentialDefinition,\n state: 'failed',\n reason: `unknownError: ${error.message}`,\n },\n }\n }\n }\n\n public async getRevocationRegistryDefinition(\n agentContext: AgentContext,\n revocationRegistryDefinitionId: string\n ): Promise<GetRevocationRegistryDefinitionReturn> {\n try {\n const indyVdrPoolService = agentContext.dependencyManager.resolve(IndyVdrPoolService)\n\n const { did, namespaceIdentifier, credentialDefinitionTag, revocationRegistryTag, schemaSeqNo } =\n parseIndyRevocationRegistryId(revocationRegistryDefinitionId)\n const { pool } = await indyVdrPoolService.getPoolForDid(agentContext, did)\n\n agentContext.config.logger.debug(\n `Using ledger '${pool.indyNamespace}' to retrieve revocation registry definition '${revocationRegistryDefinitionId}'`\n )\n\n const legacyRevocationRegistryId = getUnqualifiedRevocationRegistryDefinitionId(\n namespaceIdentifier,\n schemaSeqNo,\n credentialDefinitionTag,\n revocationRegistryTag\n )\n const request = new GetRevocationRegistryDefinitionRequest({\n revocationRegistryId: legacyRevocationRegistryId,\n })\n\n agentContext.config.logger.trace(\n `Submitting get revocation registry definition request for revocation registry definition '${revocationRegistryDefinitionId}' to ledger`\n )\n const response = await pool.submitRequest(request)\n\n if (!response.result.data) {\n agentContext.config.logger.error(\n `Error retrieving revocation registry definition '${revocationRegistryDefinitionId}' from ledger`,\n {\n revocationRegistryDefinitionId,\n }\n )\n\n return {\n resolutionMetadata: {\n error: 'notFound',\n message: 'unable to resolve revocation registry definition',\n },\n revocationRegistryDefinitionId,\n revocationRegistryDefinitionMetadata: {},\n }\n }\n\n agentContext.config.logger.trace(\n `Got revocation registry definition '${revocationRegistryDefinitionId}' from ledger '${pool.indyNamespace}'`,\n {\n response,\n }\n )\n\n const credentialDefinitionId = revocationRegistryDefinitionId.startsWith('did:indy:')\n ? getDidIndyCredentialDefinitionId(\n pool.indyNamespace,\n namespaceIdentifier,\n schemaSeqNo,\n credentialDefinitionTag\n )\n : getUnqualifiedCredentialDefinitionId(namespaceIdentifier, schemaSeqNo, credentialDefinitionTag)\n\n const revocationRegistryDefinition = {\n issuerId: did,\n revocDefType: response.result.data.revocDefType,\n value: {\n maxCredNum: response.result.data.value.maxCredNum,\n tailsHash: response.result.data.value.tailsHash,\n tailsLocation: response.result.data.value.tailsLocation,\n publicKeys: {\n accumKey: {\n z: response.result.data.value.publicKeys.accumKey.z,\n },\n },\n },\n tag: response.result.data.tag,\n credDefId: credentialDefinitionId,\n } satisfies AnonCredsRevocationRegistryDefinition\n\n return {\n revocationRegistryDefinitionId,\n revocationRegistryDefinition,\n revocationRegistryDefinitionMetadata: {\n issuanceType: response.result.data.value.issuanceType,\n didIndyNamespace: pool.indyNamespace,\n },\n resolutionMetadata: {},\n }\n } catch (error) {\n agentContext.config.logger.error(\n `Error retrieving revocation registry definition '${revocationRegistryDefinitionId}' from ledger`,\n {\n error,\n revocationRegistryDefinitionId,\n }\n )\n\n return {\n resolutionMetadata: {\n error: 'notFound',\n message: `unable to resolve revocation registry definition: ${error.message}`,\n },\n revocationRegistryDefinitionId,\n revocationRegistryDefinitionMetadata: {},\n }\n }\n }\n\n public async registerRevocationRegistryDefinition(\n agentContext: AgentContext,\n { options, revocationRegistryDefinition }: IndyVdrRegisterRevocationRegistryDefinition\n ): Promise<IndyVdrRegisterRevocationRegistryDefinitionReturn> {\n try {\n // This will throw an error if trying to register a credential definition with a legacy indy identifier. We only support did:indy\n // identifiers for registering, that will allow us to extract the namespace and means all stored records will use did:indy identifiers.\n const { namespaceIdentifier, namespace } = parseIndyDid(revocationRegistryDefinition.issuerId)\n const indyVdrPoolService = agentContext.dependencyManager.resolve(IndyVdrPoolService)\n const pool = indyVdrPoolService.getPoolForNamespace(namespace)\n\n agentContext.config.logger.debug(\n `Registering revocation registry definition on ledger '${namespace}' with did '${revocationRegistryDefinition.issuerId}'`,\n revocationRegistryDefinition\n )\n\n let writeRequest: CustomRequest\n let didIndyRevocationRegistryDefinitionId: string\n\n const { schemaSeqNo, tag: credentialDefinitionTag } = parseIndyCredentialDefinitionId(\n revocationRegistryDefinition.credDefId\n )\n\n const { endorsedTransaction, endorserDid, endorserMode } = options\n if (endorsedTransaction) {\n agentContext.config.logger.debug(\n `Preparing endorsed tx '${endorsedTransaction}' for submission on ledger '${namespace}' with did '${revocationRegistryDefinition.issuerId}'`,\n revocationRegistryDefinition\n )\n writeRequest = new CustomRequest({ customRequest: endorsedTransaction })\n didIndyRevocationRegistryDefinitionId = getDidIndyRevocationRegistryDefinitionId(\n namespace,\n namespaceIdentifier,\n schemaSeqNo,\n credentialDefinitionTag,\n revocationRegistryDefinition.tag\n )\n } else {\n const legacyRevocationRegistryDefinitionId = getUnqualifiedRevocationRegistryDefinitionId(\n namespaceIdentifier,\n schemaSeqNo,\n credentialDefinitionTag,\n revocationRegistryDefinition.tag\n )\n\n didIndyRevocationRegistryDefinitionId = getDidIndyRevocationRegistryDefinitionId(\n namespace,\n namespaceIdentifier,\n schemaSeqNo,\n credentialDefinitionTag,\n revocationRegistryDefinition.tag\n )\n\n const legacyCredentialDefinitionId = getUnqualifiedCredentialDefinitionId(\n namespaceIdentifier,\n schemaSeqNo,\n credentialDefinitionTag\n )\n\n const revocationRegistryDefinitionRequest = new RevocationRegistryDefinitionRequest({\n submitterDid: namespaceIdentifier,\n revocationRegistryDefinitionV1: {\n id: legacyRevocationRegistryDefinitionId,\n ver: '1.0',\n credDefId: legacyCredentialDefinitionId,\n tag: revocationRegistryDefinition.tag,\n revocDefType: revocationRegistryDefinition.revocDefType,\n value: {\n issuanceType: 'ISSUANCE_BY_DEFAULT',\n ...revocationRegistryDefinition.value,\n },\n },\n })\n\n const submitterKey = await verificationPublicJwkForIndyDid(agentContext, revocationRegistryDefinition.issuerId)\n writeRequest = await pool.prepareWriteRequest(\n agentContext,\n revocationRegistryDefinitionRequest,\n submitterKey,\n endorserDid !== revocationRegistryDefinition.issuerId ? endorserDid : undefined\n )\n\n if (endorserMode === 'external') {\n return {\n jobId: didIndyRevocationRegistryDefinitionId,\n revocationRegistryDefinitionState: {\n state: 'action',\n action: 'endorseIndyTransaction',\n revocationRegistryDefinition,\n revocationRegistryDefinitionId: didIndyRevocationRegistryDefinitionId,\n revocationRegistryDefinitionRequest: writeRequest.body,\n },\n registrationMetadata: {},\n revocationRegistryDefinitionMetadata: {},\n }\n }\n\n if (endorserMode === 'internal' && endorserDid !== revocationRegistryDefinition.issuerId) {\n const endorserKey = await verificationPublicJwkForIndyDid(agentContext, endorserDid as string)\n await multiSignRequest(agentContext, writeRequest, endorserKey, parseIndyDid(endorserDid).namespaceIdentifier)\n }\n }\n\n const response = await pool.submitRequest(writeRequest)\n agentContext.config.logger.debug(\n `Registered revocation registry definition '${didIndyRevocationRegistryDefinitionId}' on ledger '${pool.indyNamespace}'`,\n {\n response,\n revocationRegistryDefinition,\n }\n )\n\n return {\n revocationRegistryDefinitionMetadata: {},\n revocationRegistryDefinitionState: {\n revocationRegistryDefinition,\n revocationRegistryDefinitionId: didIndyRevocationRegistryDefinitionId,\n state: 'finished',\n },\n registrationMetadata: {},\n }\n } catch (error) {\n agentContext.config.logger.error(\n `Error registering revocation registry definition for credential definition '${revocationRegistryDefinition.credDefId}'`,\n {\n error,\n did: revocationRegistryDefinition.issuerId,\n revocationRegistryDefinition,\n }\n )\n\n return {\n revocationRegistryDefinitionMetadata: {},\n registrationMetadata: {},\n revocationRegistryDefinitionState: {\n revocationRegistryDefinition,\n state: 'failed',\n reason: `unknownError: ${error.message}`,\n },\n }\n }\n }\n\n public async getRevocationStatusList(\n agentContext: AgentContext,\n revocationRegistryDefinitionId: string,\n timestamp: number\n ): Promise<GetRevocationStatusListReturn> {\n try {\n const indyVdrPoolService = agentContext.dependencyManager.resolve(IndyVdrPoolService)\n\n const { did } = parseIndyRevocationRegistryId(revocationRegistryDefinitionId)\n const { pool } = await indyVdrPoolService.getPoolForDid(agentContext, did)\n\n const revocationDelta = await this.fetchIndyRevocationDelta(\n agentContext,\n revocationRegistryDefinitionId,\n timestamp\n )\n\n if (!revocationDelta) {\n return {\n resolutionMetadata: {\n error: 'notFound',\n message: `Error retrieving revocation registry delta '${revocationRegistryDefinitionId}' from ledger, potentially revocation interval ends before revocation registry creation`,\n },\n revocationStatusListMetadata: {},\n }\n }\n\n const anoncredsRegistryService = agentContext.resolve(AnonCredsRegistryService)\n const { revocationRegistryDefinition, resolutionMetadata, revocationRegistryDefinitionMetadata } =\n await anoncredsRegistryService.getRevocationRegistryDefinition(agentContext, revocationRegistryDefinitionId)\n\n if (\n !revocationRegistryDefinition ||\n !revocationRegistryDefinitionMetadata.issuanceType ||\n typeof revocationRegistryDefinitionMetadata.issuanceType !== 'string'\n ) {\n return {\n resolutionMetadata: {\n error: `error resolving revocation registry definition with id ${revocationRegistryDefinitionId}: ${resolutionMetadata.error} ${resolutionMetadata.message}`,\n },\n revocationStatusListMetadata: {\n didIndyNamespace: pool.indyNamespace,\n },\n }\n }\n\n const isIssuanceByDefault = revocationRegistryDefinitionMetadata.issuanceType === 'ISSUANCE_BY_DEFAULT'\n\n return {\n resolutionMetadata: {},\n revocationStatusList: anonCredsRevocationStatusListFromIndyVdr(\n revocationRegistryDefinitionId,\n revocationRegistryDefinition,\n revocationDelta,\n isIssuanceByDefault\n ),\n revocationStatusListMetadata: {\n didIndyNamespace: pool.indyNamespace,\n },\n }\n } catch (error) {\n agentContext.config.logger.error(\n `Error retrieving revocation registry delta '${revocationRegistryDefinitionId}' from ledger, potentially revocation interval ends before revocation registry creation?\"`,\n {\n error,\n revocationRegistryId: revocationRegistryDefinitionId,\n }\n )\n\n return {\n resolutionMetadata: {\n error: 'notFound',\n message: `Error retrieving revocation registry delta '${revocationRegistryDefinitionId}' from ledger, potentially revocation interval ends before revocation registry creation: ${error.message}`,\n },\n revocationStatusListMetadata: {},\n }\n }\n }\n\n public async registerRevocationStatusList(\n agentContext: AgentContext,\n { options, revocationStatusList }: IndyVdrRegisterRevocationStatusList\n ): Promise<IndyVdrRegisterRevocationStatusListReturn> {\n try {\n // This will throw an error if trying to register a revocation status list with a legacy indy identifier. We only support did:indy\n // identifiers for registering, that will allow us to extract the namespace and means all stored records will use did:indy identifiers.\n const { endorsedTransaction, endorserDid, endorserMode } = options\n const { namespaceIdentifier, namespace } = parseIndyDid(revocationStatusList.issuerId)\n const indyVdrPoolService = agentContext.dependencyManager.resolve(IndyVdrPoolService)\n const pool = indyVdrPoolService.getPoolForNamespace(namespace)\n\n agentContext.config.logger.debug(\n `Registering revocation status list on ledger '${namespace}' with did '${revocationStatusList.issuerId}'`,\n revocationStatusList\n )\n\n let writeRequest: CustomRequest\n\n // Parse the revocation registry id\n const {\n schemaSeqNo,\n credentialDefinitionTag,\n namespaceIdentifier: revocationRegistryNamespaceIdentifier,\n revocationRegistryTag,\n namespace: revocationRegistryNamespace,\n } = parseIndyRevocationRegistryId(revocationStatusList.revRegDefId)\n\n const legacyRevocationRegistryDefinitionId = getUnqualifiedRevocationRegistryDefinitionId(\n namespaceIdentifier,\n schemaSeqNo,\n credentialDefinitionTag,\n revocationRegistryTag\n )\n\n const didIndyRevocationRegistryEntryId = getDidIndyRevocationRegistryEntryId(\n namespace,\n namespaceIdentifier,\n schemaSeqNo,\n credentialDefinitionTag,\n revocationRegistryTag\n )\n\n if (revocationRegistryNamespace && revocationRegistryNamespace !== namespace) {\n throw new CredoError(\n `Issued id '${revocationStatusList.issuerId}' does not have the same namespace (${namespace}) as the revocation registry definition '${revocationRegistryNamespace}'`\n )\n }\n\n if (revocationRegistryNamespaceIdentifier !== namespaceIdentifier) {\n throw new CredoError(\n `Cannot register revocation registry definition using a different DID. Revocation registry definition contains '${revocationRegistryNamespaceIdentifier}', but DID used was '${namespaceIdentifier}'`\n )\n }\n\n if (endorsedTransaction) {\n agentContext.config.logger.debug(\n `Preparing endorsed tx '${endorsedTransaction}' for submission on ledger '${namespace}' with did '${revocationStatusList.issuerId}'`,\n revocationStatusList\n )\n\n writeRequest = new CustomRequest({ customRequest: endorsedTransaction })\n } else {\n const previousDelta = await this.fetchIndyRevocationDelta(\n agentContext,\n legacyRevocationRegistryDefinitionId,\n // Fetch revocation delta for current timestamp\n dateToTimestamp(new Date())\n )\n\n const revocationRegistryDefinitionEntryValue = indyVdrCreateLatestRevocationDelta(\n revocationStatusList.currentAccumulator,\n revocationStatusList.revocationList,\n previousDelta ?? undefined\n )\n\n const revocationRegistryDefinitionRequest = new RevocationRegistryEntryRequest({\n submitterDid: namespaceIdentifier,\n revocationRegistryEntry: {\n ver: '1.0',\n value: revocationRegistryDefinitionEntryValue,\n },\n revocationRegistryDefinitionType: 'CL_ACCUM',\n revocationRegistryDefinitionId: legacyRevocationRegistryDefinitionId,\n })\n\n const submitterKey = await verificationPublicJwkForIndyDid(agentContext, revocationStatusList.issuerId)\n writeRequest = await pool.prepareWriteRequest(\n agentContext,\n revocationRegistryDefinitionRequest,\n submitterKey,\n endorserDid !== revocationStatusList.issuerId ? endorserDid : undefined\n )\n\n if (endorserMode === 'external') {\n return {\n jobId: didIndyRevocationRegistryEntryId,\n revocationStatusListState: {\n state: 'action',\n action: 'endorseIndyTransaction',\n revocationStatusList,\n revocationStatusListRequest: writeRequest.body,\n },\n registrationMetadata: {},\n revocationStatusListMetadata: {},\n }\n }\n\n if (endorserMode === 'internal' && endorserDid !== revocationStatusList.issuerId) {\n const endorserKey = await verificationPublicJwkForIndyDid(agentContext, endorserDid as string)\n await multiSignRequest(agentContext, writeRequest, endorserKey, parseIndyDid(endorserDid).namespaceIdentifier)\n }\n }\n\n const response = await pool.submitRequest<RevocationRegistryEntryRequest>(\n writeRequest as RevocationRegistryEntryRequest\n )\n agentContext.config.logger.debug(\n `Registered revocation status list '${didIndyRevocationRegistryEntryId}' on ledger '${pool.indyNamespace}'`,\n {\n response,\n revocationStatusList,\n }\n )\n\n return {\n revocationStatusListMetadata: {},\n revocationStatusListState: {\n revocationStatusList: {\n ...revocationStatusList,\n timestamp: response.result.txnMetadata.txnTime,\n },\n state: 'finished',\n },\n registrationMetadata: {},\n }\n } catch (error) {\n agentContext.config.logger.error(\n `Error registering revocation status list for revocation registry definition '${revocationStatusList.revRegDefId}}'`,\n {\n error,\n did: revocationStatusList.issuerId,\n }\n )\n\n return {\n registrationMetadata: {},\n revocationStatusListMetadata: {},\n revocationStatusListState: {\n revocationStatusList,\n state: 'failed',\n reason: `unknownError: ${error.message}`,\n },\n }\n }\n }\n\n private async fetchIndySchemaWithSeqNo(agentContext: AgentContext, seqNo: number, did: string) {\n const indyVdrPoolService = agentContext.dependencyManager.resolve(IndyVdrPoolService)\n\n const { pool } = await indyVdrPoolService.getPoolForDid(agentContext, did)\n\n agentContext.config.logger.debug(`Getting transaction with seqNo '${seqNo}' from ledger '${pool.indyNamespace}'`)\n // ledgerType 1 is domain ledger\n const request = new GetTransactionRequest({ ledgerType: 1, seqNo })\n\n agentContext.config.logger.trace(`Submitting get transaction request to ledger '${pool.indyNamespace}'`)\n const response = await pool.submitRequest(request)\n\n if (response.result.data?.txn.type !== '101') {\n agentContext.config.logger.error(`Could not get schema from ledger for seq no ${seqNo}'`)\n return null\n }\n\n const schema = response.result.data?.txn.data as SchemaType\n const schemaDid = response.result.data?.txn.metadata.from as string\n const schemaId = getUnqualifiedSchemaId(schemaDid, schema.data.name, schema.data.version)\n\n return {\n schema: {\n schemaId,\n attr_name: schema.data.attr_names,\n name: schema.data.name,\n version: schema.data.version,\n issuerId: schemaDid,\n seqNo,\n },\n indyNamespace: pool.indyNamespace,\n }\n }\n\n private async fetchIndyRevocationDelta(\n agentContext: AgentContext,\n revocationRegistryDefinitionId: string,\n toTs: number\n ): Promise<null | RevocationRegistryDelta> {\n const indyVdrPoolService = agentContext.dependencyManager.resolve(IndyVdrPoolService)\n\n const { did, namespaceIdentifier, schemaSeqNo, credentialDefinitionTag, revocationRegistryTag } =\n parseIndyRevocationRegistryId(revocationRegistryDefinitionId)\n const { pool } = await indyVdrPoolService.getPoolForDid(agentContext, did)\n\n agentContext.config.logger.debug(\n `Using ledger '${pool.indyNamespace}' to retrieve revocation registry deltas with revocation registry definition id '${revocationRegistryDefinitionId}' until ${toTs}`\n )\n\n const legacyRevocationRegistryDefinitionId = getUnqualifiedRevocationRegistryDefinitionId(\n namespaceIdentifier,\n schemaSeqNo,\n credentialDefinitionTag,\n revocationRegistryTag\n )\n\n const deltaRequest = new GetRevocationRegistryDeltaRequest({\n toTs,\n submitterDid: namespaceIdentifier,\n revocationRegistryId: legacyRevocationRegistryDefinitionId,\n })\n\n agentContext.config.logger.trace(`Submitting get transaction request to ledger '${pool.indyNamespace}'`)\n const response = await pool.submitRequest(deltaRequest)\n const {\n result: { data, type, txnTime },\n } = response\n\n // Indicating there are no deltas\n if (type !== '117' || data === null || !txnTime) {\n agentContext.config.logger.warn(\n `Could not get any deltas from ledger for revocation registry definition '${revocationRegistryDefinitionId}' from ledger '${pool.indyNamespace}'`\n )\n return null\n }\n\n return {\n revoked: data.value.revoked,\n issued: data.value.issued,\n accum: data.value.accum_to.value.accum,\n txnTime,\n }\n }\n}\n\ninterface SchemaType {\n data: {\n attr_names: string[]\n version: string\n name: string\n }\n}\n\ntype InternalEndorsement = { endorserMode: 'internal'; endorserDid: string; endorsedTransaction?: never }\ntype ExternalEndorsementCreate = { endorserMode: 'external'; endorserDid: string; endorsedTransaction?: never }\ntype ExternalEndorsementSubmit = { endorserMode: 'external'; endorserDid?: never; endorsedTransaction: string }\n\nexport interface IndyVdrRegisterSchemaInternalOptions {\n schema: AnonCredsSchema\n options: InternalEndorsement\n}\n\nexport interface IndyVdrRegisterSchemaExternalCreateOptions {\n schema: AnonCredsSchema\n options: ExternalEndorsementCreate\n}\n\nexport interface IndyVdrRegisterSchemaExternalSubmitOptions {\n schema: AnonCredsSchema\n options: ExternalEndorsementSubmit\n}\n\nexport interface IndyVdrRegisterSchemaReturnStateAction extends RegisterSchemaReturnStateAction {\n action: 'endorseIndyTransaction'\n schemaRequest: string\n}\n\nexport interface IndyVdrRegisterSchemaReturn extends RegisterSchemaReturn {\n schemaState:\n | RegisterSchemaReturnStateWait\n | IndyVdrRegisterSchemaReturnStateAction\n | RegisterSchemaReturnStateFinished\n | RegisterSchemaReturnStateFailed\n}\n\nexport type IndyVdrRegisterSchema =\n | IndyVdrRegisterSchemaInternalOptions\n | IndyVdrRegisterSchemaExternalCreateOptions\n | IndyVdrRegisterSchemaExternalSubmitOptions\n\nexport type IndyVdrRegisterSchemaOptions = IndyVdrRegisterSchema['options']\n\nexport interface IndyVdrRegisterCredentialDefinitionInternalOptions {\n credentialDefinition: AnonCredsCredentialDefinition\n options: InternalEndorsement\n}\n\nexport interface IndyVdrRegisterCredentialDefinitionExternalCreateOptions {\n credentialDefinition: AnonCredsCredentialDefinition\n options: ExternalEndorsementCreate\n}\n\nexport interface IndyVdrRegisterCredentialDefinitionExternalSubmitOptions {\n credentialDefinition: AnonCredsCredentialDefinition\n options: ExternalEndorsementSubmit\n}\n\nexport interface IndyVdrRegisterCredentialDefinitionReturnStateAction\n extends RegisterCredentialDefinitionReturnStateAction {\n action: 'endorseIndyTransaction'\n credentialDefinitionRequest: string\n}\n\nexport interface IndyVdrRegisterCredentialDefinitionReturn extends RegisterCredentialDefinitionReturn {\n credentialDefinitionState:\n | RegisterCredentialDefinitionReturnStateWait\n | IndyVdrRegisterCredentialDefinitionReturnStateAction\n | RegisterCredentialDefinitionReturnStateFinished\n | RegisterCredentialDefinitionReturnStateFailed\n}\n\nexport type IndyVdrRegisterCredentialDefinition =\n | IndyVdrRegisterCredentialDefinitionInternalOptions\n | IndyVdrRegisterCredentialDefinitionExternalCreateOptions\n | IndyVdrRegisterCredentialDefinitionExternalSubmitOptions\n\nexport type IndyVdrRegisterCredentialDefinitionOptions = IndyVdrRegisterCredentialDefinition['options']\n\nexport interface IndyVdrRegisterRevocationRegistryDefinitionInternalOptions {\n revocationRegistryDefinition: AnonCredsRevocationRegistryDefinition\n options: InternalEndorsement\n}\n\nexport interface IndyVdrRegisterRevocationRegistryDefinitionExternalCreateOptions {\n revocationRegistryDefinition: AnonCredsRevocationRegistryDefinition\n options: ExternalEndorsementCreate\n}\n\nexport interface IndyVdrRegisterRevocationRegistryDefinitionExternalSubmitOptions {\n revocationRegistryDefinition: AnonCredsRevocationRegistryDefinition\n options: ExternalEndorsementSubmit\n}\n\nexport interface IndyVdrRegisterRevocationRegistryDefinitionReturnStateAction\n extends RegisterRevocationRegistryDefinitionReturnStateAction {\n action: 'endorseIndyTransaction'\n revocationRegistryDefinitionRequest: string\n}\n\nexport interface IndyVdrRegisterRevocationRegistryDefinitionReturn extends RegisterRevocationRegistryDefinitionReturn {\n revocationRegistryDefinitionState:\n | IndyVdrRegisterRevocationRegistryDefinitionReturnStateAction\n | RegisterRevocationRegistryDefinitionReturnStateWait\n | RegisterRevocationRegistryDefinitionReturnStateFinished\n | RegisterRevocationRegistryDefinitionReturnStateFailed\n}\n\nexport type IndyVdrRegisterRevocationRegistryDefinition =\n | IndyVdrRegisterRevocationRegistryDefinitionInternalOptions\n | IndyVdrRegisterRevocationRegistryDefinitionExternalCreateOptions\n | IndyVdrRegisterRevocationRegistryDefinitionExternalSubmitOptions\n\nexport type IndyVdrRegisterRevocationRegistryDefinitionOptions = IndyVdrRegisterRevocationRegistryDefinition['options']\n\nexport interface IndyVdrRegisterRevocationStatusListInternalOptions extends RegisterRevocationStatusListOptions {\n options: InternalEndorsement\n}\n\nexport interface IndyVdrRegisterRevocationStatusListExternalCreateOptions extends RegisterRevocationStatusListOptions {\n options: ExternalEndorsementCreate\n}\n\nexport interface IndyVdrRegisterRevocationStatusListExternalSubmitOptions extends RegisterRevocationStatusListOptions {\n options: ExternalEndorsementSubmit\n}\n\nexport interface IndyVdrRegisterRevocationStatusListReturnStateAction\n extends RegisterRevocationStatusListReturnStateAction {\n action: 'endorseIndyTransaction'\n revocationStatusListRequest: string\n}\n\nexport interface IndyVdrRegisterRevocationStatusListReturn extends RegisterRevocationStatusListReturn {\n revocationStatusListState:\n | IndyVdrRegisterRevocationStatusListReturnStateAction\n | RegisterRevocationStatusListReturnStateWait\n | RegisterRevocationStatusListReturnStateFinished\n | RegisterRevocationStatusListReturnStateFailed\n}\n\nexport type IndyVdrRegisterRevocationStatusList =\n | IndyVdrRegisterRevocationStatusListInternalOptions\n | IndyVdrRegisterRevocationStatusListExternalCreateOptions\n | IndyVdrRegisterRevocationStatusListExternalSubmitOptions\n\nexport type IndyVdrRegisterRevocationStatusListOptions = IndyVdrRegisterRevocationStatusList['options']\n"],"mappings":";;;;;;;;;;;AAsEA,IAAa,2BAAb,MAAmE;;OACjD,aAAa;OAEb,sBAAsB;OAE/B,gBAAgB;OAChB,oBAAoB;;CAE3B,MAAa,UAAU,cAA4B,UAA4C;AAC7F,MAAI;GACF,MAAM,qBAAqB,aAAa,kBAAkB,QAAQ,mBAAmB;GAGrF,MAAM,EAAE,KAAK,qBAAqB,YAAY,kBAAkB,kBAAkB,SAAS;GAC3F,MAAM,EAAE,SAAS,MAAM,mBAAmB,cAAc,cAAc,IAAI;AAC1E,gBAAa,OAAO,OAAO,MAAM,mBAAmB,SAAS,iBAAiB,KAAK,cAAc,GAAG;GAIpG,MAAM,UAAU,IAAI,iBAAiB,EAAE,UADhB,uBAAuB,qBAAqB,YAAY,cAAc,EAC5B,CAAC;AAElE,gBAAa,OAAO,OAAO,MACzB,6CAA6C,SAAS,eAAe,KAAK,cAAc,GACzF;GACD,MAAM,WAAW,MAAM,KAAK,cAAc,QAAQ;AAElD,gBAAa,OAAO,OAAO,MAAM,yBAAyB,SAAS,iBAAiB,KAAK,cAAc,IAAI,EACzG,UACD,CAAC;AAEF,OAAI,EAAE,gBAAgB,SAAS,OAAO,OAAO;AAC3C,iBAAa,OAAO,OAAO,MAAM,4BAA4B,SAAS,GAAG;AAEzE,WAAO;KACL;KACA,oBAAoB;MAClB,OAAO;MACP,SAAS,iCAAiC;MAC3C;KACD,gBAAgB,EAAE;KACnB;;AAGH,UAAO;IACL,QAAQ;KACN,WAAW,SAAS,OAAO,KAAK;KAChC,MAAM,SAAS,OAAO,KAAK;KAC3B,SAAS,SAAS,OAAO,KAAK;KAC9B,UAAU;KACX;IACD;IACA,oBAAoB,EAAE;IACtB,gBAAgB;KACd,kBAAkB,KAAK;KAGvB,iBAAiB,SAAS,OAAO;KAClC;IACF;WACM,OAAO;AACd,gBAAa,OAAO,OAAO,MAAM,4BAA4B,SAAS,IAAI;IACxE;IACA;IACD,CAAC;AAEF,UAAO;IACL;IACA,oBAAoB,EAClB,OAAO,YACR;IACD,gBAAgB,EAAE;IACnB;;;CAIL,MAAa,eACX,cACA,SACsC;EACtC,MAAM,SAAS,QAAQ;EACvB,MAAM,EAAE,UAAU,MAAM,SAAS,cAAc;AAC/C,MAAI;GAIF,MAAM,EAAE,qBAAqB,cAAc,aAAa,SAAS;GACjE,MAAM,EAAE,aAAa,iBAAiB,QAAQ;GAG9C,MAAM,OAFqB,aAAa,kBAAkB,QAAQ,mBAAmB,CAErD,oBAAoB,UAAU;GAE9D,IAAIA;GACJ,MAAM,kBAAkB,mBAAmB,WAAW,qBAAqB,OAAO,MAAM,OAAO,QAAQ;GAEvG,MAAM,sBAAsB,QAAQ,QAAQ;AAC5C,OAAI,qBAAqB;AACvB,iBAAa,OAAO,OAAO,MACzB,0BAA0B,oBAAoB,8BAA8B,UAAU,cAAc,SAAS,IAC7G,OACD;AACD,mBAAe,IAAI,cAAc,EAAE,eAAe,qBAAqB,CAAC;UACnE;AACL,iBAAa,OAAO,OAAO,MAAM,+BAA+B,UAAU,cAAc,SAAS,IAAI,OAAO;IAG5G,MAAM,gBAAgB,IAAI,cAAc;KACtC,cAAc;KACd,QAAQ;MAAE,IAJW,uBAAuB,qBAAqB,MAAM,QAAQ;MAIjD;MAAM,KAAK;MAAO;MAAS;MAAW;KACrE,CAAC;IAEF,MAAM,eAAe,MAAM,gCAAgC,cAAc,SAAS;AAClF,mBAAe,MAAM,KAAK,oBACxB,cACA,eACA,cACA,gBAAgB,WAAW,cAAc,OAC1C;AAED,QAAI,iBAAiB,WACnB,QAAO;KACL,OAAO;KACP,aAAa;MACX,OAAO;MACP,QAAQ;MACR,UAAU;MACF;MACR,eAAe,aAAa;MAC7B;KACD,sBAAsB,EAAE;KACxB,gBAAgB,EAAE;KACnB;AAGH,QAAI,iBAAiB,cAAc,gBAAgB,UAAU;KAC3D,MAAM,cAAc,MAAM,gCAAgC,cAAc,YAAsB;AAC9F,WAAM,iBAAiB,cAAc,cAAc,aAAa,aAAa,YAAY,CAAC,oBAAoB;;;GAGlH,MAAM,WAAW,MAAM,KAAK,cAAc,aAAa;AAEvD,gBAAa,OAAO,OAAO,MAAM,sBAAsB,gBAAgB,eAAe,KAAK,cAAc,IAAI;IAC3G;IACA;IACD,CAAC;AAEF,UAAO;IACL,aAAa;KACX,OAAO;KACC;KACR,UAAU;KACX;IACD,sBAAsB,EAAE;IACxB,gBAAgB,EAId,iBAAkB,UAA6B,QAAQ,aAAa,OACrE;IACF;WACM,OAAO;AACd,gBAAa,OAAO,OAAO,MAAM,qCAAqC,SAAS,IAAI;IACjF;IACA,KAAK;IACG;IACT,CAAC;AAEF,UAAO;IACL,gBAAgB,EAAE;IAClB,sBAAsB,EAAE;IACxB,aAAa;KACX,OAAO;KACC;KACR,QAAQ,iBAAiB,MAAM;KAChC;IACF;;;CAIL,MAAa,wBACX,cACA,wBACwC;AACxC,MAAI;GACF,MAAM,qBAAqB,aAAa,kBAAkB,QAAQ,mBAAmB;GAGrF,MAAM,EAAE,KAAK,qBAAqB,aAAa,QAAQ,gCAAgC,uBAAuB;GAC9G,MAAM,EAAE,SAAS,MAAM,mBAAmB,cAAc,cAAc,IAAI;AAE1E,gBAAa,OAAO,OAAO,MACzB,kCAAkC,uBAAuB,iBAAiB,KAAK,cAAc,GAC9F;GAGD,MAAM,UAAU,IAAI,+BAA+B,EACjD,wBAFmC,qCAAqC,qBAAqB,aAAa,IAAI,EAG/G,CAAC;AAEF,gBAAa,OAAO,OAAO,MACzB,2EAA2E,uBAAuB,eAAe,KAAK,cAAc,GACrI;GACD,MAAM,WAAW,MAAM,KAAK,cAAc,QAAQ;GAGlD,MAAM,SAAS,MAAM,KAAK,yBAAyB,cAAc,SAAS,OAAO,KAAK,oBAAoB;AAE1G,OAAI,CAAC,UAAU,CAAC,SAAS,OAAO,MAAM;AACpC,iBAAa,OAAO,OAAO,MAAM,2CAA2C,uBAAuB,GAAG;AAEtG,WAAO;KACL;KACA,8BAA8B,EAAE;KAChC,oBAAoB;MAClB,OAAO;MACP,SAAS,mDAAmD;MAC7D;KACF;;AAQH,UAAO;IACL;IACA,sBAAsB;KACpB,UAAU;KACV,UARa,uBAAuB,WAAW,WAAW,GAC1D,mBAAmB,KAAK,eAAe,OAAO,OAAO,UAAU,OAAO,OAAO,MAAM,OAAO,OAAO,QAAQ,GACzG,OAAO,OAAO;KAOd,KAAK,SAAS,OAAO;KACrB,MAAM;KACN,OAAO,SAAS,OAAO;KACxB;IACD,8BAA8B,EAC5B,kBAAkB,KAAK,eACxB;IACD,oBAAoB,EAAE;IACvB;WACM,OAAO;AACd,gBAAa,OAAO,OAAO,MAAM,2CAA2C,uBAAuB,IAAI;IACrG;IACA;IACD,CAAC;AAEF,UAAO;IACL;IACA,8BAA8B,EAAE;IAChC,oBAAoB;KAClB,OAAO;KACP,SAAS,4CAA4C,MAAM;KAC5D;IACF;;;CAIL,MAAa,6BACX,cACA,SACoD;EACpD,MAAM,uBAAuB,QAAQ;EACrC,MAAM,EAAE,UAAU,UAAU,KAAK,UAAU;AAE3C,MAAI;GAGF,MAAM,EAAE,qBAAqB,cAAc,aAAa,SAAS;GACjE,MAAM,EAAE,aAAa,iBAAiB,QAAQ;GAE9C,MAAM,OADqB,aAAa,kBAAkB,QAAQ,mBAAmB,CACrD,oBAAoB,UAAU;AAE9D,gBAAa,OAAO,OAAO,MACzB,gDAAgD,UAAU,cAAc,SAAS,IACjF,QAAQ,qBACT;GAED,IAAIA;GACJ,IAAIC;GACJ,IAAIC;GAEJ,MAAM,sBAAsB,QAAQ,QAAQ;AAC5C,OAAI,qBAAqB;AACvB,iBAAa,OAAO,OAAO,MACzB,0BAA0B,oBAAoB,8BAA8B,UAAU,cAAc,SAAS,IAC7G,qBACD;AACD,mBAAe,IAAI,cAAc,EAAE,eAAe,qBAAqB,CAAC;IACxE,MAAM,YAAY,KAAK,MAAM,oBAAoB,EAAE;AAEnD,kBAAc,OAAO,WAAW,IAAI;AACpC,oCAAgC,iCAC9B,WACA,qBACA,aACA,IACD;UACI;IAGL,MAAM,EAAE,gBAAgB,uBAAuB,MADd,aAAa,QAAQ,yBAAyB,CACD,UAC5E,cACA,UACA,EAEE,gBAAgB,OACjB,CACF;AAED,QAAI,CAAC,gBAAgB,mBAAmB,OAAO,eAAe,oBAAoB,SAChF,QAAO;KACL,sBAAsB,EAAE;KACxB,8BAA8B,EAC5B,kBAAkB,KAAK,eACxB;KACD,2BAA2B;MACzB,sBAAsB,QAAQ;MAC9B,OAAO;MACP,QAAQ,kCAAkC,SAAS,IAAI,mBAAmB,MAAM,GAAG,mBAAmB;MACvG;KACF;AAEH,kBAAc,eAAe;IAQ7B,MAAM,+BAA+B,qCAAqC,UAAU,aAAa,IAAI;AACrG,oCAAgC,iCAC9B,WACA,qBACA,aACA,IACD;IAED,MAAM,8BAA8B,IAAI,4BAA4B;KAClE,cAAc;KACd,sBAAsB;MACpB,KAAK;MACL,IAAI;MACJ,UAAU,YAAY,UAAU;MAChC,MAAM;MACN;MACA;MACD;KACF,CAAC;IAEF,MAAM,eAAe,MAAM,gCAAgC,cAAc,SAAS;AAClF,mBAAe,MAAM,KAAK,oBACxB,cACA,6BACA,cACA,gBAAgB,WAAW,cAAc,OAC1C;AAED,QAAI,iBAAiB,WACnB,QAAO;KACL,OAAO;KACP,2BAA2B;MACzB,OAAO;MACP,QAAQ;MACc;MACtB,wBAAwB;MACxB,6BAA6B,aAAa;MAC3C;KACD,sBAAsB,EAAE;KACxB,8BAA8B,EAAE;KACjC;AAGH,QAAI,iBAAiB,cAAc,gBAAgB,UAAU;KAC3D,MAAM,cAAc,MAAM,gCAAgC,cAAc,YAAsB;AAC9F,WAAM,iBAAiB,cAAc,cAAc,aAAa,aAAa,YAAY,CAAC,oBAAoB;;;GAIlH,MAAM,WAAW,MAAM,KAAK,cAAc,aAAa;AACvD,gBAAa,OAAO,OAAO,MACzB,qCAAqC,8BAA8B,eAAe,KAAK,cAAc,IACrG;IACE;IACA,sBAAsB,QAAQ;IAC/B,CACF;AAED,UAAO;IACL,8BAA8B,EAAE;IAChC,2BAA2B;KACH;KACtB,wBAAwB;KACxB,OAAO;KACR;IACD,sBAAsB,EAAE;IACzB;WACM,OAAO;AACd,gBAAa,OAAO,OAAO,MAAM,uDAAuD,SAAS,IAAI;IACnG;IACA,KAAK;IACL,sBAAsB,QAAQ;IAC/B,CAAC;AAEF,UAAO;IACL,8BAA8B,EAAE;IAChC,sBAAsB,EAAE;IACxB,2BAA2B;KACzB,sBAAsB,QAAQ;KAC9B,OAAO;KACP,QAAQ,iBAAiB,MAAM;KAChC;IACF;;;CAIL,MAAa,gCACX,cACA,gCACgD;AAChD,MAAI;GACF,MAAM,qBAAqB,aAAa,kBAAkB,QAAQ,mBAAmB;GAErF,MAAM,EAAE,KAAK,qBAAqB,yBAAyB,uBAAuB,gBAChF,8BAA8B,+BAA+B;GAC/D,MAAM,EAAE,SAAS,MAAM,mBAAmB,cAAc,cAAc,IAAI;AAE1E,gBAAa,OAAO,OAAO,MACzB,iBAAiB,KAAK,cAAc,gDAAgD,+BAA+B,GACpH;GAQD,MAAM,UAAU,IAAI,uCAAuC,EACzD,sBAPiC,6CACjC,qBACA,aACA,yBACA,sBACD,EAGA,CAAC;AAEF,gBAAa,OAAO,OAAO,MACzB,6FAA6F,+BAA+B,aAC7H;GACD,MAAM,WAAW,MAAM,KAAK,cAAc,QAAQ;AAElD,OAAI,CAAC,SAAS,OAAO,MAAM;AACzB,iBAAa,OAAO,OAAO,MACzB,oDAAoD,+BAA+B,gBACnF,EACE,gCACD,CACF;AAED,WAAO;KACL,oBAAoB;MAClB,OAAO;MACP,SAAS;MACV;KACD;KACA,sCAAsC,EAAE;KACzC;;AAGH,gBAAa,OAAO,OAAO,MACzB,uCAAuC,+BAA+B,iBAAiB,KAAK,cAAc,IAC1G,EACE,UACD,CACF;GAED,MAAM,yBAAyB,+BAA+B,WAAW,YAAY,GACjF,iCACE,KAAK,eACL,qBACA,aACA,wBACD,GACD,qCAAqC,qBAAqB,aAAa,wBAAwB;AAmBnG,UAAO;IACL;IACA,8BAnBmC;KACnC,UAAU;KACV,cAAc,SAAS,OAAO,KAAK;KACnC,OAAO;MACL,YAAY,SAAS,OAAO,KAAK,MAAM;MACvC,WAAW,SAAS,OAAO,KAAK,MAAM;MACtC,eAAe,SAAS,OAAO,KAAK,MAAM;MAC1C,YAAY,EACV,UAAU,EACR,GAAG,SAAS,OAAO,KAAK,MAAM,WAAW,SAAS,GACnD,EACF;MACF;KACD,KAAK,SAAS,OAAO,KAAK;KAC1B,WAAW;KACZ;IAKC,sCAAsC;KACpC,cAAc,SAAS,OAAO,KAAK,MAAM;KACzC,kBAAkB,KAAK;KACxB;IACD,oBAAoB,EAAE;IACvB;WACM,OAAO;AACd,gBAAa,OAAO,OAAO,MACzB,oDAAoD,+BAA+B,gBACnF;IACE;IACA;IACD,CACF;AAED,UAAO;IACL,oBAAoB;KAClB,OAAO;KACP,SAAS,qDAAqD,MAAM;KACrE;IACD;IACA,sCAAsC,EAAE;IACzC;;;CAIL,MAAa,qCACX,cACA,EAAE,SAAS,gCACiD;AAC5D,MAAI;GAGF,MAAM,EAAE,qBAAqB,cAAc,aAAa,6BAA6B,SAAS;GAE9F,MAAM,OADqB,aAAa,kBAAkB,QAAQ,mBAAmB,CACrD,oBAAoB,UAAU;AAE9D,gBAAa,OAAO,OAAO,MACzB,yDAAyD,UAAU,cAAc,6BAA6B,SAAS,IACvH,6BACD;GAED,IAAIF;GACJ,IAAIG;GAEJ,MAAM,EAAE,aAAa,KAAK,4BAA4B,gCACpD,6BAA6B,UAC9B;GAED,MAAM,EAAE,qBAAqB,aAAa,iBAAiB;AAC3D,OAAI,qBAAqB;AACvB,iBAAa,OAAO,OAAO,MACzB,0BAA0B,oBAAoB,8BAA8B,UAAU,cAAc,6BAA6B,SAAS,IAC1I,6BACD;AACD,mBAAe,IAAI,cAAc,EAAE,eAAe,qBAAqB,CAAC;AACxE,4CAAwC,yCACtC,WACA,qBACA,aACA,yBACA,6BAA6B,IAC9B;UACI;IACL,MAAM,uCAAuC,6CAC3C,qBACA,aACA,yBACA,6BAA6B,IAC9B;AAED,4CAAwC,yCACtC,WACA,qBACA,aACA,yBACA,6BAA6B,IAC9B;IAQD,MAAM,sCAAsC,IAAI,oCAAoC;KAClF,cAAc;KACd,gCAAgC;MAC9B,IAAI;MACJ,KAAK;MACL,WAXiC,qCACnC,qBACA,aACA,wBACD;MAQG,KAAK,6BAA6B;MAClC,cAAc,6BAA6B;MAC3C,OAAO;OACL,cAAc;OACd,GAAG,6BAA6B;OACjC;MACF;KACF,CAAC;IAEF,MAAM,eAAe,MAAM,gCAAgC,cAAc,6BAA6B,SAAS;AAC/G,mBAAe,MAAM,KAAK,oBACxB,cACA,qCACA,cACA,gBAAgB,6BAA6B,WAAW,cAAc,OACvE;AAED,QAAI,iBAAiB,WACnB,QAAO;KACL,OAAO;KACP,mCAAmC;MACjC,OAAO;MACP,QAAQ;MACR;MACA,gCAAgC;MAChC,qCAAqC,aAAa;MACnD;KACD,sBAAsB,EAAE;KACxB,sCAAsC,EAAE;KACzC;AAGH,QAAI,iBAAiB,cAAc,gBAAgB,6BAA6B,UAAU;KACxF,MAAM,cAAc,MAAM,gCAAgC,cAAc,YAAsB;AAC9F,WAAM,iBAAiB,cAAc,cAAc,aAAa,aAAa,YAAY,CAAC,oBAAoB;;;GAIlH,MAAM,WAAW,MAAM,KAAK,cAAc,aAAa;AACvD,gBAAa,OAAO,OAAO,MACzB,8CAA8C,sCAAsC,eAAe,KAAK,cAAc,IACtH;IACE;IACA;IACD,CACF;AAED,UAAO;IACL,sCAAsC,EAAE;IACxC,mCAAmC;KACjC;KACA,gCAAgC;KAChC,OAAO;KACR;IACD,sBAAsB,EAAE;IACzB;WACM,OAAO;AACd,gBAAa,OAAO,OAAO,MACzB,+EAA+E,6BAA6B,UAAU,IACtH;IACE;IACA,KAAK,6BAA6B;IAClC;IACD,CACF;AAED,UAAO;IACL,sCAAsC,EAAE;IACxC,sBAAsB,EAAE;IACxB,mCAAmC;KACjC;KACA,OAAO;KACP,QAAQ,iBAAiB,MAAM;KAChC;IACF;;;CAIL,MAAa,wBACX,cACA,gCACA,WACwC;AACxC,MAAI;GACF,MAAM,qBAAqB,aAAa,kBAAkB,QAAQ,mBAAmB;GAErF,MAAM,EAAE,QAAQ,8BAA8B,+BAA+B;GAC7E,MAAM,EAAE,SAAS,MAAM,mBAAmB,cAAc,cAAc,IAAI;GAE1E,MAAM,kBAAkB,MAAM,KAAK,yBACjC,cACA,gCACA,UACD;AAED,OAAI,CAAC,gBACH,QAAO;IACL,oBAAoB;KAClB,OAAO;KACP,SAAS,+CAA+C,+BAA+B;KACxF;IACD,8BAA8B,EAAE;IACjC;GAIH,MAAM,EAAE,8BAA8B,oBAAoB,yCACxD,MAF+B,aAAa,QAAQ,yBAAyB,CAE9C,gCAAgC,cAAc,+BAA+B;AAE9G,OACE,CAAC,gCACD,CAAC,qCAAqC,gBACtC,OAAO,qCAAqC,iBAAiB,SAE7D,QAAO;IACL,oBAAoB,EAClB,OAAO,0DAA0D,+BAA+B,IAAI,mBAAmB,MAAM,GAAG,mBAAmB,WACpJ;IACD,8BAA8B,EAC5B,kBAAkB,KAAK,eACxB;IACF;AAKH,UAAO;IACL,oBAAoB,EAAE;IACtB,sBAAsB,yCACpB,gCACA,8BACA,iBAPwB,qCAAqC,iBAAiB,sBAS/E;IACD,8BAA8B,EAC5B,kBAAkB,KAAK,eACxB;IACF;WACM,OAAO;AACd,gBAAa,OAAO,OAAO,MACzB,+CAA+C,+BAA+B,4FAC9E;IACE;IACA,sBAAsB;IACvB,CACF;AAED,UAAO;IACL,oBAAoB;KAClB,OAAO;KACP,SAAS,+CAA+C,+BAA+B,2FAA2F,MAAM;KACzL;IACD,8BAA8B,EAAE;IACjC;;;CAIL,MAAa,6BACX,cACA,EAAE,SAAS,wBACyC;AACpD,MAAI;GAGF,MAAM,EAAE,qBAAqB,aAAa,iBAAiB;GAC3D,MAAM,EAAE,qBAAqB,cAAc,aAAa,qBAAqB,SAAS;GAEtF,MAAM,OADqB,aAAa,kBAAkB,QAAQ,mBAAmB,CACrD,oBAAoB,UAAU;AAE9D,gBAAa,OAAO,OAAO,MACzB,iDAAiD,UAAU,cAAc,qBAAqB,SAAS,IACvG,qBACD;GAED,IAAIH;GAGJ,MAAM,EACJ,aACA,yBACA,qBAAqB,uCACrB,uBACA,WAAW,gCACT,8BAA8B,qBAAqB,YAAY;GAEnE,MAAM,uCAAuC,6CAC3C,qBACA,aACA,yBACA,sBACD;GAED,MAAM,mCAAmC,oCACvC,WACA,qBACA,aACA,yBACA,sBACD;AAED,OAAI,+BAA+B,gCAAgC,UACjE,OAAM,IAAI,WACR,cAAc,qBAAqB,SAAS,sCAAsC,UAAU,2CAA2C,4BAA4B,GACpK;AAGH,OAAI,0CAA0C,oBAC5C,OAAM,IAAI,WACR,kHAAkH,sCAAsC,uBAAuB,oBAAoB,GACpM;AAGH,OAAI,qBAAqB;AACvB,iBAAa,OAAO,OAAO,MACzB,0BAA0B,oBAAoB,8BAA8B,UAAU,cAAc,qBAAqB,SAAS,IAClI,qBACD;AAED,mBAAe,IAAI,cAAc,EAAE,eAAe,qBAAqB,CAAC;UACnE;IACL,MAAM,gBAAgB,MAAM,KAAK,yBAC/B,cACA,sCAEA,gCAAgB,IAAI,MAAM,CAAC,CAC5B;IAQD,MAAM,sCAAsC,IAAI,+BAA+B;KAC7E,cAAc;KACd,yBAAyB;MACvB,KAAK;MACL,OAV2C,mCAC7C,qBAAqB,oBACrB,qBAAqB,gBACrB,iBAAiB,OAClB;MAOE;KACD,kCAAkC;KAClC,gCAAgC;KACjC,CAAC;IAEF,MAAM,eAAe,MAAM,gCAAgC,cAAc,qBAAqB,SAAS;AACvG,mBAAe,MAAM,KAAK,oBACxB,cACA,qCACA,cACA,gBAAgB,qBAAqB,WAAW,cAAc,OAC/D;AAED,QAAI,iBAAiB,WACnB,QAAO;KACL,OAAO;KACP,2BAA2B;MACzB,OAAO;MACP,QAAQ;MACR;MACA,6BAA6B,aAAa;MAC3C;KACD,sBAAsB,EAAE;KACxB,8BAA8B,EAAE;KACjC;AAGH,QAAI,iBAAiB,cAAc,gBAAgB,qBAAqB,UAAU;KAChF,MAAM,cAAc,MAAM,gCAAgC,cAAc,YAAsB;AAC9F,WAAM,iBAAiB,cAAc,cAAc,aAAa,aAAa,YAAY,CAAC,oBAAoB;;;GAIlH,MAAM,WAAW,MAAM,KAAK,cAC1B,aACD;AACD,gBAAa,OAAO,OAAO,MACzB,sCAAsC,iCAAiC,eAAe,KAAK,cAAc,IACzG;IACE;IACA;IACD,CACF;AAED,UAAO;IACL,8BAA8B,EAAE;IAChC,2BAA2B;KACzB,sBAAsB;MACpB,GAAG;MACH,WAAW,SAAS,OAAO,YAAY;MACxC;KACD,OAAO;KACR;IACD,sBAAsB,EAAE;IACzB;WACM,OAAO;AACd,gBAAa,OAAO,OAAO,MACzB,gFAAgF,qBAAqB,YAAY,KACjH;IACE;IACA,KAAK,qBAAqB;IAC3B,CACF;AAED,UAAO;IACL,sBAAsB,EAAE;IACxB,8BAA8B,EAAE;IAChC,2BAA2B;KACzB;KACA,OAAO;KACP,QAAQ,iBAAiB,MAAM;KAChC;IACF;;;CAIL,MAAc,yBAAyB,cAA4B,OAAe,KAAa;EAG7F,MAAM,EAAE,SAAS,MAFU,aAAa,kBAAkB,QAAQ,mBAAmB,CAE3C,cAAc,cAAc,IAAI;AAE1E,eAAa,OAAO,OAAO,MAAM,mCAAmC,MAAM,iBAAiB,KAAK,cAAc,GAAG;EAEjH,MAAM,UAAU,IAAI,sBAAsB;GAAE,YAAY;GAAG;GAAO,CAAC;AAEnE,eAAa,OAAO,OAAO,MAAM,iDAAiD,KAAK,cAAc,GAAG;EACxG,MAAM,WAAW,MAAM,KAAK,cAAc,QAAQ;AAElD,MAAI,SAAS,OAAO,MAAM,IAAI,SAAS,OAAO;AAC5C,gBAAa,OAAO,OAAO,MAAM,+CAA+C,MAAM,GAAG;AACzF,UAAO;;EAGT,MAAM,SAAS,SAAS,OAAO,MAAM,IAAI;EACzC,MAAM,YAAY,SAAS,OAAO,MAAM,IAAI,SAAS;AAGrD,SAAO;GACL,QAAQ;IACN,UAJa,uBAAuB,WAAW,OAAO,KAAK,MAAM,OAAO,KAAK,QAAQ;IAKrF,WAAW,OAAO,KAAK;IACvB,MAAM,OAAO,KAAK;IAClB,SAAS,OAAO,KAAK;IACrB,UAAU;IACV;IACD;GACD,eAAe,KAAK;GACrB;;CAGH,MAAc,yBACZ,cACA,gCACA,MACyC;EACzC,MAAM,qBAAqB,aAAa,kBAAkB,QAAQ,mBAAmB;EAErF,MAAM,EAAE,KAAK,qBAAqB,aAAa,yBAAyB,0BACtE,8BAA8B,+BAA+B;EAC/D,MAAM,EAAE,SAAS,MAAM,mBAAmB,cAAc,cAAc,IAAI;AAE1E,eAAa,OAAO,OAAO,MACzB,iBAAiB,KAAK,cAAc,mFAAmF,+BAA+B,UAAU,OACjK;EASD,MAAM,eAAe,IAAI,kCAAkC;GACzD;GACA,cAAc;GACd,sBAV2C,6CAC3C,qBACA,aACA,yBACA,sBACD;GAMA,CAAC;AAEF,eAAa,OAAO,OAAO,MAAM,iDAAiD,KAAK,cAAc,GAAG;EAExG,MAAM,EACJ,QAAQ,EAAE,MAAM,MAAM,cAFP,MAAM,KAAK,cAAc,aAAa;AAMvD,MAAI,SAAS,SAAS,SAAS,QAAQ,CAAC,SAAS;AAC/C,gBAAa,OAAO,OAAO,KACzB,4EAA4E,+BAA+B,iBAAiB,KAAK,cAAc,GAChJ;AACD,UAAO;;AAGT,SAAO;GACL,SAAS,KAAK,MAAM;GACpB,QAAQ,KAAK,MAAM;GACnB,OAAO,KAAK,MAAM,SAAS,MAAM;GACjC;GACD"}
@@ -0,0 +1 @@
1
+ import { IndyVdrAnonCredsRegistry, IndyVdrRegisterCredentialDefinition, IndyVdrRegisterCredentialDefinitionExternalCreateOptions, IndyVdrRegisterCredentialDefinitionExternalSubmitOptions, IndyVdrRegisterCredentialDefinitionInternalOptions, IndyVdrRegisterCredentialDefinitionOptions, IndyVdrRegisterCredentialDefinitionReturn, IndyVdrRegisterCredentialDefinitionReturnStateAction, IndyVdrRegisterRevocationRegistryDefinition, IndyVdrRegisterRevocationRegistryDefinitionExternalCreateOptions, IndyVdrRegisterRevocationRegistryDefinitionExternalSubmitOptions, IndyVdrRegisterRevocationRegistryDefinitionInternalOptions, IndyVdrRegisterRevocationRegistryDefinitionOptions, IndyVdrRegisterRevocationRegistryDefinitionReturn, IndyVdrRegisterRevocationRegistryDefinitionReturnStateAction, IndyVdrRegisterRevocationStatusList, IndyVdrRegisterRevocationStatusListExternalCreateOptions, IndyVdrRegisterRevocationStatusListExternalSubmitOptions, IndyVdrRegisterRevocationStatusListInternalOptions, IndyVdrRegisterRevocationStatusListOptions, IndyVdrRegisterRevocationStatusListReturn, IndyVdrRegisterRevocationStatusListReturnStateAction, IndyVdrRegisterSchema, IndyVdrRegisterSchemaExternalCreateOptions, IndyVdrRegisterSchemaExternalSubmitOptions, IndyVdrRegisterSchemaInternalOptions, IndyVdrRegisterSchemaOptions, IndyVdrRegisterSchemaReturn, IndyVdrRegisterSchemaReturnStateAction } from "./IndyVdrAnonCredsRegistry.mjs";
@@ -0,0 +1 @@
1
+ import { IndyVdrAnonCredsRegistry } from "./IndyVdrAnonCredsRegistry.mjs";
@@ -0,0 +1,29 @@
1
+ import { didIndyCredentialDefinitionIdRegex, didIndyRegex, didIndyRevocationRegistryIdRegex, didIndySchemaIdRegex, unqualifiedCredentialDefinitionIdRegex, unqualifiedRevocationRegistryIdRegex, unqualifiedSchemaIdRegex } from "@credo-ts/anoncreds";
2
+
3
+ //#region src/anoncreds/utils/identifiers.ts
4
+ const indyVdrAnonCredsRegexes = [
5
+ didIndyRegex,
6
+ didIndySchemaIdRegex,
7
+ unqualifiedSchemaIdRegex,
8
+ didIndyCredentialDefinitionIdRegex,
9
+ unqualifiedCredentialDefinitionIdRegex,
10
+ unqualifiedRevocationRegistryIdRegex,
11
+ didIndyRevocationRegistryIdRegex
12
+ ];
13
+ const indyVdrAnonCredsRegistryIdentifierRegex = new RegExp(indyVdrAnonCredsRegexes.map((r) => r.source).join("|"));
14
+ function getDidIndySchemaId(namespace, unqualifiedDid, name, version) {
15
+ return `did:indy:${namespace}:${unqualifiedDid}/anoncreds/v0/SCHEMA/${name}/${version}`;
16
+ }
17
+ function getDidIndyCredentialDefinitionId(namespace, unqualifiedDid, schemaSeqNo, tag) {
18
+ return `did:indy:${namespace}:${unqualifiedDid}/anoncreds/v0/CLAIM_DEF/${schemaSeqNo}/${tag}`;
19
+ }
20
+ function getDidIndyRevocationRegistryDefinitionId(namespace, unqualifiedDid, schemaSeqNo, credentialDefinitionTag, revocationRegistryTag) {
21
+ return `did:indy:${namespace}:${unqualifiedDid}/anoncreds/v0/REV_REG_DEF/${schemaSeqNo}/${credentialDefinitionTag}/${revocationRegistryTag}`;
22
+ }
23
+ function getDidIndyRevocationRegistryEntryId(namespace, unqualifiedDid, schemaSeqNo, credentialDefinitionTag, revocationRegistryTag) {
24
+ return `did:indy:${namespace}:${unqualifiedDid}/anoncreds/v0/REV_REG_ENTRY/${schemaSeqNo}/${credentialDefinitionTag}/${revocationRegistryTag}`;
25
+ }
26
+
27
+ //#endregion
28
+ export { getDidIndyCredentialDefinitionId, getDidIndyRevocationRegistryDefinitionId, getDidIndyRevocationRegistryEntryId, getDidIndySchemaId, indyVdrAnonCredsRegistryIdentifierRegex };
29
+ //# sourceMappingURL=identifiers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifiers.mjs","names":[],"sources":["../../../src/anoncreds/utils/identifiers.ts"],"sourcesContent":["import {\n didIndyCredentialDefinitionIdRegex,\n didIndyRegex,\n didIndyRevocationRegistryIdRegex,\n didIndySchemaIdRegex,\n unqualifiedCredentialDefinitionIdRegex,\n unqualifiedRevocationRegistryIdRegex,\n unqualifiedSchemaIdRegex,\n} from '@credo-ts/anoncreds'\n\n// combines both legacy and did:indy anoncreds identifiers and also the issuer id\nconst indyVdrAnonCredsRegexes = [\n // NOTE: we only include the qualified issuer id here, as we don't support registering objects based on legacy issuer ids.\n // you can still resolve using legacy issuer ids, but you need to use the full did:indy identifier when registering.\n // As we find a matching anoncreds registry based on the issuerId only when creating an object, this will make sure\n // it will throw an no registry found for identifier error.\n // issuer id\n didIndyRegex,\n\n // schema\n didIndySchemaIdRegex,\n unqualifiedSchemaIdRegex,\n\n // credential definition\n didIndyCredentialDefinitionIdRegex,\n unqualifiedCredentialDefinitionIdRegex,\n\n // revocation registry\n unqualifiedRevocationRegistryIdRegex,\n didIndyRevocationRegistryIdRegex,\n]\n\nexport const indyVdrAnonCredsRegistryIdentifierRegex = new RegExp(\n indyVdrAnonCredsRegexes.map((r) => r.source).join('|')\n)\n\nexport function getDidIndySchemaId(namespace: string, unqualifiedDid: string, name: string, version: string) {\n return `did:indy:${namespace}:${unqualifiedDid}/anoncreds/v0/SCHEMA/${name}/${version}`\n}\n\nexport function getDidIndyCredentialDefinitionId(\n namespace: string,\n unqualifiedDid: string,\n schemaSeqNo: string | number,\n tag: string\n) {\n return `did:indy:${namespace}:${unqualifiedDid}/anoncreds/v0/CLAIM_DEF/${schemaSeqNo}/${tag}`\n}\n\nexport function getDidIndyRevocationRegistryDefinitionId(\n namespace: string,\n unqualifiedDid: string,\n schemaSeqNo: string | number,\n credentialDefinitionTag: string,\n revocationRegistryTag: string\n) {\n return `did:indy:${namespace}:${unqualifiedDid}/anoncreds/v0/REV_REG_DEF/${schemaSeqNo}/${credentialDefinitionTag}/${revocationRegistryTag}`\n}\n\nexport function getDidIndyRevocationRegistryEntryId(\n namespace: string,\n unqualifiedDid: string,\n schemaSeqNo: string | number,\n credentialDefinitionTag: string,\n revocationRegistryTag: string\n) {\n return `did:indy:${namespace}:${unqualifiedDid}/anoncreds/v0/REV_REG_ENTRY/${schemaSeqNo}/${credentialDefinitionTag}/${revocationRegistryTag}`\n}\n"],"mappings":";;;AAWA,MAAM,0BAA0B;CAM9B;CAGA;CACA;CAGA;CACA;CAGA;CACA;CACD;AAED,MAAa,0CAA0C,IAAI,OACzD,wBAAwB,KAAK,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CACvD;AAED,SAAgB,mBAAmB,WAAmB,gBAAwB,MAAc,SAAiB;AAC3G,QAAO,YAAY,UAAU,GAAG,eAAe,uBAAuB,KAAK,GAAG;;AAGhF,SAAgB,iCACd,WACA,gBACA,aACA,KACA;AACA,QAAO,YAAY,UAAU,GAAG,eAAe,0BAA0B,YAAY,GAAG;;AAG1F,SAAgB,yCACd,WACA,gBACA,aACA,yBACA,uBACA;AACA,QAAO,YAAY,UAAU,GAAG,eAAe,4BAA4B,YAAY,GAAG,wBAAwB,GAAG;;AAGvH,SAAgB,oCACd,WACA,gBACA,aACA,yBACA,uBACA;AACA,QAAO,YAAY,UAAU,GAAG,eAAe,8BAA8B,YAAY,GAAG,wBAAwB,GAAG"}
@@ -0,0 +1,63 @@
1
+ import { CredoError } from "@credo-ts/core";
2
+
3
+ //#region src/anoncreds/utils/transform.ts
4
+ var RevocationState = /* @__PURE__ */ function(RevocationState$1) {
5
+ RevocationState$1[RevocationState$1["Active"] = 0] = "Active";
6
+ RevocationState$1[RevocationState$1["Revoked"] = 1] = "Revoked";
7
+ return RevocationState$1;
8
+ }(RevocationState || {});
9
+ function anonCredsRevocationStatusListFromIndyVdr(revocationRegistryDefinitionId, revocationRegistryDefinition, delta, isIssuanceByDefault) {
10
+ if (Math.max(...delta.issued, ...delta.revoked) > revocationRegistryDefinition.value.maxCredNum) throw new CredoError(`Highest delta index '${Math.max(...delta.issued, ...delta.revoked)}' is too large for the Revocation registry maxCredNum '${revocationRegistryDefinition.value.maxCredNum}' `);
11
+ const defaultState = isIssuanceByDefault ? RevocationState.Active : RevocationState.Revoked;
12
+ const revocationList = new Array(revocationRegistryDefinition.value.maxCredNum).fill(defaultState);
13
+ for (const issued of delta.issued ?? []) revocationList[issued] = RevocationState.Active;
14
+ for (const revoked of delta.revoked ?? []) revocationList[revoked] = RevocationState.Revoked;
15
+ return {
16
+ issuerId: revocationRegistryDefinition.issuerId,
17
+ currentAccumulator: delta.accum,
18
+ revRegDefId: revocationRegistryDefinitionId,
19
+ revocationList,
20
+ timestamp: delta.txnTime
21
+ };
22
+ }
23
+ /**
24
+ *
25
+ * Transforms the previous deltas and the full revocation status list into the latest delta
26
+ *
27
+ * ## Example
28
+ *
29
+ * input:
30
+ *
31
+ * revocationStatusList: [0, 1, 1, 1, 0, 0, 0, 1, 1, 0]
32
+ * previousDelta:
33
+ * - issued: [1, 2, 5, 8, 9]
34
+ * - revoked: [0, 3, 4, 6, 7]
35
+ *
36
+ * output:
37
+ * - issued: [5, 9]
38
+ * - revoked: [3, 7]
39
+ *
40
+ */
41
+ function indyVdrCreateLatestRevocationDelta(currentAccumulator, revocationStatusList, previousDelta) {
42
+ if (previousDelta && Math.max(...previousDelta.issued, ...previousDelta.revoked) > revocationStatusList.length - 1) throw new CredoError(`Indy Vdr delta contains an index '${Math.max(...previousDelta.revoked, ...previousDelta.issued)}' that exceeds the length of the revocation status list '${revocationStatusList.length}'`);
43
+ const issued = [];
44
+ const revoked = [];
45
+ if (previousDelta) revocationStatusList.forEach((revocationStatus, idx) => {
46
+ if (revocationStatus === RevocationState.Active && previousDelta.revoked.includes(idx)) issued.push(idx);
47
+ if (revocationStatus === RevocationState.Revoked && !previousDelta.revoked.includes(idx)) revoked.push(idx);
48
+ });
49
+ else revocationStatusList.forEach((revocationStatus, idx) => {
50
+ if (revocationStatus === RevocationState.Active) issued.push(idx);
51
+ if (revocationStatus === RevocationState.Revoked) revoked.push(idx);
52
+ });
53
+ return {
54
+ issued,
55
+ revoked,
56
+ accum: currentAccumulator,
57
+ prevAccum: previousDelta?.accum
58
+ };
59
+ }
60
+
61
+ //#endregion
62
+ export { anonCredsRevocationStatusListFromIndyVdr, indyVdrCreateLatestRevocationDelta };
63
+ //# sourceMappingURL=transform.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.mjs","names":["issued: Array<number>","revoked: Array<number>"],"sources":["../../../src/anoncreds/utils/transform.ts"],"sourcesContent":["import type { AnonCredsRevocationRegistryDefinition, AnonCredsRevocationStatusList } from '@credo-ts/anoncreds'\n\nimport { CredoError } from '@credo-ts/core'\n\nexport type RevocationRegistryDelta = {\n accum: string\n issued: number[]\n revoked: number[]\n txnTime: number\n}\n\nenum RevocationState {\n Active = 0,\n Revoked = 1,\n}\n\nexport function anonCredsRevocationStatusListFromIndyVdr(\n revocationRegistryDefinitionId: string,\n revocationRegistryDefinition: AnonCredsRevocationRegistryDefinition,\n delta: RevocationRegistryDelta,\n isIssuanceByDefault: boolean\n): AnonCredsRevocationStatusList {\n // Check whether the highest delta index is supported in the `maxCredNum` field of the\n // revocation registry definition. This will likely also be checked on other levels as well\n // by the ledger or the indy-vdr library itself\n if (Math.max(...delta.issued, ...delta.revoked) > revocationRegistryDefinition.value.maxCredNum) {\n throw new CredoError(\n `Highest delta index '${Math.max(\n ...delta.issued,\n ...delta.revoked\n )}' is too large for the Revocation registry maxCredNum '${revocationRegistryDefinition.value.maxCredNum}' `\n )\n }\n\n // 0 means unrevoked, 1 means revoked\n const defaultState = isIssuanceByDefault ? RevocationState.Active : RevocationState.Revoked\n\n // Fill with default value\n const revocationList = new Array(revocationRegistryDefinition.value.maxCredNum).fill(defaultState)\n\n // Set all `issuer` indexes to 0 (not revoked)\n for (const issued of delta.issued ?? []) {\n revocationList[issued] = RevocationState.Active\n }\n\n // Set all `revoked` indexes to 1 (revoked)\n for (const revoked of delta.revoked ?? []) {\n revocationList[revoked] = RevocationState.Revoked\n }\n\n return {\n issuerId: revocationRegistryDefinition.issuerId,\n currentAccumulator: delta.accum,\n revRegDefId: revocationRegistryDefinitionId,\n revocationList,\n timestamp: delta.txnTime,\n }\n}\n\n/**\n *\n * Transforms the previous deltas and the full revocation status list into the latest delta\n *\n * ## Example\n *\n * input:\n *\n * revocationStatusList: [0, 1, 1, 1, 0, 0, 0, 1, 1, 0]\n * previousDelta:\n * - issued: [1, 2, 5, 8, 9]\n * - revoked: [0, 3, 4, 6, 7]\n *\n * output:\n * - issued: [5, 9]\n * - revoked: [3, 7]\n *\n */\nexport function indyVdrCreateLatestRevocationDelta(\n currentAccumulator: string,\n revocationStatusList: Array<number>,\n previousDelta?: RevocationRegistryDelta\n) {\n if (previousDelta && Math.max(...previousDelta.issued, ...previousDelta.revoked) > revocationStatusList.length - 1) {\n throw new CredoError(\n `Indy Vdr delta contains an index '${Math.max(\n ...previousDelta.revoked,\n ...previousDelta.issued\n )}' that exceeds the length of the revocation status list '${revocationStatusList.length}'`\n )\n }\n\n const issued: Array<number> = []\n const revoked: Array<number> = []\n\n if (previousDelta) {\n revocationStatusList.forEach((revocationStatus, idx) => {\n // If the current status is Active and this index was previously revoked, it means the credential was just unrevoked, so add it to the issued list\n if (revocationStatus === RevocationState.Active && previousDelta.revoked.includes(idx)) {\n issued.push(idx)\n }\n\n // Check whether the revocationStatusList entry is not included in the previous delta revoked indices\n if (revocationStatus === RevocationState.Revoked && !previousDelta.revoked.includes(idx)) {\n revoked.push(idx)\n }\n })\n } else {\n // No delta is provided, initial state, so the entire revocation status list is converted to two list of indices\n revocationStatusList.forEach((revocationStatus, idx) => {\n if (revocationStatus === RevocationState.Active) issued.push(idx)\n if (revocationStatus === RevocationState.Revoked) revoked.push(idx)\n })\n }\n\n return {\n issued,\n revoked,\n accum: currentAccumulator,\n prevAccum: previousDelta?.accum,\n }\n}\n"],"mappings":";;;AAWA,IAAK,8DAAL;AACE;AACA;;EAFG;AAKL,SAAgB,yCACd,gCACA,8BACA,OACA,qBAC+B;AAI/B,KAAI,KAAK,IAAI,GAAG,MAAM,QAAQ,GAAG,MAAM,QAAQ,GAAG,6BAA6B,MAAM,WACnF,OAAM,IAAI,WACR,wBAAwB,KAAK,IAC3B,GAAG,MAAM,QACT,GAAG,MAAM,QACV,CAAC,yDAAyD,6BAA6B,MAAM,WAAW,IAC1G;CAIH,MAAM,eAAe,sBAAsB,gBAAgB,SAAS,gBAAgB;CAGpF,MAAM,iBAAiB,IAAI,MAAM,6BAA6B,MAAM,WAAW,CAAC,KAAK,aAAa;AAGlG,MAAK,MAAM,UAAU,MAAM,UAAU,EAAE,CACrC,gBAAe,UAAU,gBAAgB;AAI3C,MAAK,MAAM,WAAW,MAAM,WAAW,EAAE,CACvC,gBAAe,WAAW,gBAAgB;AAG5C,QAAO;EACL,UAAU,6BAA6B;EACvC,oBAAoB,MAAM;EAC1B,aAAa;EACb;EACA,WAAW,MAAM;EAClB;;;;;;;;;;;;;;;;;;;;AAqBH,SAAgB,mCACd,oBACA,sBACA,eACA;AACA,KAAI,iBAAiB,KAAK,IAAI,GAAG,cAAc,QAAQ,GAAG,cAAc,QAAQ,GAAG,qBAAqB,SAAS,EAC/G,OAAM,IAAI,WACR,qCAAqC,KAAK,IACxC,GAAG,cAAc,SACjB,GAAG,cAAc,OAClB,CAAC,2DAA2D,qBAAqB,OAAO,GAC1F;CAGH,MAAMA,SAAwB,EAAE;CAChC,MAAMC,UAAyB,EAAE;AAEjC,KAAI,cACF,sBAAqB,SAAS,kBAAkB,QAAQ;AAEtD,MAAI,qBAAqB,gBAAgB,UAAU,cAAc,QAAQ,SAAS,IAAI,CACpF,QAAO,KAAK,IAAI;AAIlB,MAAI,qBAAqB,gBAAgB,WAAW,CAAC,cAAc,QAAQ,SAAS,IAAI,CACtF,SAAQ,KAAK,IAAI;GAEnB;KAGF,sBAAqB,SAAS,kBAAkB,QAAQ;AACtD,MAAI,qBAAqB,gBAAgB,OAAQ,QAAO,KAAK,IAAI;AACjE,MAAI,qBAAqB,gBAAgB,QAAS,SAAQ,KAAK,IAAI;GACnE;AAGJ,QAAO;EACL;EACA;EACA,OAAO;EACP,WAAW,eAAe;EAC3B"}
@@ -0,0 +1,92 @@
1
+ import { AgentContext, DidCreateOptions, DidCreateResult, DidDeactivateResult, DidDocument, DidDocumentKey, DidDocumentService, DidOperationStateActionBase, DidRegistrar, DidUpdateResult, Kms } from "@credo-ts/core";
2
+
3
+ //#region src/dids/IndyVdrIndyDidRegistrar.d.ts
4
+ declare class IndyVdrIndyDidRegistrar implements DidRegistrar {
5
+ readonly supportedMethods: string[];
6
+ private didCreateActionResult;
7
+ private didCreateFailedResult;
8
+ private didCreateFinishedResult;
9
+ parseInput(agentContext: AgentContext, options: IndyVdrDidCreateOptions): Promise<ParseInputResult>;
10
+ saveDidRecord(agentContext: AgentContext, did: string, didDocument: DidDocument, keys: DidDocumentKey[]): Promise<void>;
11
+ getDidDocumentFromRecord(agentContext: AgentContext, did: string): Promise<DidDocument>;
12
+ private createDidDocument;
13
+ create(agentContext: AgentContext, options: IndyVdrDidCreateOptions): Promise<IndyVdrDidCreateResult>;
14
+ update(): Promise<DidUpdateResult>;
15
+ deactivate(): Promise<DidDeactivateResult>;
16
+ private createRegisterDidWriteRequest;
17
+ private registerPublicDid;
18
+ private createSetDidEndpointsRequest;
19
+ private setEndpointsForDid;
20
+ }
21
+ interface IndyVdrDidCreateOptionsWithoutDid extends DidCreateOptions {
22
+ didDocument?: never;
23
+ did?: never;
24
+ method: 'indy';
25
+ options: {
26
+ /**
27
+ * Optionally an existing keyId can be provided, in this case the did will be created
28
+ * based on the existing key
29
+ */
30
+ keyId?: string;
31
+ alias?: string;
32
+ role?: NymRequestRole;
33
+ services?: DidDocumentService[];
34
+ useEndpointAttrib?: boolean;
35
+ endorserDid: string;
36
+ endorserMode: 'internal' | 'external';
37
+ endorsedTransaction?: never;
38
+ };
39
+ }
40
+ interface IndyVdrDidCreateOptionsForSubmission extends DidCreateOptions {
41
+ didDocument?: never;
42
+ did: string;
43
+ method?: never;
44
+ options: {
45
+ endorserMode: 'external';
46
+ endorsedTransaction: {
47
+ nymRequest: string;
48
+ attribRequest?: string;
49
+ };
50
+ };
51
+ }
52
+ type IndyVdrDidCreateOptions = IndyVdrDidCreateOptionsWithoutDid | IndyVdrDidCreateOptionsForSubmission;
53
+ type ParseInputOkEndorsedTransaction = {
54
+ status: 'ok';
55
+ did: string;
56
+ type: 'endorsedTransaction';
57
+ endorsedTransaction: IndyVdrDidCreateOptionsForSubmission['options']['endorsedTransaction'];
58
+ namespaceIdentifier: string;
59
+ namespace: string;
60
+ endorserNamespaceIdentifier: string;
61
+ };
62
+ type ParseInputOkCreate = {
63
+ status: 'ok';
64
+ type: 'create';
65
+ did: string;
66
+ verificationKey: Kms.PublicJwk<Kms.Ed25519PublicJwk>;
67
+ namespaceIdentifier: string;
68
+ namespace: string;
69
+ endorserNamespaceIdentifier: string;
70
+ endorserDid: string;
71
+ alias?: string;
72
+ role?: NymRequestRole;
73
+ services?: DidDocumentService[];
74
+ useEndpointAttrib?: boolean;
75
+ };
76
+ type parseInputError = {
77
+ status: 'error';
78
+ reason: string;
79
+ };
80
+ type ParseInputResult = ParseInputOkEndorsedTransaction | ParseInputOkCreate | parseInputError;
81
+ interface EndorseDidTxAction extends DidOperationStateActionBase {
82
+ action: 'endorseIndyTransaction';
83
+ endorserDid: string;
84
+ nymRequest: string;
85
+ attribRequest?: string;
86
+ did: string;
87
+ }
88
+ type IndyVdrDidCreateResult = DidCreateResult<EndorseDidTxAction>;
89
+ type NymRequestRole = 'STEWARD' | 'TRUSTEE' | 'ENDORSER' | 'NETWORK_MONITOR';
90
+ //#endregion
91
+ export { IndyVdrDidCreateOptions, IndyVdrDidCreateResult, IndyVdrIndyDidRegistrar };
92
+ //# sourceMappingURL=IndyVdrIndyDidRegistrar.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndyVdrIndyDidRegistrar.d.mts","names":[],"sources":["../../src/dids/IndyVdrIndyDidRegistrar.ts"],"sourcesContent":[],"mappings":";;;cAwCa,uBAAA,YAAmC;EAAnC,SAAA,gBAAA,EAAwB,MAAA,EAAA;EAuDG,QAAA,qBAAA;EAAuB,QAAA,qBAAA;EAAkC,QAAA,uBAAA;EAAR,UAAA,CAAA,YAAA,EAAjD,YAAiD,EAAA,OAAA,EAA1B,uBAA0B,CAAA,EAAA,OAAA,CAAQ,gBAAR,CAAA;EAuEvE,aAAA,CAAA,YAAA,EAAA,YAAA,EAAA,GAAA,EAAA,MAAA,EAAA,WAAA,EAED,WAFC,EAAA,IAAA,EAGR,cAHQ,EAAA,CAAA,EAIb,OAJa,CAAA,IAAA,CAAA;EAED,wBAAA,CAAA,YAAA,EAeqC,YAfrC,EAAA,GAAA,EAAA,MAAA,CAAA,EAeiE,OAfjE,CAeyE,WAfzE,CAAA;EACP,QAAA,iBAAA;EACL,MAAA,CAAA,YAAA,EAoG+B,YApG/B,EAAA,OAAA,EAoGsD,uBApGtD,CAAA,EAoGgF,OApGhF,CAoGwF,sBApGxF,CAAA;EAaiD,MAAA,CAAA,CAAA,EA2M7B,OA3M6B,CA2MrB,eA3MqB,CAAA;EAAoC,UAAA,CAAA,CAAA,EAsN7D,OAtN6D,CAsNrD,mBAtNqD,CAAA;EAAR,QAAA,6BAAA;EAuF9C,QAAA,iBAAA;EAAuB,QAAA,4BAAA;EAAkC,QAAA,kBAAA;;UAqPnF,iCAAA,SAA0C,gBAjInB,CAAA;EAAR,WAAA,CAAA,EAAA,KAAA;EAWY,GAAA,CAAA,EAAA,KAAA;EAAR,MAAA,EAAA,MAAA;EArWmB,OAAA,EAAA;IAAY;AAyd3D;;;IAEmD,KAAA,CAAA,EAAA,MAAA;IAAgB,KAAA,CAAA,EAAA,MAAA;IA2B1D,IAAA,CAAA,EAfC,cAeD;IAgBE,QAAA,CAAA,EA9BG,kBA8BoB,EAAA;IAE9B,iBAAA,CAAA,EAAA,OAAA;IAUA,WAAA,EAAA,MAAkB;IAIc,YAAA,EAAA,UAAA,GAAA,UAAA;IAAd,mBAAA,CAAA,EAAA,KAAA;EAMd,CAAA;;UAtCC,oCAAA,SAA6C,gBAuCxB,CAAA;EAI1B,WAAA,CAAA,EAAA,KAAe;EAEf,GAAA,EAAA,MAAA;EAAmB,MAAA,CAAA,EAAA,KAAA;EAAkC,OAAA,EAAA;IAAqB,YAAA,EAAA,UAAA;IAAe,mBAAA,EAAA;MAE7E,UAAA,EAAA,MAAmB;MAQxB,aAAA,CAAA,EAAA,MAAsB;IAEtB,CAAA;;;KAzCA,uBAAA,GAA0B,oCAAoC;KAErE,+BAAA;;;;uBAIkB;;;;;KAMlB,kBAAA;;;;mBAIc,GAAA,CAAI,UAAU,GAAA,CAAI;;;;;;SAM5B;aACI;;;KAIR,eAAA;;;;KAEA,gBAAA,GAAmB,kCAAkC,qBAAqB;UAE9D,kBAAA,SAA2B;;;;;;;KAQhC,sBAAA,GAAyB,gBAAgB;KAEzC,cAAA"}