@bsv/wallet-toolbox 2.12.0 → 2.13.2

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 (693) hide show
  1. package/CHANGELOG.md +350 -1
  2. package/README.md +556 -6
  3. package/docs/README.md +8 -1
  4. package/docs/client.md +13057 -4632
  5. package/docs/identity-verification.md +196 -0
  6. package/docs/monitor.md +505 -190
  7. package/docs/services.md +4013 -1153
  8. package/docs/setup.md +98 -58
  9. package/docs/storage.md +5780 -1609
  10. package/docs/sync-transfer.md +144 -0
  11. package/docs/wallet.md +10155 -10871
  12. package/out/src/CWIStyleWalletManager.d.ts +6 -8
  13. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  14. package/out/src/CWIStyleWalletManager.js +170 -125
  15. package/out/src/CWIStyleWalletManager.js.map +1 -1
  16. package/out/src/Setup.d.ts +2 -0
  17. package/out/src/Setup.d.ts.map +1 -1
  18. package/out/src/Setup.js +3 -2
  19. package/out/src/Setup.js.map +1 -1
  20. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  21. package/out/src/ShamirWalletManager.js +34 -19
  22. package/out/src/ShamirWalletManager.js.map +1 -1
  23. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  24. package/out/src/SimpleWalletManager.js +7 -6
  25. package/out/src/SimpleWalletManager.js.map +1 -1
  26. package/out/src/Wallet.d.ts +50 -11
  27. package/out/src/Wallet.d.ts.map +1 -1
  28. package/out/src/Wallet.js +183 -107
  29. package/out/src/Wallet.js.map +1 -1
  30. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  31. package/out/src/WalletAuthenticationManager.js +282 -26
  32. package/out/src/WalletAuthenticationManager.js.map +1 -1
  33. package/out/src/WalletLogger.js +1 -1
  34. package/out/src/WalletLogger.js.map +1 -1
  35. package/out/src/WalletPermissionsManager.d.ts +30 -17
  36. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  37. package/out/src/WalletPermissionsManager.js +540 -312
  38. package/out/src/WalletPermissionsManager.js.map +1 -1
  39. package/out/src/WalletSettingsManager.d.ts +3 -2
  40. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  41. package/out/src/WalletSettingsManager.js +141 -6
  42. package/out/src/WalletSettingsManager.js.map +1 -1
  43. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  44. package/out/src/entropy/EntropyCollector.js +3 -2
  45. package/out/src/entropy/EntropyCollector.js.map +1 -1
  46. package/out/src/fundWalletP2PKH.d.ts.map +1 -1
  47. package/out/src/fundWalletP2PKH.js +143 -44
  48. package/out/src/fundWalletP2PKH.js.map +1 -1
  49. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  50. package/out/src/mockchain/MockChainTracker.js +5 -5
  51. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  52. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  53. package/out/src/mockchain/MockServices.js +32 -8
  54. package/out/src/mockchain/MockServices.js.map +1 -1
  55. package/out/src/monitor/Monitor.d.ts +17 -0
  56. package/out/src/monitor/Monitor.d.ts.map +1 -1
  57. package/out/src/monitor/Monitor.js +206 -42
  58. package/out/src/monitor/Monitor.js.map +1 -1
  59. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  60. package/out/src/monitor/MonitorDaemon.js +64 -16
  61. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  62. package/out/src/monitor/monitorValidation.d.ts +12 -0
  63. package/out/src/monitor/monitorValidation.d.ts.map +1 -0
  64. package/out/src/monitor/monitorValidation.js +133 -0
  65. package/out/src/monitor/monitorValidation.js.map +1 -0
  66. package/out/src/monitor/tasks/TaskArcSSE.d.ts +2 -0
  67. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  68. package/out/src/monitor/tasks/TaskArcSSE.js +28 -12
  69. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  70. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +5 -0
  71. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  72. package/out/src/monitor/tasks/TaskCheckForProofs.js +29 -24
  73. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  74. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  75. package/out/src/monitor/tasks/TaskCheckNoSends.js +11 -3
  76. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  77. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  78. package/out/src/monitor/tasks/TaskFailAbandoned.js +9 -4
  79. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  80. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  81. package/out/src/monitor/tasks/TaskNewHeader.js +3 -1
  82. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  83. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -1
  84. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +9 -3
  85. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -1
  86. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  87. package/out/src/monitor/tasks/TaskReorg.js +4 -4
  88. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  89. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  90. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +17 -7
  91. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  92. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +18 -1
  93. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  94. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +99 -21
  95. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  96. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +4 -4
  97. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  98. package/out/src/monitor/tasks/TaskReviewUtxos.js +41 -13
  99. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  100. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  101. package/out/src/monitor/tasks/TaskSendWaiting.js +52 -11
  102. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  103. package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -0
  104. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  105. package/out/src/monitor/tasks/TaskUnFail.js +26 -8
  106. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  107. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  108. package/out/src/sdk/PrivilegedKeyManager.js +3 -2
  109. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  110. package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
  111. package/out/src/sdk/WalletErrorFromJson.js +112 -2
  112. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  113. package/out/src/sdk/WalletServices.interfaces.d.ts +23 -1
  114. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  115. package/out/src/sdk/WalletStorage.interfaces.d.ts +49 -3
  116. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  117. package/out/src/services/ServiceCollection.js +2 -2
  118. package/out/src/services/ServiceCollection.js.map +1 -1
  119. package/out/src/services/Services.d.ts +5 -0
  120. package/out/src/services/Services.d.ts.map +1 -1
  121. package/out/src/services/Services.js +276 -110
  122. package/out/src/services/Services.js.map +1 -1
  123. package/out/src/services/chaintracker/BHServiceClient.d.ts +21 -4
  124. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  125. package/out/src/services/chaintracker/BHServiceClient.js +267 -66
  126. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  127. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +25 -3
  128. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  129. package/out/src/services/chaintracker/ChaintracksChainTracker.js +188 -53
  130. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  131. package/out/src/services/chaintracker/LocalChainTracker.d.ts +26 -0
  132. package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -1
  133. package/out/src/services/chaintracker/LocalChainTracker.js +180 -10
  134. package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -1
  135. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  136. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +59 -7
  137. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  138. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +6 -0
  139. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
  140. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +7 -0
  141. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
  142. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +2 -0
  143. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -1
  144. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +9 -0
  145. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
  146. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +19 -0
  147. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  148. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +237 -61
  149. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  150. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +16 -0
  151. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  152. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +150 -26
  153. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  154. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +30 -1
  155. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  156. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +346 -30
  157. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  158. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +32 -1
  159. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  160. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +375 -43
  161. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
  162. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  163. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +28 -3
  164. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  165. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  166. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +33 -9
  167. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  168. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  169. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  170. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts.map +1 -1
  171. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +4 -2
  172. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -1
  173. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts +2 -0
  174. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  175. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +17 -4
  176. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  177. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +2 -0
  178. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  179. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +40 -20
  180. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  181. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  182. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +14 -0
  183. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  184. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +6 -0
  185. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
  186. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +56 -9
  187. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
  188. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  189. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +6 -3
  190. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  191. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +4 -0
  192. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  193. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +27 -9
  194. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  195. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +8 -0
  196. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  197. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +49 -5
  198. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  199. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +1 -1
  200. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  201. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +90 -21
  202. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  203. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -1
  204. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  205. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +185 -38
  206. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  207. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  208. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +59 -6
  209. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  210. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +2 -0
  211. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  212. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +89 -39
  213. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  214. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +10 -0
  215. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  216. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +225 -24
  217. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  218. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +2 -1
  219. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  220. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +265 -96
  221. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  222. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +3 -0
  223. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  224. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +225 -86
  225. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  226. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -0
  227. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  228. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +121 -35
  229. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  230. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +2 -2
  231. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  232. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  233. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  234. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  235. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  236. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  238. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  239. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +1 -7
  240. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  241. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  242. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +1 -7
  243. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  244. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  245. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +1 -7
  246. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  247. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +18 -0
  248. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -1
  249. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +204 -14
  250. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -1
  251. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +6 -1
  252. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  253. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +486 -82
  254. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  255. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  256. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +17 -1
  257. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  258. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -1
  259. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +12 -2
  260. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -1
  261. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  262. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +99 -30
  263. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  264. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +1 -0
  265. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  266. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +23 -15
  267. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  268. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +7 -0
  269. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  270. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +90 -24
  271. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  272. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +2 -1
  273. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  274. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +57 -11
  275. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  276. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts +9 -0
  277. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -1
  278. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +100 -14
  279. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -1
  280. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  281. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  282. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts +2 -0
  283. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -1
  284. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +104 -8
  285. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -1
  286. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +1 -0
  287. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -1
  288. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +79 -15
  289. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -1
  290. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +3 -0
  291. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  292. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +15 -0
  293. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  294. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +6 -1
  295. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  296. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +311 -93
  297. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  298. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts +4 -0
  299. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts.map +1 -0
  300. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js +33 -0
  301. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js.map +1 -0
  302. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
  303. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  304. package/out/src/services/classifyOutputUtxo.d.ts.map +1 -1
  305. package/out/src/services/classifyOutputUtxo.js +19 -10
  306. package/out/src/services/classifyOutputUtxo.js.map +1 -1
  307. package/out/src/services/fiatRateValidation.d.ts +12 -0
  308. package/out/src/services/fiatRateValidation.d.ts.map +1 -0
  309. package/out/src/services/fiatRateValidation.js +138 -0
  310. package/out/src/services/fiatRateValidation.js.map +1 -0
  311. package/out/src/services/getCanonicalMerklePath.d.ts +15 -0
  312. package/out/src/services/getCanonicalMerklePath.d.ts.map +1 -0
  313. package/out/src/services/getCanonicalMerklePath.js +90 -0
  314. package/out/src/services/getCanonicalMerklePath.js.map +1 -0
  315. package/out/src/services/providers/ARC.d.ts +3 -16
  316. package/out/src/services/providers/ARC.d.ts.map +1 -1
  317. package/out/src/services/providers/ARC.js +36 -37
  318. package/out/src/services/providers/ARC.js.map +1 -1
  319. package/out/src/services/providers/ArcSSEClient.d.ts +25 -19
  320. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  321. package/out/src/services/providers/ArcSSEClient.js +352 -85
  322. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  323. package/out/src/services/providers/Arcade.d.ts +1 -0
  324. package/out/src/services/providers/Arcade.d.ts.map +1 -1
  325. package/out/src/services/providers/Arcade.js +56 -41
  326. package/out/src/services/providers/Arcade.js.map +1 -1
  327. package/out/src/services/providers/Bitails.d.ts +3 -0
  328. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  329. package/out/src/services/providers/Bitails.js +79 -12
  330. package/out/src/services/providers/Bitails.js.map +1 -1
  331. package/out/src/services/providers/SdkWhatsOnChain.d.ts +8 -2
  332. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  333. package/out/src/services/providers/SdkWhatsOnChain.js +83 -10
  334. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  335. package/out/src/services/providers/WhatsOnChain.d.ts +3 -0
  336. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  337. package/out/src/services/providers/WhatsOnChain.js +221 -69
  338. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  339. package/out/src/services/providers/arcProviderConfig.d.ts +27 -0
  340. package/out/src/services/providers/arcProviderConfig.d.ts.map +1 -0
  341. package/out/src/services/providers/arcProviderConfig.js +83 -0
  342. package/out/src/services/providers/arcProviderConfig.js.map +1 -0
  343. package/out/src/services/providers/arcTxDataValidation.d.ts +4 -0
  344. package/out/src/services/providers/arcTxDataValidation.d.ts.map +1 -0
  345. package/out/src/services/providers/arcTxDataValidation.js +92 -0
  346. package/out/src/services/providers/arcTxDataValidation.js.map +1 -0
  347. package/out/src/services/providers/exchangeRates.d.ts +3 -3
  348. package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
  349. package/out/src/services/providers/exchangeRates.js +153 -226
  350. package/out/src/services/providers/exchangeRates.js.map +1 -1
  351. package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
  352. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  353. package/out/src/services/providers/whatsOnChainHelpers.d.ts +2 -2
  354. package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -1
  355. package/out/src/services/providers/whatsOnChainHelpers.js +11 -8
  356. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
  357. package/out/src/services/validateMerklePathResult.d.ts +30 -0
  358. package/out/src/services/validateMerklePathResult.d.ts.map +1 -0
  359. package/out/src/services/validateMerklePathResult.js +272 -0
  360. package/out/src/services/validateMerklePathResult.js.map +1 -0
  361. package/out/src/services/validatePostBeefResult.d.ts +17 -0
  362. package/out/src/services/validatePostBeefResult.d.ts.map +1 -0
  363. package/out/src/services/validatePostBeefResult.js +334 -0
  364. package/out/src/services/validatePostBeefResult.js.map +1 -0
  365. package/out/src/services/validateRawTxResult.d.ts +6 -0
  366. package/out/src/services/validateRawTxResult.d.ts.map +1 -0
  367. package/out/src/services/validateRawTxResult.js +77 -0
  368. package/out/src/services/validateRawTxResult.js.map +1 -0
  369. package/out/src/services/validateScriptHashHistoryResult.d.ts +5 -0
  370. package/out/src/services/validateScriptHashHistoryResult.d.ts.map +1 -0
  371. package/out/src/services/validateScriptHashHistoryResult.js +99 -0
  372. package/out/src/services/validateScriptHashHistoryResult.js.map +1 -0
  373. package/out/src/services/validateStatusForTxidsResult.d.ts +8 -0
  374. package/out/src/services/validateStatusForTxidsResult.d.ts.map +1 -0
  375. package/out/src/services/validateStatusForTxidsResult.js +181 -0
  376. package/out/src/services/validateStatusForTxidsResult.js.map +1 -0
  377. package/out/src/services/validateUtxoStatusResult.d.ts +6 -0
  378. package/out/src/services/validateUtxoStatusResult.d.ts.map +1 -0
  379. package/out/src/services/validateUtxoStatusResult.js +126 -0
  380. package/out/src/services/validateUtxoStatusResult.js.map +1 -0
  381. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
  382. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
  383. package/out/src/signer/actionBatch/ActionBatchPlanner.js +4 -3
  384. package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
  385. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +6 -5
  386. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
  387. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +70 -76
  388. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
  389. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +2 -2
  390. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -1
  391. package/out/src/signer/actionBatch/actionBatchBootstrap.js +3 -3
  392. package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -1
  393. package/out/src/signer/methods/acquireDirectCertificate.d.ts +3 -2
  394. package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
  395. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  396. package/out/src/signer/methods/buildSignableTransaction.d.ts +6 -5
  397. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  398. package/out/src/signer/methods/buildSignableTransaction.js +6 -11
  399. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  400. package/out/src/signer/methods/createAction.d.ts +4 -3
  401. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  402. package/out/src/signer/methods/createAction.js +4 -2
  403. package/out/src/signer/methods/createAction.js.map +1 -1
  404. package/out/src/signer/methods/createNoSendExpiryAction.d.ts +3 -3
  405. package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -1
  406. package/out/src/signer/methods/createNoSendExpiryAction.js +9 -4
  407. package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -1
  408. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  409. package/out/src/signer/methods/internalizeAction.js +2 -2
  410. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  411. package/out/src/signer/methods/proveCertificate.d.ts +3 -2
  412. package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
  413. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  414. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  415. package/out/src/signer/methods/signAction.js +3 -2
  416. package/out/src/signer/methods/signAction.js.map +1 -1
  417. package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -1
  418. package/out/src/signer/methods/verifyUnlockScripts.js +12 -17
  419. package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -1
  420. package/out/src/storage/StorageIdb.d.ts +6 -3
  421. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  422. package/out/src/storage/StorageIdb.js +70 -42
  423. package/out/src/storage/StorageIdb.js.map +1 -1
  424. package/out/src/storage/StorageKnex.d.ts +8 -4
  425. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  426. package/out/src/storage/StorageKnex.js +185 -92
  427. package/out/src/storage/StorageKnex.js.map +1 -1
  428. package/out/src/storage/StorageProvider.d.ts +19 -9
  429. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  430. package/out/src/storage/StorageProvider.js +237 -138
  431. package/out/src/storage/StorageProvider.js.map +1 -1
  432. package/out/src/storage/StorageReader.d.ts +7 -1
  433. package/out/src/storage/StorageReader.d.ts.map +1 -1
  434. package/out/src/storage/StorageReader.js +17 -42
  435. package/out/src/storage/StorageReader.js.map +1 -1
  436. package/out/src/storage/StorageReaderWriter.d.ts +2 -0
  437. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  438. package/out/src/storage/StorageReaderWriter.js +63 -38
  439. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  440. package/out/src/storage/StorageSyncReader.d.ts +1 -1
  441. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  442. package/out/src/storage/StorageSyncReader.js +3 -36
  443. package/out/src/storage/StorageSyncReader.js.map +1 -1
  444. package/out/src/storage/WalletStorageManager.d.ts +9 -7
  445. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  446. package/out/src/storage/WalletStorageManager.js +71 -65
  447. package/out/src/storage/WalletStorageManager.js.map +1 -1
  448. package/out/src/storage/adminServer/adminServer.d.ts +1 -1
  449. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  450. package/out/src/storage/adminServer/adminServer.js +16 -44
  451. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  452. package/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
  453. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  454. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  455. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +7 -4
  456. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  457. package/out/src/storage/methods/ListOutputsSpecOp.js +1 -0
  458. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  459. package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
  460. package/out/src/storage/methods/actionBatch.js +3 -2
  461. package/out/src/storage/methods/actionBatch.js.map +1 -1
  462. package/out/src/storage/methods/actionBatchBlobs.d.ts +2 -0
  463. package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
  464. package/out/src/storage/methods/actionBatchBlobs.js +40 -22
  465. package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
  466. package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
  467. package/out/src/storage/methods/actionBatchValidation.js +22 -30
  468. package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
  469. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +7 -2
  470. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  471. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +57 -44
  472. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  473. package/out/src/storage/methods/createAction.d.ts +7 -6
  474. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  475. package/out/src/storage/methods/createAction.js +7 -5
  476. package/out/src/storage/methods/createAction.js.map +1 -1
  477. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  478. package/out/src/storage/methods/generateChange.js +12 -11
  479. package/out/src/storage/methods/generateChange.js.map +1 -1
  480. package/out/src/storage/methods/getBeefForTransaction.js +5 -7
  481. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  482. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  483. package/out/src/storage/methods/getSyncChunk.js +42 -11
  484. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  485. package/out/src/storage/methods/internalizeAction.d.ts +3 -3
  486. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  487. package/out/src/storage/methods/internalizeAction.js +134 -129
  488. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  489. package/out/src/storage/methods/listActionsIdb.d.ts +3 -2
  490. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  491. package/out/src/storage/methods/listActionsIdb.js +2 -2
  492. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  493. package/out/src/storage/methods/listActionsKnex.d.ts +3 -2
  494. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
  495. package/out/src/storage/methods/listActionsKnex.js +10 -9
  496. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  497. package/out/src/storage/methods/listCertificates.d.ts +3 -2
  498. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  499. package/out/src/storage/methods/listCertificates.js.map +1 -1
  500. package/out/src/storage/methods/listOutputsIdb.d.ts +3 -2
  501. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  502. package/out/src/storage/methods/listOutputsIdb.js +11 -11
  503. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  504. package/out/src/storage/methods/listOutputsKnex.d.ts +3 -2
  505. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  506. package/out/src/storage/methods/listOutputsKnex.js +15 -23
  507. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  508. package/out/src/storage/methods/noSendExpiry.d.ts +3 -3
  509. package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -1
  510. package/out/src/storage/methods/noSendExpiry.js +10 -8
  511. package/out/src/storage/methods/noSendExpiry.js.map +1 -1
  512. package/out/src/storage/methods/preparedBeef.d.ts.map +1 -1
  513. package/out/src/storage/methods/preparedBeef.js +13 -14
  514. package/out/src/storage/methods/preparedBeef.js.map +1 -1
  515. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  516. package/out/src/storage/methods/processAction.js +37 -6
  517. package/out/src/storage/methods/processAction.js.map +1 -1
  518. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +1 -1
  519. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -1
  520. package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -1
  521. package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
  522. package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
  523. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  524. package/out/src/storage/methods/reviewUtxoOutputs.d.ts +1 -0
  525. package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -1
  526. package/out/src/storage/methods/reviewUtxoOutputs.js +51 -4
  527. package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -1
  528. package/out/src/storage/methods/validateSyncProof.d.ts +10 -2
  529. package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -1
  530. package/out/src/storage/methods/validateSyncProof.js +27 -4
  531. package/out/src/storage/methods/validateSyncProof.js.map +1 -1
  532. package/out/src/storage/portable/index.d.ts.map +1 -1
  533. package/out/src/storage/portable/index.js +21 -13
  534. package/out/src/storage/portable/index.js.map +1 -1
  535. package/out/src/storage/remoting/BinaryJson.d.ts +11 -0
  536. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
  537. package/out/src/storage/remoting/BinaryJson.js +94 -8
  538. package/out/src/storage/remoting/BinaryJson.js.map +1 -1
  539. package/out/src/storage/remoting/KnexSessionManager.d.ts +26 -2
  540. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
  541. package/out/src/storage/remoting/KnexSessionManager.js +222 -30
  542. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
  543. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts +26 -0
  544. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -0
  545. package/out/src/storage/remoting/KnexSyncTransferStore.js +222 -0
  546. package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -0
  547. package/out/src/storage/remoting/StorageClient.d.ts +6 -1
  548. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  549. package/out/src/storage/remoting/StorageClient.js +65 -8
  550. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  551. package/out/src/storage/remoting/StorageClientBase.d.ts +53 -10
  552. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  553. package/out/src/storage/remoting/StorageClientBase.js +304 -9
  554. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  555. package/out/src/storage/remoting/StorageMobile.d.ts +5 -0
  556. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  557. package/out/src/storage/remoting/StorageMobile.js +13 -11
  558. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  559. package/out/src/storage/remoting/StorageServer.d.ts +10 -1
  560. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  561. package/out/src/storage/remoting/StorageServer.js +206 -21
  562. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  563. package/out/src/storage/remoting/SyncTransfer.d.ts +29 -0
  564. package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -0
  565. package/out/src/storage/remoting/SyncTransfer.js +153 -0
  566. package/out/src/storage/remoting/SyncTransfer.js.map +1 -0
  567. package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
  568. package/out/src/storage/remoting/entityValidationHelpers.js +35 -0
  569. package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
  570. package/out/src/storage/remoting/syncChunkBinary.d.ts +4 -0
  571. package/out/src/storage/remoting/syncChunkBinary.d.ts.map +1 -0
  572. package/out/src/storage/remoting/syncChunkBinary.js +38 -0
  573. package/out/src/storage/remoting/syncChunkBinary.js.map +1 -0
  574. package/out/src/storage/remoting/validateRpcSyncProofs.d.ts +5 -0
  575. package/out/src/storage/remoting/validateRpcSyncProofs.d.ts.map +1 -0
  576. package/out/src/storage/remoting/validateRpcSyncProofs.js +82 -0
  577. package/out/src/storage/remoting/validateRpcSyncProofs.js.map +1 -0
  578. package/out/src/storage/schema/KnexMigrations.d.ts +3 -0
  579. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  580. package/out/src/storage/schema/KnexMigrations.js +89 -2
  581. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  582. package/out/src/storage/schema/StorageIdbSchema.d.ts +1 -0
  583. package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
  584. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  585. package/out/src/storage/schema/entities/EntityOutput.js +11 -4
  586. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  587. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +2 -1
  588. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  589. package/out/src/storage/schema/entities/EntityProvenTx.js +95 -41
  590. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  591. package/out/src/storage/schema/entities/EntityProvenTxReq.js +1 -1
  592. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  593. package/out/src/storage/schema/entities/EntitySyncState.d.ts +3 -1
  594. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  595. package/out/src/storage/schema/entities/EntitySyncState.js +7 -1
  596. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  597. package/out/src/storage/schema/tables/TableCertificate.d.ts +1 -1
  598. package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
  599. package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
  600. package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
  601. package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
  602. package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
  603. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
  604. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
  605. package/out/src/storage/schema/tables/TableOutput.d.ts +1 -1
  606. package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
  607. package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
  608. package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
  609. package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
  610. package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
  611. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
  612. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
  613. package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
  614. package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
  615. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +1 -1
  616. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
  617. package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
  618. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  619. package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
  620. package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
  621. package/out/src/storage/schema/tables/TableTransaction.d.ts +1 -1
  622. package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
  623. package/out/src/storage/schema/tables/TableTransaction.js.map +1 -1
  624. package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
  625. package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
  626. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
  627. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
  628. package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
  629. package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
  630. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  631. package/out/src/storage/sync/StorageMySQLDojoReader.js +8 -7
  632. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  633. package/out/src/storage/sync/SyncPageBudget.d.ts +8 -0
  634. package/out/src/storage/sync/SyncPageBudget.d.ts.map +1 -0
  635. package/out/src/storage/sync/SyncPageBudget.js +24 -0
  636. package/out/src/storage/sync/SyncPageBudget.js.map +1 -0
  637. package/out/src/storage/sync/syncCheckpoint.d.ts +4 -0
  638. package/out/src/storage/sync/syncCheckpoint.d.ts.map +1 -0
  639. package/out/src/storage/sync/syncCheckpoint.js +49 -0
  640. package/out/src/storage/sync/syncCheckpoint.js.map +1 -0
  641. package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
  642. package/out/src/utility/actionBatchDigest.js +9 -7
  643. package/out/src/utility/actionBatchDigest.js.map +1 -1
  644. package/out/src/utility/actionBatchPack.d.ts.map +1 -1
  645. package/out/src/utility/actionBatchPack.js +7 -12
  646. package/out/src/utility/actionBatchPack.js.map +1 -1
  647. package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
  648. package/out/src/utility/brc153ReferenceLabels.js +4 -4
  649. package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
  650. package/out/src/utility/brc177NoSendExpiry.d.ts +2 -2
  651. package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -1
  652. package/out/src/utility/canonicalizeAtomicBeef.js +2 -2
  653. package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -1
  654. package/out/src/utility/exactActionSpend.d.ts +11 -0
  655. package/out/src/utility/exactActionSpend.d.ts.map +1 -0
  656. package/out/src/utility/exactActionSpend.js +11 -0
  657. package/out/src/utility/exactActionSpend.js.map +1 -0
  658. package/out/src/utility/identityUtils.d.ts +44 -4
  659. package/out/src/utility/identityUtils.d.ts.map +1 -1
  660. package/out/src/utility/identityUtils.js +376 -61
  661. package/out/src/utility/identityUtils.js.map +1 -1
  662. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  663. package/out/src/utility/parseTxScriptOffsets.js +1 -19
  664. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  665. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  666. package/out/src/utility/tscProofToMerklePath.js +35 -4
  667. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  668. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  669. package/out/src/utility/utilityHelpers.js +8 -6
  670. package/out/src/utility/utilityHelpers.js.map +1 -1
  671. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  672. package/out/src/utility/utilityHelpers.noBuffer.js +6 -6
  673. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  674. package/out/src/utility/verifyOverlayOutput.d.ts +12 -0
  675. package/out/src/utility/verifyOverlayOutput.d.ts.map +1 -0
  676. package/out/src/utility/verifyOverlayOutput.js +22 -0
  677. package/out/src/utility/verifyOverlayOutput.js.map +1 -0
  678. package/out/src/utility/walletResultGuards.d.ts +14 -0
  679. package/out/src/utility/walletResultGuards.d.ts.map +1 -0
  680. package/out/src/utility/walletResultGuards.js +28 -0
  681. package/out/src/utility/walletResultGuards.js.map +1 -0
  682. package/out/src/wab-client/WABClient.d.ts +3 -17
  683. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  684. package/out/src/wab-client/WABClient.js +30 -14
  685. package/out/src/wab-client/WABClient.js.map +1 -1
  686. package/out/src/wab-client/WABResponseValidation.d.ts +48 -0
  687. package/out/src/wab-client/WABResponseValidation.d.ts.map +1 -0
  688. package/out/src/wab-client/WABResponseValidation.js +321 -0
  689. package/out/src/wab-client/WABResponseValidation.js.map +1 -0
  690. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  691. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -2
  692. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  693. package/package.json +6 -5
@@ -12,6 +12,7 @@ exports.convertBitsToTarget = convertBitsToTarget;
12
12
  exports.convertBitsToWork = convertBitsToWork;
13
13
  exports.deserializeBaseBlockHeaders = deserializeBaseBlockHeaders;
14
14
  exports.deserializeBlockHeaders = deserializeBlockHeaders;
15
+ exports.validateBaseBlockHeaderFormat = validateBaseBlockHeaderFormat;
15
16
  exports.validateHeaderFormat = validateHeaderFormat;
16
17
  exports.validateHeaderDifficulty = validateHeaderDifficulty;
17
18
  exports.validateHeaderProofOfWork = validateHeaderProofOfWork;
@@ -31,21 +32,114 @@ exports.readUInt32BE = readUInt32BE;
31
32
  exports.convertBufferToUint32 = convertBufferToUint32;
32
33
  const dirtyHashes_1 = require("./dirtyHashes");
33
34
  const sdk_1 = require("@bsv/sdk");
35
+ const Hash_1 = require("@bsv/sdk/primitives/Hash");
36
+ const utils_1 = require("@bsv/sdk/primitives/utils");
34
37
  const utilityHelpers_noBuffer_1 = require("../../../../utility/utilityHelpers.noBuffer");
35
38
  const utilityHelpers_1 = require("../../../../utility/utilityHelpers");
36
39
  const WERR_errors_1 = require("../../../../sdk/WERR_errors");
40
+ const MAX_HEADER_COUNT = 100_000;
41
+ const MAX_HEADER_BYTES = MAX_HEADER_COUNT * 80;
42
+ const MAX_BLOCK_HEIGHT = 0x7fffffff;
43
+ const UINT32_MAX = 0xffffffff;
44
+ const HEX_32_BYTES = /^[0-9a-fA-F]{64}$/;
45
+ function validateByteWindow(buffer, offset, length, name = 'buffer') {
46
+ if (!Array.isArray(buffer) && !(buffer instanceof Uint8Array)) {
47
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER(name, 'a byte array');
48
+ }
49
+ if (!Number.isSafeInteger(offset) ||
50
+ offset < 0 ||
51
+ !Number.isSafeInteger(length) ||
52
+ length < 0 ||
53
+ !Number.isSafeInteger(offset + length) ||
54
+ offset + length > buffer.length) {
55
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${name} window`, 'non-negative safe integers within the byte array');
56
+ }
57
+ if (Array.isArray(buffer)) {
58
+ for (let index = offset; index < offset + length; index++) {
59
+ const value = buffer[index];
60
+ if (!Number.isInteger(value) || value < 0 || value > 0xff) {
61
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER(name, 'an array of byte integers');
62
+ }
63
+ }
64
+ }
65
+ }
66
+ function validateWritableByteWindow(buffer, offset, length) {
67
+ if (!Array.isArray(buffer) && !(buffer instanceof Uint8Array)) {
68
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'a writable byte array');
69
+ }
70
+ if (!Number.isSafeInteger(offset) ||
71
+ offset < 0 ||
72
+ !Number.isSafeInteger(offset + length) ||
73
+ offset + length > buffer.length) {
74
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('offset', `a non-negative safe integer with ${length} writable bytes`);
75
+ }
76
+ }
77
+ function validateWork(value, name) {
78
+ if (typeof value !== 'string' || !HEX_32_BYTES.test(value)) {
79
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER(name, 'exactly 32 hexadecimal bytes');
80
+ }
81
+ return new sdk_1.BigNumber(value, 16);
82
+ }
83
+ function copyBaseHeaderData(value) {
84
+ if (value == null || typeof value !== 'object' || Array.isArray(value)) {
85
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('header', 'a plain data object');
86
+ }
87
+ const prototype = Object.getPrototypeOf(value);
88
+ if (prototype !== Object.prototype && prototype !== null) {
89
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('header', 'a plain data object');
90
+ }
91
+ const descriptors = Object.getOwnPropertyDescriptors(value);
92
+ if (Object.values(descriptors).some(descriptor => descriptor.get != null || descriptor.set != null)) {
93
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('header', 'accessor-free data properties');
94
+ }
95
+ const read = (name) => {
96
+ const descriptor = descriptors[name];
97
+ if (descriptor == null || !('value' in descriptor)) {
98
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('header', `an own ${name} data property`);
99
+ }
100
+ return descriptor.value;
101
+ };
102
+ return {
103
+ version: read('version'),
104
+ previousHash: read('previousHash'),
105
+ merkleRoot: read('merkleRoot'),
106
+ time: read('time'),
107
+ bits: read('bits'),
108
+ nonce: read('nonce')
109
+ };
110
+ }
37
111
  /**
38
112
  * Computes sha256 hash of file contents read as bytes with no encoding.
39
113
  * @param filepath Full filepath to file.
40
114
  * @param bufferSize Optional read buffer size to use. Defaults to 80,000 bytes. Currently ignored.
41
115
  * @returns `{hash, length}` where `hash` is base64 string form of file hash and `length` is file length in bytes.
42
116
  */
43
- async function sha256HashOfBinaryFile(fs, filepath, _bufferSize = 80000) {
44
- const sha256 = new sdk_1.Hash.SHA256();
45
- const bytes = await fs.readFile(filepath);
46
- const length = bytes.length;
47
- sha256.update((0, utilityHelpers_noBuffer_1.asArray)(bytes));
48
- return { hash: sdk_1.Utils.toBase64(sha256.digest()), length };
117
+ async function sha256HashOfBinaryFile(fs, filepath, bufferSize = 80000) {
118
+ if (!Number.isSafeInteger(bufferSize) || bufferSize < 1 || bufferSize > MAX_HEADER_BYTES) {
119
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('bufferSize', `an integer from 1 through ${MAX_HEADER_BYTES}`);
120
+ }
121
+ const hasher = new Hash_1.SHA256();
122
+ const file = await fs.openReadableFile(filepath);
123
+ try {
124
+ const length = await file.getLength();
125
+ if (!Number.isSafeInteger(length) || length < 0 || length > MAX_HEADER_BYTES) {
126
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('file length', `an integer from 0 through ${MAX_HEADER_BYTES}`);
127
+ }
128
+ let offset = 0;
129
+ while (offset < length) {
130
+ const requested = Math.min(bufferSize, length - offset);
131
+ const bytes = await file.read(requested, offset);
132
+ if (!(bytes instanceof Uint8Array) || bytes.length === 0 || bytes.length > requested) {
133
+ throw new Error('Binary file reader returned an invalid or incomplete chunk.');
134
+ }
135
+ hasher.update((0, utilityHelpers_noBuffer_1.asArray)(bytes));
136
+ offset += bytes.length;
137
+ }
138
+ return { hash: (0, utils_1.toBase64)(hasher.digest()), length };
139
+ }
140
+ finally {
141
+ await file.close();
142
+ }
49
143
  }
50
144
  /**
51
145
  * Validates the contents of a bulk header file.
@@ -56,24 +150,64 @@ async function sha256HashOfBinaryFile(fs, filepath, _bufferSize = 80000) {
56
150
  * @returns Validated BulkHeaderFileInfo with `validated` set to true.
57
151
  */
58
152
  async function validateBulkFileData(bf, prevHash, prevChainWork, fetch) {
153
+ if (bf == null || typeof bf !== 'object' || Array.isArray(bf)) {
154
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf', 'a plain data object');
155
+ }
156
+ const prototype = Object.getPrototypeOf(bf);
157
+ const descriptors = Object.getOwnPropertyDescriptors(bf);
158
+ if ((prototype !== Object.prototype && prototype !== null) ||
159
+ Object.values(descriptors).some(descriptor => descriptor.get != null || descriptor.set != null)) {
160
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf', 'an accessor-free plain data object');
161
+ }
59
162
  const vbf = { ...bf };
163
+ if (!Number.isSafeInteger(vbf.count) || vbf.count <= 0 || vbf.count > MAX_HEADER_COUNT) {
164
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.count', `an integer from 1 through ${MAX_HEADER_COUNT}`);
165
+ }
166
+ if (!Number.isSafeInteger(vbf.firstHeight) || vbf.firstHeight < 0 || vbf.firstHeight > MAX_BLOCK_HEIGHT) {
167
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.firstHeight', `an integer from 0 through ${MAX_BLOCK_HEIGHT}`);
168
+ }
169
+ if (vbf.firstHeight + vbf.count - 1 > MAX_BLOCK_HEIGHT) {
170
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf', 'a header range within the supported block heights');
171
+ }
172
+ if (!['main', 'test', 'stn', 'ttn', 'tstn', 'mock'].includes(vbf.chain)) {
173
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.chain', 'a supported Chaintracks network');
174
+ }
175
+ if (typeof vbf.fileName !== 'string' ||
176
+ !/^[A-Za-z0-9][A-Za-z0-9._~-]{0,254}$/.test(vbf.fileName) ||
177
+ vbf.fileName === '.' ||
178
+ vbf.fileName === '..') {
179
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.fileName', 'a safe path-free ASCII file name');
180
+ }
181
+ if (typeof prevHash !== 'string' || !HEX_32_BYTES.test(prevHash)) {
182
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('prevHash', 'exactly 32 hexadecimal bytes');
183
+ }
184
+ validateWork(prevChainWork, 'prevChainWork');
60
185
  if (vbf.data == null && vbf.sourceUrl && fetch != null) {
61
186
  const url = fetch.pathJoin(vbf.sourceUrl, vbf.fileName);
62
187
  vbf.data = await fetch.download(url, vbf.count * 80);
63
188
  }
64
189
  if (vbf.data == null)
65
190
  throw new WERR_errors_1.WERR_INVALID_OPERATION(`bulk file ${vbf.fileName} data is unavailable`);
66
- if (vbf.count <= 0) {
67
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.count', `expected count to be greater than 0, but got ${vbf.count}`);
68
- }
191
+ if (!(vbf.data instanceof Uint8Array))
192
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.data', 'a Uint8Array');
69
193
  if (vbf.data.length !== vbf.count * 80) {
70
194
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.data', `bulk file ${vbf.fileName} data length ${vbf.data.length} does not match expected count ${vbf.count}`);
71
195
  }
72
- vbf.fileHash = (0, utilityHelpers_noBuffer_1.asString)(sdk_1.Hash.sha256((0, utilityHelpers_noBuffer_1.asArray)(vbf.data)), 'base64');
196
+ vbf.fileHash = (0, utilityHelpers_noBuffer_1.asString)((0, Hash_1.sha256)((0, utilityHelpers_noBuffer_1.asArray)(vbf.data)), 'base64');
73
197
  if (bf.fileHash && bf.fileHash !== vbf.fileHash) {
74
198
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.fileHash', `expected ${bf.fileHash} but got ${vbf.fileHash}`);
75
199
  }
76
200
  const { lastHeaderHash, lastChainWork } = validateBufferOfHeaders(vbf.data, prevHash, 0, undefined, prevChainWork);
201
+ if (bf.lastHash &&
202
+ (typeof bf.lastHash !== 'string' || !HEX_32_BYTES.test(bf.lastHash) || bf.lastHash.toLowerCase() !== lastHeaderHash)) {
203
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.lastHash', `expected ${bf.lastHash} but got ${lastHeaderHash}`);
204
+ }
205
+ if (bf.lastChainWork &&
206
+ (typeof bf.lastChainWork !== 'string' ||
207
+ !HEX_32_BYTES.test(bf.lastChainWork) ||
208
+ bf.lastChainWork.toLowerCase() !== lastChainWork)) {
209
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.lastChainWork', `expected ${bf.lastChainWork} but got ${lastChainWork}`);
210
+ }
77
211
  vbf.lastHash = lastHeaderHash;
78
212
  vbf.lastChainWork = lastChainWork;
79
213
  if (vbf.firstHeight === 0) {
@@ -92,11 +226,32 @@ async function validateBulkFileData(bf, prevHash, prevChainWork, fetch) {
92
226
  * @returns Header hash of last header validated or previousHash if there where none.
93
227
  */
94
228
  function validateBufferOfHeaders(buffer, previousHash, offset = 0, count = -1, previousChainWork) {
95
- if (count < 0)
96
- count = Math.floor((buffer.length - offset) / 80);
97
- count = Math.max(0, count);
98
- let lastHeaderHash = previousHash;
229
+ if (!(buffer instanceof Uint8Array))
230
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'a Uint8Array');
231
+ if (!Number.isSafeInteger(offset) || offset < 0 || offset > buffer.length) {
232
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('offset', 'a non-negative safe integer within the buffer');
233
+ }
234
+ if (!Number.isSafeInteger(count) || count < -1 || count > MAX_HEADER_COUNT) {
235
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('count', `-1 or an integer from 0 through ${MAX_HEADER_COUNT}`);
236
+ }
237
+ if (count < 0) {
238
+ if ((buffer.length - offset) % 80 !== 0) {
239
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'a complete sequence of 80-byte headers');
240
+ }
241
+ count = (buffer.length - offset) / 80;
242
+ }
243
+ if (count > MAX_HEADER_COUNT || offset + count * 80 > buffer.length) {
244
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'enough bytes for the bounded requested header count');
245
+ }
246
+ if (typeof previousHash !== 'string' || !HEX_32_BYTES.test(previousHash)) {
247
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('previousHash', 'exactly 32 hexadecimal bytes');
248
+ }
249
+ let lastHeaderHash = previousHash.toLowerCase();
99
250
  let lastChainWork = previousChainWork;
251
+ if (lastChainWork !== undefined) {
252
+ validateWork(lastChainWork, 'previousChainWork');
253
+ lastChainWork = lastChainWork.toLowerCase();
254
+ }
100
255
  for (let i = 0; i < count; i++) {
101
256
  const headerStart = offset + i * 80;
102
257
  const headerEnd = headerStart + 80;
@@ -143,20 +298,24 @@ function validateGenesisHeader(buffer, chain) {
143
298
  * @returns Converted chainWork value from BN to hex string of 32 bytes.
144
299
  */
145
300
  function workBNtoBuffer(work) {
146
- return work.toString(16).padStart(64, '0');
301
+ const encoded = work.toString(16);
302
+ if (!/^[0-9a-f]+$/i.test(encoded) || encoded.length > 64) {
303
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('work', 'a non-negative integer no greater than 256 bits');
304
+ }
305
+ return encoded.toLowerCase().padStart(64, '0');
147
306
  }
148
307
  /**
149
308
  * Returns true if work1 is more work (greater than) work2
150
309
  */
151
310
  function isMoreWork(work1, work2) {
152
- return new sdk_1.BigNumber((0, utilityHelpers_noBuffer_1.asArray)(work1), 16).gt(new sdk_1.BigNumber((0, utilityHelpers_noBuffer_1.asArray)(work2), 16));
311
+ return validateWork(work1, 'work1').gt(validateWork(work2, 'work2'));
153
312
  }
154
313
  /**
155
314
  * Add two Buffer encoded chainwork values
156
315
  * @returns Sum of work1 + work2 as Buffer encoded chainWork value
157
316
  */
158
317
  function addWork(work1, work2) {
159
- const sum = new sdk_1.BigNumber(work1, 16).add(new sdk_1.BigNumber(work2, 16));
318
+ const sum = validateWork(work1, 'work1').add(validateWork(work2, 'work2'));
160
319
  return workBNtoBuffer(sum);
161
320
  }
162
321
  /**
@@ -164,7 +323,11 @@ function addWork(work1, work2) {
164
323
  * @returns work1 - work2 as Buffer encoded chainWork value
165
324
  */
166
325
  function subWork(work1, work2) {
167
- const sum = new sdk_1.BigNumber(work1, 16).sub(new sdk_1.BigNumber(work2, 16));
326
+ const minuend = validateWork(work1, 'work1');
327
+ const subtrahend = validateWork(work2, 'work2');
328
+ if (minuend.lt(subtrahend))
329
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('work1/work2', 'a non-negative subtraction');
330
+ const sum = minuend.sub(subtrahend);
168
331
  return workBNtoBuffer(sum);
169
332
  }
170
333
  /**
@@ -173,8 +336,13 @@ function subWork(work1, work2) {
173
336
  * @returns 32 byte Buffer with "target" value
174
337
  */
175
338
  function convertBitsToTarget(bits) {
176
- if (Array.isArray(bits))
339
+ if (Array.isArray(bits)) {
340
+ if (bits.length !== 4)
341
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('bits', 'exactly four bytes');
342
+ validateByteWindow(bits, 0, 4, 'bits');
177
343
  bits = readUInt32LE(bits, 0);
344
+ }
345
+ validateUnsignedHeaderInteger(bits, 'bits', UINT32_MAX);
178
346
  const shift = (bits >> 24) & 0xff;
179
347
  const data = bits & 0x007fffff;
180
348
  const target = new sdk_1.BigNumber(data);
@@ -186,31 +354,59 @@ function convertBitsToTarget(bits) {
186
354
  }
187
355
  return target;
188
356
  }
357
+ function readCompactBits(bits) {
358
+ if (bits.length !== 4)
359
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('bits', 'exactly four bytes');
360
+ validateByteWindow(bits, 0, 4, 'bits');
361
+ return readUInt32LE(bits, 0);
362
+ }
189
363
  /**
190
364
  * Computes "chainWork" value for 4 byte Bitcoin block header "bits" value.
191
365
  * @param bits number or converted from Buffer using `readUint32LE`
192
366
  * @returns 32 byte Buffer with "chainWork" value
193
367
  */
194
368
  function convertBitsToWork(bits) {
195
- const target = convertBitsToTarget(bits);
369
+ const encoded = Array.isArray(bits) ? readCompactBits(bits) : bits;
370
+ const target = validateCompactTarget(encoded);
196
371
  // convert target to work
197
372
  const work = target.notn(256).div(target.addn(1)).addn(1);
198
373
  return work.toString(16).padStart(64, '0');
199
374
  }
200
375
  function deserializeBaseBlockHeaders(buffer, offset = 0, count) {
376
+ if (!Array.isArray(buffer) && !(buffer instanceof Uint8Array)) {
377
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'a byte array');
378
+ }
379
+ if (!Number.isSafeInteger(offset) || offset < 0 || offset > buffer.length) {
380
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('offset', 'a non-negative safe integer within the buffer');
381
+ }
382
+ if (count !== undefined && (!Number.isSafeInteger(count) || count < 0 || count > MAX_HEADER_COUNT)) {
383
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('count', `an integer from 0 through ${MAX_HEADER_COUNT}`);
384
+ }
385
+ const available = Math.floor((buffer.length - offset) / 80);
386
+ const limit = count ?? available;
387
+ if (Math.min(available, limit) > MAX_HEADER_COUNT) {
388
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', `no more than ${MAX_HEADER_COUNT} headers per decode`);
389
+ }
201
390
  const headers = [];
202
- while ((!count || headers.length < count) && offset + 80 <= buffer.length && offset >= 0) {
391
+ while (headers.length < limit && offset + 80 <= buffer.length) {
203
392
  headers.push(deserializeBaseBlockHeader(buffer, offset));
204
393
  offset += 80;
205
394
  }
206
395
  return headers;
207
396
  }
208
397
  function deserializeBlockHeaders(firstHeight, buffer, offset = 0, count) {
398
+ if (!Number.isSafeInteger(firstHeight) || firstHeight < 0 || firstHeight > MAX_BLOCK_HEIGHT) {
399
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('firstHeight', `an integer from 0 through ${MAX_BLOCK_HEIGHT}`);
400
+ }
401
+ const baseHeaders = deserializeBaseBlockHeaders(buffer, offset, count);
402
+ if (firstHeight + baseHeaders.length - 1 > MAX_BLOCK_HEIGHT) {
403
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('headers', 'a range within the supported block heights');
404
+ }
209
405
  const headers = [];
210
406
  let nextHeight = firstHeight;
211
- while ((!count || headers.length < count) && offset + 80 <= buffer.length && offset >= 0) {
407
+ while (headers.length < baseHeaders.length) {
212
408
  const baseBuffer = buffer.slice(offset, offset + 80);
213
- const base = deserializeBaseBlockHeader(baseBuffer);
409
+ const base = baseHeaders[headers.length];
214
410
  const header = {
215
411
  ...base,
216
412
  height: nextHeight++,
@@ -231,7 +427,7 @@ function deserializeBlockHeaders(firstHeight, buffer, offset = 0, count) {
231
427
  *
232
428
  * @returns true if the header is correctly formatted
233
429
  */
234
- function validateUnsignedHeaderInteger(value, field, maximum, rangeField = field) {
430
+ function validateUnsignedHeaderInteger(value, field, maximum) {
235
431
  if (typeof value !== 'number') {
236
432
  throw new TypeError(`Header ${field} must be a number.`);
237
433
  }
@@ -239,69 +435,60 @@ function validateUnsignedHeaderInteger(value, field, maximum, rangeField = field
239
435
  throw new TypeError(`Header ${field} must be an integer.`);
240
436
  }
241
437
  if (value < 0 || value > maximum) {
242
- throw new Error(`Header ${rangeField} must be between 0 and ${maximum}.`);
438
+ throw new Error(`Header ${field} must be between 0 and ${maximum}.`);
243
439
  }
244
440
  }
245
- function validateHeaderFormat(header) {
246
- const ALLOWED_KEYS = {
247
- version: true,
248
- previousHash: true,
249
- merkleRoot: true,
250
- time: true,
251
- bits: true,
252
- nonce: true,
253
- height: true,
254
- hash: true
255
- };
256
- const UINT_MAX = 0xffffffff;
257
- /**
258
- * Root object checks
259
- */
260
- if (header === undefined) {
441
+ const BASE_HEADER_KEYS = ['version', 'previousHash', 'merkleRoot', 'time', 'bits', 'nonce'];
442
+ const BLOCK_HEADER_KEYS = [...BASE_HEADER_KEYS, 'height', 'hash'];
443
+ function validateHeaderRecord(header, allowedKeys) {
444
+ if (header == null)
261
445
  throw new TypeError('Missing header.');
262
- }
263
- if (typeof header !== 'object') {
446
+ if (typeof header !== 'object' || Array.isArray(header)) {
264
447
  throw new TypeError('Header must be an object.');
265
448
  }
266
- if (!Object.keys(header).every(key => key in ALLOWED_KEYS)) {
267
- throw new Error('Header contains extra properties.');
449
+ const prototype = Object.getPrototypeOf(header);
450
+ if (prototype !== Object.prototype && prototype !== null) {
451
+ throw new TypeError('Header must be a plain data object.');
452
+ }
453
+ const descriptors = Object.getOwnPropertyDescriptors(header);
454
+ const keys = Object.keys(descriptors);
455
+ if (keys.length !== allowedKeys.length ||
456
+ !keys.every(key => allowedKeys.includes(key)) ||
457
+ keys.some(key => descriptors[key]?.get != null || descriptors[key]?.set != null)) {
458
+ throw new Error('Header must contain exactly the required data properties.');
268
459
  }
269
- /**
270
- * Version
271
- */
460
+ }
461
+ /**
462
+ * Validates the exact data representation of an unpositioned 80-byte block
463
+ * header before it reaches a chain lookup, queue, or serializer.
464
+ */
465
+ function validateBaseBlockHeaderFormat(header) {
466
+ const UINT_MAX = 0xffffffff;
467
+ validateHeaderRecord(header, BASE_HEADER_KEYS);
272
468
  validateUnsignedHeaderInteger(header.version, 'version', UINT_MAX);
273
- /**
274
- * Height
275
- */
276
- validateUnsignedHeaderInteger(header.height, 'height', UINT_MAX / 2, 'version');
277
- /**
278
- * Previous hash
279
- */
280
- if (header.previousHash.length !== 64) {
469
+ if (typeof header.previousHash !== 'string' || !HEX_32_BYTES.test(header.previousHash)) {
281
470
  throw new Error('Header previousHash must be 32 hex bytes.');
282
471
  }
283
- /**
284
- * Merkle root
285
- */
286
- if (header.merkleRoot.length !== 64) {
472
+ if (typeof header.merkleRoot !== 'string' || !HEX_32_BYTES.test(header.merkleRoot)) {
287
473
  throw new Error('Header merkleRoot must be 32 hex bytes.');
288
474
  }
289
- /**
290
- * Time
291
- */
292
475
  validateUnsignedHeaderInteger(header.time, 'time', UINT_MAX);
293
- /**
294
- * Bits
295
- */
296
476
  validateUnsignedHeaderInteger(header.bits, 'bits', UINT_MAX);
297
- /**
298
- * Nonce
299
- */
300
477
  validateUnsignedHeaderInteger(header.nonce, 'nonce', UINT_MAX);
301
- /**
302
- * Hash
303
- */
304
- if (header.hash.length !== 64) {
478
+ }
479
+ function validateHeaderFormat(header) {
480
+ validateHeaderRecord(header, BLOCK_HEADER_KEYS);
481
+ const baseHeader = {
482
+ version: header.version,
483
+ previousHash: header.previousHash,
484
+ merkleRoot: header.merkleRoot,
485
+ time: header.time,
486
+ bits: header.bits,
487
+ nonce: header.nonce
488
+ };
489
+ validateBaseBlockHeaderFormat(baseHeader);
490
+ validateUnsignedHeaderInteger(header.height, 'height', 0x7fffffff);
491
+ if (typeof header.hash !== 'string' || !HEX_32_BYTES.test(header.hash)) {
305
492
  throw new Error('Header hash must be 32 hex bytes.');
306
493
  }
307
494
  if (header.hash !== (0, utilityHelpers_noBuffer_1.asString)(blockHash(header))) {
@@ -316,6 +503,12 @@ function validateHeaderFormat(header) {
316
503
  * @returns true if the header is valid
317
504
  */
318
505
  function validateHeaderDifficulty(hash, bits) {
506
+ if (!Array.isArray(hash) && !(hash instanceof Uint8Array)) {
507
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('hash', 'exactly 32 bytes');
508
+ }
509
+ validateByteWindow(hash, 0, hash.length, 'hash');
510
+ if (hash.length !== 32)
511
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('hash', 'exactly 32 bytes');
319
512
  const hashBN = new sdk_1.BigNumber((0, utilityHelpers_noBuffer_1.asArray)(hash));
320
513
  const target = validateCompactTarget(bits);
321
514
  if (hashBN.lte(target))
@@ -388,32 +581,39 @@ function blockHash(header) {
388
581
  * @publicbody
389
582
  */
390
583
  function serializeBaseBlockHeader(header, buffer, offset) {
391
- const writer = new sdk_1.Utils.Writer();
392
- writer.writeUInt32LE(header.version);
393
- writer.write((0, utilityHelpers_noBuffer_1.asArray)(header.previousHash).reverse());
394
- writer.write((0, utilityHelpers_noBuffer_1.asArray)(header.merkleRoot).reverse());
395
- writer.writeUInt32LE(header.time);
396
- writer.writeUInt32LE(header.bits);
397
- writer.writeUInt32LE(header.nonce);
584
+ const validated = copyBaseHeaderData(header);
585
+ validateBaseBlockHeaderFormat(validated);
586
+ const writer = new utils_1.Writer();
587
+ writer.writeUInt32LE(validated.version);
588
+ writer.write((0, utilityHelpers_noBuffer_1.asArray)(validated.previousHash).reverse());
589
+ writer.write((0, utilityHelpers_noBuffer_1.asArray)(validated.merkleRoot).reverse());
590
+ writer.writeUInt32LE(validated.time);
591
+ writer.writeUInt32LE(validated.bits);
592
+ writer.writeUInt32LE(validated.nonce);
398
593
  const data = writer.toArray();
399
594
  if (buffer != null) {
400
- offset ||= 0;
595
+ if (!Array.isArray(buffer))
596
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'an array');
597
+ offset ??= 0;
598
+ if (!Number.isSafeInteger(offset) || offset < 0 || offset + data.length > buffer.length) {
599
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('offset', 'a non-negative safe integer with 80 writable bytes');
600
+ }
401
601
  for (let i = 0; i < data.length; i++) {
402
- if (offset + i >= buffer.length) {
403
- throw new Error(`Buffer overflow at offset ${offset + i} for data length ${data.length}`);
404
- }
405
602
  buffer[offset + i] = data[i];
406
603
  }
407
604
  }
408
605
  return data;
409
606
  }
410
607
  function serializeBaseBlockHeaders(headers) {
608
+ if (!Array.isArray(headers) || headers.length > MAX_HEADER_COUNT) {
609
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('headers', `a dense array of no more than ${MAX_HEADER_COUNT} entries`);
610
+ }
411
611
  const data = new Uint8Array(headers.length * 80);
412
- let i = -1;
413
- for (const header of headers) {
414
- i++;
415
- const d = serializeBaseBlockHeader(header);
416
- data.set(d, i * 80);
612
+ for (let index = 0; index < headers.length; index++) {
613
+ if (!Object.hasOwn(headers, index))
614
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('headers', 'a dense array');
615
+ const d = serializeBaseBlockHeader(headers[index]);
616
+ data.set(d, index * 80);
417
617
  }
418
618
  return data;
419
619
  }
@@ -422,7 +622,8 @@ function serializeBaseBlockHeaders(headers) {
422
622
  * @publicbody
423
623
  */
424
624
  function deserializeBaseBlockHeader(buffer, offset = 0) {
425
- const reader = sdk_1.Utils.ReaderUint8Array.makeReader(buffer, offset);
625
+ validateByteWindow(buffer, offset, 80);
626
+ const reader = utils_1.ReaderUint8Array.makeReader(buffer, offset);
426
627
  const header = {
427
628
  version: reader.readUInt32LE(),
428
629
  previousHash: (0, utilityHelpers_noBuffer_1.asString)(reader.read(32).reverse()),
@@ -434,6 +635,9 @@ function deserializeBaseBlockHeader(buffer, offset = 0) {
434
635
  return header;
435
636
  }
436
637
  function deserializeBlockHeader(buffer, height, offset = 0) {
638
+ if (!Number.isSafeInteger(height) || height < 0 || height > MAX_BLOCK_HEIGHT) {
639
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('height', `an integer from 0 through ${MAX_BLOCK_HEIGHT}`);
640
+ }
437
641
  const base = deserializeBaseBlockHeader(buffer, offset);
438
642
  const header = {
439
643
  ...base,
@@ -531,6 +735,9 @@ function swapByteOrder(buffer) {
531
735
  * @publicbody
532
736
  */
533
737
  function convertUint32ToBuffer(n, littleEndian = true) {
738
+ validateUnsignedHeaderInteger(n, 'uint32', UINT32_MAX);
739
+ if (typeof littleEndian !== 'boolean')
740
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('littleEndian', 'a boolean');
534
741
  const a = [
535
742
  n & 0xff, // lowest byte
536
743
  (n >> 8) & 0xff,
@@ -540,6 +747,8 @@ function convertUint32ToBuffer(n, littleEndian = true) {
540
747
  return littleEndian ? a : a.reverse();
541
748
  }
542
749
  function writeUInt32LE(n, a, offset) {
750
+ validateUnsignedHeaderInteger(n, 'uint32', UINT32_MAX);
751
+ validateWritableByteWindow(a, offset, 4);
543
752
  a[offset++] = n & 0xff; // lowest byte
544
753
  a[offset++] = (n >> 8) & 0xff;
545
754
  a[offset++] = (n >> 16) & 0xff;
@@ -547,6 +756,8 @@ function writeUInt32LE(n, a, offset) {
547
756
  return offset;
548
757
  }
549
758
  function writeUInt32BE(n, a, offset) {
759
+ validateUnsignedHeaderInteger(n, 'uint32', UINT32_MAX);
760
+ validateWritableByteWindow(a, offset, 4);
550
761
  a[offset++] = (n >> 24) & 0xff; // highest byte
551
762
  a[offset++] = (n >> 16) & 0xff;
552
763
  a[offset++] = (n >> 8) & 0xff;
@@ -554,10 +765,12 @@ function writeUInt32BE(n, a, offset) {
554
765
  return offset;
555
766
  }
556
767
  function readUInt32LE(a, offset) {
557
- return a[offset++] | (a[offset++] << 8) | (a[offset++] << 16) | (a[offset++] << 24);
768
+ validateByteWindow(a, offset, 4);
769
+ return (a[offset++] | (a[offset++] << 8) | (a[offset++] << 16) | (a[offset++] << 24)) >>> 0;
558
770
  }
559
771
  function readUInt32BE(a, offset) {
560
- return (a[offset++] << 24) | (a[offset++] << 16) | (a[offset++] << 8) | a[offset++];
772
+ validateByteWindow(a, offset, 4);
773
+ return ((a[offset++] << 24) | (a[offset++] << 16) | (a[offset++] << 8) | a[offset++]) >>> 0;
561
774
  }
562
775
  /**
563
776
  * @param buffer four byte buffer with Uint32 number encoded
@@ -566,8 +779,13 @@ function readUInt32BE(a, offset) {
566
779
  * @publicbody
567
780
  */
568
781
  function convertBufferToUint32(buffer, littleEndian = true) {
782
+ validateByteWindow(buffer, 0, 4);
783
+ if (buffer.length !== 4)
784
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'exactly four bytes');
785
+ if (typeof littleEndian !== 'boolean')
786
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('littleEndian', 'a boolean');
569
787
  const a = littleEndian ? buffer : buffer.slice().reverse();
570
- const n = a[0] | (a[1] << 8) | (a[2] << 16) | (a[3] << 24);
788
+ const n = (a[0] | (a[1] << 8) | (a[2] << 16) | (a[3] << 24)) >>> 0;
571
789
  return n;
572
790
  }
573
791
  //# sourceMappingURL=blockHeaderUtilities.js.map