@bsv/wallet-toolbox 1.7.1 → 1.7.2

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 (317) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/docs/client.md +489 -1334
  3. package/docs/services.md +5 -5
  4. package/docs/storage.md +64 -61
  5. package/docs/wallet.md +489 -1334
  6. package/mobile/out/src/Wallet.d.ts +21 -4
  7. package/mobile/out/src/Wallet.d.ts.map +1 -1
  8. package/mobile/out/src/Wallet.js +93 -57
  9. package/mobile/out/src/Wallet.js.map +1 -1
  10. package/mobile/out/src/WalletLogger.d.ts +33 -0
  11. package/mobile/out/src/WalletLogger.d.ts.map +1 -0
  12. package/mobile/out/src/WalletLogger.js +157 -0
  13. package/mobile/out/src/WalletLogger.js.map +1 -0
  14. package/mobile/out/src/WalletPermissionsManager.d.ts.map +1 -1
  15. package/mobile/out/src/WalletPermissionsManager.js +1 -2
  16. package/mobile/out/src/WalletPermissionsManager.js.map +1 -1
  17. package/mobile/out/src/sdk/WERR_errors.d.ts.map +1 -1
  18. package/mobile/out/src/sdk/WERR_errors.js.map +1 -1
  19. package/mobile/out/src/sdk/WalletError.d.ts.map +1 -1
  20. package/mobile/out/src/sdk/WalletError.js +0 -2
  21. package/mobile/out/src/sdk/WalletError.js.map +1 -1
  22. package/mobile/out/src/sdk/WalletServices.interfaces.d.ts +3 -3
  23. package/mobile/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  24. package/mobile/out/src/sdk/WalletStorage.interfaces.d.ts +9 -10
  25. package/mobile/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  26. package/mobile/out/src/sdk/index.d.ts +1 -1
  27. package/mobile/out/src/sdk/index.d.ts.map +1 -1
  28. package/mobile/out/src/sdk/index.js +3 -1
  29. package/mobile/out/src/sdk/index.js.map +1 -1
  30. package/mobile/out/src/services/Services.d.ts +5 -5
  31. package/mobile/out/src/services/Services.d.ts.map +1 -1
  32. package/mobile/out/src/services/Services.js +18 -4
  33. package/mobile/out/src/services/Services.js.map +1 -1
  34. package/mobile/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  35. package/mobile/out/src/services/providers/WhatsOnChain.js +1 -2
  36. package/mobile/out/src/services/providers/WhatsOnChain.js.map +1 -1
  37. package/mobile/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
  38. package/mobile/out/src/services/providers/getBeefForTxid.js.map +1 -1
  39. package/mobile/out/src/signer/methods/acquireDirectCertificate.d.ts +2 -3
  40. package/mobile/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
  41. package/mobile/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  42. package/mobile/out/src/signer/methods/buildSignableTransaction.d.ts +3 -4
  43. package/mobile/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  44. package/mobile/out/src/signer/methods/buildSignableTransaction.js +1 -2
  45. package/mobile/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  46. package/mobile/out/src/signer/methods/createAction.d.ts +3 -4
  47. package/mobile/out/src/signer/methods/createAction.d.ts.map +1 -1
  48. package/mobile/out/src/signer/methods/createAction.js +17 -6
  49. package/mobile/out/src/signer/methods/createAction.js.map +1 -1
  50. package/mobile/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  51. package/mobile/out/src/signer/methods/internalizeAction.js +1 -2
  52. package/mobile/out/src/signer/methods/internalizeAction.js.map +1 -1
  53. package/mobile/out/src/signer/methods/proveCertificate.d.ts +2 -3
  54. package/mobile/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
  55. package/mobile/out/src/signer/methods/proveCertificate.js.map +1 -1
  56. package/mobile/out/src/signer/methods/signAction.d.ts.map +1 -1
  57. package/mobile/out/src/signer/methods/signAction.js +1 -2
  58. package/mobile/out/src/signer/methods/signAction.js.map +1 -1
  59. package/mobile/out/src/storage/StorageIdb.d.ts +3 -4
  60. package/mobile/out/src/storage/StorageIdb.d.ts.map +1 -1
  61. package/mobile/out/src/storage/StorageIdb.js.map +1 -1
  62. package/mobile/out/src/storage/StorageProvider.d.ts +6 -7
  63. package/mobile/out/src/storage/StorageProvider.d.ts.map +1 -1
  64. package/mobile/out/src/storage/StorageProvider.js +5 -6
  65. package/mobile/out/src/storage/StorageProvider.js.map +1 -1
  66. package/mobile/out/src/storage/WalletStorageManager.d.ts +5 -5
  67. package/mobile/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  68. package/mobile/out/src/storage/WalletStorageManager.js +5 -4
  69. package/mobile/out/src/storage/WalletStorageManager.js.map +1 -1
  70. package/mobile/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
  71. package/mobile/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  72. package/mobile/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  73. package/mobile/out/src/storage/methods/ListOutputsSpecOp.d.ts +4 -5
  74. package/mobile/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  75. package/mobile/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  76. package/mobile/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +2 -2
  77. package/mobile/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  78. package/mobile/out/src/storage/methods/attemptToPostReqsToNetwork.js +11 -7
  79. package/mobile/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  80. package/mobile/out/src/storage/methods/createAction.d.ts +3 -4
  81. package/mobile/out/src/storage/methods/createAction.d.ts.map +1 -1
  82. package/mobile/out/src/storage/methods/createAction.js +18 -5
  83. package/mobile/out/src/storage/methods/createAction.js.map +1 -1
  84. package/mobile/out/src/storage/methods/generateChange.js +10 -10
  85. package/mobile/out/src/storage/methods/generateChange.js.map +1 -1
  86. package/mobile/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  87. package/mobile/out/src/storage/methods/internalizeAction.js +1 -2
  88. package/mobile/out/src/storage/methods/internalizeAction.js.map +1 -1
  89. package/mobile/out/src/storage/methods/listActionsIdb.d.ts +2 -3
  90. package/mobile/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  91. package/mobile/out/src/storage/methods/listActionsIdb.js.map +1 -1
  92. package/mobile/out/src/storage/methods/listCertificates.d.ts +3 -3
  93. package/mobile/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  94. package/mobile/out/src/storage/methods/listCertificates.js.map +1 -1
  95. package/mobile/out/src/storage/methods/listOutputsIdb.d.ts +2 -3
  96. package/mobile/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  97. package/mobile/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  98. package/mobile/out/src/storage/methods/processAction.d.ts +2 -2
  99. package/mobile/out/src/storage/methods/processAction.d.ts.map +1 -1
  100. package/mobile/out/src/storage/methods/processAction.js +15 -10
  101. package/mobile/out/src/storage/methods/processAction.js.map +1 -1
  102. package/mobile/out/src/storage/remoting/StorageClient.d.ts +5 -6
  103. package/mobile/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  104. package/mobile/out/src/storage/remoting/StorageClient.js +22 -0
  105. package/mobile/out/src/storage/remoting/StorageClient.js.map +1 -1
  106. package/mobile/out/src/storage/remoting/StorageMobile.d.ts +5 -6
  107. package/mobile/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  108. package/mobile/out/src/storage/remoting/StorageMobile.js.map +1 -1
  109. package/mobile/package-lock.json +6 -6
  110. package/mobile/package.json +2 -2
  111. package/out/src/Wallet.d.ts +21 -4
  112. package/out/src/Wallet.d.ts.map +1 -1
  113. package/out/src/Wallet.js +93 -57
  114. package/out/src/Wallet.js.map +1 -1
  115. package/out/src/WalletLogger.d.ts +33 -0
  116. package/out/src/WalletLogger.d.ts.map +1 -0
  117. package/out/src/WalletLogger.js +157 -0
  118. package/out/src/WalletLogger.js.map +1 -0
  119. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  120. package/out/src/WalletPermissionsManager.js +1 -2
  121. package/out/src/WalletPermissionsManager.js.map +1 -1
  122. package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts +1 -0
  123. package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts.map +1 -1
  124. package/out/src/__tests/WalletPermissionsManager.fixtures.js +15 -4
  125. package/out/src/__tests/WalletPermissionsManager.fixtures.js.map +1 -1
  126. package/out/src/__tests/WalletPermissionsManager.proxying.test.js +79 -74
  127. package/out/src/__tests/WalletPermissionsManager.proxying.test.js.map +1 -1
  128. package/out/src/sdk/WERR_errors.d.ts.map +1 -1
  129. package/out/src/sdk/WERR_errors.js.map +1 -1
  130. package/out/src/sdk/WalletError.d.ts.map +1 -1
  131. package/out/src/sdk/WalletError.js +0 -2
  132. package/out/src/sdk/WalletError.js.map +1 -1
  133. package/out/src/sdk/WalletServices.interfaces.d.ts +3 -3
  134. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  135. package/out/src/sdk/WalletStorage.interfaces.d.ts +9 -10
  136. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  137. package/out/src/sdk/__test/validationHelpers.test.js +4 -4
  138. package/out/src/sdk/__test/validationHelpers.test.js.map +1 -1
  139. package/out/src/sdk/index.d.ts +1 -1
  140. package/out/src/sdk/index.d.ts.map +1 -1
  141. package/out/src/sdk/index.js +3 -1
  142. package/out/src/sdk/index.js.map +1 -1
  143. package/out/src/services/Services.d.ts +5 -5
  144. package/out/src/services/Services.d.ts.map +1 -1
  145. package/out/src/services/Services.js +18 -4
  146. package/out/src/services/Services.js.map +1 -1
  147. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  148. package/out/src/services/providers/WhatsOnChain.js +1 -2
  149. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  150. package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
  151. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  152. package/out/src/signer/methods/acquireDirectCertificate.d.ts +2 -3
  153. package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
  154. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  155. package/out/src/signer/methods/buildSignableTransaction.d.ts +3 -4
  156. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  157. package/out/src/signer/methods/buildSignableTransaction.js +1 -2
  158. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  159. package/out/src/signer/methods/createAction.d.ts +3 -4
  160. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  161. package/out/src/signer/methods/createAction.js +17 -6
  162. package/out/src/signer/methods/createAction.js.map +1 -1
  163. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  164. package/out/src/signer/methods/internalizeAction.js +1 -2
  165. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  166. package/out/src/signer/methods/proveCertificate.d.ts +2 -3
  167. package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
  168. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  169. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  170. package/out/src/signer/methods/signAction.js +1 -2
  171. package/out/src/signer/methods/signAction.js.map +1 -1
  172. package/out/src/storage/StorageIdb.d.ts +3 -4
  173. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  174. package/out/src/storage/StorageIdb.js.map +1 -1
  175. package/out/src/storage/StorageKnex.d.ts +3 -4
  176. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  177. package/out/src/storage/StorageKnex.js.map +1 -1
  178. package/out/src/storage/StorageProvider.d.ts +6 -7
  179. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  180. package/out/src/storage/StorageProvider.js +5 -6
  181. package/out/src/storage/StorageProvider.js.map +1 -1
  182. package/out/src/storage/WalletStorageManager.d.ts +5 -5
  183. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  184. package/out/src/storage/WalletStorageManager.js +5 -4
  185. package/out/src/storage/WalletStorageManager.js.map +1 -1
  186. package/out/src/storage/__test/getBeefForTransaction.test.js.map +1 -1
  187. package/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
  188. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  189. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  190. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +4 -5
  191. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  192. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  193. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +2 -2
  194. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  195. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +11 -7
  196. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  197. package/out/src/storage/methods/createAction.d.ts +3 -4
  198. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  199. package/out/src/storage/methods/createAction.js +18 -5
  200. package/out/src/storage/methods/createAction.js.map +1 -1
  201. package/out/src/storage/methods/generateChange.js +10 -10
  202. package/out/src/storage/methods/generateChange.js.map +1 -1
  203. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  204. package/out/src/storage/methods/internalizeAction.js +1 -2
  205. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  206. package/out/src/storage/methods/listActionsIdb.d.ts +2 -3
  207. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  208. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  209. package/out/src/storage/methods/listActionsKnex.d.ts +2 -3
  210. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
  211. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  212. package/out/src/storage/methods/listCertificates.d.ts +3 -3
  213. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  214. package/out/src/storage/methods/listCertificates.js.map +1 -1
  215. package/out/src/storage/methods/listOutputsIdb.d.ts +2 -3
  216. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  217. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  218. package/out/src/storage/methods/listOutputsKnex.d.ts +2 -3
  219. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  220. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  221. package/out/src/storage/methods/processAction.d.ts +2 -2
  222. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  223. package/out/src/storage/methods/processAction.js +15 -10
  224. package/out/src/storage/methods/processAction.js.map +1 -1
  225. package/out/src/storage/remoting/StorageClient.d.ts +5 -6
  226. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  227. package/out/src/storage/remoting/StorageClient.js +22 -0
  228. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  229. package/out/src/storage/remoting/StorageMobile.d.ts +5 -6
  230. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  231. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  232. package/out/src/storage/remoting/StorageServer.d.ts +5 -0
  233. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  234. package/out/src/storage/remoting/StorageServer.js +38 -5
  235. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  236. package/out/src/storage/remoting/__test/StorageClient.test.d.ts +2 -0
  237. package/out/src/storage/remoting/__test/StorageClient.test.d.ts.map +1 -0
  238. package/out/src/storage/remoting/__test/StorageClient.test.js +98 -0
  239. package/out/src/storage/remoting/__test/StorageClient.test.js.map +1 -0
  240. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  241. package/out/src/storage/sync/StorageMySQLDojoReader.js +1 -2
  242. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  243. package/out/test/Wallet/certificate/listCertificates.test.js.map +1 -1
  244. package/out/test/Wallet/local/localWallet2.man.test.js.map +1 -1
  245. package/out/test/Wallet/signAction/mountaintop.man.test.js +2 -2
  246. package/out/test/Wallet/signAction/mountaintop.man.test.js.map +1 -1
  247. package/out/test/Wallet/support/operations.man.test.js +46 -1
  248. package/out/test/Wallet/support/operations.man.test.js.map +1 -1
  249. package/out/test/Wallet/support/reqErrorReview.2025.05.06.man.test.js.map +1 -1
  250. package/out/test/WalletClient/WERR.man.test.js +1 -1
  251. package/out/test/WalletClient/WERR.man.test.js.map +1 -1
  252. package/out/test/utils/localWalletMethods.d.ts.map +1 -1
  253. package/out/test/utils/localWalletMethods.js +2 -3
  254. package/out/test/utils/localWalletMethods.js.map +1 -1
  255. package/out/test/wallet/action/createAction.test.js +3 -0
  256. package/out/test/wallet/action/createAction.test.js.map +1 -1
  257. package/out/tsconfig.all.tsbuildinfo +1 -1
  258. package/package.json +2 -2
  259. package/src/Wallet.ts +114 -79
  260. package/src/WalletLogger.ts +167 -0
  261. package/src/WalletPermissionsManager.ts +3 -5
  262. package/src/__tests/WalletPermissionsManager.fixtures.ts +14 -1
  263. package/src/__tests/WalletPermissionsManager.proxying.test.ts +89 -85
  264. package/src/sdk/WERR_errors.ts +6 -3
  265. package/src/sdk/WalletError.ts +0 -4
  266. package/src/sdk/WalletServices.interfaces.ts +14 -3
  267. package/src/sdk/WalletStorage.interfaces.ts +11 -16
  268. package/src/sdk/__test/validationHelpers.test.ts +4 -5
  269. package/src/sdk/index.ts +1 -1
  270. package/src/services/Services.ts +23 -5
  271. package/src/services/providers/WhatsOnChain.ts +2 -3
  272. package/src/services/providers/getBeefForTxid.ts +3 -5
  273. package/src/signer/methods/acquireDirectCertificate.ts +2 -3
  274. package/src/signer/methods/buildSignableTransaction.ts +5 -6
  275. package/src/signer/methods/createAction.ts +24 -18
  276. package/src/signer/methods/internalizeAction.ts +4 -5
  277. package/src/signer/methods/proveCertificate.ts +3 -4
  278. package/src/signer/methods/signAction.ts +6 -4
  279. package/src/storage/StorageIdb.ts +3 -4
  280. package/src/storage/StorageKnex.ts +3 -4
  281. package/src/storage/StorageProvider.ts +16 -20
  282. package/src/storage/WalletStorageManager.ts +10 -11
  283. package/src/storage/__test/getBeefForTransaction.test.ts +3 -4
  284. package/src/storage/methods/ListActionsSpecOp.ts +4 -4
  285. package/src/storage/methods/ListOutputsSpecOp.ts +7 -8
  286. package/src/storage/methods/attemptToPostReqsToNetwork.ts +15 -8
  287. package/src/storage/methods/createAction.ts +39 -23
  288. package/src/storage/methods/generateChange.ts +10 -10
  289. package/src/storage/methods/internalizeAction.ts +4 -4
  290. package/src/storage/methods/listActionsIdb.ts +3 -3
  291. package/src/storage/methods/listActionsKnex.ts +3 -3
  292. package/src/storage/methods/listCertificates.ts +7 -6
  293. package/src/storage/methods/listOutputsIdb.ts +2 -3
  294. package/src/storage/methods/listOutputsKnex.ts +2 -3
  295. package/src/storage/methods/processAction.ts +30 -11
  296. package/src/storage/remoting/StorageClient.ts +31 -12
  297. package/src/storage/remoting/StorageMobile.ts +6 -12
  298. package/src/storage/remoting/StorageServer.ts +45 -6
  299. package/src/storage/remoting/__test/StorageClient.test.ts +113 -0
  300. package/src/storage/sync/StorageMySQLDojoReader.ts +2 -3
  301. package/test/Wallet/certificate/listCertificates.test.ts +2 -2
  302. package/test/Wallet/local/localWallet2.man.test.ts +5 -5
  303. package/test/Wallet/signAction/mountaintop.man.test.ts +3 -2
  304. package/test/Wallet/support/operations.man.test.ts +65 -6
  305. package/test/Wallet/support/reqErrorReview.2025.05.06.man.test.ts +2 -14
  306. package/test/WalletClient/WERR.man.test.ts +3 -3
  307. package/test/utils/localWalletMethods.ts +5 -5
  308. package/test/wallet/action/createAction.test.ts +3 -0
  309. package/mobile/out/src/sdk/validationHelpers.d.ts +0 -322
  310. package/mobile/out/src/sdk/validationHelpers.d.ts.map +0 -1
  311. package/mobile/out/src/sdk/validationHelpers.js +0 -691
  312. package/mobile/out/src/sdk/validationHelpers.js.map +0 -1
  313. package/out/src/sdk/validationHelpers.d.ts +0 -322
  314. package/out/src/sdk/validationHelpers.d.ts.map +0 -1
  315. package/out/src/sdk/validationHelpers.js +0 -691
  316. package/out/src/sdk/validationHelpers.js.map +0 -1
  317. package/src/sdk/validationHelpers.ts +0 -1034
@@ -7,24 +7,19 @@ import {
7
7
  SignableTransaction,
8
8
  TXIDHexString,
9
9
  Script,
10
- Transaction
10
+ Transaction,
11
+ Validation
11
12
  } from '@bsv/sdk'
12
13
  import { buildSignableTransaction } from './buildSignableTransaction'
13
14
  import {
14
15
  AuthId,
15
16
  ReviewActionResult,
16
- StorageCreateActionResult,
17
- StorageCreateTransactionSdkOutput,
18
17
  StorageProcessActionArgs,
19
18
  StorageProcessActionResults
20
19
  } from '../../sdk/WalletStorage.interfaces'
21
20
  import { completeSignedTransaction, verifyUnlockScripts } from './completeSignedTransaction'
22
21
  import { PendingSignAction, Wallet } from '../../Wallet'
23
- import { ValidCreateActionArgs, ValidCreateActionInput, ValidProcessActionArgs } from '../../sdk/validationHelpers'
24
22
  import { WERR_INTERNAL } from '../../sdk/WERR_errors'
25
- import { KeyPair } from '../../sdk/types'
26
- import { verifyTruthy } from '../../utility/utilityHelpers'
27
- import { ScriptTemplateBRC29 } from '../../utility/ScriptTemplateBRC29'
28
23
 
29
24
  export interface CreateActionResultX extends CreateActionResult {
30
25
  txid?: TXIDHexString
@@ -38,33 +33,41 @@ export interface CreateActionResultX extends CreateActionResult {
38
33
  export async function createAction(
39
34
  wallet: Wallet,
40
35
  auth: AuthId,
41
- vargs: ValidCreateActionArgs
36
+ vargs: Validation.ValidCreateActionArgs
42
37
  ): Promise<CreateActionResultX> {
43
38
  const r: CreateActionResultX = {}
39
+ const logger = vargs.logger
44
40
 
45
41
  let prior: PendingSignAction | undefined = undefined
46
42
 
47
43
  if (vargs.isNewTx || vargs.isTestWerrReviewActions) {
48
44
  prior = await createNewTx(wallet, vargs)
45
+ logger?.log('created new transaction')
49
46
 
50
47
  if (vargs.isSignAction) {
51
- return makeSignableTransactionResult(prior, wallet, vargs)
48
+ const r = makeSignableTransactionResult(prior, wallet, vargs)
49
+ logger?.log('created signable transaction result')
50
+ return r
52
51
  }
53
52
 
54
53
  prior.tx = await completeSignedTransaction(prior, {}, wallet)
54
+ logger?.log('completed signed transaction')
55
55
 
56
56
  r.txid = prior.tx.id('hex')
57
57
  const beef = new Beef()
58
58
  if (prior.dcr.inputBeef) beef.mergeBeef(prior.dcr.inputBeef)
59
59
  beef.mergeTransaction(prior.tx)
60
+ logger?.log('merged beef')
60
61
 
61
62
  verifyUnlockScripts(r.txid, beef)
63
+ logger?.log('verified unlock scripts')
62
64
 
63
65
  r.noSendChange = prior.dcr.noSendChangeOutputVouts?.map(vout => `${r.txid}.${vout}`)
64
66
  if (!vargs.options.returnTXIDOnly) r.tx = beef.toBinaryAtomic(r.txid)
65
67
  }
66
68
 
67
69
  const { sendWithResults, notDelayedResults } = await processAction(prior, wallet, auth, vargs)
70
+ logger?.log('processed transaction')
68
71
 
69
72
  r.sendWithResults = sendWithResults
70
73
  r.notDelayedResults = notDelayedResults
@@ -72,15 +75,17 @@ export async function createAction(
72
75
  return r
73
76
  }
74
77
 
75
- async function createNewTx(wallet: Wallet, args: ValidCreateActionArgs): Promise<PendingSignAction> {
76
- const storageArgs = removeUnlockScripts(args)
78
+ async function createNewTx(wallet: Wallet, vargs: Validation.ValidCreateActionArgs): Promise<PendingSignAction> {
79
+ const logger = vargs.logger
80
+ const storageArgs = removeUnlockScripts(vargs)
77
81
  const dcr = await wallet.storage.createAction(storageArgs)
78
82
 
79
83
  const reference = dcr.reference
80
84
 
81
- const { tx, amount, pdi } = buildSignableTransaction(dcr, args, wallet)
85
+ const { tx, amount, pdi } = buildSignableTransaction(dcr, vargs, wallet)
86
+ logger?.log('built signable transaction')
82
87
 
83
- const prior: PendingSignAction = { reference, dcr, args, amount, tx, pdi }
88
+ const prior: PendingSignAction = { reference, dcr, args: vargs, amount, tx, pdi }
84
89
 
85
90
  return prior
86
91
  }
@@ -88,7 +93,7 @@ async function createNewTx(wallet: Wallet, args: ValidCreateActionArgs): Promise
88
93
  function makeSignableTransactionResult(
89
94
  prior: PendingSignAction,
90
95
  wallet: Wallet,
91
- args: ValidCreateActionArgs
96
+ args: Validation.ValidCreateActionArgs
92
97
  ): CreateActionResult {
93
98
  if (!prior.dcr.inputBeef) throw new WERR_INTERNAL('prior.dcr.inputBeef must be valid')
94
99
 
@@ -120,13 +125,13 @@ function makeSignableTransactionBeef(tx: Transaction, inputBEEF: number[]): numb
120
125
  return beef.toBinaryAtomic(tx.id('hex'))
121
126
  }
122
127
 
123
- function removeUnlockScripts(args: ValidCreateActionArgs) {
128
+ function removeUnlockScripts(args: Validation.ValidCreateActionArgs) {
124
129
  let storageArgs = args
125
130
  if (!storageArgs.inputs.every(i => i.unlockingScript === undefined)) {
126
131
  // Never send unlocking scripts to storage, all it needs is the script length.
127
132
  storageArgs = { ...args, inputs: [] }
128
133
  for (const i of args.inputs) {
129
- const di: ValidCreateActionInput = {
134
+ const di: Validation.ValidCreateActionInput = {
130
135
  ...i,
131
136
  unlockingScriptLength: i.unlockingScript !== undefined ? i.unlockingScript.length : i.unlockingScriptLength
132
137
  }
@@ -141,7 +146,7 @@ export async function processAction(
141
146
  prior: PendingSignAction | undefined,
142
147
  wallet: Wallet,
143
148
  auth: AuthId,
144
- vargs: ValidProcessActionArgs
149
+ vargs: Validation.ValidProcessActionArgs
145
150
  ): Promise<StorageProcessActionResults> {
146
151
  const args: StorageProcessActionArgs = {
147
152
  isNewTx: vargs.isNewTx,
@@ -151,7 +156,8 @@ export async function processAction(
151
156
  reference: prior ? prior.reference : undefined,
152
157
  txid: prior ? prior.tx.id('hex') : undefined,
153
158
  rawTx: prior ? prior.tx.toBinary() : undefined,
154
- sendWith: vargs.isSendWith ? vargs.options.sendWith : []
159
+ sendWith: vargs.isSendWith ? vargs.options.sendWith : [],
160
+ logger: vargs.logger
155
161
  }
156
162
  const r: StorageProcessActionResults = await wallet.storage.processAction(args)
157
163
 
@@ -1,7 +1,6 @@
1
- import { Beef, InternalizeActionArgs, InternalizeOutput, P2PKH, WalletProtocol } from '@bsv/sdk'
1
+ import { Beef, InternalizeActionArgs, InternalizeOutput, P2PKH, WalletProtocol, Validation } from '@bsv/sdk'
2
2
  import { Wallet } from '../../Wallet'
3
3
  import { AuthId, StorageInternalizeActionResult } from '../../sdk/WalletStorage.interfaces'
4
- import { validateInternalizeActionArgs, ValidInternalizeActionArgs } from '../../sdk/validationHelpers'
5
4
  import { WERR_INTERNAL, WERR_INVALID_PARAMETER } from '../../sdk/WERR_errors'
6
5
 
7
6
  /**
@@ -36,7 +35,7 @@ export async function internalizeAction(
36
35
  auth: AuthId,
37
36
  args: InternalizeActionArgs
38
37
  ): Promise<StorageInternalizeActionResult> {
39
- const vargs = validateInternalizeActionArgs(args)
38
+ const vargs = Validation.validateInternalizeActionArgs(args)
40
39
 
41
40
  const { ab, tx, txid } = await validateAtomicBeef()
42
41
  const brc29ProtocolID: WalletProtocol = [2, '3241645161d8']
@@ -60,7 +59,7 @@ export async function internalizeAction(
60
59
 
61
60
  return r
62
61
 
63
- function setupWalletPaymentForOutput(o: InternalizeOutput, dargs: ValidInternalizeActionArgs) {
62
+ function setupWalletPaymentForOutput(o: InternalizeOutput, dargs: Validation.ValidInternalizeActionArgs) {
64
63
  const p = o.paymentRemittance
65
64
  const output = tx.outputs[o.outputIndex]
66
65
  if (!p) throw new WERR_INVALID_PARAMETER('paymentRemittance', `valid for protocol ${o.protocol}`)
@@ -73,7 +72,7 @@ export async function internalizeAction(
73
72
  throw new WERR_INVALID_PARAMETER('paymentRemittance', `locked by script conforming to BRC-29`)
74
73
  }
75
74
 
76
- function setupBasketInsertionForOutput(o: InternalizeOutput, dargs: ValidInternalizeActionArgs) {
75
+ function setupBasketInsertionForOutput(o: InternalizeOutput, dargs: Validation.ValidInternalizeActionArgs) {
77
76
  /*
78
77
  No additional validations...
79
78
  */
@@ -1,15 +1,14 @@
1
- import { MasterCertificate, ProveCertificateResult } from '@bsv/sdk'
1
+ import { MasterCertificate, ProveCertificateResult, Validation } from '@bsv/sdk'
2
2
  import { Wallet } from '../../Wallet'
3
3
  import { WERR_INVALID_PARAMETER } from '../../sdk/WERR_errors'
4
- import { ValidListCertificatesArgs, ValidProveCertificateArgs } from '../../sdk/validationHelpers'
5
4
  import { AuthId } from '../../sdk/WalletStorage.interfaces'
6
5
 
7
6
  export async function proveCertificate(
8
7
  wallet: Wallet,
9
8
  auth: AuthId,
10
- vargs: ValidProveCertificateArgs
9
+ vargs: Validation.ValidProveCertificateArgs
11
10
  ): Promise<ProveCertificateResult> {
12
- const lcargs: ValidListCertificatesArgs = {
11
+ const lcargs: Validation.ValidListCertificatesArgs = {
13
12
  partial: {
14
13
  type: vargs.type,
15
14
  serialNumber: vargs.serialNumber,
@@ -1,10 +1,9 @@
1
- import { AtomicBEEF, Beef, SendWithResult, SignActionArgs, SignActionResult, TXIDHexString } from '@bsv/sdk'
1
+ import { AtomicBEEF, Beef, SendWithResult, SignActionArgs, SignActionResult, TXIDHexString, Validation } from '@bsv/sdk'
2
2
  import { processAction } from './createAction'
3
3
  import { AuthId, ReviewActionResult } from '../../sdk/WalletStorage.interfaces'
4
4
  import { completeSignedTransaction, verifyUnlockScripts } from './completeSignedTransaction'
5
5
  import { Wallet } from '../../Wallet'
6
6
  import { WERR_INTERNAL, WERR_NOT_IMPLEMENTED } from '../../sdk/WERR_errors'
7
- import { validateSignActionArgs, ValidCreateActionArgs, ValidSignActionArgs } from '../../sdk/validationHelpers'
8
7
 
9
8
  export interface SignActionResultX extends SignActionResult {
10
9
  txid?: TXIDHexString
@@ -41,12 +40,15 @@ export async function signAction(wallet: Wallet, auth: AuthId, args: SignActionA
41
40
  return r
42
41
  }
43
42
 
44
- function mergePriorOptions(caVargs: ValidCreateActionArgs, saArgs: SignActionArgs): ValidSignActionArgs {
43
+ function mergePriorOptions(
44
+ caVargs: Validation.ValidCreateActionArgs,
45
+ saArgs: SignActionArgs
46
+ ): Validation.ValidSignActionArgs {
45
47
  const saOptions = (saArgs.options ||= {})
46
48
  if (saOptions.acceptDelayedBroadcast === undefined)
47
49
  saOptions.acceptDelayedBroadcast = caVargs.options.acceptDelayedBroadcast
48
50
  if (saOptions.returnTXIDOnly === undefined) saOptions.returnTXIDOnly = caVargs.options.returnTXIDOnly
49
51
  if (saOptions.noSend === undefined) saOptions.noSend = caVargs.options.noSend
50
52
  if (saOptions.sendWith === undefined) saOptions.sendWith = caVargs.options.sendWith
51
- return validateSignActionArgs(saArgs)
53
+ return Validation.validateSignActionArgs(saArgs)
52
54
  }
@@ -1,5 +1,5 @@
1
1
  import { deleteDB, IDBPCursorWithValue, IDBPDatabase, IDBPTransaction, openDB } from 'idb'
2
- import { ListActionsResult, ListOutputsResult } from '@bsv/sdk'
2
+ import { ListActionsResult, ListOutputsResult, Validation } from '@bsv/sdk'
3
3
  import {
4
4
  TableCertificate,
5
5
  TableCertificateField,
@@ -53,7 +53,6 @@ import {
53
53
  } from '../sdk/WalletStorage.interfaces'
54
54
  import { WERR_INTERNAL, WERR_INVALID_OPERATION, WERR_INVALID_PARAMETER, WERR_UNAUTHORIZED } from '../sdk/WERR_errors'
55
55
  import { EntityTimeStamp, TransactionStatus } from '../sdk/types'
56
- import { ValidListActionsArgs, ValidListOutputsArgs } from '../sdk/validationHelpers'
57
56
 
58
57
  export interface StorageIdbOptions extends StorageProviderOptions {}
59
58
 
@@ -464,12 +463,12 @@ export class StorageIdb extends StorageProvider implements WalletStorageProvider
464
463
  return tags
465
464
  }
466
465
 
467
- async listActions(auth: AuthId, vargs: ValidListActionsArgs): Promise<ListActionsResult> {
466
+ async listActions(auth: AuthId, vargs: Validation.ValidListActionsArgs): Promise<ListActionsResult> {
468
467
  if (!auth.userId) throw new WERR_UNAUTHORIZED()
469
468
  return await listActionsIdb(this, auth, vargs)
470
469
  }
471
470
 
472
- async listOutputs(auth: AuthId, vargs: ValidListOutputsArgs): Promise<ListOutputsResult> {
471
+ async listOutputs(auth: AuthId, vargs: Validation.ValidListOutputsArgs): Promise<ListOutputsResult> {
473
472
  if (!auth.userId) throw new WERR_UNAUTHORIZED()
474
473
  return await listOutputsIdb(this, auth, vargs)
475
474
  }
@@ -1,4 +1,4 @@
1
- import { ListActionsResult, ListOutputsResult } from '@bsv/sdk'
1
+ import { ListActionsResult, ListOutputsResult, Validation } from '@bsv/sdk'
2
2
  import {
3
3
  outputColumnsWithoutLockingScript,
4
4
  TableCertificate,
@@ -56,7 +56,6 @@ import {
56
56
  } from '../sdk/WalletStorage.interfaces'
57
57
  import { WERR_INTERNAL, WERR_INVALID_PARAMETER, WERR_NOT_IMPLEMENTED, WERR_UNAUTHORIZED } from '../sdk/WERR_errors'
58
58
  import { verifyOne, verifyOneOrNone, verifyTruthy } from '../utility/utilityHelpers'
59
- import { ValidListActionsArgs, ValidListOutputsArgs } from '../sdk/validationHelpers'
60
59
  import { EntityTimeStamp, TransactionStatus } from '../sdk/types'
61
60
 
62
61
  export interface StorageKnexOptions extends StorageProviderOptions {
@@ -232,11 +231,11 @@ export class StorageKnex extends StorageProvider implements WalletStorageProvide
232
231
  return this.validateEntities(rs, undefined, ['isDeleted'])
233
232
  }
234
233
 
235
- override async listActions(auth: AuthId, vargs: ValidListActionsArgs): Promise<ListActionsResult> {
234
+ override async listActions(auth: AuthId, vargs: Validation.ValidListActionsArgs): Promise<ListActionsResult> {
236
235
  if (!auth.userId) throw new WERR_UNAUTHORIZED()
237
236
  return await listActions(this, auth, vargs)
238
237
  }
239
- override async listOutputs(auth: AuthId, vargs: ValidListOutputsArgs): Promise<ListOutputsResult> {
238
+ override async listOutputs(auth: AuthId, vargs: Validation.ValidListOutputsArgs): Promise<ListOutputsResult> {
240
239
  if (!auth.userId) throw new WERR_UNAUTHORIZED()
241
240
  return await listOutputs(this, auth, vargs)
242
241
  }
@@ -3,7 +3,6 @@ import {
3
3
  AbortActionResult,
4
4
  Beef,
5
5
  InternalizeActionArgs,
6
- InternalizeActionResult,
7
6
  ListActionsResult,
8
7
  ListOutputsResult,
9
8
  PubKeyHex,
@@ -11,7 +10,9 @@ import {
11
10
  TrustSelf,
12
11
  RelinquishCertificateArgs,
13
12
  RelinquishOutputArgs,
14
- AbortActionArgs
13
+ AbortActionArgs,
14
+ Validation,
15
+ WalletLoggerInterface
15
16
  } from '@bsv/sdk'
16
17
  import { getBeefForTransaction } from './methods/getBeefForTransaction'
17
18
  import { GetReqsAndBeefDetail, GetReqsAndBeefResult, processAction } from './methods/processAction'
@@ -53,15 +54,6 @@ import { TableOutput, TableOutputX } from '../../src/storage/schema/tables/Table
53
54
  import { TableOutputTag } from '../../src/storage/schema/tables/TableOutputTag'
54
55
  import { TableTxLabel } from '../../src/storage/schema/tables/TableTxLabel'
55
56
  import { TableMonitorEvent } from '../../src/storage/schema/tables/TableMonitorEvent'
56
- import {
57
- parseWalletOutpoint,
58
- validateRelinquishCertificateArgs,
59
- validateRelinquishOutputArgs,
60
- ValidCreateActionArgs,
61
- ValidListActionsArgs,
62
- ValidListCertificatesArgs,
63
- ValidListOutputsArgs
64
- } from '../sdk/validationHelpers'
65
57
  import { TableCertificateX } from './schema/tables/TableCertificate'
66
58
  import {
67
59
  WERR_INTERNAL,
@@ -130,8 +122,8 @@ export abstract class StorageProvider extends StorageReaderWriter implements Wal
130
122
  abstract getLabelsForTransactionId(transactionId?: number, trx?: TrxToken): Promise<TableTxLabel[]>
131
123
  abstract getTagsForOutputId(outputId: number, trx?: TrxToken): Promise<TableOutputTag[]>
132
124
 
133
- abstract listActions(auth: AuthId, args: ValidListActionsArgs): Promise<ListActionsResult>
134
- abstract listOutputs(auth: AuthId, args: ValidListOutputsArgs): Promise<ListOutputsResult>
125
+ abstract listActions(auth: AuthId, args: Validation.ValidListActionsArgs): Promise<ListActionsResult>
126
+ abstract listOutputs(auth: AuthId, args: Validation.ValidListOutputsArgs): Promise<ListOutputsResult>
135
127
 
136
128
  abstract countChangeInputs(userId: number, basketId: number, excludeSending: boolean): Promise<number>
137
129
 
@@ -420,7 +412,7 @@ export abstract class StorageProvider extends StorageReaderWriter implements Wal
420
412
  }, trx)
421
413
  }
422
414
 
423
- async createAction(auth: AuthId, args: ValidCreateActionArgs): Promise<StorageCreateActionResult> {
415
+ async createAction(auth: AuthId, args: Validation.ValidCreateActionArgs): Promise<StorageCreateActionResult> {
424
416
  if (!auth.userId) throw new WERR_UNAUTHORIZED()
425
417
  return await createAction(this, auth, args)
426
418
  }
@@ -429,11 +421,15 @@ export abstract class StorageProvider extends StorageReaderWriter implements Wal
429
421
  return await processAction(this, auth, args)
430
422
  }
431
423
 
432
- async attemptToPostReqsToNetwork(reqs: EntityProvenTxReq[], trx?: TrxToken): Promise<PostReqsToNetworkResult> {
433
- return await attemptToPostReqsToNetwork(this, reqs, trx)
424
+ async attemptToPostReqsToNetwork(
425
+ reqs: EntityProvenTxReq[],
426
+ trx?: TrxToken,
427
+ logger?: WalletLoggerInterface
428
+ ): Promise<PostReqsToNetworkResult> {
429
+ return await attemptToPostReqsToNetwork(this, reqs, trx, logger)
434
430
  }
435
431
 
436
- async listCertificates(auth: AuthId, args: ValidListCertificatesArgs): Promise<ListCertificatesResult> {
432
+ async listCertificates(auth: AuthId, args: Validation.ValidListCertificatesArgs): Promise<ListCertificatesResult> {
437
433
  return await listCertificates(this, auth, args)
438
434
  }
439
435
 
@@ -511,7 +507,7 @@ export abstract class StorageProvider extends StorageReaderWriter implements Wal
511
507
  }
512
508
 
513
509
  async relinquishCertificate(auth: AuthId, args: RelinquishCertificateArgs): Promise<number> {
514
- const vargs = validateRelinquishCertificateArgs(args)
510
+ const vargs = Validation.validateRelinquishCertificateArgs(args)
515
511
  const cert = verifyOne(
516
512
  await this.findCertificates({
517
513
  partial: {
@@ -527,8 +523,8 @@ export abstract class StorageProvider extends StorageReaderWriter implements Wal
527
523
  }
528
524
 
529
525
  async relinquishOutput(auth: AuthId, args: RelinquishOutputArgs): Promise<number> {
530
- const vargs = validateRelinquishOutputArgs(args)
531
- const { txid, vout } = parseWalletOutpoint(vargs.output)
526
+ const vargs = Validation.validateRelinquishOutputArgs(args)
527
+ const { txid, vout } = Validation.parseWalletOutpoint(vargs.output)
532
528
  const output = verifyOne(await this.findOutputs({ partial: { txid, vout } }))
533
529
  return await this.updateOutput(output.outputId, { basketId: undefined })
534
530
  }
@@ -3,12 +3,12 @@ import {
3
3
  AbortActionResult,
4
4
  Beef,
5
5
  InternalizeActionArgs,
6
- InternalizeActionResult,
7
6
  ListActionsResult,
8
7
  ListCertificatesResult,
9
8
  ListOutputsResult,
10
9
  RelinquishCertificateArgs,
11
- RelinquishOutputArgs
10
+ RelinquishOutputArgs,
11
+ Validation
12
12
  } from '@bsv/sdk'
13
13
  import { EntitySyncState } from '../storage/schema/entities'
14
14
  import * as sdk from '../sdk'
@@ -22,7 +22,6 @@ import {
22
22
  TableSettings,
23
23
  TableUser
24
24
  } from '../storage/schema/tables'
25
- import { wait } from '../utility/utilityHelpers'
26
25
  import { StorageProvider } from './StorageProvider'
27
26
  import { StorageClient } from './remoting/StorageClient'
28
27
 
@@ -430,20 +429,20 @@ export class WalletStorageManager implements sdk.WalletStorage {
430
429
  }
431
430
 
432
431
  async abortAction(args: AbortActionArgs): Promise<AbortActionResult> {
433
- sdk.validateAbortActionArgs(args)
432
+ Validation.validateAbortActionArgs(args)
434
433
  return await this.runAsWriter(async writer => {
435
434
  const auth = await this.getAuth(true)
436
435
  return await writer.abortAction(auth, args)
437
436
  })
438
437
  }
439
- async createAction(vargs: sdk.ValidCreateActionArgs): Promise<sdk.StorageCreateActionResult> {
438
+ async createAction(vargs: Validation.ValidCreateActionArgs): Promise<sdk.StorageCreateActionResult> {
440
439
  return await this.runAsWriter(async writer => {
441
440
  const auth = await this.getAuth(true)
442
441
  return await writer.createAction(auth, vargs)
443
442
  })
444
443
  }
445
444
  async internalizeAction(args: InternalizeActionArgs): Promise<sdk.StorageInternalizeActionResult> {
446
- sdk.validateInternalizeActionArgs(args)
445
+ Validation.validateInternalizeActionArgs(args)
447
446
  return await this.runAsWriter(async writer => {
448
447
  const auth = await this.getAuth(true)
449
448
  return await writer.internalizeAction(auth, args)
@@ -451,14 +450,14 @@ export class WalletStorageManager implements sdk.WalletStorage {
451
450
  }
452
451
 
453
452
  async relinquishCertificate(args: RelinquishCertificateArgs): Promise<number> {
454
- sdk.validateRelinquishCertificateArgs(args)
453
+ Validation.validateRelinquishCertificateArgs(args)
455
454
  return await this.runAsWriter(async writer => {
456
455
  const auth = await this.getAuth(true)
457
456
  return await writer.relinquishCertificate(auth, args)
458
457
  })
459
458
  }
460
459
  async relinquishOutput(args: RelinquishOutputArgs): Promise<number> {
461
- sdk.validateRelinquishOutputArgs(args)
460
+ Validation.validateRelinquishOutputArgs(args)
462
461
  return await this.runAsWriter(async writer => {
463
462
  const auth = await this.getAuth(true)
464
463
  return await writer.relinquishOutput(auth, args)
@@ -478,19 +477,19 @@ export class WalletStorageManager implements sdk.WalletStorage {
478
477
  })
479
478
  }
480
479
 
481
- async listActions(vargs: sdk.ValidListActionsArgs): Promise<ListActionsResult> {
480
+ async listActions(vargs: Validation.ValidListActionsArgs): Promise<ListActionsResult> {
482
481
  const auth = await this.getAuth()
483
482
  return await this.runAsReader(async reader => {
484
483
  return await reader.listActions(auth, vargs)
485
484
  })
486
485
  }
487
- async listCertificates(args: sdk.ValidListCertificatesArgs): Promise<ListCertificatesResult> {
486
+ async listCertificates(args: Validation.ValidListCertificatesArgs): Promise<ListCertificatesResult> {
488
487
  const auth = await this.getAuth()
489
488
  return await this.runAsReader(async reader => {
490
489
  return await reader.listCertificates(auth, args)
491
490
  })
492
491
  }
493
- async listOutputs(vargs: sdk.ValidListOutputsArgs): Promise<ListOutputsResult> {
492
+ async listOutputs(vargs: Validation.ValidListOutputsArgs): Promise<ListOutputsResult> {
494
493
  const auth = await this.getAuth()
495
494
  return await this.runAsReader(async reader => {
496
495
  return await reader.listOutputs(auth, vargs)
@@ -1,4 +1,4 @@
1
- import { Beef, ListActionsResult, ListOutputsResult, Utils } from '@bsv/sdk'
1
+ import { Beef, ListActionsResult, ListOutputsResult, Utils, Validation } from '@bsv/sdk'
2
2
  import { StorageAdminStats, StorageProvider } from '../StorageProvider'
3
3
  import { Chain } from '../../sdk/types'
4
4
  import { Services } from '../../services/Services'
@@ -45,7 +45,6 @@ import {
45
45
  StorageGetBeefOptions,
46
46
  TrxToken
47
47
  } from '../../sdk/WalletStorage.interfaces'
48
- import { ValidListActionsArgs, ValidListOutputsArgs } from '../../sdk/validationHelpers'
49
48
 
50
49
  describe('getBeefForTransaction tests', () => {
51
50
  jest.setTimeout(99999999)
@@ -129,10 +128,10 @@ class ProtoStorage extends StorageProvider {
129
128
  override getTagsForOutputId(outputId: number, trx?: TrxToken): Promise<TableOutputTag[]> {
130
129
  throw this.nip
131
130
  }
132
- override listActions(auth: AuthId, args: ValidListActionsArgs): Promise<ListActionsResult> {
131
+ override listActions(auth: AuthId, args: Validation.ValidListActionsArgs): Promise<ListActionsResult> {
133
132
  throw this.nip
134
133
  }
135
- override listOutputs(auth: AuthId, args: ValidListOutputsArgs): Promise<ListOutputsResult> {
134
+ override listOutputs(auth: AuthId, args: Validation.ValidListOutputsArgs): Promise<ListOutputsResult> {
136
135
  throw this.nip
137
136
  }
138
137
  override countChangeInputs(userId: number, basketId: number, excludeSending: boolean): Promise<number> {
@@ -1,5 +1,5 @@
1
+ import { Validation } from '@bsv/sdk'
1
2
  import { specOpFailedActions, specOpNoSendActions, TransactionStatus } from '../../sdk/types'
2
- import { ValidListActionsArgs } from '../../sdk/validationHelpers'
3
3
  import { AuthId } from '../../sdk/WalletStorage.interfaces'
4
4
  import { TableTransaction } from '../schema/tables/TableTransaction'
5
5
  import { StorageProvider } from '../StorageProvider'
@@ -16,7 +16,7 @@ export interface ListActionsSpecOp {
16
16
  postProcess?: (
17
17
  s: StorageProvider,
18
18
  auth: AuthId,
19
- vargs: ValidListActionsArgs,
19
+ vargs: Validation.ValidListActionsArgs,
20
20
  specOpLabels: string[],
21
21
  txs: Partial<TableTransaction>[]
22
22
  ) => Promise<void>
@@ -31,7 +31,7 @@ export const getLabelToSpecOp: () => Record<string, ListActionsSpecOp> = () => {
31
31
  postProcess: async (
32
32
  s: StorageProvider,
33
33
  auth: AuthId,
34
- vargs: ValidListActionsArgs,
34
+ vargs: Validation.ValidListActionsArgs,
35
35
  specOpLabels: string[],
36
36
  txs: Partial<TableTransaction>[]
37
37
  ): Promise<void> => {
@@ -52,7 +52,7 @@ export const getLabelToSpecOp: () => Record<string, ListActionsSpecOp> = () => {
52
52
  postProcess: async (
53
53
  s: StorageProvider,
54
54
  auth: AuthId,
55
- vargs: ValidListActionsArgs,
55
+ vargs: Validation.ValidListActionsArgs,
56
56
  specOpLabels: string[],
57
57
  txs: Partial<TableTransaction>[]
58
58
  ): Promise<void> => {
@@ -1,5 +1,4 @@
1
- import { ListOutputsResult } from '@bsv/sdk'
2
- import { ValidListOutputsArgs } from '../../sdk/validationHelpers'
1
+ import { ListOutputsResult, Validation } from '@bsv/sdk'
3
2
  import { StorageProvider } from '../StorageProvider'
4
3
  import { AuthId } from '../../sdk/WalletStorage.interfaces'
5
4
  import { TableOutput } from '../schema/tables/TableOutput'
@@ -16,20 +15,20 @@ export interface ListOutputsSpecOp {
16
15
  resultFromTags?: (
17
16
  s: StorageProvider,
18
17
  auth: AuthId,
19
- vargs: ValidListOutputsArgs,
18
+ vargs: Validation.ValidListOutputsArgs,
20
19
  specOpTags: string[]
21
20
  ) => Promise<ListOutputsResult>
22
21
  resultFromOutputs?: (
23
22
  s: StorageProvider,
24
23
  auth: AuthId,
25
- vargs: ValidListOutputsArgs,
24
+ vargs: Validation.ValidListOutputsArgs,
26
25
  specOpTags: string[],
27
26
  outputs: TableOutput[]
28
27
  ) => Promise<ListOutputsResult>
29
28
  filterOutputs?: (
30
29
  s: StorageProvider,
31
30
  auth: AuthId,
32
- vargs: ValidListOutputsArgs,
31
+ vargs: Validation.ValidListOutputsArgs,
33
32
  specOpTags: string[],
34
33
  outputs: TableOutput[]
35
34
  ) => Promise<TableOutput[]>
@@ -54,7 +53,7 @@ export const getBasketToSpecOp: () => Record<string, ListOutputsSpecOp> = () =>
54
53
  resultFromOutputs: async (
55
54
  s: StorageProvider,
56
55
  auth: AuthId,
57
- vargs: ValidListOutputsArgs,
56
+ vargs: Validation.ValidListOutputsArgs,
58
57
  specOpTags: string[],
59
58
  outputs: TableOutput[]
60
59
  ): Promise<ListOutputsResult> => {
@@ -73,7 +72,7 @@ export const getBasketToSpecOp: () => Record<string, ListOutputsSpecOp> = () =>
73
72
  filterOutputs: async (
74
73
  s: StorageProvider,
75
74
  auth: AuthId,
76
- vargs: ValidListOutputsArgs,
75
+ vargs: Validation.ValidListOutputsArgs,
77
76
  specOpTags: string[],
78
77
  outputs: TableOutput[]
79
78
  ): Promise<TableOutput[]> => {
@@ -106,7 +105,7 @@ export const getBasketToSpecOp: () => Record<string, ListOutputsSpecOp> = () =>
106
105
  resultFromTags: async (
107
106
  s: StorageProvider,
108
107
  auth: AuthId,
109
- vargs: ValidListOutputsArgs,
108
+ vargs: Validation.ValidListOutputsArgs,
110
109
  specOpTags: string[]
111
110
  ): Promise<ListOutputsResult> => {
112
111
  if (specOpTags.length !== 2)
@@ -1,4 +1,4 @@
1
- import { Beef, Transaction } from '@bsv/sdk'
1
+ import { Beef, Transaction, WalletLoggerInterface } from '@bsv/sdk'
2
2
  import { StorageProvider } from '../StorageProvider'
3
3
  import { EntityProvenTxReq } from '../schema/entities'
4
4
  import * as sdk from '../../sdk'
@@ -14,15 +14,17 @@ import { wait } from '../../utility/utilityHelpers'
14
14
  export async function attemptToPostReqsToNetwork(
15
15
  storage: StorageProvider,
16
16
  reqs: EntityProvenTxReq[],
17
- trx?: sdk.TrxToken
17
+ trx?: sdk.TrxToken,
18
+ logger?: WalletLoggerInterface
18
19
  ): Promise<PostReqsToNetworkResult> {
19
20
  // initialize results, validate reqs ready to post, txids are of the transactions in the beef that we care about.
20
21
 
21
22
  const { r, vreqs, txids } = await validateReqsAndMergeBeefs(storage, reqs, trx)
23
+ logger?.log(`validated request and merged beefs`)
22
24
 
23
25
  const services = storage.getServices()
24
26
 
25
- const pbrs = await services.postBeef(r.beef, txids)
27
+ const pbrs = await services.postBeef(r.beef, txids, logger)
26
28
 
27
29
  // post beef results (pbrs) is an array by service provider
28
30
  // for each service provider, there's an aggregate result and individual results by txid.
@@ -31,7 +33,7 @@ export async function attemptToPostReqsToNetwork(
31
33
 
32
34
  const apbrs = aggregatePostBeefResultsByTxid(txids, vreqs, pbrs)
33
35
 
34
- await updateReqsFromAggregateResults(txids, r, apbrs, storage, services, trx)
36
+ await updateReqsFromAggregateResults(txids, r, apbrs, storage, services, trx, logger)
35
37
 
36
38
  return r
37
39
  }
@@ -192,8 +194,10 @@ async function updateReqsFromAggregateResults(
192
194
  apbrs: Record<string, AggregatePostBeefTxResult>,
193
195
  storage: StorageProvider,
194
196
  services?: sdk.WalletServices,
195
- trx?: sdk.TrxToken
197
+ trx?: sdk.TrxToken,
198
+ logger?: WalletLoggerInterface
196
199
  ): Promise<void> {
200
+ logger?.group('update storage from aggregate results')
197
201
  for (const txid of txids) {
198
202
  const ar = apbrs[txid]!
199
203
  const req = ar.vreq.req
@@ -216,7 +220,7 @@ async function updateReqsFromAggregateResults(
216
220
  // However it happened, don't degrade status if it is somehow already beyond broadcast stage
217
221
  continue
218
222
 
219
- if (ar.status === 'doubleSpend' && services && !trx) await confirmDoubleSpend(ar, r.beef, storage, services)
223
+ if (ar.status === 'doubleSpend' && services && !trx) await confirmDoubleSpend(ar, r.beef, storage, services, logger)
220
224
 
221
225
  let newReqStatus: sdk.ProvenTxReqStatus | undefined = undefined
222
226
  let newTxStatus: sdk.TransactionStatus | undefined = undefined
@@ -263,7 +267,9 @@ async function updateReqsFromAggregateResults(
263
267
  const details = r.details.find(d => d.txid === txid)!
264
268
  details.status = ar.status
265
269
  details.competingTxs = ar.competingTxs
270
+ logger?.log(`updated ${txid}`)
266
271
  }
272
+ logger?.group('update storage from aggregate results')
267
273
  }
268
274
 
269
275
  /**
@@ -281,7 +287,8 @@ async function confirmDoubleSpend(
281
287
  ar: AggregatePostBeefTxResult,
282
288
  beef: Beef,
283
289
  storage: StorageProvider,
284
- services: sdk.WalletServices
290
+ services: sdk.WalletServices,
291
+ logger?: WalletLoggerInterface
285
292
  ): Promise<void> {
286
293
  const req = ar.vreq.req
287
294
  const note: ReqHistoryNote = { when: new Date().toISOString(), what: 'confirmDoubleSpend' }
@@ -312,7 +319,7 @@ async function confirmDoubleSpend(
312
319
  if (!sourceTx) throw new sdk.WERR_INTERNAL(`beef lacks tx for ${input.sourceTXID}`)
313
320
  const lockingScript = sourceTx.outputs[input.sourceOutputIndex].lockingScript.toHex()
314
321
  const hash = services.hashOutputScript(lockingScript)
315
- const shhrs = await services.getScriptHashHistory(hash)
322
+ const shhrs = await services.getScriptHashHistory(hash, undefined, logger)
316
323
  if (shhrs.status === 'success') {
317
324
  for (const h of shhrs.history) {
318
325
  // Neither the source of the input nor the current transaction are competition.