@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,340 @@
1
+ import { EntityUser } from '../EntityUser'
2
+ import { createSyncMap, sdk, SyncMap, TableUser } from '../../../../../src'
3
+ import { TestUtilsWalletStorage as _tu, TestWalletNoSetup } from '../../../../../test/utils/TestUtilsWalletStorage'
4
+ describe('User class method tests', () => {
5
+ jest.setTimeout(99999999) // Extend timeout for database operations
6
+
7
+ const env = _tu.getEnv('test') // Test environment
8
+ const ctxs: TestWalletNoSetup[] = [] // Context for primary databases
9
+ const ctxs2: TestWalletNoSetup[] = [] // Context for secondary databases
10
+
11
+ beforeAll(async () => {
12
+ // Set up MySQL and SQLite databases for testing
13
+ if (env.runMySQL) {
14
+ ctxs.push(await _tu.createLegacyWalletMySQLCopy('userTests_db1'))
15
+ ctxs2.push(await _tu.createLegacyWalletMySQLCopy('userTests_db2'))
16
+ }
17
+ ctxs.push(await _tu.createLegacyWalletSQLiteCopy('userTests_db1'))
18
+ ctxs2.push(await _tu.createLegacyWalletSQLiteCopy('userTests_db2'))
19
+ })
20
+
21
+ afterAll(async () => {
22
+ // Clean up primary databases
23
+ for (const ctx of ctxs) {
24
+ await ctx.storage.destroy()
25
+ }
26
+ // Clean up secondary databases
27
+ for (const ctx of ctxs2) {
28
+ await ctx.storage.destroy()
29
+ }
30
+ })
31
+
32
+ // Test: Default constructor behavior
33
+ test('1_creates_user_with_default_values', () => {
34
+ const user = new EntityUser()
35
+
36
+ // Default values
37
+ expect(user.userId).toBe(0)
38
+ expect(user.identityKey).toBe('')
39
+ expect(user.created_at).toBeInstanceOf(Date)
40
+ expect(user.updated_at).toBeInstanceOf(Date)
41
+ expect(user.created_at <= user.updated_at).toBe(true)
42
+ })
43
+
44
+ // Test: Constructor with provided API object
45
+ test('2_creates_user_with_provided_api_object', () => {
46
+ const now = new Date()
47
+ const apiObject: TableUser = {
48
+ userId: 42,
49
+ created_at: now,
50
+ updated_at: now,
51
+ identityKey: 'testIdentityKey',
52
+ activeStorage: ''
53
+ }
54
+ const user = new EntityUser(apiObject)
55
+
56
+ // Verify all properties match the API object
57
+ expect(user.userId).toBe(42)
58
+ expect(user.identityKey).toBe('testIdentityKey')
59
+ expect(user.created_at).toBe(now)
60
+ expect(user.updated_at).toBe(now)
61
+ })
62
+
63
+ // Test: Getters and setters behavior
64
+ test('3_getters_and_setters_work_correctly', () => {
65
+ const user = new EntityUser()
66
+
67
+ // Test setting values
68
+ const now = new Date()
69
+ user.userId = 1001
70
+ user.identityKey = 'newIdentityKey'
71
+ user.created_at = now
72
+ user.updated_at = now
73
+ user.activeStorage = 'testActiveStorage' // Setting activeStorage
74
+
75
+ // Verify getters return the updated values
76
+ expect(user.userId).toBe(1001)
77
+ expect(user.identityKey).toBe('newIdentityKey')
78
+ expect(user.created_at).toBe(now)
79
+ expect(user.updated_at).toBe(now)
80
+ expect(user.activeStorage).toBe('testActiveStorage') // Getting activeStorage
81
+ })
82
+
83
+ // Test: equals method matching entities
84
+ test('5_equals_identifies_matching_entities', async () => {
85
+ for (const ctx1 of ctxs) {
86
+ for (const ctx2 of ctxs2) {
87
+ // Insert the first user into the first database
88
+ const user1 = new EntityUser({
89
+ userId: 2,
90
+ identityKey: 'key1',
91
+ created_at: new Date('2023-01-01'),
92
+ updated_at: new Date('2023-01-02'),
93
+ activeStorage: ''
94
+ })
95
+ await ctx1.activeStorage.insertUser(user1.toApi())
96
+
97
+ // Insert a matching user into the second database
98
+ const user2 = new EntityUser({
99
+ userId: 3, // Different ID
100
+ identityKey: 'key1', // Same key
101
+ created_at: new Date('2023-01-01'),
102
+ updated_at: new Date('2023-01-02'),
103
+ activeStorage: ''
104
+ })
105
+ await ctx2.activeStorage.insertUser(user2.toApi())
106
+
107
+ const syncMap = createSyncMap()
108
+
109
+ // Verify the entities match across databases
110
+ expect(user1.equals(user2.toApi(), syncMap)).toBe(true) // Should match
111
+ }
112
+ }
113
+ })
114
+
115
+ // Test: equals method non-matching entities
116
+ test('6_equals_identifies_non_matching_entities', async () => {
117
+ for (const ctx1 of ctxs) {
118
+ for (const ctx2 of ctxs2) {
119
+ // Insert the first user into the first database
120
+ const user1 = new EntityUser({
121
+ userId: 4,
122
+ identityKey: 'key2',
123
+ created_at: new Date('2023-01-01'),
124
+ updated_at: new Date('2023-01-02'),
125
+ activeStorage: ''
126
+ })
127
+ await ctx1.activeStorage.insertUser(user1.toApi())
128
+
129
+ // Insert a user with a different key into the second database
130
+ const user2 = new EntityUser({
131
+ userId: 5, // Different ID
132
+ identityKey: 'key3', // Different key
133
+ created_at: new Date('2023-01-01'),
134
+ updated_at: new Date('2023-01-02'),
135
+ activeStorage: ''
136
+ })
137
+ await ctx2.activeStorage.insertUser(user2.toApi())
138
+
139
+ const syncMap = createSyncMap()
140
+
141
+ // Verify the entities do not match across databases
142
+ expect(user1.equals(user2.toApi(), syncMap)).toBe(false) // Should not match
143
+ }
144
+ }
145
+ })
146
+
147
+ // Test: Handles edge cases in the constructor
148
+ test('7_handles_edge_cases_in_constructor', () => {
149
+ const now = new Date()
150
+ const pastDate = new Date(now.getTime() - 1000000)
151
+
152
+ // Provide incomplete API object
153
+ const partialApiObject: Partial<TableUser> = {
154
+ userId: 123,
155
+ created_at: pastDate
156
+ }
157
+
158
+ const user = new EntityUser(partialApiObject as TableUser)
159
+
160
+ // Default values should fill in missing fields
161
+ expect(user.userId).toBe(123)
162
+ expect(user.identityKey).toBeUndefined() // Default undefined
163
+ expect(user.created_at).toBe(pastDate)
164
+ expect(user.updated_at).toBeUndefined() // Default undefined
165
+ })
166
+
167
+ // Test: Handles large input values
168
+ test('8_handles_large_input_values', () => {
169
+ const now = new Date()
170
+ const largeUserId = Number.MAX_SAFE_INTEGER
171
+ const longIdentityKey = 'x'.repeat(1000)
172
+
173
+ const apiObject: TableUser = {
174
+ userId: largeUserId,
175
+ created_at: now,
176
+ updated_at: now,
177
+ identityKey: longIdentityKey,
178
+ activeStorage: ''
179
+ }
180
+ const user = new EntityUser(apiObject)
181
+
182
+ expect(user.userId).toBe(largeUserId)
183
+ expect(user.identityKey).toBe(longIdentityKey)
184
+ })
185
+
186
+ // Test: Handles empty API object
187
+ test('10_handles_empty_api_object', () => {
188
+ const emptyApiObject: TableUser = {} as TableUser
189
+ const user = new EntityUser(emptyApiObject)
190
+
191
+ // Default values should be applied but constructor does not set default values for empty object
192
+ expect(user.userId).toBeUndefined()
193
+ expect(user.identityKey).toBeUndefined()
194
+ expect(user.created_at).toBeUndefined()
195
+ expect(user.updated_at).toBeUndefined()
196
+ })
197
+
198
+ // Test: `id` getter and setter
199
+ test('11_id_getter_and_setter_work_correctly', () => {
200
+ const user = new EntityUser()
201
+
202
+ user.id = 123 // Test setter
203
+ expect(user.id).toBe(123) // Test getter
204
+ })
205
+
206
+ // Test: `entityName` getter
207
+ test('12_entityName_returns_User', () => {
208
+ const user = new EntityUser()
209
+
210
+ expect(user.entityName).toBe('user')
211
+ })
212
+
213
+ // Test: `entityTable` getter
214
+ test('13_entityTable_returns_users', () => {
215
+ const user = new EntityUser()
216
+
217
+ expect(user.entityTable).toBe('users')
218
+ })
219
+
220
+ // Test: `mergeExisting` updates user when `ei.updated_at` is newer
221
+ test('14_mergeExisting_updates_user_when_ei_updated_at_is_newer', async () => {
222
+ const user = new EntityUser({
223
+ userId: 1,
224
+ created_at: new Date('2023-01-01'),
225
+ updated_at: new Date('2023-01-01'),
226
+ identityKey: 'oldKey',
227
+ activeStorage: 'oldStorage'
228
+ })
229
+
230
+ const updatedEi: TableUser = {
231
+ userId: 1,
232
+ created_at: new Date('2023-01-01'),
233
+ updated_at: new Date('2023-02-01'), // Newer `updated_at`
234
+ identityKey: 'oldKey',
235
+ activeStorage: 'newStorage'
236
+ }
237
+
238
+ const result = await user.mergeExisting(
239
+ {
240
+ updateUser: async (id: number, data: TableUser) => {
241
+ expect(id).toBe(1)
242
+ expect(data.activeStorage).toBe('newStorage')
243
+ expect(data.updated_at).toBeInstanceOf(Date)
244
+ }
245
+ } as any,
246
+ undefined,
247
+ updatedEi,
248
+ undefined
249
+ )
250
+
251
+ expect(result).toBe(true)
252
+ expect(user.activeStorage).toBe('newStorage') // Updated `activeStorage`
253
+ })
254
+
255
+ // Test: `mergeExisting` does not update user when `ei.updated_at` is older
256
+ test('15_mergeExisting_does_not_update_user_when_ei_updated_at_is_older', async () => {
257
+ const user = new EntityUser({
258
+ userId: 1,
259
+ created_at: new Date('2023-01-01'),
260
+ updated_at: new Date('2023-02-01'),
261
+ identityKey: 'oldKey',
262
+ activeStorage: 'oldStorage'
263
+ })
264
+
265
+ const olderEi: TableUser = {
266
+ userId: 1,
267
+ created_at: new Date('2023-01-01'),
268
+ updated_at: new Date('2023-01-01'), // Older `updated_at`
269
+ identityKey: 'oldKey',
270
+ activeStorage: 'newStorage'
271
+ }
272
+
273
+ const result = await user.mergeExisting(
274
+ {
275
+ updateUser: async () => {
276
+ throw new Error('This should not be called')
277
+ }
278
+ } as any,
279
+ undefined,
280
+ olderEi,
281
+ undefined
282
+ )
283
+
284
+ expect(result).toBe(false)
285
+ expect(user.activeStorage).toBe('oldStorage')
286
+ })
287
+
288
+ // Test: `mergeExisting` updates user and uses `trx` when provided
289
+ test('16_mergeExisting_updates_user_with_trx', async () => {
290
+ const user = new EntityUser({
291
+ userId: 1,
292
+ created_at: new Date('2023-01-01'),
293
+ updated_at: new Date('2023-01-01'),
294
+ identityKey: 'oldKey',
295
+ activeStorage: 'oldStorage'
296
+ })
297
+
298
+ const updatedEi: TableUser = {
299
+ userId: 1,
300
+ created_at: new Date('2023-01-01'),
301
+ updated_at: new Date('2023-02-01'), // Newer `updated_at`
302
+ identityKey: 'oldKey',
303
+ activeStorage: 'newStorage'
304
+ }
305
+
306
+ const mockTrx = {}
307
+
308
+ const result = await user.mergeExisting(
309
+ {
310
+ updateUser: async (id: number, data: TableUser, trx: any) => {
311
+ expect(id).toBe(1)
312
+ expect(data.activeStorage).toBe('newStorage')
313
+ expect(data.updated_at).toBeInstanceOf(Date)
314
+ expect(trx).toBe(mockTrx)
315
+ }
316
+ } as any,
317
+ undefined,
318
+ updatedEi,
319
+ undefined,
320
+ mockTrx
321
+ )
322
+
323
+ expect(result).toBe(true)
324
+ expect(user.activeStorage).toBe('newStorage')
325
+ })
326
+
327
+ // Test: `mergeNew` always throws an error
328
+ test('17_mergeNew_always_throws_error', async () => {
329
+ const user = new EntityUser()
330
+ const storage = {} // Placeholder for `storage`, not used in this case.
331
+ const userId = 123 // Example userId
332
+ const syncMap = {} // Placeholder for `syncMap`, not used in this case.
333
+ const trx = undefined // Optional transaction token, set as undefined.
334
+
335
+ // The method should throw an error when called
336
+ await expect(user.mergeNew(storage as any, userId, syncMap as any, trx)).rejects.toThrowError(
337
+ 'a sync chunk merge must never create a new user'
338
+ )
339
+ })
340
+ })
@@ -0,0 +1,16 @@
1
+ export * from './EntityBase'
2
+ export * from './EntitySyncState'
3
+ export * from './EntityProvenTx'
4
+ export * from './EntityProvenTxReq'
5
+ export * from './MergeEntity'
6
+ export * from './EntityOutputBasket'
7
+ export * from './EntityUser'
8
+ export * from './EntityTxLabelMap'
9
+ export * from './EntityTxLabel'
10
+ export * from './EntityOutputTag'
11
+ export * from './EntityOutputTagMap'
12
+ export * from './EntityCommission'
13
+ export * from './EntityCertificate'
14
+ export * from './EntityCertificateField'
15
+ export * from './EntityTransaction'
16
+ export * from './EntityOutput'
@@ -0,0 +1,21 @@
1
+ import { Base64String, HexString, OutpointString, PubKeyHex } from '@bsv/sdk'
2
+ import { sdk, TableCertificateField } from '../../../index.client'
3
+
4
+ export interface TableCertificate extends sdk.EntityTimeStamp {
5
+ created_at: Date
6
+ updated_at: Date
7
+ certificateId: number
8
+ userId: number
9
+ type: Base64String
10
+ serialNumber: Base64String
11
+ certifier: PubKeyHex
12
+ subject: PubKeyHex
13
+ verifier?: PubKeyHex
14
+ revocationOutpoint: OutpointString
15
+ signature: HexString
16
+ isDeleted: boolean
17
+ }
18
+
19
+ export interface TableCertificateX extends TableCertificate {
20
+ fields?: TableCertificateField[]
21
+ }
@@ -0,0 +1,12 @@
1
+ import { Base64String } from '@bsv/sdk'
2
+ import { sdk } from '../../../index.client'
3
+
4
+ export interface TableCertificateField extends sdk.EntityTimeStamp {
5
+ created_at: Date
6
+ updated_at: Date
7
+ userId: number
8
+ certificateId: number
9
+ fieldName: string
10
+ fieldValue: string
11
+ masterKey: Base64String
12
+ }
@@ -0,0 +1,13 @@
1
+ import { sdk } from '../../../index.client'
2
+
3
+ export interface TableCommission extends sdk.EntityTimeStamp {
4
+ created_at: Date
5
+ updated_at: Date
6
+ commissionId: number
7
+ userId: number
8
+ transactionId: number
9
+ satoshis: number
10
+ keyOffset: string
11
+ isRedeemed: boolean
12
+ lockingScript: number[]
13
+ }
@@ -0,0 +1,9 @@
1
+ import { sdk } from '../../../index.client'
2
+
3
+ export interface TableMonitorEvent extends sdk.EntityTimeStamp {
4
+ created_at: Date
5
+ updated_at: Date
6
+ id: number
7
+ event: string
8
+ details?: string
9
+ }
@@ -0,0 +1,64 @@
1
+ import { Base64String, DescriptionString5to50Bytes, PubKeyHex } from '@bsv/sdk'
2
+ import { TableOutputBasket, TableOutputTag } from '.'
3
+ import { sdk } from '../../../index.client'
4
+
5
+ export interface TableOutput extends sdk.EntityTimeStamp {
6
+ created_at: Date
7
+ updated_at: Date
8
+ outputId: number
9
+ userId: number
10
+ transactionId: number
11
+ basketId?: number
12
+ spendable: boolean
13
+ change: boolean
14
+ outputDescription: DescriptionString5to50Bytes
15
+ vout: number
16
+ satoshis: number
17
+ providedBy: sdk.StorageProvidedBy
18
+ purpose: string
19
+ type: string
20
+ txid?: string
21
+ senderIdentityKey?: PubKeyHex
22
+ derivationPrefix?: Base64String
23
+ derivationSuffix?: Base64String
24
+ customInstructions?: string
25
+ spentBy?: number
26
+ sequenceNumber?: number
27
+ spendingDescription?: string
28
+ scriptLength?: number
29
+ scriptOffset?: number
30
+ lockingScript?: number[]
31
+ }
32
+
33
+ export interface TableOutputX extends TableOutput {
34
+ basket?: TableOutputBasket
35
+ tags?: TableOutputTag[]
36
+ }
37
+
38
+ export const outputColumnsWithoutLockingScript = [
39
+ 'created_at',
40
+ 'updated_at',
41
+ 'outputId',
42
+ 'userId',
43
+ 'transactionId',
44
+ 'basketId',
45
+ 'spendable',
46
+ 'change',
47
+ 'vout',
48
+ 'satoshis',
49
+ 'providedBy',
50
+ 'purpose',
51
+ 'type',
52
+ 'outputDescription',
53
+ 'txid',
54
+ 'senderIdentityKey',
55
+ 'derivationPrefix',
56
+ 'derivationSuffix',
57
+ 'customInstructions',
58
+ 'spentBy',
59
+ 'sequenceNumber',
60
+ 'spendingDescription',
61
+ 'scriptLength',
62
+ 'scriptOffset'
63
+ //'lockingScript',
64
+ ]
@@ -0,0 +1,12 @@
1
+ import { sdk } from '../../../index.client'
2
+
3
+ export interface TableOutputBasket extends sdk.EntityTimeStamp {
4
+ created_at: Date
5
+ updated_at: Date
6
+ basketId: number
7
+ userId: number
8
+ name: string
9
+ numberOfDesiredUTXOs: number
10
+ minimumDesiredUTXOValue: number
11
+ isDeleted: boolean
12
+ }
@@ -0,0 +1,10 @@
1
+ import { sdk } from '../../../index.client'
2
+
3
+ export interface TableOutputTag extends sdk.EntityTimeStamp {
4
+ created_at: Date
5
+ updated_at: Date
6
+ outputTagId: number
7
+ userId: number
8
+ tag: string
9
+ isDeleted: boolean
10
+ }
@@ -0,0 +1,9 @@
1
+ import { sdk } from '../../../index.client'
2
+
3
+ export interface TableOutputTagMap extends sdk.EntityTimeStamp {
4
+ created_at: Date
5
+ updated_at: Date
6
+ outputTagId: number
7
+ outputId: number
8
+ isDeleted: boolean
9
+ }
@@ -0,0 +1,14 @@
1
+ import { sdk } from '../../../index.client'
2
+
3
+ export interface TableProvenTx extends sdk.EntityTimeStamp {
4
+ created_at: Date
5
+ updated_at: Date
6
+ provenTxId: number
7
+ txid: string
8
+ height: number
9
+ index: number
10
+ merklePath: number[]
11
+ rawTx: number[]
12
+ blockHash: string
13
+ merkleRoot: string
14
+ }
@@ -0,0 +1,65 @@
1
+ import { sdk } from '../../../index.client'
2
+
3
+ export interface TableProvenTxReq extends TableProvenTxReqDynamics {
4
+ created_at: Date
5
+ updated_at: Date
6
+ provenTxReqId: number
7
+ provenTxId?: number
8
+ status: sdk.ProvenTxReqStatus
9
+ /**
10
+ * Count of how many times a service has been asked about this txid
11
+ */
12
+ attempts: number
13
+ /**
14
+ * Set to true when a terminal status has been set and notification has occurred.
15
+ */
16
+ notified: boolean
17
+ txid: string
18
+ /**
19
+ * If valid, a unique string identifying a batch of transactions to be sent together for processing.
20
+ */
21
+ batch?: string
22
+ /**
23
+ * JSON string of processing history.
24
+ * Parses to `ProvenTxReqHistoryApi`.
25
+ */
26
+ history: string
27
+ /**
28
+ * JSON string of data to drive notifications when this request completes.
29
+ * Parses to `ProvenTxReqNotifyApi`.
30
+ */
31
+ notify: string
32
+ rawTx: number[]
33
+ inputBEEF?: number[]
34
+ }
35
+
36
+ /**
37
+ * Table properties that may change after initial record insertion.
38
+ */
39
+ export interface TableProvenTxReqDynamics extends sdk.EntityTimeStamp {
40
+ updated_at: Date
41
+ provenTxId?: number
42
+ status: sdk.ProvenTxReqStatus
43
+ /**
44
+ * Count of how many times a service has been asked about this txid
45
+ */
46
+ attempts: number
47
+ /**
48
+ * Set to true when a terminal status has been set and notification has occurred.
49
+ */
50
+ notified: boolean
51
+ /**
52
+ * If valid, a unique string identifying a batch of transactions to be sent together for processing.
53
+ */
54
+ batch?: string
55
+ /**
56
+ * JSON string of processing history.
57
+ * Parses to `ProvenTxReqHistoryApi`.
58
+ */
59
+ history: string
60
+ /**
61
+ * JSON string of data to drive notifications when this request completes.
62
+ * Parses to `ProvenTxReqNotifyApi`.
63
+ */
64
+ notify: string
65
+ }
@@ -0,0 +1,17 @@
1
+ import { sdk } from '../../../index.client'
2
+
3
+ export interface TableSettings extends sdk.StorageIdentity, sdk.EntityTimeStamp {
4
+ created_at: Date
5
+ updated_at: Date
6
+ /**
7
+ * The identity key (public key) assigned to this storage
8
+ */
9
+ storageIdentityKey: string
10
+ /**
11
+ * The human readable name assigned to this storage.
12
+ */
13
+ storageName: string
14
+ chain: sdk.Chain
15
+ dbtype: 'SQLite' | 'MySQL' | 'IndexedDB'
16
+ maxOutputScript: number
17
+ }
@@ -0,0 +1,18 @@
1
+ import { sdk } from '../../../index.client'
2
+
3
+ export interface TableSyncState extends sdk.EntityTimeStamp {
4
+ created_at: Date
5
+ updated_at: Date
6
+ syncStateId: number
7
+ userId: number
8
+ storageIdentityKey: string
9
+ storageName: string
10
+ status: sdk.SyncStatus
11
+ init: boolean
12
+ refNum: string
13
+ syncMap: string
14
+ when?: Date
15
+ satoshis?: number
16
+ errorLocal?: string
17
+ errorOther?: string
18
+ }
@@ -0,0 +1,54 @@
1
+ import { Base64String } from '@bsv/sdk'
2
+ import { sdk } from '../../../index.client'
3
+
4
+ export interface TableTransaction extends sdk.EntityTimeStamp {
5
+ created_at: Date
6
+ updated_at: Date
7
+ transactionId: number
8
+ userId: number
9
+ provenTxId?: number
10
+ status: sdk.TransactionStatus
11
+ /**
12
+ * max length of 64, hex encoded
13
+ */
14
+ reference: Base64String
15
+ /**
16
+ * true if transaction originated in this wallet, change returns to it.
17
+ * false for a transaction created externally and handed in to this wallet.
18
+ */
19
+ isOutgoing: boolean
20
+ satoshis: number
21
+ description: string
22
+ /**
23
+ * If not undefined, must match value in associated rawTransaction.
24
+ */
25
+ version?: number
26
+ /**
27
+ * Optional. Default is zero.
28
+ * When the transaction can be processed into a block:
29
+ * >= 500,000,000 values are interpreted as minimum required unix time stamps in seconds
30
+ * < 500,000,000 values are interpreted as minimum required block height
31
+ */
32
+ lockTime?: number
33
+ txid?: string
34
+ inputBEEF?: number[]
35
+ rawTx?: number[]
36
+ }
37
+
38
+ export const transactionColumnsWithoutRawTx = [
39
+ 'created_at',
40
+ 'updated_at',
41
+ 'transactionId',
42
+ 'userId',
43
+ 'provenTxId',
44
+ 'status',
45
+ 'reference',
46
+ 'isOutgoing',
47
+ 'satoshis',
48
+ 'version',
49
+ 'lockTime',
50
+ 'description',
51
+ 'txid'
52
+ // 'inputBEEF',
53
+ // 'rawTx',
54
+ ]