@bsv/wallet-toolbox 2.13.0 → 2.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (659) hide show
  1. package/CHANGELOG.md +283 -1
  2. package/README.md +403 -5
  3. package/docs/README.md +8 -1
  4. package/docs/client.md +13057 -4632
  5. package/docs/identity-verification.md +196 -0
  6. package/docs/monitor.md +505 -190
  7. package/docs/services.md +4013 -1153
  8. package/docs/setup.md +98 -58
  9. package/docs/storage.md +5780 -1609
  10. package/docs/wallet.md +10155 -10871
  11. package/out/src/CWIStyleWalletManager.d.ts +6 -8
  12. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  13. package/out/src/CWIStyleWalletManager.js +170 -125
  14. package/out/src/CWIStyleWalletManager.js.map +1 -1
  15. package/out/src/Setup.d.ts +2 -0
  16. package/out/src/Setup.d.ts.map +1 -1
  17. package/out/src/Setup.js +3 -2
  18. package/out/src/Setup.js.map +1 -1
  19. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  20. package/out/src/ShamirWalletManager.js +34 -19
  21. package/out/src/ShamirWalletManager.js.map +1 -1
  22. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  23. package/out/src/SimpleWalletManager.js +7 -6
  24. package/out/src/SimpleWalletManager.js.map +1 -1
  25. package/out/src/Wallet.d.ts +50 -11
  26. package/out/src/Wallet.d.ts.map +1 -1
  27. package/out/src/Wallet.js +183 -107
  28. package/out/src/Wallet.js.map +1 -1
  29. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  30. package/out/src/WalletAuthenticationManager.js +282 -26
  31. package/out/src/WalletAuthenticationManager.js.map +1 -1
  32. package/out/src/WalletLogger.js +1 -1
  33. package/out/src/WalletLogger.js.map +1 -1
  34. package/out/src/WalletPermissionsManager.d.ts +30 -17
  35. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  36. package/out/src/WalletPermissionsManager.js +540 -312
  37. package/out/src/WalletPermissionsManager.js.map +1 -1
  38. package/out/src/WalletSettingsManager.d.ts +3 -2
  39. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  40. package/out/src/WalletSettingsManager.js +141 -6
  41. package/out/src/WalletSettingsManager.js.map +1 -1
  42. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  43. package/out/src/entropy/EntropyCollector.js +3 -2
  44. package/out/src/entropy/EntropyCollector.js.map +1 -1
  45. package/out/src/fundWalletP2PKH.d.ts.map +1 -1
  46. package/out/src/fundWalletP2PKH.js +143 -44
  47. package/out/src/fundWalletP2PKH.js.map +1 -1
  48. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  49. package/out/src/mockchain/MockChainTracker.js +5 -5
  50. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  51. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  52. package/out/src/mockchain/MockServices.js +32 -8
  53. package/out/src/mockchain/MockServices.js.map +1 -1
  54. package/out/src/monitor/Monitor.d.ts +17 -0
  55. package/out/src/monitor/Monitor.d.ts.map +1 -1
  56. package/out/src/monitor/Monitor.js +206 -42
  57. package/out/src/monitor/Monitor.js.map +1 -1
  58. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  59. package/out/src/monitor/MonitorDaemon.js +64 -16
  60. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  61. package/out/src/monitor/monitorValidation.d.ts +12 -0
  62. package/out/src/monitor/monitorValidation.d.ts.map +1 -0
  63. package/out/src/monitor/monitorValidation.js +133 -0
  64. package/out/src/monitor/monitorValidation.js.map +1 -0
  65. package/out/src/monitor/tasks/TaskArcSSE.d.ts +2 -0
  66. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  67. package/out/src/monitor/tasks/TaskArcSSE.js +28 -12
  68. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  69. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +5 -0
  70. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  71. package/out/src/monitor/tasks/TaskCheckForProofs.js +29 -24
  72. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  73. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  74. package/out/src/monitor/tasks/TaskCheckNoSends.js +11 -3
  75. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  76. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  77. package/out/src/monitor/tasks/TaskFailAbandoned.js +9 -4
  78. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  79. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  80. package/out/src/monitor/tasks/TaskNewHeader.js +3 -1
  81. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  82. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -1
  83. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +9 -3
  84. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -1
  85. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  86. package/out/src/monitor/tasks/TaskReorg.js +4 -4
  87. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  88. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  89. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +17 -7
  90. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  91. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +18 -1
  92. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  93. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +99 -21
  94. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  95. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +4 -4
  96. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  97. package/out/src/monitor/tasks/TaskReviewUtxos.js +41 -13
  98. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  99. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  100. package/out/src/monitor/tasks/TaskSendWaiting.js +52 -11
  101. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  102. package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -0
  103. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  104. package/out/src/monitor/tasks/TaskUnFail.js +26 -8
  105. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  106. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  107. package/out/src/sdk/PrivilegedKeyManager.js +3 -2
  108. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  109. package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
  110. package/out/src/sdk/WalletErrorFromJson.js +112 -2
  111. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  112. package/out/src/sdk/WalletServices.interfaces.d.ts +17 -1
  113. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  114. package/out/src/services/Services.d.ts +4 -0
  115. package/out/src/services/Services.d.ts.map +1 -1
  116. package/out/src/services/Services.js +260 -117
  117. package/out/src/services/Services.js.map +1 -1
  118. package/out/src/services/chaintracker/BHServiceClient.d.ts +21 -4
  119. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  120. package/out/src/services/chaintracker/BHServiceClient.js +267 -66
  121. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  122. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +25 -3
  123. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  124. package/out/src/services/chaintracker/ChaintracksChainTracker.js +188 -53
  125. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  126. package/out/src/services/chaintracker/LocalChainTracker.d.ts +26 -0
  127. package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -1
  128. package/out/src/services/chaintracker/LocalChainTracker.js +180 -10
  129. package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -1
  130. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  131. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +59 -7
  132. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  133. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +6 -0
  134. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
  135. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +7 -0
  136. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
  137. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +2 -0
  138. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -1
  139. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +9 -0
  140. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
  141. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +19 -0
  142. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  143. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +237 -61
  144. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  145. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +16 -0
  146. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  147. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +150 -26
  148. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  149. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +30 -1
  150. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  151. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +346 -30
  152. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  153. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +32 -1
  154. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  155. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +375 -43
  156. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
  157. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  158. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +28 -3
  159. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  160. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  161. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +33 -9
  162. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  163. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  164. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  165. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts.map +1 -1
  166. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +4 -2
  167. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -1
  168. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts +2 -0
  169. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  170. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +17 -4
  171. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  172. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +2 -0
  173. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  174. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +40 -20
  175. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  176. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  177. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +14 -0
  178. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  179. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +6 -0
  180. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
  181. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +56 -9
  182. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
  183. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  184. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +6 -3
  185. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  186. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +4 -0
  187. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  188. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +27 -9
  189. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  190. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +8 -0
  191. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  192. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +49 -5
  193. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  194. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +1 -1
  195. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  196. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +90 -21
  197. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  198. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -1
  199. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  200. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +185 -38
  201. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  202. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  203. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +59 -6
  204. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  205. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +2 -0
  206. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  207. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +89 -39
  208. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  209. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +10 -0
  210. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  211. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +225 -24
  212. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  213. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +2 -1
  214. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  215. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +265 -96
  216. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  217. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +3 -0
  218. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  219. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +225 -86
  220. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  221. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -0
  222. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  223. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +121 -35
  224. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  225. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +2 -2
  226. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  227. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  228. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  229. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  230. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  231. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  232. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  233. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  234. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +1 -7
  235. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  236. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +1 -7
  238. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  239. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  240. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +1 -7
  241. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  242. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +18 -0
  243. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -1
  244. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +204 -14
  245. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -1
  246. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +6 -1
  247. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  248. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +486 -82
  249. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  250. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  251. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +17 -1
  252. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  253. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -1
  254. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +12 -2
  255. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -1
  256. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  257. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +99 -30
  258. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  259. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +1 -0
  260. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  261. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +23 -15
  262. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  263. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +7 -0
  264. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  265. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +90 -24
  266. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  267. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +2 -1
  268. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  269. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +57 -11
  270. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  271. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts +9 -0
  272. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -1
  273. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +100 -14
  274. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -1
  275. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  276. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  277. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts +2 -0
  278. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -1
  279. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +104 -8
  280. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -1
  281. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +1 -0
  282. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -1
  283. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +79 -15
  284. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -1
  285. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +3 -0
  286. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  287. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +15 -0
  288. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  289. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +6 -1
  290. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  291. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +311 -93
  292. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  293. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts +4 -0
  294. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts.map +1 -0
  295. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js +33 -0
  296. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js.map +1 -0
  297. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
  298. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  299. package/out/src/services/classifyOutputUtxo.d.ts.map +1 -1
  300. package/out/src/services/classifyOutputUtxo.js +19 -10
  301. package/out/src/services/classifyOutputUtxo.js.map +1 -1
  302. package/out/src/services/fiatRateValidation.d.ts +12 -0
  303. package/out/src/services/fiatRateValidation.d.ts.map +1 -0
  304. package/out/src/services/fiatRateValidation.js +138 -0
  305. package/out/src/services/fiatRateValidation.js.map +1 -0
  306. package/out/src/services/getCanonicalMerklePath.d.ts +15 -0
  307. package/out/src/services/getCanonicalMerklePath.d.ts.map +1 -0
  308. package/out/src/services/getCanonicalMerklePath.js +90 -0
  309. package/out/src/services/getCanonicalMerklePath.js.map +1 -0
  310. package/out/src/services/providers/ARC.d.ts +3 -16
  311. package/out/src/services/providers/ARC.d.ts.map +1 -1
  312. package/out/src/services/providers/ARC.js +36 -37
  313. package/out/src/services/providers/ARC.js.map +1 -1
  314. package/out/src/services/providers/ArcSSEClient.d.ts +25 -19
  315. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  316. package/out/src/services/providers/ArcSSEClient.js +352 -85
  317. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  318. package/out/src/services/providers/Arcade.d.ts +1 -0
  319. package/out/src/services/providers/Arcade.d.ts.map +1 -1
  320. package/out/src/services/providers/Arcade.js +56 -41
  321. package/out/src/services/providers/Arcade.js.map +1 -1
  322. package/out/src/services/providers/Bitails.d.ts +3 -0
  323. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  324. package/out/src/services/providers/Bitails.js +79 -12
  325. package/out/src/services/providers/Bitails.js.map +1 -1
  326. package/out/src/services/providers/SdkWhatsOnChain.d.ts +8 -2
  327. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  328. package/out/src/services/providers/SdkWhatsOnChain.js +83 -10
  329. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  330. package/out/src/services/providers/WhatsOnChain.d.ts +3 -0
  331. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  332. package/out/src/services/providers/WhatsOnChain.js +221 -69
  333. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  334. package/out/src/services/providers/arcProviderConfig.d.ts +27 -0
  335. package/out/src/services/providers/arcProviderConfig.d.ts.map +1 -0
  336. package/out/src/services/providers/arcProviderConfig.js +83 -0
  337. package/out/src/services/providers/arcProviderConfig.js.map +1 -0
  338. package/out/src/services/providers/arcTxDataValidation.d.ts +4 -0
  339. package/out/src/services/providers/arcTxDataValidation.d.ts.map +1 -0
  340. package/out/src/services/providers/arcTxDataValidation.js +92 -0
  341. package/out/src/services/providers/arcTxDataValidation.js.map +1 -0
  342. package/out/src/services/providers/exchangeRates.d.ts +3 -3
  343. package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
  344. package/out/src/services/providers/exchangeRates.js +153 -226
  345. package/out/src/services/providers/exchangeRates.js.map +1 -1
  346. package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
  347. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  348. package/out/src/services/providers/whatsOnChainHelpers.d.ts +2 -2
  349. package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -1
  350. package/out/src/services/providers/whatsOnChainHelpers.js +11 -8
  351. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
  352. package/out/src/services/validateMerklePathResult.d.ts +30 -0
  353. package/out/src/services/validateMerklePathResult.d.ts.map +1 -0
  354. package/out/src/services/validateMerklePathResult.js +272 -0
  355. package/out/src/services/validateMerklePathResult.js.map +1 -0
  356. package/out/src/services/validatePostBeefResult.d.ts +17 -0
  357. package/out/src/services/validatePostBeefResult.d.ts.map +1 -0
  358. package/out/src/services/validatePostBeefResult.js +334 -0
  359. package/out/src/services/validatePostBeefResult.js.map +1 -0
  360. package/out/src/services/validateRawTxResult.d.ts +6 -0
  361. package/out/src/services/validateRawTxResult.d.ts.map +1 -0
  362. package/out/src/services/validateRawTxResult.js +77 -0
  363. package/out/src/services/validateRawTxResult.js.map +1 -0
  364. package/out/src/services/validateScriptHashHistoryResult.d.ts +5 -0
  365. package/out/src/services/validateScriptHashHistoryResult.d.ts.map +1 -0
  366. package/out/src/services/validateScriptHashHistoryResult.js +99 -0
  367. package/out/src/services/validateScriptHashHistoryResult.js.map +1 -0
  368. package/out/src/services/validateStatusForTxidsResult.d.ts +8 -0
  369. package/out/src/services/validateStatusForTxidsResult.d.ts.map +1 -0
  370. package/out/src/services/validateStatusForTxidsResult.js +181 -0
  371. package/out/src/services/validateStatusForTxidsResult.js.map +1 -0
  372. package/out/src/services/validateUtxoStatusResult.d.ts +6 -0
  373. package/out/src/services/validateUtxoStatusResult.d.ts.map +1 -0
  374. package/out/src/services/validateUtxoStatusResult.js +126 -0
  375. package/out/src/services/validateUtxoStatusResult.js.map +1 -0
  376. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
  377. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
  378. package/out/src/signer/actionBatch/ActionBatchPlanner.js +4 -3
  379. package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
  380. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +6 -5
  381. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
  382. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +70 -76
  383. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
  384. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +2 -2
  385. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -1
  386. package/out/src/signer/actionBatch/actionBatchBootstrap.js +3 -3
  387. package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -1
  388. package/out/src/signer/methods/acquireDirectCertificate.d.ts +3 -2
  389. package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
  390. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  391. package/out/src/signer/methods/buildSignableTransaction.d.ts +6 -5
  392. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  393. package/out/src/signer/methods/buildSignableTransaction.js +6 -11
  394. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  395. package/out/src/signer/methods/createAction.d.ts +4 -3
  396. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  397. package/out/src/signer/methods/createAction.js +4 -2
  398. package/out/src/signer/methods/createAction.js.map +1 -1
  399. package/out/src/signer/methods/createNoSendExpiryAction.d.ts +3 -3
  400. package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -1
  401. package/out/src/signer/methods/createNoSendExpiryAction.js +9 -4
  402. package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -1
  403. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  404. package/out/src/signer/methods/internalizeAction.js +2 -2
  405. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  406. package/out/src/signer/methods/proveCertificate.d.ts +3 -2
  407. package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
  408. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  409. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  410. package/out/src/signer/methods/signAction.js +3 -2
  411. package/out/src/signer/methods/signAction.js.map +1 -1
  412. package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -1
  413. package/out/src/signer/methods/verifyUnlockScripts.js +12 -17
  414. package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -1
  415. package/out/src/storage/StorageIdb.d.ts +5 -3
  416. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  417. package/out/src/storage/StorageIdb.js +15 -20
  418. package/out/src/storage/StorageIdb.js.map +1 -1
  419. package/out/src/storage/StorageKnex.d.ts +5 -3
  420. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  421. package/out/src/storage/StorageKnex.js +143 -93
  422. package/out/src/storage/StorageKnex.js.map +1 -1
  423. package/out/src/storage/StorageProvider.d.ts +19 -9
  424. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  425. package/out/src/storage/StorageProvider.js +229 -145
  426. package/out/src/storage/StorageProvider.js.map +1 -1
  427. package/out/src/storage/StorageReader.d.ts +1 -1
  428. package/out/src/storage/StorageReader.d.ts.map +1 -1
  429. package/out/src/storage/StorageReader.js +9 -42
  430. package/out/src/storage/StorageReader.js.map +1 -1
  431. package/out/src/storage/StorageReaderWriter.d.ts +1 -0
  432. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  433. package/out/src/storage/StorageReaderWriter.js +37 -36
  434. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  435. package/out/src/storage/StorageSyncReader.d.ts +1 -1
  436. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  437. package/out/src/storage/StorageSyncReader.js +3 -36
  438. package/out/src/storage/StorageSyncReader.js.map +1 -1
  439. package/out/src/storage/WalletStorageManager.d.ts +8 -7
  440. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  441. package/out/src/storage/WalletStorageManager.js +38 -65
  442. package/out/src/storage/WalletStorageManager.js.map +1 -1
  443. package/out/src/storage/adminServer/adminServer.d.ts +1 -1
  444. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  445. package/out/src/storage/adminServer/adminServer.js +16 -44
  446. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  447. package/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
  448. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  449. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  450. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +7 -4
  451. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  452. package/out/src/storage/methods/ListOutputsSpecOp.js +1 -0
  453. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  454. package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
  455. package/out/src/storage/methods/actionBatch.js +3 -2
  456. package/out/src/storage/methods/actionBatch.js.map +1 -1
  457. package/out/src/storage/methods/actionBatchBlobs.d.ts +2 -0
  458. package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
  459. package/out/src/storage/methods/actionBatchBlobs.js +40 -22
  460. package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
  461. package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
  462. package/out/src/storage/methods/actionBatchValidation.js +22 -30
  463. package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
  464. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +7 -2
  465. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  466. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +57 -44
  467. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  468. package/out/src/storage/methods/createAction.d.ts +7 -6
  469. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  470. package/out/src/storage/methods/createAction.js +7 -5
  471. package/out/src/storage/methods/createAction.js.map +1 -1
  472. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  473. package/out/src/storage/methods/generateChange.js +12 -11
  474. package/out/src/storage/methods/generateChange.js.map +1 -1
  475. package/out/src/storage/methods/getBeefForTransaction.js +5 -7
  476. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  477. package/out/src/storage/methods/internalizeAction.d.ts +3 -3
  478. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  479. package/out/src/storage/methods/internalizeAction.js +134 -129
  480. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  481. package/out/src/storage/methods/listActionsIdb.d.ts +3 -2
  482. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  483. package/out/src/storage/methods/listActionsIdb.js +2 -2
  484. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  485. package/out/src/storage/methods/listActionsKnex.d.ts +3 -2
  486. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
  487. package/out/src/storage/methods/listActionsKnex.js +10 -9
  488. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  489. package/out/src/storage/methods/listCertificates.d.ts +3 -2
  490. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  491. package/out/src/storage/methods/listCertificates.js.map +1 -1
  492. package/out/src/storage/methods/listOutputsIdb.d.ts +3 -2
  493. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  494. package/out/src/storage/methods/listOutputsIdb.js +11 -11
  495. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  496. package/out/src/storage/methods/listOutputsKnex.d.ts +3 -2
  497. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  498. package/out/src/storage/methods/listOutputsKnex.js +15 -23
  499. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  500. package/out/src/storage/methods/noSendExpiry.d.ts +3 -3
  501. package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -1
  502. package/out/src/storage/methods/noSendExpiry.js +10 -8
  503. package/out/src/storage/methods/noSendExpiry.js.map +1 -1
  504. package/out/src/storage/methods/preparedBeef.d.ts.map +1 -1
  505. package/out/src/storage/methods/preparedBeef.js +13 -14
  506. package/out/src/storage/methods/preparedBeef.js.map +1 -1
  507. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  508. package/out/src/storage/methods/processAction.js +37 -6
  509. package/out/src/storage/methods/processAction.js.map +1 -1
  510. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +1 -1
  511. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -1
  512. package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -1
  513. package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
  514. package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
  515. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  516. package/out/src/storage/methods/reviewUtxoOutputs.d.ts +1 -0
  517. package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -1
  518. package/out/src/storage/methods/reviewUtxoOutputs.js +51 -4
  519. package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -1
  520. package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -1
  521. package/out/src/storage/methods/validateSyncProof.js +3 -3
  522. package/out/src/storage/methods/validateSyncProof.js.map +1 -1
  523. package/out/src/storage/portable/index.d.ts.map +1 -1
  524. package/out/src/storage/portable/index.js +21 -13
  525. package/out/src/storage/portable/index.js.map +1 -1
  526. package/out/src/storage/remoting/BinaryJson.d.ts +11 -0
  527. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
  528. package/out/src/storage/remoting/BinaryJson.js +37 -0
  529. package/out/src/storage/remoting/BinaryJson.js.map +1 -1
  530. package/out/src/storage/remoting/KnexSessionManager.d.ts +26 -2
  531. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
  532. package/out/src/storage/remoting/KnexSessionManager.js +222 -30
  533. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
  534. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -1
  535. package/out/src/storage/remoting/KnexSyncTransferStore.js +3 -4
  536. package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -1
  537. package/out/src/storage/remoting/StorageClient.d.ts +6 -1
  538. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  539. package/out/src/storage/remoting/StorageClient.js +63 -6
  540. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  541. package/out/src/storage/remoting/StorageClientBase.d.ts +23 -6
  542. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  543. package/out/src/storage/remoting/StorageClientBase.js +148 -19
  544. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  545. package/out/src/storage/remoting/StorageMobile.d.ts +5 -0
  546. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  547. package/out/src/storage/remoting/StorageMobile.js +11 -9
  548. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  549. package/out/src/storage/remoting/StorageServer.d.ts +5 -1
  550. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  551. package/out/src/storage/remoting/StorageServer.js +95 -19
  552. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  553. package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -1
  554. package/out/src/storage/remoting/SyncTransfer.js +3 -2
  555. package/out/src/storage/remoting/SyncTransfer.js.map +1 -1
  556. package/out/src/storage/schema/KnexMigrations.d.ts +1 -0
  557. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  558. package/out/src/storage/schema/KnexMigrations.js +28 -6
  559. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  560. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  561. package/out/src/storage/schema/entities/EntityOutput.js +11 -4
  562. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  563. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +2 -1
  564. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  565. package/out/src/storage/schema/entities/EntityProvenTx.js +93 -39
  566. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  567. package/out/src/storage/schema/entities/EntityProvenTxReq.js +1 -1
  568. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  569. package/out/src/storage/schema/entities/EntitySyncState.js +1 -1
  570. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  571. package/out/src/storage/schema/tables/TableCertificate.d.ts +1 -1
  572. package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
  573. package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
  574. package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
  575. package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
  576. package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
  577. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
  578. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
  579. package/out/src/storage/schema/tables/TableOutput.d.ts +1 -1
  580. package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
  581. package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
  582. package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
  583. package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
  584. package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
  585. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
  586. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
  587. package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
  588. package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
  589. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +1 -1
  590. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
  591. package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
  592. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  593. package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
  594. package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
  595. package/out/src/storage/schema/tables/TableTransaction.d.ts +1 -1
  596. package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
  597. package/out/src/storage/schema/tables/TableTransaction.js.map +1 -1
  598. package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
  599. package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
  600. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
  601. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
  602. package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
  603. package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
  604. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  605. package/out/src/storage/sync/StorageMySQLDojoReader.js +8 -7
  606. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  607. package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
  608. package/out/src/utility/actionBatchDigest.js +9 -7
  609. package/out/src/utility/actionBatchDigest.js.map +1 -1
  610. package/out/src/utility/actionBatchPack.d.ts.map +1 -1
  611. package/out/src/utility/actionBatchPack.js +7 -12
  612. package/out/src/utility/actionBatchPack.js.map +1 -1
  613. package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
  614. package/out/src/utility/brc153ReferenceLabels.js +4 -4
  615. package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
  616. package/out/src/utility/brc177NoSendExpiry.d.ts +2 -2
  617. package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -1
  618. package/out/src/utility/canonicalizeAtomicBeef.js +2 -2
  619. package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -1
  620. package/out/src/utility/exactActionSpend.d.ts +11 -0
  621. package/out/src/utility/exactActionSpend.d.ts.map +1 -0
  622. package/out/src/utility/exactActionSpend.js +11 -0
  623. package/out/src/utility/exactActionSpend.js.map +1 -0
  624. package/out/src/utility/identityUtils.d.ts +44 -4
  625. package/out/src/utility/identityUtils.d.ts.map +1 -1
  626. package/out/src/utility/identityUtils.js +376 -61
  627. package/out/src/utility/identityUtils.js.map +1 -1
  628. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  629. package/out/src/utility/parseTxScriptOffsets.js +1 -19
  630. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  631. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  632. package/out/src/utility/tscProofToMerklePath.js +35 -4
  633. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  634. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  635. package/out/src/utility/utilityHelpers.js +8 -6
  636. package/out/src/utility/utilityHelpers.js.map +1 -1
  637. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  638. package/out/src/utility/utilityHelpers.noBuffer.js +6 -6
  639. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  640. package/out/src/utility/verifyOverlayOutput.d.ts +12 -0
  641. package/out/src/utility/verifyOverlayOutput.d.ts.map +1 -0
  642. package/out/src/utility/verifyOverlayOutput.js +22 -0
  643. package/out/src/utility/verifyOverlayOutput.js.map +1 -0
  644. package/out/src/utility/walletResultGuards.d.ts +14 -0
  645. package/out/src/utility/walletResultGuards.d.ts.map +1 -0
  646. package/out/src/utility/walletResultGuards.js +28 -0
  647. package/out/src/utility/walletResultGuards.js.map +1 -0
  648. package/out/src/wab-client/WABClient.d.ts +3 -17
  649. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  650. package/out/src/wab-client/WABClient.js +30 -14
  651. package/out/src/wab-client/WABClient.js.map +1 -1
  652. package/out/src/wab-client/WABResponseValidation.d.ts +48 -0
  653. package/out/src/wab-client/WABResponseValidation.d.ts.map +1 -0
  654. package/out/src/wab-client/WABResponseValidation.js +321 -0
  655. package/out/src/wab-client/WABResponseValidation.js.map +1 -0
  656. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  657. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -2
  658. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  659. package/package.json +5 -5
@@ -4,6 +4,7 @@ exports.Services = void 0;
4
4
  exports.validateScriptHash = validateScriptHash;
5
5
  exports.toBinaryBaseBlockHeader = toBinaryBaseBlockHeader;
6
6
  const sdk_1 = require("@bsv/sdk");
7
+ const utils_1 = require("@bsv/sdk/primitives/utils");
7
8
  const ServiceCollection_1 = require("./ServiceCollection");
8
9
  const createDefaultWalletServicesOptions_1 = require("./createDefaultWalletServicesOptions");
9
10
  const WhatsOnChain_1 = require("./providers/WhatsOnChain");
@@ -18,7 +19,27 @@ const WalletError_1 = require("../sdk/WalletError");
18
19
  const utilityHelpers_1 = require("../utility/utilityHelpers");
19
20
  const utilityHelpers_noBuffer_1 = require("../utility/utilityHelpers.noBuffer");
20
21
  const classifyOutputUtxo_1 = require("./classifyOutputUtxo");
22
+ const validateMerklePathResult_1 = require("./validateMerklePathResult");
23
+ const validateStatusForTxidsResult_1 = require("./validateStatusForTxidsResult");
24
+ const validateRawTxResult_1 = require("./validateRawTxResult");
25
+ const validateUtxoStatusResult_1 = require("./validateUtxoStatusResult");
26
+ const validateScriptHashHistoryResult_1 = require("./validateScriptHashHistoryResult");
27
+ const validatePostBeefResult_1 = require("./validatePostBeefResult");
28
+ const fiatRateValidation_1 = require("./fiatRateValidation");
29
+ const getCanonicalMerklePath_1 = require("./getCanonicalMerklePath");
30
+ function copyFiatExchangeRates(rates) {
31
+ return {
32
+ timestamp: new Date(rates.timestamp.getTime()),
33
+ base: rates.base,
34
+ rates: { ...rates.rates },
35
+ rateTimestamps: rates.rateTimestamps == null
36
+ ? undefined
37
+ : Object.fromEntries(Object.entries(rates.rateTimestamps).map(([key, value]) => [key, new Date(value.getTime())]))
38
+ };
39
+ }
21
40
  class Services {
41
+ identityChainTracker;
42
+ identityChainTrackerInit;
22
43
  static getStatusForTxidsBatchLimit = 20;
23
44
  static createDefaultOptions(chain) {
24
45
  return (0, createDefaultWalletServicesOptions_1.createDefaultWalletServicesOptions)(chain);
@@ -176,51 +197,81 @@ class Services {
176
197
  };
177
198
  }
178
199
  async getChainTracker() {
179
- if (this.options.chainTracker != null)
180
- return this.options.chainTracker;
181
- if (this.options.chaintracks == null) {
182
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('options.chainTracker or options.chaintracks', "valid to enable 'getChainTracker' service.");
200
+ while (true) {
201
+ if (this.options.chainTracker != null)
202
+ return this.options.chainTracker;
203
+ if (this.options.chaintracks == null) {
204
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('options.chainTracker or options.chaintracks', "valid to enable 'getChainTracker' service.");
205
+ }
206
+ const desired = this.options.chaintracks;
207
+ if (this.identityChainTracker?.chaintracks === desired)
208
+ return this.identityChainTracker;
209
+ if (this.identityChainTrackerInit != null) {
210
+ await this.identityChainTrackerInit.catch(() => undefined);
211
+ continue;
212
+ }
213
+ const previous = this.identityChainTracker;
214
+ const created = new ChaintracksChainTracker_1.ChaintracksChainTracker(this.chain, desired, {
215
+ telemetry: this.options.telemetry
216
+ });
217
+ this.identityChainTracker = created;
218
+ const init = Promise.resolve().then(async () => {
219
+ if (previous != null)
220
+ await previous.dispose();
221
+ return created;
222
+ });
223
+ this.identityChainTrackerInit = init;
224
+ try {
225
+ await init.catch(() => created);
226
+ }
227
+ finally {
228
+ if (this.identityChainTrackerInit === init)
229
+ this.identityChainTrackerInit = undefined;
230
+ }
183
231
  }
184
- return new ChaintracksChainTracker_1.ChaintracksChainTracker(this.chain, this.options.chaintracks, {
185
- telemetry: this.options.telemetry
186
- });
187
232
  }
188
233
  async getBsvExchangeRate() {
189
234
  this.options.bsvExchangeRate = await this.whatsonchain.updateBsvExchangeRate(this.options.bsvExchangeRate, this.options.bsvUpdateMsecs);
190
235
  return this.options.bsvExchangeRate.rate;
191
236
  }
192
237
  async getFiatExchangeRate(currency, base) {
193
- base ||= 'USD';
194
- if (currency === base)
238
+ const normalizedCurrency = (0, fiatRateValidation_1.normalizeFiatCurrency)(currency);
239
+ const normalizedBase = (0, fiatRateValidation_1.normalizeFiatCurrency)(base ?? 'USD', 'base');
240
+ if (normalizedCurrency === normalizedBase)
195
241
  return 1;
196
- const required = base === 'USD' ? [currency] : [currency, base];
197
- await this.updateFiatExchangeRates(required, this.options.fiatUpdateMsecs);
198
- const rates = this.options.fiatExchangeRates;
199
- const c = rates.rates?.[currency];
200
- const b = rates.rates?.[base];
201
- if (typeof c !== 'number') {
202
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('currency', `valid fiat currency '${currency}' with an exchange rate.`);
242
+ const required = normalizedBase === 'USD' ? [normalizedCurrency] : [normalizedCurrency, normalizedBase];
243
+ const rates = await this.updateFiatExchangeRates(required, this.options.fiatUpdateMsecs);
244
+ const c = rates.rates?.[normalizedCurrency];
245
+ const b = rates.rates?.[normalizedBase];
246
+ if (!(0, fiatRateValidation_1.isValidFiatRate)(c)) {
247
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('currency', `valid fiat currency '${normalizedCurrency}' with an exchange rate.`);
248
+ }
249
+ if (!(0, fiatRateValidation_1.isValidFiatRate)(b)) {
250
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('base', `valid fiat currency '${normalizedBase}' with an exchange rate.`);
203
251
  }
204
- if (typeof b !== 'number') {
205
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('base', `valid fiat currency '${base}' with an exchange rate.`);
252
+ const result = c / b;
253
+ if (!(0, fiatRateValidation_1.isValidFiatRate)(result)) {
254
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('currency', 'a finite and bounded conversion result.');
206
255
  }
207
- return c / b;
256
+ return result;
208
257
  }
209
258
  async getFiatExchangeRates(targetCurrencies) {
210
- await this.updateFiatExchangeRates(targetCurrencies, this.options.fiatUpdateMsecs);
211
- const stored = this.options.fiatExchangeRates;
259
+ const targets = (0, fiatRateValidation_1.normalizeFiatCurrencies)(targetCurrencies);
260
+ const stored = await this.updateFiatExchangeRates(targets, this.options.fiatUpdateMsecs);
212
261
  const rates = {};
213
- for (const c of targetCurrencies) {
262
+ for (const c of targets) {
214
263
  const v = stored.rates?.[c];
215
- if (typeof v === 'number') {
264
+ if ((0, fiatRateValidation_1.isValidFiatRate)(v)) {
216
265
  rates[c] = v;
217
266
  }
218
267
  }
219
268
  return {
220
- timestamp: stored.timestamp,
269
+ timestamp: new Date(stored.timestamp.getTime()),
221
270
  base: 'USD',
222
271
  rates,
223
- rateTimestamps: stored.rateTimestamps
272
+ rateTimestamps: stored.rateTimestamps == null
273
+ ? undefined
274
+ : Object.fromEntries(Object.entries(stored.rateTimestamps).map(([key, value]) => [key, new Date(value.getTime())]))
224
275
  };
225
276
  }
226
277
  get getProofsCount() {
@@ -239,6 +290,7 @@ class Services {
239
290
  const services = this.getStatusForTxidsServices;
240
291
  if (useNext === true)
241
292
  services.next();
293
+ const normalizedTxids = txids.map((txid, index) => (0, validateMerklePathResult_1.normalizeTxid)(txid, `txids[${index}]`));
242
294
  let fallback = {
243
295
  name: '<noservices>',
244
296
  status: 'error',
@@ -246,7 +298,7 @@ class Services {
246
298
  results: []
247
299
  };
248
300
  const resultsByTxid = new Map();
249
- const unresolved = new Set(txids);
301
+ const unresolved = new Set(normalizedTxids);
250
302
  const providerNames = [];
251
303
  let successfulProvider = false;
252
304
  const rank = (result) => {
@@ -268,7 +320,7 @@ class Services {
268
320
  if (r.status === 'success') {
269
321
  services.addServiceCallSuccess(stc);
270
322
  successfulProvider = true;
271
- providerNames.push(r.name);
323
+ providerNames.push(stc.providerName);
272
324
  for (const result of r.results) {
273
325
  const current = resultsByTxid.get(result.txid);
274
326
  if (current == null || rank(result) > rank(current))
@@ -297,7 +349,7 @@ class Services {
297
349
  return {
298
350
  name: [...new Set(providerNames)].join(','),
299
351
  status: 'success',
300
- results: txids.map(txid => resultsByTxid.get(txid) ?? { txid, status: 'unknown', depth: undefined })
352
+ results: normalizedTxids.map(txid => resultsByTxid.get(txid) ?? { txid, status: 'unknown', depth: undefined })
301
353
  };
302
354
  }
303
355
  async getStatusForTxidsBatched(stc, txids) {
@@ -305,7 +357,7 @@ class Services {
305
357
  let error;
306
358
  for (let i = 0; i < txids.length; i += Services.getStatusForTxidsBatchLimit) {
307
359
  const batch = txids.slice(i, i + Services.getStatusForTxidsBatchLimit);
308
- const r = await stc.service(batch);
360
+ const r = (0, validateStatusForTxidsResult_1.validateStatusForTxidsResult)(await stc.service(batch), batch, stc.providerName);
309
361
  if (r.status !== 'success') {
310
362
  return r;
311
363
  }
@@ -325,13 +377,16 @@ class Services {
325
377
  * @returns script hash in 'hashLE' format, which is the default.
326
378
  */
327
379
  hashOutputScript(script) {
328
- const hash = sdk_1.Utils.toHex((0, utilityHelpers_1.sha256Hash)(sdk_1.Utils.toArray(script, 'hex')));
380
+ const hash = (0, utils_1.toHex)((0, utilityHelpers_1.sha256Hash)((0, utils_1.toArray)(script, 'hex')));
329
381
  return hash;
330
382
  }
331
383
  async isUtxo(output) {
332
384
  return (0, classifyOutputUtxo_1.requireConclusiveUtxo)(await (0, classifyOutputUtxo_1.classifyOutputUtxo)(this, output));
333
385
  }
334
386
  async getUtxoStatus(output, outputFormat, outpoint, useNext, logger) {
387
+ validateScriptHash(output, outputFormat);
388
+ const normalizedOutput = output.toLowerCase();
389
+ const normalizedOutpoint = (0, validateUtxoStatusResult_1.normalizeWalletOutpoint)(outpoint);
335
390
  const services = this.getUtxoStatusServices;
336
391
  if (useNext === true)
337
392
  services.next();
@@ -343,7 +398,8 @@ class Services {
343
398
  };
344
399
  logger?.group('services getUtxoStatus');
345
400
  for (let retry = 0; retry < 2; retry++) {
346
- r0 = (await this.tryUtxoStatusProviders(services, output, outputFormat, outpoint, logger)) ?? r0;
401
+ r0 =
402
+ (await this.tryUtxoStatusProviders(services, normalizedOutput, outputFormat, normalizedOutpoint, logger)) ?? r0;
347
403
  if (r0.status === 'success')
348
404
  break;
349
405
  await (0, utilityHelpers_1.wait)(2000);
@@ -355,7 +411,7 @@ class Services {
355
411
  for (let tries = 0; tries < services.count; tries++) {
356
412
  const stc = services.serviceToCall;
357
413
  try {
358
- const r = await stc.service(output, outputFormat, outpoint);
414
+ const r = (0, validateUtxoStatusResult_1.validateUtxoStatusResult)(await stc.service(output, outputFormat, outpoint), outpoint, stc.providerName);
359
415
  logger?.log(`${stc.providerName} status ${r.status}`);
360
416
  if (r.status === 'success') {
361
417
  services.addServiceCallSuccess(stc);
@@ -374,6 +430,7 @@ class Services {
374
430
  return undefined;
375
431
  }
376
432
  async getScriptHashHistory(hash, useNext, logger) {
433
+ const normalizedHash = (0, validateMerklePathResult_1.normalizeTxid)(hash, 'hash');
377
434
  const services = this.getScriptHashHistoryServices;
378
435
  if (useNext === true)
379
436
  services.next();
@@ -387,10 +444,11 @@ class Services {
387
444
  for (let tries = 0; tries < services.count; tries++) {
388
445
  const stc = services.serviceToCall;
389
446
  try {
390
- const r = await stc.service(hash);
447
+ const r = (0, validateScriptHashHistoryResult_1.validateScriptHashHistoryResult)(await stc.service(normalizedHash), stc.providerName);
391
448
  logger?.log(`${stc.providerName} status ${r.status}`);
392
449
  if (r.status === 'success') {
393
450
  r0 = r;
451
+ services.addServiceCallSuccess(stc);
394
452
  break;
395
453
  }
396
454
  if (r.error != null)
@@ -429,10 +487,15 @@ class Services {
429
487
  * @returns
430
488
  */
431
489
  async postBeef(beef, txids, logger) {
490
+ const request = (0, validatePostBeefResult_1.snapshotPostBeefRequest)(beef, txids);
491
+ if (this.postBeefMode !== 'UntilSuccess' && this.postBeefMode !== 'PromiseAll') {
492
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('postBeefMode', "'UntilSuccess' or 'PromiseAll'");
493
+ }
432
494
  let rs = [];
433
495
  const services = this.postBeefServices;
434
496
  const stcs = services.allServicesToCall;
435
- const softTimeoutMs = this.getPostBeefSoftTimeoutMs(beef);
497
+ const softTimeoutMs = this.getPostBeefSoftTimeoutMs(request.beefBytes.length);
498
+ const softTimedOut = new Set();
436
499
  logger?.group('services postBeef');
437
500
  switch (this.postBeefMode) {
438
501
  case 'UntilSuccess':
@@ -442,8 +505,7 @@ class Services {
442
505
  rs.push(r);
443
506
  if (r.status === 'success')
444
507
  break;
445
- const softTimedOut = r.notes?.some(n => n.what === 'postBeefServiceTimeout') === true;
446
- if (!softTimedOut && r.txidResults?.every(txr => txr.serviceError)) {
508
+ if (!softTimedOut.has(stc) && r.txidResults.every(txr => txr.serviceError)) {
447
509
  // move this service to the end of the list
448
510
  this.postBeefServices.moveServiceToLast(stc);
449
511
  }
@@ -459,7 +521,10 @@ class Services {
459
521
  logger?.groupEnd();
460
522
  return rs;
461
523
  async function callService(stc, timeoutMs) {
462
- const callPromise = stc.service(beef, txids);
524
+ const callPromise = Promise.resolve()
525
+ .then(async () => await stc.service(sdk_1.Beef.fromBinaryStrict(request.beefBytes), [...request.txids]))
526
+ .then(result => (0, validatePostBeefResult_1.validatePostBeefResult)(result, request.txids, stc.providerName))
527
+ .catch(() => (0, validatePostBeefResult_1.makePostBeefServiceError)(stc.providerName, request.txids, 'postBeefServiceError'));
463
528
  let r;
464
529
  if (timeoutMs == null || timeoutMs <= 0) {
465
530
  r = await callPromise;
@@ -467,7 +532,10 @@ class Services {
467
532
  else {
468
533
  let timeoutHandle;
469
534
  const timeoutPromise = new Promise(resolve => {
470
- timeoutHandle = setTimeout(() => resolve(makeServiceTimeoutResult(stc.providerName, txids, timeoutMs)), timeoutMs);
535
+ timeoutHandle = setTimeout(() => {
536
+ softTimedOut.add(stc);
537
+ resolve((0, validatePostBeefResult_1.makePostBeefServiceError)(stc.providerName, request.txids, 'postBeefServiceTimeout', timeoutMs));
538
+ }, timeoutMs);
471
539
  });
472
540
  r = await Promise.race([callPromise, timeoutPromise]);
473
541
  if (timeoutHandle != null)
@@ -486,39 +554,34 @@ class Services {
486
554
  }
487
555
  return r;
488
556
  }
489
- function makeServiceTimeoutResult(providerName, txids, timeoutMs) {
490
- return {
491
- name: providerName,
492
- status: 'error',
493
- txidResults: txids.map(txid => ({
494
- txid,
495
- status: 'error',
496
- serviceError: true,
497
- data: { detail: `timeout after ${timeoutMs}ms` }
498
- })),
499
- notes: [{ when: new Date().toISOString(), what: 'postBeefServiceTimeout', providerName, timeoutMs }]
500
- };
501
- }
502
557
  }
503
- getPostBeefSoftTimeoutMs(beef) {
504
- const baseMs = Math.max(0, this.postBeefUntilSuccessSoftTimeoutMs);
505
- const perKbMs = Math.max(0, this.postBeefUntilSuccessSoftTimeoutPerKbMs);
506
- const maxMs = Math.max(baseMs, this.postBeefUntilSuccessSoftTimeoutMaxMs);
558
+ getPostBeefSoftTimeoutMs(beefBytes) {
559
+ const maximum = 60 * 60 * 1000;
560
+ const valid = (value, name) => {
561
+ if (!Number.isSafeInteger(value) || value < 0 || value > maximum) {
562
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER(name, `an integer from 0 through ${maximum}`);
563
+ }
564
+ return value;
565
+ };
566
+ const baseMs = valid(this.postBeefUntilSuccessSoftTimeoutMs, 'postBeefUntilSuccessSoftTimeoutMs');
567
+ const perKbMs = valid(this.postBeefUntilSuccessSoftTimeoutPerKbMs, 'postBeefUntilSuccessSoftTimeoutPerKbMs');
568
+ const maxMs = Math.max(baseMs, valid(this.postBeefUntilSuccessSoftTimeoutMaxMs, 'postBeefUntilSuccessSoftTimeoutMaxMs'));
507
569
  if (perKbMs <= 0)
508
570
  return Math.min(baseMs, maxMs);
509
- const beefBytes = beef.toBinary().length;
510
571
  const extraMs = Math.ceil((beefBytes / 1024) * perKbMs);
511
572
  return Math.min(maxMs, baseMs + extraMs);
512
573
  }
513
574
  async getRawTx(txid, useNext) {
575
+ const normalizedTxid = (0, validateMerklePathResult_1.normalizeTxid)(txid);
514
576
  const services = this.getRawTxServices;
515
577
  if (useNext === true)
516
578
  services.next();
517
- const r0 = { txid };
579
+ const r0 = { txid: normalizedTxid };
518
580
  for (let tries = 0; tries < services.count; tries++) {
519
581
  const stc = services.serviceToCall;
520
582
  try {
521
- const done = this.applyRawTxResult(r0, txid, await stc.service(txid, this.chain), services, stc);
583
+ const result = (0, validateRawTxResult_1.validateRawTxResult)(await stc.service(normalizedTxid, this.chain), normalizedTxid, stc.providerName);
584
+ const done = this.applyRawTxResult(r0, normalizedTxid, result, services, stc);
522
585
  if (done)
523
586
  break;
524
587
  }
@@ -532,9 +595,9 @@ class Services {
532
595
  applyRawTxResult(r0, txid, r, services, stc) {
533
596
  if (r.rawTx != null) {
534
597
  const hash = (0, utilityHelpers_noBuffer_1.asString)((0, utilityHelpers_1.doubleSha256BE)(r.rawTx));
535
- if (hash === (0, utilityHelpers_noBuffer_1.asString)(txid)) {
598
+ if (hash === txid) {
536
599
  r0.rawTx = r.rawTx;
537
- r0.name = r.name;
600
+ r0.name = stc.providerName;
538
601
  r0.error = undefined;
539
602
  services.addServiceCallSuccess(stc);
540
603
  return true;
@@ -622,63 +685,99 @@ class Services {
622
685
  }
623
686
  }
624
687
  async hashToHeader(hash) {
688
+ const normalizedHash = (0, validateMerklePathResult_1.normalizeTxid)(hash, 'hash');
625
689
  const method = async () => {
626
690
  const chaintracks = this.options.chaintracks;
627
- const header = await chaintracks.findHeaderForBlockHash(hash);
691
+ const header = await chaintracks.findHeaderForBlockHash(normalizedHash);
628
692
  return header;
629
693
  };
630
694
  let header = await this.invokeChaintracksWithRetry(method, 'find_header_for_hash');
631
- header ??= await this.whatsonchain.getBlockHeaderByHash(hash);
695
+ header ??= await this.whatsonchain.getBlockHeaderByHash(normalizedHash);
632
696
  if (header == null)
633
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('hash', `valid blockhash '${hash}' on mined chain ${this.chain}`);
634
- return header;
697
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('hash', `valid blockhash '${normalizedHash}' on mined chain ${this.chain}`);
698
+ const validated = (0, validateMerklePathResult_1.copyValidatedBlockHeader)(header, true);
699
+ if (validated.hash !== normalizedHash) {
700
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('hash', `the hash of the returned mined header on chain ${this.chain}`);
701
+ }
702
+ return validated;
703
+ }
704
+ async authenticateProviderMerklePath(txid, result) {
705
+ // First copy and bind the provider's mutable proof/header response. Then
706
+ // resolve that header hash through the wallet's own chain service and bind
707
+ // the proof a second time to that canonical, proof-of-work-valid header.
708
+ // Bind the provider path to the declared height/root before using the
709
+ // declared hash as a lookup key. `hashToHeader` then authenticates that
710
+ // hash and returns the canonical owned header.
711
+ const providerResult = (0, validateMerklePathResult_1.validateMerklePathResult)(txid, result, false, false);
712
+ const canonicalHeader = await this.hashToHeader(providerResult.header.hash);
713
+ // `hashToHeader` already returns an owned, format-checked,
714
+ // proof-of-work-valid header. This second pass only binds the copied path
715
+ // to that canonical header's height and root.
716
+ return (0, validateMerklePathResult_1.validateMerklePathResult)(txid, { merklePath: providerResult.merklePath, header: canonicalHeader }, false, false);
717
+ }
718
+ async tryMerklePathProvider(txid, service, aggregate, logger) {
719
+ let result;
720
+ try {
721
+ result = (0, validateMerklePathResult_1.snapshotMerklePathResult)(await service.service(txid, this), true, service.providerName);
722
+ }
723
+ catch (error_) {
724
+ const error = WalletError_1.WalletError.fromUnknown(error_);
725
+ this.getMerklePathServices.addServiceCallError(service, error);
726
+ aggregate.error ??= error;
727
+ return false;
728
+ }
729
+ aggregate.notes?.push(...(result.notes ?? []));
730
+ aggregate.name ??= result.name ?? service.providerName;
731
+ if (result.merklePath != null) {
732
+ try {
733
+ await (0, getCanonicalMerklePath_1.validateCanonicalMerklePathResult)(txid, result, await this.getChainTracker());
734
+ if (result.header != null) {
735
+ const authenticated = await this.authenticateProviderMerklePath(txid, result);
736
+ result.merklePath = authenticated.merklePath;
737
+ result.header = authenticated.header;
738
+ }
739
+ logger?.log(`${service.providerName} has authenticated canonical merklePath`);
740
+ Object.assign(aggregate, {
741
+ merklePath: result.merklePath,
742
+ header: result.header,
743
+ name: result.name ?? service.providerName,
744
+ error: undefined
745
+ });
746
+ this.getMerklePathServices.addServiceCallSuccess(service);
747
+ return true;
748
+ }
749
+ catch (error_) {
750
+ logger?.log(`${service.providerName} rejected non-canonical merklePath`);
751
+ result.error = WalletError_1.WalletError.fromUnknown(error_);
752
+ }
753
+ }
754
+ else {
755
+ logger?.log(`${service.providerName} no merklePath`);
756
+ }
757
+ if (result.error != null)
758
+ this.getMerklePathServices.addServiceCallError(service, result.error);
759
+ else
760
+ this.getMerklePathServices.addServiceCallFailure(service);
761
+ aggregate.error ??= result.error;
762
+ return false;
635
763
  }
636
764
  async getMerklePath(txid, useNext, logger) {
765
+ const normalizedTxid = (0, validateMerklePathResult_1.normalizeTxid)(txid);
637
766
  const services = this.getMerklePathServices;
638
767
  if (useNext === true)
639
768
  services.next();
640
- const r0 = { notes: [] };
769
+ const result = { notes: [] };
641
770
  logger?.group('services getMerklePath');
642
771
  for (let tries = 0; tries < services.count; tries++) {
643
- const stc = services.serviceToCall;
644
- try {
645
- const r = await stc.service(txid, this);
646
- if (r.notes != null) {
647
- r0.notes = r0.notes ?? [];
648
- r0.notes.push(...r.notes);
649
- }
650
- r0.name ??= r.name;
651
- if (r.merklePath == null) {
652
- logger?.log(`${stc.providerName} no merklePath`);
653
- }
654
- else {
655
- logger?.log(`${stc.providerName} has merklePath`);
656
- // If we have a proof, call it done.
657
- r0.merklePath = r.merklePath;
658
- r0.header = r.header;
659
- r0.name = r.name;
660
- r0.error = undefined;
661
- services.addServiceCallSuccess(stc);
662
- break;
663
- }
664
- if (r.error != null)
665
- services.addServiceCallError(stc, r.error);
666
- else
667
- services.addServiceCallFailure(stc);
668
- if (r.error != null && r0.error == null) {
669
- // If we have an error and didn't before...
670
- r0.error = r.error;
671
- }
672
- }
673
- catch (error_) {
674
- const e = WalletError_1.WalletError.fromUnknown(error_);
675
- services.addServiceCallError(stc, e);
676
- }
772
+ if (await this.tryMerklePathProvider(normalizedTxid, services.serviceToCall, result, logger))
773
+ break;
677
774
  services.next();
678
775
  }
679
- return r0;
776
+ logger?.groupEnd?.();
777
+ return result;
680
778
  }
681
779
  async getValidatedMerklePath(txid, validate) {
780
+ const normalizedTxid = (0, validateMerklePathResult_1.normalizeTxid)(txid);
682
781
  const services = this.getMerklePathServices;
683
782
  const calls = services.allServicesToCall;
684
783
  const start = services.index;
@@ -686,13 +785,28 @@ class Services {
686
785
  for (let i = 0; i < calls.length; i++) {
687
786
  const call = calls[(start + i) % calls.length];
688
787
  try {
689
- const result = await call.service(txid, this);
788
+ const result = (0, validateMerklePathResult_1.snapshotMerklePathResult)(await call.service(normalizedTxid, this), true, call.providerName);
690
789
  if (result.merklePath == null) {
691
790
  throw result.error ?? new WERR_errors_1.WERR_INVALID_OPERATION('Proof provider returned no Merkle path');
692
791
  }
693
- await validate(result);
792
+ await (0, getCanonicalMerklePath_1.validateCanonicalMerklePathResult)(normalizedTxid, result, await this.getChainTracker());
793
+ // Some legacy/custom proof providers return a path without a header;
794
+ // this method's explicit validator contract exists so its caller can
795
+ // resolve and authenticate that header independently. When a provider
796
+ // does supply a header, apply the standard built-in boundary first.
797
+ let candidate = result;
798
+ if (result.header != null) {
799
+ const authenticated = await this.authenticateProviderMerklePath(normalizedTxid, result);
800
+ candidate = {
801
+ name: call.providerName,
802
+ notes: result.notes,
803
+ merklePath: authenticated.merklePath,
804
+ header: authenticated.header
805
+ };
806
+ }
807
+ await validate(candidate);
694
808
  services.addServiceCallSuccess(call);
695
- return result;
809
+ return candidate;
696
810
  }
697
811
  catch (cause) {
698
812
  error = WalletError_1.WalletError.fromUnknown(cause);
@@ -703,10 +817,28 @@ class Services {
703
817
  }
704
818
  async updateFiatExchangeRates(targetCurrencies, updateMsecs) {
705
819
  updateMsecs ??= 1000 * 60 * 60 * 24;
820
+ if (!Number.isSafeInteger(updateMsecs) || updateMsecs < 0 || updateMsecs > 10 * 365 * 24 * 60 * 60 * 1000) {
821
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('updateMsecs', 'a bounded non-negative safe integer.');
822
+ }
823
+ const targets = (0, fiatRateValidation_1.normalizeFiatCurrencies)(targetCurrencies);
706
824
  const freshnessDate = new Date(Date.now() - updateMsecs);
707
- const stored = this.options.fiatExchangeRates;
825
+ let stored;
826
+ try {
827
+ const normalized = (0, fiatRateValidation_1.normalizeFiatExchangeRates)(this.options.fiatExchangeRates, []);
828
+ stored = {
829
+ ...normalized,
830
+ rateTimestamps: (0, fiatRateValidation_1.normalizeFiatRateTimestamps)(this.options.fiatExchangeRates.rateTimestamps)
831
+ };
832
+ }
833
+ catch {
834
+ stored = {
835
+ timestamp: new Date(Date.UTC(2000, 0, 1)),
836
+ base: 'USD',
837
+ rates: { USD: 1 }
838
+ };
839
+ }
708
840
  const storedRates = stored.rates ?? {};
709
- const toFetch = this.collectStaleCurrencies(targetCurrencies, storedRates, stored, freshnessDate);
841
+ const toFetch = this.collectStaleCurrencies(targets, storedRates, stored, freshnessDate);
710
842
  if (toFetch.length === 0) {
711
843
  this.options.fiatExchangeRates = {
712
844
  timestamp: stored.timestamp,
@@ -714,16 +846,16 @@ class Services {
714
846
  rates: storedRates,
715
847
  rateTimestamps: stored.rateTimestamps
716
848
  };
717
- return this.options.fiatExchangeRates;
849
+ return copyFiatExchangeRates(this.options.fiatExchangeRates);
718
850
  }
719
851
  const fetched = await this.fetchFiatRates(toFetch);
720
852
  if (fetched == null) {
721
853
  if (Object.keys(storedRates).length > 0)
722
- return stored;
854
+ return copyFiatExchangeRates(stored);
723
855
  throw new WERR_errors_1.WERR_INTERNAL();
724
856
  }
725
857
  this.options.fiatExchangeRates = this.mergeFiatRates(stored, storedRates, fetched);
726
- return this.options.fiatExchangeRates;
858
+ return copyFiatExchangeRates(this.options.fiatExchangeRates);
727
859
  }
728
860
  collectStaleCurrencies(targetCurrencies, storedRates, stored, freshnessDate) {
729
861
  const toFetch = [];
@@ -735,7 +867,8 @@ class Services {
735
867
  }
736
868
  const v = storedRates[c];
737
869
  const ts = stored.rateTimestamps?.[c] ?? stored.timestamp;
738
- const fresh = typeof v === 'number' && ts instanceof Date && ts > freshnessDate;
870
+ const tsValue = ts instanceof Date ? ts.getTime() : Number.NaN;
871
+ const fresh = (0, fiatRateValidation_1.isValidFiatRate)(v) && Number.isFinite(tsValue) && tsValue <= Date.now() + 5 * 60 * 1000 && ts > freshnessDate;
739
872
  if (!fresh)
740
873
  toFetch.push(c);
741
874
  }
@@ -746,12 +879,10 @@ class Services {
746
879
  for (let tries = 0; tries < services.count; tries++) {
747
880
  const stc = services.serviceToCall;
748
881
  try {
749
- const r = await stc.service(toFetch, this.options);
750
- if (toFetch.every(c => c === 'USD' || typeof r.rates?.[c] === 'number')) {
751
- services.addServiceCallSuccess(stc);
752
- return r;
753
- }
754
- services.addServiceCallFailure(stc);
882
+ const raw = await stc.service(toFetch, this.options);
883
+ const rates = (0, fiatRateValidation_1.normalizeFiatExchangeRates)(raw, toFetch);
884
+ services.addServiceCallSuccess(stc);
885
+ return rates;
755
886
  }
756
887
  catch (error_) {
757
888
  services.addServiceCallError(stc, WalletError_1.WalletError.fromUnknown(error_));
@@ -761,11 +892,12 @@ class Services {
761
892
  return undefined;
762
893
  }
763
894
  mergeFiatRates(stored, storedRates, fetched) {
895
+ fetched = (0, fiatRateValidation_1.normalizeFiatExchangeRates)(fetched, []);
764
896
  const nextRates = { ...storedRates };
765
897
  const nextTimestamps = { ...stored.rateTimestamps };
766
898
  for (const c of fetched.rates != null ? Object.keys(fetched.rates) : []) {
767
899
  const v = fetched.rates?.[c];
768
- if (typeof v === 'number') {
900
+ if ((0, fiatRateValidation_1.isValidFiatRate)(v)) {
769
901
  nextRates[c] = v;
770
902
  nextTimestamps[c] = fetched.timestamp;
771
903
  }
@@ -811,6 +943,13 @@ class Services {
811
943
  }
812
944
  exports.Services = Services;
813
945
  function validateScriptHash(output, outputFormat) {
946
+ if (typeof output !== 'string' ||
947
+ output.length === 0 ||
948
+ output.length % 2 !== 0 ||
949
+ output.length > validateRawTxResult_1.MAX_RAW_TRANSACTION_BYTES * 2 ||
950
+ !/^[0-9a-fA-F]+$/.test(output)) {
951
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('output', `nonempty hexadecimal bytes up to ${validateRawTxResult_1.MAX_RAW_TRANSACTION_BYTES} bytes`);
952
+ }
814
953
  let b = (0, utilityHelpers_noBuffer_1.asArray)(output);
815
954
  if (outputFormat == null) {
816
955
  if (b.length === 32)
@@ -820,8 +959,12 @@ function validateScriptHash(output, outputFormat) {
820
959
  }
821
960
  switch (outputFormat) {
822
961
  case 'hashBE':
962
+ if (b.length !== 32)
963
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('output', 'exactly 32 bytes for hashBE');
823
964
  break;
824
965
  case 'hashLE':
966
+ if (b.length !== 32)
967
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('output', 'exactly 32 bytes for hashLE');
825
968
  b = b.reverse();
826
969
  break;
827
970
  case 'script':
@@ -841,7 +984,7 @@ function validateScriptHash(output, outputFormat) {
841
984
  * @publicbody
842
985
  */
843
986
  function toBinaryBaseBlockHeader(header) {
844
- const writer = new sdk_1.Utils.Writer();
987
+ const writer = new utils_1.Writer();
845
988
  writer.writeUInt32LE(header.version);
846
989
  writer.writeReverse((0, utilityHelpers_noBuffer_1.asArray)(header.previousHash));
847
990
  writer.writeReverse((0, utilityHelpers_noBuffer_1.asArray)(header.merkleRoot));