@bsv/wallet-toolbox 1.3.3 → 1.3.5

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 (324) 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/CWIStyleWalletManager.d.ts.map +1 -1
  8. package/out/src/CWIStyleWalletManager.js +24 -10
  9. package/out/src/CWIStyleWalletManager.js.map +1 -1
  10. package/out/src/Setup.d.ts +2 -69
  11. package/out/src/Setup.d.ts.map +1 -1
  12. package/out/src/Setup.js.map +1 -1
  13. package/out/src/SetupClient.d.ts +126 -0
  14. package/out/src/SetupClient.d.ts.map +1 -0
  15. package/out/src/SetupClient.js +220 -0
  16. package/out/src/SetupClient.js.map +1 -0
  17. package/out/src/SetupWallet.d.ts +100 -0
  18. package/out/src/SetupWallet.d.ts.map +1 -0
  19. package/out/src/{storage/schema/tables/Certificate.js → SetupWallet.js} +1 -1
  20. package/out/src/SetupWallet.js.map +1 -0
  21. package/out/src/index.all.d.ts +2 -0
  22. package/out/src/index.all.d.ts.map +1 -1
  23. package/out/src/index.all.js +2 -0
  24. package/out/src/index.all.js.map +1 -1
  25. package/out/src/index.client.d.ts +1 -0
  26. package/out/src/index.client.d.ts.map +1 -1
  27. package/out/src/index.client.js +1 -0
  28. package/out/src/index.client.js.map +1 -1
  29. package/out/src/monitor/Monitor.d.ts.map +1 -1
  30. package/out/src/monitor/Monitor.js +4 -0
  31. package/out/src/monitor/Monitor.js.map +1 -1
  32. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  33. package/out/src/monitor/MonitorDaemon.js +0 -3
  34. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  35. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  36. package/out/src/monitor/tasks/TaskUnFail.js +1 -2
  37. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  38. package/out/src/sdk/WalletServices.interfaces.d.ts +1 -1
  39. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  40. package/out/src/services/__tests/postBeef.test.js +1 -1
  41. package/out/src/services/__tests/postBeef.test.js.map +1 -1
  42. package/out/src/storage/StorageIdb.d.ts +203 -0
  43. package/out/src/storage/StorageIdb.d.ts.map +1 -0
  44. package/out/src/storage/StorageIdb.js +2289 -0
  45. package/out/src/storage/StorageIdb.js.map +1 -0
  46. package/out/src/storage/StorageKnex.d.ts +6 -6
  47. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  48. package/out/src/storage/StorageKnex.js +9 -29
  49. package/out/src/storage/StorageKnex.js.map +1 -1
  50. package/out/src/storage/StorageProvider.d.ts +3 -1
  51. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  52. package/out/src/storage/StorageProvider.js +22 -0
  53. package/out/src/storage/StorageProvider.js.map +1 -1
  54. package/out/src/storage/StorageReader.d.ts +1 -1
  55. package/out/src/storage/StorageReader.d.ts.map +1 -1
  56. package/out/src/storage/StorageReader.js +5 -0
  57. package/out/src/storage/StorageReader.js.map +1 -1
  58. package/out/src/storage/__test/StorageIdb.test.d.ts +2 -0
  59. package/out/src/storage/__test/StorageIdb.test.d.ts.map +1 -0
  60. package/out/src/storage/__test/StorageIdb.test.js +16 -0
  61. package/out/src/storage/__test/StorageIdb.test.js.map +1 -0
  62. package/out/src/storage/methods/ListActionsSpecOp.d.ts +16 -0
  63. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -0
  64. package/out/src/storage/methods/ListActionsSpecOp.js +40 -0
  65. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -0
  66. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +26 -0
  67. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -0
  68. package/out/src/storage/methods/ListOutputsSpecOp.js +71 -0
  69. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -0
  70. package/out/src/storage/methods/listActionsIdb.d.ts +5 -0
  71. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -0
  72. package/out/src/storage/methods/listActionsIdb.js +155 -0
  73. package/out/src/storage/methods/listActionsIdb.js.map +1 -0
  74. package/out/src/storage/methods/{listActions.d.ts → listActionsKnex.d.ts} +1 -1
  75. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -0
  76. package/out/src/storage/methods/{listActions.js → listActionsKnex.js} +3 -34
  77. package/out/src/storage/methods/listActionsKnex.js.map +1 -0
  78. package/out/src/storage/methods/listOutputsIdb.d.ts +5 -0
  79. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -0
  80. package/out/src/storage/methods/listOutputsIdb.js +181 -0
  81. package/out/src/storage/methods/listOutputsIdb.js.map +1 -0
  82. package/out/src/storage/methods/{listOutputs.d.ts → listOutputsKnex.d.ts} +1 -1
  83. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -0
  84. package/out/src/storage/methods/{listOutputs.js → listOutputsKnex.js} +7 -76
  85. package/out/src/storage/methods/listOutputsKnex.js.map +1 -0
  86. package/out/src/storage/methods/purgeDataIdb.d.ts +4 -0
  87. package/out/src/storage/methods/purgeDataIdb.d.ts.map +1 -0
  88. package/out/src/storage/methods/purgeDataIdb.js +9 -0
  89. package/out/src/storage/methods/purgeDataIdb.js.map +1 -0
  90. package/out/src/storage/methods/reviewStatus.d.ts +11 -0
  91. package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
  92. package/out/src/storage/methods/reviewStatus.js +11 -0
  93. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  94. package/out/src/storage/methods/reviewStatusIdb.d.ts +20 -0
  95. package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -0
  96. package/out/src/storage/methods/reviewStatusIdb.js +35 -0
  97. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -0
  98. package/out/src/storage/schema/StorageIdbSchema.d.ts +133 -0
  99. package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -0
  100. package/out/src/storage/schema/{tables/CertificateField.js → StorageIdbSchema.js} +1 -1
  101. package/out/src/storage/schema/StorageIdbSchema.js.map +1 -0
  102. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js +1 -1
  103. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js.map +1 -1
  104. package/out/src/storage/schema/tables/{Certificate.d.ts → TableCertificate.d.ts} +1 -1
  105. package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -0
  106. package/out/src/storage/schema/tables/TableCertificate.js +3 -0
  107. package/out/src/storage/schema/tables/TableCertificate.js.map +1 -0
  108. package/out/src/storage/schema/tables/{CertificateField.d.ts → TableCertificateField.d.ts} +1 -1
  109. package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -0
  110. package/out/src/storage/schema/tables/TableCertificateField.js +3 -0
  111. package/out/src/storage/schema/tables/TableCertificateField.js.map +1 -0
  112. package/out/src/storage/schema/tables/{Commission.d.ts → TableCommission.d.ts} +1 -1
  113. package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -0
  114. package/out/src/storage/schema/tables/TableCommission.js +3 -0
  115. package/out/src/storage/schema/tables/TableCommission.js.map +1 -0
  116. package/out/src/storage/schema/tables/{MonitorEvent.d.ts → TableMonitorEvent.d.ts} +1 -1
  117. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -0
  118. package/out/src/storage/schema/tables/TableMonitorEvent.js +3 -0
  119. package/out/src/storage/schema/tables/TableMonitorEvent.js.map +1 -0
  120. package/out/src/storage/schema/tables/{Output.d.ts → TableOutput.d.ts} +1 -1
  121. package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -0
  122. package/out/src/storage/schema/tables/{Output.js → TableOutput.js} +1 -1
  123. package/out/src/storage/schema/tables/TableOutput.js.map +1 -0
  124. package/out/src/storage/schema/tables/{OutputBasket.d.ts → TableOutputBasket.d.ts} +1 -1
  125. package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -0
  126. package/out/src/storage/schema/tables/TableOutputBasket.js +3 -0
  127. package/out/src/storage/schema/tables/TableOutputBasket.js.map +1 -0
  128. package/out/src/storage/schema/tables/{OutputTag.d.ts → TableOutputTag.d.ts} +1 -1
  129. package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -0
  130. package/out/src/storage/schema/tables/{MonitorEvent.js → TableOutputTag.js} +1 -1
  131. package/out/src/storage/schema/tables/TableOutputTag.js.map +1 -0
  132. package/out/src/storage/schema/tables/{OutputTagMap.d.ts → TableOutputTagMap.d.ts} +1 -1
  133. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -0
  134. package/out/src/storage/schema/tables/TableOutputTagMap.js +3 -0
  135. package/out/src/storage/schema/tables/TableOutputTagMap.js.map +1 -0
  136. package/out/src/storage/schema/tables/{ProvenTx.d.ts → TableProvenTx.d.ts} +1 -1
  137. package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -0
  138. package/out/src/storage/schema/tables/{Commission.js → TableProvenTx.js} +1 -1
  139. package/out/src/storage/schema/tables/TableProvenTx.js.map +1 -0
  140. package/out/src/storage/schema/tables/{ProvenTxReq.d.ts → TableProvenTxReq.d.ts} +1 -1
  141. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -0
  142. package/out/src/storage/schema/tables/TableProvenTxReq.js +3 -0
  143. package/out/src/storage/schema/tables/TableProvenTxReq.js.map +1 -0
  144. package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
  145. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  146. package/out/src/storage/schema/tables/{SyncState.d.ts → TableSyncState.d.ts} +1 -1
  147. package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -0
  148. package/out/src/storage/schema/tables/TableSyncState.js +3 -0
  149. package/out/src/storage/schema/tables/TableSyncState.js.map +1 -0
  150. package/out/src/storage/schema/tables/{Transaction.d.ts → TableTransaction.d.ts} +1 -1
  151. package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -0
  152. package/out/src/storage/schema/tables/{Transaction.js → TableTransaction.js} +1 -1
  153. package/out/src/storage/schema/tables/TableTransaction.js.map +1 -0
  154. package/out/src/storage/schema/tables/{TxLabel.d.ts → TableTxLabel.d.ts} +1 -1
  155. package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -0
  156. package/out/src/storage/schema/tables/{OutputBasket.js → TableTxLabel.js} +1 -1
  157. package/out/src/storage/schema/tables/TableTxLabel.js.map +1 -0
  158. package/out/src/storage/schema/tables/{TxLabelMap.d.ts → TableTxLabelMap.d.ts} +1 -1
  159. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -0
  160. package/out/src/storage/schema/tables/TableTxLabelMap.js +3 -0
  161. package/out/src/storage/schema/tables/TableTxLabelMap.js.map +1 -0
  162. package/out/src/storage/schema/tables/{User.d.ts → TableUser.d.ts} +1 -1
  163. package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -0
  164. package/out/src/storage/schema/tables/{SyncState.js → TableUser.js} +1 -1
  165. package/out/src/storage/schema/tables/TableUser.js.map +1 -0
  166. package/out/src/storage/schema/tables/index.d.ts +15 -15
  167. package/out/src/storage/schema/tables/index.d.ts.map +1 -1
  168. package/out/src/storage/schema/tables/index.js +15 -15
  169. package/out/src/storage/schema/tables/index.js.map +1 -1
  170. package/out/test/Wallet/local/localWallet2.man.test.js +4 -0
  171. package/out/test/Wallet/local/localWallet2.man.test.js.map +1 -1
  172. package/out/test/Wallet/support/operations.man.test.d.ts +2 -0
  173. package/out/test/Wallet/support/operations.man.test.d.ts.map +1 -0
  174. package/out/test/Wallet/support/{opers1.man.test.js → operations.man.test.js} +39 -4
  175. package/out/test/Wallet/support/operations.man.test.js.map +1 -0
  176. package/out/test/storage/find.test.js +1 -1
  177. package/out/test/storage/find.test.js.map +1 -1
  178. package/out/test/storage/idb/allocateChange.test.d.ts +2 -0
  179. package/out/test/storage/idb/allocateChange.test.d.ts.map +1 -0
  180. package/out/test/storage/idb/allocateChange.test.js +110 -0
  181. package/out/test/storage/idb/allocateChange.test.js.map +1 -0
  182. package/out/test/storage/idb/count.test.d.ts +2 -0
  183. package/out/test/storage/idb/count.test.d.ts.map +1 -0
  184. package/out/test/storage/idb/count.test.js +129 -0
  185. package/out/test/storage/idb/count.test.js.map +1 -0
  186. package/out/test/storage/idb/find.test.d.ts +2 -0
  187. package/out/test/storage/idb/find.test.d.ts.map +1 -0
  188. package/out/test/storage/idb/find.test.js +131 -0
  189. package/out/test/storage/idb/find.test.js.map +1 -0
  190. package/out/test/storage/idb/idbSpeed.test.d.ts +2 -0
  191. package/out/test/storage/idb/idbSpeed.test.d.ts.map +1 -0
  192. package/out/test/storage/idb/idbSpeed.test.js +29 -0
  193. package/out/test/storage/idb/idbSpeed.test.js.map +1 -0
  194. package/out/test/storage/idb/insert.test.d.ts +2 -0
  195. package/out/test/storage/idb/insert.test.d.ts.map +1 -0
  196. package/out/test/storage/idb/insert.test.js +242 -0
  197. package/out/test/storage/idb/insert.test.js.map +1 -0
  198. package/out/test/storage/idb/transactionAbort.test.d.ts +2 -0
  199. package/out/test/storage/idb/transactionAbort.test.d.ts.map +1 -0
  200. package/out/test/storage/idb/transactionAbort.test.js +97 -0
  201. package/out/test/storage/idb/transactionAbort.test.js.map +1 -0
  202. package/out/test/storage/idb/update.test.d.ts +2 -0
  203. package/out/test/storage/idb/update.test.d.ts.map +1 -0
  204. package/out/test/storage/idb/update.test.js +902 -0
  205. package/out/test/storage/idb/update.test.js.map +1 -0
  206. package/out/test/storage/update.test.js +2 -2
  207. package/out/test/storage/update.test.js.map +1 -1
  208. package/out/test/utils/TestUtilsWalletStorage.d.ts +24 -1
  209. package/out/test/utils/TestUtilsWalletStorage.d.ts.map +1 -1
  210. package/out/test/utils/TestUtilsWalletStorage.js +147 -3
  211. package/out/test/utils/TestUtilsWalletStorage.js.map +1 -1
  212. package/out/test/wallet/list/listActions.test.d.ts +1 -1
  213. package/out/test/wallet/list/listActions.test.d.ts.map +1 -1
  214. package/out/test/wallet/list/listActions.test.js +9 -3
  215. package/out/test/wallet/list/listActions.test.js.map +1 -1
  216. package/out/test/wallet/list/listOutputs.test.d.ts +1 -1
  217. package/out/test/wallet/list/listOutputs.test.d.ts.map +1 -1
  218. package/out/test/wallet/list/listOutputs.test.js +34 -219
  219. package/out/test/wallet/list/listOutputs.test.js.map +1 -1
  220. package/out/tsconfig.all.tsbuildinfo +1 -1
  221. package/package.json +3 -1
  222. package/src/CWIStyleWalletManager.ts +29 -13
  223. package/src/Setup.ts +1 -71
  224. package/src/SetupClient.ts +312 -0
  225. package/src/SetupWallet.ts +105 -0
  226. package/src/index.all.ts +2 -0
  227. package/src/index.client.ts +1 -0
  228. package/src/monitor/Monitor.ts +4 -0
  229. package/src/monitor/MonitorDaemon.ts +0 -1
  230. package/src/monitor/tasks/TaskUnFail.ts +3 -4
  231. package/src/sdk/WalletServices.interfaces.ts +1 -2
  232. package/src/services/__tests/postBeef.test.ts +1 -1
  233. package/src/storage/StorageIdb.ts +2298 -0
  234. package/src/storage/StorageKnex.ts +7 -32
  235. package/src/storage/StorageProvider.ts +28 -0
  236. package/src/storage/StorageReader.ts +5 -1
  237. package/src/storage/__test/StorageIdb.test.ts +15 -0
  238. package/src/storage/methods/ListActionsSpecOp.ts +68 -0
  239. package/src/storage/methods/ListOutputsSpecOp.ts +125 -0
  240. package/src/storage/methods/listActionsIdb.ts +181 -0
  241. package/src/storage/methods/{listActions.ts → listActionsKnex.ts} +2 -64
  242. package/src/storage/methods/listOutputsIdb.ts +199 -0
  243. package/src/storage/methods/{listOutputs.ts → listOutputsKnex.ts} +9 -133
  244. package/src/storage/methods/purgeDataIdb.ts +15 -0
  245. package/src/storage/methods/reviewStatus.ts +11 -0
  246. package/src/storage/methods/reviewStatusIdb.ts +43 -0
  247. package/src/storage/schema/StorageIdbSchema.ts +150 -0
  248. package/src/storage/schema/entities/__tests/ProvenTxTests.test.ts +1 -1
  249. package/src/storage/schema/tables/TableSettings.ts +1 -1
  250. package/src/storage/schema/tables/index.ts +15 -15
  251. package/test/Wallet/local/localWallet2.man.test.ts +5 -0
  252. package/test/Wallet/support/{opers1.man.test.ts → operations.man.test.ts} +41 -12
  253. package/test/storage/find.test.ts +1 -1
  254. package/test/storage/idb/allocateChange.test.ts +251 -0
  255. package/test/storage/idb/count.test.ts +158 -0
  256. package/test/storage/idb/find.test.ts +177 -0
  257. package/test/storage/idb/idbSpeed.test.ts +34 -0
  258. package/test/storage/idb/insert.test.ts +268 -0
  259. package/test/storage/idb/transactionAbort.test.ts +108 -0
  260. package/test/storage/idb/update.test.ts +1000 -0
  261. package/test/storage/update.test.ts +2 -2
  262. package/test/utils/TestUtilsWalletStorage.ts +188 -4
  263. package/test/wallet/list/listActions.test.ts +15 -5
  264. package/test/wallet/list/listOutputs.test.ts +29 -214
  265. package/out/src/storage/methods/listActions.d.ts.map +0 -1
  266. package/out/src/storage/methods/listActions.js.map +0 -1
  267. package/out/src/storage/methods/listOutputs.d.ts.map +0 -1
  268. package/out/src/storage/methods/listOutputs.js.map +0 -1
  269. package/out/src/storage/schema/tables/Certificate.d.ts.map +0 -1
  270. package/out/src/storage/schema/tables/Certificate.js.map +0 -1
  271. package/out/src/storage/schema/tables/CertificateField.d.ts.map +0 -1
  272. package/out/src/storage/schema/tables/CertificateField.js.map +0 -1
  273. package/out/src/storage/schema/tables/Commission.d.ts.map +0 -1
  274. package/out/src/storage/schema/tables/Commission.js.map +0 -1
  275. package/out/src/storage/schema/tables/MonitorEvent.d.ts.map +0 -1
  276. package/out/src/storage/schema/tables/MonitorEvent.js.map +0 -1
  277. package/out/src/storage/schema/tables/Output.d.ts.map +0 -1
  278. package/out/src/storage/schema/tables/Output.js.map +0 -1
  279. package/out/src/storage/schema/tables/OutputBasket.d.ts.map +0 -1
  280. package/out/src/storage/schema/tables/OutputBasket.js.map +0 -1
  281. package/out/src/storage/schema/tables/OutputTag.d.ts.map +0 -1
  282. package/out/src/storage/schema/tables/OutputTag.js +0 -3
  283. package/out/src/storage/schema/tables/OutputTag.js.map +0 -1
  284. package/out/src/storage/schema/tables/OutputTagMap.d.ts.map +0 -1
  285. package/out/src/storage/schema/tables/OutputTagMap.js +0 -3
  286. package/out/src/storage/schema/tables/OutputTagMap.js.map +0 -1
  287. package/out/src/storage/schema/tables/ProvenTx.d.ts.map +0 -1
  288. package/out/src/storage/schema/tables/ProvenTx.js +0 -3
  289. package/out/src/storage/schema/tables/ProvenTx.js.map +0 -1
  290. package/out/src/storage/schema/tables/ProvenTxReq.d.ts.map +0 -1
  291. package/out/src/storage/schema/tables/ProvenTxReq.js +0 -3
  292. package/out/src/storage/schema/tables/ProvenTxReq.js.map +0 -1
  293. package/out/src/storage/schema/tables/SyncState.d.ts.map +0 -1
  294. package/out/src/storage/schema/tables/SyncState.js.map +0 -1
  295. package/out/src/storage/schema/tables/Transaction.d.ts.map +0 -1
  296. package/out/src/storage/schema/tables/Transaction.js.map +0 -1
  297. package/out/src/storage/schema/tables/TxLabel.d.ts.map +0 -1
  298. package/out/src/storage/schema/tables/TxLabel.js +0 -3
  299. package/out/src/storage/schema/tables/TxLabel.js.map +0 -1
  300. package/out/src/storage/schema/tables/TxLabelMap.d.ts.map +0 -1
  301. package/out/src/storage/schema/tables/TxLabelMap.js +0 -3
  302. package/out/src/storage/schema/tables/TxLabelMap.js.map +0 -1
  303. package/out/src/storage/schema/tables/User.d.ts.map +0 -1
  304. package/out/src/storage/schema/tables/User.js +0 -3
  305. package/out/src/storage/schema/tables/User.js.map +0 -1
  306. package/out/test/Wallet/support/opers1.man.test.d.ts +0 -2
  307. package/out/test/Wallet/support/opers1.man.test.d.ts.map +0 -1
  308. package/out/test/Wallet/support/opers1.man.test.js.map +0 -1
  309. package/unlock-migrations.sh +0 -41
  310. /package/src/storage/schema/tables/{Certificate.ts → TableCertificate.ts} +0 -0
  311. /package/src/storage/schema/tables/{CertificateField.ts → TableCertificateField.ts} +0 -0
  312. /package/src/storage/schema/tables/{Commission.ts → TableCommission.ts} +0 -0
  313. /package/src/storage/schema/tables/{MonitorEvent.ts → TableMonitorEvent.ts} +0 -0
  314. /package/src/storage/schema/tables/{Output.ts → TableOutput.ts} +0 -0
  315. /package/src/storage/schema/tables/{OutputBasket.ts → TableOutputBasket.ts} +0 -0
  316. /package/src/storage/schema/tables/{OutputTag.ts → TableOutputTag.ts} +0 -0
  317. /package/src/storage/schema/tables/{OutputTagMap.ts → TableOutputTagMap.ts} +0 -0
  318. /package/src/storage/schema/tables/{ProvenTx.ts → TableProvenTx.ts} +0 -0
  319. /package/src/storage/schema/tables/{ProvenTxReq.ts → TableProvenTxReq.ts} +0 -0
  320. /package/src/storage/schema/tables/{SyncState.ts → TableSyncState.ts} +0 -0
  321. /package/src/storage/schema/tables/{Transaction.ts → TableTransaction.ts} +0 -0
  322. /package/src/storage/schema/tables/{TxLabel.ts → TableTxLabel.ts} +0 -0
  323. /package/src/storage/schema/tables/{TxLabelMap.ts → TableTxLabelMap.ts} +0 -0
  324. /package/src/storage/schema/tables/{User.ts → TableUser.ts} +0 -0
package/docs/storage.md CHANGED
@@ -22,22 +22,23 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
22
22
 
23
23
  | | | |
24
24
  | --- | --- | --- |
25
- | [CommitNewTxResults](#interface-commitnewtxresults) | [ProvenTxReqHistorySummaryApi](#interface-proventxreqhistorysummaryapi) | [TableOutputTag](#interface-tableoutputtag) |
26
- | [EntitySyncMap](#interface-entitysyncmap) | [ProvenTxReqNotify](#interface-proventxreqnotify) | [TableOutputTagMap](#interface-tableoutputtagmap) |
27
- | [GenerateChangeSdkChangeInput](#interface-generatechangesdkchangeinput) | [StorageInternalizeActionResult](#interface-storageinternalizeactionresult) | [TableOutputX](#interface-tableoutputx) |
28
- | [GenerateChangeSdkChangeOutput](#interface-generatechangesdkchangeoutput) | [StorageKnexOptions](#interface-storageknexoptions) | [TableProvenTx](#interface-tableproventx) |
29
- | [GenerateChangeSdkInput](#interface-generatechangesdkinput) | [StorageProviderOptions](#interface-storageprovideroptions) | [TableProvenTxReq](#interface-tableproventxreq) |
30
- | [GenerateChangeSdkOutput](#interface-generatechangesdkoutput) | [StorageReaderOptions](#interface-storagereaderoptions) | [TableProvenTxReqDynamics](#interface-tableproventxreqdynamics) |
31
- | [GenerateChangeSdkParams](#interface-generatechangesdkparams) | [StorageReaderWriterOptions](#interface-storagereaderwriteroptions) | [TableSettings](#interface-tablesettings) |
32
- | [GenerateChangeSdkResult](#interface-generatechangesdkresult) | [SyncError](#interface-syncerror) | [TableSyncState](#interface-tablesyncstate) |
33
- | [GenerateChangeSdkStorageChange](#interface-generatechangesdkstoragechange) | [SyncMap](#interface-syncmap) | [TableTransaction](#interface-tabletransaction) |
34
- | [GetReqsAndBeefDetail](#interface-getreqsandbeefdetail) | [TableCertificate](#interface-tablecertificate) | [TableTxLabel](#interface-tabletxlabel) |
35
- | [GetReqsAndBeefResult](#interface-getreqsandbeefresult) | [TableCertificateField](#interface-tablecertificatefield) | [TableTxLabelMap](#interface-tabletxlabelmap) |
36
- | [PostBeefResultForTxidApi](#interface-postbeefresultfortxidapi) | [TableCertificateX](#interface-tablecertificatex) | [TableUser](#interface-tableuser) |
37
- | [PostReqsToNetworkDetails](#interface-postreqstonetworkdetails) | [TableCommission](#interface-tablecommission) | [ValidateGenerateChangeSdkParamsResult](#interface-validategeneratechangesdkparamsresult) |
38
- | [PostReqsToNetworkResult](#interface-postreqstonetworkresult) | [TableMonitorEvent](#interface-tablemonitorevent) | [WalletStorageServerOptions](#interface-walletstorageserveroptions) |
39
- | [ProvenTxFromTxidResult](#interface-proventxfromtxidresult) | [TableOutput](#interface-tableoutput) | [XValidCreateActionOutput](#interface-xvalidcreateactionoutput) |
40
- | [ProvenTxReqHistory](#interface-proventxreqhistory) | [TableOutputBasket](#interface-tableoutputbasket) | |
25
+ | [CommitNewTxResults](#interface-commitnewtxresults) | [ProvenTxReqHistory](#interface-proventxreqhistory) | [TableOutput](#interface-tableoutput) |
26
+ | [EntitySyncMap](#interface-entitysyncmap) | [ProvenTxReqHistorySummaryApi](#interface-proventxreqhistorysummaryapi) | [TableOutputBasket](#interface-tableoutputbasket) |
27
+ | [GenerateChangeSdkChangeInput](#interface-generatechangesdkchangeinput) | [ProvenTxReqNotify](#interface-proventxreqnotify) | [TableOutputTag](#interface-tableoutputtag) |
28
+ | [GenerateChangeSdkChangeOutput](#interface-generatechangesdkchangeoutput) | [StorageIdbOptions](#interface-storageidboptions) | [TableOutputTagMap](#interface-tableoutputtagmap) |
29
+ | [GenerateChangeSdkInput](#interface-generatechangesdkinput) | [StorageIdbSchema](#interface-storageidbschema) | [TableOutputX](#interface-tableoutputx) |
30
+ | [GenerateChangeSdkOutput](#interface-generatechangesdkoutput) | [StorageInternalizeActionResult](#interface-storageinternalizeactionresult) | [TableProvenTx](#interface-tableproventx) |
31
+ | [GenerateChangeSdkParams](#interface-generatechangesdkparams) | [StorageKnexOptions](#interface-storageknexoptions) | [TableProvenTxReq](#interface-tableproventxreq) |
32
+ | [GenerateChangeSdkResult](#interface-generatechangesdkresult) | [StorageProviderOptions](#interface-storageprovideroptions) | [TableProvenTxReqDynamics](#interface-tableproventxreqdynamics) |
33
+ | [GenerateChangeSdkStorageChange](#interface-generatechangesdkstoragechange) | [StorageReaderOptions](#interface-storagereaderoptions) | [TableSettings](#interface-tablesettings) |
34
+ | [GetReqsAndBeefDetail](#interface-getreqsandbeefdetail) | [StorageReaderWriterOptions](#interface-storagereaderwriteroptions) | [TableSyncState](#interface-tablesyncstate) |
35
+ | [GetReqsAndBeefResult](#interface-getreqsandbeefresult) | [SyncError](#interface-syncerror) | [TableTransaction](#interface-tabletransaction) |
36
+ | [ListActionsSpecOp](#interface-listactionsspecop) | [SyncMap](#interface-syncmap) | [TableTxLabel](#interface-tabletxlabel) |
37
+ | [ListOutputsSpecOp](#interface-listoutputsspecop) | [TableCertificate](#interface-tablecertificate) | [TableTxLabelMap](#interface-tabletxlabelmap) |
38
+ | [PostBeefResultForTxidApi](#interface-postbeefresultfortxidapi) | [TableCertificateField](#interface-tablecertificatefield) | [TableUser](#interface-tableuser) |
39
+ | [PostReqsToNetworkDetails](#interface-postreqstonetworkdetails) | [TableCertificateX](#interface-tablecertificatex) | [ValidateGenerateChangeSdkParamsResult](#interface-validategeneratechangesdkparamsresult) |
40
+ | [PostReqsToNetworkResult](#interface-postreqstonetworkresult) | [TableCommission](#interface-tablecommission) | [WalletStorageServerOptions](#interface-walletstorageserveroptions) |
41
+ | [ProvenTxFromTxidResult](#interface-proventxfromtxidresult) | [TableMonitorEvent](#interface-tablemonitorevent) | [XValidCreateActionOutput](#interface-xvalidcreateactionoutput) |
41
42
 
42
43
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
43
44
 
@@ -282,6 +283,72 @@ See also: [GetReqsAndBeefDetail](./storage.md#interface-getreqsandbeefdetail)
282
283
 
283
284
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
284
285
 
286
+ ---
287
+ ##### Interface: ListActionsSpecOp
288
+
289
+ ```ts
290
+ export interface ListActionsSpecOp {
291
+ name: string;
292
+ labelsToIntercept?: string[];
293
+ setStatusFilter?: () => sdk.TransactionStatus[];
294
+ postProcess?: (s: StorageProvider, auth: sdk.AuthId, vargs: sdk.ValidListActionsArgs, specOpLabels: string[], txs: Partial<TableTransaction>[]) => Promise<void>;
295
+ }
296
+ ```
297
+
298
+ See also: [AuthId](./client.md#interface-authid), [StorageProvider](./storage.md#class-storageprovider), [TableTransaction](./storage.md#interface-tabletransaction), [TransactionStatus](./client.md#type-transactionstatus), [ValidListActionsArgs](./client.md#interface-validlistactionsargs)
299
+
300
+ ###### Property labelsToIntercept
301
+
302
+ undefined to intercept no labels from vargs,
303
+ empty array to intercept all labels,
304
+ or an explicit array of labels to intercept.
305
+
306
+ ```ts
307
+ labelsToIntercept?: string[]
308
+ ```
309
+
310
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
311
+
312
+ ---
313
+ ##### Interface: ListOutputsSpecOp
314
+
315
+ ```ts
316
+ export interface ListOutputsSpecOp {
317
+ name: string;
318
+ useBasket?: string;
319
+ ignoreLimit?: boolean;
320
+ includeOutputScripts?: boolean;
321
+ includeSpent?: boolean;
322
+ resultFromTags?: (s: StorageProvider, auth: sdk.AuthId, vargs: ValidListOutputsArgs, specOpTags: string[]) => Promise<ListOutputsResult>;
323
+ resultFromOutputs?: (s: StorageProvider, auth: sdk.AuthId, vargs: ValidListOutputsArgs, specOpTags: string[], outputs: TableOutput[]) => Promise<ListOutputsResult>;
324
+ filterOutputs?: (s: StorageProvider, auth: sdk.AuthId, vargs: ValidListOutputsArgs, specOpTags: string[], outputs: TableOutput[]) => Promise<TableOutput[]>;
325
+ tagsToIntercept?: string[];
326
+ tagsParamsCount?: number;
327
+ }
328
+ ```
329
+
330
+ See also: [AuthId](./client.md#interface-authid), [StorageProvider](./storage.md#class-storageprovider), [TableOutput](./storage.md#interface-tableoutput), [ValidListOutputsArgs](./client.md#interface-validlistoutputsargs)
331
+
332
+ ###### Property tagsParamsCount
333
+
334
+ How many positional tags to intercept.
335
+
336
+ ```ts
337
+ tagsParamsCount?: number
338
+ ```
339
+
340
+ ###### Property tagsToIntercept
341
+
342
+ undefined to intercept no tags from vargs,
343
+ empty array to intercept all tags,
344
+ or an explicit array of tags to intercept.
345
+
346
+ ```ts
347
+ tagsToIntercept?: string[]
348
+ ```
349
+
350
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
351
+
285
352
  ---
286
353
  ##### Interface: PostBeefResultForTxidApi
287
354
 
@@ -420,6 +487,175 @@ export interface ProvenTxReqNotify {
420
487
 
421
488
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
422
489
 
490
+ ---
491
+ ##### Interface: StorageIdbOptions
492
+
493
+ ```ts
494
+ export interface StorageIdbOptions extends StorageProviderOptions {
495
+ }
496
+ ```
497
+
498
+ See also: [StorageProviderOptions](./storage.md#interface-storageprovideroptions)
499
+
500
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
501
+
502
+ ---
503
+ ##### Interface: StorageIdbSchema
504
+
505
+ ```ts
506
+ export interface StorageIdbSchema {
507
+ certificates: {
508
+ key: number;
509
+ value: TableCertificate;
510
+ indexes: {
511
+ userId: number;
512
+ userId_type_certifier_serialNumber: [
513
+ number,
514
+ Base64String,
515
+ PubKeyHex,
516
+ Base64String
517
+ ];
518
+ };
519
+ };
520
+ certificateFields: {
521
+ key: number;
522
+ value: TableCertificateField;
523
+ indexes: {
524
+ userId: number;
525
+ certificateId: number;
526
+ };
527
+ };
528
+ commissions: {
529
+ key: number;
530
+ value: TableCommission;
531
+ indexes: {
532
+ userId: number;
533
+ transactionId: number;
534
+ };
535
+ };
536
+ monitorEvents: {
537
+ key: number;
538
+ value: TableMonitorEvent;
539
+ };
540
+ outputs: {
541
+ key: number;
542
+ value: TableOutput;
543
+ indexes: {
544
+ userId: number;
545
+ transactionId: number;
546
+ basketId: number;
547
+ spentBy: string;
548
+ transactionId_vout_userId: [
549
+ number,
550
+ number,
551
+ number
552
+ ];
553
+ };
554
+ };
555
+ outputBaskets: {
556
+ key: number;
557
+ value: TableOutputBasket;
558
+ indexes: {
559
+ userId: number;
560
+ name_userId: [
561
+ string,
562
+ number
563
+ ];
564
+ };
565
+ };
566
+ outputTags: {
567
+ key: number;
568
+ value: TableOutputTag;
569
+ indexes: {
570
+ userId: number;
571
+ tag_userId: [
572
+ string,
573
+ number
574
+ ];
575
+ };
576
+ };
577
+ outputTagMaps: {
578
+ key: number;
579
+ value: TableOutputTagMap;
580
+ indexes: {
581
+ outputTagId: number;
582
+ outputId: number;
583
+ };
584
+ };
585
+ provenTxs: {
586
+ key: number;
587
+ value: TableProvenTx;
588
+ indexes: {
589
+ txid: HexString;
590
+ };
591
+ };
592
+ provenTxReqs: {
593
+ key: number;
594
+ value: TableProvenTxReq;
595
+ indexes: {
596
+ provenTxId: number;
597
+ txid: HexString;
598
+ status: ProvenTxReqStatus;
599
+ batch: string;
600
+ };
601
+ };
602
+ syncStates: {
603
+ key: number;
604
+ value: TableSyncState;
605
+ indexes: {
606
+ userId: number;
607
+ refNum: string;
608
+ status: SyncStatus;
609
+ };
610
+ };
611
+ settings: {
612
+ key: number;
613
+ value: TableSettings;
614
+ indexes: Record<string, never>;
615
+ };
616
+ transactions: {
617
+ key: number;
618
+ value: TableTransaction;
619
+ indexes: {
620
+ userId: number;
621
+ provenTxId: number;
622
+ reference: string;
623
+ status: TransactionStatus;
624
+ };
625
+ };
626
+ txLabels: {
627
+ key: number;
628
+ value: TableTxLabel;
629
+ indexes: {
630
+ userId: number;
631
+ label_userId: [
632
+ string,
633
+ number
634
+ ];
635
+ };
636
+ };
637
+ txLabelMaps: {
638
+ key: number;
639
+ value: TableTxLabelMap;
640
+ indexes: {
641
+ transactionId: number;
642
+ txLabelId: number;
643
+ };
644
+ };
645
+ users: {
646
+ key: number;
647
+ value: TableUser;
648
+ indexes: {
649
+ identityKey: string;
650
+ };
651
+ };
652
+ }
653
+ ```
654
+
655
+ See also: [ProvenTxReqStatus](./client.md#type-proventxreqstatus), [SyncStatus](./client.md#type-syncstatus), [TableCertificate](./storage.md#interface-tablecertificate), [TableCertificateField](./storage.md#interface-tablecertificatefield), [TableCommission](./storage.md#interface-tablecommission), [TableMonitorEvent](./storage.md#interface-tablemonitorevent), [TableOutput](./storage.md#interface-tableoutput), [TableOutputBasket](./storage.md#interface-tableoutputbasket), [TableOutputTag](./storage.md#interface-tableoutputtag), [TableOutputTagMap](./storage.md#interface-tableoutputtagmap), [TableProvenTx](./storage.md#interface-tableproventx), [TableProvenTxReq](./storage.md#interface-tableproventxreq), [TableSettings](./storage.md#interface-tablesettings), [TableSyncState](./storage.md#interface-tablesyncstate), [TableTransaction](./storage.md#interface-tabletransaction), [TableTxLabel](./storage.md#interface-tabletxlabel), [TableTxLabelMap](./storage.md#interface-tabletxlabelmap), [TableUser](./storage.md#interface-tableuser), [TransactionStatus](./client.md#type-transactionstatus)
656
+
657
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
658
+
423
659
  ---
424
660
  ##### Interface: StorageInternalizeActionResult
425
661
 
@@ -938,7 +1174,7 @@ export interface TableSettings extends sdk.StorageIdentity, sdk.EntityTimeStamp
938
1174
  storageIdentityKey: string;
939
1175
  storageName: string;
940
1176
  chain: sdk.Chain;
941
- dbtype: "SQLite" | "MySQL";
1177
+ dbtype: "SQLite" | "MySQL" | "IndexedDB";
942
1178
  maxOutputScript: number;
943
1179
  }
944
1180
  ```
@@ -1170,14 +1406,14 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
1170
1406
 
1171
1407
  | | | |
1172
1408
  | --- | --- | --- |
1173
- | [EntityBase](#class-entitybase) | [EntityProvenTxReq](#class-entityproventxreq) | [StorageKnex](#class-storageknex) |
1174
- | [EntityCertificate](#class-entitycertificate) | [EntitySyncState](#class-entitysyncstate) | [StorageProvider](#class-storageprovider) |
1175
- | [EntityCertificateField](#class-entitycertificatefield) | [EntityTransaction](#class-entitytransaction) | [StorageReader](#class-storagereader) |
1176
- | [EntityCommission](#class-entitycommission) | [EntityTxLabel](#class-entitytxlabel) | [StorageReaderWriter](#class-storagereaderwriter) |
1177
- | [EntityOutput](#class-entityoutput) | [EntityTxLabelMap](#class-entitytxlabelmap) | [StorageServer](#class-storageserver) |
1178
- | [EntityOutputBasket](#class-entityoutputbasket) | [EntityUser](#class-entityuser) | [StorageSyncReader](#class-storagesyncreader) |
1179
- | [EntityOutputTag](#class-entityoutputtag) | [KnexMigrations](#class-knexmigrations) | [WalletStorageManager](#class-walletstoragemanager) |
1180
- | [EntityOutputTagMap](#class-entityoutputtagmap) | [MergeEntity](#class-mergeentity) | |
1409
+ | [EntityBase](#class-entitybase) | [EntityProvenTxReq](#class-entityproventxreq) | [StorageIdb](#class-storageidb) |
1410
+ | [EntityCertificate](#class-entitycertificate) | [EntitySyncState](#class-entitysyncstate) | [StorageKnex](#class-storageknex) |
1411
+ | [EntityCertificateField](#class-entitycertificatefield) | [EntityTransaction](#class-entitytransaction) | [StorageProvider](#class-storageprovider) |
1412
+ | [EntityCommission](#class-entitycommission) | [EntityTxLabel](#class-entitytxlabel) | [StorageReader](#class-storagereader) |
1413
+ | [EntityOutput](#class-entityoutput) | [EntityTxLabelMap](#class-entitytxlabelmap) | [StorageReaderWriter](#class-storagereaderwriter) |
1414
+ | [EntityOutputBasket](#class-entityoutputbasket) | [EntityUser](#class-entityuser) | [StorageServer](#class-storageserver) |
1415
+ | [EntityOutputTag](#class-entityoutputtag) | [KnexMigrations](#class-knexmigrations) | [StorageSyncReader](#class-storagesyncreader) |
1416
+ | [EntityOutputTagMap](#class-entityoutputtagmap) | [MergeEntity](#class-mergeentity) | [WalletStorageManager](#class-walletstoragemanager) |
1181
1417
  | [EntityProvenTx](#class-entityproventx) | [StorageClient](#class-storageclient) | |
1182
1418
 
1183
1419
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
@@ -2900,6 +3136,264 @@ See also: [EntityTimeStamp](./client.md#interface-entitytimestamp)
2900
3136
 
2901
3137
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
2902
3138
 
3139
+ ---
3140
+ ##### Class: StorageIdb
3141
+
3142
+ ```ts
3143
+ export class StorageIdb extends StorageProvider implements sdk.WalletStorageProvider {
3144
+ dbName: string;
3145
+ db?: IDBPDatabase<StorageIdbSchema>;
3146
+ constructor(options: StorageIdbOptions)
3147
+ async migrate(storageName: string, storageIdentityKey: string): Promise<string>
3148
+ async verifyDB(storageName?: string, storageIdentityKey?: string): Promise<IDBPDatabase<StorageIdbSchema>>
3149
+ toDbTrx(stores: string[], mode: "readonly" | "readwrite", trx?: sdk.TrxToken): IDBPTransaction<StorageIdbSchema, string[], "readwrite" | "readonly">
3150
+ async readSettings(trx?: sdk.TrxToken): Promise<TableSettings>
3151
+ async initDB(storageName?: string, storageIdentityKey?: string): Promise<IDBPDatabase<StorageIdbSchema>>
3152
+ async reviewStatus(args: {
3153
+ agedLimit: Date;
3154
+ trx?: sdk.TrxToken;
3155
+ }): Promise<{
3156
+ log: string;
3157
+ }>
3158
+ async purgeData(params: sdk.PurgeParams, trx?: sdk.TrxToken): Promise<sdk.PurgeResults>
3159
+ async allocateChangeInput(userId: number, basketId: number, targetSatoshis: number, exactSatoshis: number | undefined, excludeSending: boolean, transactionId: number): Promise<TableOutput | undefined>
3160
+ async getProvenOrRawTx(txid: string, trx?: sdk.TrxToken): Promise<sdk.ProvenOrRawTx>
3161
+ async getRawTxOfKnownValidTransaction(txid?: string, offset?: number, length?: number, trx?: sdk.TrxToken): Promise<number[] | undefined>
3162
+ async getLabelsForTransactionId(transactionId?: number, trx?: sdk.TrxToken): Promise<TableTxLabel[]>
3163
+ async getTagsForOutputId(outputId: number, trx?: sdk.TrxToken): Promise<TableOutputTag[]>
3164
+ async listActions(auth: sdk.AuthId, vargs: sdk.ValidListActionsArgs): Promise<ListActionsResult>
3165
+ async listOutputs(auth: sdk.AuthId, vargs: sdk.ValidListOutputsArgs): Promise<ListOutputsResult>
3166
+ async countChangeInputs(userId: number, basketId: number, excludeSending: boolean): Promise<number>
3167
+ async findCertificatesAuth(auth: sdk.AuthId, args: sdk.FindCertificatesArgs): Promise<TableCertificateX[]>
3168
+ async findOutputBasketsAuth(auth: sdk.AuthId, args: sdk.FindOutputBasketsArgs): Promise<TableOutputBasket[]>
3169
+ async findOutputsAuth(auth: sdk.AuthId, args: sdk.FindOutputsArgs): Promise<TableOutput[]>
3170
+ async insertCertificateAuth(auth: sdk.AuthId, certificate: TableCertificateX): Promise<number>
3171
+ async dropAllData(): Promise<void>
3172
+ async filterOutputTagMaps(args: sdk.FindOutputTagMapsArgs, filtered: (v: TableOutputTagMap) => void, userId?: number): Promise<void>
3173
+ async findOutputTagMaps(args: sdk.FindOutputTagMapsArgs): Promise<TableOutputTagMap[]>
3174
+ async filterProvenTxReqs(args: sdk.FindProvenTxReqsArgs, filtered: (v: TableProvenTxReq) => void, userId?: number): Promise<void>
3175
+ async findProvenTxReqs(args: sdk.FindProvenTxReqsArgs): Promise<TableProvenTxReq[]>
3176
+ async filterProvenTxs(args: sdk.FindProvenTxsArgs, filtered: (v: TableProvenTx) => void, userId?: number): Promise<void>
3177
+ async findProvenTxs(args: sdk.FindProvenTxsArgs): Promise<TableProvenTx[]>
3178
+ async filterTxLabelMaps(args: sdk.FindTxLabelMapsArgs, filtered: (v: TableTxLabelMap) => void, userId?: number): Promise<void>
3179
+ async findTxLabelMaps(args: sdk.FindTxLabelMapsArgs): Promise<TableTxLabelMap[]>
3180
+ async countOutputTagMaps(args: sdk.FindOutputTagMapsArgs): Promise<number>
3181
+ async countProvenTxReqs(args: sdk.FindProvenTxReqsArgs): Promise<number>
3182
+ async countProvenTxs(args: sdk.FindProvenTxsArgs): Promise<number>
3183
+ async countTxLabelMaps(args: sdk.FindTxLabelMapsArgs): Promise<number>
3184
+ async insertCertificate(certificate: TableCertificateX, trx?: sdk.TrxToken): Promise<number>
3185
+ async insertCertificateField(certificateField: TableCertificateField, trx?: sdk.TrxToken): Promise<void>
3186
+ async insertCommission(commission: TableCommission, trx?: sdk.TrxToken): Promise<number>
3187
+ async insertMonitorEvent(event: TableMonitorEvent, trx?: sdk.TrxToken): Promise<number>
3188
+ async insertOutput(output: TableOutput, trx?: sdk.TrxToken): Promise<number>
3189
+ async insertOutputBasket(basket: TableOutputBasket, trx?: sdk.TrxToken): Promise<number>
3190
+ async insertOutputTag(tag: TableOutputTag, trx?: sdk.TrxToken): Promise<number>
3191
+ async insertOutputTagMap(tagMap: TableOutputTagMap, trx?: sdk.TrxToken): Promise<void>
3192
+ async insertProvenTx(tx: TableProvenTx, trx?: sdk.TrxToken): Promise<number>
3193
+ async insertProvenTxReq(tx: TableProvenTxReq, trx?: sdk.TrxToken): Promise<number>
3194
+ async insertSyncState(syncState: TableSyncState, trx?: sdk.TrxToken): Promise<number>
3195
+ async insertTransaction(tx: TableTransaction, trx?: sdk.TrxToken): Promise<number>
3196
+ async insertTxLabel(label: TableTxLabel, trx?: sdk.TrxToken): Promise<number>
3197
+ async insertTxLabelMap(labelMap: TableTxLabelMap, trx?: sdk.TrxToken): Promise<void>
3198
+ async insertUser(user: TableUser, trx?: sdk.TrxToken): Promise<number>
3199
+ async updateIdb<T>(id: number | number[], update: Partial<T>, keyProp: string, storeName: string, trx?: sdk.TrxToken): Promise<number>
3200
+ async updateIdbKey<T>(key: (number | string)[], update: Partial<T>, keyProps: string[], storeName: string, trx?: sdk.TrxToken): Promise<number>
3201
+ async updateCertificate(id: number, update: Partial<TableCertificate>, trx?: sdk.TrxToken): Promise<number>
3202
+ async updateCertificateField(certificateId: number, fieldName: string, update: Partial<TableCertificateField>, trx?: sdk.TrxToken): Promise<number>
3203
+ async updateCommission(id: number, update: Partial<TableCommission>, trx?: sdk.TrxToken): Promise<number>
3204
+ async updateMonitorEvent(id: number, update: Partial<TableMonitorEvent>, trx?: sdk.TrxToken): Promise<number>
3205
+ async updateOutput(id: number, update: Partial<TableOutput>, trx?: sdk.TrxToken): Promise<number>
3206
+ async updateOutputBasket(id: number, update: Partial<TableOutputBasket>, trx?: sdk.TrxToken): Promise<number>
3207
+ async updateOutputTag(id: number, update: Partial<TableOutputTag>, trx?: sdk.TrxToken): Promise<number>
3208
+ async updateProvenTx(id: number, update: Partial<TableProvenTx>, trx?: sdk.TrxToken): Promise<number>
3209
+ async updateProvenTxReq(id: number | number[], update: Partial<TableProvenTxReq>, trx?: sdk.TrxToken): Promise<number>
3210
+ async updateSyncState(id: number, update: Partial<TableSyncState>, trx?: sdk.TrxToken): Promise<number>
3211
+ async updateTransaction(id: number | number[], update: Partial<TableTransaction>, trx?: sdk.TrxToken): Promise<number>
3212
+ async updateTxLabel(id: number, update: Partial<TableTxLabel>, trx?: sdk.TrxToken): Promise<number>
3213
+ async updateUser(id: number, update: Partial<TableUser>, trx?: sdk.TrxToken): Promise<number>
3214
+ async updateOutputTagMap(outputId: number, tagId: number, update: Partial<TableOutputTagMap>, trx?: sdk.TrxToken): Promise<number>
3215
+ async updateTxLabelMap(transactionId: number, txLabelId: number, update: Partial<TableTxLabelMap>, trx?: sdk.TrxToken): Promise<number>
3216
+ async destroy(): Promise<void>
3217
+ allStores: string[] = [
3218
+ "certificates",
3219
+ "certificate_fields",
3220
+ "commissions",
3221
+ "monitor_events",
3222
+ "outputs",
3223
+ "output_baskets",
3224
+ "output_tags",
3225
+ "output_tags_map",
3226
+ "proven_txs",
3227
+ "proven_tx_reqs",
3228
+ "sync_states",
3229
+ "transactions",
3230
+ "tx_labels",
3231
+ "tx_labels_map",
3232
+ "users"
3233
+ ];
3234
+ async transaction<T>(scope: (trx: sdk.TrxToken) => Promise<T>, trx?: sdk.TrxToken): Promise<T>
3235
+ async filterCertificateFields(args: sdk.FindCertificateFieldsArgs, filtered: (v: TableCertificateField) => void): Promise<void>
3236
+ async findCertificateFields(args: sdk.FindCertificateFieldsArgs): Promise<TableCertificateField[]>
3237
+ async filterCertificates(args: sdk.FindCertificatesArgs, filtered: (v: TableCertificateX) => void): Promise<void>
3238
+ async findCertificates(args: sdk.FindCertificatesArgs): Promise<TableCertificateX[]>
3239
+ async filterCommissions(args: sdk.FindCommissionsArgs, filtered: (v: TableCommission) => void): Promise<void>
3240
+ async findCommissions(args: sdk.FindCommissionsArgs): Promise<TableCommission[]>
3241
+ async filterMonitorEvents(args: sdk.FindMonitorEventsArgs, filtered: (v: TableMonitorEvent) => void): Promise<void>
3242
+ async findMonitorEvents(args: sdk.FindMonitorEventsArgs): Promise<TableMonitorEvent[]>
3243
+ async filterOutputBaskets(args: sdk.FindOutputBasketsArgs, filtered: (v: TableOutputBasket) => void): Promise<void>
3244
+ async findOutputBaskets(args: sdk.FindOutputBasketsArgs): Promise<TableOutputBasket[]>
3245
+ async filterOutputs(args: sdk.FindOutputsArgs, filtered: (v: TableOutput) => void, tagIds?: number[], isQueryModeAll?: boolean): Promise<void>
3246
+ async findOutputs(args: sdk.FindOutputsArgs, tagIds?: number[], isQueryModeAll?: boolean): Promise<TableOutput[]>
3247
+ async filterOutputTags(args: sdk.FindOutputTagsArgs, filtered: (v: TableOutputTag) => void): Promise<void>
3248
+ async findOutputTags(args: sdk.FindOutputTagsArgs): Promise<TableOutputTag[]>
3249
+ async filterSyncStates(args: sdk.FindSyncStatesArgs, filtered: (v: TableSyncState) => void): Promise<void>
3250
+ async findSyncStates(args: sdk.FindSyncStatesArgs): Promise<TableSyncState[]>
3251
+ async filterTransactions(args: sdk.FindTransactionsArgs, filtered: (v: TableTransaction) => void, labelIds?: number[], isQueryModeAll?: boolean): Promise<void>
3252
+ async findTransactions(args: sdk.FindTransactionsArgs, labelIds?: number[], isQueryModeAll?: boolean): Promise<TableTransaction[]>
3253
+ async filterTxLabels(args: sdk.FindTxLabelsArgs, filtered: (v: TableTxLabel) => void): Promise<void>
3254
+ async findTxLabels(args: sdk.FindTxLabelsArgs): Promise<TableTxLabel[]>
3255
+ async filterUsers(args: sdk.FindUsersArgs, filtered: (v: TableUser) => void): Promise<void>
3256
+ async findUsers(args: sdk.FindUsersArgs): Promise<TableUser[]>
3257
+ async countCertificateFields(args: sdk.FindCertificateFieldsArgs): Promise<number>
3258
+ async countCertificates(args: sdk.FindCertificatesArgs): Promise<number>
3259
+ async countCommissions(args: sdk.FindCommissionsArgs): Promise<number>
3260
+ async countMonitorEvents(args: sdk.FindMonitorEventsArgs): Promise<number>
3261
+ async countOutputBaskets(args: sdk.FindOutputBasketsArgs): Promise<number>
3262
+ async countOutputs(args: sdk.FindOutputsArgs, tagIds?: number[], isQueryModeAll?: boolean): Promise<number>
3263
+ async countOutputTags(args: sdk.FindOutputTagsArgs): Promise<number>
3264
+ async countSyncStates(args: sdk.FindSyncStatesArgs): Promise<number>
3265
+ async countTransactions(args: sdk.FindTransactionsArgs, labelIds?: number[], isQueryModeAll?: boolean): Promise<number>
3266
+ async countTxLabels(args: sdk.FindTxLabelsArgs): Promise<number>
3267
+ async countUsers(args: sdk.FindUsersArgs): Promise<number>
3268
+ async getProvenTxsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableProvenTx[]>
3269
+ async getProvenTxReqsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableProvenTxReq[]>
3270
+ async getTxLabelMapsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableTxLabelMap[]>
3271
+ async getOutputTagMapsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableOutputTagMap[]>
3272
+ async verifyReadyForDatabaseAccess(trx?: sdk.TrxToken): Promise<DBType>
3273
+ validateEntity<T extends sdk.EntityTimeStamp>(entity: T, dateFields?: string[], booleanFields?: string[]): T
3274
+ validateEntities<T extends sdk.EntityTimeStamp>(entities: T[], dateFields?: string[], booleanFields?: string[]): T[]
3275
+ validatePartialForUpdate<T extends sdk.EntityTimeStamp>(update: Partial<T>, dateFields?: string[], booleanFields?: string[]): Partial<T>
3276
+ async validateEntityForInsert<T extends sdk.EntityTimeStamp>(entity: T, trx?: sdk.TrxToken, dateFields?: string[], booleanFields?: string[]): Promise<any>
3277
+ async validateRawTransaction(t: TableTransaction, trx?: sdk.TrxToken): Promise<void>
3278
+ }
3279
+ ```
3280
+
3281
+ See also: [AuthId](./client.md#interface-authid), [DBType](./storage.md#type-dbtype), [EntityTimeStamp](./client.md#interface-entitytimestamp), [FindCertificateFieldsArgs](./client.md#interface-findcertificatefieldsargs), [FindCertificatesArgs](./client.md#interface-findcertificatesargs), [FindCommissionsArgs](./client.md#interface-findcommissionsargs), [FindForUserSincePagedArgs](./client.md#interface-findforusersincepagedargs), [FindMonitorEventsArgs](./client.md#interface-findmonitoreventsargs), [FindOutputBasketsArgs](./client.md#interface-findoutputbasketsargs), [FindOutputTagMapsArgs](./client.md#interface-findoutputtagmapsargs), [FindOutputTagsArgs](./client.md#interface-findoutputtagsargs), [FindOutputsArgs](./client.md#interface-findoutputsargs), [FindProvenTxReqsArgs](./client.md#interface-findproventxreqsargs), [FindProvenTxsArgs](./client.md#interface-findproventxsargs), [FindSyncStatesArgs](./client.md#interface-findsyncstatesargs), [FindTransactionsArgs](./client.md#interface-findtransactionsargs), [FindTxLabelMapsArgs](./client.md#interface-findtxlabelmapsargs), [FindTxLabelsArgs](./client.md#interface-findtxlabelsargs), [FindUsersArgs](./client.md#interface-findusersargs), [ProvenOrRawTx](./client.md#interface-provenorrawtx), [PurgeParams](./client.md#interface-purgeparams), [PurgeResults](./client.md#interface-purgeresults), [StorageIdbOptions](./storage.md#interface-storageidboptions), [StorageIdbSchema](./storage.md#interface-storageidbschema), [StorageProvider](./storage.md#class-storageprovider), [TableCertificate](./storage.md#interface-tablecertificate), [TableCertificateField](./storage.md#interface-tablecertificatefield), [TableCertificateX](./storage.md#interface-tablecertificatex), [TableCommission](./storage.md#interface-tablecommission), [TableMonitorEvent](./storage.md#interface-tablemonitorevent), [TableOutput](./storage.md#interface-tableoutput), [TableOutputBasket](./storage.md#interface-tableoutputbasket), [TableOutputTag](./storage.md#interface-tableoutputtag), [TableOutputTagMap](./storage.md#interface-tableoutputtagmap), [TableProvenTx](./storage.md#interface-tableproventx), [TableProvenTxReq](./storage.md#interface-tableproventxreq), [TableSettings](./storage.md#interface-tablesettings), [TableSyncState](./storage.md#interface-tablesyncstate), [TableTransaction](./storage.md#interface-tabletransaction), [TableTxLabel](./storage.md#interface-tabletxlabel), [TableTxLabelMap](./storage.md#interface-tabletxlabelmap), [TableUser](./storage.md#interface-tableuser), [TrxToken](./client.md#interface-trxtoken), [ValidListActionsArgs](./client.md#interface-validlistactionsargs), [ValidListOutputsArgs](./client.md#interface-validlistoutputsargs), [WalletStorageProvider](./client.md#interface-walletstorageprovider), [listActions](./storage.md#function-listactions), [listOutputs](./storage.md#function-listoutputs), [purgeData](./storage.md#function-purgedata), [reviewStatus](./storage.md#function-reviewstatus)
3282
+
3283
+ ###### Method allocateChangeInput
3284
+
3285
+ Proceeds in three stages:
3286
+ 1. Find an output that exactly funds the transaction (if exactSatoshis is not undefined).
3287
+ 2. Find an output that overfunds by the least amount (targetSatoshis).
3288
+ 3. Find an output that comes as close to funding as possible (targetSatoshis).
3289
+ 4. Return undefined if no output is found.
3290
+
3291
+ Outputs must belong to userId and basketId and have spendable true.
3292
+ Their corresponding transaction must have status of 'completed', 'unproven', or 'sending' (if excludeSending is false).
3293
+
3294
+ ```ts
3295
+ async allocateChangeInput(userId: number, basketId: number, targetSatoshis: number, exactSatoshis: number | undefined, excludeSending: boolean, transactionId: number): Promise<TableOutput | undefined>
3296
+ ```
3297
+ See also: [TableOutput](./storage.md#interface-tableoutput)
3298
+
3299
+ Returns
3300
+
3301
+ next funding output to add to transaction or undefined if there are none.
3302
+
3303
+ ###### Method migrate
3304
+
3305
+ This method must be called at least once before any other method accesses the database,
3306
+ and each time the schema may have updated.
3307
+
3308
+ If the database has already been created in this context, `storageName` and `storageIdentityKey`
3309
+ are ignored.
3310
+
3311
+ ```ts
3312
+ async migrate(storageName: string, storageIdentityKey: string): Promise<string>
3313
+ ```
3314
+
3315
+ ###### Method readSettings
3316
+
3317
+ Called by `makeAvailable` to return storage `TableSettings`.
3318
+ Since this is the first async method that must be called by all clients,
3319
+ it is where async initialization occurs.
3320
+
3321
+ After initialization, cached settings are returned.
3322
+
3323
+ ```ts
3324
+ async readSettings(trx?: sdk.TrxToken): Promise<TableSettings>
3325
+ ```
3326
+ See also: [TableSettings](./storage.md#interface-tablesettings), [TrxToken](./client.md#interface-trxtoken)
3327
+
3328
+ ###### Method toDbTrx
3329
+
3330
+ Convert the standard optional `TrxToken` parameter into either a direct knex database instance,
3331
+ or a Knex.Transaction as appropriate.
3332
+
3333
+ ```ts
3334
+ toDbTrx(stores: string[], mode: "readonly" | "readwrite", trx?: sdk.TrxToken): IDBPTransaction<StorageIdbSchema, string[], "readwrite" | "readonly">
3335
+ ```
3336
+ See also: [StorageIdbSchema](./storage.md#interface-storageidbschema), [TrxToken](./client.md#interface-trxtoken)
3337
+
3338
+ ###### Method validateEntities
3339
+
3340
+ Helper to force uniform behavior across database engines.
3341
+ Use to process all arrays of records with time stamps retreived from database.
3342
+
3343
+ ```ts
3344
+ validateEntities<T extends sdk.EntityTimeStamp>(entities: T[], dateFields?: string[], booleanFields?: string[]): T[]
3345
+ ```
3346
+ See also: [EntityTimeStamp](./client.md#interface-entitytimestamp)
3347
+
3348
+ Returns
3349
+
3350
+ input `entities` array with contained values validated.
3351
+
3352
+ ###### Method validateEntity
3353
+
3354
+ Helper to force uniform behavior across database engines.
3355
+ Use to process all individual records with time stamps or number[] retreived from database.
3356
+
3357
+ ```ts
3358
+ validateEntity<T extends sdk.EntityTimeStamp>(entity: T, dateFields?: string[], booleanFields?: string[]): T
3359
+ ```
3360
+ See also: [EntityTimeStamp](./client.md#interface-entitytimestamp)
3361
+
3362
+ ###### Method validateEntityForInsert
3363
+
3364
+ Helper to force uniform behavior across database engines.
3365
+ Use to process new entities being inserted into the database.
3366
+
3367
+ ```ts
3368
+ async validateEntityForInsert<T extends sdk.EntityTimeStamp>(entity: T, trx?: sdk.TrxToken, dateFields?: string[], booleanFields?: string[]): Promise<any>
3369
+ ```
3370
+ See also: [EntityTimeStamp](./client.md#interface-entitytimestamp), [TrxToken](./client.md#interface-trxtoken)
3371
+
3372
+ ###### Method validatePartialForUpdate
3373
+
3374
+ Helper to force uniform behavior across database engines.
3375
+ Use to process the update template for entities being updated.
3376
+
3377
+ ```ts
3378
+ validatePartialForUpdate<T extends sdk.EntityTimeStamp>(update: Partial<T>, dateFields?: string[], booleanFields?: string[]): Partial<T>
3379
+ ```
3380
+ See also: [EntityTimeStamp](./client.md#interface-entitytimestamp)
3381
+
3382
+ ###### Method verifyDB
3383
+
3384
+ Following initial database initialization, this method verfies that db is ready for use.
3385
+
3386
+ ```ts
3387
+ async verifyDB(storageName?: string, storageIdentityKey?: string): Promise<IDBPDatabase<StorageIdbSchema>>
3388
+ ```
3389
+ See also: [StorageIdbSchema](./storage.md#interface-storageidbschema)
3390
+
3391
+ Throws
3392
+
3393
+ `WERR_INVALID_OPERATION` if the database has not been initialized by a call to `migrate`.
3394
+
3395
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
3396
+
2903
3397
  ---
2904
3398
  ##### Class: StorageKnex
2905
3399
 
@@ -3008,13 +3502,11 @@ export class StorageKnex extends StorageProvider implements sdk.WalletStoragePro
3008
3502
  override async transaction<T>(scope: (trx: sdk.TrxToken) => Promise<T>, trx?: sdk.TrxToken): Promise<T>
3009
3503
  toDb(trx?: sdk.TrxToken)
3010
3504
  async validateRawTransaction(t: TableTransaction, trx?: sdk.TrxToken): Promise<void>
3011
- async validateOutputScript(o: TableOutput, trx?: sdk.TrxToken): Promise<void>
3012
3505
  _verifiedReadyForDatabaseAccess: boolean = false;
3013
3506
  async verifyReadyForDatabaseAccess(trx?: sdk.TrxToken): Promise<DBType>
3014
3507
  validatePartialForUpdate<T extends sdk.EntityTimeStamp>(update: Partial<T>, dateFields?: string[], booleanFields?: string[]): Partial<T>
3015
3508
  async validateEntityForInsert<T extends sdk.EntityTimeStamp>(entity: T, trx?: sdk.TrxToken, dateFields?: string[], booleanFields?: string[]): Promise<any>
3016
3509
  override async getLabelsForTransactionId(transactionId?: number, trx?: sdk.TrxToken): Promise<TableTxLabel[]>
3017
- async extendOutput(o: TableOutput, includeBasket = false, includeTags = false, trx?: sdk.TrxToken): Promise<TableOutputX>
3018
3510
  override async getTagsForOutputId(outputId: number, trx?: sdk.TrxToken): Promise<TableOutputTag[]>
3019
3511
  override async purgeData(params: sdk.PurgeParams, trx?: sdk.TrxToken): Promise<sdk.PurgeResults>
3020
3512
  override async reviewStatus(args: {
@@ -3110,7 +3602,7 @@ export class StorageKnex extends StorageProvider implements sdk.WalletStoragePro
3110
3602
  }
3111
3603
  ```
3112
3604
 
3113
- See also: [AuthId](./client.md#interface-authid), [DBType](./storage.md#type-dbtype), [EntityTimeStamp](./client.md#interface-entitytimestamp), [FindCertificateFieldsArgs](./client.md#interface-findcertificatefieldsargs), [FindCertificatesArgs](./client.md#interface-findcertificatesargs), [FindCommissionsArgs](./client.md#interface-findcommissionsargs), [FindForUserSincePagedArgs](./client.md#interface-findforusersincepagedargs), [FindMonitorEventsArgs](./client.md#interface-findmonitoreventsargs), [FindOutputBasketsArgs](./client.md#interface-findoutputbasketsargs), [FindOutputTagMapsArgs](./client.md#interface-findoutputtagmapsargs), [FindOutputTagsArgs](./client.md#interface-findoutputtagsargs), [FindOutputsArgs](./client.md#interface-findoutputsargs), [FindPartialSincePagedArgs](./client.md#interface-findpartialsincepagedargs), [FindProvenTxReqsArgs](./client.md#interface-findproventxreqsargs), [FindProvenTxsArgs](./client.md#interface-findproventxsargs), [FindSyncStatesArgs](./client.md#interface-findsyncstatesargs), [FindTransactionsArgs](./client.md#interface-findtransactionsargs), [FindTxLabelMapsArgs](./client.md#interface-findtxlabelmapsargs), [FindTxLabelsArgs](./client.md#interface-findtxlabelsargs), [FindUsersArgs](./client.md#interface-findusersargs), [ProvenOrRawTx](./client.md#interface-provenorrawtx), [PurgeParams](./client.md#interface-purgeparams), [PurgeResults](./client.md#interface-purgeresults), [StorageKnexOptions](./storage.md#interface-storageknexoptions), [StorageProvider](./storage.md#class-storageprovider), [TableCertificate](./storage.md#interface-tablecertificate), [TableCertificateField](./storage.md#interface-tablecertificatefield), [TableCertificateX](./storage.md#interface-tablecertificatex), [TableCommission](./storage.md#interface-tablecommission), [TableMonitorEvent](./storage.md#interface-tablemonitorevent), [TableOutput](./storage.md#interface-tableoutput), [TableOutputBasket](./storage.md#interface-tableoutputbasket), [TableOutputTag](./storage.md#interface-tableoutputtag), [TableOutputTagMap](./storage.md#interface-tableoutputtagmap), [TableOutputX](./storage.md#interface-tableoutputx), [TableProvenTx](./storage.md#interface-tableproventx), [TableProvenTxReq](./storage.md#interface-tableproventxreq), [TableSettings](./storage.md#interface-tablesettings), [TableSyncState](./storage.md#interface-tablesyncstate), [TableTransaction](./storage.md#interface-tabletransaction), [TableTxLabel](./storage.md#interface-tabletxlabel), [TableTxLabelMap](./storage.md#interface-tabletxlabelmap), [TableUser](./storage.md#interface-tableuser), [TransactionStatus](./client.md#type-transactionstatus), [TrxToken](./client.md#interface-trxtoken), [ValidListActionsArgs](./client.md#interface-validlistactionsargs), [ValidListOutputsArgs](./client.md#interface-validlistoutputsargs), [WalletStorageProvider](./client.md#interface-walletstorageprovider), [listActions](./storage.md#function-listactions), [listOutputs](./storage.md#function-listoutputs), [purgeData](./storage.md#function-purgedata), [reviewStatus](./storage.md#function-reviewstatus), [verifyTruthy](./client.md#function-verifytruthy)
3605
+ See also: [AuthId](./client.md#interface-authid), [DBType](./storage.md#type-dbtype), [EntityTimeStamp](./client.md#interface-entitytimestamp), [FindCertificateFieldsArgs](./client.md#interface-findcertificatefieldsargs), [FindCertificatesArgs](./client.md#interface-findcertificatesargs), [FindCommissionsArgs](./client.md#interface-findcommissionsargs), [FindForUserSincePagedArgs](./client.md#interface-findforusersincepagedargs), [FindMonitorEventsArgs](./client.md#interface-findmonitoreventsargs), [FindOutputBasketsArgs](./client.md#interface-findoutputbasketsargs), [FindOutputTagMapsArgs](./client.md#interface-findoutputtagmapsargs), [FindOutputTagsArgs](./client.md#interface-findoutputtagsargs), [FindOutputsArgs](./client.md#interface-findoutputsargs), [FindPartialSincePagedArgs](./client.md#interface-findpartialsincepagedargs), [FindProvenTxReqsArgs](./client.md#interface-findproventxreqsargs), [FindProvenTxsArgs](./client.md#interface-findproventxsargs), [FindSyncStatesArgs](./client.md#interface-findsyncstatesargs), [FindTransactionsArgs](./client.md#interface-findtransactionsargs), [FindTxLabelMapsArgs](./client.md#interface-findtxlabelmapsargs), [FindTxLabelsArgs](./client.md#interface-findtxlabelsargs), [FindUsersArgs](./client.md#interface-findusersargs), [ProvenOrRawTx](./client.md#interface-provenorrawtx), [PurgeParams](./client.md#interface-purgeparams), [PurgeResults](./client.md#interface-purgeresults), [StorageKnexOptions](./storage.md#interface-storageknexoptions), [StorageProvider](./storage.md#class-storageprovider), [TableCertificate](./storage.md#interface-tablecertificate), [TableCertificateField](./storage.md#interface-tablecertificatefield), [TableCertificateX](./storage.md#interface-tablecertificatex), [TableCommission](./storage.md#interface-tablecommission), [TableMonitorEvent](./storage.md#interface-tablemonitorevent), [TableOutput](./storage.md#interface-tableoutput), [TableOutputBasket](./storage.md#interface-tableoutputbasket), [TableOutputTag](./storage.md#interface-tableoutputtag), [TableOutputTagMap](./storage.md#interface-tableoutputtagmap), [TableProvenTx](./storage.md#interface-tableproventx), [TableProvenTxReq](./storage.md#interface-tableproventxreq), [TableSettings](./storage.md#interface-tablesettings), [TableSyncState](./storage.md#interface-tablesyncstate), [TableTransaction](./storage.md#interface-tabletransaction), [TableTxLabel](./storage.md#interface-tabletxlabel), [TableTxLabelMap](./storage.md#interface-tabletxlabelmap), [TableUser](./storage.md#interface-tableuser), [TransactionStatus](./client.md#type-transactionstatus), [TrxToken](./client.md#interface-trxtoken), [ValidListActionsArgs](./client.md#interface-validlistactionsargs), [ValidListOutputsArgs](./client.md#interface-validlistoutputsargs), [WalletStorageProvider](./client.md#interface-walletstorageprovider), [listActions](./storage.md#function-listactions), [listOutputs](./storage.md#function-listoutputs), [purgeData](./storage.md#function-purgedata), [reviewStatus](./storage.md#function-reviewstatus), [verifyTruthy](./client.md#function-verifytruthy)
3114
3606
 
3115
3607
  ###### Method allocateChangeInput
3116
3608
 
@@ -3125,9 +3617,11 @@ See also: [TableOutput](./storage.md#interface-tableoutput)
3125
3617
 
3126
3618
  ###### Method countChangeInputs
3127
3619
 
3128
- Finds closest matching available change output to use as input for new transaction.
3129
-
3130
- Transactionally allocate the output such that
3620
+ Counts the outputs for userId in basketId that are spendable: true
3621
+ AND whose transaction status is one of:
3622
+ - completed
3623
+ - unproven
3624
+ - sending (if excludeSending is false)
3131
3625
 
3132
3626
  ```ts
3133
3627
  async countChangeInputs(userId: number, basketId: number, excludeSending: boolean): Promise<number>
@@ -3261,10 +3755,12 @@ export abstract class StorageProvider extends StorageReaderWriter implements sdk
3261
3755
  invalidSpendableOutputs: TableOutput[];
3262
3756
  }>
3263
3757
  async updateProvenTxReqDynamics(id: number, update: Partial<TableProvenTxReqDynamics>, trx?: sdk.TrxToken): Promise<number>
3758
+ async extendOutput(o: TableOutput, includeBasket = false, includeTags = false, trx?: sdk.TrxToken): Promise<TableOutputX>
3759
+ async validateOutputScript(o: TableOutput, trx?: sdk.TrxToken): Promise<void>
3264
3760
  }
3265
3761
  ```
3266
3762
 
3267
- See also: [AuthId](./client.md#interface-authid), [Chain](./client.md#type-chain), [EntityProvenTxReq](./storage.md#class-entityproventxreq), [FindCertificatesArgs](./client.md#interface-findcertificatesargs), [FindOutputBasketsArgs](./client.md#interface-findoutputbasketsargs), [FindOutputsArgs](./client.md#interface-findoutputsargs), [GetReqsAndBeefResult](./storage.md#interface-getreqsandbeefresult), [PostReqsToNetworkResult](./storage.md#interface-postreqstonetworkresult), [ProcessSyncChunkResult](./client.md#interface-processsyncchunkresult), [ProvenOrRawTx](./client.md#interface-provenorrawtx), [PurgeParams](./client.md#interface-purgeparams), [PurgeResults](./client.md#interface-purgeresults), [RequestSyncChunkArgs](./client.md#interface-requestsyncchunkargs), [StorageCreateActionResult](./client.md#interface-storagecreateactionresult), [StorageFeeModel](./client.md#interface-storagefeemodel), [StorageGetBeefOptions](./client.md#interface-storagegetbeefoptions), [StorageProcessActionArgs](./client.md#interface-storageprocessactionargs), [StorageProcessActionResults](./client.md#interface-storageprocessactionresults), [StorageProvenOrReq](./client.md#interface-storageprovenorreq), [StorageProviderOptions](./storage.md#interface-storageprovideroptions), [StorageReaderWriter](./storage.md#class-storagereaderwriter), [SyncChunk](./client.md#interface-syncchunk), [TableCertificateX](./storage.md#interface-tablecertificatex), [TableMonitorEvent](./storage.md#interface-tablemonitorevent), [TableOutput](./storage.md#interface-tableoutput), [TableOutputBasket](./storage.md#interface-tableoutputbasket), [TableOutputTag](./storage.md#interface-tableoutputtag), [TableProvenTxReq](./storage.md#interface-tableproventxreq), [TableProvenTxReqDynamics](./storage.md#interface-tableproventxreqdynamics), [TableTxLabel](./storage.md#interface-tabletxlabel), [TransactionStatus](./client.md#type-transactionstatus), [TrxToken](./client.md#interface-trxtoken), [UpdateProvenTxReqWithNewProvenTxArgs](./client.md#interface-updateproventxreqwithnewproventxargs), [UpdateProvenTxReqWithNewProvenTxResult](./client.md#interface-updateproventxreqwithnewproventxresult), [ValidCreateActionArgs](./client.md#interface-validcreateactionargs), [ValidListActionsArgs](./client.md#interface-validlistactionsargs), [ValidListCertificatesArgs](./client.md#interface-validlistcertificatesargs), [ValidListOutputsArgs](./client.md#interface-validlistoutputsargs), [WalletServices](./client.md#interface-walletservices), [WalletStorageProvider](./client.md#interface-walletstorageprovider), [attemptToPostReqsToNetwork](./storage.md#function-attempttopostreqstonetwork), [createAction](./storage.md#function-createaction), [getBeefForTransaction](./storage.md#function-getbeeffortransaction), [internalizeAction](./storage.md#function-internalizeaction), [listActions](./storage.md#function-listactions), [listCertificates](./storage.md#function-listcertificates), [listOutputs](./storage.md#function-listoutputs), [processAction](./storage.md#function-processaction), [purgeData](./storage.md#function-purgedata), [reviewStatus](./storage.md#function-reviewstatus)
3763
+ See also: [AuthId](./client.md#interface-authid), [Chain](./client.md#type-chain), [EntityProvenTxReq](./storage.md#class-entityproventxreq), [FindCertificatesArgs](./client.md#interface-findcertificatesargs), [FindOutputBasketsArgs](./client.md#interface-findoutputbasketsargs), [FindOutputsArgs](./client.md#interface-findoutputsargs), [GetReqsAndBeefResult](./storage.md#interface-getreqsandbeefresult), [PostReqsToNetworkResult](./storage.md#interface-postreqstonetworkresult), [ProcessSyncChunkResult](./client.md#interface-processsyncchunkresult), [ProvenOrRawTx](./client.md#interface-provenorrawtx), [PurgeParams](./client.md#interface-purgeparams), [PurgeResults](./client.md#interface-purgeresults), [RequestSyncChunkArgs](./client.md#interface-requestsyncchunkargs), [StorageCreateActionResult](./client.md#interface-storagecreateactionresult), [StorageFeeModel](./client.md#interface-storagefeemodel), [StorageGetBeefOptions](./client.md#interface-storagegetbeefoptions), [StorageProcessActionArgs](./client.md#interface-storageprocessactionargs), [StorageProcessActionResults](./client.md#interface-storageprocessactionresults), [StorageProvenOrReq](./client.md#interface-storageprovenorreq), [StorageProviderOptions](./storage.md#interface-storageprovideroptions), [StorageReaderWriter](./storage.md#class-storagereaderwriter), [SyncChunk](./client.md#interface-syncchunk), [TableCertificateX](./storage.md#interface-tablecertificatex), [TableMonitorEvent](./storage.md#interface-tablemonitorevent), [TableOutput](./storage.md#interface-tableoutput), [TableOutputBasket](./storage.md#interface-tableoutputbasket), [TableOutputTag](./storage.md#interface-tableoutputtag), [TableOutputX](./storage.md#interface-tableoutputx), [TableProvenTxReq](./storage.md#interface-tableproventxreq), [TableProvenTxReqDynamics](./storage.md#interface-tableproventxreqdynamics), [TableTxLabel](./storage.md#interface-tabletxlabel), [TransactionStatus](./client.md#type-transactionstatus), [TrxToken](./client.md#interface-trxtoken), [UpdateProvenTxReqWithNewProvenTxArgs](./client.md#interface-updateproventxreqwithnewproventxargs), [UpdateProvenTxReqWithNewProvenTxResult](./client.md#interface-updateproventxreqwithnewproventxresult), [ValidCreateActionArgs](./client.md#interface-validcreateactionargs), [ValidListActionsArgs](./client.md#interface-validlistactionsargs), [ValidListCertificatesArgs](./client.md#interface-validlistcertificatesargs), [ValidListOutputsArgs](./client.md#interface-validlistoutputsargs), [WalletServices](./client.md#interface-walletservices), [WalletStorageProvider](./client.md#interface-walletstorageprovider), [attemptToPostReqsToNetwork](./storage.md#function-attempttopostreqstonetwork), [createAction](./storage.md#function-createaction), [getBeefForTransaction](./storage.md#function-getbeeffortransaction), [internalizeAction](./storage.md#function-internalizeaction), [listActions](./storage.md#function-listactions), [listCertificates](./storage.md#function-listcertificates), [listOutputs](./storage.md#function-listoutputs), [processAction](./storage.md#function-processaction), [purgeData](./storage.md#function-purgedata), [reviewStatus](./storage.md#function-reviewstatus)
3268
3764
 
3269
3765
  ###### Method confirmSpendableOutputs
3270
3766
 
@@ -3856,15 +4352,16 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
3856
4352
 
3857
4353
  | | | |
3858
4354
  | --- | --- | --- |
3859
- | [attemptToPostReqsToNetwork](#function-attempttopostreqstonetwork) | [listActions](#function-listactions) | [transactionInputSize](#function-transactioninputsize) |
3860
- | [createAction](#function-createaction) | [listCertificates](#function-listcertificates) | [transactionOutputSize](#function-transactionoutputsize) |
3861
- | [createStorageServiceChargeScript](#function-createstorageservicechargescript) | [listOutputs](#function-listoutputs) | [transactionSize](#function-transactionsize) |
3862
- | [createSyncMap](#function-createsyncmap) | [lockScriptWithKeyOffsetFromPubKey](#function-lockscriptwithkeyoffsetfrompubkey) | [validateGenerateChangeSdkParams](#function-validategeneratechangesdkparams) |
3863
- | [generateChangeSdk](#function-generatechangesdk) | [offsetPubKey](#function-offsetpubkey) | [validateGenerateChangeSdkResult](#function-validategeneratechangesdkresult) |
3864
- | [generateChangeSdkMakeStorage](#function-generatechangesdkmakestorage) | [processAction](#function-processaction) | [validateStorageFeeModel](#function-validatestoragefeemodel) |
3865
- | [getBeefForTransaction](#function-getbeeffortransaction) | [purgeData](#function-purgedata) | [varUintSize](#function-varuintsize) |
3866
- | [getSyncChunk](#function-getsyncchunk) | [reviewStatus](#function-reviewstatus) | |
3867
- | [internalizeAction](#function-internalizeaction) | [setDisableDoubleSpendCheckForTest](#function-setdisabledoublespendcheckfortest) | |
4355
+ | [attemptToPostReqsToNetwork](#function-attempttopostreqstonetwork) | [listActionsIdb](#function-listactionsidb) | [reviewStatusIdb](#function-reviewstatusidb) |
4356
+ | [createAction](#function-createaction) | [listCertificates](#function-listcertificates) | [setDisableDoubleSpendCheckForTest](#function-setdisabledoublespendcheckfortest) |
4357
+ | [createStorageServiceChargeScript](#function-createstorageservicechargescript) | [listOutputs](#function-listoutputs) | [transactionInputSize](#function-transactioninputsize) |
4358
+ | [createSyncMap](#function-createsyncmap) | [listOutputsIdb](#function-listoutputsidb) | [transactionOutputSize](#function-transactionoutputsize) |
4359
+ | [generateChangeSdk](#function-generatechangesdk) | [lockScriptWithKeyOffsetFromPubKey](#function-lockscriptwithkeyoffsetfrompubkey) | [transactionSize](#function-transactionsize) |
4360
+ | [generateChangeSdkMakeStorage](#function-generatechangesdkmakestorage) | [offsetPubKey](#function-offsetpubkey) | [validateGenerateChangeSdkParams](#function-validategeneratechangesdkparams) |
4361
+ | [getBeefForTransaction](#function-getbeeffortransaction) | [processAction](#function-processaction) | [validateGenerateChangeSdkResult](#function-validategeneratechangesdkresult) |
4362
+ | [getSyncChunk](#function-getsyncchunk) | [purgeData](#function-purgedata) | [validateStorageFeeModel](#function-validatestoragefeemodel) |
4363
+ | [internalizeAction](#function-internalizeaction) | [purgeDataIdb](#function-purgedataidb) | [varUintSize](#function-varuintsize) |
4364
+ | [listActions](#function-listactions) | [reviewStatus](#function-reviewstatus) | |
3868
4365
 
3869
4366
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
3870
4367
 
@@ -4040,6 +4537,17 @@ See also: [AuthId](./client.md#interface-authid), [StorageKnex](./storage.md#cla
4040
4537
 
4041
4538
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4042
4539
 
4540
+ ---
4541
+ ##### Function: listActionsIdb
4542
+
4543
+ ```ts
4544
+ export async function listActionsIdb(storage: StorageIdb, auth: sdk.AuthId, vargs: sdk.ValidListActionsArgs): Promise<ListActionsResult>
4545
+ ```
4546
+
4547
+ See also: [AuthId](./client.md#interface-authid), [StorageIdb](./storage.md#class-storageidb), [ValidListActionsArgs](./client.md#interface-validlistactionsargs)
4548
+
4549
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4550
+
4043
4551
  ---
4044
4552
  ##### Function: listCertificates
4045
4553
 
@@ -4062,6 +4570,17 @@ See also: [AuthId](./client.md#interface-authid), [StorageKnex](./storage.md#cla
4062
4570
 
4063
4571
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4064
4572
 
4573
+ ---
4574
+ ##### Function: listOutputsIdb
4575
+
4576
+ ```ts
4577
+ export async function listOutputsIdb(storage: StorageIdb, auth: sdk.AuthId, vargs: sdk.ValidListOutputsArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ListOutputsResult>
4578
+ ```
4579
+
4580
+ See also: [AuthId](./client.md#interface-authid), [StorageIdb](./storage.md#class-storageidb), [ValidListOutputsArgs](./client.md#interface-validlistoutputsargs)
4581
+
4582
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4583
+
4065
4584
  ---
4066
4585
  ##### Function: lockScriptWithKeyOffsetFromPubKey
4067
4586
 
@@ -4108,9 +4627,26 @@ See also: [PurgeParams](./client.md#interface-purgeparams), [PurgeResults](./cli
4108
4627
 
4109
4628
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4110
4629
 
4630
+ ---
4631
+ ##### Function: purgeDataIdb
4632
+
4633
+ ```ts
4634
+ export async function purgeDataIdb(storage: StorageIdb, params: sdk.PurgeParams, trx?: sdk.TrxToken): Promise<sdk.PurgeResults>
4635
+ ```
4636
+
4637
+ See also: [PurgeParams](./client.md#interface-purgeparams), [PurgeResults](./client.md#interface-purgeresults), [StorageIdb](./storage.md#class-storageidb), [TrxToken](./client.md#interface-trxtoken)
4638
+
4639
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4640
+
4111
4641
  ---
4112
4642
  ##### Function: reviewStatus
4113
4643
 
4644
+ Looks for unpropagated state:
4645
+
4646
+ 1. set transactions to 'failed' if not already failed and provenTxReq with matching txid has status of 'invalid'.
4647
+ 2. sets outputs to spendable true, spentBy undefined if spentBy is a transaction with status 'failed'.
4648
+ 3. sets transactions to 'completed' if provenTx with matching txid exists and current provenTxId is null.
4649
+
4114
4650
  ```ts
4115
4651
  export async function reviewStatus(storage: StorageKnex, args: {
4116
4652
  agedLimit: Date;
@@ -4124,6 +4660,28 @@ See also: [StorageKnex](./storage.md#class-storageknex), [TrxToken](./client.md#
4124
4660
 
4125
4661
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4126
4662
 
4663
+ ---
4664
+ ##### Function: reviewStatusIdb
4665
+
4666
+ Looks for unpropagated state:
4667
+
4668
+ 1. set transactions to 'failed' if not already failed and provenTxReq with matching txid has status of 'invalid'.
4669
+ 2. sets transactions to 'completed' if provenTx with matching txid exists and current provenTxId is null.
4670
+ 3. sets outputs to spendable true, spentBy undefined if spentBy is a transaction with status 'failed'.
4671
+
4672
+ ```ts
4673
+ export async function reviewStatusIdb(storage: StorageIdb, args: {
4674
+ agedLimit: Date;
4675
+ trx?: sdk.TrxToken;
4676
+ }): Promise<{
4677
+ log: string;
4678
+ }>
4679
+ ```
4680
+
4681
+ See also: [StorageIdb](./storage.md#class-storageidb), [TrxToken](./client.md#interface-trxtoken)
4682
+
4683
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4684
+
4127
4685
  ---
4128
4686
  ##### Function: setDisableDoubleSpendCheckForTest
4129
4687
 
@@ -4262,7 +4820,7 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
4262
4820
  ##### Type: DBType
4263
4821
 
4264
4822
  ```ts
4265
- export type DBType = "SQLite" | "MySQL"
4823
+ export type DBType = "SQLite" | "MySQL" | "IndexedDB"
4266
4824
  ```
4267
4825
 
4268
4826
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
@@ -4303,6 +4861,8 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
4303
4861
 
4304
4862
  | |
4305
4863
  | --- |
4864
+ | [getBasketToSpecOp](#variable-getbaskettospecop) |
4865
+ | [getLabelToSpecOp](#variable-getlabeltospecop) |
4306
4866
  | [maxPossibleSatoshis](#variable-maxpossiblesatoshis) |
4307
4867
  | [outputColumnsWithoutLockingScript](#variable-outputcolumnswithoutlockingscript) |
4308
4868
  | [transactionColumnsWithoutRawTx](#variable-transactioncolumnswithoutrawtx) |
@@ -4311,6 +4871,124 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
4311
4871
 
4312
4872
  ---
4313
4873
 
4874
+ ##### Variable: getBasketToSpecOp
4875
+
4876
+ ```ts
4877
+ getBasketToSpecOp: () => Record<string, ListOutputsSpecOp> = () => {
4878
+ return {
4879
+ [sdk.specOpWalletBalance]: {
4880
+ name: "totalOutputsIsWalletBalance",
4881
+ useBasket: "default",
4882
+ ignoreLimit: true,
4883
+ resultFromOutputs: async (s: StorageProvider, auth: sdk.AuthId, vargs: ValidListOutputsArgs, specOpTags: string[], outputs: TableOutput[]): Promise<ListOutputsResult> => {
4884
+ let totalOutputs = 0;
4885
+ for (const o of outputs)
4886
+ totalOutputs += o.satoshis;
4887
+ return { totalOutputs, outputs: [] };
4888
+ }
4889
+ },
4890
+ [sdk.specOpInvalidChange]: {
4891
+ name: "invalidChangeOutputs",
4892
+ useBasket: "default",
4893
+ ignoreLimit: true,
4894
+ includeOutputScripts: true,
4895
+ includeSpent: false,
4896
+ tagsToIntercept: ["release", "all"],
4897
+ filterOutputs: async (s: StorageProvider, auth: sdk.AuthId, vargs: ValidListOutputsArgs, specOpTags: string[], outputs: TableOutput[]): Promise<TableOutput[]> => {
4898
+ const filteredOutputs: TableOutput[] = [];
4899
+ const services = s.getServices();
4900
+ for (const o of outputs) {
4901
+ await s.validateOutputScript(o);
4902
+ let ok: boolean | undefined = false;
4903
+ if (o.lockingScript && o.lockingScript.length > 0) {
4904
+ ok = await services.isUtxo(o);
4905
+ }
4906
+ else {
4907
+ ok = undefined;
4908
+ }
4909
+ if (ok === false) {
4910
+ filteredOutputs.push(o);
4911
+ }
4912
+ }
4913
+ if (specOpTags.indexOf("release") >= 0) {
4914
+ for (const o of filteredOutputs) {
4915
+ await s.updateOutput(o.outputId, { spendable: false });
4916
+ o.spendable = false;
4917
+ }
4918
+ }
4919
+ return filteredOutputs;
4920
+ }
4921
+ },
4922
+ [sdk.specOpSetWalletChangeParams]: {
4923
+ name: "setWalletChangeParams",
4924
+ tagsParamsCount: 2,
4925
+ resultFromTags: async (s: StorageProvider, auth: sdk.AuthId, vargs: ValidListOutputsArgs, specOpTags: string[]): Promise<ListOutputsResult> => {
4926
+ if (specOpTags.length !== 2)
4927
+ throw new sdk.WERR_INVALID_PARAMETER("numberOfDesiredUTXOs and minimumDesiredUTXOValue", "valid");
4928
+ const numberOfDesiredUTXOs: number = verifyInteger(Number(specOpTags[0]));
4929
+ const minimumDesiredUTXOValue: number = verifyInteger(Number(specOpTags[1]));
4930
+ const basket = verifyOne(await s.findOutputBaskets({
4931
+ partial: { userId: verifyId(auth.userId), name: "default" }
4932
+ }));
4933
+ await s.updateOutputBasket(basket.basketId, {
4934
+ numberOfDesiredUTXOs,
4935
+ minimumDesiredUTXOValue
4936
+ });
4937
+ return { totalOutputs: 0, outputs: [] };
4938
+ }
4939
+ }
4940
+ };
4941
+ }
4942
+ ```
4943
+
4944
+ See also: [AuthId](./client.md#interface-authid), [ListOutputsSpecOp](./storage.md#interface-listoutputsspecop), [StorageProvider](./storage.md#class-storageprovider), [TableOutput](./storage.md#interface-tableoutput), [ValidListOutputsArgs](./client.md#interface-validlistoutputsargs), [WERR_INVALID_PARAMETER](./client.md#class-werr_invalid_parameter), [specOpInvalidChange](./client.md#variable-specopinvalidchange), [specOpSetWalletChangeParams](./client.md#variable-specopsetwalletchangeparams), [specOpWalletBalance](./client.md#variable-specopwalletbalance), [verifyId](./client.md#function-verifyid), [verifyInteger](./client.md#function-verifyinteger), [verifyOne](./client.md#function-verifyone)
4945
+
4946
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4947
+
4948
+ ---
4949
+ ##### Variable: getLabelToSpecOp
4950
+
4951
+ ```ts
4952
+ getLabelToSpecOp: () => Record<string, ListActionsSpecOp> = () => {
4953
+ return {
4954
+ [sdk.specOpNoSendActions]: {
4955
+ name: "noSendActions",
4956
+ labelsToIntercept: ["abort"],
4957
+ setStatusFilter: () => ["nosend"],
4958
+ postProcess: async (s: StorageProvider, auth: sdk.AuthId, vargs: sdk.ValidListActionsArgs, specOpLabels: string[], txs: Partial<TableTransaction>[]): Promise<void> => {
4959
+ if (specOpLabels.indexOf("abort") >= 0) {
4960
+ for (const tx of txs) {
4961
+ if (tx.status === "nosend") {
4962
+ await s.abortAction(auth, { reference: tx.reference! });
4963
+ tx.status = "failed";
4964
+ }
4965
+ }
4966
+ }
4967
+ }
4968
+ },
4969
+ [sdk.specOpFailedActions]: {
4970
+ name: "failedActions",
4971
+ labelsToIntercept: ["unfail"],
4972
+ setStatusFilter: () => ["failed"],
4973
+ postProcess: async (s: StorageProvider, auth: sdk.AuthId, vargs: sdk.ValidListActionsArgs, specOpLabels: string[], txs: Partial<TableTransaction>[]): Promise<void> => {
4974
+ if (specOpLabels.indexOf("unfail") >= 0) {
4975
+ for (const tx of txs) {
4976
+ if (tx.status === "failed") {
4977
+ await s.updateTransaction(tx.transactionId!, { status: "unfail" });
4978
+ }
4979
+ }
4980
+ }
4981
+ }
4982
+ }
4983
+ };
4984
+ }
4985
+ ```
4986
+
4987
+ See also: [AuthId](./client.md#interface-authid), [ListActionsSpecOp](./storage.md#interface-listactionsspecop), [StorageProvider](./storage.md#class-storageprovider), [TableTransaction](./storage.md#interface-tabletransaction), [ValidListActionsArgs](./client.md#interface-validlistactionsargs), [specOpFailedActions](./client.md#variable-specopfailedactions), [specOpNoSendActions](./client.md#variable-specopnosendactions)
4988
+
4989
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4990
+
4991
+ ---
4314
4992
  ##### Variable: maxPossibleSatoshis
4315
4993
 
4316
4994
  ```ts