@brightchain/brightchain-lib 0.14.0 → 0.16.0

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 (580) hide show
  1. package/brightchain-lib/BROWSER_COMPAT.md +54 -0
  2. package/package.json +16 -4
  3. package/src/lib/blocks/cblBase.d.ts +16 -1
  4. package/src/lib/blocks/cblBase.d.ts.map +1 -1
  5. package/src/lib/blocks/cblBase.js +33 -4
  6. package/src/lib/blocks/cblBase.js.map +1 -1
  7. package/src/lib/blocks/extendedCbl.d.ts.map +1 -1
  8. package/src/lib/blocks/extendedCbl.js +2 -1
  9. package/src/lib/blocks/extendedCbl.js.map +1 -1
  10. package/src/lib/blocks/handle.d.ts +5 -0
  11. package/src/lib/blocks/handle.d.ts.map +1 -1
  12. package/src/lib/blocks/handle.js.map +1 -1
  13. package/src/lib/blocks/handleTuple.d.ts +9 -1
  14. package/src/lib/blocks/handleTuple.d.ts.map +1 -1
  15. package/src/lib/blocks/handleTuple.js +23 -1
  16. package/src/lib/blocks/handleTuple.js.map +1 -1
  17. package/src/lib/blocks/index.d.ts +1 -0
  18. package/src/lib/blocks/index.d.ts.map +1 -1
  19. package/src/lib/blocks/index.js +1 -0
  20. package/src/lib/blocks/index.js.map +1 -1
  21. package/src/lib/blocks/memoryTuple.d.ts +9 -2
  22. package/src/lib/blocks/memoryTuple.d.ts.map +1 -1
  23. package/src/lib/blocks/memoryTuple.js +12 -3
  24. package/src/lib/blocks/memoryTuple.js.map +1 -1
  25. package/src/lib/blocks/vcbl.d.ts +27 -0
  26. package/src/lib/blocks/vcbl.d.ts.map +1 -0
  27. package/src/lib/blocks/vcbl.js +107 -0
  28. package/src/lib/blocks/vcbl.js.map +1 -0
  29. package/src/lib/constants.d.ts +28 -1
  30. package/src/lib/constants.d.ts.map +1 -1
  31. package/src/lib/constants.js +28 -1
  32. package/src/lib/constants.js.map +1 -1
  33. package/src/lib/crypto/index.d.ts +12 -0
  34. package/src/lib/crypto/index.d.ts.map +1 -0
  35. package/src/lib/crypto/index.js +23 -0
  36. package/src/lib/crypto/index.js.map +1 -0
  37. package/src/lib/crypto/platformCrypto.d.ts +132 -0
  38. package/src/lib/crypto/platformCrypto.d.ts.map +1 -0
  39. package/src/lib/crypto/platformCrypto.js +181 -0
  40. package/src/lib/crypto/platformCrypto.js.map +1 -0
  41. package/src/lib/enumeration-translations/blockType.d.ts.map +1 -1
  42. package/src/lib/enumeration-translations/blockType.js +16 -0
  43. package/src/lib/enumeration-translations/blockType.js.map +1 -1
  44. package/src/lib/enumerations/blockType.d.ts +12 -0
  45. package/src/lib/enumerations/blockType.d.ts.map +1 -1
  46. package/src/lib/enumerations/blockType.js +14 -0
  47. package/src/lib/enumerations/blockType.js.map +1 -1
  48. package/src/lib/enumerations/brightChainStrings.d.ts +4 -0
  49. package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
  50. package/src/lib/enumerations/brightChainStrings.js +4 -0
  51. package/src/lib/enumerations/brightChainStrings.js.map +1 -1
  52. package/src/lib/enumerations/cblErrorType.d.ts +2 -1
  53. package/src/lib/enumerations/cblErrorType.d.ts.map +1 -1
  54. package/src/lib/enumerations/cblErrorType.js +1 -0
  55. package/src/lib/enumerations/cblErrorType.js.map +1 -1
  56. package/src/lib/enumerations/communication.d.ts +57 -0
  57. package/src/lib/enumerations/communication.d.ts.map +1 -0
  58. package/src/lib/enumerations/communication.js +89 -0
  59. package/src/lib/enumerations/communication.js.map +1 -0
  60. package/src/lib/enumerations/deviceType.d.ts +15 -0
  61. package/src/lib/enumerations/deviceType.d.ts.map +1 -0
  62. package/src/lib/enumerations/deviceType.js +19 -0
  63. package/src/lib/enumerations/deviceType.js.map +1 -0
  64. package/src/lib/enumerations/handleTupleErrorType.d.ts +2 -1
  65. package/src/lib/enumerations/handleTupleErrorType.d.ts.map +1 -1
  66. package/src/lib/enumerations/handleTupleErrorType.js +1 -0
  67. package/src/lib/enumerations/handleTupleErrorType.js.map +1 -1
  68. package/src/lib/enumerations/index.d.ts +6 -0
  69. package/src/lib/enumerations/index.d.ts.map +1 -1
  70. package/src/lib/enumerations/index.js +11 -0
  71. package/src/lib/enumerations/index.js.map +1 -1
  72. package/src/lib/enumerations/paperKeyPurpose.d.ts +15 -0
  73. package/src/lib/enumerations/paperKeyPurpose.d.ts.map +1 -0
  74. package/src/lib/enumerations/paperKeyPurpose.js +19 -0
  75. package/src/lib/enumerations/paperKeyPurpose.js.map +1 -0
  76. package/src/lib/enumerations/proofPlatform.d.ts +24 -0
  77. package/src/lib/enumerations/proofPlatform.d.ts.map +1 -0
  78. package/src/lib/enumerations/proofPlatform.js +28 -0
  79. package/src/lib/enumerations/proofPlatform.js.map +1 -0
  80. package/src/lib/enumerations/readConcern.d.ts +22 -0
  81. package/src/lib/enumerations/readConcern.d.ts.map +1 -0
  82. package/src/lib/enumerations/readConcern.js +26 -0
  83. package/src/lib/enumerations/readConcern.js.map +1 -0
  84. package/src/lib/enumerations/tupleErrorType.d.ts +2 -1
  85. package/src/lib/enumerations/tupleErrorType.d.ts.map +1 -1
  86. package/src/lib/enumerations/tupleErrorType.js +1 -0
  87. package/src/lib/enumerations/tupleErrorType.js.map +1 -1
  88. package/src/lib/enumerations/verificationStatus.d.ts +17 -0
  89. package/src/lib/enumerations/verificationStatus.d.ts.map +1 -0
  90. package/src/lib/enumerations/verificationStatus.js +21 -0
  91. package/src/lib/enumerations/verificationStatus.js.map +1 -0
  92. package/src/lib/errors/blockFetchError.d.ts +51 -0
  93. package/src/lib/errors/blockFetchError.d.ts.map +1 -0
  94. package/src/lib/errors/blockFetchError.js +63 -0
  95. package/src/lib/errors/blockFetchError.js.map +1 -0
  96. package/src/lib/errors/cblError.d.ts.map +1 -1
  97. package/src/lib/errors/cblError.js +1 -0
  98. package/src/lib/errors/cblError.js.map +1 -1
  99. package/src/lib/errors/handleTupleError.d.ts +10 -1
  100. package/src/lib/errors/handleTupleError.d.ts.map +1 -1
  101. package/src/lib/errors/handleTupleError.js +10 -1
  102. package/src/lib/errors/handleTupleError.js.map +1 -1
  103. package/src/lib/errors/index.d.ts +16 -0
  104. package/src/lib/errors/index.d.ts.map +1 -1
  105. package/src/lib/errors/index.js +22 -0
  106. package/src/lib/errors/index.js.map +1 -1
  107. package/src/lib/errors/poolDeletionError.d.ts +10 -0
  108. package/src/lib/errors/poolDeletionError.d.ts.map +1 -0
  109. package/src/lib/errors/poolDeletionError.js +16 -0
  110. package/src/lib/errors/poolDeletionError.js.map +1 -0
  111. package/src/lib/errors/poolDeletionTombstoneError.d.ts +12 -0
  112. package/src/lib/errors/poolDeletionTombstoneError.d.ts.map +1 -0
  113. package/src/lib/errors/poolDeletionTombstoneError.js +18 -0
  114. package/src/lib/errors/poolDeletionTombstoneError.js.map +1 -0
  115. package/src/lib/errors/tupleError.d.ts.map +1 -1
  116. package/src/lib/errors/tupleError.js +1 -0
  117. package/src/lib/errors/tupleError.js.map +1 -1
  118. package/src/lib/i18n/i18n-setup.d.ts +22 -18
  119. package/src/lib/i18n/i18n-setup.d.ts.map +1 -1
  120. package/src/lib/i18n/i18n-setup.js +58 -138
  121. package/src/lib/i18n/i18n-setup.js.map +1 -1
  122. package/src/lib/i18n/strings/englishUs.d.ts.map +1 -1
  123. package/src/lib/i18n/strings/englishUs.js +4 -0
  124. package/src/lib/i18n/strings/englishUs.js.map +1 -1
  125. package/src/lib/i18n/strings/french.d.ts.map +1 -1
  126. package/src/lib/i18n/strings/french.js +4 -0
  127. package/src/lib/i18n/strings/french.js.map +1 -1
  128. package/src/lib/i18n/strings/german.d.ts.map +1 -1
  129. package/src/lib/i18n/strings/german.js +4 -0
  130. package/src/lib/i18n/strings/german.js.map +1 -1
  131. package/src/lib/i18n/strings/japanese.d.ts.map +1 -1
  132. package/src/lib/i18n/strings/japanese.js +4 -0
  133. package/src/lib/i18n/strings/japanese.js.map +1 -1
  134. package/src/lib/i18n/strings/mandarin.d.ts.map +1 -1
  135. package/src/lib/i18n/strings/mandarin.js +4 -0
  136. package/src/lib/i18n/strings/mandarin.js.map +1 -1
  137. package/src/lib/i18n/strings/spanish.d.ts.map +1 -1
  138. package/src/lib/i18n/strings/spanish.js +4 -0
  139. package/src/lib/i18n/strings/spanish.js.map +1 -1
  140. package/src/lib/i18n/strings/ukrainian.d.ts.map +1 -1
  141. package/src/lib/i18n/strings/ukrainian.js +4 -0
  142. package/src/lib/i18n/strings/ukrainian.js.map +1 -1
  143. package/src/lib/index.d.ts +4 -0
  144. package/src/lib/index.d.ts.map +1 -1
  145. package/src/lib/index.js +4 -0
  146. package/src/lib/index.js.map +1 -1
  147. package/src/lib/interfaces/auth/index.d.ts +4 -0
  148. package/src/lib/interfaces/auth/index.d.ts.map +1 -0
  149. package/src/lib/interfaces/auth/index.js +8 -0
  150. package/src/lib/interfaces/auth/index.js.map +1 -0
  151. package/src/lib/interfaces/auth/nodeAuthenticator.d.ts +19 -0
  152. package/src/lib/interfaces/auth/nodeAuthenticator.d.ts.map +1 -0
  153. package/src/lib/interfaces/auth/nodeAuthenticator.js +3 -0
  154. package/src/lib/interfaces/auth/nodeAuthenticator.js.map +1 -0
  155. package/src/lib/interfaces/auth/poolAcl.d.ts +65 -0
  156. package/src/lib/interfaces/auth/poolAcl.d.ts.map +1 -0
  157. package/src/lib/interfaces/auth/poolAcl.js +52 -0
  158. package/src/lib/interfaces/auth/poolAcl.js.map +1 -0
  159. package/src/lib/interfaces/availability/availabilityService.d.ts +5 -3
  160. package/src/lib/interfaces/availability/availabilityService.d.ts.map +1 -1
  161. package/src/lib/interfaces/availability/availabilityService.js.map +1 -1
  162. package/src/lib/interfaces/availability/blockRegistry.d.ts +52 -3
  163. package/src/lib/interfaces/availability/blockRegistry.d.ts.map +1 -1
  164. package/src/lib/interfaces/availability/blockRegistry.js +1 -1
  165. package/src/lib/interfaces/availability/discoveryProtocol.d.ts +81 -3
  166. package/src/lib/interfaces/availability/discoveryProtocol.d.ts.map +1 -1
  167. package/src/lib/interfaces/availability/discoveryProtocol.js.map +1 -1
  168. package/src/lib/interfaces/availability/gossipService.d.ts +110 -6
  169. package/src/lib/interfaces/availability/gossipService.d.ts.map +1 -1
  170. package/src/lib/interfaces/availability/gossipService.js +94 -1
  171. package/src/lib/interfaces/availability/gossipService.js.map +1 -1
  172. package/src/lib/interfaces/availability/index.d.ts +1 -0
  173. package/src/lib/interfaces/availability/index.d.ts.map +1 -1
  174. package/src/lib/interfaces/availability/index.js +1 -0
  175. package/src/lib/interfaces/availability/index.js.map +1 -1
  176. package/src/lib/interfaces/availability/locationRecord.d.ts +6 -0
  177. package/src/lib/interfaces/availability/locationRecord.d.ts.map +1 -1
  178. package/src/lib/interfaces/availability/locationRecord.js +12 -0
  179. package/src/lib/interfaces/availability/locationRecord.js.map +1 -1
  180. package/src/lib/interfaces/availability/poolDeletionTombstone.d.ts +40 -0
  181. package/src/lib/interfaces/availability/poolDeletionTombstone.d.ts.map +1 -0
  182. package/src/lib/interfaces/availability/poolDeletionTombstone.js +19 -0
  183. package/src/lib/interfaces/availability/poolDeletionTombstone.js.map +1 -0
  184. package/src/lib/interfaces/availability/reconciliationService.d.ts +52 -0
  185. package/src/lib/interfaces/availability/reconciliationService.d.ts.map +1 -1
  186. package/src/lib/interfaces/availability/reconciliationService.js.map +1 -1
  187. package/src/lib/interfaces/blockCapacity.d.ts +9 -0
  188. package/src/lib/interfaces/blockCapacity.d.ts.map +1 -1
  189. package/src/lib/interfaces/blockEncryption.d.ts +4 -2
  190. package/src/lib/interfaces/blockEncryption.d.ts.map +1 -1
  191. package/src/lib/interfaces/blockFetch/blockFetchTransport.d.ts +26 -0
  192. package/src/lib/interfaces/blockFetch/blockFetchTransport.d.ts.map +1 -0
  193. package/src/lib/interfaces/blockFetch/blockFetchTransport.js +12 -0
  194. package/src/lib/interfaces/blockFetch/blockFetchTransport.js.map +1 -0
  195. package/src/lib/interfaces/blockFetch/blockFetcher.d.ts +71 -0
  196. package/src/lib/interfaces/blockFetch/blockFetcher.d.ts.map +1 -0
  197. package/src/lib/interfaces/blockFetch/blockFetcher.js +22 -0
  198. package/src/lib/interfaces/blockFetch/blockFetcher.js.map +1 -0
  199. package/src/lib/interfaces/blockFetch/enrichedQueryResult.d.ts +43 -0
  200. package/src/lib/interfaces/blockFetch/enrichedQueryResult.d.ts.map +1 -0
  201. package/src/lib/interfaces/blockFetch/enrichedQueryResult.js +13 -0
  202. package/src/lib/interfaces/blockFetch/enrichedQueryResult.js.map +1 -0
  203. package/src/lib/interfaces/blockFetch/fetchQueue.d.ts +70 -0
  204. package/src/lib/interfaces/blockFetch/fetchQueue.d.ts.map +1 -0
  205. package/src/lib/interfaces/blockFetch/fetchQueue.js +18 -0
  206. package/src/lib/interfaces/blockFetch/fetchQueue.js.map +1 -0
  207. package/src/lib/interfaces/blockFetch/index.d.ts +10 -0
  208. package/src/lib/interfaces/blockFetch/index.d.ts.map +1 -0
  209. package/src/lib/interfaces/blockFetch/index.js +13 -0
  210. package/src/lib/interfaces/blockFetch/index.js.map +1 -0
  211. package/src/lib/interfaces/blocks/index.d.ts +1 -0
  212. package/src/lib/interfaces/blocks/index.d.ts.map +1 -1
  213. package/src/lib/interfaces/blocks/vcbl.d.ts +16 -0
  214. package/src/lib/interfaces/blocks/vcbl.d.ts.map +1 -0
  215. package/src/lib/interfaces/blocks/vcbl.js +3 -0
  216. package/src/lib/interfaces/blocks/vcbl.js.map +1 -0
  217. package/src/lib/interfaces/brightpass/auditLog.d.ts +25 -0
  218. package/src/lib/interfaces/brightpass/auditLog.d.ts.map +1 -0
  219. package/src/lib/interfaces/brightpass/auditLog.js +21 -0
  220. package/src/lib/interfaces/brightpass/auditLog.js.map +1 -0
  221. package/src/lib/interfaces/brightpass/emergencyAccess.d.ts +11 -0
  222. package/src/lib/interfaces/brightpass/emergencyAccess.d.ts.map +1 -0
  223. package/src/lib/interfaces/brightpass/emergencyAccess.js +3 -0
  224. package/src/lib/interfaces/brightpass/emergencyAccess.js.map +1 -0
  225. package/src/lib/interfaces/brightpass/entryPropertyRecord.d.ts +11 -0
  226. package/src/lib/interfaces/brightpass/entryPropertyRecord.d.ts.map +1 -0
  227. package/src/lib/interfaces/brightpass/entryPropertyRecord.js +3 -0
  228. package/src/lib/interfaces/brightpass/entryPropertyRecord.js.map +1 -0
  229. package/src/lib/interfaces/brightpass/importTypes.d.ts +10 -0
  230. package/src/lib/interfaces/brightpass/importTypes.d.ts.map +1 -0
  231. package/src/lib/interfaces/brightpass/importTypes.js +3 -0
  232. package/src/lib/interfaces/brightpass/importTypes.js.map +1 -0
  233. package/src/lib/interfaces/brightpass/index.d.ts +7 -0
  234. package/src/lib/interfaces/brightpass/index.d.ts.map +1 -0
  235. package/src/lib/interfaces/brightpass/index.js +10 -0
  236. package/src/lib/interfaces/brightpass/index.js.map +1 -0
  237. package/src/lib/interfaces/brightpass/vaultEntry.d.ts +48 -0
  238. package/src/lib/interfaces/brightpass/vaultEntry.d.ts.map +1 -0
  239. package/src/lib/interfaces/brightpass/vaultEntry.js +3 -0
  240. package/src/lib/interfaces/brightpass/vaultEntry.js.map +1 -0
  241. package/src/lib/interfaces/brightpass/vaultMetadata.d.ts +34 -0
  242. package/src/lib/interfaces/brightpass/vaultMetadata.d.ts.map +1 -0
  243. package/src/lib/interfaces/brightpass/vaultMetadata.js +3 -0
  244. package/src/lib/interfaces/brightpass/vaultMetadata.js.map +1 -0
  245. package/src/lib/interfaces/clusterKeys.d.ts +4 -2
  246. package/src/lib/interfaces/clusterKeys.d.ts.map +1 -1
  247. package/src/lib/interfaces/communication.d.ts +173 -0
  248. package/src/lib/interfaces/communication.d.ts.map +1 -0
  249. package/src/lib/interfaces/communication.js +17 -0
  250. package/src/lib/interfaces/communication.js.map +1 -0
  251. package/src/lib/interfaces/communicationEvents.d.ts +168 -0
  252. package/src/lib/interfaces/communicationEvents.d.ts.map +1 -0
  253. package/src/lib/interfaces/communicationEvents.js +12 -0
  254. package/src/lib/interfaces/communicationEvents.js.map +1 -0
  255. package/src/lib/interfaces/constants.d.ts +23 -0
  256. package/src/lib/interfaces/constants.d.ts.map +1 -1
  257. package/src/lib/interfaces/crypto/ethereumWallet.d.ts +72 -0
  258. package/src/lib/interfaces/crypto/ethereumWallet.d.ts.map +1 -0
  259. package/src/lib/interfaces/crypto/ethereumWallet.js +12 -0
  260. package/src/lib/interfaces/crypto/ethereumWallet.js.map +1 -0
  261. package/src/lib/interfaces/crypto/gitSignature.d.ts +95 -0
  262. package/src/lib/interfaces/crypto/gitSignature.d.ts.map +1 -0
  263. package/src/lib/interfaces/crypto/gitSignature.js +12 -0
  264. package/src/lib/interfaces/crypto/gitSignature.js.map +1 -0
  265. package/src/lib/interfaces/crypto/index.d.ts +3 -0
  266. package/src/lib/interfaces/crypto/index.d.ts.map +1 -0
  267. package/src/lib/interfaces/crypto/index.js +3 -0
  268. package/src/lib/interfaces/crypto/index.js.map +1 -0
  269. package/src/lib/interfaces/dataKeyComponents.d.ts +7 -2
  270. package/src/lib/interfaces/dataKeyComponents.d.ts.map +1 -1
  271. package/src/lib/interfaces/encryptedBlockCreator.d.ts +4 -2
  272. package/src/lib/interfaces/encryptedBlockCreator.d.ts.map +1 -1
  273. package/src/lib/interfaces/events/communicationEventEmitter.d.ts +65 -0
  274. package/src/lib/interfaces/events/communicationEventEmitter.d.ts.map +1 -0
  275. package/src/lib/interfaces/events/communicationEventEmitter.js +60 -0
  276. package/src/lib/interfaces/events/communicationEventEmitter.js.map +1 -0
  277. package/src/lib/interfaces/events/index.d.ts +2 -0
  278. package/src/lib/interfaces/events/index.d.ts.map +1 -0
  279. package/src/lib/interfaces/events/index.js +5 -0
  280. package/src/lib/interfaces/events/index.js.map +1 -0
  281. package/src/lib/interfaces/failableResult.d.ts +8 -0
  282. package/src/lib/interfaces/failableResult.d.ts.map +1 -0
  283. package/src/lib/interfaces/failableResult.js +3 -0
  284. package/src/lib/interfaces/failableResult.js.map +1 -0
  285. package/src/lib/interfaces/i18nConstants.d.ts +27 -0
  286. package/src/lib/interfaces/i18nConstants.d.ts.map +1 -0
  287. package/src/lib/interfaces/i18nConstants.js +3 -0
  288. package/src/lib/interfaces/i18nConstants.js.map +1 -0
  289. package/src/lib/interfaces/identity/device.d.ts +59 -0
  290. package/src/lib/interfaces/identity/device.d.ts.map +1 -0
  291. package/src/lib/interfaces/identity/device.js +17 -0
  292. package/src/lib/interfaces/identity/device.js.map +1 -0
  293. package/src/lib/interfaces/identity/deviceKeyStorage.d.ts +71 -0
  294. package/src/lib/interfaces/identity/deviceKeyStorage.d.ts.map +1 -0
  295. package/src/lib/interfaces/identity/deviceKeyStorage.js +16 -0
  296. package/src/lib/interfaces/identity/deviceKeyStorage.js.map +1 -0
  297. package/src/lib/interfaces/identity/identityProof.d.ts +90 -0
  298. package/src/lib/interfaces/identity/identityProof.d.ts.map +1 -0
  299. package/src/lib/interfaces/identity/identityProof.js +18 -0
  300. package/src/lib/interfaces/identity/identityProof.js.map +1 -0
  301. package/src/lib/interfaces/identity/index.d.ts +7 -0
  302. package/src/lib/interfaces/identity/index.d.ts.map +1 -0
  303. package/src/lib/interfaces/identity/index.js +3 -0
  304. package/src/lib/interfaces/identity/index.js.map +1 -0
  305. package/src/lib/interfaces/identity/paperKey.d.ts +97 -0
  306. package/src/lib/interfaces/identity/paperKey.d.ts.map +1 -0
  307. package/src/lib/interfaces/identity/paperKey.js +17 -0
  308. package/src/lib/interfaces/identity/paperKey.js.map +1 -0
  309. package/src/lib/interfaces/identity/publicProfile.d.ts +74 -0
  310. package/src/lib/interfaces/identity/publicProfile.d.ts.map +1 -0
  311. package/src/lib/interfaces/identity/publicProfile.js +18 -0
  312. package/src/lib/interfaces/identity/publicProfile.js.map +1 -0
  313. package/src/lib/interfaces/identity/splitPaperKey.d.ts +73 -0
  314. package/src/lib/interfaces/identity/splitPaperKey.d.ts.map +1 -0
  315. package/src/lib/interfaces/identity/splitPaperKey.js +20 -0
  316. package/src/lib/interfaces/identity/splitPaperKey.js.map +1 -0
  317. package/src/lib/interfaces/index.d.ts +12 -2
  318. package/src/lib/interfaces/index.d.ts.map +1 -1
  319. package/src/lib/interfaces/index.js +12 -0
  320. package/src/lib/interfaces/index.js.map +1 -1
  321. package/src/lib/interfaces/network/node.d.ts +4 -2
  322. package/src/lib/interfaces/network/node.d.ts.map +1 -1
  323. package/src/lib/interfaces/network/nodeAdvertisement.d.ts +4 -2
  324. package/src/lib/interfaces/network/nodeAdvertisement.d.ts.map +1 -1
  325. package/src/lib/interfaces/privateVotingDerivation.d.ts +7 -2
  326. package/src/lib/interfaces/privateVotingDerivation.d.ts.map +1 -1
  327. package/src/lib/interfaces/requests/communicationRequests.d.ts +154 -0
  328. package/src/lib/interfaces/requests/communicationRequests.d.ts.map +1 -0
  329. package/src/lib/interfaces/requests/communicationRequests.js +10 -0
  330. package/src/lib/interfaces/requests/communicationRequests.js.map +1 -0
  331. package/src/lib/interfaces/requests/index.d.ts +2 -0
  332. package/src/lib/interfaces/requests/index.d.ts.map +1 -0
  333. package/src/lib/interfaces/requests/index.js +3 -0
  334. package/src/lib/interfaces/requests/index.js.map +1 -0
  335. package/src/lib/interfaces/responses/blockDataResponse.d.ts +11 -0
  336. package/src/lib/interfaces/responses/blockDataResponse.d.ts.map +1 -0
  337. package/src/lib/interfaces/responses/blockDataResponse.js +3 -0
  338. package/src/lib/interfaces/responses/blockDataResponse.js.map +1 -0
  339. package/src/lib/interfaces/responses/communicationResponses.d.ts +82 -0
  340. package/src/lib/interfaces/responses/communicationResponses.d.ts.map +1 -0
  341. package/src/lib/interfaces/responses/communicationResponses.js +17 -0
  342. package/src/lib/interfaces/responses/communicationResponses.js.map +1 -0
  343. package/src/lib/interfaces/responses/cryptoResponses.d.ts +30 -0
  344. package/src/lib/interfaces/responses/cryptoResponses.d.ts.map +1 -0
  345. package/src/lib/interfaces/responses/cryptoResponses.js +12 -0
  346. package/src/lib/interfaces/responses/cryptoResponses.js.map +1 -0
  347. package/src/lib/interfaces/responses/deviceResponses.d.ts +26 -0
  348. package/src/lib/interfaces/responses/deviceResponses.d.ts.map +1 -0
  349. package/src/lib/interfaces/responses/deviceResponses.js +15 -0
  350. package/src/lib/interfaces/responses/deviceResponses.js.map +1 -0
  351. package/src/lib/interfaces/responses/directoryResponses.d.ts +26 -0
  352. package/src/lib/interfaces/responses/directoryResponses.d.ts.map +1 -0
  353. package/src/lib/interfaces/responses/directoryResponses.js +12 -0
  354. package/src/lib/interfaces/responses/directoryResponses.js.map +1 -0
  355. package/src/lib/interfaces/responses/emailResponses.d.ts +40 -0
  356. package/src/lib/interfaces/responses/emailResponses.d.ts.map +1 -0
  357. package/src/lib/interfaces/responses/emailResponses.js +18 -0
  358. package/src/lib/interfaces/responses/emailResponses.js.map +1 -0
  359. package/src/lib/interfaces/responses/explodingMessageResponses.d.ts +42 -0
  360. package/src/lib/interfaces/responses/explodingMessageResponses.d.ts.map +1 -0
  361. package/src/lib/interfaces/responses/explodingMessageResponses.js +11 -0
  362. package/src/lib/interfaces/responses/explodingMessageResponses.js.map +1 -0
  363. package/src/lib/interfaces/responses/identityProofResponses.d.ts +33 -0
  364. package/src/lib/interfaces/responses/identityProofResponses.d.ts.map +1 -0
  365. package/src/lib/interfaces/responses/identityProofResponses.js +12 -0
  366. package/src/lib/interfaces/responses/identityProofResponses.js.map +1 -0
  367. package/src/lib/interfaces/responses/index.d.ts +3 -1
  368. package/src/lib/interfaces/responses/index.d.ts.map +1 -1
  369. package/src/lib/interfaces/sealResults.d.ts +7 -2
  370. package/src/lib/interfaces/sealResults.d.ts.map +1 -1
  371. package/src/lib/interfaces/services/fecService.d.ts +7 -5
  372. package/src/lib/interfaces/services/fecService.d.ts.map +1 -1
  373. package/src/lib/interfaces/services/fecService.js +2 -0
  374. package/src/lib/interfaces/services/fecService.js.map +1 -1
  375. package/src/lib/interfaces/singleEncryptedBlockDetails.d.ts +7 -2
  376. package/src/lib/interfaces/singleEncryptedBlockDetails.d.ts.map +1 -1
  377. package/src/lib/interfaces/storage/blockMetadata.d.ts +8 -1
  378. package/src/lib/interfaces/storage/blockMetadata.d.ts.map +1 -1
  379. package/src/lib/interfaces/storage/blockMetadata.js +3 -1
  380. package/src/lib/interfaces/storage/blockMetadata.js.map +1 -1
  381. package/src/lib/interfaces/storage/cblIndex.d.ts +141 -0
  382. package/src/lib/interfaces/storage/cblIndex.d.ts.map +1 -0
  383. package/src/lib/interfaces/storage/cblIndex.js +28 -0
  384. package/src/lib/interfaces/storage/cblIndex.js.map +1 -0
  385. package/src/lib/interfaces/storage/clientSession.d.ts +8 -0
  386. package/src/lib/interfaces/storage/clientSession.d.ts.map +1 -0
  387. package/src/lib/interfaces/storage/clientSession.js +3 -0
  388. package/src/lib/interfaces/storage/clientSession.js.map +1 -0
  389. package/src/lib/interfaces/storage/collection.d.ts +9 -0
  390. package/src/lib/interfaces/storage/collection.d.ts.map +1 -0
  391. package/src/lib/interfaces/storage/collection.js +3 -0
  392. package/src/lib/interfaces/storage/collection.js.map +1 -0
  393. package/src/lib/interfaces/storage/database.d.ts +9 -0
  394. package/src/lib/interfaces/storage/database.d.ts.map +1 -0
  395. package/src/lib/interfaces/storage/database.js +3 -0
  396. package/src/lib/interfaces/storage/database.js.map +1 -0
  397. package/src/lib/interfaces/storage/databaseLifecycleHooks.d.ts +8 -0
  398. package/src/lib/interfaces/storage/databaseLifecycleHooks.d.ts.map +1 -0
  399. package/src/lib/interfaces/storage/databaseLifecycleHooks.js +3 -0
  400. package/src/lib/interfaces/storage/databaseLifecycleHooks.js.map +1 -0
  401. package/src/lib/interfaces/storage/documentTypes.d.ts +8 -0
  402. package/src/lib/interfaces/storage/documentTypes.d.ts.map +1 -0
  403. package/src/lib/interfaces/storage/documentTypes.js +3 -0
  404. package/src/lib/interfaces/storage/documentTypes.js.map +1 -0
  405. package/src/lib/interfaces/storage/encryptedPool.d.ts +64 -0
  406. package/src/lib/interfaces/storage/encryptedPool.d.ts.map +1 -0
  407. package/src/lib/interfaces/storage/encryptedPool.js +26 -0
  408. package/src/lib/interfaces/storage/encryptedPool.js.map +1 -0
  409. package/src/lib/interfaces/storage/headRegistry.d.ts +128 -0
  410. package/src/lib/interfaces/storage/headRegistry.d.ts.map +1 -0
  411. package/src/lib/interfaces/storage/headRegistry.js +3 -0
  412. package/src/lib/interfaces/storage/headRegistry.js.map +1 -0
  413. package/src/lib/interfaces/storage/index.d.ts +14 -0
  414. package/src/lib/interfaces/storage/index.d.ts.map +1 -1
  415. package/src/lib/interfaces/storage/index.js +14 -1
  416. package/src/lib/interfaces/storage/index.js.map +1 -1
  417. package/src/lib/interfaces/storage/pooledBlockStore.d.ts +163 -0
  418. package/src/lib/interfaces/storage/pooledBlockStore.d.ts.map +1 -0
  419. package/src/lib/interfaces/storage/pooledBlockStore.js +77 -0
  420. package/src/lib/interfaces/storage/pooledBlockStore.js.map +1 -0
  421. package/src/lib/interfaces/storage/readConcernBlockStore.d.ts +47 -0
  422. package/src/lib/interfaces/storage/readConcernBlockStore.d.ts.map +1 -0
  423. package/src/lib/interfaces/storage/readConcernBlockStore.js +29 -0
  424. package/src/lib/interfaces/storage/readConcernBlockStore.js.map +1 -0
  425. package/src/lib/interfaces/symmetricEncryptionResults.d.ts +7 -5
  426. package/src/lib/interfaces/symmetricEncryptionResults.d.ts.map +1 -1
  427. package/src/lib/services/blockCapacity.service.d.ts.map +1 -1
  428. package/src/lib/services/blockCapacity.service.js +15 -0
  429. package/src/lib/services/blockCapacity.service.js.map +1 -1
  430. package/src/lib/services/brightpass/auditLogger.d.ts +41 -0
  431. package/src/lib/services/brightpass/auditLogger.d.ts.map +1 -0
  432. package/src/lib/services/brightpass/auditLogger.js +47 -0
  433. package/src/lib/services/brightpass/auditLogger.js.map +1 -0
  434. package/src/lib/services/brightpass/breachDetector.d.ts +68 -0
  435. package/src/lib/services/brightpass/breachDetector.d.ts.map +1 -0
  436. package/src/lib/services/brightpass/breachDetector.js +102 -0
  437. package/src/lib/services/brightpass/breachDetector.js.map +1 -0
  438. package/src/lib/services/brightpass/importParser.d.ts +105 -0
  439. package/src/lib/services/brightpass/importParser.d.ts.map +1 -0
  440. package/src/lib/services/brightpass/importParser.js +380 -0
  441. package/src/lib/services/brightpass/importParser.js.map +1 -0
  442. package/src/lib/services/brightpass/index.d.ts +16 -0
  443. package/src/lib/services/brightpass/index.d.ts.map +1 -0
  444. package/src/lib/services/brightpass/index.js +19 -0
  445. package/src/lib/services/brightpass/index.js.map +1 -0
  446. package/src/lib/services/brightpass/passwordGenerator.d.ts +111 -0
  447. package/src/lib/services/brightpass/passwordGenerator.d.ts.map +1 -0
  448. package/src/lib/services/brightpass/passwordGenerator.js +162 -0
  449. package/src/lib/services/brightpass/passwordGenerator.js.map +1 -0
  450. package/src/lib/services/brightpass/totpEngine.d.ts +191 -0
  451. package/src/lib/services/brightpass/totpEngine.d.ts.map +1 -0
  452. package/src/lib/services/brightpass/totpEngine.js +198 -0
  453. package/src/lib/services/brightpass/totpEngine.js.map +1 -0
  454. package/src/lib/services/brightpass/vaultKeyDerivation.d.ts +26 -0
  455. package/src/lib/services/brightpass/vaultKeyDerivation.d.ts.map +1 -0
  456. package/src/lib/services/brightpass/vaultKeyDerivation.js +42 -0
  457. package/src/lib/services/brightpass/vaultKeyDerivation.js.map +1 -0
  458. package/src/lib/services/brightpass/vaultSerializer.d.ts +14 -0
  459. package/src/lib/services/brightpass/vaultSerializer.d.ts.map +1 -0
  460. package/src/lib/services/brightpass/vaultSerializer.js +77 -0
  461. package/src/lib/services/brightpass/vaultSerializer.js.map +1 -0
  462. package/src/lib/services/cblService.d.ts +4 -2
  463. package/src/lib/services/cblService.d.ts.map +1 -1
  464. package/src/lib/services/cblService.js +8 -4
  465. package/src/lib/services/cblService.js.map +1 -1
  466. package/src/lib/services/communication/channelService.d.ts +208 -0
  467. package/src/lib/services/communication/channelService.d.ts.map +1 -0
  468. package/src/lib/services/communication/channelService.js +575 -0
  469. package/src/lib/services/communication/channelService.js.map +1 -0
  470. package/src/lib/services/communication/conversationService.d.ts +130 -0
  471. package/src/lib/services/communication/conversationService.d.ts.map +1 -0
  472. package/src/lib/services/communication/conversationService.js +279 -0
  473. package/src/lib/services/communication/conversationService.js.map +1 -0
  474. package/src/lib/services/communication/explodingMessageService.d.ts +168 -0
  475. package/src/lib/services/communication/explodingMessageService.d.ts.map +1 -0
  476. package/src/lib/services/communication/explodingMessageService.js +287 -0
  477. package/src/lib/services/communication/explodingMessageService.js.map +1 -0
  478. package/src/lib/services/communication/groupService.d.ts +165 -0
  479. package/src/lib/services/communication/groupService.d.ts.map +1 -0
  480. package/src/lib/services/communication/groupService.js +437 -0
  481. package/src/lib/services/communication/groupService.js.map +1 -0
  482. package/src/lib/services/communication/index.d.ts +16 -0
  483. package/src/lib/services/communication/index.d.ts.map +1 -0
  484. package/src/lib/services/communication/index.js +63 -0
  485. package/src/lib/services/communication/index.js.map +1 -0
  486. package/src/lib/services/communication/messageOperationsService.d.ts +81 -0
  487. package/src/lib/services/communication/messageOperationsService.d.ts.map +1 -0
  488. package/src/lib/services/communication/messageOperationsService.js +162 -0
  489. package/src/lib/services/communication/messageOperationsService.js.map +1 -0
  490. package/src/lib/services/communication/permissionService.d.ts +47 -0
  491. package/src/lib/services/communication/permissionService.d.ts.map +1 -0
  492. package/src/lib/services/communication/permissionService.js +82 -0
  493. package/src/lib/services/communication/permissionService.js.map +1 -0
  494. package/src/lib/services/communication/searchService.d.ts +30 -0
  495. package/src/lib/services/communication/searchService.d.ts.map +1 -0
  496. package/src/lib/services/communication/searchService.js +83 -0
  497. package/src/lib/services/communication/searchService.js.map +1 -0
  498. package/src/lib/services/crypto/ethereumWalletService.d.ts +159 -0
  499. package/src/lib/services/crypto/ethereumWalletService.d.ts.map +1 -0
  500. package/src/lib/services/crypto/ethereumWalletService.js +345 -0
  501. package/src/lib/services/crypto/ethereumWalletService.js.map +1 -0
  502. package/src/lib/services/crypto/gitSigningService.d.ts +145 -0
  503. package/src/lib/services/crypto/gitSigningService.d.ts.map +1 -0
  504. package/src/lib/services/crypto/gitSigningService.js +291 -0
  505. package/src/lib/services/crypto/gitSigningService.js.map +1 -0
  506. package/src/lib/services/crypto/index.d.ts +3 -0
  507. package/src/lib/services/crypto/index.d.ts.map +1 -0
  508. package/src/lib/services/crypto/index.js +6 -0
  509. package/src/lib/services/crypto/index.js.map +1 -0
  510. package/src/lib/services/identity/deviceProvisioningService.d.ts +146 -0
  511. package/src/lib/services/identity/deviceProvisioningService.d.ts.map +1 -0
  512. package/src/lib/services/identity/deviceProvisioningService.js +219 -0
  513. package/src/lib/services/identity/deviceProvisioningService.js.map +1 -0
  514. package/src/lib/services/identity/identityProofService.d.ts +139 -0
  515. package/src/lib/services/identity/identityProofService.d.ts.map +1 -0
  516. package/src/lib/services/identity/identityProofService.js +245 -0
  517. package/src/lib/services/identity/identityProofService.js.map +1 -0
  518. package/src/lib/services/identity/index.d.ts +14 -0
  519. package/src/lib/services/identity/index.d.ts.map +1 -0
  520. package/src/lib/services/identity/index.js +17 -0
  521. package/src/lib/services/identity/index.js.map +1 -0
  522. package/src/lib/services/identity/memberIdentityProofService.d.ts +179 -0
  523. package/src/lib/services/identity/memberIdentityProofService.d.ts.map +1 -0
  524. package/src/lib/services/identity/memberIdentityProofService.js +232 -0
  525. package/src/lib/services/identity/memberIdentityProofService.js.map +1 -0
  526. package/src/lib/services/identity/memberPaperKeyService.d.ts +223 -0
  527. package/src/lib/services/identity/memberPaperKeyService.d.ts.map +1 -0
  528. package/src/lib/services/identity/memberPaperKeyService.js +279 -0
  529. package/src/lib/services/identity/memberPaperKeyService.js.map +1 -0
  530. package/src/lib/services/identity/paperKeyService.d.ts +106 -0
  531. package/src/lib/services/identity/paperKeyService.d.ts.map +1 -0
  532. package/src/lib/services/identity/paperKeyService.js +161 -0
  533. package/src/lib/services/identity/paperKeyService.js.map +1 -0
  534. package/src/lib/services/identity/publicKeyDirectoryService.d.ts +210 -0
  535. package/src/lib/services/identity/publicKeyDirectoryService.d.ts.map +1 -0
  536. package/src/lib/services/identity/publicKeyDirectoryService.js +328 -0
  537. package/src/lib/services/identity/publicKeyDirectoryService.js.map +1 -0
  538. package/src/lib/services/identity/splitPaperKeyService.d.ts +92 -0
  539. package/src/lib/services/identity/splitPaperKeyService.d.ts.map +1 -0
  540. package/src/lib/services/identity/splitPaperKeyService.js +305 -0
  541. package/src/lib/services/identity/splitPaperKeyService.js.map +1 -0
  542. package/src/lib/services/index.d.ts +4 -0
  543. package/src/lib/services/index.d.ts.map +1 -1
  544. package/src/lib/services/index.js +7 -0
  545. package/src/lib/services/index.js.map +1 -1
  546. package/src/lib/services/messaging/emailMessageService.d.ts.map +1 -1
  547. package/src/lib/services/messaging/emailMessageService.js +26 -9
  548. package/src/lib/services/messaging/emailMessageService.js.map +1 -1
  549. package/src/lib/services/messaging/emailParser.d.ts +18 -0
  550. package/src/lib/services/messaging/emailParser.d.ts.map +1 -1
  551. package/src/lib/services/messaging/emailParser.js +18 -0
  552. package/src/lib/services/messaging/emailParser.js.map +1 -1
  553. package/src/lib/services/tuple.service.d.ts +27 -2
  554. package/src/lib/services/tuple.service.d.ts.map +1 -1
  555. package/src/lib/services/tuple.service.js +62 -20
  556. package/src/lib/services/tuple.service.js.map +1 -1
  557. package/src/lib/services/vcblService.d.ts +36 -0
  558. package/src/lib/services/vcblService.d.ts.map +1 -0
  559. package/src/lib/services/vcblService.js +326 -0
  560. package/src/lib/services/vcblService.js.map +1 -0
  561. package/src/lib/stores/index.d.ts +1 -0
  562. package/src/lib/stores/index.d.ts.map +1 -1
  563. package/src/lib/stores/index.js +1 -0
  564. package/src/lib/stores/index.js.map +1 -1
  565. package/src/lib/stores/pooledMemoryBlockStore.d.ts +134 -0
  566. package/src/lib/stores/pooledMemoryBlockStore.d.ts.map +1 -0
  567. package/src/lib/stores/pooledMemoryBlockStore.js +583 -0
  568. package/src/lib/stores/pooledMemoryBlockStore.js.map +1 -0
  569. package/src/lib/types/checksum.d.ts +11 -0
  570. package/src/lib/types/checksum.d.ts.map +1 -1
  571. package/src/lib/types/checksum.js +11 -0
  572. package/src/lib/types/checksum.js.map +1 -1
  573. package/src/lib/utils/index.d.ts +9 -0
  574. package/src/lib/utils/index.d.ts.map +1 -1
  575. package/src/lib/utils/index.js +12 -0
  576. package/src/lib/utils/index.js.map +1 -1
  577. package/src/lib/utils/pagination.d.ts +27 -0
  578. package/src/lib/utils/pagination.d.ts.map +1 -0
  579. package/src/lib/utils/pagination.js +38 -0
  580. package/src/lib/utils/pagination.js.map +1 -0
@@ -0,0 +1,279 @@
1
+ "use strict";
2
+ /**
3
+ * Member Paper Key Service for the BrightChain identity system.
4
+ *
5
+ * Manages paper key metadata lifecycle for members. Since {@link Member}
6
+ * is an external class from `@digitaldefiance/ecies-lib` and cannot be
7
+ * modified directly, this service acts as a companion that tracks paper
8
+ * key metadata (creation, usage, revocation) keyed by member ID.
9
+ *
10
+ * Follows the same stateful-service pattern used by
11
+ * {@link ConversationService}, {@link PermissionService}, and other
12
+ * BrightChain services that manage in-memory state with `Map`s.
13
+ *
14
+ * Requirements: 1.5, 1.6, 1.7
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.MemberPaperKeyService = exports.PaperKeyAlreadyUsedError = exports.PaperKeyRevokedError = exports.PaperKeyNotFoundError = void 0;
18
+ const uuid_1 = require("uuid");
19
+ /**
20
+ * Error thrown when a paper key operation references a key that does not exist.
21
+ */
22
+ class PaperKeyNotFoundError extends Error {
23
+ constructor(paperKeyId) {
24
+ super(`Paper key not found: ${paperKeyId}`);
25
+ this.name = 'PaperKeyNotFoundError';
26
+ }
27
+ }
28
+ exports.PaperKeyNotFoundError = PaperKeyNotFoundError;
29
+ /**
30
+ * Error thrown when attempting to use or modify an already-revoked paper key.
31
+ */
32
+ class PaperKeyRevokedError extends Error {
33
+ constructor(paperKeyId) {
34
+ super(`Paper key has been revoked: ${paperKeyId}`);
35
+ this.name = 'PaperKeyRevokedError';
36
+ }
37
+ }
38
+ exports.PaperKeyRevokedError = PaperKeyRevokedError;
39
+ /**
40
+ * Error thrown when attempting to mark an already-used paper key as used again.
41
+ */
42
+ class PaperKeyAlreadyUsedError extends Error {
43
+ constructor(paperKeyId) {
44
+ super(`Paper key has already been used: ${paperKeyId}`);
45
+ this.name = 'PaperKeyAlreadyUsedError';
46
+ }
47
+ }
48
+ exports.PaperKeyAlreadyUsedError = PaperKeyAlreadyUsedError;
49
+ /**
50
+ * Service that manages paper key metadata for members.
51
+ *
52
+ * Since {@link Member} from `@digitaldefiance/ecies-lib` is an external
53
+ * class, this service provides the `addPaperKey()`, `markPaperKeyUsed()`,
54
+ * and `revokePaperKey()` operations specified in the task, tracking
55
+ * metadata externally keyed by member ID.
56
+ *
57
+ * The generic `TId` parameter follows the project convention of allowing
58
+ * `string` for frontend DTOs and `GuidV4Buffer` for backend usage.
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const service = new MemberPaperKeyService();
63
+ *
64
+ * // Add a paper key for a member
65
+ * const metadata = service.addPaperKey(memberId, PaperKeyPurpose.BACKUP);
66
+ *
67
+ * // Mark it as used during device provisioning
68
+ * service.markPaperKeyUsed(memberId, metadata.id, 'device-abc');
69
+ *
70
+ * // Revoke it
71
+ * service.revokePaperKey(memberId, metadata.id, 'Compromised');
72
+ *
73
+ * // Query audit trail
74
+ * const auditLog = service.getAuditLog(memberId);
75
+ * ```
76
+ */
77
+ class MemberPaperKeyService {
78
+ constructor(idFactory) {
79
+ /**
80
+ * Paper key metadata keyed by member ID.
81
+ * Each member can have multiple paper keys.
82
+ */
83
+ this.paperKeysByMember = new Map();
84
+ /**
85
+ * Append-only audit log keyed by member ID.
86
+ * Satisfies Requirement 1.7 (audit logging) and 1.9 (recovery event logging).
87
+ */
88
+ this.auditLogByMember = new Map();
89
+ this.idFactory = idFactory ?? (() => (0, uuid_1.v4)());
90
+ }
91
+ /**
92
+ * Register a new paper key for a member.
93
+ *
94
+ * Creates an {@link IPaperKeyMetadata} record and appends a 'created'
95
+ * entry to the audit log.
96
+ *
97
+ * **Validates: Requirement 1.5** — Track paper key metadata
98
+ *
99
+ * @param memberId - The member this paper key belongs to
100
+ * @param purpose - The intended purpose of the paper key
101
+ * @returns The newly created paper key metadata
102
+ */
103
+ addPaperKey(memberId, purpose) {
104
+ const metadata = {
105
+ id: this.idFactory(),
106
+ createdAt: new Date(),
107
+ purpose,
108
+ };
109
+ const existing = this.paperKeysByMember.get(memberId) ?? [];
110
+ existing.push(metadata);
111
+ this.paperKeysByMember.set(memberId, existing);
112
+ this.appendAuditEntry(memberId, metadata.id, 'created');
113
+ return metadata;
114
+ }
115
+ /**
116
+ * Mark a paper key as used (e.g. after device provisioning).
117
+ *
118
+ * Sets the `usedAt` timestamp and optionally associates a device ID.
119
+ * A paper key can only be marked as used once and must not be revoked.
120
+ *
121
+ * **Validates: Requirement 1.6** — Mark paper keys as used after device provisioning
122
+ *
123
+ * @param memberId - The member who owns the paper key
124
+ * @param paperKeyId - The paper key to mark as used
125
+ * @param deviceId - Optional device ID that was provisioned
126
+ * @throws {PaperKeyNotFoundError} If the paper key does not exist for this member
127
+ * @throws {PaperKeyRevokedError} If the paper key has been revoked
128
+ * @throws {PaperKeyAlreadyUsedError} If the paper key has already been used
129
+ */
130
+ markPaperKeyUsed(memberId, paperKeyId, deviceId) {
131
+ const metadata = this.findPaperKey(memberId, paperKeyId);
132
+ if (metadata.revokedAt) {
133
+ throw new PaperKeyRevokedError(String(paperKeyId));
134
+ }
135
+ if (metadata.usedAt) {
136
+ throw new PaperKeyAlreadyUsedError(String(paperKeyId));
137
+ }
138
+ metadata.usedAt = new Date();
139
+ if (deviceId !== undefined) {
140
+ metadata.deviceId = deviceId;
141
+ }
142
+ this.appendAuditEntry(memberId, paperKeyId, 'used', undefined, deviceId);
143
+ }
144
+ /**
145
+ * Revoke a paper key with audit logging.
146
+ *
147
+ * Sets the `revokedAt` timestamp and records the revocation reason
148
+ * in the audit log. A revoked paper key cannot be used for recovery
149
+ * or device provisioning.
150
+ *
151
+ * **Validates: Requirement 1.7** — Support paper key revocation with audit logging
152
+ *
153
+ * @param memberId - The member who owns the paper key
154
+ * @param paperKeyId - The paper key to revoke
155
+ * @param reason - Human-readable reason for revocation
156
+ * @throws {PaperKeyNotFoundError} If the paper key does not exist for this member
157
+ * @throws {PaperKeyRevokedError} If the paper key has already been revoked
158
+ */
159
+ revokePaperKey(memberId, paperKeyId, reason) {
160
+ const metadata = this.findPaperKey(memberId, paperKeyId);
161
+ if (metadata.revokedAt) {
162
+ throw new PaperKeyRevokedError(String(paperKeyId));
163
+ }
164
+ metadata.revokedAt = new Date();
165
+ this.appendAuditEntry(memberId, paperKeyId, 'revoked', reason);
166
+ }
167
+ /**
168
+ * Get all paper key metadata for a member.
169
+ *
170
+ * Returns a shallow copy of the array to prevent external mutation.
171
+ *
172
+ * @param memberId - The member to query
173
+ * @returns Array of paper key metadata (empty if none registered)
174
+ */
175
+ getPaperKeys(memberId) {
176
+ return [...(this.paperKeysByMember.get(memberId) ?? [])];
177
+ }
178
+ /**
179
+ * Get active (non-revoked) paper keys for a member.
180
+ *
181
+ * @param memberId - The member to query
182
+ * @returns Array of active paper key metadata
183
+ */
184
+ getActivePaperKeys(memberId) {
185
+ return this.getPaperKeys(memberId).filter((pk) => !pk.revokedAt);
186
+ }
187
+ /**
188
+ * Get a single paper key by ID.
189
+ *
190
+ * @param memberId - The member who owns the paper key
191
+ * @param paperKeyId - The paper key to retrieve
192
+ * @returns The paper key metadata
193
+ * @throws {PaperKeyNotFoundError} If the paper key does not exist
194
+ */
195
+ getPaperKey(memberId, paperKeyId) {
196
+ return this.findPaperKey(memberId, paperKeyId);
197
+ }
198
+ /**
199
+ * Get the full audit log for a member's paper keys.
200
+ *
201
+ * Returns a shallow copy of the array to prevent external mutation.
202
+ *
203
+ * **Validates: Requirement 1.7** — Audit logging
204
+ *
205
+ * @param memberId - The member to query
206
+ * @returns Array of audit entries (empty if none recorded)
207
+ */
208
+ getAuditLog(memberId) {
209
+ return [...(this.auditLogByMember.get(memberId) ?? [])];
210
+ }
211
+ /**
212
+ * Check whether a specific paper key is revoked.
213
+ *
214
+ * @param memberId - The member who owns the paper key
215
+ * @param paperKeyId - The paper key to check
216
+ * @returns `true` if the paper key has been revoked
217
+ * @throws {PaperKeyNotFoundError} If the paper key does not exist
218
+ */
219
+ isRevoked(memberId, paperKeyId) {
220
+ return this.findPaperKey(memberId, paperKeyId).revokedAt !== undefined;
221
+ }
222
+ /**
223
+ * Check whether a specific paper key has been used.
224
+ *
225
+ * @param memberId - The member who owns the paper key
226
+ * @param paperKeyId - The paper key to check
227
+ * @returns `true` if the paper key has been used
228
+ * @throws {PaperKeyNotFoundError} If the paper key does not exist
229
+ */
230
+ isUsed(memberId, paperKeyId) {
231
+ return this.findPaperKey(memberId, paperKeyId).usedAt !== undefined;
232
+ }
233
+ /**
234
+ * Remove all paper key data for a member.
235
+ *
236
+ * Useful for testing or when a member is deleted.
237
+ *
238
+ * @param memberId - The member whose data should be cleared
239
+ */
240
+ clearMemberData(memberId) {
241
+ this.paperKeysByMember.delete(memberId);
242
+ this.auditLogByMember.delete(memberId);
243
+ }
244
+ /**
245
+ * Look up a paper key by member ID and paper key ID.
246
+ *
247
+ * @throws {PaperKeyNotFoundError} If not found
248
+ */
249
+ findPaperKey(memberId, paperKeyId) {
250
+ const keys = this.paperKeysByMember.get(memberId);
251
+ if (!keys) {
252
+ throw new PaperKeyNotFoundError(String(paperKeyId));
253
+ }
254
+ const found = keys.find((pk) => pk.id === paperKeyId);
255
+ if (!found) {
256
+ throw new PaperKeyNotFoundError(String(paperKeyId));
257
+ }
258
+ return found;
259
+ }
260
+ /**
261
+ * Append an entry to the member's audit log.
262
+ */
263
+ appendAuditEntry(memberId, paperKeyId, action, reason, deviceId) {
264
+ const entry = {
265
+ id: (0, uuid_1.v4)(),
266
+ paperKeyId,
267
+ memberId,
268
+ action,
269
+ timestamp: new Date(),
270
+ reason,
271
+ deviceId,
272
+ };
273
+ const existing = this.auditLogByMember.get(memberId) ?? [];
274
+ existing.push(entry);
275
+ this.auditLogByMember.set(memberId, existing);
276
+ }
277
+ }
278
+ exports.MemberPaperKeyService = MemberPaperKeyService;
279
+ //# sourceMappingURL=memberPaperKeyService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memberPaperKeyService.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/identity/memberPaperKeyService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Paper Key Service for the BrightChain identity system.
3
+ *
4
+ * Provides generation, validation, recovery, and template creation
5
+ * for 24-word BIP39 mnemonic paper keys. Paper keys serve as the
6
+ * primary mechanism for account backup, device provisioning, and
7
+ * account recovery.
8
+ *
9
+ * This service wraps the existing BIP39/ECIES infrastructure from
10
+ * {@link @digitaldefiance/ecies-lib} and exposes a focused API for
11
+ * paper key operations.
12
+ *
13
+ * Requirements: 1.1, 1.2, 1.3, 1.4, 1.8
14
+ */
15
+ import { ECIESService, Member, PlatformID, SecureString } from '@digitaldefiance/ecies-lib';
16
+ import { IPaperKeyTemplate } from '../../interfaces/identity/paperKey';
17
+ /**
18
+ * Service for generating, validating, and recovering from BIP39 paper keys.
19
+ *
20
+ * All methods require an {@link ECIESService} instance, which is obtained
21
+ * from {@link ServiceProvider}. This keeps the service stateless and
22
+ * compatible with the existing dependency-injection pattern used
23
+ * throughout BrightChain.
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const eciesService = ServiceProvider.getInstance().eciesService;
28
+ *
29
+ * // Generate a new paper key
30
+ * const paperKey = PaperKeyService.generatePaperKey(eciesService);
31
+ *
32
+ * // Validate it
33
+ * const isValid = PaperKeyService.validatePaperKey(paperKey, eciesService);
34
+ *
35
+ * // Recover a member from it
36
+ * const member = PaperKeyService.recoverFromPaperKey(paperKey, eciesService);
37
+ *
38
+ * // Generate a printable template
39
+ * const template = await PaperKeyService.generateTemplate(
40
+ * paperKey,
41
+ * member.id.toString(),
42
+ * );
43
+ * ```
44
+ */
45
+ export declare class PaperKeyService {
46
+ /**
47
+ * Generate a new 24-word BIP39 mnemonic paper key (256-bit entropy).
48
+ *
49
+ * Uses the ECIESService's mnemonic generator which internally calls
50
+ * `@scure/bip39.generateMnemonic(wordlist, 256)`.
51
+ *
52
+ * **Validates: Requirement 1.1** — Generate 24-word BIP39 mnemonics
53
+ *
54
+ * @param eciesService - The ECIES service instance for key generation
55
+ * @returns A {@link SecureString} containing the 24-word mnemonic
56
+ */
57
+ static generatePaperKey<TID extends PlatformID = Uint8Array>(eciesService: ECIESService<TID>): SecureString;
58
+ /**
59
+ * Validate that a paper key is a well-formed BIP39 mnemonic.
60
+ *
61
+ * Checks both structural validity (24 words, valid BIP39 checksum)
62
+ * by attempting to derive a wallet from the mnemonic. If derivation
63
+ * succeeds the mnemonic is valid; if it throws, the mnemonic is invalid.
64
+ *
65
+ * **Validates: Requirement 1.2** — Validate paper key format using BIP39 validation
66
+ *
67
+ * @param paperKey - The mnemonic string to validate
68
+ * @param eciesService - The ECIES service instance for validation
69
+ * @returns `true` if the paper key is a valid 24-word BIP39 mnemonic, `false` otherwise
70
+ */
71
+ static validatePaperKey<TID extends PlatformID = Uint8Array>(paperKey: string, eciesService: ECIESService<TID>): boolean;
72
+ /**
73
+ * Recover a {@link Member} identity from a paper key mnemonic.
74
+ *
75
+ * Reconstructs the full member (with private key and wallet loaded)
76
+ * from the BIP39 mnemonic. The recovered member can immediately
77
+ * perform cryptographic operations (sign, encrypt, etc.).
78
+ *
79
+ * **Validates: Requirement 1.3** — Recover Member identity from a valid paper key
80
+ *
81
+ * @param paperKey - The 24-word BIP39 mnemonic
82
+ * @param eciesService - The ECIES service instance for key derivation
83
+ * @param name - Optional display name for the recovered member (default: 'Recovered User')
84
+ * @returns A fully-initialised {@link Member} with wallet and private key loaded
85
+ * @throws {Error} If the paper key is invalid or key derivation fails
86
+ */
87
+ static recoverFromPaperKey<TID extends PlatformID = Uint8Array>(paperKey: string, eciesService: ECIESService<TID>, name?: string): Member<TID>;
88
+ /**
89
+ * Generate a printable paper key template.
90
+ *
91
+ * Produces an {@link IPaperKeyTemplate} containing the mnemonic words,
92
+ * a QR code data URL for mobile scanning, creation timestamp,
93
+ * storage instructions, and security warnings.
94
+ *
95
+ * The QR code encodes the full mnemonic string and is generated
96
+ * using the `qrcode` library (same pattern as {@link TOTPEngine}).
97
+ *
98
+ * **Validates: Requirements 1.4, 1.8, 1.10** — Printable template with QR code and warnings
99
+ *
100
+ * @param paperKey - The 24-word BIP39 mnemonic to template
101
+ * @param memberId - The member ID to associate with the template
102
+ * @returns A promise resolving to the complete {@link IPaperKeyTemplate}
103
+ */
104
+ static generateTemplate(paperKey: string, memberId: string): Promise<IPaperKeyTemplate>;
105
+ }
106
+ //# sourceMappingURL=paperKeyService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paperKeyService.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/identity/paperKeyService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,YAAY,EACZ,MAAM,EACN,UAAU,EACV,YAAY,EACb,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAyBvE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,eAAe;IAC1B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,EACzD,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,GAC9B,YAAY;IAIf;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,EACzD,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,GAC9B,OAAO;IAkBV;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,mBAAmB,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,EAC5D,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,EAC/B,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAAC,GAAG,CAAC;IAUd;;;;;;;;;;;;;;;OAeG;WACU,gBAAgB,CAC3B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,CAAC;CAa9B"}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ /**
3
+ * Paper Key Service for the BrightChain identity system.
4
+ *
5
+ * Provides generation, validation, recovery, and template creation
6
+ * for 24-word BIP39 mnemonic paper keys. Paper keys serve as the
7
+ * primary mechanism for account backup, device provisioning, and
8
+ * account recovery.
9
+ *
10
+ * This service wraps the existing BIP39/ECIES infrastructure from
11
+ * {@link @digitaldefiance/ecies-lib} and exposes a focused API for
12
+ * paper key operations.
13
+ *
14
+ * Requirements: 1.1, 1.2, 1.3, 1.4, 1.8
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.PaperKeyService = void 0;
18
+ const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
19
+ const QRCode = require("qrcode");
20
+ /**
21
+ * Default security warnings displayed on every paper key template.
22
+ *
23
+ * These warnings are mandated by Requirement 1.10 and must appear
24
+ * on every printed template.
25
+ */
26
+ const PAPER_KEY_WARNINGS = [
27
+ 'Anyone with this paper key can access your account',
28
+ 'Do not store digitally or photograph',
29
+ 'Consider splitting among trusted parties',
30
+ ];
31
+ /**
32
+ * Default instructions for paper key storage.
33
+ */
34
+ const PAPER_KEY_INSTRUCTIONS = 'Store this paper key in a secure location. You will need it to recover your account.';
35
+ /**
36
+ * Expected word count for a 256-bit entropy BIP39 mnemonic.
37
+ */
38
+ const PAPER_KEY_WORD_COUNT = 24;
39
+ /**
40
+ * Service for generating, validating, and recovering from BIP39 paper keys.
41
+ *
42
+ * All methods require an {@link ECIESService} instance, which is obtained
43
+ * from {@link ServiceProvider}. This keeps the service stateless and
44
+ * compatible with the existing dependency-injection pattern used
45
+ * throughout BrightChain.
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const eciesService = ServiceProvider.getInstance().eciesService;
50
+ *
51
+ * // Generate a new paper key
52
+ * const paperKey = PaperKeyService.generatePaperKey(eciesService);
53
+ *
54
+ * // Validate it
55
+ * const isValid = PaperKeyService.validatePaperKey(paperKey, eciesService);
56
+ *
57
+ * // Recover a member from it
58
+ * const member = PaperKeyService.recoverFromPaperKey(paperKey, eciesService);
59
+ *
60
+ * // Generate a printable template
61
+ * const template = await PaperKeyService.generateTemplate(
62
+ * paperKey,
63
+ * member.id.toString(),
64
+ * );
65
+ * ```
66
+ */
67
+ class PaperKeyService {
68
+ /**
69
+ * Generate a new 24-word BIP39 mnemonic paper key (256-bit entropy).
70
+ *
71
+ * Uses the ECIESService's mnemonic generator which internally calls
72
+ * `@scure/bip39.generateMnemonic(wordlist, 256)`.
73
+ *
74
+ * **Validates: Requirement 1.1** — Generate 24-word BIP39 mnemonics
75
+ *
76
+ * @param eciesService - The ECIES service instance for key generation
77
+ * @returns A {@link SecureString} containing the 24-word mnemonic
78
+ */
79
+ static generatePaperKey(eciesService) {
80
+ return eciesService.generateNewMnemonic();
81
+ }
82
+ /**
83
+ * Validate that a paper key is a well-formed BIP39 mnemonic.
84
+ *
85
+ * Checks both structural validity (24 words, valid BIP39 checksum)
86
+ * by attempting to derive a wallet from the mnemonic. If derivation
87
+ * succeeds the mnemonic is valid; if it throws, the mnemonic is invalid.
88
+ *
89
+ * **Validates: Requirement 1.2** — Validate paper key format using BIP39 validation
90
+ *
91
+ * @param paperKey - The mnemonic string to validate
92
+ * @param eciesService - The ECIES service instance for validation
93
+ * @returns `true` if the paper key is a valid 24-word BIP39 mnemonic, `false` otherwise
94
+ */
95
+ static validatePaperKey(paperKey, eciesService) {
96
+ // Quick structural check: must be exactly 24 words
97
+ const words = paperKey.trim().split(/\s+/);
98
+ if (words.length !== PAPER_KEY_WORD_COUNT) {
99
+ return false;
100
+ }
101
+ try {
102
+ // Attempt wallet derivation — this internally calls
103
+ // @scure/bip39.validateMnemonic and throws on invalid input
104
+ const secureString = new ecies_lib_1.SecureString(paperKey);
105
+ eciesService.walletAndSeedFromMnemonic(secureString);
106
+ return true;
107
+ }
108
+ catch {
109
+ return false;
110
+ }
111
+ }
112
+ /**
113
+ * Recover a {@link Member} identity from a paper key mnemonic.
114
+ *
115
+ * Reconstructs the full member (with private key and wallet loaded)
116
+ * from the BIP39 mnemonic. The recovered member can immediately
117
+ * perform cryptographic operations (sign, encrypt, etc.).
118
+ *
119
+ * **Validates: Requirement 1.3** — Recover Member identity from a valid paper key
120
+ *
121
+ * @param paperKey - The 24-word BIP39 mnemonic
122
+ * @param eciesService - The ECIES service instance for key derivation
123
+ * @param name - Optional display name for the recovered member (default: 'Recovered User')
124
+ * @returns A fully-initialised {@link Member} with wallet and private key loaded
125
+ * @throws {Error} If the paper key is invalid or key derivation fails
126
+ */
127
+ static recoverFromPaperKey(paperKey, eciesService, name) {
128
+ const secureString = new ecies_lib_1.SecureString(paperKey);
129
+ return ecies_lib_1.Member.fromMnemonic(secureString, eciesService, undefined, name ?? 'Recovered User');
130
+ }
131
+ /**
132
+ * Generate a printable paper key template.
133
+ *
134
+ * Produces an {@link IPaperKeyTemplate} containing the mnemonic words,
135
+ * a QR code data URL for mobile scanning, creation timestamp,
136
+ * storage instructions, and security warnings.
137
+ *
138
+ * The QR code encodes the full mnemonic string and is generated
139
+ * using the `qrcode` library (same pattern as {@link TOTPEngine}).
140
+ *
141
+ * **Validates: Requirements 1.4, 1.8, 1.10** — Printable template with QR code and warnings
142
+ *
143
+ * @param paperKey - The 24-word BIP39 mnemonic to template
144
+ * @param memberId - The member ID to associate with the template
145
+ * @returns A promise resolving to the complete {@link IPaperKeyTemplate}
146
+ */
147
+ static async generateTemplate(paperKey, memberId) {
148
+ const words = paperKey.trim().split(/\s+/);
149
+ const qrCode = await QRCode.toDataURL(paperKey);
150
+ return {
151
+ words,
152
+ qrCode,
153
+ createdAt: new Date(),
154
+ memberId,
155
+ instructions: PAPER_KEY_INSTRUCTIONS,
156
+ warnings: [...PAPER_KEY_WARNINGS],
157
+ };
158
+ }
159
+ }
160
+ exports.PaperKeyService = PaperKeyService;
161
+ //# sourceMappingURL=paperKeyService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paperKeyService.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/identity/paperKeyService.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAEH,0DAKoC;AACpC,iCAAiC;AAIjC;;;;;GAKG;AACH,MAAM,kBAAkB,GAAsB;IAC5C,oDAAoD;IACpD,sCAAsC;IACtC,0CAA0C;CAClC,CAAC;AAEX;;GAEG;AACH,MAAM,sBAAsB,GAC1B,sFAAsF,CAAC;AAEzF;;GAEG;AACH,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAa,eAAe;IAC1B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,gBAAgB,CACrB,YAA+B;QAE/B,OAAO,YAAY,CAAC,mBAAmB,EAAE,CAAC;IAC5C,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,gBAAgB,CACrB,QAAgB,EAChB,YAA+B;QAE/B,mDAAmD;QACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,oBAAoB,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,oDAAoD;YACpD,4DAA4D;YAC5D,MAAM,YAAY,GAAG,IAAI,wBAAY,CAAC,QAAQ,CAAC,CAAC;YAChD,YAAY,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,mBAAmB,CACxB,QAAgB,EAChB,YAA+B,EAC/B,IAAa;QAEb,MAAM,YAAY,GAAG,IAAI,wBAAY,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,kBAAM,CAAC,YAAY,CACxB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,IAAI,IAAI,gBAAgB,CACzB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,QAAgB,EAChB,QAAgB;QAEhB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEhD,OAAO;YACL,KAAK;YACL,MAAM;YACN,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,QAAQ;YACR,YAAY,EAAE,sBAAsB;YACpC,QAAQ,EAAE,CAAC,GAAG,kBAAkB,CAAC;SAClC,CAAC;IACJ,CAAC;CACF;AAjHD,0CAiHC"}