@bsv/wallet-toolbox 1.3.3 → 1.3.4

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 (320) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/docs/client.md +97 -28
  3. package/docs/services.md +2 -1
  4. package/docs/setup.md +404 -14
  5. package/docs/storage.md +720 -42
  6. package/docs/wallet.md +97 -28
  7. package/out/src/Setup.d.ts +2 -69
  8. package/out/src/Setup.d.ts.map +1 -1
  9. package/out/src/Setup.js.map +1 -1
  10. package/out/src/SetupClient.d.ts +126 -0
  11. package/out/src/SetupClient.d.ts.map +1 -0
  12. package/out/src/SetupClient.js +220 -0
  13. package/out/src/SetupClient.js.map +1 -0
  14. package/out/src/SetupWallet.d.ts +100 -0
  15. package/out/src/SetupWallet.d.ts.map +1 -0
  16. package/out/src/{storage/schema/tables/Certificate.js → SetupWallet.js} +1 -1
  17. package/out/src/SetupWallet.js.map +1 -0
  18. package/out/src/index.all.d.ts +2 -0
  19. package/out/src/index.all.d.ts.map +1 -1
  20. package/out/src/index.all.js +2 -0
  21. package/out/src/index.all.js.map +1 -1
  22. package/out/src/index.client.d.ts +1 -0
  23. package/out/src/index.client.d.ts.map +1 -1
  24. package/out/src/index.client.js +1 -0
  25. package/out/src/index.client.js.map +1 -1
  26. package/out/src/monitor/Monitor.d.ts.map +1 -1
  27. package/out/src/monitor/Monitor.js +4 -0
  28. package/out/src/monitor/Monitor.js.map +1 -1
  29. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  30. package/out/src/monitor/MonitorDaemon.js +0 -3
  31. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  32. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  33. package/out/src/monitor/tasks/TaskUnFail.js +1 -2
  34. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  35. package/out/src/sdk/WalletServices.interfaces.d.ts +1 -1
  36. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  37. package/out/src/services/__tests/postBeef.test.js +1 -1
  38. package/out/src/services/__tests/postBeef.test.js.map +1 -1
  39. package/out/src/storage/StorageIdb.d.ts +203 -0
  40. package/out/src/storage/StorageIdb.d.ts.map +1 -0
  41. package/out/src/storage/StorageIdb.js +2289 -0
  42. package/out/src/storage/StorageIdb.js.map +1 -0
  43. package/out/src/storage/StorageKnex.d.ts +6 -6
  44. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  45. package/out/src/storage/StorageKnex.js +9 -29
  46. package/out/src/storage/StorageKnex.js.map +1 -1
  47. package/out/src/storage/StorageProvider.d.ts +3 -1
  48. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  49. package/out/src/storage/StorageProvider.js +22 -0
  50. package/out/src/storage/StorageProvider.js.map +1 -1
  51. package/out/src/storage/StorageReader.d.ts +1 -1
  52. package/out/src/storage/StorageReader.d.ts.map +1 -1
  53. package/out/src/storage/StorageReader.js +5 -0
  54. package/out/src/storage/StorageReader.js.map +1 -1
  55. package/out/src/storage/__test/StorageIdb.test.d.ts +2 -0
  56. package/out/src/storage/__test/StorageIdb.test.d.ts.map +1 -0
  57. package/out/src/storage/__test/StorageIdb.test.js +16 -0
  58. package/out/src/storage/__test/StorageIdb.test.js.map +1 -0
  59. package/out/src/storage/methods/ListActionsSpecOp.d.ts +16 -0
  60. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -0
  61. package/out/src/storage/methods/ListActionsSpecOp.js +40 -0
  62. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -0
  63. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +26 -0
  64. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -0
  65. package/out/src/storage/methods/ListOutputsSpecOp.js +71 -0
  66. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -0
  67. package/out/src/storage/methods/listActionsIdb.d.ts +5 -0
  68. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -0
  69. package/out/src/storage/methods/listActionsIdb.js +155 -0
  70. package/out/src/storage/methods/listActionsIdb.js.map +1 -0
  71. package/out/src/storage/methods/{listActions.d.ts → listActionsKnex.d.ts} +1 -1
  72. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -0
  73. package/out/src/storage/methods/{listActions.js → listActionsKnex.js} +3 -34
  74. package/out/src/storage/methods/listActionsKnex.js.map +1 -0
  75. package/out/src/storage/methods/listOutputsIdb.d.ts +5 -0
  76. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -0
  77. package/out/src/storage/methods/listOutputsIdb.js +181 -0
  78. package/out/src/storage/methods/listOutputsIdb.js.map +1 -0
  79. package/out/src/storage/methods/{listOutputs.d.ts → listOutputsKnex.d.ts} +1 -1
  80. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -0
  81. package/out/src/storage/methods/{listOutputs.js → listOutputsKnex.js} +7 -76
  82. package/out/src/storage/methods/listOutputsKnex.js.map +1 -0
  83. package/out/src/storage/methods/purgeDataIdb.d.ts +4 -0
  84. package/out/src/storage/methods/purgeDataIdb.d.ts.map +1 -0
  85. package/out/src/storage/methods/purgeDataIdb.js +9 -0
  86. package/out/src/storage/methods/purgeDataIdb.js.map +1 -0
  87. package/out/src/storage/methods/reviewStatus.d.ts +11 -0
  88. package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
  89. package/out/src/storage/methods/reviewStatus.js +11 -0
  90. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  91. package/out/src/storage/methods/reviewStatusIdb.d.ts +20 -0
  92. package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -0
  93. package/out/src/storage/methods/reviewStatusIdb.js +35 -0
  94. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -0
  95. package/out/src/storage/schema/StorageIdbSchema.d.ts +133 -0
  96. package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -0
  97. package/out/src/storage/schema/{tables/CertificateField.js → StorageIdbSchema.js} +1 -1
  98. package/out/src/storage/schema/StorageIdbSchema.js.map +1 -0
  99. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js +1 -1
  100. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js.map +1 -1
  101. package/out/src/storage/schema/tables/{Certificate.d.ts → TableCertificate.d.ts} +1 -1
  102. package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -0
  103. package/out/src/storage/schema/tables/TableCertificate.js +3 -0
  104. package/out/src/storage/schema/tables/TableCertificate.js.map +1 -0
  105. package/out/src/storage/schema/tables/{CertificateField.d.ts → TableCertificateField.d.ts} +1 -1
  106. package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -0
  107. package/out/src/storage/schema/tables/TableCertificateField.js +3 -0
  108. package/out/src/storage/schema/tables/TableCertificateField.js.map +1 -0
  109. package/out/src/storage/schema/tables/{Commission.d.ts → TableCommission.d.ts} +1 -1
  110. package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -0
  111. package/out/src/storage/schema/tables/TableCommission.js +3 -0
  112. package/out/src/storage/schema/tables/TableCommission.js.map +1 -0
  113. package/out/src/storage/schema/tables/{MonitorEvent.d.ts → TableMonitorEvent.d.ts} +1 -1
  114. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -0
  115. package/out/src/storage/schema/tables/TableMonitorEvent.js +3 -0
  116. package/out/src/storage/schema/tables/TableMonitorEvent.js.map +1 -0
  117. package/out/src/storage/schema/tables/{Output.d.ts → TableOutput.d.ts} +1 -1
  118. package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -0
  119. package/out/src/storage/schema/tables/{Output.js → TableOutput.js} +1 -1
  120. package/out/src/storage/schema/tables/TableOutput.js.map +1 -0
  121. package/out/src/storage/schema/tables/{OutputBasket.d.ts → TableOutputBasket.d.ts} +1 -1
  122. package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -0
  123. package/out/src/storage/schema/tables/TableOutputBasket.js +3 -0
  124. package/out/src/storage/schema/tables/TableOutputBasket.js.map +1 -0
  125. package/out/src/storage/schema/tables/{OutputTag.d.ts → TableOutputTag.d.ts} +1 -1
  126. package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -0
  127. package/out/src/storage/schema/tables/{MonitorEvent.js → TableOutputTag.js} +1 -1
  128. package/out/src/storage/schema/tables/TableOutputTag.js.map +1 -0
  129. package/out/src/storage/schema/tables/{OutputTagMap.d.ts → TableOutputTagMap.d.ts} +1 -1
  130. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -0
  131. package/out/src/storage/schema/tables/TableOutputTagMap.js +3 -0
  132. package/out/src/storage/schema/tables/TableOutputTagMap.js.map +1 -0
  133. package/out/src/storage/schema/tables/{ProvenTx.d.ts → TableProvenTx.d.ts} +1 -1
  134. package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -0
  135. package/out/src/storage/schema/tables/{Commission.js → TableProvenTx.js} +1 -1
  136. package/out/src/storage/schema/tables/TableProvenTx.js.map +1 -0
  137. package/out/src/storage/schema/tables/{ProvenTxReq.d.ts → TableProvenTxReq.d.ts} +1 -1
  138. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -0
  139. package/out/src/storage/schema/tables/TableProvenTxReq.js +3 -0
  140. package/out/src/storage/schema/tables/TableProvenTxReq.js.map +1 -0
  141. package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
  142. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  143. package/out/src/storage/schema/tables/{SyncState.d.ts → TableSyncState.d.ts} +1 -1
  144. package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -0
  145. package/out/src/storage/schema/tables/TableSyncState.js +3 -0
  146. package/out/src/storage/schema/tables/TableSyncState.js.map +1 -0
  147. package/out/src/storage/schema/tables/{Transaction.d.ts → TableTransaction.d.ts} +1 -1
  148. package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -0
  149. package/out/src/storage/schema/tables/{Transaction.js → TableTransaction.js} +1 -1
  150. package/out/src/storage/schema/tables/TableTransaction.js.map +1 -0
  151. package/out/src/storage/schema/tables/{TxLabel.d.ts → TableTxLabel.d.ts} +1 -1
  152. package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -0
  153. package/out/src/storage/schema/tables/{OutputBasket.js → TableTxLabel.js} +1 -1
  154. package/out/src/storage/schema/tables/TableTxLabel.js.map +1 -0
  155. package/out/src/storage/schema/tables/{TxLabelMap.d.ts → TableTxLabelMap.d.ts} +1 -1
  156. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -0
  157. package/out/src/storage/schema/tables/TableTxLabelMap.js +3 -0
  158. package/out/src/storage/schema/tables/TableTxLabelMap.js.map +1 -0
  159. package/out/src/storage/schema/tables/{User.d.ts → TableUser.d.ts} +1 -1
  160. package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -0
  161. package/out/src/storage/schema/tables/{SyncState.js → TableUser.js} +1 -1
  162. package/out/src/storage/schema/tables/TableUser.js.map +1 -0
  163. package/out/src/storage/schema/tables/index.d.ts +15 -15
  164. package/out/src/storage/schema/tables/index.d.ts.map +1 -1
  165. package/out/src/storage/schema/tables/index.js +15 -15
  166. package/out/src/storage/schema/tables/index.js.map +1 -1
  167. package/out/test/Wallet/local/localWallet2.man.test.js +4 -0
  168. package/out/test/Wallet/local/localWallet2.man.test.js.map +1 -1
  169. package/out/test/Wallet/support/operations.man.test.d.ts +2 -0
  170. package/out/test/Wallet/support/operations.man.test.d.ts.map +1 -0
  171. package/out/test/Wallet/support/{opers1.man.test.js → operations.man.test.js} +39 -4
  172. package/out/test/Wallet/support/operations.man.test.js.map +1 -0
  173. package/out/test/storage/find.test.js +1 -1
  174. package/out/test/storage/find.test.js.map +1 -1
  175. package/out/test/storage/idb/allocateChange.test.d.ts +2 -0
  176. package/out/test/storage/idb/allocateChange.test.d.ts.map +1 -0
  177. package/out/test/storage/idb/allocateChange.test.js +110 -0
  178. package/out/test/storage/idb/allocateChange.test.js.map +1 -0
  179. package/out/test/storage/idb/count.test.d.ts +2 -0
  180. package/out/test/storage/idb/count.test.d.ts.map +1 -0
  181. package/out/test/storage/idb/count.test.js +129 -0
  182. package/out/test/storage/idb/count.test.js.map +1 -0
  183. package/out/test/storage/idb/find.test.d.ts +2 -0
  184. package/out/test/storage/idb/find.test.d.ts.map +1 -0
  185. package/out/test/storage/idb/find.test.js +131 -0
  186. package/out/test/storage/idb/find.test.js.map +1 -0
  187. package/out/test/storage/idb/idbSpeed.test.d.ts +2 -0
  188. package/out/test/storage/idb/idbSpeed.test.d.ts.map +1 -0
  189. package/out/test/storage/idb/idbSpeed.test.js +29 -0
  190. package/out/test/storage/idb/idbSpeed.test.js.map +1 -0
  191. package/out/test/storage/idb/insert.test.d.ts +2 -0
  192. package/out/test/storage/idb/insert.test.d.ts.map +1 -0
  193. package/out/test/storage/idb/insert.test.js +242 -0
  194. package/out/test/storage/idb/insert.test.js.map +1 -0
  195. package/out/test/storage/idb/transactionAbort.test.d.ts +2 -0
  196. package/out/test/storage/idb/transactionAbort.test.d.ts.map +1 -0
  197. package/out/test/storage/idb/transactionAbort.test.js +97 -0
  198. package/out/test/storage/idb/transactionAbort.test.js.map +1 -0
  199. package/out/test/storage/idb/update.test.d.ts +2 -0
  200. package/out/test/storage/idb/update.test.d.ts.map +1 -0
  201. package/out/test/storage/idb/update.test.js +902 -0
  202. package/out/test/storage/idb/update.test.js.map +1 -0
  203. package/out/test/storage/update.test.js +2 -2
  204. package/out/test/storage/update.test.js.map +1 -1
  205. package/out/test/utils/TestUtilsWalletStorage.d.ts +24 -1
  206. package/out/test/utils/TestUtilsWalletStorage.d.ts.map +1 -1
  207. package/out/test/utils/TestUtilsWalletStorage.js +147 -3
  208. package/out/test/utils/TestUtilsWalletStorage.js.map +1 -1
  209. package/out/test/wallet/list/listActions.test.d.ts +1 -1
  210. package/out/test/wallet/list/listActions.test.d.ts.map +1 -1
  211. package/out/test/wallet/list/listActions.test.js +9 -3
  212. package/out/test/wallet/list/listActions.test.js.map +1 -1
  213. package/out/test/wallet/list/listOutputs.test.d.ts +1 -1
  214. package/out/test/wallet/list/listOutputs.test.d.ts.map +1 -1
  215. package/out/test/wallet/list/listOutputs.test.js +34 -219
  216. package/out/test/wallet/list/listOutputs.test.js.map +1 -1
  217. package/out/tsconfig.all.tsbuildinfo +1 -1
  218. package/package.json +3 -1
  219. package/src/Setup.ts +1 -71
  220. package/src/SetupClient.ts +312 -0
  221. package/src/SetupWallet.ts +105 -0
  222. package/src/index.all.ts +2 -0
  223. package/src/index.client.ts +1 -0
  224. package/src/monitor/Monitor.ts +4 -0
  225. package/src/monitor/MonitorDaemon.ts +0 -1
  226. package/src/monitor/tasks/TaskUnFail.ts +3 -4
  227. package/src/sdk/WalletServices.interfaces.ts +1 -2
  228. package/src/services/__tests/postBeef.test.ts +1 -1
  229. package/src/storage/StorageIdb.ts +2298 -0
  230. package/src/storage/StorageKnex.ts +7 -32
  231. package/src/storage/StorageProvider.ts +28 -0
  232. package/src/storage/StorageReader.ts +5 -1
  233. package/src/storage/__test/StorageIdb.test.ts +15 -0
  234. package/src/storage/methods/ListActionsSpecOp.ts +68 -0
  235. package/src/storage/methods/ListOutputsSpecOp.ts +125 -0
  236. package/src/storage/methods/listActionsIdb.ts +181 -0
  237. package/src/storage/methods/{listActions.ts → listActionsKnex.ts} +2 -64
  238. package/src/storage/methods/listOutputsIdb.ts +199 -0
  239. package/src/storage/methods/{listOutputs.ts → listOutputsKnex.ts} +9 -133
  240. package/src/storage/methods/purgeDataIdb.ts +15 -0
  241. package/src/storage/methods/reviewStatus.ts +11 -0
  242. package/src/storage/methods/reviewStatusIdb.ts +43 -0
  243. package/src/storage/schema/StorageIdbSchema.ts +150 -0
  244. package/src/storage/schema/entities/__tests/ProvenTxTests.test.ts +1 -1
  245. package/src/storage/schema/tables/TableSettings.ts +1 -1
  246. package/src/storage/schema/tables/index.ts +15 -15
  247. package/test/Wallet/local/localWallet2.man.test.ts +5 -0
  248. package/test/Wallet/support/{opers1.man.test.ts → operations.man.test.ts} +41 -12
  249. package/test/storage/find.test.ts +1 -1
  250. package/test/storage/idb/allocateChange.test.ts +251 -0
  251. package/test/storage/idb/count.test.ts +158 -0
  252. package/test/storage/idb/find.test.ts +177 -0
  253. package/test/storage/idb/idbSpeed.test.ts +34 -0
  254. package/test/storage/idb/insert.test.ts +268 -0
  255. package/test/storage/idb/transactionAbort.test.ts +108 -0
  256. package/test/storage/idb/update.test.ts +1000 -0
  257. package/test/storage/update.test.ts +2 -2
  258. package/test/utils/TestUtilsWalletStorage.ts +188 -4
  259. package/test/wallet/list/listActions.test.ts +15 -5
  260. package/test/wallet/list/listOutputs.test.ts +29 -214
  261. package/out/src/storage/methods/listActions.d.ts.map +0 -1
  262. package/out/src/storage/methods/listActions.js.map +0 -1
  263. package/out/src/storage/methods/listOutputs.d.ts.map +0 -1
  264. package/out/src/storage/methods/listOutputs.js.map +0 -1
  265. package/out/src/storage/schema/tables/Certificate.d.ts.map +0 -1
  266. package/out/src/storage/schema/tables/Certificate.js.map +0 -1
  267. package/out/src/storage/schema/tables/CertificateField.d.ts.map +0 -1
  268. package/out/src/storage/schema/tables/CertificateField.js.map +0 -1
  269. package/out/src/storage/schema/tables/Commission.d.ts.map +0 -1
  270. package/out/src/storage/schema/tables/Commission.js.map +0 -1
  271. package/out/src/storage/schema/tables/MonitorEvent.d.ts.map +0 -1
  272. package/out/src/storage/schema/tables/MonitorEvent.js.map +0 -1
  273. package/out/src/storage/schema/tables/Output.d.ts.map +0 -1
  274. package/out/src/storage/schema/tables/Output.js.map +0 -1
  275. package/out/src/storage/schema/tables/OutputBasket.d.ts.map +0 -1
  276. package/out/src/storage/schema/tables/OutputBasket.js.map +0 -1
  277. package/out/src/storage/schema/tables/OutputTag.d.ts.map +0 -1
  278. package/out/src/storage/schema/tables/OutputTag.js +0 -3
  279. package/out/src/storage/schema/tables/OutputTag.js.map +0 -1
  280. package/out/src/storage/schema/tables/OutputTagMap.d.ts.map +0 -1
  281. package/out/src/storage/schema/tables/OutputTagMap.js +0 -3
  282. package/out/src/storage/schema/tables/OutputTagMap.js.map +0 -1
  283. package/out/src/storage/schema/tables/ProvenTx.d.ts.map +0 -1
  284. package/out/src/storage/schema/tables/ProvenTx.js +0 -3
  285. package/out/src/storage/schema/tables/ProvenTx.js.map +0 -1
  286. package/out/src/storage/schema/tables/ProvenTxReq.d.ts.map +0 -1
  287. package/out/src/storage/schema/tables/ProvenTxReq.js +0 -3
  288. package/out/src/storage/schema/tables/ProvenTxReq.js.map +0 -1
  289. package/out/src/storage/schema/tables/SyncState.d.ts.map +0 -1
  290. package/out/src/storage/schema/tables/SyncState.js.map +0 -1
  291. package/out/src/storage/schema/tables/Transaction.d.ts.map +0 -1
  292. package/out/src/storage/schema/tables/Transaction.js.map +0 -1
  293. package/out/src/storage/schema/tables/TxLabel.d.ts.map +0 -1
  294. package/out/src/storage/schema/tables/TxLabel.js +0 -3
  295. package/out/src/storage/schema/tables/TxLabel.js.map +0 -1
  296. package/out/src/storage/schema/tables/TxLabelMap.d.ts.map +0 -1
  297. package/out/src/storage/schema/tables/TxLabelMap.js +0 -3
  298. package/out/src/storage/schema/tables/TxLabelMap.js.map +0 -1
  299. package/out/src/storage/schema/tables/User.d.ts.map +0 -1
  300. package/out/src/storage/schema/tables/User.js +0 -3
  301. package/out/src/storage/schema/tables/User.js.map +0 -1
  302. package/out/test/Wallet/support/opers1.man.test.d.ts +0 -2
  303. package/out/test/Wallet/support/opers1.man.test.d.ts.map +0 -1
  304. package/out/test/Wallet/support/opers1.man.test.js.map +0 -1
  305. package/unlock-migrations.sh +0 -41
  306. /package/src/storage/schema/tables/{Certificate.ts → TableCertificate.ts} +0 -0
  307. /package/src/storage/schema/tables/{CertificateField.ts → TableCertificateField.ts} +0 -0
  308. /package/src/storage/schema/tables/{Commission.ts → TableCommission.ts} +0 -0
  309. /package/src/storage/schema/tables/{MonitorEvent.ts → TableMonitorEvent.ts} +0 -0
  310. /package/src/storage/schema/tables/{Output.ts → TableOutput.ts} +0 -0
  311. /package/src/storage/schema/tables/{OutputBasket.ts → TableOutputBasket.ts} +0 -0
  312. /package/src/storage/schema/tables/{OutputTag.ts → TableOutputTag.ts} +0 -0
  313. /package/src/storage/schema/tables/{OutputTagMap.ts → TableOutputTagMap.ts} +0 -0
  314. /package/src/storage/schema/tables/{ProvenTx.ts → TableProvenTx.ts} +0 -0
  315. /package/src/storage/schema/tables/{ProvenTxReq.ts → TableProvenTxReq.ts} +0 -0
  316. /package/src/storage/schema/tables/{SyncState.ts → TableSyncState.ts} +0 -0
  317. /package/src/storage/schema/tables/{Transaction.ts → TableTransaction.ts} +0 -0
  318. /package/src/storage/schema/tables/{TxLabel.ts → TableTxLabel.ts} +0 -0
  319. /package/src/storage/schema/tables/{TxLabelMap.ts → TableTxLabelMap.ts} +0 -0
  320. /package/src/storage/schema/tables/{User.ts → TableUser.ts} +0 -0
@@ -0,0 +1,199 @@
1
+ import { Beef, ListOutputsResult, OriginatorDomainNameStringUnder250Bytes, WalletOutput } from '@bsv/sdk'
2
+ import { TableOutput, TableOutputBasket, TableOutputTag } from '../index.client'
3
+ import { asString, sdk, verifyId, verifyOne } from '../../index.client'
4
+ import { getBasketToSpecOp, ListOutputsSpecOp } from './ListOutputsSpecOp'
5
+ import { StorageIdb } from '../StorageIdb'
6
+ import { TransactionStatus } from '../../sdk'
7
+
8
+ export async function listOutputsIdb(
9
+ storage: StorageIdb,
10
+ auth: sdk.AuthId,
11
+ vargs: sdk.ValidListOutputsArgs,
12
+ originator?: OriginatorDomainNameStringUnder250Bytes
13
+ ): Promise<ListOutputsResult> {
14
+ const userId = verifyId(auth.userId)
15
+ const limit = vargs.limit
16
+ const offset = vargs.offset
17
+
18
+ const r: ListOutputsResult = {
19
+ totalOutputs: 0,
20
+ outputs: []
21
+ }
22
+
23
+ /*
24
+ ListOutputsArgs {
25
+ basket: BasketStringUnder300Bytes
26
+
27
+ tags?: OutputTagStringUnder300Bytes[]
28
+ tagQueryMode?: 'all' | 'any' // default any
29
+
30
+ limit?: PositiveIntegerDefault10Max10000
31
+ offset?: PositiveIntegerOrZero
32
+ }
33
+ */
34
+
35
+ let specOp: ListOutputsSpecOp | undefined = undefined
36
+ let basketId: number | undefined = undefined
37
+ const basketsById: Record<number, TableOutputBasket> = {}
38
+ if (vargs.basket) {
39
+ let b = vargs.basket
40
+ specOp = getBasketToSpecOp()[b]
41
+ b = specOp ? (specOp.useBasket ? specOp.useBasket : '') : b
42
+ if (b) {
43
+ const baskets = await storage.findOutputBaskets({
44
+ partial: { userId, name: b }
45
+ })
46
+ if (baskets.length !== 1) {
47
+ // If basket does not exist, result is no outputs.
48
+ return r
49
+ }
50
+ const basket = baskets[0]
51
+ basketId = basket.basketId!
52
+ basketsById[basketId!] = basket
53
+ }
54
+ }
55
+
56
+ let tags = [...vargs.tags]
57
+ const specOpTags: string[] = []
58
+ if (specOp && specOp.tagsParamsCount) {
59
+ specOpTags.push(...tags.splice(0, Math.min(tags.length, specOp.tagsParamsCount)))
60
+ }
61
+ if (specOp && specOp.tagsToIntercept) {
62
+ // Pull out tags used by current specOp
63
+ const ts = tags
64
+ tags = []
65
+ for (const t of ts) {
66
+ if (specOp.tagsToIntercept.length === 0 || specOp.tagsToIntercept.indexOf(t) >= 0) {
67
+ specOpTags.push(t)
68
+ if (t === 'all') {
69
+ basketId = undefined
70
+ }
71
+ } else {
72
+ tags.push(t)
73
+ }
74
+ }
75
+ }
76
+
77
+ if (specOp && specOp.resultFromTags) {
78
+ const r = await specOp.resultFromTags(storage, auth, vargs, specOpTags)
79
+ return r
80
+ }
81
+
82
+ let tagIds: number[] = []
83
+ if (tags && tags.length > 0) {
84
+ await storage.filterOutputTags({ partial: { userId, isDeleted: false } }, ot => {
85
+ if (tags.includes(ot.tag)) {
86
+ tagIds.push(ot.outputTagId)
87
+ }
88
+ })
89
+ }
90
+
91
+ const isQueryModeAll = vargs.tagQueryMode === 'all'
92
+ if (isQueryModeAll && tagIds.length < tags.length)
93
+ // all the required tags don't exist, impossible to satisfy.
94
+ return r
95
+
96
+ if (!isQueryModeAll && tagIds.length === 0 && tags.length > 0)
97
+ // any and only non-existing labels, impossible to satisfy.
98
+ return r
99
+
100
+ const noTags = tagIds.length === 0
101
+ const includeSpent = false
102
+
103
+ const stati: TransactionStatus[] = ['completed', 'unproven', 'nosend']
104
+
105
+ const args: sdk.FindOutputsArgs = {
106
+ partial: {
107
+ userId,
108
+ basketId,
109
+ spendable: !includeSpent ? true : undefined
110
+ },
111
+ txStatus: stati,
112
+ noScript: true
113
+ }
114
+ if (!specOp || !specOp.ignoreLimit) args.paged = { limit, offset }
115
+
116
+ let outputs = await storage.findOutputs(args, tagIds, isQueryModeAll)
117
+ if (outputs.length === vargs.limit) {
118
+ args.paged = undefined
119
+ r.totalOutputs = await storage.countOutputs(args, tagIds, isQueryModeAll)
120
+ } else {
121
+ r.totalOutputs = outputs.length
122
+ }
123
+
124
+ if (specOp) {
125
+ if (specOp.filterOutputs) outputs = await specOp.filterOutputs(storage, auth, vargs, specOpTags, outputs)
126
+ if (specOp.resultFromOutputs) {
127
+ const r = await specOp.resultFromOutputs(storage, auth, vargs, specOpTags, outputs)
128
+ return r
129
+ }
130
+ }
131
+
132
+ /*
133
+ ListOutputsArgs {
134
+ include?: 'locking scripts' | 'entire transactions'
135
+ includeCustomInstructions?: BooleanDefaultFalse
136
+ includeTags?: BooleanDefaultFalse
137
+ includeLabels?: BooleanDefaultFalse
138
+ }
139
+
140
+ ListOutputsResult {
141
+ totalOutputs: PositiveIntegerOrZero
142
+ BEEF?: BEEF
143
+ outputs: Array<WalletOutput>
144
+ }
145
+
146
+ WalletOutput {
147
+ satoshis: SatoshiValue
148
+ spendable: boolean
149
+ outpoint: OutpointString
150
+
151
+ customInstructions?: string
152
+ lockingScript?: HexString
153
+ tags?: OutputTagStringUnder300Bytes[]
154
+ labels?: LabelStringUnder300Bytes[]
155
+ }
156
+ */
157
+
158
+ const labelsByTxid: Record<string, string[]> = {}
159
+
160
+ const beef = new Beef()
161
+
162
+ for (const o of outputs) {
163
+ const wo: WalletOutput = {
164
+ satoshis: Number(o.satoshis),
165
+ spendable: !!o.spendable,
166
+ outpoint: `${o.txid}.${o.vout}`
167
+ }
168
+ r.outputs.push(wo)
169
+ //if (vargs.includeBasket && o.basketId) {
170
+ // if (!basketsById[o.basketId]) {
171
+ // basketsById[o.basketId] = verifyTruthy(await dsk.findOutputBasketId(o.basketId!, trx))
172
+ // }
173
+ // wo.basket = basketsById[o.basketId].name
174
+ //}
175
+ if (vargs.includeCustomInstructions && o.customInstructions) wo.customInstructions = o.customInstructions
176
+ if (vargs.includeLabels && o.txid) {
177
+ if (labelsByTxid[o.txid] === undefined) {
178
+ labelsByTxid[o.txid] = (await storage.getLabelsForTransactionId(o.transactionId)).map(l => l.label)
179
+ }
180
+ wo.labels = labelsByTxid[o.txid]
181
+ }
182
+ if (vargs.includeTags) {
183
+ wo.tags = (await storage.getTagsForOutputId(o.outputId)).map(t => t.tag)
184
+ }
185
+ if (vargs.includeLockingScripts) {
186
+ await storage.validateOutputScript(o)
187
+ if (o.lockingScript) wo.lockingScript = asString(o.lockingScript)
188
+ }
189
+ if (vargs.includeTransactions && !beef.findTxid(o.txid!)) {
190
+ await storage.getValidBeefForKnownTxid(o.txid!, beef, undefined, vargs.knownTxids)
191
+ }
192
+ }
193
+
194
+ if (vargs.includeTransactions) {
195
+ r.BEEF = beef.toBinary()
196
+ }
197
+
198
+ return r
199
+ }
@@ -2,137 +2,7 @@ import { Beef, ListOutputsResult, OriginatorDomainNameStringUnder250Bytes, Walle
2
2
  import { TableOutput, TableOutputBasket, TableOutputTag } from '../index.client'
3
3
  import { asString, sdk, verifyId, verifyInteger, verifyOne } from '../../index.client'
4
4
  import { StorageKnex } from '../StorageKnex'
5
- import { ValidListOutputsArgs } from '../../sdk'
6
- import { spec } from 'node:test/reporters'
7
-
8
- interface ListOutputsSpecOp {
9
- name: string
10
- useBasket?: string
11
- ignoreLimit?: boolean
12
- includeSpent?: boolean
13
- includeOutputScripts?: boolean
14
- resultFromTags?: (
15
- s: StorageKnex,
16
- auth: sdk.AuthId,
17
- vargs: ValidListOutputsArgs,
18
- specOpTags: string[]
19
- ) => Promise<ListOutputsResult>
20
- resultFromOutputs?: (
21
- s: StorageKnex,
22
- auth: sdk.AuthId,
23
- vargs: ValidListOutputsArgs,
24
- specOpTags: string[],
25
- outputs: TableOutput[]
26
- ) => Promise<ListOutputsResult>
27
- filterOutputs?: (
28
- s: StorageKnex,
29
- auth: sdk.AuthId,
30
- vargs: ValidListOutputsArgs,
31
- specOpTags: string[],
32
- outputs: TableOutput[]
33
- ) => Promise<TableOutput[]>
34
- /**
35
- * undefined to intercept no tags from vargs,
36
- * empty array to intercept all tags,
37
- * or an explicit array of tags to intercept.
38
- */
39
- tagsToIntercept?: string[]
40
- /**
41
- * How many positional tags to intercept.
42
- */
43
- tagsParamsCount?: number
44
- }
45
-
46
- const basketToSpecOp: Record<string, ListOutputsSpecOp> = {
47
- [sdk.specOpWalletBalance]: {
48
- name: 'totalOutputsIsWalletBalance',
49
- useBasket: 'default',
50
- ignoreLimit: true,
51
- resultFromOutputs: async (
52
- s: StorageKnex,
53
- auth: sdk.AuthId,
54
- vargs: ValidListOutputsArgs,
55
- specOpTags: string[],
56
- outputs: TableOutput[]
57
- ): Promise<ListOutputsResult> => {
58
- let totalOutputs = 0
59
- for (const o of outputs) totalOutputs += o.satoshis
60
- return { totalOutputs, outputs: [] }
61
- }
62
- },
63
- [sdk.specOpInvalidChange]: {
64
- name: 'invalidChangeOutputs',
65
- useBasket: 'default',
66
- ignoreLimit: true,
67
- includeSpent: false,
68
- includeOutputScripts: true,
69
- tagsToIntercept: ['release', 'all'],
70
- filterOutputs: async (
71
- s: StorageKnex,
72
- auth: sdk.AuthId,
73
- vargs: ValidListOutputsArgs,
74
- specOpTags: string[],
75
- outputs: TableOutput[]
76
- ): Promise<TableOutput[]> => {
77
- const updateToSpent: TableOutput[] = []
78
- const updateToSpendable: TableOutput[] = []
79
- const services = s.getServices()
80
- for (const o of outputs) {
81
- await s.validateOutputScript(o)
82
- let ok: boolean | undefined = false
83
- let r: sdk.GetUtxoStatusResult
84
- if (o.lockingScript && o.lockingScript.length > 0) {
85
- const hash = services.hashOutputScript(asString(o.lockingScript))
86
- r = await services.getUtxoStatus(hash, undefined, `${o.txid}.${o.vout}`)
87
- ok = r.isUtxo
88
- } else {
89
- ok = undefined
90
- }
91
- if (ok === false && o.spendable) {
92
- updateToSpent.push(o)
93
- } else if (ok === true && !o.spendable) {
94
- updateToSpendable.push(o)
95
- }
96
- }
97
- if (specOpTags.indexOf('release') >= 0) {
98
- for (const o of updateToSpent) {
99
- await s.updateOutput(o.outputId, { spendable: false })
100
- o.spendable = false
101
- }
102
- for (const o of updateToSpendable) {
103
- await s.updateOutput(o.outputId, { spendable: true })
104
- o.spendable = true
105
- }
106
- }
107
- return updateToSpent.concat(updateToSpendable)
108
- }
109
- },
110
- [sdk.specOpSetWalletChangeParams]: {
111
- name: 'setWalletChangeParams',
112
- tagsParamsCount: 2,
113
- resultFromTags: async (
114
- s: StorageKnex,
115
- auth: sdk.AuthId,
116
- vargs: ValidListOutputsArgs,
117
- specOpTags: string[]
118
- ): Promise<ListOutputsResult> => {
119
- if (specOpTags.length !== 2)
120
- throw new sdk.WERR_INVALID_PARAMETER('numberOfDesiredUTXOs and minimumDesiredUTXOValue', 'valid')
121
- const numberOfDesiredUTXOs: number = verifyInteger(Number(specOpTags[0]))
122
- const minimumDesiredUTXOValue: number = verifyInteger(Number(specOpTags[1]))
123
- const basket = verifyOne(
124
- await s.findOutputBaskets({
125
- partial: { userId: verifyId(auth.userId), name: 'default' }
126
- })
127
- )
128
- await s.updateOutputBasket(basket.basketId, {
129
- numberOfDesiredUTXOs,
130
- minimumDesiredUTXOValue
131
- })
132
- return { totalOutputs: 0, outputs: [] }
133
- }
134
- }
135
- }
5
+ import { getBasketToSpecOp, ListOutputsSpecOp } from './ListOutputsSpecOp'
136
6
 
137
7
  export async function listOutputs(
138
8
  dsk: StorageKnex,
@@ -169,7 +39,7 @@ export async function listOutputs(
169
39
  const basketsById: Record<number, TableOutputBasket> = {}
170
40
  if (vargs.basket) {
171
41
  let b = vargs.basket
172
- specOp = basketToSpecOp[b]
42
+ specOp = getBasketToSpecOp()[b]
173
43
  b = specOp ? (specOp.useBasket ? specOp.useBasket : '') : b
174
44
  if (b) {
175
45
  const baskets = await dsk.findOutputBaskets({
@@ -227,7 +97,13 @@ export async function listOutputs(
227
97
  }
228
98
 
229
99
  const isQueryModeAll = vargs.tagQueryMode === 'all'
230
- if (isQueryModeAll && tagIds.length < tags.length) return r
100
+ if (isQueryModeAll && tagIds.length < tags.length)
101
+ // all the required tags don't exist, impossible to satisfy.
102
+ return r
103
+
104
+ if (!isQueryModeAll && tagIds.length === 0 && tags.length > 0)
105
+ // any and only non-existing labels, impossible to satisfy.
106
+ return r
231
107
 
232
108
  const columns: string[] = [
233
109
  'outputId',
@@ -0,0 +1,15 @@
1
+ import { Beef } from '@bsv/sdk'
2
+ import { Knex } from 'knex'
3
+ import { TableCommission, TableOutput, TableOutputTagMap, TableTransaction, TableTxLabelMap } from '../index.client'
4
+ import { sdk } from '../../index.client'
5
+ import { StorageIdb } from '../StorageIdb'
6
+
7
+ export async function purgeDataIdb(
8
+ storage: StorageIdb,
9
+ params: sdk.PurgeParams,
10
+ trx?: sdk.TrxToken
11
+ ): Promise<sdk.PurgeResults> {
12
+ const r: sdk.PurgeResults = { count: 0, log: '' }
13
+ // TODO: implement purgeDataIdb
14
+ return r
15
+ }
@@ -4,6 +4,17 @@ import { TableOutput, TableTransaction } from '../index.client'
4
4
  import { sdk } from '../../index.client'
5
5
  import { StorageKnex } from '../StorageKnex'
6
6
 
7
+ /**
8
+ * Looks for unpropagated state:
9
+ *
10
+ * 1. set transactions to 'failed' if not already failed and provenTxReq with matching txid has status of 'invalid'.
11
+ * 2. sets outputs to spendable true, spentBy undefined if spentBy is a transaction with status 'failed'.
12
+ * 3. sets transactions to 'completed' if provenTx with matching txid exists and current provenTxId is null.
13
+ *
14
+ * @param storage
15
+ * @param args
16
+ * @returns
17
+ */
7
18
  export async function reviewStatus(
8
19
  storage: StorageKnex,
9
20
  args: { agedLimit: Date; trx?: sdk.TrxToken }
@@ -0,0 +1,43 @@
1
+ import { Beef } from '@bsv/sdk'
2
+ import { Knex } from 'knex'
3
+ import { TableOutput, TableTransaction } from '../index.client'
4
+ import { sdk } from '../../index.client'
5
+ import { StorageIdb } from '../StorageIdb'
6
+
7
+ /**
8
+ * Looks for unpropagated state:
9
+ *
10
+ * 1. set transactions to 'failed' if not already failed and provenTxReq with matching txid has status of 'invalid'.
11
+ * 2. sets transactions to 'completed' if provenTx with matching txid exists and current provenTxId is null.
12
+ * 3. sets outputs to spendable true, spentBy undefined if spentBy is a transaction with status 'failed'.
13
+ *
14
+ * @param storage
15
+ * @param args
16
+ * @returns
17
+ */
18
+ export async function reviewStatusIdb(
19
+ storage: StorageIdb,
20
+ args: { agedLimit: Date; trx?: sdk.TrxToken }
21
+ ): Promise<{ log: string }> {
22
+ const r: { log: string } = { log: '' }
23
+
24
+ // 1. set transactions to 'failed' if not already failed and provenTxReq with matching txid has status of 'invalid'.
25
+ const invalidTxids: string[] = []
26
+ await storage.filterProvenTxReqs({ partial: { status: 'invalid' } }, txReq => {
27
+ invalidTxids.push(txReq.txid)
28
+ })
29
+ for (const txid of invalidTxids) {
30
+ const txs = await storage.findTransactions({ partial: { txid } })
31
+ for (const tx of txs) {
32
+ if (tx.status !== 'failed') {
33
+ r.log += `transaction ${tx.transactionId} updated to status of 'failed' was ${tx.status}\n`
34
+ await storage.updateTransactionStatus('failed', tx.transactionId)
35
+ }
36
+ }
37
+ }
38
+
39
+ // 2. sets transactions to 'completed' if provenTx with matching txid exists and current provenTxId is null.
40
+ // 3. sets outputs to spendable true, spentBy undefined if spentBy is a transaction with status 'failed'.
41
+
42
+ return r
43
+ }
@@ -0,0 +1,150 @@
1
+ import { Base64String, PubKeyHex, HexString } from '@bsv/sdk'
2
+ import { ProvenTxReqStatus, SyncStatus, TransactionStatus } from '../../sdk'
3
+ import {
4
+ TableCertificate,
5
+ TableCertificateField,
6
+ TableCommission,
7
+ TableMonitorEvent,
8
+ TableOutput,
9
+ TableOutputBasket,
10
+ TableOutputTag,
11
+ TableOutputTagMap,
12
+ TableProvenTx,
13
+ TableProvenTxReq,
14
+ TableSyncState,
15
+ TableSettings,
16
+ TableTransaction,
17
+ TableTxLabel,
18
+ TableTxLabelMap,
19
+ TableUser
20
+ } from '../index.client'
21
+
22
+ export interface StorageIdbSchema {
23
+ certificates: {
24
+ key: number
25
+ value: TableCertificate
26
+ indexes: {
27
+ userId: number
28
+ userId_type_certifier_serialNumber: [number, Base64String, PubKeyHex, Base64String]
29
+ }
30
+ }
31
+ certificateFields: {
32
+ key: number
33
+ value: TableCertificateField
34
+ indexes: {
35
+ userId: number
36
+ certificateId: number
37
+ }
38
+ }
39
+ commissions: {
40
+ key: number
41
+ value: TableCommission
42
+ indexes: {
43
+ userId: number
44
+ transactionId: number
45
+ }
46
+ }
47
+ monitorEvents: {
48
+ key: number
49
+ value: TableMonitorEvent
50
+ }
51
+ outputs: {
52
+ key: number
53
+ value: TableOutput
54
+ indexes: {
55
+ userId: number
56
+ transactionId: number
57
+ basketId: number
58
+ spentBy: string
59
+ transactionId_vout_userId: [number, number, number]
60
+ }
61
+ }
62
+ outputBaskets: {
63
+ key: number
64
+ value: TableOutputBasket
65
+ indexes: {
66
+ userId: number
67
+ name_userId: [string, number]
68
+ }
69
+ }
70
+ outputTags: {
71
+ key: number
72
+ value: TableOutputTag
73
+ indexes: {
74
+ userId: number
75
+ tag_userId: [string, number]
76
+ }
77
+ }
78
+ outputTagMaps: {
79
+ key: number
80
+ value: TableOutputTagMap
81
+ indexes: {
82
+ outputTagId: number
83
+ outputId: number
84
+ }
85
+ }
86
+ provenTxs: {
87
+ key: number
88
+ value: TableProvenTx
89
+ indexes: {
90
+ txid: HexString
91
+ }
92
+ }
93
+ provenTxReqs: {
94
+ key: number
95
+ value: TableProvenTxReq
96
+ indexes: {
97
+ provenTxId: number
98
+ txid: HexString
99
+ status: ProvenTxReqStatus
100
+ batch: string
101
+ }
102
+ }
103
+ syncStates: {
104
+ key: number
105
+ value: TableSyncState
106
+ indexes: {
107
+ userId: number
108
+ refNum: string
109
+ status: SyncStatus
110
+ }
111
+ }
112
+ settings: {
113
+ key: number
114
+ value: TableSettings
115
+ indexes: Record<string, never>
116
+ }
117
+ transactions: {
118
+ key: number
119
+ value: TableTransaction
120
+ indexes: {
121
+ userId: number
122
+ provenTxId: number
123
+ reference: string
124
+ status: TransactionStatus
125
+ }
126
+ }
127
+ txLabels: {
128
+ key: number
129
+ value: TableTxLabel
130
+ indexes: {
131
+ userId: number
132
+ label_userId: [string, number]
133
+ }
134
+ }
135
+ txLabelMaps: {
136
+ key: number
137
+ value: TableTxLabelMap
138
+ indexes: {
139
+ transactionId: number
140
+ txLabelId: number
141
+ }
142
+ }
143
+ users: {
144
+ key: number
145
+ value: TableUser
146
+ indexes: {
147
+ identityKey: string
148
+ }
149
+ }
150
+ }
@@ -109,7 +109,7 @@ describe('ProvenTx class method tests', () => {
109
109
  results: []
110
110
  }),
111
111
 
112
- isUtxo: async () => (true),
112
+ isUtxo: async () => true,
113
113
 
114
114
  getUtxoStatus: async () => ({
115
115
  name: 'mock-service',
@@ -12,6 +12,6 @@ export interface TableSettings extends sdk.StorageIdentity, sdk.EntityTimeStamp
12
12
  */
13
13
  storageName: string
14
14
  chain: sdk.Chain
15
- dbtype: 'SQLite' | 'MySQL'
15
+ dbtype: 'SQLite' | 'MySQL' | 'IndexedDB'
16
16
  maxOutputScript: number
17
17
  }
@@ -1,16 +1,16 @@
1
1
  export * from './TableSettings'
2
- export * from './ProvenTx'
3
- export * from './ProvenTxReq'
4
- export * from './User'
5
- export * from './Certificate'
6
- export * from './CertificateField'
7
- export * from './OutputBasket'
8
- export * from './Transaction'
9
- export * from './Commission'
10
- export * from './Output'
11
- export * from './OutputTag'
12
- export * from './OutputTagMap'
13
- export * from './TxLabel'
14
- export * from './TxLabelMap'
15
- export * from './MonitorEvent'
16
- export * from './SyncState'
2
+ export * from './TableProvenTx'
3
+ export * from './TableProvenTxReq'
4
+ export * from './TableUser'
5
+ export * from './TableCertificate'
6
+ export * from './TableCertificateField'
7
+ export * from './TableOutputBasket'
8
+ export * from './TableTransaction'
9
+ export * from './TableCommission'
10
+ export * from './TableOutput'
11
+ export * from './TableOutputTag'
12
+ export * from './TableOutputTagMap'
13
+ export * from './TableTxLabel'
14
+ export * from './TableTxLabelMap'
15
+ export * from './TableMonitorEvent'
16
+ export * from './TableSyncState'
@@ -28,6 +28,8 @@ describe('localWallet2 tests', () => {
28
28
 
29
29
  test('0 monitor runOnce', async () => {
30
30
  const setup = await createSetup(chain, options)
31
+ const log = await setup.monitor.runTask('UnFail')
32
+ if (log) console.log(log)
31
33
  await setup.monitor.runOnce()
32
34
  await setup.wallet.destroy()
33
35
  })
@@ -244,3 +246,6 @@ const beefJackie = [
244
246
  154, 94, 189, 29, 53, 41, 220, 136, 142, 80, 136, 172, 208, 140, 0, 0, 0, 0, 0, 0, 25, 118, 169, 20, 217, 48, 110,
245
247
  108, 236, 100, 116, 90, 181, 114, 45, 176, 198, 216, 150, 134, 16, 251, 10, 177, 136, 172, 0, 0, 0, 0
246
248
  ]
249
+
250
+ const brayden1 =
251
+ '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'