@bopen-io/wallet-toolbox 2.6.2-brc153.5 → 2.14.5

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 (878) hide show
  1. package/CHANGELOG.md +744 -1
  2. package/LICENSES/Open-BSV-License-4-wallet-pre-2026.txt +28 -0
  3. package/README.md +823 -14
  4. package/THIRD_PARTY_NOTICES.md +35 -0
  5. package/docs/README.md +44 -31
  6. package/docs/action-batch-planning.md +80 -37
  7. package/docs/client.md +12996 -4571
  8. package/docs/identity-verification.md +218 -0
  9. package/docs/local-first-chaintracks.md +129 -0
  10. package/docs/managed-change-liquidity.md +258 -0
  11. package/docs/managed-change-policy.md +14 -1
  12. package/docs/monitor.md +505 -190
  13. package/docs/no-send-expiry.md +167 -0
  14. package/docs/prepared-beef.md +197 -0
  15. package/docs/services.md +4013 -1153
  16. package/docs/setup.md +107 -56
  17. package/docs/storage.md +5781 -1599
  18. package/docs/sync-transfer.md +144 -0
  19. package/docs/wab-shamir.md +5 -1
  20. package/docs/wallet.md +10188 -10904
  21. package/out/src/CWIStyleWalletManager.d.ts +39 -31
  22. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  23. package/out/src/CWIStyleWalletManager.js +309 -258
  24. package/out/src/CWIStyleWalletManager.js.map +1 -1
  25. package/out/src/Setup.d.ts +14 -0
  26. package/out/src/Setup.d.ts.map +1 -1
  27. package/out/src/Setup.js +6 -2
  28. package/out/src/Setup.js.map +1 -1
  29. package/out/src/SetupClient.d.ts +3 -0
  30. package/out/src/SetupClient.d.ts.map +1 -1
  31. package/out/src/SetupClient.js +1 -0
  32. package/out/src/SetupClient.js.map +1 -1
  33. package/out/src/SetupWallet.d.ts +3 -0
  34. package/out/src/SetupWallet.d.ts.map +1 -1
  35. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  36. package/out/src/ShamirWalletManager.js +34 -19
  37. package/out/src/ShamirWalletManager.js.map +1 -1
  38. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  39. package/out/src/SimpleWalletManager.js +7 -6
  40. package/out/src/SimpleWalletManager.js.map +1 -1
  41. package/out/src/Wallet.d.ts +54 -14
  42. package/out/src/Wallet.d.ts.map +1 -1
  43. package/out/src/Wallet.js +216 -114
  44. package/out/src/Wallet.js.map +1 -1
  45. package/out/src/WalletAuthenticationManager.d.ts +32 -0
  46. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  47. package/out/src/WalletAuthenticationManager.js +531 -78
  48. package/out/src/WalletAuthenticationManager.js.map +1 -1
  49. package/out/src/WalletLogger.js +1 -1
  50. package/out/src/WalletLogger.js.map +1 -1
  51. package/out/src/WalletPermissionsManager.d.ts +101 -43
  52. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  53. package/out/src/WalletPermissionsManager.js +897 -414
  54. package/out/src/WalletPermissionsManager.js.map +1 -1
  55. package/out/src/WalletSettingsManager.d.ts +3 -2
  56. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  57. package/out/src/WalletSettingsManager.js +143 -8
  58. package/out/src/WalletSettingsManager.js.map +1 -1
  59. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  60. package/out/src/entropy/EntropyCollector.js +3 -2
  61. package/out/src/entropy/EntropyCollector.js.map +1 -1
  62. package/out/src/fundWalletP2PKH.d.ts.map +1 -1
  63. package/out/src/fundWalletP2PKH.js +143 -44
  64. package/out/src/fundWalletP2PKH.js.map +1 -1
  65. package/out/src/index.client.d.ts +6 -0
  66. package/out/src/index.client.d.ts.map +1 -1
  67. package/out/src/index.client.js +16 -1
  68. package/out/src/index.client.js.map +1 -1
  69. package/out/src/index.mobile.d.ts +7 -0
  70. package/out/src/index.mobile.d.ts.map +1 -1
  71. package/out/src/index.mobile.js +17 -1
  72. package/out/src/index.mobile.js.map +1 -1
  73. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  74. package/out/src/mockchain/MockChainTracker.js +5 -5
  75. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  76. package/out/src/mockchain/MockServices.d.ts +2 -0
  77. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  78. package/out/src/mockchain/MockServices.js +54 -14
  79. package/out/src/mockchain/MockServices.js.map +1 -1
  80. package/out/src/monitor/Monitor.d.ts +51 -0
  81. package/out/src/monitor/Monitor.d.ts.map +1 -1
  82. package/out/src/monitor/Monitor.js +282 -41
  83. package/out/src/monitor/Monitor.js.map +1 -1
  84. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  85. package/out/src/monitor/MonitorDaemon.js +64 -16
  86. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  87. package/out/src/monitor/monitorValidation.d.ts +12 -0
  88. package/out/src/monitor/monitorValidation.d.ts.map +1 -0
  89. package/out/src/monitor/monitorValidation.js +133 -0
  90. package/out/src/monitor/monitorValidation.js.map +1 -0
  91. package/out/src/monitor/tasks/TaskArcSSE.d.ts +6 -1
  92. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  93. package/out/src/monitor/tasks/TaskArcSSE.js +117 -74
  94. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  95. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +5 -0
  96. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  97. package/out/src/monitor/tasks/TaskCheckForProofs.js +29 -24
  98. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  99. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  100. package/out/src/monitor/tasks/TaskCheckNoSends.js +11 -3
  101. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  102. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  103. package/out/src/monitor/tasks/TaskFailAbandoned.js +9 -4
  104. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  105. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  106. package/out/src/monitor/tasks/TaskNewHeader.js +3 -1
  107. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  108. package/out/src/monitor/tasks/TaskNoSendExpiry.d.ts +19 -0
  109. package/out/src/monitor/tasks/TaskNoSendExpiry.d.ts.map +1 -0
  110. package/out/src/monitor/tasks/TaskNoSendExpiry.js +47 -0
  111. package/out/src/monitor/tasks/TaskNoSendExpiry.js.map +1 -0
  112. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts +27 -0
  113. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -0
  114. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +242 -0
  115. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -0
  116. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  117. package/out/src/monitor/tasks/TaskReorg.js +4 -4
  118. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  119. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  120. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +31 -9
  121. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  122. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +18 -1
  123. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  124. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +99 -21
  125. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  126. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +33 -6
  127. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  128. package/out/src/monitor/tasks/TaskReviewUtxos.js +189 -13
  129. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  130. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  131. package/out/src/monitor/tasks/TaskSendWaiting.js +52 -11
  132. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  133. package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -0
  134. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  135. package/out/src/monitor/tasks/TaskUnFail.js +26 -8
  136. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  137. package/out/src/monitor/tasks/index.all.d.ts +2 -0
  138. package/out/src/monitor/tasks/index.all.d.ts.map +1 -1
  139. package/out/src/monitor/tasks/index.all.js +2 -0
  140. package/out/src/monitor/tasks/index.all.js.map +1 -1
  141. package/out/src/sdk/ActionBatch.interfaces.d.ts +23 -0
  142. package/out/src/sdk/ActionBatch.interfaces.d.ts.map +1 -1
  143. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  144. package/out/src/sdk/PrivilegedKeyManager.js +3 -2
  145. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  146. package/out/src/sdk/WERR_errors.d.ts +23 -0
  147. package/out/src/sdk/WERR_errors.d.ts.map +1 -1
  148. package/out/src/sdk/WERR_errors.js +51 -7
  149. package/out/src/sdk/WERR_errors.js.map +1 -1
  150. package/out/src/sdk/WalletError.d.ts.map +1 -1
  151. package/out/src/sdk/WalletError.js +7 -21
  152. package/out/src/sdk/WalletError.js.map +1 -1
  153. package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
  154. package/out/src/sdk/WalletErrorFromJson.js +121 -3
  155. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  156. package/out/src/sdk/WalletServices.interfaces.d.ts +45 -2
  157. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  158. package/out/src/sdk/WalletStorage.interfaces.d.ts +87 -4
  159. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  160. package/out/src/sdk/types.d.ts +3 -2
  161. package/out/src/sdk/types.d.ts.map +1 -1
  162. package/out/src/sdk/types.js +3 -2
  163. package/out/src/sdk/types.js.map +1 -1
  164. package/out/src/services/ServiceCollection.js +2 -2
  165. package/out/src/services/ServiceCollection.js.map +1 -1
  166. package/out/src/services/Services.d.ts +5 -0
  167. package/out/src/services/Services.d.ts.map +1 -1
  168. package/out/src/services/Services.js +346 -120
  169. package/out/src/services/Services.js.map +1 -1
  170. package/out/src/services/chaintracker/BHServiceClient.d.ts +21 -4
  171. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  172. package/out/src/services/chaintracker/BHServiceClient.js +269 -66
  173. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  174. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +25 -3
  175. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  176. package/out/src/services/chaintracker/ChaintracksChainTracker.js +188 -53
  177. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  178. package/out/src/services/chaintracker/LocalChainTracker.d.ts +122 -0
  179. package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -0
  180. package/out/src/services/chaintracker/LocalChainTracker.js +465 -0
  181. package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -0
  182. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  183. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +59 -7
  184. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  185. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.d.ts +48 -0
  186. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.d.ts.map +1 -0
  187. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.js +3 -0
  188. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.js.map +1 -0
  189. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts +70 -0
  190. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts.map +1 -0
  191. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js +21 -0
  192. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js.map +1 -0
  193. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +6 -0
  194. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
  195. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +53 -0
  196. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
  197. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +9 -2
  198. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -1
  199. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +9 -0
  200. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
  201. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +28 -3
  202. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  203. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +282 -64
  204. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  205. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +16 -0
  206. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  207. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +150 -26
  208. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  209. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +30 -1
  210. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  211. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +348 -30
  212. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  213. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +32 -1
  214. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  215. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +378 -44
  216. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
  217. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  218. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +28 -3
  219. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  220. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  221. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +33 -9
  222. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  223. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  224. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  225. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts.map +1 -1
  226. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +4 -2
  227. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -1
  228. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts +2 -0
  229. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  230. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +17 -4
  231. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  232. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +2 -0
  233. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  234. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +40 -20
  235. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  236. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +14 -0
  238. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  239. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +6 -0
  240. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
  241. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +56 -9
  242. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
  243. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  244. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +6 -3
  245. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  246. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +4 -0
  247. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  248. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +27 -9
  249. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  250. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +8 -0
  251. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  252. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +49 -5
  253. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  254. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +1 -1
  255. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  256. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +90 -21
  257. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  258. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -1
  259. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  260. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +185 -38
  261. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  262. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  263. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +59 -6
  264. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  265. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +2 -0
  266. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  267. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +89 -39
  268. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  269. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +10 -0
  270. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  271. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +230 -28
  272. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  273. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +2 -1
  274. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  275. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +265 -96
  276. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  277. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +3 -1
  278. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  279. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +240 -87
  280. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  281. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -0
  282. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  283. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +121 -35
  284. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  285. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +8 -0
  286. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
  287. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +6 -3
  288. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  289. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  290. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  291. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  292. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  293. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  294. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  295. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  296. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +1 -7
  297. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  298. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  299. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +1 -7
  300. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  301. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  302. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +1 -7
  303. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  304. package/out/src/services/chaintracker/chaintracks/index.all.d.ts +3 -0
  305. package/out/src/services/chaintracker/chaintracks/index.all.d.ts.map +1 -1
  306. package/out/src/services/chaintracker/chaintracks/index.all.js +3 -0
  307. package/out/src/services/chaintracker/chaintracks/index.all.js.map +1 -1
  308. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +5 -0
  309. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
  310. package/out/src/services/chaintracker/chaintracks/index.mobile.js +5 -0
  311. package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
  312. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +51 -0
  313. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -0
  314. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +394 -0
  315. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -0
  316. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +45 -1
  317. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  318. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +733 -166
  319. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  320. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  321. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +17 -1
  322. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  323. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts +32 -0
  324. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -0
  325. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +40 -0
  326. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -0
  327. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  328. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +99 -30
  329. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  330. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +3 -1
  331. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  332. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +23 -15
  333. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  334. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +38 -4
  335. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  336. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +191 -47
  337. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  338. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +2 -1
  339. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  340. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +57 -11
  341. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  342. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts +48 -0
  343. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -0
  344. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +280 -0
  345. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -0
  346. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts +30 -0
  347. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts.map +1 -0
  348. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js +57 -0
  349. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js.map +1 -0
  350. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  351. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  352. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts +14 -0
  353. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -0
  354. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +148 -0
  355. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -0
  356. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +41 -0
  357. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -0
  358. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +271 -0
  359. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -0
  360. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +3 -0
  361. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  362. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +15 -0
  363. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  364. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +17 -4
  365. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  366. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +362 -105
  367. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  368. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts +4 -0
  369. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts.map +1 -0
  370. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js +33 -0
  371. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js.map +1 -0
  372. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
  373. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  374. package/out/src/services/chaintracker/index.all.d.ts +1 -0
  375. package/out/src/services/chaintracker/index.all.d.ts.map +1 -1
  376. package/out/src/services/chaintracker/index.all.js +1 -0
  377. package/out/src/services/chaintracker/index.all.js.map +1 -1
  378. package/out/src/services/chaintracker/index.client.d.ts +1 -0
  379. package/out/src/services/chaintracker/index.client.d.ts.map +1 -1
  380. package/out/src/services/chaintracker/index.client.js +1 -0
  381. package/out/src/services/chaintracker/index.client.js.map +1 -1
  382. package/out/src/services/chaintracker/index.mobile.d.ts +1 -0
  383. package/out/src/services/chaintracker/index.mobile.d.ts.map +1 -1
  384. package/out/src/services/chaintracker/index.mobile.js +1 -0
  385. package/out/src/services/chaintracker/index.mobile.js.map +1 -1
  386. package/out/src/services/classifyOutputUtxo.d.ts +25 -0
  387. package/out/src/services/classifyOutputUtxo.d.ts.map +1 -0
  388. package/out/src/services/classifyOutputUtxo.js +96 -0
  389. package/out/src/services/classifyOutputUtxo.js.map +1 -0
  390. package/out/src/services/createDefaultWalletServicesOptions.d.ts +16 -3
  391. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  392. package/out/src/services/createDefaultWalletServicesOptions.js +38 -8
  393. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  394. package/out/src/services/fiatRateValidation.d.ts +12 -0
  395. package/out/src/services/fiatRateValidation.d.ts.map +1 -0
  396. package/out/src/services/fiatRateValidation.js +138 -0
  397. package/out/src/services/fiatRateValidation.js.map +1 -0
  398. package/out/src/services/getCanonicalMerklePath.d.ts +15 -0
  399. package/out/src/services/getCanonicalMerklePath.d.ts.map +1 -0
  400. package/out/src/services/getCanonicalMerklePath.js +90 -0
  401. package/out/src/services/getCanonicalMerklePath.js.map +1 -0
  402. package/out/src/services/providers/ARC.d.ts +3 -16
  403. package/out/src/services/providers/ARC.d.ts.map +1 -1
  404. package/out/src/services/providers/ARC.js +36 -37
  405. package/out/src/services/providers/ARC.js.map +1 -1
  406. package/out/src/services/providers/ArcSSEClient.d.ts +38 -23
  407. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  408. package/out/src/services/providers/ArcSSEClient.js +384 -63
  409. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  410. package/out/src/services/providers/Arcade.d.ts +11 -1
  411. package/out/src/services/providers/Arcade.d.ts.map +1 -1
  412. package/out/src/services/providers/Arcade.js +111 -33
  413. package/out/src/services/providers/Arcade.js.map +1 -1
  414. package/out/src/services/providers/Bitails.d.ts +3 -0
  415. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  416. package/out/src/services/providers/Bitails.js +79 -12
  417. package/out/src/services/providers/Bitails.js.map +1 -1
  418. package/out/src/services/providers/SdkWhatsOnChain.d.ts +8 -2
  419. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  420. package/out/src/services/providers/SdkWhatsOnChain.js +83 -10
  421. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  422. package/out/src/services/providers/WhatsOnChain.d.ts +3 -0
  423. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  424. package/out/src/services/providers/WhatsOnChain.js +221 -69
  425. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  426. package/out/src/services/providers/arcProviderConfig.d.ts +27 -0
  427. package/out/src/services/providers/arcProviderConfig.d.ts.map +1 -0
  428. package/out/src/services/providers/arcProviderConfig.js +83 -0
  429. package/out/src/services/providers/arcProviderConfig.js.map +1 -0
  430. package/out/src/services/providers/arcTxDataValidation.d.ts +4 -0
  431. package/out/src/services/providers/arcTxDataValidation.d.ts.map +1 -0
  432. package/out/src/services/providers/arcTxDataValidation.js +92 -0
  433. package/out/src/services/providers/arcTxDataValidation.js.map +1 -0
  434. package/out/src/services/providers/arcadeStatus.d.ts +18 -0
  435. package/out/src/services/providers/arcadeStatus.d.ts.map +1 -0
  436. package/out/src/services/providers/arcadeStatus.js +56 -0
  437. package/out/src/services/providers/arcadeStatus.js.map +1 -0
  438. package/out/src/services/providers/exchangeRates.d.ts +3 -3
  439. package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
  440. package/out/src/services/providers/exchangeRates.js +153 -226
  441. package/out/src/services/providers/exchangeRates.js.map +1 -1
  442. package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
  443. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  444. package/out/src/services/providers/whatsOnChainHelpers.d.ts +2 -2
  445. package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -1
  446. package/out/src/services/providers/whatsOnChainHelpers.js +11 -8
  447. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
  448. package/out/src/services/validateMerklePathResult.d.ts +30 -0
  449. package/out/src/services/validateMerklePathResult.d.ts.map +1 -0
  450. package/out/src/services/validateMerklePathResult.js +272 -0
  451. package/out/src/services/validateMerklePathResult.js.map +1 -0
  452. package/out/src/services/validatePostBeefResult.d.ts +17 -0
  453. package/out/src/services/validatePostBeefResult.d.ts.map +1 -0
  454. package/out/src/services/validatePostBeefResult.js +334 -0
  455. package/out/src/services/validatePostBeefResult.js.map +1 -0
  456. package/out/src/services/validateRawTxResult.d.ts +6 -0
  457. package/out/src/services/validateRawTxResult.d.ts.map +1 -0
  458. package/out/src/services/validateRawTxResult.js +77 -0
  459. package/out/src/services/validateRawTxResult.js.map +1 -0
  460. package/out/src/services/validateScriptHashHistoryResult.d.ts +5 -0
  461. package/out/src/services/validateScriptHashHistoryResult.d.ts.map +1 -0
  462. package/out/src/services/validateScriptHashHistoryResult.js +99 -0
  463. package/out/src/services/validateScriptHashHistoryResult.js.map +1 -0
  464. package/out/src/services/validateStatusForTxidsResult.d.ts +8 -0
  465. package/out/src/services/validateStatusForTxidsResult.d.ts.map +1 -0
  466. package/out/src/services/validateStatusForTxidsResult.js +181 -0
  467. package/out/src/services/validateStatusForTxidsResult.js.map +1 -0
  468. package/out/src/services/validateUtxoStatusResult.d.ts +6 -0
  469. package/out/src/services/validateUtxoStatusResult.d.ts.map +1 -0
  470. package/out/src/services/validateUtxoStatusResult.js +126 -0
  471. package/out/src/services/validateUtxoStatusResult.js.map +1 -0
  472. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
  473. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
  474. package/out/src/signer/actionBatch/ActionBatchPlanner.js +29 -6
  475. package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
  476. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +8 -5
  477. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
  478. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +186 -73
  479. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
  480. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +2 -2
  481. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -1
  482. package/out/src/signer/actionBatch/actionBatchBootstrap.js +3 -3
  483. package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -1
  484. package/out/src/signer/methods/acquireDirectCertificate.d.ts +3 -2
  485. package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
  486. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  487. package/out/src/signer/methods/buildSignableTransaction.d.ts +6 -5
  488. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  489. package/out/src/signer/methods/buildSignableTransaction.js +6 -11
  490. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  491. package/out/src/signer/methods/createAction.d.ts +4 -3
  492. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  493. package/out/src/signer/methods/createAction.js +3 -1
  494. package/out/src/signer/methods/createAction.js.map +1 -1
  495. package/out/src/signer/methods/createNoSendExpiryAction.d.ts +7 -0
  496. package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -0
  497. package/out/src/signer/methods/createNoSendExpiryAction.js +254 -0
  498. package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -0
  499. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  500. package/out/src/signer/methods/internalizeAction.js +9 -5
  501. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  502. package/out/src/signer/methods/proveCertificate.d.ts +3 -2
  503. package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
  504. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  505. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  506. package/out/src/signer/methods/signAction.js +12 -2
  507. package/out/src/signer/methods/signAction.js.map +1 -1
  508. package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -1
  509. package/out/src/signer/methods/verifyUnlockScripts.js +12 -17
  510. package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -1
  511. package/out/src/storage/StorageIdb.d.ts +11 -3
  512. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  513. package/out/src/storage/StorageIdb.js +134 -44
  514. package/out/src/storage/StorageIdb.js.map +1 -1
  515. package/out/src/storage/StorageKnex.d.ts +68 -7
  516. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  517. package/out/src/storage/StorageKnex.js +551 -105
  518. package/out/src/storage/StorageKnex.js.map +1 -1
  519. package/out/src/storage/StorageProvider.d.ts +41 -10
  520. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  521. package/out/src/storage/StorageProvider.js +397 -107
  522. package/out/src/storage/StorageProvider.js.map +1 -1
  523. package/out/src/storage/StorageReader.d.ts +9 -3
  524. package/out/src/storage/StorageReader.d.ts.map +1 -1
  525. package/out/src/storage/StorageReader.js +21 -43
  526. package/out/src/storage/StorageReader.js.map +1 -1
  527. package/out/src/storage/StorageReaderWriter.d.ts +4 -0
  528. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  529. package/out/src/storage/StorageReaderWriter.js +68 -38
  530. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  531. package/out/src/storage/StorageSyncReader.d.ts +1 -1
  532. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  533. package/out/src/storage/StorageSyncReader.js +3 -36
  534. package/out/src/storage/StorageSyncReader.js.map +1 -1
  535. package/out/src/storage/WalletStorageManager.d.ts +31 -6
  536. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  537. package/out/src/storage/WalletStorageManager.js +166 -75
  538. package/out/src/storage/WalletStorageManager.js.map +1 -1
  539. package/out/src/storage/adminServer/adminServer.d.ts +3 -1
  540. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  541. package/out/src/storage/adminServer/adminServer.js +38 -49
  542. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  543. package/out/src/storage/adminServer/adminUi.d.ts.map +1 -1
  544. package/out/src/storage/adminServer/adminUi.js +32 -9
  545. package/out/src/storage/adminServer/adminUi.js.map +1 -1
  546. package/out/src/storage/adminServer/reviewUtxos.d.ts +27 -0
  547. package/out/src/storage/adminServer/reviewUtxos.d.ts.map +1 -0
  548. package/out/src/storage/adminServer/reviewUtxos.js +62 -0
  549. package/out/src/storage/adminServer/reviewUtxos.js.map +1 -0
  550. package/out/src/storage/idbHelpers.d.ts.map +1 -1
  551. package/out/src/storage/idbHelpers.js +14 -2
  552. package/out/src/storage/idbHelpers.js.map +1 -1
  553. package/out/src/storage/index.all.d.ts +3 -0
  554. package/out/src/storage/index.all.d.ts.map +1 -1
  555. package/out/src/storage/index.all.js +3 -0
  556. package/out/src/storage/index.all.js.map +1 -1
  557. package/out/src/storage/index.client.d.ts +1 -0
  558. package/out/src/storage/index.client.d.ts.map +1 -1
  559. package/out/src/storage/index.client.js +1 -0
  560. package/out/src/storage/index.client.js.map +1 -1
  561. package/out/src/storage/index.mobile.d.ts +1 -0
  562. package/out/src/storage/index.mobile.d.ts.map +1 -1
  563. package/out/src/storage/index.mobile.js +1 -0
  564. package/out/src/storage/index.mobile.js.map +1 -1
  565. package/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
  566. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  567. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  568. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +7 -4
  569. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  570. package/out/src/storage/methods/ListOutputsSpecOp.js +5 -44
  571. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  572. package/out/src/storage/methods/actionBatch.d.ts +9 -2
  573. package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
  574. package/out/src/storage/methods/actionBatch.js +260 -67
  575. package/out/src/storage/methods/actionBatch.js.map +1 -1
  576. package/out/src/storage/methods/actionBatchBlobs.d.ts +2 -0
  577. package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
  578. package/out/src/storage/methods/actionBatchBlobs.js +47 -26
  579. package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
  580. package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
  581. package/out/src/storage/methods/actionBatchValidation.js +22 -30
  582. package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
  583. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +7 -2
  584. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  585. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +59 -110
  586. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  587. package/out/src/storage/methods/availableManagedChange.d.ts +8 -1
  588. package/out/src/storage/methods/availableManagedChange.d.ts.map +1 -1
  589. package/out/src/storage/methods/availableManagedChange.js.map +1 -1
  590. package/out/src/storage/methods/createAction.d.ts +60 -3
  591. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  592. package/out/src/storage/methods/createAction.js +390 -105
  593. package/out/src/storage/methods/createAction.js.map +1 -1
  594. package/out/src/storage/methods/generateChange.d.ts +15 -5
  595. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  596. package/out/src/storage/methods/generateChange.js +187 -27
  597. package/out/src/storage/methods/generateChange.js.map +1 -1
  598. package/out/src/storage/methods/getBeefForTransaction.js +5 -7
  599. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  600. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  601. package/out/src/storage/methods/getSyncChunk.js +42 -11
  602. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  603. package/out/src/storage/methods/internalizeAction.d.ts +3 -3
  604. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  605. package/out/src/storage/methods/internalizeAction.js +171 -133
  606. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  607. package/out/src/storage/methods/listActionsIdb.d.ts +3 -2
  608. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  609. package/out/src/storage/methods/listActionsIdb.js +2 -2
  610. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  611. package/out/src/storage/methods/listActionsKnex.d.ts +3 -2
  612. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
  613. package/out/src/storage/methods/listActionsKnex.js +22 -11
  614. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  615. package/out/src/storage/methods/listCertificates.d.ts +3 -2
  616. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  617. package/out/src/storage/methods/listCertificates.js.map +1 -1
  618. package/out/src/storage/methods/listOutputsIdb.d.ts +3 -2
  619. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  620. package/out/src/storage/methods/listOutputsIdb.js +25 -18
  621. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  622. package/out/src/storage/methods/listOutputsKnex.d.ts +3 -2
  623. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  624. package/out/src/storage/methods/listOutputsKnex.js +32 -30
  625. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  626. package/out/src/storage/methods/managedChangePolicy.d.ts +44 -0
  627. package/out/src/storage/methods/managedChangePolicy.d.ts.map +1 -0
  628. package/out/src/storage/methods/managedChangePolicy.js +58 -0
  629. package/out/src/storage/methods/managedChangePolicy.js.map +1 -0
  630. package/out/src/storage/methods/maxPossibleSatoshis.d.ts +13 -0
  631. package/out/src/storage/methods/maxPossibleSatoshis.d.ts.map +1 -0
  632. package/out/src/storage/methods/maxPossibleSatoshis.js +16 -0
  633. package/out/src/storage/methods/maxPossibleSatoshis.js.map +1 -0
  634. package/out/src/storage/methods/noSendExpiry.d.ts +11 -0
  635. package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -0
  636. package/out/src/storage/methods/noSendExpiry.js +359 -0
  637. package/out/src/storage/methods/noSendExpiry.js.map +1 -0
  638. package/out/src/storage/methods/noSendExpiryLifecycle.d.ts +14 -0
  639. package/out/src/storage/methods/noSendExpiryLifecycle.d.ts.map +1 -0
  640. package/out/src/storage/methods/noSendExpiryLifecycle.js +691 -0
  641. package/out/src/storage/methods/noSendExpiryLifecycle.js.map +1 -0
  642. package/out/src/storage/methods/preparedBeef.d.ts +104 -0
  643. package/out/src/storage/methods/preparedBeef.d.ts.map +1 -0
  644. package/out/src/storage/methods/preparedBeef.js +524 -0
  645. package/out/src/storage/methods/preparedBeef.js.map +1 -0
  646. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  647. package/out/src/storage/methods/processAction.js +144 -32
  648. package/out/src/storage/methods/processAction.js.map +1 -1
  649. package/out/src/storage/methods/purgeData.d.ts.map +1 -1
  650. package/out/src/storage/methods/purgeData.js +21 -3
  651. package/out/src/storage/methods/purgeData.js.map +1 -1
  652. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +32 -0
  653. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -0
  654. package/out/src/storage/methods/reconcileFailedTransactionInputs.js +142 -0
  655. package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -0
  656. package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
  657. package/out/src/storage/methods/reviewStatus.js +7 -4
  658. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  659. package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
  660. package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
  661. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  662. package/out/src/storage/methods/reviewUtxoOutputs.d.ts +38 -0
  663. package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -0
  664. package/out/src/storage/methods/reviewUtxoOutputs.js +197 -0
  665. package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -0
  666. package/out/src/storage/methods/validateSyncProof.d.ts +32 -0
  667. package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -0
  668. package/out/src/storage/methods/validateSyncProof.js +139 -0
  669. package/out/src/storage/methods/validateSyncProof.js.map +1 -0
  670. package/out/src/storage/portable/index.d.ts.map +1 -1
  671. package/out/src/storage/portable/index.js +25 -15
  672. package/out/src/storage/portable/index.js.map +1 -1
  673. package/out/src/storage/remoting/BinaryJson.d.ts +11 -0
  674. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
  675. package/out/src/storage/remoting/BinaryJson.js +94 -8
  676. package/out/src/storage/remoting/BinaryJson.js.map +1 -1
  677. package/out/src/storage/remoting/KnexPaymentReplayStore.d.ts.map +1 -1
  678. package/out/src/storage/remoting/KnexPaymentReplayStore.js +1 -0
  679. package/out/src/storage/remoting/KnexPaymentReplayStore.js.map +1 -1
  680. package/out/src/storage/remoting/KnexSessionManager.d.ts +26 -2
  681. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
  682. package/out/src/storage/remoting/KnexSessionManager.js +221 -40
  683. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
  684. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts +26 -0
  685. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -0
  686. package/out/src/storage/remoting/KnexSyncTransferStore.js +222 -0
  687. package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -0
  688. package/out/src/storage/remoting/StorageClient.d.ts +6 -1
  689. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  690. package/out/src/storage/remoting/StorageClient.js +65 -8
  691. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  692. package/out/src/storage/remoting/StorageClientBase.d.ts +57 -10
  693. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  694. package/out/src/storage/remoting/StorageClientBase.js +372 -9
  695. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  696. package/out/src/storage/remoting/StorageMobile.d.ts +5 -0
  697. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  698. package/out/src/storage/remoting/StorageMobile.js +13 -11
  699. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  700. package/out/src/storage/remoting/StorageServer.d.ts +10 -1
  701. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  702. package/out/src/storage/remoting/StorageServer.js +221 -20
  703. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  704. package/out/src/storage/remoting/SyncTransfer.d.ts +29 -0
  705. package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -0
  706. package/out/src/storage/remoting/SyncTransfer.js +153 -0
  707. package/out/src/storage/remoting/SyncTransfer.js.map +1 -0
  708. package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
  709. package/out/src/storage/remoting/entityValidationHelpers.js +35 -0
  710. package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
  711. package/out/src/storage/remoting/syncChunkBinary.d.ts +4 -0
  712. package/out/src/storage/remoting/syncChunkBinary.d.ts.map +1 -0
  713. package/out/src/storage/remoting/syncChunkBinary.js +38 -0
  714. package/out/src/storage/remoting/syncChunkBinary.js.map +1 -0
  715. package/out/src/storage/remoting/validateRpcSyncProofs.d.ts +5 -0
  716. package/out/src/storage/remoting/validateRpcSyncProofs.d.ts.map +1 -0
  717. package/out/src/storage/remoting/validateRpcSyncProofs.js +82 -0
  718. package/out/src/storage/remoting/validateRpcSyncProofs.js.map +1 -0
  719. package/out/src/storage/schema/KnexMigrations.d.ts +6 -0
  720. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  721. package/out/src/storage/schema/KnexMigrations.js +194 -5
  722. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  723. package/out/src/storage/schema/StorageIdbSchema.d.ts +3 -0
  724. package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
  725. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  726. package/out/src/storage/schema/entities/EntityOutput.js +24 -4
  727. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  728. package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
  729. package/out/src/storage/schema/entities/EntityOutputBasket.js +5 -2
  730. package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
  731. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +4 -1
  732. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  733. package/out/src/storage/schema/entities/EntityProvenTx.js +125 -41
  734. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  735. package/out/src/storage/schema/entities/EntityProvenTxReq.js +1 -1
  736. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  737. package/out/src/storage/schema/entities/EntitySyncState.d.ts +4 -2
  738. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  739. package/out/src/storage/schema/entities/EntitySyncState.js +12 -6
  740. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  741. package/out/src/storage/schema/entities/EntityTransaction.d.ts +26 -0
  742. package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
  743. package/out/src/storage/schema/entities/EntityTransaction.js +221 -21
  744. package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
  745. package/out/src/storage/schema/tables/TableCertificate.d.ts +1 -1
  746. package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
  747. package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
  748. package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
  749. package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
  750. package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
  751. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
  752. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
  753. package/out/src/storage/schema/tables/TableOutput.d.ts +1 -1
  754. package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
  755. package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
  756. package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
  757. package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
  758. package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
  759. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
  760. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
  761. package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.d.ts +23 -0
  762. package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.d.ts.map +1 -0
  763. package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.js +3 -0
  764. package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.js.map +1 -0
  765. package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
  766. package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
  767. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +1 -1
  768. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
  769. package/out/src/storage/schema/tables/TableSettings.d.ts +2 -2
  770. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  771. package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
  772. package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
  773. package/out/src/storage/schema/tables/TableTransaction.d.ts +17 -1
  774. package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
  775. package/out/src/storage/schema/tables/TableTransaction.js +14 -1
  776. package/out/src/storage/schema/tables/TableTransaction.js.map +1 -1
  777. package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
  778. package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
  779. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
  780. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
  781. package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
  782. package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
  783. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  784. package/out/src/storage/sync/StorageMySQLDojoReader.js +8 -7
  785. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  786. package/out/src/storage/sync/SyncPageBudget.d.ts +8 -0
  787. package/out/src/storage/sync/SyncPageBudget.d.ts.map +1 -0
  788. package/out/src/storage/sync/SyncPageBudget.js +24 -0
  789. package/out/src/storage/sync/SyncPageBudget.js.map +1 -0
  790. package/out/src/storage/sync/syncCheckpoint.d.ts +4 -0
  791. package/out/src/storage/sync/syncCheckpoint.d.ts.map +1 -0
  792. package/out/src/storage/sync/syncCheckpoint.js +49 -0
  793. package/out/src/storage/sync/syncCheckpoint.js.map +1 -0
  794. package/out/src/utility/Argon2idBackend.d.ts +36 -0
  795. package/out/src/utility/Argon2idBackend.d.ts.map +1 -0
  796. package/out/src/utility/Argon2idBackend.js +60 -0
  797. package/out/src/utility/Argon2idBackend.js.map +1 -0
  798. package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
  799. package/out/src/utility/actionBatchDigest.js +9 -7
  800. package/out/src/utility/actionBatchDigest.js.map +1 -1
  801. package/out/src/utility/actionBatchPack.d.ts.map +1 -1
  802. package/out/src/utility/actionBatchPack.js +7 -12
  803. package/out/src/utility/actionBatchPack.js.map +1 -1
  804. package/out/src/utility/beefForTxids.d.ts +12 -3
  805. package/out/src/utility/beefForTxids.d.ts.map +1 -1
  806. package/out/src/utility/beefForTxids.js +69 -21
  807. package/out/src/utility/beefForTxids.js.map +1 -1
  808. package/out/src/utility/brc153ReferenceLabels.d.ts +16 -0
  809. package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
  810. package/out/src/utility/brc153ReferenceLabels.js +20 -5
  811. package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
  812. package/out/src/utility/brc177NoSendExpiry.d.ts +34 -0
  813. package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -0
  814. package/out/src/utility/brc177NoSendExpiry.js +81 -0
  815. package/out/src/utility/brc177NoSendExpiry.js.map +1 -0
  816. package/out/src/utility/canonicalizeAtomicBeef.d.ts +12 -0
  817. package/out/src/utility/canonicalizeAtomicBeef.d.ts.map +1 -0
  818. package/out/src/utility/canonicalizeAtomicBeef.js +23 -0
  819. package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -0
  820. package/out/src/utility/exactActionSpend.d.ts +9 -0
  821. package/out/src/utility/exactActionSpend.d.ts.map +1 -0
  822. package/out/src/utility/exactActionSpend.js +26 -0
  823. package/out/src/utility/exactActionSpend.js.map +1 -0
  824. package/out/src/utility/hashWasm.d.ts +1 -1
  825. package/out/src/utility/hashWasm.d.ts.map +1 -1
  826. package/out/src/utility/hashWasm.js +83 -1
  827. package/out/src/utility/hashWasm.js.map +1 -1
  828. package/out/src/utility/identityUtils.d.ts +44 -4
  829. package/out/src/utility/identityUtils.d.ts.map +1 -1
  830. package/out/src/utility/identityUtils.js +523 -61
  831. package/out/src/utility/identityUtils.js.map +1 -1
  832. package/out/src/utility/index.all.d.ts +2 -0
  833. package/out/src/utility/index.all.d.ts.map +1 -1
  834. package/out/src/utility/index.all.js +2 -0
  835. package/out/src/utility/index.all.js.map +1 -1
  836. package/out/src/utility/index.client.d.ts +2 -0
  837. package/out/src/utility/index.client.d.ts.map +1 -1
  838. package/out/src/utility/index.client.js +2 -0
  839. package/out/src/utility/index.client.js.map +1 -1
  840. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  841. package/out/src/utility/parseTxScriptOffsets.js +1 -19
  842. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  843. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  844. package/out/src/utility/tscProofToMerklePath.js +35 -4
  845. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  846. package/out/src/utility/utilityHelpers.d.ts +1 -1
  847. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  848. package/out/src/utility/utilityHelpers.js +10 -7
  849. package/out/src/utility/utilityHelpers.js.map +1 -1
  850. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  851. package/out/src/utility/utilityHelpers.noBuffer.js +6 -6
  852. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  853. package/out/src/utility/verifyOverlayOutput.d.ts +12 -0
  854. package/out/src/utility/verifyOverlayOutput.d.ts.map +1 -0
  855. package/out/src/utility/verifyOverlayOutput.js +22 -0
  856. package/out/src/utility/verifyOverlayOutput.js.map +1 -0
  857. package/out/src/utility/walletResultGuards.d.ts +14 -0
  858. package/out/src/utility/walletResultGuards.d.ts.map +1 -0
  859. package/out/src/utility/walletResultGuards.js +28 -0
  860. package/out/src/utility/walletResultGuards.js.map +1 -0
  861. package/out/src/wab-client/WABClient.d.ts +4 -17
  862. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  863. package/out/src/wab-client/WABClient.js +35 -12
  864. package/out/src/wab-client/WABClient.js.map +1 -1
  865. package/out/src/wab-client/WABResponseValidation.d.ts +48 -0
  866. package/out/src/wab-client/WABResponseValidation.d.ts.map +1 -0
  867. package/out/src/wab-client/WABResponseValidation.js +321 -0
  868. package/out/src/wab-client/WABResponseValidation.js.map +1 -0
  869. package/out/src/wab-client/WABTransport.d.ts +17 -23
  870. package/out/src/wab-client/WABTransport.d.ts.map +1 -1
  871. package/out/src/wab-client/WABTransport.js +130 -142
  872. package/out/src/wab-client/WABTransport.js.map +1 -1
  873. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +8 -0
  874. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  875. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -2
  876. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  877. package/package.json +36 -32
  878. package/docs/open-rpc/index.html +0 -46
@@ -12,8 +12,10 @@ 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;
18
+ exports.validateHeaderProofOfWork = validateHeaderProofOfWork;
17
19
  exports.blockHash = blockHash;
18
20
  exports.serializeBaseBlockHeader = serializeBaseBlockHeader;
19
21
  exports.serializeBaseBlockHeaders = serializeBaseBlockHeaders;
@@ -30,22 +32,114 @@ exports.readUInt32BE = readUInt32BE;
30
32
  exports.convertBufferToUint32 = convertBufferToUint32;
31
33
  const dirtyHashes_1 = require("./dirtyHashes");
32
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");
33
37
  const utilityHelpers_noBuffer_1 = require("../../../../utility/utilityHelpers.noBuffer");
34
38
  const utilityHelpers_1 = require("../../../../utility/utilityHelpers");
35
- const validBulkHeaderFilesByFileHash_1 = require("./validBulkHeaderFilesByFileHash");
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,30 +150,68 @@ 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
- vbf.data = await fetch.download(url);
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
- if (!(0, validBulkHeaderFilesByFileHash_1.isKnownValidBulkHeaderFile)(vbf)) {
77
- const { lastHeaderHash, lastChainWork } = validateBufferOfHeaders(vbf.data, prevHash, 0, undefined, prevChainWork);
78
- vbf.lastHash = lastHeaderHash;
79
- vbf.lastChainWork = lastChainWork;
80
- if (vbf.firstHeight === 0) {
81
- validateGenesisHeader(vbf.data, vbf.chain);
82
- }
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
+ }
211
+ vbf.lastHash = lastHeaderHash;
212
+ vbf.lastChainWork = lastChainWork;
213
+ if (vbf.firstHeight === 0) {
214
+ validateGenesisHeader(vbf.data, vbf.chain);
83
215
  }
84
216
  vbf.validated = true;
85
217
  return vbf;
@@ -94,11 +226,32 @@ async function validateBulkFileData(bf, prevHash, prevChainWork, fetch) {
94
226
  * @returns Header hash of last header validated or previousHash if there where none.
95
227
  */
96
228
  function validateBufferOfHeaders(buffer, previousHash, offset = 0, count = -1, previousChainWork) {
97
- if (count < 0)
98
- count = Math.floor((buffer.length - offset) / 80);
99
- count = Math.max(0, count);
100
- 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();
101
250
  let lastChainWork = previousChainWork;
251
+ if (lastChainWork !== undefined) {
252
+ validateWork(lastChainWork, 'previousChainWork');
253
+ lastChainWork = lastChainWork.toLowerCase();
254
+ }
102
255
  for (let i = 0; i < count; i++) {
103
256
  const headerStart = offset + i * 80;
104
257
  const headerEnd = headerStart + 80;
@@ -113,6 +266,7 @@ function validateBufferOfHeaders(buffer, previousHash, offset = 0, count = -1, p
113
266
  }
114
267
  lastHeaderHash = (0, utilityHelpers_noBuffer_1.asString)((0, utilityHelpers_1.doubleSha256BE)(header));
115
268
  (0, dirtyHashes_1.validateAgainstDirtyHashes)(lastHeaderHash);
269
+ validateConsensusProofOfWork(lastHeaderHash, h.bits);
116
270
  if (lastChainWork) {
117
271
  lastChainWork = addWork(lastChainWork, convertBitsToWork(h.bits));
118
272
  }
@@ -144,20 +298,24 @@ function validateGenesisHeader(buffer, chain) {
144
298
  * @returns Converted chainWork value from BN to hex string of 32 bytes.
145
299
  */
146
300
  function workBNtoBuffer(work) {
147
- 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');
148
306
  }
149
307
  /**
150
308
  * Returns true if work1 is more work (greater than) work2
151
309
  */
152
310
  function isMoreWork(work1, work2) {
153
- 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'));
154
312
  }
155
313
  /**
156
314
  * Add two Buffer encoded chainwork values
157
315
  * @returns Sum of work1 + work2 as Buffer encoded chainWork value
158
316
  */
159
317
  function addWork(work1, work2) {
160
- 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'));
161
319
  return workBNtoBuffer(sum);
162
320
  }
163
321
  /**
@@ -165,7 +323,11 @@ function addWork(work1, work2) {
165
323
  * @returns work1 - work2 as Buffer encoded chainWork value
166
324
  */
167
325
  function subWork(work1, work2) {
168
- 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);
169
331
  return workBNtoBuffer(sum);
170
332
  }
171
333
  /**
@@ -174,8 +336,13 @@ function subWork(work1, work2) {
174
336
  * @returns 32 byte Buffer with "target" value
175
337
  */
176
338
  function convertBitsToTarget(bits) {
177
- 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');
178
343
  bits = readUInt32LE(bits, 0);
344
+ }
345
+ validateUnsignedHeaderInteger(bits, 'bits', UINT32_MAX);
179
346
  const shift = (bits >> 24) & 0xff;
180
347
  const data = bits & 0x007fffff;
181
348
  const target = new sdk_1.BigNumber(data);
@@ -187,31 +354,59 @@ function convertBitsToTarget(bits) {
187
354
  }
188
355
  return target;
189
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
+ }
190
363
  /**
191
364
  * Computes "chainWork" value for 4 byte Bitcoin block header "bits" value.
192
365
  * @param bits number or converted from Buffer using `readUint32LE`
193
366
  * @returns 32 byte Buffer with "chainWork" value
194
367
  */
195
368
  function convertBitsToWork(bits) {
196
- const target = convertBitsToTarget(bits);
369
+ const encoded = Array.isArray(bits) ? readCompactBits(bits) : bits;
370
+ const target = validateCompactTarget(encoded);
197
371
  // convert target to work
198
372
  const work = target.notn(256).div(target.addn(1)).addn(1);
199
373
  return work.toString(16).padStart(64, '0');
200
374
  }
201
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
+ }
202
390
  const headers = [];
203
- while ((!count || headers.length < count) && offset + 80 <= buffer.length && offset >= 0) {
391
+ while (headers.length < limit && offset + 80 <= buffer.length) {
204
392
  headers.push(deserializeBaseBlockHeader(buffer, offset));
205
393
  offset += 80;
206
394
  }
207
395
  return headers;
208
396
  }
209
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
+ }
210
405
  const headers = [];
211
406
  let nextHeight = firstHeight;
212
- while ((!count || headers.length < count) && offset + 80 <= buffer.length && offset >= 0) {
407
+ while (headers.length < baseHeaders.length) {
213
408
  const baseBuffer = buffer.slice(offset, offset + 80);
214
- const base = deserializeBaseBlockHeader(baseBuffer);
409
+ const base = baseHeaders[headers.length];
215
410
  const header = {
216
411
  ...base,
217
412
  height: nextHeight++,
@@ -232,7 +427,7 @@ function deserializeBlockHeaders(firstHeight, buffer, offset = 0, count) {
232
427
  *
233
428
  * @returns true if the header is correctly formatted
234
429
  */
235
- function validateUnsignedHeaderInteger(value, field, maximum, rangeField = field) {
430
+ function validateUnsignedHeaderInteger(value, field, maximum) {
236
431
  if (typeof value !== 'number') {
237
432
  throw new TypeError(`Header ${field} must be a number.`);
238
433
  }
@@ -240,69 +435,60 @@ function validateUnsignedHeaderInteger(value, field, maximum, rangeField = field
240
435
  throw new TypeError(`Header ${field} must be an integer.`);
241
436
  }
242
437
  if (value < 0 || value > maximum) {
243
- throw new Error(`Header ${rangeField} must be between 0 and ${maximum}.`);
438
+ throw new Error(`Header ${field} must be between 0 and ${maximum}.`);
244
439
  }
245
440
  }
246
- function validateHeaderFormat(header) {
247
- const ALLOWED_KEYS = {
248
- version: true,
249
- previousHash: true,
250
- merkleRoot: true,
251
- time: true,
252
- bits: true,
253
- nonce: true,
254
- height: true,
255
- hash: true
256
- };
257
- const UINT_MAX = 0xffffffff;
258
- /**
259
- * Root object checks
260
- */
261
- 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)
262
445
  throw new TypeError('Missing header.');
263
- }
264
- if (typeof header !== 'object') {
446
+ if (typeof header !== 'object' || Array.isArray(header)) {
265
447
  throw new TypeError('Header must be an object.');
266
448
  }
267
- if (!Object.keys(header).every(key => key in ALLOWED_KEYS)) {
268
- 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.');
269
452
  }
270
- /**
271
- * Version
272
- */
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.');
459
+ }
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);
273
468
  validateUnsignedHeaderInteger(header.version, 'version', UINT_MAX);
274
- /**
275
- * Height
276
- */
277
- validateUnsignedHeaderInteger(header.height, 'height', UINT_MAX / 2, 'version');
278
- /**
279
- * Previous hash
280
- */
281
- if (header.previousHash.length !== 64) {
469
+ if (typeof header.previousHash !== 'string' || !HEX_32_BYTES.test(header.previousHash)) {
282
470
  throw new Error('Header previousHash must be 32 hex bytes.');
283
471
  }
284
- /**
285
- * Merkle root
286
- */
287
- if (header.merkleRoot.length !== 64) {
472
+ if (typeof header.merkleRoot !== 'string' || !HEX_32_BYTES.test(header.merkleRoot)) {
288
473
  throw new Error('Header merkleRoot must be 32 hex bytes.');
289
474
  }
290
- /**
291
- * Time
292
- */
293
475
  validateUnsignedHeaderInteger(header.time, 'time', UINT_MAX);
294
- /**
295
- * Bits
296
- */
297
476
  validateUnsignedHeaderInteger(header.bits, 'bits', UINT_MAX);
298
- /**
299
- * Nonce
300
- */
301
477
  validateUnsignedHeaderInteger(header.nonce, 'nonce', UINT_MAX);
302
- /**
303
- * Hash
304
- */
305
- 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)) {
306
492
  throw new Error('Header hash must be 32 hex bytes.');
307
493
  }
308
494
  if (header.hash !== (0, utilityHelpers_noBuffer_1.asString)(blockHash(header))) {
@@ -310,20 +496,66 @@ function validateHeaderFormat(header) {
310
496
  }
311
497
  }
312
498
  /**
313
- * Ensures that a header has a valid proof-of-work
314
- * Requires chain is 'main'
499
+ * Ensures that a header has a valid proof-of-work target and hash.
315
500
  *
316
501
  * @param header The header to validate
317
502
  *
318
503
  * @returns true if the header is valid
319
504
  */
320
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');
321
512
  const hashBN = new sdk_1.BigNumber((0, utilityHelpers_noBuffer_1.asArray)(hash));
322
- const target = convertBitsToTarget(bits);
513
+ const target = validateCompactTarget(bits);
323
514
  if (hashBN.lte(target))
324
515
  return true;
325
516
  throw new Error('Block hash is not less than specified target.');
326
517
  }
518
+ const proofOfWorkExceptions = new Map([
519
+ // The historical STN genesis header is a network-defined bootstrap
520
+ // checkpoint whose hash does not satisfy its encoded target. No later
521
+ // header receives this exception.
522
+ ['6b38bdbcd73a19f7889d23e1fa6166a9de71affceca60ca3bb1b28af8135c594', 0x1d00ffff]
523
+ ]);
524
+ function validateConsensusProofOfWork(hash, bits) {
525
+ if (proofOfWorkExceptions.get(hash) === bits)
526
+ return;
527
+ validateHeaderDifficulty((0, utilityHelpers_noBuffer_1.asArray)(hash, 'hex'), bits);
528
+ }
529
+ function validateCompactTarget(bits) {
530
+ if (!Number.isSafeInteger(bits) || bits < 0 || bits > 0xffffffff) {
531
+ throw new Error('Block target encoding is invalid.');
532
+ }
533
+ const size = bits >>> 24;
534
+ const word = bits & 0x007fffff;
535
+ const negative = word !== 0 && (bits & 0x00800000) !== 0;
536
+ const overflow = word !== 0 && (size > 34 || (word > 0xff && size > 33) || (word > 0xffff && size > 32));
537
+ if (word === 0 || negative || overflow) {
538
+ throw new Error('Block target encoding is invalid.');
539
+ }
540
+ const target = convertBitsToTarget(bits);
541
+ const proofOfWorkLimit = convertBitsToTarget(0x1d00ffff);
542
+ if (target.gt(proofOfWorkLimit)) {
543
+ throw new Error('Block target exceeds the proof-of-work limit.');
544
+ }
545
+ return target;
546
+ }
547
+ /**
548
+ * Ensures that a structured header's computed hash satisfies its declared
549
+ * proof-of-work target.
550
+ *
551
+ * @param header Header whose format and hash have already been checked.
552
+ * @returns true if the header has valid proof-of-work.
553
+ * @publicbody
554
+ */
555
+ function validateHeaderProofOfWork(header) {
556
+ validateConsensusProofOfWork(header.hash, header.bits);
557
+ return true;
558
+ }
327
559
  /**
328
560
  * Computes double sha256 hash of bitcoin block header
329
561
  * bytes are reversed to bigendian order
@@ -349,32 +581,39 @@ function blockHash(header) {
349
581
  * @publicbody
350
582
  */
351
583
  function serializeBaseBlockHeader(header, buffer, offset) {
352
- const writer = new sdk_1.Utils.Writer();
353
- writer.writeUInt32LE(header.version);
354
- writer.write((0, utilityHelpers_noBuffer_1.asArray)(header.previousHash).reverse());
355
- writer.write((0, utilityHelpers_noBuffer_1.asArray)(header.merkleRoot).reverse());
356
- writer.writeUInt32LE(header.time);
357
- writer.writeUInt32LE(header.bits);
358
- 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);
359
593
  const data = writer.toArray();
360
594
  if (buffer != null) {
361
- 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
+ }
362
601
  for (let i = 0; i < data.length; i++) {
363
- if (offset + i >= buffer.length) {
364
- throw new Error(`Buffer overflow at offset ${offset + i} for data length ${data.length}`);
365
- }
366
602
  buffer[offset + i] = data[i];
367
603
  }
368
604
  }
369
605
  return data;
370
606
  }
371
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
+ }
372
611
  const data = new Uint8Array(headers.length * 80);
373
- let i = -1;
374
- for (const header of headers) {
375
- i++;
376
- const d = serializeBaseBlockHeader(header);
377
- 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);
378
617
  }
379
618
  return data;
380
619
  }
@@ -383,7 +622,8 @@ function serializeBaseBlockHeaders(headers) {
383
622
  * @publicbody
384
623
  */
385
624
  function deserializeBaseBlockHeader(buffer, offset = 0) {
386
- const reader = sdk_1.Utils.ReaderUint8Array.makeReader(buffer, offset);
625
+ validateByteWindow(buffer, offset, 80);
626
+ const reader = utils_1.ReaderUint8Array.makeReader(buffer, offset);
387
627
  const header = {
388
628
  version: reader.readUInt32LE(),
389
629
  previousHash: (0, utilityHelpers_noBuffer_1.asString)(reader.read(32).reverse()),
@@ -395,6 +635,9 @@ function deserializeBaseBlockHeader(buffer, offset = 0) {
395
635
  return header;
396
636
  }
397
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
+ }
398
641
  const base = deserializeBaseBlockHeader(buffer, offset);
399
642
  const header = {
400
643
  ...base,
@@ -492,6 +735,9 @@ function swapByteOrder(buffer) {
492
735
  * @publicbody
493
736
  */
494
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');
495
741
  const a = [
496
742
  n & 0xff, // lowest byte
497
743
  (n >> 8) & 0xff,
@@ -501,6 +747,8 @@ function convertUint32ToBuffer(n, littleEndian = true) {
501
747
  return littleEndian ? a : a.reverse();
502
748
  }
503
749
  function writeUInt32LE(n, a, offset) {
750
+ validateUnsignedHeaderInteger(n, 'uint32', UINT32_MAX);
751
+ validateWritableByteWindow(a, offset, 4);
504
752
  a[offset++] = n & 0xff; // lowest byte
505
753
  a[offset++] = (n >> 8) & 0xff;
506
754
  a[offset++] = (n >> 16) & 0xff;
@@ -508,6 +756,8 @@ function writeUInt32LE(n, a, offset) {
508
756
  return offset;
509
757
  }
510
758
  function writeUInt32BE(n, a, offset) {
759
+ validateUnsignedHeaderInteger(n, 'uint32', UINT32_MAX);
760
+ validateWritableByteWindow(a, offset, 4);
511
761
  a[offset++] = (n >> 24) & 0xff; // highest byte
512
762
  a[offset++] = (n >> 16) & 0xff;
513
763
  a[offset++] = (n >> 8) & 0xff;
@@ -515,10 +765,12 @@ function writeUInt32BE(n, a, offset) {
515
765
  return offset;
516
766
  }
517
767
  function readUInt32LE(a, offset) {
518
- 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;
519
770
  }
520
771
  function readUInt32BE(a, offset) {
521
- 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;
522
774
  }
523
775
  /**
524
776
  * @param buffer four byte buffer with Uint32 number encoded
@@ -527,8 +779,13 @@ function readUInt32BE(a, offset) {
527
779
  * @publicbody
528
780
  */
529
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');
530
787
  const a = littleEndian ? buffer : buffer.slice().reverse();
531
- 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;
532
789
  return n;
533
790
  }
534
791
  //# sourceMappingURL=blockHeaderUtilities.js.map