@bsv/wallet-toolbox 2.1.24 → 2.1.26

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 (749) hide show
  1. package/CHANGELOG.md +2 -7
  2. package/docs/client.md +1683 -1111
  3. package/docs/monitor.md +34 -19
  4. package/docs/services.md +303 -279
  5. package/docs/setup.md +24 -24
  6. package/docs/storage.md +864 -199
  7. package/docs/wallet.md +5228 -11040
  8. package/out/src/CWIStyleWalletManager.d.ts +33 -7
  9. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  10. package/out/src/CWIStyleWalletManager.js +281 -313
  11. package/out/src/CWIStyleWalletManager.js.map +1 -1
  12. package/out/src/Setup.d.ts +6 -6
  13. package/out/src/Setup.d.ts.map +1 -1
  14. package/out/src/Setup.js +5 -5
  15. package/out/src/Setup.js.map +1 -1
  16. package/out/src/SetupClient.d.ts +6 -6
  17. package/out/src/SetupClient.d.ts.map +1 -1
  18. package/out/src/SetupClient.js +5 -5
  19. package/out/src/SetupClient.js.map +1 -1
  20. package/out/src/SetupWallet.d.ts.map +1 -1
  21. package/out/src/ShamirWalletManager.d.ts +3 -3
  22. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  23. package/out/src/ShamirWalletManager.js +6 -6
  24. package/out/src/ShamirWalletManager.js.map +1 -1
  25. package/out/src/SimpleWalletManager.d.ts +12 -2
  26. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  27. package/out/src/SimpleWalletManager.js +46 -30
  28. package/out/src/SimpleWalletManager.js.map +1 -1
  29. package/out/src/Wallet.d.ts +1 -1
  30. package/out/src/Wallet.d.ts.map +1 -1
  31. package/out/src/Wallet.js +102 -100
  32. package/out/src/Wallet.js.map +1 -1
  33. package/out/src/WalletAuthenticationManager.d.ts +1 -1
  34. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  35. package/out/src/WalletAuthenticationManager.js +3 -3
  36. package/out/src/WalletAuthenticationManager.js.map +1 -1
  37. package/out/src/WalletLogger.d.ts.map +1 -1
  38. package/out/src/WalletLogger.js +16 -8
  39. package/out/src/WalletLogger.js.map +1 -1
  40. package/out/src/WalletPermissionsManager.d.ts +89 -18
  41. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  42. package/out/src/WalletPermissionsManager.js +656 -870
  43. package/out/src/WalletPermissionsManager.js.map +1 -1
  44. package/out/src/WalletSettingsManager.d.ts +2 -2
  45. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  46. package/out/src/WalletSettingsManager.js.map +1 -1
  47. package/out/src/__tests/CWIStyleWalletManager.test.js +9 -8
  48. package/out/src/__tests/CWIStyleWalletManager.test.js.map +1 -1
  49. package/out/src/__tests/ShamirWalletManager.test.js +4 -0
  50. package/out/src/__tests/ShamirWalletManager.test.js.map +1 -1
  51. package/out/src/__tests/WalletPermissionsManager.callbacks.test.js +9 -17
  52. package/out/src/__tests/WalletPermissionsManager.callbacks.test.js.map +1 -1
  53. package/out/src/__tests/WalletPermissionsManager.checks.test.js +4 -4
  54. package/out/src/__tests/WalletPermissionsManager.checks.test.js.map +1 -1
  55. package/out/src/__tests/WalletPermissionsManager.encryption.test.js +16 -16
  56. package/out/src/__tests/WalletPermissionsManager.encryption.test.js.map +1 -1
  57. package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts +2 -3
  58. package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts.map +1 -1
  59. package/out/src/__tests/WalletPermissionsManager.fixtures.js +12 -22
  60. package/out/src/__tests/WalletPermissionsManager.fixtures.js.map +1 -1
  61. package/out/src/__tests/WalletPermissionsManager.flows.test.js +14 -14
  62. package/out/src/__tests/WalletPermissionsManager.flows.test.js.map +1 -1
  63. package/out/src/__tests/WalletPermissionsManager.initialization.test.js +4 -4
  64. package/out/src/__tests/WalletPermissionsManager.initialization.test.js.map +1 -1
  65. package/out/src/__tests/WalletPermissionsManager.pmodules.test.js +9 -9
  66. package/out/src/__tests/WalletPermissionsManager.pmodules.test.js.map +1 -1
  67. package/out/src/__tests/WalletPermissionsManager.proxying.test.js +6 -5
  68. package/out/src/__tests/WalletPermissionsManager.proxying.test.js.map +1 -1
  69. package/out/src/__tests/WalletPermissionsManager.tokens.test.js +3 -2
  70. package/out/src/__tests/WalletPermissionsManager.tokens.test.js.map +1 -1
  71. package/out/src/entropy/EntropyCollector.d.ts +1 -1
  72. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  73. package/out/src/entropy/EntropyCollector.js +3 -3
  74. package/out/src/entropy/EntropyCollector.js.map +1 -1
  75. package/out/src/fundWalletP2PKH.d.ts +2 -2
  76. package/out/src/fundWalletP2PKH.d.ts.map +1 -1
  77. package/out/src/fundWalletP2PKH.js +11 -10
  78. package/out/src/fundWalletP2PKH.js.map +1 -1
  79. package/out/src/mockchain/MockChainMigrations.d.ts +3 -3
  80. package/out/src/mockchain/MockChainMigrations.d.ts.map +1 -1
  81. package/out/src/mockchain/MockChainMigrations.js.map +1 -1
  82. package/out/src/mockchain/MockChainStorage.d.ts.map +1 -1
  83. package/out/src/mockchain/MockChainStorage.js +8 -8
  84. package/out/src/mockchain/MockChainStorage.js.map +1 -1
  85. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  86. package/out/src/mockchain/MockChainTracker.js +10 -10
  87. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  88. package/out/src/mockchain/MockMiner.d.ts.map +1 -1
  89. package/out/src/mockchain/MockMiner.js +3 -3
  90. package/out/src/mockchain/MockMiner.js.map +1 -1
  91. package/out/src/mockchain/MockServices.d.ts +9 -0
  92. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  93. package/out/src/mockchain/MockServices.js +201 -243
  94. package/out/src/mockchain/MockServices.js.map +1 -1
  95. package/out/src/mockchain/merkleTree.d.ts.map +1 -1
  96. package/out/src/mockchain/merkleTree.js +21 -12
  97. package/out/src/mockchain/merkleTree.js.map +1 -1
  98. package/out/src/monitor/Monitor.d.ts +17 -0
  99. package/out/src/monitor/Monitor.d.ts.map +1 -1
  100. package/out/src/monitor/Monitor.js +63 -80
  101. package/out/src/monitor/Monitor.js.map +1 -1
  102. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  103. package/out/src/monitor/MonitorDaemon.js +29 -30
  104. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  105. package/out/src/monitor/__test/MonitorDaemon.man.test.js.map +1 -1
  106. package/out/src/monitor/tasks/TaskArcSSE.d.ts +2 -2
  107. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  108. package/out/src/monitor/tasks/TaskArcSSE.js +10 -23
  109. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  110. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +2 -2
  111. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  112. package/out/src/monitor/tasks/TaskCheckForProofs.js +28 -16
  113. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  114. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +1 -1
  115. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  116. package/out/src/monitor/tasks/TaskCheckNoSends.js +1 -2
  117. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  118. package/out/src/monitor/tasks/TaskClock.d.ts +1 -1
  119. package/out/src/monitor/tasks/TaskClock.d.ts.map +1 -1
  120. package/out/src/monitor/tasks/TaskClock.js +0 -1
  121. package/out/src/monitor/tasks/TaskClock.js.map +1 -1
  122. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts +1 -1
  123. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  124. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  125. package/out/src/monitor/tasks/TaskMineBlock.d.ts +1 -1
  126. package/out/src/monitor/tasks/TaskMineBlock.d.ts.map +1 -1
  127. package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -1
  128. package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts +1 -1
  129. package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts.map +1 -1
  130. package/out/src/monitor/tasks/TaskMonitorCallHistory.js +1 -1
  131. package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
  132. package/out/src/monitor/tasks/TaskNewHeader.d.ts +2 -2
  133. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  134. package/out/src/monitor/tasks/TaskNewHeader.js +7 -5
  135. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  136. package/out/src/monitor/tasks/TaskPurge.d.ts +1 -1
  137. package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
  138. package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
  139. package/out/src/monitor/tasks/TaskReorg.d.ts +1 -1
  140. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  141. package/out/src/monitor/tasks/TaskReorg.js +2 -2
  142. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  143. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts +1 -1
  144. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  145. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +10 -10
  146. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  147. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +1 -1
  148. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  149. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +2 -2
  150. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  151. package/out/src/monitor/tasks/TaskReviewStatus.d.ts +1 -1
  152. package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
  153. package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
  154. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +1 -1
  155. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  156. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  157. package/out/src/monitor/tasks/TaskSendWaiting.d.ts +1 -1
  158. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  159. package/out/src/monitor/tasks/TaskSendWaiting.js +4 -5
  160. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  161. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts +1 -1
  162. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts.map +1 -1
  163. package/out/src/monitor/tasks/TaskSyncWhenIdle.js +1 -4
  164. package/out/src/monitor/tasks/TaskSyncWhenIdle.js.map +1 -1
  165. package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -1
  166. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  167. package/out/src/monitor/tasks/TaskUnFail.js +13 -15
  168. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  169. package/out/src/monitor/tasks/WalletMonitorTask.d.ts.map +1 -1
  170. package/out/src/monitor/tasks/WalletMonitorTask.js +3 -1
  171. package/out/src/monitor/tasks/WalletMonitorTask.js.map +1 -1
  172. package/out/src/monitor/tasks/__tests/TaskArcSSE.test.js.map +1 -1
  173. package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.js.map +1 -1
  174. package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.js.map +1 -1
  175. package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.js.map +1 -1
  176. package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.js.map +1 -1
  177. package/out/src/sdk/CertOpsWallet.d.ts +3 -3
  178. package/out/src/sdk/CertOpsWallet.d.ts.map +1 -1
  179. package/out/src/sdk/PrivilegedKeyManager.d.ts +3 -3
  180. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  181. package/out/src/sdk/PrivilegedKeyManager.js +32 -24
  182. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  183. package/out/src/sdk/WERR_errors.d.ts.map +1 -1
  184. package/out/src/sdk/WERR_errors.js +5 -5
  185. package/out/src/sdk/WERR_errors.js.map +1 -1
  186. package/out/src/sdk/WalletError.d.ts +1 -1
  187. package/out/src/sdk/WalletError.d.ts.map +1 -1
  188. package/out/src/sdk/WalletError.js +28 -20
  189. package/out/src/sdk/WalletError.js.map +1 -1
  190. package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
  191. package/out/src/sdk/WalletErrorFromJson.js +1 -3
  192. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  193. package/out/src/sdk/WalletServices.interfaces.d.ts +19 -19
  194. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  195. package/out/src/sdk/WalletStorage.interfaces.d.ts +59 -59
  196. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  197. package/out/src/sdk/__test/CertificateLifeCycle.test.js +3 -3
  198. package/out/src/sdk/__test/CertificateLifeCycle.test.js.map +1 -1
  199. package/out/src/sdk/__test/WalletError.test.js +4 -4
  200. package/out/src/sdk/__test/WalletError.test.js.map +1 -1
  201. package/out/src/sdk/types.d.ts +4 -4
  202. package/out/src/sdk/types.d.ts.map +1 -1
  203. package/out/src/sdk/types.js +3 -3
  204. package/out/src/sdk/types.js.map +1 -1
  205. package/out/src/services/ServiceCollection.d.ts +6 -6
  206. package/out/src/services/ServiceCollection.d.ts.map +1 -1
  207. package/out/src/services/ServiceCollection.js +6 -8
  208. package/out/src/services/ServiceCollection.js.map +1 -1
  209. package/out/src/services/Services.d.ts +5 -0
  210. package/out/src/services/Services.d.ts.map +1 -1
  211. package/out/src/services/Services.js +190 -196
  212. package/out/src/services/Services.js.map +1 -1
  213. package/out/src/services/__tests/ARC.man.test.js.map +1 -1
  214. package/out/src/services/__tests/ARC.timeout.man.test.js +3 -3
  215. package/out/src/services/__tests/ARC.timeout.man.test.js.map +1 -1
  216. package/out/src/services/__tests/ArcGorillaPool.man.test.js.map +1 -1
  217. package/out/src/services/__tests/bitrails.test.js +3 -2
  218. package/out/src/services/__tests/bitrails.test.js.map +1 -1
  219. package/out/src/services/__tests/getFiatExchangeRate.test.js.map +1 -1
  220. package/out/src/services/__tests/postBeef.test.js.map +1 -1
  221. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  222. package/out/src/services/chaintracker/BHServiceClient.js +7 -7
  223. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  224. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  225. package/out/src/services/chaintracker/ChaintracksChainTracker.js +5 -5
  226. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  227. package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.js +2 -2
  228. package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.js.map +1 -1
  229. package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.js +1 -1
  230. package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.js.map +1 -1
  231. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts +5 -3
  232. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  233. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  234. package/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts.map +1 -1
  235. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +20 -10
  236. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +228 -221
  238. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  239. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +1 -1
  240. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  241. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +5 -22
  242. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  243. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  244. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +9 -10
  245. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  246. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  247. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +1 -1
  248. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  249. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts +1 -2
  250. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  251. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +3 -3
  252. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  253. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  254. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  255. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  256. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +3 -3
  257. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  258. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  259. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  260. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  261. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +1 -1
  262. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  263. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  264. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +1 -8
  265. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  266. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  267. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +2 -2
  268. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  269. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  270. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  271. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +2 -2
  272. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  273. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +6 -39
  274. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  275. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -3
  276. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  277. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +8 -6
  278. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  279. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js +2 -1
  280. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js.map +1 -1
  281. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.js +4 -3
  282. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.js.map +1 -1
  283. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js +11 -10
  284. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js.map +1 -1
  285. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  286. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +9 -16
  287. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  288. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +3 -3
  289. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  290. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +13 -13
  291. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  292. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  293. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +34 -22
  294. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  295. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  296. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +31 -30
  297. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  298. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +1 -2
  299. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  300. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +25 -22
  301. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  302. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.d.ts.map +1 -1
  303. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.js +0 -21
  304. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.js.map +1 -1
  305. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +2 -2
  306. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  307. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +11 -10
  308. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  309. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js +2 -1
  310. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js.map +1 -1
  311. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js +8 -7
  312. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js.map +1 -1
  313. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.js +6 -5
  314. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.js.map +1 -1
  315. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.js +10 -9
  316. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.js.map +1 -1
  317. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.d.ts +1 -1
  318. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.d.ts.map +1 -1
  319. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.js +14 -17
  320. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.js.map +1 -1
  321. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js +3 -2
  322. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js.map +1 -1
  323. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  324. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js +6 -8
  325. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  326. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  327. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  328. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  329. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  330. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +6 -1
  331. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  332. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +247 -227
  333. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  334. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  335. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +8 -7
  336. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  337. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  338. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +35 -25
  339. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  340. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +5 -5
  341. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  342. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +13 -11
  343. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  344. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +0 -1
  345. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  346. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  347. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +2 -2
  348. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  349. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +13 -13
  350. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  351. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  352. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js +21 -13
  353. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  354. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +2 -2
  355. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  356. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  357. package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.js +11 -11
  358. package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.js.map +1 -1
  359. package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.js +1 -1
  360. package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.js.map +1 -1
  361. package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.js +2 -2
  362. package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.js.map +1 -1
  363. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +1 -1
  364. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  365. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +28 -24
  366. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  367. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts.map +1 -1
  368. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js.map +1 -1
  369. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
  370. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +9 -10
  371. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  372. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  373. package/out/src/services/createDefaultWalletServicesOptions.js +3 -3
  374. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  375. package/out/src/services/providers/ARC.d.ts.map +1 -1
  376. package/out/src/services/providers/ARC.js +7 -14
  377. package/out/src/services/providers/ARC.js.map +1 -1
  378. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  379. package/out/src/services/providers/ArcSSEClient.js +1 -1
  380. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  381. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  382. package/out/src/services/providers/Bitails.js +17 -17
  383. package/out/src/services/providers/Bitails.js.map +1 -1
  384. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  385. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  386. package/out/src/services/providers/WhatsOnChain.d.ts +2 -0
  387. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  388. package/out/src/services/providers/WhatsOnChain.js +109 -233
  389. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  390. package/out/src/services/providers/__tests/ArcSSEClient.test.js.map +1 -1
  391. package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
  392. package/out/src/services/providers/exchangeRates.js +3 -3
  393. package/out/src/services/providers/exchangeRates.js.map +1 -1
  394. package/out/src/services/providers/getBeefForTxid.d.ts +1 -1
  395. package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
  396. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  397. package/out/src/services/providers/whatsOnChainHelpers.d.ts +68 -0
  398. package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -0
  399. package/out/src/services/providers/whatsOnChainHelpers.js +147 -0
  400. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -0
  401. package/out/src/signer/WalletSigner.d.ts.map +1 -1
  402. package/out/src/signer/WalletSigner.js.map +1 -1
  403. package/out/src/signer/methods/acquireDirectCertificate.js +1 -1
  404. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  405. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  406. package/out/src/signer/methods/buildSignableTransaction.js +21 -13
  407. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  408. package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
  409. package/out/src/signer/methods/completeSignedTransaction.js +20 -21
  410. package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
  411. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  412. package/out/src/signer/methods/createAction.js +8 -7
  413. package/out/src/signer/methods/createAction.js.map +1 -1
  414. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  415. package/out/src/signer/methods/internalizeAction.js +8 -6
  416. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  417. package/out/src/signer/methods/proveCertificate.js +1 -1
  418. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  419. package/out/src/signer/methods/signAction.js +8 -10
  420. package/out/src/signer/methods/signAction.js.map +1 -1
  421. package/out/src/storage/StorageIdb.d.ts +16 -1
  422. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  423. package/out/src/storage/StorageIdb.js +578 -1258
  424. package/out/src/storage/StorageIdb.js.map +1 -1
  425. package/out/src/storage/StorageKnex.d.ts +11 -1
  426. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  427. package/out/src/storage/StorageKnex.js +316 -303
  428. package/out/src/storage/StorageKnex.js.map +1 -1
  429. package/out/src/storage/StorageProvider.d.ts +10 -0
  430. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  431. package/out/src/storage/StorageProvider.js +171 -197
  432. package/out/src/storage/StorageProvider.js.map +1 -1
  433. package/out/src/storage/StorageReader.d.ts.map +1 -1
  434. package/out/src/storage/StorageReader.js +14 -13
  435. package/out/src/storage/StorageReader.js.map +1 -1
  436. package/out/src/storage/StorageReaderWriter.d.ts +0 -1
  437. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  438. package/out/src/storage/StorageReaderWriter.js +32 -35
  439. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  440. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  441. package/out/src/storage/StorageSyncReader.js +4 -4
  442. package/out/src/storage/StorageSyncReader.js.map +1 -1
  443. package/out/src/storage/WalletStorageManager.d.ts +3 -0
  444. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  445. package/out/src/storage/WalletStorageManager.js +95 -84
  446. package/out/src/storage/WalletStorageManager.js.map +1 -1
  447. package/out/src/storage/__test/StorageIdb.test.js +1 -1
  448. package/out/src/storage/__test/WalletStorageManager.test.js +1 -1
  449. package/out/src/storage/__test/WalletStorageManager.test.js.map +1 -1
  450. package/out/src/storage/__test/adminStats.man.test.js +1 -1
  451. package/out/src/storage/__test/adminStats.man.test.js.map +1 -1
  452. package/out/src/storage/__test/findStaleMerkleRoots.test.js.map +1 -1
  453. package/out/src/storage/__test/findStaleMerkleRootsKnex.test.js.map +1 -1
  454. package/out/src/storage/__test/getBeefForTransaction.test.js +1 -1
  455. package/out/src/storage/__test/getBeefForTransaction.test.js.map +1 -1
  456. package/out/src/storage/adminServer/adminServer.d.ts +1 -1
  457. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  458. package/out/src/storage/adminServer/adminServer.js +12 -12
  459. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  460. package/out/src/storage/adminServer/adminUi.d.ts.map +1 -1
  461. package/out/src/storage/idbHelpers.d.ts +42 -0
  462. package/out/src/storage/idbHelpers.d.ts.map +1 -0
  463. package/out/src/storage/idbHelpers.js +375 -0
  464. package/out/src/storage/idbHelpers.js.map +1 -0
  465. package/out/src/storage/index.all.d.ts +3 -0
  466. package/out/src/storage/index.all.d.ts.map +1 -1
  467. package/out/src/storage/index.all.js +3 -0
  468. package/out/src/storage/index.all.js.map +1 -1
  469. package/out/src/storage/index.client.d.ts +3 -0
  470. package/out/src/storage/index.client.d.ts.map +1 -1
  471. package/out/src/storage/index.client.js +3 -0
  472. package/out/src/storage/index.client.js.map +1 -1
  473. package/out/src/storage/index.mobile.d.ts +3 -0
  474. package/out/src/storage/index.mobile.d.ts.map +1 -1
  475. package/out/src/storage/index.mobile.js +3 -0
  476. package/out/src/storage/index.mobile.js.map +1 -1
  477. package/out/src/storage/methods/ListActionsSpecOp.d.ts +6 -1
  478. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  479. package/out/src/storage/methods/ListActionsSpecOp.js +28 -2
  480. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  481. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  482. package/out/src/storage/methods/ListOutputsSpecOp.js +8 -11
  483. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  484. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js +3 -3
  485. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js.map +1 -1
  486. package/out/src/storage/methods/__test/offsetKey.test.js +1 -1
  487. package/out/src/storage/methods/__test/offsetKey.test.js.map +1 -1
  488. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +83 -0
  489. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  490. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +224 -61
  491. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  492. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  493. package/out/src/storage/methods/createAction.js +230 -270
  494. package/out/src/storage/methods/createAction.js.map +1 -1
  495. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  496. package/out/src/storage/methods/generateChange.js +99 -80
  497. package/out/src/storage/methods/generateChange.js.map +1 -1
  498. package/out/src/storage/methods/getBeefForTransaction.js +15 -13
  499. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  500. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  501. package/out/src/storage/methods/getSyncChunk.js +4 -3
  502. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  503. package/out/src/storage/methods/internalizeAction.js +41 -51
  504. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  505. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  506. package/out/src/storage/methods/listActionsIdb.js +85 -110
  507. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  508. package/out/src/storage/methods/listActionsKnex.d.ts +1 -1
  509. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
  510. package/out/src/storage/methods/listActionsKnex.js +94 -117
  511. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  512. package/out/src/storage/methods/listCertificates.d.ts +1 -1
  513. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  514. package/out/src/storage/methods/listCertificates.js +7 -7
  515. package/out/src/storage/methods/listCertificates.js.map +1 -1
  516. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  517. package/out/src/storage/methods/listOutputsIdb.js +24 -27
  518. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  519. package/out/src/storage/methods/listOutputsKnex.d.ts +1 -1
  520. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  521. package/out/src/storage/methods/listOutputsKnex.js +27 -28
  522. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  523. package/out/src/storage/methods/offsetKey.d.ts +1 -1
  524. package/out/src/storage/methods/offsetKey.d.ts.map +1 -1
  525. package/out/src/storage/methods/offsetKey.js +3 -5
  526. package/out/src/storage/methods/offsetKey.js.map +1 -1
  527. package/out/src/storage/methods/processAction.d.ts +0 -11
  528. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  529. package/out/src/storage/methods/processAction.js +90 -83
  530. package/out/src/storage/methods/processAction.js.map +1 -1
  531. package/out/src/storage/methods/purgeData.d.ts +1 -1
  532. package/out/src/storage/methods/purgeData.d.ts.map +1 -1
  533. package/out/src/storage/methods/purgeData.js +35 -16
  534. package/out/src/storage/methods/purgeData.js.map +1 -1
  535. package/out/src/storage/methods/purgeDataIdb.d.ts.map +1 -1
  536. package/out/src/storage/methods/purgeDataIdb.js +1 -1
  537. package/out/src/storage/methods/purgeDataIdb.js.map +1 -1
  538. package/out/src/storage/methods/reviewStatus.d.ts +1 -1
  539. package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
  540. package/out/src/storage/methods/reviewStatus.js +20 -12
  541. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  542. package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
  543. package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
  544. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  545. package/out/src/storage/methods/utils.Buffer.d.ts.map +1 -1
  546. package/out/src/storage/methods/utils.Buffer.js.map +1 -1
  547. package/out/src/storage/methods/utils.d.ts.map +1 -1
  548. package/out/src/storage/methods/utils.js +7 -1
  549. package/out/src/storage/methods/utils.js.map +1 -1
  550. package/out/src/storage/portable/index.d.ts +55 -0
  551. package/out/src/storage/portable/index.d.ts.map +1 -0
  552. package/out/src/storage/portable/index.js +830 -0
  553. package/out/src/storage/portable/index.js.map +1 -0
  554. package/out/src/storage/remoting/StorageClient.d.ts +4 -270
  555. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  556. package/out/src/storage/remoting/StorageClient.js +16 -423
  557. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  558. package/out/src/storage/remoting/StorageClientBase.d.ts +289 -0
  559. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -0
  560. package/out/src/storage/remoting/StorageClientBase.js +375 -0
  561. package/out/src/storage/remoting/StorageClientBase.js.map +1 -0
  562. package/out/src/storage/remoting/StorageMobile.d.ts +7 -275
  563. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  564. package/out/src/storage/remoting/StorageMobile.js +12 -421
  565. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  566. package/out/src/storage/remoting/StorageServer.d.ts +11 -8
  567. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  568. package/out/src/storage/remoting/StorageServer.js +51 -102
  569. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  570. package/out/src/storage/remoting/__test/StorageClient.man.test.js +6 -6
  571. package/out/src/storage/remoting/__test/StorageClient.man.test.js.map +1 -1
  572. package/out/src/storage/remoting/__test/StorageClient.test.js +8 -8
  573. package/out/src/storage/remoting/__test/StorageClient.test.js.map +1 -1
  574. package/out/src/storage/remoting/__tests__/entityValidationHelpers.test.d.ts +2 -0
  575. package/out/src/storage/remoting/__tests__/entityValidationHelpers.test.d.ts.map +1 -0
  576. package/out/src/storage/remoting/__tests__/entityValidationHelpers.test.js +268 -0
  577. package/out/src/storage/remoting/__tests__/entityValidationHelpers.test.js.map +1 -0
  578. package/out/src/storage/remoting/entityValidationHelpers.d.ts +29 -0
  579. package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -0
  580. package/out/src/storage/remoting/entityValidationHelpers.js +91 -0
  581. package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -0
  582. package/out/src/storage/schema/KnexMigrations.d.ts +3 -3
  583. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  584. package/out/src/storage/schema/KnexMigrations.js +26 -9
  585. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  586. package/out/src/storage/schema/StorageIdbSchema.d.ts +1 -1
  587. package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
  588. package/out/src/storage/schema/entities/EntityBase.d.ts.map +1 -1
  589. package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
  590. package/out/src/storage/schema/entities/EntityCertificate.d.ts.map +1 -1
  591. package/out/src/storage/schema/entities/EntityCertificate.js +5 -4
  592. package/out/src/storage/schema/entities/EntityCertificate.js.map +1 -1
  593. package/out/src/storage/schema/entities/EntityCertificateField.d.ts.map +1 -1
  594. package/out/src/storage/schema/entities/EntityCertificateField.js +5 -7
  595. package/out/src/storage/schema/entities/EntityCertificateField.js.map +1 -1
  596. package/out/src/storage/schema/entities/EntityCommission.d.ts.map +1 -1
  597. package/out/src/storage/schema/entities/EntityCommission.js +6 -8
  598. package/out/src/storage/schema/entities/EntityCommission.js.map +1 -1
  599. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  600. package/out/src/storage/schema/entities/EntityOutput.js +21 -24
  601. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  602. package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
  603. package/out/src/storage/schema/entities/EntityOutputBasket.js +6 -6
  604. package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
  605. package/out/src/storage/schema/entities/EntityOutputTag.d.ts.map +1 -1
  606. package/out/src/storage/schema/entities/EntityOutputTag.js +2 -2
  607. package/out/src/storage/schema/entities/EntityOutputTag.js.map +1 -1
  608. package/out/src/storage/schema/entities/EntityOutputTagMap.d.ts.map +1 -1
  609. package/out/src/storage/schema/entities/EntityOutputTagMap.js +4 -6
  610. package/out/src/storage/schema/entities/EntityOutputTagMap.js.map +1 -1
  611. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +3 -3
  612. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  613. package/out/src/storage/schema/entities/EntityProvenTx.js +22 -23
  614. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  615. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts +9 -0
  616. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts.map +1 -1
  617. package/out/src/storage/schema/entities/EntityProvenTxReq.js +116 -68
  618. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  619. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  620. package/out/src/storage/schema/entities/EntitySyncState.js +19 -18
  621. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  622. package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
  623. package/out/src/storage/schema/entities/EntityTransaction.js +25 -26
  624. package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
  625. package/out/src/storage/schema/entities/EntityTxLabel.d.ts.map +1 -1
  626. package/out/src/storage/schema/entities/EntityTxLabel.js +2 -2
  627. package/out/src/storage/schema/entities/EntityTxLabel.js.map +1 -1
  628. package/out/src/storage/schema/entities/EntityTxLabelMap.d.ts.map +1 -1
  629. package/out/src/storage/schema/entities/EntityTxLabelMap.js +4 -6
  630. package/out/src/storage/schema/entities/EntityTxLabelMap.js.map +1 -1
  631. package/out/src/storage/schema/entities/EntityUser.d.ts.map +1 -1
  632. package/out/src/storage/schema/entities/EntityUser.js +3 -3
  633. package/out/src/storage/schema/entities/EntityUser.js.map +1 -1
  634. package/out/src/storage/schema/entities/MergeEntity.d.ts.map +1 -1
  635. package/out/src/storage/schema/entities/MergeEntity.js +6 -6
  636. package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
  637. package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js +1 -1
  638. package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js.map +1 -1
  639. package/out/src/storage/schema/entities/__tests/CertificateTests.test.js.map +1 -1
  640. package/out/src/storage/schema/entities/__tests/CommissionTests.test.js.map +1 -1
  641. package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js +3 -3
  642. package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js.map +1 -1
  643. package/out/src/storage/schema/entities/__tests/OutputTests.test.js +1 -1
  644. package/out/src/storage/schema/entities/__tests/OutputTests.test.js.map +1 -1
  645. package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js +32 -0
  646. package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js.map +1 -1
  647. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js +6 -6
  648. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js.map +1 -1
  649. package/out/src/storage/schema/entities/__tests/TransactionTests.test.js +3 -3
  650. package/out/src/storage/schema/entities/__tests/TransactionTests.test.js.map +1 -1
  651. package/out/src/storage/schema/entities/__tests/stampLogTests.test.js +3 -3
  652. package/out/src/storage/schema/entities/__tests/usersTests.test.js +1 -1
  653. package/out/src/storage/schema/entities/__tests/usersTests.test.js.map +1 -1
  654. package/out/src/storage/schema/tables/TableCertificate.d.ts +2 -1
  655. package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
  656. package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
  657. package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
  658. package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
  659. package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
  660. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
  661. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
  662. package/out/src/storage/schema/tables/TableOutput.d.ts +3 -2
  663. package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
  664. package/out/src/storage/schema/tables/TableOutput.js +1 -1
  665. package/out/src/storage/schema/tables/TableOutput.js.map +1 -1
  666. package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
  667. package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
  668. package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
  669. package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
  670. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
  671. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
  672. package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
  673. package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
  674. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +24 -1
  675. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
  676. package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
  677. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  678. package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
  679. package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
  680. package/out/src/storage/schema/tables/TableTransaction.d.ts +1 -1
  681. package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
  682. package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
  683. package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
  684. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
  685. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
  686. package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
  687. package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
  688. package/out/src/storage/storageProviderHelpers.d.ts +34 -0
  689. package/out/src/storage/storageProviderHelpers.d.ts.map +1 -0
  690. package/out/src/storage/storageProviderHelpers.js +100 -0
  691. package/out/src/storage/storageProviderHelpers.js.map +1 -0
  692. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts +1 -2
  693. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  694. package/out/src/storage/sync/StorageMySQLDojoReader.js +37 -32
  695. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  696. package/out/src/utility/Format.d.ts.map +1 -1
  697. package/out/src/utility/Format.js +16 -49
  698. package/out/src/utility/Format.js.map +1 -1
  699. package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
  700. package/out/src/utility/ScriptTemplateBRC29.js +4 -2
  701. package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
  702. package/out/src/utility/aggregateResults.d.ts +1 -1
  703. package/out/src/utility/aggregateResults.d.ts.map +1 -1
  704. package/out/src/utility/aggregateResults.js +2 -2
  705. package/out/src/utility/aggregateResults.js.map +1 -1
  706. package/out/src/utility/brc114ActionTimeLabels.d.ts +2 -2
  707. package/out/src/utility/brc114ActionTimeLabels.d.ts.map +1 -1
  708. package/out/src/utility/brc114ActionTimeLabels.js +17 -10
  709. package/out/src/utility/brc114ActionTimeLabels.js.map +1 -1
  710. package/out/src/utility/identityUtils.d.ts.map +1 -1
  711. package/out/src/utility/identityUtils.js +6 -6
  712. package/out/src/utility/identityUtils.js.map +1 -1
  713. package/out/src/utility/index.all.d.ts +1 -0
  714. package/out/src/utility/index.all.d.ts.map +1 -1
  715. package/out/src/utility/index.all.js +1 -0
  716. package/out/src/utility/index.all.js.map +1 -1
  717. package/out/src/utility/index.client.d.ts +1 -0
  718. package/out/src/utility/index.client.d.ts.map +1 -1
  719. package/out/src/utility/index.client.js +1 -0
  720. package/out/src/utility/index.client.js.map +1 -1
  721. package/out/src/utility/parseTxScriptOffsets.d.ts +4 -4
  722. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  723. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  724. package/out/src/utility/stampLog.d.ts.map +1 -1
  725. package/out/src/utility/stampLog.js +6 -4
  726. package/out/src/utility/stampLog.js.map +1 -1
  727. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  728. package/out/src/utility/tscProofToMerklePath.js +1 -1
  729. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  730. package/out/src/utility/utilityHelpers.buffer.d.ts +5 -3
  731. package/out/src/utility/utilityHelpers.buffer.d.ts.map +1 -1
  732. package/out/src/utility/utilityHelpers.buffer.js +1 -1
  733. package/out/src/utility/utilityHelpers.buffer.js.map +1 -1
  734. package/out/src/utility/utilityHelpers.d.ts +1 -2
  735. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  736. package/out/src/utility/utilityHelpers.js +12 -12
  737. package/out/src/utility/utilityHelpers.js.map +1 -1
  738. package/out/src/utility/utilityHelpers.noBuffer.d.ts +7 -3
  739. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  740. package/out/src/utility/utilityHelpers.noBuffer.js +3 -3
  741. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  742. package/out/src/wab-client/WABClient.d.ts +3 -3
  743. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  744. package/out/src/wab-client/WABClient.js +12 -12
  745. package/out/src/wab-client/WABClient.js.map +1 -1
  746. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  747. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -3
  748. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  749. package/package.json +24 -20
@@ -0,0 +1,830 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/triple-slash-reference */
3
+ /// <reference path="../../types/bsv-sdk-aesgcm.d.ts" />
4
+ /* eslint-enable @typescript-eslint/triple-slash-reference */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.exportBRC38 = exportBRC38;
7
+ exports.exportBRC38Json = exportBRC38Json;
8
+ exports.parseBRC38Json = parseBRC38Json;
9
+ exports.importBRC38 = importBRC38;
10
+ exports.exportBRC39 = exportBRC39;
11
+ exports.importBRC39 = importBRC39;
12
+ exports.encryptBRC39 = encryptBRC39;
13
+ exports.decryptBRC39 = decryptBRC39;
14
+ const sdk_1 = require("@bsv/sdk");
15
+ const AESGCM_1 = require("@bsv/sdk/primitives/AESGCM");
16
+ const hash_wasm_1 = require("hash-wasm");
17
+ const EntityBase_1 = require("../schema/entities/EntityBase");
18
+ const utilityHelpers_1 = require("../../utility/utilityHelpers");
19
+ const BRC38_TITLE = 'User Wallet Data Format';
20
+ const BRC39_MAGIC = [0x57, 0x44, 0x41, 0x54]; // WDAT
21
+ const BRC39_HEADER_LENGTH = 33;
22
+ const BRC39_TAG_LENGTH = 16;
23
+ const BRC39_DEFAULT_ITERATIONS = 7;
24
+ const BRC39_DEFAULT_MEMORY_KIB = 131072;
25
+ const BRC39_DEFAULT_PARALLELISM = 1;
26
+ const BRC39_HASH_LENGTH = 32;
27
+ const BRC39_SALT_LENGTH = 32;
28
+ const BRC39_NONCE_LENGTH = 32;
29
+ const tableNames = [
30
+ 'provenTxs',
31
+ 'provenTxReqs',
32
+ 'outputBaskets',
33
+ 'transactions',
34
+ 'commissions',
35
+ 'outputs',
36
+ 'outputTags',
37
+ 'outputTagMaps',
38
+ 'txLabels',
39
+ 'txLabelMaps',
40
+ 'certificates',
41
+ 'certificateFields',
42
+ 'syncStates'
43
+ ];
44
+ const SYNC_CHUNK_ENTITY_ORDER = [
45
+ 'provenTx',
46
+ 'outputBasket',
47
+ 'outputTag',
48
+ 'txLabel',
49
+ 'transaction',
50
+ 'output',
51
+ 'txLabelMap',
52
+ 'outputTagMap',
53
+ 'certificate',
54
+ 'certificateField',
55
+ 'commission',
56
+ 'provenTxReq'
57
+ ];
58
+ const binaryFieldsByKind = {
59
+ commission: ['lockingScript'],
60
+ output: ['lockingScript'],
61
+ provenTx: ['merklePath', 'rawTx'],
62
+ provenTxReq: ['rawTx', 'inputBEEF'],
63
+ transaction: ['inputBEEF', 'rawTx']
64
+ };
65
+ const jsonFieldsByKind = {
66
+ provenTxReq: ['history', 'notify'],
67
+ syncState: ['syncMap', 'errorLocal', 'errorOther']
68
+ };
69
+ const dateFieldsByKind = {
70
+ settings: ['created_at', 'updated_at'],
71
+ user: ['created_at', 'updated_at'],
72
+ provenTx: ['created_at', 'updated_at'],
73
+ provenTxReq: ['created_at', 'updated_at'],
74
+ outputBasket: ['created_at', 'updated_at'],
75
+ transaction: ['created_at', 'updated_at'],
76
+ commission: ['created_at', 'updated_at'],
77
+ output: ['created_at', 'updated_at'],
78
+ outputTag: ['created_at', 'updated_at'],
79
+ outputTagMap: ['created_at', 'updated_at'],
80
+ txLabel: ['created_at', 'updated_at'],
81
+ txLabelMap: ['created_at', 'updated_at'],
82
+ certificate: ['created_at', 'updated_at'],
83
+ certificateField: ['created_at', 'updated_at'],
84
+ syncState: ['created_at', 'updated_at', 'when']
85
+ };
86
+ async function exportBRC38(storage, identityKey) {
87
+ const sourceStorage = await storage.makeAvailable();
88
+ const user = (0, utilityHelpers_1.verifyTruthy)(await storage.findUserByIdentityKey(identityKey));
89
+ const userId = user.userId;
90
+ const transactions = await storage.findTransactions({ partial: { userId } });
91
+ const transactionIds = new Set(transactions.map(t => t.transactionId));
92
+ const transactionTxids = new Set(transactions.map(t => t.txid).filter((txid) => txid != null));
93
+ const provenTxReqs = (await storage.getProvenTxReqsForUser({ userId })).filter(r => transactionTxids.has(r.txid));
94
+ const provenTxIds = new Set();
95
+ for (const tx of transactions)
96
+ if (tx.provenTxId != null)
97
+ provenTxIds.add(tx.provenTxId);
98
+ for (const req of provenTxReqs)
99
+ if (req.provenTxId != null)
100
+ provenTxIds.add(req.provenTxId);
101
+ const provenTxs = [];
102
+ for (const provenTxId of Array.from(provenTxIds).sort(compareNumber)) {
103
+ const proven = (0, utilityHelpers_1.verifyOneOrNone)(await storage.findProvenTxs({ partial: { provenTxId } }));
104
+ if (proven != null)
105
+ provenTxs.push(proven);
106
+ }
107
+ const outputBaskets = await storage.findOutputBaskets({ partial: { userId } });
108
+ const commissions = await storage.findCommissions({ partial: { userId } });
109
+ const outputs = await storage.findOutputs({ partial: { userId } });
110
+ const outputTags = await storage.findOutputTags({ partial: { userId } });
111
+ const outputTagMaps = (await storage.getOutputTagMapsForUser({ userId }))
112
+ .filter(m => outputs.some(o => o.outputId === m.outputId));
113
+ const txLabels = await storage.findTxLabels({ partial: { userId } });
114
+ const txLabelMaps = (await storage.getTxLabelMapsForUser({ userId }))
115
+ .filter(m => transactionIds.has(m.transactionId));
116
+ const certificates = await storage.findCertificates({ partial: { userId } });
117
+ const certificateFields = await storage.findCertificateFields({ partial: { userId } });
118
+ const syncStates = await storage.findSyncStates({ partial: { userId } });
119
+ const data = {
120
+ brc: 38,
121
+ title: BRC38_TITLE,
122
+ formatVersion: 1,
123
+ exportedAt: isoDate(new Date()),
124
+ sourceStorage: portableRow('settings', sourceStorage),
125
+ user: portableRow('user', user),
126
+ tables: {
127
+ provenTxs: provenTxs.map(r => portableRow('provenTx', r)),
128
+ provenTxReqs: provenTxReqs.map(r => portableRow('provenTxReq', r)),
129
+ outputBaskets: outputBaskets.map(r => portableRow('outputBasket', r)),
130
+ transactions: transactions.map(r => portableRow('transaction', r)),
131
+ commissions: commissions.map(r => portableRow('commission', r)),
132
+ outputs: outputs.map(r => portableRow('output', r)),
133
+ outputTags: outputTags.map(r => portableRow('outputTag', r)),
134
+ outputTagMaps: outputTagMaps.map(r => portableRow('outputTagMap', r)),
135
+ txLabels: txLabels.map(r => portableRow('txLabel', r)),
136
+ txLabelMaps: txLabelMaps.map(r => portableRow('txLabelMap', r)),
137
+ certificates: certificates.map(r => {
138
+ const row = portableRow('certificate', r);
139
+ delete row.fields;
140
+ return row;
141
+ }),
142
+ certificateFields: certificateFields.map(r => portableRow('certificateField', r)),
143
+ syncStates: syncStates.map(r => portableRow('syncState', r))
144
+ }
145
+ };
146
+ sortBRC38Tables(data.tables);
147
+ validateBRC38(data);
148
+ return data;
149
+ }
150
+ async function exportBRC38Json(storage, identityKey) {
151
+ return canonicalize(await exportBRC38(storage, identityKey));
152
+ }
153
+ function parseBRC38Json(json) {
154
+ let data;
155
+ try {
156
+ data = JSON.parse(json);
157
+ }
158
+ catch (e) {
159
+ throw new Error(`Invalid BRC-38 JSON: ${e.message}`);
160
+ }
161
+ return validateBRC38(data);
162
+ }
163
+ async function importBRC38(storage, documentOrJson, options) {
164
+ const data = typeof documentOrJson === 'string' ? parseBRC38Json(documentOrJson) : validateBRC38(documentOrJson);
165
+ const targetSettings = await storage.makeAvailable();
166
+ const decoded = decodeBRC38(data);
167
+ if (decoded.sourceStorage.chain !== targetSettings.chain) {
168
+ throw new Error(`BRC-38 chain mismatch: payload is ${decoded.sourceStorage.chain}, target is ${targetSettings.chain}`);
169
+ }
170
+ if (options.mode === 'restore')
171
+ return await restoreBRC38(storage, decoded);
172
+ if (options.mode === 'merge')
173
+ return await mergeBRC38(storage, decoded, targetSettings);
174
+ throw new Error(`Unsupported BRC-38 import mode: ${String(options.mode)}`);
175
+ }
176
+ async function exportBRC39(storage, identityKey, password, options) {
177
+ return await encryptBRC39(await exportBRC38(storage, identityKey), password, options);
178
+ }
179
+ async function importBRC39(storage, bytes, password, options) {
180
+ return await importBRC38(storage, await decryptBRC39(bytes, password), options);
181
+ }
182
+ async function encryptBRC39(documentOrJson, password, options) {
183
+ var _a, _b, _c;
184
+ const data = typeof documentOrJson === 'string' ? parseBRC38Json(documentOrJson) : validateBRC38(documentOrJson);
185
+ const plaintext = new Uint8Array(sdk_1.Utils.toArray(canonicalize(data), 'utf8'));
186
+ const salt = new Uint8Array((0, sdk_1.Random)(BRC39_SALT_LENGTH));
187
+ const nonce = new Uint8Array((0, sdk_1.Random)(BRC39_NONCE_LENGTH));
188
+ const iterations = (_a = options === null || options === void 0 ? void 0 : options.iterations) !== null && _a !== void 0 ? _a : BRC39_DEFAULT_ITERATIONS;
189
+ const memoryKiB = (_b = options === null || options === void 0 ? void 0 : options.memoryKiB) !== null && _b !== void 0 ? _b : BRC39_DEFAULT_MEMORY_KIB;
190
+ const parallelism = (_c = options === null || options === void 0 ? void 0 : options.parallelism) !== null && _c !== void 0 ? _c : BRC39_DEFAULT_PARALLELISM;
191
+ validateKdfParams(iterations, memoryKiB, parallelism, BRC39_HASH_LENGTH);
192
+ validateExportKdfParams(iterations, memoryKiB);
193
+ const key = await deriveBRC39Key(password, salt, iterations, memoryKiB, parallelism);
194
+ const { result, authenticationTag } = (0, AESGCM_1.AESGCM)(plaintext, nonce, key);
195
+ const header = new Uint8Array(BRC39_HEADER_LENGTH + salt.length + nonce.length);
196
+ header.set(BRC39_MAGIC, 0);
197
+ header[4] = 1;
198
+ header[5] = 1;
199
+ header[6] = 38;
200
+ header[7] = 1;
201
+ header[8] = 0;
202
+ header[9] = salt.length;
203
+ header[10] = nonce.length;
204
+ writeUInt32BE(header, 11, iterations);
205
+ writeUInt32BE(header, 15, memoryKiB);
206
+ header[19] = parallelism;
207
+ header[20] = BRC39_HASH_LENGTH;
208
+ header.set(salt, BRC39_HEADER_LENGTH);
209
+ header.set(nonce, BRC39_HEADER_LENGTH + salt.length);
210
+ return Array.from(concatBytes(header, result, authenticationTag));
211
+ }
212
+ async function decryptBRC39(bytes, password) {
213
+ const file = new Uint8Array(bytes);
214
+ if (file.length < BRC39_HEADER_LENGTH + BRC39_TAG_LENGTH + 2)
215
+ throw new Error('Invalid BRC-39 file: too short');
216
+ for (let i = 0; i < BRC39_MAGIC.length; i++) {
217
+ if (file[i] !== BRC39_MAGIC[i])
218
+ throw new Error('Invalid BRC-39 file: bad magic');
219
+ }
220
+ if (file[4] !== 1)
221
+ throw new Error('Unsupported BRC-39 format version');
222
+ if (file[5] !== 1)
223
+ throw new Error('Unsupported BRC-39 protector type');
224
+ if (file[6] !== 38)
225
+ throw new Error('Unsupported BRC-39 inner format');
226
+ if (file[7] !== 1)
227
+ throw new Error('Unsupported BRC-39 KDF type');
228
+ if (file[8] !== 0)
229
+ throw new Error('Invalid BRC-39 flags');
230
+ const saltLength = file[9];
231
+ const nonceLength = file[10];
232
+ const iterations = readUInt32BE(file, 11);
233
+ const memoryKiB = readUInt32BE(file, 15);
234
+ const parallelism = file[19];
235
+ const hashLength = file[20];
236
+ for (let i = 21; i < BRC39_HEADER_LENGTH; i++) {
237
+ if (file[i] !== 0)
238
+ throw new Error('Invalid BRC-39 reserved bytes');
239
+ }
240
+ if (saltLength === 0)
241
+ throw new Error('Invalid BRC-39 salt length');
242
+ if (nonceLength === 0)
243
+ throw new Error('Invalid BRC-39 nonce length');
244
+ validateKdfParams(iterations, memoryKiB, parallelism, hashLength);
245
+ const payloadStart = BRC39_HEADER_LENGTH + saltLength + nonceLength;
246
+ if (file.length <= payloadStart + BRC39_TAG_LENGTH)
247
+ throw new Error('Invalid BRC-39 ciphertext');
248
+ const salt = file.slice(BRC39_HEADER_LENGTH, BRC39_HEADER_LENGTH + saltLength);
249
+ const nonce = file.slice(BRC39_HEADER_LENGTH + saltLength, payloadStart);
250
+ const ciphertext = file.slice(payloadStart, file.length - BRC39_TAG_LENGTH);
251
+ const tag = file.slice(file.length - BRC39_TAG_LENGTH);
252
+ const key = await deriveBRC39Key(password, salt, iterations, memoryKiB, parallelism);
253
+ const plaintext = (0, AESGCM_1.AESGCMDecrypt)(ciphertext, nonce, tag, key);
254
+ if (plaintext == null)
255
+ throw new Error('BRC-39 authentication failed');
256
+ return parseBRC38Json(sdk_1.Utils.toUTF8(Array.from(plaintext)));
257
+ }
258
+ function validateBRC38(value) {
259
+ rejectNulls(value, 'document');
260
+ if (!isObject(value))
261
+ throw new Error('BRC-38 document must be an object');
262
+ const data = value;
263
+ if (data.brc !== 38)
264
+ throw new Error('BRC-38 document brc must equal 38');
265
+ if (data.title !== BRC38_TITLE)
266
+ throw new Error('BRC-38 title must equal User Wallet Data Format');
267
+ if (data.formatVersion !== 1)
268
+ throw new Error('BRC-38 formatVersion must equal 1');
269
+ assertIsoDate(data.exportedAt, 'exportedAt');
270
+ if (!isObject(data.sourceStorage))
271
+ throw new Error('BRC-38 sourceStorage must be an object');
272
+ if (!isObject(data.user))
273
+ throw new Error('BRC-38 user must be an object');
274
+ if (!isObject(data.tables))
275
+ throw new Error('BRC-38 tables must be an object');
276
+ for (const name of tableNames) {
277
+ if (!Array.isArray(data.tables[name]))
278
+ throw new Error(`BRC-38 tables.${name} must be an array`);
279
+ }
280
+ validatePortableRows('settings', [data.sourceStorage], 'sourceStorage');
281
+ validatePortableRows('user', [data.user], 'user');
282
+ validatePortableRows('provenTx', data.tables.provenTxs, 'provenTxs');
283
+ validatePortableRows('provenTxReq', data.tables.provenTxReqs, 'provenTxReqs');
284
+ validatePortableRows('outputBasket', data.tables.outputBaskets, 'outputBaskets');
285
+ validatePortableRows('transaction', data.tables.transactions, 'transactions');
286
+ validatePortableRows('commission', data.tables.commissions, 'commissions');
287
+ validatePortableRows('output', data.tables.outputs, 'outputs');
288
+ validatePortableRows('outputTag', data.tables.outputTags, 'outputTags');
289
+ validatePortableRows('outputTagMap', data.tables.outputTagMaps, 'outputTagMaps');
290
+ validatePortableRows('txLabel', data.tables.txLabels, 'txLabels');
291
+ validatePortableRows('txLabelMap', data.tables.txLabelMaps, 'txLabelMaps');
292
+ validatePortableRows('certificate', data.tables.certificates, 'certificates');
293
+ validatePortableRows('certificateField', data.tables.certificateFields, 'certificateFields');
294
+ validatePortableRows('syncState', data.tables.syncStates, 'syncStates');
295
+ validateRelationships(data);
296
+ return data;
297
+ }
298
+ function decodeBRC38(data) {
299
+ return {
300
+ sourceStorage: fromPortableRow('settings', data.sourceStorage),
301
+ user: fromPortableRow('user', data.user),
302
+ provenTxs: data.tables.provenTxs.map(r => fromPortableRow('provenTx', r)),
303
+ provenTxReqs: data.tables.provenTxReqs.map(r => fromPortableRow('provenTxReq', r)),
304
+ outputBaskets: data.tables.outputBaskets.map(r => fromPortableRow('outputBasket', r)),
305
+ transactions: data.tables.transactions.map(r => fromPortableRow('transaction', r)),
306
+ commissions: data.tables.commissions.map(r => fromPortableRow('commission', r)),
307
+ outputs: data.tables.outputs.map(r => fromPortableRow('output', r)),
308
+ outputTags: data.tables.outputTags.map(r => fromPortableRow('outputTag', r)),
309
+ outputTagMaps: data.tables.outputTagMaps.map(r => fromPortableRow('outputTagMap', r)),
310
+ txLabels: data.tables.txLabels.map(r => fromPortableRow('txLabel', r)),
311
+ txLabelMaps: data.tables.txLabelMaps.map(r => fromPortableRow('txLabelMap', r)),
312
+ certificates: data.tables.certificates.map(r => fromPortableRow('certificate', r)),
313
+ certificateFields: data.tables.certificateFields.map(r => fromPortableRow('certificateField', r)),
314
+ syncStates: data.tables.syncStates.map(r => fromPortableRow('syncState', r))
315
+ };
316
+ }
317
+ async function restoreBRC38(storage, data) {
318
+ await assertRestoreTargetEmpty(storage);
319
+ await storage.transaction(async (trx) => {
320
+ await storage.insertUser({ ...data.user }, trx);
321
+ for (const row of data.provenTxs)
322
+ await storage.insertProvenTx({ ...row }, trx);
323
+ for (const row of data.outputBaskets)
324
+ await storage.insertOutputBasket({ ...row }, trx);
325
+ for (const row of data.outputTags)
326
+ await storage.insertOutputTag({ ...row }, trx);
327
+ for (const row of data.txLabels)
328
+ await storage.insertTxLabel({ ...row }, trx);
329
+ for (const row of data.transactions)
330
+ await storage.insertTransaction({ ...row }, trx);
331
+ for (const row of data.outputs)
332
+ await storage.insertOutput({ ...row }, trx);
333
+ for (const row of data.txLabelMaps)
334
+ await storage.insertTxLabelMap({ ...row }, trx);
335
+ for (const row of data.outputTagMaps)
336
+ await storage.insertOutputTagMap({ ...row }, trx);
337
+ for (const row of data.certificates)
338
+ await storage.insertCertificate({ ...row }, trx);
339
+ for (const row of data.certificateFields)
340
+ await storage.insertCertificateField({ ...row }, trx);
341
+ for (const row of data.commissions)
342
+ await storage.insertCommission({ ...row }, trx);
343
+ for (const row of data.provenTxReqs)
344
+ await storage.insertProvenTxReq({ ...row }, trx);
345
+ for (const row of data.syncStates)
346
+ await storage.insertSyncState({ ...row }, trx);
347
+ });
348
+ return {
349
+ mode: 'restore',
350
+ identityKey: data.user.identityKey,
351
+ userId: data.user.userId,
352
+ inserts: 1 + countDecodedRows(data),
353
+ updates: 0
354
+ };
355
+ }
356
+ async function mergeBRC38(storage, data, targetSettings) {
357
+ const { user: targetUser } = await storage.findOrInsertUser(data.user.identityKey);
358
+ await storage.findOrInsertSyncStateAuth({ identityKey: data.user.identityKey, userId: targetUser.userId }, data.sourceStorage.storageIdentityKey, data.sourceStorage.storageName);
359
+ const chunk = {
360
+ fromStorageIdentityKey: data.sourceStorage.storageIdentityKey,
361
+ toStorageIdentityKey: targetSettings.storageIdentityKey,
362
+ userIdentityKey: data.user.identityKey,
363
+ user: { ...data.user, activeStorage: targetUser.activeStorage },
364
+ provenTxs: data.provenTxs.map(r => ({ ...r })),
365
+ outputBaskets: data.outputBaskets.map(r => ({ ...r })),
366
+ outputTags: data.outputTags.map(r => ({ ...r })),
367
+ txLabels: data.txLabels.map(r => ({ ...r })),
368
+ transactions: data.transactions.map(r => ({ ...r })),
369
+ outputs: data.outputs.map(r => ({ ...r })),
370
+ txLabelMaps: data.txLabelMaps.map(r => ({ ...r })),
371
+ outputTagMaps: data.outputTagMaps.map(r => ({ ...r })),
372
+ certificates: data.certificates.map(r => ({ ...r })),
373
+ certificateFields: data.certificateFields.map(r => ({ ...r })),
374
+ commissions: data.commissions.map(r => ({ ...r })),
375
+ provenTxReqs: data.provenTxReqs.map(r => ({ ...r }))
376
+ };
377
+ const args = {
378
+ fromStorageIdentityKey: chunk.fromStorageIdentityKey,
379
+ toStorageIdentityKey: chunk.toStorageIdentityKey,
380
+ identityKey: data.user.identityKey,
381
+ maxRoughSize: Number.MAX_SAFE_INTEGER,
382
+ maxItems: Number.MAX_SAFE_INTEGER,
383
+ offsets: SYNC_CHUNK_ENTITY_ORDER.map(name => ({ name, offset: 0 }))
384
+ };
385
+ const first = await storage.processSyncChunk(args, chunk);
386
+ const done = await storage.processSyncChunk(args, {
387
+ fromStorageIdentityKey: chunk.fromStorageIdentityKey,
388
+ toStorageIdentityKey: chunk.toStorageIdentityKey,
389
+ userIdentityKey: data.user.identityKey,
390
+ provenTxs: [],
391
+ outputBaskets: [],
392
+ outputTags: [],
393
+ txLabels: [],
394
+ transactions: [],
395
+ outputs: [],
396
+ txLabelMaps: [],
397
+ outputTagMaps: [],
398
+ certificates: [],
399
+ certificateFields: [],
400
+ commissions: [],
401
+ provenTxReqs: []
402
+ });
403
+ const currentSyncState = (0, utilityHelpers_1.verifyOne)(await storage.findSyncStates({
404
+ partial: {
405
+ userId: targetUser.userId,
406
+ storageIdentityKey: data.sourceStorage.storageIdentityKey,
407
+ storageName: data.sourceStorage.storageName
408
+ }
409
+ }));
410
+ const importMap = normalizeSyncMap(JSON.parse(currentSyncState.syncMap));
411
+ const syncStateResult = await mergeImportedSyncStates(storage, data.syncStates, targetUser.userId, importMap, data.sourceStorage);
412
+ return {
413
+ mode: 'merge',
414
+ identityKey: data.user.identityKey,
415
+ userId: targetUser.userId,
416
+ inserts: first.inserts + done.inserts + syncStateResult.inserts,
417
+ updates: first.updates + done.updates + syncStateResult.updates
418
+ };
419
+ }
420
+ async function mergeImportedSyncStates(storage, syncStates, userId, importMap, sourceStorage) {
421
+ let inserts = 0;
422
+ let updates = 0;
423
+ for (const source of syncStates) {
424
+ const row = {
425
+ ...source,
426
+ userId,
427
+ syncMap: JSON.stringify(remapSyncMap(JSON.parse(source.syncMap), importMap))
428
+ };
429
+ const existing = (0, utilityHelpers_1.verifyOneOrNone)(await storage.findSyncStates({
430
+ partial: {
431
+ userId,
432
+ storageIdentityKey: row.storageIdentityKey,
433
+ storageName: row.storageName
434
+ }
435
+ }));
436
+ if (existing == null) {
437
+ row.syncStateId = 0;
438
+ await storage.insertSyncState(row);
439
+ inserts++;
440
+ }
441
+ else {
442
+ row.syncStateId = existing.syncStateId;
443
+ if (row.storageIdentityKey === sourceStorage.storageIdentityKey &&
444
+ row.storageName === sourceStorage.storageName) {
445
+ row.syncMap = existing.syncMap;
446
+ }
447
+ await storage.updateSyncState(existing.syncStateId, row);
448
+ updates++;
449
+ }
450
+ }
451
+ return { inserts, updates };
452
+ }
453
+ function remapSyncMap(source, importMap) {
454
+ const copy = normalizeSyncMap(source);
455
+ remapEntityIdMap(copy.provenTx.idMap, importMap.provenTx.idMap);
456
+ remapEntityIdMap(copy.outputBasket.idMap, importMap.outputBasket.idMap);
457
+ remapEntityIdMap(copy.transaction.idMap, importMap.transaction.idMap);
458
+ remapEntityIdMap(copy.provenTxReq.idMap, importMap.provenTxReq.idMap);
459
+ remapEntityIdMap(copy.txLabel.idMap, importMap.txLabel.idMap);
460
+ remapEntityIdMap(copy.output.idMap, importMap.output.idMap);
461
+ remapEntityIdMap(copy.outputTag.idMap, importMap.outputTag.idMap);
462
+ remapEntityIdMap(copy.certificate.idMap, importMap.certificate.idMap);
463
+ remapEntityIdMap(copy.commission.idMap, importMap.commission.idMap);
464
+ return copy;
465
+ }
466
+ function normalizeSyncMap(source) {
467
+ const normalized = (0, EntityBase_1.createSyncMap)();
468
+ if (!isObject(source))
469
+ return normalized;
470
+ for (const key of Object.keys(normalized)) {
471
+ const incoming = source[key];
472
+ if (!isObject(incoming))
473
+ continue;
474
+ const target = normalized[key];
475
+ if (typeof incoming.entityName === 'string')
476
+ target.entityName = incoming.entityName;
477
+ if (Number.isInteger(incoming.count))
478
+ target.count = incoming.count;
479
+ if (isObject(incoming.idMap)) {
480
+ target.idMap = {};
481
+ for (const [remoteId, localId] of Object.entries(incoming.idMap)) {
482
+ const parsedRemoteId = Number(remoteId);
483
+ if (Number.isInteger(parsedRemoteId) && Number.isInteger(localId)) {
484
+ target.idMap[parsedRemoteId] = localId;
485
+ }
486
+ }
487
+ }
488
+ if (typeof incoming.maxUpdated_at === 'string') {
489
+ const maxUpdatedAt = new Date(incoming.maxUpdated_at);
490
+ if (!Number.isNaN(maxUpdatedAt.getTime()))
491
+ target.maxUpdated_at = maxUpdatedAt;
492
+ }
493
+ else if (incoming.maxUpdated_at instanceof Date) {
494
+ target.maxUpdated_at = incoming.maxUpdated_at;
495
+ }
496
+ }
497
+ return normalized;
498
+ }
499
+ function remapEntityIdMap(idMap, importIdMap) {
500
+ for (const key of Object.keys(idMap)) {
501
+ const targetId = importIdMap[idMap[Number(key)]];
502
+ if (targetId != null)
503
+ idMap[Number(key)] = targetId;
504
+ }
505
+ }
506
+ async function assertRestoreTargetEmpty(storage) {
507
+ const counts = await Promise.all([
508
+ storage.countUsers({ partial: {} }),
509
+ storage.countProvenTxs({ partial: {} }),
510
+ storage.countProvenTxReqs({ partial: {} }),
511
+ storage.countOutputBaskets({ partial: {} }),
512
+ storage.countTransactions({ partial: {} }),
513
+ storage.countCommissions({ partial: {} }),
514
+ storage.countOutputs({ partial: {} }),
515
+ storage.countOutputTags({ partial: {} }),
516
+ storage.countOutputTagMaps({ partial: {} }),
517
+ storage.countTxLabels({ partial: {} }),
518
+ storage.countTxLabelMaps({ partial: {} }),
519
+ storage.countCertificates({ partial: {} }),
520
+ storage.countCertificateFields({ partial: {} }),
521
+ storage.countSyncStates({ partial: {} }),
522
+ storage.countMonitorEvents({ partial: {} })
523
+ ]);
524
+ if (counts.some(c => c > 0))
525
+ throw new Error('BRC-38 restore requires an empty target storage except settings');
526
+ }
527
+ function countDecodedRows(data) {
528
+ return data.provenTxs.length + data.provenTxReqs.length + data.outputBaskets.length + data.transactions.length +
529
+ data.commissions.length + data.outputs.length + data.outputTags.length + data.outputTagMaps.length +
530
+ data.txLabels.length + data.txLabelMaps.length + data.certificates.length + data.certificateFields.length +
531
+ data.syncStates.length;
532
+ }
533
+ function validateRelationships(data) {
534
+ const userId = requireNumber(data.user.userId, 'user.userId');
535
+ const txIds = ids(data.tables.transactions, 'transactionId', 'transactions');
536
+ const txidValues = new Set(data.tables.transactions.map(t => t.txid).filter((v) => typeof v === 'string'));
537
+ const provenTxIds = ids(data.tables.provenTxs, 'provenTxId', 'provenTxs');
538
+ const basketIds = ids(data.tables.outputBaskets, 'basketId', 'outputBaskets');
539
+ const outputIds = ids(data.tables.outputs, 'outputId', 'outputs');
540
+ const outputTagIds = ids(data.tables.outputTags, 'outputTagId', 'outputTags');
541
+ const txLabelIds = ids(data.tables.txLabels, 'txLabelId', 'txLabels');
542
+ const certificateIds = ids(data.tables.certificates, 'certificateId', 'certificates');
543
+ for (const row of data.tables.transactions) {
544
+ requireUserId(row, userId, 'transactions');
545
+ if (row.provenTxId != null && !provenTxIds.has(requireNumber(row.provenTxId, 'transaction.provenTxId'))) {
546
+ throw new Error('BRC-38 transaction.provenTxId does not reference an exported provenTx');
547
+ }
548
+ }
549
+ for (const row of data.tables.outputBaskets)
550
+ requireUserId(row, userId, 'outputBaskets');
551
+ for (const row of data.tables.outputTags)
552
+ requireUserId(row, userId, 'outputTags');
553
+ for (const row of data.tables.txLabels)
554
+ requireUserId(row, userId, 'txLabels');
555
+ for (const row of data.tables.certificates)
556
+ requireUserId(row, userId, 'certificates');
557
+ for (const row of data.tables.syncStates)
558
+ requireUserId(row, userId, 'syncStates');
559
+ for (const row of data.tables.outputs) {
560
+ requireUserId(row, userId, 'outputs');
561
+ if (!txIds.has(requireNumber(row.transactionId, 'output.transactionId'))) {
562
+ throw new Error('BRC-38 output.transactionId does not reference an exported transaction');
563
+ }
564
+ if (row.basketId != null && !basketIds.has(requireNumber(row.basketId, 'output.basketId'))) {
565
+ throw new Error('BRC-38 output.basketId does not reference an exported output basket');
566
+ }
567
+ if (row.spentBy != null && !txIds.has(requireNumber(row.spentBy, 'output.spentBy'))) {
568
+ throw new Error('BRC-38 output.spentBy does not reference an exported transaction');
569
+ }
570
+ }
571
+ for (const row of data.tables.commissions) {
572
+ requireUserId(row, userId, 'commissions');
573
+ if (!txIds.has(requireNumber(row.transactionId, 'commission.transactionId'))) {
574
+ throw new Error('BRC-38 commission.transactionId does not reference an exported transaction');
575
+ }
576
+ }
577
+ for (const row of data.tables.txLabelMaps) {
578
+ if (!txIds.has(requireNumber(row.transactionId, 'txLabelMap.transactionId'))) {
579
+ throw new Error('BRC-38 txLabelMap.transactionId does not reference an exported transaction');
580
+ }
581
+ if (!txLabelIds.has(requireNumber(row.txLabelId, 'txLabelMap.txLabelId'))) {
582
+ throw new Error('BRC-38 txLabelMap.txLabelId does not reference an exported transaction label');
583
+ }
584
+ }
585
+ for (const row of data.tables.outputTagMaps) {
586
+ if (!outputIds.has(requireNumber(row.outputId, 'outputTagMap.outputId'))) {
587
+ throw new Error('BRC-38 outputTagMap.outputId does not reference an exported output');
588
+ }
589
+ if (!outputTagIds.has(requireNumber(row.outputTagId, 'outputTagMap.outputTagId'))) {
590
+ throw new Error('BRC-38 outputTagMap.outputTagId does not reference an exported output tag');
591
+ }
592
+ }
593
+ for (const row of data.tables.certificateFields) {
594
+ requireUserId(row, userId, 'certificateFields');
595
+ if (!certificateIds.has(requireNumber(row.certificateId, 'certificateField.certificateId'))) {
596
+ throw new Error('BRC-38 certificateField.certificateId does not reference an exported certificate');
597
+ }
598
+ }
599
+ for (const row of data.tables.provenTxReqs) {
600
+ if (!txidValues.has(requireString(row.txid, 'provenTxReq.txid'))) {
601
+ throw new Error('BRC-38 provenTxReq.txid does not match an exported transaction');
602
+ }
603
+ if (row.provenTxId != null && !provenTxIds.has(requireNumber(row.provenTxId, 'provenTxReq.provenTxId'))) {
604
+ throw new Error('BRC-38 provenTxReq.provenTxId does not reference an exported provenTx');
605
+ }
606
+ }
607
+ }
608
+ function validatePortableRows(kind, rows, path) {
609
+ var _a, _b, _c;
610
+ const dateFields = new Set((_a = dateFieldsByKind[kind]) !== null && _a !== void 0 ? _a : []);
611
+ const binaryFields = new Set((_b = binaryFieldsByKind[kind]) !== null && _b !== void 0 ? _b : []);
612
+ const jsonFields = new Set((_c = jsonFieldsByKind[kind]) !== null && _c !== void 0 ? _c : []);
613
+ for (const [index, row] of rows.entries()) {
614
+ if (!isObject(row))
615
+ throw new Error(`BRC-38 ${path}[${index}] must be an object`);
616
+ for (const field of dateFields) {
617
+ if (field in row)
618
+ assertIsoDate(row[field], `${path}[${index}].${field}`);
619
+ }
620
+ for (const field of binaryFields) {
621
+ if (field in row)
622
+ assertBase64(row[field], `${path}[${index}].${field}`);
623
+ }
624
+ for (const field of jsonFields) {
625
+ if (field in row && !isObject(row[field]))
626
+ throw new Error(`BRC-38 ${path}[${index}].${field} must be an object`);
627
+ }
628
+ }
629
+ }
630
+ function portableRow(kind, row) {
631
+ var _a, _b;
632
+ const out = {};
633
+ const binaryFields = new Set((_a = binaryFieldsByKind[kind]) !== null && _a !== void 0 ? _a : []);
634
+ const jsonFields = new Set((_b = jsonFieldsByKind[kind]) !== null && _b !== void 0 ? _b : []);
635
+ for (const [key, value] of Object.entries(row)) {
636
+ if (value == null)
637
+ continue;
638
+ if (key === 'logger')
639
+ continue;
640
+ if (binaryFields.has(key)) {
641
+ out[key] = sdk_1.Utils.toBase64(value);
642
+ }
643
+ else if (jsonFields.has(key)) {
644
+ out[key] = typeof value === 'string' ? JSON.parse(value) : value;
645
+ }
646
+ else if (value instanceof Date) {
647
+ out[key] = isoDate(value);
648
+ }
649
+ else {
650
+ out[key] = value;
651
+ }
652
+ }
653
+ return out;
654
+ }
655
+ function fromPortableRow(kind, row) {
656
+ var _a, _b, _c;
657
+ const out = {};
658
+ const dateFields = new Set((_a = dateFieldsByKind[kind]) !== null && _a !== void 0 ? _a : []);
659
+ const binaryFields = new Set((_b = binaryFieldsByKind[kind]) !== null && _b !== void 0 ? _b : []);
660
+ const jsonFields = new Set((_c = jsonFieldsByKind[kind]) !== null && _c !== void 0 ? _c : []);
661
+ for (const [key, value] of Object.entries(row)) {
662
+ if (dateFields.has(key))
663
+ out[key] = new Date(value);
664
+ else if (binaryFields.has(key))
665
+ out[key] = sdk_1.Utils.toArray(value, 'base64');
666
+ else if (jsonFields.has(key))
667
+ out[key] = JSON.stringify(value);
668
+ else
669
+ out[key] = value;
670
+ }
671
+ return out;
672
+ }
673
+ function sortBRC38Tables(tables) {
674
+ tables.provenTxs.sort(byNumber('provenTxId'));
675
+ tables.provenTxReqs.sort(byNumber('provenTxReqId'));
676
+ tables.outputBaskets.sort(byNumber('basketId'));
677
+ tables.transactions.sort(byNumber('transactionId'));
678
+ tables.commissions.sort(byNumber('commissionId'));
679
+ tables.outputs.sort(byNumber('outputId'));
680
+ tables.outputTags.sort(byNumber('outputTagId'));
681
+ tables.outputTagMaps.sort(byNumber('outputId', 'outputTagId'));
682
+ tables.txLabels.sort(byNumber('txLabelId'));
683
+ tables.txLabelMaps.sort(byNumber('transactionId', 'txLabelId'));
684
+ tables.certificates.sort(byNumber('certificateId'));
685
+ tables.certificateFields.sort((a, b) => {
686
+ const certificateIdOrder = requireNumber(a.certificateId, 'certificateId') - requireNumber(b.certificateId, 'certificateId');
687
+ if (certificateIdOrder !== 0)
688
+ return certificateIdOrder;
689
+ return requireString(a.fieldName, 'fieldName').localeCompare(requireString(b.fieldName, 'fieldName'));
690
+ });
691
+ tables.syncStates.sort(byNumber('syncStateId'));
692
+ }
693
+ function byNumber(field, secondField) {
694
+ return (a, b) => {
695
+ const first = requireNumber(a[field], field) - requireNumber(b[field], field);
696
+ if (first !== 0 || secondField == null)
697
+ return first;
698
+ return requireNumber(a[secondField], secondField) - requireNumber(b[secondField], secondField);
699
+ };
700
+ }
701
+ function ids(rows, field, label) {
702
+ const set = new Set();
703
+ for (const row of rows) {
704
+ const id = requireNumber(row[field], `${label}.${field}`);
705
+ if (set.has(id))
706
+ throw new Error(`BRC-38 duplicate ${label}.${field}: ${id}`);
707
+ set.add(id);
708
+ }
709
+ return set;
710
+ }
711
+ function requireUserId(row, userId, label) {
712
+ if (requireNumber(row.userId, `${label}.userId`) !== userId)
713
+ throw new Error(`BRC-38 ${label}.userId does not match user.userId`);
714
+ }
715
+ function requireNumber(value, path) {
716
+ if (!Number.isInteger(value))
717
+ throw new Error(`BRC-38 ${path} must be an integer`);
718
+ return value;
719
+ }
720
+ function requireString(value, path) {
721
+ if (typeof value !== 'string')
722
+ throw new Error(`BRC-38 ${path} must be a string`);
723
+ return value;
724
+ }
725
+ function assertIsoDate(value, path) {
726
+ if (typeof value !== 'string' || !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(value)) {
727
+ throw new Error(`BRC-38 ${path} must be a UTC ISO timestamp`);
728
+ }
729
+ const date = new Date(value);
730
+ if (Number.isNaN(date.getTime()) || date.toISOString() !== value)
731
+ throw new Error(`BRC-38 ${path} is invalid`);
732
+ }
733
+ function assertBase64(value, path) {
734
+ if (typeof value !== 'string' || value.length % 4 !== 0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(value)) {
735
+ throw new Error(`BRC-38 ${path} must be padded base64`);
736
+ }
737
+ }
738
+ function rejectNulls(value, path) {
739
+ if (value === null)
740
+ throw new Error(`BRC-38 ${path} must omit null values`);
741
+ if (Array.isArray(value)) {
742
+ for (let i = 0; i < value.length; i++)
743
+ rejectNulls(value[i], `${path}[${i}]`);
744
+ }
745
+ else if (isObject(value)) {
746
+ for (const [key, child] of Object.entries(value))
747
+ rejectNulls(child, `${path}.${key}`);
748
+ }
749
+ }
750
+ function canonicalize(value) {
751
+ if (value === null || value === undefined)
752
+ throw new Error('Cannot canonicalize null or undefined');
753
+ if (typeof value === 'string')
754
+ return JSON.stringify(value);
755
+ if (typeof value === 'number') {
756
+ if (!Number.isFinite(value))
757
+ throw new Error('Cannot canonicalize non-finite number');
758
+ return JSON.stringify(value);
759
+ }
760
+ if (typeof value === 'boolean')
761
+ return value ? 'true' : 'false';
762
+ if (Array.isArray(value))
763
+ return `[${value.map(canonicalize).join(',')}]`;
764
+ if (isObject(value)) {
765
+ return `{${Object.keys(value).sort().map(key => `${JSON.stringify(key)}:${canonicalize(value[key])}`).join(',')}}`;
766
+ }
767
+ throw new Error(`Unsupported JSON value type: ${typeof value}`);
768
+ }
769
+ function isoDate(date) {
770
+ return date.toISOString();
771
+ }
772
+ function isObject(value) {
773
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
774
+ }
775
+ function compareNumber(a, b) {
776
+ return a - b;
777
+ }
778
+ function concatBytes(...arrays) {
779
+ const total = arrays.reduce((sum, a) => sum + a.length, 0);
780
+ const out = new Uint8Array(total);
781
+ let offset = 0;
782
+ for (const array of arrays) {
783
+ out.set(array, offset);
784
+ offset += array.length;
785
+ }
786
+ return out;
787
+ }
788
+ async function deriveBRC39Key(password, salt, iterations, memoryKiB, parallelism) {
789
+ const normalized = password.normalize('NFC');
790
+ const hash = await (0, hash_wasm_1.argon2id)({
791
+ password: new Uint8Array(sdk_1.Utils.toArray(normalized, 'utf8')),
792
+ salt,
793
+ iterations,
794
+ memorySize: memoryKiB,
795
+ parallelism,
796
+ hashLength: BRC39_HASH_LENGTH,
797
+ outputType: 'binary'
798
+ });
799
+ return new Uint8Array(hash);
800
+ }
801
+ function validateKdfParams(iterations, memoryKiB, parallelism, hashLength) {
802
+ if (!Number.isInteger(iterations) || iterations <= 0)
803
+ throw new Error('Invalid BRC-39 Argon2id iterations');
804
+ if (!Number.isInteger(memoryKiB) || memoryKiB <= 0)
805
+ throw new Error('Invalid BRC-39 Argon2id memoryKiB');
806
+ if (!Number.isInteger(parallelism) || parallelism <= 0 || parallelism > 255)
807
+ throw new Error('Invalid BRC-39 Argon2id parallelism');
808
+ if (hashLength !== BRC39_HASH_LENGTH)
809
+ throw new Error('Invalid BRC-39 Argon2id hashLength');
810
+ }
811
+ function validateExportKdfParams(iterations, memoryKiB) {
812
+ if (iterations < BRC39_DEFAULT_ITERATIONS) {
813
+ throw new Error('BRC-39 export iterations must not be weaker than the canonical default');
814
+ }
815
+ if (memoryKiB < BRC39_DEFAULT_MEMORY_KIB) {
816
+ throw new Error('BRC-39 export memoryKiB must not be weaker than the canonical default');
817
+ }
818
+ }
819
+ function writeUInt32BE(target, offset, value) {
820
+ if (!Number.isInteger(value) || value < 0 || value > 0xffffffff)
821
+ throw new Error('BRC-39 integer out of range');
822
+ target[offset] = (value >>> 24) & 0xff;
823
+ target[offset + 1] = (value >>> 16) & 0xff;
824
+ target[offset + 2] = (value >>> 8) & 0xff;
825
+ target[offset + 3] = value & 0xff;
826
+ }
827
+ function readUInt32BE(source, offset) {
828
+ return ((source[offset] << 24) >>> 0) + (source[offset + 1] << 16) + (source[offset + 2] << 8) + source[offset + 3];
829
+ }
830
+ //# sourceMappingURL=index.js.map