@brightchain/brightchain-lib 0.30.1 → 0.31.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 (344) hide show
  1. package/README.md +34 -5
  2. package/package.json +4 -4
  3. package/src/browser.d.ts +7 -0
  4. package/src/browser.d.ts.map +1 -1
  5. package/src/browser.js +21 -1
  6. package/src/browser.js.map +1 -1
  7. package/src/lib/asset/assetAccount.d.ts +66 -0
  8. package/src/lib/asset/assetAccount.d.ts.map +1 -0
  9. package/src/lib/asset/assetAccount.js +192 -0
  10. package/src/lib/asset/assetAccount.js.map +1 -0
  11. package/src/lib/asset/formatAssetAmount.d.ts +30 -0
  12. package/src/lib/asset/formatAssetAmount.d.ts.map +1 -0
  13. package/src/lib/asset/formatAssetAmount.js +54 -0
  14. package/src/lib/asset/formatAssetAmount.js.map +1 -0
  15. package/src/lib/asset/index.d.ts +11 -0
  16. package/src/lib/asset/index.d.ts.map +1 -0
  17. package/src/lib/asset/index.js +14 -0
  18. package/src/lib/asset/index.js.map +1 -0
  19. package/src/lib/asset/jouleConstants.d.ts +21 -0
  20. package/src/lib/asset/jouleConstants.d.ts.map +1 -0
  21. package/src/lib/asset/jouleConstants.js +24 -0
  22. package/src/lib/asset/jouleConstants.js.map +1 -0
  23. package/src/lib/asset/microunits.d.ts +19 -0
  24. package/src/lib/asset/microunits.d.ts.map +1 -0
  25. package/src/lib/asset/microunits.js +36 -0
  26. package/src/lib/asset/microunits.js.map +1 -0
  27. package/src/lib/constants.d.ts +3 -1
  28. package/src/lib/constants.d.ts.map +1 -1
  29. package/src/lib/constants.js +23 -1
  30. package/src/lib/constants.js.map +1 -1
  31. package/src/lib/db/driverBackedHeadRegistry.d.ts +42 -0
  32. package/src/lib/db/driverBackedHeadRegistry.d.ts.map +1 -0
  33. package/src/lib/db/driverBackedHeadRegistry.js +146 -0
  34. package/src/lib/db/driverBackedHeadRegistry.js.map +1 -0
  35. package/src/lib/db/headRegistryGossipTransport.d.ts +74 -0
  36. package/src/lib/db/headRegistryGossipTransport.d.ts.map +1 -0
  37. package/src/lib/db/headRegistryGossipTransport.js +153 -0
  38. package/src/lib/db/headRegistryGossipTransport.js.map +1 -0
  39. package/src/lib/db/inMemoryHeadRegistry.d.ts +9 -0
  40. package/src/lib/db/inMemoryHeadRegistry.d.ts.map +1 -1
  41. package/src/lib/db/inMemoryHeadRegistry.js +48 -0
  42. package/src/lib/db/inMemoryHeadRegistry.js.map +1 -1
  43. package/src/lib/db/inMemoryHeadRegistryDriver.d.ts +13 -0
  44. package/src/lib/db/inMemoryHeadRegistryDriver.d.ts.map +1 -0
  45. package/src/lib/db/inMemoryHeadRegistryDriver.js +24 -0
  46. package/src/lib/db/inMemoryHeadRegistryDriver.js.map +1 -0
  47. package/src/lib/db/index.d.ts +3 -0
  48. package/src/lib/db/index.d.ts.map +1 -1
  49. package/src/lib/db/index.js +3 -0
  50. package/src/lib/db/index.js.map +1 -1
  51. package/src/lib/energyAccount.d.ts +15 -62
  52. package/src/lib/energyAccount.d.ts.map +1 -1
  53. package/src/lib/energyAccount.js +20 -118
  54. package/src/lib/energyAccount.js.map +1 -1
  55. package/src/lib/enumerations/brightChainStrings.d.ts +123 -0
  56. package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
  57. package/src/lib/enumerations/brightChainStrings.js +130 -0
  58. package/src/lib/enumerations/brightChainStrings.js.map +1 -1
  59. package/src/lib/enumerations/difficultyTier.d.ts +20 -0
  60. package/src/lib/enumerations/difficultyTier.d.ts.map +1 -0
  61. package/src/lib/enumerations/difficultyTier.js +25 -0
  62. package/src/lib/enumerations/difficultyTier.js.map +1 -0
  63. package/src/lib/enumerations/index.d.ts +2 -1
  64. package/src/lib/enumerations/index.d.ts.map +1 -1
  65. package/src/lib/enumerations/index.js +3 -1
  66. package/src/lib/enumerations/index.js.map +1 -1
  67. package/src/lib/errors/asset/assetUnknownError.d.ts +12 -0
  68. package/src/lib/errors/asset/assetUnknownError.d.ts.map +1 -0
  69. package/src/lib/errors/asset/assetUnknownError.js +21 -0
  70. package/src/lib/errors/asset/assetUnknownError.js.map +1 -0
  71. package/src/lib/errors/asset/index.d.ts +13 -0
  72. package/src/lib/errors/asset/index.d.ts.map +1 -0
  73. package/src/lib/errors/asset/index.js +16 -0
  74. package/src/lib/errors/asset/index.js.map +1 -0
  75. package/src/lib/errors/asset/insufficientAvailableBalanceError.d.ts +13 -0
  76. package/src/lib/errors/asset/insufficientAvailableBalanceError.d.ts.map +1 -0
  77. package/src/lib/errors/asset/insufficientAvailableBalanceError.js +25 -0
  78. package/src/lib/errors/asset/insufficientAvailableBalanceError.js.map +1 -0
  79. package/src/lib/errors/asset/invalidAmountError.d.ts +11 -0
  80. package/src/lib/errors/asset/invalidAmountError.d.ts.map +1 -0
  81. package/src/lib/errors/asset/invalidAmountError.js +20 -0
  82. package/src/lib/errors/asset/invalidAmountError.js.map +1 -0
  83. package/src/lib/errors/asset/ledgerAlreadyAttachedError.d.ts +11 -0
  84. package/src/lib/errors/asset/ledgerAlreadyAttachedError.d.ts.map +1 -0
  85. package/src/lib/errors/asset/ledgerAlreadyAttachedError.js +19 -0
  86. package/src/lib/errors/asset/ledgerAlreadyAttachedError.js.map +1 -0
  87. package/src/lib/errors/asset/mixedAssetError.d.ts +12 -0
  88. package/src/lib/errors/asset/mixedAssetError.d.ts.map +1 -0
  89. package/src/lib/errors/asset/mixedAssetError.js +22 -0
  90. package/src/lib/errors/asset/mixedAssetError.js.map +1 -0
  91. package/src/lib/errors/asset/reservationExpiredError.d.ts +13 -0
  92. package/src/lib/errors/asset/reservationExpiredError.d.ts.map +1 -0
  93. package/src/lib/errors/asset/reservationExpiredError.js +24 -0
  94. package/src/lib/errors/asset/reservationExpiredError.js.map +1 -0
  95. package/src/lib/errors/asset/reservationNotFoundError.d.ts +11 -0
  96. package/src/lib/errors/asset/reservationNotFoundError.d.ts.map +1 -0
  97. package/src/lib/errors/asset/reservationNotFoundError.js +20 -0
  98. package/src/lib/errors/asset/reservationNotFoundError.js.map +1 -0
  99. package/src/lib/errors/encryptionErrors.d.ts.map +1 -1
  100. package/src/lib/errors/encryptionErrors.js.map +1 -1
  101. package/src/lib/errors/friendsServiceError.d.ts.map +1 -1
  102. package/src/lib/errors/friendsServiceError.js.map +1 -1
  103. package/src/lib/errors/index.d.ts +18 -0
  104. package/src/lib/errors/index.d.ts.map +1 -1
  105. package/src/lib/errors/index.js +21 -0
  106. package/src/lib/errors/index.js.map +1 -1
  107. package/src/lib/i18n/strings/englishUs.d.ts.map +1 -1
  108. package/src/lib/i18n/strings/englishUs.js +131 -1
  109. package/src/lib/i18n/strings/englishUs.js.map +1 -1
  110. package/src/lib/i18n/strings/french.d.ts.map +1 -1
  111. package/src/lib/i18n/strings/french.js +133 -3
  112. package/src/lib/i18n/strings/french.js.map +1 -1
  113. package/src/lib/i18n/strings/german.d.ts.map +1 -1
  114. package/src/lib/i18n/strings/german.js +131 -1
  115. package/src/lib/i18n/strings/german.js.map +1 -1
  116. package/src/lib/i18n/strings/japanese.d.ts.map +1 -1
  117. package/src/lib/i18n/strings/japanese.js +131 -1
  118. package/src/lib/i18n/strings/japanese.js.map +1 -1
  119. package/src/lib/i18n/strings/mandarin.d.ts.map +1 -1
  120. package/src/lib/i18n/strings/mandarin.js +131 -1
  121. package/src/lib/i18n/strings/mandarin.js.map +1 -1
  122. package/src/lib/i18n/strings/spanish.d.ts.map +1 -1
  123. package/src/lib/i18n/strings/spanish.js +131 -1
  124. package/src/lib/i18n/strings/spanish.js.map +1 -1
  125. package/src/lib/i18n/strings/ukrainian.d.ts.map +1 -1
  126. package/src/lib/i18n/strings/ukrainian.js +131 -1
  127. package/src/lib/i18n/strings/ukrainian.js.map +1 -1
  128. package/src/lib/index.d.ts +36 -1
  129. package/src/lib/index.d.ts.map +1 -1
  130. package/src/lib/index.js +48 -1
  131. package/src/lib/index.js.map +1 -1
  132. package/src/lib/interfaces/appSubsystemPlugin.d.ts +6 -1
  133. package/src/lib/interfaces/appSubsystemPlugin.d.ts.map +1 -1
  134. package/src/lib/interfaces/assetAccount.d.ts +91 -0
  135. package/src/lib/interfaces/assetAccount.d.ts.map +1 -0
  136. package/src/lib/interfaces/assetAccount.js +3 -0
  137. package/src/lib/interfaces/assetAccount.js.map +1 -0
  138. package/src/lib/interfaces/brightpass/vaultEntry.d.ts +38 -0
  139. package/src/lib/interfaces/brightpass/vaultEntry.d.ts.map +1 -1
  140. package/src/lib/interfaces/brightpass/vaultMetadata.d.ts +11 -0
  141. package/src/lib/interfaces/brightpass/vaultMetadata.d.ts.map +1 -1
  142. package/src/lib/interfaces/communication/chatStorageProvider.d.ts +1 -1
  143. package/src/lib/interfaces/communication/chatStorageProvider.d.ts.map +1 -1
  144. package/src/lib/interfaces/communication/index.d.ts +2 -0
  145. package/src/lib/interfaces/communication/index.d.ts.map +1 -1
  146. package/src/lib/interfaces/communication/index.js +2 -0
  147. package/src/lib/interfaces/communication/index.js.map +1 -1
  148. package/src/lib/interfaces/communication/server.d.ts +8 -0
  149. package/src/lib/interfaces/communication/server.d.ts.map +1 -1
  150. package/src/lib/interfaces/communication/serverIconConfig.d.ts +32 -0
  151. package/src/lib/interfaces/communication/serverIconConfig.d.ts.map +1 -0
  152. package/src/lib/interfaces/communication/serverIconConfig.js +35 -0
  153. package/src/lib/interfaces/communication/serverIconConfig.js.map +1 -0
  154. package/src/lib/interfaces/communication/serverIconRequest.d.ts +12 -0
  155. package/src/lib/interfaces/communication/serverIconRequest.d.ts.map +1 -0
  156. package/src/lib/interfaces/communication/serverIconRequest.js +3 -0
  157. package/src/lib/interfaces/communication/serverIconRequest.js.map +1 -0
  158. package/src/lib/interfaces/constants.d.ts +14 -0
  159. package/src/lib/interfaces/constants.d.ts.map +1 -1
  160. package/src/lib/interfaces/energyAccount.d.ts +13 -34
  161. package/src/lib/interfaces/energyAccount.d.ts.map +1 -1
  162. package/src/lib/interfaces/energyTransaction.d.ts +25 -6
  163. package/src/lib/interfaces/energyTransaction.d.ts.map +1 -1
  164. package/src/lib/interfaces/identity/brightChainIdentity.d.ts +29 -0
  165. package/src/lib/interfaces/identity/brightChainIdentity.d.ts.map +1 -0
  166. package/src/lib/interfaces/identity/brightChainIdentity.js +3 -0
  167. package/src/lib/interfaces/identity/brightChainIdentity.js.map +1 -0
  168. package/src/lib/interfaces/identity/index.d.ts +1 -0
  169. package/src/lib/interfaces/identity/index.d.ts.map +1 -1
  170. package/src/lib/interfaces/index.d.ts +5 -0
  171. package/src/lib/interfaces/index.d.ts.map +1 -1
  172. package/src/lib/interfaces/index.js +8 -0
  173. package/src/lib/interfaces/index.js.map +1 -1
  174. package/src/lib/interfaces/messaging/attachmentMetadata.d.ts +12 -0
  175. package/src/lib/interfaces/messaging/attachmentMetadata.d.ts.map +1 -1
  176. package/src/lib/interfaces/messaging/emailMetadata.d.ts +55 -0
  177. package/src/lib/interfaces/messaging/emailMetadata.d.ts.map +1 -1
  178. package/src/lib/interfaces/messaging/emailMetadata.js.map +1 -1
  179. package/src/lib/interfaces/pouw/challengeToken.d.ts +20 -0
  180. package/src/lib/interfaces/pouw/challengeToken.d.ts.map +1 -0
  181. package/src/lib/interfaces/pouw/challengeToken.js +3 -0
  182. package/src/lib/interfaces/pouw/challengeToken.js.map +1 -0
  183. package/src/lib/interfaces/pouw/index.d.ts +8 -0
  184. package/src/lib/interfaces/pouw/index.d.ts.map +1 -0
  185. package/src/lib/interfaces/pouw/index.js +12 -0
  186. package/src/lib/interfaces/pouw/index.js.map +1 -0
  187. package/src/lib/interfaces/pouw/pouwConfig.d.ts +91 -0
  188. package/src/lib/interfaces/pouw/pouwConfig.d.ts.map +1 -0
  189. package/src/lib/interfaces/pouw/pouwConfig.js +24 -0
  190. package/src/lib/interfaces/pouw/pouwConfig.js.map +1 -0
  191. package/src/lib/interfaces/pouw/pouwMetrics.d.ts +23 -0
  192. package/src/lib/interfaces/pouw/pouwMetrics.d.ts.map +1 -0
  193. package/src/lib/interfaces/pouw/pouwMetrics.js +3 -0
  194. package/src/lib/interfaces/pouw/pouwMetrics.js.map +1 -0
  195. package/src/lib/interfaces/pouw/workResult.d.ts +19 -0
  196. package/src/lib/interfaces/pouw/workResult.d.ts.map +1 -0
  197. package/src/lib/interfaces/pouw/workResult.js +3 -0
  198. package/src/lib/interfaces/pouw/workResult.js.map +1 -0
  199. package/src/lib/interfaces/pouw/workUnit.d.ts +48 -0
  200. package/src/lib/interfaces/pouw/workUnit.d.ts.map +1 -0
  201. package/src/lib/interfaces/pouw/workUnit.js +14 -0
  202. package/src/lib/interfaces/pouw/workUnit.js.map +1 -0
  203. package/src/lib/interfaces/responses/adminDashboardResponse.d.ts +7 -0
  204. package/src/lib/interfaces/responses/adminDashboardResponse.d.ts.map +1 -1
  205. package/src/lib/interfaces/responses/communicationResponses.d.ts +2 -0
  206. package/src/lib/interfaces/responses/communicationResponses.d.ts.map +1 -1
  207. package/src/lib/interfaces/responses/identityResponseData.d.ts +10 -0
  208. package/src/lib/interfaces/responses/identityResponseData.d.ts.map +1 -0
  209. package/src/lib/interfaces/responses/identityResponseData.js +3 -0
  210. package/src/lib/interfaces/responses/identityResponseData.js.map +1 -0
  211. package/src/lib/interfaces/responses/index.d.ts +1 -0
  212. package/src/lib/interfaces/responses/index.d.ts.map +1 -1
  213. package/src/lib/interfaces/staging/commitRequest.d.ts +28 -0
  214. package/src/lib/interfaces/staging/commitRequest.d.ts.map +1 -0
  215. package/src/lib/interfaces/staging/commitRequest.js +3 -0
  216. package/src/lib/interfaces/staging/commitRequest.js.map +1 -0
  217. package/src/lib/interfaces/staging/commitResponse.d.ts +17 -0
  218. package/src/lib/interfaces/staging/commitResponse.d.ts.map +1 -0
  219. package/src/lib/interfaces/staging/commitResponse.js +3 -0
  220. package/src/lib/interfaces/staging/commitResponse.js.map +1 -0
  221. package/src/lib/interfaces/staging/index.d.ts +7 -0
  222. package/src/lib/interfaces/staging/index.d.ts.map +1 -0
  223. package/src/lib/interfaces/staging/index.js +6 -0
  224. package/src/lib/interfaces/staging/index.js.map +1 -0
  225. package/src/lib/interfaces/staging/processingParams.d.ts +16 -0
  226. package/src/lib/interfaces/staging/processingParams.d.ts.map +1 -0
  227. package/src/lib/interfaces/staging/processingParams.js +3 -0
  228. package/src/lib/interfaces/staging/processingParams.js.map +1 -0
  229. package/src/lib/interfaces/staging/stagedFileRecord.d.ts +23 -0
  230. package/src/lib/interfaces/staging/stagedFileRecord.d.ts.map +1 -0
  231. package/src/lib/interfaces/staging/stagedFileRecord.js +3 -0
  232. package/src/lib/interfaces/staging/stagedFileRecord.js.map +1 -0
  233. package/src/lib/interfaces/staging/stagingConfig.d.ts +19 -0
  234. package/src/lib/interfaces/staging/stagingConfig.d.ts.map +1 -0
  235. package/src/lib/interfaces/staging/stagingConfig.js +11 -0
  236. package/src/lib/interfaces/staging/stagingConfig.js.map +1 -0
  237. package/src/lib/interfaces/staging/tempUploadResponse.d.ts +19 -0
  238. package/src/lib/interfaces/staging/tempUploadResponse.d.ts.map +1 -0
  239. package/src/lib/interfaces/staging/tempUploadResponse.js +3 -0
  240. package/src/lib/interfaces/staging/tempUploadResponse.js.map +1 -0
  241. package/src/lib/interfaces/storage/blockStore.d.ts +22 -4
  242. package/src/lib/interfaces/storage/blockStore.d.ts.map +1 -1
  243. package/src/lib/interfaces/storage/headRegistry.d.ts +38 -0
  244. package/src/lib/interfaces/storage/headRegistry.d.ts.map +1 -1
  245. package/src/lib/interfaces/storage/headRegistryDriver.d.ts +47 -0
  246. package/src/lib/interfaces/storage/headRegistryDriver.d.ts.map +1 -0
  247. package/src/lib/interfaces/storage/headRegistryDriver.js +15 -0
  248. package/src/lib/interfaces/storage/headRegistryDriver.js.map +1 -0
  249. package/src/lib/interfaces/storage/index.d.ts +1 -0
  250. package/src/lib/interfaces/storage/index.d.ts.map +1 -1
  251. package/src/lib/interfaces/storage/index.js.map +1 -1
  252. package/src/lib/joule/formatJoule.d.ts +44 -0
  253. package/src/lib/joule/formatJoule.d.ts.map +1 -0
  254. package/src/lib/joule/formatJoule.js +121 -0
  255. package/src/lib/joule/formatJoule.js.map +1 -0
  256. package/src/lib/joule/index.d.ts +10 -0
  257. package/src/lib/joule/index.d.ts.map +1 -0
  258. package/src/lib/joule/index.js +13 -0
  259. package/src/lib/joule/index.js.map +1 -0
  260. package/src/lib/joule/jouleConstants.d.ts +13 -0
  261. package/src/lib/joule/jouleConstants.d.ts.map +1 -0
  262. package/src/lib/joule/jouleConstants.js +18 -0
  263. package/src/lib/joule/jouleConstants.js.map +1 -0
  264. package/src/lib/joule/rateTable.d.ts +55 -0
  265. package/src/lib/joule/rateTable.d.ts.map +1 -0
  266. package/src/lib/joule/rateTable.js +58 -0
  267. package/src/lib/joule/rateTable.js.map +1 -0
  268. package/src/lib/joule/resourceClass.d.ts +18 -0
  269. package/src/lib/joule/resourceClass.d.ts.map +1 -0
  270. package/src/lib/joule/resourceClass.js +28 -0
  271. package/src/lib/joule/resourceClass.js.map +1 -0
  272. package/src/lib/operationCost.d.ts +12 -7
  273. package/src/lib/operationCost.d.ts.map +1 -1
  274. package/src/lib/operationCost.js +11 -4
  275. package/src/lib/operationCost.js.map +1 -1
  276. package/src/lib/pouw/computeWorkUnit.d.ts +41 -0
  277. package/src/lib/pouw/computeWorkUnit.d.ts.map +1 -0
  278. package/src/lib/pouw/computeWorkUnit.js +92 -0
  279. package/src/lib/pouw/computeWorkUnit.js.map +1 -0
  280. package/src/lib/pouw/index.d.ts +8 -0
  281. package/src/lib/pouw/index.d.ts.map +1 -0
  282. package/src/lib/pouw/index.js +12 -0
  283. package/src/lib/pouw/index.js.map +1 -0
  284. package/src/lib/serializers/index.d.ts +2 -0
  285. package/src/lib/serializers/index.d.ts.map +1 -0
  286. package/src/lib/serializers/index.js +10 -0
  287. package/src/lib/serializers/index.js.map +1 -0
  288. package/src/lib/serializers/workUnitSerializer.d.ts +39 -0
  289. package/src/lib/serializers/workUnitSerializer.d.ts.map +1 -0
  290. package/src/lib/serializers/workUnitSerializer.js +150 -0
  291. package/src/lib/serializers/workUnitSerializer.js.map +1 -0
  292. package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts +1 -1
  293. package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts.map +1 -1
  294. package/src/lib/services/communication/__tests__/mockChatStorageProvider.js +5 -3
  295. package/src/lib/services/communication/__tests__/mockChatStorageProvider.js.map +1 -1
  296. package/src/lib/services/communication/__tests__/mockStorageProvider.d.ts +6 -0
  297. package/src/lib/services/communication/__tests__/mockStorageProvider.d.ts.map +1 -0
  298. package/src/lib/services/communication/__tests__/mockStorageProvider.js +41 -0
  299. package/src/lib/services/communication/__tests__/mockStorageProvider.js.map +1 -0
  300. package/src/lib/services/communication/channelService.d.ts +1 -1
  301. package/src/lib/services/communication/channelService.d.ts.map +1 -1
  302. package/src/lib/services/communication/channelService.js +2 -2
  303. package/src/lib/services/communication/channelService.js.map +1 -1
  304. package/src/lib/services/communication/conversationService.d.ts +1 -1
  305. package/src/lib/services/communication/conversationService.d.ts.map +1 -1
  306. package/src/lib/services/communication/conversationService.js +2 -2
  307. package/src/lib/services/communication/conversationService.js.map +1 -1
  308. package/src/lib/services/communication/groupService.d.ts +1 -1
  309. package/src/lib/services/communication/groupService.d.ts.map +1 -1
  310. package/src/lib/services/communication/groupService.js +2 -2
  311. package/src/lib/services/communication/groupService.js.map +1 -1
  312. package/src/lib/services/communication/rehydrationHelpers.d.ts.map +1 -1
  313. package/src/lib/services/communication/rehydrationHelpers.js +1 -2
  314. package/src/lib/services/communication/rehydrationHelpers.js.map +1 -1
  315. package/src/lib/services/communication/serverService.d.ts +13 -115
  316. package/src/lib/services/communication/serverService.d.ts.map +1 -1
  317. package/src/lib/services/communication/serverService.js +91 -235
  318. package/src/lib/services/communication/serverService.js.map +1 -1
  319. package/src/lib/services/copyOnWrite.service.d.ts.map +1 -1
  320. package/src/lib/services/copyOnWrite.service.js +1 -2
  321. package/src/lib/services/copyOnWrite.service.js.map +1 -1
  322. package/src/lib/services/messaging/emailMessageService.d.ts +89 -0
  323. package/src/lib/services/messaging/emailMessageService.d.ts.map +1 -1
  324. package/src/lib/services/messaging/emailMessageService.js +207 -28
  325. package/src/lib/services/messaging/emailMessageService.js.map +1 -1
  326. package/src/lib/services/messaging/emailParser.d.ts.map +1 -1
  327. package/src/lib/services/messaging/emailParser.js +1 -0
  328. package/src/lib/services/messaging/emailParser.js.map +1 -1
  329. package/src/lib/stores/assetAccountStore.d.ts +102 -0
  330. package/src/lib/stores/assetAccountStore.d.ts.map +1 -0
  331. package/src/lib/stores/assetAccountStore.js +276 -0
  332. package/src/lib/stores/assetAccountStore.js.map +1 -0
  333. package/src/lib/stores/blockStoreAdapter.d.ts +2 -0
  334. package/src/lib/stores/blockStoreAdapter.d.ts.map +1 -1
  335. package/src/lib/stores/blockStoreAdapter.js +3 -0
  336. package/src/lib/stores/blockStoreAdapter.js.map +1 -1
  337. package/src/lib/stores/energyAccountStore.d.ts +22 -36
  338. package/src/lib/stores/energyAccountStore.d.ts.map +1 -1
  339. package/src/lib/stores/energyAccountStore.js +33 -63
  340. package/src/lib/stores/energyAccountStore.js.map +1 -1
  341. package/src/lib/stores/memoryBlockStore.d.ts +16 -1
  342. package/src/lib/stores/memoryBlockStore.d.ts.map +1 -1
  343. package/src/lib/stores/memoryBlockStore.js +42 -6
  344. package/src/lib/stores/memoryBlockStore.js.map +1 -1
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ /**
3
+ * HeadRegistryGossipTransport — Gossip-aware decorator for IHeadRegistry.
4
+ *
5
+ * Wraps any IHeadRegistry and wires it to an IGossipService so that:
6
+ * 1. Outbound: after every successful setHead(), the update is announced
7
+ * to peers via gossip.
8
+ * 2. Inbound: incoming 'head_update' gossip announcements are merged into
9
+ * the wrapped registry using last-writer-wins semantics.
10
+ * 3. Anti-entropy: an optional periodic timer re-announces all known head
11
+ * pointers so that nodes that missed earlier announcements can converge.
12
+ *
13
+ * Usage:
14
+ * const transport = new HeadRegistryGossipTransport(inner, gossipService);
15
+ * transport.start(30_000); // optional anti-entropy every 30 s
16
+ * // … use transport as an IHeadRegistry …
17
+ * await transport.stop();
18
+ *
19
+ * @see Requirements 2.1, 7.1, 7.2
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.HeadRegistryGossipTransport = void 0;
23
+ class HeadRegistryGossipTransport {
24
+ inner;
25
+ gossip;
26
+ announcementHandler;
27
+ antiEntropyTimer;
28
+ constructor(inner, gossip) {
29
+ this.inner = inner;
30
+ this.gossip = gossip;
31
+ // Build the inbound handler once so we can unregister the exact same
32
+ // reference in stop().
33
+ this.announcementHandler = (ann) => {
34
+ if (ann.type !== 'head_update' || !ann.headUpdate)
35
+ return;
36
+ const { dbName, collectionName } = ann.headUpdate;
37
+ const blockId = String(ann.blockId);
38
+ const timestamp = ann.timestamp; // already a Date
39
+ // Best-effort inbound merge — do not let gossip errors surface.
40
+ this.inner
41
+ .mergeHeadUpdate(dbName, collectionName, blockId, timestamp)
42
+ .catch(() => {
43
+ // Intentionally swallowed: gossip failures must not crash the service.
44
+ });
45
+ };
46
+ this.gossip.onAnnouncement(this.announcementHandler);
47
+ }
48
+ // ── Lifecycle ────────────────────────────────────────────────────────────
49
+ /**
50
+ * Start the optional anti-entropy timer.
51
+ * When `antiEntropyIntervalMs` is provided and > 0, the transport will
52
+ * periodically re-announce all known head pointers so that peers that
53
+ * joined late (or missed earlier announcements) can converge.
54
+ *
55
+ * @param antiEntropyIntervalMs - Interval in milliseconds between anti-entropy
56
+ * passes. Pass 0 or omit to disable.
57
+ */
58
+ start(antiEntropyIntervalMs) {
59
+ if (antiEntropyIntervalMs && antiEntropyIntervalMs > 0) {
60
+ this.antiEntropyTimer = setInterval(() => {
61
+ void this.pushSnapshot();
62
+ }, antiEntropyIntervalMs);
63
+ }
64
+ }
65
+ /**
66
+ * Stop the anti-entropy timer and unregister the inbound handler.
67
+ * Should be called when the transport is no longer needed.
68
+ */
69
+ async stop() {
70
+ if (this.antiEntropyTimer !== undefined) {
71
+ clearInterval(this.antiEntropyTimer);
72
+ this.antiEntropyTimer = undefined;
73
+ }
74
+ this.gossip.offAnnouncement(this.announcementHandler);
75
+ }
76
+ /**
77
+ * Re-announce every known head pointer via gossip.
78
+ * Used by the anti-entropy timer and can also be called manually to
79
+ * trigger an immediate convergence pass.
80
+ */
81
+ async pushSnapshot() {
82
+ const snapshot = this.inner.exportSnapshot();
83
+ for (const [key, record] of snapshot) {
84
+ const colon = key.indexOf(':');
85
+ const dbName = colon === -1 ? key : key.slice(0, colon);
86
+ const collectionName = colon === -1 ? '' : key.slice(colon + 1);
87
+ try {
88
+ await this.gossip.announceHeadUpdate(dbName, collectionName, record.blockId);
89
+ }
90
+ catch {
91
+ // Best-effort: individual failures must not abort the whole pass.
92
+ }
93
+ }
94
+ }
95
+ // ── IHeadRegistry – mutations with outbound gossip ───────────────────────
96
+ /**
97
+ * Set the head pointer locally and announce the update to peers.
98
+ * Gossip announcement is best-effort: a failure does not roll back the
99
+ * local write.
100
+ */
101
+ async setHead(dbName, collectionName, blockId, writeProof) {
102
+ await this.inner.setHead(dbName, collectionName, blockId, writeProof);
103
+ // Best-effort outbound announcement.
104
+ try {
105
+ await this.gossip.announceHeadUpdate(dbName, collectionName, blockId);
106
+ }
107
+ catch {
108
+ // Intentionally swallowed: gossip failures must not break local writes.
109
+ }
110
+ }
111
+ // ── IHeadRegistry – pure delegations ─────────────────────────────────────
112
+ getHead(dbName, collectionName) {
113
+ return this.inner.getHead(dbName, collectionName);
114
+ }
115
+ async removeHead(dbName, collectionName, writeProof) {
116
+ return this.inner.removeHead(dbName, collectionName, writeProof);
117
+ }
118
+ async clear() {
119
+ return this.inner.clear();
120
+ }
121
+ async load() {
122
+ return this.inner.load();
123
+ }
124
+ getAllHeads() {
125
+ return this.inner.getAllHeads();
126
+ }
127
+ getHeadTimestamp(dbName, collectionName) {
128
+ return this.inner.getHeadTimestamp(dbName, collectionName);
129
+ }
130
+ async mergeHeadUpdate(dbName, collectionName, blockId, timestamp, writeProof) {
131
+ return this.inner.mergeHeadUpdate(dbName, collectionName, blockId, timestamp, writeProof);
132
+ }
133
+ async deferHeadUpdate(dbName, collectionName, blockId, timestamp) {
134
+ return this.inner.deferHeadUpdate(dbName, collectionName, blockId, timestamp);
135
+ }
136
+ async applyDeferredUpdates(blockId) {
137
+ return this.inner.applyDeferredUpdates(blockId);
138
+ }
139
+ getDeferredUpdates() {
140
+ return this.inner.getDeferredUpdates();
141
+ }
142
+ exportSnapshot() {
143
+ return this.inner.exportSnapshot();
144
+ }
145
+ async mergeSnapshot(snapshot) {
146
+ return this.inner.mergeSnapshot(snapshot);
147
+ }
148
+ onHeadChange(dbName, collectionName, callback) {
149
+ return this.inner.onHeadChange(dbName, collectionName, callback);
150
+ }
151
+ }
152
+ exports.HeadRegistryGossipTransport = HeadRegistryGossipTransport;
153
+ //# sourceMappingURL=headRegistryGossipTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headRegistryGossipTransport.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/headRegistryGossipTransport.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,12 @@
8
8
  * Use `createIsolated()` for test scenarios that need an independent registry.
9
9
  */
10
10
  import type { DeferredHeadUpdate, IHeadRegistry } from '../interfaces/storage/headRegistry';
11
+ import type { HeadRecord } from '../interfaces/storage/headRegistryDriver';
11
12
  export declare class InMemoryHeadRegistry implements IHeadRegistry {
12
13
  private readonly heads;
13
14
  private readonly timestamps;
14
15
  private readonly deferred;
16
+ private readonly changeListeners;
15
17
  private makeKey;
16
18
  getHead(dbName: string, collectionName: string): string | undefined;
17
19
  setHead(dbName: string, collectionName: string, blockId: string): Promise<void>;
@@ -21,9 +23,16 @@ export declare class InMemoryHeadRegistry implements IHeadRegistry {
21
23
  getAllHeads(): Map<string, string>;
22
24
  getHeadTimestamp(dbName: string, collectionName: string): Date | undefined;
23
25
  mergeHeadUpdate(dbName: string, collectionName: string, blockId: string, timestamp: Date): Promise<boolean>;
26
+ private notifyHeadChange;
27
+ onHeadChange(dbName: string, collectionName: string, callback: (blockId: string) => void): () => void;
24
28
  deferHeadUpdate(dbName: string, collectionName: string, blockId: string, timestamp: Date): Promise<void>;
25
29
  applyDeferredUpdates(blockId: string): Promise<number>;
26
30
  getDeferredUpdates(): DeferredHeadUpdate[];
31
+ exportSnapshot(): ReadonlyMap<string, HeadRecord>;
32
+ mergeSnapshot(snapshot: Iterable<readonly [string, HeadRecord]>): Promise<{
33
+ merged: number;
34
+ skipped: number;
35
+ }>;
27
36
  /**
28
37
  * Factory method that creates an independent InMemoryHeadRegistry instance.
29
38
  * Useful for tests that need isolated state.
@@ -1 +1 @@
1
- {"version":3,"file":"inMemoryHeadRegistry.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/inMemoryHeadRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACd,MAAM,oCAAoC,CAAC;AAE5C,qBAAa,oBAAqB,YAAW,aAAa;IACxD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IAErD,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI7D,OAAO,CACX,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAMV,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAIlC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIpE,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,IAAI,GACd,OAAO,CAAC,OAAO,CAAC;IAeb,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,IAAI,GACd,OAAO,CAAC,IAAI,CAAC;IAIV,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuB5D,kBAAkB,IAAI,kBAAkB,EAAE;IAI1C;;;OAGG;IACH,MAAM,CAAC,cAAc,IAAI,oBAAoB;CAG9C"}
1
+ {"version":3,"file":"inMemoryHeadRegistry.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/inMemoryHeadRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACd,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAE3E,qBAAa,oBAAqB,YAAW,aAAa;IACxD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG5B;IAEJ,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI7D,OAAO,CACX,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAMV,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAIlC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIpE,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,IAAI,GACd,OAAO,CAAC,OAAO,CAAC;IAgBnB,OAAO,CAAC,gBAAgB;IASxB,YAAY,CACV,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAClC,MAAM,IAAI;IAYP,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,IAAI,GACd,OAAO,CAAC,IAAI,CAAC;IAIV,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuB5D,kBAAkB,IAAI,kBAAkB,EAAE;IAI1C,cAAc,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC;IAY3C,aAAa,CACjB,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GAChD,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAsB/C;;;OAGG;IACH,MAAM,CAAC,cAAc,IAAI,oBAAoB;CAG9C"}
@@ -5,6 +5,7 @@ class InMemoryHeadRegistry {
5
5
  heads = new Map();
6
6
  timestamps = new Map();
7
7
  deferred = [];
8
+ changeListeners = new Map();
8
9
  makeKey(dbName, collectionName) {
9
10
  return `${dbName}:${collectionName}`;
10
11
  }
@@ -42,11 +43,30 @@ class InMemoryHeadRegistry {
42
43
  if (!localTimestamp || timestamp.getTime() > localTimestamp.getTime()) {
43
44
  this.heads.set(key, blockId);
44
45
  this.timestamps.set(key, timestamp);
46
+ this.notifyHeadChange(key, blockId);
45
47
  return true;
46
48
  }
47
49
  // Local is same age or newer — reject
48
50
  return false;
49
51
  }
52
+ notifyHeadChange(key, blockId) {
53
+ const listeners = this.changeListeners.get(key);
54
+ if (listeners) {
55
+ for (const cb of listeners) {
56
+ cb(blockId);
57
+ }
58
+ }
59
+ }
60
+ onHeadChange(dbName, collectionName, callback) {
61
+ const key = this.makeKey(dbName, collectionName);
62
+ if (!this.changeListeners.has(key)) {
63
+ this.changeListeners.set(key, new Set());
64
+ }
65
+ this.changeListeners.get(key).add(callback);
66
+ return () => {
67
+ this.changeListeners.get(key)?.delete(callback);
68
+ };
69
+ }
50
70
  async deferHeadUpdate(dbName, collectionName, blockId, timestamp) {
51
71
  this.deferred.push({ dbName, collectionName, blockId, timestamp });
52
72
  }
@@ -69,6 +89,34 @@ class InMemoryHeadRegistry {
69
89
  getDeferredUpdates() {
70
90
  return [...this.deferred];
71
91
  }
92
+ exportSnapshot() {
93
+ const result = new Map();
94
+ for (const [key, blockId] of this.heads) {
95
+ const ts = this.timestamps.get(key);
96
+ result.set(key, {
97
+ blockId,
98
+ timestamp: ts ? ts.toISOString() : new Date(0).toISOString(),
99
+ });
100
+ }
101
+ return result;
102
+ }
103
+ async mergeSnapshot(snapshot) {
104
+ let merged = 0;
105
+ let skipped = 0;
106
+ for (const [key, record] of snapshot) {
107
+ const colon = key.indexOf(':');
108
+ const dbName = colon === -1 ? key : key.slice(0, colon);
109
+ const collectionName = colon === -1 ? '' : key.slice(colon + 1);
110
+ const applied = await this.mergeHeadUpdate(dbName, collectionName, record.blockId, new Date(record.timestamp));
111
+ if (applied) {
112
+ merged++;
113
+ }
114
+ else {
115
+ skipped++;
116
+ }
117
+ }
118
+ return { merged, skipped };
119
+ }
72
120
  /**
73
121
  * Factory method that creates an independent InMemoryHeadRegistry instance.
74
122
  * Useful for tests that need isolated state.
@@ -1 +1 @@
1
- {"version":3,"file":"inMemoryHeadRegistry.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/inMemoryHeadRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inMemoryHeadRegistry.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/inMemoryHeadRegistry.ts"],"names":[],"mappings":";;;AAeA,MAAa,oBAAoB;IACd,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClC,UAAU,GAAG,IAAI,GAAG,EAAgB,CAAC;IACrC,QAAQ,GAAyB,EAAE,CAAC;IACpC,eAAe,GAAG,IAAI,GAAG,EAGvC,CAAC;IAEI,OAAO,CAAC,MAAc,EAAE,cAAsB;QACpD,OAAO,GAAG,MAAM,IAAI,cAAc,EAAE,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,cAAsB;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,OAAO,CACX,MAAc,EACd,cAAsB,EACtB,OAAe;QAEf,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,cAAsB;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,qCAAqC;IACvC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,gBAAgB,CAAC,MAAc,EAAE,cAAsB;QACrD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,MAAc,EACd,cAAsB,EACtB,OAAe,EACf,SAAe;QAEf,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEhD,4EAA4E;QAC5E,IAAI,CAAC,cAAc,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;YACtE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACpC,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sCAAsC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,gBAAgB,CAAC,GAAW,EAAE,OAAe;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;gBAC3B,EAAE,CAAC,OAAO,CAAC,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAY,CACV,MAAc,EACd,cAAsB,EACtB,QAAmC;QAEnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,MAAc,EACd,cAAsB,EACtB,OAAe,EACf,SAAe;QAEf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,OAAe;QACxC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,SAAS,GAAyB,EAAE,CAAC;QAE3C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBAC/B,MAAM,IAAI,CAAC,eAAe,CACxB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,SAAS,CACjB,CAAC;gBACF,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,kBAAkB;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,cAAc;QACZ,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;QAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;gBACd,OAAO;gBACP,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;aAC7D,CAAC,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,QAAiD;QAEjD,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACxD,MAAM,cAAc,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAChE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CACxC,MAAM,EACN,cAAc,EACd,MAAM,CAAC,OAAO,EACd,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAC3B,CAAC;YACF,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,EAAE,CAAC;YACX,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc;QACnB,OAAO,IAAI,oBAAoB,EAAE,CAAC;IACpC,CAAC;CACF;AAhLD,oDAgLC"}
@@ -0,0 +1,13 @@
1
+ import type { HeadRecord, IHeadRegistryDriver } from '../interfaces/storage/headRegistryDriver';
2
+ /**
3
+ * InMemoryHeadRegistryDriver — Map-backed driver, no I/O.
4
+ * Used for tests and as a fallback when no persistent store is available.
5
+ */
6
+ export declare class InMemoryHeadRegistryDriver implements IHeadRegistryDriver {
7
+ private readonly store;
8
+ readRecord(key: string): Promise<HeadRecord | null>;
9
+ writeRecord(key: string, record: HeadRecord): Promise<void>;
10
+ deleteRecord(key: string): Promise<void>;
11
+ listKeys(): Promise<string[]>;
12
+ }
13
+ //# sourceMappingURL=inMemoryHeadRegistryDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inMemoryHeadRegistryDriver.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/inMemoryHeadRegistryDriver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,mBAAmB,EACpB,MAAM,0CAA0C,CAAC;AAElD;;;GAGG;AACH,qBAAa,0BAA2B,YAAW,mBAAmB;IACpE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IAEjD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAInD,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAGpC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InMemoryHeadRegistryDriver = void 0;
4
+ /**
5
+ * InMemoryHeadRegistryDriver — Map-backed driver, no I/O.
6
+ * Used for tests and as a fallback when no persistent store is available.
7
+ */
8
+ class InMemoryHeadRegistryDriver {
9
+ store = new Map();
10
+ async readRecord(key) {
11
+ return this.store.get(key) ?? null;
12
+ }
13
+ async writeRecord(key, record) {
14
+ this.store.set(key, record);
15
+ }
16
+ async deleteRecord(key) {
17
+ this.store.delete(key);
18
+ }
19
+ async listKeys() {
20
+ return Array.from(this.store.keys());
21
+ }
22
+ }
23
+ exports.InMemoryHeadRegistryDriver = InMemoryHeadRegistryDriver;
24
+ //# sourceMappingURL=inMemoryHeadRegistryDriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inMemoryHeadRegistryDriver.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/inMemoryHeadRegistryDriver.ts"],"names":[],"mappings":";;;AAKA;;;GAGG;AACH,MAAa,0BAA0B;IACpB,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEvD,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAW,EAAE,MAAkB;QAC/C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;CACF;AAlBD,gEAkBC"}
@@ -2,10 +2,13 @@ export * from './aggregation';
2
2
  export * from './brightdb';
3
3
  export * from './collection';
4
4
  export * from './cursor';
5
+ export * from './driverBackedHeadRegistry';
5
6
  export * from './errors';
7
+ export * from './headRegistryGossipTransport';
6
8
  export * from './indexing';
7
9
  export * from './inMemoryDatabase';
8
10
  export * from './inMemoryHeadRegistry';
11
+ export * from './inMemoryHeadRegistryDriver';
9
12
  export * from './queryEngine';
10
13
  export * from './schemaValidation';
11
14
  export * from './transaction';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,UAAU,CAAC;AACzB,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
@@ -6,10 +6,13 @@ tslib_1.__exportStar(require("./aggregation"), exports);
6
6
  tslib_1.__exportStar(require("./brightdb"), exports);
7
7
  tslib_1.__exportStar(require("./collection"), exports);
8
8
  tslib_1.__exportStar(require("./cursor"), exports);
9
+ tslib_1.__exportStar(require("./driverBackedHeadRegistry"), exports);
9
10
  tslib_1.__exportStar(require("./errors"), exports);
11
+ tslib_1.__exportStar(require("./headRegistryGossipTransport"), exports);
10
12
  tslib_1.__exportStar(require("./indexing"), exports);
11
13
  tslib_1.__exportStar(require("./inMemoryDatabase"), exports);
12
14
  tslib_1.__exportStar(require("./inMemoryHeadRegistry"), exports);
15
+ tslib_1.__exportStar(require("./inMemoryHeadRegistryDriver"), exports);
13
16
  tslib_1.__exportStar(require("./queryEngine"), exports);
14
17
  tslib_1.__exportStar(require("./schemaValidation"), exports);
15
18
  tslib_1.__exportStar(require("./transaction"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/index.ts"],"names":[],"mappings":";;;AAAA,qFAAqF;AACrF,wDAA8B;AAC9B,qDAA2B;AAC3B,uDAA6B;AAC7B,mDAAyB;AACzB,mDAAyB;AACzB,qDAA2B;AAC3B,6DAAmC;AACnC,iEAAuC;AACvC,wDAA8B;AAC9B,6DAAmC;AACnC,wDAA8B;AAC9B,kDAAwB;AACxB,yDAA+B;AAC/B,0DAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/index.ts"],"names":[],"mappings":";;;AAAA,qFAAqF;AACrF,wDAA8B;AAC9B,qDAA2B;AAC3B,uDAA6B;AAC7B,mDAAyB;AACzB,qEAA2C;AAC3C,mDAAyB;AACzB,wEAA8C;AAC9C,qDAA2B;AAC3B,6DAAmC;AACnC,iEAAuC;AACvC,uEAA6C;AAC7C,wDAA8B;AAC9B,6DAAmC;AACnC,wDAA8B;AAC9B,kDAAwB;AACxB,yDAA+B;AAC/B,0DAAgC"}
@@ -1,71 +1,24 @@
1
- import { IEnergyAccount, IEnergyAccountDto } from './interfaces/energyAccount';
1
+ import { AssetAccount } from './asset/assetAccount';
2
2
  import { Checksum } from './types/checksum';
3
3
  /**
4
- * Energy account for tracking member's Joule balance
5
- * Follows existing Member/Document patterns
4
+ * Energy account for tracking a member's microjoule balance.
5
+ *
6
+ * Extends {@link AssetAccount} with `assetId = 'joule'` and provides the
7
+ * legacy `netEnergy` alias and `createWithTrialCredits` factory retained for
8
+ * backward compatibility.
6
9
  */
7
- export declare class EnergyAccount implements IEnergyAccount {
8
- readonly memberId: Checksum;
9
- readonly createdAt: Date;
10
- balance: number;
11
- earned: number;
12
- spent: number;
13
- reserved: number;
14
- reputation: number;
15
- lastUpdated: Date;
16
- constructor(memberId: Checksum, createdAt?: Date, balance?: number, earned?: number, spent?: number, reserved?: number, reputation?: number, // New users start at neutral reputation
17
- lastUpdated?: Date);
18
- /**
19
- * Create new account with trial credits
20
- */
10
+ export declare class EnergyAccount extends AssetAccount {
11
+ constructor(memberId: Checksum, createdAt?: Date, balance?: bigint, earned?: bigint, spent?: bigint, reserved?: bigint, reputation?: number, lastUpdated?: Date);
12
+ /** Create a new account pre-loaded with trial credits. */
21
13
  static createWithTrialCredits(memberId: Checksum): EnergyAccount;
22
14
  /**
23
- * Get available balance (balance - reserved)
24
- */
25
- get availableBalance(): number;
26
- /**
27
- * Get net energy (earned - spent)
28
- */
29
- get netEnergy(): number;
30
- /**
31
- * Check if account can afford operation
32
- */
33
- canAfford(amount: number): boolean;
34
- /**
35
- * Reserve energy for operation
36
- */
37
- reserve(amount: number): void;
38
- /**
39
- * Release reserved energy
40
- */
41
- release(amount: number): void;
42
- /**
43
- * Charge energy (deduct from balance)
44
- */
45
- charge(amount: number): void;
46
- /**
47
- * Credit energy (add to balance)
48
- */
49
- credit(amount: number): void;
50
- /**
51
- * Update reputation score
52
- */
53
- updateReputation(newReputation: number): void;
54
- /**
55
- * Convert to DTO for serialization
56
- */
57
- toDto(): IEnergyAccountDto;
58
- /**
59
- * Create from DTO
60
- */
61
- static fromDto(dto: IEnergyAccountDto): EnergyAccount;
62
- /**
63
- * Convert to JSON
64
- */
65
- toJson(): string;
66
- /**
67
- * Create from JSON
15
+ * Net energy = earned spent.
16
+ * @deprecated Use {@link netAsset}.
68
17
  */
18
+ get netEnergy(): bigint;
19
+ /** Override to return a typed {@link EnergyAccount} instance. */
20
+ static fromDto(dto: Record<string, unknown>): EnergyAccount;
21
+ /** Override to return a typed {@link EnergyAccount} instance. */
69
22
  static fromJson(json: string): EnergyAccount;
70
23
  }
71
24
  //# sourceMappingURL=energyAccount.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"energyAccount.d.ts","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/energyAccount.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;GAGG;AACH,qBAAa,aAAc,YAAW,cAAc;aAShC,QAAQ,EAAE,QAAQ;aAClB,SAAS,EAAE,IAAI;IAT1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,IAAI,CAAC;gBAGP,QAAQ,EAAE,QAAQ,EAClB,SAAS,GAAE,IAAiB,EAC5C,OAAO,GAAE,MAA6B,EACtC,MAAM,GAAE,MAAU,EAClB,KAAK,GAAE,MAAU,EACjB,QAAQ,GAAE,MAAU,EACpB,UAAU,GAAE,MAAY,EAAE,wCAAwC;IAClE,WAAW,CAAC,EAAE,IAAI;IAUpB;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa;IAIhE;;OAEG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAc7B;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK7B;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAe5B;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B;;OAEG;IACH,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAK7C;;OAEG;IACH,KAAK,IAAI,iBAAiB;IAa1B;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,GAAG,aAAa;IAarD;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;CAG7C"}
1
+ {"version":3,"file":"energyAccount.d.ts","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/energyAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMpD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAM5C;;;;;;GAMG;AACH,qBAAa,aAAc,SAAQ,YAAY;gBAE3C,QAAQ,EAAE,QAAQ,EAClB,SAAS,GAAE,IAAiB,EAC5B,OAAO,GAAE,MAAkC,EAC3C,MAAM,GAAE,MAAW,EACnB,KAAK,GAAE,MAAW,EAClB,QAAQ,GAAE,MAAW,EACrB,UAAU,GAAE,MAAY,EACxB,WAAW,CAAC,EAAE,IAAI;IAepB,0DAA0D;IAC1D,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa;IAIhE;;;OAGG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,iEAAiE;WACjD,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa;IAcpE,iEAAiE;WACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;CAGtD"}
@@ -1,137 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EnergyAccount = void 0;
4
+ const assetAccount_1 = require("./asset/assetAccount");
5
+ const jouleConstants_1 = require("./asset/jouleConstants");
4
6
  const energyConsts_1 = require("./energyConsts");
5
- const enumerations_1 = require("./enumerations");
6
- const translatableBrightChainError_1 = require("./errors/translatableBrightChainError");
7
- const checksum_1 = require("./types/checksum");
7
+ /** Trial credits in microjoules (1 000 Joules × 1 000 000 microjoules/Joule). */
8
+ const TRIAL_CREDITS_MICROJOULES = BigInt(energyConsts_1.ENERGY.TRIAL_CREDITS) * jouleConstants_1.JOULE_MICROUNITS_PER_UNIT;
8
9
  /**
9
- * Energy account for tracking member's Joule balance
10
- * Follows existing Member/Document patterns
10
+ * Energy account for tracking a member's microjoule balance.
11
+ *
12
+ * Extends {@link AssetAccount} with `assetId = 'joule'` and provides the
13
+ * legacy `netEnergy` alias and `createWithTrialCredits` factory retained for
14
+ * backward compatibility.
11
15
  */
12
- class EnergyAccount {
13
- memberId;
14
- createdAt;
15
- balance;
16
- earned;
17
- spent;
18
- reserved;
19
- reputation;
20
- lastUpdated;
21
- constructor(memberId, createdAt = new Date(), balance = energyConsts_1.ENERGY.TRIAL_CREDITS, earned = 0, spent = 0, reserved = 0, reputation = 0.5, // New users start at neutral reputation
22
- lastUpdated) {
23
- this.memberId = memberId;
24
- this.createdAt = createdAt;
25
- this.balance = balance;
26
- this.earned = earned;
27
- this.spent = spent;
28
- this.reserved = reserved;
29
- this.reputation = reputation;
30
- this.lastUpdated = lastUpdated ?? createdAt;
16
+ class EnergyAccount extends assetAccount_1.AssetAccount {
17
+ constructor(memberId, createdAt = new Date(), balance = TRIAL_CREDITS_MICROJOULES, earned = 0n, spent = 0n, reserved = 0n, reputation = 0.5, lastUpdated) {
18
+ super(memberId, jouleConstants_1.JOULE_ASSET_ID, createdAt, balance, earned, spent, reserved, reputation, lastUpdated);
31
19
  }
32
- /**
33
- * Create new account with trial credits
34
- */
20
+ /** Create a new account pre-loaded with trial credits. */
35
21
  static createWithTrialCredits(memberId) {
36
22
  return new EnergyAccount(memberId);
37
23
  }
38
24
  /**
39
- * Get available balance (balance - reserved)
40
- */
41
- get availableBalance() {
42
- return Math.max(0, this.balance - this.reserved);
43
- }
44
- /**
45
- * Get net energy (earned - spent)
25
+ * Net energy = earned spent.
26
+ * @deprecated Use {@link netAsset}.
46
27
  */
47
28
  get netEnergy() {
48
- return this.earned - this.spent;
49
- }
50
- /**
51
- * Check if account can afford operation
52
- */
53
- canAfford(amount) {
54
- return this.availableBalance >= amount;
55
- }
56
- /**
57
- * Reserve energy for operation
58
- */
59
- reserve(amount) {
60
- if (!this.canAfford(amount)) {
61
- throw new translatableBrightChainError_1.TranslatableBrightChainError(enumerations_1.BrightChainStrings.EnergyAccount_InsufficientBalanceTemplate, {
62
- AMOUNT: amount,
63
- AVAILABLE: this.availableBalance,
64
- });
65
- }
66
- this.reserved += amount;
67
- this.lastUpdated = new Date();
68
- }
69
- /**
70
- * Release reserved energy
71
- */
72
- release(amount) {
73
- this.reserved = Math.max(0, this.reserved - amount);
74
- this.lastUpdated = new Date();
75
- }
76
- /**
77
- * Charge energy (deduct from balance)
78
- */
79
- charge(amount) {
80
- if (amount > this.balance) {
81
- throw new translatableBrightChainError_1.TranslatableBrightChainError(enumerations_1.BrightChainStrings.EnergyAccount_InsufficientBalanceTemplate, {
82
- AMOUNT: amount,
83
- AVAILABLE: this.balance,
84
- });
85
- }
86
- this.balance -= amount;
87
- this.spent += amount;
88
- this.lastUpdated = new Date();
29
+ return this.netAsset;
89
30
  }
90
- /**
91
- * Credit energy (add to balance)
92
- */
93
- credit(amount) {
94
- this.balance += amount;
95
- this.earned += amount;
96
- this.lastUpdated = new Date();
97
- }
98
- /**
99
- * Update reputation score
100
- */
101
- updateReputation(newReputation) {
102
- this.reputation = Math.max(0, Math.min(1, newReputation));
103
- this.lastUpdated = new Date();
104
- }
105
- /**
106
- * Convert to DTO for serialization
107
- */
108
- toDto() {
109
- return {
110
- memberId: this.memberId.toHex(),
111
- balance: this.balance,
112
- earned: this.earned,
113
- spent: this.spent,
114
- reserved: this.reserved,
115
- reputation: this.reputation,
116
- createdAt: this.createdAt.toISOString(),
117
- lastUpdated: this.lastUpdated.toISOString(),
118
- };
119
- }
120
- /**
121
- * Create from DTO
122
- */
31
+ /** Override to return a typed {@link EnergyAccount} instance. */
123
32
  static fromDto(dto) {
124
- return new EnergyAccount(checksum_1.Checksum.fromHex(dto.memberId), new Date(dto.createdAt), dto.balance, dto.earned, dto.spent, dto.reserved, dto.reputation, new Date(dto.lastUpdated));
125
- }
126
- /**
127
- * Convert to JSON
128
- */
129
- toJson() {
130
- return JSON.stringify(this.toDto());
33
+ const base = assetAccount_1.AssetAccount.fromDto(dto);
34
+ return new EnergyAccount(base.memberId, base.createdAt, base.balance, base.earned, base.spent, base.reserved, base.reputation, base.lastUpdated);
131
35
  }
132
- /**
133
- * Create from JSON
134
- */
36
+ /** Override to return a typed {@link EnergyAccount} instance. */
135
37
  static fromJson(json) {
136
38
  return EnergyAccount.fromDto(JSON.parse(json));
137
39
  }