@bopen-io/wallet-toolbox 2.6.2-brc153.5 → 2.15.0-bopen.1

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 (886) hide show
  1. package/CHANGELOG.md +789 -1
  2. package/LICENSES/Open-BSV-License-4-wallet-pre-2026.txt +28 -0
  3. package/README.md +889 -14
  4. package/THIRD_PARTY_NOTICES.md +35 -0
  5. package/docs/README.md +44 -31
  6. package/docs/action-batch-planning.md +80 -37
  7. package/docs/client.md +11241 -2525
  8. package/docs/identity-verification.md +218 -0
  9. package/docs/local-first-chaintracks.md +129 -0
  10. package/docs/managed-change-liquidity.md +258 -0
  11. package/docs/managed-change-policy.md +14 -1
  12. package/docs/monitor.md +411 -85
  13. package/docs/no-send-expiry.md +167 -0
  14. package/docs/prepared-beef.md +197 -0
  15. package/docs/services.md +5163 -2157
  16. package/docs/setup.md +153 -57
  17. package/docs/storage.md +5051 -851
  18. package/docs/sync-transfer.md +144 -0
  19. package/docs/wab-shamir.md +5 -1
  20. package/docs/wallet.md +10202 -10670
  21. package/out/src/CWIStyleWalletManager.d.ts +39 -31
  22. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  23. package/out/src/CWIStyleWalletManager.js +309 -258
  24. package/out/src/CWIStyleWalletManager.js.map +1 -1
  25. package/out/src/Setup.d.ts +24 -0
  26. package/out/src/Setup.d.ts.map +1 -1
  27. package/out/src/Setup.js +30 -2
  28. package/out/src/Setup.js.map +1 -1
  29. package/out/src/SetupClient.d.ts +3 -0
  30. package/out/src/SetupClient.d.ts.map +1 -1
  31. package/out/src/SetupClient.js +1 -0
  32. package/out/src/SetupClient.js.map +1 -1
  33. package/out/src/SetupWallet.d.ts +3 -0
  34. package/out/src/SetupWallet.d.ts.map +1 -1
  35. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  36. package/out/src/ShamirWalletManager.js +34 -19
  37. package/out/src/ShamirWalletManager.js.map +1 -1
  38. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  39. package/out/src/SimpleWalletManager.js +7 -6
  40. package/out/src/SimpleWalletManager.js.map +1 -1
  41. package/out/src/Wallet.d.ts +54 -14
  42. package/out/src/Wallet.d.ts.map +1 -1
  43. package/out/src/Wallet.js +216 -114
  44. package/out/src/Wallet.js.map +1 -1
  45. package/out/src/WalletAuthenticationManager.d.ts +32 -0
  46. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  47. package/out/src/WalletAuthenticationManager.js +531 -78
  48. package/out/src/WalletAuthenticationManager.js.map +1 -1
  49. package/out/src/WalletLogger.js +1 -1
  50. package/out/src/WalletLogger.js.map +1 -1
  51. package/out/src/WalletPermissionsManager.d.ts +101 -43
  52. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  53. package/out/src/WalletPermissionsManager.js +897 -414
  54. package/out/src/WalletPermissionsManager.js.map +1 -1
  55. package/out/src/WalletSettingsManager.d.ts +3 -2
  56. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  57. package/out/src/WalletSettingsManager.js +143 -8
  58. package/out/src/WalletSettingsManager.js.map +1 -1
  59. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  60. package/out/src/entropy/EntropyCollector.js +3 -2
  61. package/out/src/entropy/EntropyCollector.js.map +1 -1
  62. package/out/src/fundWalletP2PKH.d.ts.map +1 -1
  63. package/out/src/fundWalletP2PKH.js +143 -44
  64. package/out/src/fundWalletP2PKH.js.map +1 -1
  65. package/out/src/index.client.d.ts +6 -0
  66. package/out/src/index.client.d.ts.map +1 -1
  67. package/out/src/index.client.js +16 -1
  68. package/out/src/index.client.js.map +1 -1
  69. package/out/src/index.mobile.d.ts +7 -0
  70. package/out/src/index.mobile.d.ts.map +1 -1
  71. package/out/src/index.mobile.js +17 -1
  72. package/out/src/index.mobile.js.map +1 -1
  73. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  74. package/out/src/mockchain/MockChainTracker.js +5 -5
  75. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  76. package/out/src/mockchain/MockServices.d.ts +2 -0
  77. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  78. package/out/src/mockchain/MockServices.js +54 -14
  79. package/out/src/mockchain/MockServices.js.map +1 -1
  80. package/out/src/monitor/Monitor.d.ts +51 -0
  81. package/out/src/monitor/Monitor.d.ts.map +1 -1
  82. package/out/src/monitor/Monitor.js +282 -41
  83. package/out/src/monitor/Monitor.js.map +1 -1
  84. package/out/src/monitor/MonitorDaemon.d.ts +2 -0
  85. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  86. package/out/src/monitor/MonitorDaemon.js +73 -17
  87. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  88. package/out/src/monitor/monitorValidation.d.ts +12 -0
  89. package/out/src/monitor/monitorValidation.d.ts.map +1 -0
  90. package/out/src/monitor/monitorValidation.js +133 -0
  91. package/out/src/monitor/monitorValidation.js.map +1 -0
  92. package/out/src/monitor/tasks/TaskArcSSE.d.ts +6 -1
  93. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  94. package/out/src/monitor/tasks/TaskArcSSE.js +117 -74
  95. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  96. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +5 -0
  97. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  98. package/out/src/monitor/tasks/TaskCheckForProofs.js +29 -24
  99. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  100. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  101. package/out/src/monitor/tasks/TaskCheckNoSends.js +11 -3
  102. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  103. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  104. package/out/src/monitor/tasks/TaskFailAbandoned.js +9 -4
  105. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  106. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  107. package/out/src/monitor/tasks/TaskNewHeader.js +3 -1
  108. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  109. package/out/src/monitor/tasks/TaskNoSendExpiry.d.ts +19 -0
  110. package/out/src/monitor/tasks/TaskNoSendExpiry.d.ts.map +1 -0
  111. package/out/src/monitor/tasks/TaskNoSendExpiry.js +47 -0
  112. package/out/src/monitor/tasks/TaskNoSendExpiry.js.map +1 -0
  113. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts +27 -0
  114. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -0
  115. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +242 -0
  116. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -0
  117. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  118. package/out/src/monitor/tasks/TaskReorg.js +4 -4
  119. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  120. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  121. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +31 -9
  122. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  123. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +18 -1
  124. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  125. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +99 -21
  126. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  127. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +33 -6
  128. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  129. package/out/src/monitor/tasks/TaskReviewUtxos.js +189 -13
  130. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  131. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  132. package/out/src/monitor/tasks/TaskSendWaiting.js +52 -11
  133. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  134. package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -0
  135. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  136. package/out/src/monitor/tasks/TaskUnFail.js +26 -8
  137. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  138. package/out/src/monitor/tasks/index.all.d.ts +2 -0
  139. package/out/src/monitor/tasks/index.all.d.ts.map +1 -1
  140. package/out/src/monitor/tasks/index.all.js +2 -0
  141. package/out/src/monitor/tasks/index.all.js.map +1 -1
  142. package/out/src/sdk/ActionBatch.interfaces.d.ts +23 -0
  143. package/out/src/sdk/ActionBatch.interfaces.d.ts.map +1 -1
  144. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  145. package/out/src/sdk/PrivilegedKeyManager.js +3 -2
  146. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  147. package/out/src/sdk/WERR_errors.d.ts +23 -0
  148. package/out/src/sdk/WERR_errors.d.ts.map +1 -1
  149. package/out/src/sdk/WERR_errors.js +51 -7
  150. package/out/src/sdk/WERR_errors.js.map +1 -1
  151. package/out/src/sdk/WalletError.d.ts.map +1 -1
  152. package/out/src/sdk/WalletError.js +7 -21
  153. package/out/src/sdk/WalletError.js.map +1 -1
  154. package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
  155. package/out/src/sdk/WalletErrorFromJson.js +121 -3
  156. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  157. package/out/src/sdk/WalletServices.interfaces.d.ts +45 -2
  158. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  159. package/out/src/sdk/WalletStorage.interfaces.d.ts +87 -4
  160. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  161. package/out/src/sdk/types.d.ts +3 -2
  162. package/out/src/sdk/types.d.ts.map +1 -1
  163. package/out/src/sdk/types.js +3 -2
  164. package/out/src/sdk/types.js.map +1 -1
  165. package/out/src/services/ServiceCollection.js +2 -2
  166. package/out/src/services/ServiceCollection.js.map +1 -1
  167. package/out/src/services/Services.d.ts +5 -0
  168. package/out/src/services/Services.d.ts.map +1 -1
  169. package/out/src/services/Services.js +346 -120
  170. package/out/src/services/Services.js.map +1 -1
  171. package/out/src/services/chaintracker/BHServiceClient.d.ts +21 -4
  172. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  173. package/out/src/services/chaintracker/BHServiceClient.js +269 -66
  174. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  175. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +25 -3
  176. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  177. package/out/src/services/chaintracker/ChaintracksChainTracker.js +188 -53
  178. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  179. package/out/src/services/chaintracker/LocalChainTracker.d.ts +122 -0
  180. package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -0
  181. package/out/src/services/chaintracker/LocalChainTracker.js +465 -0
  182. package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -0
  183. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  184. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +59 -7
  185. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  186. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.d.ts +48 -0
  187. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.d.ts.map +1 -0
  188. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.js +3 -0
  189. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.js.map +1 -0
  190. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts +70 -0
  191. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts.map +1 -0
  192. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js +21 -0
  193. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js.map +1 -0
  194. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +6 -0
  195. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
  196. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +53 -0
  197. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
  198. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +9 -2
  199. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -1
  200. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +9 -0
  201. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
  202. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +28 -3
  203. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  204. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +282 -64
  205. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  206. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +16 -0
  207. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  208. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +150 -26
  209. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  210. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +30 -1
  211. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  212. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +348 -30
  213. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  214. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +32 -1
  215. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  216. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +378 -44
  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 +28 -3
  220. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  221. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  222. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +33 -9
  223. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  224. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  225. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  226. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts.map +1 -1
  227. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +4 -2
  228. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -1
  229. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts +2 -0
  230. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  231. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +17 -4
  232. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  233. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +2 -0
  234. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  235. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +40 -20
  236. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  238. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +14 -0
  239. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  240. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +6 -0
  241. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
  242. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +56 -9
  243. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
  244. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  245. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +6 -3
  246. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  247. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +4 -0
  248. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  249. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +27 -9
  250. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  251. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +8 -0
  252. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  253. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +49 -5
  254. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  255. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +1 -1
  256. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  257. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +90 -21
  258. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  259. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -1
  260. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  261. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +185 -38
  262. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  263. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  264. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +59 -6
  265. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  266. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +2 -0
  267. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  268. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +89 -39
  269. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  270. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +10 -0
  271. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  272. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +230 -28
  273. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  274. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +2 -1
  275. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  276. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +265 -96
  277. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  278. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +8 -1
  279. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  280. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +248 -87
  281. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  282. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -0
  283. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  284. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +121 -35
  285. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  286. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +8 -0
  287. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
  288. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +6 -3
  289. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  290. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  291. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  292. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  293. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  294. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  295. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  296. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  297. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +1 -7
  298. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  299. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  300. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +1 -7
  301. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  302. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  303. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +1 -7
  304. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  305. package/out/src/services/chaintracker/chaintracks/index.all.d.ts +3 -0
  306. package/out/src/services/chaintracker/chaintracks/index.all.d.ts.map +1 -1
  307. package/out/src/services/chaintracker/chaintracks/index.all.js +3 -0
  308. package/out/src/services/chaintracker/chaintracks/index.all.js.map +1 -1
  309. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +5 -0
  310. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
  311. package/out/src/services/chaintracker/chaintracks/index.mobile.js +5 -0
  312. package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
  313. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +51 -0
  314. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -0
  315. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +394 -0
  316. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -0
  317. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +45 -1
  318. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  319. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +733 -166
  320. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  321. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  322. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +17 -1
  323. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  324. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts +32 -0
  325. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -0
  326. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +40 -0
  327. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -0
  328. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  329. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +99 -30
  330. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  331. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +3 -1
  332. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  333. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +23 -15
  334. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  335. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +38 -4
  336. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  337. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +191 -47
  338. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  339. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +2 -1
  340. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  341. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +57 -11
  342. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  343. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts +48 -0
  344. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -0
  345. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +280 -0
  346. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -0
  347. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts +30 -0
  348. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts.map +1 -0
  349. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js +57 -0
  350. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js.map +1 -0
  351. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  352. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  353. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts +14 -0
  354. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -0
  355. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +148 -0
  356. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -0
  357. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +41 -0
  358. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -0
  359. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +271 -0
  360. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -0
  361. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +3 -0
  362. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  363. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +15 -0
  364. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  365. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +17 -4
  366. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  367. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +362 -105
  368. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  369. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts +4 -0
  370. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts.map +1 -0
  371. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js +33 -0
  372. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js.map +1 -0
  373. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
  374. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  375. package/out/src/services/chaintracker/index.all.d.ts +1 -0
  376. package/out/src/services/chaintracker/index.all.d.ts.map +1 -1
  377. package/out/src/services/chaintracker/index.all.js +1 -0
  378. package/out/src/services/chaintracker/index.all.js.map +1 -1
  379. package/out/src/services/chaintracker/index.client.d.ts +1 -0
  380. package/out/src/services/chaintracker/index.client.d.ts.map +1 -1
  381. package/out/src/services/chaintracker/index.client.js +1 -0
  382. package/out/src/services/chaintracker/index.client.js.map +1 -1
  383. package/out/src/services/chaintracker/index.mobile.d.ts +1 -0
  384. package/out/src/services/chaintracker/index.mobile.d.ts.map +1 -1
  385. package/out/src/services/chaintracker/index.mobile.js +1 -0
  386. package/out/src/services/chaintracker/index.mobile.js.map +1 -1
  387. package/out/src/services/classifyOutputUtxo.d.ts +25 -0
  388. package/out/src/services/classifyOutputUtxo.d.ts.map +1 -0
  389. package/out/src/services/classifyOutputUtxo.js +96 -0
  390. package/out/src/services/classifyOutputUtxo.js.map +1 -0
  391. package/out/src/services/createDefaultWalletServicesOptions.d.ts +16 -3
  392. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  393. package/out/src/services/createDefaultWalletServicesOptions.js +38 -8
  394. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  395. package/out/src/services/fiatRateValidation.d.ts +12 -0
  396. package/out/src/services/fiatRateValidation.d.ts.map +1 -0
  397. package/out/src/services/fiatRateValidation.js +138 -0
  398. package/out/src/services/fiatRateValidation.js.map +1 -0
  399. package/out/src/services/getCanonicalMerklePath.d.ts +15 -0
  400. package/out/src/services/getCanonicalMerklePath.d.ts.map +1 -0
  401. package/out/src/services/getCanonicalMerklePath.js +90 -0
  402. package/out/src/services/getCanonicalMerklePath.js.map +1 -0
  403. package/out/src/services/providers/ARC.d.ts +3 -16
  404. package/out/src/services/providers/ARC.d.ts.map +1 -1
  405. package/out/src/services/providers/ARC.js +36 -37
  406. package/out/src/services/providers/ARC.js.map +1 -1
  407. package/out/src/services/providers/ArcSSEClient.d.ts +38 -23
  408. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  409. package/out/src/services/providers/ArcSSEClient.js +384 -63
  410. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  411. package/out/src/services/providers/Arcade.d.ts +11 -1
  412. package/out/src/services/providers/Arcade.d.ts.map +1 -1
  413. package/out/src/services/providers/Arcade.js +111 -33
  414. package/out/src/services/providers/Arcade.js.map +1 -1
  415. package/out/src/services/providers/Bitails.d.ts +3 -0
  416. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  417. package/out/src/services/providers/Bitails.js +79 -12
  418. package/out/src/services/providers/Bitails.js.map +1 -1
  419. package/out/src/services/providers/SdkWhatsOnChain.d.ts +8 -2
  420. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  421. package/out/src/services/providers/SdkWhatsOnChain.js +83 -10
  422. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  423. package/out/src/services/providers/WhatsOnChain.d.ts +3 -0
  424. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  425. package/out/src/services/providers/WhatsOnChain.js +221 -69
  426. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  427. package/out/src/services/providers/arcProviderConfig.d.ts +27 -0
  428. package/out/src/services/providers/arcProviderConfig.d.ts.map +1 -0
  429. package/out/src/services/providers/arcProviderConfig.js +83 -0
  430. package/out/src/services/providers/arcProviderConfig.js.map +1 -0
  431. package/out/src/services/providers/arcTxDataValidation.d.ts +4 -0
  432. package/out/src/services/providers/arcTxDataValidation.d.ts.map +1 -0
  433. package/out/src/services/providers/arcTxDataValidation.js +92 -0
  434. package/out/src/services/providers/arcTxDataValidation.js.map +1 -0
  435. package/out/src/services/providers/arcadeStatus.d.ts +18 -0
  436. package/out/src/services/providers/arcadeStatus.d.ts.map +1 -0
  437. package/out/src/services/providers/arcadeStatus.js +56 -0
  438. package/out/src/services/providers/arcadeStatus.js.map +1 -0
  439. package/out/src/services/providers/exchangeRates.d.ts +3 -3
  440. package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
  441. package/out/src/services/providers/exchangeRates.js +153 -226
  442. package/out/src/services/providers/exchangeRates.js.map +1 -1
  443. package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
  444. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  445. package/out/src/services/providers/whatsOnChainHelpers.d.ts +2 -2
  446. package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -1
  447. package/out/src/services/providers/whatsOnChainHelpers.js +11 -8
  448. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
  449. package/out/src/services/validateMerklePathResult.d.ts +30 -0
  450. package/out/src/services/validateMerklePathResult.d.ts.map +1 -0
  451. package/out/src/services/validateMerklePathResult.js +272 -0
  452. package/out/src/services/validateMerklePathResult.js.map +1 -0
  453. package/out/src/services/validatePostBeefResult.d.ts +17 -0
  454. package/out/src/services/validatePostBeefResult.d.ts.map +1 -0
  455. package/out/src/services/validatePostBeefResult.js +334 -0
  456. package/out/src/services/validatePostBeefResult.js.map +1 -0
  457. package/out/src/services/validateRawTxResult.d.ts +6 -0
  458. package/out/src/services/validateRawTxResult.d.ts.map +1 -0
  459. package/out/src/services/validateRawTxResult.js +77 -0
  460. package/out/src/services/validateRawTxResult.js.map +1 -0
  461. package/out/src/services/validateScriptHashHistoryResult.d.ts +5 -0
  462. package/out/src/services/validateScriptHashHistoryResult.d.ts.map +1 -0
  463. package/out/src/services/validateScriptHashHistoryResult.js +99 -0
  464. package/out/src/services/validateScriptHashHistoryResult.js.map +1 -0
  465. package/out/src/services/validateStatusForTxidsResult.d.ts +8 -0
  466. package/out/src/services/validateStatusForTxidsResult.d.ts.map +1 -0
  467. package/out/src/services/validateStatusForTxidsResult.js +181 -0
  468. package/out/src/services/validateStatusForTxidsResult.js.map +1 -0
  469. package/out/src/services/validateUtxoStatusResult.d.ts +6 -0
  470. package/out/src/services/validateUtxoStatusResult.d.ts.map +1 -0
  471. package/out/src/services/validateUtxoStatusResult.js +126 -0
  472. package/out/src/services/validateUtxoStatusResult.js.map +1 -0
  473. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
  474. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
  475. package/out/src/signer/actionBatch/ActionBatchPlanner.js +29 -6
  476. package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
  477. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +8 -5
  478. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
  479. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +186 -73
  480. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
  481. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +2 -2
  482. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -1
  483. package/out/src/signer/actionBatch/actionBatchBootstrap.js +3 -3
  484. package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -1
  485. package/out/src/signer/methods/acquireDirectCertificate.d.ts +3 -2
  486. package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
  487. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  488. package/out/src/signer/methods/buildSignableTransaction.d.ts +6 -5
  489. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  490. package/out/src/signer/methods/buildSignableTransaction.js +6 -11
  491. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  492. package/out/src/signer/methods/createAction.d.ts +4 -3
  493. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  494. package/out/src/signer/methods/createAction.js +3 -1
  495. package/out/src/signer/methods/createAction.js.map +1 -1
  496. package/out/src/signer/methods/createNoSendExpiryAction.d.ts +7 -0
  497. package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -0
  498. package/out/src/signer/methods/createNoSendExpiryAction.js +254 -0
  499. package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -0
  500. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  501. package/out/src/signer/methods/internalizeAction.js +9 -5
  502. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  503. package/out/src/signer/methods/proveCertificate.d.ts +3 -2
  504. package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
  505. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  506. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  507. package/out/src/signer/methods/signAction.js +12 -2
  508. package/out/src/signer/methods/signAction.js.map +1 -1
  509. package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -1
  510. package/out/src/signer/methods/verifyUnlockScripts.js +12 -17
  511. package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -1
  512. package/out/src/storage/StorageIdb.d.ts +11 -3
  513. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  514. package/out/src/storage/StorageIdb.js +134 -44
  515. package/out/src/storage/StorageIdb.js.map +1 -1
  516. package/out/src/storage/StorageKnex.d.ts +71 -7
  517. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  518. package/out/src/storage/StorageKnex.js +616 -262
  519. package/out/src/storage/StorageKnex.js.map +1 -1
  520. package/out/src/storage/StorageProvider.d.ts +41 -10
  521. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  522. package/out/src/storage/StorageProvider.js +397 -107
  523. package/out/src/storage/StorageProvider.js.map +1 -1
  524. package/out/src/storage/StorageReader.d.ts +9 -3
  525. package/out/src/storage/StorageReader.d.ts.map +1 -1
  526. package/out/src/storage/StorageReader.js +21 -43
  527. package/out/src/storage/StorageReader.js.map +1 -1
  528. package/out/src/storage/StorageReaderWriter.d.ts +4 -0
  529. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  530. package/out/src/storage/StorageReaderWriter.js +68 -38
  531. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  532. package/out/src/storage/StorageSyncReader.d.ts +1 -1
  533. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  534. package/out/src/storage/StorageSyncReader.js +3 -36
  535. package/out/src/storage/StorageSyncReader.js.map +1 -1
  536. package/out/src/storage/WalletStorageManager.d.ts +31 -6
  537. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  538. package/out/src/storage/WalletStorageManager.js +166 -75
  539. package/out/src/storage/WalletStorageManager.js.map +1 -1
  540. package/out/src/storage/adminServer/adminServer.d.ts +3 -1
  541. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  542. package/out/src/storage/adminServer/adminServer.js +41 -90
  543. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  544. package/out/src/storage/adminServer/adminUi.d.ts.map +1 -1
  545. package/out/src/storage/adminServer/adminUi.js +32 -9
  546. package/out/src/storage/adminServer/adminUi.js.map +1 -1
  547. package/out/src/storage/adminServer/reqReviewQuery.d.ts +41 -0
  548. package/out/src/storage/adminServer/reqReviewQuery.d.ts.map +1 -0
  549. package/out/src/storage/adminServer/reqReviewQuery.js +67 -0
  550. package/out/src/storage/adminServer/reqReviewQuery.js.map +1 -0
  551. package/out/src/storage/adminServer/reviewUtxos.d.ts +27 -0
  552. package/out/src/storage/adminServer/reviewUtxos.d.ts.map +1 -0
  553. package/out/src/storage/adminServer/reviewUtxos.js +62 -0
  554. package/out/src/storage/adminServer/reviewUtxos.js.map +1 -0
  555. package/out/src/storage/idbHelpers.d.ts.map +1 -1
  556. package/out/src/storage/idbHelpers.js +14 -2
  557. package/out/src/storage/idbHelpers.js.map +1 -1
  558. package/out/src/storage/index.all.d.ts +4 -0
  559. package/out/src/storage/index.all.d.ts.map +1 -1
  560. package/out/src/storage/index.all.js +4 -0
  561. package/out/src/storage/index.all.js.map +1 -1
  562. package/out/src/storage/index.client.d.ts +1 -0
  563. package/out/src/storage/index.client.d.ts.map +1 -1
  564. package/out/src/storage/index.client.js +1 -0
  565. package/out/src/storage/index.client.js.map +1 -1
  566. package/out/src/storage/index.mobile.d.ts +1 -0
  567. package/out/src/storage/index.mobile.d.ts.map +1 -1
  568. package/out/src/storage/index.mobile.js +1 -0
  569. package/out/src/storage/index.mobile.js.map +1 -1
  570. package/out/src/storage/knexPostgres.d.ts +16 -0
  571. package/out/src/storage/knexPostgres.d.ts.map +1 -0
  572. package/out/src/storage/knexPostgres.js +34 -0
  573. package/out/src/storage/knexPostgres.js.map +1 -0
  574. package/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
  575. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  576. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  577. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +7 -4
  578. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  579. package/out/src/storage/methods/ListOutputsSpecOp.js +5 -44
  580. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  581. package/out/src/storage/methods/actionBatch.d.ts +9 -2
  582. package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
  583. package/out/src/storage/methods/actionBatch.js +260 -67
  584. package/out/src/storage/methods/actionBatch.js.map +1 -1
  585. package/out/src/storage/methods/actionBatchBlobs.d.ts +2 -0
  586. package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
  587. package/out/src/storage/methods/actionBatchBlobs.js +47 -26
  588. package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
  589. package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
  590. package/out/src/storage/methods/actionBatchValidation.js +22 -30
  591. package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
  592. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +7 -2
  593. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  594. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +59 -110
  595. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  596. package/out/src/storage/methods/availableManagedChange.d.ts +8 -1
  597. package/out/src/storage/methods/availableManagedChange.d.ts.map +1 -1
  598. package/out/src/storage/methods/availableManagedChange.js.map +1 -1
  599. package/out/src/storage/methods/createAction.d.ts +60 -3
  600. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  601. package/out/src/storage/methods/createAction.js +390 -105
  602. package/out/src/storage/methods/createAction.js.map +1 -1
  603. package/out/src/storage/methods/generateChange.d.ts +15 -5
  604. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  605. package/out/src/storage/methods/generateChange.js +187 -27
  606. package/out/src/storage/methods/generateChange.js.map +1 -1
  607. package/out/src/storage/methods/getBeefForTransaction.js +5 -7
  608. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  609. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  610. package/out/src/storage/methods/getSyncChunk.js +42 -11
  611. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  612. package/out/src/storage/methods/internalizeAction.d.ts +3 -3
  613. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  614. package/out/src/storage/methods/internalizeAction.js +171 -133
  615. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  616. package/out/src/storage/methods/listActionsIdb.d.ts +3 -2
  617. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  618. package/out/src/storage/methods/listActionsIdb.js +2 -2
  619. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  620. package/out/src/storage/methods/listActionsKnex.d.ts +3 -2
  621. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
  622. package/out/src/storage/methods/listActionsKnex.js +21 -11
  623. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  624. package/out/src/storage/methods/listCertificates.d.ts +3 -2
  625. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  626. package/out/src/storage/methods/listCertificates.js.map +1 -1
  627. package/out/src/storage/methods/listOutputsIdb.d.ts +3 -2
  628. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  629. package/out/src/storage/methods/listOutputsIdb.js +25 -18
  630. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  631. package/out/src/storage/methods/listOutputsKnex.d.ts +3 -2
  632. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  633. package/out/src/storage/methods/listOutputsKnex.js +31 -30
  634. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  635. package/out/src/storage/methods/managedChangePolicy.d.ts +44 -0
  636. package/out/src/storage/methods/managedChangePolicy.d.ts.map +1 -0
  637. package/out/src/storage/methods/managedChangePolicy.js +58 -0
  638. package/out/src/storage/methods/managedChangePolicy.js.map +1 -0
  639. package/out/src/storage/methods/maxPossibleSatoshis.d.ts +13 -0
  640. package/out/src/storage/methods/maxPossibleSatoshis.d.ts.map +1 -0
  641. package/out/src/storage/methods/maxPossibleSatoshis.js +16 -0
  642. package/out/src/storage/methods/maxPossibleSatoshis.js.map +1 -0
  643. package/out/src/storage/methods/noSendExpiry.d.ts +11 -0
  644. package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -0
  645. package/out/src/storage/methods/noSendExpiry.js +359 -0
  646. package/out/src/storage/methods/noSendExpiry.js.map +1 -0
  647. package/out/src/storage/methods/noSendExpiryLifecycle.d.ts +14 -0
  648. package/out/src/storage/methods/noSendExpiryLifecycle.d.ts.map +1 -0
  649. package/out/src/storage/methods/noSendExpiryLifecycle.js +691 -0
  650. package/out/src/storage/methods/noSendExpiryLifecycle.js.map +1 -0
  651. package/out/src/storage/methods/preparedBeef.d.ts +104 -0
  652. package/out/src/storage/methods/preparedBeef.d.ts.map +1 -0
  653. package/out/src/storage/methods/preparedBeef.js +524 -0
  654. package/out/src/storage/methods/preparedBeef.js.map +1 -0
  655. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  656. package/out/src/storage/methods/processAction.js +144 -32
  657. package/out/src/storage/methods/processAction.js.map +1 -1
  658. package/out/src/storage/methods/purgeData.d.ts.map +1 -1
  659. package/out/src/storage/methods/purgeData.js +18 -3
  660. package/out/src/storage/methods/purgeData.js.map +1 -1
  661. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +32 -0
  662. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -0
  663. package/out/src/storage/methods/reconcileFailedTransactionInputs.js +142 -0
  664. package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -0
  665. package/out/src/storage/methods/reviewStatus.js +4 -4
  666. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  667. package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
  668. package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
  669. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  670. package/out/src/storage/methods/reviewUtxoOutputs.d.ts +38 -0
  671. package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -0
  672. package/out/src/storage/methods/reviewUtxoOutputs.js +197 -0
  673. package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -0
  674. package/out/src/storage/methods/validateSyncProof.d.ts +32 -0
  675. package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -0
  676. package/out/src/storage/methods/validateSyncProof.js +139 -0
  677. package/out/src/storage/methods/validateSyncProof.js.map +1 -0
  678. package/out/src/storage/portable/index.d.ts.map +1 -1
  679. package/out/src/storage/portable/index.js +63 -27
  680. package/out/src/storage/portable/index.js.map +1 -1
  681. package/out/src/storage/remoting/BinaryJson.d.ts +11 -0
  682. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
  683. package/out/src/storage/remoting/BinaryJson.js +94 -8
  684. package/out/src/storage/remoting/BinaryJson.js.map +1 -1
  685. package/out/src/storage/remoting/KnexPaymentReplayStore.d.ts.map +1 -1
  686. package/out/src/storage/remoting/KnexPaymentReplayStore.js +1 -0
  687. package/out/src/storage/remoting/KnexPaymentReplayStore.js.map +1 -1
  688. package/out/src/storage/remoting/KnexSessionManager.d.ts +26 -2
  689. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
  690. package/out/src/storage/remoting/KnexSessionManager.js +221 -40
  691. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
  692. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts +26 -0
  693. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -0
  694. package/out/src/storage/remoting/KnexSyncTransferStore.js +222 -0
  695. package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -0
  696. package/out/src/storage/remoting/StorageClient.d.ts +6 -1
  697. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  698. package/out/src/storage/remoting/StorageClient.js +65 -8
  699. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  700. package/out/src/storage/remoting/StorageClientBase.d.ts +57 -10
  701. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  702. package/out/src/storage/remoting/StorageClientBase.js +372 -9
  703. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  704. package/out/src/storage/remoting/StorageMobile.d.ts +5 -0
  705. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  706. package/out/src/storage/remoting/StorageMobile.js +13 -11
  707. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  708. package/out/src/storage/remoting/StorageServer.d.ts +27 -5
  709. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  710. package/out/src/storage/remoting/StorageServer.js +243 -33
  711. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  712. package/out/src/storage/remoting/SyncTransfer.d.ts +29 -0
  713. package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -0
  714. package/out/src/storage/remoting/SyncTransfer.js +153 -0
  715. package/out/src/storage/remoting/SyncTransfer.js.map +1 -0
  716. package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
  717. package/out/src/storage/remoting/entityValidationHelpers.js +35 -0
  718. package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
  719. package/out/src/storage/remoting/syncChunkBinary.d.ts +4 -0
  720. package/out/src/storage/remoting/syncChunkBinary.d.ts.map +1 -0
  721. package/out/src/storage/remoting/syncChunkBinary.js +38 -0
  722. package/out/src/storage/remoting/syncChunkBinary.js.map +1 -0
  723. package/out/src/storage/remoting/validateRpcSyncProofs.d.ts +5 -0
  724. package/out/src/storage/remoting/validateRpcSyncProofs.d.ts.map +1 -0
  725. package/out/src/storage/remoting/validateRpcSyncProofs.js +82 -0
  726. package/out/src/storage/remoting/validateRpcSyncProofs.js.map +1 -0
  727. package/out/src/storage/schema/KnexMigrations.d.ts +13 -2
  728. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  729. package/out/src/storage/schema/KnexMigrations.js +334 -43
  730. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  731. package/out/src/storage/schema/StorageIdbSchema.d.ts +3 -0
  732. package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
  733. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  734. package/out/src/storage/schema/entities/EntityOutput.js +24 -4
  735. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  736. package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
  737. package/out/src/storage/schema/entities/EntityOutputBasket.js +5 -2
  738. package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
  739. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +4 -1
  740. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  741. package/out/src/storage/schema/entities/EntityProvenTx.js +125 -41
  742. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  743. package/out/src/storage/schema/entities/EntityProvenTxReq.js +1 -1
  744. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  745. package/out/src/storage/schema/entities/EntitySyncState.d.ts +4 -2
  746. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  747. package/out/src/storage/schema/entities/EntitySyncState.js +12 -6
  748. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  749. package/out/src/storage/schema/entities/EntityTransaction.d.ts +26 -0
  750. package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
  751. package/out/src/storage/schema/entities/EntityTransaction.js +221 -21
  752. package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
  753. package/out/src/storage/schema/tables/TableCertificate.d.ts +1 -1
  754. package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
  755. package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
  756. package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
  757. package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
  758. package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
  759. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
  760. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
  761. package/out/src/storage/schema/tables/TableOutput.d.ts +1 -1
  762. package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
  763. package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
  764. package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
  765. package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
  766. package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
  767. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
  768. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
  769. package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.d.ts +23 -0
  770. package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.d.ts.map +1 -0
  771. package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.js +3 -0
  772. package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.js.map +1 -0
  773. package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
  774. package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
  775. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +1 -1
  776. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
  777. package/out/src/storage/schema/tables/TableSettings.d.ts +2 -2
  778. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  779. package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
  780. package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
  781. package/out/src/storage/schema/tables/TableTransaction.d.ts +17 -1
  782. package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
  783. package/out/src/storage/schema/tables/TableTransaction.js +14 -1
  784. package/out/src/storage/schema/tables/TableTransaction.js.map +1 -1
  785. package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
  786. package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
  787. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
  788. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
  789. package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
  790. package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
  791. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  792. package/out/src/storage/sync/StorageMySQLDojoReader.js +8 -7
  793. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  794. package/out/src/storage/sync/SyncPageBudget.d.ts +8 -0
  795. package/out/src/storage/sync/SyncPageBudget.d.ts.map +1 -0
  796. package/out/src/storage/sync/SyncPageBudget.js +24 -0
  797. package/out/src/storage/sync/SyncPageBudget.js.map +1 -0
  798. package/out/src/storage/sync/syncCheckpoint.d.ts +4 -0
  799. package/out/src/storage/sync/syncCheckpoint.d.ts.map +1 -0
  800. package/out/src/storage/sync/syncCheckpoint.js +49 -0
  801. package/out/src/storage/sync/syncCheckpoint.js.map +1 -0
  802. package/out/src/utility/Argon2idBackend.d.ts +36 -0
  803. package/out/src/utility/Argon2idBackend.d.ts.map +1 -0
  804. package/out/src/utility/Argon2idBackend.js +60 -0
  805. package/out/src/utility/Argon2idBackend.js.map +1 -0
  806. package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
  807. package/out/src/utility/actionBatchDigest.js +9 -7
  808. package/out/src/utility/actionBatchDigest.js.map +1 -1
  809. package/out/src/utility/actionBatchPack.d.ts.map +1 -1
  810. package/out/src/utility/actionBatchPack.js +7 -12
  811. package/out/src/utility/actionBatchPack.js.map +1 -1
  812. package/out/src/utility/beefForTxids.d.ts +12 -3
  813. package/out/src/utility/beefForTxids.d.ts.map +1 -1
  814. package/out/src/utility/beefForTxids.js +69 -21
  815. package/out/src/utility/beefForTxids.js.map +1 -1
  816. package/out/src/utility/brc153ReferenceLabels.d.ts +16 -0
  817. package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
  818. package/out/src/utility/brc153ReferenceLabels.js +20 -5
  819. package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
  820. package/out/src/utility/brc177NoSendExpiry.d.ts +34 -0
  821. package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -0
  822. package/out/src/utility/brc177NoSendExpiry.js +81 -0
  823. package/out/src/utility/brc177NoSendExpiry.js.map +1 -0
  824. package/out/src/utility/canonicalizeAtomicBeef.d.ts +12 -0
  825. package/out/src/utility/canonicalizeAtomicBeef.d.ts.map +1 -0
  826. package/out/src/utility/canonicalizeAtomicBeef.js +23 -0
  827. package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -0
  828. package/out/src/utility/exactActionSpend.d.ts +9 -0
  829. package/out/src/utility/exactActionSpend.d.ts.map +1 -0
  830. package/out/src/utility/exactActionSpend.js +26 -0
  831. package/out/src/utility/exactActionSpend.js.map +1 -0
  832. package/out/src/utility/hashWasm.d.ts +1 -1
  833. package/out/src/utility/hashWasm.d.ts.map +1 -1
  834. package/out/src/utility/hashWasm.js +83 -1
  835. package/out/src/utility/hashWasm.js.map +1 -1
  836. package/out/src/utility/identityUtils.d.ts +44 -4
  837. package/out/src/utility/identityUtils.d.ts.map +1 -1
  838. package/out/src/utility/identityUtils.js +523 -61
  839. package/out/src/utility/identityUtils.js.map +1 -1
  840. package/out/src/utility/index.all.d.ts +2 -0
  841. package/out/src/utility/index.all.d.ts.map +1 -1
  842. package/out/src/utility/index.all.js +2 -0
  843. package/out/src/utility/index.all.js.map +1 -1
  844. package/out/src/utility/index.client.d.ts +2 -0
  845. package/out/src/utility/index.client.d.ts.map +1 -1
  846. package/out/src/utility/index.client.js +2 -0
  847. package/out/src/utility/index.client.js.map +1 -1
  848. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  849. package/out/src/utility/parseTxScriptOffsets.js +1 -19
  850. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  851. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  852. package/out/src/utility/tscProofToMerklePath.js +35 -4
  853. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  854. package/out/src/utility/utilityHelpers.d.ts +1 -1
  855. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  856. package/out/src/utility/utilityHelpers.js +10 -7
  857. package/out/src/utility/utilityHelpers.js.map +1 -1
  858. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  859. package/out/src/utility/utilityHelpers.noBuffer.js +6 -6
  860. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  861. package/out/src/utility/verifyOverlayOutput.d.ts +12 -0
  862. package/out/src/utility/verifyOverlayOutput.d.ts.map +1 -0
  863. package/out/src/utility/verifyOverlayOutput.js +22 -0
  864. package/out/src/utility/verifyOverlayOutput.js.map +1 -0
  865. package/out/src/utility/walletResultGuards.d.ts +14 -0
  866. package/out/src/utility/walletResultGuards.d.ts.map +1 -0
  867. package/out/src/utility/walletResultGuards.js +28 -0
  868. package/out/src/utility/walletResultGuards.js.map +1 -0
  869. package/out/src/wab-client/WABClient.d.ts +4 -17
  870. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  871. package/out/src/wab-client/WABClient.js +35 -12
  872. package/out/src/wab-client/WABClient.js.map +1 -1
  873. package/out/src/wab-client/WABResponseValidation.d.ts +48 -0
  874. package/out/src/wab-client/WABResponseValidation.d.ts.map +1 -0
  875. package/out/src/wab-client/WABResponseValidation.js +321 -0
  876. package/out/src/wab-client/WABResponseValidation.js.map +1 -0
  877. package/out/src/wab-client/WABTransport.d.ts +17 -23
  878. package/out/src/wab-client/WABTransport.d.ts.map +1 -1
  879. package/out/src/wab-client/WABTransport.js +130 -142
  880. package/out/src/wab-client/WABTransport.js.map +1 -1
  881. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +8 -0
  882. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  883. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -2
  884. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  885. package/package.json +35 -30
  886. package/docs/open-rpc/index.html +0 -46
package/CHANGELOG.md CHANGED
@@ -4,8 +4,796 @@ This document captures the history of significant changes to the wallet-toolbox
4
4
  The git commit history contains the details but is unable to draw
5
5
  attention to changes that materially alter behavior or extend functionality.
6
6
 
7
+ ## wallet-toolbox 2.15.0
8
+
9
+ - `StorageKnex` runs on Postgres through the knex `pg` client. Settings report
10
+ `dbtype: 'Postgres'`, and `StorageClient` accepts that value from a remote
11
+ `StorageServer`; older clients reject it. Install `pg` in the application.
12
+ - On a Postgres knex, `StorageKnex` sets an int8 parser on each connection it
13
+ acquires, so bigint columns and counts come back as numbers, as with mysql2
14
+ and better-sqlite3. The process-wide `pg.types` defaults are not changed.
15
+ `usePostgresInt8Numbers(knex)` applies the same parser to a knex directly, and
16
+ `Setup.createPostgresKnex(connectionJson, database)` creates one with it.
17
+ - Postgres runs at READ COMMITTED. The findOrInsert helpers retry a failed
18
+ insert as a find in the same transaction; on Postgres the insert now runs in
19
+ a savepoint so the transaction stays usable. `allocateChangeInput` re-checks
20
+ action batch reservations after taking the output row lock.
21
+ - On Postgres, migrations that add indexes to existing tables run outside a
22
+ transaction and use `CREATE INDEX CONCURRENTLY IF NOT EXISTS`; an invalid
23
+ index left by an interrupted build is dropped and rebuilt. `StorageKnex.migrate`
24
+ runs Postgres migrations one at a time so every other migration keeps its
25
+ journal row in its own transaction. SQLite and MySQL migrations are unchanged.
26
+ - `adminStats` and the admin server's proof request review run on MySQL and
27
+ Postgres. `adminStats` still reports `WERR_NOT_IMPLEMENTED` on SQLite.
28
+ - `MonitorDaemon` accepts `postgresConnection` (JSON node-postgres config), and
29
+ the operator `monitor-daemon` command accepts `--database-client postgres`.
30
+ - `ChaintracksStorageKnex` rejects a Postgres knex before running migrations.
31
+ - Paged `StorageKnex` find queries and the `get*ForUser` sync queries order rows
32
+ by key. Without an order, Postgres could return consecutive LIMIT/OFFSET pages
33
+ in different orders, so `getSyncChunk` repeated some rows and skipped others.
34
+ - `StorageServer.app` is public, so a host can mount the storage server in its
35
+ own Express application (`hostApp.use('/storage', server.app)`) instead of
36
+ calling `start()`. `port` is optional and only required by `start()`.
37
+ - `preRpcMiddleware` adds Express handlers on `POST /` after authentication,
38
+ the authenticated rate limit and payment, immediately before JSON-RPC
39
+ dispatch. A handler that responds stops the call before dispatch.
40
+ - `publicRoutes: false` removes the unauthenticated `GET /`, `/robots.txt` and
41
+ `/healthz` routes. Defaults are unchanged.
42
+
43
+ - Knex storage adds a unique index on `sync_states` (`userId`,
44
+ `storageIdentityKey`). Concurrent `findOrInsertSyncStateAuth` calls for a new
45
+ source could each insert a row, after which every sync with that source failed
46
+ with `Storage identity has conflicting sync states`. The losing insert now
47
+ re-reads the row that won. The migration deletes existing duplicates, keeping
48
+ the oldest row; when the duplicates had different storage names, the kept row
49
+ restarts as a new sync state because its checkpoint may belong to a different
50
+ source database.
51
+ - BRC-38 import keeps one sync state per storage identity. An export holding
52
+ several for one identity imports the oldest under the same rule, and merge
53
+ updates the target's row for that identity even when its storage name differs.
54
+ - `WalletPermissionsManager` retires no-send transaction ownership and reference
55
+ aliases when `createAction` or `signAction` reports them as `sending` or
56
+ `unproven`, including sendWith-only calls and successful members of an
57
+ undelayed batch's review error. Failed or unreported actions retain their
58
+ originator binding for retry or abort. Cleanup visits only the retired
59
+ transaction's references instead of scanning the session's history.
60
+
61
+ ## wallet-toolbox 2.14.4
62
+
63
+ - `discoverByIdentityKey` and `discoverByAttributes` keep each certificate's
64
+ `certifierInfo.description` within BRC-100's 5-50 UTF-8 bytes. The default
65
+ SocialCert (56 bytes) and Metanet Trust Services (55 bytes) descriptions
66
+ exceeded it, so `@bsv/sdk` 2.8.8+ rejected every discovery result from one of
67
+ them with `Invalid discoverByAttributes result
68
+ certificates[n].certifierInfo.description: expected 5–50 UTF-8 bytes`, which
69
+ broke `IdentityClient.resolveByAttributes` and `resolveByIdentityKey`. Both
70
+ defaults are shortened. Trust settings still accept descriptions of up to 500
71
+ bytes so stored settings stay readable; a longer one is cut at a code point
72
+ boundary when the result is built, and one under 5 bytes becomes
73
+ `Trusted certifier`.
74
+ - A non-admin `createAction` with `noSend` that `WalletPermissionsManager`
75
+ signs internally returned `noSendChange` outpoints on the unsigned txid next
76
+ to the signed `txid`, so `@bsv/sdk` 2.8.8+ rejected it with `Invalid
77
+ createAction result noSendChange[0]: expected an outpoint of the returned
78
+ transaction`. The outpoints now name the signed transaction (vouts are
79
+ unchanged by signing).
80
+ - That same no-send action could not be released: the caller only gets its
81
+ `txid`, and `abortAction` from a non-admin originator accepted only references
82
+ the manager had issued, which it drops once it signs. The originator that
83
+ created a no-send action can now abort it by that `txid`; other originators
84
+ still cannot, and a broadcast action is never abortable this way. The same
85
+ applies when the caller signs a `signAndProcess: false` no-send action itself
86
+ with `signAction`: it can then abort it by the `reference` it signed or by the
87
+ signed `txid`, where before `abortAction` failed with `The action reference
88
+ was not issued by this permissions manager.`
89
+ - `discoverByIdentityKey` and `discoverByAttributes` return the requested
90
+ `limit`/`offset` page (limit 10 when omitted). They returned every trusted
91
+ match, and `@bsv/sdk` rejects a page longer than the limit. `totalCertificates`
92
+ still counts every trusted match.
93
+ - `ChaintracksServiceClient`, `BHServiceClient` and `GoChaintracksServiceClient`
94
+ called `fetch` as a method of the client, which browsers refuse ("Failed to
95
+ execute 'fetch' on 'Window': Illegal invocation" in Chrome, "Can only call
96
+ Window.fetch on instances of Window" in WebKit). Any in-page wallet verifying
97
+ a merkle proof through them failed, for example `internalizeAction` of a BRC-29
98
+ payment. They now call the default or supplied `fetch` with no receiver.
99
+
100
+ ## wallet-toolbox 2.14.3
101
+
102
+ - Surplus change shaping no longer splits change into outputs below the dust
103
+ floor. Baskets still on the legacy 32-sat `minimumDesiredUTXOValue` produced
104
+ split outputs that were later folded away, leaving a fee sized for the larger
105
+ transaction and failing with `generateChangeSdk error: required fee error`.
106
+ Each split output now gets at least `max(dustFloor, changeInitialSatoshis)`.
107
+ - `WalletPermissionsManager.abortAction` lets the admin originator abort any of
108
+ the wallet's actions, including signed `noSend` actions and actions from an
109
+ earlier session, which the in-memory pending-reference map no longer holds.
110
+ Other originators still need a reference this manager issued to them.
111
+
112
+ ## wallet-toolbox 2.14.2
113
+
114
+ - Match complete English text tokens and default stopwords consistently with SDK 2.8.7; preserve quoted and excluded phrases. Scan ordered literal tokens without a combined wildcard expression. Direct filtering ignores inherited attributes and rejects non-string requested values without coercion.
115
+
116
+ - `discoverByAttributes` no longer drops every overlay result for `any`
117
+ searches. `filterCertificatesByAttributes` treated the identity overlay's
118
+ all-fields `any` search as a literal field name, so no certificate matched.
119
+ It now accepts a certificate when searchable decrypted fields satisfy the requested text terms,
120
+ and named attributes use the overlay's fuzzy matching (`userName` stays
121
+ exact). `any` follows the overlay's MongoDB text search: case- and
122
+ diacritic-insensitive, quoted phrases required, `-term` excluded, and
123
+ `profilePhoto`/`icon` not searched. Word stemming is not reproduced, so a
124
+ stem-only overlay match can still be dropped. Blank named attributes are
125
+ ignored, as on the overlay; a query with no usable attribute matches nothing.
126
+ Results are still bound to the query they answered.
127
+
128
+ ## wallet-toolbox 2.14.1
129
+
130
+ - Keep exact action-spend metadata in a shared local WeakMap, preserving storage
131
+ service-charge authorization across permission-module transforms and separately
132
+ loaded core, client and mobile bundles without adding keys to public results.
133
+ - Consume the legacy internal Symbol before returning permission-managed results.
134
+ Completed and two-step `createAction` responses now pass the existing strict
135
+ binary BRC-100 codec. No app, wire, database, BRC-39 or recovery migration is
136
+ required; upgrade the wallet host and permission manager together. Reconcile
137
+ history before retrying an older host's failed response because the transaction
138
+ may already exist.
139
+
7
140
  ## wallet-toolbox (unreleased)
8
141
 
142
+ - Raise the `@bsv/sdk` peer dependency floor to `^2.8.0` in `@bsv/wallet-toolbox`,
143
+ `@bsv/wallet-toolbox-client`, and `@bsv/wallet-toolbox-mobile`. Value imports
144
+ used by the built mobile/client bundles and by internal helpers
145
+ (`TransactionEvidenceCoordinator`, `TransactionEvidenceError`,
146
+ `completeBoundAction`, `createPublicHTTPSFetch`, `decodeCanonicalPushDrop`,
147
+ `defaultTransactionEvidenceLimits`, `toUTF8Strict`,
148
+ `MAXIMUM_SEND_WITH_TRANSACTIONS`) do not exist in `@bsv/sdk` 2.4.1 through
149
+ 2.7.1 despite the prior `^2.4.1` peer range; confirmed against the published
150
+ tarballs for each version.
151
+ - `Monitor`'s scheduler no longer stops running every task when the optional
152
+ Chaintracks header/reorg push subscription setup fails or is unimplemented.
153
+ `runOnce`/`startTasks` previously awaited `ready` directly, so any
154
+ `chaintracksWithEvents` failure (e.g. the built-in HTTP-polling
155
+ `ChaintracksServiceClient`, which documents `supportsReorgEvents: false` and
156
+ throws `Method not implemented.` from `subscribeHeaders`/`subscribeReorgs`)
157
+ rejected the whole task loop and permanently stopped `startTasks()`. Monitor
158
+ now skips the subscription attempt entirely when an event source declares
159
+ `supportsReorgEvents: false`, and otherwise retries subscription setup
160
+ opportunistically on the next tick, logging a `chaintracksEventsError`
161
+ monitor event, while every other scheduled task keeps running. A genuine
162
+ configured-chain mismatch still fails closed: subscriptions are never
163
+ registered against a `chaintracksWithEvents` source reporting the wrong
164
+ chain.
165
+ - Confirm `relinquishOutput`'s `basket` argument against the output's actual
166
+ current basket (looked up inside the same transaction) before clearing
167
+ `basketId`, instead of clearing it unconditionally. Rejects a basket that
168
+ does not contain the output, a basket name that does not exist, and an
169
+ already-unbasketed output, each with `WERR_INVALID_PARAMETER`. Without this,
170
+ `WalletPermissionsManager.relinquishOutput` (which only checks the
171
+ originator's access to the _claimed_ basket) let an app with permission on
172
+ any basket relinquish any output by outpoint, including another app's basket
173
+ output or the admin `default` change basket.
174
+ - Reject `internalizeAction` basket-insertion merges that would reclassify an
175
+ existing output out of a different basket it already occupies, closing a gap
176
+ where `validateBasketMerges()` only rejected reclassifying wallet-managed
177
+ change. An app with insertion permission on basket X could previously
178
+ internalize an already-known transaction and move another app's output from
179
+ basket Y into X, then spend it. Idempotent re-internalization into the same
180
+ basket, and inserting a currently unbasketed (non-managed-change) output —
181
+ including the documented default-basket legacy-recovery sweep — keep
182
+ working. The requested basket is resolved with a plain lookup so a rejected
183
+ request never creates it.
184
+ - Fix `WalletPermissionsManager` rejecting every sendMax `createAction` call.
185
+ `verifyRequestedOutputsPresent` now matches fixed-amount outputs first by
186
+ exact (script, satoshis), then matches any output requested with the
187
+ `maxPossibleSatoshis` sentinel by locking script alone against whatever is
188
+ left unused, and returns the resolved real amount per requested output.
189
+ `computeNetSpend` bills that resolved amount instead of the sentinel, so
190
+ spending authorization reflects the real funded value (previously ~21
191
+ million BSV) instead of throwing `The transaction returned for signing does
192
+ not contain caller-requested output ...`.
193
+ - Additively export `WalletMonitorTask`, `attemptToPostReqsToNetwork` (with its
194
+ `PostReqsToNetworkResult` type), `parseJsonRpc`/`stringifyJsonRpc`, and
195
+ `verifyUnlockScripts` (with its `UnlockScriptVerificationResult` type) from
196
+ `src/index.mobile.ts` and `src/index.client.ts`. The published
197
+ `@bsv/wallet-toolbox-mobile` and `@bsv/wallet-toolbox-client` bundles do not
198
+ support deep imports, so hosts implementing a custom `Monitor.addTask` task,
199
+ posting signed requests to the network directly, exchanging the storage
200
+ remoting wire format, or verifying unlock scripts previously could not reach
201
+ these symbols at all.
202
+ - Keep cold raw-transaction reads on the caller's transaction, including SQLite
203
+ with one connection; do not cache uncommitted settings or start background
204
+ work. Accept missing optional inputBEEF when returning stored raw bytes.
205
+ - Reject unresolved output-basket mappings before sync writes. Apply valid newer
206
+ basket assignments/removals, preserving equal/older local relinquishment and
207
+ transaction rollback/retry. Included in unpublished 2.13.2; no schema migration.
208
+ - Restore transactional SQLite migrations in the unpublished 2.13.2 candidate.
209
+ DDL, migration journal and lock changes roll back after an interrupted attempt;
210
+ foreign-key enforcement is restored after success or failure. Existing stores
211
+ with unjournaled partial schema need operator-reviewed recovery; this change
212
+ does not delete or automatically reconcile historical wallet data.
213
+
214
+ - Implement `BHServiceClient.findChainTipHash()` by delegating to its existing
215
+ `findChainTipHeader()` call against `/api/v1/chain/tip/longest`, instead of
216
+ throwing `Not implemented`. `ChaintracksChainTracker.getVerificationContextToken()`
217
+ calls `findChainTipHash()` on every verification attempt, so any wallet
218
+ configured with a `BHServiceClient` as `options.chaintracks`, or as a
219
+ `LocalChainTracker` participating source, previously failed on every
220
+ attempt. No `ChaintracksClientApi` contract change; no migration required.
221
+
222
+ - Preserve valid compound proofs with multiple marked transactions. Rotate
223
+ unresolved proof repairs behind waiting heights across monitor restarts, and
224
+ retain retries that become temporarily ineligible after the chain tip
225
+ retreats. Existing checkpoints remain compatible; no migration is required.
226
+
227
+ - Validate every newly acquired and replacement Merkle proof against the active
228
+ ChainTracks root before persistence, continue to later providers when an
229
+ earlier provider returns an orphan proof, and retain unresolved reorg heights
230
+ for bounded per-run retries without stopping the forward review cursor. No
231
+ schema or consumer migration is required.
232
+
233
+ - Require mutually authenticated responses from remote wallet storage, pin the
234
+ authenticated server identity for each client instance, optionally accept an
235
+ independently validated `serverIdentityKey`, and bind the distinct advertised
236
+ storage identity to that channel, with an optional independent
237
+ `storageIdentityKey` pin. Strictly correlate JSON-RPC version and request ID,
238
+ require one unambiguous result or error, keep remote response details out of
239
+ transport diagnostics, and preserve an explicit null result for void server
240
+ methods.
241
+
242
+ - Complete WAB faucet funding through one exact wallet-owned BRC-29 output.
243
+ Fee-adjusted output amounts are bounded without weakening exact script
244
+ binding, real Wallet Toolbox symbol metadata remains accessor-safe, and the
245
+ redemption is staged and labeled before broadcast. Interrupted retries
246
+ recover the same transaction from its dedicated basket or recognize the
247
+ already-internalized action instead of signing the faucet input again.
248
+
249
+ - Make ChainTracks lifecycle and event delivery fail closed. Startup errors are
250
+ awaited and retryable, failed or cold instances can be fully destroyed,
251
+ long-running source promises are drained, subscriptions are bounded and
252
+ deleted rather than tombstoned, and every listener receives an isolated
253
+ header snapshot. Provider heights, bulk results, type guards, direct source
254
+ options, and diagnostics are now bounded and accessor-safe. WhatsOnChain
255
+ options and shared chain-info results cannot be mutated after validation.
256
+ Filesystem cache mutation is serialized per digest across processes, caller
257
+ metadata/bytes are snapshotted before awaits, and bulk revalidation takes the
258
+ writer lock. Bulk-file reconciliation and multi-record replacement are atomic
259
+ in Knex and IndexedDB, ordinary mutations reach durable storage before memory,
260
+ failed writes restore the prior manager state, and remote manifests cannot
261
+ supply local storage identities. Custom storage implementations must add the
262
+ optional atomic replacement method before performing multi-file changes.
263
+ Remote clients require complete live metadata and bounded event topology,
264
+ subscription state, timers, and single-line diagnostics. Destructive Knex
265
+ rollback failures now propagate. The wallet monitor independently binds its
266
+ event source to the configured network, authenticates and copies every
267
+ reorganization header, bounds and deduplicates deactivation retries,
268
+ coalesces prepared-proof invalidation, cleans up partial subscriptions, and
269
+ contains application callback failures without implicit console output.
270
+
271
+ - Make Arcade transaction-status SSE a bounded, ordered durable stream. Client
272
+ options are snapshotted without accessors; credentials, cursors, payloads,
273
+ fields, queued count, and queued bytes have explicit ceilings; and event data
274
+ is validated and copied. Only one event reaches storage at a time, its cursor
275
+ advances only after processing and persistence succeed, and a malformed,
276
+ excessive, or failed event closes the stream without dispatching later queued
277
+ events. Logging is silent by default and transport errors never forward the
278
+ credential-bearing EventSource object. Monitor task setup retains one pending
279
+ event, retries storage/checkpoint failures, and closes on removal or teardown.
280
+
281
+ - Repair monitor and daemon lifecycle ordering. Every scheduled or standalone
282
+ run now awaits retryable ChainTracks subscriptions, standalone runs initialize
283
+ every task, transient setup failures retry, and loop failures reset running
284
+ state. The daemon starts subscriptions before ChainTracks and tasks, can stop
285
+ after a successful start, and destroys monitor resources before storage even
286
+ when cleanup fails. Monitor event/task names and diagnostic text are bounded;
287
+ library logging is opt-in and dotenv loading is quiet.
288
+
289
+ - Authenticate every ordinary Merkle-proof result before it can create a
290
+ `ProvenTx` or restore a failed transaction. Provider responses are copied and
291
+ structurally bounded, must contain a leaf matching the requested txid
292
+ (independently of the optional `txid` marker),
293
+ must compute the canonical header root at the same height, and must resolve
294
+ through a proof-of-work-valid wallet header. Monitor consumers additionally
295
+ require the local ChainTracks root verdict and bind the request's raw
296
+ transaction to its txid. WhatsOnChain, Bitails, and Arcade enforce the same
297
+ invariant when called directly; TSC conversion rejects malformed, sparse,
298
+ oversized, and unsafe-integer proofs. `TaskUnFail` uses a one-shot internal
299
+ authorization guard and re-reads its first mutating page so batches over 100
300
+ cannot be skipped. Existing wire formats and public method signatures remain
301
+ compatible; the optional root-validator argument is additive.
302
+
303
+ - Authenticate external transaction-status results before they can influence
304
+ wallet state. Results must be uniquely bound to requested txids and have
305
+ consistent mined/known/unknown depth, terminal, and input-conflict fields;
306
+ provider attribution is local, while descriptions and competing txids are
307
+ copied and bounded. Malformed providers fail over instead of supplying
308
+ failure, quarantine, abort-protection, or double-spend evidence. Arcade also
309
+ validates and binds its complete transaction-data response before status
310
+ classification or proof parsing, and WhatsOnChain rejects impossible depth.
311
+ Monitor proof, no-send, and abandonment scans now preserve stable pagination
312
+ while rows leave their query, and a rejected proof counts as one attempt.
313
+
314
+ - Bound raw-transaction and proof-provider envelopes before inspection.
315
+ Raw results are txid-bound, accessor-free owned byte arrays capped at 32 MiB;
316
+ malformed providers fail over and cannot forge local attribution or mutate
317
+ accepted bytes. Merkle provider notes are copied as bounded scalar data and
318
+ legacy custom services may supply at most eight dense proof candidates.
319
+ Monitor options, task work controls, persisted checkpoints, and polled block
320
+ headers are also validated and copied before they control background work.
321
+
322
+ - Contain UTXO-oracle evidence and invalid-change review work. Provider results
323
+ are accessor-free, bounded, outpoint-consistent owned data with locally
324
+ configured attribution; malformed responses fail over and never become spent
325
+ evidence. Manual and admin review require canonical identities and exact
326
+ modes, booleans, pages, offsets, tags, and safe monetary totals. Whole-wallet
327
+ compatibility scans have a 10,000-candidate ceiling, and a release rebinds the
328
+ exact classified outpoint, value, basket, ownership, and allocation state
329
+ under the write lock before changing spendability.
330
+
331
+ - Authenticate and bound script-history and transaction-broadcast provider
332
+ boundaries. History is hash/endian-bound, accessor-free, deduplicated, and
333
+ capped; all WhatsOnChain calls carry validated whole-request deadlines and
334
+ chain responses are copied before use. BEEF and direct raw submissions are
335
+ size- and txid-bound, providers receive isolated snapshots, result identities
336
+ and state invariants are enforced with local attribution, and sensitive or
337
+ excessive diagnostics are discarded. Malformed, throwing, or hung providers
338
+ fail over without forging the wallet's internal timeout marker. A broadcast
339
+ double-spend claim is terminal only after at least one exact input is
340
+ conclusively observed spent; unknown oracle evidence remains retryable.
341
+
342
+ - Enforce one atomic `sendWith` resource invariant from SDK validation and
343
+ binary decoding through storage, action-batch commit, provider submission,
344
+ and delayed monitor retry. Broadcast sets contain at most 1,000 unique,
345
+ canonical transaction IDs, including the newly created or signed
346
+ transaction. Malformed storage flags cannot diverge from the actual list,
347
+ and an oversized legacy batch is reported and skipped as a whole rather than
348
+ partially broadcast or expanded without bound. If any member cannot be
349
+ resolved or assembled, no ready subset is scheduled or broadcast; members
350
+ already known by the network remain compatible with retrying the rest.
351
+
352
+ - Make user provisioning and schema lifecycle failure-atomic. A newly inserted
353
+ user and its mandatory managed-change basket now share one transaction, and
354
+ creation-race retry restarts the whole transaction. Knex migration and
355
+ destructive rollback errors propagate, explicit empty-schema state is the
356
+ only rollback terminator, and SQLite foreign-key enforcement is restored in
357
+ `finally` after both successful and failed migration work.
358
+
359
+ - Keep secrets and untrusted wallet material out of implicit process logs.
360
+ `Setup.makeEnv()` returns generated development keys without printing them;
361
+ invalid BEEF, identity/certificate parsing, permission batching, provisioning
362
+ races, migration failures, and IndexedDB orphan handling no longer emit raw
363
+ objects, transaction/proof data, database details, or row identifiers. The
364
+ existing explicit wallet logger receives only a generic BEEF-validation
365
+ message when a caller opts into it.
366
+
367
+ - Preserve wallet write atomicity across metadata revival, entity insertion,
368
+ and abort-time chain checks. Soft-deleted baskets, labels, label mappings,
369
+ output tags, and tag mappings now revive in the caller's exact transaction;
370
+ new proof-request and sync-state entities retain that transaction as well.
371
+ `abortAction` queries external chain status before opening an IndexedDB write
372
+ scope, then rebinds the observation to the exact transaction ID and txid
373
+ under the write lock before committing its decision.
374
+
375
+ - Keep shared-storage schema and process lifecycle under operator authority.
376
+ Authenticated remote migration requests are compatibility no-ops, matching
377
+ remote destroy requests, so a wallet tenant cannot contend on global DDL or
378
+ initialize shared storage metadata.
379
+
380
+ - Bound authenticated proof-request reads before database and memory work.
381
+ Knex and IndexedDB apply wallet ownership in the same query/cursor scan as
382
+ status, partial, offset, and limit filtering. Custom providers retain a
383
+ bounded compatibility path and must supply exact txids or a provider-native
384
+ scoped query for wallets with more than 10,000 proof requests.
385
+
386
+ - Bound caller-selected Wallet Storage RPC offsets as well as page sizes.
387
+ Top-level list offsets, nested find paging, and synchronization checkpoints
388
+ are rejected before database/cursor work when they exceed the selected
389
+ resource profile. Operators can raise the explicit ceiling for larger
390
+ histories without changing the wire format.
391
+
392
+ - Redact internal Wallet Storage failures at every authenticated HTTP response
393
+ boundary. JSON-RPC and action-batch upload routes preserve explicit public
394
+ wallet errors, but generic exceptions and custom `WERR_INTERNAL` diagnostics
395
+ now return only the stable internal-error name and default message. Detailed
396
+ provider, database, and filesystem failures remain available through
397
+ explicitly configured operator logging and telemetry.
398
+
399
+ - Clarify local-contact authority throughout SDK and Wallet Toolbox identity
400
+ documentation. A saved contact is an authoritative wallet-local trust anchor
401
+ based on the user's independent validation, analogous to accepting a
402
+ self-signed certificate. Its infinite trust is intentionally local—not a
403
+ third-party certification or transferable trust claim—and authenticated
404
+ contact storage proves retention of that decision rather than the underlying
405
+ real-world identity.
406
+
407
+ - Re-bind cryptographically authenticated identity-overlay certificates to the
408
+ exact lookup they answer before applying trust thresholds. A dishonest lookup
409
+ host can no longer answer an identity-key or public-attribute query with a
410
+ different valid trusted certificate. Local contacts remain authoritative;
411
+ contact lookup matching continues to follow the caller-installed source's
412
+ explicit local trust contract.
413
+
414
+ - Harden local ChainTracks persistence and legacy bulk tooling. Memory-backed
415
+ trackers no longer share state, IndexedDB and Knex require unique active
416
+ headers and consecutive parent linkage, reorganization walks are bounded and
417
+ fail atomically, direct admissions are authenticated, and Knex serializes tip
418
+ mutation through an internal state row. MySQL now stores 64-character hex
419
+ values as `VARCHAR(64)` and multi-megabyte header objects as `LONGBLOB`; the
420
+ additive migration clears the rebuildable legacy live-header cache before
421
+ widening fields that permissive MySQL could already have truncated. Bulk
422
+ manifests, local readers, exporters, filesystem operations, and lock queues
423
+ now have canonical path, byte, count, continuity, genesis, digest,
424
+ proof-of-work, and progress bounds. Filesystem cache reads are bounded before
425
+ allocation and authenticate writes, while the durable download budget now
426
+ serializes reservations across processes and fails closed on an abandoned
427
+ lock instead of silently resetting or losing allowance.
428
+
429
+ - Fix the legacy `BHServiceClient` Merkle-root cache so rejected, stale, or
430
+ externally written roots can never become authoritative. Every verdict now
431
+ resolves a bounded canonical header, validates its computed hash and proof
432
+ of work, and binds it to the requested height or hash. Its HTTP reads reject
433
+ redirects and malformed endpoints, retain whole-body deadlines, and enforce
434
+ response and batch ceilings. ChainTracks core options are validated before
435
+ startup, and all library/factory logging is now silent unless the embedding
436
+ application supplies the existing optional logger.
437
+
438
+ - Treat every remote ChainTracks HTTP/SSE and WhatsOnChain HTTP/CDN/WebSocket
439
+ response as untrusted input: retain the
440
+ deadline through bounded body consumption, bound and idle-timeout streams,
441
+ prohibit redirects and ambiguous endpoint URLs, validate canonical header
442
+ bytes and proof of work, and bind network, height, hash, and reorganization
443
+ results to each request before returning or queueing them. Submitted and live
444
+ header queues are copy-isolated, deduplicated where applicable, and bounded.
445
+ Service-discovered CDN links must remain credential-free public HTTPS with
446
+ DNS-pinned Node connections, legacy history streams are range-ordered and
447
+ chunked, and no declared target contributes to bulk chain selection before
448
+ its complete header and proof of work have been authenticated.
449
+
450
+ - Authenticate every discovered permission token against its exact BEEF
451
+ outpoint, canonical signed PushDrop fields, locally derived locking key, and
452
+ signed grant content. Basket membership and tags remain selectors only. Bind
453
+ public partial actions and all token mint, renewal, coalescing, and revocation
454
+ flows to the exact authorized final transaction and actual input indexes.
455
+ Include signer-authenticated storage service charges in the exact spend sent
456
+ for permission approval, without changing the BRC-100 API or wire format, and
457
+ fail closed on inconsistent sources or unsafe monetary arithmetic. The exact
458
+ packed platform measurements are 2,184,519 / 520,753 / 397,289 bytes for Vite
459
+ and 1,704,383 / 471,571 / 370,439 for esbuild (raw/gzip/Brotli), with reviewed
460
+ ceilings of 2,230,000 / 535,000 / 410,000 and
461
+ 1,740,000 / 485,000 / 380,000 respectively. Mobile measures
462
+ 2,344,815 / 597,625 / 454,020 for Metro and
463
+ 4,579,110 / 1,919,816 / 1,489,229 for optimized Hermes bytecode, with reviewed
464
+ ceilings of 2,400,000 / 610,000 / 465,000 and
465
+ 4,675,000 / 1,960,000 / 1,520,000 respectively.
466
+
467
+ - Bind UMP renewal to an exact canonical, field-signed predecessor owned by the
468
+ local wallet and require one exact replacement token in the completed action.
469
+ Bind WAB faucet funding to its exact Atomic BEEF target, output-zero R-puzzle
470
+ commitment, actual wallet input index, and returned final transaction ID.
471
+
472
+ - Bind legacy P2PKH funding imports to the exact atomic signing target and
473
+ final wallet transaction. Reject result-only transaction IDs, ambiguous
474
+ outpoints, oversized or redirected provider responses, and unbounded BEEF
475
+ recursion/source graphs before signing or allocation.
476
+
477
+ - Atomically consume BRC-103 signed-message nonces across StorageServer replicas.
478
+ The additive `2026-09-16-001 add auth message replay claims` migration creates
479
+ `auth_message_nonces` with a composite session-or-identity scope/nonce
480
+ uniqueness constraint and expiry index. Signed follow-up and unsigned
481
+ initial-request replays are both rejected. Run the migration before deploying
482
+ the new runtime; otherwise authentication processing fails closed.
483
+
484
+ - Integrate upstream security corrections without dropping the sync recovery contracts.
485
+ Record combined browser/mobile artifact costs and limits in the sync transfer guide.
486
+
487
+ - Validate replacement proofs across providers before reconciling stale RPC sync metadata; preserve raw transactions and checkpoints on failure.
488
+
489
+ - Start sync copies conservatively and adapt page work after committed responses.
490
+ Validate at most eight remote proofs concurrently, draining failure work before
491
+ rejecting the page. Preserve all proof and checkpoint checks. Record-transfer
492
+ candidates now use 2.13.0 to distinguish them from published 2.12.0.
493
+
494
+ - Require an affirmative certifier-signature verification result before
495
+ storing directly acquired or issuer-returned certificates. Identity overlay
496
+ results are verified before decryption and trust scoring, so forged
497
+ certificates cannot become wallet-held or trusted discovered identities. The
498
+ synchronized browser Vite ceilings advance to 1,695,000 raw and 401,000 gzip,
499
+ covering measured 1,694,211-byte and 400,048-byte bundles; Brotli is unchanged.
500
+ The mobile Metro raw ceiling advances to 1,750,000 for the measured
501
+ 1,748,892-byte bundle. The browser esbuild raw ceiling advances to 1,323,000
502
+ for the measured 1,321,768-byte bundle, its gzip ceiling advances to 365,000
503
+ for the measured 364,413-byte bundle, and the optimized Hermes gzip ceiling
504
+ advances to 1,442,000 for the measured 1,441,531-byte bytecode; remaining
505
+ compressed ceilings are unchanged.
506
+ - Never cache, coalesce, or reuse spending approvals, give each prompt a
507
+ distinct request identity, and paginate the complete action history before
508
+ calculating an authorization token's prior spending.
509
+ - Require HTTPS for credential-bearing remote storage and Arcade SSE outside
510
+ explicit loopback development, disable dependency debug output, and avoid
511
+ serializing credential-bearing transport errors. Snapshot formats remain
512
+ unchanged and are documented as wallet-equivalent secrets.
513
+ - Make new WAB account creation resumable when wallet setup, funding, KDF, UMP
514
+ publication, or the final acknowledgement is interrupted. The manager accepts
515
+ a clean missing-token result only for a server-declared pending registration,
516
+ finalizes after successful publication, repairs a lost acknowledgement on the
517
+ next login, and preserves fail-closed continuity for active and legacy WABs.
518
+ - Add optional bounded sync transfers for oversized records, authenticated pieces,
519
+ durable Knex staging, full-frame SHA-256 verification, and stale-checkpoint
520
+ rejection before merging. Add the two staging tables through migration
521
+ `2026-09-09-001`; reverse only that migration before restarting older code. Frames are limited
522
+ to 64 MiB and ordinary pages keep their existing transport. See
523
+ [the transport and migration guide](./docs/sync-transfer.md).
524
+
525
+ - Upgrade IndexedDB to schema version 6 with a non-unique transaction-ID/user
526
+ index. Use existing reference, reclaim, commission, and relation keys for
527
+ sync lookups, avoiding repeated scans as a local wallet grows. Preserve
528
+ user filtering, pagination, existing bytes, and duplicate transaction IDs.
529
+ Proof-batch preflight checks resolve only requested transaction IDs through
530
+ the existing index, preserving proof validation and primary-key ordering.
531
+ Older clients requesting schema version 5 cannot open the upgraded database.
532
+
533
+ - Add negotiated compact sync checkpoints, reusing committed page progress while
534
+ retaining complete writer-side ID mappings and the legacy provider fallback.
535
+ Avoid per-scalar reviver callbacks when decoding binary JSON pages without
536
+ changing marker escaping or byte semantics. Use the already negotiated binary
537
+ codec for large schema-defined sync response byte arrays, reducing wire and
538
+ authentication payload size while preserving legacy arrays and unrelated data.
539
+ Retain authenticated full-copy,
540
+ resume, malformed-input, and transport CPU/payload regression coverage.
541
+ Local packed measurements are 1,701,711 raw / 401,038 gzip / 314,272 Brotli
542
+ bytes (Vite), 1,327,368 / 364,550 / 293,224 (esbuild),
543
+ 1,753,648 / 445,136 / 345,369 (Metro), and
544
+ 3,557,663 / 1,426,740 / 1,121,821 (Hermes). The raw ceilings become
545
+ 1,702,000, 1,327,500, 1,755,000, and 3,558,500 respectively.
546
+ Vite and esbuild gzip ceilings increase to 402,000 and 366,000 bytes.
547
+ Hosted Linux measures 365,818 esbuild gzip bytes and 1,445,624 Hermes gzip
548
+ bytes; the Hermes gzip ceiling becomes 1,446,500.
549
+ The esbuild Brotli ceiling is 293,750 bytes. Asynchronous platform hashing
550
+ for large SDK signature payloads brings the Vite Brotli ceiling to 314,500
551
+ bytes, the Hermes raw ceiling to 3,560,000 bytes, and its Brotli ceiling to
552
+ 1,125,000 bytes (measured 1,124,446); other compressed ceilings remain unchanged.
553
+ The added portable sync/progress and decoding paths account for
554
+ the increase; no Node-only backend is introduced into portable bundles.
555
+
556
+ - Keep Argon2id-backed UMP v3 wallets available in React Native and other
557
+ runtimes without WebAssembly by falling back to an asynchronously yielding,
558
+ standards-compatible JavaScript implementation. The same KDF parameters and
559
+ derived bytes are preserved, so existing tokens require no migration and
560
+ WebAssembly-capable runtimes retain the faster path. The existing public
561
+ `hash-wasm`-compatible utility contract remains intact: secret-bearing,
562
+ non-binary-output, and non-byte-array requests stay on `hash-wasm` and are
563
+ never reinterpreted by a host backend or fallback. Native registration is
564
+ available from both mobile and client roots, concurrent cold callers share
565
+ one preload attempt, and both alternative implementations validate result
566
+ type and length. Unrelated validation errors propagate even without the
567
+ WebAssembly global. The current-main macOS
568
+ reference fixtures measure 1,690,925 raw / 398,461 gzip / 311,955 Brotli
569
+ bytes with Vite, 1,319,059 raw / 362,220 gzip / 291,206 Brotli bytes with
570
+ esbuild, 1,746,067 raw / 442,648 gzip / 343,342 Brotli bytes with Metro, and
571
+ 3,542,034 raw / 1,419,515 gzip / 1,117,531 Brotli bytes as optimized Hermes
572
+ bytecode; hosted Linux measures 1,439,166 gzip bytes. Combined with the
573
+ interrupted-registration recovery path above, current measurements are
574
+ 1,694,823 raw / 399,940 gzip / 312,528 Brotli bytes with Vite, 1,322,223 raw
575
+ / 364,260 gzip / 291,914 Brotli bytes with esbuild, 1,749,694 raw / 443,665
576
+ gzip / 344,059 Brotli bytes with Metro, and 3,549,495 raw / 1,441,622 gzip /
577
+ 1,119,600 Brotli bytes as optimized Hermes bytecode. The reviewed ceilings
578
+ advance to 1,697,000 raw / 400,000 gzip Vite bytes, 1,324,000 raw / 365,000
579
+ gzip esbuild bytes, 1,752,000 raw Metro bytes, and 3,552,000 raw / 1,442,000
580
+ gzip Hermes bytes; Brotli ceilings remain unchanged.
581
+
582
+ - Extend the BRC-98/99/111 permission-module interface with an optional semantic
583
+ `handleRequest` hook. A module can now return a conforming BRC-100 result
584
+ directly or invoke the underlying wallet operation at most once, while
585
+ existing `onRequest`/`onResponse` transformation modules remain compatible.
586
+ The companion `@bsv/ecpm-permission-module` uses this hook to implement
587
+ `p ecpm` point multiplication without adding a BRC-100 method or wire call.
588
+
589
+ - Add opt-in prepared BEEF storage for Knex-backed normal `createAction`
590
+ funding. COOK (Create Once, Output Kept) stores a user-scoped, exact,
591
+ independently verified and checksummed proof closure, merges valid hits
592
+ without invoking the canonical builder, and treats every miss or cache
593
+ failure as the existing canonical path. Missing roots and newly finalized
594
+ managed-change transactions are queued only after foreground action work is
595
+ complete; bounded writes, reads, and gradual backfill are separately
596
+ controlled and default off. Reorganizations stale derived artifacts, a
597
+ database proof epoch fences in-flight cross-process writes, purge removes
598
+ unused rows, and prepared data remains outside wallet sync. The
599
+ Knex worker is excluded from portable bundles. Reviewed Vite ceilings advance
600
+ to 1,610,250 raw / 379,750 gzip / 298,000 Brotli bytes and esbuild ceilings
601
+ to 1,255,000 raw / 346,250 gzip / 278,000 Brotli, covering local measurements
602
+ of 1,609,783 / 379,492 / 297,253 and 1,254,603 / 344,792 / 277,384 bytes;
603
+ hosted Linux Vite Brotli and esbuild gzip measured 297,585 and 345,711 bytes.
604
+ The Hermes raw / gzip ceilings advance to 3,374,500 / 1,369,000 bytes,
605
+ covering local measurements of 3,372,554 / 1,348,354 and hosted Linux
606
+ measurements of 3,373,560 / 1,368,128 bytes; Metro and Hermes Brotli
607
+ ceilings remain unchanged.
608
+ - Add the built-in BRC-177 `p nosend expiry` module for seconds, Unix timestamp,
609
+ and block-height deadlines. Protected actions are prefunded through an
610
+ accepted transaction, contain no wallet change, and retain a pre-signed
611
+ reclaim across restarts, synchronized storage, devices, and keyless remote
612
+ monitors. Atomic lifecycle transitions, active-storage ownership,
613
+ fail-closed status checks, backoff-controlled recovery of terminally rejected
614
+ reclaims, quarantined race outputs, and locally validated proof finality
615
+ prevent duplicate reclaim activation and unsafe state regression. Wallet
616
+ Permissions Manager authorizes module use and spending
617
+ before prefunding, attributes the funding fee to the requesting originator,
618
+ and rechecks the current monthly ledger before releasing the protected
619
+ action. Existing actions and ordinary `noSend` calls are unchanged. The
620
+ current-main macOS reference fixtures measure 1,662,220 raw / 388,763 gzip /
621
+ 305,307 Brotli bytes with Vite, 1,297,621 raw / 355,579 gzip / 285,031 Brotli
622
+ bytes with esbuild, 1,710,494 raw / 430,613 gzip / 334,490 Brotli bytes with
623
+ Metro, and 3,474,604 raw / 1,406,878 gzip / 1,090,948 Brotli bytes as
624
+ optimized Hermes bytecode. The reviewed ceilings advance to 1,665,000 /
625
+ 390,000 / 307,000 Vite bytes, 1,300,000 / 357,000 / 287,000 esbuild bytes,
626
+ 1,712,000 / 455,000 / 360,000 Metro bytes, and 3,480,000 / 1,410,000 /
627
+ 1,095,000 Hermes bytes.
628
+
629
+ - Report `listOutputs` `totalOutputs` as the size of the whole result set on
630
+ every page, in both the IndexedDB and Knex storage providers. A short final
631
+ page previously returned only that page's length, so a client paging a large
632
+ basket saw the total collapse to the size of the last page; an offset at or
633
+ past the end now counts instead of inferring, and the managed-change spec-op
634
+ no longer discards the total it already computed. Full pages, first pages,
635
+ and empty result sets are unchanged, so no consumer migration is required.
636
+ `balanceAndUtxos` now terminates from page progress instead of relying on the
637
+ former collapsing total, preventing a zero-progress loop after the final page.
638
+ The reviewed Vite raw-size ceiling advances by 500 bytes to 1,607,500,
639
+ covering the hosted Linux measurement of 1,607,015 bytes; the Vite compressed
640
+ and esbuild ceilings remain unchanged.
641
+
642
+ - Serialize typed AtomicBEEF and competing BEEF in wallet review errors as
643
+ portable JSON arrays, keeping HTTP and relay error recovery compatible with
644
+ both historical array wallets and current binary Wallet Wire wallets.
645
+ - Serialize real typed arrays portably in outbound WAB requests while
646
+ preserving arbitrary inbound WAB JSON objects exactly.
647
+
648
+ - Accept legacy BRC-95 payment envelopes that include unrelated BEEF branches
649
+ by reducing them to the declared transaction and its dependency closure
650
+ before strict proof and BRC-29 validation. Malformed transactions, invalid
651
+ proofs, and incorrectly locked payment outputs remain rejected. The shared
652
+ helper adds 137 bytes to the local optimized Hermes fixture. The reviewed
653
+ ceilings advance by 1,000 bytes to 3,361,000 raw and 1,362,000 gzip, covering
654
+ the measured macOS raw size of 3,360,137 bytes and hosted Linux gzip size of
655
+ 1,361,509 bytes; the Brotli ceiling remains unchanged.
656
+
657
+ - Commit each received wallet-storage sync page and its durable checkpoint in
658
+ one provider transaction. Large IndexedDB replications avoid thousands of
659
+ transaction startup/commit cycles, failed pages roll back without advancing
660
+ the checkpoint, and abort cleanup preserves the original storage error.
661
+
662
+ - Fill wallet-storage sync pages with adaptive, size-aware source queries and
663
+ add composite SQL indexes for user-scoped proof lookups. Sync clients may
664
+ request optional source record totals for exact progress and ETA displays;
665
+ older clients and providers remain wire-compatible and do not incur count
666
+ queries unless totals are requested. Remote clients also recover from a
667
+ provider's HTTP 413 response ceiling by retrying the read-only sync request
668
+ with a smaller chunk budget and reusing the working limit for later pages.
669
+ Runtime validation rejects malformed remote totals, and MySQL rollback
670
+ restores the foreign-key support index before removing the new composites.
671
+ The retained authenticated candidate-provider benchmark fills a 250-record
672
+ proof page with three source reads (`10, 80, 160`) on SQLite and MySQL.
673
+ Clean macOS fixtures measure Vite at 1,609,916 raw, 379,552 gzip, and 297,188
674
+ Brotli bytes; esbuild at 1,254,827 raw, 344,883 gzip, and 277,729 Brotli
675
+ bytes; Metro at 1,662,714 raw, 419,740 gzip, and 326,785 Brotli bytes; and
676
+ Hermes at 3,371,236 raw, 1,347,950 gzip, and 1,061,946 Brotli bytes. The
677
+ reviewed ceilings advance to 1,611,000/380,000/297,500 for Vite,
678
+ 1,256,000/346,000/278,200 for esbuild, and 3,373,000/1,368,000 raw/gzip for
679
+ Hermes. Metro and the Hermes Brotli ceiling remain unchanged.
680
+
681
+ - Make verified phone changes interruption-safe by staging the replacement key
682
+ in WAB, publishing the UMP rotation, and then finalizing WAB. Authentication
683
+ can recover an interrupted transition from the current or pending key and
684
+ idempotently finish it without creating a second UMP update.
685
+
686
+ - Prune `inputBEEF` to the dependency closure of explicitly declared action
687
+ inputs before remote request serialization and repeat the pruning on the
688
+ server before verification and persistence. Unrelated proof branches no
689
+ longer consume transfer or validation work or cause an otherwise valid
690
+ action to fail; proof data required by a declared input is still fully
691
+ validated.
692
+
693
+ - Add a local-first ChainTracks control plane for browser, mobile, and Node
694
+ wallets, including explicit local-primary/remote-only mode, independently
695
+ sourced consistency checks, quorum-backed exceptional fallback, local-clear
696
+ hooks, and opt-in divergence recovery. Add a portable packaged-checkpoint
697
+ cache contract and a Node filesystem implementation with validated reads and
698
+ atomic writes. Coalesce concurrent immutable-file misses, centralize bounded
699
+ fetch retries, enforce whole-response deadlines and byte ceilings, and expose
700
+ cache/download counters and an optional upstream-byte budget. Bulk and live
701
+ ingestion now enforce each header's declared proof-of-work target, and local
702
+ consistency checks detect both quorum-confirmed divergence and a
703
+ quorum-confirmed stuck height before optional recovery. The reviewed platform
704
+ service seam also accepts a composed SDK `chainTracker` directly while
705
+ retaining the existing client-wrapping default. The reviewed platform
706
+ ceilings advance to 1,601,000 Vite bytes, 1,249,000 esbuild bytes, and
707
+ 3,358,000 Hermes bytes; their matching gzip/Brotli ceilings are
708
+ 377,000/296,000, 344,000/276,000, and 1,360,000/1,070,000 bytes.
709
+ - Keep ChainTracks availability independent of immutable-header verification:
710
+ stale heights now return immediately behind a single refresh, complete
711
+ digest/linkage/chain-work/proof-of-work validation can run in a bounded Node
712
+ worker pool, and historical reads release the manager lock before disk,
713
+ network, or worker waits. Filesystem caches use content-addressed objects,
714
+ quarantine rejected entries, and promote validated legacy files without
715
+ deleting the only retained copy. A crash-safe download ledger reserves every
716
+ physical retry before network I/O and survives restarts; failed objects back
717
+ off before another attempt. The reference server keeps probes local, applies
718
+ separate historical concurrency admission, and publishes complete CDN
719
+ generations behind an atomic pointer while retaining rollback generations.
720
+ - Age proactive pending-transaction review from immutable request creation
721
+ time, so repeated proof polling cannot keep a rejected transaction below the
722
+ reconciliation threshold forever. A descendant of a locally terminal parent
723
+ now fails from that durable storage evidence; failed-parent outputs remain
724
+ quarantined while unrelated inputs are released for reuse. The shared change
725
+ adds about 1.1 kB to the Vite browser artifact and 3.8 kB to Hermes bytecode;
726
+ the reviewed raw ceilings advance to 1,585,000 and 3,322,000 bytes while all
727
+ compressed ceilings remain unchanged; the esbuild raw ceiling advances to
728
+ 1,238,000 bytes.
729
+ - Keep mainnet and testnet ChainTracks usable from browser and webview wallets:
730
+ browser runtimes temporarily select the CORS-enabled legacy service while
731
+ Node runtimes retain Arcade/go-chaintracks v2. `Services.getHeight` now falls
732
+ back to WhatsOnChain if ChainTracks is unavailable and preserves the original
733
+ ChainTracks error when both providers fail.
734
+ - Route `ttn` wallets through the isolated `teratestnet` overlay preset and
735
+ enable the public TTN Arcade broadcaster/proof provider by default. TTN does
736
+ not register the incompatible legacy ARC BEEF fallback. Other chain defaults
737
+ are unchanged, and an empty Arcade URL explicitly disables Arcade.
738
+ - Reconcile Arcade broadcast outcomes as durable wallet state. Retryable
739
+ locktime and parent conditions remain pending, while validator failures fail
740
+ the request and explicit missing-input or conflict evidence atomically fails
741
+ every local transaction copy and quarantines its wallet-owned inputs without
742
+ depending on WhatsOnChain. Cached accepted/seen labels can no longer revive a
743
+ terminal conflict; only a mined event whose Merkle proof validates through
744
+ the configured chain tracker may repair it. Arcade also participates in the
745
+ shared transaction-status service so double-spend review remains conservative
746
+ on networks with no explorer. A scheduled paged pass also reconciles aged
747
+ pending requests from durable Arcade lifecycle state, including orphan-mempool
748
+ losers whose SSE event was missed; mined/known evidence wins over rejection.
749
+ Inconclusive or absent UTXO providers no longer
750
+ masquerade as a spent-output verdict in invalid-change release, stale-input
751
+ reconciliation, proof recovery, or storage diagnostics. Invalid-change review
752
+ returns conclusive read-only findings plus unknown diagnostics. Direct release
753
+ blocks atomically with machine-readable `WERR_UTXO_REVIEW_INCONCLUSIVE` when
754
+ any result is unknown. Monitor Admin uses bounded, five-second-deadline pages
755
+ and can explicitly release the confirmed-spent subset while retaining unknowns;
756
+ every mutation rechecks ownership/allocation under lock and records audit
757
+ evidence. Monitor Admin scans by default and requires explicit confirmation.
758
+ The
759
+ Arcade SSE cursor advances only after both event storage work and cursor
760
+ persistence succeed; either failure leaves the event queued for ordered retry.
761
+ - Replace 32-satoshi default-basket fragments with a progressive liquidity
762
+ policy targeting 144 useful 5,000-satoshi outputs. New actions create at most
763
+ eight outputs from real surplus and migrate at most four fee-positive legacy
764
+ fragments, while a same-tier compatibility plan guarantees that optional
765
+ shaping cannot refuse an action the former planner could fund. Explicitly
766
+ funded actions materialize change from their existing surplus without
767
+ gathering pool inputs, and SQLite policy migrations use sync-compatible UTC
768
+ ISO timestamps.
769
+ - Prefer completed, then unproven, then sending parents. Plans above 16 inputs
770
+ compare exact transaction-plus-BEEF bytes before accepting pending ancestry;
771
+ pending change remains an unconditional last-resort funding source. Align
772
+ action-batch reservation/planning and add a read-only Monitor liquidity
773
+ report. All work limits are configurable and accept `-1` for explicit
774
+ operator-selected unlimited behavior.
775
+ - Restore delayed broadcast for durable permission-token persistence. Permission
776
+ grants no longer inherit network-broadcast latency; the managed-change policy
777
+ handles queued ancestry without hiding it or preferring it over settled funds.
778
+ - Isolate each in-memory action batch by explicit staged-output or `sendWith`
779
+ membership, so unrelated immediate actions and `noSend` roots cannot be
780
+ captured by or commit a workspace. Add an exact-input resume protocol for
781
+ expired leases, structured lifecycle errors, and a provider-enforced
782
+ cumulative reservation limit that defaults to 256 outputs and can be
783
+ configured, including `-1` for operator-selected unlimited operation.
784
+ - Keep the combined action-batch, managed-liquidity, browser-fallback, and
785
+ fail-safe reconciliation browser/mobile cost bounded by exact packed-artifact
786
+ contracts. Local verification measures 1,557,683 raw / 366,927 gzip / 287,337
787
+ Brotli bytes with Vite, 1,215,983 raw / 333,466 gzip / 268,497 Brotli bytes
788
+ with esbuild, 1,617,544 raw Metro bytes, and 3,271,146 raw / 1,302,110 gzip /
789
+ 1,025,812 Brotli Hermes bytes. Reviewed raw ceilings are 1,561,000 Vite bytes,
790
+ 1,220,000 esbuild bytes, 1,710,000 Metro bytes, and 3,275,000 Hermes bytes;
791
+ compressed ceilings remain independently governed.
792
+ - Fix `WalletStorageManager.getStoreEndpointURL` / `getStores().endpointURL` to
793
+ duck-type provider `endpointUrl` instead of matching
794
+ `constructor.name === 'StorageClient'`. Production minifiers rename classes,
795
+ so the name check left remote stores with `endpointURL: undefined` while
796
+ sync still worked; clients that select a backup by URL (make primary) failed.
9
797
  - Let Storage Server operators select an explicit listener host while retaining
10
798
  the historical omitted-host behavior for existing callers. The official
11
799
  Wallet Infrastructure image uses this to bind direct-mode traffic on IPv4
@@ -222,7 +1010,7 @@ attention to changes that materially alter behavior or extend functionality.
222
1010
 
223
1011
  ## wallet-toolbox 2.1.27
224
1012
 
225
- - Add optional `contactSource` (and exported `ContactSource` / `ContactRecord` interfaces) on `WalletArgs` and the `Wallet` class. When provided, `Wallet.discoverByIdentityKey` consults the local contacts source **before** the in-process `_overlayCache` and before any network call; on a hit, the overlay is not queried at all. `Wallet.discoverByAttributes` consults the contact source's optional `findByAttributes` when present. Contact-source failures are swallowed and fall through to the existing network path so the network is never gated on a flaky contact store.
1013
+ - Add optional `contactSource` (and exported `ContactSource` / `ContactRecord` interfaces) on `WalletArgs` and the `Wallet` class. When provided, `Wallet.discoverByIdentityKey` consults the local contacts source **before** the in-process `_overlayCache` and before any network call; on a hit, the overlay is not queried at all. `Wallet.discoverByAttributes` consults the contact source's optional `findByAttributes` when present. Contact-source failures are swallowed and fall through to the existing network path so the network is never gated on a flaky contact store. A caller-installed contact source is an explicit personal trust anchor: its records are locally authoritative, not third-party certifier attestations. Synthetic contact results default to type `contact`, use empty certificate-proof fields, and receive infinite trust to express that local policy decision.
226
1014
  - `Wallet.discoverByIdentityKey` and `Wallet.discoverByAttributes` accept `forceRefresh?: boolean`. When `true`, both the contacts short-circuit and the 2-minute `_overlayCache` are bypassed so the network is consulted fresh — useful for a manual refresh action.
227
1015
  - `identityUtils.parseResults` now yields to the host runtime between certificates on UI runtimes (browser / React Native, detected at call time). On Node the yield is skipped to avoid timer overhead. Same total work; the JS thread no longer owns the frame for the duration of the loop, so menu taps and scroll keep working while a large identity result is parsed.
228
1016
  - `identityUtils.parseResults$` — new async-iterable form that emits each successfully parsed `VerifiableCertificate` as soon as it's ready, for callers that want progressive rendering.