@bsv/wallet-toolbox 2.4.3 → 2.4.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (675) hide show
  1. package/CHANGELOG.md +81 -1
  2. package/LICENSE.txt +58 -0
  3. package/README.md +98 -36
  4. package/docs/README.md +3 -1
  5. package/docs/action-batch-planning.md +220 -0
  6. package/docs/authentication-observability.md +94 -0
  7. package/docs/client.md +1125 -2776
  8. package/docs/monitor.md +29 -111
  9. package/docs/services.md +296 -602
  10. package/docs/setup.md +48 -28
  11. package/docs/storage.md +329 -1692
  12. package/docs/wallet.md +9718 -4890
  13. package/out/src/CWIStyleWalletManager.d.ts +62 -6
  14. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  15. package/out/src/CWIStyleWalletManager.js +584 -181
  16. package/out/src/CWIStyleWalletManager.js.map +1 -1
  17. package/out/src/Setup.d.ts +7 -0
  18. package/out/src/Setup.d.ts.map +1 -1
  19. package/out/src/Setup.js +10 -11
  20. package/out/src/Setup.js.map +1 -1
  21. package/out/src/SetupClient.d.ts +2 -0
  22. package/out/src/SetupClient.d.ts.map +1 -1
  23. package/out/src/SetupClient.js +8 -9
  24. package/out/src/SetupClient.js.map +1 -1
  25. package/out/src/SetupWallet.d.ts +6 -0
  26. package/out/src/SetupWallet.d.ts.map +1 -1
  27. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  28. package/out/src/ShamirWalletManager.js.map +1 -1
  29. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  30. package/out/src/SimpleWalletManager.js +2 -5
  31. package/out/src/SimpleWalletManager.js.map +1 -1
  32. package/out/src/Wallet.d.ts +36 -10
  33. package/out/src/Wallet.d.ts.map +1 -1
  34. package/out/src/Wallet.js +167 -132
  35. package/out/src/Wallet.js.map +1 -1
  36. package/out/src/WalletAuthenticationManager.d.ts +30 -6
  37. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  38. package/out/src/WalletAuthenticationManager.js +215 -34
  39. package/out/src/WalletAuthenticationManager.js.map +1 -1
  40. package/out/src/WalletLogger.d.ts.map +1 -1
  41. package/out/src/WalletLogger.js +33 -30
  42. package/out/src/WalletLogger.js.map +1 -1
  43. package/out/src/WalletPermissionsManager.d.ts +22 -1
  44. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  45. package/out/src/WalletPermissionsManager.js +392 -267
  46. package/out/src/WalletPermissionsManager.js.map +1 -1
  47. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  48. package/out/src/WalletSettingsManager.js.map +1 -1
  49. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  50. package/out/src/entropy/EntropyCollector.js +6 -8
  51. package/out/src/entropy/EntropyCollector.js.map +1 -1
  52. package/out/src/fundWalletP2PKH.js.map +1 -1
  53. package/out/src/index.all.d.ts +1 -0
  54. package/out/src/index.all.d.ts.map +1 -1
  55. package/out/src/index.all.js +1 -0
  56. package/out/src/index.all.js.map +1 -1
  57. package/out/src/index.client.d.ts +2 -0
  58. package/out/src/index.client.d.ts.map +1 -1
  59. package/out/src/index.client.js +2 -0
  60. package/out/src/index.client.js.map +1 -1
  61. package/out/src/index.mobile.d.ts +2 -0
  62. package/out/src/index.mobile.d.ts.map +1 -1
  63. package/out/src/index.mobile.js +2 -0
  64. package/out/src/index.mobile.js.map +1 -1
  65. package/out/src/mockchain/MockChainMigrations.d.ts.map +1 -1
  66. package/out/src/mockchain/MockChainMigrations.js.map +1 -1
  67. package/out/src/mockchain/MockChainStorage.d.ts.map +1 -1
  68. package/out/src/mockchain/MockChainStorage.js.map +1 -1
  69. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  70. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  71. package/out/src/mockchain/MockMiner.d.ts.map +1 -1
  72. package/out/src/mockchain/MockMiner.js.map +1 -1
  73. package/out/src/mockchain/MockServices.d.ts +4 -0
  74. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  75. package/out/src/mockchain/MockServices.js +69 -74
  76. package/out/src/mockchain/MockServices.js.map +1 -1
  77. package/out/src/mockchain/merkleTree.d.ts.map +1 -1
  78. package/out/src/mockchain/merkleTree.js +51 -56
  79. package/out/src/mockchain/merkleTree.js.map +1 -1
  80. package/out/src/monitor/Monitor.d.ts +4 -0
  81. package/out/src/monitor/Monitor.d.ts.map +1 -1
  82. package/out/src/monitor/Monitor.js +60 -57
  83. package/out/src/monitor/Monitor.js.map +1 -1
  84. package/out/src/monitor/MonitorDaemon.d.ts +3 -0
  85. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  86. package/out/src/monitor/MonitorDaemon.js +65 -56
  87. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  88. package/out/src/monitor/index.all.js.map +1 -1
  89. package/out/src/monitor/tasks/TaskArcSSE.d.ts +5 -0
  90. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  91. package/out/src/monitor/tasks/TaskArcSSE.js +86 -77
  92. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  93. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +4 -2
  94. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  95. package/out/src/monitor/tasks/TaskCheckForProofs.js +132 -131
  96. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  97. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +3 -1
  98. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  99. package/out/src/monitor/tasks/TaskCheckNoSends.js +3 -1
  100. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  101. package/out/src/monitor/tasks/TaskCleanupActionBatches.d.ts +13 -0
  102. package/out/src/monitor/tasks/TaskCleanupActionBatches.d.ts.map +1 -0
  103. package/out/src/monitor/tasks/TaskCleanupActionBatches.js +24 -0
  104. package/out/src/monitor/tasks/TaskCleanupActionBatches.js.map +1 -0
  105. package/out/src/monitor/tasks/TaskClock.d.ts +1 -1
  106. package/out/src/monitor/tasks/TaskClock.d.ts.map +1 -1
  107. package/out/src/monitor/tasks/TaskClock.js +1 -1
  108. package/out/src/monitor/tasks/TaskClock.js.map +1 -1
  109. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  110. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  111. package/out/src/monitor/tasks/TaskMineBlock.d.ts +3 -1
  112. package/out/src/monitor/tasks/TaskMineBlock.d.ts.map +1 -1
  113. package/out/src/monitor/tasks/TaskMineBlock.js +3 -1
  114. package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -1
  115. package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts.map +1 -1
  116. package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
  117. package/out/src/monitor/tasks/TaskNewHeader.d.ts +4 -3
  118. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  119. package/out/src/monitor/tasks/TaskNewHeader.js +4 -3
  120. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  121. package/out/src/monitor/tasks/TaskPurge.d.ts +3 -1
  122. package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
  123. package/out/src/monitor/tasks/TaskPurge.js +3 -1
  124. package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
  125. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  126. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  127. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts +3 -1
  128. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  129. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +3 -1
  130. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  131. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +3 -1
  132. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  133. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +3 -1
  134. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  135. package/out/src/monitor/tasks/TaskReviewStatus.d.ts +3 -1
  136. package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
  137. package/out/src/monitor/tasks/TaskReviewStatus.js +3 -1
  138. package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
  139. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +3 -1
  140. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  141. package/out/src/monitor/tasks/TaskReviewUtxos.js +3 -1
  142. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  143. package/out/src/monitor/tasks/TaskSendWaiting.d.ts +3 -0
  144. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  145. package/out/src/monitor/tasks/TaskSendWaiting.js +53 -46
  146. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  147. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts +1 -1
  148. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts.map +1 -1
  149. package/out/src/monitor/tasks/TaskSyncWhenIdle.js +1 -1
  150. package/out/src/monitor/tasks/TaskSyncWhenIdle.js.map +1 -1
  151. package/out/src/monitor/tasks/TaskUnFail.d.ts +3 -1
  152. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  153. package/out/src/monitor/tasks/TaskUnFail.js +3 -1
  154. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  155. package/out/src/monitor/tasks/WalletMonitorTask.d.ts.map +1 -1
  156. package/out/src/monitor/tasks/WalletMonitorTask.js.map +1 -1
  157. package/out/src/monitor/tasks/index.all.d.ts +1 -0
  158. package/out/src/monitor/tasks/index.all.d.ts.map +1 -1
  159. package/out/src/monitor/tasks/index.all.js +1 -0
  160. package/out/src/monitor/tasks/index.all.js.map +1 -1
  161. package/out/src/sdk/ActionBatch.interfaces.d.ts +159 -0
  162. package/out/src/sdk/ActionBatch.interfaces.d.ts.map +1 -0
  163. package/out/src/sdk/ActionBatch.interfaces.js +3 -0
  164. package/out/src/sdk/ActionBatch.interfaces.js.map +1 -0
  165. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  166. package/out/src/sdk/PrivilegedKeyManager.js +3 -3
  167. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  168. package/out/src/sdk/WERR_errors.d.ts +1 -1
  169. package/out/src/sdk/WERR_errors.d.ts.map +1 -1
  170. package/out/src/sdk/WERR_errors.js +2 -2
  171. package/out/src/sdk/WERR_errors.js.map +1 -1
  172. package/out/src/sdk/WalletError.d.ts +3 -0
  173. package/out/src/sdk/WalletError.d.ts.map +1 -1
  174. package/out/src/sdk/WalletError.js +53 -56
  175. package/out/src/sdk/WalletError.js.map +1 -1
  176. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  177. package/out/src/sdk/WalletServices.interfaces.d.ts +3 -1
  178. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  179. package/out/src/sdk/WalletStorage.interfaces.d.ts +22 -1
  180. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  181. package/out/src/sdk/index.d.ts +1 -0
  182. package/out/src/sdk/index.d.ts.map +1 -1
  183. package/out/src/sdk/index.js +1 -0
  184. package/out/src/sdk/index.js.map +1 -1
  185. package/out/src/sdk/types.js.map +1 -1
  186. package/out/src/services/ServiceCollection.d.ts.map +1 -1
  187. package/out/src/services/ServiceCollection.js.map +1 -1
  188. package/out/src/services/Services.d.ts +8 -2
  189. package/out/src/services/Services.d.ts.map +1 -1
  190. package/out/src/services/Services.js +86 -44
  191. package/out/src/services/Services.js.map +1 -1
  192. package/out/src/services/chaintracker/BHServiceClient.d.ts +7 -7
  193. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  194. package/out/src/services/chaintracker/BHServiceClient.js +9 -9
  195. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  196. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +4 -1
  197. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  198. package/out/src/services/chaintracker/ChaintracksChainTracker.js +42 -6
  199. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  200. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts +4 -4
  201. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  202. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +1 -1
  203. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  204. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +3 -0
  205. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  206. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +45 -40
  207. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  208. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +5 -0
  209. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  210. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +25 -18
  211. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  212. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +3 -3
  213. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  214. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +6 -7
  215. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  216. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  217. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
  218. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  219. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  220. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  221. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  222. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  223. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  224. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  225. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +0 -1
  226. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  227. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  228. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  229. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  230. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  231. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
  232. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
  233. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts +2 -2
  234. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  235. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +2 -2
  236. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  238. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  239. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  240. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  241. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +12 -2
  242. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  243. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +110 -103
  244. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  245. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +8 -0
  246. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  247. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +58 -48
  248. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  249. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  250. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  251. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  252. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  253. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +3 -0
  254. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  255. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +55 -54
  256. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  257. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +4 -0
  258. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  259. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +97 -72
  260. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  261. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +5 -0
  262. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  263. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +145 -136
  264. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  265. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +4 -0
  266. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  267. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +92 -68
  268. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  269. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +43 -0
  270. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
  271. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +76 -0
  272. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  273. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts +18 -0
  274. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts.map +1 -0
  275. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js +24 -0
  276. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js.map +1 -0
  277. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts +2 -3
  278. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  279. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +4 -22
  280. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  281. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts +2 -4
  282. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  283. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js +12 -25
  284. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  285. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts +2 -3
  286. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  287. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +4 -22
  288. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  289. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts +2 -1
  290. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  291. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +3 -15
  292. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  293. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts +2 -2
  294. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  295. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +3 -15
  296. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  297. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts +2 -1
  298. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  299. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +3 -15
  300. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  301. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +1 -1
  302. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
  303. package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
  304. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +2 -0
  305. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  306. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +64 -61
  307. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  308. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  309. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  310. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  311. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +4 -3
  312. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  313. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  314. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  315. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  316. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  317. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +8 -10
  318. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  319. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +14 -24
  320. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  321. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  322. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  323. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  324. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  325. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +1 -11
  326. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  327. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +20 -49
  328. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  329. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts.map +1 -1
  330. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js +4 -2
  331. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js.map +1 -1
  332. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  333. package/out/src/services/createDefaultWalletServicesOptions.d.ts +23 -14
  334. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  335. package/out/src/services/createDefaultWalletServicesOptions.js +1 -14
  336. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  337. package/out/src/services/networkConfig.js.map +1 -1
  338. package/out/src/services/providers/ARC.d.ts +4 -0
  339. package/out/src/services/providers/ARC.d.ts.map +1 -1
  340. package/out/src/services/providers/ARC.js +96 -83
  341. package/out/src/services/providers/ARC.js.map +1 -1
  342. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  343. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  344. package/out/src/services/providers/Arcade.d.ts +4 -0
  345. package/out/src/services/providers/Arcade.d.ts.map +1 -1
  346. package/out/src/services/providers/Arcade.js +118 -92
  347. package/out/src/services/providers/Arcade.js.map +1 -1
  348. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  349. package/out/src/services/providers/Bitails.js +107 -86
  350. package/out/src/services/providers/Bitails.js.map +1 -1
  351. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  352. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  353. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  354. package/out/src/services/providers/WhatsOnChain.js +19 -6
  355. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  356. package/out/src/services/providers/exchangeRates.js +1 -1
  357. package/out/src/services/providers/exchangeRates.js.map +1 -1
  358. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  359. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
  360. package/out/src/signer/WalletSigner.d.ts.map +1 -1
  361. package/out/src/signer/WalletSigner.js.map +1 -1
  362. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +29 -0
  363. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -0
  364. package/out/src/signer/actionBatch/ActionBatchPlanner.js +346 -0
  365. package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -0
  366. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +33 -0
  367. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -0
  368. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +869 -0
  369. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -0
  370. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +11 -0
  371. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -0
  372. package/out/src/signer/actionBatch/actionBatchBootstrap.js +38 -0
  373. package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -0
  374. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  375. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  376. package/out/src/signer/methods/buildSignableTransaction.js +97 -107
  377. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  378. package/out/src/signer/methods/completeSignedTransaction.d.ts +3 -7
  379. package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
  380. package/out/src/signer/methods/completeSignedTransaction.js +14 -57
  381. package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
  382. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  383. package/out/src/signer/methods/createAction.js +50 -20
  384. package/out/src/signer/methods/createAction.js.map +1 -1
  385. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  386. package/out/src/signer/methods/internalizeAction.js +4 -4
  387. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  388. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  389. package/out/src/signer/methods/resultBeef.js.map +1 -1
  390. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  391. package/out/src/signer/methods/signAction.js +29 -4
  392. package/out/src/signer/methods/signAction.js.map +1 -1
  393. package/out/src/signer/methods/verifyUnlockScripts.d.ts +17 -0
  394. package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -0
  395. package/out/src/signer/methods/verifyUnlockScripts.js +137 -0
  396. package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -0
  397. package/out/src/storage/StorageIdb.d.ts +19 -3
  398. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  399. package/out/src/storage/StorageIdb.js +232 -53
  400. package/out/src/storage/StorageIdb.js.map +1 -1
  401. package/out/src/storage/StorageKnex.d.ts +29 -1
  402. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  403. package/out/src/storage/StorageKnex.js +225 -10
  404. package/out/src/storage/StorageKnex.js.map +1 -1
  405. package/out/src/storage/StorageProvider.d.ts +57 -1
  406. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  407. package/out/src/storage/StorageProvider.js +277 -145
  408. package/out/src/storage/StorageProvider.js.map +1 -1
  409. package/out/src/storage/StorageReader.d.ts +13 -5
  410. package/out/src/storage/StorageReader.d.ts.map +1 -1
  411. package/out/src/storage/StorageReader.js +3 -0
  412. package/out/src/storage/StorageReader.js.map +1 -1
  413. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  414. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  415. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  416. package/out/src/storage/StorageSyncReader.js.map +1 -1
  417. package/out/src/storage/WalletStorageManager.d.ts +10 -0
  418. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  419. package/out/src/storage/WalletStorageManager.js +49 -6
  420. package/out/src/storage/WalletStorageManager.js.map +1 -1
  421. package/out/src/storage/adminServer/adminServer.d.ts +79 -0
  422. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  423. package/out/src/storage/adminServer/adminServer.js +47 -16
  424. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  425. package/out/src/storage/adminServer/adminUi.js.map +1 -1
  426. package/out/src/storage/idbHelpers.d.ts +2 -0
  427. package/out/src/storage/idbHelpers.d.ts.map +1 -1
  428. package/out/src/storage/idbHelpers.js +19 -0
  429. package/out/src/storage/idbHelpers.js.map +1 -1
  430. package/out/src/storage/index.all.js.map +1 -1
  431. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  432. package/out/src/storage/methods/ListActionsSpecOp.js +48 -71
  433. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  434. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  435. package/out/src/storage/methods/ListOutputsSpecOp.js +29 -27
  436. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  437. package/out/src/storage/methods/actionBatch.d.ts +15 -0
  438. package/out/src/storage/methods/actionBatch.d.ts.map +1 -0
  439. package/out/src/storage/methods/actionBatch.js +737 -0
  440. package/out/src/storage/methods/actionBatch.js.map +1 -0
  441. package/out/src/storage/methods/actionBatchBlobs.d.ts +15 -0
  442. package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -0
  443. package/out/src/storage/methods/actionBatchBlobs.js +184 -0
  444. package/out/src/storage/methods/actionBatchBlobs.js.map +1 -0
  445. package/out/src/storage/methods/actionBatchValidation.d.ts +17 -0
  446. package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -0
  447. package/out/src/storage/methods/actionBatchValidation.js +416 -0
  448. package/out/src/storage/methods/actionBatchValidation.js.map +1 -0
  449. package/out/src/storage/methods/actionPlanning.d.ts +12 -0
  450. package/out/src/storage/methods/actionPlanning.d.ts.map +1 -0
  451. package/out/src/storage/methods/actionPlanning.js +48 -0
  452. package/out/src/storage/methods/actionPlanning.js.map +1 -0
  453. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +0 -21
  454. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  455. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +43 -51
  456. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  457. package/out/src/storage/methods/createAction.d.ts +1 -1
  458. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  459. package/out/src/storage/methods/createAction.js +66 -63
  460. package/out/src/storage/methods/createAction.js.map +1 -1
  461. package/out/src/storage/methods/generateChange.d.ts +2 -2
  462. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  463. package/out/src/storage/methods/generateChange.js +66 -38
  464. package/out/src/storage/methods/generateChange.js.map +1 -1
  465. package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
  466. package/out/src/storage/methods/getBeefForTransaction.js +48 -42
  467. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  468. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  469. package/out/src/storage/methods/getSyncChunk.js +8 -6
  470. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  471. package/out/src/storage/methods/internalizeAction.js +145 -121
  472. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  473. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  474. package/out/src/storage/methods/listActionsKnex.js +1 -1
  475. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  476. package/out/src/storage/methods/listCertificates.d.ts +1 -1
  477. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  478. package/out/src/storage/methods/listCertificates.js +1 -1
  479. package/out/src/storage/methods/listCertificates.js.map +1 -1
  480. package/out/src/storage/methods/listOutputsIdb.d.ts +1 -1
  481. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  482. package/out/src/storage/methods/listOutputsIdb.js +133 -152
  483. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  484. package/out/src/storage/methods/listOutputsKnex.d.ts +1 -1
  485. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  486. package/out/src/storage/methods/listOutputsKnex.js +213 -254
  487. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  488. package/out/src/storage/methods/managedChange.d.ts +3 -3
  489. package/out/src/storage/methods/managedChange.d.ts.map +1 -1
  490. package/out/src/storage/methods/managedChange.js +1 -2
  491. package/out/src/storage/methods/managedChange.js.map +1 -1
  492. package/out/src/storage/methods/offsetKey.d.ts.map +1 -1
  493. package/out/src/storage/methods/offsetKey.js +0 -1
  494. package/out/src/storage/methods/offsetKey.js.map +1 -1
  495. package/out/src/storage/methods/processAction.d.ts +2 -0
  496. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  497. package/out/src/storage/methods/processAction.js +8 -8
  498. package/out/src/storage/methods/processAction.js.map +1 -1
  499. package/out/src/storage/methods/purgeData.d.ts.map +1 -1
  500. package/out/src/storage/methods/purgeData.js +157 -179
  501. package/out/src/storage/methods/purgeData.js.map +1 -1
  502. package/out/src/storage/methods/purgeDataIdb.d.ts +1 -1
  503. package/out/src/storage/methods/purgeDataIdb.d.ts.map +1 -1
  504. package/out/src/storage/methods/purgeDataIdb.js +1 -1
  505. package/out/src/storage/methods/purgeDataIdb.js.map +1 -1
  506. package/out/src/storage/methods/reviewStatus.js +6 -6
  507. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  508. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  509. package/out/src/storage/methods/utils.Buffer.js.map +1 -1
  510. package/out/src/storage/methods/utils.js.map +1 -1
  511. package/out/src/storage/portable/index.js +2 -2
  512. package/out/src/storage/portable/index.js.map +1 -1
  513. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
  514. package/out/src/storage/remoting/BinaryJson.js +84 -38
  515. package/out/src/storage/remoting/BinaryJson.js.map +1 -1
  516. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
  517. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
  518. package/out/src/storage/remoting/RateLimitPolicy.d.ts +10 -0
  519. package/out/src/storage/remoting/RateLimitPolicy.d.ts.map +1 -0
  520. package/out/src/storage/remoting/RateLimitPolicy.js +37 -0
  521. package/out/src/storage/remoting/RateLimitPolicy.js.map +1 -0
  522. package/out/src/storage/remoting/StorageClient.d.ts +2 -0
  523. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  524. package/out/src/storage/remoting/StorageClient.js +82 -50
  525. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  526. package/out/src/storage/remoting/StorageClientBase.d.ts +23 -4
  527. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  528. package/out/src/storage/remoting/StorageClientBase.js +97 -4
  529. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  530. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  531. package/out/src/storage/remoting/StorageMobile.js +34 -22
  532. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  533. package/out/src/storage/remoting/StorageServer.d.ts +62 -1
  534. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  535. package/out/src/storage/remoting/StorageServer.js +451 -172
  536. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  537. package/out/src/storage/remoting/edgePolicy.d.ts +57 -0
  538. package/out/src/storage/remoting/edgePolicy.d.ts.map +1 -0
  539. package/out/src/storage/remoting/edgePolicy.js +387 -0
  540. package/out/src/storage/remoting/edgePolicy.js.map +1 -0
  541. package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
  542. package/out/src/storage/remoting/entityValidationHelpers.js +22 -5
  543. package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
  544. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  545. package/out/src/storage/schema/KnexMigrations.js +56 -0
  546. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  547. package/out/src/storage/schema/StorageIdbSchema.d.ts +24 -0
  548. package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
  549. package/out/src/storage/schema/entities/EntityBase.d.ts.map +1 -1
  550. package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
  551. package/out/src/storage/schema/entities/EntityCertificate.d.ts.map +1 -1
  552. package/out/src/storage/schema/entities/EntityCertificate.js.map +1 -1
  553. package/out/src/storage/schema/entities/EntityCertificateField.d.ts.map +1 -1
  554. package/out/src/storage/schema/entities/EntityCertificateField.js.map +1 -1
  555. package/out/src/storage/schema/entities/EntityCommission.d.ts.map +1 -1
  556. package/out/src/storage/schema/entities/EntityCommission.js.map +1 -1
  557. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  558. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  559. package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
  560. package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
  561. package/out/src/storage/schema/entities/EntityOutputTag.d.ts.map +1 -1
  562. package/out/src/storage/schema/entities/EntityOutputTag.js.map +1 -1
  563. package/out/src/storage/schema/entities/EntityOutputTagMap.d.ts.map +1 -1
  564. package/out/src/storage/schema/entities/EntityOutputTagMap.js.map +1 -1
  565. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +3 -0
  566. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  567. package/out/src/storage/schema/entities/EntityProvenTx.js +46 -36
  568. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  569. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts +2 -2
  570. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts.map +1 -1
  571. package/out/src/storage/schema/entities/EntityProvenTxReq.js +12 -10
  572. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  573. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  574. package/out/src/storage/schema/entities/EntitySyncState.js +25 -34
  575. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  576. package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
  577. package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
  578. package/out/src/storage/schema/entities/EntityTxLabel.d.ts.map +1 -1
  579. package/out/src/storage/schema/entities/EntityTxLabel.js.map +1 -1
  580. package/out/src/storage/schema/entities/EntityTxLabelMap.d.ts.map +1 -1
  581. package/out/src/storage/schema/entities/EntityTxLabelMap.js.map +1 -1
  582. package/out/src/storage/schema/entities/EntityUser.d.ts.map +1 -1
  583. package/out/src/storage/schema/entities/EntityUser.js.map +1 -1
  584. package/out/src/storage/schema/entities/MergeEntity.d.ts.map +1 -1
  585. package/out/src/storage/schema/entities/MergeEntity.js +9 -14
  586. package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
  587. package/out/src/storage/schema/tables/TableActionBatch.d.ts +26 -0
  588. package/out/src/storage/schema/tables/TableActionBatch.d.ts.map +1 -0
  589. package/out/src/storage/schema/tables/TableActionBatch.js +3 -0
  590. package/out/src/storage/schema/tables/TableActionBatch.js.map +1 -0
  591. package/out/src/storage/schema/tables/TableAuthSession.js.map +1 -1
  592. package/out/src/storage/schema/tables/index.d.ts +1 -0
  593. package/out/src/storage/schema/tables/index.d.ts.map +1 -1
  594. package/out/src/storage/schema/tables/index.js +1 -0
  595. package/out/src/storage/schema/tables/index.js.map +1 -1
  596. package/out/src/storage/storageProviderHelpers.js.map +1 -1
  597. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts +3 -0
  598. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  599. package/out/src/storage/sync/StorageMySQLDojoReader.js +30 -16
  600. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  601. package/out/src/utility/Format.d.ts.map +1 -1
  602. package/out/src/utility/Format.js +2 -2
  603. package/out/src/utility/Format.js.map +1 -1
  604. package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
  605. package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
  606. package/out/src/utility/actionBatchDigest.d.ts +9 -0
  607. package/out/src/utility/actionBatchDigest.d.ts.map +1 -0
  608. package/out/src/utility/actionBatchDigest.js +86 -0
  609. package/out/src/utility/actionBatchDigest.js.map +1 -0
  610. package/out/src/utility/actionBatchPack.d.ts +16 -0
  611. package/out/src/utility/actionBatchPack.d.ts.map +1 -0
  612. package/out/src/utility/actionBatchPack.js +220 -0
  613. package/out/src/utility/actionBatchPack.js.map +1 -0
  614. package/out/src/utility/aggregateResults.d.ts.map +1 -1
  615. package/out/src/utility/aggregateResults.js.map +1 -1
  616. package/out/src/utility/beefForTxids.d.ts +9 -0
  617. package/out/src/utility/beefForTxids.d.ts.map +1 -0
  618. package/out/src/utility/beefForTxids.js +35 -0
  619. package/out/src/utility/beefForTxids.js.map +1 -0
  620. package/out/src/utility/brc114ActionTimeLabels.d.ts.map +1 -1
  621. package/out/src/utility/brc114ActionTimeLabels.js +26 -30
  622. package/out/src/utility/brc114ActionTimeLabels.js.map +1 -1
  623. package/out/src/utility/formatUnknown.d.ts +6 -0
  624. package/out/src/utility/formatUnknown.d.ts.map +1 -0
  625. package/out/src/utility/formatUnknown.js +39 -0
  626. package/out/src/utility/formatUnknown.js.map +1 -0
  627. package/out/src/utility/hashWasm.d.ts +5 -0
  628. package/out/src/utility/hashWasm.d.ts.map +1 -0
  629. package/out/src/utility/hashWasm.js +15 -0
  630. package/out/src/utility/hashWasm.js.map +1 -0
  631. package/out/src/utility/identityUtils.d.ts.map +1 -1
  632. package/out/src/utility/identityUtils.js +2 -4
  633. package/out/src/utility/identityUtils.js.map +1 -1
  634. package/out/src/utility/parseTxScriptOffsets.d.ts +1 -1
  635. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  636. package/out/src/utility/parseTxScriptOffsets.js +1 -1
  637. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  638. package/out/src/utility/stampLog.d.ts.map +1 -1
  639. package/out/src/utility/stampLog.js +49 -42
  640. package/out/src/utility/stampLog.js.map +1 -1
  641. package/out/src/utility/traceContext.d.ts +13 -0
  642. package/out/src/utility/traceContext.d.ts.map +1 -0
  643. package/out/src/utility/traceContext.js +34 -0
  644. package/out/src/utility/traceContext.js.map +1 -0
  645. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  646. package/out/src/utility/tscProofToMerklePath.js +1 -1
  647. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  648. package/out/src/utility/utilityHelpers.buffer.js.map +1 -1
  649. package/out/src/utility/utilityHelpers.d.ts +2 -2
  650. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  651. package/out/src/utility/utilityHelpers.js +8 -4
  652. package/out/src/utility/utilityHelpers.js.map +1 -1
  653. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  654. package/out/src/utility/utilityHelpers.noBuffer.js +1 -2
  655. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  656. package/out/src/wab-client/WABClient.d.ts +36 -90
  657. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  658. package/out/src/wab-client/WABClient.js +103 -151
  659. package/out/src/wab-client/WABClient.js.map +1 -1
  660. package/out/src/wab-client/WABTransport.d.ts +81 -0
  661. package/out/src/wab-client/WABTransport.d.ts.map +1 -0
  662. package/out/src/wab-client/WABTransport.js +420 -0
  663. package/out/src/wab-client/WABTransport.js.map +1 -0
  664. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +10 -10
  665. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  666. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +16 -21
  667. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  668. package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js.map +1 -1
  669. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js.map +1 -1
  670. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts +2 -1
  671. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts.map +1 -1
  672. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js +14 -0
  673. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +1 -1
  674. package/package.json +66 -30
  675. package/license.md +0 -28
@@ -0,0 +1,737 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ACTION_BATCH_MAX_RESERVATION_EXTENSION_OUTPUTS = exports.ACTION_BATCH_HARD_LIFETIME_MS = exports.ACTION_BATCH_LEASE_MS = void 0;
4
+ exports.getActionBatchCapabilities = getActionBatchCapabilities;
5
+ exports.cleanupExpiredActionBatches = cleanupExpiredActionBatches;
6
+ exports.beginActionBatch = beginActionBatch;
7
+ exports.extendActionBatch = extendActionBatch;
8
+ exports.renewActionBatch = renewActionBatch;
9
+ exports.commitActionBatch = commitActionBatch;
10
+ exports.commitActionBatchByDigest = commitActionBatchByDigest;
11
+ exports.abortActionBatch = abortActionBatch;
12
+ const sdk_1 = require("@bsv/sdk");
13
+ const WERR_errors_1 = require("../../sdk/WERR_errors");
14
+ const utilityHelpers_1 = require("../../utility/utilityHelpers");
15
+ const actionBatchDigest_1 = require("../../utility/actionBatchDigest");
16
+ const actionBatchPack_1 = require("../../utility/actionBatchPack");
17
+ const StorageProvider_1 = require("../StorageProvider");
18
+ const EntityProvenTxReq_1 = require("../schema/entities/EntityProvenTxReq");
19
+ const managedChange_1 = require("./managedChange");
20
+ const parseTxScriptOffsets_1 = require("../../utility/parseTxScriptOffsets");
21
+ const processAction_1 = require("./processAction");
22
+ const storageProviderHelpers_1 = require("../storageProviderHelpers");
23
+ const utils_1 = require("./utils");
24
+ const actionPlanning_1 = require("./actionPlanning");
25
+ const actionBatchBlobs_1 = require("./actionBatchBlobs");
26
+ const actionBatchValidation_1 = require("./actionBatchValidation");
27
+ exports.ACTION_BATCH_LEASE_MS = 15 * 60 * 1000;
28
+ exports.ACTION_BATCH_HARD_LIFETIME_MS = 60 * 60 * 1000;
29
+ const INITIAL_RESERVATION_LIMIT = 8;
30
+ const INITIAL_EXTRA_OUTPUTS = 3;
31
+ exports.ACTION_BATCH_MAX_RESERVATION_EXTENSION_OUTPUTS = 64;
32
+ function getActionBatchCapabilities() {
33
+ return {
34
+ actionBatch: {
35
+ version: 1,
36
+ maxInlineBytes: actionBatchBlobs_1.ACTION_BATCH_MAX_INLINE_BYTES,
37
+ maxBlobBytes: actionBatchBlobs_1.ACTION_BATCH_MAX_BLOB_BYTES,
38
+ maxConcurrentUploads: actionBatchBlobs_1.ACTION_BATCH_MAX_CONCURRENT_UPLOADS,
39
+ leaseMs: exports.ACTION_BATCH_LEASE_MS,
40
+ hardLifetimeMs: exports.ACTION_BATCH_HARD_LIFETIME_MS,
41
+ compactBegin: true,
42
+ manifestVersion: 2,
43
+ commitByDigest: true,
44
+ packedUploads: {
45
+ version: 1,
46
+ maxPackBytes: actionBatchBlobs_1.ACTION_BATCH_MAX_PACK_BYTES,
47
+ maxItems: actionBatchBlobs_1.ACTION_BATCH_MAX_PACK_ITEMS,
48
+ encodings: (0, actionBatchPack_1.supportedActionBatchPackEncodings)(),
49
+ // Require a prepared manifest to authorize every persisted digest.
50
+ // Clients still support eager uploads for providers that can enforce
51
+ // an equivalent bounded authorization policy.
52
+ eager: false
53
+ }
54
+ }
55
+ };
56
+ }
57
+ function activeExpiry(batch, now = new Date()) {
58
+ return batch.status !== 'active' && batch.status !== 'prepared' ||
59
+ batch.expiresAt.getTime() <= now.getTime() ||
60
+ batch.hardExpiresAt.getTime() <= now.getTime();
61
+ }
62
+ function canExpire(batch, now = new Date()) {
63
+ return (batch.status === 'active' || batch.status === 'prepared') &&
64
+ (batch.expiresAt.getTime() <= now.getTime() || batch.hardExpiresAt.getTime() <= now.getTime());
65
+ }
66
+ async function releaseBatchState(storage, batch, status, trx) {
67
+ await storage.deleteActionBatchOutputReservations(batch.actionBatchId, trx);
68
+ await storage.deleteActionBatchBlobRecords(batch.actionBatchId, trx);
69
+ await storage.updateActionBatch(batch.actionBatchId, {
70
+ status,
71
+ manifest: undefined,
72
+ uploadDigests: undefined
73
+ }, trx);
74
+ }
75
+ async function cleanupExpiredActionBatches(storage) {
76
+ const now = new Date();
77
+ const expired = await storage.findExpiredActionBatches(now);
78
+ let released = 0;
79
+ for (const batch of expired) {
80
+ await storage.transaction(async (trx) => {
81
+ const current = await storage.findActionBatchForUpdate(batch.userId, batch.batchId, trx);
82
+ if (current == null || !canExpire(current, now))
83
+ return;
84
+ await releaseBatchState(storage, current, 'expired', trx);
85
+ released++;
86
+ });
87
+ }
88
+ return released;
89
+ }
90
+ async function availableManagedChange(storage, userId, basketId, excludeSending, trx) {
91
+ const statuses = ['completed', 'unproven'];
92
+ if (!excludeSending)
93
+ statuses.push('sending');
94
+ const outputs = (await storage.findOutputs({
95
+ partial: { userId, basketId, spendable: true },
96
+ txStatus: statuses,
97
+ trx
98
+ })).filter(managedChange_1.isAutoSpendableChangeOutput);
99
+ const reserved = new Set(await storage.findReservedActionBatchOutputIds(outputs.map(o => o.outputId), trx));
100
+ return outputs.filter(output => output.spentBy == null && !reserved.has(output.outputId));
101
+ }
102
+ function sourceOutputFromBeef(beef, outpoint) {
103
+ const tx = beef.findTxid(outpoint.txid)?.tx;
104
+ const output = tx?.outputs[outpoint.vout];
105
+ if (output == null)
106
+ return undefined;
107
+ return { satoshis: sdk_1.Validation.validateSatoshis(output.satoshis, 'source output satoshis'), lockingScript: output.lockingScript };
108
+ }
109
+ async function resolveExplicitOutputs(storage, userId, args, allowDeferredProofs) {
110
+ const byOutpoint = await storage.findOutputsByOutpoints(userId, args.inputs.map(input => input.outpoint));
111
+ const beef = args.inputBEEF == null ? new sdk_1.Beef() : sdk_1.Beef.fromBinary(args.inputBEEF);
112
+ const outputs = [];
113
+ let inputSatoshis = 0;
114
+ for (const input of args.inputs) {
115
+ const output = byOutpoint[`${input.outpoint.txid}.${input.outpoint.vout}`];
116
+ if (output != null) {
117
+ await storage.validateOutputScript(output);
118
+ outputs.push(output);
119
+ inputSatoshis += output.satoshis;
120
+ continue;
121
+ }
122
+ const source = sourceOutputFromBeef(beef, input.outpoint);
123
+ if (source == null) {
124
+ if (allowDeferredProofs)
125
+ continue;
126
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('inputBEEF', `proof data for ${input.outpoint.txid}.${input.outpoint.vout}`);
127
+ }
128
+ inputSatoshis += source.satoshis;
129
+ }
130
+ return { outputs, inputSatoshis };
131
+ }
132
+ async function resolveNoSendChangeOutputs(storage, userId, args) {
133
+ const outpoints = args.options.noSendChange;
134
+ const byOutpoint = await storage.findOutputsByOutpoints(userId, outpoints);
135
+ const outputs = [];
136
+ let inputSatoshis = 0;
137
+ for (const outpoint of outpoints) {
138
+ const key = `${outpoint.txid}.${outpoint.vout}`;
139
+ const output = byOutpoint[key];
140
+ if (output == null || !output.spendable || output.spentBy != null || !(0, managedChange_1.isAutoSpendableChangeOutput)(output)) {
141
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('noSendChange', `spendable wallet-managed output ${key}`);
142
+ }
143
+ await storage.validateOutputScript(output);
144
+ outputs.push(output);
145
+ inputSatoshis += output.satoshis;
146
+ }
147
+ return { outputs, inputSatoshis };
148
+ }
149
+ function estimateFirstActionTarget(storage, args, inputSatoshis, outputScriptLengths) {
150
+ const outputSatoshis = args.outputs.reduce((sum, output) => sum + output.satoshis, 0) + storage.commissionSatoshis;
151
+ const inputLengths = args.inputs.map(input => input.unlockingScriptLength);
152
+ const outputLengths = outputScriptLengths ?? args.outputs.map(output => output.lockingScript.length / 2);
153
+ if (storage.commissionSatoshis > 0)
154
+ outputLengths.push(25);
155
+ outputLengths.push(25);
156
+ const fee = (0, StorageProvider_1.validateStorageFeeModel)(storage.feeModel).value ?? 0;
157
+ const minFee = Math.ceil((0, utils_1.transactionSize)([...inputLengths, 107], outputLengths) * fee / 1000);
158
+ return Math.max(1, outputSatoshis + minFee - inputSatoshis);
159
+ }
160
+ function chooseReservationPool(candidates, targetSatoshis, limit, extras, fillLimit, planningCosts) {
161
+ const remaining = candidates
162
+ .filter(output => output.satoshis > planningCosts.marginalInputFee);
163
+ const chosen = [];
164
+ // A reservation is useful to generateChangeSdk only after it also covers
165
+ // the marginal funding-input fee and leaves an economically viable first
166
+ // change output. Without this buffer, a tiny target repeatedly selects dust
167
+ // that satisfies the nominal deficit but can never close the real plan.
168
+ let deficit = targetSatoshis + planningCosts.firstChangeCost;
169
+ while (deficit > 0 && chosen.length < limit) {
170
+ const output = (0, actionPlanning_1.selectCanonicalChange)(remaining, deficit + planningCosts.marginalInputFee);
171
+ if (output == null)
172
+ break;
173
+ chosen.push(output);
174
+ remaining.splice(remaining.indexOf(output), 1);
175
+ deficit -= output.satoshis - planningCosts.marginalInputFee;
176
+ }
177
+ const desiredCount = fillLimit ? limit : Math.min(limit, chosen.length + extras);
178
+ while (remaining.length > 0 && chosen.length < desiredCount) {
179
+ const output = (0, actionPlanning_1.selectCanonicalChange)(remaining, targetSatoshis);
180
+ if (output == null)
181
+ break;
182
+ chosen.push(output);
183
+ remaining.splice(remaining.indexOf(output), 1);
184
+ }
185
+ return chosen;
186
+ }
187
+ function reservationPlanningCosts(storage, basket) {
188
+ const satsPerKb = (0, StorageProvider_1.validateStorageFeeModel)(storage.feeModel).value ?? 0;
189
+ const minimumSpendSize = (0, utils_1.transactionSize)([107], [25]);
190
+ const minimumSpendFee = Math.ceil(minimumSpendSize * satsPerKb / 1000);
191
+ const dustFloor = Math.max(1, minimumSpendFee * 2);
192
+ const marginalInputSize = (0, utils_1.transactionSize)([107], []) - (0, utils_1.transactionSize)([], []);
193
+ const marginalOutputSize = (0, utils_1.transactionSize)([], [25]) - (0, utils_1.transactionSize)([], []);
194
+ const desiredFirstChange = Math.max(dustFloor, Math.max(1, Math.round(basket.minimumDesiredUTXOValue / 4)));
195
+ return {
196
+ firstChangeCost: desiredFirstChange + Math.ceil(marginalOutputSize * satsPerKb / 1000),
197
+ marginalInputFee: Math.ceil(marginalInputSize * satsPerKb / 1000)
198
+ };
199
+ }
200
+ async function reserveOutputs(storage, batch, outputs, trx) {
201
+ const now = new Date();
202
+ const unique = [...new Map(outputs.map(output => [output.outputId, output])).values()];
203
+ const reserve = async (transaction) => {
204
+ const outpoints = unique.map(output => {
205
+ if (output.txid == null)
206
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('action batch output is missing its txid');
207
+ return { txid: output.txid, vout: output.vout };
208
+ });
209
+ const current = await storage.findOutputsByOutpointsForUpdate(batch.userId, outpoints, transaction);
210
+ for (const output of unique) {
211
+ const stored = output.txid == null ? undefined : current[`${output.txid}.${output.vout}`];
212
+ if (stored == null || !stored.spendable || stored.spentBy != null) {
213
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('one or more action batch outputs are no longer spendable');
214
+ }
215
+ }
216
+ const conflicts = await storage.findReservedActionBatchOutputIds(unique.map(output => output.outputId), transaction);
217
+ if (conflicts.length > 0)
218
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('one or more action batch outputs were concurrently reserved');
219
+ await storage.reserveActionBatchOutputs(unique.map(output => ({
220
+ actionBatchId: batch.actionBatchId,
221
+ outputId: output.outputId,
222
+ created_at: now,
223
+ updated_at: now
224
+ })), transaction);
225
+ };
226
+ if (trx != null)
227
+ await reserve(trx);
228
+ else
229
+ await storage.transaction(reserve);
230
+ }
231
+ async function makeFundingResult(storage, args, outputs) {
232
+ const beef = new sdk_1.Beef();
233
+ const result = [];
234
+ for (const output of outputs) {
235
+ await storage.validateOutputScript(output);
236
+ const copy = { ...output };
237
+ if (args.isSignAction && args.includeAllSourceTransactions) {
238
+ copy.sourceTransaction = await storage.getRawTxOfKnownValidTransaction(output.txid);
239
+ }
240
+ if (output.txid != null && beef.findTxid(output.txid) == null) {
241
+ beef.mergeBeef(await storage.getBeefForTransaction(output.txid, {
242
+ knownTxids: args.options.knownTxids,
243
+ ignoreServices: true
244
+ }));
245
+ }
246
+ result.push(copy);
247
+ }
248
+ return { outputs: result, beef: beef.toUint8Array() };
249
+ }
250
+ function newBatch(userId, batchId) {
251
+ const now = new Date();
252
+ return {
253
+ actionBatchId: 0,
254
+ userId,
255
+ batchId,
256
+ status: 'active',
257
+ expiresAt: new Date(now.getTime() + exports.ACTION_BATCH_LEASE_MS),
258
+ hardExpiresAt: new Date(now.getTime() + exports.ACTION_BATCH_HARD_LIFETIME_MS),
259
+ created_at: now,
260
+ updated_at: now
261
+ };
262
+ }
263
+ async function beginActionBatch(storage, auth, args) {
264
+ const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
265
+ await cleanupExpiredActionBatches(storage);
266
+ if (await storage.findActionBatch(userId, args.batchId) != null) {
267
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('batchId', 'unique');
268
+ }
269
+ const outputScriptLengths = args.firstActionOutputScriptLengths;
270
+ if (outputScriptLengths != null && (outputScriptLengths.length !== args.firstAction.outputs.length ||
271
+ outputScriptLengths.some(length => !Number.isSafeInteger(length) || length < 0) ||
272
+ args.firstAction.outputs.some((output, index) => output.lockingScript.length > 0 &&
273
+ output.lockingScript.length / 2 !== outputScriptLengths[index]))) {
274
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('firstActionOutputScriptLengths', 'valid byte lengths aligned with firstAction outputs');
275
+ }
276
+ const changeBasket = (0, utilityHelpers_1.verifyOne)(await storage.findOutputBaskets({ partial: { userId, name: 'default' } }));
277
+ const explicit = await resolveExplicitOutputs(storage, userId, args.firstAction, outputScriptLengths != null);
278
+ const noSendChange = await resolveNoSendChangeOutputs(storage, userId, args.firstAction);
279
+ const fixedOutputIds = new Set([...explicit.outputs, ...noSendChange.outputs].map(output => output.outputId));
280
+ const available = (await availableManagedChange(storage, userId, changeBasket.basketId, !args.firstAction.isDelayed)).filter(output => !fixedOutputIds.has(output.outputId));
281
+ const target = estimateFirstActionTarget(storage, args.firstAction, explicit.inputSatoshis + noSendChange.inputSatoshis, outputScriptLengths);
282
+ const fixedOutputs = [...explicit.outputs, ...noSendChange.outputs];
283
+ const requiredCapacity = Math.max(0, INITIAL_RESERVATION_LIMIT - fixedOutputs.length);
284
+ const funding = chooseReservationPool(available, target, requiredCapacity, INITIAL_EXTRA_OUTPUTS, false, reservationPlanningCosts(storage, changeBasket));
285
+ const batch = newBatch(userId, args.batchId);
286
+ await storage.transaction(async (trx) => {
287
+ await storage.insertActionBatch(batch, trx);
288
+ await reserveOutputs(storage, batch, [...fixedOutputs, ...funding], trx);
289
+ });
290
+ let fundingResult;
291
+ try {
292
+ fundingResult = await makeFundingResult(storage, args.firstAction, [...funding, ...fixedOutputs]);
293
+ }
294
+ catch (error) {
295
+ await storage.transaction(async (trx) => await releaseBatchState(storage, batch, 'aborted', trx));
296
+ throw error;
297
+ }
298
+ const explicitIds = new Set(fixedOutputs.map(output => output.outputId));
299
+ return {
300
+ batchId: batch.batchId,
301
+ expiresAt: batch.expiresAt.toISOString(),
302
+ hardExpiresAt: batch.hardExpiresAt.toISOString(),
303
+ changeBasket,
304
+ feeModel: (0, StorageProvider_1.validateStorageFeeModel)(storage.feeModel),
305
+ commissionSatoshis: storage.commissionSatoshis,
306
+ commissionPubKeyHex: storage.commissionPubKeyHex,
307
+ availableChangeCount: available.length,
308
+ reservedOutputs: fundingResult.outputs.filter(output => funding.some(candidate => candidate.outputId === output.outputId)),
309
+ explicitOutputs: fundingResult.outputs.filter(output => explicitIds.has(output.outputId)),
310
+ inputBeef: fundingResult.beef
311
+ };
312
+ }
313
+ function requireLiveBatch(batch) {
314
+ if (batch == null || activeExpiry(batch))
315
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('action batch is not active');
316
+ return batch;
317
+ }
318
+ async function extendActionBatch(storage, auth, args) {
319
+ const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
320
+ await cleanupExpiredActionBatches(storage);
321
+ const batch = requireLiveBatch(await storage.findActionBatch(userId, args.batchId));
322
+ const basket = (0, utilityHelpers_1.verifyOne)(await storage.findOutputBaskets({ partial: { userId, name: 'default' } }));
323
+ const alreadyReserved = await storage.findActionBatchOutputIds(batch.actionBatchId);
324
+ const available = await availableManagedChange(storage, userId, basket.basketId, false);
325
+ if (!Number.isSafeInteger(args.requestedOutputs) || args.requestedOutputs < 0) {
326
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('requestedOutputs', 'non-negative safe integer');
327
+ }
328
+ const requestedCount = Math.min(args.requestedOutputs, exports.ACTION_BATCH_MAX_RESERVATION_EXTENSION_OUTPUTS);
329
+ const funding = chooseReservationPool(available, Math.max(1, args.targetSatoshis), requestedCount, 0, true, reservationPlanningCosts(storage, basket));
330
+ const explicitByOutpoint = await storage.findOutputsByOutpoints(userId, args.explicitOutpoints);
331
+ const explicit = Object.values(explicitByOutpoint)
332
+ .filter(output => !alreadyReserved.includes(output.outputId));
333
+ const fundingShape = argsToFundingShape(args.includeSourceTransactions);
334
+ const fundingResult = await makeFundingResult(storage, fundingShape, [...funding, ...explicit]);
335
+ const expiresAt = new Date(Math.min(batch.hardExpiresAt.getTime(), Date.now() + exports.ACTION_BATCH_LEASE_MS));
336
+ await storage.transaction(async (trx) => {
337
+ const current = requireLiveBatch(await storage.findActionBatchForUpdate(userId, args.batchId, trx));
338
+ await reserveOutputs(storage, current, [...funding, ...explicit], trx);
339
+ await storage.updateActionBatch(current.actionBatchId, { expiresAt }, trx);
340
+ });
341
+ return {
342
+ expiresAt: expiresAt.toISOString(),
343
+ reservedOutputs: fundingResult.outputs.filter(output => funding.some(candidate => candidate.outputId === output.outputId)),
344
+ explicitOutputs: fundingResult.outputs.filter(output => explicit.some(candidate => candidate.outputId === output.outputId)),
345
+ inputBeef: fundingResult.beef
346
+ };
347
+ }
348
+ function argsToFundingShape(includeSourceTransactions) {
349
+ return {
350
+ inputs: [], outputs: [], labels: [], description: 'action batch extension', version: 1, lockTime: 0,
351
+ options: {
352
+ acceptDelayedBroadcast: true, returnTXIDOnly: false, noSend: true, sendWith: [], signAndProcess: true,
353
+ knownTxids: [], noSendChange: [], randomizeOutputs: true
354
+ },
355
+ isSendWith: false, isNewTx: true, isRemixChange: false, isNoSend: true, isDelayed: true,
356
+ isTestWerrReviewActions: false,
357
+ isSignAction: includeSourceTransactions,
358
+ includeAllSourceTransactions: includeSourceTransactions
359
+ };
360
+ }
361
+ async function renewActionBatch(storage, auth, batchId) {
362
+ const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
363
+ return await storage.transaction(async (trx) => {
364
+ const batch = requireLiveBatch(await storage.findActionBatchForUpdate(userId, batchId, trx));
365
+ const expiresAt = new Date(Math.min(batch.hardExpiresAt.getTime(), Date.now() + exports.ACTION_BATCH_LEASE_MS));
366
+ await storage.updateActionBatch(batch.actionBatchId, { expiresAt }, trx);
367
+ return { expiresAt: expiresAt.toISOString() };
368
+ });
369
+ }
370
+ async function reacquireManifestInputs(storage, userId, batch, validated, trx) {
371
+ if (batch.hardExpiresAt.getTime() <= Date.now()) {
372
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('action batch hard lifetime has expired');
373
+ }
374
+ const stagedTxids = new Set(validated.actions.map(({ action }) => action.txid));
375
+ const outpoints = [...new Map(validated.actions.flatMap(({ action }) => action.plan.inputs)
376
+ .filter(input => !stagedTxids.has(input.sourceTxid))
377
+ .map(input => [`${input.sourceTxid}.${input.sourceVout}`, {
378
+ txid: input.sourceTxid,
379
+ vout: input.sourceVout,
380
+ providedBy: input.providedBy
381
+ }])).values()];
382
+ const stored = await storage.findOutputsByOutpointsForUpdate(userId, outpoints, trx);
383
+ await storage.deleteActionBatchOutputReservations(batch.actionBatchId, trx);
384
+ const outputs = [];
385
+ for (const outpoint of outpoints) {
386
+ const key = `${outpoint.txid}.${outpoint.vout}`;
387
+ const output = stored[key];
388
+ if (output == null) {
389
+ if (outpoint.providedBy === 'storage' || outpoint.providedBy === 'you-and-storage') {
390
+ throw new WERR_errors_1.WERR_INVALID_OPERATION(`reserved input ${key} is no longer available`);
391
+ }
392
+ continue;
393
+ }
394
+ if (!output.spendable || output.spentBy != null) {
395
+ throw new WERR_errors_1.WERR_INVALID_OPERATION(`input ${key} is no longer spendable`);
396
+ }
397
+ outputs.push(output);
398
+ }
399
+ const conflicts = await storage.findReservedActionBatchOutputIds(outputs.map(output => output.outputId), trx);
400
+ if (conflicts.length > 0) {
401
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('one or more expired action batch inputs were reserved elsewhere');
402
+ }
403
+ const now = new Date();
404
+ await storage.reserveActionBatchOutputs(outputs.map(output => ({
405
+ actionBatchId: batch.actionBatchId,
406
+ outputId: output.outputId,
407
+ created_at: now,
408
+ updated_at: now
409
+ })), trx);
410
+ await storage.updateActionBatch(batch.actionBatchId, {
411
+ status: 'active',
412
+ expiresAt: new Date(Math.min(batch.hardExpiresAt.getTime(), now.getTime() + exports.ACTION_BATCH_LEASE_MS))
413
+ }, trx);
414
+ }
415
+ function transactionStatuses(action) {
416
+ if (action.metadata.isNoSend)
417
+ return { tx: 'nosend', req: 'nosend' };
418
+ if (action.metadata.isDelayed)
419
+ return { tx: 'unprocessed', req: 'unsent' };
420
+ return { tx: 'unprocessed', req: 'unprocessed' };
421
+ }
422
+ async function persistLabels(storage, transactionId, labels, labelsByName, trx) {
423
+ for (const label of new Set(labels)) {
424
+ const row = labelsByName.get(label);
425
+ if (row == null)
426
+ throw new WERR_errors_1.WERR_INTERNAL(`missing preloaded transaction label ${label}`);
427
+ await storage.findOrInsertTxLabelMap(transactionId, (0, utilityHelpers_1.verifyId)(row.txLabelId), trx);
428
+ }
429
+ }
430
+ function outputBasketId(isChange, basket, baskets) {
431
+ if (isChange)
432
+ return baskets.default?.basketId;
433
+ return basket == null ? undefined : baskets[basket].basketId;
434
+ }
435
+ async function persistOutputTags(storage, outputId, tagNames, tags, trx) {
436
+ for (const tagName of new Set(tagNames)) {
437
+ const tag = tags[tagName];
438
+ await storage.findOrInsertOutputTagMap(outputId, (0, utilityHelpers_1.verifyId)(tag.outputTagId), trx);
439
+ }
440
+ }
441
+ async function persistOutputCommission(storage, row, action, transactionId, trx) {
442
+ if (row.lockingScript == null) {
443
+ throw new WERR_errors_1.WERR_INTERNAL('commission locking script must be retained');
444
+ }
445
+ const commission = {
446
+ commissionId: 0,
447
+ userId: row.userId,
448
+ transactionId,
449
+ satoshis: row.satoshis,
450
+ keyOffset: action.commissionKeyOffset ?? '',
451
+ isRedeemed: false,
452
+ lockingScript: row.lockingScript,
453
+ created_at: row.created_at,
454
+ updated_at: row.updated_at
455
+ };
456
+ await storage.insertCommission(commission, trx);
457
+ }
458
+ async function persistOutputs(storage, userId, transactionId, validated, baskets, tags, trx) {
459
+ const { action, tx, rawTx } = validated;
460
+ const offsets = (0, parseTxScriptOffsets_1.parseTxScriptOffsets)(rawTx);
461
+ const rows = [];
462
+ for (const planned of action.plan.outputs) {
463
+ const output = tx.outputs[planned.vout];
464
+ const isChange = planned.providedBy === 'storage' && planned.purpose === 'change';
465
+ const isCommission = planned.providedBy === 'storage' &&
466
+ (planned.purpose === 'storage-commission' || planned.purpose === 'service-charge');
467
+ const offset = offsets.outputs[planned.vout];
468
+ const lockingScript = offset.length <= storage.getSettings().maxOutputScript || isCommission
469
+ ? output.lockingScript.toBinary()
470
+ : undefined;
471
+ const now = new Date();
472
+ const row = {
473
+ outputId: 0,
474
+ userId,
475
+ transactionId,
476
+ basketId: outputBasketId(isChange, planned.basket, baskets),
477
+ spendable: !isCommission,
478
+ change: isChange,
479
+ outputDescription: planned.outputDescription,
480
+ vout: planned.vout,
481
+ satoshis: planned.satoshis,
482
+ providedBy: planned.providedBy,
483
+ purpose: isCommission ? 'storage-commission' : (planned.purpose ?? ''),
484
+ type: isChange ? 'P2PKH' : 'custom',
485
+ txid: action.txid,
486
+ derivationPrefix: isChange ? action.plan.derivationPrefix : undefined,
487
+ derivationSuffix: isChange ? planned.derivationSuffix : undefined,
488
+ customInstructions: planned.customInstructions,
489
+ scriptLength: offset.length,
490
+ scriptOffset: offset.offset,
491
+ lockingScript,
492
+ created_at: now,
493
+ updated_at: now
494
+ };
495
+ row.outputId = await storage.insertOutput(row, trx);
496
+ await persistOutputTags(storage, row.outputId, planned.tags, tags, trx);
497
+ if (isCommission)
498
+ await persistOutputCommission(storage, row, action, transactionId, trx);
499
+ rows.push(row);
500
+ }
501
+ return rows;
502
+ }
503
+ async function persistAction(...[storage, userId, validated, reservedOutputIds, storedByOutpoint, stagedByOutpoint, labelsByName, baskets, tags, trx]) {
504
+ const { action, tx, rawTx } = validated;
505
+ const statuses = transactionStatuses(action);
506
+ const managedInputSatoshis = action.plan.inputs
507
+ .filter(input => input.vin >= action.metadata.inputs.length)
508
+ .reduce((sum, input) => sum + input.sourceSatoshis, 0);
509
+ const changeOutputSatoshis = action.plan.outputs
510
+ .filter(output => output.purpose === 'change')
511
+ .reduce((sum, output) => sum + output.satoshis, 0);
512
+ const now = new Date();
513
+ const transaction = {
514
+ transactionId: 0,
515
+ userId,
516
+ status: statuses.tx,
517
+ reference: action.reference,
518
+ isOutgoing: true,
519
+ satoshis: changeOutputSatoshis - managedInputSatoshis,
520
+ description: action.metadata.description,
521
+ version: tx.version,
522
+ lockTime: tx.lockTime,
523
+ txid: action.txid,
524
+ created_at: now,
525
+ updated_at: now
526
+ };
527
+ transaction.transactionId = await storage.insertTransaction(transaction, trx);
528
+ await persistLabels(storage, transaction.transactionId, action.metadata.labels, labelsByName, trx);
529
+ for (const input of action.plan.inputs) {
530
+ const outpoint = `${input.sourceTxid}.${input.sourceVout}`;
531
+ let output = stagedByOutpoint.get(outpoint);
532
+ output ??= storedByOutpoint[outpoint];
533
+ if (output == null)
534
+ continue;
535
+ if (output.spentBy != null || !output.spendable)
536
+ throw new WERR_errors_1.WERR_INVALID_OPERATION(`input ${outpoint} is no longer spendable`);
537
+ if (!stagedByOutpoint.has(outpoint) && !reservedOutputIds.has(output.outputId)) {
538
+ throw new WERR_errors_1.WERR_INVALID_OPERATION(`input ${outpoint} was not reserved by this action batch`);
539
+ }
540
+ await storage.updateOutput(output.outputId, {
541
+ spendable: false,
542
+ spentBy: transaction.transactionId,
543
+ spendingDescription: action.metadata.inputs[input.vin]?.inputDescription
544
+ }, trx);
545
+ output.spendable = false;
546
+ output.spentBy = transaction.transactionId;
547
+ }
548
+ const outputRows = await persistOutputs(storage, userId, transaction.transactionId, validated, baskets, tags, trx);
549
+ for (const output of outputRows)
550
+ stagedByOutpoint.set(`${action.txid}.${output.vout}`, output);
551
+ const req = EntityProvenTxReq_1.EntityProvenTxReq.fromTxid(action.txid, rawTx, validated.externalInputBeef);
552
+ req.status = statuses.req;
553
+ req.addNotifyTransactionId(transaction.transactionId);
554
+ return await req.insertOrMerge(storage, trx);
555
+ }
556
+ async function persistManifestAtomically(storage, userId, batch, manifest, validated) {
557
+ return await storage.transaction(async (trx) => {
558
+ const current = await storage.findActionBatchForUpdate(userId, batch.batchId, trx);
559
+ if (current == null)
560
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('action batch was not found');
561
+ if (current.status === 'committed') {
562
+ if (current.manifestDigest !== manifest.digest) {
563
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('batch committed with another manifest');
564
+ }
565
+ return { batch: current, alreadyCommitted: true };
566
+ }
567
+ if (current.status === 'aborted')
568
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('aborted action batch cannot be committed');
569
+ if (current.manifestDigest != null && current.manifestDigest !== manifest.digest) {
570
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('batch prepared with another manifest');
571
+ }
572
+ const needsReacquire = current.status === 'expired' || activeExpiry(current);
573
+ if (needsReacquire) {
574
+ if (current.hardExpiresAt.getTime() <= Date.now()) {
575
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('action batch hard lifetime has expired');
576
+ }
577
+ await reacquireManifestInputs(storage, userId, current, validated, trx);
578
+ }
579
+ else {
580
+ requireLiveBatch(current);
581
+ }
582
+ const reservedOutputIds = new Set(await storage.findActionBatchOutputIds(current.actionBatchId, trx));
583
+ const stagedTxids = new Set(validated.actions.map(({ action }) => action.txid));
584
+ const inputOutpoints = [...new Map(validated.actions.flatMap(({ action }) => action.plan.inputs)
585
+ .filter(input => !stagedTxids.has(input.sourceTxid))
586
+ .map(input => [`${input.sourceTxid}.${input.sourceVout}`, {
587
+ txid: input.sourceTxid,
588
+ vout: input.sourceVout
589
+ }])).values()];
590
+ const storedByOutpoint = await storage.findOutputsByOutpointsForUpdate(userId, inputOutpoints, trx);
591
+ const allBasketNames = validated.actions.flatMap(({ action }) => action.plan.outputs.flatMap(output => output.basket == null ? [] : [output.basket]));
592
+ if (validated.actions.some(({ action }) => action.plan.outputs.some(output => output.purpose === 'change')))
593
+ allBasketNames.push('default');
594
+ const baskets = await storage.findOrInsertOutputBasketsBulk(userId, [...new Set(allBasketNames)], trx);
595
+ const tags = await storage.findOrInsertOutputTagsBulk(userId, [...new Set(validated.actions.flatMap(({ action }) => action.plan.outputs.flatMap(output => output.tags)))], trx);
596
+ const labelNames = [...new Set(validated.actions.flatMap(({ action }) => action.metadata.labels))];
597
+ const labelsByName = new Map(Object.entries(await storage.findOrInsertTxLabelsBulk(userId, labelNames, trx)));
598
+ const stagedByOutpoint = new Map();
599
+ const reqsByTxid = new Map();
600
+ for (const action of validated.actions) {
601
+ const req = await persistAction(storage, userId, action, reservedOutputIds, storedByOutpoint, stagedByOutpoint, labelsByName, baskets, tags, trx);
602
+ reqsByTxid.set(action.action.txid, req);
603
+ }
604
+ await storage.deleteActionBatchOutputReservations(current.actionBatchId, trx);
605
+ await storage.deleteActionBatchBlobRecords(current.actionBatchId, trx);
606
+ await storage.updateActionBatch(current.actionBatchId, {
607
+ status: 'committed',
608
+ manifestDigest: manifest.digest
609
+ }, trx);
610
+ current.status = 'committed';
611
+ current.manifestDigest = manifest.digest;
612
+ const details = manifest.sendWith.map(txid => {
613
+ const req = reqsByTxid.get(txid);
614
+ if (req == null)
615
+ return undefined;
616
+ const reqApi = req.toApi();
617
+ const detail = {
618
+ txid,
619
+ req: reqApi,
620
+ status: 'unknown'
621
+ };
622
+ (0, storageProviderHelpers_1.classifyReqStatus)(detail, reqApi);
623
+ return detail;
624
+ });
625
+ return {
626
+ batch: current,
627
+ alreadyCommitted: false,
628
+ share: details.every(detail => detail != null)
629
+ ? {
630
+ beef: validated.beef,
631
+ details: details.filter((detail) => detail != null),
632
+ verified: true
633
+ }
634
+ : undefined
635
+ };
636
+ });
637
+ }
638
+ async function completeCommittedBatch(storage, userId, batch, manifest, alreadyCommitted, share) {
639
+ if (batch.result != null) {
640
+ const saved = JSON.parse(batch.result);
641
+ return {
642
+ batchId: saved.batchId,
643
+ manifestDigest: saved.manifestDigest,
644
+ committedTxids: saved.committedTxids,
645
+ alreadyCommitted: true,
646
+ sendWithResults: saved.sendWithResults,
647
+ notDelayedResults: saved.notDelayedResults,
648
+ log: saved.log
649
+ };
650
+ }
651
+ const { swr, ndr } = await (0, processAction_1.shareReqsWithWorld)(storage, userId, manifest.sendWith, manifest.isDelayed, share);
652
+ const result = {
653
+ batchId: manifest.batchId,
654
+ manifestDigest: manifest.digest,
655
+ committedTxids: manifest.actions.map(action => action.txid),
656
+ alreadyCommitted,
657
+ sendWithResults: swr,
658
+ notDelayedResults: ndr
659
+ };
660
+ await storage.updateActionBatch(batch.actionBatchId, { result: JSON.stringify(result) });
661
+ return result;
662
+ }
663
+ async function commitActionBatchOnce(storage, userId, manifest) {
664
+ const batch = await storage.findActionBatch(userId, manifest.batchId);
665
+ if (batch == null)
666
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('action batch was not found');
667
+ if (batch.status === 'committed') {
668
+ if (batch.manifestDigest !== manifest.digest)
669
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('batch committed with another manifest');
670
+ return await completeCommittedBatch(storage, userId, batch, manifest, true);
671
+ }
672
+ if (batch.status === 'aborted')
673
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('aborted action batch cannot be committed');
674
+ const needsReacquire = batch.status === 'expired' || activeExpiry(batch);
675
+ if (!needsReacquire)
676
+ requireLiveBatch(batch);
677
+ else if (batch.hardExpiresAt.getTime() <= Date.now()) {
678
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('action batch hard lifetime has expired');
679
+ }
680
+ if (batch.manifestDigest != null && batch.manifestDigest !== manifest.digest) {
681
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('batch prepared with another manifest');
682
+ }
683
+ const validated = await (0, actionBatchValidation_1.validateManifestActions)(storage, batch, manifest);
684
+ const persisted = await persistManifestAtomically(storage, userId, batch, manifest, validated);
685
+ return await completeCommittedBatch(storage, userId, persisted.batch, manifest, persisted.alreadyCommitted, persisted.share);
686
+ }
687
+ const activeBatchCommits = new WeakMap();
688
+ async function commitActionBatch(storage, auth, manifest) {
689
+ (0, actionBatchBlobs_1.validateActionBatchInlinePayload)(manifest);
690
+ if (!(0, actionBatchDigest_1.verifyActionBatchManifestDigest)(manifest))
691
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('manifest.digest', 'valid');
692
+ (0, actionBatchBlobs_1.validateCompactManifest)(manifest);
693
+ const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
694
+ let commits = activeBatchCommits.get(storage);
695
+ if (commits == null) {
696
+ commits = new Map();
697
+ activeBatchCommits.set(storage, commits);
698
+ }
699
+ const key = `${userId}:${manifest.batchId}`;
700
+ const active = commits.get(key);
701
+ if (active != null) {
702
+ if (active.digest !== manifest.digest) {
703
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('action batch commit is active with another manifest');
704
+ }
705
+ return await active.promise;
706
+ }
707
+ const promise = commitActionBatchOnce(storage, userId, manifest)
708
+ .finally(() => { commits?.delete(key); });
709
+ commits.set(key, { digest: manifest.digest, promise });
710
+ return await promise;
711
+ }
712
+ async function commitActionBatchByDigest(storage, auth, args) {
713
+ const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
714
+ const batch = await storage.findActionBatch(userId, args.batchId);
715
+ if (batch?.manifestDigest !== args.digest || batch?.manifest == null) {
716
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('prepared action batch manifest was not found');
717
+ }
718
+ const manifest = JSON.parse(batch.manifest);
719
+ if (manifest.format !== 2 || manifest.batchId !== args.batchId || manifest.digest !== args.digest ||
720
+ !(0, actionBatchDigest_1.verifyActionBatchManifestDigest)(manifest)) {
721
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('prepared action batch manifest is invalid');
722
+ }
723
+ return await commitActionBatch(storage, auth, manifest);
724
+ }
725
+ async function abortActionBatch(storage, auth, batchId) {
726
+ const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
727
+ return await storage.transaction(async (trx) => {
728
+ const batch = await storage.findActionBatchForUpdate(userId, batchId, trx);
729
+ if (batch == null || batch.status === 'aborted')
730
+ return { aborted: true };
731
+ if (batch.status === 'committed')
732
+ return { aborted: false };
733
+ await releaseBatchState(storage, batch, 'aborted', trx);
734
+ return { aborted: true };
735
+ });
736
+ }
737
+ //# sourceMappingURL=actionBatch.js.map