@bsv/wallet-toolbox 2.12.0 → 2.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. package/CHANGELOG.md +350 -1
  2. package/README.md +556 -6
  3. package/docs/README.md +8 -1
  4. package/docs/client.md +13057 -4632
  5. package/docs/identity-verification.md +196 -0
  6. package/docs/monitor.md +505 -190
  7. package/docs/services.md +4013 -1153
  8. package/docs/setup.md +98 -58
  9. package/docs/storage.md +5780 -1609
  10. package/docs/sync-transfer.md +144 -0
  11. package/docs/wallet.md +10155 -10871
  12. package/out/src/CWIStyleWalletManager.d.ts +6 -8
  13. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  14. package/out/src/CWIStyleWalletManager.js +170 -125
  15. package/out/src/CWIStyleWalletManager.js.map +1 -1
  16. package/out/src/Setup.d.ts +2 -0
  17. package/out/src/Setup.d.ts.map +1 -1
  18. package/out/src/Setup.js +3 -2
  19. package/out/src/Setup.js.map +1 -1
  20. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  21. package/out/src/ShamirWalletManager.js +34 -19
  22. package/out/src/ShamirWalletManager.js.map +1 -1
  23. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  24. package/out/src/SimpleWalletManager.js +7 -6
  25. package/out/src/SimpleWalletManager.js.map +1 -1
  26. package/out/src/Wallet.d.ts +50 -11
  27. package/out/src/Wallet.d.ts.map +1 -1
  28. package/out/src/Wallet.js +183 -107
  29. package/out/src/Wallet.js.map +1 -1
  30. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  31. package/out/src/WalletAuthenticationManager.js +282 -26
  32. package/out/src/WalletAuthenticationManager.js.map +1 -1
  33. package/out/src/WalletLogger.js +1 -1
  34. package/out/src/WalletLogger.js.map +1 -1
  35. package/out/src/WalletPermissionsManager.d.ts +30 -17
  36. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  37. package/out/src/WalletPermissionsManager.js +540 -312
  38. package/out/src/WalletPermissionsManager.js.map +1 -1
  39. package/out/src/WalletSettingsManager.d.ts +3 -2
  40. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  41. package/out/src/WalletSettingsManager.js +141 -6
  42. package/out/src/WalletSettingsManager.js.map +1 -1
  43. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  44. package/out/src/entropy/EntropyCollector.js +3 -2
  45. package/out/src/entropy/EntropyCollector.js.map +1 -1
  46. package/out/src/fundWalletP2PKH.d.ts.map +1 -1
  47. package/out/src/fundWalletP2PKH.js +143 -44
  48. package/out/src/fundWalletP2PKH.js.map +1 -1
  49. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  50. package/out/src/mockchain/MockChainTracker.js +5 -5
  51. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  52. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  53. package/out/src/mockchain/MockServices.js +32 -8
  54. package/out/src/mockchain/MockServices.js.map +1 -1
  55. package/out/src/monitor/Monitor.d.ts +17 -0
  56. package/out/src/monitor/Monitor.d.ts.map +1 -1
  57. package/out/src/monitor/Monitor.js +206 -42
  58. package/out/src/monitor/Monitor.js.map +1 -1
  59. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  60. package/out/src/monitor/MonitorDaemon.js +64 -16
  61. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  62. package/out/src/monitor/monitorValidation.d.ts +12 -0
  63. package/out/src/monitor/monitorValidation.d.ts.map +1 -0
  64. package/out/src/monitor/monitorValidation.js +133 -0
  65. package/out/src/monitor/monitorValidation.js.map +1 -0
  66. package/out/src/monitor/tasks/TaskArcSSE.d.ts +2 -0
  67. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  68. package/out/src/monitor/tasks/TaskArcSSE.js +28 -12
  69. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  70. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +5 -0
  71. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  72. package/out/src/monitor/tasks/TaskCheckForProofs.js +29 -24
  73. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  74. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  75. package/out/src/monitor/tasks/TaskCheckNoSends.js +11 -3
  76. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  77. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  78. package/out/src/monitor/tasks/TaskFailAbandoned.js +9 -4
  79. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  80. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  81. package/out/src/monitor/tasks/TaskNewHeader.js +3 -1
  82. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  83. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -1
  84. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +9 -3
  85. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -1
  86. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  87. package/out/src/monitor/tasks/TaskReorg.js +4 -4
  88. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  89. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  90. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +17 -7
  91. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  92. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +18 -1
  93. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  94. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +99 -21
  95. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  96. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +4 -4
  97. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  98. package/out/src/monitor/tasks/TaskReviewUtxos.js +41 -13
  99. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  100. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  101. package/out/src/monitor/tasks/TaskSendWaiting.js +52 -11
  102. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  103. package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -0
  104. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  105. package/out/src/monitor/tasks/TaskUnFail.js +26 -8
  106. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  107. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  108. package/out/src/sdk/PrivilegedKeyManager.js +3 -2
  109. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  110. package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
  111. package/out/src/sdk/WalletErrorFromJson.js +112 -2
  112. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  113. package/out/src/sdk/WalletServices.interfaces.d.ts +23 -1
  114. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  115. package/out/src/sdk/WalletStorage.interfaces.d.ts +49 -3
  116. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  117. package/out/src/services/ServiceCollection.js +2 -2
  118. package/out/src/services/ServiceCollection.js.map +1 -1
  119. package/out/src/services/Services.d.ts +5 -0
  120. package/out/src/services/Services.d.ts.map +1 -1
  121. package/out/src/services/Services.js +276 -110
  122. package/out/src/services/Services.js.map +1 -1
  123. package/out/src/services/chaintracker/BHServiceClient.d.ts +21 -4
  124. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  125. package/out/src/services/chaintracker/BHServiceClient.js +267 -66
  126. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  127. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +25 -3
  128. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  129. package/out/src/services/chaintracker/ChaintracksChainTracker.js +188 -53
  130. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  131. package/out/src/services/chaintracker/LocalChainTracker.d.ts +26 -0
  132. package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -1
  133. package/out/src/services/chaintracker/LocalChainTracker.js +180 -10
  134. package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -1
  135. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  136. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +59 -7
  137. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  138. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +6 -0
  139. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
  140. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +7 -0
  141. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
  142. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +2 -0
  143. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -1
  144. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +9 -0
  145. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
  146. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +19 -0
  147. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  148. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +237 -61
  149. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  150. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +16 -0
  151. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  152. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +150 -26
  153. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  154. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +30 -1
  155. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  156. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +346 -30
  157. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  158. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +32 -1
  159. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  160. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +375 -43
  161. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
  162. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  163. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +28 -3
  164. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  165. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  166. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +33 -9
  167. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  168. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  169. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  170. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts.map +1 -1
  171. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +4 -2
  172. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -1
  173. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts +2 -0
  174. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  175. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +17 -4
  176. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  177. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +2 -0
  178. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  179. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +40 -20
  180. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  181. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  182. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +14 -0
  183. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  184. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +6 -0
  185. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
  186. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +56 -9
  187. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
  188. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  189. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +6 -3
  190. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  191. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +4 -0
  192. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  193. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +27 -9
  194. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  195. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +8 -0
  196. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  197. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +49 -5
  198. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  199. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +1 -1
  200. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  201. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +90 -21
  202. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  203. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -1
  204. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  205. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +185 -38
  206. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  207. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  208. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +59 -6
  209. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  210. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +2 -0
  211. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  212. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +89 -39
  213. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  214. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +10 -0
  215. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  216. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +225 -24
  217. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  218. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +2 -1
  219. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  220. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +265 -96
  221. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  222. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +3 -0
  223. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  224. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +225 -86
  225. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  226. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -0
  227. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  228. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +121 -35
  229. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  230. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +2 -2
  231. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  232. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  233. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  234. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  235. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  236. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  238. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  239. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +1 -7
  240. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  241. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  242. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +1 -7
  243. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  244. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  245. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +1 -7
  246. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  247. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +18 -0
  248. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -1
  249. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +204 -14
  250. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -1
  251. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +6 -1
  252. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  253. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +486 -82
  254. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  255. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  256. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +17 -1
  257. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  258. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -1
  259. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +12 -2
  260. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -1
  261. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  262. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +99 -30
  263. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  264. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +1 -0
  265. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  266. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +23 -15
  267. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  268. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +7 -0
  269. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  270. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +90 -24
  271. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  272. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +2 -1
  273. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  274. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +57 -11
  275. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  276. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts +9 -0
  277. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -1
  278. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +100 -14
  279. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -1
  280. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  281. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  282. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts +2 -0
  283. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -1
  284. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +104 -8
  285. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -1
  286. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +1 -0
  287. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -1
  288. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +79 -15
  289. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -1
  290. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +3 -0
  291. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  292. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +15 -0
  293. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  294. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +6 -1
  295. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  296. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +311 -93
  297. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  298. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts +4 -0
  299. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts.map +1 -0
  300. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js +33 -0
  301. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js.map +1 -0
  302. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
  303. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  304. package/out/src/services/classifyOutputUtxo.d.ts.map +1 -1
  305. package/out/src/services/classifyOutputUtxo.js +19 -10
  306. package/out/src/services/classifyOutputUtxo.js.map +1 -1
  307. package/out/src/services/fiatRateValidation.d.ts +12 -0
  308. package/out/src/services/fiatRateValidation.d.ts.map +1 -0
  309. package/out/src/services/fiatRateValidation.js +138 -0
  310. package/out/src/services/fiatRateValidation.js.map +1 -0
  311. package/out/src/services/getCanonicalMerklePath.d.ts +15 -0
  312. package/out/src/services/getCanonicalMerklePath.d.ts.map +1 -0
  313. package/out/src/services/getCanonicalMerklePath.js +90 -0
  314. package/out/src/services/getCanonicalMerklePath.js.map +1 -0
  315. package/out/src/services/providers/ARC.d.ts +3 -16
  316. package/out/src/services/providers/ARC.d.ts.map +1 -1
  317. package/out/src/services/providers/ARC.js +36 -37
  318. package/out/src/services/providers/ARC.js.map +1 -1
  319. package/out/src/services/providers/ArcSSEClient.d.ts +25 -19
  320. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  321. package/out/src/services/providers/ArcSSEClient.js +352 -85
  322. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  323. package/out/src/services/providers/Arcade.d.ts +1 -0
  324. package/out/src/services/providers/Arcade.d.ts.map +1 -1
  325. package/out/src/services/providers/Arcade.js +56 -41
  326. package/out/src/services/providers/Arcade.js.map +1 -1
  327. package/out/src/services/providers/Bitails.d.ts +3 -0
  328. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  329. package/out/src/services/providers/Bitails.js +79 -12
  330. package/out/src/services/providers/Bitails.js.map +1 -1
  331. package/out/src/services/providers/SdkWhatsOnChain.d.ts +8 -2
  332. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  333. package/out/src/services/providers/SdkWhatsOnChain.js +83 -10
  334. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  335. package/out/src/services/providers/WhatsOnChain.d.ts +3 -0
  336. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  337. package/out/src/services/providers/WhatsOnChain.js +221 -69
  338. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  339. package/out/src/services/providers/arcProviderConfig.d.ts +27 -0
  340. package/out/src/services/providers/arcProviderConfig.d.ts.map +1 -0
  341. package/out/src/services/providers/arcProviderConfig.js +83 -0
  342. package/out/src/services/providers/arcProviderConfig.js.map +1 -0
  343. package/out/src/services/providers/arcTxDataValidation.d.ts +4 -0
  344. package/out/src/services/providers/arcTxDataValidation.d.ts.map +1 -0
  345. package/out/src/services/providers/arcTxDataValidation.js +92 -0
  346. package/out/src/services/providers/arcTxDataValidation.js.map +1 -0
  347. package/out/src/services/providers/exchangeRates.d.ts +3 -3
  348. package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
  349. package/out/src/services/providers/exchangeRates.js +153 -226
  350. package/out/src/services/providers/exchangeRates.js.map +1 -1
  351. package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
  352. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  353. package/out/src/services/providers/whatsOnChainHelpers.d.ts +2 -2
  354. package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -1
  355. package/out/src/services/providers/whatsOnChainHelpers.js +11 -8
  356. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
  357. package/out/src/services/validateMerklePathResult.d.ts +30 -0
  358. package/out/src/services/validateMerklePathResult.d.ts.map +1 -0
  359. package/out/src/services/validateMerklePathResult.js +272 -0
  360. package/out/src/services/validateMerklePathResult.js.map +1 -0
  361. package/out/src/services/validatePostBeefResult.d.ts +17 -0
  362. package/out/src/services/validatePostBeefResult.d.ts.map +1 -0
  363. package/out/src/services/validatePostBeefResult.js +334 -0
  364. package/out/src/services/validatePostBeefResult.js.map +1 -0
  365. package/out/src/services/validateRawTxResult.d.ts +6 -0
  366. package/out/src/services/validateRawTxResult.d.ts.map +1 -0
  367. package/out/src/services/validateRawTxResult.js +77 -0
  368. package/out/src/services/validateRawTxResult.js.map +1 -0
  369. package/out/src/services/validateScriptHashHistoryResult.d.ts +5 -0
  370. package/out/src/services/validateScriptHashHistoryResult.d.ts.map +1 -0
  371. package/out/src/services/validateScriptHashHistoryResult.js +99 -0
  372. package/out/src/services/validateScriptHashHistoryResult.js.map +1 -0
  373. package/out/src/services/validateStatusForTxidsResult.d.ts +8 -0
  374. package/out/src/services/validateStatusForTxidsResult.d.ts.map +1 -0
  375. package/out/src/services/validateStatusForTxidsResult.js +181 -0
  376. package/out/src/services/validateStatusForTxidsResult.js.map +1 -0
  377. package/out/src/services/validateUtxoStatusResult.d.ts +6 -0
  378. package/out/src/services/validateUtxoStatusResult.d.ts.map +1 -0
  379. package/out/src/services/validateUtxoStatusResult.js +126 -0
  380. package/out/src/services/validateUtxoStatusResult.js.map +1 -0
  381. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
  382. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
  383. package/out/src/signer/actionBatch/ActionBatchPlanner.js +4 -3
  384. package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
  385. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +6 -5
  386. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
  387. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +70 -76
  388. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
  389. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +2 -2
  390. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -1
  391. package/out/src/signer/actionBatch/actionBatchBootstrap.js +3 -3
  392. package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -1
  393. package/out/src/signer/methods/acquireDirectCertificate.d.ts +3 -2
  394. package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
  395. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  396. package/out/src/signer/methods/buildSignableTransaction.d.ts +6 -5
  397. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  398. package/out/src/signer/methods/buildSignableTransaction.js +6 -11
  399. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  400. package/out/src/signer/methods/createAction.d.ts +4 -3
  401. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  402. package/out/src/signer/methods/createAction.js +4 -2
  403. package/out/src/signer/methods/createAction.js.map +1 -1
  404. package/out/src/signer/methods/createNoSendExpiryAction.d.ts +3 -3
  405. package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -1
  406. package/out/src/signer/methods/createNoSendExpiryAction.js +9 -4
  407. package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -1
  408. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  409. package/out/src/signer/methods/internalizeAction.js +2 -2
  410. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  411. package/out/src/signer/methods/proveCertificate.d.ts +3 -2
  412. package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
  413. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  414. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  415. package/out/src/signer/methods/signAction.js +3 -2
  416. package/out/src/signer/methods/signAction.js.map +1 -1
  417. package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -1
  418. package/out/src/signer/methods/verifyUnlockScripts.js +12 -17
  419. package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -1
  420. package/out/src/storage/StorageIdb.d.ts +6 -3
  421. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  422. package/out/src/storage/StorageIdb.js +70 -42
  423. package/out/src/storage/StorageIdb.js.map +1 -1
  424. package/out/src/storage/StorageKnex.d.ts +8 -4
  425. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  426. package/out/src/storage/StorageKnex.js +185 -92
  427. package/out/src/storage/StorageKnex.js.map +1 -1
  428. package/out/src/storage/StorageProvider.d.ts +19 -9
  429. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  430. package/out/src/storage/StorageProvider.js +237 -138
  431. package/out/src/storage/StorageProvider.js.map +1 -1
  432. package/out/src/storage/StorageReader.d.ts +7 -1
  433. package/out/src/storage/StorageReader.d.ts.map +1 -1
  434. package/out/src/storage/StorageReader.js +17 -42
  435. package/out/src/storage/StorageReader.js.map +1 -1
  436. package/out/src/storage/StorageReaderWriter.d.ts +2 -0
  437. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  438. package/out/src/storage/StorageReaderWriter.js +63 -38
  439. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  440. package/out/src/storage/StorageSyncReader.d.ts +1 -1
  441. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  442. package/out/src/storage/StorageSyncReader.js +3 -36
  443. package/out/src/storage/StorageSyncReader.js.map +1 -1
  444. package/out/src/storage/WalletStorageManager.d.ts +9 -7
  445. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  446. package/out/src/storage/WalletStorageManager.js +71 -65
  447. package/out/src/storage/WalletStorageManager.js.map +1 -1
  448. package/out/src/storage/adminServer/adminServer.d.ts +1 -1
  449. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  450. package/out/src/storage/adminServer/adminServer.js +16 -44
  451. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  452. package/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
  453. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  454. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  455. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +7 -4
  456. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  457. package/out/src/storage/methods/ListOutputsSpecOp.js +1 -0
  458. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  459. package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
  460. package/out/src/storage/methods/actionBatch.js +3 -2
  461. package/out/src/storage/methods/actionBatch.js.map +1 -1
  462. package/out/src/storage/methods/actionBatchBlobs.d.ts +2 -0
  463. package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
  464. package/out/src/storage/methods/actionBatchBlobs.js +40 -22
  465. package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
  466. package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
  467. package/out/src/storage/methods/actionBatchValidation.js +22 -30
  468. package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
  469. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +7 -2
  470. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  471. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +57 -44
  472. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  473. package/out/src/storage/methods/createAction.d.ts +7 -6
  474. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  475. package/out/src/storage/methods/createAction.js +7 -5
  476. package/out/src/storage/methods/createAction.js.map +1 -1
  477. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  478. package/out/src/storage/methods/generateChange.js +12 -11
  479. package/out/src/storage/methods/generateChange.js.map +1 -1
  480. package/out/src/storage/methods/getBeefForTransaction.js +5 -7
  481. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  482. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  483. package/out/src/storage/methods/getSyncChunk.js +42 -11
  484. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  485. package/out/src/storage/methods/internalizeAction.d.ts +3 -3
  486. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  487. package/out/src/storage/methods/internalizeAction.js +134 -129
  488. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  489. package/out/src/storage/methods/listActionsIdb.d.ts +3 -2
  490. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  491. package/out/src/storage/methods/listActionsIdb.js +2 -2
  492. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  493. package/out/src/storage/methods/listActionsKnex.d.ts +3 -2
  494. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
  495. package/out/src/storage/methods/listActionsKnex.js +10 -9
  496. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  497. package/out/src/storage/methods/listCertificates.d.ts +3 -2
  498. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  499. package/out/src/storage/methods/listCertificates.js.map +1 -1
  500. package/out/src/storage/methods/listOutputsIdb.d.ts +3 -2
  501. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  502. package/out/src/storage/methods/listOutputsIdb.js +11 -11
  503. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  504. package/out/src/storage/methods/listOutputsKnex.d.ts +3 -2
  505. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  506. package/out/src/storage/methods/listOutputsKnex.js +15 -23
  507. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  508. package/out/src/storage/methods/noSendExpiry.d.ts +3 -3
  509. package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -1
  510. package/out/src/storage/methods/noSendExpiry.js +10 -8
  511. package/out/src/storage/methods/noSendExpiry.js.map +1 -1
  512. package/out/src/storage/methods/preparedBeef.d.ts.map +1 -1
  513. package/out/src/storage/methods/preparedBeef.js +13 -14
  514. package/out/src/storage/methods/preparedBeef.js.map +1 -1
  515. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  516. package/out/src/storage/methods/processAction.js +37 -6
  517. package/out/src/storage/methods/processAction.js.map +1 -1
  518. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +1 -1
  519. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -1
  520. package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -1
  521. package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
  522. package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
  523. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  524. package/out/src/storage/methods/reviewUtxoOutputs.d.ts +1 -0
  525. package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -1
  526. package/out/src/storage/methods/reviewUtxoOutputs.js +51 -4
  527. package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -1
  528. package/out/src/storage/methods/validateSyncProof.d.ts +10 -2
  529. package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -1
  530. package/out/src/storage/methods/validateSyncProof.js +27 -4
  531. package/out/src/storage/methods/validateSyncProof.js.map +1 -1
  532. package/out/src/storage/portable/index.d.ts.map +1 -1
  533. package/out/src/storage/portable/index.js +21 -13
  534. package/out/src/storage/portable/index.js.map +1 -1
  535. package/out/src/storage/remoting/BinaryJson.d.ts +11 -0
  536. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
  537. package/out/src/storage/remoting/BinaryJson.js +94 -8
  538. package/out/src/storage/remoting/BinaryJson.js.map +1 -1
  539. package/out/src/storage/remoting/KnexSessionManager.d.ts +26 -2
  540. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
  541. package/out/src/storage/remoting/KnexSessionManager.js +222 -30
  542. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
  543. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts +26 -0
  544. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -0
  545. package/out/src/storage/remoting/KnexSyncTransferStore.js +222 -0
  546. package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -0
  547. package/out/src/storage/remoting/StorageClient.d.ts +6 -1
  548. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  549. package/out/src/storage/remoting/StorageClient.js +65 -8
  550. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  551. package/out/src/storage/remoting/StorageClientBase.d.ts +53 -10
  552. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  553. package/out/src/storage/remoting/StorageClientBase.js +304 -9
  554. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  555. package/out/src/storage/remoting/StorageMobile.d.ts +5 -0
  556. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  557. package/out/src/storage/remoting/StorageMobile.js +13 -11
  558. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  559. package/out/src/storage/remoting/StorageServer.d.ts +10 -1
  560. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  561. package/out/src/storage/remoting/StorageServer.js +206 -21
  562. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  563. package/out/src/storage/remoting/SyncTransfer.d.ts +29 -0
  564. package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -0
  565. package/out/src/storage/remoting/SyncTransfer.js +153 -0
  566. package/out/src/storage/remoting/SyncTransfer.js.map +1 -0
  567. package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
  568. package/out/src/storage/remoting/entityValidationHelpers.js +35 -0
  569. package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
  570. package/out/src/storage/remoting/syncChunkBinary.d.ts +4 -0
  571. package/out/src/storage/remoting/syncChunkBinary.d.ts.map +1 -0
  572. package/out/src/storage/remoting/syncChunkBinary.js +38 -0
  573. package/out/src/storage/remoting/syncChunkBinary.js.map +1 -0
  574. package/out/src/storage/remoting/validateRpcSyncProofs.d.ts +5 -0
  575. package/out/src/storage/remoting/validateRpcSyncProofs.d.ts.map +1 -0
  576. package/out/src/storage/remoting/validateRpcSyncProofs.js +82 -0
  577. package/out/src/storage/remoting/validateRpcSyncProofs.js.map +1 -0
  578. package/out/src/storage/schema/KnexMigrations.d.ts +3 -0
  579. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  580. package/out/src/storage/schema/KnexMigrations.js +89 -2
  581. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  582. package/out/src/storage/schema/StorageIdbSchema.d.ts +1 -0
  583. package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
  584. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  585. package/out/src/storage/schema/entities/EntityOutput.js +11 -4
  586. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  587. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +2 -1
  588. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  589. package/out/src/storage/schema/entities/EntityProvenTx.js +95 -41
  590. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  591. package/out/src/storage/schema/entities/EntityProvenTxReq.js +1 -1
  592. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  593. package/out/src/storage/schema/entities/EntitySyncState.d.ts +3 -1
  594. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  595. package/out/src/storage/schema/entities/EntitySyncState.js +7 -1
  596. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  597. package/out/src/storage/schema/tables/TableCertificate.d.ts +1 -1
  598. package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
  599. package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
  600. package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
  601. package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
  602. package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
  603. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
  604. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
  605. package/out/src/storage/schema/tables/TableOutput.d.ts +1 -1
  606. package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
  607. package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
  608. package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
  609. package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
  610. package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
  611. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
  612. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
  613. package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
  614. package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
  615. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +1 -1
  616. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
  617. package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
  618. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  619. package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
  620. package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
  621. package/out/src/storage/schema/tables/TableTransaction.d.ts +1 -1
  622. package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
  623. package/out/src/storage/schema/tables/TableTransaction.js.map +1 -1
  624. package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
  625. package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
  626. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
  627. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
  628. package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
  629. package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
  630. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  631. package/out/src/storage/sync/StorageMySQLDojoReader.js +8 -7
  632. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  633. package/out/src/storage/sync/SyncPageBudget.d.ts +8 -0
  634. package/out/src/storage/sync/SyncPageBudget.d.ts.map +1 -0
  635. package/out/src/storage/sync/SyncPageBudget.js +24 -0
  636. package/out/src/storage/sync/SyncPageBudget.js.map +1 -0
  637. package/out/src/storage/sync/syncCheckpoint.d.ts +4 -0
  638. package/out/src/storage/sync/syncCheckpoint.d.ts.map +1 -0
  639. package/out/src/storage/sync/syncCheckpoint.js +49 -0
  640. package/out/src/storage/sync/syncCheckpoint.js.map +1 -0
  641. package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
  642. package/out/src/utility/actionBatchDigest.js +9 -7
  643. package/out/src/utility/actionBatchDigest.js.map +1 -1
  644. package/out/src/utility/actionBatchPack.d.ts.map +1 -1
  645. package/out/src/utility/actionBatchPack.js +7 -12
  646. package/out/src/utility/actionBatchPack.js.map +1 -1
  647. package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
  648. package/out/src/utility/brc153ReferenceLabels.js +4 -4
  649. package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
  650. package/out/src/utility/brc177NoSendExpiry.d.ts +2 -2
  651. package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -1
  652. package/out/src/utility/canonicalizeAtomicBeef.js +2 -2
  653. package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -1
  654. package/out/src/utility/exactActionSpend.d.ts +11 -0
  655. package/out/src/utility/exactActionSpend.d.ts.map +1 -0
  656. package/out/src/utility/exactActionSpend.js +11 -0
  657. package/out/src/utility/exactActionSpend.js.map +1 -0
  658. package/out/src/utility/identityUtils.d.ts +44 -4
  659. package/out/src/utility/identityUtils.d.ts.map +1 -1
  660. package/out/src/utility/identityUtils.js +376 -61
  661. package/out/src/utility/identityUtils.js.map +1 -1
  662. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  663. package/out/src/utility/parseTxScriptOffsets.js +1 -19
  664. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  665. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  666. package/out/src/utility/tscProofToMerklePath.js +35 -4
  667. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  668. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  669. package/out/src/utility/utilityHelpers.js +8 -6
  670. package/out/src/utility/utilityHelpers.js.map +1 -1
  671. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  672. package/out/src/utility/utilityHelpers.noBuffer.js +6 -6
  673. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  674. package/out/src/utility/verifyOverlayOutput.d.ts +12 -0
  675. package/out/src/utility/verifyOverlayOutput.d.ts.map +1 -0
  676. package/out/src/utility/verifyOverlayOutput.js +22 -0
  677. package/out/src/utility/verifyOverlayOutput.js.map +1 -0
  678. package/out/src/utility/walletResultGuards.d.ts +14 -0
  679. package/out/src/utility/walletResultGuards.d.ts.map +1 -0
  680. package/out/src/utility/walletResultGuards.js +28 -0
  681. package/out/src/utility/walletResultGuards.js.map +1 -0
  682. package/out/src/wab-client/WABClient.d.ts +3 -17
  683. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  684. package/out/src/wab-client/WABClient.js +30 -14
  685. package/out/src/wab-client/WABClient.js.map +1 -1
  686. package/out/src/wab-client/WABResponseValidation.d.ts +48 -0
  687. package/out/src/wab-client/WABResponseValidation.d.ts.map +1 -0
  688. package/out/src/wab-client/WABResponseValidation.js +321 -0
  689. package/out/src/wab-client/WABResponseValidation.js.map +1 -0
  690. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  691. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -2
  692. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  693. package/package.json +6 -5
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StorageProvider = void 0;
4
4
  exports.validateStorageFeeModel = validateStorageFeeModel;
5
+ const validationHelpers_1 = require("@bsv/sdk/wallet/validationHelpers");
5
6
  const sdk_1 = require("@bsv/sdk");
6
7
  const storageProviderHelpers_1 = require("./storageProviderHelpers");
7
8
  const getBeefForTransaction_1 = require("./methods/getBeefForTransaction");
@@ -24,6 +25,8 @@ const actionBatchBlobs_1 = require("./methods/actionBatchBlobs");
24
25
  const availableManagedChange_1 = require("./methods/availableManagedChange");
25
26
  const managedChangePolicy_1 = require("./methods/managedChangePolicy");
26
27
  const noSendExpiry_1 = require("./methods/noSendExpiry");
28
+ const MAX_AUTH_PROOF_REQUEST_FALLBACK_ROWS = 10_000;
29
+ const MAX_AUTH_PROOF_REQUEST_TXIDS = 1_000;
27
30
  class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
28
31
  isDirty = false;
29
32
  _services;
@@ -58,8 +61,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
58
61
  this.commissionSatoshis = options.commissionSatoshis;
59
62
  this.maxRecursionDepth = 12;
60
63
  const maxReservedOutputs = options.actionBatchMaxReservedOutputs ?? 256;
61
- if (maxReservedOutputs !== -1 &&
62
- (!Number.isSafeInteger(maxReservedOutputs) || maxReservedOutputs < 1)) {
64
+ if (maxReservedOutputs !== -1 && (!Number.isSafeInteger(maxReservedOutputs) || maxReservedOutputs < 1)) {
63
65
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('actionBatchMaxReservedOutputs', 'a positive safe integer or -1 for unlimited');
64
66
  }
65
67
  this.actionBatchMaxReservedOutputs = maxReservedOutputs;
@@ -203,14 +205,50 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
203
205
  }
204
206
  async getCapabilities() {
205
207
  return {
206
- ...(this.supportsNoSendExpiryPersistence()
207
- ? { brc177NoSendExpiry: { version: 1 } }
208
- : {}),
208
+ ...(this.supportsNoSendExpiryPersistence() ? { brc177NoSendExpiry: { version: 1 } } : {}),
209
209
  ...(this.supportsActionBatchPersistence()
210
210
  ? (0, actionBatch_1.getActionBatchCapabilities)(this.actionBatchMaxReservedOutputs, true)
211
211
  : {})
212
212
  };
213
213
  }
214
+ /**
215
+ * Restrict remotely requested proof work to transactions tracked by the
216
+ * authenticated wallet. ProvenTxReq rows are globally deduplicated, so their
217
+ * own schema has no userId column and must be authorized through transactions.
218
+ */
219
+ async findProvenTxReqsAuth(auth, args) {
220
+ const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
221
+ let requestedTxids;
222
+ if (args.txids?.length) {
223
+ if (args.txids.length > MAX_AUTH_PROOF_REQUEST_TXIDS) {
224
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.txids', `at most ${MAX_AUTH_PROOF_REQUEST_TXIDS} transaction IDs`);
225
+ }
226
+ requestedTxids = [];
227
+ for (const txid of args.txids) {
228
+ if ((await this.countTransactions({ partial: { userId, txid }, trx: args.trx })) > 0) {
229
+ requestedTxids.push(txid);
230
+ }
231
+ }
232
+ }
233
+ else {
234
+ // Built-in providers override this method with a joined/indexed query.
235
+ // Keep third-party implementations safe even when they only implement
236
+ // the older reader surface: bound the compatibility ownership scan and
237
+ // require exact txids for wallets beyond it.
238
+ const owned = await this.getProvenTxReqsForUser({
239
+ userId,
240
+ paged: { limit: MAX_AUTH_PROOF_REQUEST_FALLBACK_ROWS + 1, offset: 0 },
241
+ trx: args.trx
242
+ });
243
+ if (owned.length > MAX_AUTH_PROOF_REQUEST_FALLBACK_ROWS) {
244
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('Authenticated proof-request scans beyond 10,000 rows require a provider-native scoped query or exact txids');
245
+ }
246
+ requestedTxids = owned.map(request => request.txid);
247
+ }
248
+ if (requestedTxids.length === 0)
249
+ return [];
250
+ return await this.findProvenTxReqs({ ...args, txids: requestedTxids });
251
+ }
214
252
  async prepareNoSendExpiry(auth, args) {
215
253
  if (auth.isActive !== true)
216
254
  throw new WERR_errors_1.WERR_NOT_ACTIVE('BRC-177 requires the active storage provider');
@@ -386,22 +424,16 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
386
424
  }));
387
425
  }
388
426
  const unAbortableStatus = ['completed', 'failed', 'sending', 'unproven'];
389
- const brc177TerminalOrRacing = tx?.noSendExpiryState != null && [
390
- 'broadcast',
391
- 'reclaiming',
392
- 'reclaimed',
393
- 'target-won',
394
- 'conflicted',
395
- 'cancelled'
396
- ].includes(tx.noSendExpiryState);
427
+ const brc177TerminalOrRacing = tx?.noSendExpiryState != null &&
428
+ ['broadcast', 'reclaiming', 'reclaimed', 'target-won', 'conflicted', 'cancelled'].includes(tx.noSendExpiryState);
397
429
  if (tx == null || !tx.isOutgoing || (unAbortableStatus.includes(tx.status) && !brc177TerminalOrRacing)) {
398
430
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('reference', 'an inprocess, outgoing action that has not been signed and shared to the network.');
399
431
  }
400
432
  return { tx, reference };
401
433
  }
402
- async checkAbortChainProtection(tx, args, trx) {
403
- if (tx.txid == null || tx.txid === '' || tx.status !== 'nosend') {
404
- return { skipped: false, serviceUnreachable: false };
434
+ async observeAbortChainProtection(tx) {
435
+ if (tx.txid == null || tx.txid === '' || tx.status !== 'nosend' || tx.noSendExpiryState != null) {
436
+ return undefined;
405
437
  }
406
438
  let serviceUnreachable = false;
407
439
  let chainStatus;
@@ -417,23 +449,16 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
417
449
  catch {
418
450
  serviceUnreachable = true;
419
451
  }
420
- if (chainStatus !== 'mined' && chainStatus !== 'known') {
421
- return { skipped: false, serviceUnreachable };
422
- }
423
- const req = await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
424
- if (req != null) {
425
- req.addHistoryNote({
426
- what: 'abortAction-skipped-onchain',
427
- reference: args.reference,
428
- chainStatus
429
- });
430
- await req.updateStorageDynamicProperties(this, trx);
431
- }
432
- return { skipped: true, serviceUnreachable };
452
+ return {
453
+ transactionId: tx.transactionId,
454
+ txid: tx.txid,
455
+ chainStatus,
456
+ serviceUnreachable
457
+ };
433
458
  }
434
459
  async invalidateAbortedTransaction(tx, userId, reference, originalReference, serviceUnreachable, trx) {
435
460
  if (tx.noSendExpiryState === 'preparing' || tx.noSendExpiryState === 'unsigned') {
436
- if (!await this.compareAndSetNoSendExpiryState(tx.transactionId, tx.noSendExpiryState, 'cancelled', trx)) {
461
+ if (!(await this.compareAndSetNoSendExpiryState(tx.transactionId, tx.noSendExpiryState, 'cancelled', trx))) {
437
462
  throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 action changed while it was being aborted');
438
463
  }
439
464
  }
@@ -454,82 +479,111 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
454
479
  if (auth.userId == null)
455
480
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('auth.userId', 'valid');
456
481
  const userId = auth.userId;
457
- const r = await this.transaction(async (trx) => {
458
- const { tx, reference } = await this.findAbortableTransaction(userId, args, trx);
459
- if (tx.noSendExpiryState != null && auth.isActive !== true) {
460
- throw new WERR_errors_1.WERR_NOT_ACTIVE('BRC-177 requires the active storage provider');
461
- }
462
- if (tx.noSendExpiryState === 'signed') {
463
- // A released BRC-177 transaction must never be invalidated locally: the
464
- // recipient may be broadcasting it at this instant. Make it due and let
465
- // the lifecycle's positive chain/UTXO checks arbitrate the race.
466
- if (!await this.compareAndSetNoSendExpiryState(tx.transactionId, 'signed', 'revocation-requested', trx)) {
467
- throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 action changed while early revocation was requested');
482
+ let r;
483
+ for (let attempt = 0; attempt < 2; attempt++) {
484
+ // IndexedDB write transactions can auto-commit while awaiting non-database
485
+ // promises. Observe the chain before opening the write transaction, then
486
+ // bind the observation to the exact row and txid re-read below.
487
+ const preflight = await this.findAbortableTransaction(userId, args);
488
+ const chainObservation = await this.observeAbortChainProtection(preflight.tx);
489
+ r = await this.transaction(async (trx) => {
490
+ const { tx, reference } = await this.findAbortableTransaction(userId, args, trx);
491
+ if (tx.noSendExpiryState != null && auth.isActive !== true) {
492
+ throw new WERR_errors_1.WERR_NOT_ACTIVE('BRC-177 requires the active storage provider');
468
493
  }
469
- const req = tx.txid == null ? undefined : await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
470
- if (req != null) {
471
- req.addHistoryNote({ what: 'brc177-early-abort-reclaim-requested', reference: args.reference });
472
- await req.updateStorageDynamicProperties(this, trx);
494
+ if (tx.noSendExpiryState === 'signed') {
495
+ // A released BRC-177 transaction must never be invalidated locally: the
496
+ // recipient may be broadcasting it at this instant. Make it due and let
497
+ // the lifecycle's positive chain/UTXO checks arbitrate the race.
498
+ if (!(await this.compareAndSetNoSendExpiryState(tx.transactionId, 'signed', 'revocation-requested', trx))) {
499
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 action changed while early revocation was requested');
500
+ }
501
+ const req = tx.txid == null ? undefined : await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
502
+ if (req != null) {
503
+ req.addHistoryNote({ what: 'brc177-early-abort-reclaim-requested', reference: args.reference });
504
+ await req.updateStorageDynamicProperties(this, trx);
505
+ }
506
+ return {
507
+ __abortAction: 'brc177-reclaim-requested',
508
+ transactionId: tx.transactionId
509
+ };
473
510
  }
474
- return {
475
- __abortAction: 'brc177-reclaim-requested',
476
- transactionId: tx.transactionId
477
- };
478
- }
479
- if (tx.noSendExpiryState === 'revocation-requested') {
480
- return {
481
- __abortAction: 'brc177-reclaim-requested',
482
- transactionId: tx.transactionId
483
- };
484
- }
485
- if (tx.noSendExpiryState === 'reclaiming' || tx.noSendExpiryState === 'reclaimed') {
486
- return { __abortAction: 'brc177-reclaim-in-progress' };
487
- }
488
- if (tx.noSendExpiryState === 'cancelled') {
489
- return { __abortAction: 'brc177-cancelled' };
490
- }
491
- if (tx.noSendExpiryState === 'broadcast' || tx.noSendExpiryState === 'target-won' ||
492
- tx.noSendExpiryState === 'conflicted') {
493
- return { __abortAction: 'brc177-target-protected' };
494
- }
495
- // Chain-status protection for signed nosend txs.
496
- //
497
- // Background: a nosend tx (created via createAction({noSend:true}))
498
- // can be externally broadcast by the caller and reach 'mined' or
499
- // mempool-'known' status before any internalizeAction or Monitor
500
- // cycle has retired its 'nosend' status in storage. If abortAction
501
- // is invoked on it in that window, the destructive transitions
502
- // below (transactions.status='failed' + proven_tx_reqs.status='invalid')
503
- // orphan every output the tx produced including auto-fund change
504
- // outputs the wallet itself emitted because listOutputs filters
505
- // them out of the spendable set on parent-tx 'failed' status.
506
- //
507
- // Protection: if the tx has a txid AND status is 'nosend', ask
508
- // the network whether it already knows about the tx before
509
- // invalidating. getStatusForTxids returns 'mined' | 'known' |
510
- // 'unknown' per StatusForTxidResult (WalletServices.interfaces.ts).
511
- // Refuse the abort for 'mined' OR 'known' — a tx that's broadcast
512
- // and propagating in mempool returns 'known' (depth===0) and
513
- // protecting it avoids orphaning during the propagation window.
514
- //
515
- // Service-unreachable handling: proceed with abort. Refusal is
516
- // reserved for positive on-chain confirmation. When the network
517
- // confirmation pathway is itself unavailable (services throw or
518
- // gracefully return r.status !== 'success'), confirmation is not
519
- // possible and per the BRC-100 contract callers retain the
520
- // ability to abort offline. The fallback writes a forensic
521
- // history note ('abortAction-offline-fallback') so an operator
522
- // can grep for aborts that proceeded under uncertainty. This
523
- // hole can never be 100% closed against externally-broadcast
524
- // chain-confirmed txs while offline; the audit trail makes it
525
- // recoverable.
526
- const protection = await this.checkAbortChainProtection(tx, args, trx);
527
- if (protection.skipped) {
528
- // Commit the audit note before translating this sentinel to aborted:false.
529
- return { __abortAction: 'skipped-onchain' };
530
- }
531
- return await this.invalidateAbortedTransaction(tx, userId, reference, args.reference, protection.serviceUnreachable, trx);
532
- });
511
+ if (tx.noSendExpiryState === 'revocation-requested') {
512
+ return {
513
+ __abortAction: 'brc177-reclaim-requested',
514
+ transactionId: tx.transactionId
515
+ };
516
+ }
517
+ if (tx.noSendExpiryState === 'reclaiming' || tx.noSendExpiryState === 'reclaimed') {
518
+ return { __abortAction: 'brc177-reclaim-in-progress' };
519
+ }
520
+ if (tx.noSendExpiryState === 'cancelled') {
521
+ return { __abortAction: 'brc177-cancelled' };
522
+ }
523
+ if (tx.noSendExpiryState === 'broadcast' ||
524
+ tx.noSendExpiryState === 'target-won' ||
525
+ tx.noSendExpiryState === 'conflicted') {
526
+ return { __abortAction: 'brc177-target-protected' };
527
+ }
528
+ // Chain-status protection for signed nosend txs.
529
+ //
530
+ // Background: a nosend tx (created via createAction({noSend:true}))
531
+ // can be externally broadcast by the caller and reach 'mined' or
532
+ // mempool-'known' status before any internalizeAction or Monitor
533
+ // cycle has retired its 'nosend' status in storage. If abortAction
534
+ // is invoked on it in that window, the destructive transitions
535
+ // below (transactions.status='failed' + proven_tx_reqs.status='invalid')
536
+ // orphan every output the tx produced — including auto-fund change
537
+ // outputs the wallet itself emitted because listOutputs filters
538
+ // them out of the spendable set on parent-tx 'failed' status.
539
+ //
540
+ // Protection: if the tx has a txid AND status is 'nosend', ask
541
+ // the network whether it already knows about the tx before
542
+ // invalidating. getStatusForTxids returns 'mined' | 'known' |
543
+ // 'unknown' per StatusForTxidResult (WalletServices.interfaces.ts).
544
+ // Refuse the abort for 'mined' OR 'known' a tx that's broadcast
545
+ // and propagating in mempool returns 'known' (depth===0) and
546
+ // protecting it avoids orphaning during the propagation window.
547
+ //
548
+ // Service-unreachable handling: proceed with abort. Refusal is
549
+ // reserved for positive on-chain confirmation. When the network
550
+ // confirmation pathway is itself unavailable (services throw or
551
+ // gracefully return r.status !== 'success'), confirmation is not
552
+ // possible and per the BRC-100 contract callers retain the
553
+ // ability to abort offline. The fallback writes a forensic
554
+ // history note ('abortAction-offline-fallback') so an operator
555
+ // can grep for aborts that proceeded under uncertainty. This
556
+ // hole can never be 100% closed against externally-broadcast
557
+ // chain-confirmed txs while offline; the audit trail makes it
558
+ // recoverable.
559
+ if (tx.txid != null && tx.txid !== '' && tx.status === 'nosend' && tx.noSendExpiryState == null) {
560
+ if (chainObservation == null ||
561
+ chainObservation.transactionId !== tx.transactionId ||
562
+ chainObservation.txid !== tx.txid) {
563
+ return { __abortAction: 'retry-chain-check' };
564
+ }
565
+ if (chainObservation.chainStatus === 'mined' || chainObservation.chainStatus === 'known') {
566
+ const req = await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
567
+ if (req != null) {
568
+ req.addHistoryNote({
569
+ what: 'abortAction-skipped-onchain',
570
+ reference: args.reference,
571
+ chainStatus: chainObservation.chainStatus
572
+ });
573
+ await req.updateStorageDynamicProperties(this, trx);
574
+ }
575
+ // Commit the audit note before translating this sentinel to aborted:false.
576
+ return { __abortAction: 'skipped-onchain' };
577
+ }
578
+ }
579
+ return await this.invalidateAbortedTransaction(tx, userId, reference, args.reference, chainObservation?.serviceUnreachable ?? false, trx);
580
+ });
581
+ if (!('__abortAction' in r) || r.__abortAction !== 'retry-chain-check')
582
+ break;
583
+ }
584
+ if (r == null || ('__abortAction' in r && r.__abortAction === 'retry-chain-check')) {
585
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('Action changed while its chain status was being checked; retry abortAction');
586
+ }
533
587
  if ('__abortAction' in r) {
534
588
  if (r.__abortAction === 'brc177-reclaim-requested') {
535
589
  await (0, noSendExpiryLifecycle_1.processNoSendExpiryLifecycle)(this).catch(() => undefined);
@@ -537,7 +591,8 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
537
591
  partial: { transactionId: r.transactionId },
538
592
  noRawTx: true
539
593
  }));
540
- if (current.noSendExpiryState === 'broadcast' || current.noSendExpiryState === 'target-won' ||
594
+ if (current.noSendExpiryState === 'broadcast' ||
595
+ current.noSendExpiryState === 'target-won' ||
541
596
  current.noSendExpiryState === 'conflicted') {
542
597
  return { aborted: false };
543
598
  }
@@ -605,6 +660,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
605
660
  }
606
661
  catch (error_) {
607
662
  const e = WalletError_1.WalletError.fromUnknown(error_);
663
+ d.status = 'error';
608
664
  d.error = `${e.name}: ${e.message}`;
609
665
  }
610
666
  }
@@ -836,7 +892,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
836
892
  if (chainTracker != null) {
837
893
  const root = mp.computeRoot();
838
894
  const isValid = await chainTracker.isValidRootForHeight(root, proven.height);
839
- if (!isValid) {
895
+ if (isValid !== true) {
840
896
  if (skipInvalidProofs !== true)
841
897
  throw new WERR_errors_1.WERR_INVALID_MERKLE_ROOT(proven.blockHash, proven.height, root, txid);
842
898
  // Proof is currently invalid — recurse deeper via rawTx path
@@ -888,9 +944,10 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
888
944
  return (0, utilityHelpers_1.verifyOneOrNone)(await this.findMonitorEvents({ partial: { id }, trx }));
889
945
  }
890
946
  async relinquishCertificate(auth, args) {
891
- const vargs = sdk_1.Validation.validateRelinquishCertificateArgs(args);
947
+ const vargs = (0, validationHelpers_1.validateRelinquishCertificateArgs)(args);
892
948
  const cert = (0, utilityHelpers_1.verifyOne)(await this.findCertificates({
893
949
  partial: {
950
+ userId: auth.userId,
894
951
  certifier: vargs.certifier,
895
952
  serialNumber: vargs.serialNumber,
896
953
  type: vargs.type
@@ -901,8 +958,8 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
901
958
  });
902
959
  }
903
960
  async relinquishOutput(auth, args) {
904
- const vargs = sdk_1.Validation.validateRelinquishOutputArgs(args);
905
- const { txid, vout } = sdk_1.Validation.parseWalletOutpoint(vargs.output);
961
+ const vargs = (0, validationHelpers_1.validateRelinquishOutputArgs)(args);
962
+ const { txid, vout } = (0, validationHelpers_1.parseWalletOutpoint)(vargs.output);
906
963
  const output = (0, utilityHelpers_1.verifyOne)(await this.findOutputs({ partial: { userId: auth.userId, txid, vout } }));
907
964
  return await this.updateOutput(output.outputId, { basketId: undefined });
908
965
  }
@@ -935,13 +992,30 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
935
992
  return await this.transaction(async (trx) => {
936
993
  const user = (0, utilityHelpers_1.verifyTruthy)((0, utilityHelpers_1.verifyOneOrNone)(await this.findUsers({ partial: { identityKey: args.identityKey }, trx })));
937
994
  const ss = new entities_1.EntitySyncState((0, utilityHelpers_1.verifyOne)(await this.findSyncStates({
938
- partial: {
939
- storageIdentityKey: args.fromStorageIdentityKey,
940
- userId: user.userId
941
- },
995
+ partial: args.syncStateId == null
996
+ ? {
997
+ storageIdentityKey: args.fromStorageIdentityKey,
998
+ userId: user.userId
999
+ }
1000
+ : {
1001
+ syncStateId: args.syncStateId,
1002
+ storageIdentityKey: args.fromStorageIdentityKey,
1003
+ userId: user.userId
1004
+ },
942
1005
  trx
943
1006
  })));
944
- return await ss.processSyncChunk(this, args, chunk, trx);
1007
+ if (args.requireMatchingCheckpoint === true) {
1008
+ const checkpoint = ss.makeSyncCheckpoint();
1009
+ const sameSince = (checkpoint.since == null ? undefined : new Date(checkpoint.since).getTime()) ===
1010
+ (args.since == null ? undefined : new Date(args.since).getTime());
1011
+ if (!sameSince ||
1012
+ checkpoint.offsets.length !== args.offsets.length ||
1013
+ checkpoint.offsets.some((entry, index) => entry.name !== args.offsets[index]?.name || entry.offset !== args.offsets[index]?.offset)) {
1014
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('Wallet sync checkpoint changed; resume from its durable state before retrying');
1015
+ }
1016
+ }
1017
+ const result = await ss.processSyncChunk(this, args, chunk, trx);
1018
+ return args.includeNextCheckpoint === true ? { ...result, nextCheckpoint: ss.makeSyncCheckpoint() } : result;
945
1019
  });
946
1020
  }
947
1021
  /**
@@ -957,8 +1031,11 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
957
1031
  *
958
1032
  * Alterations of "typically" to handle:
959
1033
  */
960
- async updateProvenTxReqWithNewProvenTx(args) {
1034
+ async updateProvenTxReqWithNewProvenTx(args, validatedCandidate) {
961
1035
  const req = await entities_1.EntityProvenTxReq.fromStorageId(this, args.provenTxReqId);
1036
+ if (req.txid.toLowerCase() !== args.txid.toLowerCase()) {
1037
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.txid', 'the transaction id of the selected proof request');
1038
+ }
962
1039
  let proven;
963
1040
  if (req.provenTxId != null && req.provenTxId > 0) {
964
1041
  // Someone beat us to it, grab what we need for results...
@@ -970,19 +1047,20 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
970
1047
  }
971
1048
  }
972
1049
  else {
1050
+ const candidate = validatedCandidate ?? {
1051
+ created_at: new Date(),
1052
+ updated_at: new Date(),
1053
+ provenTxId: 0,
1054
+ txid: args.txid,
1055
+ height: args.height,
1056
+ index: args.index,
1057
+ merklePath: args.merklePath,
1058
+ rawTx: req.rawTx,
1059
+ blockHash: args.blockHash,
1060
+ merkleRoot: args.merkleRoot
1061
+ };
973
1062
  proven = await this.transaction(async (trx) => {
974
- const { proven: api } = await this.findOrInsertProvenTx({
975
- created_at: new Date(),
976
- updated_at: new Date(),
977
- provenTxId: 0,
978
- txid: args.txid,
979
- height: args.height,
980
- index: args.index,
981
- merklePath: args.merklePath,
982
- rawTx: req.rawTx,
983
- blockHash: args.blockHash,
984
- merkleRoot: args.merkleRoot
985
- }, trx);
1063
+ const { proven: api } = await this.findOrInsertProvenTx(candidate, trx);
986
1064
  const found = new entities_1.EntityProvenTx(api);
987
1065
  if (req.status !== 'completed' || req.provenTxId !== found.provenTxId) {
988
1066
  req.status = 'completed';
@@ -1002,6 +1080,34 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
1002
1080
  };
1003
1081
  return r;
1004
1082
  }
1083
+ /** Authorize and validate remote proof completion before mutating shared proof state. */
1084
+ async updateProvenTxReqWithNewProvenTxAuth(auth, args) {
1085
+ const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
1086
+ const req = await entities_1.EntityProvenTxReq.fromStorageId(this, args.provenTxReqId);
1087
+ if (req.txid.toLowerCase() !== args.txid.toLowerCase()) {
1088
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.txid', 'the transaction id of the selected proof request');
1089
+ }
1090
+ const ownedTransactions = await this.countTransactions({
1091
+ partial: { userId, txid: req.txid }
1092
+ });
1093
+ if (ownedTransactions === 0) {
1094
+ throw new WERR_errors_1.WERR_UNAUTHORIZED('The proof request does not belong to the authenticated wallet.');
1095
+ }
1096
+ const candidate = {
1097
+ created_at: new Date(),
1098
+ updated_at: new Date(),
1099
+ provenTxId: 0,
1100
+ txid: args.txid,
1101
+ height: args.height,
1102
+ index: args.index,
1103
+ merklePath: args.merklePath,
1104
+ rawTx: req.rawTx,
1105
+ blockHash: args.blockHash,
1106
+ merkleRoot: args.merkleRoot
1107
+ };
1108
+ await (0, validateSyncProof_1.validateSyncProof)(this, candidate);
1109
+ return await this.updateProvenTxReqWithNewProvenTx(args, candidate);
1110
+ }
1005
1111
  /**
1006
1112
  * Reconcile completed proof requests whose transaction fan-out previously
1007
1113
  * failed or whose durable notification state drifted.
@@ -1057,9 +1163,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
1057
1163
  // Leave the output's current state unchanged when no UTXO service can
1058
1164
  // answer conclusively; the validated proof still repairs transaction
1059
1165
  // and consumed-input state.
1060
- verdicts.set(outputId, classification.verdict === 'unknown'
1061
- ? undefined
1062
- : classification.verdict === 'unspent');
1166
+ verdicts.set(outputId, classification.verdict === 'unknown' ? undefined : classification.verdict === 'unspent');
1063
1167
  }
1064
1168
  }
1065
1169
  return verdicts;
@@ -1105,18 +1209,14 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
1105
1209
  }
1106
1210
  const isUtxo = outputVerdicts.get(outputId);
1107
1211
  if (isUtxo == null) {
1108
- log +=
1109
- ' '.repeat(indent + 2) +
1110
- `output ${output.outputId} does not have a valid locking script\n`;
1212
+ log += ' '.repeat(indent + 2) + `output ${output.outputId} does not have a valid locking script\n`;
1111
1213
  continue;
1112
1214
  }
1113
1215
  if (isUtxo === output.spendable) {
1114
1216
  log += ' '.repeat(indent + 2) + `output ${output.outputId} unchanged\n`;
1115
1217
  continue;
1116
1218
  }
1117
- log +=
1118
- ' '.repeat(indent + 2) +
1119
- `output ${output.outputId} set to ${isUtxo ? 'spendable' : 'spent'}\n`;
1219
+ log += ' '.repeat(indent + 2) + `output ${output.outputId} set to ${isUtxo ? 'spendable' : 'spent'}\n`;
1120
1220
  await this.updateOutput(outputId, { spendable: isUtxo }, trx);
1121
1221
  }
1122
1222
  return log;
@@ -1126,8 +1226,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
1126
1226
  throw new WERR_errors_1.WERR_INTERNAL(`Transaction ${tx.transactionId} changed while preparing proof recovery.`);
1127
1227
  }
1128
1228
  await this.updateTransaction(tx.transactionId, { status: 'unproven' }, trx);
1129
- let log = ' '.repeat(indent) +
1130
- `transaction ${tx.transactionId} status is now 'unproven'\n`;
1229
+ let log = ' '.repeat(indent) + `transaction ${tx.transactionId} status is now 'unproven'\n`;
1131
1230
  log += await this.restoreProofRecoveryInputs(tx, bsvtx, indent, trx);
1132
1231
  log += await this.restoreProofRecoveryOutputs(tx, outputVerdicts, indent, trx);
1133
1232
  return log;