@bsv/wallet-toolbox 2.1.24 → 3.0.0-alpha.0

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 (918) hide show
  1. package/CHANGELOG.md +2 -7
  2. package/docs/CREATEACTION_BLOCKERS.md +391 -0
  3. package/docs/CUTOVER_RUNBOOK.md +95 -0
  4. package/docs/REQUIREMENTS_COMPLIANCE.md +157 -0
  5. package/docs/ROLLOUT_PLAN.md +273 -0
  6. package/docs/SESSION_HANDOFF.md +298 -0
  7. package/docs/STORAGE_METHOD_WIRING.md +176 -0
  8. package/docs/client.md +3765 -1325
  9. package/docs/monitor.md +255 -33
  10. package/docs/services.md +304 -280
  11. package/docs/setup.md +24 -24
  12. package/docs/storage.md +2775 -243
  13. package/docs/v3-upgrade/index.html +911 -0
  14. package/docs/wallet.md +4956 -9455
  15. package/out/src/CWIStyleWalletManager.d.ts +33 -7
  16. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  17. package/out/src/CWIStyleWalletManager.js +281 -313
  18. package/out/src/CWIStyleWalletManager.js.map +1 -1
  19. package/out/src/Setup.d.ts +6 -6
  20. package/out/src/Setup.d.ts.map +1 -1
  21. package/out/src/Setup.js +5 -5
  22. package/out/src/Setup.js.map +1 -1
  23. package/out/src/SetupClient.d.ts +6 -6
  24. package/out/src/SetupClient.d.ts.map +1 -1
  25. package/out/src/SetupClient.js +5 -5
  26. package/out/src/SetupClient.js.map +1 -1
  27. package/out/src/SetupWallet.d.ts.map +1 -1
  28. package/out/src/ShamirWalletManager.d.ts +3 -3
  29. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  30. package/out/src/ShamirWalletManager.js +6 -6
  31. package/out/src/ShamirWalletManager.js.map +1 -1
  32. package/out/src/SimpleWalletManager.d.ts +12 -2
  33. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  34. package/out/src/SimpleWalletManager.js +46 -30
  35. package/out/src/SimpleWalletManager.js.map +1 -1
  36. package/out/src/Wallet.d.ts +1 -1
  37. package/out/src/Wallet.d.ts.map +1 -1
  38. package/out/src/Wallet.js +102 -100
  39. package/out/src/Wallet.js.map +1 -1
  40. package/out/src/WalletAuthenticationManager.d.ts +1 -1
  41. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  42. package/out/src/WalletAuthenticationManager.js +3 -3
  43. package/out/src/WalletAuthenticationManager.js.map +1 -1
  44. package/out/src/WalletLogger.d.ts.map +1 -1
  45. package/out/src/WalletLogger.js +16 -8
  46. package/out/src/WalletLogger.js.map +1 -1
  47. package/out/src/WalletPermissionsManager.d.ts +89 -18
  48. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  49. package/out/src/WalletPermissionsManager.js +656 -870
  50. package/out/src/WalletPermissionsManager.js.map +1 -1
  51. package/out/src/WalletSettingsManager.d.ts +2 -2
  52. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  53. package/out/src/WalletSettingsManager.js.map +1 -1
  54. package/out/src/__tests/CWIStyleWalletManager.test.js +6 -6
  55. package/out/src/__tests/CWIStyleWalletManager.test.js.map +1 -1
  56. package/out/src/__tests/WalletPermissionsManager.checks.test.js.map +1 -1
  57. package/out/src/__tests/WalletPermissionsManager.encryption.test.js +8 -8
  58. package/out/src/__tests/WalletPermissionsManager.encryption.test.js.map +1 -1
  59. package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts +0 -2
  60. package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts.map +1 -1
  61. package/out/src/__tests/WalletPermissionsManager.fixtures.js +6 -18
  62. package/out/src/__tests/WalletPermissionsManager.fixtures.js.map +1 -1
  63. package/out/src/__tests/WalletPermissionsManager.flows.test.js.map +1 -1
  64. package/out/src/__tests/WalletPermissionsManager.pmodules.test.js +7 -7
  65. package/out/src/__tests/WalletPermissionsManager.pmodules.test.js.map +1 -1
  66. package/out/src/__tests/WalletPermissionsManager.tokens.test.js +1 -1
  67. package/out/src/__tests/WalletPermissionsManager.tokens.test.js.map +1 -1
  68. package/out/src/entropy/EntropyCollector.d.ts +1 -1
  69. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  70. package/out/src/entropy/EntropyCollector.js +3 -3
  71. package/out/src/entropy/EntropyCollector.js.map +1 -1
  72. package/out/src/fundWalletP2PKH.d.ts +2 -2
  73. package/out/src/fundWalletP2PKH.d.ts.map +1 -1
  74. package/out/src/fundWalletP2PKH.js +11 -10
  75. package/out/src/fundWalletP2PKH.js.map +1 -1
  76. package/out/src/mockchain/MockChainMigrations.d.ts +3 -3
  77. package/out/src/mockchain/MockChainMigrations.d.ts.map +1 -1
  78. package/out/src/mockchain/MockChainMigrations.js.map +1 -1
  79. package/out/src/mockchain/MockChainStorage.d.ts.map +1 -1
  80. package/out/src/mockchain/MockChainStorage.js +5 -5
  81. package/out/src/mockchain/MockChainStorage.js.map +1 -1
  82. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  83. package/out/src/mockchain/MockChainTracker.js +10 -10
  84. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  85. package/out/src/mockchain/MockMiner.d.ts.map +1 -1
  86. package/out/src/mockchain/MockMiner.js +3 -3
  87. package/out/src/mockchain/MockMiner.js.map +1 -1
  88. package/out/src/mockchain/MockServices.d.ts +9 -0
  89. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  90. package/out/src/mockchain/MockServices.js +195 -238
  91. package/out/src/mockchain/MockServices.js.map +1 -1
  92. package/out/src/mockchain/merkleTree.d.ts.map +1 -1
  93. package/out/src/mockchain/merkleTree.js +21 -12
  94. package/out/src/mockchain/merkleTree.js.map +1 -1
  95. package/out/src/monitor/LeasedMonitorTask.d.ts +43 -0
  96. package/out/src/monitor/LeasedMonitorTask.d.ts.map +1 -0
  97. package/out/src/monitor/LeasedMonitorTask.js +89 -0
  98. package/out/src/monitor/LeasedMonitorTask.js.map +1 -0
  99. package/out/src/monitor/Monitor.d.ts +24 -0
  100. package/out/src/monitor/Monitor.d.ts.map +1 -1
  101. package/out/src/monitor/Monitor.js +63 -75
  102. package/out/src/monitor/Monitor.js.map +1 -1
  103. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  104. package/out/src/monitor/MonitorDaemon.js +24 -23
  105. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  106. package/out/src/monitor/V7LeasedTask.d.ts +43 -0
  107. package/out/src/monitor/V7LeasedTask.d.ts.map +1 -0
  108. package/out/src/monitor/V7LeasedTask.js +89 -0
  109. package/out/src/monitor/V7LeasedTask.js.map +1 -0
  110. package/out/src/monitor/__test/MonitorDaemon.man.test.js.map +1 -1
  111. package/out/src/monitor/index.all.d.ts +1 -0
  112. package/out/src/monitor/index.all.d.ts.map +1 -1
  113. package/out/src/monitor/index.all.js +1 -0
  114. package/out/src/monitor/index.all.js.map +1 -1
  115. package/out/src/monitor/tasks/TaskArcSSE.d.ts +2 -2
  116. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  117. package/out/src/monitor/tasks/TaskArcSSE.js +10 -23
  118. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  119. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +4 -2
  120. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  121. package/out/src/monitor/tasks/TaskCheckForProofs.js +83 -16
  122. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  123. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +1 -1
  124. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  125. package/out/src/monitor/tasks/TaskCheckNoSends.js +1 -2
  126. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  127. package/out/src/monitor/tasks/TaskClock.d.ts +1 -1
  128. package/out/src/monitor/tasks/TaskClock.d.ts.map +1 -1
  129. package/out/src/monitor/tasks/TaskClock.js +0 -1
  130. package/out/src/monitor/tasks/TaskClock.js.map +1 -1
  131. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts +1 -1
  132. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  133. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  134. package/out/src/monitor/tasks/TaskMineBlock.d.ts +1 -1
  135. package/out/src/monitor/tasks/TaskMineBlock.d.ts.map +1 -1
  136. package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -1
  137. package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts +1 -1
  138. package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts.map +1 -1
  139. package/out/src/monitor/tasks/TaskMonitorCallHistory.js +1 -1
  140. package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
  141. package/out/src/monitor/tasks/TaskNewHeader.d.ts +2 -2
  142. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  143. package/out/src/monitor/tasks/TaskNewHeader.js +7 -5
  144. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  145. package/out/src/monitor/tasks/TaskPurge.d.ts +1 -1
  146. package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
  147. package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
  148. package/out/src/monitor/tasks/TaskReorg.d.ts +1 -1
  149. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  150. package/out/src/monitor/tasks/TaskReorg.js +2 -2
  151. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  152. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts +1 -1
  153. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  154. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +10 -10
  155. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  156. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +1 -1
  157. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  158. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +2 -2
  159. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  160. package/out/src/monitor/tasks/TaskReviewStatus.d.ts +1 -1
  161. package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
  162. package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
  163. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +1 -1
  164. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  165. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  166. package/out/src/monitor/tasks/TaskSendWaiting.d.ts +1 -1
  167. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  168. package/out/src/monitor/tasks/TaskSendWaiting.js +4 -5
  169. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  170. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts +1 -1
  171. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts.map +1 -1
  172. package/out/src/monitor/tasks/TaskSyncWhenIdle.js +1 -4
  173. package/out/src/monitor/tasks/TaskSyncWhenIdle.js.map +1 -1
  174. package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -1
  175. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  176. package/out/src/monitor/tasks/TaskUnFail.js +13 -15
  177. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  178. package/out/src/monitor/tasks/WalletMonitorTask.d.ts.map +1 -1
  179. package/out/src/monitor/tasks/WalletMonitorTask.js +3 -1
  180. package/out/src/monitor/tasks/WalletMonitorTask.js.map +1 -1
  181. package/out/src/monitor/tasks/__tests/TaskArcSSE.test.js.map +1 -1
  182. package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.js.map +1 -1
  183. package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.js.map +1 -1
  184. package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.js.map +1 -1
  185. package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.js.map +1 -1
  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 +26 -21
  191. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  192. package/out/src/sdk/WERR_errors.d.ts.map +1 -1
  193. package/out/src/sdk/WERR_errors.js +5 -5
  194. package/out/src/sdk/WERR_errors.js.map +1 -1
  195. package/out/src/sdk/WalletError.d.ts +1 -1
  196. package/out/src/sdk/WalletError.d.ts.map +1 -1
  197. package/out/src/sdk/WalletError.js +10 -3
  198. package/out/src/sdk/WalletError.js.map +1 -1
  199. package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
  200. package/out/src/sdk/WalletErrorFromJson.js +1 -3
  201. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  202. package/out/src/sdk/WalletServices.interfaces.d.ts +19 -19
  203. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  204. package/out/src/sdk/WalletStorage.interfaces.d.ts +59 -59
  205. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  206. package/out/src/sdk/__test/CertificateLifeCycle.test.js +3 -3
  207. package/out/src/sdk/__test/CertificateLifeCycle.test.js.map +1 -1
  208. package/out/src/sdk/__test/WalletError.test.js +4 -4
  209. package/out/src/sdk/__test/WalletError.test.js.map +1 -1
  210. package/out/src/sdk/types.d.ts +36 -4
  211. package/out/src/sdk/types.d.ts.map +1 -1
  212. package/out/src/sdk/types.js +53 -4
  213. package/out/src/sdk/types.js.map +1 -1
  214. package/out/src/services/ServiceCollection.d.ts +6 -6
  215. package/out/src/services/ServiceCollection.d.ts.map +1 -1
  216. package/out/src/services/ServiceCollection.js +3 -4
  217. package/out/src/services/ServiceCollection.js.map +1 -1
  218. package/out/src/services/Services.d.ts +5 -0
  219. package/out/src/services/Services.d.ts.map +1 -1
  220. package/out/src/services/Services.js +174 -182
  221. package/out/src/services/Services.js.map +1 -1
  222. package/out/src/services/__tests/ARC.man.test.js.map +1 -1
  223. package/out/src/services/__tests/ARC.timeout.man.test.js +3 -3
  224. package/out/src/services/__tests/ARC.timeout.man.test.js.map +1 -1
  225. package/out/src/services/__tests/ArcGorillaPool.man.test.js.map +1 -1
  226. package/out/src/services/__tests/bitrails.test.js +3 -2
  227. package/out/src/services/__tests/bitrails.test.js.map +1 -1
  228. package/out/src/services/__tests/getFiatExchangeRate.test.js.map +1 -1
  229. package/out/src/services/__tests/postBeef.test.js.map +1 -1
  230. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  231. package/out/src/services/chaintracker/BHServiceClient.js +7 -7
  232. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  233. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  234. package/out/src/services/chaintracker/ChaintracksChainTracker.js +5 -5
  235. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  236. package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.js +2 -2
  237. package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.js.map +1 -1
  238. package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.js +1 -1
  239. package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.js.map +1 -1
  240. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts +5 -3
  241. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  242. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  243. package/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts.map +1 -1
  244. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +20 -10
  245. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  246. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +228 -221
  247. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  248. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +1 -1
  249. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  250. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +5 -22
  251. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  252. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  253. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +9 -10
  254. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  255. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  256. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +1 -1
  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 +3 -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/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  265. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +3 -3
  266. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  267. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  268. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  269. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  270. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +1 -1
  271. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  272. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  273. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +1 -8
  274. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  275. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  276. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +2 -2
  277. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  278. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  279. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  280. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +2 -2
  281. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  282. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +6 -39
  283. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  284. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -3
  285. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  286. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +8 -6
  287. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  288. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js +2 -1
  289. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js.map +1 -1
  290. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.js +4 -3
  291. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.js.map +1 -1
  292. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js +11 -10
  293. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js.map +1 -1
  294. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  295. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +9 -16
  296. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  297. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +3 -3
  298. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  299. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +13 -13
  300. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  301. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  302. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +34 -22
  303. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  304. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  305. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +31 -30
  306. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  307. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +1 -2
  308. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  309. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +25 -22
  310. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  311. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.d.ts.map +1 -1
  312. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.js +0 -21
  313. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.js.map +1 -1
  314. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +2 -2
  315. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  316. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +11 -10
  317. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  318. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js +2 -1
  319. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js.map +1 -1
  320. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js +8 -7
  321. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js.map +1 -1
  322. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.js +6 -5
  323. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.js.map +1 -1
  324. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.js +10 -9
  325. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.js.map +1 -1
  326. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.d.ts +1 -1
  327. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.d.ts.map +1 -1
  328. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.js +14 -17
  329. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.js.map +1 -1
  330. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js +3 -2
  331. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js.map +1 -1
  332. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  333. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  334. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  335. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js +6 -8
  336. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  337. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  338. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  339. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  340. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  341. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  342. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  343. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  344. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  345. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +6 -1
  346. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  347. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +247 -227
  348. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  349. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  350. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +8 -7
  351. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  352. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  353. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +35 -25
  354. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  355. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +5 -5
  356. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  357. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +13 -11
  358. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  359. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +0 -1
  360. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  361. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  362. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +2 -2
  363. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  364. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +13 -13
  365. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  366. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  367. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js +21 -13
  368. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  369. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +2 -2
  370. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  371. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  372. package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.js +11 -11
  373. package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.js.map +1 -1
  374. package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.js +1 -1
  375. package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.js.map +1 -1
  376. package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.js +2 -2
  377. package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.js.map +1 -1
  378. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +1 -1
  379. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  380. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +28 -24
  381. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  382. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts.map +1 -1
  383. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js.map +1 -1
  384. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
  385. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +9 -10
  386. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  387. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  388. package/out/src/services/createDefaultWalletServicesOptions.js +3 -3
  389. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  390. package/out/src/services/providers/ARC.d.ts.map +1 -1
  391. package/out/src/services/providers/ARC.js +7 -14
  392. package/out/src/services/providers/ARC.js.map +1 -1
  393. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  394. package/out/src/services/providers/ArcSSEClient.js +1 -1
  395. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  396. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  397. package/out/src/services/providers/Bitails.js +17 -17
  398. package/out/src/services/providers/Bitails.js.map +1 -1
  399. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  400. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  401. package/out/src/services/providers/WhatsOnChain.d.ts +2 -0
  402. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  403. package/out/src/services/providers/WhatsOnChain.js +109 -233
  404. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  405. package/out/src/services/providers/__tests/ArcSSEClient.test.js.map +1 -1
  406. package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
  407. package/out/src/services/providers/exchangeRates.js +3 -3
  408. package/out/src/services/providers/exchangeRates.js.map +1 -1
  409. package/out/src/services/providers/getBeefForTxid.d.ts +1 -1
  410. package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
  411. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  412. package/out/src/services/providers/whatsOnChainHelpers.d.ts +68 -0
  413. package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -0
  414. package/out/src/services/providers/whatsOnChainHelpers.js +147 -0
  415. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -0
  416. package/out/src/signer/WalletSigner.d.ts.map +1 -1
  417. package/out/src/signer/WalletSigner.js.map +1 -1
  418. package/out/src/signer/methods/acquireDirectCertificate.js +1 -1
  419. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  420. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  421. package/out/src/signer/methods/buildSignableTransaction.js +21 -13
  422. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  423. package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
  424. package/out/src/signer/methods/completeSignedTransaction.js +20 -21
  425. package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
  426. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  427. package/out/src/signer/methods/createAction.js +8 -7
  428. package/out/src/signer/methods/createAction.js.map +1 -1
  429. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  430. package/out/src/signer/methods/internalizeAction.js +8 -6
  431. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  432. package/out/src/signer/methods/proveCertificate.js +1 -1
  433. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  434. package/out/src/signer/methods/signAction.js +8 -10
  435. package/out/src/signer/methods/signAction.js.map +1 -1
  436. package/out/src/storage/StorageIdb.d.ts +16 -1
  437. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  438. package/out/src/storage/StorageIdb.js +544 -1224
  439. package/out/src/storage/StorageIdb.js.map +1 -1
  440. package/out/src/storage/StorageKnex.d.ts +143 -3
  441. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  442. package/out/src/storage/StorageKnex.js +829 -222
  443. package/out/src/storage/StorageKnex.js.map +1 -1
  444. package/out/src/storage/StorageProvider.d.ts +124 -1
  445. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  446. package/out/src/storage/StorageProvider.js +316 -186
  447. package/out/src/storage/StorageProvider.js.map +1 -1
  448. package/out/src/storage/StorageReader.d.ts.map +1 -1
  449. package/out/src/storage/StorageReader.js +8 -7
  450. package/out/src/storage/StorageReader.js.map +1 -1
  451. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  452. package/out/src/storage/StorageReaderWriter.js +32 -32
  453. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  454. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  455. package/out/src/storage/StorageSyncReader.js +3 -3
  456. package/out/src/storage/StorageSyncReader.js.map +1 -1
  457. package/out/src/storage/WalletStorageManager.d.ts +3 -0
  458. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  459. package/out/src/storage/WalletStorageManager.js +83 -73
  460. package/out/src/storage/WalletStorageManager.js.map +1 -1
  461. package/out/src/storage/__test/StorageIdb.test.js +1 -1
  462. package/out/src/storage/__test/WalletStorageManager.test.js +1 -1
  463. package/out/src/storage/__test/WalletStorageManager.test.js.map +1 -1
  464. package/out/src/storage/__test/adminStats.man.test.js +1 -1
  465. package/out/src/storage/__test/adminStats.man.test.js.map +1 -1
  466. package/out/src/storage/__test/findStaleMerkleRoots.test.js.map +1 -1
  467. package/out/src/storage/__test/findStaleMerkleRootsKnex.test.js.map +1 -1
  468. package/out/src/storage/__test/getBeefForTransaction.test.js +1 -1
  469. package/out/src/storage/__test/getBeefForTransaction.test.js.map +1 -1
  470. package/out/src/storage/adminServer/adminServer.d.ts +1 -1
  471. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  472. package/out/src/storage/adminServer/adminServer.js +12 -12
  473. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  474. package/out/src/storage/adminServer/adminUi.d.ts.map +1 -1
  475. package/out/src/storage/idbHelpers.d.ts +47 -0
  476. package/out/src/storage/idbHelpers.d.ts.map +1 -0
  477. package/out/src/storage/idbHelpers.js +417 -0
  478. package/out/src/storage/idbHelpers.js.map +1 -0
  479. package/out/src/storage/methods/ListActionsSpecOp.d.ts +6 -1
  480. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  481. package/out/src/storage/methods/ListActionsSpecOp.js +28 -2
  482. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  483. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  484. package/out/src/storage/methods/ListOutputsSpecOp.js +8 -11
  485. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  486. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js +3 -3
  487. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js.map +1 -1
  488. package/out/src/storage/methods/__test/offsetKey.test.js +1 -1
  489. package/out/src/storage/methods/__test/offsetKey.test.js.map +1 -1
  490. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +83 -0
  491. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  492. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +338 -63
  493. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  494. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  495. package/out/src/storage/methods/createAction.js +251 -274
  496. package/out/src/storage/methods/createAction.js.map +1 -1
  497. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  498. package/out/src/storage/methods/generateChange.js +99 -80
  499. package/out/src/storage/methods/generateChange.js.map +1 -1
  500. package/out/src/storage/methods/getBeefForTransaction.js +15 -13
  501. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  502. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  503. package/out/src/storage/methods/getSyncChunk.js +4 -3
  504. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  505. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  506. package/out/src/storage/methods/internalizeAction.js +213 -56
  507. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  508. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  509. package/out/src/storage/methods/listActionsIdb.js +85 -110
  510. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  511. package/out/src/storage/methods/listActionsKnex.d.ts +50 -1
  512. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
  513. package/out/src/storage/methods/listActionsKnex.js +256 -169
  514. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  515. package/out/src/storage/methods/listCertificates.d.ts +1 -1
  516. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  517. package/out/src/storage/methods/listCertificates.js +7 -7
  518. package/out/src/storage/methods/listCertificates.js.map +1 -1
  519. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  520. package/out/src/storage/methods/listOutputsIdb.js +24 -27
  521. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  522. package/out/src/storage/methods/listOutputsKnex.d.ts +1 -1
  523. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  524. package/out/src/storage/methods/listOutputsKnex.js +78 -32
  525. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  526. package/out/src/storage/methods/offsetKey.d.ts +1 -1
  527. package/out/src/storage/methods/offsetKey.d.ts.map +1 -1
  528. package/out/src/storage/methods/offsetKey.js +3 -5
  529. package/out/src/storage/methods/offsetKey.js.map +1 -1
  530. package/out/src/storage/methods/processAction.d.ts +0 -11
  531. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  532. package/out/src/storage/methods/processAction.js +168 -93
  533. package/out/src/storage/methods/processAction.js.map +1 -1
  534. package/out/src/storage/methods/purgeData.d.ts +1 -1
  535. package/out/src/storage/methods/purgeData.d.ts.map +1 -1
  536. package/out/src/storage/methods/purgeData.js +54 -27
  537. package/out/src/storage/methods/purgeData.js.map +1 -1
  538. package/out/src/storage/methods/purgeDataIdb.d.ts.map +1 -1
  539. package/out/src/storage/methods/purgeDataIdb.js +1 -1
  540. package/out/src/storage/methods/purgeDataIdb.js.map +1 -1
  541. package/out/src/storage/methods/reviewStatus.d.ts +1 -1
  542. package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
  543. package/out/src/storage/methods/reviewStatus.js +35 -18
  544. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  545. package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
  546. package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
  547. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  548. package/out/src/storage/methods/utils.Buffer.d.ts.map +1 -1
  549. package/out/src/storage/methods/utils.Buffer.js.map +1 -1
  550. package/out/src/storage/methods/utils.d.ts.map +1 -1
  551. package/out/src/storage/methods/utils.js +7 -1
  552. package/out/src/storage/methods/utils.js.map +1 -1
  553. package/out/src/storage/remoting/StorageClient.d.ts +4 -270
  554. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  555. package/out/src/storage/remoting/StorageClient.js +16 -423
  556. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  557. package/out/src/storage/remoting/StorageClientBase.d.ts +289 -0
  558. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -0
  559. package/out/src/storage/remoting/StorageClientBase.js +375 -0
  560. package/out/src/storage/remoting/StorageClientBase.js.map +1 -0
  561. package/out/src/storage/remoting/StorageMobile.d.ts +7 -275
  562. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  563. package/out/src/storage/remoting/StorageMobile.js +12 -421
  564. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  565. package/out/src/storage/remoting/StorageServer.d.ts +11 -8
  566. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  567. package/out/src/storage/remoting/StorageServer.js +51 -102
  568. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  569. package/out/src/storage/remoting/__test/StorageClient.man.test.js +6 -6
  570. package/out/src/storage/remoting/__test/StorageClient.man.test.js.map +1 -1
  571. package/out/src/storage/remoting/__test/StorageClient.test.js +8 -8
  572. package/out/src/storage/remoting/__test/StorageClient.test.js.map +1 -1
  573. package/out/src/storage/remoting/__tests__/entityValidationHelpers.test.d.ts +2 -0
  574. package/out/src/storage/remoting/__tests__/entityValidationHelpers.test.d.ts.map +1 -0
  575. package/out/src/storage/remoting/__tests__/entityValidationHelpers.test.js +268 -0
  576. package/out/src/storage/remoting/__tests__/entityValidationHelpers.test.js.map +1 -0
  577. package/out/src/storage/remoting/entityValidationHelpers.d.ts +29 -0
  578. package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -0
  579. package/out/src/storage/remoting/entityValidationHelpers.js +91 -0
  580. package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -0
  581. package/out/src/storage/schema/KnexMigrations.d.ts +3 -3
  582. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  583. package/out/src/storage/schema/KnexMigrations.js +160 -9
  584. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  585. package/out/src/storage/schema/StorageIdbSchema.d.ts +43 -2
  586. package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
  587. package/out/src/storage/schema/__tests/backfill.runner.test.d.ts +2 -0
  588. package/out/src/storage/schema/__tests/backfill.runner.test.d.ts.map +1 -0
  589. package/out/src/storage/schema/__tests/backfill.runner.test.js +148 -0
  590. package/out/src/storage/schema/__tests/backfill.runner.test.js.map +1 -0
  591. package/out/src/storage/schema/__tests/backfill.test.d.ts +2 -0
  592. package/out/src/storage/schema/__tests/backfill.test.d.ts.map +1 -0
  593. package/out/src/storage/schema/__tests/backfill.test.js +96 -0
  594. package/out/src/storage/schema/__tests/backfill.test.js.map +1 -0
  595. package/out/src/storage/schema/__tests/processingFsm.test.d.ts +2 -0
  596. package/out/src/storage/schema/__tests/processingFsm.test.d.ts.map +1 -0
  597. package/out/src/storage/schema/__tests/processingFsm.test.js +42 -0
  598. package/out/src/storage/schema/__tests/processingFsm.test.js.map +1 -0
  599. package/out/src/storage/schema/__tests/processingFsmLegacyMapping.test.d.ts +2 -0
  600. package/out/src/storage/schema/__tests/processingFsmLegacyMapping.test.d.ts.map +1 -0
  601. package/out/src/storage/schema/__tests/processingFsmLegacyMapping.test.js +82 -0
  602. package/out/src/storage/schema/__tests/processingFsmLegacyMapping.test.js.map +1 -0
  603. package/out/src/storage/schema/__tests/spendabilityRule.test.d.ts +2 -0
  604. package/out/src/storage/schema/__tests/spendabilityRule.test.d.ts.map +1 -0
  605. package/out/src/storage/schema/__tests/spendabilityRule.test.js +29 -0
  606. package/out/src/storage/schema/__tests/spendabilityRule.test.js.map +1 -0
  607. package/out/src/storage/schema/__tests/v7Backfill.runner.test.d.ts +2 -0
  608. package/out/src/storage/schema/__tests/v7Backfill.runner.test.d.ts.map +1 -0
  609. package/out/src/storage/schema/__tests/v7Backfill.runner.test.js +148 -0
  610. package/out/src/storage/schema/__tests/v7Backfill.runner.test.js.map +1 -0
  611. package/out/src/storage/schema/__tests/v7Backfill.test.d.ts +2 -0
  612. package/out/src/storage/schema/__tests/v7Backfill.test.d.ts.map +1 -0
  613. package/out/src/storage/schema/__tests/v7Backfill.test.js +96 -0
  614. package/out/src/storage/schema/__tests/v7Backfill.test.js.map +1 -0
  615. package/out/src/storage/schema/__tests/v7Fsm.test.d.ts +2 -0
  616. package/out/src/storage/schema/__tests/v7Fsm.test.d.ts.map +1 -0
  617. package/out/src/storage/schema/__tests/v7Fsm.test.js +42 -0
  618. package/out/src/storage/schema/__tests/v7Fsm.test.js.map +1 -0
  619. package/out/src/storage/schema/__tests/v7FsmLegacyMapping.test.d.ts +2 -0
  620. package/out/src/storage/schema/__tests/v7FsmLegacyMapping.test.d.ts.map +1 -0
  621. package/out/src/storage/schema/__tests/v7FsmLegacyMapping.test.js +77 -0
  622. package/out/src/storage/schema/__tests/v7FsmLegacyMapping.test.js.map +1 -0
  623. package/out/src/storage/schema/__tests/v7Spendability.test.d.ts +2 -0
  624. package/out/src/storage/schema/__tests/v7Spendability.test.d.ts.map +1 -0
  625. package/out/src/storage/schema/__tests/v7Spendability.test.js +29 -0
  626. package/out/src/storage/schema/__tests/v7Spendability.test.js.map +1 -0
  627. package/out/src/storage/schema/backfill.d.ts +35 -0
  628. package/out/src/storage/schema/backfill.d.ts.map +1 -0
  629. package/out/src/storage/schema/backfill.idb.d.ts +32 -0
  630. package/out/src/storage/schema/backfill.idb.d.ts.map +1 -0
  631. package/out/src/storage/schema/backfill.idb.js +95 -0
  632. package/out/src/storage/schema/backfill.idb.js.map +1 -0
  633. package/out/src/storage/schema/backfill.js +150 -0
  634. package/out/src/storage/schema/backfill.js.map +1 -0
  635. package/out/src/storage/schema/backfill.knex.d.ts +32 -0
  636. package/out/src/storage/schema/backfill.knex.d.ts.map +1 -0
  637. package/out/src/storage/schema/backfill.knex.js +240 -0
  638. package/out/src/storage/schema/backfill.knex.js.map +1 -0
  639. package/out/src/storage/schema/backfill.runner.d.ts +63 -0
  640. package/out/src/storage/schema/backfill.runner.d.ts.map +1 -0
  641. package/out/src/storage/schema/backfill.runner.js +64 -0
  642. package/out/src/storage/schema/backfill.runner.js.map +1 -0
  643. package/out/src/storage/schema/coinbaseMaturityBackfill.d.ts +25 -0
  644. package/out/src/storage/schema/coinbaseMaturityBackfill.d.ts.map +1 -0
  645. package/out/src/storage/schema/coinbaseMaturityBackfill.js +75 -0
  646. package/out/src/storage/schema/coinbaseMaturityBackfill.js.map +1 -0
  647. package/out/src/storage/schema/entities/EntityBase.d.ts.map +1 -1
  648. package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
  649. package/out/src/storage/schema/entities/EntityCertificate.d.ts.map +1 -1
  650. package/out/src/storage/schema/entities/EntityCertificate.js +5 -4
  651. package/out/src/storage/schema/entities/EntityCertificate.js.map +1 -1
  652. package/out/src/storage/schema/entities/EntityCertificateField.d.ts.map +1 -1
  653. package/out/src/storage/schema/entities/EntityCertificateField.js +5 -7
  654. package/out/src/storage/schema/entities/EntityCertificateField.js.map +1 -1
  655. package/out/src/storage/schema/entities/EntityCommission.d.ts.map +1 -1
  656. package/out/src/storage/schema/entities/EntityCommission.js +6 -8
  657. package/out/src/storage/schema/entities/EntityCommission.js.map +1 -1
  658. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  659. package/out/src/storage/schema/entities/EntityOutput.js +21 -24
  660. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  661. package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
  662. package/out/src/storage/schema/entities/EntityOutputBasket.js +6 -6
  663. package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
  664. package/out/src/storage/schema/entities/EntityOutputTag.d.ts.map +1 -1
  665. package/out/src/storage/schema/entities/EntityOutputTag.js +2 -2
  666. package/out/src/storage/schema/entities/EntityOutputTag.js.map +1 -1
  667. package/out/src/storage/schema/entities/EntityOutputTagMap.d.ts.map +1 -1
  668. package/out/src/storage/schema/entities/EntityOutputTagMap.js +4 -6
  669. package/out/src/storage/schema/entities/EntityOutputTagMap.js.map +1 -1
  670. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +3 -3
  671. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  672. package/out/src/storage/schema/entities/EntityProvenTx.js +22 -23
  673. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  674. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts +9 -0
  675. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts.map +1 -1
  676. package/out/src/storage/schema/entities/EntityProvenTxReq.js +116 -68
  677. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  678. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  679. package/out/src/storage/schema/entities/EntitySyncState.js +19 -18
  680. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  681. package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
  682. package/out/src/storage/schema/entities/EntityTransaction.js +25 -26
  683. package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
  684. package/out/src/storage/schema/entities/EntityTxLabel.d.ts.map +1 -1
  685. package/out/src/storage/schema/entities/EntityTxLabel.js +2 -2
  686. package/out/src/storage/schema/entities/EntityTxLabel.js.map +1 -1
  687. package/out/src/storage/schema/entities/EntityTxLabelMap.d.ts.map +1 -1
  688. package/out/src/storage/schema/entities/EntityTxLabelMap.js +4 -6
  689. package/out/src/storage/schema/entities/EntityTxLabelMap.js.map +1 -1
  690. package/out/src/storage/schema/entities/EntityUser.d.ts.map +1 -1
  691. package/out/src/storage/schema/entities/EntityUser.js +3 -3
  692. package/out/src/storage/schema/entities/EntityUser.js.map +1 -1
  693. package/out/src/storage/schema/entities/MergeEntity.d.ts.map +1 -1
  694. package/out/src/storage/schema/entities/MergeEntity.js +6 -6
  695. package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
  696. package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js +1 -1
  697. package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js.map +1 -1
  698. package/out/src/storage/schema/entities/__tests/CertificateTests.test.js.map +1 -1
  699. package/out/src/storage/schema/entities/__tests/CommissionTests.test.js.map +1 -1
  700. package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js +3 -3
  701. package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js.map +1 -1
  702. package/out/src/storage/schema/entities/__tests/OutputTests.test.js +1 -1
  703. package/out/src/storage/schema/entities/__tests/OutputTests.test.js.map +1 -1
  704. package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js +32 -0
  705. package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js.map +1 -1
  706. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js +6 -6
  707. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js.map +1 -1
  708. package/out/src/storage/schema/entities/__tests/TransactionTests.test.js +3 -3
  709. package/out/src/storage/schema/entities/__tests/TransactionTests.test.js.map +1 -1
  710. package/out/src/storage/schema/entities/__tests/stampLogTests.test.js +3 -3
  711. package/out/src/storage/schema/entities/__tests/usersTests.test.js +1 -1
  712. package/out/src/storage/schema/entities/__tests/usersTests.test.js.map +1 -1
  713. package/out/src/storage/schema/monitorLease.d.ts +57 -0
  714. package/out/src/storage/schema/monitorLease.d.ts.map +1 -0
  715. package/out/src/storage/schema/monitorLease.js +101 -0
  716. package/out/src/storage/schema/monitorLease.js.map +1 -0
  717. package/out/src/storage/schema/processingFsm.d.ts +27 -0
  718. package/out/src/storage/schema/processingFsm.d.ts.map +1 -0
  719. package/out/src/storage/schema/processingFsm.js +132 -0
  720. package/out/src/storage/schema/processingFsm.js.map +1 -0
  721. package/out/src/storage/schema/schemaCutover.d.ts +34 -0
  722. package/out/src/storage/schema/schemaCutover.d.ts.map +1 -0
  723. package/out/src/storage/schema/schemaCutover.js +230 -0
  724. package/out/src/storage/schema/schemaCutover.js.map +1 -0
  725. package/out/src/storage/schema/schemaCutoverIdb.d.ts +26 -0
  726. package/out/src/storage/schema/schemaCutoverIdb.d.ts.map +1 -0
  727. package/out/src/storage/schema/schemaCutoverIdb.js +90 -0
  728. package/out/src/storage/schema/schemaCutoverIdb.js.map +1 -0
  729. package/out/src/storage/schema/spendabilityRefresh.d.ts +49 -0
  730. package/out/src/storage/schema/spendabilityRefresh.d.ts.map +1 -0
  731. package/out/src/storage/schema/spendabilityRefresh.js +120 -0
  732. package/out/src/storage/schema/spendabilityRefresh.js.map +1 -0
  733. package/out/src/storage/schema/spendabilityRule.d.ts +45 -0
  734. package/out/src/storage/schema/spendabilityRule.d.ts.map +1 -0
  735. package/out/src/storage/schema/spendabilityRule.js +52 -0
  736. package/out/src/storage/schema/spendabilityRule.js.map +1 -0
  737. package/out/src/storage/schema/tables/TableAction.d.ts +38 -0
  738. package/out/src/storage/schema/tables/TableAction.d.ts.map +1 -0
  739. package/out/src/storage/schema/tables/TableAction.js +3 -0
  740. package/out/src/storage/schema/tables/TableAction.js.map +1 -0
  741. package/out/src/storage/schema/tables/TableCertificate.d.ts +2 -1
  742. package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
  743. package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
  744. package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
  745. package/out/src/storage/schema/tables/TableChainTip.d.ts +17 -0
  746. package/out/src/storage/schema/tables/TableChainTip.d.ts.map +1 -0
  747. package/out/src/storage/schema/tables/TableChainTip.js +3 -0
  748. package/out/src/storage/schema/tables/TableChainTip.js.map +1 -0
  749. package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
  750. package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
  751. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
  752. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
  753. package/out/src/storage/schema/tables/TableMonitorLease.d.ts +23 -0
  754. package/out/src/storage/schema/tables/TableMonitorLease.d.ts.map +1 -0
  755. package/out/src/storage/schema/tables/TableMonitorLease.js +3 -0
  756. package/out/src/storage/schema/tables/TableMonitorLease.js.map +1 -0
  757. package/out/src/storage/schema/tables/TableOutput.d.ts +10 -2
  758. package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
  759. package/out/src/storage/schema/tables/TableOutput.js +1 -1
  760. package/out/src/storage/schema/tables/TableOutput.js.map +1 -1
  761. package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
  762. package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
  763. package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
  764. package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
  765. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
  766. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
  767. package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
  768. package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
  769. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +24 -1
  770. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
  771. package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
  772. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  773. package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
  774. package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
  775. package/out/src/storage/schema/tables/TableTransaction.d.ts +1 -1
  776. package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
  777. package/out/src/storage/schema/tables/TableTransactionNew.d.ts +50 -0
  778. package/out/src/storage/schema/tables/TableTransactionNew.d.ts.map +1 -0
  779. package/out/src/storage/schema/tables/TableTransactionNew.js +3 -0
  780. package/out/src/storage/schema/tables/TableTransactionNew.js.map +1 -0
  781. package/out/src/storage/schema/tables/TableTransactionV7.d.ts +50 -0
  782. package/out/src/storage/schema/tables/TableTransactionV7.d.ts.map +1 -0
  783. package/out/src/storage/schema/tables/TableTransactionV7.js +3 -0
  784. package/out/src/storage/schema/tables/TableTransactionV7.js.map +1 -0
  785. package/out/src/storage/schema/tables/TableTxAudit.d.ts +26 -0
  786. package/out/src/storage/schema/tables/TableTxAudit.d.ts.map +1 -0
  787. package/out/src/storage/schema/tables/TableTxAudit.js +3 -0
  788. package/out/src/storage/schema/tables/TableTxAudit.js.map +1 -0
  789. package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
  790. package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
  791. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
  792. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
  793. package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
  794. package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
  795. package/out/src/storage/schema/tables/index.d.ts +5 -0
  796. package/out/src/storage/schema/tables/index.d.ts.map +1 -1
  797. package/out/src/storage/schema/tables/index.js +5 -0
  798. package/out/src/storage/schema/tables/index.js.map +1 -1
  799. package/out/src/storage/schema/transactionCrud.d.ts +41 -0
  800. package/out/src/storage/schema/transactionCrud.d.ts.map +1 -0
  801. package/out/src/storage/schema/transactionCrud.js +205 -0
  802. package/out/src/storage/schema/transactionCrud.js.map +1 -0
  803. package/out/src/storage/schema/transactionService.d.ts +315 -0
  804. package/out/src/storage/schema/transactionService.d.ts.map +1 -0
  805. package/out/src/storage/schema/transactionService.js +783 -0
  806. package/out/src/storage/schema/transactionService.js.map +1 -0
  807. package/out/src/storage/schema/txAudit.d.ts +33 -0
  808. package/out/src/storage/schema/txAudit.d.ts.map +1 -0
  809. package/out/src/storage/schema/txAudit.js +64 -0
  810. package/out/src/storage/schema/txAudit.js.map +1 -0
  811. package/out/src/storage/schema/v7Backfill.d.ts +35 -0
  812. package/out/src/storage/schema/v7Backfill.d.ts.map +1 -0
  813. package/out/src/storage/schema/v7Backfill.idb.d.ts +32 -0
  814. package/out/src/storage/schema/v7Backfill.idb.d.ts.map +1 -0
  815. package/out/src/storage/schema/v7Backfill.idb.js +95 -0
  816. package/out/src/storage/schema/v7Backfill.idb.js.map +1 -0
  817. package/out/src/storage/schema/v7Backfill.js +150 -0
  818. package/out/src/storage/schema/v7Backfill.js.map +1 -0
  819. package/out/src/storage/schema/v7Backfill.knex.d.ts +32 -0
  820. package/out/src/storage/schema/v7Backfill.knex.d.ts.map +1 -0
  821. package/out/src/storage/schema/v7Backfill.knex.js +240 -0
  822. package/out/src/storage/schema/v7Backfill.knex.js.map +1 -0
  823. package/out/src/storage/schema/v7Backfill.runner.d.ts +63 -0
  824. package/out/src/storage/schema/v7Backfill.runner.d.ts.map +1 -0
  825. package/out/src/storage/schema/v7Backfill.runner.js +64 -0
  826. package/out/src/storage/schema/v7Backfill.runner.js.map +1 -0
  827. package/out/src/storage/schema/v7CoinbaseMaturityBackfill.d.ts +25 -0
  828. package/out/src/storage/schema/v7CoinbaseMaturityBackfill.d.ts.map +1 -0
  829. package/out/src/storage/schema/v7CoinbaseMaturityBackfill.js +75 -0
  830. package/out/src/storage/schema/v7CoinbaseMaturityBackfill.js.map +1 -0
  831. package/out/src/storage/schema/v7Crud.d.ts +41 -0
  832. package/out/src/storage/schema/v7Crud.d.ts.map +1 -0
  833. package/out/src/storage/schema/v7Crud.js +205 -0
  834. package/out/src/storage/schema/v7Crud.js.map +1 -0
  835. package/out/src/storage/schema/v7Cutover.d.ts +34 -0
  836. package/out/src/storage/schema/v7Cutover.d.ts.map +1 -0
  837. package/out/src/storage/schema/v7Cutover.js +223 -0
  838. package/out/src/storage/schema/v7Cutover.js.map +1 -0
  839. package/out/src/storage/schema/v7CutoverIdb.d.ts +26 -0
  840. package/out/src/storage/schema/v7CutoverIdb.d.ts.map +1 -0
  841. package/out/src/storage/schema/v7CutoverIdb.js +90 -0
  842. package/out/src/storage/schema/v7CutoverIdb.js.map +1 -0
  843. package/out/src/storage/schema/v7Fsm.d.ts +27 -0
  844. package/out/src/storage/schema/v7Fsm.d.ts.map +1 -0
  845. package/out/src/storage/schema/v7Fsm.js +124 -0
  846. package/out/src/storage/schema/v7Fsm.js.map +1 -0
  847. package/out/src/storage/schema/v7MonitorLease.d.ts +57 -0
  848. package/out/src/storage/schema/v7MonitorLease.d.ts.map +1 -0
  849. package/out/src/storage/schema/v7MonitorLease.js +101 -0
  850. package/out/src/storage/schema/v7MonitorLease.js.map +1 -0
  851. package/out/src/storage/schema/v7Service.d.ts +305 -0
  852. package/out/src/storage/schema/v7Service.d.ts.map +1 -0
  853. package/out/src/storage/schema/v7Service.js +757 -0
  854. package/out/src/storage/schema/v7Service.js.map +1 -0
  855. package/out/src/storage/schema/v7Spendability.d.ts +45 -0
  856. package/out/src/storage/schema/v7Spendability.d.ts.map +1 -0
  857. package/out/src/storage/schema/v7Spendability.js +52 -0
  858. package/out/src/storage/schema/v7Spendability.js.map +1 -0
  859. package/out/src/storage/schema/v7SpendabilityRefresh.d.ts +49 -0
  860. package/out/src/storage/schema/v7SpendabilityRefresh.d.ts.map +1 -0
  861. package/out/src/storage/schema/v7SpendabilityRefresh.js +111 -0
  862. package/out/src/storage/schema/v7SpendabilityRefresh.js.map +1 -0
  863. package/out/src/storage/schema/v7TxAudit.d.ts +33 -0
  864. package/out/src/storage/schema/v7TxAudit.d.ts.map +1 -0
  865. package/out/src/storage/schema/v7TxAudit.js +64 -0
  866. package/out/src/storage/schema/v7TxAudit.js.map +1 -0
  867. package/out/src/storage/storageProviderHelpers.d.ts +34 -0
  868. package/out/src/storage/storageProviderHelpers.d.ts.map +1 -0
  869. package/out/src/storage/storageProviderHelpers.js +100 -0
  870. package/out/src/storage/storageProviderHelpers.js.map +1 -0
  871. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts +1 -2
  872. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  873. package/out/src/storage/sync/StorageMySQLDojoReader.js +37 -32
  874. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  875. package/out/src/utility/Format.d.ts.map +1 -1
  876. package/out/src/utility/Format.js +11 -9
  877. package/out/src/utility/Format.js.map +1 -1
  878. package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
  879. package/out/src/utility/ScriptTemplateBRC29.js +2 -1
  880. package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
  881. package/out/src/utility/aggregateResults.d.ts +1 -1
  882. package/out/src/utility/aggregateResults.d.ts.map +1 -1
  883. package/out/src/utility/aggregateResults.js +2 -2
  884. package/out/src/utility/aggregateResults.js.map +1 -1
  885. package/out/src/utility/brc114ActionTimeLabels.d.ts +2 -2
  886. package/out/src/utility/brc114ActionTimeLabels.d.ts.map +1 -1
  887. package/out/src/utility/brc114ActionTimeLabels.js +16 -9
  888. package/out/src/utility/brc114ActionTimeLabels.js.map +1 -1
  889. package/out/src/utility/identityUtils.js +1 -1
  890. package/out/src/utility/identityUtils.js.map +1 -1
  891. package/out/src/utility/parseTxScriptOffsets.d.ts +4 -4
  892. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  893. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  894. package/out/src/utility/stampLog.d.ts.map +1 -1
  895. package/out/src/utility/stampLog.js +7 -5
  896. package/out/src/utility/stampLog.js.map +1 -1
  897. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  898. package/out/src/utility/tscProofToMerklePath.js +1 -1
  899. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  900. package/out/src/utility/utilityHelpers.buffer.d.ts +5 -3
  901. package/out/src/utility/utilityHelpers.buffer.d.ts.map +1 -1
  902. package/out/src/utility/utilityHelpers.buffer.js.map +1 -1
  903. package/out/src/utility/utilityHelpers.d.ts +1 -2
  904. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  905. package/out/src/utility/utilityHelpers.js +10 -10
  906. package/out/src/utility/utilityHelpers.js.map +1 -1
  907. package/out/src/utility/utilityHelpers.noBuffer.d.ts +7 -3
  908. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  909. package/out/src/utility/utilityHelpers.noBuffer.js +3 -3
  910. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  911. package/out/src/wab-client/WABClient.d.ts +1 -1
  912. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  913. package/out/src/wab-client/WABClient.js +12 -12
  914. package/out/src/wab-client/WABClient.js.map +1 -1
  915. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  916. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -3
  917. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  918. package/package.json +28 -21
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runSchemaCutover = runSchemaCutover;
4
+ exports.rollbackSchemaCutover = rollbackSchemaCutover;
5
+ const backfill_knex_1 = require("./backfill.knex");
6
+ const backfill_runner_1 = require("./backfill.runner");
7
+ /**
8
+ * §3 Step 6 of PROD_REQ_V7_TS.md — destructive cutover.
9
+ *
10
+ * Renames the legacy `transactions`, `proven_tx_reqs`, and `proven_txs` tables
11
+ * to `*_legacy`, swaps the new-schema `transactions_new` table in as the new
12
+ * canonical `transactions`, and remaps every FK value in `outputs`,
13
+ * `commissions`, and `tx_labels_map` so that downstream storage methods
14
+ * continue to read consistent rows.
15
+ *
16
+ * Not registered as a Knex migration because applying it changes the meaning
17
+ * of table names that legacy storage methods still address. Run it only when
18
+ * the calling application is ready to use the new-schema storage path.
19
+ *
20
+ * Safe to call:
21
+ * - on a populated DB that has not yet been cutover (performs full migration)
22
+ * - on a fresh DB (renames empty tables to match the post-cutover layout)
23
+ * - twice in a row (second call is a no-op via the `transactions_legacy`
24
+ * presence guard)
25
+ *
26
+ * The function is intentionally not wrapped in a Knex transaction: on SQLite
27
+ * we need to toggle the per-connection `legacy_alter_table` pragma between
28
+ * statements, which is incompatible with the deferred-commit semantics
29
+ * Knex uses inside `knex.transaction`.
30
+ */
31
+ async function runSchemaCutover(knex) {
32
+ var _a, _b;
33
+ const dbtype = await determineDBType(knex);
34
+ const isSqlite = dbtype === 'SQLite';
35
+ // Idempotency guard.
36
+ if (await hasTable(knex, 'transactions_legacy'))
37
+ return;
38
+ // Ensure backfill has populated transactions_new / actions before remapping.
39
+ const txCount = await knex('transactions').count({ c: '*' }).first();
40
+ const newTxCount = await knex('transactions_new').count({ c: '*' }).first();
41
+ const hasLegacyData = ((_a = txCount === null || txCount === void 0 ? void 0 : txCount.c) !== null && _a !== void 0 ? _a : 0) > 0;
42
+ const newTxPopulated = ((_b = newTxCount === null || newTxCount === void 0 ? void 0 : newTxCount.c) !== null && _b !== void 0 ? _b : 0) > 0;
43
+ if (hasLegacyData && !newTxPopulated) {
44
+ const driver = new backfill_knex_1.KnexBackfillDriver(knex);
45
+ await (0, backfill_runner_1.runBackfill)(driver);
46
+ }
47
+ // Build mappings legacy.transactionId -> { newTxId, actionId }.
48
+ const txMapRows = hasLegacyData
49
+ ? await knex('transactions as t')
50
+ .join('transactions_new as v', 'v.txid', 't.txid')
51
+ .select(knex.ref('t.transactionId').as('legacyId'), knex.ref('v.transactionId').as('newTxId'))
52
+ : [];
53
+ const actionMapRows = hasLegacyData
54
+ ? await knex('transactions as t')
55
+ .join('transactions_new as v', 'v.txid', 't.txid')
56
+ .join('actions as a', function joinAction() {
57
+ this.on('a.userId', '=', 't.userId').andOn('a.transactionId', '=', 'v.transactionId');
58
+ })
59
+ .select(knex.ref('t.transactionId').as('legacyId'), knex.ref('a.actionId').as('actionId'))
60
+ : [];
61
+ const legacyToNew = new Map(txMapRows.map(r => [r.legacyId, r.newTxId]));
62
+ const legacyToAction = new Map(actionMapRows.map(r => [r.legacyId, r.actionId]));
63
+ await disableFks(knex, isSqlite);
64
+ try {
65
+ // Remap downstream FK values with a temporary offset to dodge collisions
66
+ // with the existing legacy keyspace during partial updates.
67
+ const OFFSET = 1000000000;
68
+ for (const [legacy, newId] of legacyToNew) {
69
+ const shifted = newId + OFFSET;
70
+ await knex('outputs').where({ transactionId: legacy }).update({ transactionId: shifted });
71
+ await knex('outputs').where({ spentBy: legacy }).update({ spentBy: shifted });
72
+ await knex('commissions').where({ transactionId: legacy }).update({ transactionId: shifted });
73
+ }
74
+ await knex('outputs').where('transactionId', '>=', OFFSET).update({
75
+ transactionId: knex.raw('?? - ?', ['transactionId', OFFSET])
76
+ });
77
+ await knex('outputs').where('spentBy', '>=', OFFSET).update({
78
+ spentBy: knex.raw('?? - ?', ['spentBy', OFFSET])
79
+ });
80
+ await knex('commissions').where('transactionId', '>=', OFFSET).update({
81
+ transactionId: knex.raw('?? - ?', ['transactionId', OFFSET])
82
+ });
83
+ for (const [legacy, actionId] of legacyToAction) {
84
+ const shifted = actionId + OFFSET;
85
+ await knex('tx_labels_map').where({ transactionId: legacy }).update({ transactionId: shifted });
86
+ }
87
+ await knex('tx_labels_map').where('transactionId', '>=', OFFSET).update({
88
+ transactionId: knex.raw('?? - ?', ['transactionId', OFFSET])
89
+ });
90
+ // legacy_alter_table = ON suppresses SQLite's automatic FK rewrite on
91
+ // RENAME. We want it ON for the `transactions` rename only (so that the
92
+ // outputs / commissions / tx_labels_map FKs keep pointing at the bare
93
+ // string "transactions" and resolve to the new table after the swap).
94
+ // For `proven_tx_reqs` and `proven_txs`, we want OFF so SQLite rewrites
95
+ // the FK references inside proven_tx_reqs_legacy / transactions_legacy
96
+ // (which target proven_txs) to follow the rename to proven_txs_legacy.
97
+ // Without that rewrite, inserts into proven_tx_reqs_legacy fail because
98
+ // the resolver looks up the bare "proven_txs" string and finds nothing.
99
+ if (isSqlite)
100
+ await knex.raw('PRAGMA legacy_alter_table = ON');
101
+ await knex.schema.renameTable('transactions', 'transactions_legacy');
102
+ if (isSqlite)
103
+ await knex.raw('PRAGMA legacy_alter_table = OFF');
104
+ await knex.schema.renameTable('proven_tx_reqs', 'proven_tx_reqs_legacy');
105
+ await knex.schema.renameTable('proven_txs', 'proven_txs_legacy');
106
+ // OFF (the default modern mode) ensures the rename of `transactions_new`
107
+ // → `transactions` rewrites any FK reference that pointed at the original
108
+ // new-schema name. tx_audit / actions originally targeted `transactions_new`
109
+ // and follow the rename to `transactions` automatically.
110
+ await knex.schema.renameTable('transactions_new', 'transactions');
111
+ await rebuildTxLabelsMap(knex, dbtype);
112
+ }
113
+ finally {
114
+ await enableFks(knex, isSqlite);
115
+ }
116
+ }
117
+ /**
118
+ * Inverse of `runSchemaCutover` for test rollback. Renames `*_legacy` tables back
119
+ * to their canonical names and swaps `transactions` back to `transactions_new`.
120
+ * Does not reverse the FK value remap — call this only when the cutover was
121
+ * applied to seed data that the test no longer needs.
122
+ */
123
+ async function rollbackSchemaCutover(knex) {
124
+ const dbtype = await determineDBType(knex);
125
+ const isSqlite = dbtype === 'SQLite';
126
+ await disableFks(knex, isSqlite);
127
+ try {
128
+ if (isSqlite)
129
+ await knex.raw('PRAGMA legacy_alter_table = ON');
130
+ if (await hasTable(knex, 'transactions')) {
131
+ await knex.schema.renameTable('transactions', 'transactions_new');
132
+ }
133
+ if (await hasTable(knex, 'transactions_legacy')) {
134
+ await knex.schema.renameTable('transactions_legacy', 'transactions');
135
+ }
136
+ if (await hasTable(knex, 'proven_tx_reqs_legacy')) {
137
+ await knex.schema.renameTable('proven_tx_reqs_legacy', 'proven_tx_reqs');
138
+ }
139
+ if (await hasTable(knex, 'proven_txs_legacy')) {
140
+ await knex.schema.renameTable('proven_txs_legacy', 'proven_txs');
141
+ }
142
+ if (isSqlite)
143
+ await knex.raw('PRAGMA legacy_alter_table = OFF');
144
+ }
145
+ finally {
146
+ await enableFks(knex, isSqlite);
147
+ }
148
+ }
149
+ async function determineDBType(knex) {
150
+ var _a, _b, _c;
151
+ // Avoid pulling KnexMigrations' determineDBType to keep this module
152
+ // free of cyclic imports.
153
+ try {
154
+ const r = await knex.raw("SELECT 'MySQL' AS database_type FROM dual");
155
+ const dbtype = (_c = (Array.isArray(r) ? r[0] : (_b = (_a = r.rows) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : r[0])) === null || _c === void 0 ? void 0 : _c.database_type;
156
+ if (dbtype === 'MySQL')
157
+ return 'MySQL';
158
+ }
159
+ catch (e) {
160
+ // fallthrough — SQLite has no `dual` table
161
+ }
162
+ try {
163
+ await knex.raw('SELECT 1');
164
+ return 'SQLite';
165
+ }
166
+ catch (e) {
167
+ throw new Error('Unsupported database engine for schema cutover');
168
+ }
169
+ }
170
+ async function hasTable(knex, name) {
171
+ return await knex.schema.hasTable(name);
172
+ }
173
+ async function disableFks(knex, isSqlite) {
174
+ if (isSqlite) {
175
+ await knex.raw('PRAGMA foreign_keys = OFF');
176
+ }
177
+ else {
178
+ await knex.raw('SET FOREIGN_KEY_CHECKS=0');
179
+ }
180
+ }
181
+ async function enableFks(knex, isSqlite) {
182
+ if (isSqlite) {
183
+ await knex.raw('PRAGMA foreign_keys = ON');
184
+ }
185
+ else {
186
+ await knex.raw('SET FOREIGN_KEY_CHECKS=1');
187
+ }
188
+ }
189
+ async function rebuildTxLabelsMap(knex, dbtype) {
190
+ var _a, _b;
191
+ if (dbtype === 'SQLite') {
192
+ await knex.schema.createTable('tx_labels_map_new', table => {
193
+ table.timestamp('created_at', { precision: 3 }).defaultTo(knex.fn.now()).notNullable();
194
+ table.timestamp('updated_at', { precision: 3 }).defaultTo(knex.fn.now()).notNullable();
195
+ table.integer('txLabelId').unsigned().references('txLabelId').inTable('tx_labels').notNullable();
196
+ table.integer('transactionId').unsigned().references('actionId').inTable('actions').notNullable();
197
+ table.boolean('isDeleted').notNullable().defaultTo(false);
198
+ table.unique(['txLabelId', 'transactionId']);
199
+ });
200
+ await knex.raw('INSERT INTO tx_labels_map_new (created_at, updated_at, txLabelId, transactionId, isDeleted) ' +
201
+ 'SELECT created_at, updated_at, txLabelId, transactionId, isDeleted FROM tx_labels_map');
202
+ await knex.schema.dropTable('tx_labels_map');
203
+ await knex.schema.renameTable('tx_labels_map_new', 'tx_labels_map');
204
+ await knex.schema.alterTable('tx_labels_map', table => {
205
+ table.index('transactionId');
206
+ table.index(['transactionId', 'isDeleted'], 'idx_tx_labels_map_tx_deleted');
207
+ });
208
+ }
209
+ else {
210
+ const dbRow = (await knex.raw('SELECT DATABASE() AS d'))[0];
211
+ const dbName = Array.isArray(dbRow) ? (_a = dbRow[0]) === null || _a === void 0 ? void 0 : _a.d : dbRow === null || dbRow === void 0 ? void 0 : dbRow.d;
212
+ const fkRows = await knex('information_schema.KEY_COLUMN_USAGE')
213
+ .select('CONSTRAINT_NAME')
214
+ .where({
215
+ TABLE_SCHEMA: dbName,
216
+ TABLE_NAME: 'tx_labels_map',
217
+ COLUMN_NAME: 'transactionId'
218
+ })
219
+ .whereNotNull('REFERENCED_TABLE_NAME');
220
+ for (const row of fkRows !== null && fkRows !== void 0 ? fkRows : []) {
221
+ const constraintName = (_b = row.CONSTRAINT_NAME) !== null && _b !== void 0 ? _b : row.constraint_name;
222
+ if (constraintName != null) {
223
+ await knex.raw('ALTER TABLE tx_labels_map DROP FOREIGN KEY `' + constraintName + '`');
224
+ }
225
+ }
226
+ await knex.raw('ALTER TABLE tx_labels_map ADD CONSTRAINT fk_tx_labels_map_action ' +
227
+ 'FOREIGN KEY (transactionId) REFERENCES actions(actionId)');
228
+ }
229
+ }
230
+ //# sourceMappingURL=schemaCutover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaCutover.js","sourceRoot":"","sources":["../../../../src/storage/schema/schemaCutover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { IDBPDatabase } from 'idb';
2
+ import { StorageIdbSchema } from './StorageIdbSchema';
3
+ /**
4
+ * IDB-side schema cutover.
5
+ *
6
+ * IndexedDB has no `RENAME STORE` primitive, and store creation/deletion is
7
+ * only permitted during a version-upgrade transaction. The cutover therefore:
8
+ *
9
+ * 1. Re-opens the database at a higher version, supplying an `upgrade`
10
+ * callback that does the rename via copy-and-delete on the upgrade trx.
11
+ * 2. For each table that needs renaming:
12
+ * a. Read every row from the source store.
13
+ * b. Create the destination store with the same indexes.
14
+ * c. Write rows into the destination store.
15
+ * d. Delete the source store.
16
+ * 3. Returns the upgraded database handle (caller is responsible for
17
+ * closing it).
18
+ *
19
+ * Safe to call twice — the second call sees the post-cutover layout, skips
20
+ * the rename block, and returns without error.
21
+ *
22
+ * `targetVersion` defaults to 2; bump it if the caller already operates on a
23
+ * higher schema version.
24
+ */
25
+ export declare function runIdbSchemaCutover(dbName: string, targetVersion?: number): Promise<IDBPDatabase<StorageIdbSchema>>;
26
+ //# sourceMappingURL=schemaCutoverIdb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaCutoverIdb.d.ts","sourceRoot":"","sources":["../../../../src/storage/schema/schemaCutoverIdb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA2B,MAAM,KAAK,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,aAAa,SAAI,GAChB,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAyDzC"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runIdbSchemaCutover = runIdbSchemaCutover;
4
+ const idb_1 = require("idb");
5
+ /**
6
+ * IDB-side schema cutover.
7
+ *
8
+ * IndexedDB has no `RENAME STORE` primitive, and store creation/deletion is
9
+ * only permitted during a version-upgrade transaction. The cutover therefore:
10
+ *
11
+ * 1. Re-opens the database at a higher version, supplying an `upgrade`
12
+ * callback that does the rename via copy-and-delete on the upgrade trx.
13
+ * 2. For each table that needs renaming:
14
+ * a. Read every row from the source store.
15
+ * b. Create the destination store with the same indexes.
16
+ * c. Write rows into the destination store.
17
+ * d. Delete the source store.
18
+ * 3. Returns the upgraded database handle (caller is responsible for
19
+ * closing it).
20
+ *
21
+ * Safe to call twice — the second call sees the post-cutover layout, skips
22
+ * the rename block, and returns without error.
23
+ *
24
+ * `targetVersion` defaults to 2; bump it if the caller already operates on a
25
+ * higher schema version.
26
+ */
27
+ async function runIdbSchemaCutover(dbName, targetVersion = 2) {
28
+ return await (0, idb_1.openDB)(dbName, targetVersion, {
29
+ async upgrade(db, oldVersion, _newVersion, trx) {
30
+ if (oldVersion >= 2)
31
+ return;
32
+ if (!db.objectStoreNames.contains('transactions_new'))
33
+ return;
34
+ await renameStore(db, trx, 'transactions', 'transactions_legacy', store => {
35
+ store.createIndex('userId', 'userId');
36
+ store.createIndex('status', 'status');
37
+ store.createIndex('status_userId', ['status', 'userId']);
38
+ store.createIndex('provenTxId', 'provenTxId');
39
+ store.createIndex('reference', 'reference', { unique: true });
40
+ });
41
+ await renameStore(db, trx, 'proven_tx_reqs', 'proven_tx_reqs_legacy', store => {
42
+ store.createIndex('provenTxId', 'provenTxId');
43
+ store.createIndex('txid', 'txid', { unique: true });
44
+ store.createIndex('status', 'status');
45
+ store.createIndex('batch', 'batch');
46
+ });
47
+ await renameStore(db, trx, 'proven_txs', 'proven_txs_legacy', store => {
48
+ store.createIndex('txid', 'txid', { unique: true });
49
+ });
50
+ await renameStore(db, trx, 'transactions_new', 'transactions', store => {
51
+ store.createIndex('txid', 'txid', { unique: true });
52
+ store.createIndex('processing', 'processing');
53
+ store.createIndex('batch', 'batch');
54
+ store.createIndex('idempotencyKey', 'idempotencyKey', { unique: true });
55
+ });
56
+ }
57
+ });
58
+ }
59
+ async function renameStore(db, trx, fromName, toName, applyIndexes) {
60
+ if (!db.objectStoreNames.contains(fromName))
61
+ return;
62
+ if (db.objectStoreNames.contains(toName)) {
63
+ // Target already exists — assume a prior partial cutover. Drop the source
64
+ // and continue rather than fail; the application is expected to verify
65
+ // post-cutover state via its own smoke tests before resuming traffic.
66
+ db.deleteObjectStore(fromName);
67
+ return;
68
+ }
69
+ const sourceStore = trx.objectStore(fromName);
70
+ const sourceKeyPath = sourceStore.keyPath;
71
+ const sourceAutoIncrement = sourceStore.autoIncrement;
72
+ const rows = await sourceStore.getAll();
73
+ const keys = await sourceStore.getAllKeys();
74
+ db.deleteObjectStore(fromName);
75
+ const dest = db.createObjectStore(toName, {
76
+ keyPath: sourceKeyPath !== null && sourceKeyPath !== void 0 ? sourceKeyPath : undefined,
77
+ autoIncrement: sourceAutoIncrement
78
+ });
79
+ applyIndexes(dest);
80
+ const destStore = trx.objectStore(toName);
81
+ for (let i = 0; i < rows.length; i++) {
82
+ if (sourceAutoIncrement || sourceKeyPath != null) {
83
+ await destStore.put(rows[i]);
84
+ }
85
+ else {
86
+ await destStore.put(rows[i], keys[i]);
87
+ }
88
+ }
89
+ }
90
+ //# sourceMappingURL=schemaCutoverIdb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaCutoverIdb.js","sourceRoot":"","sources":["../../../../src/storage/schema/schemaCutoverIdb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { Knex } from 'knex';
2
+ import * as sdk from '../../sdk';
3
+ /**
4
+ * Recompute and persist `outputs.spendable` for every output whose current
5
+ * cached value disagrees with the §4 rule.
6
+ *
7
+ * The §4 rule depends on three inputs:
8
+ * - The owning transaction's `processing` state.
9
+ * - Whether the output has been spent.
10
+ * - For coinbase outputs, whether maturity height has been reached on the
11
+ * current chain tip.
12
+ *
13
+ * Strategy: stream outputs joined with their owning transaction's processing
14
+ * state in batches, evaluate the rule per row in JS, and update only rows
15
+ * whose persisted `spendable` flag differs from the freshly-computed value.
16
+ *
17
+ * Returns counts so callers can detect drift and emit metrics.
18
+ */
19
+ export interface RefreshSpendabilityStats {
20
+ examined: number;
21
+ flipped: number;
22
+ }
23
+ export interface RefreshSpendabilityArgs {
24
+ /** Limit to outputs owned by this user. Default: refresh all users. */
25
+ userId?: number;
26
+ /** Reuse a chain tip already fetched by the caller. */
27
+ chainTip?: {
28
+ height: number;
29
+ };
30
+ }
31
+ export declare function refreshOutputsSpendable(knex: Knex, args?: RefreshSpendabilityArgs): Promise<RefreshSpendabilityStats>;
32
+ /**
33
+ * Fast-path counter used by the new-schema hot query in §2.3:
34
+ *
35
+ * SELECT * FROM outputs
36
+ * WHERE user_id = ? AND spendable = true AND basketId = default
37
+ * ORDER BY satoshis DESC LIMIT 100
38
+ *
39
+ * Returns the count of spendable outputs visible to the user in a basket
40
+ * without joining transactions. Used by tests to assert that the cached
41
+ * `outputs.spendable` column stays in sync with processing state.
42
+ */
43
+ export declare function countCachedSpendable(knex: Knex, args: {
44
+ userId: number;
45
+ basketId?: number;
46
+ }): Promise<number>;
47
+ /** Snapshot of every spendable processing state. Mostly informational. */
48
+ export declare function spendableProcessingStates(): readonly sdk.ProcessingStatus[];
49
+ //# sourceMappingURL=spendabilityRefresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spendabilityRefresh.d.ts","sourceRoot":"","sources":["../../../../src/storage/schema/spendabilityRefresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,GAAG,MAAM,WAAW,CAAA;AAOhC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAC9B;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,IAAI,EACV,IAAI,GAAE,uBAA4B,GACjC,OAAO,CAAC,wBAAwB,CAAC,CAkEnC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1C,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,0EAA0E;AAC1E,wBAAgB,yBAAyB,IAAK,SAAS,GAAG,CAAC,gBAAgB,EAAE,CAE5E"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.refreshOutputsSpendable = refreshOutputsSpendable;
37
+ exports.countCachedSpendable = countCachedSpendable;
38
+ exports.spendableProcessingStates = spendableProcessingStates;
39
+ const sdk = __importStar(require("../../sdk"));
40
+ const spendabilityRule_1 = require("./spendabilityRule");
41
+ const REFRESH_BATCH = 500;
42
+ const SPENDABLE_STATES = sdk.ProcessingSpendableStatus.slice();
43
+ async function refreshOutputsSpendable(knex, args = {}) {
44
+ var _a, _b, _c, _d, _e;
45
+ const stats = { examined: 0, flipped: 0 };
46
+ const tip = (_a = args.chainTip) !== null && _a !== void 0 ? _a : (await knex('chain_tip').where({ id: 1 }).first('height'));
47
+ const tipHeight = tip === null || tip === void 0 ? void 0 : tip.height;
48
+ let lastId = 0;
49
+ /* eslint-disable-next-line no-constant-condition */
50
+ while (true) {
51
+ const baseQuery = knex('outputs as o')
52
+ .leftJoin('transactions as t', 't.transactionId', 'o.transactionId')
53
+ .where('o.outputId', '>', lastId)
54
+ .orderBy('o.outputId')
55
+ .limit(REFRESH_BATCH)
56
+ .select(knex.ref('o.outputId').as('outputId'), knex.ref('o.spendable').as('spendable'), knex.ref('o.spentBy').as('spentBy'), knex.ref('o.lockingScript').as('lockingScript'), knex.raw('o.scriptLength as scriptLength'), knex.raw('o.matures_at_height as maturesAtHeight'), knex.ref('t.processing').as('processing'), knex.ref('t.is_coinbase').as('isCoinbase'));
57
+ const rows = args.userId != null
58
+ ? await baseQuery.andWhere('o.userId', args.userId)
59
+ : await baseQuery;
60
+ if (rows.length === 0)
61
+ return stats;
62
+ for (const row of rows) {
63
+ lastId = row.outputId;
64
+ stats.examined += 1;
65
+ // Reorg rule (bsv_wallet_transaction_requirements v1.0 §6):
66
+ // "Reorg: Revert transaction status; preserve the current spendable
67
+ // value of outputs (do not flip to false)."
68
+ // We honor this by skipping refresh while the owning transaction is
69
+ // in the `reorging` state. Whatever spendable value was cached at
70
+ // entry into reorg is preserved until the reorg resolves and the
71
+ // transaction transitions back to a normal state.
72
+ if (row.processing === 'reorging')
73
+ continue;
74
+ const desired = (0, spendabilityRule_1.isOutputSpendable)({
75
+ spentBy: (_b = row.spentBy) !== null && _b !== void 0 ? _b : null,
76
+ // Treat presence of scriptLength as equivalent to presence of
77
+ // locking script — the §4 rule only requires that some locking
78
+ // script exists, not that it has been fetched into memory.
79
+ lockingScript: (_d = ((_c = row.lockingScript) !== null && _c !== void 0 ? _c : null)) !== null && _d !== void 0 ? _d : (row.scriptLength != null ? [0] : null),
80
+ isCoinbase: row.isCoinbase === 1 || row.isCoinbase === true,
81
+ // Read the persisted maturity height from the new outputs column.
82
+ // A null value for a coinbase row means maturity has not been
83
+ // computed yet; the §4 rule treats that as not-yet-mature and
84
+ // refuses spendability until backfill populates the column.
85
+ maturesAtHeight: (_e = row.maturesAtHeight) !== null && _e !== void 0 ? _e : null
86
+ }, { processing: row.processing }, tipHeight != null ? { height: tipHeight } : undefined);
87
+ const current = row.spendable === 1 || row.spendable === true;
88
+ if (current !== desired) {
89
+ await knex('outputs')
90
+ .where({ outputId: row.outputId })
91
+ .update({ spendable: desired });
92
+ stats.flipped += 1;
93
+ }
94
+ }
95
+ }
96
+ }
97
+ /**
98
+ * Fast-path counter used by the new-schema hot query in §2.3:
99
+ *
100
+ * SELECT * FROM outputs
101
+ * WHERE user_id = ? AND spendable = true AND basketId = default
102
+ * ORDER BY satoshis DESC LIMIT 100
103
+ *
104
+ * Returns the count of spendable outputs visible to the user in a basket
105
+ * without joining transactions. Used by tests to assert that the cached
106
+ * `outputs.spendable` column stays in sync with processing state.
107
+ */
108
+ async function countCachedSpendable(knex, args) {
109
+ var _a;
110
+ const q = knex('outputs').where({ userId: args.userId, spendable: true });
111
+ if (args.basketId != null)
112
+ q.andWhere({ basketId: args.basketId });
113
+ const row = await q.count({ c: '*' }).first();
114
+ return (_a = row === null || row === void 0 ? void 0 : row.c) !== null && _a !== void 0 ? _a : 0;
115
+ }
116
+ /** Snapshot of every spendable processing state. Mostly informational. */
117
+ function spendableProcessingStates() {
118
+ return SPENDABLE_STATES;
119
+ }
120
+ //# sourceMappingURL=spendabilityRefresh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spendabilityRefresh.js","sourceRoot":"","sources":["../../../../src/storage/schema/spendabilityRefresh.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import * as sdk from '../../sdk';
2
+ import { TableChainTip, TableOutput, TableTransactionNew } from './tables';
3
+ /**
4
+ * Per-output inputs for the new-schema spendability check.
5
+ *
6
+ * Only the fields needed by §4 of PROD_REQ_V7_TS.md are required; callers are
7
+ * free to pass full rows. `spentBy` is the legacy `outputs.spentBy` column;
8
+ * coinbase fields use the names introduced in §2.3.
9
+ */
10
+ export interface SpendabilityOutputInput {
11
+ spentBy?: number | null;
12
+ lockingScript?: number[] | null;
13
+ isCoinbase?: boolean;
14
+ maturesAtHeight?: number | null;
15
+ }
16
+ export interface SpendabilityTxInput {
17
+ processing: sdk.ProcessingStatus;
18
+ }
19
+ export interface SpendabilityTipInput {
20
+ height: number;
21
+ }
22
+ /**
23
+ * Pure implementation of the §4 spendability rule:
24
+ *
25
+ * ```
26
+ * spendable = (transactions.processing IN ('sent','seen','seen_multi','unconfirmed','confirmed'))
27
+ * AND outputs.spent_by IS NULL
28
+ * AND outputs.locking_script IS NOT NULL
29
+ * AND (NOT outputs.is_coinbase OR outputs.matures_at_height <= chain_tip.height)
30
+ * ```
31
+ *
32
+ * The function never reads from storage — call sites are responsible for
33
+ * loading the matching transaction row and chain tip. This keeps the rule
34
+ * testable in isolation and lets the refresh helpers batch loads efficiently.
35
+ */
36
+ export declare function isOutputSpendable(out: SpendabilityOutputInput, tx: SpendabilityTxInput, tip: SpendabilityTipInput | undefined): boolean;
37
+ /**
38
+ * Convenience wrapper that takes whole table rows and forwards to the pure
39
+ * predicate. Returns `false` when the matching transaction row is missing.
40
+ */
41
+ export declare function isTableOutputSpendable(out: TableOutput & {
42
+ isCoinbase?: boolean;
43
+ maturesAtHeight?: number | null;
44
+ }, tx: TableTransactionNew | undefined, tip: TableChainTip | undefined): boolean;
45
+ //# sourceMappingURL=spendabilityRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spendabilityRule.d.ts","sourceRoot":"","sources":["../../../../src/storage/schema/spendabilityRule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAG1E;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAA;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,uBAAuB,EAC5B,EAAE,EAAE,mBAAmB,EACvB,GAAG,EAAE,oBAAoB,GAAG,SAAS,GACpC,OAAO,CAUT;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,WAAW,GAAG;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC5E,EAAE,EAAE,mBAAmB,GAAG,SAAS,EACnC,GAAG,EAAE,aAAa,GAAG,SAAS,GAC7B,OAAO,CAYT"}