@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
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeTxid = normalizeTxid;
4
+ exports.snapshotMerklePathResult = snapshotMerklePathResult;
5
+ exports.copyMerklePath = copyMerklePath;
6
+ exports.copyValidatedBlockHeader = copyValidatedBlockHeader;
7
+ exports.validateMerklePathResult = validateMerklePathResult;
8
+ exports.authenticateMerklePathResult = authenticateMerklePathResult;
9
+ const sdk_1 = require("@bsv/sdk");
10
+ const WERR_errors_1 = require("../sdk/WERR_errors");
11
+ const WalletError_1 = require("../sdk/WalletError");
12
+ const blockHeaderUtilities_1 = require("./chaintracker/chaintracks/util/blockHeaderUtilities");
13
+ const HEX_32_BYTES = /^[0-9a-fA-F]{64}$/;
14
+ const MAX_BLOCK_HEIGHT = 0x7fffffff;
15
+ const MAX_PATH_LEVELS = 32;
16
+ const MAX_PATH_LEAVES = 4096;
17
+ const MAX_LEAF_OFFSET = 0x7fffffff;
18
+ const MAX_PROOF_CANDIDATES = 8;
19
+ const MAX_PROOF_NOTES = 64;
20
+ const MAX_NOTE_PROPERTIES = 32;
21
+ function invalid(name, requirement) {
22
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER(name, requirement);
23
+ }
24
+ function normalizeTxid(value, name = 'txid') {
25
+ if (typeof value !== 'string' || !HEX_32_BYTES.test(value)) {
26
+ invalid(name, 'exactly 32 hexadecimal bytes');
27
+ }
28
+ return value.toLowerCase();
29
+ }
30
+ function requirePlainDataRecord(value, name) {
31
+ if (value == null || typeof value !== 'object' || Array.isArray(value)) {
32
+ invalid(name, 'an accessor-free data object');
33
+ }
34
+ const prototype = Object.getPrototypeOf(value);
35
+ if (prototype !== Object.prototype && prototype !== null && prototype !== sdk_1.MerklePath.prototype) {
36
+ invalid(name, 'an accessor-free data object');
37
+ }
38
+ if (Object.getOwnPropertySymbols(value).length !== 0) {
39
+ invalid(name, 'an accessor-free data object without symbol properties');
40
+ }
41
+ const descriptors = Object.getOwnPropertyDescriptors(value);
42
+ if (Object.values(descriptors).some(descriptor => descriptor.get != null || descriptor.set != null)) {
43
+ invalid(name, 'accessor-free data properties');
44
+ }
45
+ return descriptors;
46
+ }
47
+ function ownValue(descriptors, property, name) {
48
+ const descriptor = descriptors[property];
49
+ if (descriptor == null || !('value' in descriptor))
50
+ invalid(name, `an own ${property} data property`);
51
+ return descriptor.value;
52
+ }
53
+ function optionalOwnValue(descriptors, property) {
54
+ const descriptor = descriptors[property];
55
+ return descriptor != null && 'value' in descriptor ? descriptor.value : undefined;
56
+ }
57
+ function requireDenseArray(value, name, maximum) {
58
+ if (!Array.isArray(value) || value.length > maximum)
59
+ invalid(name, `a dense array of at most ${maximum} items`);
60
+ const descriptors = Object.getOwnPropertyDescriptors(value);
61
+ if (Object.getOwnPropertySymbols(value).length !== 0)
62
+ invalid(name, 'an array without symbol properties');
63
+ if (Object.values(descriptors).some(descriptor => descriptor.get != null || descriptor.set != null)) {
64
+ invalid(name, 'an accessor-free array');
65
+ }
66
+ const expectedKeys = new Set(['length', ...Array.from({ length: value.length }, (_, index) => String(index))]);
67
+ if (Object.keys(descriptors).some(key => !expectedKeys.has(key)) ||
68
+ expectedKeys.size !== Object.keys(descriptors).length) {
69
+ invalid(name, 'a dense array without extra properties');
70
+ }
71
+ return value;
72
+ }
73
+ function requireInteger(value, name, maximum) {
74
+ if (!Number.isSafeInteger(value) || value < 0 || value > maximum) {
75
+ invalid(name, `an integer from 0 through ${maximum}`);
76
+ }
77
+ return value;
78
+ }
79
+ function boundedText(value, name, maximum) {
80
+ if (typeof value !== 'string' || value.length > maximum || /\p{Cc}/u.test(value)) {
81
+ invalid(name, `at most ${maximum} characters without control characters`);
82
+ }
83
+ return value;
84
+ }
85
+ function copyProofNotes(value) {
86
+ if (value === undefined)
87
+ return undefined;
88
+ const notes = requireDenseArray(value, 'getMerklePath result.notes', MAX_PROOF_NOTES);
89
+ return notes.map((noteValue, index) => {
90
+ const name = `getMerklePath result.notes[${index}]`;
91
+ const descriptors = requirePlainDataRecord(noteValue, name);
92
+ const keys = Object.keys(descriptors);
93
+ if (keys.length > MAX_NOTE_PROPERTIES || keys.some(key => !/^[A-Za-z][A-Za-z0-9_]{0,63}$/.test(key))) {
94
+ invalid(name, `at most ${MAX_NOTE_PROPERTIES} bounded data properties`);
95
+ }
96
+ const note = {};
97
+ for (const key of keys) {
98
+ const value = ownValue(descriptors, key, name);
99
+ if (value === undefined || typeof value === 'boolean') {
100
+ note[key] = value;
101
+ }
102
+ else if (typeof value === 'number' && Number.isFinite(value) && Number.isSafeInteger(value)) {
103
+ note[key] = value;
104
+ }
105
+ else if (typeof value === 'string') {
106
+ note[key] = boundedText(value, `${name}.${key}`, key === 'what' || key === 'when' ? 128 : 512);
107
+ }
108
+ else {
109
+ invalid(`${name}.${key}`, 'a bounded string, safe integer, boolean, or undefined');
110
+ }
111
+ }
112
+ if (typeof note.what !== 'string' || note.what.length === 0)
113
+ invalid(`${name}.what`, 'a nonempty bounded string');
114
+ return note;
115
+ });
116
+ }
117
+ /**
118
+ * Snapshot the provider envelope before inspecting proof availability or
119
+ * diagnostics. The optional legacy array mode is bounded for older custom
120
+ * WalletServices implementations; ordinary providers return one path.
121
+ */
122
+ function snapshotMerklePathResult(value, allowLegacyArray = false, providerName) {
123
+ const descriptors = requirePlainDataRecord(value, 'getMerklePath result');
124
+ const allowed = new Set(['name', 'merklePath', 'header', 'error', 'notes']);
125
+ if (Object.keys(descriptors).some(key => !allowed.has(key))) {
126
+ invalid('getMerklePath result', 'only name, merklePath, header, error, and notes data properties');
127
+ }
128
+ const nameValue = providerName ?? optionalOwnValue(descriptors, 'name');
129
+ const name = nameValue === undefined ? undefined : boundedText(nameValue, 'getMerklePath result.name', 128);
130
+ const merklePathValue = optionalOwnValue(descriptors, 'merklePath');
131
+ let merklePath;
132
+ if (merklePathValue !== undefined) {
133
+ if (Array.isArray(merklePathValue)) {
134
+ if (!allowLegacyArray)
135
+ invalid('getMerklePath result.merklePath', 'one MerklePath object');
136
+ merklePath = requireDenseArray(merklePathValue, 'getMerklePath result.merklePath', MAX_PROOF_CANDIDATES);
137
+ }
138
+ else {
139
+ merklePath = merklePathValue;
140
+ }
141
+ }
142
+ const header = optionalOwnValue(descriptors, 'header');
143
+ const errorValue = optionalOwnValue(descriptors, 'error');
144
+ if (errorValue !== undefined && !(errorValue instanceof Error)) {
145
+ invalid('getMerklePath result.error', 'a WalletError or absent');
146
+ }
147
+ const error = errorValue === undefined ? undefined : WalletError_1.WalletError.fromUnknown(errorValue);
148
+ const notes = copyProofNotes(optionalOwnValue(descriptors, 'notes'));
149
+ return {
150
+ ...(name !== undefined ? { name } : {}),
151
+ ...(merklePath !== undefined ? { merklePath } : {}),
152
+ ...(header !== undefined ? { header } : {}),
153
+ ...(error !== undefined ? { error } : {}),
154
+ ...(notes !== undefined ? { notes } : {})
155
+ };
156
+ }
157
+ function copyMerklePath(txid, value) {
158
+ const descriptors = requirePlainDataRecord(value, 'merklePath');
159
+ const blockHeight = requireInteger(ownValue(descriptors, 'blockHeight', 'merklePath'), 'merklePath.blockHeight', MAX_BLOCK_HEIGHT);
160
+ const sourcePath = requireDenseArray(ownValue(descriptors, 'path', 'merklePath'), 'merklePath.path', MAX_PATH_LEVELS);
161
+ if (sourcePath.length === 0)
162
+ invalid('merklePath.path', 'at least one level');
163
+ let leafCount = 0;
164
+ const path = sourcePath.map((sourceLevel, levelIndex) => {
165
+ const level = requireDenseArray(sourceLevel, `merklePath.path[${levelIndex}]`, MAX_PATH_LEAVES);
166
+ leafCount += level.length;
167
+ if (leafCount > MAX_PATH_LEAVES)
168
+ invalid('merklePath.path', `at most ${MAX_PATH_LEAVES} total leaves`);
169
+ return level.map((sourceLeaf, leafIndex) => {
170
+ const name = `merklePath.path[${levelIndex}][${leafIndex}]`;
171
+ const leafDescriptors = requirePlainDataRecord(sourceLeaf, name);
172
+ const keys = Object.keys(leafDescriptors);
173
+ if (keys.length > 4 || keys.some(key => !['offset', 'hash', 'txid', 'duplicate'].includes(key))) {
174
+ invalid(name, 'only offset, hash, txid, and duplicate data properties');
175
+ }
176
+ const offset = requireInteger(ownValue(leafDescriptors, 'offset', name), `${name}.offset`, MAX_LEAF_OFFSET);
177
+ const hashValue = leafDescriptors.hash?.value;
178
+ const txidValue = leafDescriptors.txid?.value;
179
+ const duplicateValue = leafDescriptors.duplicate?.value;
180
+ if (txidValue !== undefined && txidValue !== true)
181
+ invalid(`${name}.txid`, 'true or absent');
182
+ if (duplicateValue !== undefined && duplicateValue !== true)
183
+ invalid(`${name}.duplicate`, 'true or absent');
184
+ if (duplicateValue === true) {
185
+ if (hashValue !== undefined || txidValue !== undefined) {
186
+ invalid(name, 'a duplicate marker without hash or txid properties');
187
+ }
188
+ return { offset, duplicate: true };
189
+ }
190
+ const hash = normalizeTxid(hashValue, `${name}.hash`);
191
+ return txidValue === true ? { offset, hash, txid: true } : { offset, hash };
192
+ });
193
+ });
194
+ let merklePath;
195
+ try {
196
+ merklePath = new sdk_1.MerklePath(blockHeight, path);
197
+ }
198
+ catch {
199
+ invalid('merklePath', 'a structurally consistent bounded Merkle path');
200
+ }
201
+ // A compound proof may mark several transaction leaves, while older proof
202
+ // providers may omit the optional `txid` marker entirely. Membership is
203
+ // bound by the requested hash and the root computation, not by that marker.
204
+ const leaf = merklePath.path[0].find(candidate => candidate.hash === txid);
205
+ if (leaf == null)
206
+ invalid('merklePath', 'a transaction leaf bound to the requested txid');
207
+ let root;
208
+ try {
209
+ root = normalizeTxid(merklePath.computeRoot(txid), 'merklePath root');
210
+ }
211
+ catch {
212
+ invalid('merklePath', 'a path that computes the requested transaction root');
213
+ }
214
+ return { merklePath, root, index: leaf.offset };
215
+ }
216
+ function copyValidatedBlockHeader(value, requireProofOfWork = false, requireHeaderFormat = true) {
217
+ const descriptors = requirePlainDataRecord(value, 'header');
218
+ const header = {
219
+ version: ownValue(descriptors, 'version', 'header'),
220
+ previousHash: ownValue(descriptors, 'previousHash', 'header'),
221
+ merkleRoot: ownValue(descriptors, 'merkleRoot', 'header'),
222
+ time: ownValue(descriptors, 'time', 'header'),
223
+ bits: ownValue(descriptors, 'bits', 'header'),
224
+ nonce: ownValue(descriptors, 'nonce', 'header'),
225
+ height: ownValue(descriptors, 'height', 'header'),
226
+ hash: ownValue(descriptors, 'hash', 'header')
227
+ };
228
+ if (!Number.isSafeInteger(header.height) || header.height < 0 || header.height > MAX_BLOCK_HEIGHT) {
229
+ invalid('header.height', `an integer from 0 through ${MAX_BLOCK_HEIGHT}`);
230
+ }
231
+ const merkleRoot = normalizeTxid(header.merkleRoot, 'header.merkleRoot');
232
+ const hash = normalizeTxid(header.hash, 'header.hash');
233
+ if (requireHeaderFormat) {
234
+ try {
235
+ (0, blockHeaderUtilities_1.validateHeaderFormat)(header);
236
+ if (requireProofOfWork)
237
+ (0, blockHeaderUtilities_1.validateHeaderProofOfWork)(header);
238
+ }
239
+ catch {
240
+ invalid('header', requireProofOfWork ? 'a canonical proof-of-work-valid block header' : 'a canonical block header');
241
+ }
242
+ }
243
+ return {
244
+ ...header,
245
+ previousHash: typeof header.previousHash === 'string' ? header.previousHash.toLowerCase() : header.previousHash,
246
+ merkleRoot,
247
+ hash
248
+ };
249
+ }
250
+ function validateMerklePathResult(requestedTxid, result, requireProofOfWork = false, requireHeaderFormat = true) {
251
+ const txid = normalizeTxid(requestedTxid);
252
+ const descriptors = requirePlainDataRecord(result, 'getMerklePath result');
253
+ const merklePathValue = ownValue(descriptors, 'merklePath', 'getMerklePath result');
254
+ const headerValue = ownValue(descriptors, 'header', 'getMerklePath result');
255
+ const proof = copyMerklePath(txid, merklePathValue);
256
+ const header = copyValidatedBlockHeader(headerValue, requireProofOfWork, requireHeaderFormat);
257
+ if (proof.merklePath.blockHeight !== header.height) {
258
+ invalid('merklePath.blockHeight', 'the authenticated header height');
259
+ }
260
+ if (proof.root !== header.merkleRoot) {
261
+ invalid('merklePath root', 'the authenticated header Merkle root');
262
+ }
263
+ return { ...proof, header };
264
+ }
265
+ async function authenticateMerklePathResult(requestedTxid, result, validator, requireProofOfWork = false, requireHeaderFormat = true) {
266
+ const validated = validateMerklePathResult(requestedTxid, result, requireProofOfWork, requireHeaderFormat);
267
+ if ((await validator.isValidRootForHeight(validated.root, validated.header.height)) !== true) {
268
+ invalid('merklePath root', 'a root authenticated by the configured chain tracker at the proof height');
269
+ }
270
+ return validated;
271
+ }
272
+ //# sourceMappingURL=validateMerklePathResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateMerklePathResult.js","sourceRoot":"","sources":["../../../src/services/validateMerklePathResult.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Beef } from '@bsv/sdk';
2
+ import { PostBeefResult, PostTxResultForTxid } from '../sdk/WalletServices.interfaces';
3
+ export declare const MAX_POST_BEEF_BYTES: number;
4
+ export declare const MAX_POST_BEEF_TXIDS = 1000;
5
+ export interface ValidatedPostBeefRequest {
6
+ beefBytes: number[];
7
+ txids: string[];
8
+ }
9
+ export declare function normalizePostRawHex(value: unknown, maximumBytes: number, name?: string): string;
10
+ export declare function normalizePostTxids(value: unknown, name?: string, allowEmpty?: boolean): string[];
11
+ export declare function validatePostBeefResult(value: unknown, expectedTxids: string[], configuredProviderName: string, allowInternalTimeoutNote?: boolean): PostBeefResult;
12
+ export declare function validatePostTxResult(value: unknown, expectedTxid: string, configuredProviderName: string): PostTxResultForTxid;
13
+ export declare function validatePostTxResultOrServiceError(value: unknown, expectedTxid: string, configuredProviderName: string): PostTxResultForTxid;
14
+ export declare function validatePostBeefResultOrServiceError(value: unknown, expectedTxids: string[], configuredProviderName: string): PostBeefResult;
15
+ export declare function snapshotPostBeefRequest(beef: Beef, txids: string[]): ValidatedPostBeefRequest;
16
+ export declare function makePostBeefServiceError(providerName: string, txids: string[], what: 'postBeefServiceError' | 'postBeefServiceTimeout', timeoutMs?: number): PostBeefResult;
17
+ //# sourceMappingURL=validatePostBeefResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validatePostBeefResult.d.ts","sourceRoot":"","sources":["../../../src/services/validatePostBeefResult.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAE/B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAOtF,eAAO,MAAM,mBAAmB,QAAmB,CAAA;AACnD,eAAO,MAAM,mBAAmB,OAAiC,CAAA;AAgBjE,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,SAAU,GAAG,MAAM,CAYhG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,SAAU,EAAE,UAAU,UAAQ,GAAG,MAAM,EAAE,CAQ/F;AA+LD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,MAAM,EAAE,EACvB,sBAAsB,EAAE,MAAM,EAC9B,wBAAwB,UAAQ,GAC/B,cAAc,CAkChB;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,MAAM,EACpB,sBAAsB,EAAE,MAAM,GAC7B,mBAAmB,CAarB;AAED,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,MAAM,EACpB,sBAAsB,EAAE,MAAM,GAC7B,mBAAmB,CAMrB;AAED,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,MAAM,EAAE,EACvB,sBAAsB,EAAE,MAAM,GAC7B,cAAc,CAMhB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,wBAAwB,CAe7F;AAED,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,sBAAsB,GAAG,wBAAwB,EACvD,SAAS,CAAC,EAAE,MAAM,GACjB,cAAc,CAchB"}
@@ -0,0 +1,334 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_POST_BEEF_TXIDS = exports.MAX_POST_BEEF_BYTES = void 0;
4
+ exports.normalizePostRawHex = normalizePostRawHex;
5
+ exports.normalizePostTxids = normalizePostTxids;
6
+ exports.validatePostBeefResult = validatePostBeefResult;
7
+ exports.validatePostTxResult = validatePostTxResult;
8
+ exports.validatePostTxResultOrServiceError = validatePostTxResultOrServiceError;
9
+ exports.validatePostBeefResultOrServiceError = validatePostBeefResultOrServiceError;
10
+ exports.snapshotPostBeefRequest = snapshotPostBeefRequest;
11
+ exports.makePostBeefServiceError = makePostBeefServiceError;
12
+ const validationHelpers_1 = require("@bsv/sdk/wallet/validationHelpers");
13
+ const sdk_1 = require("@bsv/sdk");
14
+ const utils_1 = require("@bsv/sdk/primitives/utils");
15
+ const WERR_errors_1 = require("../sdk/WERR_errors");
16
+ const WalletError_1 = require("../sdk/WalletError");
17
+ const utilityHelpers_1 = require("../utility/utilityHelpers");
18
+ const validateMerklePathResult_1 = require("./validateMerklePathResult");
19
+ exports.MAX_POST_BEEF_BYTES = 64 * 1024 * 1024;
20
+ exports.MAX_POST_BEEF_TXIDS = validationHelpers_1.MAXIMUM_SEND_WITH_TRANSACTIONS;
21
+ const MAX_COMPETING_TXIDS = 24;
22
+ const MAX_TOTAL_NOTES = 128;
23
+ const MAX_NOTE_PROPERTIES = 24;
24
+ const MAX_DATA_NODES = 512;
25
+ const MAX_DATA_BYTES = 64 * 1024;
26
+ const MAX_BLOCK_HEIGHT = 0x7fffffff;
27
+ const unsafeKeys = new Set(['__proto__', 'constructor', 'prototype']);
28
+ const omittedDiagnosticKeys = new Set(['rawTx', 'raws', 'beef', 'url', 'txids']);
29
+ function normalizePostRawHex(value, maximumBytes, name = 'rawTx') {
30
+ if (!Number.isSafeInteger(maximumBytes) || maximumBytes < 1)
31
+ invalid('maximumBytes', 'a positive safe integer');
32
+ if (typeof value !== 'string' ||
33
+ value.length === 0 ||
34
+ value.length > maximumBytes * 2 ||
35
+ value.length % 2 !== 0 ||
36
+ !/^[0-9a-fA-F]+$/.test(value)) {
37
+ invalid(name, `nonempty hexadecimal data no larger than ${maximumBytes} bytes`);
38
+ }
39
+ return value.toLowerCase();
40
+ }
41
+ function normalizePostTxids(value, name = 'txids', allowEmpty = false) {
42
+ const txids = denseArray(value, name, exports.MAX_POST_BEEF_TXIDS).map((txid, index) => (0, validateMerklePathResult_1.normalizeTxid)(txid, `${name}[${index}]`));
43
+ if ((!allowEmpty && txids.length === 0) || new Set(txids).size !== txids.length) {
44
+ invalid(name, `${allowEmpty ? '0' : '1'} through ${exports.MAX_POST_BEEF_TXIDS} unique transaction IDs`);
45
+ }
46
+ return txids;
47
+ }
48
+ function invalid(name, requirement) {
49
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER(name, requirement);
50
+ }
51
+ function plainDescriptors(value, name) {
52
+ if (value == null || typeof value !== 'object' || Array.isArray(value)) {
53
+ invalid(name, 'an accessor-free plain data object');
54
+ }
55
+ const prototype = Object.getPrototypeOf(value);
56
+ if (prototype !== Object.prototype && prototype !== null)
57
+ invalid(name, 'an accessor-free plain data object');
58
+ const result = Object.getOwnPropertyDescriptors(value);
59
+ if (Object.getOwnPropertySymbols(value).length !== 0 ||
60
+ Object.values(result).some(property => property.get != null || property.set != null)) {
61
+ invalid(name, 'accessor-free data properties without symbols');
62
+ }
63
+ return result;
64
+ }
65
+ function read(source, property) {
66
+ return source[property]?.value;
67
+ }
68
+ function denseArray(value, name, maximum) {
69
+ if (!Array.isArray(value) || value.length > maximum)
70
+ invalid(name, `a dense array of at most ${maximum} items`);
71
+ const properties = Object.getOwnPropertyDescriptors(value);
72
+ const expected = new Set(['length', ...Array.from({ length: value.length }, (_, index) => String(index))]);
73
+ if (Object.getOwnPropertySymbols(value).length !== 0 ||
74
+ Object.keys(properties).length !== expected.size ||
75
+ Object.keys(properties).some(key => !expected.has(key)) ||
76
+ Object.values(properties).some(property => property.get != null || property.set != null)) {
77
+ invalid(name, 'an accessor-free dense array without extra properties');
78
+ }
79
+ return Array.from({ length: value.length }, (_, index) => properties[String(index)].value);
80
+ }
81
+ function boundedText(value, name, maximum) {
82
+ if (typeof value !== 'string' || value.length === 0 || (0, utils_1.toArray)(value, 'utf8').length > maximum) {
83
+ invalid(name, `1 through ${maximum} UTF-8 bytes`);
84
+ }
85
+ if (/\p{Cc}/u.test(value))
86
+ invalid(name, 'text without control characters');
87
+ return value;
88
+ }
89
+ function copyJsonValue(value, name, budget, depth = 0) {
90
+ if (budget.nodes-- <= 0 || depth > 4)
91
+ invalid(name, 'bounded JSON-like diagnostic data');
92
+ if (value === null || typeof value === 'boolean')
93
+ return value;
94
+ if (typeof value === 'number') {
95
+ if (!Number.isFinite(value) || Math.abs(value) > Number.MAX_SAFE_INTEGER)
96
+ invalid(name, 'a finite safe number');
97
+ return value;
98
+ }
99
+ if (typeof value === 'string') {
100
+ const bytes = (0, utils_1.toArray)(value, 'utf8').length;
101
+ budget.bytes -= bytes;
102
+ if (bytes > 4096 || budget.bytes < 0)
103
+ invalid(name, 'bounded diagnostic strings');
104
+ return value.replace(/\p{Cc}/gu, ' ');
105
+ }
106
+ if (Array.isArray(value)) {
107
+ return denseArray(value, name, 64).map((item, index) => copyJsonValue(item, `${name}[${index}]`, budget, depth + 1));
108
+ }
109
+ const source = plainDescriptors(value, name);
110
+ const keys = Object.keys(source);
111
+ if (keys.length > 32 || keys.some(key => unsafeKeys.has(key)))
112
+ invalid(name, 'at most 32 safe data properties');
113
+ const result = {};
114
+ for (const key of keys)
115
+ result[key] = copyJsonValue(read(source, key), `${name}.${key}`, budget, depth + 1);
116
+ return result;
117
+ }
118
+ function copyNotes(value, name, budget, allowInternalTimeoutNote) {
119
+ if (value === undefined)
120
+ return [];
121
+ const notes = denseArray(value, name, MAX_TOTAL_NOTES);
122
+ if (notes.length > budget.notes)
123
+ invalid(name, `at most ${MAX_TOTAL_NOTES} notes across one provider result`);
124
+ budget.notes -= notes.length;
125
+ return notes.map((candidate, index) => {
126
+ const noteName = `${name}[${index}]`;
127
+ const source = plainDescriptors(candidate, noteName);
128
+ const keys = Object.keys(source);
129
+ if (keys.length > MAX_NOTE_PROPERTIES || keys.some(key => unsafeKeys.has(key))) {
130
+ invalid(noteName, `at most ${MAX_NOTE_PROPERTIES} safe scalar properties`);
131
+ }
132
+ const what = boundedText(read(source, 'what'), `${noteName}.what`, 128);
133
+ if (what === 'postBeefServiceTimeout' && !allowInternalTimeoutNote) {
134
+ invalid(`${noteName}.what`, 'a provider diagnostic rather than a reserved local timeout marker');
135
+ }
136
+ const result = { what };
137
+ for (const key of keys) {
138
+ if (key === 'what' || omittedDiagnosticKeys.has(key))
139
+ continue;
140
+ const item = read(source, key);
141
+ if (item === undefined)
142
+ continue;
143
+ if (typeof item === 'boolean')
144
+ result[key] = item;
145
+ else if (typeof item === 'number' && Number.isFinite(item) && Math.abs(item) <= Number.MAX_SAFE_INTEGER) {
146
+ result[key] = item;
147
+ }
148
+ else if (typeof item === 'string') {
149
+ if (item.length > 0)
150
+ result[key] = boundedText(item, `${noteName}.${key}`, key === 'when' ? 64 : 1024);
151
+ }
152
+ else {
153
+ invalid(`${noteName}.${key}`, 'a bounded string, finite number, boolean, or absent');
154
+ }
155
+ }
156
+ return result;
157
+ });
158
+ }
159
+ function optionalBoolean(value, name) {
160
+ if (value === undefined)
161
+ return undefined;
162
+ if (typeof value !== 'boolean')
163
+ invalid(name, 'a boolean or absent');
164
+ return value;
165
+ }
166
+ function copyTxidResult(value, index, expected, budget, allowInternalTimeoutNote) {
167
+ const name = `postBeef result.txidResults[${index}]`;
168
+ const source = plainDescriptors(value, name);
169
+ const allowed = new Set([
170
+ 'txid',
171
+ 'status',
172
+ 'alreadyKnown',
173
+ 'doubleSpend',
174
+ 'blockHash',
175
+ 'blockHeight',
176
+ 'merklePath',
177
+ 'competingTxs',
178
+ 'data',
179
+ 'notes',
180
+ 'serviceError'
181
+ ]);
182
+ if (Object.keys(source).some(key => !allowed.has(key)))
183
+ invalid(name, 'only documented transaction-result fields');
184
+ const txid = (0, validateMerklePathResult_1.normalizeTxid)(read(source, 'txid'), `${name}.txid`);
185
+ if (!expected.has(txid))
186
+ invalid(`${name}.txid`, 'one of the exact requested transaction IDs');
187
+ const status = read(source, 'status');
188
+ if (status !== 'success' && status !== 'error')
189
+ invalid(`${name}.status`, "'success' or 'error'");
190
+ const alreadyKnown = optionalBoolean(read(source, 'alreadyKnown'), `${name}.alreadyKnown`);
191
+ const doubleSpend = optionalBoolean(read(source, 'doubleSpend'), `${name}.doubleSpend`);
192
+ const serviceError = optionalBoolean(read(source, 'serviceError'), `${name}.serviceError`);
193
+ if (status === 'success' && (doubleSpend === true || serviceError === true)) {
194
+ invalid(name, 'successful results without double-spend or service-error flags');
195
+ }
196
+ if (status === 'error' && alreadyKnown === true)
197
+ invalid(name, 'already-known results classified as success');
198
+ if (doubleSpend === true && serviceError === true)
199
+ invalid(name, 'a single error class');
200
+ let competingTxs;
201
+ const rawCompeting = read(source, 'competingTxs');
202
+ if (rawCompeting !== undefined) {
203
+ if (doubleSpend !== true)
204
+ invalid(`${name}.competingTxs`, 'present only for a double-spend result');
205
+ competingTxs = denseArray(rawCompeting, `${name}.competingTxs`, MAX_COMPETING_TXIDS).map((item, itemIndex) => (0, validateMerklePathResult_1.normalizeTxid)(item, `${name}.competingTxs[${itemIndex}]`));
206
+ if (competingTxs.includes(txid) || new Set(competingTxs).size !== competingTxs.length) {
207
+ invalid(`${name}.competingTxs`, 'unique competing IDs that exclude the submitted transaction');
208
+ }
209
+ }
210
+ const result = { txid, status };
211
+ if (alreadyKnown !== undefined)
212
+ result.alreadyKnown = alreadyKnown;
213
+ if (doubleSpend !== undefined)
214
+ result.doubleSpend = doubleSpend;
215
+ if (serviceError !== undefined)
216
+ result.serviceError = serviceError;
217
+ if (competingTxs !== undefined)
218
+ result.competingTxs = competingTxs;
219
+ const blockHash = read(source, 'blockHash');
220
+ if (blockHash !== undefined)
221
+ result.blockHash = (0, validateMerklePathResult_1.normalizeTxid)(blockHash, `${name}.blockHash`);
222
+ const blockHeight = read(source, 'blockHeight');
223
+ if (blockHeight !== undefined) {
224
+ if (!Number.isSafeInteger(blockHeight) ||
225
+ blockHeight < 0 ||
226
+ blockHeight > MAX_BLOCK_HEIGHT) {
227
+ invalid(`${name}.blockHeight`, `an integer from 0 through ${MAX_BLOCK_HEIGHT}, or absent`);
228
+ }
229
+ result.blockHeight = blockHeight;
230
+ }
231
+ const data = read(source, 'data');
232
+ if (data !== undefined)
233
+ result.data = copyJsonValue(data, `${name}.data`, budget);
234
+ const notes = copyNotes(read(source, 'notes'), `${name}.notes`, budget, allowInternalTimeoutNote);
235
+ if (notes.length > 0)
236
+ result.notes = notes;
237
+ return result;
238
+ }
239
+ function validatePostBeefResult(value, expectedTxids, configuredProviderName, allowInternalTimeoutNote = false) {
240
+ const expected = new Set(expectedTxids.map((txid, index) => (0, validateMerklePathResult_1.normalizeTxid)(txid, `txids[${index}]`)));
241
+ if (expected.size !== expectedTxids.length || expected.size === 0 || expected.size > exports.MAX_POST_BEEF_TXIDS) {
242
+ invalid('txids', `1 through ${exports.MAX_POST_BEEF_TXIDS} unique transaction IDs`);
243
+ }
244
+ const source = plainDescriptors(value, 'postBeef result');
245
+ if (Object.keys(source).some(key => !['name', 'status', 'error', 'txidResults', 'data', 'notes'].includes(key))) {
246
+ invalid('postBeef result', 'only documented aggregate-result fields');
247
+ }
248
+ const name = boundedText(configuredProviderName, 'postBeef provider name', 128);
249
+ const status = read(source, 'status');
250
+ if (status !== 'success' && status !== 'error')
251
+ invalid('postBeef result.status', "'success' or 'error'");
252
+ const budget = { notes: MAX_TOTAL_NOTES, nodes: MAX_DATA_NODES, bytes: MAX_DATA_BYTES };
253
+ const txidResults = denseArray(read(source, 'txidResults'), 'postBeef result.txidResults', expected.size).map((candidate, index) => copyTxidResult(candidate, index, expected, budget, allowInternalTimeoutNote));
254
+ if (txidResults.length !== expected.size || new Set(txidResults.map(result => result.txid)).size !== expected.size) {
255
+ invalid('postBeef result.txidResults', 'exactly one result for every requested transaction ID');
256
+ }
257
+ const allSuccessful = txidResults.every(result => result.status === 'success');
258
+ if ((status === 'success') !== allSuccessful) {
259
+ invalid('postBeef result.status', 'success exactly when every requested transaction result succeeds');
260
+ }
261
+ const result = { name, status, txidResults };
262
+ const error = read(source, 'error');
263
+ if (error !== undefined) {
264
+ if (status !== 'error' || !(error instanceof Error))
265
+ invalid('postBeef result.error', 'an Error on an error result');
266
+ result.error = WalletError_1.WalletError.fromUnknown(error);
267
+ }
268
+ const data = read(source, 'data');
269
+ if (data !== undefined)
270
+ result.data = copyJsonValue(data, 'postBeef result.data', budget);
271
+ const notes = copyNotes(read(source, 'notes'), 'postBeef result.notes', budget, allowInternalTimeoutNote);
272
+ if (notes.length > 0)
273
+ result.notes = notes;
274
+ return result;
275
+ }
276
+ function validatePostTxResult(value, expectedTxid, configuredProviderName) {
277
+ const source = plainDescriptors(value, 'post transaction result');
278
+ const status = read(source, 'status');
279
+ const aggregate = validatePostBeefResult({
280
+ name: configuredProviderName,
281
+ status,
282
+ txidResults: [value]
283
+ }, [expectedTxid], configuredProviderName);
284
+ return aggregate.txidResults[0];
285
+ }
286
+ function validatePostTxResultOrServiceError(value, expectedTxid, configuredProviderName) {
287
+ try {
288
+ return validatePostTxResult(value, expectedTxid, configuredProviderName);
289
+ }
290
+ catch {
291
+ return makePostBeefServiceError(configuredProviderName, [expectedTxid], 'postBeefServiceError').txidResults[0];
292
+ }
293
+ }
294
+ function validatePostBeefResultOrServiceError(value, expectedTxids, configuredProviderName) {
295
+ try {
296
+ return validatePostBeefResult(value, expectedTxids, configuredProviderName);
297
+ }
298
+ catch {
299
+ return makePostBeefServiceError(configuredProviderName, expectedTxids, 'postBeefServiceError');
300
+ }
301
+ }
302
+ function snapshotPostBeefRequest(beef, txids) {
303
+ if (!(beef instanceof sdk_1.Beef))
304
+ invalid('beef', 'a BEEF instance');
305
+ const normalizedTxids = normalizePostTxids(txids);
306
+ const beefBytes = Array.from(beef.toBinary());
307
+ if (beefBytes.length === 0 || beefBytes.length > exports.MAX_POST_BEEF_BYTES) {
308
+ invalid('beef', `a serialized BEEF no larger than ${exports.MAX_POST_BEEF_BYTES} bytes`);
309
+ }
310
+ const owned = sdk_1.Beef.fromBinaryStrict(beefBytes);
311
+ for (const [index, txid] of normalizedTxids.entries()) {
312
+ const rawTx = owned.findTxid(txid)?.rawTx;
313
+ if (rawTx == null || (0, utils_1.toHex)((0, utilityHelpers_1.doubleSha256BE)(Array.from(rawTx))) !== txid) {
314
+ invalid(`txids[${index}]`, 'a raw transaction with the exact ID in the submitted BEEF');
315
+ }
316
+ }
317
+ return { beefBytes, txids: normalizedTxids };
318
+ }
319
+ function makePostBeefServiceError(providerName, txids, what, timeoutMs) {
320
+ const candidate = {
321
+ name: providerName,
322
+ status: 'error',
323
+ txidResults: txids.map(txid => ({ txid, status: 'error', serviceError: true })),
324
+ notes: [
325
+ {
326
+ when: new Date().toISOString(),
327
+ what,
328
+ ...(timeoutMs === undefined ? {} : { timeoutMs })
329
+ }
330
+ ]
331
+ };
332
+ return validatePostBeefResult(candidate, txids, providerName, true);
333
+ }
334
+ //# sourceMappingURL=validatePostBeefResult.js.map