@bopen-io/wallet-toolbox 2.6.2-brc153.3 → 2.14.5

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 +4 -3
  492. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  493. package/out/src/signer/methods/createAction.js +3 -1
  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 +12 -2
  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 +391 -107
  593. package/out/src/storage/methods/createAction.js.map +1 -1
  594. package/out/src/storage/methods/generateChange.d.ts +15 -5
  595. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  596. package/out/src/storage/methods/generateChange.js +187 -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 +172 -135
  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 +32 -30
  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 +359 -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 +372 -9
  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 +221 -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 +4 -0
  712. package/out/src/storage/remoting/syncChunkBinary.d.ts.map +1 -0
  713. package/out/src/storage/remoting/syncChunkBinary.js +38 -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 +3 -5
  809. package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
  810. package/out/src/utility/brc153ReferenceLabels.js +8 -14
  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 +40 -33
  878. package/docs/open-rpc/index.html +0 -46
@@ -2,19 +2,23 @@
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");
9
13
  const utilityHelpers_1 = require("../../utility/utilityHelpers");
10
14
  const utilityHelpers_noBuffer_1 = require("../../utility/utilityHelpers.noBuffer");
11
- const brc153ReferenceLabels_1 = require("../../utility/brc153ReferenceLabels");
12
15
  const EntityProvenTx_1 = require("../schema/entities/EntityProvenTx");
13
16
  const Wallet_1 = require("../../Wallet");
14
17
  const offsetKey_1 = require("./offsetKey");
15
18
  const sdk_2 = require("../../sdk");
16
19
  const managedChange_1 = require("./managedChange");
17
20
  const actionPlanning_1 = require("./actionPlanning");
21
+ const beefForTxids_1 = require("../../utility/beefForTxids");
18
22
  let disableDoubleSpendCheckForTest = true;
19
23
  function setDisableDoubleSpendCheckForTest(v) {
20
24
  disableDoubleSpendCheckForTest = v;
@@ -50,6 +54,9 @@ async function createActionCore(storage, auth, vargs, parent) {
50
54
  // stampLog(vargs, `start storage createTransactionSdk`)
51
55
  if (vargs.isTestWerrReviewActions)
52
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
+ }
53
60
  if (!vargs.isNewTx)
54
61
  // The purpose of this function is to create the initial storage records associated
55
62
  // with a new transaction. It's an error if we have no new inputs or outputs...
@@ -69,7 +76,7 @@ async function createActionCore(storage, auth, vargs, parent) {
69
76
  * - Create result inputs with source locking scripts
70
77
  * - Create result outputs with new locking scripts.
71
78
  * - Create and return result.
72
- */
79
+ */
73
80
  const userId = auth.userId;
74
81
  const validated = await traceStorageStep(storage, 'wallet.storage.create_action.validate', parent, {
75
82
  'action.fixed_input_count': vargs.inputs.length,
@@ -99,13 +106,14 @@ async function createActionCore(storage, auth, vargs, parent) {
99
106
  const { storageBeef, beef, xinputs, xoutputs, changeBasket, noSendChangeIn } = validated;
100
107
  const feeModel = (0, StorageProvider_1.validateStorageFeeModel)(storage.feeModel);
101
108
  logger?.log(`validated fee model ${JSON.stringify(feeModel)}`);
102
- 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);
103
111
  logger?.log(`planned funding from ${initialFundingPlan.availableChangeCount} change inputs`);
104
112
  // The selected source txids are known before the write transaction begins.
105
113
  // Start their one batched proof read now so PXC/network wait and BEEF
106
114
  // assembly overlap the independent transaction-record/funding/output writes.
107
115
  // A funding-claim retry is handled below by fetching only any residual roots.
108
- const allocatedBeefPrefetch = startAllocatedChangeBeefPrefetch(storage, vargs, initialFundingPlan.selected, beef, parent);
116
+ const allocatedBeefPrefetch = startAllocatedChangeBeefPrefetch(storage, userId, vargs, initialFundingPlan.selected, beef, parent);
109
117
  const storageBeefBytes = storageBeef.toBinary();
110
118
  let newTx;
111
119
  let newTxCommitted = false;
@@ -138,7 +146,11 @@ async function createActionCore(storage, auth, vargs, parent) {
138
146
  ctx.xoutputs[adjustment.fixedOutputIndex].satoshis = adjustment.satoshis;
139
147
  logger?.log('adjusted change outputs to max possible');
140
148
  }
141
- 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) -
142
154
  funded.allocatedChange.reduce((sum, output) => sum + output.satoshis, 0);
143
155
  if (satoshis !== initialSatoshis) {
144
156
  await storage.updateTransaction(newTx.transactionId, { satoshis }, trx);
@@ -158,7 +170,7 @@ async function createActionCore(storage, auth, vargs, parent) {
158
170
  const committedTx = (0, utilityHelpers_1.verifyTruthy)(newTx);
159
171
  const { allocatedChange, derivationPrefix, outputs, changeVouts, ctx } = persisted;
160
172
  logger?.log('created new output records');
161
- const inputBeef = await mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef, allocatedBeefPrefetch, parent);
173
+ const preparedInputBeef = await mergeAllocatedChangeBeefs(storage, userId, vargs, allocatedChange, beef, allocatedBeefPrefetch, parent);
162
174
  logger?.log('merged allocated change beefs');
163
175
  const inputs = await traceStorageStep(storage, 'wallet.storage.create_action.assemble_inputs', parent, {
164
176
  'action.fixed_input_count': ctx.xinputs.length,
@@ -177,9 +189,13 @@ async function createActionCore(storage, auth, vargs, parent) {
177
189
  inputs,
178
190
  outputs,
179
191
  derivationPrefix,
180
- inputBeef,
192
+ inputBeef: preparedInputBeef.inputBeef,
181
193
  noSendChangeOutputVouts: vargs.isNoSend ? changeVouts : undefined
182
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);
183
199
  logger?.groupEnd();
184
200
  return r;
185
201
  }
@@ -352,7 +368,7 @@ function describeNewOutput(o, tags, txBaskets) {
352
368
  const changeVout = o.change && o.purpose === 'change' && o.providedBy === 'storage' ? o.vout : undefined;
353
369
  const ro = {
354
370
  vout: (0, utilityHelpers_1.verifyInteger)(o.vout),
355
- satoshis: sdk_1.Validation.validateSatoshis(o.satoshis, 'o.satoshis'),
371
+ satoshis: (0, validationHelpers_1.validateSatoshis)(o.satoshis, 'o.satoshis'),
356
372
  lockingScript: o.lockingScript == null ? '' : (0, utilityHelpers_noBuffer_1.asString)(o.lockingScript),
357
373
  providedBy: (0, utilityHelpers_1.verifyTruthy)(o.providedBy),
358
374
  purpose: o.purpose || undefined,
@@ -379,6 +395,49 @@ async function persistNewOutput(storage, o, tags, txTags, txBaskets, trx) {
379
395
  }
380
396
  return describeNewOutput(o, tags, txBaskets);
381
397
  }
398
+ async function createRequiredOutput(storage, userId, xo, ctx, txBaskets, trx) {
399
+ const o = makeDefaultOutput(userId, ctx.transactionId, xo.satoshis, xo.vout);
400
+ if (xo.purpose === 'service-charge') {
401
+ const lockingScript = (0, utilityHelpers_noBuffer_1.asArray)(xo.lockingScript);
402
+ const now = new Date();
403
+ await storage.insertCommission({
404
+ userId,
405
+ transactionId: ctx.transactionId,
406
+ lockingScript,
407
+ satoshis: xo.satoshis,
408
+ isRedeemed: false,
409
+ keyOffset: (0, utilityHelpers_1.verifyTruthy)(xo.keyOffset),
410
+ created_at: now,
411
+ updated_at: now,
412
+ commissionId: 0
413
+ }, trx);
414
+ o.lockingScript = lockingScript;
415
+ o.providedBy = 'storage';
416
+ o.purpose = 'storage-commission';
417
+ o.type = 'custom';
418
+ o.spendable = false;
419
+ return { o, tags: [] };
420
+ }
421
+ if (xo.purpose === 'change') {
422
+ o.basketId = ctx.changeBasket.basketId;
423
+ o.change = true;
424
+ o.derivationPrefix = (0, utilityHelpers_1.verifyTruthy)(ctx.derivationPrefix);
425
+ o.derivationSuffix = (0, utilityHelpers_1.verifyTruthy)(xo.derivationSuffix);
426
+ o.providedBy = 'storage';
427
+ o.purpose = 'change';
428
+ o.type = 'P2PKH';
429
+ o.spendable = true;
430
+ return { o, tags: [] };
431
+ }
432
+ o.lockingScript = (0, utilityHelpers_noBuffer_1.asArray)(xo.lockingScript);
433
+ o.basketId = xo.basket ? txBaskets[xo.basket].basketId : undefined;
434
+ o.customInstructions = xo.customInstructions;
435
+ o.outputDescription = xo.outputDescription;
436
+ o.providedBy = xo.providedBy;
437
+ o.purpose = xo.purpose || '';
438
+ o.type = 'custom';
439
+ return { o, tags: xo.tags };
440
+ }
382
441
  async function createNewOutputs(storage, userId, vargs, ctx, changeOutputs, trx) {
383
442
  const txBaskets = {};
384
443
  const basketNames = [...new Set(ctx.xoutputs.map(x => x.basket).filter((v) => !!v))];
@@ -388,39 +447,7 @@ async function createNewOutputs(storage, userId, vargs, ctx, changeOutputs, trx)
388
447
  Object.assign(txTags, await storage.findOrInsertOutputTagsBulk(userId, tagNames, trx));
389
448
  const newOutputs = [];
390
449
  for (const xo of ctx.xoutputs) {
391
- const lockingScript = (0, utilityHelpers_noBuffer_1.asArray)(xo.lockingScript);
392
- if (xo.purpose === 'service-charge') {
393
- const now = new Date();
394
- await storage.insertCommission({
395
- userId,
396
- transactionId: ctx.transactionId,
397
- lockingScript,
398
- satoshis: xo.satoshis,
399
- isRedeemed: false,
400
- keyOffset: (0, utilityHelpers_1.verifyTruthy)(xo.keyOffset),
401
- created_at: now,
402
- updated_at: now,
403
- commissionId: 0
404
- }, trx);
405
- const o = makeDefaultOutput(userId, ctx.transactionId, xo.satoshis, xo.vout);
406
- o.lockingScript = lockingScript;
407
- o.providedBy = 'storage';
408
- o.purpose = 'storage-commission';
409
- o.type = 'custom';
410
- o.spendable = false;
411
- newOutputs.push({ o, tags: [] });
412
- }
413
- else {
414
- const o = makeDefaultOutput(userId, ctx.transactionId, xo.satoshis, xo.vout);
415
- o.lockingScript = lockingScript;
416
- o.basketId = xo.basket ? txBaskets[xo.basket].basketId : undefined;
417
- o.customInstructions = xo.customInstructions;
418
- o.outputDescription = xo.outputDescription;
419
- o.providedBy = xo.providedBy;
420
- o.purpose = xo.purpose || '';
421
- o.type = 'custom';
422
- newOutputs.push({ o, tags: xo.tags });
423
- }
450
+ newOutputs.push(await createRequiredOutput(storage, userId, xo, ctx, txBaskets, trx));
424
451
  }
425
452
  for (const o of changeOutputs) {
426
453
  o.spendable = true;
@@ -464,8 +491,17 @@ async function createNewTxRecord(storage, userId, vargs, storageBeef, satoshis =
464
491
  txid: undefined,
465
492
  rawTx: undefined
466
493
  };
494
+ const brc177 = vargs.brc177;
495
+ if (brc177?.kind === 'protected') {
496
+ newTx.noSendExpiryMode = brc177.expiry.mode;
497
+ newTx.noSendExpiryValue = brc177.expiry.value;
498
+ newTx.noSendExpiryDeadline = brc177.deadline;
499
+ newTx.noSendExpiryState = 'preparing';
500
+ newTx.noSendExpiryAnchorTxid = brc177.anchorTxid;
501
+ newTx.noSendExpiryAnchorVout = brc177.anchorVout;
502
+ }
467
503
  newTx.transactionId = await storage.insertTransaction(newTx, trx);
468
- const labelNames = [...new Set((0, brc153ReferenceLabels_1.stripBrc153ReferenceLabels)(vargs.labels))];
504
+ const labelNames = [...new Set(vargs.labels)];
469
505
  const labels = await storage.findOrInsertTxLabelsBulk(userId, labelNames, trx);
470
506
  for (const label of labelNames) {
471
507
  const txLabel = labels[label];
@@ -525,6 +561,22 @@ function validateRequiredOutputs(storage, userId, vargs) {
525
561
  keyOffset
526
562
  });
527
563
  }
564
+ const brc177 = vargs.brc177;
565
+ if (brc177?.kind === 'funding') {
566
+ vout++;
567
+ xoutputs.push({
568
+ lockingScript: '00'.repeat(25),
569
+ satoshis: brc177.anchorSatoshis,
570
+ outputDescription: '',
571
+ basket: undefined,
572
+ tags: [],
573
+ vout,
574
+ providedBy: 'storage',
575
+ purpose: 'change',
576
+ derivationSuffix: undefined,
577
+ keyOffset: undefined
578
+ });
579
+ }
528
580
  return xoutputs;
529
581
  }
530
582
  /**
@@ -550,7 +602,7 @@ function validateRequiredOutputs(storage, userId, vargs) {
550
602
  */
551
603
  async function validateRequiredInputs(storage, userId, vargs) {
552
604
  // stampLog(vargs, `start storage verifyInputBeef`)
553
- const beef = new sdk_1.Beef();
605
+ let beef = new sdk_1.Beef();
554
606
  if (vargs.inputs.length === 0)
555
607
  return { storageBeef: beef, beef, xinputs: [] };
556
608
  if (vargs.inputBEEF != null)
@@ -573,6 +625,10 @@ async function validateRequiredInputs(storage, userId, vargs) {
573
625
  inputsByTxid[input.outpoint.txid] ||= [];
574
626
  inputsByTxid[input.outpoint.txid].push(input);
575
627
  }
628
+ // inputBEEF is an untrusted proof-data container, not a declaration of
629
+ // additional inputs. Retain only the transactions needed to prove the
630
+ // declared inputs so unrelated branches are neither validated nor stored.
631
+ beef = (0, beefForTxids_1.beefForTxids)(beef, Object.keys(inputsByTxid));
576
632
  const localKnownInputTxids = {};
577
633
  for (const [txid, txInputs] of Object.entries(inputsByTxid)) {
578
634
  localKnownInputTxids[txid] = txInputs.every(input => {
@@ -583,7 +639,7 @@ async function validateRequiredInputs(storage, userId, vargs) {
583
639
  await validateBeefTxidOnlyEntries(beef, inputsByTxid, trustSelf, storage);
584
640
  await ensureBeefContainsAllInputTxids(beef, inputsByTxid, localKnownInputTxids, trustSelf, storage);
585
641
  if (!(await beef.verify(await storage.getServices().getChainTracker(), true))) {
586
- console.log(`verifyInputBeef failed, inputBEEF failed to verify.\n${beef.toLogString()}\n`);
642
+ vargs.logger?.error('inputBEEF failed independent validation');
587
643
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('inputBEEF', 'valid Beef when factoring options.trustSelf');
588
644
  }
589
645
  const storageBeef = beef.clone();
@@ -634,7 +690,7 @@ function applyStoredInputScript(output, input, vargs) {
634
690
  if (!disableDoubleSpendCheckForTest && !output.spendable && !vargs.isNoSend) {
635
691
  throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${txid}.${vout}`, 'spendable output unless noSend is true');
636
692
  }
637
- input.satoshis = sdk_1.Validation.validateSatoshis(output.satoshis, 'output.satoshis');
693
+ input.satoshis = (0, validationHelpers_1.validateSatoshis)(output.satoshis, 'output.satoshis');
638
694
  input.lockingScript = sdk_1.Script.fromBinary((0, utilityHelpers_noBuffer_1.asArray)(output.lockingScript));
639
695
  }
640
696
  async function applyBeefInputScript(storage, beef, input) {
@@ -653,7 +709,7 @@ async function applyBeefInputScript(storage, beef, input) {
653
709
  throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${txid}.${vout}`, 'valid outpoint');
654
710
  }
655
711
  const sourceOutput = beefTx.tx.outputs[vout];
656
- input.satoshis = sdk_1.Validation.validateSatoshis(sourceOutput.satoshis, 'so.satoshis');
712
+ input.satoshis = (0, validationHelpers_1.validateSatoshis)(sourceOutput.satoshis, 'so.satoshis');
657
713
  input.lockingScript = sourceOutput.lockingScript;
658
714
  }
659
715
  async function resolveInputScript(storage, userId, vargs, input, beef, preloadedOutputsByOutpoint) {
@@ -698,8 +754,8 @@ async function validateNoSendChange(storage, userId, vargs, changeBasket) {
698
754
  return r;
699
755
  }
700
756
  function fundingPlanSatoshis(plan) {
701
- return plan.result.changeOutputs.reduce((sum, output) => sum + output.satoshis, 0) -
702
- plan.selected.reduce((sum, output) => sum + output.satoshis, 0);
757
+ return (plan.result.changeOutputs.reduce((sum, output) => sum + output.satoshis, 0) -
758
+ plan.selected.reduce((sum, output) => sum + output.satoshis, 0));
703
759
  }
704
760
  class FundingClaimConflict extends Error {
705
761
  conflict;
@@ -713,7 +769,10 @@ async function traceStorageStep(storage, name, parent, attributes, callback) {
713
769
  return await callback();
714
770
  return await storage.telemetry.withSpan(name, { component: 'wallet-storage', parent: parent?.context, attributes }, async (span) => await callback(span));
715
771
  }
716
- function makeFundingParams(vargs, xinputs, xoutputs, changeBasket, feeModel, availableChangeCount) {
772
+ function makeFundingParams(args) {
773
+ const { storage, vargs, xinputs, xoutputs, changeBasket, feeModel, healthyChangeCount, compatibilityFallback } = args;
774
+ const preferredSatoshis = Math.max(1, changeBasket.minimumDesiredUTXOValue);
775
+ const brc177 = vargs.brc177;
717
776
  return {
718
777
  fixedInputs: xinputs.map(input => ({
719
778
  satoshis: input.satoshis,
@@ -724,40 +783,65 @@ function makeFundingParams(vargs, xinputs, xoutputs, changeBasket, feeModel, ava
724
783
  lockingScriptLength: output.lockingScript.length / 2
725
784
  })),
726
785
  feeModel,
727
- changeInitialSatoshis: Math.max(1, changeBasket.minimumDesiredUTXOValue),
728
- changeFirstSatoshis: Math.max(1, Math.round(changeBasket.minimumDesiredUTXOValue / 4)),
786
+ changeInitialSatoshis: preferredSatoshis,
787
+ // The final compatibility shape uses the allocator's economic floor. This
788
+ // remains at least as permissive as every historical basket preference,
789
+ // including an exact 144/32 basket that has just migrated to 144/5000.
790
+ changeFirstSatoshis: compatibilityFallback ? 1 : preferredSatoshis,
729
791
  changeLockingScriptLength: 25,
730
792
  changeUnlockingScriptLength: 107,
731
- targetNetCount: changeBasket.numberOfDesiredUTXOs - availableChangeCount,
793
+ targetNetCount: changeBasket.numberOfDesiredUTXOs - healthyChangeCount,
794
+ // The planner requires a positive cap. The exact anchor leaves no surplus,
795
+ // and validateBrc177FundingPlan below independently rejects any change.
796
+ maxChangeOutputs: brc177?.kind === 'protected' ? 1 : storage.managedChangePolicy.maxOutputsPerAction,
797
+ surplusPoolShaping: !compatibilityFallback,
798
+ maxMigrationInputs: compatibilityFallback ? 0 : storage.managedChangePolicy.migrationInputsPerAction,
732
799
  randomVals: vargs.randomVals
733
800
  };
734
801
  }
735
- async function prepareFundingPlan(storage, context) {
736
- const [userId, vargs, xinputs, xoutputs, changeBasket, noSendChangeIn, feeModel, parent, trx] = context;
737
- const excludeSending = !vargs.isDelayed;
738
- const candidates = await traceStorageStep(storage, 'wallet.storage.create_action.funding_candidates', parent, { 'funding.exclude_sending': excludeSending }, async (span) => {
739
- const outputs = await storage.findAvailableManagedChangeInputCandidates(userId, changeBasket.basketId, excludeSending, trx);
740
- span?.end({
741
- attributes: {
742
- 'funding.candidate_count': outputs.length,
743
- 'funding.candidate_satoshis': outputs.reduce((sum, output) => sum + output.satoshis, 0)
744
- }
745
- });
746
- return outputs;
747
- });
802
+ async function buildFundingPlan(storage, context, candidates, eligibleStatuses, policyTier, compatibilityFallback, parent) {
803
+ const [userId, vargs, xinputs, xoutputs, changeBasket, noSendChangeIn, feeModel] = context;
748
804
  const noSendIds = new Set(noSendChangeIn.map(output => output.outputId));
749
- const available = candidates.filter(output => !noSendIds.has(output.outputId));
750
- // Preserve the legacy target-net-count input: noSendChange was included in
751
- // countChangeInputs before it was consumed by the allocator.
752
- const params = makeFundingParams(vargs, xinputs, xoutputs, changeBasket, feeModel, candidates.length);
805
+ const brc177 = vargs.brc177;
806
+ const available = candidates.filter(output => !noSendIds.has(output.outputId) && eligibleStatuses.includes(output.transactionStatus));
807
+ if (brc177?.kind === 'protected')
808
+ available.length = 0;
809
+ const preferredSatoshis = Math.max(1, changeBasket.minimumDesiredUTXOValue);
810
+ const healthyChangeCount = compatibilityFallback
811
+ ? // Preserve the legacy target-count input exactly, including noSendChange
812
+ // that is removed from the allocator below but still belongs to this tier.
813
+ candidates.filter(output => eligibleStatuses.includes(output.transactionStatus)).length
814
+ : candidates.filter(output => output.satoshis >= preferredSatoshis).length;
815
+ const params = makeFundingParams({
816
+ storage,
817
+ vargs,
818
+ xinputs,
819
+ xoutputs,
820
+ changeBasket,
821
+ feeModel,
822
+ healthyChangeCount,
823
+ compatibilityFallback
824
+ });
825
+ const noSendStatuses = await storage.findTransactionStatusesByIds(userId, noSendChangeIn.map(output => output.transactionId));
826
+ const plannedNoSend = noSendChangeIn.map(output => ({
827
+ outputId: output.outputId,
828
+ transactionId: output.transactionId,
829
+ satoshis: output.satoshis,
830
+ txid: output.txid,
831
+ vout: output.vout,
832
+ transactionStatus: noSendStatuses.get(output.transactionId) ?? 'nosend'
833
+ }));
834
+ const claimStatuses = [...new Set([...eligibleStatuses, ...plannedNoSend.map(output => output.transactionStatus)])];
753
835
  return await traceStorageStep(storage, 'wallet.storage.create_action.funding_plan', parent, {
754
836
  'funding.candidate_count': available.length,
755
- 'funding.no_send_change_count': noSendChangeIn.length
837
+ 'funding.no_send_change_count': noSendChangeIn.length,
838
+ 'funding.policy_tier': policyTier,
839
+ 'funding.compatibility_fallback': compatibilityFallback
756
840
  }, async (span) => {
757
841
  const allocated = new Map();
758
842
  const availableSelector = new actionPlanning_1.CanonicalChangeSelector(available);
759
- const noSend = [...noSendChangeIn];
760
- const noSendById = new Map(noSendChangeIn.map(output => [output.outputId, output]));
843
+ const noSend = [...plannedNoSend];
844
+ const noSendById = new Map(plannedNoSend.map(output => [output.outputId, output]));
761
845
  const allocate = async (targetSatoshis, exactSatoshis) => {
762
846
  let output = noSend.pop();
763
847
  output ??= availableSelector.take(targetSatoshis, exactSatoshis);
@@ -790,21 +874,137 @@ async function prepareFundingPlan(storage, context) {
790
874
  params,
791
875
  result,
792
876
  selected,
793
- availableChangeCount: candidates.length
877
+ availableChangeCount: candidates.length,
878
+ eligibleStatuses: claimStatuses,
879
+ policyTier,
880
+ compatibilityFallback
794
881
  };
795
882
  });
796
883
  }
884
+ async function fundingPlanSerializedCost(storage, plan, knownTxids) {
885
+ const txids = [...new Set(plan.selected.map(candidate => (0, utilityHelpers_1.verifyTruthy)(candidate.txid)))];
886
+ if (txids.length === 0)
887
+ return plan.result.size;
888
+ try {
889
+ const beef = await storage.getBeefForTransactions(txids, {
890
+ knownTxids,
891
+ ignoreStorage: false,
892
+ ignoreServices: true,
893
+ ignoreNewProven: false
894
+ });
895
+ return plan.result.size + beef.toUint8Array().length;
896
+ }
897
+ catch {
898
+ return Number.MAX_SAFE_INTEGER;
899
+ }
900
+ }
901
+ const FUNDING_TIERS = [
902
+ { policyTier: 'completed', statuses: ['completed'] },
903
+ { policyTier: 'unproven', statuses: ['completed', 'unproven'] },
904
+ { policyTier: 'sending', statuses: ['completed', 'unproven', 'sending'] }
905
+ ];
906
+ async function resolveFundingCandidates(storage, userId, basketId, parent, trx) {
907
+ const rawCandidates = await traceStorageStep(storage, 'wallet.storage.create_action.funding_candidates', parent, { 'funding.include_pending': true }, async (span) => {
908
+ const outputs = await storage.findAvailableManagedChangeInputCandidates(userId, basketId, false, trx);
909
+ span?.end({
910
+ attributes: {
911
+ 'funding.candidate_count': outputs.length,
912
+ 'funding.candidate_satoshis': outputs.reduce((sum, output) => sum + output.satoshis, 0),
913
+ 'funding.completed_candidate_count': outputs.filter(output => output.transactionStatus === 'completed')
914
+ .length,
915
+ 'funding.unproven_candidate_count': outputs.filter(output => output.transactionStatus === 'unproven').length,
916
+ 'funding.sending_candidate_count': outputs.filter(output => output.transactionStatus === 'sending').length
917
+ }
918
+ });
919
+ return outputs;
920
+ });
921
+ const missingStatusIds = rawCandidates
922
+ .filter(output => output.transactionStatus == null)
923
+ .map(output => output.transactionId);
924
+ const missingStatuses = await storage.findTransactionStatusesByIds(userId, missingStatusIds, trx);
925
+ const candidates = rawCandidates.map(output => ({
926
+ ...output,
927
+ transactionStatus: output.transactionStatus ?? missingStatuses.get(output.transactionId)
928
+ }));
929
+ if (candidates.some(output => output.transactionStatus == null)) {
930
+ throw new WERR_errors_1.WERR_INTERNAL('managed change candidate is missing its source transaction status');
931
+ }
932
+ return candidates;
933
+ }
934
+ async function buildFundingPlanForTier(storage, context, candidates, tier, parent) {
935
+ try {
936
+ return {
937
+ plan: await buildFundingPlan(storage, context, candidates, tier.statuses, tier.policyTier, false, parent)
938
+ };
939
+ }
940
+ catch (error) {
941
+ if (!(error instanceof WERR_errors_1.WERR_INSUFFICIENT_FUNDS))
942
+ throw error;
943
+ }
944
+ // Pool shaping is optional. Before widening ancestry to unproven or sending
945
+ // parents, retry the same status tier with the former funding shape. This is
946
+ // the one-way compatibility guarantee: a preferred minimum can never
947
+ // manufacture starvation or force a pending chain.
948
+ try {
949
+ return {
950
+ plan: await buildFundingPlan(storage, context, candidates, tier.statuses, 'compatibility', true, parent)
951
+ };
952
+ }
953
+ catch (error) {
954
+ if (!(error instanceof WERR_errors_1.WERR_INSUFFICIENT_FUNDS))
955
+ throw error;
956
+ return { fundingError: error };
957
+ }
958
+ }
959
+ function firstPlanNeedsNoPendingComparison(storage, plan) {
960
+ const threshold = storage.managedChangePolicy.pendingComparisonInputs;
961
+ return threshold === -1 || plan.selected.length <= threshold;
962
+ }
963
+ async function chooseLowestSerializedFundingPlan(storage, plans, knownTxids) {
964
+ let chosen = plans[0];
965
+ let chosenCost = await fundingPlanSerializedCost(storage, chosen, knownTxids);
966
+ for (const alternative of plans.slice(1)) {
967
+ const cost = await fundingPlanSerializedCost(storage, alternative, knownTxids);
968
+ if (cost < chosenCost) {
969
+ chosen = alternative;
970
+ chosenCost = cost;
971
+ }
972
+ }
973
+ return chosen;
974
+ }
975
+ async function prepareFundingPlanWithLiquidityPolicy(storage, context, parent, trx) {
976
+ const [userId, vargs, , , changeBasket] = context;
977
+ const candidates = await resolveFundingCandidates(storage, userId, changeBasket.basketId, parent, trx);
978
+ const successful = [];
979
+ let fundingError;
980
+ for (const tier of FUNDING_TIERS) {
981
+ const attempted = await buildFundingPlanForTier(storage, context, candidates, tier, parent);
982
+ fundingError = attempted.fundingError ?? fundingError;
983
+ const plan = attempted.plan;
984
+ if (plan != null) {
985
+ successful.push(plan);
986
+ if (successful.length === 1 && firstPlanNeedsNoPendingComparison(storage, plan))
987
+ return plan;
988
+ }
989
+ }
990
+ if (successful.length > 0) {
991
+ if (successful.length === 1)
992
+ return successful[0];
993
+ return await chooseLowestSerializedFundingPlan(storage, successful, vargs.options.knownTxids);
994
+ }
995
+ if (fundingError != null)
996
+ throw fundingError;
997
+ throw new WERR_errors_1.WERR_INTERNAL('funding policy produced neither a plan nor an error');
998
+ }
797
999
  async function claimFundingPlan(storage, request) {
798
- const [userId, basketId, excludeSending, transactionId, noSendChangeIn, plan, trx] = request;
1000
+ const [userId, basketId, eligibleStatuses, transactionId, noSendChangeIn, plan, trx] = request;
799
1001
  if (plan.selected.length === 0) {
800
1002
  return { outputs: [], sourceTransactionCount: 0, hydratedScriptCount: 0, scriptSourceTransactionCount: 0 };
801
1003
  }
802
1004
  const noSendIds = new Set(noSendChangeIn.map(output => output.outputId));
803
- const statuses = ['completed', 'unproven'];
804
- if (!excludeSending)
805
- statuses.push('sending');
806
- const claim = await storage.transaction(async (claimTrx) => {
807
- const currentById = await storage.findFundingOutputsForUpdate(userId, plan.selected.map(output => output.outputId), statuses, claimTrx);
1005
+ const claim = await storage
1006
+ .transaction(async (claimTrx) => {
1007
+ const currentById = await storage.findFundingOutputsForUpdate(userId, plan.selected.map(output => output.outputId), eligibleStatuses, claimTrx);
808
1008
  const transactionIds = [...new Set(Object.values(currentById).map(output => output.transactionId))];
809
1009
  const claimed = [];
810
1010
  for (const planned of plan.selected) {
@@ -828,7 +1028,8 @@ async function claimFundingPlan(storage, request) {
828
1028
  output.spentBy = transactionId;
829
1029
  }
830
1030
  return { outputs: claimed, sourceTransactionCount: transactionIds.length };
831
- }, trx).catch(error => {
1031
+ }, trx)
1032
+ .catch(error => {
832
1033
  if (error instanceof FundingClaimConflict)
833
1034
  return { conflict: error.conflict };
834
1035
  throw error;
@@ -844,9 +1045,12 @@ async function claimFundingPlan(storage, request) {
844
1045
  }
845
1046
  async function hydrateFundingInputScripts(storage, outputs, trx) {
846
1047
  const missing = outputs.filter(output => output.lockingScript?.length !== output.scriptLength &&
847
- output.scriptLength != null && output.scriptLength > 0 &&
848
- output.scriptOffset != null && output.scriptOffset > 0 &&
849
- output.txid != null && output.txid !== '');
1048
+ output.scriptLength != null &&
1049
+ output.scriptLength > 0 &&
1050
+ output.scriptOffset != null &&
1051
+ output.scriptOffset > 0 &&
1052
+ output.txid != null &&
1053
+ output.txid !== '');
850
1054
  if (missing.length === 0)
851
1055
  return { hydratedScriptCount: 0, scriptSourceTransactionCount: 0 };
852
1056
  const byTxid = new Map();
@@ -891,7 +1095,7 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
891
1095
  const claim = await claimFundingPlan(storage, [
892
1096
  userId,
893
1097
  ctx.changeBasket.basketId,
894
- !vargs.isDelayed,
1098
+ plan.eligibleStatuses,
895
1099
  ctx.transactionId,
896
1100
  ctx.noSendChangeIn,
897
1101
  plan,
@@ -913,17 +1117,7 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
913
1117
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('noSendChange', 'outputs that remain spendable during action planning');
914
1118
  }
915
1119
  retryCount++;
916
- plan = await prepareFundingPlan(storage, [
917
- userId,
918
- vargs,
919
- ctx.xinputs,
920
- ctx.xoutputs,
921
- ctx.changeBasket,
922
- ctx.noSendChangeIn,
923
- ctx.feeModel,
924
- parent,
925
- trx
926
- ]);
1120
+ plan = await prepareFundingPlanWithLiquidityPolicy(storage, [userId, vargs, ctx.xinputs, ctx.xoutputs, ctx.changeBasket, ctx.noSendChangeIn, ctx.feeModel], parent, trx);
927
1121
  }
928
1122
  throw new WERR_errors_1.WERR_INVALID_OPERATION('wallet funding changed repeatedly during action planning; retry createAction');
929
1123
  });
@@ -960,10 +1154,16 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
960
1154
  for (let i = 0; i < count; i++)
961
1155
  val.push(rand(0, 255));
962
1156
  }
963
- return sdk_1.Utils.toBase64(val);
1157
+ return (0, utils_1.toBase64)(val);
964
1158
  };
965
1159
  // Generate a derivation prefix for the payment
966
1160
  const derivationPrefix = randomDerivation(16);
1161
+ ctx.derivationPrefix = derivationPrefix;
1162
+ for (const output of ctx.xoutputs) {
1163
+ if (output.purpose === 'change' && output.derivationSuffix == null) {
1164
+ output.derivationSuffix = randomDerivation(16);
1165
+ }
1166
+ }
967
1167
  const r = {
968
1168
  maxPossibleSatoshisAdjustment: gcr.maxPossibleSatoshisAdjustment,
969
1169
  allocatedChange,
@@ -998,6 +1198,21 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
998
1198
  };
999
1199
  return r;
1000
1200
  }
1201
+ function validateBrc177FundingPlan(vargs, plan) {
1202
+ if (vargs.brc177?.kind !== 'protected')
1203
+ return;
1204
+ if (plan.selected.length !== 1 || vargs.options.noSendChange.length !== 1) {
1205
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 protected action must use exactly one revocation anchor');
1206
+ }
1207
+ const selected = plan.selected[0];
1208
+ const anchor = vargs.options.noSendChange[0];
1209
+ if (selected.txid !== anchor.txid || selected.vout !== anchor.vout) {
1210
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 protected action selected a non-anchor wallet input');
1211
+ }
1212
+ if (plan.result.changeOutputs.length !== 0) {
1213
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 protected action must not create wallet change');
1214
+ }
1215
+ }
1001
1216
  /**
1002
1217
  * Avoid returning any known raw transaction data by converting any known transaction
1003
1218
  * in the `beef` to txidOnly.
@@ -1030,19 +1245,77 @@ function makeKnownTxidLookup(knownTxids) {
1030
1245
  return knownTxids.includes(txid);
1031
1246
  };
1032
1247
  }
1248
+ function preparedBeefStorage(storage) {
1249
+ return storage;
1250
+ }
1251
+ function appendPreparedBeefPreparation(preparations, writeEnabled, userId, rootTxids) {
1252
+ if (!writeEnabled)
1253
+ return;
1254
+ preparations.push({ userId, rootTxids });
1255
+ }
1256
+ function enqueuePreparedBeefs(storage, preparations) {
1257
+ const extension = preparedBeefStorage(storage);
1258
+ if (typeof extension.enqueuePreparedBeef !== 'function')
1259
+ return;
1260
+ for (const preparation of preparations)
1261
+ extension.enqueuePreparedBeef.call(storage, preparation);
1262
+ }
1263
+ async function loadAllocatedChangeBeef(storage, userId, txids, options, parent) {
1264
+ const extension = preparedBeefStorage(storage);
1265
+ const readEnabled = extension.preparedBeefReadsEnabled?.call(storage) === true;
1266
+ const writeEnabled = extension.preparedBeefWritesEnabled?.call(storage) === true;
1267
+ const lookup = readEnabled && typeof extension.lookupPreparedBeefs === 'function'
1268
+ ? await extension.lookupPreparedBeefs.call(storage, userId, txids, parent)
1269
+ : {
1270
+ beef: new sdk_1.Beef(),
1271
+ hitTxids: [],
1272
+ missingTxids: [...new Set(txids)],
1273
+ corruptCount: 0,
1274
+ byteLength: 0
1275
+ };
1276
+ const beef = lookup.beef;
1277
+ const preparations = [];
1278
+ if (lookup.missingTxids.length > 0) {
1279
+ const fetched = await storage.getBeefForTransactions(lookup.missingTxids, {
1280
+ ...options,
1281
+ mergeToBeef: undefined
1282
+ });
1283
+ if (lookup.hitTxids.length === 0) {
1284
+ // Preserve the original disabled/cold path without merging into an
1285
+ // otherwise empty BEEF solely for this optimization.
1286
+ appendPreparedBeefPreparation(preparations, writeEnabled, userId, lookup.missingTxids);
1287
+ return {
1288
+ beef: fetched,
1289
+ preparations,
1290
+ preparedHitCount: 0,
1291
+ canonicalFetchCount: lookup.missingTxids.length
1292
+ };
1293
+ }
1294
+ beef.mergeBeef(fetched);
1295
+ // A caller's knownTxids may leave placeholders which are unsuitable for a
1296
+ // reusable artifact. Rebuild those roots strictly in the worker.
1297
+ appendPreparedBeefPreparation(preparations, writeEnabled, userId, lookup.missingTxids);
1298
+ }
1299
+ return {
1300
+ beef,
1301
+ preparations,
1302
+ preparedHitCount: lookup.hitTxids.length,
1303
+ canonicalFetchCount: lookup.missingTxids.length
1304
+ };
1305
+ }
1033
1306
  function missingAllocatedChangeTxids(allocatedChange, beef, knownTxids) {
1034
1307
  const hasKnownTxid = makeKnownTxidLookup(knownTxids);
1035
1308
  return Array.from(new Set(allocatedChange
1036
1309
  .map(output => (0, utilityHelpers_1.verifyTruthy)(output.txid))
1037
1310
  .filter(txid => beef.findTxid(txid) == null && !hasKnownTxid(txid))));
1038
1311
  }
1039
- function startAllocatedChangeBeefPrefetch(storage, vargs, allocatedChange, beef, parent) {
1312
+ function startAllocatedChangeBeefPrefetch(storage, userId, vargs, allocatedChange, beef, parent) {
1040
1313
  if (vargs.options.returnTXIDOnly)
1041
- return Promise.resolve({ sourceCount: 0, txids: [] });
1314
+ return Promise.resolve({ sourceCount: 0, txids: [], preparations: [] });
1042
1315
  const knownTxids = vargs.options.knownTxids ?? [];
1043
1316
  const missing = missingAllocatedChangeTxids(allocatedChange, beef, knownTxids);
1044
1317
  if (missing.length === 0)
1045
- return Promise.resolve({ sourceCount: 0, txids: [] });
1318
+ return Promise.resolve({ sourceCount: 0, txids: [], preparations: [] });
1046
1319
  const options = {
1047
1320
  trustSelf: undefined,
1048
1321
  knownTxids,
@@ -1056,15 +1329,22 @@ function startAllocatedChangeBeefPrefetch(storage, vargs, allocatedChange, beef,
1056
1329
  'beef.missing_source_count': missing.length,
1057
1330
  'beef.storage_batch_count': missing.length === 0 ? 0 : 1
1058
1331
  }, async (span) => {
1059
- const fetched = await storage.getBeefForTransactions(missing, options);
1332
+ const fetched = await loadAllocatedChangeBeef(storage, userId, missing, options, parent);
1060
1333
  span?.end({
1061
1334
  attributes: {
1062
- 'beef.fetched_tx_count': fetched.txs.length,
1063
- 'beef.fetched_bump_count': fetched.bumps.length
1335
+ 'beef.fetched_tx_count': fetched.beef.txs.length,
1336
+ 'beef.fetched_bump_count': fetched.beef.bumps.length,
1337
+ 'beef.prepared_hit_count': fetched.preparedHitCount,
1338
+ 'beef.canonical_fetch_count': fetched.canonicalFetchCount
1064
1339
  }
1065
1340
  });
1066
1341
  return fetched;
1067
- }).then(prefetched => ({ beef: prefetched, sourceCount: missing.length, txids: missing }), error => ({ error, sourceCount: missing.length, txids: missing }));
1342
+ }).then(prefetched => ({
1343
+ beef: prefetched.beef,
1344
+ preparations: prefetched.preparations,
1345
+ sourceCount: missing.length,
1346
+ txids: missing
1347
+ }), error => ({ error, preparations: [], sourceCount: missing.length, txids: missing }));
1068
1348
  }
1069
1349
  function sameTxids(left, right) {
1070
1350
  if (left.length !== right.length)
@@ -1072,7 +1352,7 @@ function sameTxids(left, right) {
1072
1352
  const expected = new Set(left);
1073
1353
  return right.every(txid => expected.has(txid));
1074
1354
  }
1075
- async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef, prefetch, parent) {
1355
+ async function mergeAllocatedChangeBeefs(storage, userId, vargs, allocatedChange, beef, prefetch, parent) {
1076
1356
  const options = {
1077
1357
  trustSelf: undefined,
1078
1358
  knownTxids: vargs.options.knownTxids,
@@ -1083,7 +1363,7 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
1083
1363
  minProofLevel: undefined
1084
1364
  };
1085
1365
  if (vargs.options.returnTXIDOnly)
1086
- return undefined;
1366
+ return { inputBeef: undefined, preparations: [] };
1087
1367
  const knownTxids = vargs.options.knownTxids ?? [];
1088
1368
  const requiredBeforePrefetch = missingAllocatedChangeTxids(allocatedChange, beef, knownTxids);
1089
1369
  const prefetched = await traceStorageStep(storage, 'wallet.storage.create_action.beef_prefetch_join', parent, { 'beef.prefetch_source_count': 0 }, async (span) => {
@@ -1099,6 +1379,7 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
1099
1379
  throw prefetched.error;
1100
1380
  if (usePrefetch && prefetched.beef != null)
1101
1381
  beef.mergeBeef(prefetched.beef);
1382
+ const preparations = usePrefetch ? [...prefetched.preparations] : [];
1102
1383
  // If a concurrent spender forced the funding claim to be replanned, only
1103
1384
  // the newly selected roots remain. The normal uncontended path is empty.
1104
1385
  const missing = missingAllocatedChangeTxids(allocatedChange, beef, knownTxids);
@@ -1112,7 +1393,9 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
1112
1393
  'beef.prefetch_reused': usePrefetch
1113
1394
  }, async (span) => {
1114
1395
  if (missing.length > 0) {
1115
- fetched = await storage.getBeefForTransactions(missing, { ...options, mergeToBeef: undefined });
1396
+ const loaded = await loadAllocatedChangeBeef(storage, userId, missing, options, parent);
1397
+ fetched = loaded.beef;
1398
+ preparations.push(...loaded.preparations);
1116
1399
  }
1117
1400
  span?.end({
1118
1401
  attributes: {
@@ -1132,7 +1415,7 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
1132
1415
  }
1133
1416
  });
1134
1417
  });
1135
- return await traceStorageStep(storage, 'wallet.storage.create_action.beef_trim_serialize', parent, {
1418
+ const inputBeef = await traceStorageStep(storage, 'wallet.storage.create_action.beef_trim_serialize', parent, {
1136
1419
  'beef.tx_count': beef.txs.length,
1137
1420
  'beef.bump_count': beef.bumps.length,
1138
1421
  'beef.known_txid_count': knownTxids.length
@@ -1141,5 +1424,6 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
1141
1424
  span?.end({ attributes: { 'beef.result_bytes': result?.length ?? 0 } });
1142
1425
  return result;
1143
1426
  });
1427
+ return { inputBeef, preparations };
1144
1428
  }
1145
1429
  //# sourceMappingURL=createAction.js.map