@bsv/wallet-toolbox 2.4.4 → 2.4.20

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 (632) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/LICENSE.txt +58 -0
  3. package/README.md +98 -36
  4. package/docs/action-batch-planning.md +117 -14
  5. package/docs/client.md +1535 -4125
  6. package/docs/monitor.md +34 -137
  7. package/docs/services.md +296 -602
  8. package/docs/setup.md +48 -28
  9. package/docs/storage.md +358 -1901
  10. package/docs/wallet.md +10316 -5665
  11. package/out/src/CWIStyleWalletManager.d.ts +11 -2
  12. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  13. package/out/src/CWIStyleWalletManager.js +118 -87
  14. package/out/src/CWIStyleWalletManager.js.map +1 -1
  15. package/out/src/Setup.d.ts +7 -0
  16. package/out/src/Setup.d.ts.map +1 -1
  17. package/out/src/Setup.js +10 -11
  18. package/out/src/Setup.js.map +1 -1
  19. package/out/src/SetupClient.d.ts +2 -0
  20. package/out/src/SetupClient.d.ts.map +1 -1
  21. package/out/src/SetupClient.js +8 -9
  22. package/out/src/SetupClient.js.map +1 -1
  23. package/out/src/SetupWallet.d.ts +6 -0
  24. package/out/src/SetupWallet.d.ts.map +1 -1
  25. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  26. package/out/src/ShamirWalletManager.js.map +1 -1
  27. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  28. package/out/src/SimpleWalletManager.js +2 -5
  29. package/out/src/SimpleWalletManager.js.map +1 -1
  30. package/out/src/Wallet.d.ts +28 -10
  31. package/out/src/Wallet.d.ts.map +1 -1
  32. package/out/src/Wallet.js +146 -125
  33. package/out/src/Wallet.js.map +1 -1
  34. package/out/src/WalletAuthenticationManager.d.ts +11 -1
  35. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  36. package/out/src/WalletAuthenticationManager.js +7 -6
  37. package/out/src/WalletAuthenticationManager.js.map +1 -1
  38. package/out/src/WalletLogger.d.ts.map +1 -1
  39. package/out/src/WalletLogger.js +33 -30
  40. package/out/src/WalletLogger.js.map +1 -1
  41. package/out/src/WalletPermissionsManager.d.ts +22 -1
  42. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  43. package/out/src/WalletPermissionsManager.js +392 -267
  44. package/out/src/WalletPermissionsManager.js.map +1 -1
  45. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  46. package/out/src/WalletSettingsManager.js.map +1 -1
  47. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  48. package/out/src/entropy/EntropyCollector.js +6 -8
  49. package/out/src/entropy/EntropyCollector.js.map +1 -1
  50. package/out/src/fundWalletP2PKH.js.map +1 -1
  51. package/out/src/index.all.js.map +1 -1
  52. package/out/src/index.client.js.map +1 -1
  53. package/out/src/index.mobile.d.ts +1 -0
  54. package/out/src/index.mobile.d.ts.map +1 -1
  55. package/out/src/index.mobile.js +1 -0
  56. package/out/src/index.mobile.js.map +1 -1
  57. package/out/src/mockchain/MockChainMigrations.d.ts.map +1 -1
  58. package/out/src/mockchain/MockChainMigrations.js.map +1 -1
  59. package/out/src/mockchain/MockChainStorage.d.ts.map +1 -1
  60. package/out/src/mockchain/MockChainStorage.js.map +1 -1
  61. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  62. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  63. package/out/src/mockchain/MockMiner.d.ts.map +1 -1
  64. package/out/src/mockchain/MockMiner.js.map +1 -1
  65. package/out/src/mockchain/MockServices.d.ts +4 -0
  66. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  67. package/out/src/mockchain/MockServices.js +69 -74
  68. package/out/src/mockchain/MockServices.js.map +1 -1
  69. package/out/src/mockchain/merkleTree.d.ts.map +1 -1
  70. package/out/src/mockchain/merkleTree.js +51 -56
  71. package/out/src/mockchain/merkleTree.js.map +1 -1
  72. package/out/src/monitor/Monitor.d.ts +4 -0
  73. package/out/src/monitor/Monitor.d.ts.map +1 -1
  74. package/out/src/monitor/Monitor.js +56 -54
  75. package/out/src/monitor/Monitor.js.map +1 -1
  76. package/out/src/monitor/MonitorDaemon.d.ts +3 -0
  77. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  78. package/out/src/monitor/MonitorDaemon.js +65 -56
  79. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  80. package/out/src/monitor/index.all.js.map +1 -1
  81. package/out/src/monitor/tasks/TaskArcSSE.d.ts +5 -0
  82. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  83. package/out/src/monitor/tasks/TaskArcSSE.js +86 -77
  84. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  85. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +4 -2
  86. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  87. package/out/src/monitor/tasks/TaskCheckForProofs.js +132 -131
  88. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  89. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +3 -1
  90. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  91. package/out/src/monitor/tasks/TaskCheckNoSends.js +3 -1
  92. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  93. package/out/src/monitor/tasks/TaskCleanupActionBatches.d.ts.map +1 -1
  94. package/out/src/monitor/tasks/TaskCleanupActionBatches.js.map +1 -1
  95. package/out/src/monitor/tasks/TaskClock.d.ts +1 -1
  96. package/out/src/monitor/tasks/TaskClock.d.ts.map +1 -1
  97. package/out/src/monitor/tasks/TaskClock.js +1 -1
  98. package/out/src/monitor/tasks/TaskClock.js.map +1 -1
  99. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  100. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  101. package/out/src/monitor/tasks/TaskMineBlock.d.ts +3 -1
  102. package/out/src/monitor/tasks/TaskMineBlock.d.ts.map +1 -1
  103. package/out/src/monitor/tasks/TaskMineBlock.js +3 -1
  104. package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -1
  105. package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts.map +1 -1
  106. package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
  107. package/out/src/monitor/tasks/TaskNewHeader.d.ts +4 -3
  108. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  109. package/out/src/monitor/tasks/TaskNewHeader.js +4 -3
  110. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  111. package/out/src/monitor/tasks/TaskPurge.d.ts +3 -1
  112. package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
  113. package/out/src/monitor/tasks/TaskPurge.js +3 -1
  114. package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
  115. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  116. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  117. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts +3 -1
  118. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  119. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +3 -1
  120. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  121. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +3 -1
  122. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  123. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +3 -1
  124. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  125. package/out/src/monitor/tasks/TaskReviewStatus.d.ts +3 -1
  126. package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
  127. package/out/src/monitor/tasks/TaskReviewStatus.js +3 -1
  128. package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
  129. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +3 -1
  130. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  131. package/out/src/monitor/tasks/TaskReviewUtxos.js +3 -1
  132. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  133. package/out/src/monitor/tasks/TaskSendWaiting.d.ts +3 -0
  134. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  135. package/out/src/monitor/tasks/TaskSendWaiting.js +53 -46
  136. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  137. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts +1 -1
  138. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts.map +1 -1
  139. package/out/src/monitor/tasks/TaskSyncWhenIdle.js +1 -1
  140. package/out/src/monitor/tasks/TaskSyncWhenIdle.js.map +1 -1
  141. package/out/src/monitor/tasks/TaskUnFail.d.ts +3 -1
  142. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  143. package/out/src/monitor/tasks/TaskUnFail.js +3 -1
  144. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  145. package/out/src/monitor/tasks/WalletMonitorTask.d.ts.map +1 -1
  146. package/out/src/monitor/tasks/WalletMonitorTask.js.map +1 -1
  147. package/out/src/sdk/ActionBatch.interfaces.d.ts +56 -2
  148. package/out/src/sdk/ActionBatch.interfaces.d.ts.map +1 -1
  149. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  150. package/out/src/sdk/PrivilegedKeyManager.js +3 -3
  151. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  152. package/out/src/sdk/WERR_errors.d.ts +1 -1
  153. package/out/src/sdk/WERR_errors.d.ts.map +1 -1
  154. package/out/src/sdk/WERR_errors.js +2 -2
  155. package/out/src/sdk/WERR_errors.js.map +1 -1
  156. package/out/src/sdk/WalletError.d.ts +3 -0
  157. package/out/src/sdk/WalletError.d.ts.map +1 -1
  158. package/out/src/sdk/WalletError.js +53 -56
  159. package/out/src/sdk/WalletError.js.map +1 -1
  160. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  161. package/out/src/sdk/WalletServices.interfaces.d.ts +3 -1
  162. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  163. package/out/src/sdk/WalletStorage.interfaces.d.ts +5 -1
  164. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  165. package/out/src/sdk/types.js.map +1 -1
  166. package/out/src/services/ServiceCollection.d.ts.map +1 -1
  167. package/out/src/services/ServiceCollection.js.map +1 -1
  168. package/out/src/services/Services.d.ts +8 -2
  169. package/out/src/services/Services.d.ts.map +1 -1
  170. package/out/src/services/Services.js +86 -44
  171. package/out/src/services/Services.js.map +1 -1
  172. package/out/src/services/chaintracker/BHServiceClient.d.ts +7 -7
  173. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  174. package/out/src/services/chaintracker/BHServiceClient.js +9 -9
  175. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  176. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +4 -1
  177. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  178. package/out/src/services/chaintracker/ChaintracksChainTracker.js +42 -6
  179. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  180. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts +4 -4
  181. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  182. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +1 -1
  183. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  184. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +3 -0
  185. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  186. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +45 -40
  187. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  188. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +5 -0
  189. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  190. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +25 -18
  191. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  192. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +3 -3
  193. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  194. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +6 -7
  195. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  196. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  197. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
  198. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  199. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  200. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  201. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  202. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  203. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  204. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  205. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +0 -1
  206. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  207. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  208. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  209. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  210. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  211. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
  212. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
  213. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts +2 -2
  214. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  215. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +2 -2
  216. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  217. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  218. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  219. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  220. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  221. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +12 -2
  222. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  223. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +110 -103
  224. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  225. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +8 -0
  226. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  227. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +58 -48
  228. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  229. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  230. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  231. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  232. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  233. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +3 -0
  234. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  235. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +55 -54
  236. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +4 -0
  238. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  239. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +97 -72
  240. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  241. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +5 -0
  242. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  243. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +145 -136
  244. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  245. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +4 -0
  246. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  247. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +92 -68
  248. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  249. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +43 -0
  250. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
  251. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +76 -0
  252. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  253. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts +18 -0
  254. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts.map +1 -0
  255. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js +24 -0
  256. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js.map +1 -0
  257. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts +2 -3
  258. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  259. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +4 -22
  260. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  261. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts +2 -4
  262. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  263. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js +12 -25
  264. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  265. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts +2 -3
  266. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  267. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +4 -22
  268. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  269. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts +2 -1
  270. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  271. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +3 -15
  272. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  273. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts +2 -2
  274. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  275. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +3 -15
  276. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  277. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts +2 -1
  278. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  279. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +3 -15
  280. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  281. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +1 -1
  282. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
  283. package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
  284. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +2 -0
  285. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  286. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +64 -61
  287. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  288. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  289. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  290. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  291. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +4 -3
  292. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  293. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  294. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  295. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  296. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  297. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +8 -10
  298. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  299. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +14 -24
  300. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  301. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  302. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  303. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  304. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  305. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +1 -11
  306. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  307. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +20 -49
  308. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  309. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts.map +1 -1
  310. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js +4 -2
  311. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js.map +1 -1
  312. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  313. package/out/src/services/createDefaultWalletServicesOptions.d.ts +23 -14
  314. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  315. package/out/src/services/createDefaultWalletServicesOptions.js +1 -14
  316. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  317. package/out/src/services/networkConfig.js.map +1 -1
  318. package/out/src/services/providers/ARC.d.ts +4 -0
  319. package/out/src/services/providers/ARC.d.ts.map +1 -1
  320. package/out/src/services/providers/ARC.js +96 -83
  321. package/out/src/services/providers/ARC.js.map +1 -1
  322. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  323. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  324. package/out/src/services/providers/Arcade.d.ts +4 -0
  325. package/out/src/services/providers/Arcade.d.ts.map +1 -1
  326. package/out/src/services/providers/Arcade.js +118 -92
  327. package/out/src/services/providers/Arcade.js.map +1 -1
  328. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  329. package/out/src/services/providers/Bitails.js +107 -86
  330. package/out/src/services/providers/Bitails.js.map +1 -1
  331. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  332. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  333. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  334. package/out/src/services/providers/WhatsOnChain.js +19 -6
  335. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  336. package/out/src/services/providers/exchangeRates.js +1 -1
  337. package/out/src/services/providers/exchangeRates.js.map +1 -1
  338. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  339. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
  340. package/out/src/signer/WalletSigner.d.ts.map +1 -1
  341. package/out/src/signer/WalletSigner.js.map +1 -1
  342. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
  343. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
  344. package/out/src/signer/actionBatch/ActionBatchPlanner.js +68 -35
  345. package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
  346. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
  347. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +217 -41
  348. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
  349. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +11 -0
  350. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -0
  351. package/out/src/signer/actionBatch/actionBatchBootstrap.js +38 -0
  352. package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -0
  353. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  354. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  355. package/out/src/signer/methods/buildSignableTransaction.js +95 -106
  356. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  357. package/out/src/signer/methods/completeSignedTransaction.d.ts +3 -7
  358. package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
  359. package/out/src/signer/methods/completeSignedTransaction.js +14 -57
  360. package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
  361. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  362. package/out/src/signer/methods/createAction.js +47 -20
  363. package/out/src/signer/methods/createAction.js.map +1 -1
  364. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  365. package/out/src/signer/methods/internalizeAction.js +4 -4
  366. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  367. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  368. package/out/src/signer/methods/resultBeef.js.map +1 -1
  369. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  370. package/out/src/signer/methods/signAction.js +29 -4
  371. package/out/src/signer/methods/signAction.js.map +1 -1
  372. package/out/src/signer/methods/verifyUnlockScripts.d.ts +17 -0
  373. package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -0
  374. package/out/src/signer/methods/verifyUnlockScripts.js +137 -0
  375. package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -0
  376. package/out/src/storage/StorageIdb.d.ts +5 -3
  377. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  378. package/out/src/storage/StorageIdb.js +80 -27
  379. package/out/src/storage/StorageIdb.js.map +1 -1
  380. package/out/src/storage/StorageKnex.d.ts +10 -1
  381. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  382. package/out/src/storage/StorageKnex.js +118 -9
  383. package/out/src/storage/StorageKnex.js.map +1 -1
  384. package/out/src/storage/StorageProvider.d.ts +41 -13
  385. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  386. package/out/src/storage/StorageProvider.js +241 -158
  387. package/out/src/storage/StorageProvider.js.map +1 -1
  388. package/out/src/storage/StorageReader.d.ts +13 -5
  389. package/out/src/storage/StorageReader.d.ts.map +1 -1
  390. package/out/src/storage/StorageReader.js +3 -0
  391. package/out/src/storage/StorageReader.js.map +1 -1
  392. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  393. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  394. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  395. package/out/src/storage/StorageSyncReader.js.map +1 -1
  396. package/out/src/storage/WalletStorageManager.d.ts +2 -0
  397. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  398. package/out/src/storage/WalletStorageManager.js +25 -6
  399. package/out/src/storage/WalletStorageManager.js.map +1 -1
  400. package/out/src/storage/adminServer/adminServer.d.ts +79 -0
  401. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  402. package/out/src/storage/adminServer/adminServer.js +47 -16
  403. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  404. package/out/src/storage/adminServer/adminUi.js.map +1 -1
  405. package/out/src/storage/idbHelpers.js.map +1 -1
  406. package/out/src/storage/index.all.js.map +1 -1
  407. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  408. package/out/src/storage/methods/ListActionsSpecOp.js +48 -71
  409. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  410. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  411. package/out/src/storage/methods/ListOutputsSpecOp.js +29 -27
  412. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  413. package/out/src/storage/methods/actionBatch.d.ts +2 -1
  414. package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
  415. package/out/src/storage/methods/actionBatch.js +143 -50
  416. package/out/src/storage/methods/actionBatch.js.map +1 -1
  417. package/out/src/storage/methods/actionBatchBlobs.d.ts +6 -3
  418. package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
  419. package/out/src/storage/methods/actionBatchBlobs.js +77 -14
  420. package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
  421. package/out/src/storage/methods/actionBatchValidation.d.ts +6 -4
  422. package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
  423. package/out/src/storage/methods/actionBatchValidation.js +261 -155
  424. package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
  425. package/out/src/storage/methods/actionPlanning.js.map +1 -1
  426. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +0 -21
  427. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  428. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +43 -51
  429. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  430. package/out/src/storage/methods/createAction.d.ts +1 -1
  431. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  432. package/out/src/storage/methods/createAction.js +57 -38
  433. package/out/src/storage/methods/createAction.js.map +1 -1
  434. package/out/src/storage/methods/generateChange.d.ts +2 -2
  435. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  436. package/out/src/storage/methods/generateChange.js +66 -38
  437. package/out/src/storage/methods/generateChange.js.map +1 -1
  438. package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
  439. package/out/src/storage/methods/getBeefForTransaction.js +48 -42
  440. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  441. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  442. package/out/src/storage/methods/getSyncChunk.js +8 -6
  443. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  444. package/out/src/storage/methods/internalizeAction.js +145 -121
  445. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  446. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  447. package/out/src/storage/methods/listActionsKnex.js +1 -1
  448. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  449. package/out/src/storage/methods/listCertificates.d.ts +1 -1
  450. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  451. package/out/src/storage/methods/listCertificates.js +1 -1
  452. package/out/src/storage/methods/listCertificates.js.map +1 -1
  453. package/out/src/storage/methods/listOutputsIdb.d.ts +1 -1
  454. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  455. package/out/src/storage/methods/listOutputsIdb.js +133 -152
  456. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  457. package/out/src/storage/methods/listOutputsKnex.d.ts +1 -1
  458. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  459. package/out/src/storage/methods/listOutputsKnex.js +213 -254
  460. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  461. package/out/src/storage/methods/managedChange.d.ts +3 -3
  462. package/out/src/storage/methods/managedChange.d.ts.map +1 -1
  463. package/out/src/storage/methods/managedChange.js +1 -2
  464. package/out/src/storage/methods/managedChange.js.map +1 -1
  465. package/out/src/storage/methods/offsetKey.d.ts.map +1 -1
  466. package/out/src/storage/methods/offsetKey.js +0 -1
  467. package/out/src/storage/methods/offsetKey.js.map +1 -1
  468. package/out/src/storage/methods/processAction.d.ts +2 -0
  469. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  470. package/out/src/storage/methods/processAction.js +8 -8
  471. package/out/src/storage/methods/processAction.js.map +1 -1
  472. package/out/src/storage/methods/purgeData.d.ts.map +1 -1
  473. package/out/src/storage/methods/purgeData.js +157 -179
  474. package/out/src/storage/methods/purgeData.js.map +1 -1
  475. package/out/src/storage/methods/purgeDataIdb.d.ts +1 -1
  476. package/out/src/storage/methods/purgeDataIdb.d.ts.map +1 -1
  477. package/out/src/storage/methods/purgeDataIdb.js +1 -1
  478. package/out/src/storage/methods/purgeDataIdb.js.map +1 -1
  479. package/out/src/storage/methods/reviewStatus.js +6 -6
  480. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  481. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  482. package/out/src/storage/methods/utils.Buffer.js.map +1 -1
  483. package/out/src/storage/methods/utils.js.map +1 -1
  484. package/out/src/storage/portable/index.js +2 -2
  485. package/out/src/storage/portable/index.js.map +1 -1
  486. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
  487. package/out/src/storage/remoting/BinaryJson.js +84 -38
  488. package/out/src/storage/remoting/BinaryJson.js.map +1 -1
  489. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
  490. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
  491. package/out/src/storage/remoting/RateLimitPolicy.d.ts +10 -0
  492. package/out/src/storage/remoting/RateLimitPolicy.d.ts.map +1 -0
  493. package/out/src/storage/remoting/RateLimitPolicy.js +37 -0
  494. package/out/src/storage/remoting/RateLimitPolicy.js.map +1 -0
  495. package/out/src/storage/remoting/StorageClient.d.ts +2 -0
  496. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  497. package/out/src/storage/remoting/StorageClient.js +82 -50
  498. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  499. package/out/src/storage/remoting/StorageClientBase.d.ts +15 -5
  500. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  501. package/out/src/storage/remoting/StorageClientBase.js +61 -3
  502. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  503. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  504. package/out/src/storage/remoting/StorageMobile.js +34 -22
  505. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  506. package/out/src/storage/remoting/StorageServer.d.ts +52 -1
  507. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  508. package/out/src/storage/remoting/StorageServer.js +340 -201
  509. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  510. package/out/src/storage/remoting/edgePolicy.d.ts +57 -0
  511. package/out/src/storage/remoting/edgePolicy.d.ts.map +1 -0
  512. package/out/src/storage/remoting/edgePolicy.js +387 -0
  513. package/out/src/storage/remoting/edgePolicy.js.map +1 -0
  514. package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
  515. package/out/src/storage/remoting/entityValidationHelpers.js +22 -5
  516. package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
  517. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  518. package/out/src/storage/schema/KnexMigrations.js +12 -0
  519. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  520. package/out/src/storage/schema/entities/EntityBase.d.ts.map +1 -1
  521. package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
  522. package/out/src/storage/schema/entities/EntityCertificate.d.ts.map +1 -1
  523. package/out/src/storage/schema/entities/EntityCertificate.js.map +1 -1
  524. package/out/src/storage/schema/entities/EntityCertificateField.d.ts.map +1 -1
  525. package/out/src/storage/schema/entities/EntityCertificateField.js.map +1 -1
  526. package/out/src/storage/schema/entities/EntityCommission.d.ts.map +1 -1
  527. package/out/src/storage/schema/entities/EntityCommission.js.map +1 -1
  528. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  529. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  530. package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
  531. package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
  532. package/out/src/storage/schema/entities/EntityOutputTag.d.ts.map +1 -1
  533. package/out/src/storage/schema/entities/EntityOutputTag.js.map +1 -1
  534. package/out/src/storage/schema/entities/EntityOutputTagMap.d.ts.map +1 -1
  535. package/out/src/storage/schema/entities/EntityOutputTagMap.js.map +1 -1
  536. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +3 -0
  537. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  538. package/out/src/storage/schema/entities/EntityProvenTx.js +46 -36
  539. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  540. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts +2 -2
  541. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts.map +1 -1
  542. package/out/src/storage/schema/entities/EntityProvenTxReq.js +12 -10
  543. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  544. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  545. package/out/src/storage/schema/entities/EntitySyncState.js +25 -34
  546. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  547. package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
  548. package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
  549. package/out/src/storage/schema/entities/EntityTxLabel.d.ts.map +1 -1
  550. package/out/src/storage/schema/entities/EntityTxLabel.js.map +1 -1
  551. package/out/src/storage/schema/entities/EntityTxLabelMap.d.ts.map +1 -1
  552. package/out/src/storage/schema/entities/EntityTxLabelMap.js.map +1 -1
  553. package/out/src/storage/schema/entities/EntityUser.d.ts.map +1 -1
  554. package/out/src/storage/schema/entities/EntityUser.js.map +1 -1
  555. package/out/src/storage/schema/entities/MergeEntity.d.ts.map +1 -1
  556. package/out/src/storage/schema/entities/MergeEntity.js +9 -14
  557. package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
  558. package/out/src/storage/schema/tables/TableActionBatch.d.ts +3 -1
  559. package/out/src/storage/schema/tables/TableActionBatch.d.ts.map +1 -1
  560. package/out/src/storage/schema/tables/TableAuthSession.js.map +1 -1
  561. package/out/src/storage/storageProviderHelpers.js.map +1 -1
  562. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts +3 -0
  563. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  564. package/out/src/storage/sync/StorageMySQLDojoReader.js +30 -16
  565. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  566. package/out/src/utility/Format.d.ts.map +1 -1
  567. package/out/src/utility/Format.js +2 -2
  568. package/out/src/utility/Format.js.map +1 -1
  569. package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
  570. package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
  571. package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
  572. package/out/src/utility/actionBatchDigest.js +41 -3
  573. package/out/src/utility/actionBatchDigest.js.map +1 -1
  574. package/out/src/utility/actionBatchPack.d.ts +16 -0
  575. package/out/src/utility/actionBatchPack.d.ts.map +1 -0
  576. package/out/src/utility/actionBatchPack.js +220 -0
  577. package/out/src/utility/actionBatchPack.js.map +1 -0
  578. package/out/src/utility/aggregateResults.d.ts.map +1 -1
  579. package/out/src/utility/aggregateResults.js.map +1 -1
  580. package/out/src/utility/beefForTxids.js.map +1 -1
  581. package/out/src/utility/brc114ActionTimeLabels.d.ts.map +1 -1
  582. package/out/src/utility/brc114ActionTimeLabels.js +26 -30
  583. package/out/src/utility/brc114ActionTimeLabels.js.map +1 -1
  584. package/out/src/utility/formatUnknown.d.ts +6 -0
  585. package/out/src/utility/formatUnknown.d.ts.map +1 -0
  586. package/out/src/utility/formatUnknown.js +39 -0
  587. package/out/src/utility/formatUnknown.js.map +1 -0
  588. package/out/src/utility/hashWasm.d.ts +5 -0
  589. package/out/src/utility/hashWasm.d.ts.map +1 -0
  590. package/out/src/utility/hashWasm.js +15 -0
  591. package/out/src/utility/hashWasm.js.map +1 -0
  592. package/out/src/utility/identityUtils.d.ts.map +1 -1
  593. package/out/src/utility/identityUtils.js +2 -4
  594. package/out/src/utility/identityUtils.js.map +1 -1
  595. package/out/src/utility/parseTxScriptOffsets.d.ts +1 -1
  596. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  597. package/out/src/utility/parseTxScriptOffsets.js +1 -1
  598. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  599. package/out/src/utility/stampLog.d.ts.map +1 -1
  600. package/out/src/utility/stampLog.js +49 -42
  601. package/out/src/utility/stampLog.js.map +1 -1
  602. package/out/src/utility/traceContext.d.ts +13 -0
  603. package/out/src/utility/traceContext.d.ts.map +1 -0
  604. package/out/src/utility/traceContext.js +34 -0
  605. package/out/src/utility/traceContext.js.map +1 -0
  606. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  607. package/out/src/utility/tscProofToMerklePath.js +1 -1
  608. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  609. package/out/src/utility/utilityHelpers.buffer.js.map +1 -1
  610. package/out/src/utility/utilityHelpers.d.ts +2 -2
  611. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  612. package/out/src/utility/utilityHelpers.js +8 -4
  613. package/out/src/utility/utilityHelpers.js.map +1 -1
  614. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  615. package/out/src/utility/utilityHelpers.noBuffer.js +1 -2
  616. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  617. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  618. package/out/src/wab-client/WABClient.js +1 -1
  619. package/out/src/wab-client/WABClient.js.map +1 -1
  620. package/out/src/wab-client/WABTransport.d.ts +33 -5
  621. package/out/src/wab-client/WABTransport.d.ts.map +1 -1
  622. package/out/src/wab-client/WABTransport.js +240 -120
  623. package/out/src/wab-client/WABTransport.js.map +1 -1
  624. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  625. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  626. package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js.map +1 -1
  627. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js.map +1 -1
  628. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts.map +1 -1
  629. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js +1 -1
  630. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +1 -1
  631. package/package.json +57 -21
  632. package/license.md +0 -28
@@ -25,6 +25,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
25
25
  commissionSatoshis;
26
26
  commissionPubKeyHex;
27
27
  maxRecursionDepth;
28
+ scriptVerifier;
28
29
  static defaultOptions() {
29
30
  const opts = {
30
31
  feeModel: { model: 'sat/kb', value: 100 },
@@ -46,26 +47,60 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
46
47
  this.commissionPubKeyHex = options.commissionPubKeyHex;
47
48
  this.commissionSatoshis = options.commissionSatoshis;
48
49
  this.maxRecursionDepth = 12;
50
+ this.scriptVerifier = options.scriptVerifier;
51
+ }
52
+ async insertActionBatch(_batch, _trx) {
53
+ throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
54
+ }
55
+ async findActionBatch(_userId, _batchId, _trx) {
56
+ throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
49
57
  }
50
- async insertActionBatch(batch, trx) { throw new WERR_errors_1.WERR_NOT_IMPLEMENTED(); }
51
- async findActionBatch(userId, batchId, trx) { throw new WERR_errors_1.WERR_NOT_IMPLEMENTED(); }
52
58
  async findActionBatchForUpdate(userId, batchId, trx) {
53
59
  return await this.findActionBatch(userId, batchId, trx);
54
60
  }
55
- async findExpiredActionBatches(now, trx) { throw new WERR_errors_1.WERR_NOT_IMPLEMENTED(); }
56
- async updateActionBatch(actionBatchId, update, trx) { throw new WERR_errors_1.WERR_NOT_IMPLEMENTED(); }
57
- async deleteActionBatch(actionBatchId, trx) { throw new WERR_errors_1.WERR_NOT_IMPLEMENTED(); }
58
- async reserveActionBatchOutputs(reservations, trx) { throw new WERR_errors_1.WERR_NOT_IMPLEMENTED(); }
59
- async findActionBatchOutputIds(actionBatchId, trx) { throw new WERR_errors_1.WERR_NOT_IMPLEMENTED(); }
60
- async findReservedActionBatchOutputIds(_outputIds, _trx) { return []; }
61
- async deleteActionBatchOutputReservations(actionBatchId, trx) { throw new WERR_errors_1.WERR_NOT_IMPLEMENTED(); }
62
- async putActionBatchBlobRecord(blob, trx) { throw new WERR_errors_1.WERR_NOT_IMPLEMENTED(); }
63
- async findActionBatchBlobRecord(actionBatchId, digest, trx) { throw new WERR_errors_1.WERR_NOT_IMPLEMENTED(); }
64
- async deleteActionBatchBlobRecords(actionBatchId, trx) { throw new WERR_errors_1.WERR_NOT_IMPLEMENTED(); }
61
+ async findExpiredActionBatches(_now, _trx) {
62
+ throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
63
+ }
64
+ async updateActionBatch(_actionBatchId, _update, _trx) {
65
+ throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
66
+ }
67
+ async deleteActionBatch(_actionBatchId, _trx) {
68
+ throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
69
+ }
70
+ async reserveActionBatchOutputs(_reservations, _trx) {
71
+ throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
72
+ }
73
+ async findActionBatchOutputIds(_actionBatchId, _trx) {
74
+ throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
75
+ }
76
+ async findReservedActionBatchOutputIds(_outputIds, _trx) {
77
+ return [];
78
+ }
79
+ async deleteActionBatchOutputReservations(_actionBatchId, _trx) {
80
+ throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
81
+ }
82
+ async putActionBatchBlobRecord(_blob, _trx) {
83
+ throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
84
+ }
85
+ async findActionBatchBlobRecord(_actionBatchId, _digest, _trx) {
86
+ throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
87
+ }
88
+ async findActionBatchBlobRecords(actionBatchId, digests, trx) {
89
+ return (await Promise.all(digests.map(async (digest) => await this.findActionBatchBlobRecord(actionBatchId, digest, trx)))).filter((blob) => blob != null);
90
+ }
91
+ async putActionBatchBlobRecords(blobs, trx) {
92
+ for (const blob of blobs)
93
+ await this.putActionBatchBlobRecord(blob, trx);
94
+ }
95
+ async deleteActionBatchBlobRecords(_actionBatchId, _trx) {
96
+ throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
97
+ }
65
98
  async getCapabilities() {
66
99
  return this.supportsActionBatchPersistence() ? (0, actionBatch_1.getActionBatchCapabilities)() : {};
67
100
  }
68
- supportsActionBatchPersistence() { return false; }
101
+ supportsActionBatchPersistence() {
102
+ return false;
103
+ }
69
104
  async beginActionBatch(auth, args) {
70
105
  if (!this.supportsActionBatchPersistence())
71
106
  throw new WERR_errors_1.WERR_NOT_IMPLEMENTED('actionBatch capability is not available');
@@ -83,9 +118,15 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
83
118
  async putActionBatchBlob(auth, args) {
84
119
  return await (0, actionBatchBlobs_1.putActionBatchBlob)(this, auth, args);
85
120
  }
121
+ async putActionBatchPack(auth, args) {
122
+ return await (0, actionBatchBlobs_1.putActionBatchPack)(this, auth, args);
123
+ }
86
124
  async commitActionBatch(auth, manifest) {
87
125
  return await (0, actionBatch_1.commitActionBatch)(this, auth, manifest);
88
126
  }
127
+ async commitActionBatchByDigest(auth, args) {
128
+ return await (0, actionBatch_1.commitActionBatchByDigest)(this, auth, args);
129
+ }
89
130
  async abortActionBatch(auth, batchId) {
90
131
  return await (0, actionBatch_1.abortActionBatch)(this, auth, batchId);
91
132
  }
@@ -128,6 +169,12 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
128
169
  byTag[tag] = await this.findOrInsertOutputTag(userId, tag, trx);
129
170
  return byTag;
130
171
  }
172
+ async findOrInsertTxLabelsBulk(userId, labels, trx) {
173
+ const byLabel = {};
174
+ for (const label of labels)
175
+ byLabel[label] ??= await this.findOrInsertTxLabel(userId, label, trx);
176
+ return byLabel;
177
+ }
131
178
  async sumSpendableSatoshisInBasket(userId, basketId, excludeSending, trx) {
132
179
  const status = ['completed', 'unproven'];
133
180
  if (!excludeSending)
@@ -152,7 +199,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
152
199
  continue;
153
200
  const createdAt = this.validateDate(output.created_at);
154
201
  const prior = latestByUserId.get(output.userId);
155
- if ((prior == null) || createdAt > prior) {
202
+ if (prior == null || createdAt > prior) {
156
203
  latestByUserId.set(output.userId, createdAt);
157
204
  }
158
205
  }
@@ -174,32 +221,79 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
174
221
  throw new WERR_errors_1.WERR_INVALID_OPERATION('Must setServices first.');
175
222
  return this._services;
176
223
  }
177
- async abortAction(auth, args) {
178
- if (auth.userId == null)
179
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('auth.userId', 'valid');
180
- const userId = auth.userId;
224
+ async findAbortableTransaction(userId, args, trx) {
181
225
  let reference = args.reference;
182
- let txid;
183
- const r = await this.transaction(async (trx) => {
184
- let tx = (0, utilityHelpers_1.verifyOneOrNone)(await this.findTransactions({
185
- partial: { reference, userId },
226
+ let tx = (0, utilityHelpers_1.verifyOneOrNone)(await this.findTransactions({
227
+ partial: { reference, userId },
228
+ noRawTx: true,
229
+ trx
230
+ }));
231
+ if (tx == null && args.reference.length === 64) {
232
+ reference = undefined;
233
+ tx = (0, utilityHelpers_1.verifyOneOrNone)(await this.findTransactions({
234
+ partial: { txid: args.reference, userId },
186
235
  noRawTx: true,
187
236
  trx
188
237
  }));
189
- if ((tx == null) && args.reference.length === 64) {
190
- // reference may also be a txid
191
- txid = reference;
192
- reference = undefined;
193
- tx = (0, utilityHelpers_1.verifyOneOrNone)(await this.findTransactions({
194
- partial: { txid, userId },
195
- noRawTx: true,
196
- trx
197
- }));
238
+ }
239
+ const unAbortableStatus = ['completed', 'failed', 'sending', 'unproven'];
240
+ if (tx == null || !tx.isOutgoing || unAbortableStatus.includes(tx.status)) {
241
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('reference', 'an inprocess, outgoing action that has not been signed and shared to the network.');
242
+ }
243
+ return { tx, reference };
244
+ }
245
+ async checkAbortChainProtection(tx, args, trx) {
246
+ if (tx.txid == null || tx.txid === '' || tx.status !== 'nosend') {
247
+ return { skipped: false, serviceUnreachable: false };
248
+ }
249
+ let serviceUnreachable = false;
250
+ let chainStatus;
251
+ try {
252
+ const result = await this.getServices().getStatusForTxids([tx.txid]);
253
+ if (result.status !== 'success') {
254
+ serviceUnreachable = true;
198
255
  }
199
- const unAbortableStatus = ['completed', 'failed', 'sending', 'unproven'];
200
- if ((tx == null) || !tx.isOutgoing || unAbortableStatus.findIndex(s => s === tx.status) > -1) {
201
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('reference', 'an inprocess, outgoing action that has not been signed and shared to the network.');
256
+ else {
257
+ chainStatus = result.results.find(item => item.txid === tx.txid)?.status;
202
258
  }
259
+ }
260
+ catch {
261
+ serviceUnreachable = true;
262
+ }
263
+ if (chainStatus !== 'mined' && chainStatus !== 'known') {
264
+ return { skipped: false, serviceUnreachable };
265
+ }
266
+ const req = await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
267
+ if (req != null) {
268
+ req.addHistoryNote({
269
+ what: 'abortAction-skipped-onchain',
270
+ reference: args.reference,
271
+ chainStatus
272
+ });
273
+ await req.updateStorageDynamicProperties(this, trx);
274
+ }
275
+ return { skipped: true, serviceUnreachable };
276
+ }
277
+ async invalidateAbortedTransaction(tx, userId, reference, originalReference, serviceUnreachable, trx) {
278
+ await this.updateTransactionStatus('failed', tx.transactionId, userId, reference, trx);
279
+ if (tx.txid != null && tx.txid !== '') {
280
+ const req = await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
281
+ if (req != null) {
282
+ req.addHistoryNote(serviceUnreachable
283
+ ? { what: 'abortAction-offline-fallback', reference: originalReference }
284
+ : { what: 'abortAction', reference: originalReference });
285
+ req.status = 'invalid';
286
+ await req.updateStorageDynamicProperties(this, trx);
287
+ }
288
+ }
289
+ return { aborted: true };
290
+ }
291
+ async abortAction(auth, args) {
292
+ if (auth.userId == null)
293
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('auth.userId', 'valid');
294
+ const userId = auth.userId;
295
+ const r = await this.transaction(async (trx) => {
296
+ const { tx, reference } = await this.findAbortableTransaction(userId, args, trx);
203
297
  // Chain-status protection for signed nosend txs.
204
298
  //
205
299
  // Background: a nosend tx (created via createAction({noSend:true}))
@@ -231,57 +325,12 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
231
325
  // hole can never be 100% closed against externally-broadcast
232
326
  // chain-confirmed txs while offline; the audit trail makes it
233
327
  // recoverable.
234
- let serviceUnreachable = false;
235
- if (tx.txid != null && tx.txid !== '' && tx.status === 'nosend') {
236
- const services = this.getServices();
237
- let chainStatus;
238
- try {
239
- const r = await services.getStatusForTxids([tx.txid]);
240
- if (r.status !== 'success') {
241
- serviceUnreachable = true;
242
- }
243
- else {
244
- chainStatus = r.results.find(x => x.txid === tx.txid)?.status;
245
- }
246
- }
247
- catch {
248
- serviceUnreachable = true;
249
- }
250
- if (chainStatus === 'mined' || chainStatus === 'known') {
251
- const req = await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
252
- if (req != null) {
253
- req.addHistoryNote({
254
- what: 'abortAction-skipped-onchain',
255
- reference: args.reference,
256
- chainStatus
257
- });
258
- await req.updateStorageDynamicProperties(this, trx);
259
- }
260
- // Surface the refusal via a sentinel so the surrounding
261
- // transaction commits the history note BEFORE returning
262
- // the aborted:false result. Returning directly from inside
263
- // the transaction would still work, but the sentinel keeps
264
- // the audit-write / result-shape decision on the same
265
- // commit-then-return path that existed when this surface
266
- // threw, minimizing diff churn.
267
- return { __abortAction: 'skipped-onchain', chainStatus };
268
- }
269
- }
270
- await this.updateTransactionStatus('failed', tx.transactionId, userId, reference, trx);
271
- if (tx.txid != null && tx.txid !== '') {
272
- const req = await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
273
- if (req != null) {
274
- req.addHistoryNote(serviceUnreachable
275
- ? { what: 'abortAction-offline-fallback', reference: args.reference }
276
- : { what: 'abortAction', reference: args.reference });
277
- req.status = 'invalid';
278
- await req.updateStorageDynamicProperties(this, trx);
279
- }
328
+ const protection = await this.checkAbortChainProtection(tx, args, trx);
329
+ if (protection.skipped) {
330
+ // Commit the audit note before translating this sentinel to aborted:false.
331
+ return { __abortAction: 'skipped-onchain' };
280
332
  }
281
- const r = {
282
- aborted: true
283
- };
284
- return r;
333
+ return await this.invalidateAbortedTransaction(tx, userId, reference, args.reference, protection.serviceUnreachable, trx);
285
334
  });
286
335
  if ('__abortAction' in r) {
287
336
  // Tone Engel review feedback (PR #122 comment 4444566147 item 3):
@@ -351,7 +400,9 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
351
400
  throw new WERR_errors_1.WERR_INTERNAL('req rawTx and beef must be valid.');
352
401
  mergeToBeef.mergeRawTx((0, utilityHelpers_noBuffer_1.asArray)(rawTx));
353
402
  mergeToBeef.mergeBeef((0, utilityHelpers_noBuffer_1.asArray)(beef));
354
- await (0, storageProviderHelpers_1.mergeInputsIntoBeef)((0, utilityHelpers_noBuffer_1.asArray)(rawTx), mergeToBeef, knownTxids, trx, async (txid, beef, _trust, knownTxids, trx) => { await this.getValidBeefForKnownTxid(txid, beef, undefined, knownTxids, trx); });
403
+ await (0, storageProviderHelpers_1.mergeInputsIntoBeef)((0, utilityHelpers_noBuffer_1.asArray)(rawTx), mergeToBeef, knownTxids, trx, async (txid, beef, _trust, knownTxids, trx) => {
404
+ await this.getValidBeefForKnownTxid(txid, beef, undefined, knownTxids, trx);
405
+ });
355
406
  }
356
407
  /**
357
408
  * Checks if txid is a known valid ProvenTx and returns it if found.
@@ -384,7 +435,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
384
435
  return existing;
385
436
  }
386
437
  async getProvenOrReq(txid, newReq, trx) {
387
- if ((newReq != null) && txid !== newReq.txid)
438
+ if (newReq != null && txid !== newReq.txid)
388
439
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('newReq', 'same txid');
389
440
  const r = { proven: undefined, req: undefined };
390
441
  r.proven = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxs({ partial: { txid }, trx }));
@@ -563,7 +614,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
563
614
  beef.mergeBump(mp);
564
615
  return beef;
565
616
  }
566
- async getValidBeefForTxid(txid, mergeToBeef, trustSelf, knownTxids, trx, requiredLevels, chainTracker, skipInvalidProofs) {
617
+ async getValidBeefForTxid(...[txid, mergeToBeef, trustSelf, knownTxids, trx, requiredLevels, chainTracker, skipInvalidProofs]) {
567
618
  const beef = mergeToBeef ?? new sdk_1.Beef();
568
619
  const r = await this.getProvenOrRawTx(txid, trx);
569
620
  // --- proven-tx path ---
@@ -716,6 +767,94 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
716
767
  }
717
768
  return { log };
718
769
  }
770
+ async prepareProofRecoveryOutputVerdicts(transactions) {
771
+ const verdicts = new Map();
772
+ if (transactions.length === 0)
773
+ return verdicts;
774
+ const services = this.getServices();
775
+ for (const transaction of transactions) {
776
+ const outputs = await this.findOutputs({
777
+ partial: {
778
+ userId: transaction.userId,
779
+ transactionId: transaction.transactionId
780
+ }
781
+ });
782
+ for (const output of outputs) {
783
+ const outputId = (0, utilityHelpers_1.verifyId)(output.outputId);
784
+ await this.validateOutputScript(output);
785
+ verdicts.set(outputId, output.lockingScript == null ? undefined : await services.isUtxo(output));
786
+ }
787
+ }
788
+ return verdicts;
789
+ }
790
+ async restoreProofRecoveryInputs(tx, bsvtx, indent, trx) {
791
+ let log = '';
792
+ for (const [vin, input] of bsvtx.inputs.entries()) {
793
+ const sourceTXID = input.sourceTXID;
794
+ if (sourceTXID == null) {
795
+ log += ' '.repeat(indent + 2) + `input ${vin} has no source transaction id\n`;
796
+ continue;
797
+ }
798
+ const outputs = await this.findOutputs({
799
+ partial: {
800
+ userId: tx.userId,
801
+ txid: sourceTXID,
802
+ vout: input.sourceOutputIndex
803
+ },
804
+ trx
805
+ });
806
+ if (outputs.length !== 1) {
807
+ log += ' '.repeat(indent + 2) + `input ${vin} not matched to user's outputs\n`;
808
+ continue;
809
+ }
810
+ const output = outputs[0];
811
+ log +=
812
+ ' '.repeat(indent + 2) +
813
+ `input ${vin} matched to output ${output.outputId} updated spentBy ${tx.transactionId}\n`;
814
+ await this.updateOutput((0, utilityHelpers_1.verifyId)(output.outputId), { spendable: false, spentBy: tx.transactionId }, trx);
815
+ }
816
+ return log;
817
+ }
818
+ async restoreProofRecoveryOutputs(tx, outputVerdicts, indent, trx) {
819
+ let log = '';
820
+ const outputs = await this.findOutputs({
821
+ partial: { userId: tx.userId, transactionId: tx.transactionId },
822
+ trx
823
+ });
824
+ for (const output of outputs) {
825
+ const outputId = (0, utilityHelpers_1.verifyId)(output.outputId);
826
+ if (!outputVerdicts.has(outputId)) {
827
+ throw new WERR_errors_1.WERR_INTERNAL(`Output ${outputId} changed while preparing proof recovery.`);
828
+ }
829
+ const isUtxo = outputVerdicts.get(outputId);
830
+ if (isUtxo == null) {
831
+ log +=
832
+ ' '.repeat(indent + 2) +
833
+ `output ${output.outputId} does not have a valid locking script\n`;
834
+ continue;
835
+ }
836
+ if (isUtxo === output.spendable) {
837
+ log += ' '.repeat(indent + 2) + `output ${output.outputId} unchanged\n`;
838
+ continue;
839
+ }
840
+ log +=
841
+ ' '.repeat(indent + 2) +
842
+ `output ${output.outputId} set to ${isUtxo ? 'spendable' : 'spent'}\n`;
843
+ await this.updateOutput(outputId, { spendable: isUtxo }, trx);
844
+ }
845
+ return log;
846
+ }
847
+ async restoreTransactionForProof(tx, bsvtx, preparedTransactionIds, outputVerdicts, indent, trx) {
848
+ if (bsvtx == null || !preparedTransactionIds.has(tx.transactionId)) {
849
+ throw new WERR_errors_1.WERR_INTERNAL(`Transaction ${tx.transactionId} changed while preparing proof recovery.`);
850
+ }
851
+ await this.updateTransaction(tx.transactionId, { status: 'unproven' }, trx);
852
+ let log = ' '.repeat(indent) +
853
+ `transaction ${tx.transactionId} status is now 'unproven'\n`;
854
+ log += await this.restoreProofRecoveryInputs(tx, bsvtx, indent, trx);
855
+ log += await this.restoreProofRecoveryOutputs(tx, outputVerdicts, indent, trx);
856
+ return log;
857
+ }
719
858
  /**
720
859
  * Restore every failed local copy of a transaction before proof completion.
721
860
  * Also heals the request's notification set from the authoritative txid
@@ -737,23 +876,10 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
737
876
  // transition separately so it is persisted atomically with bookkeeping.
738
877
  await req.refreshFromStorage(this);
739
878
  const preparedTransactionIds = new Set(transactionsToRepair.map(transaction => transaction.transactionId));
740
- const outputVerdicts = new Map();
741
879
  const bsvtx = transactionsToRepair.length > 0 ? sdk_1.Transaction.fromBinary(req.rawTx) : undefined;
742
880
  // UTXO checks can call external services. Complete every check before
743
881
  // opening the write transaction so network latency never holds DB locks.
744
- if (transactionsToRepair.length > 0) {
745
- const services = this.getServices();
746
- for (const transaction of transactionsToRepair) {
747
- const outputs = await this.findOutputs({
748
- partial: { userId: transaction.userId, transactionId: transaction.transactionId }
749
- });
750
- for (const output of outputs) {
751
- const outputId = (0, utilityHelpers_1.verifyId)(output.outputId);
752
- await this.validateOutputScript(output);
753
- outputVerdicts.set(outputId, output.lockingScript == null ? undefined : await services.isUtxo(output));
754
- }
755
- }
756
- }
882
+ const outputVerdicts = await this.prepareProofRecoveryOutputVerdicts(transactionsToRepair);
757
883
  return await this.transaction(async (trx) => {
758
884
  let log = '';
759
885
  await req.refreshFromStorage(this, trx);
@@ -775,59 +901,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
775
901
  const shouldRepair = requestUpdate != null || tx.status === 'failed';
776
902
  if (!shouldRepair)
777
903
  continue;
778
- if (bsvtx == null || !preparedTransactionIds.has(tx.transactionId)) {
779
- throw new WERR_errors_1.WERR_INTERNAL(`Transaction ${tx.transactionId} changed while preparing proof recovery.`);
780
- }
781
- await this.updateTransaction(tx.transactionId, { status: 'unproven' }, trx);
782
- log += ' '.repeat(indent) + `transaction ${tx.transactionId} status is now 'unproven'\n`;
783
- let vin = -1;
784
- for (const input of bsvtx.inputs) {
785
- vin++;
786
- const sourceTXID = input.sourceTXID;
787
- if (sourceTXID == null) {
788
- log += ' '.repeat(indent + 2) + `input ${vin} has no source transaction id\n`;
789
- continue;
790
- }
791
- const outputs = await this.findOutputs({
792
- partial: {
793
- userId: tx.userId,
794
- txid: sourceTXID,
795
- vout: input.sourceOutputIndex
796
- },
797
- trx
798
- });
799
- if (outputs.length === 1) {
800
- const output = outputs[0];
801
- log += ' '.repeat(indent + 2) +
802
- `input ${vin} matched to output ${output.outputId} updated spentBy ${tx.transactionId}\n`;
803
- await this.updateOutput((0, utilityHelpers_1.verifyId)(output.outputId), { spendable: false, spentBy: tx.transactionId }, trx);
804
- }
805
- else {
806
- log += ' '.repeat(indent + 2) + `input ${vin} not matched to user's outputs\n`;
807
- }
808
- }
809
- const outputs = await this.findOutputs({
810
- partial: { userId: tx.userId, transactionId: tx.transactionId },
811
- trx
812
- });
813
- for (const output of outputs) {
814
- const outputId = (0, utilityHelpers_1.verifyId)(output.outputId);
815
- if (!outputVerdicts.has(outputId)) {
816
- throw new WERR_errors_1.WERR_INTERNAL(`Output ${outputId} changed while preparing proof recovery.`);
817
- }
818
- const isUtxo = outputVerdicts.get(outputId);
819
- if (isUtxo == null) {
820
- log += ' '.repeat(indent + 2) + `output ${output.outputId} does not have a valid locking script\n`;
821
- }
822
- else if (isUtxo === output.spendable) {
823
- log += ' '.repeat(indent + 2) + `output ${output.outputId} unchanged\n`;
824
- }
825
- else {
826
- log += ' '.repeat(indent + 2) +
827
- `output ${output.outputId} set to ${isUtxo ? 'spendable' : 'spent'}\n`;
828
- await this.updateOutput(outputId, { spendable: isUtxo }, trx);
829
- }
830
- }
904
+ log += await this.restoreTransactionForProof(tx, bsvtx, preparedTransactionIds, outputVerdicts, indent, trx);
831
905
  }
832
906
  await req.updateStorageDynamicProperties(this, trx);
833
907
  return log;
@@ -860,9 +934,13 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
860
934
  const transactionIdsNeedingProof = transactions
861
935
  .filter(transaction => transaction.status !== 'completed' || transaction.provenTxId !== proven.provenTxId)
862
936
  .map(transaction => transaction.transactionId);
863
- const updatesSucceeded = await (0, storageProviderHelpers_1.notifyTransactionsOfProof)(transactionIdsNeedingProof, proven.provenTxId, note => req.addHistoryNote(note), async (id, update) => { await this.updateTransaction(id, update, trx); });
937
+ const updatesSucceeded = await (0, storageProviderHelpers_1.notifyTransactionsOfProof)(transactionIdsNeedingProof, proven.provenTxId, note => req.addHistoryNote(note), async (id, update) => {
938
+ await this.updateTransaction(id, update, trx);
939
+ });
864
940
  const completedTransactions = await this.findTransactions({ partial: { txid: req.txid }, trx });
865
- req.notified = updatesSucceeded && completedTransactions.every(transaction => transaction.status === 'completed' && transaction.provenTxId === proven.provenTxId);
941
+ req.notified =
942
+ updatesSucceeded &&
943
+ completedTransactions.every(transaction => transaction.status === 'completed' && transaction.provenTxId === proven.provenTxId);
866
944
  await req.updateStorageDynamicProperties(this, trx);
867
945
  return false;
868
946
  });
@@ -902,7 +980,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
902
980
  return { invalidSpendableOutputs };
903
981
  }
904
982
  async checkOutputIsUtxo(o, services) {
905
- if ((o.lockingScript == null) || o.lockingScript.length === 0)
983
+ if (o.lockingScript == null || o.lockingScript.length === 0)
906
984
  return false;
907
985
  const hash = services.hashOutputScript((0, utilityHelpers_noBuffer_1.asString)(o.lockingScript));
908
986
  const r = await services.getUtxoStatus(hash, undefined, `${o.txid ?? ''}.${o.vout ?? ''}`);
@@ -943,7 +1021,12 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
943
1021
  }
944
1022
  async validateOutputScript(o, trx) {
945
1023
  // without offset and length values return what we have (make no changes)
946
- if (o.scriptLength == null || o.scriptLength === 0 || o.scriptOffset == null || o.scriptOffset === 0 || o.txid == null || o.txid === '')
1024
+ if (o.scriptLength == null ||
1025
+ o.scriptLength === 0 ||
1026
+ o.scriptOffset == null ||
1027
+ o.scriptOffset === 0 ||
1028
+ o.txid == null ||
1029
+ o.txid === '')
947
1030
  return;
948
1031
  // if there is an outputScript and its length is the expected length return what we have.
949
1032
  if (o.lockingScript?.length === o.scriptLength)