@bopen-io/wallet-toolbox 2.1.21-parity-fix.2 → 2.6.2-brc153.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1207) hide show
  1. package/CHANGELOG.md +232 -6
  2. package/LICENSE.txt +58 -0
  3. package/README.md +236 -47
  4. package/docs/README.md +3 -1
  5. package/docs/action-batch-planning.md +220 -0
  6. package/docs/authentication-observability.md +106 -0
  7. package/docs/client.md +55 -14
  8. package/docs/managed-change-policy.md +79 -0
  9. package/docs/monitor.md +3 -2
  10. package/docs/setup.md +24 -4
  11. package/docs/storage.md +16 -6
  12. package/docs/wallet.md +55 -14
  13. package/out/src/CWIStyleWalletManager.d.ts +122 -12
  14. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  15. package/out/src/CWIStyleWalletManager.js +1006 -461
  16. package/out/src/CWIStyleWalletManager.js.map +1 -1
  17. package/out/src/Setup.d.ts +13 -6
  18. package/out/src/Setup.d.ts.map +1 -1
  19. package/out/src/Setup.js +15 -16
  20. package/out/src/Setup.js.map +1 -1
  21. package/out/src/SetupClient.d.ts +8 -6
  22. package/out/src/SetupClient.d.ts.map +1 -1
  23. package/out/src/SetupClient.js +11 -12
  24. package/out/src/SetupClient.js.map +1 -1
  25. package/out/src/SetupWallet.d.ts +6 -0
  26. package/out/src/SetupWallet.d.ts.map +1 -1
  27. package/out/src/ShamirWalletManager.d.ts +5 -5
  28. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  29. package/out/src/ShamirWalletManager.js +16 -9
  30. package/out/src/ShamirWalletManager.js.map +1 -1
  31. package/out/src/SimpleWalletManager.d.ts +12 -2
  32. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  33. package/out/src/SimpleWalletManager.js +73 -31
  34. package/out/src/SimpleWalletManager.js.map +1 -1
  35. package/out/src/Wallet.d.ts +88 -14
  36. package/out/src/Wallet.d.ts.map +1 -1
  37. package/out/src/Wallet.js +410 -249
  38. package/out/src/Wallet.js.map +1 -1
  39. package/out/src/WalletAuthenticationManager.d.ts +31 -7
  40. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  41. package/out/src/WalletAuthenticationManager.js +219 -35
  42. package/out/src/WalletAuthenticationManager.js.map +1 -1
  43. package/out/src/WalletLogger.d.ts.map +1 -1
  44. package/out/src/WalletLogger.js +45 -32
  45. package/out/src/WalletLogger.js.map +1 -1
  46. package/out/src/WalletPermissionsManager.d.ts +163 -19
  47. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  48. package/out/src/WalletPermissionsManager.js +1232 -1180
  49. package/out/src/WalletPermissionsManager.js.map +1 -1
  50. package/out/src/WalletSettingsManager.d.ts +2 -2
  51. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  52. package/out/src/WalletSettingsManager.js +3 -0
  53. package/out/src/WalletSettingsManager.js.map +1 -1
  54. package/out/src/entropy/EntropyCollector.d.ts +1 -1
  55. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  56. package/out/src/entropy/EntropyCollector.js +18 -20
  57. package/out/src/entropy/EntropyCollector.js.map +1 -1
  58. package/out/src/fundWalletP2PKH.d.ts +2 -2
  59. package/out/src/fundWalletP2PKH.d.ts.map +1 -1
  60. package/out/src/fundWalletP2PKH.js +15 -15
  61. package/out/src/fundWalletP2PKH.js.map +1 -1
  62. package/out/src/index.all.d.ts +2 -0
  63. package/out/src/index.all.d.ts.map +1 -1
  64. package/out/src/index.all.js +2 -0
  65. package/out/src/index.all.js.map +1 -1
  66. package/out/src/index.client.d.ts +2 -0
  67. package/out/src/index.client.d.ts.map +1 -1
  68. package/out/src/index.client.js +2 -0
  69. package/out/src/index.client.js.map +1 -1
  70. package/out/src/index.mobile.d.ts +3 -0
  71. package/out/src/index.mobile.d.ts.map +1 -1
  72. package/out/src/index.mobile.js +3 -0
  73. package/out/src/index.mobile.js.map +1 -1
  74. package/out/src/mockchain/MockChainMigrations.d.ts +3 -3
  75. package/out/src/mockchain/MockChainMigrations.d.ts.map +1 -1
  76. package/out/src/mockchain/MockChainMigrations.js +1 -1
  77. package/out/src/mockchain/MockChainMigrations.js.map +1 -1
  78. package/out/src/mockchain/MockChainStorage.d.ts.map +1 -1
  79. package/out/src/mockchain/MockChainStorage.js +9 -8
  80. package/out/src/mockchain/MockChainStorage.js.map +1 -1
  81. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  82. package/out/src/mockchain/MockChainTracker.js +12 -10
  83. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  84. package/out/src/mockchain/MockMiner.d.ts.map +1 -1
  85. package/out/src/mockchain/MockMiner.js +5 -5
  86. package/out/src/mockchain/MockMiner.js.map +1 -1
  87. package/out/src/mockchain/MockServices.d.ts +13 -0
  88. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  89. package/out/src/mockchain/MockServices.js +232 -283
  90. package/out/src/mockchain/MockServices.js.map +1 -1
  91. package/out/src/mockchain/merkleTree.d.ts.map +1 -1
  92. package/out/src/mockchain/merkleTree.js +61 -57
  93. package/out/src/mockchain/merkleTree.js.map +1 -1
  94. package/out/src/monitor/Monitor.d.ts +24 -4
  95. package/out/src/monitor/Monitor.d.ts.map +1 -1
  96. package/out/src/monitor/Monitor.js +158 -148
  97. package/out/src/monitor/Monitor.js.map +1 -1
  98. package/out/src/monitor/MonitorDaemon.d.ts +5 -2
  99. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  100. package/out/src/monitor/MonitorDaemon.js +79 -69
  101. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  102. package/out/src/monitor/index.all.js.map +1 -1
  103. package/out/src/monitor/tasks/TaskArcSSE.d.ts +12 -5
  104. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  105. package/out/src/monitor/tasks/TaskArcSSE.js +143 -135
  106. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  107. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +6 -4
  108. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  109. package/out/src/monitor/tasks/TaskCheckForProofs.js +141 -129
  110. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  111. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +63 -3
  112. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  113. package/out/src/monitor/tasks/TaskCheckNoSends.js +103 -13
  114. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  115. package/out/src/monitor/tasks/TaskCleanupActionBatches.d.ts +13 -0
  116. package/out/src/monitor/tasks/TaskCleanupActionBatches.d.ts.map +1 -0
  117. package/out/src/monitor/tasks/TaskCleanupActionBatches.js +24 -0
  118. package/out/src/monitor/tasks/TaskCleanupActionBatches.js.map +1 -0
  119. package/out/src/monitor/tasks/TaskClock.d.ts +2 -2
  120. package/out/src/monitor/tasks/TaskClock.d.ts.map +1 -1
  121. package/out/src/monitor/tasks/TaskClock.js +4 -3
  122. package/out/src/monitor/tasks/TaskClock.js.map +1 -1
  123. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts +1 -1
  124. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  125. package/out/src/monitor/tasks/TaskFailAbandoned.js +2 -1
  126. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  127. package/out/src/monitor/tasks/TaskMineBlock.d.ts +4 -2
  128. package/out/src/monitor/tasks/TaskMineBlock.d.ts.map +1 -1
  129. package/out/src/monitor/tasks/TaskMineBlock.js +5 -2
  130. package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -1
  131. package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts +1 -1
  132. package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts.map +1 -1
  133. package/out/src/monitor/tasks/TaskMonitorCallHistory.js +3 -2
  134. package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
  135. package/out/src/monitor/tasks/TaskNewHeader.d.ts +5 -4
  136. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  137. package/out/src/monitor/tasks/TaskNewHeader.js +22 -8
  138. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  139. package/out/src/monitor/tasks/TaskPurge.d.ts +4 -2
  140. package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
  141. package/out/src/monitor/tasks/TaskPurge.js +9 -5
  142. package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
  143. package/out/src/monitor/tasks/TaskReorg.d.ts +1 -1
  144. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  145. package/out/src/monitor/tasks/TaskReorg.js +6 -4
  146. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  147. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts +4 -2
  148. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  149. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +22 -17
  150. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  151. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +4 -2
  152. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  153. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +12 -5
  154. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  155. package/out/src/monitor/tasks/TaskReviewStatus.d.ts +4 -2
  156. package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
  157. package/out/src/monitor/tasks/TaskReviewStatus.js +16 -7
  158. package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
  159. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +4 -2
  160. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  161. package/out/src/monitor/tasks/TaskReviewUtxos.js +8 -2
  162. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  163. package/out/src/monitor/tasks/TaskSendWaiting.d.ts +4 -1
  164. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  165. package/out/src/monitor/tasks/TaskSendWaiting.js +63 -50
  166. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  167. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts +2 -2
  168. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts.map +1 -1
  169. package/out/src/monitor/tasks/TaskSyncWhenIdle.js +4 -6
  170. package/out/src/monitor/tasks/TaskSyncWhenIdle.js.map +1 -1
  171. package/out/src/monitor/tasks/TaskUnFail.d.ts +4 -2
  172. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  173. package/out/src/monitor/tasks/TaskUnFail.js +13 -67
  174. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  175. package/out/src/monitor/tasks/WalletMonitorTask.d.ts.map +1 -1
  176. package/out/src/monitor/tasks/WalletMonitorTask.js +10 -5
  177. package/out/src/monitor/tasks/WalletMonitorTask.js.map +1 -1
  178. package/out/src/monitor/tasks/index.all.d.ts +1 -0
  179. package/out/src/monitor/tasks/index.all.d.ts.map +1 -1
  180. package/out/src/monitor/tasks/index.all.js +1 -0
  181. package/out/src/monitor/tasks/index.all.js.map +1 -1
  182. package/out/src/sdk/ActionBatch.interfaces.d.ts +159 -0
  183. package/out/src/sdk/ActionBatch.interfaces.d.ts.map +1 -0
  184. package/out/src/sdk/ActionBatch.interfaces.js +3 -0
  185. package/out/src/sdk/ActionBatch.interfaces.js.map +1 -0
  186. package/out/src/sdk/CertOpsWallet.d.ts +3 -3
  187. package/out/src/sdk/CertOpsWallet.d.ts.map +1 -1
  188. package/out/src/sdk/PrivilegedKeyManager.d.ts +3 -3
  189. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  190. package/out/src/sdk/PrivilegedKeyManager.js +75 -50
  191. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  192. package/out/src/sdk/WERR_errors.d.ts +3 -3
  193. package/out/src/sdk/WERR_errors.d.ts.map +1 -1
  194. package/out/src/sdk/WERR_errors.js +29 -14
  195. package/out/src/sdk/WERR_errors.js.map +1 -1
  196. package/out/src/sdk/WalletError.d.ts +4 -1
  197. package/out/src/sdk/WalletError.d.ts.map +1 -1
  198. package/out/src/sdk/WalletError.js +63 -58
  199. package/out/src/sdk/WalletError.js.map +1 -1
  200. package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
  201. package/out/src/sdk/WalletErrorFromJson.js +1 -3
  202. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  203. package/out/src/sdk/WalletServices.interfaces.d.ts +45 -20
  204. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  205. package/out/src/sdk/WalletStorage.interfaces.d.ts +92 -64
  206. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  207. package/out/src/sdk/index.d.ts +1 -0
  208. package/out/src/sdk/index.d.ts.map +1 -1
  209. package/out/src/sdk/index.js +1 -0
  210. package/out/src/sdk/index.js.map +1 -1
  211. package/out/src/sdk/types.d.ts +14 -5
  212. package/out/src/sdk/types.d.ts.map +1 -1
  213. package/out/src/sdk/types.js +13 -4
  214. package/out/src/sdk/types.js.map +1 -1
  215. package/out/src/services/ServiceCollection.d.ts +6 -6
  216. package/out/src/services/ServiceCollection.d.ts.map +1 -1
  217. package/out/src/services/ServiceCollection.js +14 -9
  218. package/out/src/services/ServiceCollection.js.map +1 -1
  219. package/out/src/services/Services.d.ts +16 -2
  220. package/out/src/services/Services.d.ts.map +1 -1
  221. package/out/src/services/Services.js +320 -241
  222. package/out/src/services/Services.js.map +1 -1
  223. package/out/src/services/chaintracker/BHServiceClient.d.ts +7 -7
  224. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  225. package/out/src/services/chaintracker/BHServiceClient.js +22 -16
  226. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  227. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +5 -1
  228. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  229. package/out/src/services/chaintracker/ChaintracksChainTracker.js +61 -19
  230. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  231. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts +8 -6
  232. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  233. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +1 -1
  234. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  235. package/out/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.d.ts +1 -1
  236. package/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +11 -0
  238. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
  239. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +29 -10
  240. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  241. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +369 -259
  242. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  243. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +6 -1
  244. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  245. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +39 -44
  246. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  247. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +3 -3
  248. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  249. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +24 -15
  250. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  251. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +64 -0
  252. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -0
  253. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +318 -0
  254. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -0
  255. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  256. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +9 -2
  257. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  258. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts +1 -2
  259. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  260. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +10 -3
  261. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  262. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  263. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  264. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts +27 -0
  265. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts.map +1 -0
  266. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +64 -0
  267. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -0
  268. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  269. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +6 -5
  270. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  271. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  272. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +3 -1
  273. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  274. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  275. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +4 -2
  276. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  277. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +24 -0
  278. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -0
  279. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +68 -0
  280. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -0
  281. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts +2 -2
  282. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  283. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +3 -10
  284. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  285. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +13 -0
  286. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  287. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +50 -10
  288. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  289. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  290. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +4 -3
  291. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  292. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +14 -4
  293. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  294. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +120 -143
  295. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  296. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +22 -8
  297. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  298. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +106 -54
  299. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  300. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  301. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +12 -17
  302. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  303. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +3 -3
  304. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  305. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +15 -14
  306. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  307. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +3 -0
  308. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  309. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +85 -66
  310. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  311. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +4 -0
  312. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  313. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +128 -101
  314. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  315. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +6 -2
  316. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  317. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +170 -158
  318. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  319. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.d.ts.map +1 -1
  320. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.js +0 -21
  321. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.js.map +1 -1
  322. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +9 -2
  323. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  324. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +142 -92
  325. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  326. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +58 -0
  327. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
  328. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +143 -28
  329. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  330. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts +18 -0
  331. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts.map +1 -0
  332. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js +24 -0
  333. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js.map +1 -0
  334. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts +2 -3
  335. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  336. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +4 -22
  337. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  338. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts +2 -4
  339. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  340. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js +14 -29
  341. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  342. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts +2 -3
  343. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  344. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +4 -22
  345. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  346. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts +2 -1
  347. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  348. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +3 -15
  349. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  350. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts +2 -2
  351. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  352. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +3 -15
  353. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  354. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts +2 -1
  355. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  356. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +3 -15
  357. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  358. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +6 -1
  359. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
  360. package/out/src/services/chaintracker/chaintracks/index.mobile.js +5 -0
  361. package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
  362. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +8 -1
  363. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  364. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +282 -252
  365. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  366. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  367. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +12 -7
  368. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  369. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  370. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +53 -29
  371. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  372. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +5 -5
  373. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  374. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +34 -11
  375. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  376. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +8 -1
  377. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  378. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +54 -13
  379. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  380. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +10 -12
  381. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  382. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +30 -34
  383. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  384. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  385. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js +28 -18
  386. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  387. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +2 -2
  388. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  389. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +4 -6
  390. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  391. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +2 -12
  392. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  393. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +72 -63
  394. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  395. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts.map +1 -1
  396. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js +4 -2
  397. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js.map +1 -1
  398. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
  399. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +9 -10
  400. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  401. package/out/src/services/createDefaultWalletServicesOptions.d.ts +33 -1
  402. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  403. package/out/src/services/createDefaultWalletServicesOptions.js +94 -15
  404. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  405. package/out/src/services/networkConfig.d.ts +18 -0
  406. package/out/src/services/networkConfig.d.ts.map +1 -0
  407. package/out/src/services/networkConfig.js +92 -0
  408. package/out/src/services/networkConfig.js.map +1 -0
  409. package/out/src/services/providers/ARC.d.ts +8 -0
  410. package/out/src/services/providers/ARC.d.ts.map +1 -1
  411. package/out/src/services/providers/ARC.js +167 -92
  412. package/out/src/services/providers/ARC.js.map +1 -1
  413. package/out/src/services/providers/ArcSSEClient.d.ts +1 -0
  414. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  415. package/out/src/services/providers/ArcSSEClient.js +21 -17
  416. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  417. package/out/src/services/providers/Arcade.d.ts +77 -0
  418. package/out/src/services/providers/Arcade.d.ts.map +1 -0
  419. package/out/src/services/providers/Arcade.js +356 -0
  420. package/out/src/services/providers/Arcade.js.map +1 -0
  421. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  422. package/out/src/services/providers/Bitails.js +128 -103
  423. package/out/src/services/providers/Bitails.js.map +1 -1
  424. package/out/src/services/providers/SdkWhatsOnChain.d.ts +1 -1
  425. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  426. package/out/src/services/providers/SdkWhatsOnChain.js +18 -3
  427. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  428. package/out/src/services/providers/WhatsOnChain.d.ts +10 -2
  429. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  430. package/out/src/services/providers/WhatsOnChain.js +145 -236
  431. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  432. package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
  433. package/out/src/services/providers/exchangeRates.js +4 -4
  434. package/out/src/services/providers/exchangeRates.js.map +1 -1
  435. package/out/src/services/providers/getBeefForTxid.d.ts +1 -1
  436. package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
  437. package/out/src/services/providers/getBeefForTxid.js +2 -1
  438. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  439. package/out/src/services/providers/whatsOnChainHelpers.d.ts +68 -0
  440. package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -0
  441. package/out/src/services/providers/whatsOnChainHelpers.js +147 -0
  442. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -0
  443. package/out/src/signer/WalletSigner.d.ts.map +1 -1
  444. package/out/src/signer/WalletSigner.js +4 -1
  445. package/out/src/signer/WalletSigner.js.map +1 -1
  446. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +29 -0
  447. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -0
  448. package/out/src/signer/actionBatch/ActionBatchPlanner.js +346 -0
  449. package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -0
  450. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +33 -0
  451. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -0
  452. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +869 -0
  453. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -0
  454. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +11 -0
  455. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -0
  456. package/out/src/signer/actionBatch/actionBatchBootstrap.js +38 -0
  457. package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -0
  458. package/out/src/signer/methods/acquireDirectCertificate.js +2 -3
  459. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  460. package/out/src/signer/methods/buildSignableTransaction.d.ts +54 -0
  461. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  462. package/out/src/signer/methods/buildSignableTransaction.js +215 -100
  463. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  464. package/out/src/signer/methods/completeSignedTransaction.d.ts +3 -7
  465. package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
  466. package/out/src/signer/methods/completeSignedTransaction.js +78 -80
  467. package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
  468. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  469. package/out/src/signer/methods/createAction.js +81 -41
  470. package/out/src/signer/methods/createAction.js.map +1 -1
  471. package/out/src/signer/methods/internalizeAction.d.ts +16 -5
  472. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  473. package/out/src/signer/methods/internalizeAction.js +34 -18
  474. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  475. package/out/src/signer/methods/proveCertificate.js +1 -1
  476. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  477. package/out/src/signer/methods/resultBeef.d.ts +4 -0
  478. package/out/src/signer/methods/resultBeef.d.ts.map +1 -0
  479. package/out/src/signer/methods/resultBeef.js +12 -0
  480. package/out/src/signer/methods/resultBeef.js.map +1 -0
  481. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  482. package/out/src/signer/methods/signAction.js +42 -15
  483. package/out/src/signer/methods/signAction.js.map +1 -1
  484. package/out/src/signer/methods/verifyUnlockScripts.d.ts +17 -0
  485. package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -0
  486. package/out/src/signer/methods/verifyUnlockScripts.js +373 -0
  487. package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -0
  488. package/out/src/storage/StorageIdb.d.ts +51 -6
  489. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  490. package/out/src/storage/StorageIdb.js +929 -1324
  491. package/out/src/storage/StorageIdb.js.map +1 -1
  492. package/out/src/storage/StorageKnex.d.ts +51 -3
  493. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  494. package/out/src/storage/StorageKnex.js +751 -314
  495. package/out/src/storage/StorageKnex.js.map +1 -1
  496. package/out/src/storage/StorageProvider.d.ts +117 -2
  497. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  498. package/out/src/storage/StorageProvider.js +735 -254
  499. package/out/src/storage/StorageProvider.js.map +1 -1
  500. package/out/src/storage/StorageReader.d.ts +13 -5
  501. package/out/src/storage/StorageReader.d.ts.map +1 -1
  502. package/out/src/storage/StorageReader.js +21 -15
  503. package/out/src/storage/StorageReader.js.map +1 -1
  504. package/out/src/storage/StorageReaderWriter.d.ts +0 -1
  505. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  506. package/out/src/storage/StorageReaderWriter.js +32 -35
  507. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  508. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  509. package/out/src/storage/StorageSyncReader.js +6 -4
  510. package/out/src/storage/StorageSyncReader.js.map +1 -1
  511. package/out/src/storage/WalletStorageManager.d.ts +13 -0
  512. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  513. package/out/src/storage/WalletStorageManager.js +179 -103
  514. package/out/src/storage/WalletStorageManager.js.map +1 -1
  515. package/out/src/storage/adminServer/adminServer.d.ts +80 -1
  516. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  517. package/out/src/storage/adminServer/adminServer.js +90 -72
  518. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  519. package/out/src/storage/adminServer/adminUi.d.ts.map +1 -1
  520. package/out/src/storage/adminServer/adminUi.js.map +1 -1
  521. package/out/src/storage/idbHelpers.d.ts +44 -0
  522. package/out/src/storage/idbHelpers.d.ts.map +1 -0
  523. package/out/src/storage/idbHelpers.js +395 -0
  524. package/out/src/storage/idbHelpers.js.map +1 -0
  525. package/out/src/storage/index.all.d.ts +6 -0
  526. package/out/src/storage/index.all.d.ts.map +1 -1
  527. package/out/src/storage/index.all.js +6 -0
  528. package/out/src/storage/index.all.js.map +1 -1
  529. package/out/src/storage/index.client.d.ts +4 -0
  530. package/out/src/storage/index.client.d.ts.map +1 -1
  531. package/out/src/storage/index.client.js +4 -0
  532. package/out/src/storage/index.client.js.map +1 -1
  533. package/out/src/storage/index.mobile.d.ts +3 -0
  534. package/out/src/storage/index.mobile.d.ts.map +1 -1
  535. package/out/src/storage/index.mobile.js +3 -0
  536. package/out/src/storage/index.mobile.js.map +1 -1
  537. package/out/src/storage/methods/ListActionsSpecOp.d.ts +6 -1
  538. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  539. package/out/src/storage/methods/ListActionsSpecOp.js +75 -9
  540. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  541. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +2 -0
  542. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  543. package/out/src/storage/methods/ListOutputsSpecOp.js +43 -29
  544. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  545. package/out/src/storage/methods/actionBatch.d.ts +15 -0
  546. package/out/src/storage/methods/actionBatch.d.ts.map +1 -0
  547. package/out/src/storage/methods/actionBatch.js +725 -0
  548. package/out/src/storage/methods/actionBatch.js.map +1 -0
  549. package/out/src/storage/methods/actionBatchBlobs.d.ts +15 -0
  550. package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -0
  551. package/out/src/storage/methods/actionBatchBlobs.js +184 -0
  552. package/out/src/storage/methods/actionBatchBlobs.js.map +1 -0
  553. package/out/src/storage/methods/actionBatchValidation.d.ts +17 -0
  554. package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -0
  555. package/out/src/storage/methods/actionBatchValidation.js +416 -0
  556. package/out/src/storage/methods/actionBatchValidation.js.map +1 -0
  557. package/out/src/storage/methods/actionPlanning.d.ts +26 -0
  558. package/out/src/storage/methods/actionPlanning.d.ts.map +1 -0
  559. package/out/src/storage/methods/actionPlanning.js +103 -0
  560. package/out/src/storage/methods/actionPlanning.js.map +1 -0
  561. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +63 -1
  562. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  563. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +245 -92
  564. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  565. package/out/src/storage/methods/availableManagedChange.d.ts +11 -0
  566. package/out/src/storage/methods/availableManagedChange.d.ts.map +1 -0
  567. package/out/src/storage/methods/availableManagedChange.js +25 -0
  568. package/out/src/storage/methods/availableManagedChange.js.map +1 -0
  569. package/out/src/storage/methods/createAction.d.ts +1 -1
  570. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  571. package/out/src/storage/methods/createAction.js +783 -416
  572. package/out/src/storage/methods/createAction.js.map +1 -1
  573. package/out/src/storage/methods/generateChange.d.ts +2 -2
  574. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  575. package/out/src/storage/methods/generateChange.js +188 -127
  576. package/out/src/storage/methods/generateChange.js.map +1 -1
  577. package/out/src/storage/methods/getBeefForTransaction.d.ts +7 -0
  578. package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
  579. package/out/src/storage/methods/getBeefForTransaction.js +291 -63
  580. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  581. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  582. package/out/src/storage/methods/getSyncChunk.js +11 -8
  583. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  584. package/out/src/storage/methods/internalizeAction.d.ts +77 -6
  585. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  586. package/out/src/storage/methods/internalizeAction.js +372 -139
  587. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  588. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  589. package/out/src/storage/methods/listActionsIdb.js +87 -110
  590. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  591. package/out/src/storage/methods/listActionsKnex.d.ts +1 -1
  592. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
  593. package/out/src/storage/methods/listActionsKnex.js +97 -118
  594. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  595. package/out/src/storage/methods/listCertificates.d.ts +2 -2
  596. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  597. package/out/src/storage/methods/listCertificates.js +8 -8
  598. package/out/src/storage/methods/listCertificates.js.map +1 -1
  599. package/out/src/storage/methods/listOutputsIdb.d.ts +1 -1
  600. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  601. package/out/src/storage/methods/listOutputsIdb.js +144 -150
  602. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  603. package/out/src/storage/methods/listOutputsKnex.d.ts +2 -2
  604. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  605. package/out/src/storage/methods/listOutputsKnex.js +217 -246
  606. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  607. package/out/src/storage/methods/managedChange.d.ts +26 -0
  608. package/out/src/storage/methods/managedChange.d.ts.map +1 -0
  609. package/out/src/storage/methods/managedChange.js +42 -0
  610. package/out/src/storage/methods/managedChange.js.map +1 -0
  611. package/out/src/storage/methods/offsetKey.d.ts +1 -1
  612. package/out/src/storage/methods/offsetKey.d.ts.map +1 -1
  613. package/out/src/storage/methods/offsetKey.js +3 -6
  614. package/out/src/storage/methods/offsetKey.js.map +1 -1
  615. package/out/src/storage/methods/processAction.d.ts +2 -11
  616. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  617. package/out/src/storage/methods/processAction.js +173 -106
  618. package/out/src/storage/methods/processAction.js.map +1 -1
  619. package/out/src/storage/methods/purgeData.d.ts +1 -1
  620. package/out/src/storage/methods/purgeData.d.ts.map +1 -1
  621. package/out/src/storage/methods/purgeData.js +169 -172
  622. package/out/src/storage/methods/purgeData.js.map +1 -1
  623. package/out/src/storage/methods/purgeDataIdb.d.ts +1 -1
  624. package/out/src/storage/methods/purgeDataIdb.d.ts.map +1 -1
  625. package/out/src/storage/methods/purgeDataIdb.js +2 -2
  626. package/out/src/storage/methods/purgeDataIdb.js.map +1 -1
  627. package/out/src/storage/methods/reviewStatus.d.ts +4 -3
  628. package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
  629. package/out/src/storage/methods/reviewStatus.js +54 -14
  630. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  631. package/out/src/storage/methods/reviewStatusIdb.d.ts +3 -3
  632. package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
  633. package/out/src/storage/methods/reviewStatusIdb.js +54 -13
  634. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  635. package/out/src/storage/methods/utils.Buffer.d.ts.map +1 -1
  636. package/out/src/storage/methods/utils.Buffer.js.map +1 -1
  637. package/out/src/storage/methods/utils.d.ts.map +1 -1
  638. package/out/src/storage/methods/utils.js +7 -1
  639. package/out/src/storage/methods/utils.js.map +1 -1
  640. package/out/src/storage/portable/index.d.ts +55 -0
  641. package/out/src/storage/portable/index.d.ts.map +1 -0
  642. package/out/src/storage/portable/index.js +872 -0
  643. package/out/src/storage/portable/index.js.map +1 -0
  644. package/out/src/storage/remoting/BinaryJson.d.ts +10 -0
  645. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -0
  646. package/out/src/storage/remoting/BinaryJson.js +218 -0
  647. package/out/src/storage/remoting/BinaryJson.js.map +1 -0
  648. package/out/src/storage/remoting/KnexPaymentReplayStore.d.ts +12 -0
  649. package/out/src/storage/remoting/KnexPaymentReplayStore.d.ts.map +1 -0
  650. package/out/src/storage/remoting/KnexPaymentReplayStore.js +46 -0
  651. package/out/src/storage/remoting/KnexPaymentReplayStore.js.map +1 -0
  652. package/out/src/storage/remoting/KnexSessionManager.d.ts +57 -0
  653. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -0
  654. package/out/src/storage/remoting/KnexSessionManager.js +256 -0
  655. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -0
  656. package/out/src/storage/remoting/RateLimitPolicy.d.ts +10 -0
  657. package/out/src/storage/remoting/RateLimitPolicy.d.ts.map +1 -0
  658. package/out/src/storage/remoting/RateLimitPolicy.js +37 -0
  659. package/out/src/storage/remoting/RateLimitPolicy.js.map +1 -0
  660. package/out/src/storage/remoting/StorageClient.d.ts +7 -271
  661. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  662. package/out/src/storage/remoting/StorageClient.js +87 -458
  663. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  664. package/out/src/storage/remoting/StorageClientBase.d.ts +318 -0
  665. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -0
  666. package/out/src/storage/remoting/StorageClientBase.js +474 -0
  667. package/out/src/storage/remoting/StorageClientBase.js.map +1 -0
  668. package/out/src/storage/remoting/StorageMobile.d.ts +8 -276
  669. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  670. package/out/src/storage/remoting/StorageMobile.js +43 -435
  671. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  672. package/out/src/storage/remoting/StorageServer.d.ts +106 -9
  673. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  674. package/out/src/storage/remoting/StorageServer.js +628 -225
  675. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  676. package/out/src/storage/remoting/edgePolicy.d.ts +84 -0
  677. package/out/src/storage/remoting/edgePolicy.d.ts.map +1 -0
  678. package/out/src/storage/remoting/edgePolicy.js +570 -0
  679. package/out/src/storage/remoting/edgePolicy.js.map +1 -0
  680. package/out/src/storage/remoting/entityValidationHelpers.d.ts +29 -0
  681. package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -0
  682. package/out/src/storage/remoting/entityValidationHelpers.js +108 -0
  683. package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -0
  684. package/out/src/storage/schema/KnexMigrations.d.ts +7 -3
  685. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  686. package/out/src/storage/schema/KnexMigrations.js +173 -11
  687. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  688. package/out/src/storage/schema/StorageIdbSchema.d.ts +27 -1
  689. package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
  690. package/out/src/storage/schema/entities/EntityBase.d.ts.map +1 -1
  691. package/out/src/storage/schema/entities/EntityBase.js +1 -0
  692. package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
  693. package/out/src/storage/schema/entities/EntityCertificate.d.ts.map +1 -1
  694. package/out/src/storage/schema/entities/EntityCertificate.js +5 -4
  695. package/out/src/storage/schema/entities/EntityCertificate.js.map +1 -1
  696. package/out/src/storage/schema/entities/EntityCertificateField.d.ts.map +1 -1
  697. package/out/src/storage/schema/entities/EntityCertificateField.js +5 -7
  698. package/out/src/storage/schema/entities/EntityCertificateField.js.map +1 -1
  699. package/out/src/storage/schema/entities/EntityCommission.d.ts.map +1 -1
  700. package/out/src/storage/schema/entities/EntityCommission.js +6 -8
  701. package/out/src/storage/schema/entities/EntityCommission.js.map +1 -1
  702. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  703. package/out/src/storage/schema/entities/EntityOutput.js +21 -24
  704. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  705. package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
  706. package/out/src/storage/schema/entities/EntityOutputBasket.js +7 -7
  707. package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
  708. package/out/src/storage/schema/entities/EntityOutputTag.d.ts.map +1 -1
  709. package/out/src/storage/schema/entities/EntityOutputTag.js +2 -2
  710. package/out/src/storage/schema/entities/EntityOutputTag.js.map +1 -1
  711. package/out/src/storage/schema/entities/EntityOutputTagMap.d.ts.map +1 -1
  712. package/out/src/storage/schema/entities/EntityOutputTagMap.js +4 -6
  713. package/out/src/storage/schema/entities/EntityOutputTagMap.js.map +1 -1
  714. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +8 -4
  715. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  716. package/out/src/storage/schema/entities/EntityProvenTx.js +77 -64
  717. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  718. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts +11 -2
  719. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts.map +1 -1
  720. package/out/src/storage/schema/entities/EntityProvenTxReq.js +122 -74
  721. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  722. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  723. package/out/src/storage/schema/entities/EntitySyncState.js +40 -45
  724. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  725. package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
  726. package/out/src/storage/schema/entities/EntityTransaction.js +30 -31
  727. package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
  728. package/out/src/storage/schema/entities/EntityTxLabel.d.ts.map +1 -1
  729. package/out/src/storage/schema/entities/EntityTxLabel.js +2 -2
  730. package/out/src/storage/schema/entities/EntityTxLabel.js.map +1 -1
  731. package/out/src/storage/schema/entities/EntityTxLabelMap.d.ts.map +1 -1
  732. package/out/src/storage/schema/entities/EntityTxLabelMap.js +4 -6
  733. package/out/src/storage/schema/entities/EntityTxLabelMap.js.map +1 -1
  734. package/out/src/storage/schema/entities/EntityUser.d.ts.map +1 -1
  735. package/out/src/storage/schema/entities/EntityUser.js +3 -3
  736. package/out/src/storage/schema/entities/EntityUser.js.map +1 -1
  737. package/out/src/storage/schema/entities/MergeEntity.d.ts.map +1 -1
  738. package/out/src/storage/schema/entities/MergeEntity.js +17 -18
  739. package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
  740. package/out/src/storage/schema/tables/TableActionBatch.d.ts +26 -0
  741. package/out/src/storage/schema/tables/TableActionBatch.d.ts.map +1 -0
  742. package/out/src/storage/schema/tables/TableActionBatch.js +3 -0
  743. package/out/src/storage/schema/tables/TableActionBatch.js.map +1 -0
  744. package/out/src/storage/schema/tables/TableAuthSession.d.ts +20 -0
  745. package/out/src/storage/schema/tables/TableAuthSession.d.ts.map +1 -0
  746. package/out/src/storage/schema/tables/TableAuthSession.js +15 -0
  747. package/out/src/storage/schema/tables/TableAuthSession.js.map +1 -0
  748. package/out/src/storage/schema/tables/TableCertificate.d.ts +2 -1
  749. package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
  750. package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
  751. package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
  752. package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
  753. package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
  754. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
  755. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
  756. package/out/src/storage/schema/tables/TableOutput.d.ts +3 -2
  757. package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
  758. package/out/src/storage/schema/tables/TableOutput.js +1 -1
  759. package/out/src/storage/schema/tables/TableOutput.js.map +1 -1
  760. package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
  761. package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
  762. package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
  763. package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
  764. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
  765. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
  766. package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
  767. package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
  768. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +24 -1
  769. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
  770. package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
  771. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  772. package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
  773. package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
  774. package/out/src/storage/schema/tables/TableTransaction.d.ts +1 -1
  775. package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
  776. package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
  777. package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
  778. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
  779. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
  780. package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
  781. package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
  782. package/out/src/storage/schema/tables/index.d.ts +2 -0
  783. package/out/src/storage/schema/tables/index.d.ts.map +1 -1
  784. package/out/src/storage/schema/tables/index.js +2 -0
  785. package/out/src/storage/schema/tables/index.js.map +1 -1
  786. package/out/src/storage/storageProviderHelpers.d.ts +35 -0
  787. package/out/src/storage/storageProviderHelpers.d.ts.map +1 -0
  788. package/out/src/storage/storageProviderHelpers.js +106 -0
  789. package/out/src/storage/storageProviderHelpers.js.map +1 -0
  790. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts +4 -2
  791. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  792. package/out/src/storage/sync/StorageMySQLDojoReader.js +65 -46
  793. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  794. package/out/src/utility/Format.d.ts.map +1 -1
  795. package/out/src/utility/Format.js +15 -49
  796. package/out/src/utility/Format.js.map +1 -1
  797. package/out/src/utility/ScriptTemplateBRC29.d.ts +3 -2
  798. package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
  799. package/out/src/utility/ScriptTemplateBRC29.js +22 -11
  800. package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
  801. package/out/src/utility/actionBatchDigest.d.ts +9 -0
  802. package/out/src/utility/actionBatchDigest.d.ts.map +1 -0
  803. package/out/src/utility/actionBatchDigest.js +86 -0
  804. package/out/src/utility/actionBatchDigest.js.map +1 -0
  805. package/out/src/utility/actionBatchPack.d.ts +16 -0
  806. package/out/src/utility/actionBatchPack.d.ts.map +1 -0
  807. package/out/src/utility/actionBatchPack.js +220 -0
  808. package/out/src/utility/actionBatchPack.js.map +1 -0
  809. package/out/src/utility/aggregateResults.d.ts +1 -1
  810. package/out/src/utility/aggregateResults.d.ts.map +1 -1
  811. package/out/src/utility/aggregateResults.js +2 -2
  812. package/out/src/utility/aggregateResults.js.map +1 -1
  813. package/out/src/utility/beefForTxids.d.ts +9 -0
  814. package/out/src/utility/beefForTxids.d.ts.map +1 -0
  815. package/out/src/utility/beefForTxids.js +35 -0
  816. package/out/src/utility/beefForTxids.js.map +1 -0
  817. package/out/src/utility/brc114ActionTimeLabels.d.ts +2 -2
  818. package/out/src/utility/brc114ActionTimeLabels.d.ts.map +1 -1
  819. package/out/src/utility/brc114ActionTimeLabels.js +31 -28
  820. package/out/src/utility/brc114ActionTimeLabels.js.map +1 -1
  821. package/out/src/utility/brc153ReferenceLabels.d.ts +23 -0
  822. package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -0
  823. package/out/src/utility/brc153ReferenceLabels.js +51 -0
  824. package/out/src/utility/brc153ReferenceLabels.js.map +1 -0
  825. package/out/src/utility/formatUnknown.d.ts +6 -0
  826. package/out/src/utility/formatUnknown.d.ts.map +1 -0
  827. package/out/src/utility/formatUnknown.js +39 -0
  828. package/out/src/utility/formatUnknown.js.map +1 -0
  829. package/out/src/utility/hashWasm.d.ts +5 -0
  830. package/out/src/utility/hashWasm.d.ts.map +1 -0
  831. package/out/src/utility/hashWasm.js +15 -0
  832. package/out/src/utility/hashWasm.js.map +1 -0
  833. package/out/src/utility/identityUtils.d.ts +12 -6
  834. package/out/src/utility/identityUtils.d.ts.map +1 -1
  835. package/out/src/utility/identityUtils.js +82 -38
  836. package/out/src/utility/identityUtils.js.map +1 -1
  837. package/out/src/utility/index.all.d.ts +2 -0
  838. package/out/src/utility/index.all.d.ts.map +1 -1
  839. package/out/src/utility/index.all.js +2 -0
  840. package/out/src/utility/index.all.js.map +1 -1
  841. package/out/src/utility/index.client.d.ts +2 -0
  842. package/out/src/utility/index.client.d.ts.map +1 -1
  843. package/out/src/utility/index.client.js +2 -0
  844. package/out/src/utility/index.client.js.map +1 -1
  845. package/out/src/utility/parseTxScriptOffsets.d.ts +5 -5
  846. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  847. package/out/src/utility/parseTxScriptOffsets.js +1 -1
  848. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  849. package/out/src/utility/stampLog.d.ts.map +1 -1
  850. package/out/src/utility/stampLog.js +53 -44
  851. package/out/src/utility/stampLog.js.map +1 -1
  852. package/out/src/utility/traceContext.d.ts +13 -0
  853. package/out/src/utility/traceContext.d.ts.map +1 -0
  854. package/out/src/utility/traceContext.js +34 -0
  855. package/out/src/utility/traceContext.js.map +1 -0
  856. package/out/src/utility/tscProofToMerklePath.js +1 -1
  857. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  858. package/out/src/utility/utilityHelpers.buffer.d.ts +5 -3
  859. package/out/src/utility/utilityHelpers.buffer.d.ts.map +1 -1
  860. package/out/src/utility/utilityHelpers.buffer.js +3 -3
  861. package/out/src/utility/utilityHelpers.buffer.js.map +1 -1
  862. package/out/src/utility/utilityHelpers.d.ts +3 -4
  863. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  864. package/out/src/utility/utilityHelpers.js +24 -16
  865. package/out/src/utility/utilityHelpers.js.map +1 -1
  866. package/out/src/utility/utilityHelpers.noBuffer.d.ts +7 -3
  867. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  868. package/out/src/utility/utilityHelpers.noBuffer.js +7 -8
  869. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  870. package/out/src/wab-client/WABClient.d.ts +36 -90
  871. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  872. package/out/src/wab-client/WABClient.js +103 -150
  873. package/out/src/wab-client/WABClient.js.map +1 -1
  874. package/out/src/wab-client/WABTransport.d.ts +81 -0
  875. package/out/src/wab-client/WABTransport.d.ts.map +1 -0
  876. package/out/src/wab-client/WABTransport.js +420 -0
  877. package/out/src/wab-client/WABTransport.js.map +1 -0
  878. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +10 -10
  879. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  880. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +16 -21
  881. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  882. package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js +1 -4
  883. package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js.map +1 -1
  884. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js +1 -4
  885. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js.map +1 -1
  886. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts +2 -1
  887. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts.map +1 -1
  888. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js +14 -3
  889. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +1 -1
  890. package/package.json +89 -36
  891. package/license.md +0 -28
  892. package/out/src/__tests/CWIStyleWalletManager.test.d.ts +0 -2
  893. package/out/src/__tests/CWIStyleWalletManager.test.d.ts.map +0 -1
  894. package/out/src/__tests/CWIStyleWalletManager.test.js +0 -809
  895. package/out/src/__tests/CWIStyleWalletManager.test.js.map +0 -1
  896. package/out/src/__tests/ShamirWalletManager.test.d.ts +0 -2
  897. package/out/src/__tests/ShamirWalletManager.test.d.ts.map +0 -1
  898. package/out/src/__tests/ShamirWalletManager.test.js +0 -299
  899. package/out/src/__tests/ShamirWalletManager.test.js.map +0 -1
  900. package/out/src/__tests/WalletPermissionsManager.callbacks.test.d.ts +0 -2
  901. package/out/src/__tests/WalletPermissionsManager.callbacks.test.d.ts.map +0 -1
  902. package/out/src/__tests/WalletPermissionsManager.callbacks.test.js +0 -373
  903. package/out/src/__tests/WalletPermissionsManager.callbacks.test.js.map +0 -1
  904. package/out/src/__tests/WalletPermissionsManager.checks.test.d.ts +0 -2
  905. package/out/src/__tests/WalletPermissionsManager.checks.test.d.ts.map +0 -1
  906. package/out/src/__tests/WalletPermissionsManager.checks.test.js +0 -642
  907. package/out/src/__tests/WalletPermissionsManager.checks.test.js.map +0 -1
  908. package/out/src/__tests/WalletPermissionsManager.encryption.test.d.ts +0 -2
  909. package/out/src/__tests/WalletPermissionsManager.encryption.test.d.ts.map +0 -1
  910. package/out/src/__tests/WalletPermissionsManager.encryption.test.js +0 -335
  911. package/out/src/__tests/WalletPermissionsManager.encryption.test.js.map +0 -1
  912. package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts +0 -87
  913. package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts.map +0 -1
  914. package/out/src/__tests/WalletPermissionsManager.fixtures.js +0 -290
  915. package/out/src/__tests/WalletPermissionsManager.fixtures.js.map +0 -1
  916. package/out/src/__tests/WalletPermissionsManager.flows.test.d.ts +0 -2
  917. package/out/src/__tests/WalletPermissionsManager.flows.test.d.ts.map +0 -1
  918. package/out/src/__tests/WalletPermissionsManager.flows.test.js +0 -613
  919. package/out/src/__tests/WalletPermissionsManager.flows.test.js.map +0 -1
  920. package/out/src/__tests/WalletPermissionsManager.initialization.test.d.ts +0 -2
  921. package/out/src/__tests/WalletPermissionsManager.initialization.test.d.ts.map +0 -1
  922. package/out/src/__tests/WalletPermissionsManager.initialization.test.js +0 -227
  923. package/out/src/__tests/WalletPermissionsManager.initialization.test.js.map +0 -1
  924. package/out/src/__tests/WalletPermissionsManager.pmodules.test.d.ts +0 -2
  925. package/out/src/__tests/WalletPermissionsManager.pmodules.test.d.ts.map +0 -1
  926. package/out/src/__tests/WalletPermissionsManager.pmodules.test.js +0 -735
  927. package/out/src/__tests/WalletPermissionsManager.pmodules.test.js.map +0 -1
  928. package/out/src/__tests/WalletPermissionsManager.proxying.test.d.ts +0 -2
  929. package/out/src/__tests/WalletPermissionsManager.proxying.test.d.ts.map +0 -1
  930. package/out/src/__tests/WalletPermissionsManager.proxying.test.js +0 -584
  931. package/out/src/__tests/WalletPermissionsManager.proxying.test.js.map +0 -1
  932. package/out/src/__tests/WalletPermissionsManager.tokens.test.d.ts +0 -2
  933. package/out/src/__tests/WalletPermissionsManager.tokens.test.d.ts.map +0 -1
  934. package/out/src/__tests/WalletPermissionsManager.tokens.test.js +0 -415
  935. package/out/src/__tests/WalletPermissionsManager.tokens.test.js.map +0 -1
  936. package/out/src/entropy/__tests/EntropyCollector.test.d.ts +0 -2
  937. package/out/src/entropy/__tests/EntropyCollector.test.d.ts.map +0 -1
  938. package/out/src/entropy/__tests/EntropyCollector.test.js +0 -137
  939. package/out/src/entropy/__tests/EntropyCollector.test.js.map +0 -1
  940. package/out/src/monitor/__test/MonitorDaemon.man.test.d.ts +0 -2
  941. package/out/src/monitor/__test/MonitorDaemon.man.test.d.ts.map +0 -1
  942. package/out/src/monitor/__test/MonitorDaemon.man.test.js +0 -41
  943. package/out/src/monitor/__test/MonitorDaemon.man.test.js.map +0 -1
  944. package/out/src/monitor/tasks/__tests/TaskArcSSE.test.d.ts +0 -2
  945. package/out/src/monitor/tasks/__tests/TaskArcSSE.test.d.ts.map +0 -1
  946. package/out/src/monitor/tasks/__tests/TaskArcSSE.test.js +0 -257
  947. package/out/src/monitor/tasks/__tests/TaskArcSSE.test.js.map +0 -1
  948. package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.d.ts +0 -2
  949. package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.d.ts.map +0 -1
  950. package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.js +0 -161
  951. package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.js.map +0 -1
  952. package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.d.ts +0 -2
  953. package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.d.ts.map +0 -1
  954. package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.js +0 -214
  955. package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.js.map +0 -1
  956. package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.d.ts +0 -2
  957. package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.d.ts.map +0 -1
  958. package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.js +0 -92
  959. package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.js.map +0 -1
  960. package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.d.ts +0 -2
  961. package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.d.ts.map +0 -1
  962. package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.js +0 -139
  963. package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.js.map +0 -1
  964. package/out/src/sdk/__test/CertificateLifeCycle.test.d.ts +0 -2
  965. package/out/src/sdk/__test/CertificateLifeCycle.test.d.ts.map +0 -1
  966. package/out/src/sdk/__test/CertificateLifeCycle.test.js +0 -62
  967. package/out/src/sdk/__test/CertificateLifeCycle.test.js.map +0 -1
  968. package/out/src/sdk/__test/PrivilegedKeyManager.test.d.ts +0 -2
  969. package/out/src/sdk/__test/PrivilegedKeyManager.test.d.ts.map +0 -1
  970. package/out/src/sdk/__test/PrivilegedKeyManager.test.js +0 -647
  971. package/out/src/sdk/__test/PrivilegedKeyManager.test.js.map +0 -1
  972. package/out/src/sdk/__test/WalletError.test.d.ts +0 -2
  973. package/out/src/sdk/__test/WalletError.test.d.ts.map +0 -1
  974. package/out/src/sdk/__test/WalletError.test.js +0 -255
  975. package/out/src/sdk/__test/WalletError.test.js.map +0 -1
  976. package/out/src/sdk/__test/validationHelpers.test.d.ts +0 -2
  977. package/out/src/sdk/__test/validationHelpers.test.d.ts.map +0 -1
  978. package/out/src/sdk/__test/validationHelpers.test.js +0 -20
  979. package/out/src/sdk/__test/validationHelpers.test.js.map +0 -1
  980. package/out/src/services/__tests/ARC.man.test.d.ts +0 -2
  981. package/out/src/services/__tests/ARC.man.test.d.ts.map +0 -1
  982. package/out/src/services/__tests/ARC.man.test.js +0 -104
  983. package/out/src/services/__tests/ARC.man.test.js.map +0 -1
  984. package/out/src/services/__tests/ARC.timeout.man.test.d.ts +0 -2
  985. package/out/src/services/__tests/ARC.timeout.man.test.d.ts.map +0 -1
  986. package/out/src/services/__tests/ARC.timeout.man.test.js +0 -74
  987. package/out/src/services/__tests/ARC.timeout.man.test.js.map +0 -1
  988. package/out/src/services/__tests/ArcGorillaPool.man.test.d.ts +0 -2
  989. package/out/src/services/__tests/ArcGorillaPool.man.test.d.ts.map +0 -1
  990. package/out/src/services/__tests/ArcGorillaPool.man.test.js +0 -93
  991. package/out/src/services/__tests/ArcGorillaPool.man.test.js.map +0 -1
  992. package/out/src/services/__tests/arcServices.test.d.ts +0 -2
  993. package/out/src/services/__tests/arcServices.test.d.ts.map +0 -1
  994. package/out/src/services/__tests/arcServices.test.js +0 -7
  995. package/out/src/services/__tests/arcServices.test.js.map +0 -1
  996. package/out/src/services/__tests/bitrails.test.d.ts +0 -2
  997. package/out/src/services/__tests/bitrails.test.d.ts.map +0 -1
  998. package/out/src/services/__tests/bitrails.test.js +0 -59
  999. package/out/src/services/__tests/bitrails.test.js.map +0 -1
  1000. package/out/src/services/__tests/getFiatExchangeRate.test.d.ts +0 -2
  1001. package/out/src/services/__tests/getFiatExchangeRate.test.d.ts.map +0 -1
  1002. package/out/src/services/__tests/getFiatExchangeRate.test.js +0 -156
  1003. package/out/src/services/__tests/getFiatExchangeRate.test.js.map +0 -1
  1004. package/out/src/services/__tests/getMerklePath.test.d.ts +0 -2
  1005. package/out/src/services/__tests/getMerklePath.test.d.ts.map +0 -1
  1006. package/out/src/services/__tests/getMerklePath.test.js +0 -16
  1007. package/out/src/services/__tests/getMerklePath.test.js.map +0 -1
  1008. package/out/src/services/__tests/getRawTx.test.d.ts +0 -2
  1009. package/out/src/services/__tests/getRawTx.test.d.ts.map +0 -1
  1010. package/out/src/services/__tests/getRawTx.test.js +0 -16
  1011. package/out/src/services/__tests/getRawTx.test.js.map +0 -1
  1012. package/out/src/services/__tests/postBeef.test.d.ts +0 -2
  1013. package/out/src/services/__tests/postBeef.test.d.ts.map +0 -1
  1014. package/out/src/services/__tests/postBeef.test.js +0 -101
  1015. package/out/src/services/__tests/postBeef.test.js.map +0 -1
  1016. package/out/src/services/__tests/verifyBeef.test.d.ts +0 -2
  1017. package/out/src/services/__tests/verifyBeef.test.d.ts.map +0 -1
  1018. package/out/src/services/__tests/verifyBeef.test.js +0 -43
  1019. package/out/src/services/__tests/verifyBeef.test.js.map +0 -1
  1020. package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.d.ts +0 -2
  1021. package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.d.ts.map +0 -1
  1022. package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.js +0 -25
  1023. package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.js.map +0 -1
  1024. package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.d.ts +0 -2
  1025. package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.d.ts.map +0 -1
  1026. package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.js +0 -27
  1027. package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.js.map +0 -1
  1028. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.d.ts +0 -2
  1029. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.d.ts.map +0 -1
  1030. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js +0 -56
  1031. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js.map +0 -1
  1032. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.d.ts +0 -2
  1033. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.d.ts.map +0 -1
  1034. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.js +0 -40
  1035. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.js.map +0 -1
  1036. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.d.ts +0 -2
  1037. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.d.ts.map +0 -1
  1038. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js +0 -108
  1039. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js.map +0 -1
  1040. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.d.ts +0 -2
  1041. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.d.ts.map +0 -1
  1042. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js +0 -87
  1043. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js.map +0 -1
  1044. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.d.ts +0 -2
  1045. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.d.ts.map +0 -1
  1046. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.js +0 -39
  1047. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.js.map +0 -1
  1048. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.d.ts +0 -2
  1049. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.d.ts.map +0 -1
  1050. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js +0 -75
  1051. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js.map +0 -1
  1052. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.d.ts +0 -2
  1053. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.d.ts.map +0 -1
  1054. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.js +0 -43
  1055. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.js.map +0 -1
  1056. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.d.ts +0 -2
  1057. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.d.ts.map +0 -1
  1058. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.js +0 -164
  1059. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.js.map +0 -1
  1060. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.d.ts +0 -12
  1061. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.d.ts.map +0 -1
  1062. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.js +0 -69
  1063. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.js.map +0 -1
  1064. package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.d.ts +0 -2
  1065. package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.d.ts.map +0 -1
  1066. package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.js +0 -109
  1067. package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.js.map +0 -1
  1068. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.d.ts +0 -2
  1069. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.d.ts.map +0 -1
  1070. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js +0 -54
  1071. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js.map +0 -1
  1072. package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.d.ts +0 -2
  1073. package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.d.ts.map +0 -1
  1074. package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.js +0 -255
  1075. package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.js.map +0 -1
  1076. package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.d.ts +0 -2
  1077. package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.d.ts.map +0 -1
  1078. package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.js +0 -56
  1079. package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.js.map +0 -1
  1080. package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.d.ts +0 -2
  1081. package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.d.ts.map +0 -1
  1082. package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.js +0 -69
  1083. package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.js.map +0 -1
  1084. package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.d.ts +0 -2
  1085. package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.d.ts.map +0 -1
  1086. package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.js +0 -51
  1087. package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.js.map +0 -1
  1088. package/out/src/services/providers/__tests/ArcSSEClient.test.d.ts +0 -2
  1089. package/out/src/services/providers/__tests/ArcSSEClient.test.d.ts.map +0 -1
  1090. package/out/src/services/providers/__tests/ArcSSEClient.test.js +0 -256
  1091. package/out/src/services/providers/__tests/ArcSSEClient.test.js.map +0 -1
  1092. package/out/src/services/providers/__tests/WhatsOnChain.test.d.ts +0 -2
  1093. package/out/src/services/providers/__tests/WhatsOnChain.test.d.ts.map +0 -1
  1094. package/out/src/services/providers/__tests/WhatsOnChain.test.js +0 -191
  1095. package/out/src/services/providers/__tests/WhatsOnChain.test.js.map +0 -1
  1096. package/out/src/services/providers/__tests/exchangeRates.test.d.ts +0 -2
  1097. package/out/src/services/providers/__tests/exchangeRates.test.d.ts.map +0 -1
  1098. package/out/src/services/providers/__tests/exchangeRates.test.js +0 -23
  1099. package/out/src/services/providers/__tests/exchangeRates.test.js.map +0 -1
  1100. package/out/src/storage/__test/StorageIdb.test.d.ts +0 -2
  1101. package/out/src/storage/__test/StorageIdb.test.d.ts.map +0 -1
  1102. package/out/src/storage/__test/StorageIdb.test.js +0 -44
  1103. package/out/src/storage/__test/StorageIdb.test.js.map +0 -1
  1104. package/out/src/storage/__test/WalletStorageManager.test.d.ts +0 -2
  1105. package/out/src/storage/__test/WalletStorageManager.test.d.ts.map +0 -1
  1106. package/out/src/storage/__test/WalletStorageManager.test.js +0 -254
  1107. package/out/src/storage/__test/WalletStorageManager.test.js.map +0 -1
  1108. package/out/src/storage/__test/adminStats.man.test.d.ts +0 -2
  1109. package/out/src/storage/__test/adminStats.man.test.d.ts.map +0 -1
  1110. package/out/src/storage/__test/adminStats.man.test.js +0 -78
  1111. package/out/src/storage/__test/adminStats.man.test.js.map +0 -1
  1112. package/out/src/storage/__test/findStaleMerkleRoots.test.d.ts +0 -2
  1113. package/out/src/storage/__test/findStaleMerkleRoots.test.d.ts.map +0 -1
  1114. package/out/src/storage/__test/findStaleMerkleRoots.test.js +0 -41
  1115. package/out/src/storage/__test/findStaleMerkleRoots.test.js.map +0 -1
  1116. package/out/src/storage/__test/findStaleMerkleRootsKnex.test.d.ts +0 -2
  1117. package/out/src/storage/__test/findStaleMerkleRootsKnex.test.d.ts.map +0 -1
  1118. package/out/src/storage/__test/findStaleMerkleRootsKnex.test.js +0 -73
  1119. package/out/src/storage/__test/findStaleMerkleRootsKnex.test.js.map +0 -1
  1120. package/out/src/storage/__test/getBeefForTransaction.test.d.ts +0 -2
  1121. package/out/src/storage/__test/getBeefForTransaction.test.d.ts.map +0 -1
  1122. package/out/src/storage/__test/getBeefForTransaction.test.js +0 -347
  1123. package/out/src/storage/__test/getBeefForTransaction.test.js.map +0 -1
  1124. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.d.ts +0 -2
  1125. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.d.ts.map +0 -1
  1126. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js +0 -1111
  1127. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js.map +0 -1
  1128. package/out/src/storage/methods/__test/offsetKey.test.d.ts +0 -2
  1129. package/out/src/storage/methods/__test/offsetKey.test.d.ts.map +0 -1
  1130. package/out/src/storage/methods/__test/offsetKey.test.js +0 -229
  1131. package/out/src/storage/methods/__test/offsetKey.test.js.map +0 -1
  1132. package/out/src/storage/remoting/__test/StorageClient.man.test.d.ts +0 -2
  1133. package/out/src/storage/remoting/__test/StorageClient.man.test.d.ts.map +0 -1
  1134. package/out/src/storage/remoting/__test/StorageClient.man.test.js +0 -487
  1135. package/out/src/storage/remoting/__test/StorageClient.man.test.js.map +0 -1
  1136. package/out/src/storage/remoting/__test/StorageClient.test.d.ts +0 -2
  1137. package/out/src/storage/remoting/__test/StorageClient.test.d.ts.map +0 -1
  1138. package/out/src/storage/remoting/__test/StorageClient.test.js +0 -119
  1139. package/out/src/storage/remoting/__test/StorageClient.test.js.map +0 -1
  1140. package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.d.ts +0 -2
  1141. package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.d.ts.map +0 -1
  1142. package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js +0 -301
  1143. package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js.map +0 -1
  1144. package/out/src/storage/schema/entities/__tests/CertificateTests.test.d.ts +0 -2
  1145. package/out/src/storage/schema/entities/__tests/CertificateTests.test.d.ts.map +0 -1
  1146. package/out/src/storage/schema/entities/__tests/CertificateTests.test.js +0 -308
  1147. package/out/src/storage/schema/entities/__tests/CertificateTests.test.js.map +0 -1
  1148. package/out/src/storage/schema/entities/__tests/CommissionTests.test.d.ts +0 -2
  1149. package/out/src/storage/schema/entities/__tests/CommissionTests.test.d.ts.map +0 -1
  1150. package/out/src/storage/schema/entities/__tests/CommissionTests.test.js +0 -316
  1151. package/out/src/storage/schema/entities/__tests/CommissionTests.test.js.map +0 -1
  1152. package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.d.ts +0 -2
  1153. package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.d.ts.map +0 -1
  1154. package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.js +0 -228
  1155. package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.js.map +0 -1
  1156. package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.d.ts +0 -2
  1157. package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.d.ts.map +0 -1
  1158. package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js +0 -191
  1159. package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js.map +0 -1
  1160. package/out/src/storage/schema/entities/__tests/OutputTagTests.test.d.ts +0 -2
  1161. package/out/src/storage/schema/entities/__tests/OutputTagTests.test.d.ts.map +0 -1
  1162. package/out/src/storage/schema/entities/__tests/OutputTagTests.test.js +0 -226
  1163. package/out/src/storage/schema/entities/__tests/OutputTagTests.test.js.map +0 -1
  1164. package/out/src/storage/schema/entities/__tests/OutputTests.test.d.ts +0 -2
  1165. package/out/src/storage/schema/entities/__tests/OutputTests.test.d.ts.map +0 -1
  1166. package/out/src/storage/schema/entities/__tests/OutputTests.test.js +0 -413
  1167. package/out/src/storage/schema/entities/__tests/OutputTests.test.js.map +0 -1
  1168. package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.d.ts +0 -2
  1169. package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.d.ts.map +0 -1
  1170. package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js +0 -299
  1171. package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js.map +0 -1
  1172. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.d.ts +0 -2
  1173. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.d.ts.map +0 -1
  1174. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js +0 -474
  1175. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js.map +0 -1
  1176. package/out/src/storage/schema/entities/__tests/SyncStateTests.test.d.ts +0 -2
  1177. package/out/src/storage/schema/entities/__tests/SyncStateTests.test.d.ts.map +0 -1
  1178. package/out/src/storage/schema/entities/__tests/SyncStateTests.test.js +0 -234
  1179. package/out/src/storage/schema/entities/__tests/SyncStateTests.test.js.map +0 -1
  1180. package/out/src/storage/schema/entities/__tests/TransactionTests.test.d.ts +0 -2
  1181. package/out/src/storage/schema/entities/__tests/TransactionTests.test.d.ts.map +0 -1
  1182. package/out/src/storage/schema/entities/__tests/TransactionTests.test.js +0 -539
  1183. package/out/src/storage/schema/entities/__tests/TransactionTests.test.js.map +0 -1
  1184. package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.d.ts +0 -2
  1185. package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.d.ts.map +0 -1
  1186. package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.js +0 -304
  1187. package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.js.map +0 -1
  1188. package/out/src/storage/schema/entities/__tests/TxLabelTests.test.d.ts +0 -2
  1189. package/out/src/storage/schema/entities/__tests/TxLabelTests.test.d.ts.map +0 -1
  1190. package/out/src/storage/schema/entities/__tests/TxLabelTests.test.js +0 -170
  1191. package/out/src/storage/schema/entities/__tests/TxLabelTests.test.js.map +0 -1
  1192. package/out/src/storage/schema/entities/__tests/stampLogTests.test.d.ts +0 -2
  1193. package/out/src/storage/schema/entities/__tests/stampLogTests.test.d.ts.map +0 -1
  1194. package/out/src/storage/schema/entities/__tests/stampLogTests.test.js +0 -81
  1195. package/out/src/storage/schema/entities/__tests/stampLogTests.test.js.map +0 -1
  1196. package/out/src/storage/schema/entities/__tests/usersTests.test.d.ts +0 -2
  1197. package/out/src/storage/schema/entities/__tests/usersTests.test.d.ts.map +0 -1
  1198. package/out/src/storage/schema/entities/__tests/usersTests.test.js +0 -277
  1199. package/out/src/storage/schema/entities/__tests/usersTests.test.js.map +0 -1
  1200. package/out/src/utility/__tests/utilityHelpers.noBuffer.test.d.ts +0 -2
  1201. package/out/src/utility/__tests/utilityHelpers.noBuffer.test.d.ts.map +0 -1
  1202. package/out/src/utility/__tests/utilityHelpers.noBuffer.test.js +0 -107
  1203. package/out/src/utility/__tests/utilityHelpers.noBuffer.test.js.map +0 -1
  1204. package/out/src/wab-client/__tests/WABClient.man.test.d.ts +0 -2
  1205. package/out/src/wab-client/__tests/WABClient.man.test.d.ts.map +0 -1
  1206. package/out/src/wab-client/__tests/WABClient.man.test.js +0 -52
  1207. package/out/src/wab-client/__tests/WABClient.man.test.js.map +0 -1
@@ -8,24 +8,54 @@ const StorageProvider_1 = require("../StorageProvider");
8
8
  const WERR_errors_1 = require("../../sdk/WERR_errors");
9
9
  const utilityHelpers_1 = require("../../utility/utilityHelpers");
10
10
  const utilityHelpers_noBuffer_1 = require("../../utility/utilityHelpers.noBuffer");
11
+ const brc153ReferenceLabels_1 = require("../../utility/brc153ReferenceLabels");
11
12
  const EntityProvenTx_1 = require("../schema/entities/EntityProvenTx");
12
13
  const Wallet_1 = require("../../Wallet");
13
14
  const offsetKey_1 = require("./offsetKey");
14
- const utils_1 = require("./utils");
15
+ const sdk_2 = require("../../sdk");
16
+ const managedChange_1 = require("./managedChange");
17
+ const actionPlanning_1 = require("./actionPlanning");
15
18
  let disableDoubleSpendCheckForTest = true;
16
19
  function setDisableDoubleSpendCheckForTest(v) {
17
20
  disableDoubleSpendCheckForTest = v;
18
21
  }
19
- async function createAction(storage, auth, vargs, originator) {
22
+ async function createAction(storage, auth, vargs, _originator) {
23
+ if (!storage.telemetry.enabled)
24
+ return await createActionCore(storage, auth, vargs);
25
+ return await storage.telemetry.withSpan('wallet.storage.create_action', {
26
+ component: 'wallet-storage',
27
+ carrier: vargs,
28
+ attributes: {
29
+ 'action.fixed_input_count': vargs.inputs.length,
30
+ 'action.fixed_output_count': vargs.outputs.length,
31
+ 'action.known_txid_count': vargs.options.knownTxids?.length ?? 0,
32
+ 'action.is_delayed': vargs.isDelayed,
33
+ 'action.is_no_send': vargs.isNoSend
34
+ }
35
+ }, async (span) => {
36
+ const result = await createActionCore(storage, auth, vargs, span);
37
+ span.end({
38
+ attributes: {
39
+ 'action.result_input_count': result.inputs.length,
40
+ 'action.result_output_count': result.outputs.length,
41
+ 'action.input_beef_bytes': result.inputBeef?.length ?? 0
42
+ }
43
+ });
44
+ return result;
45
+ });
46
+ }
47
+ async function createActionCore(storage, auth, vargs, parent) {
20
48
  const logger = vargs.logger;
21
- logger === null || logger === void 0 ? void 0 : logger.group(`storage createAction`);
22
- //stampLog(vargs, `start storage createTransactionSdk`)
49
+ logger?.group('storage createAction');
50
+ // stampLog(vargs, `start storage createTransactionSdk`)
23
51
  if (vargs.isTestWerrReviewActions)
24
52
  (0, Wallet_1.throwDummyReviewActions)();
25
- if (!vargs.isNewTx)
26
- // The purpose of this function is to create the initial storage records associated
27
- // with a new transaction. It's an error if we have no new inputs or outputs...
53
+ if (!vargs.isNewTx)
54
+ // The purpose of this function is to create the initial storage records associated
55
+ // with a new transaction. It's an error if we have no new inputs or outputs...
56
+ {
28
57
  throw new WERR_errors_1.WERR_INTERNAL();
58
+ }
29
59
  /**
30
60
  * Steps to create a transaction:
31
61
  * - Verify that all inputs either have proof in vargs.inputBEEF or that options.trustSelf === 'known' and input txid.vout are known valid to storage.
@@ -39,66 +69,143 @@ async function createAction(storage, auth, vargs, originator) {
39
69
  * - Create result inputs with source locking scripts
40
70
  * - Create result outputs with new locking scripts.
41
71
  * - Create and return result.
42
- */
72
+ */
43
73
  const userId = auth.userId;
44
- const { storageBeef, beef, xinputs } = await validateRequiredInputs(storage, userId, vargs);
45
- logger === null || logger === void 0 ? void 0 : logger.log('validated required inputs');
46
- const xoutputs = validateRequiredOutputs(storage, userId, vargs);
47
- logger === null || logger === void 0 ? void 0 : logger.log('validated required outputs');
48
- const changeBasketName = 'default';
49
- const changeBasket = (0, utilityHelpers_1.verifyOne)(await storage.findOutputBaskets({
50
- partial: { userId, name: changeBasketName }
51
- }), `Invalid outputGeneration basket "${changeBasketName}"`);
52
- logger === null || logger === void 0 ? void 0 : logger.log('found change basket');
53
- const noSendChangeIn = await validateNoSendChange(storage, userId, vargs, changeBasket);
54
- logger === null || logger === void 0 ? void 0 : logger.log('validated noSendChange');
55
- const availableChangeCount = await storage.countChangeInputs(userId, changeBasket.basketId, !vargs.isDelayed);
56
- logger === null || logger === void 0 ? void 0 : logger.log(`counted change inputs ${availableChangeCount}`);
74
+ const validated = await traceStorageStep(storage, 'wallet.storage.create_action.validate', parent, {
75
+ 'action.fixed_input_count': vargs.inputs.length,
76
+ 'action.fixed_output_count': vargs.outputs.length
77
+ }, async (span) => {
78
+ const requiredInputs = await validateRequiredInputs(storage, userId, vargs);
79
+ logger?.log('validated required inputs');
80
+ const xoutputs = validateRequiredOutputs(storage, userId, vargs);
81
+ logger?.log('validated required outputs');
82
+ const changeBasketName = 'default';
83
+ const changeBasket = (0, utilityHelpers_1.verifyOne)(await storage.findOutputBaskets({
84
+ partial: { userId, name: changeBasketName }
85
+ }), `Invalid outputGeneration basket "${changeBasketName}"`);
86
+ logger?.log('found change basket');
87
+ const noSendChangeIn = await validateNoSendChange(storage, userId, vargs, changeBasket);
88
+ logger?.log('validated noSendChange');
89
+ span?.end({
90
+ attributes: {
91
+ 'action.validated_input_count': requiredInputs.xinputs.length,
92
+ 'action.validated_output_count': xoutputs.length,
93
+ 'action.no_send_change_input_count': noSendChangeIn.length,
94
+ 'action.validated_beef_tx_count': requiredInputs.beef.txs.length
95
+ }
96
+ });
97
+ return { ...requiredInputs, xoutputs, changeBasket, noSendChangeIn };
98
+ });
99
+ const { storageBeef, beef, xinputs, xoutputs, changeBasket, noSendChangeIn } = validated;
57
100
  const feeModel = (0, StorageProvider_1.validateStorageFeeModel)(storage.feeModel);
58
- logger === null || logger === void 0 ? void 0 : logger.log(`validated fee model ${JSON.stringify(feeModel)}`);
59
- await preflightInsufficientFundsFastPath(vargs, xinputs, xoutputs, noSendChangeIn, availableChangeCount, feeModel);
60
- logger === null || logger === void 0 ? void 0 : logger.log('passed insufficient-funds preflight');
61
- const newTx = await createNewTxRecord(storage, userId, vargs, storageBeef);
62
- logger === null || logger === void 0 ? void 0 : logger.log(`created new transaction record`);
63
- const ctx = {
64
- xinputs,
65
- xoutputs,
66
- changeBasket,
67
- noSendChangeIn,
68
- availableChangeCount,
69
- feeModel,
70
- transactionId: newTx.transactionId
71
- };
72
- const { allocatedChange, changeOutputs, derivationPrefix, maxPossibleSatoshisAdjustment } = await fundNewTransactionSdk(storage, userId, vargs, ctx);
73
- logger === null || logger === void 0 ? void 0 : logger.log(`funded new transaction`);
74
- if (maxPossibleSatoshisAdjustment) {
75
- const a = maxPossibleSatoshisAdjustment;
76
- if (ctx.xoutputs[a.fixedOutputIndex].satoshis !== generateChange_1.maxPossibleSatoshis)
77
- throw new WERR_errors_1.WERR_INTERNAL();
78
- ctx.xoutputs[a.fixedOutputIndex].satoshis = a.satoshis;
79
- logger === null || logger === void 0 ? void 0 : logger.log(`adjusted change outputs to max possible`);
80
- }
81
- // The satoshis of the transaction is the satoshis we get back in change minus the satoshis we spend.
82
- const satoshis = changeOutputs.reduce((a, e) => a + e.satoshis, 0) - allocatedChange.reduce((a, e) => a + e.satoshis, 0);
83
- await storage.updateTransaction(newTx.transactionId, { satoshis });
84
- const { outputs, changeVouts } = await createNewOutputs(storage, userId, vargs, ctx, changeOutputs);
85
- logger === null || logger === void 0 ? void 0 : logger.log(`created new output records`);
86
- const inputBeef = await mergeAllocatedChangeBeefs(storage, userId, vargs, allocatedChange, beef);
87
- logger === null || logger === void 0 ? void 0 : logger.log(`merged allocated change beefs`);
88
- const inputs = await createNewInputs(storage, userId, vargs, ctx, allocatedChange);
89
- logger === null || logger === void 0 ? void 0 : logger.log(`created new inputs`);
90
- const r = {
91
- reference: newTx.reference,
92
- version: newTx.version,
93
- lockTime: newTx.lockTime,
94
- inputs,
95
- outputs,
96
- derivationPrefix,
97
- inputBeef,
98
- noSendChangeOutputVouts: vargs.isNoSend ? changeVouts : undefined
99
- };
100
- logger === null || logger === void 0 ? void 0 : logger.groupEnd();
101
- return r;
101
+ logger?.log(`validated fee model ${JSON.stringify(feeModel)}`);
102
+ const initialFundingPlan = await prepareFundingPlan(storage, [userId, vargs, xinputs, xoutputs, changeBasket, noSendChangeIn, feeModel, parent]);
103
+ logger?.log(`planned funding from ${initialFundingPlan.availableChangeCount} change inputs`);
104
+ // The selected source txids are known before the write transaction begins.
105
+ // Start their one batched proof read now so PXC/network wait and BEEF
106
+ // assembly overlap the independent transaction-record/funding/output writes.
107
+ // A funding-claim retry is handled below by fetching only any residual roots.
108
+ const allocatedBeefPrefetch = startAllocatedChangeBeefPrefetch(storage, vargs, initialFundingPlan.selected, beef, parent);
109
+ const storageBeefBytes = storageBeef.toBinary();
110
+ let newTx;
111
+ let newTxCommitted = false;
112
+ try {
113
+ const persisted = await storage.transaction(async (trx) => {
114
+ const initialSatoshis = fundingPlanSatoshis(initialFundingPlan);
115
+ newTx = await traceStorageStep(storage, 'wallet.storage.create_action.create_record', parent, {
116
+ 'action.label_count': vargs.labels.length,
117
+ 'action.storage_beef_bytes': storageBeefBytes.length
118
+ }, async (span) => {
119
+ const transaction = await createNewTxRecord(storage, userId, vargs, storageBeefBytes, initialSatoshis, trx);
120
+ span?.end({ attributes: { 'action.transaction_record_created': true } });
121
+ return transaction;
122
+ });
123
+ logger?.log('created new transaction record');
124
+ const ctx = {
125
+ xinputs,
126
+ xoutputs,
127
+ changeBasket,
128
+ noSendChangeIn,
129
+ feeModel,
130
+ transactionId: newTx.transactionId
131
+ };
132
+ const funded = await fundNewTransactionSdk(storage, userId, vargs, ctx, initialFundingPlan, parent, trx);
133
+ logger?.log('funded new transaction');
134
+ if (funded.maxPossibleSatoshisAdjustment != null) {
135
+ const adjustment = funded.maxPossibleSatoshisAdjustment;
136
+ if (ctx.xoutputs[adjustment.fixedOutputIndex].satoshis !== generateChange_1.maxPossibleSatoshis)
137
+ throw new WERR_errors_1.WERR_INTERNAL();
138
+ ctx.xoutputs[adjustment.fixedOutputIndex].satoshis = adjustment.satoshis;
139
+ logger?.log('adjusted change outputs to max possible');
140
+ }
141
+ const satoshis = funded.changeOutputs.reduce((sum, output) => sum + output.satoshis, 0) -
142
+ funded.allocatedChange.reduce((sum, output) => sum + output.satoshis, 0);
143
+ if (satoshis !== initialSatoshis) {
144
+ await storage.updateTransaction(newTx.transactionId, { satoshis }, trx);
145
+ newTx.satoshis = satoshis;
146
+ }
147
+ const storedOutputs = await traceStorageStep(storage, 'wallet.storage.create_action.persist_outputs', parent, {
148
+ 'action.fixed_output_count': ctx.xoutputs.length,
149
+ 'action.change_output_count': funded.changeOutputs.length
150
+ }, async (span) => {
151
+ const result = await createNewOutputs(storage, userId, vargs, ctx, funded.changeOutputs, trx);
152
+ span?.end({ attributes: { 'action.persisted_output_count': result.outputs.length } });
153
+ return result;
154
+ });
155
+ return { ...funded, ...storedOutputs, ctx };
156
+ });
157
+ newTxCommitted = true;
158
+ const committedTx = (0, utilityHelpers_1.verifyTruthy)(newTx);
159
+ const { allocatedChange, derivationPrefix, outputs, changeVouts, ctx } = persisted;
160
+ logger?.log('created new output records');
161
+ const inputBeef = await mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef, allocatedBeefPrefetch, parent);
162
+ logger?.log('merged allocated change beefs');
163
+ const inputs = await traceStorageStep(storage, 'wallet.storage.create_action.assemble_inputs', parent, {
164
+ 'action.fixed_input_count': ctx.xinputs.length,
165
+ 'action.funding_input_count': allocatedChange.length,
166
+ 'action.include_source_transactions': vargs.includeAllSourceTransactions
167
+ }, async (span) => {
168
+ const assembled = await createNewInputs(storage, userId, vargs, ctx, allocatedChange);
169
+ span?.end({ attributes: { 'action.result_input_count': assembled.length } });
170
+ return assembled;
171
+ });
172
+ logger?.log('created new inputs');
173
+ const r = {
174
+ reference: committedTx.reference,
175
+ version: committedTx.version,
176
+ lockTime: committedTx.lockTime,
177
+ inputs,
178
+ outputs,
179
+ derivationPrefix,
180
+ inputBeef,
181
+ noSendChangeOutputVouts: vargs.isNoSend ? changeVouts : undefined
182
+ };
183
+ logger?.groupEnd();
184
+ return r;
185
+ }
186
+ catch (error) {
187
+ // Always let an overlapped database read settle before cleanup destroys or
188
+ // reuses the provider. Its error is surfaced on the success path above;
189
+ // here the construction error remains authoritative.
190
+ await allocatedBeefPrefetch;
191
+ if (newTx?.transactionId != null) {
192
+ try {
193
+ if (newTxCommitted) {
194
+ await storage.updateTransactionStatus('failed', newTx.transactionId);
195
+ logger?.log(`marked failed createAction transaction ${newTx.transactionId} after construction error`);
196
+ }
197
+ else {
198
+ const failed = await createNewTxRecord(storage, userId, vargs, storageBeefBytes, 0, undefined, 'failed');
199
+ logger?.log(`recorded failed createAction transaction ${failed.transactionId} after rollback`);
200
+ }
201
+ }
202
+ catch (cleanupError) {
203
+ logger?.log(`failed to clean up createAction transaction ${newTx.transactionId}: ${String(cleanupError)}`);
204
+ }
205
+ }
206
+ logger?.groupEnd();
207
+ throw error;
208
+ }
102
209
  }
103
210
  function makeDefaultOutput(userId, transactionId, satoshis, vout) {
104
211
  const now = new Date();
@@ -108,7 +215,7 @@ function makeDefaultOutput(userId, transactionId, satoshis, vout) {
108
215
  outputId: 0,
109
216
  userId,
110
217
  transactionId,
111
- satoshis: satoshis,
218
+ satoshis,
112
219
  vout,
113
220
  basketId: undefined,
114
221
  change: false,
@@ -128,118 +235,157 @@ function makeDefaultOutput(userId, transactionId, satoshis, vout) {
128
235
  };
129
236
  return output;
130
237
  }
238
+ /** Check known outputs for double-spend, mark them spent, return competing txid if found. */
239
+ async function markKnownInputsSpent(storage, knownInputRows, transactionId) {
240
+ let doubleSpendTxid;
241
+ await storage.transaction(async (trx) => {
242
+ const outputIds = knownInputRows.map(ni => (0, utilityHelpers_1.verifyId)(ni.o.outputId));
243
+ const knownOutputsById = await storage.findOutputsByIds(outputIds, trx);
244
+ for (const ni of knownInputRows) {
245
+ const { i, o } = ni;
246
+ const o2 = knownOutputsById[(0, utilityHelpers_1.verifyId)(o.outputId)];
247
+ if (!o2)
248
+ throw new WERR_errors_1.WERR_INTERNAL(`missing outputId ${o.outputId}`);
249
+ if (o2.spentBy !== undefined && o2.spentBy !== null) {
250
+ const spendingTx = await storage.findTransactionById((0, utilityHelpers_1.verifyId)(o2.spentBy), trx);
251
+ if (spendingTx?.txid) {
252
+ doubleSpendTxid = spendingTx.txid;
253
+ return;
254
+ }
255
+ }
256
+ if (!o2.spendable) {
257
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER(`inputs[${i.vin}]`, `spendable output. output ${o.txid}:${o.vout} appears to have been spent (spendable=${o2.spendable}).`);
258
+ }
259
+ await storage.updateOutput((0, utilityHelpers_1.verifyId)(o.outputId), { spendable: false, spentBy: transactionId, spendingDescription: i.inputDescription }, trx);
260
+ o.spendable = false;
261
+ o.spentBy = transactionId;
262
+ o.spendingDescription = i.inputDescription;
263
+ }
264
+ });
265
+ return doubleSpendTxid;
266
+ }
267
+ /** Build an SDK input record for a new-input row that has a backing output. */
268
+ async function buildSdkInputFromOutput(storage, vargs, vin, i, o, unlockLen) {
269
+ if (i == null && !unlockLen)
270
+ throw new WERR_errors_1.WERR_INTERNAL(`vin ${vin} non-fixedInput without unlockLen`);
271
+ const sourceTransaction = vargs.includeAllSourceTransactions && vargs.isSignAction
272
+ ? await storage.getRawTxOfKnownValidTransaction(o.txid)
273
+ : undefined;
274
+ return {
275
+ vin,
276
+ sourceTxid: o.txid,
277
+ sourceVout: o.vout,
278
+ sourceSatoshis: o.satoshis,
279
+ sourceLockingScript: (0, utilityHelpers_noBuffer_1.asString)(o.lockingScript),
280
+ sourceTransaction,
281
+ unlockingScriptLength: unlockLen || i.unlockingScriptLength,
282
+ providedBy: i != null && o.providedBy === 'storage' ? 'you-and-storage' : o.providedBy,
283
+ type: o.type,
284
+ spendingDescription: o.spendingDescription || undefined,
285
+ derivationPrefix: o.derivationPrefix || undefined,
286
+ derivationSuffix: o.derivationSuffix || undefined,
287
+ senderIdentityKey: o.senderIdentityKey || undefined
288
+ };
289
+ }
290
+ /** Build an SDK input record for a user-specified input with no corresponding stored output. */
291
+ function buildSdkInputFromXInput(vin, i) {
292
+ return {
293
+ vin,
294
+ sourceTxid: i.outpoint.txid,
295
+ sourceVout: i.outpoint.vout,
296
+ sourceSatoshis: i.satoshis,
297
+ sourceLockingScript: i.lockingScript.toHex(),
298
+ unlockingScriptLength: i.unlockingScriptLength,
299
+ providedBy: 'you',
300
+ type: 'custom',
301
+ spendingDescription: undefined,
302
+ derivationPrefix: undefined,
303
+ derivationSuffix: undefined,
304
+ senderIdentityKey: undefined
305
+ };
306
+ }
131
307
  async function createNewInputs(storage, userId, vargs, ctx, allocatedChange) {
132
308
  const r = [];
133
309
  const newInputs = [];
134
- for (const i of ctx.xinputs) {
135
- const o = i.output;
136
- newInputs.push({ i, o });
137
- }
138
- const knownInputRows = newInputs.filter((ni) => !!ni.i && !!ni.o);
310
+ for (const i of ctx.xinputs)
311
+ newInputs.push({ i, o: i.output });
312
+ const knownInputRows = newInputs.filter((ni) => ni.i != null && ni.o != null);
139
313
  if (knownInputRows.length > 0) {
140
- let doubleSpendTxid;
141
- await storage.transaction(async (trx) => {
142
- const outputIds = knownInputRows.map(ni => (0, utilityHelpers_1.verifyId)(ni.o.outputId));
143
- const knownOutputsById = await storage.findOutputsByIds(outputIds, trx);
144
- for (const ni of knownInputRows) {
145
- const { i, o } = ni;
146
- const o2 = knownOutputsById[(0, utilityHelpers_1.verifyId)(o.outputId)];
147
- if (!o2)
148
- throw new WERR_errors_1.WERR_INTERNAL(`missing outputId ${o.outputId}`);
149
- if (o2.spentBy !== undefined) {
150
- const spendingTx = await storage.findTransactionById((0, utilityHelpers_1.verifyId)(o2.spentBy), trx);
151
- if (spendingTx === null || spendingTx === void 0 ? void 0 : spendingTx.txid) {
152
- doubleSpendTxid = spendingTx.txid;
153
- return;
154
- }
155
- }
156
- if (o2.spendable != true) {
157
- throw new WERR_errors_1.WERR_INVALID_PARAMETER(`inputs[${i.vin}]`, `spendable output. output ${o.txid}:${o.vout} appears to have been spent (spendable=${o2.spendable}).`);
158
- }
159
- await storage.updateOutput((0, utilityHelpers_1.verifyId)(o.outputId), {
160
- spendable: false,
161
- spentBy: ctx.transactionId,
162
- spendingDescription: i.inputDescription
163
- }, trx);
164
- o.spendable = false;
165
- o.spentBy = ctx.transactionId;
166
- o.spendingDescription = i.inputDescription;
167
- }
168
- });
314
+ const doubleSpendTxid = await markKnownInputsSpent(storage, knownInputRows, ctx.transactionId);
169
315
  if (doubleSpendTxid) {
170
- const beef = await storage.getBeefForTransaction(doubleSpendTxid, {});
171
- const rar = {
172
- txid: '',
173
- status: 'doubleSpend',
174
- competingTxs: [doubleSpendTxid],
175
- competingBeef: beef.toBinary()
176
- };
177
- throw new WERR_errors_1.WERR_REVIEW_ACTIONS([rar], []);
316
+ const beef = await getCompetingBeefForReview(storage, doubleSpendTxid);
317
+ throw new WERR_errors_1.WERR_REVIEW_ACTIONS([{ txid: '', status: 'doubleSpend', competingTxs: [doubleSpendTxid], competingBeef: beef.toBinary() }], []);
178
318
  }
179
319
  }
180
- for (const o of allocatedChange) {
320
+ for (const o of allocatedChange)
181
321
  newInputs.push({ o, unlockLen: 107 });
182
- }
183
322
  let vin = -1;
184
323
  for (const { i, o, unlockLen } of newInputs) {
185
324
  vin++;
186
- if (o) {
187
- if (!i && !unlockLen)
188
- throw new WERR_errors_1.WERR_INTERNAL(`vin ${vin} non-fixedInput without unlockLen`);
189
- const sourceTransaction = vargs.includeAllSourceTransactions && vargs.isSignAction
190
- ? await storage.getRawTxOfKnownValidTransaction(o.txid)
191
- : undefined;
192
- const ri = {
193
- vin,
194
- sourceTxid: o.txid,
195
- sourceVout: o.vout,
196
- sourceSatoshis: o.satoshis,
197
- sourceLockingScript: (0, utilityHelpers_noBuffer_1.asString)(o.lockingScript),
198
- sourceTransaction,
199
- unlockingScriptLength: unlockLen ? unlockLen : i.unlockingScriptLength,
200
- providedBy: i && o.providedBy === 'storage' ? 'you-and-storage' : o.providedBy,
201
- type: o.type,
202
- spendingDescription: o.spendingDescription || undefined,
203
- derivationPrefix: o.derivationPrefix || undefined,
204
- derivationSuffix: o.derivationSuffix || undefined,
205
- senderIdentityKey: o.senderIdentityKey || undefined
206
- };
207
- r.push(ri);
325
+ if (o != null) {
326
+ r.push(await buildSdkInputFromOutput(storage, vargs, vin, i, o, unlockLen));
208
327
  }
209
328
  else {
210
- if (!i)
329
+ if (i == null)
211
330
  throw new WERR_errors_1.WERR_INTERNAL(`vin ${vin} without output or xinput`);
212
- // user specified input with no corresponding output being spent.
213
- const ri = {
214
- vin,
215
- sourceTxid: i.outpoint.txid,
216
- sourceVout: i.outpoint.vout,
217
- sourceSatoshis: i.satoshis,
218
- sourceLockingScript: i.lockingScript.toHex(),
219
- unlockingScriptLength: i.unlockingScriptLength,
220
- providedBy: 'you',
221
- type: 'custom',
222
- spendingDescription: undefined,
223
- derivationPrefix: undefined,
224
- derivationSuffix: undefined,
225
- senderIdentityKey: undefined
226
- };
227
- r.push(ri);
331
+ r.push(buildSdkInputFromXInput(vin, i));
228
332
  }
229
333
  }
230
334
  return r;
231
335
  }
232
- async function createNewOutputs(storage, userId, vargs, ctx, changeOutputs) {
233
- var _a;
234
- const outputs = [];
235
- // Lookup output baskets
336
+ async function getCompetingBeefForReview(storage, txid) {
337
+ try {
338
+ return await storage.getBeefForTransaction(txid, {});
339
+ }
340
+ catch (e) {
341
+ const walletError = sdk_2.WalletError.fromUnknown(e);
342
+ if (walletError instanceof WERR_errors_1.WERR_INVALID_PARAMETER || walletError.code === 'WERR_INVALID_PARAMETER') {
343
+ const beef = new sdk_1.Beef();
344
+ beef.mergeTxidOnly(txid);
345
+ return beef;
346
+ }
347
+ throw e;
348
+ }
349
+ }
350
+ /** Build the SDK descriptor for a persisted output. */
351
+ function describeNewOutput(o, tags, txBaskets) {
352
+ const changeVout = o.change && o.purpose === 'change' && o.providedBy === 'storage' ? o.vout : undefined;
353
+ const ro = {
354
+ vout: (0, utilityHelpers_1.verifyInteger)(o.vout),
355
+ satoshis: sdk_1.Validation.validateSatoshis(o.satoshis, 'o.satoshis'),
356
+ lockingScript: o.lockingScript == null ? '' : (0, utilityHelpers_noBuffer_1.asString)(o.lockingScript),
357
+ providedBy: (0, utilityHelpers_1.verifyTruthy)(o.providedBy),
358
+ purpose: o.purpose || undefined,
359
+ basket: Object.values(txBaskets).find(b => b.basketId === o.basketId)?.name,
360
+ tags,
361
+ outputDescription: o.outputDescription,
362
+ derivationSuffix: o.derivationSuffix,
363
+ customInstructions: o.customInstructions
364
+ };
365
+ return { changeVout, ro };
366
+ }
367
+ /** Insert the output and attach its tags; return the SDK output descriptor. */
368
+ async function persistNewOutput(storage, o, tags, txTags, txBaskets, trx) {
369
+ o.outputId = await storage.insertOutput(o, trx);
370
+ for (const tagName of new Set(tags)) {
371
+ const tag = txTags[tagName];
372
+ await storage.insertOutputTagMap({
373
+ outputId: (0, utilityHelpers_1.verifyId)(o.outputId),
374
+ outputTagId: (0, utilityHelpers_1.verifyId)(tag.outputTagId),
375
+ created_at: new Date(),
376
+ updated_at: new Date(),
377
+ isDeleted: false
378
+ }, trx);
379
+ }
380
+ return describeNewOutput(o, tags, txBaskets);
381
+ }
382
+ async function createNewOutputs(storage, userId, vargs, ctx, changeOutputs, trx) {
236
383
  const txBaskets = {};
237
384
  const basketNames = [...new Set(ctx.xoutputs.map(x => x.basket).filter((v) => !!v))];
238
- Object.assign(txBaskets, await storage.findOrInsertOutputBasketsBulk(userId, basketNames));
239
- // Lookup output tags
385
+ Object.assign(txBaskets, await storage.findOrInsertOutputBasketsBulk(userId, basketNames, trx));
240
386
  const txTags = {};
241
387
  const tagNames = [...new Set(ctx.xoutputs.flatMap(x => x.tags))];
242
- Object.assign(txTags, await storage.findOrInsertOutputTagsBulk(userId, tagNames));
388
+ Object.assign(txTags, await storage.findOrInsertOutputTagsBulk(userId, tagNames, trx));
243
389
  const newOutputs = [];
244
390
  for (const xo of ctx.xoutputs) {
245
391
  const lockingScript = (0, utilityHelpers_noBuffer_1.asArray)(xo.lockingScript);
@@ -255,7 +401,7 @@ async function createNewOutputs(storage, userId, vargs, ctx, changeOutputs) {
255
401
  created_at: now,
256
402
  updated_at: now,
257
403
  commissionId: 0
258
- });
404
+ }, trx);
259
405
  const o = makeDefaultOutput(userId, ctx.transactionId, xo.satoshis, xo.vout);
260
406
  o.lockingScript = lockingScript;
261
407
  o.providedBy = 'storage';
@@ -265,11 +411,9 @@ async function createNewOutputs(storage, userId, vargs, ctx, changeOutputs) {
265
411
  newOutputs.push({ o, tags: [] });
266
412
  }
267
413
  else {
268
- // The user wants tracking if they put their output in a basket
269
- const basketId = !xo.basket ? undefined : txBaskets[xo.basket].basketId;
270
414
  const o = makeDefaultOutput(userId, ctx.transactionId, xo.satoshis, xo.vout);
271
415
  o.lockingScript = lockingScript;
272
- o.basketId = basketId;
416
+ o.basketId = xo.basket ? txBaskets[xo.basket].basketId : undefined;
273
417
  o.customInstructions = xo.customInstructions;
274
418
  o.outputDescription = xo.outputDescription;
275
419
  o.providedBy = xo.providedBy;
@@ -282,79 +426,27 @@ async function createNewOutputs(storage, userId, vargs, ctx, changeOutputs) {
282
426
  o.spendable = true;
283
427
  newOutputs.push({ o, tags: [] });
284
428
  }
285
- if (vargs.options.randomizeOutputs) {
286
- const randomVals = [];
287
- const nextRandomVal = () => {
288
- let val = 0;
289
- if (!randomVals || randomVals.length === 0) {
290
- const bytes = (0, sdk_1.Random)(4);
291
- val = (((bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3]) >>> 0) / 0x100000000;
292
- }
293
- else {
294
- val = randomVals.shift() || 0;
295
- randomVals.push(val);
296
- }
297
- return val;
298
- };
299
- /** In-place array shuffle */
300
- const shuffleArray = (array) => {
301
- let currentIndex = array.length;
302
- let temporaryValue;
303
- let randomIndex;
304
- while (currentIndex !== 0) {
305
- randomIndex = Math.floor(nextRandomVal() * currentIndex);
306
- currentIndex -= 1;
307
- temporaryValue = array[currentIndex];
308
- array[currentIndex] = array[randomIndex];
309
- array[randomIndex] = temporaryValue;
310
- }
311
- return array;
312
- };
313
- let vout = -1;
314
- const newVouts = Array(newOutputs.length);
315
- for (let i = 0; i < newVouts.length; i++)
316
- newVouts[i] = i;
317
- shuffleArray(newVouts);
318
- for (const no of newOutputs) {
319
- vout++;
320
- if (no.o.vout !== vout)
321
- throw new WERR_errors_1.WERR_INTERNAL(`new output ${vout} has out of order vout ${no.o.vout}`);
322
- no.o.vout = newVouts[vout];
323
- }
324
- }
429
+ if (vargs.options.randomizeOutputs)
430
+ (0, actionPlanning_1.randomizeOutputVouts)(newOutputs.map(output => output.o), vargs.randomVals);
431
+ // The overwhelmingly common path has no output tags. Those rows do not
432
+ // need generated outputIds, so Knex can persist fixed and change outputs in
433
+ // one multi-row statement. Tagged rows retain the established id-dependent
434
+ // insertion path below.
435
+ const untagged = newOutputs.filter(output => output.tags.length === 0);
436
+ await storage.insertOutputs(untagged.map(output => output.o), trx);
437
+ const outputs = [];
325
438
  const changeVouts = [];
326
439
  for (const { o, tags } of newOutputs) {
327
- o.outputId = await storage.insertOutput(o);
328
- if (o.change && o.purpose === 'change' && o.providedBy === 'storage')
329
- changeVouts.push(o.vout);
330
- // Add tags to the output
331
- for (const tagName of [...new Set(tags)]) {
332
- const tag = txTags[tagName];
333
- await storage.insertOutputTagMap({
334
- outputId: (0, utilityHelpers_1.verifyId)(o.outputId),
335
- outputTagId: (0, utilityHelpers_1.verifyId)(tag.outputTagId),
336
- created_at: new Date(),
337
- updated_at: new Date(),
338
- isDeleted: false
339
- });
340
- }
341
- const ro = {
342
- vout: (0, utilityHelpers_1.verifyInteger)(o.vout),
343
- satoshis: sdk_1.Validation.validateSatoshis(o.satoshis, 'o.satoshis'),
344
- lockingScript: !o.lockingScript ? '' : (0, utilityHelpers_noBuffer_1.asString)(o.lockingScript),
345
- providedBy: (0, utilityHelpers_1.verifyTruthy)(o.providedBy),
346
- purpose: o.purpose || undefined,
347
- basket: (_a = Object.values(txBaskets).find(b => b.basketId === o.basketId)) === null || _a === void 0 ? void 0 : _a.name,
348
- tags: tags,
349
- outputDescription: o.outputDescription,
350
- derivationSuffix: o.derivationSuffix,
351
- customInstructions: o.customInstructions
352
- };
440
+ const { changeVout, ro } = tags.length === 0
441
+ ? describeNewOutput(o, tags, txBaskets)
442
+ : await persistNewOutput(storage, o, tags, txTags, txBaskets, trx);
443
+ if (changeVout !== undefined)
444
+ changeVouts.push(changeVout);
353
445
  outputs.push(ro);
354
446
  }
355
447
  return { outputs, changeVouts };
356
448
  }
357
- async function createNewTxRecord(storage, userId, vargs, storageBeef) {
449
+ async function createNewTxRecord(storage, userId, vargs, storageBeef, satoshis = 0, trx, status = 'unsigned') {
358
450
  const now = new Date();
359
451
  const newTx = {
360
452
  created_at: now,
@@ -362,20 +454,22 @@ async function createNewTxRecord(storage, userId, vargs, storageBeef) {
362
454
  transactionId: 0,
363
455
  version: vargs.version,
364
456
  lockTime: vargs.lockTime,
365
- status: 'unsigned',
457
+ status,
366
458
  reference: (0, utilityHelpers_1.randomBytesBase64)(12),
367
- satoshis: 0, // updated after fundingTransaction
459
+ satoshis,
368
460
  userId,
369
461
  isOutgoing: true,
370
- inputBEEF: storageBeef.toBinary(),
462
+ inputBEEF: storageBeef,
371
463
  description: vargs.description,
372
464
  txid: undefined,
373
465
  rawTx: undefined
374
466
  };
375
- newTx.transactionId = await storage.insertTransaction(newTx);
376
- for (const label of vargs.labels) {
377
- const txLabel = await storage.findOrInsertTxLabel(userId, label);
378
- await storage.findOrInsertTxLabelMap((0, utilityHelpers_1.verifyId)(newTx.transactionId), (0, utilityHelpers_1.verifyId)(txLabel.txLabelId));
467
+ newTx.transactionId = await storage.insertTransaction(newTx, trx);
468
+ const labelNames = [...new Set((0, brc153ReferenceLabels_1.stripBrc153ReferenceLabels)(vargs.labels))];
469
+ const labels = await storage.findOrInsertTxLabelsBulk(userId, labelNames, trx);
470
+ for (const label of labelNames) {
471
+ const txLabel = labels[label];
472
+ await storage.findOrInsertTxLabelMap((0, utilityHelpers_1.verifyId)(newTx.transactionId), (0, utilityHelpers_1.verifyId)(txLabel.txLabelId), trx);
379
473
  }
380
474
  return newTx;
381
475
  }
@@ -455,11 +549,11 @@ function validateRequiredOutputs(storage, userId, vargs) {
455
549
  * @returns {xinputs} extended validated required inputs.
456
550
  */
457
551
  async function validateRequiredInputs(storage, userId, vargs) {
458
- //stampLog(vargs, `start storage verifyInputBeef`)
552
+ // stampLog(vargs, `start storage verifyInputBeef`)
459
553
  const beef = new sdk_1.Beef();
460
554
  if (vargs.inputs.length === 0)
461
555
  return { storageBeef: beef, beef, xinputs: [] };
462
- if (vargs.inputBEEF)
556
+ if (vargs.inputBEEF != null)
463
557
  beef.mergeBeef(vargs.inputBEEF);
464
558
  const xinputs = vargs.inputs.map((input, vin) => ({
465
559
  ...input,
@@ -469,101 +563,109 @@ async function validateRequiredInputs(storage, userId, vargs) {
469
563
  output: undefined
470
564
  }));
471
565
  const trustSelf = vargs.options.trustSelf === 'known';
472
- const inputTxids = {};
473
- for (const input of xinputs)
474
- inputTxids[input.outpoint.txid] = true;
475
- // Check beef from user that either there are no txidOnly entries,
476
- // or that we can trust storage data and it does indeed vouch
477
- // for any txidOnly entries
566
+ const preloadedOutputsByOutpoint = await storage.findOutputsByOutpoints(userId, xinputs.map(i => ({ txid: i.outpoint.txid, vout: i.outpoint.vout })));
567
+ const preloadedOutputIds = Object.values(preloadedOutputsByOutpoint).map(output => output.outputId);
568
+ if ((await storage.findReservedActionBatchOutputIds(preloadedOutputIds)).length > 0) {
569
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('inputs', 'outputs not reserved by an active action batch');
570
+ }
571
+ const inputsByTxid = {};
572
+ for (const input of xinputs) {
573
+ inputsByTxid[input.outpoint.txid] ||= [];
574
+ inputsByTxid[input.outpoint.txid].push(input);
575
+ }
576
+ const localKnownInputTxids = {};
577
+ for (const [txid, txInputs] of Object.entries(inputsByTxid)) {
578
+ localKnownInputTxids[txid] = txInputs.every(input => {
579
+ const output = preloadedOutputsByOutpoint[`${input.outpoint.txid}.${input.outpoint.vout}`];
580
+ return output?.lockingScript !== undefined && Number.isInteger(output?.satoshis);
581
+ });
582
+ }
583
+ await validateBeefTxidOnlyEntries(beef, inputsByTxid, trustSelf, storage);
584
+ await ensureBeefContainsAllInputTxids(beef, inputsByTxid, localKnownInputTxids, trustSelf, storage);
585
+ if (!(await beef.verify(await storage.getServices().getChainTracker(), true))) {
586
+ console.log(`verifyInputBeef failed, inputBEEF failed to verify.\n${beef.toLogString()}\n`);
587
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('inputBEEF', 'valid Beef when factoring options.trustSelf');
588
+ }
589
+ const storageBeef = beef.clone();
590
+ for (const input of xinputs) {
591
+ await resolveInputScript(storage, userId, vargs, input, beef, preloadedOutputsByOutpoint);
592
+ }
593
+ return { beef, storageBeef, xinputs };
594
+ }
595
+ /** Check all txidOnly entries in beef: require either trustSelf vouch or throw. */
596
+ async function validateBeefTxidOnlyEntries(beef, inputsByTxid, trustSelf, storage) {
478
597
  for (const btx of beef.txs) {
479
- if (btx.isTxidOnly) {
480
- if (!trustSelf)
481
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('inputBEEF', `valid and contain complete proof data for ${btx.txid}`);
482
- if (!inputTxids[btx.txid]) {
483
- // inputTxids are checked next
484
- const isKnown = await storage.verifyKnownValidTransaction(btx.txid);
485
- if (!isKnown)
486
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('inputBEEF', `valid and contain complete proof data for unknown ${btx.txid}`);
487
- }
598
+ if (!btx.isTxidOnly)
599
+ continue;
600
+ if (!trustSelf)
601
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('inputBEEF', `valid and contain complete proof data for ${btx.txid}`);
602
+ if (inputsByTxid[btx.txid] == null) {
603
+ const isKnown = await storage.verifyKnownValidTransaction(btx.txid);
604
+ if (!isKnown)
605
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('inputBEEF', `valid and contain complete proof data for unknown ${btx.txid}`);
488
606
  }
489
607
  }
490
- // Make sure that there's an entry for all inputs txid values:
491
- for (const txid of Object.keys(inputTxids)) {
608
+ }
609
+ /** Ensure beef has an entry (or txidOnly) for every input txid. */
610
+ async function ensureBeefContainsAllInputTxids(beef, inputsByTxid, localKnownInputTxids, trustSelf, storage) {
611
+ for (const txid of Object.keys(inputsByTxid)) {
492
612
  let btx = beef.findTxid(txid);
493
- if (!btx && trustSelf) {
613
+ if (btx == null && localKnownInputTxids[txid])
614
+ continue;
615
+ if (btx == null && trustSelf) {
494
616
  if (await storage.verifyKnownValidTransaction(txid))
495
617
  btx = beef.mergeTxidOnly(txid);
496
618
  }
497
- if (!btx) {
619
+ if (btx == null) {
498
620
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('inputBEEF', `valid and contain proof data for possibly known ${txid}, beef ${beef.toLogString()}`);
499
621
  }
500
622
  }
501
- if (!(await beef.verify(await storage.getServices().getChainTracker(), true))) {
502
- console.log(`verifyInputBeef failed, inputBEEF failed to verify.\n${beef.toLogString()}\n`);
503
- //console.log(`verifyInputBeef failed, inputBEEF failed to verify.\n${stampLogFormat(vargs.log)}\n${beef.toLogString()}\n`)
504
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('inputBEEF', 'valid Beef when factoring options.trustSelf');
623
+ }
624
+ /** Resolve satoshis and lockingScript for one xinput from either storage or the beef. */
625
+ function applyStoredInputScript(output, input, vargs) {
626
+ const { txid, vout } = input.outpoint;
627
+ if (output.change) {
628
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER(`inputs[${input.vin}]`, 'an unmanaged input. Change outputs are managed by your wallet.');
505
629
  }
506
- // beef may now be trusted and has a BeefTx for every input txid.
507
- const storageBeef = beef.clone();
508
- const preloadedOutputsByOutpoint = await storage.findOutputsByOutpoints(userId, xinputs.map(i => ({ txid: i.outpoint.txid, vout: i.outpoint.vout })));
509
- for (const input of xinputs) {
510
- const { txid, vout } = input.outpoint;
511
- let output = preloadedOutputsByOutpoint[`${txid}.${vout}`];
512
- if (!output)
513
- output = (0, utilityHelpers_1.verifyOneOrNone)(await storage.findOutputs({ partial: { userId, txid, vout } }));
514
- if (output) {
515
- if (output.change) {
516
- throw new WERR_errors_1.WERR_INVALID_PARAMETER(`inputs[${input.vin}]`, 'an unmanaged input. Change outputs are managed by your wallet.');
517
- }
518
- input.output = output;
519
- if (!Array.isArray(output.lockingScript) || !Number.isInteger(output.satoshis))
520
- throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${txid}.${vout}`, 'output with valid lockingScript and satoshis');
521
- if (!disableDoubleSpendCheckForTest && !output.spendable && !vargs.isNoSend)
522
- throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${txid}.${vout}`, 'spendable output unless noSend is true');
523
- // input is spending an existing user output which has an lockingScript
524
- input.satoshis = sdk_1.Validation.validateSatoshis(output.satoshis, 'output.satoshis');
525
- input.lockingScript = sdk_1.Script.fromBinary((0, utilityHelpers_noBuffer_1.asArray)(output.lockingScript));
526
- }
527
- else {
528
- let btx = beef.findTxid(txid);
529
- if (btx.isTxidOnly) {
530
- const { rawTx, proven } = await storage.getProvenOrRawTx(txid);
531
- //stampLog(vargs, `... storage verifyInputBeef getProvenOrRawTx ${txid} ${proven ? 'proven' : rawTx ? 'rawTx' : 'unknown'}`)
532
- if (!rawTx)
533
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('inputBEEF', `valid and contain proof data for ${txid}`);
534
- btx = beef.mergeRawTx((0, utilityHelpers_noBuffer_1.asArray)(rawTx));
535
- if (proven)
536
- beef.mergeBump(new EntityProvenTx_1.EntityProvenTx(proven).getMerklePath());
537
- }
538
- // btx is valid has parsed transaction data.
539
- if (vout >= btx.tx.outputs.length)
540
- throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${txid}.${vout}`, 'valid outpoint');
541
- const so = btx.tx.outputs[vout];
542
- input.satoshis = sdk_1.Validation.validateSatoshis(so.satoshis, 'so.satoshis');
543
- input.lockingScript = so.lockingScript;
630
+ input.output = output;
631
+ if (output.lockingScript === undefined || !Number.isInteger(output.satoshis)) {
632
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${txid}.${vout}`, 'output with valid lockingScript and satoshis');
633
+ }
634
+ if (!disableDoubleSpendCheckForTest && !output.spendable && !vargs.isNoSend) {
635
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${txid}.${vout}`, 'spendable output unless noSend is true');
636
+ }
637
+ input.satoshis = sdk_1.Validation.validateSatoshis(output.satoshis, 'output.satoshis');
638
+ input.lockingScript = sdk_1.Script.fromBinary((0, utilityHelpers_noBuffer_1.asArray)(output.lockingScript));
639
+ }
640
+ async function applyBeefInputScript(storage, beef, input) {
641
+ const { txid, vout } = input.outpoint;
642
+ let beefTx = beef.findTxid(txid);
643
+ if (beefTx.isTxidOnly) {
644
+ const { rawTx, proven } = await storage.getProvenOrRawTx(txid);
645
+ if (rawTx == null) {
646
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('inputBEEF', `valid and contain proof data for ${txid}`);
544
647
  }
648
+ beefTx = beef.mergeRawTx((0, utilityHelpers_noBuffer_1.asArray)(rawTx));
649
+ if (proven != null)
650
+ beef.mergeBump(new EntityProvenTx_1.EntityProvenTx(proven).getMerklePath());
545
651
  }
546
- return { beef, storageBeef, xinputs };
652
+ if (vout >= beefTx.tx.outputs.length) {
653
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${txid}.${vout}`, 'valid outpoint');
654
+ }
655
+ const sourceOutput = beefTx.tx.outputs[vout];
656
+ input.satoshis = sdk_1.Validation.validateSatoshis(sourceOutput.satoshis, 'so.satoshis');
657
+ input.lockingScript = sourceOutput.lockingScript;
547
658
  }
548
- async function verifyBeefFixOrhpans(beef, storage) {
549
- const r = beef.verifyValid();
550
- if (!r.valid) {
551
- // Beef is structurally invalid.
552
- return false;
659
+ async function resolveInputScript(storage, userId, vargs, input, beef, preloadedOutputsByOutpoint) {
660
+ const { txid, vout } = input.outpoint;
661
+ let output = preloadedOutputsByOutpoint[`${txid}.${vout}`];
662
+ output ??= (0, utilityHelpers_1.verifyOneOrNone)(await storage.findOutputs({ partial: { userId, txid, vout } }));
663
+ if (output != null) {
664
+ applyStoredInputScript(output, input, vargs);
553
665
  }
554
- const heights = Object.keys(r.roots);
555
- const services = storage.getServices();
556
- const chainTracker = await services.getChainTracker();
557
- let rootsAreValid = true;
558
- for (const height of heights) {
559
- const isValid = await chainTracker.isValidRootForHeight(r.roots[height], Number(height));
560
- if (isValid)
561
- continue;
562
- // The original block may have been orphaned, check for a new proof.
563
- const mp = beef.bumps.find(b => b.blockHeight === Number(height));
564
- //const p = await services.getMerklePath()
666
+ else {
667
+ await applyBeefInputScript(storage, beef, input);
565
668
  }
566
- return false;
567
669
  }
568
670
  async function validateNoSendChange(storage, userId, vargs, changeBasket) {
569
671
  const r = [];
@@ -571,111 +673,267 @@ async function validateNoSendChange(storage, userId, vargs, changeBasket) {
571
673
  return [];
572
674
  const noSendChange = vargs.options.noSendChange;
573
675
  if (noSendChange && noSendChange.length > 0) {
676
+ const byOutpoint = await storage.findOutputsByOutpoints(userId, noSendChange);
574
677
  for (const op of noSendChange) {
575
- const output = (0, utilityHelpers_1.verifyOneOrNone)(await storage.findOutputs({
576
- partial: { userId, txid: op.txid, vout: op.vout }
577
- }));
578
- // noSendChange is not marked spendable until sent, may not already be spent, and must have a valid greater than zero satoshis
579
- if (!output ||
580
- output.providedBy !== 'storage' ||
581
- output.purpose !== 'change' ||
582
- output.spendable === false ||
583
- Number.isInteger(output.spentBy) ||
678
+ const output = byOutpoint[`${op.txid}.${op.vout}`];
679
+ // noSendChange is signed through the same BRC-29 path as allocated change.
680
+ // It must satisfy the full managed-change policy, not merely share the
681
+ // default basket or have a P2PKH-shaped locking script.
682
+ if (!(0, managedChange_1.isAutoSpendableChangeOutput)(output) ||
584
683
  !(0, utilityHelpers_1.verifyNumber)(output.satoshis) ||
585
- output.basketId !== changeBasket.basketId)
586
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('noSendChange outpoint', 'valid');
587
- if (-1 < r.findIndex(o => o.outputId === output.outputId))
588
- // noSendChange duplicate OutPoints are not allowed.
684
+ output.basketId !== changeBasket.basketId) {
685
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('noSendChange outpoint', 'wallet-managed BRC-29 change');
686
+ }
687
+ if (r.some(o => o.outputId === output.outputId))
688
+ // noSendChange duplicate OutPoints are not allowed.
689
+ {
589
690
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('noSendChange outpoint', 'unique. Duplicates are not allowed.');
691
+ }
590
692
  r.push(output);
591
693
  }
592
694
  }
695
+ if ((await storage.findReservedActionBatchOutputIds(r.map(output => output.outputId))).length > 0) {
696
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('noSendChange', 'outputs not reserved by an active action batch');
697
+ }
593
698
  return r;
594
699
  }
595
- async function preflightInsufficientFundsFastPath(vargs, xinputs, xoutputs, noSendChangeIn, availableChangeCount, feeModel) {
596
- if (feeModel.model !== 'sat/kb' || !feeModel.value)
597
- return;
598
- const fixedInputSatoshis = xinputs.reduce((a, e) => a + e.satoshis, 0);
599
- const noSendSatoshis = noSendChangeIn.reduce((a, e) => a + Number(e.satoshis || 0), 0);
600
- const spending = xoutputs.reduce((a, e) => a + e.satoshis, 0);
601
- const minSize = (0, utils_1.transactionSize)(xinputs.map(i => i.unlockingScriptLength || 0), xoutputs.map(o => Math.floor(o.lockingScript.length / 2)));
602
- const minFee = Math.ceil((minSize / 1000) * feeModel.value);
603
- const minRequired = spending + minFee;
604
- const fixedAvailable = fixedInputSatoshis + noSendSatoshis;
605
- if (fixedAvailable >= minRequired)
606
- return;
607
- // Keep common successful path cheap:
608
- // - If there are zero change candidates, failure is certain.
609
- // Otherwise, defer to the main funding allocator.
610
- const deficit = minRequired - fixedAvailable;
611
- if (availableChangeCount <= 0) {
612
- throw new WERR_errors_1.WERR_INSUFFICIENT_FUNDS(minRequired, deficit);
613
- }
614
- }
615
- async function fundNewTransactionSdk(storage, userId, vargs, ctx) {
616
- const params = {
617
- fixedInputs: ctx.xinputs.map(xi => ({
618
- satoshis: xi.satoshis,
619
- unlockingScriptLength: xi.unlockingScriptLength
700
+ 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);
703
+ }
704
+ class FundingClaimConflict extends Error {
705
+ conflict;
706
+ constructor(conflict) {
707
+ super('createAction funding claim changed concurrently');
708
+ this.conflict = conflict;
709
+ }
710
+ }
711
+ async function traceStorageStep(storage, name, parent, attributes, callback) {
712
+ if (!storage.telemetry.enabled)
713
+ return await callback();
714
+ return await storage.telemetry.withSpan(name, { component: 'wallet-storage', parent: parent?.context, attributes }, async (span) => await callback(span));
715
+ }
716
+ function makeFundingParams(vargs, xinputs, xoutputs, changeBasket, feeModel, availableChangeCount) {
717
+ return {
718
+ fixedInputs: xinputs.map(input => ({
719
+ satoshis: input.satoshis,
720
+ unlockingScriptLength: input.unlockingScriptLength
620
721
  })),
621
- fixedOutputs: ctx.xoutputs.map(xo => ({
622
- satoshis: xo.satoshis,
623
- lockingScriptLength: xo.lockingScript.length / 2
722
+ fixedOutputs: xoutputs.map(output => ({
723
+ satoshis: output.satoshis,
724
+ lockingScriptLength: output.lockingScript.length / 2
624
725
  })),
625
- feeModel: ctx.feeModel,
626
- changeInitialSatoshis: Math.max(1, ctx.changeBasket.minimumDesiredUTXOValue),
627
- changeFirstSatoshis: Math.max(1, Math.round(ctx.changeBasket.minimumDesiredUTXOValue / 4)),
726
+ feeModel,
727
+ changeInitialSatoshis: Math.max(1, changeBasket.minimumDesiredUTXOValue),
728
+ changeFirstSatoshis: Math.max(1, Math.round(changeBasket.minimumDesiredUTXOValue / 4)),
628
729
  changeLockingScriptLength: 25,
629
730
  changeUnlockingScriptLength: 107,
630
- targetNetCount: ctx.changeBasket.numberOfDesiredUTXOs - ctx.availableChangeCount,
731
+ targetNetCount: changeBasket.numberOfDesiredUTXOs - availableChangeCount,
631
732
  randomVals: vargs.randomVals
632
733
  };
633
- const noSendChange = [...ctx.noSendChangeIn];
634
- const outputs = {};
635
- const allocateChangeInput = async (targetSatoshis, exactSatoshis) => {
636
- // noSendChange gets allocated first...typically only one input...just allocate in order...
637
- if (noSendChange.length > 0) {
638
- const o = noSendChange.pop();
639
- outputs[o.outputId] = o;
640
- // allocate the output in storage, noSendChange is by definition spendable false and part of noSpend transaction batch.
641
- await storage.updateOutput(o.outputId, {
642
- spendable: false,
643
- spentBy: ctx.transactionId
644
- });
645
- o.spendable = false;
646
- o.spentBy = ctx.transactionId;
647
- const r = {
648
- outputId: o.outputId,
649
- satoshis: o.satoshis
650
- };
651
- return r;
652
- }
653
- const basketId = ctx.changeBasket.basketId;
654
- const o = await storage.allocateChangeInput(userId, basketId, targetSatoshis, exactSatoshis, !vargs.isDelayed, ctx.transactionId);
655
- if (!o)
656
- return undefined;
657
- outputs[o.outputId] = o;
658
- const r = {
659
- outputId: o.outputId,
660
- satoshis: o.satoshis
734
+ }
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
+ });
748
+ 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);
753
+ return await traceStorageStep(storage, 'wallet.storage.create_action.funding_plan', parent, {
754
+ 'funding.candidate_count': available.length,
755
+ 'funding.no_send_change_count': noSendChangeIn.length
756
+ }, async (span) => {
757
+ const allocated = new Map();
758
+ const availableSelector = new actionPlanning_1.CanonicalChangeSelector(available);
759
+ const noSend = [...noSendChangeIn];
760
+ const noSendById = new Map(noSendChangeIn.map(output => [output.outputId, output]));
761
+ const allocate = async (targetSatoshis, exactSatoshis) => {
762
+ let output = noSend.pop();
763
+ output ??= availableSelector.take(targetSatoshis, exactSatoshis);
764
+ if (output == null)
765
+ return undefined;
766
+ allocated.set(output.outputId, output);
767
+ return { outputId: output.outputId, satoshis: output.satoshis };
661
768
  };
662
- return r;
769
+ const release = async (outputId) => {
770
+ const output = allocated.get(outputId);
771
+ if (output == null)
772
+ return;
773
+ allocated.delete(outputId);
774
+ availableSelector.release(outputId);
775
+ const noSendOutput = noSendById.get(outputId);
776
+ if (noSendOutput != null)
777
+ noSend.push(noSendOutput);
778
+ };
779
+ const result = await (0, generateChange_1.generateChangeSdk)(params, allocate, release, vargs.logger, storage.telemetry);
780
+ const selected = result.allocatedChangeInputs.map(input => (0, utilityHelpers_1.verifyTruthy)(allocated.get(input.outputId)));
781
+ span?.end({
782
+ attributes: {
783
+ 'funding.allocated_input_count': selected.length,
784
+ 'funding.change_output_count': result.changeOutputs.length,
785
+ 'funding.fee_satoshis': result.fee,
786
+ 'funding.transaction_size_bytes': result.size
787
+ }
788
+ });
789
+ return {
790
+ params,
791
+ result,
792
+ selected,
793
+ availableChangeCount: candidates.length
794
+ };
795
+ });
796
+ }
797
+ async function claimFundingPlan(storage, request) {
798
+ const [userId, basketId, excludeSending, transactionId, noSendChangeIn, plan, trx] = request;
799
+ if (plan.selected.length === 0) {
800
+ return { outputs: [], sourceTransactionCount: 0, hydratedScriptCount: 0, scriptSourceTransactionCount: 0 };
801
+ }
802
+ 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);
808
+ const transactionIds = [...new Set(Object.values(currentById).map(output => output.transactionId))];
809
+ const claimed = [];
810
+ for (const planned of plan.selected) {
811
+ const current = currentById[planned.outputId];
812
+ if (current?.outputId !== planned.outputId ||
813
+ current?.satoshis !== planned.satoshis ||
814
+ current?.basketId !== basketId ||
815
+ !(0, managedChange_1.isAutoSpendableChangeOutput)(current) ||
816
+ current?.txid !== planned.txid ||
817
+ current?.vout !== planned.vout) {
818
+ return { conflict: noSendIds.has(planned.outputId) ? 'noSendChange' : 'candidate' };
819
+ }
820
+ claimed.push(current);
821
+ }
822
+ const updated = await storage.markChangeInputsSpent(claimed.map(output => output.outputId), transactionId, claimTrx);
823
+ if (updated !== claimed.length) {
824
+ throw new FundingClaimConflict(claimed.some(output => noSendIds.has(output.outputId)) ? 'noSendChange' : 'candidate');
825
+ }
826
+ for (const output of claimed) {
827
+ output.spendable = false;
828
+ output.spentBy = transactionId;
829
+ }
830
+ return { outputs: claimed, sourceTransactionCount: transactionIds.length };
831
+ }, trx).catch(error => {
832
+ if (error instanceof FundingClaimConflict)
833
+ return { conflict: error.conflict };
834
+ throw error;
835
+ });
836
+ if (claim.outputs == null)
837
+ return claim;
838
+ const hydration = await hydrateFundingInputScripts(storage, claim.outputs, trx);
839
+ return {
840
+ outputs: claim.outputs,
841
+ sourceTransactionCount: claim.sourceTransactionCount,
842
+ ...hydration
663
843
  };
664
- const releaseChangeInput = async (outputId) => {
665
- const nsco = ctx.noSendChangeIn.find(o => o.outputId === outputId);
666
- if (nsco) {
667
- noSendChange.push(nsco);
668
- return;
844
+ }
845
+ async function hydrateFundingInputScripts(storage, outputs, trx) {
846
+ 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 !== '');
850
+ if (missing.length === 0)
851
+ return { hydratedScriptCount: 0, scriptSourceTransactionCount: 0 };
852
+ const byTxid = new Map();
853
+ for (const output of missing) {
854
+ const txid = (0, utilityHelpers_1.verifyTruthy)(output.txid);
855
+ const group = byTxid.get(txid) ?? [];
856
+ group.push(output);
857
+ byTxid.set(txid, group);
858
+ }
859
+ const groups = [...byTxid.entries()];
860
+ let cursor = 0;
861
+ await Promise.all(Array.from({ length: Math.min(8, groups.length) }, async () => {
862
+ while (cursor < groups.length) {
863
+ const [txid, group] = groups[cursor++];
864
+ if (group.length === 1) {
865
+ await storage.validateOutputScript(group[0], trx);
866
+ continue;
867
+ }
868
+ const rawTx = await storage.getRawTxOfKnownValidTransaction(txid, undefined, undefined, trx);
869
+ if (rawTx != null) {
870
+ for (const output of group) {
871
+ output.lockingScript = rawTx.slice(output.scriptOffset, output.scriptOffset + output.scriptLength);
872
+ }
873
+ }
874
+ else {
875
+ for (const output of group)
876
+ await storage.validateOutputScript(output, trx);
877
+ }
669
878
  }
670
- await storage.updateOutput(outputId, {
671
- spendable: true,
672
- spentBy: undefined
673
- });
879
+ }));
880
+ return {
881
+ hydratedScriptCount: missing.filter(output => output.lockingScript?.length === output.scriptLength).length,
882
+ scriptSourceTransactionCount: groups.length
674
883
  };
675
- const gcr = await (0, generateChange_1.generateChangeSdk)(params, allocateChangeInput, releaseChangeInput, vargs.logger);
884
+ }
885
+ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, parent, trx) {
886
+ let plan = initialPlan;
887
+ let allocatedChange;
888
+ let retryCount = 0;
889
+ await traceStorageStep(storage, 'wallet.storage.create_action.funding_claim', parent, { 'funding.planned_input_count': initialPlan.selected.length }, async (span) => {
890
+ for (let attempt = 0; attempt < 3; attempt++) {
891
+ const claim = await claimFundingPlan(storage, [
892
+ userId,
893
+ ctx.changeBasket.basketId,
894
+ !vargs.isDelayed,
895
+ ctx.transactionId,
896
+ ctx.noSendChangeIn,
897
+ plan,
898
+ trx
899
+ ]);
900
+ if (claim.outputs != null) {
901
+ allocatedChange = claim.outputs;
902
+ span?.end({
903
+ attributes: {
904
+ 'funding.claim_retry_count': retryCount,
905
+ 'funding.source_transaction_count': claim.sourceTransactionCount,
906
+ 'funding.hydrated_script_count': claim.hydratedScriptCount,
907
+ 'funding.script_source_transaction_count': claim.scriptSourceTransactionCount
908
+ }
909
+ });
910
+ return;
911
+ }
912
+ if (claim.conflict === 'noSendChange') {
913
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('noSendChange', 'outputs that remain spendable during action planning');
914
+ }
915
+ 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
+ ]);
927
+ }
928
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('wallet funding changed repeatedly during action planning; retry createAction');
929
+ });
930
+ if (allocatedChange == null)
931
+ throw new WERR_errors_1.WERR_INTERNAL('funding plan was not claimed');
932
+ const params = plan.params;
933
+ const gcr = plan.result;
676
934
  const nextRandomVal = () => {
677
935
  let val = 0;
678
- if (!vargs.randomVals || vargs.randomVals.length === 0) {
936
+ if (vargs.randomVals == null || vargs.randomVals.length === 0) {
679
937
  const bytes = (0, sdk_1.Random)(4);
680
938
  val = (((bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3]) >>> 0) / 0x100000000;
681
939
  }
@@ -695,7 +953,7 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx) {
695
953
  };
696
954
  const randomDerivation = (count) => {
697
955
  let val = [];
698
- if (!vargs.randomVals || vargs.randomVals.length === 0) {
956
+ if (vargs.randomVals == null || vargs.randomVals.length === 0) {
699
957
  val = (0, sdk_1.Random)(count);
700
958
  }
701
959
  else {
@@ -708,7 +966,7 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx) {
708
966
  const derivationPrefix = randomDerivation(16);
709
967
  const r = {
710
968
  maxPossibleSatoshisAdjustment: gcr.maxPossibleSatoshisAdjustment,
711
- allocatedChange: gcr.allocatedChangeInputs.map(i => outputs[i.outputId]),
969
+ allocatedChange,
712
970
  changeOutputs: gcr.changeOutputs.map((o, i) => ({
713
971
  // what we knnow now and can insert into the database for this new transaction's change output
714
972
  created_at: new Date(),
@@ -748,15 +1006,73 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx) {
748
1006
  function trimInputBeef(beef, vargs) {
749
1007
  if (vargs.options.returnTXIDOnly)
750
1008
  return undefined;
751
- const knownTxids = {};
752
- for (const txid of vargs.options.knownTxids || [])
753
- knownTxids[txid] = true;
754
- for (const txid of beef.txs.map(btx => btx.txid))
755
- if (knownTxids[txid])
756
- beef.makeTxidOnly(txid);
757
- return beef.toBinary();
758
- }
759
- async function mergeAllocatedChangeBeefs(storage, userId, vargs, allocatedChange, beef) {
1009
+ const knownTxids = vargs.options.knownTxids ?? [];
1010
+ const hasKnownTxid = makeKnownTxidLookup(knownTxids);
1011
+ // The returned BEEF normally contains only a handful of transactions. A
1012
+ // direct scan avoids materializing a second full index of a potentially
1013
+ // very large wallet history on every successful action.
1014
+ for (const btx of beef.txs)
1015
+ if (hasKnownTxid(btx.txid))
1016
+ beef.makeTxidOnly(btx.txid);
1017
+ return beef.toUint8Array();
1018
+ }
1019
+ function makeKnownTxidLookup(knownTxids) {
1020
+ let lookups = 0;
1021
+ let indexed;
1022
+ return txid => {
1023
+ lookups++;
1024
+ if (indexed != null)
1025
+ return indexed.has(txid);
1026
+ if (knownTxids.length > 64 && lookups > 4) {
1027
+ indexed = new Set(knownTxids);
1028
+ return indexed.has(txid);
1029
+ }
1030
+ return knownTxids.includes(txid);
1031
+ };
1032
+ }
1033
+ function missingAllocatedChangeTxids(allocatedChange, beef, knownTxids) {
1034
+ const hasKnownTxid = makeKnownTxidLookup(knownTxids);
1035
+ return Array.from(new Set(allocatedChange
1036
+ .map(output => (0, utilityHelpers_1.verifyTruthy)(output.txid))
1037
+ .filter(txid => beef.findTxid(txid) == null && !hasKnownTxid(txid))));
1038
+ }
1039
+ function startAllocatedChangeBeefPrefetch(storage, vargs, allocatedChange, beef, parent) {
1040
+ if (vargs.options.returnTXIDOnly)
1041
+ return Promise.resolve({ sourceCount: 0, txids: [] });
1042
+ const knownTxids = vargs.options.knownTxids ?? [];
1043
+ const missing = missingAllocatedChangeTxids(allocatedChange, beef, knownTxids);
1044
+ if (missing.length === 0)
1045
+ return Promise.resolve({ sourceCount: 0, txids: [] });
1046
+ const options = {
1047
+ trustSelf: undefined,
1048
+ knownTxids,
1049
+ ignoreStorage: false,
1050
+ ignoreServices: true,
1051
+ ignoreNewProven: false,
1052
+ minProofLevel: undefined
1053
+ };
1054
+ return traceStorageStep(storage, 'wallet.storage.create_action.beef_prefetch', parent, {
1055
+ 'beef.planned_source_count': allocatedChange.length,
1056
+ 'beef.missing_source_count': missing.length,
1057
+ 'beef.storage_batch_count': missing.length === 0 ? 0 : 1
1058
+ }, async (span) => {
1059
+ const fetched = await storage.getBeefForTransactions(missing, options);
1060
+ span?.end({
1061
+ attributes: {
1062
+ 'beef.fetched_tx_count': fetched.txs.length,
1063
+ 'beef.fetched_bump_count': fetched.bumps.length
1064
+ }
1065
+ });
1066
+ return fetched;
1067
+ }).then(prefetched => ({ beef: prefetched, sourceCount: missing.length, txids: missing }), error => ({ error, sourceCount: missing.length, txids: missing }));
1068
+ }
1069
+ function sameTxids(left, right) {
1070
+ if (left.length !== right.length)
1071
+ return false;
1072
+ const expected = new Set(left);
1073
+ return right.every(txid => expected.has(txid));
1074
+ }
1075
+ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef, prefetch, parent) {
760
1076
  const options = {
761
1077
  trustSelf: undefined,
762
1078
  knownTxids: vargs.options.knownTxids,
@@ -768,11 +1084,62 @@ async function mergeAllocatedChangeBeefs(storage, userId, vargs, allocatedChange
768
1084
  };
769
1085
  if (vargs.options.returnTXIDOnly)
770
1086
  return undefined;
771
- for (const o of allocatedChange) {
772
- if (!beef.findTxid(o.txid) && !(vargs.options.knownTxids || []).find(txid => txid === o.txid)) {
773
- await storage.getBeefForTransaction(o.txid, options);
1087
+ const knownTxids = vargs.options.knownTxids ?? [];
1088
+ const requiredBeforePrefetch = missingAllocatedChangeTxids(allocatedChange, beef, knownTxids);
1089
+ const prefetched = await traceStorageStep(storage, 'wallet.storage.create_action.beef_prefetch_join', parent, { 'beef.prefetch_source_count': 0 }, async (span) => {
1090
+ const result = await prefetch;
1091
+ span?.end({ attributes: { 'beef.prefetch_source_count': result.sourceCount } });
1092
+ return result;
1093
+ });
1094
+ // A claim retry may replace only part of the initial funding plan. Never
1095
+ // merge proofs for outputs the final transaction does not spend: apart from
1096
+ // unnecessary bytes, that would disclose unrelated wallet history.
1097
+ const usePrefetch = sameTxids(prefetched.txids, requiredBeforePrefetch);
1098
+ if (usePrefetch && prefetched.error != null)
1099
+ throw prefetched.error;
1100
+ if (usePrefetch && prefetched.beef != null)
1101
+ beef.mergeBeef(prefetched.beef);
1102
+ // If a concurrent spender forced the funding claim to be replanned, only
1103
+ // the newly selected roots remain. The normal uncontended path is empty.
1104
+ const missing = missingAllocatedChangeTxids(allocatedChange, beef, knownTxids);
1105
+ let fetched;
1106
+ await traceStorageStep(storage, 'wallet.storage.create_action.beef_fetch', parent, {
1107
+ 'beef.allocated_change_count': allocatedChange.length,
1108
+ 'beef.distinct_source_count': new Set(allocatedChange.map(output => output.txid)).size,
1109
+ 'beef.known_txid_count': knownTxids.length,
1110
+ 'beef.missing_source_count': missing.length,
1111
+ 'beef.fetch_concurrency': 1,
1112
+ 'beef.prefetch_reused': usePrefetch
1113
+ }, async (span) => {
1114
+ if (missing.length > 0) {
1115
+ fetched = await storage.getBeefForTransactions(missing, { ...options, mergeToBeef: undefined });
774
1116
  }
775
- }
776
- return trimInputBeef(beef, vargs);
1117
+ span?.end({
1118
+ attributes: {
1119
+ 'beef.fetched_tx_count': fetched?.txs.length ?? 0,
1120
+ 'beef.fetched_bump_count': fetched?.bumps.length ?? 0,
1121
+ 'beef.storage_batch_count': missing.length === 0 ? 0 : 1
1122
+ }
1123
+ });
1124
+ });
1125
+ await traceStorageStep(storage, 'wallet.storage.create_action.beef_merge', parent, { 'beef.fragment_count': (usePrefetch && prefetched.beef != null ? 1 : 0) + (fetched == null ? 0 : 1) }, async (span) => {
1126
+ if (fetched != null)
1127
+ beef.mergeBeef(fetched);
1128
+ span?.end({
1129
+ attributes: {
1130
+ 'beef.merged_tx_count': beef.txs.length,
1131
+ 'beef.merged_bump_count': beef.bumps.length
1132
+ }
1133
+ });
1134
+ });
1135
+ return await traceStorageStep(storage, 'wallet.storage.create_action.beef_trim_serialize', parent, {
1136
+ 'beef.tx_count': beef.txs.length,
1137
+ 'beef.bump_count': beef.bumps.length,
1138
+ 'beef.known_txid_count': knownTxids.length
1139
+ }, async (span) => {
1140
+ const result = trimInputBeef(beef, vargs);
1141
+ span?.end({ attributes: { 'beef.result_bytes': result?.length ?? 0 } });
1142
+ return result;
1143
+ });
777
1144
  }
778
1145
  //# sourceMappingURL=createAction.js.map