@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
@@ -74,9 +74,15 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
74
74
  this.querySpans.delete(query.__knexQueryUid);
75
75
  span.end(error == null ? {} : { status: 'error', error });
76
76
  }
77
- supportsActionBatchPersistence() { return true; }
78
- supportsNoSendExpiryPersistence() { return true; }
79
- requiresActionBatchCleanupBeforeCreateAction() { return false; }
77
+ supportsActionBatchPersistence() {
78
+ return true;
79
+ }
80
+ supportsNoSendExpiryPersistence() {
81
+ return true;
82
+ }
83
+ requiresActionBatchCleanupBeforeCreateAction() {
84
+ return false;
85
+ }
80
86
  async makeAvailable() {
81
87
  const settings = await super.makeAvailable();
82
88
  this.startPreparedBeefBackfill();
@@ -104,7 +110,7 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
104
110
  .select('rawTx', 'inputBEEF'));
105
111
  if (reqRawTx != null) {
106
112
  r.rawTx = Array.from(reqRawTx.rawTx);
107
- r.inputBEEF = Array.from(reqRawTx.inputBEEF);
113
+ r.inputBEEF = reqRawTx.inputBEEF == null ? undefined : Array.from(reqRawTx.inputBEEF);
108
114
  }
109
115
  }
110
116
  return r;
@@ -162,10 +168,10 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
162
168
  const unique = [...new Set(rootTxids)];
163
169
  if (unique.length === 0)
164
170
  return 0;
165
- const row = await this.knex('prepared_beefs')
171
+ const row = (await this.knex('prepared_beefs')
166
172
  .where({ userId, state: 'ready', formatVersion: preparedBeef_1.PREPARED_BEEF_FORMAT_VERSION })
167
173
  .whereIn('rootTxid', unique)
168
- .first({ byteLength: this.knex.raw('coalesce(sum(length(??)), 0)', ['beef']) });
174
+ .first({ byteLength: this.knex.raw('coalesce(sum(length(??)), 0)', ['beef']) }));
169
175
  return Number(row?.byteLength ?? 0);
170
176
  }
171
177
  async readPreparedBeefProofEpoch(trx) {
@@ -183,21 +189,22 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
183
189
  */
184
190
  async readPreparedBeefSourceByteLength(rootTxid) {
185
191
  const byteLength = (...columns) => this.knex.raw(columns.map(() => 'coalesce(length(??), 0)').join(' + '), columns);
186
- const proven = await this.knex('proven_txs')
192
+ const proven = (await this.knex('proven_txs')
187
193
  .where({ txid: rootTxid })
188
- .first({ byteLength: byteLength('rawTx', 'merklePath') });
194
+ .first({ byteLength: byteLength('rawTx', 'merklePath') }));
189
195
  if (proven != null)
190
196
  return Number(proven.byteLength);
191
- const request = await this.knex('proven_tx_reqs')
197
+ const request = (await this.knex('proven_tx_reqs')
192
198
  .where({ txid: rootTxid })
193
199
  .whereIn('status', ['unsent', 'unmined', 'unconfirmed', 'sending', 'nosend', 'completed'])
194
- .first({ byteLength: byteLength('rawTx', 'inputBEEF') });
200
+ .first({ byteLength: byteLength('rawTx', 'inputBEEF') }));
195
201
  return request == null ? undefined : Number(request.byteLength);
196
202
  }
197
203
  async upsertPreparedBeef(artifact, expectedProofEpoch) {
198
204
  return await this.transaction(async (trx) => {
199
- let epochQuery = this.toDb(trx)('prepared_beef_metadata')
200
- .where({ preparedBeefMetadataId: 1 });
205
+ let epochQuery = this.toDb(trx)('prepared_beef_metadata').where({
206
+ preparedBeefMetadataId: 1
207
+ });
201
208
  // Serialize a worker commit with proof invalidation across MySQL server
202
209
  // processes. SQLite serializes the subsequent write transaction.
203
210
  if (this.dbtype === 'MySQL')
@@ -226,7 +233,7 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
226
233
  });
227
234
  }
228
235
  async findPreparedBeefBackfillRoots(limit, formatVersion) {
229
- const rows = await this.knex('outputs as o')
236
+ const rows = (await this.knex('outputs as o')
230
237
  .join('transactions as t', function () {
231
238
  this.on('t.transactionId', '=', 'o.transactionId').andOn('t.userId', '=', 'o.userId');
232
239
  })
@@ -253,7 +260,7 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
253
260
  .select('o.userId', 'o.txid as rootTxid')
254
261
  .groupBy('o.userId', 'o.txid')
255
262
  .orderByRaw('MIN(o.outputId)')
256
- .limit(limit);
263
+ .limit(limit));
257
264
  return rows;
258
265
  }
259
266
  async invalidatePreparedBeefs(trx) {
@@ -323,18 +330,14 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
323
330
  async stopPreparedBeefTasks() {
324
331
  await this.preparedBeefCoordinator.stop();
325
332
  }
326
- rawTxSliceExpression(offset, length) {
327
- const sql = this.dbtype === 'MySQL'
328
- ? 'substring(?? from ? for ?)'
329
- : 'substr(??, ?, ?)';
333
+ rawTxSliceExpression(offset, length, dbtype) {
334
+ const sql = dbtype === 'MySQL' ? 'substring(?? from ? for ?)' : 'substr(??, ?, ?)';
330
335
  return this.knex.raw(sql, ['rawTx', offset + 1, length]);
331
336
  }
332
- async getRawTxSlice(txid, offset, length, trx) {
337
+ async getRawTxSlice(txid, offset, length, dbtype, trx) {
333
338
  const k = this.toDb(trx);
334
- const slice = this.rawTxSliceExpression(offset, length);
335
- const proven = (0, utilityHelpers_1.verifyOneOrNone)(await k('proven_txs')
336
- .select({ rawTx: slice })
337
- .where({ txid }));
339
+ const slice = this.rawTxSliceExpression(offset, length, dbtype);
340
+ const proven = (0, utilityHelpers_1.verifyOneOrNone)(await k('proven_txs').select({ rawTx: slice }).where({ txid }));
338
341
  if (proven?.rawTx != null)
339
342
  return Array.from(proven.rawTx);
340
343
  const req = (0, utilityHelpers_1.verifyOneOrNone)(await k('proven_tx_reqs')
@@ -351,18 +354,27 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
351
354
  if (hasOffset !== hasLength) {
352
355
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('offset and length', 'both defined or both undefined');
353
356
  }
354
- if (hasOffset && (!/^[0-9a-f]{64}$/i.test(txid) ||
355
- !Number.isSafeInteger(offset) ||
356
- !Number.isSafeInteger(length) ||
357
- offset < 0 ||
358
- length < 0 ||
359
- !Number.isSafeInteger(offset + length))) {
357
+ if (hasOffset &&
358
+ (!/^[0-9a-f]{64}$/i.test(txid) ||
359
+ !Number.isSafeInteger(offset) ||
360
+ !Number.isSafeInteger(length) ||
361
+ offset < 0 ||
362
+ length < 0 ||
363
+ !Number.isSafeInteger(offset + length))) {
360
364
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('txid, offset and length', 'a hexadecimal transaction id and non-negative safe slice integers with a safe sum');
361
365
  }
362
- if (!this.isAvailable())
363
- await this.makeAvailable();
366
+ // A cold caller may already own SQLite's only connection. Read settings
367
+ // through that transaction without caching uncommitted state or starting
368
+ // the background backfill before the caller commits.
369
+ let settings;
370
+ if (this.isAvailable())
371
+ settings = this.getSettings();
372
+ else if (trx != null)
373
+ settings = await this.readSettings(trx);
374
+ else
375
+ settings = await this.makeAvailable();
364
376
  if (hasOffset) {
365
- return await this.getRawTxSlice(txid, offset, length, trx);
377
+ return await this.getRawTxSlice(txid, offset, length, settings.dbtype, trx);
366
378
  }
367
379
  const r = await this.getProvenOrRawTx(txid, trx);
368
380
  return r.proven != null ? r.proven.rawTx : r.rawTx;
@@ -373,7 +385,7 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
373
385
  void this.whereExists(k
374
386
  .select('*')
375
387
  .from('transactions')
376
- .whereRaw(`proven_txs.provenTxId = transactions.provenTxId and transactions.userId = ${args.userId}`));
388
+ .whereRaw('proven_txs.provenTxId = transactions.provenTxId and transactions.userId = ?', [args.userId]));
377
389
  });
378
390
  if (args.paged != null) {
379
391
  q = q.limit(args.paged.limit);
@@ -394,7 +406,7 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
394
406
  void this.whereExists(k
395
407
  .select('*')
396
408
  .from('transactions')
397
- .whereRaw(`proven_tx_reqs.txid = transactions.txid and transactions.userId = ${args.userId}`));
409
+ .whereRaw('proven_tx_reqs.txid = transactions.txid and transactions.userId = ?', [args.userId]));
398
410
  });
399
411
  if (args.paged != null) {
400
412
  q = q.limit(args.paged.limit);
@@ -414,7 +426,7 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
414
426
  let q = k('tx_labels_map').whereExists(k
415
427
  .select('*')
416
428
  .from('tx_labels')
417
- .whereRaw(`tx_labels.txLabelId = tx_labels_map.txLabelId and tx_labels.userId = ${args.userId}`));
429
+ .whereRaw('tx_labels.txLabelId = tx_labels_map.txLabelId and tx_labels.userId = ?', [args.userId]));
418
430
  if (args.since != null)
419
431
  q = q.where('updated_at', '>=', this.validateDateForWhere(args.since));
420
432
  if (args.paged != null) {
@@ -433,7 +445,7 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
433
445
  let q = k('output_tags_map').whereExists(k
434
446
  .select('*')
435
447
  .from('output_tags')
436
- .whereRaw(`output_tags.outputTagId = output_tags_map.outputTagId and output_tags.userId = ${args.userId}`));
448
+ .whereRaw('output_tags.outputTagId = output_tags_map.outputTagId and output_tags.userId = ?', [args.userId]));
437
449
  if (args.since != null)
438
450
  q = q.where('updated_at', '>=', this.validateDateForWhere(args.since));
439
451
  if (args.paged != null) {
@@ -447,6 +459,45 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
447
459
  const rs = await q;
448
460
  return this.validateEntities(rs, undefined, ['isDeleted']);
449
461
  }
462
+ async countSyncQuery(query) {
463
+ const row = await query.count({ count: '*' }).first();
464
+ return Number(row?.count ?? 0);
465
+ }
466
+ async getSyncChunkTotals(args, userId) {
467
+ const since = args.since;
468
+ const [provenTxs, outputBaskets, outputTags, txLabels, transactions, outputs, txLabelMaps, outputTagMaps, certificates, certificateFields, commissions, provenTxReqs] = await Promise.all([
469
+ this.countSyncQuery(this.getProvenTxsForUserQuery({ userId, since })),
470
+ this.countOutputBaskets({ partial: { userId }, since }),
471
+ this.countOutputTags({ partial: { userId }, since }),
472
+ this.countTxLabels({ partial: { userId }, since }),
473
+ this.countTransactions({ partial: { userId }, since, noRawTx: true }),
474
+ this.countOutputs({ partial: { userId }, since, noScript: true }),
475
+ this.countSyncQuery(this.getTxLabelMapsForUserQuery({ userId, since })),
476
+ this.countSyncQuery(this.getOutputTagMapsForUserQuery({ userId, since })),
477
+ this.countCertificates({ partial: { userId }, since }),
478
+ this.countCertificateFields({ partial: { userId }, since }),
479
+ this.countCommissions({ partial: { userId }, since }),
480
+ this.countSyncQuery(this.getProvenTxReqsForUserQuery({ userId, since }))
481
+ ]);
482
+ const records = {
483
+ provenTxs,
484
+ outputBaskets,
485
+ outputTags,
486
+ txLabels,
487
+ transactions,
488
+ outputs,
489
+ txLabelMaps,
490
+ outputTagMaps,
491
+ certificates,
492
+ certificateFields,
493
+ commissions,
494
+ provenTxReqs
495
+ };
496
+ return {
497
+ totalRecords: Object.values(records).reduce((total, count) => total + count, 0),
498
+ records
499
+ };
500
+ }
450
501
  async listActions(auth, vargs) {
451
502
  if (auth.userId == null)
452
503
  throw new WERR_errors_1.WERR_UNAUTHORIZED();
@@ -478,10 +529,7 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
478
529
  return row == null ? undefined : this.validateEntity(row, ['expiresAt', 'hardExpiresAt']);
479
530
  }
480
531
  async findActionBatchForUpdate(userId, batchId, trx) {
481
- const row = await this.toDb(trx)('action_batches')
482
- .where({ userId, batchId })
483
- .forUpdate()
484
- .first();
532
+ const row = await this.toDb(trx)('action_batches').where({ userId, batchId }).forUpdate().first();
485
533
  return row == null ? undefined : this.validateEntity(row, ['expiresAt', 'hardExpiresAt']);
486
534
  }
487
535
  async findExpiredActionBatches(now, trx) {
@@ -557,9 +605,9 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
557
605
  const rows = [];
558
606
  const uniqueDigests = [...new Set(digests)];
559
607
  for (let offset = 0; offset < uniqueDigests.length; offset += ACTION_BATCH_BLOB_SQL_CHUNK) {
560
- rows.push(...await this.toDb(trx)('action_batch_blobs')
608
+ rows.push(...(await this.toDb(trx)('action_batch_blobs')
561
609
  .where({ actionBatchId })
562
- .whereIn('digest', uniqueDigests.slice(offset, offset + ACTION_BATCH_BLOB_SQL_CHUNK)));
610
+ .whereIn('digest', uniqueDigests.slice(offset, offset + ACTION_BATCH_BLOB_SQL_CHUNK))));
563
611
  }
564
612
  for (const row of rows) {
565
613
  if (Buffer.isBuffer(row.bytes)) {
@@ -605,7 +653,8 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
605
653
  return user.userId;
606
654
  }
607
655
  async insertCertificateAuth(auth, certificate) {
608
- if (auth.userId == null || (certificate.userId != null && certificate.userId !== 0 && certificate.userId !== auth.userId))
656
+ if (auth.userId == null ||
657
+ (certificate.userId != null && certificate.userId !== 0 && certificate.userId !== auth.userId))
609
658
  throw new WERR_errors_1.WERR_UNAUTHORIZED();
610
659
  certificate.userId = auth.userId;
611
660
  return await this.insertCertificate(certificate);
@@ -901,9 +950,9 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
901
950
  }
902
951
  findCertificatesQuery(args) {
903
952
  const q = this.setupQuery('certificates', args);
904
- if ((args.certifiers != null) && args.certifiers.length > 0)
953
+ if (args.certifiers != null && args.certifiers.length > 0)
905
954
  void q.whereIn('certifier', args.certifiers);
906
- if ((args.types != null) && args.types.length > 0)
955
+ if (args.types != null && args.types.length > 0)
907
956
  void q.whereIn('type', args.types);
908
957
  return q;
909
958
  }
@@ -921,10 +970,30 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
921
970
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.lockingScript', 'undefined. Outputs may not be found by lockingScript value.');
922
971
  }
923
972
  const q = this.setupQuery('outputs', args);
924
- if ((args.txStatus != null) && args.txStatus.length > 0) {
925
- void q.whereRaw(`(select status from transactions where transactions.transactionId = outputs.transactionId) in (${args.txStatus.map(s => "'" + s + "'").join(',')})`);
973
+ if (args.txStatus != null && args.txStatus.length > 0) {
974
+ const allowedStatuses = new Set([
975
+ 'completed',
976
+ 'failed',
977
+ 'unprocessed',
978
+ 'sending',
979
+ 'unproven',
980
+ 'unsigned',
981
+ 'nosend',
982
+ 'nonfinal',
983
+ 'unfail'
984
+ ]);
985
+ if (args.txStatus.some(status => !allowedStatuses.has(status))) {
986
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.txStatus', 'supported transaction statuses');
987
+ }
988
+ const statuses = [...new Set(args.txStatus)];
989
+ void q.whereExists(function () {
990
+ void this.select(1)
991
+ .from('transactions')
992
+ .whereRaw('?? = ??', ['transactions.transactionId', 'outputs.transactionId'])
993
+ .whereIn('transactions.status', statuses);
994
+ });
926
995
  }
927
- if ((args.noScript === true) && count !== true) {
996
+ if (args.noScript === true && count !== true) {
928
997
  const columns = tables_1.outputColumnsWithoutLockingScript.map(c => `outputs.${c}`);
929
998
  void q.select(columns);
930
999
  }
@@ -932,7 +1001,7 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
932
1001
  }
933
1002
  findOutputTagMapsQuery(args) {
934
1003
  const q = this.setupQuery('output_tags_map', args);
935
- if ((args.tagIds != null) && args.tagIds.length > 0)
1004
+ if (args.tagIds != null && args.tagIds.length > 0)
936
1005
  void q.whereIn('outputTagId', args.tagIds);
937
1006
  return q;
938
1007
  }
@@ -947,7 +1016,7 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
947
1016
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.inputBEEF', 'undefined. ProvenTxReqs may not be found by inputBEEF value.');
948
1017
  }
949
1018
  const q = this.setupQuery('proven_tx_reqs', args);
950
- if ((args.status != null) && args.status.length > 0)
1019
+ if (args.status != null && args.status.length > 0)
951
1020
  void q.whereIn('status', args.status);
952
1021
  if (args.txids != null) {
953
1022
  const txids = args.txids.filter(txid => txid !== undefined);
@@ -990,13 +1059,13 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
990
1059
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.inputBEEF', 'undefined. Transactions may not be found by inputBEEF value.');
991
1060
  }
992
1061
  const q = this.setupQuery('transactions', args);
993
- if ((args.status != null) && args.status.length > 0)
1062
+ if (args.status != null && args.status.length > 0)
994
1063
  void q.whereIn('status', args.status);
995
1064
  if (args.from != null)
996
1065
  void q.where('created_at', '>=', this.validateDateForWhere(args.from));
997
1066
  if (args.to != null)
998
1067
  void q.where('created_at', '<', this.validateDateForWhere(args.to));
999
- if ((args.noRawTx === true) && count !== true) {
1068
+ if (args.noRawTx === true && count !== true) {
1000
1069
  const columns = tables_1.transactionColumnsWithoutRawTx.map(c => `transactions.${c}`);
1001
1070
  void q.select(columns);
1002
1071
  }
@@ -1004,7 +1073,7 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
1004
1073
  }
1005
1074
  findTxLabelMapsQuery(args) {
1006
1075
  const q = this.setupQuery('tx_labels_map', args);
1007
- if ((args.labelIds != null) && args.labelIds.length > 0)
1076
+ if (args.labelIds != null && args.labelIds.length > 0)
1008
1077
  void q.whereIn('txLabelId', args.labelIds);
1009
1078
  return q;
1010
1079
  }
@@ -1018,19 +1087,32 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
1018
1087
  return this.setupQuery('monitor_events', args);
1019
1088
  }
1020
1089
  async findCertificatesAuth(auth, args) {
1021
- if (auth.userId == null || (args.partial.userId != null && args.partial.userId !== 0 && args.partial.userId !== auth.userId))
1090
+ if (auth.userId == null ||
1091
+ (args.partial.userId != null && args.partial.userId !== 0 && args.partial.userId !== auth.userId))
1022
1092
  throw new WERR_errors_1.WERR_UNAUTHORIZED();
1023
1093
  args.partial.userId = auth.userId;
1024
1094
  return await this.findCertificates(args);
1025
1095
  }
1096
+ async findProvenTxReqsAuth(auth, args) {
1097
+ const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
1098
+ const k = this.toDb(args.trx);
1099
+ const q = this.findProvenTxReqsQuery(args).whereExists(k
1100
+ .select(1)
1101
+ .from('transactions')
1102
+ .whereRaw('proven_tx_reqs.txid = transactions.txid')
1103
+ .where('transactions.userId', userId));
1104
+ return this.validateEntities(await q, undefined, ['notified', 'wasBroadcast']);
1105
+ }
1026
1106
  async findOutputBasketsAuth(auth, args) {
1027
- if (auth.userId == null || (args.partial.userId != null && args.partial.userId !== 0 && args.partial.userId !== auth.userId))
1107
+ if (auth.userId == null ||
1108
+ (args.partial.userId != null && args.partial.userId !== 0 && args.partial.userId !== auth.userId))
1028
1109
  throw new WERR_errors_1.WERR_UNAUTHORIZED();
1029
1110
  args.partial.userId = auth.userId;
1030
1111
  return await this.findOutputBaskets(args);
1031
1112
  }
1032
1113
  async findOutputsAuth(auth, args) {
1033
- if (auth.userId == null || (args.partial.userId != null && args.partial.userId !== 0 && args.partial.userId !== auth.userId))
1114
+ if (auth.userId == null ||
1115
+ (args.partial.userId != null && args.partial.userId !== 0 && args.partial.userId !== auth.userId))
1034
1116
  throw new WERR_errors_1.WERR_UNAUTHORIZED();
1035
1117
  args.partial.userId = auth.userId;
1036
1118
  return await this.findOutputs(args);
@@ -1099,6 +1181,12 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
1099
1181
  }
1100
1182
  async findSyncStates(args) {
1101
1183
  const q = this.findSyncStatesQuery(args);
1184
+ // Serialize sync checkpoint reads with the page transaction on MySQL too.
1185
+ if (args.trx != null &&
1186
+ this.dbtype === 'MySQL' &&
1187
+ args.partial.userId != null &&
1188
+ (args.partial.syncStateId != null || args.partial.storageIdentityKey != null))
1189
+ q.forUpdate();
1102
1190
  const r = await q;
1103
1191
  return this.validateEntities(r, ['when'], ['init']);
1104
1192
  }
@@ -1210,24 +1298,32 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
1210
1298
  // Check if this is a SQLite database by looking at the Knex client config
1211
1299
  const clientName = this.knex.client.config?.client ?? '';
1212
1300
  const isSQLite = clientName.includes('sqlite');
1213
- // For SQLite, disable transactions during migrations and turn off foreign keys.
1214
- // PRAGMA foreign_keys is silently ignored inside transactions, so we must
1215
- // disable transactions for the migration to allow the PRAGMA to take effect.
1216
- // See: https://github.com/knex/knex/issues/4155
1301
+ // For SQLite, turn foreign keys off for the duration of the migration.
1302
+ // PRAGMA foreign_keys is silently ignored *when executed inside* a
1303
+ // transaction (https://github.com/knex/knex/issues/4155), so it is issued
1304
+ // here, outside migrate.latest(). SQLite's single-connection pool means
1305
+ // knex's per-migration transaction runs on this same connection and
1306
+ // inherits the setting, and knex's own SQLite alter-table rebuild leaves an
1307
+ // ambient pragma alone while transacting (sqlite3/schema/ddl.js: alter()
1308
+ // uses `enforceForeignCheck = this.client.transacting ? null : false`).
1217
1309
  if (isSQLite) {
1218
1310
  await this.knex.raw('PRAGMA foreign_keys = OFF;');
1219
1311
  }
1220
- const config = {
1221
- migrationSource: new KnexMigrations_1.KnexMigrations(this.chain, storageName, storageIdentityKey, 1024),
1222
- disableTransactions: isSQLite
1223
- };
1224
- await this.knex.migrate.latest(config);
1225
- const version = await this.knex.migrate.currentVersion(config);
1226
- // Re-enable foreign key checks for SQLite
1227
- if (isSQLite) {
1228
- await this.knex.raw('PRAGMA foreign_keys = ON;');
1312
+ try {
1313
+ const config = {
1314
+ migrationSource: new KnexMigrations_1.KnexMigrations(this.chain, storageName, storageIdentityKey, 1024),
1315
+ // Keep DDL and its migration journal entry in the same transaction.
1316
+ disableTransactions: false
1317
+ };
1318
+ await this.knex.migrate.latest(config);
1319
+ return await this.knex.migrate.currentVersion(config);
1320
+ }
1321
+ finally {
1322
+ // Leaving foreign-key enforcement disabled after a failed migration would
1323
+ // weaken every subsequent write on this connection.
1324
+ if (isSQLite)
1325
+ await this.knex.raw('PRAGMA foreign_keys = ON;');
1229
1326
  }
1230
- return version;
1231
1327
  }
1232
1328
  async dropAllData() {
1233
1329
  // Only using migrations to migrate down, don't need valid properties for settings table.
@@ -1249,24 +1345,22 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
1249
1345
  if (isSQLite) {
1250
1346
  await this.knex.raw('PRAGMA foreign_keys = OFF;');
1251
1347
  }
1252
- for (let i = 0; i < count; i++) {
1253
- try {
1254
- const r = await this.knex.migrate.down(config);
1255
- if (r == null) {
1256
- console.error('Migration returned falsy result await this.knex.migrate.down(config)');
1257
- break;
1258
- }
1348
+ try {
1349
+ for (let i = 0; i < count; i++) {
1350
+ const version = await this.knex.migrate.currentVersion(config);
1351
+ if (version === 'none')
1352
+ return;
1353
+ const result = await this.knex.migrate.down(config);
1354
+ if (result == null)
1355
+ throw new WERR_errors_1.WERR_INTERNAL('database migration rollback returned no result');
1259
1356
  }
1260
- catch (migrationError) {
1261
- // migrate.down throws when there are no more migrations to roll back — this is
1262
- // the expected terminal condition, so we stop iterating rather than propagating.
1263
- console.debug('migrate.down stopped (no more migrations or error):', migrationError);
1264
- break;
1357
+ if ((await this.knex.migrate.currentVersion(config)) !== 'none') {
1358
+ throw new WERR_errors_1.WERR_INTERNAL('database migration rollback did not reach the empty schema');
1265
1359
  }
1266
1360
  }
1267
- // Re-enable foreign key checks for SQLite
1268
- if (isSQLite) {
1269
- await this.knex.raw('PRAGMA foreign_keys = ON;');
1361
+ finally {
1362
+ if (isSQLite)
1363
+ await this.knex.raw('PRAGMA foreign_keys = ON;');
1270
1364
  }
1271
1365
  }
1272
1366
  async transaction(scope, trx) {
@@ -1284,7 +1378,7 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
1284
1378
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1285
1379
  toDb(trx) {
1286
1380
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1287
- const db = (trx == null) ? this.knex : trx;
1381
+ const db = trx == null ? this.knex : trx;
1288
1382
  this.whenLastAccess = new Date();
1289
1383
  return db;
1290
1384
  }
@@ -1701,7 +1795,7 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
1701
1795
  .whereIn('t.status', status)
1702
1796
  .sum({ totalSatoshis: 'o.satoshis' })
1703
1797
  .first();
1704
- const total = (row != null) ? row.totalSatoshis : undefined;
1798
+ const total = row != null ? row.totalSatoshis : undefined;
1705
1799
  return Number(total ?? 0);
1706
1800
  }
1707
1801
  /**
@@ -1731,9 +1825,7 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
1731
1825
  .whereNot('o.derivationSuffix', '')
1732
1826
  .whereNull('o.spentBy')
1733
1827
  .whereNotExists(function () {
1734
- void this.select(1)
1735
- .from('action_batch_outputs as abo')
1736
- .whereRaw('abo.outputId = o.outputId');
1828
+ void this.select(1).from('action_batch_outputs as abo').whereRaw('abo.outputId = o.outputId');
1737
1829
  })
1738
1830
  .whereIn('t.status', status)
1739
1831
  .select('o.*')
@@ -1811,7 +1903,8 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
1811
1903
  for (const df of booleanFields) {
1812
1904
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1813
1905
  if (entity[df] !== undefined)
1814
- entity[df] = entity[df] !== 0 && entity[df] != null && entity[df] !== false;
1906
+ entity[df] =
1907
+ entity[df] !== 0 && entity[df] != null && entity[df] !== false;
1815
1908
  }
1816
1909
  }
1817
1910
  this.deserialiseFromKnex(entity);
@@ -1836,7 +1929,7 @@ class StorageKnex extends StorageProvider_1.StorageProvider {
1836
1929
  orderDescending: true,
1837
1930
  paged: { limit: 1 }
1838
1931
  }));
1839
- const monitorStats = (monitorEvent != null) ? JSON.parse(monitorEvent.details) : undefined;
1932
+ const monitorStats = monitorEvent != null ? JSON.parse(monitorEvent.details) : undefined;
1840
1933
  const servicesStats = this.getServices().getServicesCallHistory(true);
1841
1934
  const oneDayAgo = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString();
1842
1935
  const oneWeekAgo = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString();