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

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 (878) hide show
  1. package/CHANGELOG.md +744 -1
  2. package/LICENSES/Open-BSV-License-4-wallet-pre-2026.txt +28 -0
  3. package/README.md +823 -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 +12996 -4571
  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 +505 -190
  13. package/docs/no-send-expiry.md +167 -0
  14. package/docs/prepared-beef.md +197 -0
  15. package/docs/services.md +4013 -1153
  16. package/docs/setup.md +107 -56
  17. package/docs/storage.md +5781 -1599
  18. package/docs/sync-transfer.md +144 -0
  19. package/docs/wab-shamir.md +5 -1
  20. package/docs/wallet.md +10188 -10904
  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 +14 -0
  26. package/out/src/Setup.d.ts.map +1 -1
  27. package/out/src/Setup.js +6 -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.map +1 -1
  85. package/out/src/monitor/MonitorDaemon.js +64 -16
  86. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  87. package/out/src/monitor/monitorValidation.d.ts +12 -0
  88. package/out/src/monitor/monitorValidation.d.ts.map +1 -0
  89. package/out/src/monitor/monitorValidation.js +133 -0
  90. package/out/src/monitor/monitorValidation.js.map +1 -0
  91. package/out/src/monitor/tasks/TaskArcSSE.d.ts +6 -1
  92. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  93. package/out/src/monitor/tasks/TaskArcSSE.js +117 -74
  94. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  95. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +5 -0
  96. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  97. package/out/src/monitor/tasks/TaskCheckForProofs.js +29 -24
  98. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  99. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  100. package/out/src/monitor/tasks/TaskCheckNoSends.js +11 -3
  101. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  102. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  103. package/out/src/monitor/tasks/TaskFailAbandoned.js +9 -4
  104. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  105. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  106. package/out/src/monitor/tasks/TaskNewHeader.js +3 -1
  107. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  108. package/out/src/monitor/tasks/TaskNoSendExpiry.d.ts +19 -0
  109. package/out/src/monitor/tasks/TaskNoSendExpiry.d.ts.map +1 -0
  110. package/out/src/monitor/tasks/TaskNoSendExpiry.js +47 -0
  111. package/out/src/monitor/tasks/TaskNoSendExpiry.js.map +1 -0
  112. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts +27 -0
  113. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -0
  114. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +242 -0
  115. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -0
  116. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  117. package/out/src/monitor/tasks/TaskReorg.js +4 -4
  118. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  119. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  120. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +31 -9
  121. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  122. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +18 -1
  123. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  124. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +99 -21
  125. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  126. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +33 -6
  127. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  128. package/out/src/monitor/tasks/TaskReviewUtxos.js +189 -13
  129. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  130. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  131. package/out/src/monitor/tasks/TaskSendWaiting.js +52 -11
  132. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  133. package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -0
  134. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  135. package/out/src/monitor/tasks/TaskUnFail.js +26 -8
  136. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  137. package/out/src/monitor/tasks/index.all.d.ts +2 -0
  138. package/out/src/monitor/tasks/index.all.d.ts.map +1 -1
  139. package/out/src/monitor/tasks/index.all.js +2 -0
  140. package/out/src/monitor/tasks/index.all.js.map +1 -1
  141. package/out/src/sdk/ActionBatch.interfaces.d.ts +23 -0
  142. package/out/src/sdk/ActionBatch.interfaces.d.ts.map +1 -1
  143. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  144. package/out/src/sdk/PrivilegedKeyManager.js +3 -2
  145. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  146. package/out/src/sdk/WERR_errors.d.ts +23 -0
  147. package/out/src/sdk/WERR_errors.d.ts.map +1 -1
  148. package/out/src/sdk/WERR_errors.js +51 -7
  149. package/out/src/sdk/WERR_errors.js.map +1 -1
  150. package/out/src/sdk/WalletError.d.ts.map +1 -1
  151. package/out/src/sdk/WalletError.js +7 -21
  152. package/out/src/sdk/WalletError.js.map +1 -1
  153. package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
  154. package/out/src/sdk/WalletErrorFromJson.js +121 -3
  155. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  156. package/out/src/sdk/WalletServices.interfaces.d.ts +45 -2
  157. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  158. package/out/src/sdk/WalletStorage.interfaces.d.ts +87 -4
  159. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  160. package/out/src/sdk/types.d.ts +3 -2
  161. package/out/src/sdk/types.d.ts.map +1 -1
  162. package/out/src/sdk/types.js +3 -2
  163. package/out/src/sdk/types.js.map +1 -1
  164. package/out/src/services/ServiceCollection.js +2 -2
  165. package/out/src/services/ServiceCollection.js.map +1 -1
  166. package/out/src/services/Services.d.ts +5 -0
  167. package/out/src/services/Services.d.ts.map +1 -1
  168. package/out/src/services/Services.js +346 -120
  169. package/out/src/services/Services.js.map +1 -1
  170. package/out/src/services/chaintracker/BHServiceClient.d.ts +21 -4
  171. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  172. package/out/src/services/chaintracker/BHServiceClient.js +269 -66
  173. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  174. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +25 -3
  175. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  176. package/out/src/services/chaintracker/ChaintracksChainTracker.js +188 -53
  177. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  178. package/out/src/services/chaintracker/LocalChainTracker.d.ts +122 -0
  179. package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -0
  180. package/out/src/services/chaintracker/LocalChainTracker.js +465 -0
  181. package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -0
  182. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  183. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +59 -7
  184. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  185. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.d.ts +48 -0
  186. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.d.ts.map +1 -0
  187. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.js +3 -0
  188. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.js.map +1 -0
  189. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts +70 -0
  190. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts.map +1 -0
  191. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js +21 -0
  192. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js.map +1 -0
  193. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +6 -0
  194. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
  195. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +53 -0
  196. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
  197. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +9 -2
  198. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -1
  199. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +9 -0
  200. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
  201. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +28 -3
  202. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  203. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +282 -64
  204. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  205. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +16 -0
  206. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  207. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +150 -26
  208. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  209. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +30 -1
  210. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  211. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +348 -30
  212. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  213. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +32 -1
  214. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  215. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +378 -44
  216. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
  217. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  218. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +28 -3
  219. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  220. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  221. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +33 -9
  222. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  223. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  224. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  225. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts.map +1 -1
  226. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +4 -2
  227. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -1
  228. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts +2 -0
  229. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  230. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +17 -4
  231. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  232. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +2 -0
  233. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  234. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +40 -20
  235. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  236. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +14 -0
  238. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  239. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +6 -0
  240. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
  241. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +56 -9
  242. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
  243. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  244. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +6 -3
  245. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  246. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +4 -0
  247. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  248. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +27 -9
  249. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  250. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +8 -0
  251. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  252. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +49 -5
  253. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  254. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +1 -1
  255. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  256. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +90 -21
  257. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  258. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -1
  259. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  260. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +185 -38
  261. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  262. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  263. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +59 -6
  264. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  265. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +2 -0
  266. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  267. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +89 -39
  268. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  269. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +10 -0
  270. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  271. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +230 -28
  272. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  273. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +2 -1
  274. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  275. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +265 -96
  276. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  277. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +3 -1
  278. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  279. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +240 -87
  280. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  281. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -0
  282. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  283. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +121 -35
  284. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  285. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +8 -0
  286. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
  287. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +6 -3
  288. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  289. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  290. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  291. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  292. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  293. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  294. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  295. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  296. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +1 -7
  297. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  298. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  299. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +1 -7
  300. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  301. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  302. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +1 -7
  303. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  304. package/out/src/services/chaintracker/chaintracks/index.all.d.ts +3 -0
  305. package/out/src/services/chaintracker/chaintracks/index.all.d.ts.map +1 -1
  306. package/out/src/services/chaintracker/chaintracks/index.all.js +3 -0
  307. package/out/src/services/chaintracker/chaintracks/index.all.js.map +1 -1
  308. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +5 -0
  309. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
  310. package/out/src/services/chaintracker/chaintracks/index.mobile.js +5 -0
  311. package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
  312. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +51 -0
  313. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -0
  314. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +394 -0
  315. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -0
  316. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +45 -1
  317. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  318. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +733 -166
  319. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  320. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  321. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +17 -1
  322. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  323. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts +32 -0
  324. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -0
  325. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +40 -0
  326. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -0
  327. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  328. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +99 -30
  329. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  330. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +3 -1
  331. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  332. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +23 -15
  333. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  334. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +38 -4
  335. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  336. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +191 -47
  337. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  338. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +2 -1
  339. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  340. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +57 -11
  341. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  342. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts +48 -0
  343. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -0
  344. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +280 -0
  345. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -0
  346. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts +30 -0
  347. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts.map +1 -0
  348. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js +57 -0
  349. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js.map +1 -0
  350. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  351. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  352. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts +14 -0
  353. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -0
  354. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +148 -0
  355. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -0
  356. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +41 -0
  357. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -0
  358. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +271 -0
  359. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -0
  360. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +3 -0
  361. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  362. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +15 -0
  363. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  364. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +17 -4
  365. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  366. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +362 -105
  367. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  368. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts +4 -0
  369. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts.map +1 -0
  370. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js +33 -0
  371. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js.map +1 -0
  372. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
  373. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  374. package/out/src/services/chaintracker/index.all.d.ts +1 -0
  375. package/out/src/services/chaintracker/index.all.d.ts.map +1 -1
  376. package/out/src/services/chaintracker/index.all.js +1 -0
  377. package/out/src/services/chaintracker/index.all.js.map +1 -1
  378. package/out/src/services/chaintracker/index.client.d.ts +1 -0
  379. package/out/src/services/chaintracker/index.client.d.ts.map +1 -1
  380. package/out/src/services/chaintracker/index.client.js +1 -0
  381. package/out/src/services/chaintracker/index.client.js.map +1 -1
  382. package/out/src/services/chaintracker/index.mobile.d.ts +1 -0
  383. package/out/src/services/chaintracker/index.mobile.d.ts.map +1 -1
  384. package/out/src/services/chaintracker/index.mobile.js +1 -0
  385. package/out/src/services/chaintracker/index.mobile.js.map +1 -1
  386. package/out/src/services/classifyOutputUtxo.d.ts +25 -0
  387. package/out/src/services/classifyOutputUtxo.d.ts.map +1 -0
  388. package/out/src/services/classifyOutputUtxo.js +96 -0
  389. package/out/src/services/classifyOutputUtxo.js.map +1 -0
  390. package/out/src/services/createDefaultWalletServicesOptions.d.ts +16 -3
  391. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  392. package/out/src/services/createDefaultWalletServicesOptions.js +38 -8
  393. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  394. package/out/src/services/fiatRateValidation.d.ts +12 -0
  395. package/out/src/services/fiatRateValidation.d.ts.map +1 -0
  396. package/out/src/services/fiatRateValidation.js +138 -0
  397. package/out/src/services/fiatRateValidation.js.map +1 -0
  398. package/out/src/services/getCanonicalMerklePath.d.ts +15 -0
  399. package/out/src/services/getCanonicalMerklePath.d.ts.map +1 -0
  400. package/out/src/services/getCanonicalMerklePath.js +90 -0
  401. package/out/src/services/getCanonicalMerklePath.js.map +1 -0
  402. package/out/src/services/providers/ARC.d.ts +3 -16
  403. package/out/src/services/providers/ARC.d.ts.map +1 -1
  404. package/out/src/services/providers/ARC.js +36 -37
  405. package/out/src/services/providers/ARC.js.map +1 -1
  406. package/out/src/services/providers/ArcSSEClient.d.ts +38 -23
  407. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  408. package/out/src/services/providers/ArcSSEClient.js +384 -63
  409. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  410. package/out/src/services/providers/Arcade.d.ts +11 -1
  411. package/out/src/services/providers/Arcade.d.ts.map +1 -1
  412. package/out/src/services/providers/Arcade.js +111 -33
  413. package/out/src/services/providers/Arcade.js.map +1 -1
  414. package/out/src/services/providers/Bitails.d.ts +3 -0
  415. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  416. package/out/src/services/providers/Bitails.js +79 -12
  417. package/out/src/services/providers/Bitails.js.map +1 -1
  418. package/out/src/services/providers/SdkWhatsOnChain.d.ts +8 -2
  419. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  420. package/out/src/services/providers/SdkWhatsOnChain.js +83 -10
  421. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  422. package/out/src/services/providers/WhatsOnChain.d.ts +3 -0
  423. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  424. package/out/src/services/providers/WhatsOnChain.js +221 -69
  425. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  426. package/out/src/services/providers/arcProviderConfig.d.ts +27 -0
  427. package/out/src/services/providers/arcProviderConfig.d.ts.map +1 -0
  428. package/out/src/services/providers/arcProviderConfig.js +83 -0
  429. package/out/src/services/providers/arcProviderConfig.js.map +1 -0
  430. package/out/src/services/providers/arcTxDataValidation.d.ts +4 -0
  431. package/out/src/services/providers/arcTxDataValidation.d.ts.map +1 -0
  432. package/out/src/services/providers/arcTxDataValidation.js +92 -0
  433. package/out/src/services/providers/arcTxDataValidation.js.map +1 -0
  434. package/out/src/services/providers/arcadeStatus.d.ts +18 -0
  435. package/out/src/services/providers/arcadeStatus.d.ts.map +1 -0
  436. package/out/src/services/providers/arcadeStatus.js +56 -0
  437. package/out/src/services/providers/arcadeStatus.js.map +1 -0
  438. package/out/src/services/providers/exchangeRates.d.ts +3 -3
  439. package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
  440. package/out/src/services/providers/exchangeRates.js +153 -226
  441. package/out/src/services/providers/exchangeRates.js.map +1 -1
  442. package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
  443. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  444. package/out/src/services/providers/whatsOnChainHelpers.d.ts +2 -2
  445. package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -1
  446. package/out/src/services/providers/whatsOnChainHelpers.js +11 -8
  447. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
  448. package/out/src/services/validateMerklePathResult.d.ts +30 -0
  449. package/out/src/services/validateMerklePathResult.d.ts.map +1 -0
  450. package/out/src/services/validateMerklePathResult.js +272 -0
  451. package/out/src/services/validateMerklePathResult.js.map +1 -0
  452. package/out/src/services/validatePostBeefResult.d.ts +17 -0
  453. package/out/src/services/validatePostBeefResult.d.ts.map +1 -0
  454. package/out/src/services/validatePostBeefResult.js +334 -0
  455. package/out/src/services/validatePostBeefResult.js.map +1 -0
  456. package/out/src/services/validateRawTxResult.d.ts +6 -0
  457. package/out/src/services/validateRawTxResult.d.ts.map +1 -0
  458. package/out/src/services/validateRawTxResult.js +77 -0
  459. package/out/src/services/validateRawTxResult.js.map +1 -0
  460. package/out/src/services/validateScriptHashHistoryResult.d.ts +5 -0
  461. package/out/src/services/validateScriptHashHistoryResult.d.ts.map +1 -0
  462. package/out/src/services/validateScriptHashHistoryResult.js +99 -0
  463. package/out/src/services/validateScriptHashHistoryResult.js.map +1 -0
  464. package/out/src/services/validateStatusForTxidsResult.d.ts +8 -0
  465. package/out/src/services/validateStatusForTxidsResult.d.ts.map +1 -0
  466. package/out/src/services/validateStatusForTxidsResult.js +181 -0
  467. package/out/src/services/validateStatusForTxidsResult.js.map +1 -0
  468. package/out/src/services/validateUtxoStatusResult.d.ts +6 -0
  469. package/out/src/services/validateUtxoStatusResult.d.ts.map +1 -0
  470. package/out/src/services/validateUtxoStatusResult.js +126 -0
  471. package/out/src/services/validateUtxoStatusResult.js.map +1 -0
  472. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
  473. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
  474. package/out/src/signer/actionBatch/ActionBatchPlanner.js +29 -6
  475. package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
  476. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +8 -5
  477. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
  478. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +186 -73
  479. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
  480. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +2 -2
  481. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -1
  482. package/out/src/signer/actionBatch/actionBatchBootstrap.js +3 -3
  483. package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -1
  484. package/out/src/signer/methods/acquireDirectCertificate.d.ts +3 -2
  485. package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
  486. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  487. package/out/src/signer/methods/buildSignableTransaction.d.ts +6 -5
  488. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  489. package/out/src/signer/methods/buildSignableTransaction.js +6 -11
  490. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  491. package/out/src/signer/methods/createAction.d.ts +35 -3
  492. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  493. package/out/src/signer/methods/createAction.js +50 -2
  494. package/out/src/signer/methods/createAction.js.map +1 -1
  495. package/out/src/signer/methods/createNoSendExpiryAction.d.ts +7 -0
  496. package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -0
  497. package/out/src/signer/methods/createNoSendExpiryAction.js +254 -0
  498. package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -0
  499. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  500. package/out/src/signer/methods/internalizeAction.js +9 -5
  501. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  502. package/out/src/signer/methods/proveCertificate.d.ts +3 -2
  503. package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
  504. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  505. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  506. package/out/src/signer/methods/signAction.js +20 -3
  507. package/out/src/signer/methods/signAction.js.map +1 -1
  508. package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -1
  509. package/out/src/signer/methods/verifyUnlockScripts.js +12 -17
  510. package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -1
  511. package/out/src/storage/StorageIdb.d.ts +11 -3
  512. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  513. package/out/src/storage/StorageIdb.js +134 -44
  514. package/out/src/storage/StorageIdb.js.map +1 -1
  515. package/out/src/storage/StorageKnex.d.ts +68 -7
  516. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  517. package/out/src/storage/StorageKnex.js +551 -105
  518. package/out/src/storage/StorageKnex.js.map +1 -1
  519. package/out/src/storage/StorageProvider.d.ts +41 -10
  520. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  521. package/out/src/storage/StorageProvider.js +397 -107
  522. package/out/src/storage/StorageProvider.js.map +1 -1
  523. package/out/src/storage/StorageReader.d.ts +9 -3
  524. package/out/src/storage/StorageReader.d.ts.map +1 -1
  525. package/out/src/storage/StorageReader.js +21 -43
  526. package/out/src/storage/StorageReader.js.map +1 -1
  527. package/out/src/storage/StorageReaderWriter.d.ts +4 -0
  528. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  529. package/out/src/storage/StorageReaderWriter.js +68 -38
  530. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  531. package/out/src/storage/StorageSyncReader.d.ts +1 -1
  532. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  533. package/out/src/storage/StorageSyncReader.js +3 -36
  534. package/out/src/storage/StorageSyncReader.js.map +1 -1
  535. package/out/src/storage/WalletStorageManager.d.ts +31 -6
  536. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  537. package/out/src/storage/WalletStorageManager.js +166 -75
  538. package/out/src/storage/WalletStorageManager.js.map +1 -1
  539. package/out/src/storage/adminServer/adminServer.d.ts +3 -1
  540. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  541. package/out/src/storage/adminServer/adminServer.js +38 -49
  542. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  543. package/out/src/storage/adminServer/adminUi.d.ts.map +1 -1
  544. package/out/src/storage/adminServer/adminUi.js +32 -9
  545. package/out/src/storage/adminServer/adminUi.js.map +1 -1
  546. package/out/src/storage/adminServer/reviewUtxos.d.ts +27 -0
  547. package/out/src/storage/adminServer/reviewUtxos.d.ts.map +1 -0
  548. package/out/src/storage/adminServer/reviewUtxos.js +62 -0
  549. package/out/src/storage/adminServer/reviewUtxos.js.map +1 -0
  550. package/out/src/storage/idbHelpers.d.ts.map +1 -1
  551. package/out/src/storage/idbHelpers.js +14 -2
  552. package/out/src/storage/idbHelpers.js.map +1 -1
  553. package/out/src/storage/index.all.d.ts +3 -0
  554. package/out/src/storage/index.all.d.ts.map +1 -1
  555. package/out/src/storage/index.all.js +3 -0
  556. package/out/src/storage/index.all.js.map +1 -1
  557. package/out/src/storage/index.client.d.ts +1 -0
  558. package/out/src/storage/index.client.d.ts.map +1 -1
  559. package/out/src/storage/index.client.js +1 -0
  560. package/out/src/storage/index.client.js.map +1 -1
  561. package/out/src/storage/index.mobile.d.ts +1 -0
  562. package/out/src/storage/index.mobile.d.ts.map +1 -1
  563. package/out/src/storage/index.mobile.js +1 -0
  564. package/out/src/storage/index.mobile.js.map +1 -1
  565. package/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
  566. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  567. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  568. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +7 -4
  569. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  570. package/out/src/storage/methods/ListOutputsSpecOp.js +5 -44
  571. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  572. package/out/src/storage/methods/actionBatch.d.ts +9 -2
  573. package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
  574. package/out/src/storage/methods/actionBatch.js +260 -67
  575. package/out/src/storage/methods/actionBatch.js.map +1 -1
  576. package/out/src/storage/methods/actionBatchBlobs.d.ts +2 -0
  577. package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
  578. package/out/src/storage/methods/actionBatchBlobs.js +47 -26
  579. package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
  580. package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
  581. package/out/src/storage/methods/actionBatchValidation.js +22 -30
  582. package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
  583. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +7 -2
  584. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  585. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +59 -110
  586. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  587. package/out/src/storage/methods/availableManagedChange.d.ts +8 -1
  588. package/out/src/storage/methods/availableManagedChange.d.ts.map +1 -1
  589. package/out/src/storage/methods/availableManagedChange.js.map +1 -1
  590. package/out/src/storage/methods/createAction.d.ts +60 -3
  591. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  592. package/out/src/storage/methods/createAction.js +396 -106
  593. package/out/src/storage/methods/createAction.js.map +1 -1
  594. package/out/src/storage/methods/generateChange.d.ts +21 -5
  595. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  596. package/out/src/storage/methods/generateChange.js +194 -27
  597. package/out/src/storage/methods/generateChange.js.map +1 -1
  598. package/out/src/storage/methods/getBeefForTransaction.js +5 -7
  599. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  600. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  601. package/out/src/storage/methods/getSyncChunk.js +42 -11
  602. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  603. package/out/src/storage/methods/internalizeAction.d.ts +3 -3
  604. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  605. package/out/src/storage/methods/internalizeAction.js +171 -133
  606. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  607. package/out/src/storage/methods/listActionsIdb.d.ts +3 -2
  608. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  609. package/out/src/storage/methods/listActionsIdb.js +2 -2
  610. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  611. package/out/src/storage/methods/listActionsKnex.d.ts +3 -2
  612. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
  613. package/out/src/storage/methods/listActionsKnex.js +22 -11
  614. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  615. package/out/src/storage/methods/listCertificates.d.ts +3 -2
  616. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  617. package/out/src/storage/methods/listCertificates.js.map +1 -1
  618. package/out/src/storage/methods/listOutputsIdb.d.ts +3 -2
  619. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  620. package/out/src/storage/methods/listOutputsIdb.js +25 -18
  621. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  622. package/out/src/storage/methods/listOutputsKnex.d.ts +3 -2
  623. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  624. package/out/src/storage/methods/listOutputsKnex.js +33 -31
  625. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  626. package/out/src/storage/methods/managedChangePolicy.d.ts +44 -0
  627. package/out/src/storage/methods/managedChangePolicy.d.ts.map +1 -0
  628. package/out/src/storage/methods/managedChangePolicy.js +58 -0
  629. package/out/src/storage/methods/managedChangePolicy.js.map +1 -0
  630. package/out/src/storage/methods/maxPossibleSatoshis.d.ts +13 -0
  631. package/out/src/storage/methods/maxPossibleSatoshis.d.ts.map +1 -0
  632. package/out/src/storage/methods/maxPossibleSatoshis.js +16 -0
  633. package/out/src/storage/methods/maxPossibleSatoshis.js.map +1 -0
  634. package/out/src/storage/methods/noSendExpiry.d.ts +11 -0
  635. package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -0
  636. package/out/src/storage/methods/noSendExpiry.js +369 -0
  637. package/out/src/storage/methods/noSendExpiry.js.map +1 -0
  638. package/out/src/storage/methods/noSendExpiryLifecycle.d.ts +14 -0
  639. package/out/src/storage/methods/noSendExpiryLifecycle.d.ts.map +1 -0
  640. package/out/src/storage/methods/noSendExpiryLifecycle.js +691 -0
  641. package/out/src/storage/methods/noSendExpiryLifecycle.js.map +1 -0
  642. package/out/src/storage/methods/preparedBeef.d.ts +104 -0
  643. package/out/src/storage/methods/preparedBeef.d.ts.map +1 -0
  644. package/out/src/storage/methods/preparedBeef.js +524 -0
  645. package/out/src/storage/methods/preparedBeef.js.map +1 -0
  646. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  647. package/out/src/storage/methods/processAction.js +144 -32
  648. package/out/src/storage/methods/processAction.js.map +1 -1
  649. package/out/src/storage/methods/purgeData.d.ts.map +1 -1
  650. package/out/src/storage/methods/purgeData.js +21 -3
  651. package/out/src/storage/methods/purgeData.js.map +1 -1
  652. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +32 -0
  653. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -0
  654. package/out/src/storage/methods/reconcileFailedTransactionInputs.js +142 -0
  655. package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -0
  656. package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
  657. package/out/src/storage/methods/reviewStatus.js +7 -4
  658. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  659. package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
  660. package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
  661. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  662. package/out/src/storage/methods/reviewUtxoOutputs.d.ts +38 -0
  663. package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -0
  664. package/out/src/storage/methods/reviewUtxoOutputs.js +197 -0
  665. package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -0
  666. package/out/src/storage/methods/validateSyncProof.d.ts +32 -0
  667. package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -0
  668. package/out/src/storage/methods/validateSyncProof.js +139 -0
  669. package/out/src/storage/methods/validateSyncProof.js.map +1 -0
  670. package/out/src/storage/portable/index.d.ts.map +1 -1
  671. package/out/src/storage/portable/index.js +25 -15
  672. package/out/src/storage/portable/index.js.map +1 -1
  673. package/out/src/storage/remoting/BinaryJson.d.ts +11 -0
  674. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
  675. package/out/src/storage/remoting/BinaryJson.js +94 -8
  676. package/out/src/storage/remoting/BinaryJson.js.map +1 -1
  677. package/out/src/storage/remoting/KnexPaymentReplayStore.d.ts.map +1 -1
  678. package/out/src/storage/remoting/KnexPaymentReplayStore.js +1 -0
  679. package/out/src/storage/remoting/KnexPaymentReplayStore.js.map +1 -1
  680. package/out/src/storage/remoting/KnexSessionManager.d.ts +26 -2
  681. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
  682. package/out/src/storage/remoting/KnexSessionManager.js +221 -40
  683. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
  684. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts +26 -0
  685. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -0
  686. package/out/src/storage/remoting/KnexSyncTransferStore.js +222 -0
  687. package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -0
  688. package/out/src/storage/remoting/StorageClient.d.ts +6 -1
  689. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  690. package/out/src/storage/remoting/StorageClient.js +65 -8
  691. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  692. package/out/src/storage/remoting/StorageClientBase.d.ts +57 -10
  693. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  694. package/out/src/storage/remoting/StorageClientBase.js +382 -10
  695. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  696. package/out/src/storage/remoting/StorageMobile.d.ts +5 -0
  697. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  698. package/out/src/storage/remoting/StorageMobile.js +13 -11
  699. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  700. package/out/src/storage/remoting/StorageServer.d.ts +10 -1
  701. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  702. package/out/src/storage/remoting/StorageServer.js +232 -20
  703. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  704. package/out/src/storage/remoting/SyncTransfer.d.ts +29 -0
  705. package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -0
  706. package/out/src/storage/remoting/SyncTransfer.js +153 -0
  707. package/out/src/storage/remoting/SyncTransfer.js.map +1 -0
  708. package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
  709. package/out/src/storage/remoting/entityValidationHelpers.js +35 -0
  710. package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
  711. package/out/src/storage/remoting/syncChunkBinary.d.ts +14 -0
  712. package/out/src/storage/remoting/syncChunkBinary.d.ts.map +1 -0
  713. package/out/src/storage/remoting/syncChunkBinary.js +42 -0
  714. package/out/src/storage/remoting/syncChunkBinary.js.map +1 -0
  715. package/out/src/storage/remoting/validateRpcSyncProofs.d.ts +5 -0
  716. package/out/src/storage/remoting/validateRpcSyncProofs.d.ts.map +1 -0
  717. package/out/src/storage/remoting/validateRpcSyncProofs.js +82 -0
  718. package/out/src/storage/remoting/validateRpcSyncProofs.js.map +1 -0
  719. package/out/src/storage/schema/KnexMigrations.d.ts +6 -0
  720. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  721. package/out/src/storage/schema/KnexMigrations.js +194 -5
  722. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  723. package/out/src/storage/schema/StorageIdbSchema.d.ts +3 -0
  724. package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
  725. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  726. package/out/src/storage/schema/entities/EntityOutput.js +24 -4
  727. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  728. package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
  729. package/out/src/storage/schema/entities/EntityOutputBasket.js +5 -2
  730. package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
  731. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +4 -1
  732. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  733. package/out/src/storage/schema/entities/EntityProvenTx.js +125 -41
  734. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  735. package/out/src/storage/schema/entities/EntityProvenTxReq.js +1 -1
  736. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  737. package/out/src/storage/schema/entities/EntitySyncState.d.ts +4 -2
  738. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  739. package/out/src/storage/schema/entities/EntitySyncState.js +12 -6
  740. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  741. package/out/src/storage/schema/entities/EntityTransaction.d.ts +26 -0
  742. package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
  743. package/out/src/storage/schema/entities/EntityTransaction.js +221 -21
  744. package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
  745. package/out/src/storage/schema/tables/TableCertificate.d.ts +1 -1
  746. package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
  747. package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
  748. package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
  749. package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
  750. package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
  751. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
  752. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
  753. package/out/src/storage/schema/tables/TableOutput.d.ts +1 -1
  754. package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
  755. package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
  756. package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
  757. package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
  758. package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
  759. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
  760. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
  761. package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.d.ts +23 -0
  762. package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.d.ts.map +1 -0
  763. package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.js +3 -0
  764. package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.js.map +1 -0
  765. package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
  766. package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
  767. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +1 -1
  768. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
  769. package/out/src/storage/schema/tables/TableSettings.d.ts +2 -2
  770. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  771. package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
  772. package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
  773. package/out/src/storage/schema/tables/TableTransaction.d.ts +17 -1
  774. package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
  775. package/out/src/storage/schema/tables/TableTransaction.js +14 -1
  776. package/out/src/storage/schema/tables/TableTransaction.js.map +1 -1
  777. package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
  778. package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
  779. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
  780. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
  781. package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
  782. package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
  783. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  784. package/out/src/storage/sync/StorageMySQLDojoReader.js +8 -7
  785. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  786. package/out/src/storage/sync/SyncPageBudget.d.ts +8 -0
  787. package/out/src/storage/sync/SyncPageBudget.d.ts.map +1 -0
  788. package/out/src/storage/sync/SyncPageBudget.js +24 -0
  789. package/out/src/storage/sync/SyncPageBudget.js.map +1 -0
  790. package/out/src/storage/sync/syncCheckpoint.d.ts +4 -0
  791. package/out/src/storage/sync/syncCheckpoint.d.ts.map +1 -0
  792. package/out/src/storage/sync/syncCheckpoint.js +49 -0
  793. package/out/src/storage/sync/syncCheckpoint.js.map +1 -0
  794. package/out/src/utility/Argon2idBackend.d.ts +36 -0
  795. package/out/src/utility/Argon2idBackend.d.ts.map +1 -0
  796. package/out/src/utility/Argon2idBackend.js +60 -0
  797. package/out/src/utility/Argon2idBackend.js.map +1 -0
  798. package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
  799. package/out/src/utility/actionBatchDigest.js +9 -7
  800. package/out/src/utility/actionBatchDigest.js.map +1 -1
  801. package/out/src/utility/actionBatchPack.d.ts.map +1 -1
  802. package/out/src/utility/actionBatchPack.js +7 -12
  803. package/out/src/utility/actionBatchPack.js.map +1 -1
  804. package/out/src/utility/beefForTxids.d.ts +12 -3
  805. package/out/src/utility/beefForTxids.d.ts.map +1 -1
  806. package/out/src/utility/beefForTxids.js +69 -21
  807. package/out/src/utility/beefForTxids.js.map +1 -1
  808. package/out/src/utility/brc153ReferenceLabels.d.ts +16 -0
  809. package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
  810. package/out/src/utility/brc153ReferenceLabels.js +20 -5
  811. package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
  812. package/out/src/utility/brc177NoSendExpiry.d.ts +34 -0
  813. package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -0
  814. package/out/src/utility/brc177NoSendExpiry.js +81 -0
  815. package/out/src/utility/brc177NoSendExpiry.js.map +1 -0
  816. package/out/src/utility/canonicalizeAtomicBeef.d.ts +12 -0
  817. package/out/src/utility/canonicalizeAtomicBeef.d.ts.map +1 -0
  818. package/out/src/utility/canonicalizeAtomicBeef.js +23 -0
  819. package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -0
  820. package/out/src/utility/exactActionSpend.d.ts +9 -0
  821. package/out/src/utility/exactActionSpend.d.ts.map +1 -0
  822. package/out/src/utility/exactActionSpend.js +26 -0
  823. package/out/src/utility/exactActionSpend.js.map +1 -0
  824. package/out/src/utility/hashWasm.d.ts +1 -1
  825. package/out/src/utility/hashWasm.d.ts.map +1 -1
  826. package/out/src/utility/hashWasm.js +83 -1
  827. package/out/src/utility/hashWasm.js.map +1 -1
  828. package/out/src/utility/identityUtils.d.ts +44 -4
  829. package/out/src/utility/identityUtils.d.ts.map +1 -1
  830. package/out/src/utility/identityUtils.js +523 -61
  831. package/out/src/utility/identityUtils.js.map +1 -1
  832. package/out/src/utility/index.all.d.ts +2 -0
  833. package/out/src/utility/index.all.d.ts.map +1 -1
  834. package/out/src/utility/index.all.js +2 -0
  835. package/out/src/utility/index.all.js.map +1 -1
  836. package/out/src/utility/index.client.d.ts +2 -0
  837. package/out/src/utility/index.client.d.ts.map +1 -1
  838. package/out/src/utility/index.client.js +2 -0
  839. package/out/src/utility/index.client.js.map +1 -1
  840. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  841. package/out/src/utility/parseTxScriptOffsets.js +1 -19
  842. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  843. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  844. package/out/src/utility/tscProofToMerklePath.js +35 -4
  845. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  846. package/out/src/utility/utilityHelpers.d.ts +1 -1
  847. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  848. package/out/src/utility/utilityHelpers.js +10 -7
  849. package/out/src/utility/utilityHelpers.js.map +1 -1
  850. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  851. package/out/src/utility/utilityHelpers.noBuffer.js +6 -6
  852. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  853. package/out/src/utility/verifyOverlayOutput.d.ts +12 -0
  854. package/out/src/utility/verifyOverlayOutput.d.ts.map +1 -0
  855. package/out/src/utility/verifyOverlayOutput.js +22 -0
  856. package/out/src/utility/verifyOverlayOutput.js.map +1 -0
  857. package/out/src/utility/walletResultGuards.d.ts +14 -0
  858. package/out/src/utility/walletResultGuards.d.ts.map +1 -0
  859. package/out/src/utility/walletResultGuards.js +28 -0
  860. package/out/src/utility/walletResultGuards.js.map +1 -0
  861. package/out/src/wab-client/WABClient.d.ts +4 -17
  862. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  863. package/out/src/wab-client/WABClient.js +35 -12
  864. package/out/src/wab-client/WABClient.js.map +1 -1
  865. package/out/src/wab-client/WABResponseValidation.d.ts +48 -0
  866. package/out/src/wab-client/WABResponseValidation.d.ts.map +1 -0
  867. package/out/src/wab-client/WABResponseValidation.js +321 -0
  868. package/out/src/wab-client/WABResponseValidation.js.map +1 -0
  869. package/out/src/wab-client/WABTransport.d.ts +17 -23
  870. package/out/src/wab-client/WABTransport.d.ts.map +1 -1
  871. package/out/src/wab-client/WABTransport.js +130 -142
  872. package/out/src/wab-client/WABTransport.js.map +1 -1
  873. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +8 -0
  874. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  875. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -2
  876. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  877. package/package.json +45 -41
  878. package/docs/open-rpc/index.html +0 -46
@@ -2,7 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setDisableDoubleSpendCheckForTest = setDisableDoubleSpendCheckForTest;
4
4
  exports.createAction = createAction;
5
+ exports.validateRequiredOutputs = validateRequiredOutputs;
6
+ exports.validateRequiredInputs = validateRequiredInputs;
7
+ const validationHelpers_1 = require("@bsv/sdk/wallet/validationHelpers");
5
8
  const sdk_1 = require("@bsv/sdk");
9
+ const utils_1 = require("@bsv/sdk/primitives/utils");
6
10
  const generateChange_1 = require("./generateChange");
7
11
  const StorageProvider_1 = require("../StorageProvider");
8
12
  const WERR_errors_1 = require("../../sdk/WERR_errors");
@@ -14,6 +18,7 @@ const offsetKey_1 = require("./offsetKey");
14
18
  const sdk_2 = require("../../sdk");
15
19
  const managedChange_1 = require("./managedChange");
16
20
  const actionPlanning_1 = require("./actionPlanning");
21
+ const beefForTxids_1 = require("../../utility/beefForTxids");
17
22
  let disableDoubleSpendCheckForTest = true;
18
23
  function setDisableDoubleSpendCheckForTest(v) {
19
24
  disableDoubleSpendCheckForTest = v;
@@ -49,6 +54,9 @@ async function createActionCore(storage, auth, vargs, parent) {
49
54
  // stampLog(vargs, `start storage createTransactionSdk`)
50
55
  if (vargs.isTestWerrReviewActions)
51
56
  (0, Wallet_1.throwDummyReviewActions)();
57
+ if (vargs.brc177 != null && auth.isActive !== true) {
58
+ throw new WERR_errors_1.WERR_NOT_ACTIVE('BRC-177 requires the active storage provider');
59
+ }
52
60
  if (!vargs.isNewTx)
53
61
  // The purpose of this function is to create the initial storage records associated
54
62
  // with a new transaction. It's an error if we have no new inputs or outputs...
@@ -68,7 +76,7 @@ async function createActionCore(storage, auth, vargs, parent) {
68
76
  * - Create result inputs with source locking scripts
69
77
  * - Create result outputs with new locking scripts.
70
78
  * - Create and return result.
71
- */
79
+ */
72
80
  const userId = auth.userId;
73
81
  const validated = await traceStorageStep(storage, 'wallet.storage.create_action.validate', parent, {
74
82
  'action.fixed_input_count': vargs.inputs.length,
@@ -98,13 +106,14 @@ async function createActionCore(storage, auth, vargs, parent) {
98
106
  const { storageBeef, beef, xinputs, xoutputs, changeBasket, noSendChangeIn } = validated;
99
107
  const feeModel = (0, StorageProvider_1.validateStorageFeeModel)(storage.feeModel);
100
108
  logger?.log(`validated fee model ${JSON.stringify(feeModel)}`);
101
- const initialFundingPlan = await prepareFundingPlan(storage, [userId, vargs, xinputs, xoutputs, changeBasket, noSendChangeIn, feeModel, parent]);
109
+ const initialFundingPlan = await prepareFundingPlanWithLiquidityPolicy(storage, [userId, vargs, xinputs, xoutputs, changeBasket, noSendChangeIn, feeModel], parent);
110
+ validateBrc177FundingPlan(vargs, initialFundingPlan);
102
111
  logger?.log(`planned funding from ${initialFundingPlan.availableChangeCount} change inputs`);
103
112
  // The selected source txids are known before the write transaction begins.
104
113
  // Start their one batched proof read now so PXC/network wait and BEEF
105
114
  // assembly overlap the independent transaction-record/funding/output writes.
106
115
  // A funding-claim retry is handled below by fetching only any residual roots.
107
- const allocatedBeefPrefetch = startAllocatedChangeBeefPrefetch(storage, vargs, initialFundingPlan.selected, beef, parent);
116
+ const allocatedBeefPrefetch = startAllocatedChangeBeefPrefetch(storage, userId, vargs, initialFundingPlan.selected, beef, parent);
108
117
  const storageBeefBytes = storageBeef.toBinary();
109
118
  let newTx;
110
119
  let newTxCommitted = false;
@@ -137,7 +146,11 @@ async function createActionCore(storage, auth, vargs, parent) {
137
146
  ctx.xoutputs[adjustment.fixedOutputIndex].satoshis = adjustment.satoshis;
138
147
  logger?.log('adjusted change outputs to max possible');
139
148
  }
140
- const satoshis = funded.changeOutputs.reduce((sum, output) => sum + output.satoshis, 0) -
149
+ const fixedManagedChangeSatoshis = ctx.xoutputs
150
+ .filter(output => output.purpose === 'change')
151
+ .reduce((sum, output) => sum + output.satoshis, 0);
152
+ const satoshis = fixedManagedChangeSatoshis +
153
+ funded.changeOutputs.reduce((sum, output) => sum + output.satoshis, 0) -
141
154
  funded.allocatedChange.reduce((sum, output) => sum + output.satoshis, 0);
142
155
  if (satoshis !== initialSatoshis) {
143
156
  await storage.updateTransaction(newTx.transactionId, { satoshis }, trx);
@@ -157,7 +170,7 @@ async function createActionCore(storage, auth, vargs, parent) {
157
170
  const committedTx = (0, utilityHelpers_1.verifyTruthy)(newTx);
158
171
  const { allocatedChange, derivationPrefix, outputs, changeVouts, ctx } = persisted;
159
172
  logger?.log('created new output records');
160
- const inputBeef = await mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef, allocatedBeefPrefetch, parent);
173
+ const preparedInputBeef = await mergeAllocatedChangeBeefs(storage, userId, vargs, allocatedChange, beef, allocatedBeefPrefetch, parent);
161
174
  logger?.log('merged allocated change beefs');
162
175
  const inputs = await traceStorageStep(storage, 'wallet.storage.create_action.assemble_inputs', parent, {
163
176
  'action.fixed_input_count': ctx.xinputs.length,
@@ -176,9 +189,13 @@ async function createActionCore(storage, auth, vargs, parent) {
176
189
  inputs,
177
190
  outputs,
178
191
  derivationPrefix,
179
- inputBeef,
192
+ inputBeef: preparedInputBeef.inputBeef,
180
193
  noSendChangeOutputVouts: vargs.isNoSend ? changeVouts : undefined
181
194
  };
195
+ // This is intentionally the last foreground operation. The coordinator
196
+ // starts on a timer, so the createAction promise and HTTP response can
197
+ // resolve before any COOK verification or persistence begins.
198
+ enqueuePreparedBeefs(storage, preparedInputBeef.preparations);
182
199
  logger?.groupEnd();
183
200
  return r;
184
201
  }
@@ -267,9 +284,10 @@ async function markKnownInputsSpent(storage, knownInputRows, transactionId) {
267
284
  async function buildSdkInputFromOutput(storage, vargs, vin, i, o, unlockLen) {
268
285
  if (i == null && !unlockLen)
269
286
  throw new WERR_errors_1.WERR_INTERNAL(`vin ${vin} non-fixedInput without unlockLen`);
270
- const sourceTransaction = vargs.includeAllSourceTransactions && vargs.isSignAction
287
+ const sourceRawTx = vargs.includeAllSourceTransactions && vargs.isSignAction
271
288
  ? await storage.getRawTxOfKnownValidTransaction(o.txid)
272
289
  : undefined;
290
+ const sourceTransaction = sourceRawTx == null ? undefined : Uint8Array.from(sourceRawTx);
273
291
  return {
274
292
  vin,
275
293
  sourceTxid: o.txid,
@@ -351,7 +369,7 @@ function describeNewOutput(o, tags, txBaskets) {
351
369
  const changeVout = o.change && o.purpose === 'change' && o.providedBy === 'storage' ? o.vout : undefined;
352
370
  const ro = {
353
371
  vout: (0, utilityHelpers_1.verifyInteger)(o.vout),
354
- satoshis: sdk_1.Validation.validateSatoshis(o.satoshis, 'o.satoshis'),
372
+ satoshis: (0, validationHelpers_1.validateSatoshis)(o.satoshis, 'o.satoshis'),
355
373
  lockingScript: o.lockingScript == null ? '' : (0, utilityHelpers_noBuffer_1.asString)(o.lockingScript),
356
374
  providedBy: (0, utilityHelpers_1.verifyTruthy)(o.providedBy),
357
375
  purpose: o.purpose || undefined,
@@ -378,6 +396,49 @@ async function persistNewOutput(storage, o, tags, txTags, txBaskets, trx) {
378
396
  }
379
397
  return describeNewOutput(o, tags, txBaskets);
380
398
  }
399
+ async function createRequiredOutput(storage, userId, xo, ctx, txBaskets, trx) {
400
+ const o = makeDefaultOutput(userId, ctx.transactionId, xo.satoshis, xo.vout);
401
+ if (xo.purpose === 'service-charge') {
402
+ const lockingScript = (0, utilityHelpers_noBuffer_1.asArray)(xo.lockingScript);
403
+ const now = new Date();
404
+ await storage.insertCommission({
405
+ userId,
406
+ transactionId: ctx.transactionId,
407
+ lockingScript,
408
+ satoshis: xo.satoshis,
409
+ isRedeemed: false,
410
+ keyOffset: (0, utilityHelpers_1.verifyTruthy)(xo.keyOffset),
411
+ created_at: now,
412
+ updated_at: now,
413
+ commissionId: 0
414
+ }, trx);
415
+ o.lockingScript = lockingScript;
416
+ o.providedBy = 'storage';
417
+ o.purpose = 'storage-commission';
418
+ o.type = 'custom';
419
+ o.spendable = false;
420
+ return { o, tags: [] };
421
+ }
422
+ if (xo.purpose === 'change') {
423
+ o.basketId = ctx.changeBasket.basketId;
424
+ o.change = true;
425
+ o.derivationPrefix = (0, utilityHelpers_1.verifyTruthy)(ctx.derivationPrefix);
426
+ o.derivationSuffix = (0, utilityHelpers_1.verifyTruthy)(xo.derivationSuffix);
427
+ o.providedBy = 'storage';
428
+ o.purpose = 'change';
429
+ o.type = 'P2PKH';
430
+ o.spendable = true;
431
+ return { o, tags: [] };
432
+ }
433
+ o.lockingScript = (0, utilityHelpers_noBuffer_1.asArray)(xo.lockingScript);
434
+ o.basketId = xo.basket ? txBaskets[xo.basket].basketId : undefined;
435
+ o.customInstructions = xo.customInstructions;
436
+ o.outputDescription = xo.outputDescription;
437
+ o.providedBy = xo.providedBy;
438
+ o.purpose = xo.purpose || '';
439
+ o.type = 'custom';
440
+ return { o, tags: xo.tags };
441
+ }
381
442
  async function createNewOutputs(storage, userId, vargs, ctx, changeOutputs, trx) {
382
443
  const txBaskets = {};
383
444
  const basketNames = [...new Set(ctx.xoutputs.map(x => x.basket).filter((v) => !!v))];
@@ -387,39 +448,7 @@ async function createNewOutputs(storage, userId, vargs, ctx, changeOutputs, trx)
387
448
  Object.assign(txTags, await storage.findOrInsertOutputTagsBulk(userId, tagNames, trx));
388
449
  const newOutputs = [];
389
450
  for (const xo of ctx.xoutputs) {
390
- const lockingScript = (0, utilityHelpers_noBuffer_1.asArray)(xo.lockingScript);
391
- if (xo.purpose === 'service-charge') {
392
- const now = new Date();
393
- await storage.insertCommission({
394
- userId,
395
- transactionId: ctx.transactionId,
396
- lockingScript,
397
- satoshis: xo.satoshis,
398
- isRedeemed: false,
399
- keyOffset: (0, utilityHelpers_1.verifyTruthy)(xo.keyOffset),
400
- created_at: now,
401
- updated_at: now,
402
- commissionId: 0
403
- }, trx);
404
- const o = makeDefaultOutput(userId, ctx.transactionId, xo.satoshis, xo.vout);
405
- o.lockingScript = lockingScript;
406
- o.providedBy = 'storage';
407
- o.purpose = 'storage-commission';
408
- o.type = 'custom';
409
- o.spendable = false;
410
- newOutputs.push({ o, tags: [] });
411
- }
412
- else {
413
- const o = makeDefaultOutput(userId, ctx.transactionId, xo.satoshis, xo.vout);
414
- o.lockingScript = lockingScript;
415
- o.basketId = xo.basket ? txBaskets[xo.basket].basketId : undefined;
416
- o.customInstructions = xo.customInstructions;
417
- o.outputDescription = xo.outputDescription;
418
- o.providedBy = xo.providedBy;
419
- o.purpose = xo.purpose || '';
420
- o.type = 'custom';
421
- newOutputs.push({ o, tags: xo.tags });
422
- }
451
+ newOutputs.push(await createRequiredOutput(storage, userId, xo, ctx, txBaskets, trx));
423
452
  }
424
453
  for (const o of changeOutputs) {
425
454
  o.spendable = true;
@@ -463,6 +492,15 @@ async function createNewTxRecord(storage, userId, vargs, storageBeef, satoshis =
463
492
  txid: undefined,
464
493
  rawTx: undefined
465
494
  };
495
+ const brc177 = vargs.brc177;
496
+ if (brc177?.kind === 'protected') {
497
+ newTx.noSendExpiryMode = brc177.expiry.mode;
498
+ newTx.noSendExpiryValue = brc177.expiry.value;
499
+ newTx.noSendExpiryDeadline = brc177.deadline;
500
+ newTx.noSendExpiryState = 'preparing';
501
+ newTx.noSendExpiryAnchorTxid = brc177.anchorTxid;
502
+ newTx.noSendExpiryAnchorVout = brc177.anchorVout;
503
+ }
466
504
  newTx.transactionId = await storage.insertTransaction(newTx, trx);
467
505
  const labelNames = [...new Set(vargs.labels)];
468
506
  const labels = await storage.findOrInsertTxLabelsBulk(userId, labelNames, trx);
@@ -524,6 +562,22 @@ function validateRequiredOutputs(storage, userId, vargs) {
524
562
  keyOffset
525
563
  });
526
564
  }
565
+ const brc177 = vargs.brc177;
566
+ if (brc177?.kind === 'funding') {
567
+ vout++;
568
+ xoutputs.push({
569
+ lockingScript: '00'.repeat(25),
570
+ satoshis: brc177.anchorSatoshis,
571
+ outputDescription: '',
572
+ basket: undefined,
573
+ tags: [],
574
+ vout,
575
+ providedBy: 'storage',
576
+ purpose: 'change',
577
+ derivationSuffix: undefined,
578
+ keyOffset: undefined
579
+ });
580
+ }
527
581
  return xoutputs;
528
582
  }
529
583
  /**
@@ -549,7 +603,7 @@ function validateRequiredOutputs(storage, userId, vargs) {
549
603
  */
550
604
  async function validateRequiredInputs(storage, userId, vargs) {
551
605
  // stampLog(vargs, `start storage verifyInputBeef`)
552
- const beef = new sdk_1.Beef();
606
+ let beef = new sdk_1.Beef();
553
607
  if (vargs.inputs.length === 0)
554
608
  return { storageBeef: beef, beef, xinputs: [] };
555
609
  if (vargs.inputBEEF != null)
@@ -572,6 +626,10 @@ async function validateRequiredInputs(storage, userId, vargs) {
572
626
  inputsByTxid[input.outpoint.txid] ||= [];
573
627
  inputsByTxid[input.outpoint.txid].push(input);
574
628
  }
629
+ // inputBEEF is an untrusted proof-data container, not a declaration of
630
+ // additional inputs. Retain only the transactions needed to prove the
631
+ // declared inputs so unrelated branches are neither validated nor stored.
632
+ beef = (0, beefForTxids_1.beefForTxids)(beef, Object.keys(inputsByTxid));
575
633
  const localKnownInputTxids = {};
576
634
  for (const [txid, txInputs] of Object.entries(inputsByTxid)) {
577
635
  localKnownInputTxids[txid] = txInputs.every(input => {
@@ -582,7 +640,7 @@ async function validateRequiredInputs(storage, userId, vargs) {
582
640
  await validateBeefTxidOnlyEntries(beef, inputsByTxid, trustSelf, storage);
583
641
  await ensureBeefContainsAllInputTxids(beef, inputsByTxid, localKnownInputTxids, trustSelf, storage);
584
642
  if (!(await beef.verify(await storage.getServices().getChainTracker(), true))) {
585
- console.log(`verifyInputBeef failed, inputBEEF failed to verify.\n${beef.toLogString()}\n`);
643
+ vargs.logger?.error('inputBEEF failed independent validation');
586
644
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('inputBEEF', 'valid Beef when factoring options.trustSelf');
587
645
  }
588
646
  const storageBeef = beef.clone();
@@ -633,7 +691,7 @@ function applyStoredInputScript(output, input, vargs) {
633
691
  if (!disableDoubleSpendCheckForTest && !output.spendable && !vargs.isNoSend) {
634
692
  throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${txid}.${vout}`, 'spendable output unless noSend is true');
635
693
  }
636
- input.satoshis = sdk_1.Validation.validateSatoshis(output.satoshis, 'output.satoshis');
694
+ input.satoshis = (0, validationHelpers_1.validateSatoshis)(output.satoshis, 'output.satoshis');
637
695
  input.lockingScript = sdk_1.Script.fromBinary((0, utilityHelpers_noBuffer_1.asArray)(output.lockingScript));
638
696
  }
639
697
  async function applyBeefInputScript(storage, beef, input) {
@@ -652,7 +710,7 @@ async function applyBeefInputScript(storage, beef, input) {
652
710
  throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${txid}.${vout}`, 'valid outpoint');
653
711
  }
654
712
  const sourceOutput = beefTx.tx.outputs[vout];
655
- input.satoshis = sdk_1.Validation.validateSatoshis(sourceOutput.satoshis, 'so.satoshis');
713
+ input.satoshis = (0, validationHelpers_1.validateSatoshis)(sourceOutput.satoshis, 'so.satoshis');
656
714
  input.lockingScript = sourceOutput.lockingScript;
657
715
  }
658
716
  async function resolveInputScript(storage, userId, vargs, input, beef, preloadedOutputsByOutpoint) {
@@ -697,8 +755,8 @@ async function validateNoSendChange(storage, userId, vargs, changeBasket) {
697
755
  return r;
698
756
  }
699
757
  function fundingPlanSatoshis(plan) {
700
- return plan.result.changeOutputs.reduce((sum, output) => sum + output.satoshis, 0) -
701
- plan.selected.reduce((sum, output) => sum + output.satoshis, 0);
758
+ return (plan.result.changeOutputs.reduce((sum, output) => sum + output.satoshis, 0) -
759
+ plan.selected.reduce((sum, output) => sum + output.satoshis, 0));
702
760
  }
703
761
  class FundingClaimConflict extends Error {
704
762
  conflict;
@@ -712,7 +770,10 @@ async function traceStorageStep(storage, name, parent, attributes, callback) {
712
770
  return await callback();
713
771
  return await storage.telemetry.withSpan(name, { component: 'wallet-storage', parent: parent?.context, attributes }, async (span) => await callback(span));
714
772
  }
715
- function makeFundingParams(vargs, xinputs, xoutputs, changeBasket, feeModel, availableChangeCount) {
773
+ function makeFundingParams(args) {
774
+ const { storage, vargs, xinputs, xoutputs, changeBasket, feeModel, healthyChangeCount, compatibilityFallback } = args;
775
+ const preferredSatoshis = Math.max(1, changeBasket.minimumDesiredUTXOValue);
776
+ const brc177 = vargs.brc177;
716
777
  return {
717
778
  fixedInputs: xinputs.map(input => ({
718
779
  satoshis: input.satoshis,
@@ -723,40 +784,69 @@ function makeFundingParams(vargs, xinputs, xoutputs, changeBasket, feeModel, ava
723
784
  lockingScriptLength: output.lockingScript.length / 2
724
785
  })),
725
786
  feeModel,
726
- changeInitialSatoshis: Math.max(1, changeBasket.minimumDesiredUTXOValue),
727
- changeFirstSatoshis: Math.max(1, Math.round(changeBasket.minimumDesiredUTXOValue / 4)),
787
+ changeInitialSatoshis: preferredSatoshis,
788
+ // The final compatibility shape uses the allocator's economic floor. This
789
+ // remains at least as permissive as every historical basket preference,
790
+ // including an exact 144/32 basket that has just migrated to 144/5000.
791
+ changeFirstSatoshis: compatibilityFallback ? 1 : preferredSatoshis,
728
792
  changeLockingScriptLength: 25,
729
793
  changeUnlockingScriptLength: 107,
730
- targetNetCount: changeBasket.numberOfDesiredUTXOs - availableChangeCount,
794
+ targetNetCount: changeBasket.numberOfDesiredUTXOs - healthyChangeCount,
795
+ // The planner requires a positive cap; surplusToFee below keeps the
796
+ // protected action change-free regardless.
797
+ maxChangeOutputs: brc177?.kind === 'protected' ? 1 : storage.managedChangePolicy.maxOutputsPerAction,
798
+ // The anchor is sized to cover the reclaim (BRC-177 Prefunding §2); the
799
+ // protected action carries no change, so any surplus is fee.
800
+ // validateBrc177FundingPlan below independently rejects any change.
801
+ surplusToFee: brc177?.kind === 'protected',
802
+ surplusPoolShaping: !compatibilityFallback,
803
+ maxMigrationInputs: compatibilityFallback ? 0 : storage.managedChangePolicy.migrationInputsPerAction,
731
804
  randomVals: vargs.randomVals
732
805
  };
733
806
  }
734
- async function prepareFundingPlan(storage, context) {
735
- const [userId, vargs, xinputs, xoutputs, changeBasket, noSendChangeIn, feeModel, parent, trx] = context;
736
- const excludeSending = !vargs.isDelayed;
737
- const candidates = await traceStorageStep(storage, 'wallet.storage.create_action.funding_candidates', parent, { 'funding.exclude_sending': excludeSending }, async (span) => {
738
- const outputs = await storage.findAvailableManagedChangeInputCandidates(userId, changeBasket.basketId, excludeSending, trx);
739
- span?.end({
740
- attributes: {
741
- 'funding.candidate_count': outputs.length,
742
- 'funding.candidate_satoshis': outputs.reduce((sum, output) => sum + output.satoshis, 0)
743
- }
744
- });
745
- return outputs;
746
- });
807
+ async function buildFundingPlan(storage, context, candidates, eligibleStatuses, policyTier, compatibilityFallback, parent) {
808
+ const [userId, vargs, xinputs, xoutputs, changeBasket, noSendChangeIn, feeModel] = context;
747
809
  const noSendIds = new Set(noSendChangeIn.map(output => output.outputId));
748
- const available = candidates.filter(output => !noSendIds.has(output.outputId));
749
- // Preserve the legacy target-net-count input: noSendChange was included in
750
- // countChangeInputs before it was consumed by the allocator.
751
- const params = makeFundingParams(vargs, xinputs, xoutputs, changeBasket, feeModel, candidates.length);
810
+ const brc177 = vargs.brc177;
811
+ const available = candidates.filter(output => !noSendIds.has(output.outputId) && eligibleStatuses.includes(output.transactionStatus));
812
+ if (brc177?.kind === 'protected')
813
+ available.length = 0;
814
+ const preferredSatoshis = Math.max(1, changeBasket.minimumDesiredUTXOValue);
815
+ const healthyChangeCount = compatibilityFallback
816
+ ? // Preserve the legacy target-count input exactly, including noSendChange
817
+ // that is removed from the allocator below but still belongs to this tier.
818
+ candidates.filter(output => eligibleStatuses.includes(output.transactionStatus)).length
819
+ : candidates.filter(output => output.satoshis >= preferredSatoshis).length;
820
+ const params = makeFundingParams({
821
+ storage,
822
+ vargs,
823
+ xinputs,
824
+ xoutputs,
825
+ changeBasket,
826
+ feeModel,
827
+ healthyChangeCount,
828
+ compatibilityFallback
829
+ });
830
+ const noSendStatuses = await storage.findTransactionStatusesByIds(userId, noSendChangeIn.map(output => output.transactionId));
831
+ const plannedNoSend = noSendChangeIn.map(output => ({
832
+ outputId: output.outputId,
833
+ transactionId: output.transactionId,
834
+ satoshis: output.satoshis,
835
+ txid: output.txid,
836
+ vout: output.vout,
837
+ transactionStatus: noSendStatuses.get(output.transactionId) ?? 'nosend'
838
+ }));
839
+ const claimStatuses = [...new Set([...eligibleStatuses, ...plannedNoSend.map(output => output.transactionStatus)])];
752
840
  return await traceStorageStep(storage, 'wallet.storage.create_action.funding_plan', parent, {
753
841
  'funding.candidate_count': available.length,
754
- 'funding.no_send_change_count': noSendChangeIn.length
842
+ 'funding.no_send_change_count': noSendChangeIn.length,
843
+ 'funding.policy_tier': policyTier,
844
+ 'funding.compatibility_fallback': compatibilityFallback
755
845
  }, async (span) => {
756
846
  const allocated = new Map();
757
847
  const availableSelector = new actionPlanning_1.CanonicalChangeSelector(available);
758
- const noSend = [...noSendChangeIn];
759
- const noSendById = new Map(noSendChangeIn.map(output => [output.outputId, output]));
848
+ const noSend = [...plannedNoSend];
849
+ const noSendById = new Map(plannedNoSend.map(output => [output.outputId, output]));
760
850
  const allocate = async (targetSatoshis, exactSatoshis) => {
761
851
  let output = noSend.pop();
762
852
  output ??= availableSelector.take(targetSatoshis, exactSatoshis);
@@ -789,21 +879,137 @@ async function prepareFundingPlan(storage, context) {
789
879
  params,
790
880
  result,
791
881
  selected,
792
- availableChangeCount: candidates.length
882
+ availableChangeCount: candidates.length,
883
+ eligibleStatuses: claimStatuses,
884
+ policyTier,
885
+ compatibilityFallback
793
886
  };
794
887
  });
795
888
  }
889
+ async function fundingPlanSerializedCost(storage, plan, knownTxids) {
890
+ const txids = [...new Set(plan.selected.map(candidate => (0, utilityHelpers_1.verifyTruthy)(candidate.txid)))];
891
+ if (txids.length === 0)
892
+ return plan.result.size;
893
+ try {
894
+ const beef = await storage.getBeefForTransactions(txids, {
895
+ knownTxids,
896
+ ignoreStorage: false,
897
+ ignoreServices: true,
898
+ ignoreNewProven: false
899
+ });
900
+ return plan.result.size + beef.toUint8Array().length;
901
+ }
902
+ catch {
903
+ return Number.MAX_SAFE_INTEGER;
904
+ }
905
+ }
906
+ const FUNDING_TIERS = [
907
+ { policyTier: 'completed', statuses: ['completed'] },
908
+ { policyTier: 'unproven', statuses: ['completed', 'unproven'] },
909
+ { policyTier: 'sending', statuses: ['completed', 'unproven', 'sending'] }
910
+ ];
911
+ async function resolveFundingCandidates(storage, userId, basketId, parent, trx) {
912
+ const rawCandidates = await traceStorageStep(storage, 'wallet.storage.create_action.funding_candidates', parent, { 'funding.include_pending': true }, async (span) => {
913
+ const outputs = await storage.findAvailableManagedChangeInputCandidates(userId, basketId, false, trx);
914
+ span?.end({
915
+ attributes: {
916
+ 'funding.candidate_count': outputs.length,
917
+ 'funding.candidate_satoshis': outputs.reduce((sum, output) => sum + output.satoshis, 0),
918
+ 'funding.completed_candidate_count': outputs.filter(output => output.transactionStatus === 'completed')
919
+ .length,
920
+ 'funding.unproven_candidate_count': outputs.filter(output => output.transactionStatus === 'unproven').length,
921
+ 'funding.sending_candidate_count': outputs.filter(output => output.transactionStatus === 'sending').length
922
+ }
923
+ });
924
+ return outputs;
925
+ });
926
+ const missingStatusIds = rawCandidates
927
+ .filter(output => output.transactionStatus == null)
928
+ .map(output => output.transactionId);
929
+ const missingStatuses = await storage.findTransactionStatusesByIds(userId, missingStatusIds, trx);
930
+ const candidates = rawCandidates.map(output => ({
931
+ ...output,
932
+ transactionStatus: output.transactionStatus ?? missingStatuses.get(output.transactionId)
933
+ }));
934
+ if (candidates.some(output => output.transactionStatus == null)) {
935
+ throw new WERR_errors_1.WERR_INTERNAL('managed change candidate is missing its source transaction status');
936
+ }
937
+ return candidates;
938
+ }
939
+ async function buildFundingPlanForTier(storage, context, candidates, tier, parent) {
940
+ try {
941
+ return {
942
+ plan: await buildFundingPlan(storage, context, candidates, tier.statuses, tier.policyTier, false, parent)
943
+ };
944
+ }
945
+ catch (error) {
946
+ if (!(error instanceof WERR_errors_1.WERR_INSUFFICIENT_FUNDS))
947
+ throw error;
948
+ }
949
+ // Pool shaping is optional. Before widening ancestry to unproven or sending
950
+ // parents, retry the same status tier with the former funding shape. This is
951
+ // the one-way compatibility guarantee: a preferred minimum can never
952
+ // manufacture starvation or force a pending chain.
953
+ try {
954
+ return {
955
+ plan: await buildFundingPlan(storage, context, candidates, tier.statuses, 'compatibility', true, parent)
956
+ };
957
+ }
958
+ catch (error) {
959
+ if (!(error instanceof WERR_errors_1.WERR_INSUFFICIENT_FUNDS))
960
+ throw error;
961
+ return { fundingError: error };
962
+ }
963
+ }
964
+ function firstPlanNeedsNoPendingComparison(storage, plan) {
965
+ const threshold = storage.managedChangePolicy.pendingComparisonInputs;
966
+ return threshold === -1 || plan.selected.length <= threshold;
967
+ }
968
+ async function chooseLowestSerializedFundingPlan(storage, plans, knownTxids) {
969
+ let chosen = plans[0];
970
+ let chosenCost = await fundingPlanSerializedCost(storage, chosen, knownTxids);
971
+ for (const alternative of plans.slice(1)) {
972
+ const cost = await fundingPlanSerializedCost(storage, alternative, knownTxids);
973
+ if (cost < chosenCost) {
974
+ chosen = alternative;
975
+ chosenCost = cost;
976
+ }
977
+ }
978
+ return chosen;
979
+ }
980
+ async function prepareFundingPlanWithLiquidityPolicy(storage, context, parent, trx) {
981
+ const [userId, vargs, , , changeBasket] = context;
982
+ const candidates = await resolveFundingCandidates(storage, userId, changeBasket.basketId, parent, trx);
983
+ const successful = [];
984
+ let fundingError;
985
+ for (const tier of FUNDING_TIERS) {
986
+ const attempted = await buildFundingPlanForTier(storage, context, candidates, tier, parent);
987
+ fundingError = attempted.fundingError ?? fundingError;
988
+ const plan = attempted.plan;
989
+ if (plan != null) {
990
+ successful.push(plan);
991
+ if (successful.length === 1 && firstPlanNeedsNoPendingComparison(storage, plan))
992
+ return plan;
993
+ }
994
+ }
995
+ if (successful.length > 0) {
996
+ if (successful.length === 1)
997
+ return successful[0];
998
+ return await chooseLowestSerializedFundingPlan(storage, successful, vargs.options.knownTxids);
999
+ }
1000
+ if (fundingError != null)
1001
+ throw fundingError;
1002
+ throw new WERR_errors_1.WERR_INTERNAL('funding policy produced neither a plan nor an error');
1003
+ }
796
1004
  async function claimFundingPlan(storage, request) {
797
- const [userId, basketId, excludeSending, transactionId, noSendChangeIn, plan, trx] = request;
1005
+ const [userId, basketId, eligibleStatuses, transactionId, noSendChangeIn, plan, trx] = request;
798
1006
  if (plan.selected.length === 0) {
799
1007
  return { outputs: [], sourceTransactionCount: 0, hydratedScriptCount: 0, scriptSourceTransactionCount: 0 };
800
1008
  }
801
1009
  const noSendIds = new Set(noSendChangeIn.map(output => output.outputId));
802
- const statuses = ['completed', 'unproven'];
803
- if (!excludeSending)
804
- statuses.push('sending');
805
- const claim = await storage.transaction(async (claimTrx) => {
806
- const currentById = await storage.findFundingOutputsForUpdate(userId, plan.selected.map(output => output.outputId), statuses, claimTrx);
1010
+ const claim = await storage
1011
+ .transaction(async (claimTrx) => {
1012
+ const currentById = await storage.findFundingOutputsForUpdate(userId, plan.selected.map(output => output.outputId), eligibleStatuses, claimTrx);
807
1013
  const transactionIds = [...new Set(Object.values(currentById).map(output => output.transactionId))];
808
1014
  const claimed = [];
809
1015
  for (const planned of plan.selected) {
@@ -827,7 +1033,8 @@ async function claimFundingPlan(storage, request) {
827
1033
  output.spentBy = transactionId;
828
1034
  }
829
1035
  return { outputs: claimed, sourceTransactionCount: transactionIds.length };
830
- }, trx).catch(error => {
1036
+ }, trx)
1037
+ .catch(error => {
831
1038
  if (error instanceof FundingClaimConflict)
832
1039
  return { conflict: error.conflict };
833
1040
  throw error;
@@ -843,9 +1050,12 @@ async function claimFundingPlan(storage, request) {
843
1050
  }
844
1051
  async function hydrateFundingInputScripts(storage, outputs, trx) {
845
1052
  const missing = outputs.filter(output => output.lockingScript?.length !== output.scriptLength &&
846
- output.scriptLength != null && output.scriptLength > 0 &&
847
- output.scriptOffset != null && output.scriptOffset > 0 &&
848
- output.txid != null && output.txid !== '');
1053
+ output.scriptLength != null &&
1054
+ output.scriptLength > 0 &&
1055
+ output.scriptOffset != null &&
1056
+ output.scriptOffset > 0 &&
1057
+ output.txid != null &&
1058
+ output.txid !== '');
849
1059
  if (missing.length === 0)
850
1060
  return { hydratedScriptCount: 0, scriptSourceTransactionCount: 0 };
851
1061
  const byTxid = new Map();
@@ -890,7 +1100,7 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
890
1100
  const claim = await claimFundingPlan(storage, [
891
1101
  userId,
892
1102
  ctx.changeBasket.basketId,
893
- !vargs.isDelayed,
1103
+ plan.eligibleStatuses,
894
1104
  ctx.transactionId,
895
1105
  ctx.noSendChangeIn,
896
1106
  plan,
@@ -912,17 +1122,7 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
912
1122
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('noSendChange', 'outputs that remain spendable during action planning');
913
1123
  }
914
1124
  retryCount++;
915
- plan = await prepareFundingPlan(storage, [
916
- userId,
917
- vargs,
918
- ctx.xinputs,
919
- ctx.xoutputs,
920
- ctx.changeBasket,
921
- ctx.noSendChangeIn,
922
- ctx.feeModel,
923
- parent,
924
- trx
925
- ]);
1125
+ plan = await prepareFundingPlanWithLiquidityPolicy(storage, [userId, vargs, ctx.xinputs, ctx.xoutputs, ctx.changeBasket, ctx.noSendChangeIn, ctx.feeModel], parent, trx);
926
1126
  }
927
1127
  throw new WERR_errors_1.WERR_INVALID_OPERATION('wallet funding changed repeatedly during action planning; retry createAction');
928
1128
  });
@@ -959,10 +1159,16 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
959
1159
  for (let i = 0; i < count; i++)
960
1160
  val.push(rand(0, 255));
961
1161
  }
962
- return sdk_1.Utils.toBase64(val);
1162
+ return (0, utils_1.toBase64)(val);
963
1163
  };
964
1164
  // Generate a derivation prefix for the payment
965
1165
  const derivationPrefix = randomDerivation(16);
1166
+ ctx.derivationPrefix = derivationPrefix;
1167
+ for (const output of ctx.xoutputs) {
1168
+ if (output.purpose === 'change' && output.derivationSuffix == null) {
1169
+ output.derivationSuffix = randomDerivation(16);
1170
+ }
1171
+ }
966
1172
  const r = {
967
1173
  maxPossibleSatoshisAdjustment: gcr.maxPossibleSatoshisAdjustment,
968
1174
  allocatedChange,
@@ -997,6 +1203,21 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
997
1203
  };
998
1204
  return r;
999
1205
  }
1206
+ function validateBrc177FundingPlan(vargs, plan) {
1207
+ if (vargs.brc177?.kind !== 'protected')
1208
+ return;
1209
+ if (plan.selected.length !== 1 || vargs.options.noSendChange.length !== 1) {
1210
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 protected action must use exactly one revocation anchor');
1211
+ }
1212
+ const selected = plan.selected[0];
1213
+ const anchor = vargs.options.noSendChange[0];
1214
+ if (selected.txid !== anchor.txid || selected.vout !== anchor.vout) {
1215
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 protected action selected a non-anchor wallet input');
1216
+ }
1217
+ if (plan.result.changeOutputs.length !== 0) {
1218
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 protected action must not create wallet change');
1219
+ }
1220
+ }
1000
1221
  /**
1001
1222
  * Avoid returning any known raw transaction data by converting any known transaction
1002
1223
  * in the `beef` to txidOnly.
@@ -1029,19 +1250,77 @@ function makeKnownTxidLookup(knownTxids) {
1029
1250
  return knownTxids.includes(txid);
1030
1251
  };
1031
1252
  }
1253
+ function preparedBeefStorage(storage) {
1254
+ return storage;
1255
+ }
1256
+ function appendPreparedBeefPreparation(preparations, writeEnabled, userId, rootTxids) {
1257
+ if (!writeEnabled)
1258
+ return;
1259
+ preparations.push({ userId, rootTxids });
1260
+ }
1261
+ function enqueuePreparedBeefs(storage, preparations) {
1262
+ const extension = preparedBeefStorage(storage);
1263
+ if (typeof extension.enqueuePreparedBeef !== 'function')
1264
+ return;
1265
+ for (const preparation of preparations)
1266
+ extension.enqueuePreparedBeef.call(storage, preparation);
1267
+ }
1268
+ async function loadAllocatedChangeBeef(storage, userId, txids, options, parent) {
1269
+ const extension = preparedBeefStorage(storage);
1270
+ const readEnabled = extension.preparedBeefReadsEnabled?.call(storage) === true;
1271
+ const writeEnabled = extension.preparedBeefWritesEnabled?.call(storage) === true;
1272
+ const lookup = readEnabled && typeof extension.lookupPreparedBeefs === 'function'
1273
+ ? await extension.lookupPreparedBeefs.call(storage, userId, txids, parent)
1274
+ : {
1275
+ beef: new sdk_1.Beef(),
1276
+ hitTxids: [],
1277
+ missingTxids: [...new Set(txids)],
1278
+ corruptCount: 0,
1279
+ byteLength: 0
1280
+ };
1281
+ const beef = lookup.beef;
1282
+ const preparations = [];
1283
+ if (lookup.missingTxids.length > 0) {
1284
+ const fetched = await storage.getBeefForTransactions(lookup.missingTxids, {
1285
+ ...options,
1286
+ mergeToBeef: undefined
1287
+ });
1288
+ if (lookup.hitTxids.length === 0) {
1289
+ // Preserve the original disabled/cold path without merging into an
1290
+ // otherwise empty BEEF solely for this optimization.
1291
+ appendPreparedBeefPreparation(preparations, writeEnabled, userId, lookup.missingTxids);
1292
+ return {
1293
+ beef: fetched,
1294
+ preparations,
1295
+ preparedHitCount: 0,
1296
+ canonicalFetchCount: lookup.missingTxids.length
1297
+ };
1298
+ }
1299
+ beef.mergeBeef(fetched);
1300
+ // A caller's knownTxids may leave placeholders which are unsuitable for a
1301
+ // reusable artifact. Rebuild those roots strictly in the worker.
1302
+ appendPreparedBeefPreparation(preparations, writeEnabled, userId, lookup.missingTxids);
1303
+ }
1304
+ return {
1305
+ beef,
1306
+ preparations,
1307
+ preparedHitCount: lookup.hitTxids.length,
1308
+ canonicalFetchCount: lookup.missingTxids.length
1309
+ };
1310
+ }
1032
1311
  function missingAllocatedChangeTxids(allocatedChange, beef, knownTxids) {
1033
1312
  const hasKnownTxid = makeKnownTxidLookup(knownTxids);
1034
1313
  return Array.from(new Set(allocatedChange
1035
1314
  .map(output => (0, utilityHelpers_1.verifyTruthy)(output.txid))
1036
1315
  .filter(txid => beef.findTxid(txid) == null && !hasKnownTxid(txid))));
1037
1316
  }
1038
- function startAllocatedChangeBeefPrefetch(storage, vargs, allocatedChange, beef, parent) {
1317
+ function startAllocatedChangeBeefPrefetch(storage, userId, vargs, allocatedChange, beef, parent) {
1039
1318
  if (vargs.options.returnTXIDOnly)
1040
- return Promise.resolve({ sourceCount: 0, txids: [] });
1319
+ return Promise.resolve({ sourceCount: 0, txids: [], preparations: [] });
1041
1320
  const knownTxids = vargs.options.knownTxids ?? [];
1042
1321
  const missing = missingAllocatedChangeTxids(allocatedChange, beef, knownTxids);
1043
1322
  if (missing.length === 0)
1044
- return Promise.resolve({ sourceCount: 0, txids: [] });
1323
+ return Promise.resolve({ sourceCount: 0, txids: [], preparations: [] });
1045
1324
  const options = {
1046
1325
  trustSelf: undefined,
1047
1326
  knownTxids,
@@ -1055,15 +1334,22 @@ function startAllocatedChangeBeefPrefetch(storage, vargs, allocatedChange, beef,
1055
1334
  'beef.missing_source_count': missing.length,
1056
1335
  'beef.storage_batch_count': missing.length === 0 ? 0 : 1
1057
1336
  }, async (span) => {
1058
- const fetched = await storage.getBeefForTransactions(missing, options);
1337
+ const fetched = await loadAllocatedChangeBeef(storage, userId, missing, options, parent);
1059
1338
  span?.end({
1060
1339
  attributes: {
1061
- 'beef.fetched_tx_count': fetched.txs.length,
1062
- 'beef.fetched_bump_count': fetched.bumps.length
1340
+ 'beef.fetched_tx_count': fetched.beef.txs.length,
1341
+ 'beef.fetched_bump_count': fetched.beef.bumps.length,
1342
+ 'beef.prepared_hit_count': fetched.preparedHitCount,
1343
+ 'beef.canonical_fetch_count': fetched.canonicalFetchCount
1063
1344
  }
1064
1345
  });
1065
1346
  return fetched;
1066
- }).then(prefetched => ({ beef: prefetched, sourceCount: missing.length, txids: missing }), error => ({ error, sourceCount: missing.length, txids: missing }));
1347
+ }).then(prefetched => ({
1348
+ beef: prefetched.beef,
1349
+ preparations: prefetched.preparations,
1350
+ sourceCount: missing.length,
1351
+ txids: missing
1352
+ }), error => ({ error, preparations: [], sourceCount: missing.length, txids: missing }));
1067
1353
  }
1068
1354
  function sameTxids(left, right) {
1069
1355
  if (left.length !== right.length)
@@ -1071,7 +1357,7 @@ function sameTxids(left, right) {
1071
1357
  const expected = new Set(left);
1072
1358
  return right.every(txid => expected.has(txid));
1073
1359
  }
1074
- async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef, prefetch, parent) {
1360
+ async function mergeAllocatedChangeBeefs(storage, userId, vargs, allocatedChange, beef, prefetch, parent) {
1075
1361
  const options = {
1076
1362
  trustSelf: undefined,
1077
1363
  knownTxids: vargs.options.knownTxids,
@@ -1082,7 +1368,7 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
1082
1368
  minProofLevel: undefined
1083
1369
  };
1084
1370
  if (vargs.options.returnTXIDOnly)
1085
- return undefined;
1371
+ return { inputBeef: undefined, preparations: [] };
1086
1372
  const knownTxids = vargs.options.knownTxids ?? [];
1087
1373
  const requiredBeforePrefetch = missingAllocatedChangeTxids(allocatedChange, beef, knownTxids);
1088
1374
  const prefetched = await traceStorageStep(storage, 'wallet.storage.create_action.beef_prefetch_join', parent, { 'beef.prefetch_source_count': 0 }, async (span) => {
@@ -1098,6 +1384,7 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
1098
1384
  throw prefetched.error;
1099
1385
  if (usePrefetch && prefetched.beef != null)
1100
1386
  beef.mergeBeef(prefetched.beef);
1387
+ const preparations = usePrefetch ? [...prefetched.preparations] : [];
1101
1388
  // If a concurrent spender forced the funding claim to be replanned, only
1102
1389
  // the newly selected roots remain. The normal uncontended path is empty.
1103
1390
  const missing = missingAllocatedChangeTxids(allocatedChange, beef, knownTxids);
@@ -1111,7 +1398,9 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
1111
1398
  'beef.prefetch_reused': usePrefetch
1112
1399
  }, async (span) => {
1113
1400
  if (missing.length > 0) {
1114
- fetched = await storage.getBeefForTransactions(missing, { ...options, mergeToBeef: undefined });
1401
+ const loaded = await loadAllocatedChangeBeef(storage, userId, missing, options, parent);
1402
+ fetched = loaded.beef;
1403
+ preparations.push(...loaded.preparations);
1115
1404
  }
1116
1405
  span?.end({
1117
1406
  attributes: {
@@ -1131,7 +1420,7 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
1131
1420
  }
1132
1421
  });
1133
1422
  });
1134
- return await traceStorageStep(storage, 'wallet.storage.create_action.beef_trim_serialize', parent, {
1423
+ const inputBeef = await traceStorageStep(storage, 'wallet.storage.create_action.beef_trim_serialize', parent, {
1135
1424
  'beef.tx_count': beef.txs.length,
1136
1425
  'beef.bump_count': beef.bumps.length,
1137
1426
  'beef.known_txid_count': knownTxids.length
@@ -1140,5 +1429,6 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
1140
1429
  span?.end({ attributes: { 'beef.result_bytes': result?.length ?? 0 } });
1141
1430
  return result;
1142
1431
  });
1432
+ return { inputBeef, preparations };
1143
1433
  }
1144
1434
  //# sourceMappingURL=createAction.js.map