@bopen-io/wallet-toolbox 1.7.18

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 (390) hide show
  1. package/.claude/settings.local.json +10 -0
  2. package/.env.template +22 -0
  3. package/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
  4. package/.github/ISSUE_TEMPLATE/discussion.md +24 -0
  5. package/.github/pull_request_template.md +22 -0
  6. package/.github/workflows/push.yaml +145 -0
  7. package/.prettierrc +10 -0
  8. package/CHANGELOG.md +280 -0
  9. package/CONTRIBUTING.md +89 -0
  10. package/README.md +43 -0
  11. package/docs/README.md +85 -0
  12. package/docs/client.md +19627 -0
  13. package/docs/monitor.md +953 -0
  14. package/docs/open-rpc/index.html +46 -0
  15. package/docs/services.md +6377 -0
  16. package/docs/setup.md +1268 -0
  17. package/docs/storage.md +5367 -0
  18. package/docs/wallet.md +19626 -0
  19. package/jest.config.ts +25 -0
  20. package/license.md +28 -0
  21. package/out/tsconfig.all.tsbuildinfo +1 -0
  22. package/package.json +63 -0
  23. package/src/CWIStyleWalletManager.ts +1999 -0
  24. package/src/Setup.ts +579 -0
  25. package/src/SetupClient.ts +322 -0
  26. package/src/SetupWallet.ts +108 -0
  27. package/src/SimpleWalletManager.ts +526 -0
  28. package/src/Wallet.ts +1169 -0
  29. package/src/WalletAuthenticationManager.ts +153 -0
  30. package/src/WalletLogger.ts +213 -0
  31. package/src/WalletPermissionsManager.ts +3660 -0
  32. package/src/WalletSettingsManager.ts +114 -0
  33. package/src/__tests/CWIStyleWalletManager.test.d.ts.map +1 -0
  34. package/src/__tests/CWIStyleWalletManager.test.js.map +1 -0
  35. package/src/__tests/CWIStyleWalletManager.test.ts +675 -0
  36. package/src/__tests/WalletPermissionsManager.callbacks.test.ts +323 -0
  37. package/src/__tests/WalletPermissionsManager.checks.test.ts +844 -0
  38. package/src/__tests/WalletPermissionsManager.encryption.test.ts +412 -0
  39. package/src/__tests/WalletPermissionsManager.fixtures.ts +307 -0
  40. package/src/__tests/WalletPermissionsManager.flows.test.ts +462 -0
  41. package/src/__tests/WalletPermissionsManager.initialization.test.ts +300 -0
  42. package/src/__tests/WalletPermissionsManager.pmodules.test.ts +798 -0
  43. package/src/__tests/WalletPermissionsManager.proxying.test.ts +724 -0
  44. package/src/__tests/WalletPermissionsManager.tokens.test.ts +503 -0
  45. package/src/index.all.ts +27 -0
  46. package/src/index.client.ts +25 -0
  47. package/src/index.mobile.ts +21 -0
  48. package/src/index.ts +1 -0
  49. package/src/monitor/Monitor.ts +412 -0
  50. package/src/monitor/MonitorDaemon.ts +188 -0
  51. package/src/monitor/README.md +3 -0
  52. package/src/monitor/__test/MonitorDaemon.man.test.ts +45 -0
  53. package/src/monitor/tasks/TaskCheckForProofs.ts +243 -0
  54. package/src/monitor/tasks/TaskCheckNoSends.ts +73 -0
  55. package/src/monitor/tasks/TaskClock.ts +33 -0
  56. package/src/monitor/tasks/TaskFailAbandoned.ts +54 -0
  57. package/src/monitor/tasks/TaskMonitorCallHistory.ts +26 -0
  58. package/src/monitor/tasks/TaskNewHeader.ts +93 -0
  59. package/src/monitor/tasks/TaskPurge.ts +68 -0
  60. package/src/monitor/tasks/TaskReorg.ts +89 -0
  61. package/src/monitor/tasks/TaskReviewStatus.ts +48 -0
  62. package/src/monitor/tasks/TaskSendWaiting.ts +122 -0
  63. package/src/monitor/tasks/TaskSyncWhenIdle.ts +26 -0
  64. package/src/monitor/tasks/TaskUnFail.ts +151 -0
  65. package/src/monitor/tasks/WalletMonitorTask.ts +47 -0
  66. package/src/sdk/CertOpsWallet.ts +18 -0
  67. package/src/sdk/PrivilegedKeyManager.ts +372 -0
  68. package/src/sdk/README.md +13 -0
  69. package/src/sdk/WERR_errors.ts +234 -0
  70. package/src/sdk/WalletError.ts +170 -0
  71. package/src/sdk/WalletErrorFromJson.ts +80 -0
  72. package/src/sdk/WalletServices.interfaces.ts +700 -0
  73. package/src/sdk/WalletSigner.interfaces.ts +11 -0
  74. package/src/sdk/WalletStorage.interfaces.ts +606 -0
  75. package/src/sdk/__test/CertificateLifeCycle.test.ts +131 -0
  76. package/src/sdk/__test/PrivilegedKeyManager.test.ts +738 -0
  77. package/src/sdk/__test/WalletError.test.ts +318 -0
  78. package/src/sdk/__test/validationHelpers.test.ts +21 -0
  79. package/src/sdk/index.ts +10 -0
  80. package/src/sdk/types.ts +226 -0
  81. package/src/services/README.md +11 -0
  82. package/src/services/ServiceCollection.ts +248 -0
  83. package/src/services/Services.ts +603 -0
  84. package/src/services/__tests/ARC.man.test.ts +123 -0
  85. package/src/services/__tests/ARC.timeout.man.test.ts +79 -0
  86. package/src/services/__tests/ArcGorillaPool.man.test.ts +108 -0
  87. package/src/services/__tests/arcServices.test.ts +8 -0
  88. package/src/services/__tests/bitrails.test.ts +56 -0
  89. package/src/services/__tests/getMerklePath.test.ts +15 -0
  90. package/src/services/__tests/getRawTx.test.ts +13 -0
  91. package/src/services/__tests/postBeef.test.ts +104 -0
  92. package/src/services/__tests/verifyBeef.test.ts +50 -0
  93. package/src/services/chaintracker/BHServiceClient.ts +212 -0
  94. package/src/services/chaintracker/ChaintracksChainTracker.ts +71 -0
  95. package/src/services/chaintracker/__tests/ChaintracksChainTracker.test.ts +33 -0
  96. package/src/services/chaintracker/__tests/ChaintracksServiceClient.test.ts +29 -0
  97. package/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.ts +72 -0
  98. package/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.ts +83 -0
  99. package/src/services/chaintracker/chaintracks/Api/BulkStorageApi.ts +92 -0
  100. package/src/services/chaintracker/chaintracks/Api/ChaintracksApi.ts +64 -0
  101. package/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.ts +189 -0
  102. package/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.ts +18 -0
  103. package/src/services/chaintracker/chaintracks/Api/ChaintracksFsApi.ts +58 -0
  104. package/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.ts +386 -0
  105. package/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.ts +25 -0
  106. package/src/services/chaintracker/chaintracks/Chaintracks.ts +609 -0
  107. package/src/services/chaintracker/chaintracks/ChaintracksService.ts +199 -0
  108. package/src/services/chaintracker/chaintracks/ChaintracksServiceClient.ts +154 -0
  109. package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.ts +176 -0
  110. package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.ts +174 -0
  111. package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.ts +18 -0
  112. package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.ts +113 -0
  113. package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.ts +81 -0
  114. package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.ts +86 -0
  115. package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.ts +59 -0
  116. package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.ts +104 -0
  117. package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.ts +66 -0
  118. package/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.ts +566 -0
  119. package/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.ts +219 -0
  120. package/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.ts +54 -0
  121. package/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.ts +33 -0
  122. package/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.test.ts +124 -0
  123. package/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.ts +92 -0
  124. package/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.ts +104 -0
  125. package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.ts +382 -0
  126. package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.ts +574 -0
  127. package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.ts +438 -0
  128. package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.ts +29 -0
  129. package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.ts +304 -0
  130. package/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.ts +102 -0
  131. package/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.ts +45 -0
  132. package/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.ts +77 -0
  133. package/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.ts +192 -0
  134. package/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.ts +75 -0
  135. package/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.ts +62 -0
  136. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest349/mainNetBlockHeaders.json +1 -0
  137. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest349/mainNet_0.headers +0 -0
  138. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest349/mainNet_1.headers +0 -0
  139. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest349/mainNet_2.headers +0 -0
  140. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest349/mainNet_3.headers +0 -0
  141. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest379/mainNetBlockHeaders.json +1 -0
  142. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest379/mainNet_0.headers +0 -0
  143. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest379/mainNet_1.headers +0 -0
  144. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest379/mainNet_2.headers +0 -0
  145. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest379/mainNet_3.headers +0 -0
  146. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest399/mainNetBlockHeaders.json +1 -0
  147. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest399/mainNet_0.headers +0 -0
  148. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest399/mainNet_1.headers +0 -0
  149. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest399/mainNet_2.headers +0 -0
  150. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest399/mainNet_3.headers +0 -0
  151. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNetBlockHeaders.json +1 -0
  152. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNet_0.headers +0 -0
  153. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNet_1.headers +0 -0
  154. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNet_2.headers +0 -0
  155. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNet_3.headers +0 -0
  156. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNet_4.headers +0 -0
  157. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNetBlockHeaders.json +1 -0
  158. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNet_0.headers +0 -0
  159. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNet_1.headers +0 -0
  160. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNet_2.headers +0 -0
  161. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNet_3.headers +0 -0
  162. package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNet_4.headers +0 -0
  163. package/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.ts +92 -0
  164. package/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.ts +111 -0
  165. package/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.ts +91 -0
  166. package/src/services/chaintracker/chaintracks/createIdbChaintracks.ts +60 -0
  167. package/src/services/chaintracker/chaintracks/createKnexChaintracks.ts +65 -0
  168. package/src/services/chaintracker/chaintracks/createNoDbChaintracks.ts +60 -0
  169. package/src/services/chaintracker/chaintracks/index.all.ts +12 -0
  170. package/src/services/chaintracker/chaintracks/index.client.ts +4 -0
  171. package/src/services/chaintracker/chaintracks/index.mobile.ts +37 -0
  172. package/src/services/chaintracker/chaintracks/util/BulkFileDataManager.ts +975 -0
  173. package/src/services/chaintracker/chaintracks/util/BulkFileDataReader.ts +60 -0
  174. package/src/services/chaintracker/chaintracks/util/BulkFilesReader.ts +336 -0
  175. package/src/services/chaintracker/chaintracks/util/BulkHeaderFile.ts +247 -0
  176. package/src/services/chaintracker/chaintracks/util/ChaintracksFetch.ts +69 -0
  177. package/src/services/chaintracker/chaintracks/util/ChaintracksFs.ts +141 -0
  178. package/src/services/chaintracker/chaintracks/util/HeightRange.ts +153 -0
  179. package/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.ts +76 -0
  180. package/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.ts +304 -0
  181. package/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.ts +60 -0
  182. package/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.ts +67 -0
  183. package/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.ts +49 -0
  184. package/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.ts +573 -0
  185. package/src/services/chaintracker/chaintracks/util/dirtyHashes.ts +29 -0
  186. package/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.ts +432 -0
  187. package/src/services/chaintracker/index.all.ts +4 -0
  188. package/src/services/chaintracker/index.client.ts +4 -0
  189. package/src/services/chaintracker/index.mobile.ts +4 -0
  190. package/src/services/createDefaultWalletServicesOptions.ts +77 -0
  191. package/src/services/index.ts +1 -0
  192. package/src/services/processingErrors/arcSuccessError.json +76 -0
  193. package/src/services/providers/ARC.ts +350 -0
  194. package/src/services/providers/Bitails.ts +256 -0
  195. package/src/services/providers/SdkWhatsOnChain.ts +83 -0
  196. package/src/services/providers/WhatsOnChain.ts +883 -0
  197. package/src/services/providers/__tests/WhatsOnChain.test.ts +242 -0
  198. package/src/services/providers/__tests/exchangeRates.test.ts +18 -0
  199. package/src/services/providers/exchangeRates.ts +265 -0
  200. package/src/services/providers/getBeefForTxid.ts +369 -0
  201. package/src/signer/README.md +5 -0
  202. package/src/signer/WalletSigner.ts +17 -0
  203. package/src/signer/methods/acquireDirectCertificate.ts +52 -0
  204. package/src/signer/methods/buildSignableTransaction.ts +183 -0
  205. package/src/signer/methods/completeSignedTransaction.ts +117 -0
  206. package/src/signer/methods/createAction.ts +172 -0
  207. package/src/signer/methods/internalizeAction.ts +106 -0
  208. package/src/signer/methods/proveCertificate.ts +43 -0
  209. package/src/signer/methods/signAction.ts +54 -0
  210. package/src/storage/README.md +14 -0
  211. package/src/storage/StorageIdb.ts +2304 -0
  212. package/src/storage/StorageKnex.ts +1425 -0
  213. package/src/storage/StorageProvider.ts +810 -0
  214. package/src/storage/StorageReader.ts +194 -0
  215. package/src/storage/StorageReaderWriter.ts +432 -0
  216. package/src/storage/StorageSyncReader.ts +34 -0
  217. package/src/storage/WalletStorageManager.ts +943 -0
  218. package/src/storage/__test/StorageIdb.test.ts +43 -0
  219. package/src/storage/__test/WalletStorageManager.test.ts +275 -0
  220. package/src/storage/__test/adminStats.man.test.ts +89 -0
  221. package/src/storage/__test/getBeefForTransaction.test.ts +385 -0
  222. package/src/storage/index.all.ts +11 -0
  223. package/src/storage/index.client.ts +7 -0
  224. package/src/storage/index.mobile.ts +6 -0
  225. package/src/storage/methods/ListActionsSpecOp.ts +70 -0
  226. package/src/storage/methods/ListOutputsSpecOp.ts +129 -0
  227. package/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.ts +1057 -0
  228. package/src/storage/methods/__test/GenerateChange/randomValsUsed1.ts +20 -0
  229. package/src/storage/methods/__test/offsetKey.test.ts +274 -0
  230. package/src/storage/methods/attemptToPostReqsToNetwork.ts +389 -0
  231. package/src/storage/methods/createAction.ts +947 -0
  232. package/src/storage/methods/generateChange.ts +556 -0
  233. package/src/storage/methods/getBeefForTransaction.ts +139 -0
  234. package/src/storage/methods/getSyncChunk.ts +293 -0
  235. package/src/storage/methods/internalizeAction.ts +562 -0
  236. package/src/storage/methods/listActionsIdb.ts +183 -0
  237. package/src/storage/methods/listActionsKnex.ts +226 -0
  238. package/src/storage/methods/listCertificates.ts +73 -0
  239. package/src/storage/methods/listOutputsIdb.ts +203 -0
  240. package/src/storage/methods/listOutputsKnex.ts +263 -0
  241. package/src/storage/methods/offsetKey.ts +89 -0
  242. package/src/storage/methods/processAction.ts +420 -0
  243. package/src/storage/methods/purgeData.ts +251 -0
  244. package/src/storage/methods/purgeDataIdb.ts +10 -0
  245. package/src/storage/methods/reviewStatus.ts +101 -0
  246. package/src/storage/methods/reviewStatusIdb.ts +43 -0
  247. package/src/storage/methods/utils.Buffer.ts +33 -0
  248. package/src/storage/methods/utils.ts +56 -0
  249. package/src/storage/remoting/StorageClient.ts +567 -0
  250. package/src/storage/remoting/StorageMobile.ts +544 -0
  251. package/src/storage/remoting/StorageServer.ts +291 -0
  252. package/src/storage/remoting/__test/StorageClient.test.ts +113 -0
  253. package/src/storage/schema/KnexMigrations.ts +489 -0
  254. package/src/storage/schema/StorageIdbSchema.ts +150 -0
  255. package/src/storage/schema/entities/EntityBase.ts +210 -0
  256. package/src/storage/schema/entities/EntityCertificate.ts +188 -0
  257. package/src/storage/schema/entities/EntityCertificateField.ts +136 -0
  258. package/src/storage/schema/entities/EntityCommission.ts +148 -0
  259. package/src/storage/schema/entities/EntityOutput.ts +290 -0
  260. package/src/storage/schema/entities/EntityOutputBasket.ts +153 -0
  261. package/src/storage/schema/entities/EntityOutputTag.ts +121 -0
  262. package/src/storage/schema/entities/EntityOutputTagMap.ts +123 -0
  263. package/src/storage/schema/entities/EntityProvenTx.ts +319 -0
  264. package/src/storage/schema/entities/EntityProvenTxReq.ts +580 -0
  265. package/src/storage/schema/entities/EntitySyncState.ts +389 -0
  266. package/src/storage/schema/entities/EntityTransaction.ts +306 -0
  267. package/src/storage/schema/entities/EntityTxLabel.ts +121 -0
  268. package/src/storage/schema/entities/EntityTxLabelMap.ts +123 -0
  269. package/src/storage/schema/entities/EntityUser.ts +112 -0
  270. package/src/storage/schema/entities/MergeEntity.ts +73 -0
  271. package/src/storage/schema/entities/__tests/CertificateFieldTests.test.ts +353 -0
  272. package/src/storage/schema/entities/__tests/CertificateTests.test.ts +354 -0
  273. package/src/storage/schema/entities/__tests/CommissionTests.test.ts +371 -0
  274. package/src/storage/schema/entities/__tests/OutputBasketTests.test.ts +278 -0
  275. package/src/storage/schema/entities/__tests/OutputTagMapTests.test.ts +242 -0
  276. package/src/storage/schema/entities/__tests/OutputTagTests.test.ts +288 -0
  277. package/src/storage/schema/entities/__tests/OutputTests.test.ts +464 -0
  278. package/src/storage/schema/entities/__tests/ProvenTxReqTests.test.ts +340 -0
  279. package/src/storage/schema/entities/__tests/ProvenTxTests.test.ts +504 -0
  280. package/src/storage/schema/entities/__tests/SyncStateTests.test.ts +288 -0
  281. package/src/storage/schema/entities/__tests/TransactionTests.test.ts +604 -0
  282. package/src/storage/schema/entities/__tests/TxLabelMapTests.test.ts +361 -0
  283. package/src/storage/schema/entities/__tests/TxLabelTests.test.ts +198 -0
  284. package/src/storage/schema/entities/__tests/stampLogTests.test.ts +90 -0
  285. package/src/storage/schema/entities/__tests/usersTests.test.ts +340 -0
  286. package/src/storage/schema/entities/index.ts +16 -0
  287. package/src/storage/schema/tables/TableCertificate.ts +21 -0
  288. package/src/storage/schema/tables/TableCertificateField.ts +12 -0
  289. package/src/storage/schema/tables/TableCommission.ts +13 -0
  290. package/src/storage/schema/tables/TableMonitorEvent.ts +9 -0
  291. package/src/storage/schema/tables/TableOutput.ts +64 -0
  292. package/src/storage/schema/tables/TableOutputBasket.ts +12 -0
  293. package/src/storage/schema/tables/TableOutputTag.ts +10 -0
  294. package/src/storage/schema/tables/TableOutputTagMap.ts +9 -0
  295. package/src/storage/schema/tables/TableProvenTx.ts +14 -0
  296. package/src/storage/schema/tables/TableProvenTxReq.ts +65 -0
  297. package/src/storage/schema/tables/TableSettings.ts +17 -0
  298. package/src/storage/schema/tables/TableSyncState.ts +18 -0
  299. package/src/storage/schema/tables/TableTransaction.ts +54 -0
  300. package/src/storage/schema/tables/TableTxLabel.ts +10 -0
  301. package/src/storage/schema/tables/TableTxLabelMap.ts +9 -0
  302. package/src/storage/schema/tables/TableUser.ts +16 -0
  303. package/src/storage/schema/tables/index.ts +16 -0
  304. package/src/storage/sync/StorageMySQLDojoReader.ts +696 -0
  305. package/src/storage/sync/index.ts +1 -0
  306. package/src/utility/Format.ts +133 -0
  307. package/src/utility/README.md +3 -0
  308. package/src/utility/ReaderUint8Array.ts +187 -0
  309. package/src/utility/ScriptTemplateBRC29.ts +73 -0
  310. package/src/utility/__tests/utilityHelpers.noBuffer.test.ts +109 -0
  311. package/src/utility/aggregateResults.ts +68 -0
  312. package/src/utility/identityUtils.ts +159 -0
  313. package/src/utility/index.all.ts +7 -0
  314. package/src/utility/index.client.ts +7 -0
  315. package/src/utility/parseTxScriptOffsets.ts +29 -0
  316. package/src/utility/stampLog.ts +69 -0
  317. package/src/utility/tscProofToMerklePath.ts +48 -0
  318. package/src/utility/utilityHelpers.buffer.ts +34 -0
  319. package/src/utility/utilityHelpers.noBuffer.ts +60 -0
  320. package/src/utility/utilityHelpers.ts +275 -0
  321. package/src/wab-client/WABClient.ts +94 -0
  322. package/src/wab-client/__tests/WABClient.man.test.ts +59 -0
  323. package/src/wab-client/auth-method-interactors/AuthMethodInteractor.ts +47 -0
  324. package/src/wab-client/auth-method-interactors/DevConsoleInteractor.ts +73 -0
  325. package/src/wab-client/auth-method-interactors/PersonaIDInteractor.ts +35 -0
  326. package/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.ts +72 -0
  327. package/syncVersions.js +71 -0
  328. package/test/Wallet/StorageClient/storageClient.man.test.ts +75 -0
  329. package/test/Wallet/action/abortAction.test.ts +47 -0
  330. package/test/Wallet/action/createAction.test.ts +299 -0
  331. package/test/Wallet/action/createAction2.test.ts +1273 -0
  332. package/test/Wallet/action/createActionToGenerateBeefs.man.test.ts +293 -0
  333. package/test/Wallet/action/internalizeAction.a.test.ts +286 -0
  334. package/test/Wallet/action/internalizeAction.test.ts +682 -0
  335. package/test/Wallet/action/relinquishOutput.test.ts +37 -0
  336. package/test/Wallet/certificate/acquireCertificate.test.ts +298 -0
  337. package/test/Wallet/certificate/listCertificates.test.ts +346 -0
  338. package/test/Wallet/construct/Wallet.constructor.test.ts +57 -0
  339. package/test/Wallet/get/getHeaderForHeight.test.ts +82 -0
  340. package/test/Wallet/get/getHeight.test.ts +52 -0
  341. package/test/Wallet/get/getKnownTxids.test.ts +86 -0
  342. package/test/Wallet/get/getNetwork.test.ts +27 -0
  343. package/test/Wallet/get/getVersion.test.ts +27 -0
  344. package/test/Wallet/list/listActions.test.ts +279 -0
  345. package/test/Wallet/list/listActions2.test.ts +1381 -0
  346. package/test/Wallet/list/listCertificates.test.ts +118 -0
  347. package/test/Wallet/list/listOutputs.test.ts +447 -0
  348. package/test/Wallet/live/walletLive.man.test.ts +521 -0
  349. package/test/Wallet/local/localWallet.man.test.ts +93 -0
  350. package/test/Wallet/local/localWallet2.man.test.ts +277 -0
  351. package/test/Wallet/signAction/mountaintop.man.test.ts +130 -0
  352. package/test/Wallet/specOps/specOps.man.test.ts +220 -0
  353. package/test/Wallet/support/janitor.man.test.ts +40 -0
  354. package/test/Wallet/support/operations.man.test.ts +407 -0
  355. package/test/Wallet/support/reqErrorReview.2025.05.06.man.test.ts +347 -0
  356. package/test/Wallet/sync/Wallet.sync.test.ts +215 -0
  357. package/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.ts +203 -0
  358. package/test/Wallet/sync/setActive.test.ts +170 -0
  359. package/test/WalletClient/LocalKVStore.man.test.ts +114 -0
  360. package/test/WalletClient/WERR.man.test.ts +35 -0
  361. package/test/bsv-ts-sdk/LocalKVStore.test.ts +102 -0
  362. package/test/checkDB.ts +57 -0
  363. package/test/checkdb +0 -0
  364. package/test/examples/backup.man.test.ts +59 -0
  365. package/test/examples/pushdrop.test.ts +282 -0
  366. package/test/monitor/Monitor.test.ts +620 -0
  367. package/test/services/Services.test.ts +263 -0
  368. package/test/storage/KnexMigrations.test.ts +86 -0
  369. package/test/storage/StorageMySQLDojoReader.man.test.ts +60 -0
  370. package/test/storage/count.test.ts +177 -0
  371. package/test/storage/find.test.ts +195 -0
  372. package/test/storage/findLegacy.test.ts +67 -0
  373. package/test/storage/idb/allocateChange.test.ts +251 -0
  374. package/test/storage/idb/count.test.ts +158 -0
  375. package/test/storage/idb/find.test.ts +177 -0
  376. package/test/storage/idb/idbSpeed.test.ts +36 -0
  377. package/test/storage/idb/insert.test.ts +268 -0
  378. package/test/storage/idb/transactionAbort.test.ts +108 -0
  379. package/test/storage/idb/update.test.ts +999 -0
  380. package/test/storage/insert.test.ts +278 -0
  381. package/test/storage/update.test.ts +1021 -0
  382. package/test/storage/update2.test.ts +897 -0
  383. package/test/utils/TestUtilsWalletStorage.ts +2526 -0
  384. package/test/utils/localWalletMethods.ts +363 -0
  385. package/test/utils/removeFailedFromDatabase.sql +17 -0
  386. package/ts2md.json +44 -0
  387. package/tsconfig.all.json +31 -0
  388. package/tsconfig.client.json +29 -0
  389. package/tsconfig.json +17 -0
  390. package/tsconfig.mobile.json +28 -0
@@ -0,0 +1,606 @@
1
+ import {
2
+ AbortActionArgs,
3
+ AbortActionResult,
4
+ Beef,
5
+ ChainTracker,
6
+ InternalizeActionArgs,
7
+ InternalizeActionResult,
8
+ ListActionsArgs,
9
+ ListActionsResult,
10
+ ListCertificatesResult,
11
+ ListOutputsArgs,
12
+ ListOutputsResult,
13
+ RelinquishCertificateArgs,
14
+ RelinquishOutputArgs,
15
+ SendWithResult,
16
+ TXIDHexString,
17
+ Validation,
18
+ WalletLoggerInterface
19
+ } from '@bsv/sdk'
20
+ import {
21
+ TableCertificate,
22
+ TableCertificateField,
23
+ TableCertificateX,
24
+ TableCommission,
25
+ TableMonitorEvent,
26
+ TableOutput,
27
+ TableOutputBasket,
28
+ TableOutputTag,
29
+ TableOutputTagMap,
30
+ TableProvenTx,
31
+ TableProvenTxReq,
32
+ TableSettings,
33
+ TableSyncState,
34
+ TableTransaction,
35
+ TableTxLabel,
36
+ TableTxLabelMap,
37
+ TableUser
38
+ } from '../storage/schema/tables'
39
+ import { WalletServices } from './WalletServices.interfaces'
40
+ import { Chain, Paged, ProvenTxReqStatus, TransactionStatus } from './types'
41
+ import { WalletError } from './WalletError'
42
+
43
+ /**
44
+ * This is the `WalletStorage` interface implemented by a class such as `WalletStorageManager`,
45
+ * which manges an active and set of backup storage providers.
46
+ *
47
+ * Access and conrol is not directly managed. Typically each request is made with an associated identityKey
48
+ * and it is left to the providers: physical access or remote channel authentication.
49
+ */
50
+ export interface WalletStorage {
51
+ /**
52
+ * @returns false
53
+ */
54
+ isStorageProvider(): boolean
55
+
56
+ isAvailable(): boolean
57
+ makeAvailable(): Promise<TableSettings>
58
+ migrate(storageName: string, storageIdentityKey: string): Promise<string>
59
+ destroy(): Promise<void>
60
+
61
+ setServices(v: WalletServices): void
62
+ getServices(): WalletServices
63
+ getSettings(): TableSettings
64
+
65
+ getAuth(): Promise<AuthId>
66
+
67
+ findOrInsertUser(identityKey: string): Promise<{ user: TableUser; isNew: boolean }>
68
+
69
+ abortAction(args: AbortActionArgs): Promise<AbortActionResult>
70
+ createAction(args: Validation.ValidCreateActionArgs): Promise<StorageCreateActionResult>
71
+ processAction(args: StorageProcessActionArgs): Promise<StorageProcessActionResults>
72
+ internalizeAction(args: InternalizeActionArgs): Promise<InternalizeActionResult>
73
+
74
+ findCertificates(args: FindCertificatesArgs): Promise<TableCertificateX[]>
75
+ findOutputBaskets(args: FindOutputBasketsArgs): Promise<TableOutputBasket[]>
76
+ findOutputs(args: FindOutputsArgs): Promise<TableOutput[]>
77
+ findProvenTxReqs(args: FindProvenTxReqsArgs): Promise<TableProvenTxReq[]>
78
+
79
+ listActions(args: ListActionsArgs): Promise<ListActionsResult>
80
+ listCertificates(args: Validation.ValidListCertificatesArgs): Promise<ListCertificatesResult>
81
+ listOutputs(args: ListOutputsArgs): Promise<ListOutputsResult>
82
+
83
+ insertCertificate(certificate: TableCertificateX): Promise<number>
84
+
85
+ relinquishCertificate(args: RelinquishCertificateArgs): Promise<number>
86
+ relinquishOutput(args: RelinquishOutputArgs): Promise<number>
87
+
88
+ getStores(): WalletStorageInfo[]
89
+ }
90
+
91
+ /**
92
+ * Snapshot of the current state of a storage provider configured for an `WalletStorageManager`.
93
+ */
94
+ export interface WalletStorageInfo {
95
+ isActive: boolean
96
+ isEnabled: boolean
97
+ isBackup: boolean
98
+ isConflicting: boolean
99
+ userId: number
100
+ storageIdentityKey: string
101
+ storageName: string
102
+ storageClass: string
103
+ endpointURL?: string
104
+ }
105
+
106
+ /**
107
+ * This is the `WalletStorage` interface implemented with authentication checking and
108
+ * is the actual minimal interface implemented by storage and remoted storage providers.
109
+ */
110
+ export interface WalletStorageProvider extends WalletStorageSync {
111
+ /**
112
+ * @returns true if this object's interface can be extended to the full `StorageProvider` interface
113
+ */
114
+ isStorageProvider(): boolean
115
+ setServices(v: WalletServices): void
116
+ }
117
+
118
+ export interface WalletStorageSync extends WalletStorageWriter {
119
+ findOrInsertSyncStateAuth(
120
+ auth: AuthId,
121
+ storageIdentityKey: string,
122
+ storageName: string
123
+ ): Promise<{ syncState: TableSyncState; isNew: boolean }>
124
+
125
+ /**
126
+ * Updagte the `activeStorage` property of the authenticated user by their `userId`.
127
+ * @param auth
128
+ * @param newActiveStorageIdentityKey
129
+ */
130
+ setActive(auth: AuthId, newActiveStorageIdentityKey: string): Promise<number>
131
+
132
+ getSyncChunk(args: RequestSyncChunkArgs): Promise<SyncChunk>
133
+ processSyncChunk(args: RequestSyncChunkArgs, chunk: SyncChunk): Promise<ProcessSyncChunkResult>
134
+ }
135
+
136
+ /**
137
+ * This is the minimal interface required for a WalletStorageProvider to export data to another provider.
138
+ */
139
+ export interface WalletStorageSyncReader {
140
+ makeAvailable(): Promise<TableSettings>
141
+ getSyncChunk(args: RequestSyncChunkArgs): Promise<SyncChunk>
142
+ }
143
+
144
+ export interface WalletStorageWriter extends WalletStorageReader {
145
+ makeAvailable(): Promise<TableSettings>
146
+ migrate(storageName: string, storageIdentityKey: string): Promise<string>
147
+ destroy(): Promise<void>
148
+
149
+ findOrInsertUser(identityKey: string): Promise<{ user: TableUser; isNew: boolean }>
150
+
151
+ abortAction(auth: AuthId, args: AbortActionArgs): Promise<AbortActionResult>
152
+ createAction(auth: AuthId, args: Validation.ValidCreateActionArgs): Promise<StorageCreateActionResult>
153
+ processAction(auth: AuthId, args: StorageProcessActionArgs): Promise<StorageProcessActionResults>
154
+ internalizeAction(auth: AuthId, args: InternalizeActionArgs): Promise<StorageInternalizeActionResult>
155
+
156
+ insertCertificateAuth(auth: AuthId, certificate: TableCertificateX): Promise<number>
157
+
158
+ relinquishCertificate(auth: AuthId, args: RelinquishCertificateArgs): Promise<number>
159
+ relinquishOutput(auth: AuthId, args: RelinquishOutputArgs): Promise<number>
160
+ }
161
+
162
+ export interface WalletStorageReader {
163
+ isAvailable(): boolean
164
+
165
+ getServices(): WalletServices
166
+ getSettings(): TableSettings
167
+
168
+ findCertificatesAuth(auth: AuthId, args: FindCertificatesArgs): Promise<TableCertificateX[]>
169
+ findOutputBasketsAuth(auth: AuthId, args: FindOutputBasketsArgs): Promise<TableOutputBasket[]>
170
+ findOutputsAuth(auth: AuthId, args: FindOutputsArgs): Promise<TableOutput[]>
171
+ findProvenTxReqs(args: FindProvenTxReqsArgs): Promise<TableProvenTxReq[]>
172
+
173
+ listActions(auth: AuthId, vargs: Validation.ValidListActionsArgs): Promise<ListActionsResult>
174
+ listCertificates(auth: AuthId, vargs: Validation.ValidListCertificatesArgs): Promise<ListCertificatesResult>
175
+ listOutputs(auth: AuthId, vargs: Validation.ValidListOutputsArgs): Promise<ListOutputsResult>
176
+ }
177
+
178
+ export interface AuthId {
179
+ identityKey: string
180
+ userId?: number
181
+ isActive?: boolean
182
+ }
183
+
184
+ export interface FindSincePagedArgs {
185
+ since?: Date
186
+ paged?: Paged
187
+ trx?: TrxToken
188
+ /**
189
+ * Support for orderDescending is implemented in StorageKnex for basic table find methods,
190
+ * excluding certificate_fields table, map tables, and settings (singleton row table).
191
+ */
192
+ orderDescending?: boolean
193
+ }
194
+
195
+ export interface FindForUserSincePagedArgs extends FindSincePagedArgs {
196
+ userId: number
197
+ }
198
+
199
+ export interface FindPartialSincePagedArgs<T extends object> extends FindSincePagedArgs {
200
+ partial: Partial<T>
201
+ }
202
+
203
+ export interface FindCertificatesArgs extends FindSincePagedArgs {
204
+ partial: Partial<TableCertificate>
205
+ certifiers?: string[]
206
+ types?: string[]
207
+ includeFields?: boolean
208
+ }
209
+
210
+ export interface FindOutputBasketsArgs extends FindSincePagedArgs {
211
+ partial: Partial<TableOutputBasket>
212
+ }
213
+
214
+ export interface FindOutputsArgs extends FindSincePagedArgs {
215
+ partial: Partial<TableOutput>
216
+ noScript?: boolean
217
+ txStatus?: TransactionStatus[]
218
+ }
219
+
220
+ export type StorageProvidedBy = 'you' | 'storage' | 'you-and-storage'
221
+
222
+ export interface StorageCreateTransactionSdkInput {
223
+ vin: number
224
+ sourceTxid: string
225
+ sourceVout: number
226
+ sourceSatoshis: number
227
+ sourceLockingScript: string
228
+ /**
229
+ *
230
+ */
231
+ sourceTransaction?: number[]
232
+ unlockingScriptLength: number
233
+ providedBy: StorageProvidedBy
234
+ type: string
235
+ spendingDescription?: string
236
+ derivationPrefix?: string
237
+ derivationSuffix?: string
238
+ senderIdentityKey?: string
239
+ }
240
+
241
+ export interface StorageCreateTransactionSdkOutput extends Validation.ValidCreateActionOutput {
242
+ vout: number
243
+ providedBy: StorageProvidedBy
244
+ purpose?: string
245
+ derivationSuffix?: string
246
+ }
247
+
248
+ export interface StorageCreateActionResult {
249
+ inputBeef?: number[]
250
+ inputs: StorageCreateTransactionSdkInput[]
251
+ outputs: StorageCreateTransactionSdkOutput[]
252
+ noSendChangeOutputVouts?: number[]
253
+ derivationPrefix: string
254
+ version: number
255
+ lockTime: number
256
+ reference: string
257
+ }
258
+
259
+ export interface StorageProcessActionArgs {
260
+ isNewTx: boolean
261
+ isSendWith: boolean
262
+ isNoSend: boolean
263
+ isDelayed: boolean
264
+ reference?: string
265
+ txid?: string
266
+ rawTx?: number[]
267
+ sendWith: string[]
268
+ logger?: WalletLoggerInterface
269
+ }
270
+
271
+ export interface StorageInternalizeActionResult extends InternalizeActionResult {
272
+ /** true if internalizing outputs on an existing storage transaction */
273
+ isMerge: boolean
274
+ /** txid of transaction being internalized */
275
+ txid: string
276
+ /** net change in change balance for user due to this internalization */
277
+ satoshis: number
278
+
279
+ /** valid iff not isMerge and txid was unknown to storage and non-delayed broadcast was not success */
280
+ sendWithResults?: SendWithResult[]
281
+ /** valid iff not isMerge and txid was unknown to storage and non-delayed broadcast was not success */
282
+ notDelayedResults?: ReviewActionResult[]
283
+ }
284
+
285
+ /**
286
+ * Indicates status of a new Action following a `createAction` or `signAction` in immediate mode:
287
+ * When `acceptDelayedBroadcast` is falses.
288
+ *
289
+ * 'success': The action has been broadcast and accepted by the bitcoin processing network.
290
+ * 'doulbeSpend': The action has been confirmed to double spend one or more inputs, and by the "first-seen-rule" is the loosing transaction.
291
+ * 'invalidTx': The action was rejected by the processing network as an invalid bitcoin transaction.
292
+ * 'serviceError': The broadcast services are currently unable to reach the bitcoin network. The action is now queued for delayed retries.
293
+ */
294
+ export type ReviewActionResultStatus = 'success' | 'doubleSpend' | 'serviceError' | 'invalidTx'
295
+
296
+ export interface ReviewActionResult {
297
+ txid: TXIDHexString
298
+ status: ReviewActionResultStatus
299
+ /**
300
+ * Any competing txids reported for this txid, valid when status is 'doubleSpend'.
301
+ */
302
+ competingTxs?: string[]
303
+ /**
304
+ * Merged beef of competingTxs, valid when status is 'doubleSpend'.
305
+ */
306
+ competingBeef?: number[]
307
+ }
308
+
309
+ export interface StorageProcessActionResults {
310
+ sendWithResults?: SendWithResult[]
311
+ notDelayedResults?: ReviewActionResult[]
312
+ log?: string
313
+ }
314
+
315
+ export interface ProvenOrRawTx {
316
+ proven?: TableProvenTx
317
+ rawTx?: number[]
318
+ inputBEEF?: number[]
319
+ }
320
+
321
+ export interface PurgeParams {
322
+ purgeCompleted: boolean
323
+ purgeFailed: boolean
324
+ purgeSpent: boolean
325
+
326
+ /**
327
+ * Minimum age in msecs for transient completed transaction data purge.
328
+ * Default is 14 days.
329
+ */
330
+ purgeCompletedAge?: number
331
+ /**
332
+ * Minimum age in msecs for failed transaction data purge.
333
+ * Default is 14 days.
334
+ */
335
+ purgeFailedAge?: number
336
+ /**
337
+ * Minimum age in msecs for failed transaction data purge.
338
+ * Default is 14 days.
339
+ */
340
+ purgeSpentAge?: number
341
+ }
342
+
343
+ export interface PurgeResults {
344
+ count: number
345
+ log: string
346
+ }
347
+
348
+ export interface StorageProvenOrReq {
349
+ proven?: TableProvenTx
350
+ req?: TableProvenTxReq
351
+ isNew?: boolean
352
+ }
353
+
354
+ /**
355
+ * Specifies the available options for computing transaction fees.
356
+ */
357
+ export interface StorageFeeModel {
358
+ /**
359
+ * Available models. Currently only "sat/kb" is supported.
360
+ */
361
+ model: 'sat/kb'
362
+ /**
363
+ * When "fee.model" is "sat/kb", this is an integer representing the number of satoshis per kb of block space
364
+ * the transaction will pay in fees.
365
+ *
366
+ * If undefined, the default value is used.
367
+ */
368
+ value?: number
369
+ }
370
+
371
+ export interface StorageGetBeefOptions {
372
+ /** if 'known', txids known to local storage as valid are included as txidOnly */
373
+ trustSelf?: 'known'
374
+ /** list of txids to be included as txidOnly if referenced. Validity is known to caller. */
375
+ knownTxids?: string[]
376
+ /** optional. If defined, raw transactions and merkle paths required by txid are merged to this instance and returned. Otherwise a new Beef is constructed and returned. */
377
+ mergeToBeef?: Beef | number[]
378
+ /** optional. Default is false. `storage` is used for raw transaction and merkle proof lookup */
379
+ ignoreStorage?: boolean
380
+ /** optional. Default is false. `getServices` is used for raw transaction and merkle proof lookup */
381
+ ignoreServices?: boolean
382
+ /** optional. Default is false. If true, raw transactions with proofs missing from `storage` and obtained from `getServices` are not inserted to `storage`. */
383
+ ignoreNewProven?: boolean
384
+ /** optional. Default is zero. Ignores available merkle paths until recursion detpth equals or exceeds value */
385
+ minProofLevel?: number
386
+ /** optional. If valid, any merkleRoot that fails to validate will result in an exception without merging to `mergeToBeef`. */
387
+ chainTracker?: ChainTracker
388
+ /** optional. Default is false. If chainTracker is valid and an invalid proof is found: if true, pursues deeper beef. If false, throws WERR_INVALID_MERKLE_ROOT. */
389
+ skipInvalidProofs?: boolean
390
+ }
391
+
392
+ export interface StorageSyncReaderOptions {
393
+ chain: Chain
394
+ }
395
+
396
+ export interface FindCertificateFieldsArgs extends FindSincePagedArgs {
397
+ partial: Partial<TableCertificateField>
398
+ }
399
+
400
+ export interface FindCommissionsArgs extends FindSincePagedArgs {
401
+ partial: Partial<TableCommission>
402
+ }
403
+ export interface FindOutputTagMapsArgs extends FindSincePagedArgs {
404
+ partial: Partial<TableOutputTagMap>
405
+ tagIds?: number[]
406
+ }
407
+ export interface FindOutputTagsArgs extends FindSincePagedArgs {
408
+ partial: Partial<TableOutputTag>
409
+ }
410
+ export interface FindProvenTxReqsArgs extends FindSincePagedArgs {
411
+ partial: Partial<TableProvenTxReq>
412
+ status?: ProvenTxReqStatus[]
413
+ txids?: string[]
414
+ }
415
+ export interface FindProvenTxsArgs extends FindSincePagedArgs {
416
+ partial: Partial<TableProvenTx>
417
+ }
418
+ export interface FindSyncStatesArgs extends FindSincePagedArgs {
419
+ partial: Partial<TableSyncState>
420
+ }
421
+ export interface FindTransactionsArgs extends FindSincePagedArgs {
422
+ partial: Partial<TableTransaction>
423
+ status?: TransactionStatus[]
424
+ noRawTx?: boolean
425
+ }
426
+ export interface FindTxLabelMapsArgs extends FindSincePagedArgs {
427
+ partial: Partial<TableTxLabelMap>
428
+ labelIds?: number[]
429
+ }
430
+ export interface FindTxLabelsArgs extends FindSincePagedArgs {
431
+ partial: Partial<TableTxLabel>
432
+ }
433
+ export interface FindUsersArgs extends FindSincePagedArgs {
434
+ partial: Partial<TableUser>
435
+ }
436
+ export interface FindMonitorEventsArgs extends FindSincePagedArgs {
437
+ partial: Partial<TableMonitorEvent>
438
+ }
439
+ /**
440
+ * Place holder for the transaction control object used by actual storage provider implementation.
441
+ */
442
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
443
+ export interface TrxToken {}
444
+
445
+ export interface UpdateProvenTxReqWithNewProvenTxArgs {
446
+ provenTxReqId: number
447
+ txid: string
448
+ attempts: number
449
+ status: ProvenTxReqStatus
450
+ history: string
451
+ height: number
452
+ index: number
453
+ blockHash: string
454
+ merkleRoot: string
455
+ merklePath: number[]
456
+ }
457
+
458
+ export interface UpdateProvenTxReqWithNewProvenTxResult {
459
+ status: ProvenTxReqStatus
460
+ history: string
461
+ provenTxId: number
462
+ log?: string
463
+ }
464
+
465
+ /**
466
+ * success: Last sync of this user from this storage was successful.
467
+ *
468
+ * error: Last sync protocol operation for this user to this storage threw and error.
469
+ *
470
+ * identified: Configured sync storage has been identified but not sync'ed.
471
+ *
472
+ * unknown: Sync protocol state is unknown.
473
+ */
474
+ export type SyncStatus = 'success' | 'error' | 'identified' | 'updated' | 'unknown'
475
+
476
+ export type SyncProtocolVersion = '0.1.0'
477
+
478
+ export interface RequestSyncChunkArgs {
479
+ /**
480
+ * The storageIdentityKey of the storage supplying the update SyncChunk data.
481
+ */
482
+ fromStorageIdentityKey: string
483
+ /**
484
+ * The storageIdentityKey of the storage consuming the update SyncChunk data.
485
+ */
486
+ toStorageIdentityKey: string
487
+
488
+ /**
489
+ * The identity of whose data is being requested
490
+ */
491
+ identityKey: string
492
+ /**
493
+ * The max updated_at time received from the storage service receiving the request.
494
+ * Will be undefiend if this is the first request or if no data was previously sync'ed.
495
+ *
496
+ * `since` must include items if 'updated_at' is greater or equal. Thus, when not undefined, a sync request should always return at least one item already seen.
497
+ */
498
+ since?: Date
499
+ /**
500
+ * A rough limit on how large the response should be.
501
+ * The item that exceeds the limit is included and ends adding more items.
502
+ */
503
+ maxRoughSize: number
504
+ /**
505
+ * The maximum number of items (records) to be returned.
506
+ */
507
+ maxItems: number
508
+ /**
509
+ * For each entity in dependency order, the offset at which to start returning items
510
+ * from `since`.
511
+ *
512
+ * The entity order is:
513
+ * 0 ProvenTxs
514
+ * 1 ProvenTxReqs
515
+ * 2 OutputBaskets
516
+ * 3 TxLabels
517
+ * 4 OutputTags
518
+ * 5 Transactions
519
+ * 6 TxLabelMaps
520
+ * 7 Commissions
521
+ * 8 Outputs
522
+ * 9 OutputTagMaps
523
+ * 10 Certificates
524
+ * 11 CertificateFields
525
+ */
526
+ offsets: { name: string; offset: number }[]
527
+ }
528
+
529
+ /**
530
+ * Result received from remote `WalletStorage` in response to a `RequestSyncChunkArgs` request.
531
+ *
532
+ * Each property is undefined if there was no attempt to update it. Typically this is caused by size and count limits on this result.
533
+ *
534
+ * If all properties are empty arrays the sync process has received all available new and updated items.
535
+ */
536
+ export interface SyncChunk {
537
+ fromStorageIdentityKey: string
538
+ toStorageIdentityKey: string
539
+ userIdentityKey: string
540
+
541
+ user?: TableUser
542
+ provenTxs?: TableProvenTx[]
543
+ provenTxReqs?: TableProvenTxReq[]
544
+ outputBaskets?: TableOutputBasket[]
545
+ txLabels?: TableTxLabel[]
546
+ outputTags?: TableOutputTag[]
547
+ transactions?: TableTransaction[]
548
+ txLabelMaps?: TableTxLabelMap[]
549
+ commissions?: TableCommission[]
550
+ outputs?: TableOutput[]
551
+ outputTagMaps?: TableOutputTagMap[]
552
+ certificates?: TableCertificate[]
553
+ certificateFields?: TableCertificateField[]
554
+ }
555
+
556
+ export interface ProcessSyncChunkResult {
557
+ done: boolean
558
+ maxUpdated_at: Date | undefined
559
+ updates: number
560
+ inserts: number
561
+ error?: WalletError
562
+ }
563
+
564
+ /**
565
+ * Returned results from WalletStorageManager reproveHeader method.
566
+ */
567
+ export interface ReproveHeaderResult {
568
+ /**
569
+ * Human readable log of the reproveHeader process.
570
+ */
571
+ log: string
572
+ /**
573
+ * List of proven_txs records that were updated with new proof data.
574
+ */
575
+ updated: { was: TableProvenTx; update: Partial<TableProvenTx>; logUpdate: string }[]
576
+ /**
577
+ * List of proven_txs records that were checked but currently available proof is unchanged.
578
+ */
579
+ unchanged: TableProvenTx[]
580
+ /**
581
+ * List of proven_txs records that were checked but currently proof data is unavailable.
582
+ */
583
+ unavailable: TableProvenTx[]
584
+ }
585
+
586
+ /**
587
+ * Returned results from WalletStorageManager reproveProven method.
588
+ */
589
+ export interface ReproveProvenResult {
590
+ /**
591
+ * Human readable log of the reproveProven process.
592
+ */
593
+ log: string
594
+ /**
595
+ * Valid if proof data for proven_txs record is available and has changed.
596
+ */
597
+ updated?: { update: Partial<TableProvenTx>; logUpdate: string }
598
+ /**
599
+ * True if proof data for proven_txs record was found to be unchanged.
600
+ */
601
+ unchanged: boolean
602
+ /**
603
+ * True if proof data for proven_txs record is currently unavailable.
604
+ */
605
+ unavailable: boolean
606
+ }