@brightchain/brightchain-lib 0.29.27 → 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 (409) 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 +5 -26
  28. package/src/lib/constants.d.ts.map +1 -1
  29. package/src/lib/constants.js +25 -2
  30. package/src/lib/constants.js.map +1 -1
  31. package/src/lib/db/collection.d.ts +1 -1
  32. package/src/lib/db/collection.d.ts.map +1 -1
  33. package/src/lib/db/collection.js +2 -1
  34. package/src/lib/db/collection.js.map +1 -1
  35. package/src/lib/db/driverBackedHeadRegistry.d.ts +42 -0
  36. package/src/lib/db/driverBackedHeadRegistry.d.ts.map +1 -0
  37. package/src/lib/db/driverBackedHeadRegistry.js +146 -0
  38. package/src/lib/db/driverBackedHeadRegistry.js.map +1 -0
  39. package/src/lib/db/headRegistryGossipTransport.d.ts +74 -0
  40. package/src/lib/db/headRegistryGossipTransport.d.ts.map +1 -0
  41. package/src/lib/db/headRegistryGossipTransport.js +153 -0
  42. package/src/lib/db/headRegistryGossipTransport.js.map +1 -0
  43. package/src/lib/db/inMemoryHeadRegistry.d.ts +9 -0
  44. package/src/lib/db/inMemoryHeadRegistry.d.ts.map +1 -1
  45. package/src/lib/db/inMemoryHeadRegistry.js +48 -0
  46. package/src/lib/db/inMemoryHeadRegistry.js.map +1 -1
  47. package/src/lib/db/inMemoryHeadRegistryDriver.d.ts +13 -0
  48. package/src/lib/db/inMemoryHeadRegistryDriver.d.ts.map +1 -0
  49. package/src/lib/db/inMemoryHeadRegistryDriver.js +24 -0
  50. package/src/lib/db/inMemoryHeadRegistryDriver.js.map +1 -0
  51. package/src/lib/db/index.d.ts +3 -0
  52. package/src/lib/db/index.d.ts.map +1 -1
  53. package/src/lib/db/index.js +3 -0
  54. package/src/lib/db/index.js.map +1 -1
  55. package/src/lib/energyAccount.d.ts +15 -62
  56. package/src/lib/energyAccount.d.ts.map +1 -1
  57. package/src/lib/energyAccount.js +20 -118
  58. package/src/lib/energyAccount.js.map +1 -1
  59. package/src/lib/enumerations/brightChainStrings.d.ts +141 -0
  60. package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
  61. package/src/lib/enumerations/brightChainStrings.js +150 -0
  62. package/src/lib/enumerations/brightChainStrings.js.map +1 -1
  63. package/src/lib/enumerations/difficultyTier.d.ts +20 -0
  64. package/src/lib/enumerations/difficultyTier.d.ts.map +1 -0
  65. package/src/lib/enumerations/difficultyTier.js +25 -0
  66. package/src/lib/enumerations/difficultyTier.js.map +1 -0
  67. package/src/lib/enumerations/friendRequestStatus.d.ts +7 -0
  68. package/src/lib/enumerations/friendRequestStatus.d.ts.map +1 -0
  69. package/src/lib/enumerations/friendRequestStatus.js +11 -0
  70. package/src/lib/enumerations/friendRequestStatus.js.map +1 -0
  71. package/src/lib/enumerations/friendsErrorCode.d.ts +10 -0
  72. package/src/lib/enumerations/friendsErrorCode.d.ts.map +1 -0
  73. package/src/lib/enumerations/friendsErrorCode.js +14 -0
  74. package/src/lib/enumerations/friendsErrorCode.js.map +1 -0
  75. package/src/lib/enumerations/friendshipStatus.d.ts +7 -0
  76. package/src/lib/enumerations/friendshipStatus.d.ts.map +1 -0
  77. package/src/lib/enumerations/friendshipStatus.js +11 -0
  78. package/src/lib/enumerations/friendshipStatus.js.map +1 -0
  79. package/src/lib/enumerations/index.d.ts +4 -0
  80. package/src/lib/enumerations/index.d.ts.map +1 -1
  81. package/src/lib/enumerations/index.js +6 -0
  82. package/src/lib/enumerations/index.js.map +1 -1
  83. package/src/lib/errors/asset/assetUnknownError.d.ts +12 -0
  84. package/src/lib/errors/asset/assetUnknownError.d.ts.map +1 -0
  85. package/src/lib/errors/asset/assetUnknownError.js +21 -0
  86. package/src/lib/errors/asset/assetUnknownError.js.map +1 -0
  87. package/src/lib/errors/asset/index.d.ts +13 -0
  88. package/src/lib/errors/asset/index.d.ts.map +1 -0
  89. package/src/lib/errors/asset/index.js +16 -0
  90. package/src/lib/errors/asset/index.js.map +1 -0
  91. package/src/lib/errors/asset/insufficientAvailableBalanceError.d.ts +13 -0
  92. package/src/lib/errors/asset/insufficientAvailableBalanceError.d.ts.map +1 -0
  93. package/src/lib/errors/asset/insufficientAvailableBalanceError.js +25 -0
  94. package/src/lib/errors/asset/insufficientAvailableBalanceError.js.map +1 -0
  95. package/src/lib/errors/asset/invalidAmountError.d.ts +11 -0
  96. package/src/lib/errors/asset/invalidAmountError.d.ts.map +1 -0
  97. package/src/lib/errors/asset/invalidAmountError.js +20 -0
  98. package/src/lib/errors/asset/invalidAmountError.js.map +1 -0
  99. package/src/lib/errors/asset/ledgerAlreadyAttachedError.d.ts +11 -0
  100. package/src/lib/errors/asset/ledgerAlreadyAttachedError.d.ts.map +1 -0
  101. package/src/lib/errors/asset/ledgerAlreadyAttachedError.js +19 -0
  102. package/src/lib/errors/asset/ledgerAlreadyAttachedError.js.map +1 -0
  103. package/src/lib/errors/asset/mixedAssetError.d.ts +12 -0
  104. package/src/lib/errors/asset/mixedAssetError.d.ts.map +1 -0
  105. package/src/lib/errors/asset/mixedAssetError.js +22 -0
  106. package/src/lib/errors/asset/mixedAssetError.js.map +1 -0
  107. package/src/lib/errors/asset/reservationExpiredError.d.ts +13 -0
  108. package/src/lib/errors/asset/reservationExpiredError.d.ts.map +1 -0
  109. package/src/lib/errors/asset/reservationExpiredError.js +24 -0
  110. package/src/lib/errors/asset/reservationExpiredError.js.map +1 -0
  111. package/src/lib/errors/asset/reservationNotFoundError.d.ts +11 -0
  112. package/src/lib/errors/asset/reservationNotFoundError.d.ts.map +1 -0
  113. package/src/lib/errors/asset/reservationNotFoundError.js +20 -0
  114. package/src/lib/errors/asset/reservationNotFoundError.js.map +1 -0
  115. package/src/lib/errors/encryptionErrors.d.ts.map +1 -1
  116. package/src/lib/errors/encryptionErrors.js.map +1 -1
  117. package/src/lib/errors/friendsServiceError.d.ts +20 -0
  118. package/src/lib/errors/friendsServiceError.d.ts.map +1 -0
  119. package/src/lib/errors/friendsServiceError.js +48 -0
  120. package/src/lib/errors/friendsServiceError.js.map +1 -0
  121. package/src/lib/errors/index.d.ts +23 -0
  122. package/src/lib/errors/index.d.ts.map +1 -1
  123. package/src/lib/errors/index.js +29 -0
  124. package/src/lib/errors/index.js.map +1 -1
  125. package/src/lib/i18n/strings/englishUs.d.ts.map +1 -1
  126. package/src/lib/i18n/strings/englishUs.js +151 -1
  127. package/src/lib/i18n/strings/englishUs.js.map +1 -1
  128. package/src/lib/i18n/strings/french.d.ts.map +1 -1
  129. package/src/lib/i18n/strings/french.js +153 -3
  130. package/src/lib/i18n/strings/french.js.map +1 -1
  131. package/src/lib/i18n/strings/german.d.ts.map +1 -1
  132. package/src/lib/i18n/strings/german.js +151 -1
  133. package/src/lib/i18n/strings/german.js.map +1 -1
  134. package/src/lib/i18n/strings/japanese.d.ts.map +1 -1
  135. package/src/lib/i18n/strings/japanese.js +151 -1
  136. package/src/lib/i18n/strings/japanese.js.map +1 -1
  137. package/src/lib/i18n/strings/mandarin.d.ts.map +1 -1
  138. package/src/lib/i18n/strings/mandarin.js +151 -1
  139. package/src/lib/i18n/strings/mandarin.js.map +1 -1
  140. package/src/lib/i18n/strings/spanish.d.ts.map +1 -1
  141. package/src/lib/i18n/strings/spanish.js +151 -1
  142. package/src/lib/i18n/strings/spanish.js.map +1 -1
  143. package/src/lib/i18n/strings/ukrainian.d.ts.map +1 -1
  144. package/src/lib/i18n/strings/ukrainian.js +151 -1
  145. package/src/lib/i18n/strings/ukrainian.js.map +1 -1
  146. package/src/lib/index.d.ts +36 -1
  147. package/src/lib/index.d.ts.map +1 -1
  148. package/src/lib/index.js +48 -1
  149. package/src/lib/index.js.map +1 -1
  150. package/src/lib/interfaces/appSubsystemPlugin.d.ts +74 -0
  151. package/src/lib/interfaces/appSubsystemPlugin.d.ts.map +1 -0
  152. package/src/lib/interfaces/appSubsystemPlugin.js +3 -0
  153. package/src/lib/interfaces/appSubsystemPlugin.js.map +1 -0
  154. package/src/lib/interfaces/assetAccount.d.ts +91 -0
  155. package/src/lib/interfaces/assetAccount.d.ts.map +1 -0
  156. package/src/lib/interfaces/assetAccount.js +3 -0
  157. package/src/lib/interfaces/assetAccount.js.map +1 -0
  158. package/src/lib/interfaces/brightpass/vaultEntry.d.ts +38 -0
  159. package/src/lib/interfaces/brightpass/vaultEntry.d.ts.map +1 -1
  160. package/src/lib/interfaces/brightpass/vaultMetadata.d.ts +11 -0
  161. package/src/lib/interfaces/brightpass/vaultMetadata.d.ts.map +1 -1
  162. package/src/lib/interfaces/communication/chatStorageProvider.d.ts +1 -1
  163. package/src/lib/interfaces/communication/chatStorageProvider.d.ts.map +1 -1
  164. package/src/lib/interfaces/communication/index.d.ts +2 -0
  165. package/src/lib/interfaces/communication/index.d.ts.map +1 -1
  166. package/src/lib/interfaces/communication/index.js +2 -0
  167. package/src/lib/interfaces/communication/index.js.map +1 -1
  168. package/src/lib/interfaces/communication/server.d.ts +8 -0
  169. package/src/lib/interfaces/communication/server.d.ts.map +1 -1
  170. package/src/lib/interfaces/communication/serverIconConfig.d.ts +32 -0
  171. package/src/lib/interfaces/communication/serverIconConfig.d.ts.map +1 -0
  172. package/src/lib/interfaces/communication/serverIconConfig.js +35 -0
  173. package/src/lib/interfaces/communication/serverIconConfig.js.map +1 -0
  174. package/src/lib/interfaces/communication/serverIconRequest.d.ts +12 -0
  175. package/src/lib/interfaces/communication/serverIconRequest.d.ts.map +1 -0
  176. package/src/lib/interfaces/communication/serverIconRequest.js +3 -0
  177. package/src/lib/interfaces/communication/serverIconRequest.js.map +1 -0
  178. package/src/lib/interfaces/communication.d.ts +2 -0
  179. package/src/lib/interfaces/communication.d.ts.map +1 -1
  180. package/src/lib/interfaces/constants.d.ts +16 -0
  181. package/src/lib/interfaces/constants.d.ts.map +1 -1
  182. package/src/lib/interfaces/energyAccount.d.ts +13 -34
  183. package/src/lib/interfaces/energyAccount.d.ts.map +1 -1
  184. package/src/lib/interfaces/energyTransaction.d.ts +25 -6
  185. package/src/lib/interfaces/energyTransaction.d.ts.map +1 -1
  186. package/src/lib/interfaces/friends/baseFriendRequest.d.ts +13 -0
  187. package/src/lib/interfaces/friends/baseFriendRequest.d.ts.map +1 -0
  188. package/src/lib/interfaces/friends/baseFriendRequest.js +3 -0
  189. package/src/lib/interfaces/friends/baseFriendRequest.js.map +1 -0
  190. package/src/lib/interfaces/friends/baseFriendship.d.ts +11 -0
  191. package/src/lib/interfaces/friends/baseFriendship.d.ts.map +1 -0
  192. package/src/lib/interfaces/friends/baseFriendship.js +3 -0
  193. package/src/lib/interfaces/friends/baseFriendship.js.map +1 -0
  194. package/src/lib/interfaces/friends/friendsService.d.ts +32 -0
  195. package/src/lib/interfaces/friends/friendsService.d.ts.map +1 -0
  196. package/src/lib/interfaces/friends/friendsService.js +3 -0
  197. package/src/lib/interfaces/friends/friendsService.js.map +1 -0
  198. package/src/lib/interfaces/friends/friendsSuggestionProvider.d.ts +17 -0
  199. package/src/lib/interfaces/friends/friendsSuggestionProvider.d.ts.map +1 -0
  200. package/src/lib/interfaces/friends/friendsSuggestionProvider.js +3 -0
  201. package/src/lib/interfaces/friends/friendsSuggestionProvider.js.map +1 -0
  202. package/src/lib/interfaces/friends/index.d.ts +6 -0
  203. package/src/lib/interfaces/friends/index.d.ts.map +1 -0
  204. package/src/lib/interfaces/friends/index.js +3 -0
  205. package/src/lib/interfaces/friends/index.js.map +1 -0
  206. package/src/lib/interfaces/friends/pagination.d.ts +11 -0
  207. package/src/lib/interfaces/friends/pagination.d.ts.map +1 -0
  208. package/src/lib/interfaces/friends/pagination.js +3 -0
  209. package/src/lib/interfaces/friends/pagination.js.map +1 -0
  210. package/src/lib/interfaces/identity/brightChainIdentity.d.ts +29 -0
  211. package/src/lib/interfaces/identity/brightChainIdentity.d.ts.map +1 -0
  212. package/src/lib/interfaces/identity/brightChainIdentity.js +3 -0
  213. package/src/lib/interfaces/identity/brightChainIdentity.js.map +1 -0
  214. package/src/lib/interfaces/identity/index.d.ts +1 -0
  215. package/src/lib/interfaces/identity/index.d.ts.map +1 -1
  216. package/src/lib/interfaces/index.d.ts +7 -0
  217. package/src/lib/interfaces/index.d.ts.map +1 -1
  218. package/src/lib/interfaces/index.js +8 -0
  219. package/src/lib/interfaces/index.js.map +1 -1
  220. package/src/lib/interfaces/messaging/attachmentMetadata.d.ts +12 -0
  221. package/src/lib/interfaces/messaging/attachmentMetadata.d.ts.map +1 -1
  222. package/src/lib/interfaces/messaging/emailMetadata.d.ts +55 -0
  223. package/src/lib/interfaces/messaging/emailMetadata.d.ts.map +1 -1
  224. package/src/lib/interfaces/messaging/emailMetadata.js.map +1 -1
  225. package/src/lib/interfaces/pouw/challengeToken.d.ts +20 -0
  226. package/src/lib/interfaces/pouw/challengeToken.d.ts.map +1 -0
  227. package/src/lib/interfaces/pouw/challengeToken.js +3 -0
  228. package/src/lib/interfaces/pouw/challengeToken.js.map +1 -0
  229. package/src/lib/interfaces/pouw/index.d.ts +8 -0
  230. package/src/lib/interfaces/pouw/index.d.ts.map +1 -0
  231. package/src/lib/interfaces/pouw/index.js +12 -0
  232. package/src/lib/interfaces/pouw/index.js.map +1 -0
  233. package/src/lib/interfaces/pouw/pouwConfig.d.ts +91 -0
  234. package/src/lib/interfaces/pouw/pouwConfig.d.ts.map +1 -0
  235. package/src/lib/interfaces/pouw/pouwConfig.js +24 -0
  236. package/src/lib/interfaces/pouw/pouwConfig.js.map +1 -0
  237. package/src/lib/interfaces/pouw/pouwMetrics.d.ts +23 -0
  238. package/src/lib/interfaces/pouw/pouwMetrics.d.ts.map +1 -0
  239. package/src/lib/interfaces/pouw/pouwMetrics.js +3 -0
  240. package/src/lib/interfaces/pouw/pouwMetrics.js.map +1 -0
  241. package/src/lib/interfaces/pouw/workResult.d.ts +19 -0
  242. package/src/lib/interfaces/pouw/workResult.d.ts.map +1 -0
  243. package/src/lib/interfaces/pouw/workResult.js +3 -0
  244. package/src/lib/interfaces/pouw/workResult.js.map +1 -0
  245. package/src/lib/interfaces/pouw/workUnit.d.ts +48 -0
  246. package/src/lib/interfaces/pouw/workUnit.d.ts.map +1 -0
  247. package/src/lib/interfaces/pouw/workUnit.js +14 -0
  248. package/src/lib/interfaces/pouw/workUnit.js.map +1 -0
  249. package/src/lib/interfaces/responses/adminDashboardResponse.d.ts +7 -0
  250. package/src/lib/interfaces/responses/adminDashboardResponse.d.ts.map +1 -1
  251. package/src/lib/interfaces/responses/communicationResponses.d.ts +2 -0
  252. package/src/lib/interfaces/responses/communicationResponses.d.ts.map +1 -1
  253. package/src/lib/interfaces/responses/identityResponseData.d.ts +10 -0
  254. package/src/lib/interfaces/responses/identityResponseData.d.ts.map +1 -0
  255. package/src/lib/interfaces/responses/identityResponseData.js +3 -0
  256. package/src/lib/interfaces/responses/identityResponseData.js.map +1 -0
  257. package/src/lib/interfaces/responses/index.d.ts +1 -0
  258. package/src/lib/interfaces/responses/index.d.ts.map +1 -1
  259. package/src/lib/interfaces/staging/commitRequest.d.ts +28 -0
  260. package/src/lib/interfaces/staging/commitRequest.d.ts.map +1 -0
  261. package/src/lib/interfaces/staging/commitRequest.js +3 -0
  262. package/src/lib/interfaces/staging/commitRequest.js.map +1 -0
  263. package/src/lib/interfaces/staging/commitResponse.d.ts +17 -0
  264. package/src/lib/interfaces/staging/commitResponse.d.ts.map +1 -0
  265. package/src/lib/interfaces/staging/commitResponse.js +3 -0
  266. package/src/lib/interfaces/staging/commitResponse.js.map +1 -0
  267. package/src/lib/interfaces/staging/index.d.ts +7 -0
  268. package/src/lib/interfaces/staging/index.d.ts.map +1 -0
  269. package/src/lib/interfaces/staging/index.js +6 -0
  270. package/src/lib/interfaces/staging/index.js.map +1 -0
  271. package/src/lib/interfaces/staging/processingParams.d.ts +16 -0
  272. package/src/lib/interfaces/staging/processingParams.d.ts.map +1 -0
  273. package/src/lib/interfaces/staging/processingParams.js +3 -0
  274. package/src/lib/interfaces/staging/processingParams.js.map +1 -0
  275. package/src/lib/interfaces/staging/stagedFileRecord.d.ts +23 -0
  276. package/src/lib/interfaces/staging/stagedFileRecord.d.ts.map +1 -0
  277. package/src/lib/interfaces/staging/stagedFileRecord.js +3 -0
  278. package/src/lib/interfaces/staging/stagedFileRecord.js.map +1 -0
  279. package/src/lib/interfaces/staging/stagingConfig.d.ts +19 -0
  280. package/src/lib/interfaces/staging/stagingConfig.d.ts.map +1 -0
  281. package/src/lib/interfaces/staging/stagingConfig.js +11 -0
  282. package/src/lib/interfaces/staging/stagingConfig.js.map +1 -0
  283. package/src/lib/interfaces/staging/tempUploadResponse.d.ts +19 -0
  284. package/src/lib/interfaces/staging/tempUploadResponse.d.ts.map +1 -0
  285. package/src/lib/interfaces/staging/tempUploadResponse.js +3 -0
  286. package/src/lib/interfaces/staging/tempUploadResponse.js.map +1 -0
  287. package/src/lib/interfaces/storage/blockStore.d.ts +22 -4
  288. package/src/lib/interfaces/storage/blockStore.d.ts.map +1 -1
  289. package/src/lib/interfaces/storage/documentTypes.d.ts +4 -0
  290. package/src/lib/interfaces/storage/documentTypes.d.ts.map +1 -1
  291. package/src/lib/interfaces/storage/headRegistry.d.ts +38 -0
  292. package/src/lib/interfaces/storage/headRegistry.d.ts.map +1 -1
  293. package/src/lib/interfaces/storage/headRegistryDriver.d.ts +47 -0
  294. package/src/lib/interfaces/storage/headRegistryDriver.d.ts.map +1 -0
  295. package/src/lib/interfaces/storage/headRegistryDriver.js +15 -0
  296. package/src/lib/interfaces/storage/headRegistryDriver.js.map +1 -0
  297. package/src/lib/interfaces/storage/index.d.ts +1 -0
  298. package/src/lib/interfaces/storage/index.d.ts.map +1 -1
  299. package/src/lib/interfaces/storage/index.js.map +1 -1
  300. package/src/lib/joule/formatJoule.d.ts +44 -0
  301. package/src/lib/joule/formatJoule.d.ts.map +1 -0
  302. package/src/lib/joule/formatJoule.js +121 -0
  303. package/src/lib/joule/formatJoule.js.map +1 -0
  304. package/src/lib/joule/index.d.ts +10 -0
  305. package/src/lib/joule/index.d.ts.map +1 -0
  306. package/src/lib/joule/index.js +13 -0
  307. package/src/lib/joule/index.js.map +1 -0
  308. package/src/lib/joule/jouleConstants.d.ts +13 -0
  309. package/src/lib/joule/jouleConstants.d.ts.map +1 -0
  310. package/src/lib/joule/jouleConstants.js +18 -0
  311. package/src/lib/joule/jouleConstants.js.map +1 -0
  312. package/src/lib/joule/rateTable.d.ts +55 -0
  313. package/src/lib/joule/rateTable.d.ts.map +1 -0
  314. package/src/lib/joule/rateTable.js +58 -0
  315. package/src/lib/joule/rateTable.js.map +1 -0
  316. package/src/lib/joule/resourceClass.d.ts +18 -0
  317. package/src/lib/joule/resourceClass.d.ts.map +1 -0
  318. package/src/lib/joule/resourceClass.js +28 -0
  319. package/src/lib/joule/resourceClass.js.map +1 -0
  320. package/src/lib/operationCost.d.ts +12 -7
  321. package/src/lib/operationCost.d.ts.map +1 -1
  322. package/src/lib/operationCost.js +11 -4
  323. package/src/lib/operationCost.js.map +1 -1
  324. package/src/lib/pouw/computeWorkUnit.d.ts +41 -0
  325. package/src/lib/pouw/computeWorkUnit.d.ts.map +1 -0
  326. package/src/lib/pouw/computeWorkUnit.js +92 -0
  327. package/src/lib/pouw/computeWorkUnit.js.map +1 -0
  328. package/src/lib/pouw/index.d.ts +8 -0
  329. package/src/lib/pouw/index.d.ts.map +1 -0
  330. package/src/lib/pouw/index.js +12 -0
  331. package/src/lib/pouw/index.js.map +1 -0
  332. package/src/lib/serializers/index.d.ts +2 -0
  333. package/src/lib/serializers/index.d.ts.map +1 -0
  334. package/src/lib/serializers/index.js +10 -0
  335. package/src/lib/serializers/index.js.map +1 -0
  336. package/src/lib/serializers/workUnitSerializer.d.ts +39 -0
  337. package/src/lib/serializers/workUnitSerializer.d.ts.map +1 -0
  338. package/src/lib/serializers/workUnitSerializer.js +150 -0
  339. package/src/lib/serializers/workUnitSerializer.js.map +1 -0
  340. package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts +1 -1
  341. package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts.map +1 -1
  342. package/src/lib/services/communication/__tests__/mockChatStorageProvider.js +5 -3
  343. package/src/lib/services/communication/__tests__/mockChatStorageProvider.js.map +1 -1
  344. package/src/lib/services/communication/__tests__/mockStorageProvider.d.ts +6 -0
  345. package/src/lib/services/communication/__tests__/mockStorageProvider.d.ts.map +1 -0
  346. package/src/lib/services/communication/__tests__/mockStorageProvider.js +41 -0
  347. package/src/lib/services/communication/__tests__/mockStorageProvider.js.map +1 -0
  348. package/src/lib/services/communication/channelService.d.ts +17 -3
  349. package/src/lib/services/communication/channelService.d.ts.map +1 -1
  350. package/src/lib/services/communication/channelService.js +80 -15
  351. package/src/lib/services/communication/channelService.js.map +1 -1
  352. package/src/lib/services/communication/conversationService.d.ts +1 -1
  353. package/src/lib/services/communication/conversationService.d.ts.map +1 -1
  354. package/src/lib/services/communication/conversationService.js +34 -4
  355. package/src/lib/services/communication/conversationService.js.map +1 -1
  356. package/src/lib/services/communication/groupService.d.ts +1 -1
  357. package/src/lib/services/communication/groupService.d.ts.map +1 -1
  358. package/src/lib/services/communication/groupService.js +30 -4
  359. package/src/lib/services/communication/groupService.js.map +1 -1
  360. package/src/lib/services/communication/rehydrationHelpers.d.ts.map +1 -1
  361. package/src/lib/services/communication/rehydrationHelpers.js +1 -2
  362. package/src/lib/services/communication/rehydrationHelpers.js.map +1 -1
  363. package/src/lib/services/communication/serverService.d.ts +13 -115
  364. package/src/lib/services/communication/serverService.d.ts.map +1 -1
  365. package/src/lib/services/communication/serverService.js +93 -239
  366. package/src/lib/services/communication/serverService.js.map +1 -1
  367. package/src/lib/services/copyOnWrite.service.d.ts +110 -0
  368. package/src/lib/services/copyOnWrite.service.d.ts.map +1 -0
  369. package/src/lib/services/copyOnWrite.service.js +255 -0
  370. package/src/lib/services/copyOnWrite.service.js.map +1 -0
  371. package/src/lib/services/index.d.ts +1 -0
  372. package/src/lib/services/index.d.ts.map +1 -1
  373. package/src/lib/services/index.js +1 -0
  374. package/src/lib/services/index.js.map +1 -1
  375. package/src/lib/services/memberStore.d.ts +7 -1
  376. package/src/lib/services/memberStore.d.ts.map +1 -1
  377. package/src/lib/services/memberStore.js +57 -1
  378. package/src/lib/services/memberStore.js.map +1 -1
  379. package/src/lib/services/messaging/emailMessageService.d.ts +89 -0
  380. package/src/lib/services/messaging/emailMessageService.d.ts.map +1 -1
  381. package/src/lib/services/messaging/emailMessageService.js +207 -28
  382. package/src/lib/services/messaging/emailMessageService.js.map +1 -1
  383. package/src/lib/services/messaging/emailParser.d.ts.map +1 -1
  384. package/src/lib/services/messaging/emailParser.js +1 -0
  385. package/src/lib/services/messaging/emailParser.js.map +1 -1
  386. package/src/lib/stores/assetAccountStore.d.ts +102 -0
  387. package/src/lib/stores/assetAccountStore.d.ts.map +1 -0
  388. package/src/lib/stores/assetAccountStore.js +276 -0
  389. package/src/lib/stores/assetAccountStore.js.map +1 -0
  390. package/src/lib/stores/blockStoreAdapter.d.ts +2 -0
  391. package/src/lib/stores/blockStoreAdapter.d.ts.map +1 -1
  392. package/src/lib/stores/blockStoreAdapter.js +3 -0
  393. package/src/lib/stores/blockStoreAdapter.js.map +1 -1
  394. package/src/lib/stores/energyAccountStore.d.ts +22 -36
  395. package/src/lib/stores/energyAccountStore.d.ts.map +1 -1
  396. package/src/lib/stores/energyAccountStore.js +33 -63
  397. package/src/lib/stores/energyAccountStore.js.map +1 -1
  398. package/src/lib/stores/memoryBlockStore.d.ts +16 -1
  399. package/src/lib/stores/memoryBlockStore.d.ts.map +1 -1
  400. package/src/lib/stores/memoryBlockStore.js +42 -6
  401. package/src/lib/stores/memoryBlockStore.js.map +1 -1
  402. package/src/lib/utils/index.d.ts +6 -0
  403. package/src/lib/utils/index.d.ts.map +1 -1
  404. package/src/lib/utils/index.js +9 -0
  405. package/src/lib/utils/index.js.map +1 -1
  406. package/src/lib/utils/sortPair.d.ts +6 -0
  407. package/src/lib/utils/sortPair.d.ts.map +1 -0
  408. package/src/lib/utils/sortPair.js +11 -0
  409. package/src/lib/utils/sortPair.js.map +1 -0
package/README.md CHANGED
@@ -8,21 +8,30 @@
8
8
  ## 🌟 Key Features
9
9
 
10
10
  ### 🔐 Unified Cryptographic Architecture
11
+
11
12
  - **ECIES Integration**: Elliptic Curve Integrated Encryption Scheme for secure messaging and file storage
12
13
  - **Homomorphic Encryption**: Paillier keys derived from ECDH keypairs for secure voting and computation
13
14
  - **Brokered Anonymity**: Forward Error Correction with BrightTrust-based identity recovery
14
15
 
15
16
  ### 📦 Owner-Free File System (OFFS)
17
+
16
18
  - **TUPLE Storage**: All data stored as 3-block TUPLEs (data + 2 randomizers) for complete plausible deniability
17
19
  - **Block-based Storage**: Files broken into encrypted blocks with XOR randomization
18
20
  - **Deduplication**: SHA-512 based block identification prevents duplicate storage
19
21
  - **Distributed Architecture**: Decentralized storage with no single point of failure
20
22
  - **Legal Protection**: True owner-free storage ensures no single party can be compelled to produce meaningful data
21
23
 
22
- ### ⚡ Energy-Efficient Design
23
- - **Joule Currency**: All operations measured in actual energy consumption
24
- - **Proof of Work Throttling**: Bad actors face increased computational requirements
25
- - **Sustainable Operations**: Optimized for minimal energy consumption
24
+ ### ⚡ Asset Accounts & Metering
25
+
26
+ - **Generic `AssetAccount` / `AssetAccountStore`**: A single parameterized shape tracks any fungible asset (joules, tokens, credits). Each account is keyed by `memberId + assetId`; balances are stored as `bigint` microunits for lossless precision.
27
+ - **`EnergyAccount` / `EnergyAccountStore`**: Specialization for the `'joule'` asset. Balances are expressed in microjoules (1 J = 1 000 000 µJ). Legacy numeric-joule DTOs are automatically migrated on read.
28
+ - **Backward-compatible hydration**: `AssetAccount.fromDto()` handles missing `assetId` (defaults to `'joule'`) and numeric balances (multiplied by `JOULE_MICROUNITS_PER_UNIT = 1_000_000n`), so existing persisted data is transparently upgraded.
29
+ - **`ITypedCollection<TStored, TTyped>`**: Storage abstraction in `brightchain-lib` that `brightchain-db` satisfies. `EnergyAccountStore` depends only on this interface, keeping the library free of database imports.
30
+ - **Joule Currency**: All operations are measured and throttled using actual energy-unit accounting.
31
+ - **Proof of Work Throttling**: Bad actors face increased computational requirements.
32
+ - **Sustainable Operations**: Optimized for minimal energy consumption.
33
+
34
+ > See specs: [`asset-account-store-generalization`](.kiro/specs/asset-account-store-generalization/), [`programmable-asset-ledger`](.kiro/specs/programmable-asset-ledger/), [`metering-log`](.kiro/specs/metering-log/).
26
35
 
27
36
  ## 🚀 Quick Start
28
37
 
@@ -136,6 +145,7 @@ try {
136
145
  ```
137
146
 
138
147
  **Error Types:**
148
+
139
149
  - `BrightChainError`: Base class for all BrightChain errors
140
150
  - `ValidationError`: Input validation failures
141
151
  - `ChecksumError`: Checksum calculation or validation errors
@@ -145,6 +155,7 @@ try {
145
155
 
146
156
  **Error Context:**
147
157
  All BrightChain errors include:
158
+
148
159
  - `type`: Error type identifier
149
160
  - `message`: Human-readable error message
150
161
  - `context`: Additional context (parameters, state, etc.)
@@ -228,11 +239,13 @@ try {
228
239
  ```
229
240
 
230
241
  **Classes with Factory Patterns:**
242
+
231
243
  - `MemberDocument`: Use `MemberDocument.create()`
232
244
  - `BaseBlock` subclasses: Use `BlockType.from()` or specific factory methods
233
245
  - `Checksum`: Use `Checksum.fromBuffer()`, `Checksum.fromUint8Array()`, or `Checksum.fromHex()`
234
246
 
235
247
  **Why Factory Patterns?**
248
+
236
249
  - Ensures proper validation during object creation
237
250
  - Prevents invalid object states
238
251
  - Provides clear, documented creation APIs
@@ -249,6 +262,7 @@ If you're upgrading from BrightChain v1.x, see our comprehensive [Migration Guid
249
262
  - Breaking changes documentation
250
263
 
251
264
  **Quick Migration Checklist:**
265
+
252
266
  - [ ] Replace `ChecksumBuffer`/`ChecksumUint8Array` with `Checksum` class
253
267
  - [ ] Update direct constructor calls to use factory methods
254
268
  - [ ] Add type parameters to `BlockHandle` declarations
@@ -288,6 +302,7 @@ const originalData = await tupleService.retrieveTuple(
288
302
  ```
289
303
 
290
304
  **Why TUPLEs?**
305
+
291
306
  - **Plausible Deniability**: No single block contains identifiable data
292
307
  - **Legal Protection**: Node operators cannot be compelled to produce meaningful data
293
308
  - **Complete OFF Compliance**: All data stored as 3 blocks (not just 2)
@@ -449,6 +464,7 @@ All blocks follow a layered structure:
449
464
  ```
450
465
 
451
466
  **Base Header includes:**
467
+
452
468
  - Block Type
453
469
  - Block Size
454
470
  - Data Type
@@ -456,6 +472,7 @@ All blocks follow a layered structure:
456
472
  - Date Created
457
473
 
458
474
  **Encrypted Block Header adds:**
475
+
459
476
  - Encryption Type (1 byte)
460
477
  - Recipient GUID (16 bytes)
461
478
  - Ephemeral Public Key (65 bytes)
@@ -589,49 +606,61 @@ For detailed naming conventions and terminology, see [NAMING_CONVENTIONS.md](./N
589
606
  ### Core Classes
590
607
 
591
608
  #### BrightChain
609
+
592
610
  Main interface for file storage and retrieval.
593
611
 
594
612
  **Methods:**
613
+
595
614
  - `storeFile(data: Uint8Array, fileName?: string): Promise<FileReceipt>`
596
615
  - `retrieveFile(receipt: FileReceipt): Promise<Uint8Array>`
597
616
 
598
617
  #### BaseBlock
618
+
599
619
  Abstract base class for all block types.
600
620
 
601
621
  **Properties:**
622
+
602
623
  - `blockSize: BlockSize` - Size category of the block
603
624
  - `blockType: BlockType` - Type of block (raw, encrypted, CBL, etc)
604
625
  - `idChecksum: ChecksumUint8Array` - Unique identifier
605
626
  - `dateCreated: Date` - Creation timestamp
606
627
 
607
628
  **Methods:**
629
+
608
630
  - `validateAsync(): Promise<void>` - Async validation
609
631
  - `validateSync(): void` - Sync validation
610
632
 
611
633
  #### EncryptedBlock
634
+
612
635
  Encrypted block implementation with ECIES.
613
636
 
614
637
  **Properties:**
638
+
615
639
  - `encryptionType: BlockEncryptionType` - Single or multi-recipient
616
640
  - `recipients: Array<TID>` - List of recipient IDs
617
641
  - `recipientWithKey: Member<TID>` - Member with decryption key
618
642
 
619
643
  **Methods:**
644
+
620
645
  - `decrypt<D>(newBlockType: BlockType): Promise<D>` - Decrypt block
621
646
 
622
647
  ### Services
623
648
 
624
649
  #### ChecksumService
650
+
625
651
  Handles SHA-512 checksum operations.
626
652
 
627
653
  **Methods:**
654
+
628
655
  - `calculateChecksum(data: Uint8Array): ChecksumUint8Array`
629
656
  - `checksumToHexString(checksum: ChecksumUint8Array): ChecksumString`
630
657
 
631
658
  #### ECIESService
659
+
632
660
  Provides ECIES encryption/decryption.
633
661
 
634
662
  **Methods:**
663
+
635
664
  - `encryptSimpleOrSingle(simple: boolean, publicKey: Uint8Array, data: Uint8Array): Promise<Uint8Array>`
636
665
  - `decryptSimpleOrSingle(simple: boolean, privateKey: Uint8Array, data: Uint8Array): Promise<Uint8Array>`
637
666
 
@@ -674,4 +703,4 @@ BrightChain is actively developed with ambitious goals:
674
703
 
675
704
  ---
676
705
 
677
- **BrightChain** - *Illuminating the future of decentralized digital governance*
706
+ **BrightChain** - *Illuminating the future of decentralized digital governance*
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightchain/brightchain-lib",
3
- "version": "0.29.27",
3
+ "version": "0.31.0",
4
4
  "description": "BrightChain core library - browser-compatible blockchain storage",
5
5
  "main": "src/index.js",
6
6
  "types": "src/index.d.ts",
@@ -68,11 +68,11 @@
68
68
  "dependencies": {
69
69
  "@digitaldefiance/branded-interface": "0.0.5",
70
70
  "@digitaldefiance/bzip2-wasm": "^1.1.1",
71
- "@digitaldefiance/ecies-lib": "5.1.4",
72
- "@digitaldefiance/i18n-lib": "4.7.3",
71
+ "@digitaldefiance/ecies-lib": "5.1.6",
72
+ "@digitaldefiance/i18n-lib": "4.7.4",
73
73
  "@digitaldefiance/reed-solomon-erasure.wasm": "^1.0.2",
74
74
  "@digitaldefiance/secrets": "^2.0.7",
75
- "@digitaldefiance/suite-core-lib": "4.26.7",
75
+ "@digitaldefiance/suite-core-lib": "4.27.2",
76
76
  "@ethereumjs/wallet": "^10.0.0",
77
77
  "@noble/hashes": "^1.8.0",
78
78
  "@peculiar/asn1-pfx": "^2.6.1",
package/src/browser.d.ts CHANGED
@@ -11,6 +11,7 @@ export { RawDataBlock } from './lib/blocks/rawData';
11
11
  export { ServiceLocator } from './lib/services/serviceLocator';
12
12
  export { uint8ArrayToHex } from './lib/utils/checksumUtils';
13
13
  export { XorLengthMismatchError, constantTimeXor, constantTimeXorMultiple, } from './lib/utils/constantTimeXor';
14
+ export { BlockECIES } from './lib/access/ecies';
14
15
  export { ServiceProvider } from './lib/services/service.provider';
15
16
  export { initializeBrightChain } from './lib/init';
16
17
  export { Checksum } from './lib/types/checksum';
@@ -19,6 +20,9 @@ export type { BlockId } from './lib/interfaces/branded/primitives/blockId';
19
20
  export { CBLService } from './lib/services/cblService';
20
21
  export { ChecksumService } from './lib/services/checksum.service';
21
22
  export { MessageCBLService } from './lib/services/messaging/messageCBLService';
23
+ export { joulesToMicrojoules, microjoulesToJoules, } from './lib/asset/microunits';
24
+ export { formatJoule } from './lib/joule/formatJoule';
25
+ export { DefaultDurabilityLevel, DurabilityLevel, DurabilityMap, getParityCountForDurability, } from './lib/enumerations/durabilityLevel';
22
26
  export { BrightChainStrings } from './lib/enumerations/brightChainStrings';
23
27
  export { DeliveryStatus } from './lib/enumerations/messaging/deliveryStatus';
24
28
  export { MessageEncryptionScheme } from './lib/enumerations/messaging/messageEncryptionScheme';
@@ -27,6 +31,9 @@ export type { IMessageMetadata } from './lib/interfaces/messaging/messageMetadat
27
31
  export type { IMessageCBLOptions } from './lib/services/messaging/messageCBLService';
28
32
  export type { BlockInfo, FileReceipt } from './lib/brightChain';
29
33
  export type { CBLMagnetComponents, CBLStorageResult, CBLWhiteningOptions, } from './lib/interfaces/storage/cblWhitening';
34
+ export { InMemoryHeadRegistry } from './lib/db/inMemoryHeadRegistry';
35
+ export type { IHeadRegistry } from './lib/interfaces/storage/headRegistry';
36
+ export * from './lib/joule';
30
37
  export type { ILedgerEntry } from './lib/interfaces/ledger/ledgerEntry';
31
38
  export type { ILedgerMetadata } from './lib/interfaces/ledger/ledgerMetadata';
32
39
  export type { ILedgerSignatureVerifier } from './lib/interfaces/ledger/ledgerSignatureVerifier';
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":"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"}
package/src/browser.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Minimal browser-compatible exports
3
3
  // Only exports core functionality that works without Node.js modules
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.GovernancePayloadSerializer = exports.AuthorizedSignerSet = exports.SignerStatus = exports.SignerRole = exports.GovernanceActionType = exports.QuorumType = exports.MemberSignerAdapter = exports.LedgerEntrySerializer = exports.LedgerChainValidator = exports.Ledger = exports.EciesSignatureVerifier = exports.BrowserSignatureVerifier = exports.MessagePriority = exports.MessageEncryptionScheme = exports.DeliveryStatus = exports.BrightChainStrings = exports.MessageCBLService = exports.ChecksumService = exports.CBLService = exports.asBlockId = exports.Checksum = exports.initializeBrightChain = exports.ServiceProvider = exports.constantTimeXorMultiple = exports.constantTimeXor = exports.XorLengthMismatchError = exports.uint8ArrayToHex = exports.ServiceLocator = exports.RawDataBlock = exports.RandomBlock = exports.isBlockHandle = exports.createBlockHandle = exports.BaseBlock = exports.VALIDATION = exports.TUPLE = exports.THEME_COLORS = exports.CONSTANTS = void 0;
5
+ exports.GovernancePayloadSerializer = exports.AuthorizedSignerSet = exports.SignerStatus = exports.SignerRole = exports.GovernanceActionType = exports.QuorumType = exports.MemberSignerAdapter = exports.LedgerEntrySerializer = exports.LedgerChainValidator = exports.Ledger = exports.EciesSignatureVerifier = exports.BrowserSignatureVerifier = exports.InMemoryHeadRegistry = exports.MessagePriority = exports.MessageEncryptionScheme = exports.DeliveryStatus = exports.BrightChainStrings = exports.getParityCountForDurability = exports.DurabilityMap = exports.DurabilityLevel = exports.DefaultDurabilityLevel = exports.formatJoule = exports.microjoulesToJoules = exports.joulesToMicrojoules = exports.MessageCBLService = exports.ChecksumService = exports.CBLService = exports.asBlockId = exports.Checksum = exports.initializeBrightChain = exports.ServiceProvider = exports.BlockECIES = exports.constantTimeXorMultiple = exports.constantTimeXor = exports.XorLengthMismatchError = exports.uint8ArrayToHex = exports.ServiceLocator = exports.RawDataBlock = exports.RandomBlock = exports.isBlockHandle = exports.createBlockHandle = exports.BaseBlock = exports.VALIDATION = exports.TUPLE = exports.THEME_COLORS = exports.CONSTANTS = void 0;
6
6
  const tslib_1 = require("tslib");
7
7
  tslib_1.__exportStar(require("./lib/brightChain"), exports);
8
8
  tslib_1.__exportStar(require("./lib/enumerations/blockSize"), exports);
@@ -36,6 +36,9 @@ var constantTimeXor_1 = require("./lib/utils/constantTimeXor");
36
36
  Object.defineProperty(exports, "XorLengthMismatchError", { enumerable: true, get: function () { return constantTimeXor_1.XorLengthMismatchError; } });
37
37
  Object.defineProperty(exports, "constantTimeXor", { enumerable: true, get: function () { return constantTimeXor_1.constantTimeXor; } });
38
38
  Object.defineProperty(exports, "constantTimeXorMultiple", { enumerable: true, get: function () { return constantTimeXor_1.constantTimeXorMultiple; } });
39
+ // Export ECIES block encryption utility (browser-compatible)
40
+ var ecies_1 = require("./lib/access/ecies");
41
+ Object.defineProperty(exports, "BlockECIES", { enumerable: true, get: function () { return ecies_1.BlockECIES; } });
39
42
  // Export ServiceProvider for advanced usage
40
43
  var service_provider_1 = require("./lib/services/service.provider");
41
44
  Object.defineProperty(exports, "ServiceProvider", { enumerable: true, get: function () { return service_provider_1.ServiceProvider; } });
@@ -55,6 +58,18 @@ var checksum_service_1 = require("./lib/services/checksum.service");
55
58
  Object.defineProperty(exports, "ChecksumService", { enumerable: true, get: function () { return checksum_service_1.ChecksumService; } });
56
59
  var messageCBLService_1 = require("./lib/services/messaging/messageCBLService");
57
60
  Object.defineProperty(exports, "MessageCBLService", { enumerable: true, get: function () { return messageCBLService_1.MessageCBLService; } });
61
+ // Export asset / joule unit conversion helpers (pure math, browser-safe)
62
+ var microunits_1 = require("./lib/asset/microunits");
63
+ Object.defineProperty(exports, "joulesToMicrojoules", { enumerable: true, get: function () { return microunits_1.joulesToMicrojoules; } });
64
+ Object.defineProperty(exports, "microjoulesToJoules", { enumerable: true, get: function () { return microunits_1.microjoulesToJoules; } });
65
+ var formatJoule_1 = require("./lib/joule/formatJoule");
66
+ Object.defineProperty(exports, "formatJoule", { enumerable: true, get: function () { return formatJoule_1.formatJoule; } });
67
+ // Export durability level enum and helpers (browser-safe)
68
+ var durabilityLevel_1 = require("./lib/enumerations/durabilityLevel");
69
+ Object.defineProperty(exports, "DefaultDurabilityLevel", { enumerable: true, get: function () { return durabilityLevel_1.DefaultDurabilityLevel; } });
70
+ Object.defineProperty(exports, "DurabilityLevel", { enumerable: true, get: function () { return durabilityLevel_1.DurabilityLevel; } });
71
+ Object.defineProperty(exports, "DurabilityMap", { enumerable: true, get: function () { return durabilityLevel_1.DurabilityMap; } });
72
+ Object.defineProperty(exports, "getParityCountForDurability", { enumerable: true, get: function () { return durabilityLevel_1.getParityCountForDurability; } });
58
73
  // Export messaging enums and interfaces
59
74
  var brightChainStrings_1 = require("./lib/enumerations/brightChainStrings");
60
75
  Object.defineProperty(exports, "BrightChainStrings", { enumerable: true, get: function () { return brightChainStrings_1.BrightChainStrings; } });
@@ -64,6 +79,11 @@ var messageEncryptionScheme_1 = require("./lib/enumerations/messaging/messageEnc
64
79
  Object.defineProperty(exports, "MessageEncryptionScheme", { enumerable: true, get: function () { return messageEncryptionScheme_1.MessageEncryptionScheme; } });
65
80
  var messagePriority_1 = require("./lib/enumerations/messaging/messagePriority");
66
81
  Object.defineProperty(exports, "MessagePriority", { enumerable: true, get: function () { return messagePriority_1.MessagePriority; } });
82
+ // Head registry (browser-compatible in-memory implementation)
83
+ var inMemoryHeadRegistry_1 = require("./lib/db/inMemoryHeadRegistry");
84
+ Object.defineProperty(exports, "InMemoryHeadRegistry", { enumerable: true, get: function () { return inMemoryHeadRegistry_1.InMemoryHeadRegistry; } });
85
+ // Joule resource-credit primitives (browser-safe)
86
+ tslib_1.__exportStar(require("./lib/joule"), exports);
67
87
  var browserSignatureVerifier_1 = require("./lib/ledger/browserSignatureVerifier");
68
88
  Object.defineProperty(exports, "BrowserSignatureVerifier", { enumerable: true, get: function () { return browserSignatureVerifier_1.BrowserSignatureVerifier; } });
69
89
  var eciesSignatureVerifier_1 = require("./lib/ledger/eciesSignatureVerifier");
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,qEAAqE;;;;AAErE,4DAAkC;AAClC,uEAA6C;AAC7C,4EAAkD;AAClD,8EAAoD;AACpD,wEAA8C;AAE9C,mBAAmB;AACnB,6CAA6E;AAApE,sGAAA,SAAS,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,kGAAA,KAAK,OAAA;AAAE,uGAAA,UAAU,OAAA;AAEnD,qCAAqC;AACrC,0CAA8C;AAArC,iGAAA,SAAS,OAAA;AAClB,8CAI6B;AAH3B,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAGf,8CAAkD;AAAzC,qGAAA,WAAW,OAAA;AACpB,gDAAoD;AAA3C,uGAAA,YAAY,OAAA;AAErB,wBAAwB;AACxB,gEAA+D;AAAtD,gHAAA,cAAc,OAAA;AAEvB,2BAA2B;AAC3B,2DAA4D;AAAnD,gHAAA,eAAe,OAAA;AAExB,0DAA0D;AAC1D,+DAIqC;AAHnC,yHAAA,sBAAsB,OAAA;AACtB,kHAAA,eAAe,OAAA;AACf,0HAAA,uBAAuB,OAAA;AAGzB,4CAA4C;AAC5C,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AAExB,4CAA4C;AAC5C,mCAAmD;AAA1C,6GAAA,qBAAqB,OAAA;AAE9B,kDAAkD;AAClD,iDAAgD;AAAvC,oGAAA,QAAQ,OAAA;AAEjB,0CAA0C;AAC1C,uEAAwE;AAA/D,oGAAA,SAAS,OAAA;AAGlB,kBAAkB;AAClB,wDAAuD;AAA9C,wGAAA,UAAU,OAAA;AACnB,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AACxB,gFAA+E;AAAtE,sHAAA,iBAAiB,OAAA;AAE1B,wCAAwC;AACxC,4EAA2E;AAAlE,wHAAA,kBAAkB,OAAA;AAC3B,8EAA6E;AAApE,gHAAA,cAAc,OAAA;AACvB,gGAA+F;AAAtF,kIAAA,uBAAuB,OAAA;AAChC,gFAA+E;AAAtE,kHAAA,eAAe,OAAA;AAsBxB,kFAAiF;AAAxE,oIAAA,wBAAwB,OAAA;AACjC,8EAA6E;AAApE,gIAAA,sBAAsB,OAAA;AAC/B,8CAA6C;AAApC,gGAAA,MAAM,OAAA;AACf,0EAAyE;AAAhE,4HAAA,oBAAoB,OAAA;AAC7B,4EAA2E;AAAlE,8HAAA,qBAAqB,OAAA;AAC9B,wEAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAI5B,+EAAuE;AAA9D,+GAAA,UAAU,OAAA;AAEnB,6EAAgF;AAAvE,wHAAA,oBAAoB,OAAA;AAG7B,iEAAgE;AAAvD,wGAAA,UAAU,OAAA;AACnB,qEAAoE;AAA3D,4GAAA,YAAY,OAAA;AACrB,wEAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAC5B,wFAAuF;AAA9E,0IAAA,2BAA2B,OAAA"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,qEAAqE;;;;AAErE,4DAAkC;AAClC,uEAA6C;AAC7C,4EAAkD;AAClD,8EAAoD;AACpD,wEAA8C;AAE9C,mBAAmB;AACnB,6CAA6E;AAApE,sGAAA,SAAS,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,kGAAA,KAAK,OAAA;AAAE,uGAAA,UAAU,OAAA;AAEnD,qCAAqC;AACrC,0CAA8C;AAArC,iGAAA,SAAS,OAAA;AAClB,8CAI6B;AAH3B,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAGf,8CAAkD;AAAzC,qGAAA,WAAW,OAAA;AACpB,gDAAoD;AAA3C,uGAAA,YAAY,OAAA;AAErB,wBAAwB;AACxB,gEAA+D;AAAtD,gHAAA,cAAc,OAAA;AAEvB,2BAA2B;AAC3B,2DAA4D;AAAnD,gHAAA,eAAe,OAAA;AAExB,0DAA0D;AAC1D,+DAIqC;AAHnC,yHAAA,sBAAsB,OAAA;AACtB,kHAAA,eAAe,OAAA;AACf,0HAAA,uBAAuB,OAAA;AAGzB,6DAA6D;AAC7D,4CAAgD;AAAvC,mGAAA,UAAU,OAAA;AAEnB,4CAA4C;AAC5C,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AAExB,4CAA4C;AAC5C,mCAAmD;AAA1C,6GAAA,qBAAqB,OAAA;AAE9B,kDAAkD;AAClD,iDAAgD;AAAvC,oGAAA,QAAQ,OAAA;AAEjB,0CAA0C;AAC1C,uEAAwE;AAA/D,oGAAA,SAAS,OAAA;AAGlB,kBAAkB;AAClB,wDAAuD;AAA9C,wGAAA,UAAU,OAAA;AACnB,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AACxB,gFAA+E;AAAtE,sHAAA,iBAAiB,OAAA;AAE1B,yEAAyE;AACzE,qDAGgC;AAF9B,iHAAA,mBAAmB,OAAA;AACnB,iHAAA,mBAAmB,OAAA;AAErB,uDAAsD;AAA7C,0GAAA,WAAW,OAAA;AAEpB,0DAA0D;AAC1D,sEAK4C;AAJ1C,yHAAA,sBAAsB,OAAA;AACtB,kHAAA,eAAe,OAAA;AACf,gHAAA,aAAa,OAAA;AACb,8HAAA,2BAA2B,OAAA;AAG7B,wCAAwC;AACxC,4EAA2E;AAAlE,wHAAA,kBAAkB,OAAA;AAC3B,8EAA6E;AAApE,gHAAA,cAAc,OAAA;AACvB,gGAA+F;AAAtF,kIAAA,uBAAuB,OAAA;AAChC,gFAA+E;AAAtE,kHAAA,eAAe,OAAA;AAYxB,8DAA8D;AAC9D,sEAAqE;AAA5D,4HAAA,oBAAoB,OAAA;AAG7B,kDAAkD;AAClD,sDAA4B;AAY5B,kFAAiF;AAAxE,oIAAA,wBAAwB,OAAA;AACjC,8EAA6E;AAApE,gIAAA,sBAAsB,OAAA;AAC/B,8CAA6C;AAApC,gGAAA,MAAM,OAAA;AACf,0EAAyE;AAAhE,4HAAA,oBAAoB,OAAA;AAC7B,4EAA2E;AAAlE,8HAAA,qBAAqB,OAAA;AAC9B,wEAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAI5B,+EAAuE;AAA9D,+GAAA,UAAU,OAAA;AAEnB,6EAAgF;AAAvE,wHAAA,oBAAoB,OAAA;AAG7B,iEAAgE;AAAvD,wGAAA,UAAU,OAAA;AACnB,qEAAoE;AAA3D,4GAAA,YAAY,OAAA;AACrB,wEAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAC5B,wFAAuF;AAA9E,0IAAA,2BAA2B,OAAA"}
@@ -0,0 +1,66 @@
1
+ import { IAssetAccount, IAssetAccountDto } from '../interfaces/assetAccount';
2
+ import { Checksum } from '../types/checksum';
3
+ declare const BIGINT_FIELDS: readonly ["balance", "earned", "spent", "reserved"];
4
+ type BigIntField = (typeof BIGINT_FIELDS)[number];
5
+ /**
6
+ * Hydrate a raw DTO record into a canonical {@link IAssetAccountDto}.
7
+ *
8
+ * Handles two legacy markers introduced before the
9
+ * `asset-account-store-generalization` refactor:
10
+ *
11
+ * - **missing `assetId`** → defaults to `'joule'`.
12
+ * - **`number` balance fields** → multiplied by
13
+ * {@link JOULE_MICROUNITS_PER_UNIT} (rounded) and stored as decimal-
14
+ * string `bigint` microunits.
15
+ *
16
+ * Already-upgraded DTOs round-trip unchanged. The function never throws —
17
+ * unrecognized field shapes coerce to `'0'` so the caller gets a fully
18
+ * populated DTO it can persist on next write.
19
+ *
20
+ * @see asset-account-store-generalization spec, Requirements 1.4, 2.5, 2.6.
21
+ */
22
+ export declare function hydrateAssetAccountDto(raw: Record<string, unknown>): IAssetAccountDto;
23
+ /**
24
+ * Generalized per-(member, asset) account.
25
+ *
26
+ * `bigint` microunit balances eliminate floating-point drift from
27
+ * charge / credit paths. The legacy {@link EnergyAccount} class is
28
+ * preserved untouched during this additive phase; a future phase will
29
+ * fold it onto this base via re-export alias.
30
+ *
31
+ * @see asset-account-store-generalization spec, Phase 3.
32
+ */
33
+ export declare class AssetAccount implements IAssetAccount {
34
+ readonly memberId: Checksum;
35
+ readonly assetId: string;
36
+ readonly createdAt: Date;
37
+ balance: bigint;
38
+ earned: bigint;
39
+ spent: bigint;
40
+ reserved: bigint;
41
+ reputation: number;
42
+ lastUpdated: Date;
43
+ constructor(memberId: Checksum, assetId?: string, createdAt?: Date, balance?: bigint, earned?: bigint, spent?: bigint, reserved?: bigint, reputation?: number, lastUpdated?: Date);
44
+ /** Available = balance - reserved, floored at 0. */
45
+ get availableBalance(): bigint;
46
+ /** Net = earned - spent. May be negative. */
47
+ get netAsset(): bigint;
48
+ canAfford(amount: bigint): boolean;
49
+ reserve(amount: bigint): void;
50
+ release(amount: bigint): void;
51
+ charge(amount: bigint): void;
52
+ credit(amount: bigint): void;
53
+ updateReputation(newReputation: number): void;
54
+ toDto(): IAssetAccountDto;
55
+ /**
56
+ * Build an {@link AssetAccount} from a DTO. Accepts both fully-upgraded
57
+ * {@link IAssetAccountDto} and legacy `IEnergyAccountDto`-shaped records:
58
+ * the input is run through {@link hydrateAssetAccountDto} first.
59
+ */
60
+ static fromDto(dto: Record<string, unknown>): AssetAccount;
61
+ toJson(): string;
62
+ static fromJson(json: string): AssetAccount;
63
+ }
64
+ export declare const ASSET_ACCOUNT_BIGINT_FIELDS: readonly BigIntField[];
65
+ export {};
66
+ //# sourceMappingURL=assetAccount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assetAccount.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/asset/assetAccount.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,QAAA,MAAM,aAAa,qDAAsD,CAAC;AAC1E,KAAK,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAWlD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,gBAAgB,CAsClB;AAED;;;;;;;;;GASG;AACH,qBAAa,YAAa,YAAW,aAAa;aAS9B,QAAQ,EAAE,QAAQ;aAClB,OAAO,EAAE,MAAM;aACf,SAAS,EAAE,IAAI;IAV1B,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,OAAO,GAAE,MAAuB,EAChC,SAAS,GAAE,IAAiB,EAC5C,OAAO,GAAE,MAAW,EACpB,MAAM,GAAE,MAAW,EACnB,KAAK,GAAE,MAAW,EAClB,QAAQ,GAAE,MAAW,EACrB,UAAU,SAAM,EAChB,WAAW,CAAC,EAAE,IAAI;IAoBpB,oDAAoD;IACpD,IAAI,gBAAgB,IAAI,MAAM,CAG7B;IAED,6CAA6C;IAC7C,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAKlC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAa7B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM7B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAc5B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAO5B,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAW7C,KAAK,IAAI,gBAAgB;IAczB;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY;IAe1D,MAAM,IAAI,MAAM;IAIhB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;CAG5C;AAID,eAAO,MAAM,2BAA2B,EAAE,SAAS,WAAW,EAC/C,CAAC"}
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ASSET_ACCOUNT_BIGINT_FIELDS = exports.AssetAccount = void 0;
4
+ exports.hydrateAssetAccountDto = hydrateAssetAccountDto;
5
+ const insufficientAvailableBalanceError_1 = require("../errors/asset/insufficientAvailableBalanceError");
6
+ const invalidAmountError_1 = require("../errors/asset/invalidAmountError");
7
+ const checksum_1 = require("../types/checksum");
8
+ const jouleConstants_1 = require("./jouleConstants");
9
+ const BIGINT_FIELDS = ['balance', 'earned', 'spent', 'reserved'];
10
+ function assertNonNegativeBigInt(value, field) {
11
+ if (typeof value !== 'bigint') {
12
+ throw new invalidAmountError_1.InvalidAmountError(`${field} must be bigint`, value);
13
+ }
14
+ if (value < 0n) {
15
+ throw new invalidAmountError_1.InvalidAmountError(`${field} must be non-negative`, value);
16
+ }
17
+ }
18
+ /**
19
+ * Hydrate a raw DTO record into a canonical {@link IAssetAccountDto}.
20
+ *
21
+ * Handles two legacy markers introduced before the
22
+ * `asset-account-store-generalization` refactor:
23
+ *
24
+ * - **missing `assetId`** → defaults to `'joule'`.
25
+ * - **`number` balance fields** → multiplied by
26
+ * {@link JOULE_MICROUNITS_PER_UNIT} (rounded) and stored as decimal-
27
+ * string `bigint` microunits.
28
+ *
29
+ * Already-upgraded DTOs round-trip unchanged. The function never throws —
30
+ * unrecognized field shapes coerce to `'0'` so the caller gets a fully
31
+ * populated DTO it can persist on next write.
32
+ *
33
+ * @see asset-account-store-generalization spec, Requirements 1.4, 2.5, 2.6.
34
+ */
35
+ function hydrateAssetAccountDto(raw) {
36
+ const assetIdRaw = raw['assetId'];
37
+ const assetId = typeof assetIdRaw === 'string' && assetIdRaw.length > 0
38
+ ? assetIdRaw
39
+ : jouleConstants_1.JOULE_ASSET_ID;
40
+ const out = { ...raw, assetId };
41
+ for (const field of BIGINT_FIELDS) {
42
+ const v = raw[field];
43
+ if (typeof v === 'bigint') {
44
+ out[field] = v.toString();
45
+ }
46
+ else if (typeof v === 'number' && Number.isFinite(v)) {
47
+ // Legacy joule DTO: number Joules → bigint microjoules.
48
+ const micro = BigInt(Math.round(v * Number(jouleConstants_1.JOULE_MICROUNITS_PER_UNIT)));
49
+ out[field] = micro.toString();
50
+ }
51
+ else if (typeof v === 'string' && /^-?\d+$/.test(v)) {
52
+ out[field] = v;
53
+ }
54
+ else {
55
+ out[field] = '0';
56
+ }
57
+ }
58
+ if (typeof out['reputation'] !== 'number') {
59
+ out['reputation'] = 0;
60
+ }
61
+ if (typeof out['memberId'] !== 'string') {
62
+ out['memberId'] = '';
63
+ }
64
+ if (typeof out['createdAt'] !== 'string') {
65
+ out['createdAt'] = new Date(0).toISOString();
66
+ }
67
+ if (typeof out['lastUpdated'] !== 'string') {
68
+ out['lastUpdated'] = out['createdAt'];
69
+ }
70
+ return out;
71
+ }
72
+ /**
73
+ * Generalized per-(member, asset) account.
74
+ *
75
+ * `bigint` microunit balances eliminate floating-point drift from
76
+ * charge / credit paths. The legacy {@link EnergyAccount} class is
77
+ * preserved untouched during this additive phase; a future phase will
78
+ * fold it onto this base via re-export alias.
79
+ *
80
+ * @see asset-account-store-generalization spec, Phase 3.
81
+ */
82
+ class AssetAccount {
83
+ memberId;
84
+ assetId;
85
+ createdAt;
86
+ balance;
87
+ earned;
88
+ spent;
89
+ reserved;
90
+ reputation;
91
+ lastUpdated;
92
+ constructor(memberId, assetId = jouleConstants_1.JOULE_ASSET_ID, createdAt = new Date(), balance = 0n, earned = 0n, spent = 0n, reserved = 0n, reputation = 0.5, lastUpdated) {
93
+ this.memberId = memberId;
94
+ this.assetId = assetId;
95
+ this.createdAt = createdAt;
96
+ if (typeof assetId !== 'string' || assetId.length === 0) {
97
+ throw new invalidAmountError_1.InvalidAmountError('assetId must be a non-empty string', assetId);
98
+ }
99
+ assertNonNegativeBigInt(balance, 'balance');
100
+ assertNonNegativeBigInt(earned, 'earned');
101
+ assertNonNegativeBigInt(spent, 'spent');
102
+ assertNonNegativeBigInt(reserved, 'reserved');
103
+ this.balance = balance;
104
+ this.earned = earned;
105
+ this.spent = spent;
106
+ this.reserved = reserved;
107
+ this.reputation = Math.max(0, Math.min(1, reputation));
108
+ this.lastUpdated = lastUpdated ?? createdAt;
109
+ }
110
+ /** Available = balance - reserved, floored at 0. */
111
+ get availableBalance() {
112
+ const a = this.balance - this.reserved;
113
+ return a > 0n ? a : 0n;
114
+ }
115
+ /** Net = earned - spent. May be negative. */
116
+ get netAsset() {
117
+ return this.earned - this.spent;
118
+ }
119
+ canAfford(amount) {
120
+ if (typeof amount !== 'bigint' || amount < 0n)
121
+ return false;
122
+ return this.availableBalance >= amount;
123
+ }
124
+ reserve(amount) {
125
+ assertNonNegativeBigInt(amount, 'amount');
126
+ if (!this.canAfford(amount)) {
127
+ throw new insufficientAvailableBalanceError_1.InsufficientAvailableBalanceError(this.assetId, amount, this.availableBalance);
128
+ }
129
+ this.reserved += amount;
130
+ this.lastUpdated = new Date();
131
+ }
132
+ release(amount) {
133
+ assertNonNegativeBigInt(amount, 'amount');
134
+ this.reserved = this.reserved > amount ? this.reserved - amount : 0n;
135
+ this.lastUpdated = new Date();
136
+ }
137
+ charge(amount) {
138
+ assertNonNegativeBigInt(amount, 'amount');
139
+ if (amount > this.balance) {
140
+ throw new insufficientAvailableBalanceError_1.InsufficientAvailableBalanceError(this.assetId, amount, this.balance);
141
+ }
142
+ this.balance -= amount;
143
+ this.spent += amount;
144
+ this.lastUpdated = new Date();
145
+ }
146
+ credit(amount) {
147
+ assertNonNegativeBigInt(amount, 'amount');
148
+ this.balance += amount;
149
+ this.earned += amount;
150
+ this.lastUpdated = new Date();
151
+ }
152
+ updateReputation(newReputation) {
153
+ if (typeof newReputation !== 'number' || !Number.isFinite(newReputation)) {
154
+ throw new invalidAmountError_1.InvalidAmountError('reputation must be finite number', newReputation);
155
+ }
156
+ this.reputation = Math.max(0, Math.min(1, newReputation));
157
+ this.lastUpdated = new Date();
158
+ }
159
+ toDto() {
160
+ return {
161
+ memberId: this.memberId.toHex(),
162
+ assetId: this.assetId,
163
+ balance: this.balance.toString(),
164
+ earned: this.earned.toString(),
165
+ spent: this.spent.toString(),
166
+ reserved: this.reserved.toString(),
167
+ reputation: this.reputation,
168
+ createdAt: this.createdAt.toISOString(),
169
+ lastUpdated: this.lastUpdated.toISOString(),
170
+ };
171
+ }
172
+ /**
173
+ * Build an {@link AssetAccount} from a DTO. Accepts both fully-upgraded
174
+ * {@link IAssetAccountDto} and legacy `IEnergyAccountDto`-shaped records:
175
+ * the input is run through {@link hydrateAssetAccountDto} first.
176
+ */
177
+ static fromDto(dto) {
178
+ const h = hydrateAssetAccountDto(dto);
179
+ return new AssetAccount(checksum_1.Checksum.fromHex(h.memberId), h.assetId, new Date(h.createdAt), BigInt(h.balance), BigInt(h.earned), BigInt(h.spent), BigInt(h.reserved), h.reputation, new Date(h.lastUpdated));
180
+ }
181
+ toJson() {
182
+ return JSON.stringify(this.toDto());
183
+ }
184
+ static fromJson(json) {
185
+ return AssetAccount.fromDto(JSON.parse(json));
186
+ }
187
+ }
188
+ exports.AssetAccount = AssetAccount;
189
+ // Re-export field list for tests / store internals that need to walk
190
+ // every bigint-microunit field.
191
+ exports.ASSET_ACCOUNT_BIGINT_FIELDS = BIGINT_FIELDS;
192
+ //# sourceMappingURL=assetAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assetAccount.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/asset/assetAccount.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Options controlling {@link formatAssetAmount} output.
3
+ */
4
+ export interface IFormatAssetAmountOptions {
5
+ /**
6
+ * Number of fractional digits to render. Defaults to the asset's natural
7
+ * precision (6 for joule).
8
+ */
9
+ precision?: number;
10
+ /**
11
+ * BCP-47 locale tag for digit grouping / decimal separator. When omitted,
12
+ * a plain non-localized representation is produced (no thousands grouping,
13
+ * `.` decimal separator).
14
+ */
15
+ locale?: string;
16
+ }
17
+ /**
18
+ * Format an asset microunit amount as a human-readable string.
19
+ *
20
+ * - For `assetId === 'joule'` the default format is `'1.234567 J'`.
21
+ * - For unknown assetIds the function falls back to `'<microunits> <assetId>'`
22
+ * raw and never throws.
23
+ *
24
+ * No business logic SHALL parse formatted strings back into amounts; parsing
25
+ * occurs only on validated DTO inputs.
26
+ *
27
+ * @see asset-account-store-generalization spec, Requirements 8.1–8.4.
28
+ */
29
+ export declare function formatAssetAmount(amount: bigint, assetId: string, opts?: IFormatAssetAmountOptions): string;
30
+ //# sourceMappingURL=formatAssetAmount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatAssetAmount.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/asset/formatAssetAmount.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,yBAAyB,GAC/B,MAAM,CAwCR"}