@bsv/wallet-toolbox 2.4.3 → 2.4.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (675) hide show
  1. package/CHANGELOG.md +81 -1
  2. package/LICENSE.txt +58 -0
  3. package/README.md +98 -36
  4. package/docs/README.md +3 -1
  5. package/docs/action-batch-planning.md +220 -0
  6. package/docs/authentication-observability.md +94 -0
  7. package/docs/client.md +1125 -2776
  8. package/docs/monitor.md +29 -111
  9. package/docs/services.md +296 -602
  10. package/docs/setup.md +48 -28
  11. package/docs/storage.md +329 -1692
  12. package/docs/wallet.md +9718 -4890
  13. package/out/src/CWIStyleWalletManager.d.ts +62 -6
  14. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  15. package/out/src/CWIStyleWalletManager.js +584 -181
  16. package/out/src/CWIStyleWalletManager.js.map +1 -1
  17. package/out/src/Setup.d.ts +7 -0
  18. package/out/src/Setup.d.ts.map +1 -1
  19. package/out/src/Setup.js +10 -11
  20. package/out/src/Setup.js.map +1 -1
  21. package/out/src/SetupClient.d.ts +2 -0
  22. package/out/src/SetupClient.d.ts.map +1 -1
  23. package/out/src/SetupClient.js +8 -9
  24. package/out/src/SetupClient.js.map +1 -1
  25. package/out/src/SetupWallet.d.ts +6 -0
  26. package/out/src/SetupWallet.d.ts.map +1 -1
  27. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  28. package/out/src/ShamirWalletManager.js.map +1 -1
  29. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  30. package/out/src/SimpleWalletManager.js +2 -5
  31. package/out/src/SimpleWalletManager.js.map +1 -1
  32. package/out/src/Wallet.d.ts +36 -10
  33. package/out/src/Wallet.d.ts.map +1 -1
  34. package/out/src/Wallet.js +167 -132
  35. package/out/src/Wallet.js.map +1 -1
  36. package/out/src/WalletAuthenticationManager.d.ts +30 -6
  37. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  38. package/out/src/WalletAuthenticationManager.js +215 -34
  39. package/out/src/WalletAuthenticationManager.js.map +1 -1
  40. package/out/src/WalletLogger.d.ts.map +1 -1
  41. package/out/src/WalletLogger.js +33 -30
  42. package/out/src/WalletLogger.js.map +1 -1
  43. package/out/src/WalletPermissionsManager.d.ts +22 -1
  44. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  45. package/out/src/WalletPermissionsManager.js +392 -267
  46. package/out/src/WalletPermissionsManager.js.map +1 -1
  47. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  48. package/out/src/WalletSettingsManager.js.map +1 -1
  49. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  50. package/out/src/entropy/EntropyCollector.js +6 -8
  51. package/out/src/entropy/EntropyCollector.js.map +1 -1
  52. package/out/src/fundWalletP2PKH.js.map +1 -1
  53. package/out/src/index.all.d.ts +1 -0
  54. package/out/src/index.all.d.ts.map +1 -1
  55. package/out/src/index.all.js +1 -0
  56. package/out/src/index.all.js.map +1 -1
  57. package/out/src/index.client.d.ts +2 -0
  58. package/out/src/index.client.d.ts.map +1 -1
  59. package/out/src/index.client.js +2 -0
  60. package/out/src/index.client.js.map +1 -1
  61. package/out/src/index.mobile.d.ts +2 -0
  62. package/out/src/index.mobile.d.ts.map +1 -1
  63. package/out/src/index.mobile.js +2 -0
  64. package/out/src/index.mobile.js.map +1 -1
  65. package/out/src/mockchain/MockChainMigrations.d.ts.map +1 -1
  66. package/out/src/mockchain/MockChainMigrations.js.map +1 -1
  67. package/out/src/mockchain/MockChainStorage.d.ts.map +1 -1
  68. package/out/src/mockchain/MockChainStorage.js.map +1 -1
  69. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  70. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  71. package/out/src/mockchain/MockMiner.d.ts.map +1 -1
  72. package/out/src/mockchain/MockMiner.js.map +1 -1
  73. package/out/src/mockchain/MockServices.d.ts +4 -0
  74. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  75. package/out/src/mockchain/MockServices.js +69 -74
  76. package/out/src/mockchain/MockServices.js.map +1 -1
  77. package/out/src/mockchain/merkleTree.d.ts.map +1 -1
  78. package/out/src/mockchain/merkleTree.js +51 -56
  79. package/out/src/mockchain/merkleTree.js.map +1 -1
  80. package/out/src/monitor/Monitor.d.ts +4 -0
  81. package/out/src/monitor/Monitor.d.ts.map +1 -1
  82. package/out/src/monitor/Monitor.js +60 -57
  83. package/out/src/monitor/Monitor.js.map +1 -1
  84. package/out/src/monitor/MonitorDaemon.d.ts +3 -0
  85. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  86. package/out/src/monitor/MonitorDaemon.js +65 -56
  87. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  88. package/out/src/monitor/index.all.js.map +1 -1
  89. package/out/src/monitor/tasks/TaskArcSSE.d.ts +5 -0
  90. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  91. package/out/src/monitor/tasks/TaskArcSSE.js +86 -77
  92. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  93. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +4 -2
  94. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  95. package/out/src/monitor/tasks/TaskCheckForProofs.js +132 -131
  96. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  97. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +3 -1
  98. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  99. package/out/src/monitor/tasks/TaskCheckNoSends.js +3 -1
  100. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  101. package/out/src/monitor/tasks/TaskCleanupActionBatches.d.ts +13 -0
  102. package/out/src/monitor/tasks/TaskCleanupActionBatches.d.ts.map +1 -0
  103. package/out/src/monitor/tasks/TaskCleanupActionBatches.js +24 -0
  104. package/out/src/monitor/tasks/TaskCleanupActionBatches.js.map +1 -0
  105. package/out/src/monitor/tasks/TaskClock.d.ts +1 -1
  106. package/out/src/monitor/tasks/TaskClock.d.ts.map +1 -1
  107. package/out/src/monitor/tasks/TaskClock.js +1 -1
  108. package/out/src/monitor/tasks/TaskClock.js.map +1 -1
  109. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  110. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  111. package/out/src/monitor/tasks/TaskMineBlock.d.ts +3 -1
  112. package/out/src/monitor/tasks/TaskMineBlock.d.ts.map +1 -1
  113. package/out/src/monitor/tasks/TaskMineBlock.js +3 -1
  114. package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -1
  115. package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts.map +1 -1
  116. package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
  117. package/out/src/monitor/tasks/TaskNewHeader.d.ts +4 -3
  118. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  119. package/out/src/monitor/tasks/TaskNewHeader.js +4 -3
  120. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  121. package/out/src/monitor/tasks/TaskPurge.d.ts +3 -1
  122. package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
  123. package/out/src/monitor/tasks/TaskPurge.js +3 -1
  124. package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
  125. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  126. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  127. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts +3 -1
  128. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  129. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +3 -1
  130. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  131. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +3 -1
  132. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  133. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +3 -1
  134. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  135. package/out/src/monitor/tasks/TaskReviewStatus.d.ts +3 -1
  136. package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
  137. package/out/src/monitor/tasks/TaskReviewStatus.js +3 -1
  138. package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
  139. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +3 -1
  140. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  141. package/out/src/monitor/tasks/TaskReviewUtxos.js +3 -1
  142. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  143. package/out/src/monitor/tasks/TaskSendWaiting.d.ts +3 -0
  144. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  145. package/out/src/monitor/tasks/TaskSendWaiting.js +53 -46
  146. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  147. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts +1 -1
  148. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts.map +1 -1
  149. package/out/src/monitor/tasks/TaskSyncWhenIdle.js +1 -1
  150. package/out/src/monitor/tasks/TaskSyncWhenIdle.js.map +1 -1
  151. package/out/src/monitor/tasks/TaskUnFail.d.ts +3 -1
  152. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  153. package/out/src/monitor/tasks/TaskUnFail.js +3 -1
  154. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  155. package/out/src/monitor/tasks/WalletMonitorTask.d.ts.map +1 -1
  156. package/out/src/monitor/tasks/WalletMonitorTask.js.map +1 -1
  157. package/out/src/monitor/tasks/index.all.d.ts +1 -0
  158. package/out/src/monitor/tasks/index.all.d.ts.map +1 -1
  159. package/out/src/monitor/tasks/index.all.js +1 -0
  160. package/out/src/monitor/tasks/index.all.js.map +1 -1
  161. package/out/src/sdk/ActionBatch.interfaces.d.ts +159 -0
  162. package/out/src/sdk/ActionBatch.interfaces.d.ts.map +1 -0
  163. package/out/src/sdk/ActionBatch.interfaces.js +3 -0
  164. package/out/src/sdk/ActionBatch.interfaces.js.map +1 -0
  165. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  166. package/out/src/sdk/PrivilegedKeyManager.js +3 -3
  167. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  168. package/out/src/sdk/WERR_errors.d.ts +1 -1
  169. package/out/src/sdk/WERR_errors.d.ts.map +1 -1
  170. package/out/src/sdk/WERR_errors.js +2 -2
  171. package/out/src/sdk/WERR_errors.js.map +1 -1
  172. package/out/src/sdk/WalletError.d.ts +3 -0
  173. package/out/src/sdk/WalletError.d.ts.map +1 -1
  174. package/out/src/sdk/WalletError.js +53 -56
  175. package/out/src/sdk/WalletError.js.map +1 -1
  176. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  177. package/out/src/sdk/WalletServices.interfaces.d.ts +3 -1
  178. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  179. package/out/src/sdk/WalletStorage.interfaces.d.ts +22 -1
  180. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  181. package/out/src/sdk/index.d.ts +1 -0
  182. package/out/src/sdk/index.d.ts.map +1 -1
  183. package/out/src/sdk/index.js +1 -0
  184. package/out/src/sdk/index.js.map +1 -1
  185. package/out/src/sdk/types.js.map +1 -1
  186. package/out/src/services/ServiceCollection.d.ts.map +1 -1
  187. package/out/src/services/ServiceCollection.js.map +1 -1
  188. package/out/src/services/Services.d.ts +8 -2
  189. package/out/src/services/Services.d.ts.map +1 -1
  190. package/out/src/services/Services.js +86 -44
  191. package/out/src/services/Services.js.map +1 -1
  192. package/out/src/services/chaintracker/BHServiceClient.d.ts +7 -7
  193. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  194. package/out/src/services/chaintracker/BHServiceClient.js +9 -9
  195. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  196. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +4 -1
  197. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  198. package/out/src/services/chaintracker/ChaintracksChainTracker.js +42 -6
  199. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  200. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts +4 -4
  201. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  202. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +1 -1
  203. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  204. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +3 -0
  205. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  206. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +45 -40
  207. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  208. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +5 -0
  209. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  210. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +25 -18
  211. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  212. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +3 -3
  213. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  214. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +6 -7
  215. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  216. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  217. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
  218. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  219. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  220. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  221. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  222. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  223. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  224. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  225. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +0 -1
  226. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  227. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  228. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  229. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  230. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  231. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
  232. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
  233. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts +2 -2
  234. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  235. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +2 -2
  236. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  238. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  239. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  240. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  241. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +12 -2
  242. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  243. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +110 -103
  244. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  245. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +8 -0
  246. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  247. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +58 -48
  248. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  249. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  250. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  251. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  252. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  253. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +3 -0
  254. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  255. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +55 -54
  256. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  257. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +4 -0
  258. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  259. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +97 -72
  260. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  261. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +5 -0
  262. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  263. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +145 -136
  264. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  265. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +4 -0
  266. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  267. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +92 -68
  268. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  269. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +43 -0
  270. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
  271. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +76 -0
  272. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  273. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts +18 -0
  274. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts.map +1 -0
  275. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js +24 -0
  276. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js.map +1 -0
  277. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts +2 -3
  278. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  279. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +4 -22
  280. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  281. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts +2 -4
  282. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  283. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js +12 -25
  284. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  285. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts +2 -3
  286. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  287. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +4 -22
  288. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  289. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts +2 -1
  290. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  291. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +3 -15
  292. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  293. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts +2 -2
  294. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  295. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +3 -15
  296. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  297. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts +2 -1
  298. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  299. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +3 -15
  300. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  301. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +1 -1
  302. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
  303. package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
  304. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +2 -0
  305. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  306. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +64 -61
  307. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  308. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  309. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  310. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  311. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +4 -3
  312. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  313. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  314. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  315. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  316. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  317. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +8 -10
  318. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  319. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +14 -24
  320. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  321. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  322. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  323. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  324. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  325. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +1 -11
  326. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  327. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +20 -49
  328. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  329. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts.map +1 -1
  330. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js +4 -2
  331. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js.map +1 -1
  332. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  333. package/out/src/services/createDefaultWalletServicesOptions.d.ts +23 -14
  334. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  335. package/out/src/services/createDefaultWalletServicesOptions.js +1 -14
  336. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  337. package/out/src/services/networkConfig.js.map +1 -1
  338. package/out/src/services/providers/ARC.d.ts +4 -0
  339. package/out/src/services/providers/ARC.d.ts.map +1 -1
  340. package/out/src/services/providers/ARC.js +96 -83
  341. package/out/src/services/providers/ARC.js.map +1 -1
  342. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  343. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  344. package/out/src/services/providers/Arcade.d.ts +4 -0
  345. package/out/src/services/providers/Arcade.d.ts.map +1 -1
  346. package/out/src/services/providers/Arcade.js +118 -92
  347. package/out/src/services/providers/Arcade.js.map +1 -1
  348. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  349. package/out/src/services/providers/Bitails.js +107 -86
  350. package/out/src/services/providers/Bitails.js.map +1 -1
  351. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  352. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  353. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  354. package/out/src/services/providers/WhatsOnChain.js +19 -6
  355. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  356. package/out/src/services/providers/exchangeRates.js +1 -1
  357. package/out/src/services/providers/exchangeRates.js.map +1 -1
  358. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  359. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
  360. package/out/src/signer/WalletSigner.d.ts.map +1 -1
  361. package/out/src/signer/WalletSigner.js.map +1 -1
  362. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +29 -0
  363. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -0
  364. package/out/src/signer/actionBatch/ActionBatchPlanner.js +346 -0
  365. package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -0
  366. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +33 -0
  367. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -0
  368. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +869 -0
  369. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -0
  370. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +11 -0
  371. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -0
  372. package/out/src/signer/actionBatch/actionBatchBootstrap.js +38 -0
  373. package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -0
  374. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  375. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  376. package/out/src/signer/methods/buildSignableTransaction.js +97 -107
  377. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  378. package/out/src/signer/methods/completeSignedTransaction.d.ts +3 -7
  379. package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
  380. package/out/src/signer/methods/completeSignedTransaction.js +14 -57
  381. package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
  382. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  383. package/out/src/signer/methods/createAction.js +50 -20
  384. package/out/src/signer/methods/createAction.js.map +1 -1
  385. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  386. package/out/src/signer/methods/internalizeAction.js +4 -4
  387. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  388. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  389. package/out/src/signer/methods/resultBeef.js.map +1 -1
  390. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  391. package/out/src/signer/methods/signAction.js +29 -4
  392. package/out/src/signer/methods/signAction.js.map +1 -1
  393. package/out/src/signer/methods/verifyUnlockScripts.d.ts +17 -0
  394. package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -0
  395. package/out/src/signer/methods/verifyUnlockScripts.js +137 -0
  396. package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -0
  397. package/out/src/storage/StorageIdb.d.ts +19 -3
  398. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  399. package/out/src/storage/StorageIdb.js +232 -53
  400. package/out/src/storage/StorageIdb.js.map +1 -1
  401. package/out/src/storage/StorageKnex.d.ts +29 -1
  402. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  403. package/out/src/storage/StorageKnex.js +225 -10
  404. package/out/src/storage/StorageKnex.js.map +1 -1
  405. package/out/src/storage/StorageProvider.d.ts +57 -1
  406. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  407. package/out/src/storage/StorageProvider.js +277 -145
  408. package/out/src/storage/StorageProvider.js.map +1 -1
  409. package/out/src/storage/StorageReader.d.ts +13 -5
  410. package/out/src/storage/StorageReader.d.ts.map +1 -1
  411. package/out/src/storage/StorageReader.js +3 -0
  412. package/out/src/storage/StorageReader.js.map +1 -1
  413. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  414. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  415. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  416. package/out/src/storage/StorageSyncReader.js.map +1 -1
  417. package/out/src/storage/WalletStorageManager.d.ts +10 -0
  418. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  419. package/out/src/storage/WalletStorageManager.js +49 -6
  420. package/out/src/storage/WalletStorageManager.js.map +1 -1
  421. package/out/src/storage/adminServer/adminServer.d.ts +79 -0
  422. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  423. package/out/src/storage/adminServer/adminServer.js +47 -16
  424. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  425. package/out/src/storage/adminServer/adminUi.js.map +1 -1
  426. package/out/src/storage/idbHelpers.d.ts +2 -0
  427. package/out/src/storage/idbHelpers.d.ts.map +1 -1
  428. package/out/src/storage/idbHelpers.js +19 -0
  429. package/out/src/storage/idbHelpers.js.map +1 -1
  430. package/out/src/storage/index.all.js.map +1 -1
  431. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  432. package/out/src/storage/methods/ListActionsSpecOp.js +48 -71
  433. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  434. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  435. package/out/src/storage/methods/ListOutputsSpecOp.js +29 -27
  436. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  437. package/out/src/storage/methods/actionBatch.d.ts +15 -0
  438. package/out/src/storage/methods/actionBatch.d.ts.map +1 -0
  439. package/out/src/storage/methods/actionBatch.js +737 -0
  440. package/out/src/storage/methods/actionBatch.js.map +1 -0
  441. package/out/src/storage/methods/actionBatchBlobs.d.ts +15 -0
  442. package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -0
  443. package/out/src/storage/methods/actionBatchBlobs.js +184 -0
  444. package/out/src/storage/methods/actionBatchBlobs.js.map +1 -0
  445. package/out/src/storage/methods/actionBatchValidation.d.ts +17 -0
  446. package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -0
  447. package/out/src/storage/methods/actionBatchValidation.js +416 -0
  448. package/out/src/storage/methods/actionBatchValidation.js.map +1 -0
  449. package/out/src/storage/methods/actionPlanning.d.ts +12 -0
  450. package/out/src/storage/methods/actionPlanning.d.ts.map +1 -0
  451. package/out/src/storage/methods/actionPlanning.js +48 -0
  452. package/out/src/storage/methods/actionPlanning.js.map +1 -0
  453. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +0 -21
  454. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  455. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +43 -51
  456. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  457. package/out/src/storage/methods/createAction.d.ts +1 -1
  458. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  459. package/out/src/storage/methods/createAction.js +66 -63
  460. package/out/src/storage/methods/createAction.js.map +1 -1
  461. package/out/src/storage/methods/generateChange.d.ts +2 -2
  462. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  463. package/out/src/storage/methods/generateChange.js +66 -38
  464. package/out/src/storage/methods/generateChange.js.map +1 -1
  465. package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
  466. package/out/src/storage/methods/getBeefForTransaction.js +48 -42
  467. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  468. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  469. package/out/src/storage/methods/getSyncChunk.js +8 -6
  470. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  471. package/out/src/storage/methods/internalizeAction.js +145 -121
  472. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  473. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  474. package/out/src/storage/methods/listActionsKnex.js +1 -1
  475. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  476. package/out/src/storage/methods/listCertificates.d.ts +1 -1
  477. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  478. package/out/src/storage/methods/listCertificates.js +1 -1
  479. package/out/src/storage/methods/listCertificates.js.map +1 -1
  480. package/out/src/storage/methods/listOutputsIdb.d.ts +1 -1
  481. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  482. package/out/src/storage/methods/listOutputsIdb.js +133 -152
  483. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  484. package/out/src/storage/methods/listOutputsKnex.d.ts +1 -1
  485. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  486. package/out/src/storage/methods/listOutputsKnex.js +213 -254
  487. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  488. package/out/src/storage/methods/managedChange.d.ts +3 -3
  489. package/out/src/storage/methods/managedChange.d.ts.map +1 -1
  490. package/out/src/storage/methods/managedChange.js +1 -2
  491. package/out/src/storage/methods/managedChange.js.map +1 -1
  492. package/out/src/storage/methods/offsetKey.d.ts.map +1 -1
  493. package/out/src/storage/methods/offsetKey.js +0 -1
  494. package/out/src/storage/methods/offsetKey.js.map +1 -1
  495. package/out/src/storage/methods/processAction.d.ts +2 -0
  496. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  497. package/out/src/storage/methods/processAction.js +8 -8
  498. package/out/src/storage/methods/processAction.js.map +1 -1
  499. package/out/src/storage/methods/purgeData.d.ts.map +1 -1
  500. package/out/src/storage/methods/purgeData.js +157 -179
  501. package/out/src/storage/methods/purgeData.js.map +1 -1
  502. package/out/src/storage/methods/purgeDataIdb.d.ts +1 -1
  503. package/out/src/storage/methods/purgeDataIdb.d.ts.map +1 -1
  504. package/out/src/storage/methods/purgeDataIdb.js +1 -1
  505. package/out/src/storage/methods/purgeDataIdb.js.map +1 -1
  506. package/out/src/storage/methods/reviewStatus.js +6 -6
  507. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  508. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  509. package/out/src/storage/methods/utils.Buffer.js.map +1 -1
  510. package/out/src/storage/methods/utils.js.map +1 -1
  511. package/out/src/storage/portable/index.js +2 -2
  512. package/out/src/storage/portable/index.js.map +1 -1
  513. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
  514. package/out/src/storage/remoting/BinaryJson.js +84 -38
  515. package/out/src/storage/remoting/BinaryJson.js.map +1 -1
  516. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
  517. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
  518. package/out/src/storage/remoting/RateLimitPolicy.d.ts +10 -0
  519. package/out/src/storage/remoting/RateLimitPolicy.d.ts.map +1 -0
  520. package/out/src/storage/remoting/RateLimitPolicy.js +37 -0
  521. package/out/src/storage/remoting/RateLimitPolicy.js.map +1 -0
  522. package/out/src/storage/remoting/StorageClient.d.ts +2 -0
  523. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  524. package/out/src/storage/remoting/StorageClient.js +82 -50
  525. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  526. package/out/src/storage/remoting/StorageClientBase.d.ts +23 -4
  527. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  528. package/out/src/storage/remoting/StorageClientBase.js +97 -4
  529. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  530. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  531. package/out/src/storage/remoting/StorageMobile.js +34 -22
  532. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  533. package/out/src/storage/remoting/StorageServer.d.ts +62 -1
  534. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  535. package/out/src/storage/remoting/StorageServer.js +451 -172
  536. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  537. package/out/src/storage/remoting/edgePolicy.d.ts +57 -0
  538. package/out/src/storage/remoting/edgePolicy.d.ts.map +1 -0
  539. package/out/src/storage/remoting/edgePolicy.js +387 -0
  540. package/out/src/storage/remoting/edgePolicy.js.map +1 -0
  541. package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
  542. package/out/src/storage/remoting/entityValidationHelpers.js +22 -5
  543. package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
  544. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  545. package/out/src/storage/schema/KnexMigrations.js +56 -0
  546. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  547. package/out/src/storage/schema/StorageIdbSchema.d.ts +24 -0
  548. package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
  549. package/out/src/storage/schema/entities/EntityBase.d.ts.map +1 -1
  550. package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
  551. package/out/src/storage/schema/entities/EntityCertificate.d.ts.map +1 -1
  552. package/out/src/storage/schema/entities/EntityCertificate.js.map +1 -1
  553. package/out/src/storage/schema/entities/EntityCertificateField.d.ts.map +1 -1
  554. package/out/src/storage/schema/entities/EntityCertificateField.js.map +1 -1
  555. package/out/src/storage/schema/entities/EntityCommission.d.ts.map +1 -1
  556. package/out/src/storage/schema/entities/EntityCommission.js.map +1 -1
  557. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  558. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  559. package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
  560. package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
  561. package/out/src/storage/schema/entities/EntityOutputTag.d.ts.map +1 -1
  562. package/out/src/storage/schema/entities/EntityOutputTag.js.map +1 -1
  563. package/out/src/storage/schema/entities/EntityOutputTagMap.d.ts.map +1 -1
  564. package/out/src/storage/schema/entities/EntityOutputTagMap.js.map +1 -1
  565. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +3 -0
  566. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  567. package/out/src/storage/schema/entities/EntityProvenTx.js +46 -36
  568. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  569. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts +2 -2
  570. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts.map +1 -1
  571. package/out/src/storage/schema/entities/EntityProvenTxReq.js +12 -10
  572. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  573. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  574. package/out/src/storage/schema/entities/EntitySyncState.js +25 -34
  575. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  576. package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
  577. package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
  578. package/out/src/storage/schema/entities/EntityTxLabel.d.ts.map +1 -1
  579. package/out/src/storage/schema/entities/EntityTxLabel.js.map +1 -1
  580. package/out/src/storage/schema/entities/EntityTxLabelMap.d.ts.map +1 -1
  581. package/out/src/storage/schema/entities/EntityTxLabelMap.js.map +1 -1
  582. package/out/src/storage/schema/entities/EntityUser.d.ts.map +1 -1
  583. package/out/src/storage/schema/entities/EntityUser.js.map +1 -1
  584. package/out/src/storage/schema/entities/MergeEntity.d.ts.map +1 -1
  585. package/out/src/storage/schema/entities/MergeEntity.js +9 -14
  586. package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
  587. package/out/src/storage/schema/tables/TableActionBatch.d.ts +26 -0
  588. package/out/src/storage/schema/tables/TableActionBatch.d.ts.map +1 -0
  589. package/out/src/storage/schema/tables/TableActionBatch.js +3 -0
  590. package/out/src/storage/schema/tables/TableActionBatch.js.map +1 -0
  591. package/out/src/storage/schema/tables/TableAuthSession.js.map +1 -1
  592. package/out/src/storage/schema/tables/index.d.ts +1 -0
  593. package/out/src/storage/schema/tables/index.d.ts.map +1 -1
  594. package/out/src/storage/schema/tables/index.js +1 -0
  595. package/out/src/storage/schema/tables/index.js.map +1 -1
  596. package/out/src/storage/storageProviderHelpers.js.map +1 -1
  597. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts +3 -0
  598. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  599. package/out/src/storage/sync/StorageMySQLDojoReader.js +30 -16
  600. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  601. package/out/src/utility/Format.d.ts.map +1 -1
  602. package/out/src/utility/Format.js +2 -2
  603. package/out/src/utility/Format.js.map +1 -1
  604. package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
  605. package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
  606. package/out/src/utility/actionBatchDigest.d.ts +9 -0
  607. package/out/src/utility/actionBatchDigest.d.ts.map +1 -0
  608. package/out/src/utility/actionBatchDigest.js +86 -0
  609. package/out/src/utility/actionBatchDigest.js.map +1 -0
  610. package/out/src/utility/actionBatchPack.d.ts +16 -0
  611. package/out/src/utility/actionBatchPack.d.ts.map +1 -0
  612. package/out/src/utility/actionBatchPack.js +220 -0
  613. package/out/src/utility/actionBatchPack.js.map +1 -0
  614. package/out/src/utility/aggregateResults.d.ts.map +1 -1
  615. package/out/src/utility/aggregateResults.js.map +1 -1
  616. package/out/src/utility/beefForTxids.d.ts +9 -0
  617. package/out/src/utility/beefForTxids.d.ts.map +1 -0
  618. package/out/src/utility/beefForTxids.js +35 -0
  619. package/out/src/utility/beefForTxids.js.map +1 -0
  620. package/out/src/utility/brc114ActionTimeLabels.d.ts.map +1 -1
  621. package/out/src/utility/brc114ActionTimeLabels.js +26 -30
  622. package/out/src/utility/brc114ActionTimeLabels.js.map +1 -1
  623. package/out/src/utility/formatUnknown.d.ts +6 -0
  624. package/out/src/utility/formatUnknown.d.ts.map +1 -0
  625. package/out/src/utility/formatUnknown.js +39 -0
  626. package/out/src/utility/formatUnknown.js.map +1 -0
  627. package/out/src/utility/hashWasm.d.ts +5 -0
  628. package/out/src/utility/hashWasm.d.ts.map +1 -0
  629. package/out/src/utility/hashWasm.js +15 -0
  630. package/out/src/utility/hashWasm.js.map +1 -0
  631. package/out/src/utility/identityUtils.d.ts.map +1 -1
  632. package/out/src/utility/identityUtils.js +2 -4
  633. package/out/src/utility/identityUtils.js.map +1 -1
  634. package/out/src/utility/parseTxScriptOffsets.d.ts +1 -1
  635. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  636. package/out/src/utility/parseTxScriptOffsets.js +1 -1
  637. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  638. package/out/src/utility/stampLog.d.ts.map +1 -1
  639. package/out/src/utility/stampLog.js +49 -42
  640. package/out/src/utility/stampLog.js.map +1 -1
  641. package/out/src/utility/traceContext.d.ts +13 -0
  642. package/out/src/utility/traceContext.d.ts.map +1 -0
  643. package/out/src/utility/traceContext.js +34 -0
  644. package/out/src/utility/traceContext.js.map +1 -0
  645. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  646. package/out/src/utility/tscProofToMerklePath.js +1 -1
  647. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  648. package/out/src/utility/utilityHelpers.buffer.js.map +1 -1
  649. package/out/src/utility/utilityHelpers.d.ts +2 -2
  650. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  651. package/out/src/utility/utilityHelpers.js +8 -4
  652. package/out/src/utility/utilityHelpers.js.map +1 -1
  653. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  654. package/out/src/utility/utilityHelpers.noBuffer.js +1 -2
  655. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  656. package/out/src/wab-client/WABClient.d.ts +36 -90
  657. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  658. package/out/src/wab-client/WABClient.js +103 -151
  659. package/out/src/wab-client/WABClient.js.map +1 -1
  660. package/out/src/wab-client/WABTransport.d.ts +81 -0
  661. package/out/src/wab-client/WABTransport.d.ts.map +1 -0
  662. package/out/src/wab-client/WABTransport.js +420 -0
  663. package/out/src/wab-client/WABTransport.js.map +1 -0
  664. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +10 -10
  665. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  666. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +16 -21
  667. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  668. package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js.map +1 -1
  669. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js.map +1 -1
  670. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts +2 -1
  671. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts.map +1 -1
  672. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js +14 -0
  673. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +1 -1
  674. package/package.json +66 -30
  675. package/license.md +0 -28
package/CHANGELOG.md CHANGED
@@ -6,6 +6,86 @@ attention to changes that materially alter behavior or extend functionality.
6
6
 
7
7
  ## wallet-toolbox (unreleased)
8
8
 
9
+ - Point Wallet Toolbox contributors and AI agents to the canonical stack-level
10
+ contribution and quality policy; keep client and mobile candidate versions
11
+ in release lockstep without changing runtime behavior.
12
+ - Harden storage, action-batch, remoting, WAB, authentication, chaintracker,
13
+ and monitor implementation paths while preserving persisted schemas,
14
+ positional call compatibility, and public wallet/storage contracts.
15
+ - Refresh compatible rate-limit, MySQL, and React Native build dependencies;
16
+ consolidate entropy, Merkle-path, and action-batch iteration without
17
+ changing persisted data, generated paths, or public wallet contracts.
18
+ - Remove generated SQLite test databases before and after every Jest run so
19
+ repeated local validation cannot silently consume unbounded disk space.
20
+ - Ship the Express declaration dependency required by the public storage
21
+ server, edge-policy, and rate-limit declarations. Validate authenticated
22
+ storage identities explicitly and normalize multi-value Express 5 headers
23
+ instead of relying on implicit request augmentation or scalar headers.
24
+ - Add capability-negotiated action-batch manifest format 2 without changing
25
+ BRC-100. It derives source/output scripts from the authenticated transaction
26
+ graph, retains only the external proof frontier, bulk-loads shared storage
27
+ rows, and commits an already prepared manifest by semantic digest. Version-1
28
+ providers and clients retain their existing behavior.
29
+ - Add authenticated `ABP1` multi-blob uploads with bounded gzip/Brotli/identity
30
+ negotiation, decompression limits, prepared-manifest authorization, per-item
31
+ content verification, bounded concurrency, and one-transaction bulk storage.
32
+ The physical request limit chunks unbounded logical transactions; it is not
33
+ a script or consensus limit.
34
+ - Add optional script-verifier injection to Wallet, setup helpers, and local
35
+ storage providers. Internal checks use explicit consensus context, distinguish
36
+ resource exhaustion from invalid scripts, and continue verifying resolvable
37
+ inputs when another source transaction is intentionally omitted.
38
+ - Retain typed bytes through action-batch planning, hashing, validation, and
39
+ chunk assembly; preload external inputs and shared metadata once per atomic
40
+ manifest; and convert Atomic BEEF only at the historical public `number[]`
41
+ boundary without changing BRC-100 or storage protocol contracts.
42
+ - Make StorageServer, AdminServer, and the reusable ChaintracksService
43
+ credential-free public-CORS compatible by default, with opt-in exact origin
44
+ lists and configurable CSP/browser response headers. Add bounded parsers,
45
+ in-flight work and Node connection limits, stable non-sensitive errors, and
46
+ metadata-only request logging. Storage RPC work remains protected by
47
+ BRC-103 identity, per-IP/per-identity limits, method allowlisting, and
48
+ optional payment policy.
49
+ - Bound StorageServer work per source IP before BRC-103 authentication and per
50
+ identity before payment/RPC handling. Both stages support shared stores, and
51
+ proxy trust now requires an explicit hop/subnet/predicate configuration.
52
+ - Harden CWI/WAB account continuity so overlay failures, malformed or ambiguous
53
+ UMP results, and snapshot-load failures cannot silently enter new-user
54
+ onboarding. Add an expiring WAB auth session, legacy-compatible WAB account
55
+ status inference, canonical E.164 phone identity, bounded KDF/snapshot
56
+ parsing, and fail-closed UMP renewal/broadcast behavior.
57
+ - Replace WAB's endpoint-by-endpoint raw `fetch` calls with one typed transport
58
+ enforcing HTTPS (localhost excepted), timeouts, request/response limits,
59
+ redirect and ambient-credential protection, correlation IDs, and privacy-safe errors.
60
+ Wallet authentication, UMP, WAB, and snapshot events now support the SDK's
61
+ opt-in generic telemetry sink without reporting keys, snapshots, payloads,
62
+ OTPs, or Shamir shares.
63
+ - Add automatically negotiated, in-memory planning for dependent `noSend` workloads. Capable
64
+ storage providers reserve funding once, perform middle action planning and signing without
65
+ persistence round trips, and atomically commit the complete workspace on `sendWith`. Existing
66
+ BRC-100 arguments and results are unchanged, and providers without `actionBatch: 1` retain the
67
+ legacy path. SQLite, MySQL/Knex, IndexedDB, authenticated remote clients, browser, and mobile
68
+ builds share the same capability contract.
69
+ - Add leased per-output batch reservations, expiry cleanup, adaptive pool extension, idempotent
70
+ manifest commits, inline content-addressed blobs up to 4 MiB, and authenticated binary uploads
71
+ in provider-sized chunks with four-way bounded concurrency for larger batches. Broadcast remains
72
+ outside the atomic persistence transaction.
73
+ - Make batch funding converge on fragmented wallets at production fee rates. Reservation targets
74
+ include the fee and viable-change overhead of an added input, reactive extensions request only
75
+ the remaining shortfall, and EWMA runway extensions subtract unconsumed reserved funding without
76
+ compounding after empty or partial responses. The regression runs 16 independent actions through
77
+ both the in-process and authenticated remote-storage paths and commits the complete batch.
78
+ - Bind remote batch authorization exclusively to the BRC-103 authenticated identity and its active
79
+ storage provider, ignoring caller-supplied user IDs and active-state claims. Restrict JSON-RPC
80
+ dispatch to the public remote-storage protocol so authenticated callers cannot invoke low-level
81
+ provider methods, and rate-limit authenticated RPCs per identity key without limiting workspace
82
+ length. Unauthenticated and cross-user batch-management regressions cover the boundary.
83
+ - Replace the cumulative 64-output reservation ceiling with repeatable extensions bounded to 64
84
+ outputs per storage call. Workspaces and spend chains no longer have an action-count or confirmed
85
+ funding-input ceiling; an 80-action independent batch crosses the old boundary and commits.
86
+ - Add a retained workload benchmark covering 1, 10, 50, and 250 actions across dependent,
87
+ independent, mixed-input, and two-step signing models, four script sizes, and 25/100/250 ms
88
+ storage latency. Run it with `pnpm --filter @bsv/wallet-toolbox bench:action-batch`.
9
89
  - Release prep for `2.4.2`: transaction-pipeline, BEEF fetching, and binary transport
10
90
  performance improvements described below, published in lockstep for Node, browser, and mobile.
11
91
  - Transaction pipeline performance: reuse parsed BEEF through `createAction`/`signAction`, retain
@@ -34,7 +114,7 @@ attention to changes that materially alter behavior or extend functionality.
34
114
  `auth-express-middleware@2.1.1` likewise declares its `mime-types` runtime
35
115
  import so strict package managers do not fail when loading the built packages.
36
116
 
37
- - Release prep for `2.4.2`: proof completion now discovers every local
117
+ - Release prep for `2.4.2`: proof completion now discovers every local
38
118
  transaction row sharing the proven txid, repairs notification-set drift from
39
119
  concurrent multi-user `internalizeAction` calls, and idempotently completes
40
120
  any local copy omitted by a last-writer-wins notification update.
package/LICENSE.txt ADDED
@@ -0,0 +1,58 @@
1
+ Open BSV License Version 6 – granted by BSV Association, Alpenstrasse 15, 6300
2
+ Zug, Switzerland (CHE-427.008.338) ("Licensor"), to you as a user (henceforth
3
+ "You", "User" or "Licensee").
4
+
5
+ For the purposes of this license, the definitions below have the following
6
+ meanings:
7
+
8
+ "Bitcoin Protocol" means the protocol implementation, cryptographic rules,
9
+ network protocols, and consensus mechanisms in the Bitcoin White Paper as
10
+ described here https://protocol.bsvblockchain.org.
11
+
12
+ "Bitcoin White Paper" means the paper entitled 'Bitcoin: A Peer-to-Peer
13
+ Electronic Cash System' published by 'Satoshi Nakamoto' in October 2008.
14
+
15
+ "BSV Blockchain" means:
16
+
17
+ (a) the Bitcoin blockchain containing block height #556767 with the hash
18
+ "000000000000000001d956714215d96ffc00e0afda4cd0a96c96f8d802b1662b" and
19
+ that contains the longest honest persistent chain of blocks which has been
20
+ produced in a manner which is consistent with the rules set forth in the
21
+ Network Access Rules; and
22
+ (b) the test blockchains that contain the longest honest persistent chains of
23
+ blocks which has been produced in a manner which is consistent with the
24
+ rules set forth in the Network Access Rules.
25
+
26
+ "Network Access Rules" or "Rules" means the set of rules regulating the
27
+ relationship between BSV Association and the nodes on BSV based on the Bitcoin
28
+ Protocol rules and those set out in the Bitcoin White Paper, and available here
29
+ https://bsvblockchain.org/network-access-rules.
30
+
31
+ "Software" means the software the subject of this license, including any/all
32
+ intellectual property rights therein and associated documentation files.
33
+
34
+ BSV Association grants permission, free of charge and on a non-exclusive basis
35
+ to any person obtaining a copy of the Software to deal in the Software, including
36
+ without limitation the rights to use, copy, modify, merge, publish, distribute,
37
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the
38
+ Software is furnished to do so, subject to and conditioned upon the following
39
+ conditions:
40
+
41
+ 1 - The text "© BSV Association", and this license shall be included in all
42
+ copies or substantial portions of the Software.
43
+
44
+ 2 - The Software, and any software that is derived from the Software or parts
45
+ thereof, may only be used exclusively on the BSV Blockchain.
46
+
47
+ For the avoidance of doubt, this license is granted subject to and conditioned
48
+ upon your compliance with these terms only and is limited to uses on the BSV
49
+ Blockchain. Any exercise of rights not compliant with these terms including
50
+ use not for the BSV Blockchain is deemed outside the scope of the license.
51
+
52
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
53
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES REGARDING ENTITLEMENT,
54
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
55
+ EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS THEREOF BE LIABLE FOR ANY CLAIM,
56
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
57
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
58
+ DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -14,17 +14,17 @@ BSV Desktop and BSV Browser are the BSV Association reference wallet application
14
14
 
15
15
  ### What's Inside
16
16
 
17
- | Module | Description |
18
- |--------|-------------|
19
- | **Wallet** | Full BRC-100 wallet — action creation, signing, certificate management, identity discovery, output tracking |
20
- | **Storage** | Pluggable persistence with three backends: **SQLite/MySQL** (via Knex), **IndexedDB** (browser/mobile), and **remote** (client/server over HTTP) |
21
- | **Services** | Network layer — ARC transaction broadcasting, chain tracking (Chaintracks), merkle proof verification, UTXO lookups via WhatsOnChain |
22
- | **Monitor** | Background daemon that watches pending transactions, rebroadcasts failures, handles chain reorganizations, and manages proof acquisition |
23
- | **Signer** | `WalletSigner` bridges any BRC-100 wallet to the SDK's `Transaction` signing interface |
24
- | **Key Management** | `PrivilegedKeyManager` for secure key storage with Shamir secret sharing and obfuscation; protocol-based key derivation per BRC-42/43 |
25
- | **Permissions** | `WalletPermissionsManager` for fine-grained per-app, per-protocol permission control with grouped approval flows |
26
- | **MockChain** | In-memory blockchain for testing — mock mining, UTXO tracking, and merkle proof generation without a network |
27
- | **Entropy** | `EntropyCollector` gathers mouse/touch entropy for high-quality randomness in browser environments |
17
+ | Module | Description |
18
+ | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |
19
+ | **Wallet** | Full BRC-100 wallet — action creation, signing, certificate management, identity discovery, output tracking |
20
+ | **Storage** | Pluggable persistence with three backends: **SQLite/MySQL** (via Knex), **IndexedDB** (browser/mobile), and **remote** (client/server over HTTP) |
21
+ | **Services** | Network layer — ARC transaction broadcasting, chain tracking (Chaintracks), merkle proof verification, UTXO lookups via WhatsOnChain |
22
+ | **Monitor** | Background daemon that watches pending transactions, rebroadcasts failures, handles chain reorganizations, and manages proof acquisition |
23
+ | **Signer** | `WalletSigner` bridges any BRC-100 wallet to the SDK's `Transaction` signing interface |
24
+ | **Key Management** | `PrivilegedKeyManager` for secure key storage with Shamir secret sharing and obfuscation; protocol-based key derivation per BRC-42/43 |
25
+ | **Permissions** | `WalletPermissionsManager` for fine-grained per-app, per-protocol permission control with grouped approval flows |
26
+ | **MockChain** | In-memory blockchain for testing — mock mining, UTXO tracking, and merkle proof generation without a network |
27
+ | **Entropy** | `EntropyCollector` gathers mouse/touch entropy for high-quality randomness in browser environments |
28
28
 
29
29
  ### Packages
30
30
 
@@ -63,11 +63,13 @@ const wallet = await SetupWallet({
63
63
  // Create a transaction
64
64
  const result = await wallet.createAction({
65
65
  description: 'Send payment',
66
- outputs: [{
67
- lockingScript: '76a914...88ac',
68
- satoshis: 1000,
69
- outputDescription: 'payment'
70
- }]
66
+ outputs: [
67
+ {
68
+ lockingScript: '76a914...88ac',
69
+ satoshis: 1000,
70
+ outputDescription: 'payment'
71
+ }
72
+ ]
71
73
  })
72
74
  ```
73
75
 
@@ -79,6 +81,10 @@ See [Managed change, sweeping, and recovery](./docs/managed-change-policy.md)
79
81
  for the default-basket invariant, automatic funding policy, and supported
80
82
  `internalizeAction` repair paths.
81
83
 
84
+ See [In-memory action batch planning](./docs/action-batch-planning.md) for
85
+ capability-negotiated `noSend` planning, compact manifests, compressed binary
86
+ pack transport, atomic commit, compatibility behavior, and retained benchmarks.
87
+
82
88
  The codebase has detailed JSDoc annotations throughout — these will surface inline in editors like VS Code.
83
89
 
84
90
  ### Horizontal Storage scaling
@@ -88,11 +94,7 @@ running multiple processes or replicas behind a non-sticky load balancer, use
88
94
  the shared Knex implementation against the same migrated wallet database:
89
95
 
90
96
  ```typescript
91
- import {
92
- KnexSessionManager,
93
- StorageKnex,
94
- StorageServer
95
- } from '@bsv/wallet-toolbox'
97
+ import { KnexSessionManager, StorageKnex, StorageServer } from '@bsv/wallet-toolbox'
96
98
 
97
99
  const storage = new StorageKnex(storageOptions)
98
100
  await storage.migrate(storageName, storageIdentityKey)
@@ -107,11 +109,36 @@ const server = new StorageServer(storage, {
107
109
  wallet,
108
110
  monetize: false,
109
111
  sessionManager,
112
+ // Optional: exact trusted proxy chain. Omit for direct-socket IPs.
113
+ trustProxy: 1,
114
+ // Per-IP before auth (default 300/minute).
115
+ preAuthRateLimit: { limit: 300, windowMs: 60_000 },
116
+ // Per-identity before payment/RPC work (default 1,000/minute).
117
+ rateLimit: { limit: 1_000, windowMs: 60_000 },
118
+ // Public CORS is the default. Supply exact origins to opt into a whitelist.
119
+ allowedOrigins: process.env.WALLET_ALLOWED_ORIGINS?.split(','),
120
+ // Optional CSP/security-header overrides for an embedding deployment.
121
+ securityHeaders: {
122
+ contentSecurityPolicy: "default-src 'none'"
123
+ },
110
124
  logRpcRequests: false
111
125
  })
112
126
  server.start()
113
127
  ```
114
128
 
129
+ Both stages return HTTP 429 with `ERR_RATE_LIMITED`. For multi-process or
130
+ multi-replica deployments, configure a shared `express-rate-limit` store in
131
+ both options so limits are aggregate rather than per process. Never use a
132
+ permissive trust-all proxy setting; use a known hop count, subnet, or trust
133
+ predicate.
134
+
135
+ The storage service is intentionally reachable by browser apps on previously
136
+ unknown domains. With no origin configuration it uses public wildcard CORS
137
+ without cookie credentials. Passing `allowedOrigins`, setting
138
+ `WALLET_STORAGE_CORS_MODE=allowlist`, or setting the mode to `disabled`
139
+ provides opt-in restriction. BRC-103 authentication and optional payment
140
+ policy are unchanged by CORS mode.
141
+
115
142
  Every replica must share the same database and session TTL. Run
116
143
  `sessionManager.pruneExpiredSessions()` from one scheduled maintenance worker;
117
144
  reads exclude expired rows even before they are physically pruned. Once every
@@ -128,36 +155,71 @@ does not apply schema changes.
128
155
  git clone https://github.com/bsv-blockchain/ts-stack.git
129
156
  cd ts-stack
130
157
  pnpm install
131
- pnpm --filter @bsv/wallet-toolbox run build
158
+ pnpm --filter @bsv/wallet-toolbox format:check
159
+ pnpm --filter @bsv/wallet-toolbox lint
160
+ pnpm --filter @bsv/wallet-toolbox typecheck
132
161
  pnpm --filter @bsv/wallet-toolbox test
162
+ pnpm --filter @bsv/wallet-toolbox test:coverage
163
+ pnpm --filter @bsv/wallet-toolbox pack:check
164
+ pnpm --filter @bsv/wallet-toolbox-client test:browser
165
+ pnpm --filter @bsv/wallet-toolbox-mobile test:mobile
133
166
  ```
134
167
 
135
- Tests use Jest. Files named `*.man.test.ts` are manual/integration tests excluded from CI — they require network access or long runtimes and are run locally by developers.
168
+ Tests use Jest. The default and coverage suites are deterministic and must not
169
+ depend on live third-party services. Files named `*.man.test.ts` are explicit
170
+ manual/integration tests excluded from CI because they require credentials,
171
+ network access, or long runtimes. Files named `*.live.test.ts` are public-network
172
+ checks, also excluded from deterministic PR coverage. Run exactly one governed
173
+ suite with `test:manual -- <path>` or `test:live -- <path>` after reviewing
174
+ `governance/test-quality/policy.json`; never batch-run operator suites. CI
175
+ merges four Wallet Toolbox coverage shards
176
+ for reporting; the complete local `test:coverage` run currently measures
177
+ 69.12% statements, 59.09% branches, 72.83% functions, and 71.06% lines.
178
+
179
+ Operational repair, migration, export, and long-running service procedures are
180
+ not tests. They live under [`operator/`](./operator/README.md), produce an exact
181
+ dry-run plan by default, and require explicit confirmation before they write
182
+ state or artifacts. The exact manual-suite disposition inventory in
183
+ `governance/test-quality/wallet-toolbox-manual-suites.json` prevents new
184
+ operator procedures, fixture generators, diagnostics, or examples from being
185
+ silently added as Jest suites.
186
+
187
+ Reusable source recipes live under [`examples/`](./examples/README.md). Manual
188
+ integration suites may validate an example against an explicitly configured
189
+ environment, but the example implementation itself does not live inside a test
190
+ body.
191
+
192
+ `pack:check` installs the exact CommonJS tarball and verifies its public API.
193
+ The browser and mobile commands build platform-specific packages and reject
194
+ Node-only dependency leakage. Publishing and version changes are owned by the
195
+ repository release workflow.
136
196
 
137
197
  ## Contributing
138
198
 
139
199
  We welcome bug reports, feature requests, and pull requests.
140
200
 
141
201
  1. Fork and clone the repository
142
- 2. `npm install`
202
+ 2. `pnpm install` at the `ts-stack` repository root
143
203
  3. Create a feature branch
144
- 4. Make your changes and ensure `npm test` passes
204
+ 4. Make your changes and run the relevant package checks above
145
205
  5. Open a pull request
146
206
 
147
- See [CONTRIBUTING.md](./CONTRIBUTING.md) for full guidelines.
207
+ See the
208
+ [repository contribution guidelines](https://github.com/bsv-blockchain/ts-stack/blob/main/CONTRIBUTING.md)
209
+ for the full stack-wide policy.
148
210
 
149
211
  ## Contributors
150
212
 
151
- | | Name | GitHub | Role |
152
- |---|------|--------|------|
153
- | | Tone Engel | [@tonesnotes](https://github.com/tonesnotes) | Lead developer, maintainer |
154
- | | Darren Kellenschwiler | [@sirdeggen](https://github.com/sirdeggen) | Core contributor |
155
- | | Brayden Langley | [@BraydenLangley](https://github.com/BraydenLangley) | Core contributor |
156
- | | Ty Everett | [@ty-everett](https://github.com/ty-everett) | Core contributor, reviewer |
157
- | | Jackie Lu | [@jackielu3](https://github.com/jackielu3) | Contributor |
158
- | | David Case | [@shruggr](https://github.com/shruggr) | Contributor |
159
- | | Stephen Thomson | [@Stephen-Thomson](https://github.com/Stephen-Thomson) | Contributor |
160
- | | Chance Barimbao | [@ChanceBarimbao](https://github.com/ChanceBarimbao) | Contributor |
213
+ | | Name | GitHub | Role |
214
+ | --- | --------------------- | ------------------------------------------------------ | -------------------------- |
215
+ | | Tone Engel | [@tonesnotes](https://github.com/tonesnotes) | Lead developer, maintainer |
216
+ | | Darren Kellenschwiler | [@sirdeggen](https://github.com/sirdeggen) | Core contributor |
217
+ | | Brayden Langley | [@BraydenLangley](https://github.com/BraydenLangley) | Core contributor |
218
+ | | Ty Everett | [@ty-everett](https://github.com/ty-everett) | Core contributor, reviewer |
219
+ | | Jackie Lu | [@jackielu3](https://github.com/jackielu3) | Contributor |
220
+ | | David Case | [@shruggr](https://github.com/shruggr) | Contributor |
221
+ | | Stephen Thomson | [@Stephen-Thomson](https://github.com/Stephen-Thomson) | Contributor |
222
+ | | Chance Barimbao | [@ChanceBarimbao](https://github.com/ChanceBarimbao) | Contributor |
161
223
 
162
224
  ## License
163
225
 
package/docs/README.md CHANGED
@@ -9,7 +9,9 @@ The documentation is split into various pages, each covering a set of related fu
9
9
  - [Storage](./storage.md) — Wallet data persistent storage classes and related APIs.
10
10
  - [Services](./services.md) — Support for abstracted external network services.
11
11
  - [Monitor](./monitor.md) — Background task manager for wallet action validation and processing.
12
+ - [Action batch planning](./action-batch-planning.md) — Session-local `noSend` planning and atomic storage commit.
12
13
  - [WAB Shamir](./wab-shamir.md) — Shamir 2-of-3 key recovery system with entropy collection and WAB server integration.
14
+ - [Authentication observability](./authentication-observability.md) — Privacy-safe telemetry, WAB transport hardening, and account-continuity handling.
13
15
 
14
16
  ## Open API
15
17
 
@@ -83,4 +85,4 @@ const rw = await wallet.internalizeAction(args)
83
85
  console.log(rw.accepted)
84
86
  ```
85
87
 
86
- [Return to Top](#bsv-wallet-toolbox-api-documentation)
88
+ [Return to Top](#bsv-wallet-toolbox-api-documentation)
@@ -0,0 +1,220 @@
1
+ # In-memory action batch planning
2
+
3
+ Wallet Toolbox can plan a sequence of `noSend` actions in memory and commit it
4
+ atomically when the application uses `sendWith`. This removes per-action storage
5
+ round trips without changing the BRC-100 wallet interface, action arguments, or
6
+ result shapes. Applications continue to create, sign, and send actions exactly as
7
+ before.
8
+
9
+ ## Negotiation and compatibility
10
+
11
+ `WalletArgs.actionBatchMode` accepts `auto` (the default) or `legacy`. In `auto`
12
+ mode, the wallet asks its active storage provider for capabilities once. A provider
13
+ advertising `actionBatch: { version: 1, ...limits }` enables local planning. A
14
+ provider without that capability uses the existing persistence flow before any
15
+ workspace begins. A workspace never mixes storage modes or changes active provider.
16
+ Large first actions use compact bootstrap only when the provider also advertises
17
+ `compactBegin: true`; this keeps new clients compatible with older version-1
18
+ servers during a rolling deployment.
19
+
20
+ The original manifest and one-blob-per-request transport remain version 1. A
21
+ provider can independently advertise the additive `manifestVersion: 2`,
22
+ `commitByDigest`, and `packedUploads` capabilities. A new client uses each
23
+ optimization only when its provider advertises it. Old clients ignore the extra
24
+ fields, new clients retain the version-1 path against old providers, and the two
25
+ new storage methods are optional for third-party `WalletStorage` implementations.
26
+
27
+ The capability and its methods are Wallet Toolbox storage extensions. They do not
28
+ extend `WalletInterface`, `CreateActionArgs`, `SignActionArgs`, `noSend`,
29
+ `noSendChange`, `sendWith`, or their results.
30
+
31
+ ## Lifecycle
32
+
33
+ 1. The first `noSend` action begins a workspace, reserves the canonical funding
34
+ inputs needed for that action plus limited headroom, and returns their proof
35
+ data in one storage call. Format 2 sends only planning metadata and exact
36
+ output-script lengths at bootstrap. Signed transactions and the external
37
+ proof frontier follow through the binary commit path, so a hexadecimal
38
+ script is not duplicated into a large JSON request.
39
+ 2. The wallet plans, signs, validates, and indexes subsequent actions locally. A
40
+ shared BEEF graph avoids retaining repeated ancestry. The signed transaction
41
+ is the canonical source for output scripts; format 2 carries script digests
42
+ for validation, rather than carrying the same scripts as transaction bytes,
43
+ plan strings, metadata strings, and standalone blobs.
44
+ 3. If confirmed funding runs low, the wallet extends its reservation pool using
45
+ an EWMA estimate and geometrically increasing runway. Forwarded staged change
46
+ needs no reservation or extension.
47
+ 4. `sendWith`, or a normal action created while the workspace is open, validates
48
+ and atomically persists every staged action. Only the requested transactions
49
+ are sent; earlier actions retain their `nosend` status.
50
+ 5. Broadcast occurs after the storage transaction. Delayed mode returns after the
51
+ batch is durably queued; immediate mode uses the existing aggregate broadcaster
52
+ and review results.
53
+
54
+ Intermediate state is deliberately session-scoped. If the wallet process exits,
55
+ the uncommitted transaction workspace is lost and its durable reservations expire
56
+ or are released by cleanup. The final commit is the remote durability boundary.
57
+
58
+ ## Reservations and cleanup
59
+
60
+ Reservations belong to individual outputs, not the wallet. Other wallet activity
61
+ can use unreserved outputs normally. A uniqueness constraint prevents one output
62
+ from belonging to two active batches.
63
+
64
+ The initial reservation includes at most three extra candidates and never more
65
+ than eight outputs. Its canonical funding target includes the marginal P2PKH
66
+ input fee and enough value to recover an economically viable first change output,
67
+ so a low basket minimum cannot repeatedly select inputs that satisfy the nominal
68
+ deficit but cost too much to use.
69
+
70
+ Extensions add at most 64 outputs per storage call, but there is no cumulative
71
+ reservation, workspace-size, action-count, or spend-chain limit. Additional
72
+ bounded calls continue for as long as the workspace needs confirmed funding.
73
+ They use the same exact, least-over, then largest-under selection policy as
74
+ normal funding. Retry targets are incremental shortfalls: the planner credits
75
+ the value and count of every unconsumed reserved output before asking for more.
76
+ Confirmed inputs already used by staged transactions remain reserved until
77
+ commit but are not credited as available funding. Proactive EWMA requests
78
+ likewise subtract the unconsumed pool, initialize from the first complete
79
+ sample, and increase geometric runway only when the provider fulfills both the
80
+ requested count and value. Empty or partial extensions therefore cannot
81
+ compound a target against unchanged wallet state.
82
+ Leases last 15 minutes with a 60-minute hard lifetime. Long-running workspaces
83
+ renew near 80% of the lease; commit may atomically reacquire an expired reservation
84
+ when no conflicting spend or reservation occurred. Commit, abort, wallet
85
+ destruction, expiry cleanup, and the one-minute monitor task release unused state.
86
+
87
+ ## Atomic commit and payload transport
88
+
89
+ The provider checks graph order, duplicate spends, scripts, TXIDs, signatures,
90
+ fees, commissions, leases, and output metadata before persistence. Transactions,
91
+ outputs, labels, tags, maps, and proof requests are written under one database
92
+ transaction together with reservation consumption and release. Batch ID plus a
93
+ semantic manifest digest makes persistence retries idempotent.
94
+
95
+ Content-addressed raw transactions and the external dependency BEEF travel
96
+ inline for batches up to the provider's inline limit (4 MiB by default). Larger
97
+ format-2 workspaces prepare a compact digest-only manifest and upload only the
98
+ content-addressed physical blobs the server reports missing. Multiple blobs
99
+ share one `ABP1` binary pack, bounded by the provider's advertised request size
100
+ and item count. Packs use the first mutually supported `CompressionStream`
101
+ encoding (`gzip`, then optional Brotli) when it reduces bytes; otherwise they
102
+ use identity encoding.
103
+
104
+ The client sends no HTTP `Content-Encoding` header: a dedicated authenticated
105
+ pack-encoding header describes the exact request body seen by BRC-103. The
106
+ server bounds both compressed request bytes and decompressed pack bytes,
107
+ validates the frame, every SHA-256 digest, prepared-manifest authorization,
108
+ batch ownership, and hard lifetime, then inserts the pack in one storage
109
+ transaction. The final JSON-RPC call sends only the batch ID and semantic
110
+ manifest digest. The server commits the exact prepared manifest retained under
111
+ that digest.
112
+
113
+ Logical blobs are split at the provider's advertised limit (8 MiB by default),
114
+ deduplicated by digest, and uploaded with at most four concurrent requests. The
115
+ 8 MiB value is a physical request target, not a logical transaction limit: one
116
+ transaction or dependency BEEF may span any number of chunks. There is no
117
+ consensus script-size limit in this path. Incomplete uploads remain scoped to
118
+ their authenticated batch and expire with it.
119
+
120
+ Allocation failure in a particular JavaScript host remains a local resource
121
+ failure. It is reported as an operation/runtime failure rather than evidence that
122
+ the transaction or script is consensus-invalid.
123
+
124
+ The planner, validator, digest pipeline, browser IndexedDB store, and chunk
125
+ assembler retain `Uint8Array` storage throughout this path. SQL adapters create
126
+ buffer views only at the driver boundary. Atomic commit also preloads blob rows,
127
+ external inputs, baskets, tags, and labels once per manifest instead of
128
+ repeating those lookups for every action. It stores only the external input
129
+ proof frontier for each persisted request and reuses the already validated
130
+ complete BEEF graph for immediate/delayed share preparation. The full graph is
131
+ still reconstructed and verified before persistence. These are storage
132
+ implementation details; BRC-100 arguments and results are unchanged.
133
+
134
+ Wallet and locally hosted storage construction can receive an optional
135
+ `scriptVerifier`. Batch and ordinary action checks pass explicit consensus
136
+ context and known source-output heights to that verifier. A provider with a
137
+ packed Spend lane verifies all selected staged inputs in one backend scheduling
138
+ pass, allowing a warm native/WASM implementation to handle large scripts without
139
+ changing the wallet contract. If no verifier is supplied, the SDK TypeScript
140
+ interpreter remains the default.
141
+
142
+ Verifier configuration is process- or page-local. A browser or local wallet
143
+ verifier accelerates checks performed by that wallet; it is not serialized over
144
+ BRC-100 or storage RPC. A remote storage process must create, preload, and inject
145
+ its own verifier into `StorageKnex` if server-side atomic-commit checks should use
146
+ the same backend. Backend initialization, ABI, or memory failures propagate as
147
+ operational failures and are never rewritten as invalid-script verdicts.
148
+
149
+ ## Deployment behavior for large scripts
150
+
151
+ | Deployment | Before these changes | Current behavior |
152
+ | --- | --- | --- |
153
+ | Local Node wallet with Knex | TypeScript execution was the normal path; its default 32 MiB stack budget could turn local exhaustion into an invalid-action error. Repeated action persistence added storage round trips and row lookups. | A preloaded verifier can execute ordinary and batch checks in explicit consensus mode. Default JS execution has no arbitrary consensus stack cap. `noSend` chains plan in memory, bulk-load shared rows, and commit atomically. |
154
+ | Browser wallet with IndexedDB | Large byte values were commonly boxed or hex/string copied, and validation stayed on the TypeScript interpreter. | Browser VeriFast uses the same consensus context and typed-byte paths. IndexedDB stores packed blobs in one transaction and the wallet receives the configured verifier. Host quota or memory exhaustion remains a browser resource failure, not consensus invalidity. |
155
+ | Browser/Node wallet using remote Toolbox storage | The first large action and later commit values could encounter JSON/body limits; repeated scripts appeared in several JSON/manifest fields; every blob needed a request; and server verification could not be configured independently. | Compact bootstrap and format-2 manifests derive scripts from signed transactions. Manifest-authorized, compressed, multi-blob binary packs avoid JSON expansion and reduce request count. Digest-only commit makes the final request small. Client and server independently preload/inject verifiers, and server commit batches selected spends. |
156
+
157
+ For latency-sensitive startup, call `await verifier.preload()` before constructing
158
+ or first using the wallet. The default adaptive mode deliberately lets a cold
159
+ first call use the TypeScript interpreter while WASM warms in the background;
160
+ `mode: 'always'` instead waits for WASM. In a remote deployment, repeat that
161
+ startup step in both the client runtime and every storage-server process.
162
+
163
+ The remaining transport boundaries are resource and protocol facts rather than
164
+ consensus limits. Raw action-batch pack requests stay bounded and logical values
165
+ chunk around that bound. Cicada/Wallet Wire uses typed bytes and zero-copy frame
166
+ handoffs. Browser XDM uses structured clone. HTTP JSON and React Native retain
167
+ their existing BRC-100 encodings, so operators must configure infrastructure
168
+ request limits for ordinary non-batched calls or use action batching for
169
+ multi-megabyte transaction flows.
170
+
171
+ The remote server derives the batch user ID and active-storage state from the
172
+ BRC-103 authenticated identity for every management call and binary upload.
173
+ Caller-supplied user IDs or active-state claims are never authoritative, and the
174
+ JSON-RPC dispatcher exposes only the public remote-storage protocol rather than
175
+ low-level provider methods. Authenticated RPC and blob requests are rate-limited
176
+ by identity key without limiting the number of actions, transactions, or blobs
177
+ in a workspace; operators can configure the rate and a shared multi-replica
178
+ store through `WalletStorageServerOptions.rateLimit`.
179
+
180
+ ## Rollout and measurement roadmap
181
+
182
+ The compatibility boundary permits a server-first rollout: deploy schema and
183
+ provider support, then deploy clients in `auto` mode. Old clients ignore the
184
+ capability; new clients fall back against old providers. Operators can use
185
+ `actionBatchMode: 'legacy'` for controlled comparisons.
186
+
187
+ The retained benchmark is the performance regression gate:
188
+
189
+ ```bash
190
+ pnpm --filter @bsv/wallet-toolbox bench:action-batch
191
+ ```
192
+
193
+ On the same Apple Silicon host with Node.js v25.9.0, a representative cold
194
+ 250-action, 1 KiB-script run reduced planning/signing/validation from
195
+ 19,117.03 ms in legacy mode to 10,907.93 ms in batch mode (42.9%, or 1.75x).
196
+ Including atomic commit, total local time was 19,163.87 ms versus 11,462.13 ms
197
+ (40.2% lower), while storage calls fell from 501 to 2 and database transactions
198
+ from 252 to 3. At 100 ms storage RTT those calls represent 50,100 ms versus
199
+ 200 ms of control-path latency, a 99.6% reduction.
200
+
201
+ A generic single 4 MiB zero-filled script took 1,258.13 ms through the legacy
202
+ path and 208.60 ms through format 2, including upload and atomic commit: 83.4%
203
+ less local time. Its instrumented requests fell from 13,982,465 bytes to 8,064
204
+ bytes. The one 4,195,234-byte logical pack compressed to 5,233 bytes and was
205
+ uploaded in one call. This synthetic compression ratio represents highly
206
+ repetitive data; incompressible data falls back to identity encoding without
207
+ expansion. Absolute times remain host- and database-dependent.
208
+
209
+ It records planning, signing and validation, storage RPCs, database transactions,
210
+ request bytes, commit and broadcast time, CPU, and incremental peak heap. Physical
211
+ SQLite runs compare 1, 10, 50, and 250 action chains at 1 KiB and exercise each
212
+ larger script size with a real action, including the 4 MiB upload path. Its
213
+ complete model covers dependent, independent, explicit-input, and two-step
214
+ signing workloads at every action count; 1 KiB, 64 KiB, 1 MiB, and 4 MiB
215
+ scripts; and 25, 100, and 250 ms storage RTT. The measured cases deliberately
216
+ include both many-small-action and few-large-action shapes so transport tuning
217
+ is not fitted to one contract or graph. Production rollout should additionally
218
+ track reservation conflicts, extensions, expiries, commit retries, pack
219
+ compression, upload deduplication, commit duration, and broadcaster review
220
+ outcomes by provider type.