@bsv/sdk 1.6.9 → 1.6.11

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 (654) hide show
  1. package/README.md +9 -4
  2. package/dist/cjs/package.json +4 -2
  3. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +5 -1
  4. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  5. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  6. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +5 -1
  7. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  8. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  9. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  10. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  11. package/dist/umd/bundle.js +1 -1
  12. package/docs/concepts/beef.md +84 -0
  13. package/docs/concepts/chain-tracking.md +122 -0
  14. package/docs/concepts/decentralized-identity.md +184 -0
  15. package/docs/concepts/fees.md +217 -0
  16. package/docs/concepts/identity-certificates.md +255 -0
  17. package/docs/concepts/index.md +62 -0
  18. package/docs/concepts/key-management.md +176 -0
  19. package/docs/concepts/script-templates.md +163 -0
  20. package/docs/concepts/sdk-philosophy.md +72 -0
  21. package/docs/concepts/signatures.md +179 -0
  22. package/docs/concepts/spv-verification.md +106 -0
  23. package/docs/concepts/transaction-encoding.md +148 -0
  24. package/docs/concepts/transaction-structure.md +63 -0
  25. package/docs/concepts/trust-model.md +123 -0
  26. package/docs/concepts/verification.md +219 -0
  27. package/docs/concepts/wallet-integration.md +95 -0
  28. package/docs/guides/direct-transaction-creation.md +137 -0
  29. package/docs/guides/http-client-configuration.md +414 -0
  30. package/docs/guides/index.md +30 -0
  31. package/docs/guides/transaction-signing-methods.md +268 -0
  32. package/docs/index.md +74 -0
  33. package/docs/reference/arc-config.md +698 -0
  34. package/docs/reference/brc-100.md +33 -0
  35. package/docs/reference/configuration.md +829 -0
  36. package/docs/reference/debugging.md +700 -0
  37. package/docs/reference/errors.md +547 -0
  38. package/docs/reference/index.md +98 -0
  39. package/docs/reference/network-config.md +914 -0
  40. package/docs/reference/op-codes.md +306 -0
  41. package/docs/reference/transaction-signatures.md +94 -0
  42. package/docs/requirements.txt +3 -0
  43. package/docs/tutorials/advanced-transaction.md +575 -0
  44. package/docs/tutorials/aes-encryption.md +947 -0
  45. package/docs/tutorials/authfetch-tutorial.md +957 -0
  46. package/docs/tutorials/ecdh-key-exchange.md +547 -0
  47. package/docs/tutorials/elliptic-curve-fundamentals.md +603 -0
  48. package/docs/tutorials/error-handling.md +1215 -0
  49. package/docs/tutorials/first-transaction-low-level.md +204 -0
  50. package/docs/tutorials/first-transaction.md +278 -0
  51. package/docs/tutorials/hashes-and-hmacs.md +814 -0
  52. package/docs/tutorials/identity-management.md +702 -0
  53. package/docs/tutorials/index.md +182 -0
  54. package/docs/tutorials/key-management.md +536 -0
  55. package/docs/tutorials/protowallet-development.md +716 -0
  56. package/docs/tutorials/script-construction.md +690 -0
  57. package/docs/tutorials/spv-merkle-proofs.md +682 -0
  58. package/docs/tutorials/testnet-transactions-low-level.md +352 -0
  59. package/docs/tutorials/transaction-broadcasting.md +535 -0
  60. package/docs/tutorials/transaction-types.md +419 -0
  61. package/docs/tutorials/type-42.md +582 -0
  62. package/docs/tutorials/uhrp-storage.md +579 -0
  63. package/package.json +4 -2
  64. package/src/wallet/substrates/HTTPWalletJSON.ts +6 -1
  65. package/dist/cjs/src/auth/__tests/Peer.test.js +0 -446
  66. package/dist/cjs/src/auth/__tests/Peer.test.js.map +0 -1
  67. package/dist/cjs/src/auth/__tests/SessionManager.test.js +0 -69
  68. package/dist/cjs/src/auth/__tests/SessionManager.test.js.map +0 -1
  69. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js +0 -182
  70. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
  71. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
  72. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
  73. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
  74. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
  75. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js +0 -101
  76. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
  77. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
  78. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
  79. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js +0 -111
  80. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
  81. package/dist/cjs/src/auth/utils/certificateHelpers.js +0 -51
  82. package/dist/cjs/src/auth/utils/certificateHelpers.js.map +0 -1
  83. package/dist/cjs/src/compat/__tests/BSM.test.js +0 -69
  84. package/dist/cjs/src/compat/__tests/BSM.test.js.map +0 -1
  85. package/dist/cjs/src/compat/__tests/ECIES.test.js +0 -115
  86. package/dist/cjs/src/compat/__tests/ECIES.test.js.map +0 -1
  87. package/dist/cjs/src/compat/__tests/HD.test.js +0 -336
  88. package/dist/cjs/src/compat/__tests/HD.test.js.map +0 -1
  89. package/dist/cjs/src/compat/__tests/Mnemonic.test.js +0 -150
  90. package/dist/cjs/src/compat/__tests/Mnemonic.test.js.map +0 -1
  91. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js +0 -175
  92. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
  93. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js +0 -57
  94. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
  95. package/dist/cjs/src/messages/__tests/SignedMessage.test.js +0 -52
  96. package/dist/cjs/src/messages/__tests/SignedMessage.test.js.map +0 -1
  97. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
  98. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
  99. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
  100. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
  101. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
  102. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
  103. package/dist/cjs/src/primitives/__tests/AESGCM.test.js +0 -248
  104. package/dist/cjs/src/primitives/__tests/AESGCM.test.js.map +0 -1
  105. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js +0 -36
  106. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
  107. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js +0 -36
  108. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
  109. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
  110. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
  111. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js +0 -185
  112. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
  113. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
  114. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
  115. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
  116. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
  117. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js +0 -268
  118. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
  119. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
  120. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
  121. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js +0 -322
  122. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
  123. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js +0 -145
  124. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js.map +0 -1
  125. package/dist/cjs/src/primitives/__tests/DRBG.test.js +0 -22
  126. package/dist/cjs/src/primitives/__tests/DRBG.test.js.map +0 -1
  127. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js +0 -170
  128. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js.map +0 -1
  129. package/dist/cjs/src/primitives/__tests/ECDH.test.js +0 -34
  130. package/dist/cjs/src/primitives/__tests/ECDH.test.js.map +0 -1
  131. package/dist/cjs/src/primitives/__tests/ECDSA.test.js +0 -89
  132. package/dist/cjs/src/primitives/__tests/ECDSA.test.js.map +0 -1
  133. package/dist/cjs/src/primitives/__tests/HMAC.test.js +0 -60
  134. package/dist/cjs/src/primitives/__tests/HMAC.test.js.map +0 -1
  135. package/dist/cjs/src/primitives/__tests/Hash.test.js +0 -159
  136. package/dist/cjs/src/primitives/__tests/Hash.test.js.map +0 -1
  137. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js +0 -122
  138. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
  139. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js +0 -105
  140. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
  141. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js +0 -90
  142. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js.map +0 -1
  143. package/dist/cjs/src/primitives/__tests/PublicKey.test.js +0 -83
  144. package/dist/cjs/src/primitives/__tests/PublicKey.test.js.map +0 -1
  145. package/dist/cjs/src/primitives/__tests/Random.test.js +0 -19
  146. package/dist/cjs/src/primitives/__tests/Random.test.js.map +0 -1
  147. package/dist/cjs/src/primitives/__tests/Reader.test.js +0 -282
  148. package/dist/cjs/src/primitives/__tests/Reader.test.js.map +0 -1
  149. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js +0 -224
  150. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js.map +0 -1
  151. package/dist/cjs/src/primitives/__tests/Schnorr.test.js +0 -213
  152. package/dist/cjs/src/primitives/__tests/Schnorr.test.js.map +0 -1
  153. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js +0 -51
  154. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
  155. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
  156. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
  157. package/dist/cjs/src/primitives/__tests/Writer.test.js +0 -176
  158. package/dist/cjs/src/primitives/__tests/Writer.test.js.map +0 -1
  159. package/dist/cjs/src/primitives/__tests/bug-31.test.js +0 -32
  160. package/dist/cjs/src/primitives/__tests/bug-31.test.js.map +0 -1
  161. package/dist/cjs/src/primitives/__tests/sighash.vectors.js +0 -3506
  162. package/dist/cjs/src/primitives/__tests/sighash.vectors.js.map +0 -1
  163. package/dist/cjs/src/primitives/__tests/utils.test.js +0 -110
  164. package/dist/cjs/src/primitives/__tests/utils.test.js.map +0 -1
  165. package/dist/cjs/src/script/__tests/Script.test.js +0 -347
  166. package/dist/cjs/src/script/__tests/Script.test.js.map +0 -1
  167. package/dist/cjs/src/script/__tests/Spend.test.js +0 -282
  168. package/dist/cjs/src/script/__tests/Spend.test.js.map +0 -1
  169. package/dist/cjs/src/script/__tests/SpendComplex.test.js +0 -52
  170. package/dist/cjs/src/script/__tests/SpendComplex.test.js.map +0 -1
  171. package/dist/cjs/src/script/__tests/script.invalid.vectors.js +0 -2370
  172. package/dist/cjs/src/script/__tests/script.invalid.vectors.js.map +0 -1
  173. package/dist/cjs/src/script/__tests/script.valid.vectors.js +0 -1181
  174. package/dist/cjs/src/script/__tests/script.valid.vectors.js.map +0 -1
  175. package/dist/cjs/src/script/__tests/spend.valid.vectors.js +0 -2298
  176. package/dist/cjs/src/script/__tests/spend.valid.vectors.js.map +0 -1
  177. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js +0 -161
  178. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js.map +0 -1
  179. package/dist/cjs/src/totp/__tests/totp.test.js +0 -67
  180. package/dist/cjs/src/totp/__tests/totp.test.js.map +0 -1
  181. package/dist/cjs/src/transaction/__tests/Beef.test.js +0 -393
  182. package/dist/cjs/src/transaction/__tests/Beef.test.js.map +0 -1
  183. package/dist/cjs/src/transaction/__tests/MerklePath.test.js +0 -209
  184. package/dist/cjs/src/transaction/__tests/MerklePath.test.js.map +0 -1
  185. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
  186. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
  187. package/dist/cjs/src/transaction/__tests/Transaction.test.js +0 -1073
  188. package/dist/cjs/src/transaction/__tests/Transaction.test.js.map +0 -1
  189. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js +0 -7
  190. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js.map +0 -1
  191. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js +0 -11
  192. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
  193. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js +0 -7
  194. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
  195. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js +0 -230
  196. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
  197. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js +0 -296
  198. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
  199. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
  200. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
  201. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
  202. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
  203. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
  204. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
  205. package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js +0 -39
  206. package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js.map +0 -1
  207. package/dist/cjs/src/wallet/WalletSigner.js +0 -260
  208. package/dist/cjs/src/wallet/WalletSigner.js.map +0 -1
  209. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
  210. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
  211. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js +0 -114
  212. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
  213. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js +0 -475
  214. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
  215. package/dist/cjs/src/wallet/createActionSdk.js +0 -230
  216. package/dist/cjs/src/wallet/createActionSdk.js.map +0 -1
  217. package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js +0 -174
  218. package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js.map +0 -1
  219. package/dist/cjs/src/wallet/sdk/CertOps.js +0 -181
  220. package/dist/cjs/src/wallet/sdk/CertOps.js.map +0 -1
  221. package/dist/cjs/src/wallet/sdk/Certificate.js +0 -162
  222. package/dist/cjs/src/wallet/sdk/Certificate.js.map +0 -1
  223. package/dist/cjs/src/wallet/sdk/KeyDeriver.js +0 -176
  224. package/dist/cjs/src/wallet/sdk/KeyDeriver.js.map +0 -1
  225. package/dist/cjs/src/wallet/sdk/ProtoWallet.js +0 -75
  226. package/dist/cjs/src/wallet/sdk/ProtoWallet.js.map +0 -1
  227. package/dist/cjs/src/wallet/sdk/StorageSyncReader.js +0 -3
  228. package/dist/cjs/src/wallet/sdk/StorageSyncReader.js.map +0 -1
  229. package/dist/cjs/src/wallet/sdk/WERR_errors.js +0 -107
  230. package/dist/cjs/src/wallet/sdk/WERR_errors.js.map +0 -1
  231. package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js +0 -3
  232. package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js.map +0 -1
  233. package/dist/cjs/src/wallet/sdk/WalletCrypto.js +0 -171
  234. package/dist/cjs/src/wallet/sdk/WalletCrypto.js.map +0 -1
  235. package/dist/cjs/src/wallet/sdk/WalletError.js +0 -103
  236. package/dist/cjs/src/wallet/sdk/WalletError.js.map +0 -1
  237. package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js +0 -3
  238. package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js.map +0 -1
  239. package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js +0 -3
  240. package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js.map +0 -1
  241. package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js +0 -3
  242. package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js.map +0 -1
  243. package/dist/cjs/src/wallet/sdk/index.js +0 -31
  244. package/dist/cjs/src/wallet/sdk/index.js.map +0 -1
  245. package/dist/cjs/src/wallet/sdk/types.js +0 -11
  246. package/dist/cjs/src/wallet/sdk/types.js.map +0 -1
  247. package/dist/cjs/src/wallet/sdk/validationHelpers.js +0 -601
  248. package/dist/cjs/src/wallet/sdk/validationHelpers.js.map +0 -1
  249. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
  250. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
  251. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js +0 -579
  252. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
  253. package/dist/cjs/src/wallet/utilityHelpers.js +0 -305
  254. package/dist/cjs/src/wallet/utilityHelpers.js.map +0 -1
  255. package/dist/cjs/src/wallet/validationHelpers.js +0 -601
  256. package/dist/cjs/src/wallet/validationHelpers.js.map +0 -1
  257. package/dist/esm/src/auth/__tests/Peer.test.js +0 -448
  258. package/dist/esm/src/auth/__tests/Peer.test.js.map +0 -1
  259. package/dist/esm/src/auth/__tests/SessionManager.test.js +0 -69
  260. package/dist/esm/src/auth/__tests/SessionManager.test.js.map +0 -1
  261. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js +0 -182
  262. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
  263. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
  264. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
  265. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
  266. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
  267. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js +0 -101
  268. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
  269. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
  270. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
  271. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js +0 -111
  272. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
  273. package/dist/esm/src/auth/utils/certificateHelpers.js +0 -47
  274. package/dist/esm/src/auth/utils/certificateHelpers.js.map +0 -1
  275. package/dist/esm/src/compat/__tests/BSM.test.js +0 -69
  276. package/dist/esm/src/compat/__tests/BSM.test.js.map +0 -1
  277. package/dist/esm/src/compat/__tests/ECIES.test.js +0 -115
  278. package/dist/esm/src/compat/__tests/ECIES.test.js.map +0 -1
  279. package/dist/esm/src/compat/__tests/HD.test.js +0 -336
  280. package/dist/esm/src/compat/__tests/HD.test.js.map +0 -1
  281. package/dist/esm/src/compat/__tests/Mnemonic.test.js +0 -150
  282. package/dist/esm/src/compat/__tests/Mnemonic.test.js.map +0 -1
  283. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js +0 -175
  284. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
  285. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js +0 -57
  286. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
  287. package/dist/esm/src/messages/__tests/SignedMessage.test.js +0 -52
  288. package/dist/esm/src/messages/__tests/SignedMessage.test.js.map +0 -1
  289. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
  290. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
  291. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
  292. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
  293. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
  294. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
  295. package/dist/esm/src/primitives/__tests/AESGCM.test.js +0 -248
  296. package/dist/esm/src/primitives/__tests/AESGCM.test.js.map +0 -1
  297. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js +0 -36
  298. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
  299. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js +0 -36
  300. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
  301. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
  302. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
  303. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js +0 -185
  304. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
  305. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
  306. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
  307. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
  308. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
  309. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js +0 -268
  310. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
  311. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
  312. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
  313. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js +0 -322
  314. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
  315. package/dist/esm/src/primitives/__tests/Curve.unit.test.js +0 -145
  316. package/dist/esm/src/primitives/__tests/Curve.unit.test.js.map +0 -1
  317. package/dist/esm/src/primitives/__tests/DRBG.test.js +0 -22
  318. package/dist/esm/src/primitives/__tests/DRBG.test.js.map +0 -1
  319. package/dist/esm/src/primitives/__tests/DRBG.vectors.js +0 -170
  320. package/dist/esm/src/primitives/__tests/DRBG.vectors.js.map +0 -1
  321. package/dist/esm/src/primitives/__tests/ECDH.test.js +0 -34
  322. package/dist/esm/src/primitives/__tests/ECDH.test.js.map +0 -1
  323. package/dist/esm/src/primitives/__tests/ECDSA.test.js +0 -89
  324. package/dist/esm/src/primitives/__tests/ECDSA.test.js.map +0 -1
  325. package/dist/esm/src/primitives/__tests/HMAC.test.js +0 -60
  326. package/dist/esm/src/primitives/__tests/HMAC.test.js.map +0 -1
  327. package/dist/esm/src/primitives/__tests/Hash.test.js +0 -159
  328. package/dist/esm/src/primitives/__tests/Hash.test.js.map +0 -1
  329. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js +0 -122
  330. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
  331. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js +0 -105
  332. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
  333. package/dist/esm/src/primitives/__tests/PrivateKey.test.js +0 -90
  334. package/dist/esm/src/primitives/__tests/PrivateKey.test.js.map +0 -1
  335. package/dist/esm/src/primitives/__tests/PublicKey.test.js +0 -83
  336. package/dist/esm/src/primitives/__tests/PublicKey.test.js.map +0 -1
  337. package/dist/esm/src/primitives/__tests/Random.test.js +0 -19
  338. package/dist/esm/src/primitives/__tests/Random.test.js.map +0 -1
  339. package/dist/esm/src/primitives/__tests/Reader.test.js +0 -282
  340. package/dist/esm/src/primitives/__tests/Reader.test.js.map +0 -1
  341. package/dist/esm/src/primitives/__tests/ReductionContext.test.js +0 -223
  342. package/dist/esm/src/primitives/__tests/ReductionContext.test.js.map +0 -1
  343. package/dist/esm/src/primitives/__tests/Schnorr.test.js +0 -213
  344. package/dist/esm/src/primitives/__tests/Schnorr.test.js.map +0 -1
  345. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js +0 -51
  346. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
  347. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
  348. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
  349. package/dist/esm/src/primitives/__tests/Writer.test.js +0 -176
  350. package/dist/esm/src/primitives/__tests/Writer.test.js.map +0 -1
  351. package/dist/esm/src/primitives/__tests/bug-31.test.js +0 -32
  352. package/dist/esm/src/primitives/__tests/bug-31.test.js.map +0 -1
  353. package/dist/esm/src/primitives/__tests/sighash.vectors.js +0 -3506
  354. package/dist/esm/src/primitives/__tests/sighash.vectors.js.map +0 -1
  355. package/dist/esm/src/primitives/__tests/utils.test.js +0 -110
  356. package/dist/esm/src/primitives/__tests/utils.test.js.map +0 -1
  357. package/dist/esm/src/script/__tests/Script.test.js +0 -347
  358. package/dist/esm/src/script/__tests/Script.test.js.map +0 -1
  359. package/dist/esm/src/script/__tests/Spend.test.js +0 -282
  360. package/dist/esm/src/script/__tests/Spend.test.js.map +0 -1
  361. package/dist/esm/src/script/__tests/SpendComplex.test.js +0 -51
  362. package/dist/esm/src/script/__tests/SpendComplex.test.js.map +0 -1
  363. package/dist/esm/src/script/__tests/script.invalid.vectors.js +0 -2370
  364. package/dist/esm/src/script/__tests/script.invalid.vectors.js.map +0 -1
  365. package/dist/esm/src/script/__tests/script.valid.vectors.js +0 -1181
  366. package/dist/esm/src/script/__tests/script.valid.vectors.js.map +0 -1
  367. package/dist/esm/src/script/__tests/spend.valid.vectors.js +0 -2298
  368. package/dist/esm/src/script/__tests/spend.valid.vectors.js.map +0 -1
  369. package/dist/esm/src/script/templates/__tests/PushDrop.test.js +0 -161
  370. package/dist/esm/src/script/templates/__tests/PushDrop.test.js.map +0 -1
  371. package/dist/esm/src/totp/__tests/totp.test.js +0 -67
  372. package/dist/esm/src/totp/__tests/totp.test.js.map +0 -1
  373. package/dist/esm/src/transaction/__tests/Beef.test.js +0 -393
  374. package/dist/esm/src/transaction/__tests/Beef.test.js.map +0 -1
  375. package/dist/esm/src/transaction/__tests/MerklePath.test.js +0 -209
  376. package/dist/esm/src/transaction/__tests/MerklePath.test.js.map +0 -1
  377. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
  378. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
  379. package/dist/esm/src/transaction/__tests/Transaction.test.js +0 -1072
  380. package/dist/esm/src/transaction/__tests/Transaction.test.js.map +0 -1
  381. package/dist/esm/src/transaction/__tests/bigtx.vectors.js +0 -7
  382. package/dist/esm/src/transaction/__tests/bigtx.vectors.js.map +0 -1
  383. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js +0 -11
  384. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
  385. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js +0 -7
  386. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
  387. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js +0 -230
  388. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
  389. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js +0 -296
  390. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
  391. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
  392. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
  393. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
  394. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
  395. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
  396. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
  397. package/dist/esm/src/wallet/ScriptTemplateSABPPP.js +0 -37
  398. package/dist/esm/src/wallet/ScriptTemplateSABPPP.js.map +0 -1
  399. package/dist/esm/src/wallet/WalletSigner.js +0 -263
  400. package/dist/esm/src/wallet/WalletSigner.js.map +0 -1
  401. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
  402. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
  403. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js +0 -113
  404. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
  405. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js +0 -475
  406. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
  407. package/dist/esm/src/wallet/createActionSdk.js +0 -223
  408. package/dist/esm/src/wallet/createActionSdk.js.map +0 -1
  409. package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js +0 -174
  410. package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js.map +0 -1
  411. package/dist/esm/src/wallet/sdk/CertOps.js +0 -181
  412. package/dist/esm/src/wallet/sdk/CertOps.js.map +0 -1
  413. package/dist/esm/src/wallet/sdk/Certificate.js +0 -186
  414. package/dist/esm/src/wallet/sdk/Certificate.js.map +0 -1
  415. package/dist/esm/src/wallet/sdk/KeyDeriver.js +0 -174
  416. package/dist/esm/src/wallet/sdk/KeyDeriver.js.map +0 -1
  417. package/dist/esm/src/wallet/sdk/ProtoWallet.js +0 -71
  418. package/dist/esm/src/wallet/sdk/ProtoWallet.js.map +0 -1
  419. package/dist/esm/src/wallet/sdk/StorageSyncReader.js +0 -2
  420. package/dist/esm/src/wallet/sdk/StorageSyncReader.js.map +0 -1
  421. package/dist/esm/src/wallet/sdk/WERR_errors.js +0 -99
  422. package/dist/esm/src/wallet/sdk/WERR_errors.js.map +0 -1
  423. package/dist/esm/src/wallet/sdk/Wallet.interfaces.js +0 -2
  424. package/dist/esm/src/wallet/sdk/Wallet.interfaces.js.map +0 -1
  425. package/dist/esm/src/wallet/sdk/WalletCrypto.js +0 -168
  426. package/dist/esm/src/wallet/sdk/WalletCrypto.js.map +0 -1
  427. package/dist/esm/src/wallet/sdk/WalletError.js +0 -100
  428. package/dist/esm/src/wallet/sdk/WalletError.js.map +0 -1
  429. package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js +0 -2
  430. package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js.map +0 -1
  431. package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js +0 -2
  432. package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js.map +0 -1
  433. package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js +0 -2
  434. package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js.map +0 -1
  435. package/dist/esm/src/wallet/sdk/index.js +0 -15
  436. package/dist/esm/src/wallet/sdk/index.js.map +0 -1
  437. package/dist/esm/src/wallet/sdk/types.js +0 -8
  438. package/dist/esm/src/wallet/sdk/types.js.map +0 -1
  439. package/dist/esm/src/wallet/sdk/validationHelpers.js +0 -566
  440. package/dist/esm/src/wallet/sdk/validationHelpers.js.map +0 -1
  441. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
  442. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
  443. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js +0 -579
  444. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
  445. package/dist/esm/src/wallet/utilityHelpers.js +0 -275
  446. package/dist/esm/src/wallet/utilityHelpers.js.map +0 -1
  447. package/dist/esm/src/wallet/validationHelpers.js +0 -566
  448. package/dist/esm/src/wallet/validationHelpers.js.map +0 -1
  449. package/dist/types/src/auth/__tests/Peer.test.d.ts +0 -2
  450. package/dist/types/src/auth/__tests/Peer.test.d.ts.map +0 -1
  451. package/dist/types/src/auth/__tests/SessionManager.test.d.ts +0 -2
  452. package/dist/types/src/auth/__tests/SessionManager.test.d.ts.map +0 -1
  453. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts +0 -2
  454. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts.map +0 -1
  455. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts +0 -2
  456. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts.map +0 -1
  457. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts +0 -2
  458. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts.map +0 -1
  459. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts +0 -2
  460. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts.map +0 -1
  461. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts +0 -2
  462. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts.map +0 -1
  463. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts +0 -2
  464. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts.map +0 -1
  465. package/dist/types/src/auth/utils/certificateHelpers.d.ts +0 -26
  466. package/dist/types/src/auth/utils/certificateHelpers.d.ts.map +0 -1
  467. package/dist/types/src/compat/__tests/BSM.test.d.ts +0 -2
  468. package/dist/types/src/compat/__tests/BSM.test.d.ts.map +0 -1
  469. package/dist/types/src/compat/__tests/ECIES.test.d.ts +0 -2
  470. package/dist/types/src/compat/__tests/ECIES.test.d.ts.map +0 -1
  471. package/dist/types/src/compat/__tests/HD.test.d.ts +0 -2
  472. package/dist/types/src/compat/__tests/HD.test.d.ts.map +0 -1
  473. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts +0 -2
  474. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts.map +0 -1
  475. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts +0 -11
  476. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts.map +0 -1
  477. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts +0 -2
  478. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts.map +0 -1
  479. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts +0 -2
  480. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts.map +0 -1
  481. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts +0 -2
  482. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts.map +0 -1
  483. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts +0 -2
  484. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts.map +0 -1
  485. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts +0 -2
  486. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts.map +0 -1
  487. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts +0 -2
  488. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts.map +0 -1
  489. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts +0 -8
  490. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts.map +0 -1
  491. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts +0 -8
  492. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts.map +0 -1
  493. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts +0 -2
  494. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts.map +0 -1
  495. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts +0 -2
  496. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts.map +0 -1
  497. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts +0 -2
  498. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts.map +0 -1
  499. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts +0 -2
  500. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts.map +0 -1
  501. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts +0 -15
  502. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts.map +0 -1
  503. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts +0 -2
  504. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts.map +0 -1
  505. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts +0 -2
  506. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts.map +0 -1
  507. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts +0 -2
  508. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts.map +0 -1
  509. package/dist/types/src/primitives/__tests/DRBG.test.d.ts +0 -2
  510. package/dist/types/src/primitives/__tests/DRBG.test.d.ts.map +0 -1
  511. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts +0 -10
  512. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts.map +0 -1
  513. package/dist/types/src/primitives/__tests/ECDH.test.d.ts +0 -2
  514. package/dist/types/src/primitives/__tests/ECDH.test.d.ts.map +0 -1
  515. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts +0 -2
  516. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts.map +0 -1
  517. package/dist/types/src/primitives/__tests/HMAC.test.d.ts +0 -2
  518. package/dist/types/src/primitives/__tests/HMAC.test.d.ts.map +0 -1
  519. package/dist/types/src/primitives/__tests/Hash.test.d.ts +0 -2
  520. package/dist/types/src/primitives/__tests/Hash.test.d.ts.map +0 -1
  521. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts +0 -68
  522. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts.map +0 -1
  523. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts +0 -2
  524. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts.map +0 -1
  525. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts +0 -2
  526. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts.map +0 -1
  527. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts +0 -2
  528. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts.map +0 -1
  529. package/dist/types/src/primitives/__tests/Random.test.d.ts +0 -2
  530. package/dist/types/src/primitives/__tests/Random.test.d.ts.map +0 -1
  531. package/dist/types/src/primitives/__tests/Reader.test.d.ts +0 -2
  532. package/dist/types/src/primitives/__tests/Reader.test.d.ts.map +0 -1
  533. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts +0 -2
  534. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts.map +0 -1
  535. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts +0 -2
  536. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts.map +0 -1
  537. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts +0 -2
  538. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts.map +0 -1
  539. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts +0 -20
  540. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts.map +0 -1
  541. package/dist/types/src/primitives/__tests/Writer.test.d.ts +0 -2
  542. package/dist/types/src/primitives/__tests/Writer.test.d.ts.map +0 -1
  543. package/dist/types/src/primitives/__tests/bug-31.test.d.ts +0 -2
  544. package/dist/types/src/primitives/__tests/bug-31.test.d.ts.map +0 -1
  545. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts +0 -3
  546. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts.map +0 -1
  547. package/dist/types/src/primitives/__tests/utils.test.d.ts +0 -2
  548. package/dist/types/src/primitives/__tests/utils.test.d.ts.map +0 -1
  549. package/dist/types/src/script/__tests/Script.test.d.ts +0 -2
  550. package/dist/types/src/script/__tests/Script.test.d.ts.map +0 -1
  551. package/dist/types/src/script/__tests/Spend.test.d.ts +0 -2
  552. package/dist/types/src/script/__tests/Spend.test.d.ts.map +0 -1
  553. package/dist/types/src/script/__tests/SpendComplex.test.d.ts +0 -2
  554. package/dist/types/src/script/__tests/SpendComplex.test.d.ts.map +0 -1
  555. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts +0 -3
  556. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts.map +0 -1
  557. package/dist/types/src/script/__tests/script.valid.vectors.d.ts +0 -3
  558. package/dist/types/src/script/__tests/script.valid.vectors.d.ts.map +0 -1
  559. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts +0 -3
  560. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts.map +0 -1
  561. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts +0 -2
  562. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts.map +0 -1
  563. package/dist/types/src/totp/__tests/totp.test.d.ts +0 -2
  564. package/dist/types/src/totp/__tests/totp.test.d.ts.map +0 -1
  565. package/dist/types/src/transaction/__tests/Beef.test.d.ts +0 -2
  566. package/dist/types/src/transaction/__tests/Beef.test.d.ts.map +0 -1
  567. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts +0 -2
  568. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts.map +0 -1
  569. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts +0 -2
  570. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts.map +0 -1
  571. package/dist/types/src/transaction/__tests/Transaction.test.d.ts +0 -2
  572. package/dist/types/src/transaction/__tests/Transaction.test.d.ts.map +0 -1
  573. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts +0 -6
  574. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts.map +0 -1
  575. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts +0 -6
  576. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts.map +0 -1
  577. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts +0 -5
  578. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts.map +0 -1
  579. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts +0 -3
  580. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts.map +0 -1
  581. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts +0 -3
  582. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts.map +0 -1
  583. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts +0 -2
  584. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts.map +0 -1
  585. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts +0 -2
  586. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts.map +0 -1
  587. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts +0 -2
  588. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts.map +0 -1
  589. package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts +0 -25
  590. package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts.map +0 -1
  591. package/dist/types/src/wallet/WalletSigner.d.ts +0 -110
  592. package/dist/types/src/wallet/WalletSigner.d.ts.map +0 -1
  593. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts +0 -2
  594. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts.map +0 -1
  595. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts +0 -2
  596. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts.map +0 -1
  597. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts +0 -2
  598. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts.map +0 -1
  599. package/dist/types/src/wallet/createActionSdk.d.ts +0 -8
  600. package/dist/types/src/wallet/createActionSdk.d.ts.map +0 -1
  601. package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts +0 -94
  602. package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts.map +0 -1
  603. package/dist/types/src/wallet/sdk/CertOps.d.ts +0 -63
  604. package/dist/types/src/wallet/sdk/CertOps.d.ts.map +0 -1
  605. package/dist/types/src/wallet/sdk/Certificate.d.ts +0 -77
  606. package/dist/types/src/wallet/sdk/Certificate.d.ts.map +0 -1
  607. package/dist/types/src/wallet/sdk/KeyDeriver.d.ts +0 -128
  608. package/dist/types/src/wallet/sdk/KeyDeriver.d.ts.map +0 -1
  609. package/dist/types/src/wallet/sdk/ProtoWallet.d.ts +0 -30
  610. package/dist/types/src/wallet/sdk/ProtoWallet.d.ts.map +0 -1
  611. package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts +0 -102
  612. package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts.map +0 -1
  613. package/dist/types/src/wallet/sdk/WERR_errors.d.ts +0 -84
  614. package/dist/types/src/wallet/sdk/WERR_errors.d.ts.map +0 -1
  615. package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts +0 -1036
  616. package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts.map +0 -1
  617. package/dist/types/src/wallet/sdk/WalletCrypto.d.ts +0 -31
  618. package/dist/types/src/wallet/sdk/WalletCrypto.d.ts.map +0 -1
  619. package/dist/types/src/wallet/sdk/WalletError.d.ts +0 -46
  620. package/dist/types/src/wallet/sdk/WalletError.d.ts.map +0 -1
  621. package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts +0 -293
  622. package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts.map +0 -1
  623. package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts +0 -48
  624. package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts.map +0 -1
  625. package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts +0 -296
  626. package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts.map +0 -1
  627. package/dist/types/src/wallet/sdk/index.d.ts +0 -15
  628. package/dist/types/src/wallet/sdk/index.d.ts.map +0 -1
  629. package/dist/types/src/wallet/sdk/types.d.ts +0 -56
  630. package/dist/types/src/wallet/sdk/types.d.ts.map +0 -1
  631. package/dist/types/src/wallet/sdk/validationHelpers.d.ts +0 -301
  632. package/dist/types/src/wallet/sdk/validationHelpers.d.ts.map +0 -1
  633. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts +0 -2
  634. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts.map +0 -1
  635. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts +0 -5
  636. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts.map +0 -1
  637. package/dist/types/src/wallet/utilityHelpers.d.ts +0 -142
  638. package/dist/types/src/wallet/utilityHelpers.d.ts.map +0 -1
  639. package/dist/types/src/wallet/validationHelpers.d.ts +0 -301
  640. package/dist/types/src/wallet/validationHelpers.d.ts.map +0 -1
  641. package/docs/README.md +0 -21
  642. /package/docs/{auth.md → reference/auth.md} +0 -0
  643. /package/docs/{compat.md → reference/compat.md} +0 -0
  644. /package/docs/{identity.md → reference/identity.md} +0 -0
  645. /package/docs/{kvstore.md → reference/kvstore.md} +0 -0
  646. /package/docs/{messages.md → reference/messages.md} +0 -0
  647. /package/docs/{overlay-tools.md → reference/overlay-tools.md} +0 -0
  648. /package/docs/{primitives.md → reference/primitives.md} +0 -0
  649. /package/docs/{registry.md → reference/registry.md} +0 -0
  650. /package/docs/{script.md → reference/script.md} +0 -0
  651. /package/docs/{storage.md → reference/storage.md} +0 -0
  652. /package/docs/{totp.md → reference/totp.md} +0 -0
  653. /package/docs/{transaction.md → reference/transaction.md} +0 -0
  654. /package/docs/{wallet.md → reference/wallet.md} +0 -0
@@ -0,0 +1,575 @@
1
+ **Duration**: 75 minutes
2
+ **Prerequisites**: Completed "Transaction Types and Data" tutorial, Node.js, basic TypeScript knowledge
3
+
4
+ ## Learning Goals
5
+ - Master multi-input/multi-output transaction construction
6
+ - Implement advanced fee calculation and optimization strategies
7
+ - Handle change outputs efficiently
8
+ - Use advanced `WalletClient` options for transaction control
9
+ - Implement UTXO selection and management strategies
10
+ - Handle complex transaction scenarios and error recovery
11
+
12
+ ## Introduction
13
+
14
+ This tutorial builds on your knowledge of basic `WalletClient` usage to explore advanced transaction construction patterns. You'll learn how to create sophisticated transactions that handle multiple inputs and outputs, optimize fees, and manage UTXOs effectively for production applications.
15
+
16
+ ## Prerequisites
17
+
18
+ - Complete the [Transaction Types and Data](./transaction-types.md) tutorial
19
+ - Have a BRC-100 compliant wallet (such as the [MetaNet Desktop Wallet](https://metanet.bsvb.tech/)) installed and configured
20
+ - Some BSV in your wallet
21
+ - Understanding of Bitcoin transaction fundamentals
22
+
23
+ ## Advanced `WalletClient` Options
24
+
25
+ The `createAction` method supports many advanced options through the `options` parameter. Let's explore these capabilities:
26
+
27
+ ```typescript
28
+ import { WalletClient } from '@bsv/sdk'
29
+
30
+ async function exploreAdvancedOptions() {
31
+ try {
32
+ const wallet = new WalletClient('auto', 'localhost')
33
+
34
+ // Authenticate with the wallet
35
+ const { authenticated } = await wallet.isAuthenticated()
36
+ if (!authenticated) {
37
+ await wallet.waitForAuthentication()
38
+ }
39
+
40
+ // Create a transaction with advanced options
41
+ const actionResult = await wallet.createAction({
42
+ description: 'Advanced options demonstration',
43
+ outputs: [
44
+ {
45
+ satoshis: 100,
46
+ lockingScript: '006a0e416476616e636564206f7074696f6e73', // OP_RETURN "Advanced options"
47
+ outputDescription: 'Advanced options demo'
48
+ }
49
+ ],
50
+ options: {
51
+ // Don't automatically sign and process - gives you more control
52
+ signAndProcess: false,
53
+
54
+ // Accept delayed broadcast for better fee optimization
55
+ acceptDelayedBroadcast: true,
56
+
57
+ // Return only the transaction ID to save bandwidth
58
+ returnTXIDOnly: false,
59
+
60
+ // Don't send the transaction immediately
61
+ noSend: true,
62
+
63
+ // Randomize output order for privacy
64
+ randomizeOutputs: true
65
+ }
66
+ })
67
+
68
+ console.log('Transaction created with advanced options:')
69
+ console.log('Signable transaction available for manual processing')
70
+
71
+ if (actionResult.signableTransaction) {
72
+ console.log('Transaction reference:', actionResult.signableTransaction.reference)
73
+ console.log('Transaction ready for signing')
74
+ }
75
+
76
+ } catch (error: any) {
77
+ console.error('Error:', error)
78
+
79
+ // Provide helpful troubleshooting
80
+ if (error.message?.includes('unlockingScript')) {
81
+ console.log('\nTroubleshooting: When specifying custom inputs, you must provide:')
82
+ console.log('- unlockingScript (valid hexadecimal string, not empty)')
83
+ console.log('- unlockingScriptLength (typically 107 for P2PKH)')
84
+ console.log('\nRecommendation: Let the wallet auto-select inputs by omitting the inputs array')
85
+ }
86
+ }
87
+ }
88
+
89
+ exploreAdvancedOptions().catch(console.error)
90
+ ```
91
+
92
+ ## Multi-Input Transaction Construction
93
+
94
+ Multi-input transactions combine multiple UTXOs to fund larger outputs. The BSV TypeScript SDK provides two approaches:
95
+
96
+ 1. **Automatic Input Selection (Recommended)**: Let the wallet automatically select UTXOs by creating outputs that require more satoshis than any single UTXO can provide.
97
+
98
+ 2. **Manual Input Specification (Advanced)**: Explicitly specify which UTXOs to use as inputs. This requires providing complete unlocking script information and is typically only needed for specialized use cases.
99
+
100
+ ```typescript
101
+ import { WalletClient } from '@bsv/sdk'
102
+
103
+ async function createMultiInputTransaction() {
104
+ try {
105
+ const wallet = new WalletClient('auto', 'localhost')
106
+
107
+ const { authenticated } = await wallet.isAuthenticated()
108
+ if (!authenticated) {
109
+ await wallet.waitForAuthentication()
110
+ }
111
+
112
+ // First, let's see what UTXOs we have available (basket name is 'bsv-tutorial' for consistency with previous tutorials, where we created some outputs)
113
+ const { outputs } = await wallet.listOutputs({
114
+ basket: 'bsv-tutorial',
115
+ include: 'locking scripts',
116
+ limit: 10
117
+ })
118
+
119
+ console.log(`Found ${outputs.length} available outputs:`)
120
+ outputs.forEach((output, index) => {
121
+ console.log(` ${index + 1}. ${output.outpoint}: ${output.satoshis} satoshis (spendable: ${output.spendable})`)
122
+ })
123
+
124
+ // Check if we have enough UTXOs for a multi-input transaction
125
+ const spendableOutputs = outputs.filter(output => output.spendable && output.satoshis >= 100)
126
+
127
+ if (spendableOutputs.length < 2) {
128
+ console.log('Need at least 2 spendable outputs for this demo')
129
+ return
130
+ }
131
+
132
+ // Method 1: Automatic Input Selection (Recommended)
133
+
134
+ // Create a transaction that requires multiple inputs by using a large output amount
135
+ // The wallet will automatically select multiple UTXOs if needed
136
+ const totalAvailable = spendableOutputs.reduce((sum, output) => sum + output.satoshis, 0)
137
+ const largeAmount = Math.min(1500, Math.floor(totalAvailable * 0.8)) // Use 80% of available funds
138
+
139
+ console.log(`Creating transaction requiring ${largeAmount} satoshis (should trigger multi-input selection)`)
140
+
141
+ const actionResult = await wallet.createAction({
142
+ description: 'Multi-input transaction example',
143
+ outputs: [
144
+ {
145
+ satoshis: largeAmount,
146
+ lockingScript: '006a0c4d756c74692d696e707574', // OP_RETURN "Multi-input"
147
+ outputDescription: 'Multi-input demo output'
148
+ }
149
+ ]
150
+ // No inputs specified - let wallet auto-select
151
+ })
152
+
153
+ console.log('Transaction created successfully!')
154
+ console.log('Transaction ID:', actionResult.txid)
155
+ console.log(`View on explorer: https://whatsonchain.com/tx/${actionResult.txid}`)
156
+
157
+ // Method 2: Manual Input Specification (Advanced)
158
+ // Manual input specification requires unlocking script details
159
+ // This is commented out as it requires proper unlocking script construction
160
+ /*
161
+ const manualActionResult = await wallet.createAction({
162
+ description: 'Manual multi-input transaction',
163
+ inputs: [
164
+ {
165
+ outpoint: spendableOutputs[0].outpoint,
166
+ unlockingScript: '00', // Placeholder - would need actual unlocking script
167
+ unlockingScriptLength: 107, // Typical P2PKH unlocking script length
168
+ inputDescription: 'First manually selected input'
169
+ },
170
+ {
171
+ outpoint: spendableOutputs[1].outpoint,
172
+ unlockingScript: '00', // Placeholder - would need actual unlocking script
173
+ unlockingScriptLength: 107, // Typical P2PKH unlocking script length
174
+ inputDescription: 'Second manually selected input'
175
+ }
176
+ ],
177
+ outputs: [
178
+ {
179
+ satoshis: 150,
180
+ lockingScript: '006a104d616e75616c2d6d756c74692d696e707574', // OP_RETURN "Manual-multi-input"
181
+ outputDescription: 'Manual multi-input demo output'
182
+ }
183
+ ]
184
+ })
185
+ */
186
+
187
+ } catch (error: any) {
188
+ console.error('Error:', error)
189
+
190
+ // Provide helpful troubleshooting
191
+ if (error.message?.includes('unlockingScript')) {
192
+ console.log('\nTroubleshooting: When specifying custom inputs, you must provide:')
193
+ console.log('- unlockingScript (valid hexadecimal string, not empty)')
194
+ console.log('- unlockingScriptLength (typically 107 for P2PKH)')
195
+ console.log('\nRecommendation: Let the wallet auto-select inputs by omitting the inputs array')
196
+ }
197
+ }
198
+ }
199
+
200
+ createMultiInputTransaction().catch(console.error)
201
+ ```
202
+
203
+ ## Batch Processing Multiple Payments
204
+
205
+ For businesses and applications that need to send multiple payments efficiently, batch processing reduces fees and blockchain footprint:
206
+
207
+ ```typescript
208
+ import { WalletClient } from '@bsv/sdk'
209
+
210
+ async function createBatchPayment() {
211
+ try {
212
+ const wallet = new WalletClient('auto', 'localhost')
213
+
214
+ const { authenticated } = await wallet.isAuthenticated()
215
+ if (!authenticated) {
216
+ await wallet.waitForAuthentication()
217
+ }
218
+
219
+ // Simulate multiple payment recipients
220
+ const payments = [
221
+ { amount: 100, description: 'Payment to Alice', data: 'Invoice #001' },
222
+ { amount: 150, description: 'Payment to Bob', data: 'Invoice #002' },
223
+ { amount: 200, description: 'Payment to Carol', data: 'Invoice #003' }
224
+ ]
225
+
226
+ // Create outputs for each payment
227
+ const outputs = payments.map((payment, index) => {
228
+ // Create OP_RETURN with payment data
229
+ const dataHex = Buffer.from(payment.data).toString('hex')
230
+ const dataLength = Buffer.from(payment.data).length
231
+ const dataLengthHex = dataLength.toString(16).padStart(2, '0')
232
+ const lockingScript = `006a${dataLengthHex}${dataHex}`
233
+
234
+ return {
235
+ satoshis: payment.amount,
236
+ lockingScript: lockingScript,
237
+ outputDescription: payment.description,
238
+ basket: 'payments', // Organize outputs in a specific basket
239
+ tags: ['batch-payment', `invoice-${index + 1}`] // Tag for easy tracking
240
+ }
241
+ })
242
+
243
+ // Create the batch transaction
244
+ const actionResult = await wallet.createAction({
245
+ description: 'Batch payment transaction',
246
+ outputs: outputs,
247
+ labels: ['batch-processing', 'business-payments'], // Labels for transaction tracking
248
+ options: {
249
+ randomizeOutputs: false // Keep payment order for accounting
250
+ }
251
+ })
252
+
253
+ if (actionResult.txid) {
254
+ console.log(`Batch payment transaction created: ${actionResult.txid}`)
255
+ console.log(`Processed ${payments.length} payments in a single transaction`)
256
+ console.log(`Total amount: ${payments.reduce((sum, p) => sum + p.amount, 0)} satoshis`)
257
+ console.log(`View on explorer: https://whatsonchain.com/tx/${actionResult.txid}`)
258
+ }
259
+
260
+ } catch (error: unknown) {
261
+ console.error('Error:', error)
262
+ }
263
+ }
264
+
265
+ createBatchPayment().catch(console.error)
266
+ ```
267
+
268
+ ## Advanced UTXO Management with Baskets
269
+
270
+ Baskets provide powerful UTXO organization capabilities. Here's how to use them for advanced transaction patterns:
271
+
272
+ ```typescript
273
+ import { WalletClient } from '@bsv/sdk'
274
+
275
+ async function advancedBasketManagement() {
276
+ try {
277
+ const wallet = new WalletClient('auto', 'localhost')
278
+
279
+ const { authenticated } = await wallet.isAuthenticated()
280
+ if (!authenticated) {
281
+ await wallet.waitForAuthentication()
282
+ }
283
+
284
+ // Create outputs in different baskets for different purposes
285
+ console.log('Creating specialized UTXO baskets...')
286
+
287
+ const actionResult = await wallet.createAction({
288
+ description: 'UTXO organization with baskets',
289
+ outputs: [
290
+ {
291
+ satoshis: 500,
292
+ lockingScript: '006a0c48696768207072696f72697479', // OP_RETURN "High priority"
293
+ outputDescription: 'High priority reserve',
294
+ basket: 'high-priority',
295
+ tags: ['reserve', 'urgent-use'],
296
+ customInstructions: 'Reserved for urgent transactions'
297
+ },
298
+ {
299
+ satoshis: 300,
300
+ lockingScript: '006a0d4d656469756d207072696f72697479', // OP_RETURN "Medium priority"
301
+ outputDescription: 'Medium priority operations',
302
+ basket: 'medium-priority',
303
+ tags: ['operations', 'daily-use']
304
+ },
305
+ {
306
+ satoshis: 200,
307
+ lockingScript: '006a0b4c6f77207072696f72697479', // OP_RETURN "Low priority"
308
+ outputDescription: 'Low priority batch',
309
+ basket: 'low-priority',
310
+ tags: ['batch', 'bulk-operations']
311
+ }
312
+ ]
313
+ })
314
+
315
+ if (actionResult.txid) {
316
+ console.log(`Basket organization transaction: ${actionResult.txid}`)
317
+ console.log('Note: OP_RETURN outputs are unspendable by design (for data storage)')
318
+ console.log('Waiting for wallet to process new outputs...')
319
+ // Give the wallet a moment to process the new outputs
320
+ await new Promise(resolve => setTimeout(resolve, 2000))
321
+ }
322
+
323
+ // Now let's examine our organized UTXOs
324
+ console.log('\nExamining basket organization...')
325
+ console.log('Note: OP_RETURN outputs show spendable: false because they are data-only outputs')
326
+ const baskets = ['high-priority', 'medium-priority', 'low-priority']
327
+
328
+ for (const basketName of baskets) {
329
+ const { outputs, totalOutputs } = await wallet.listOutputs({
330
+ basket: basketName,
331
+ includeTags: true,
332
+ includeCustomInstructions: true,
333
+ limit: 10
334
+ })
335
+
336
+ console.log(`\n${basketName.toUpperCase()} Basket:`)
337
+ console.log(` Total outputs: ${totalOutputs}`)
338
+
339
+ if (totalOutputs === 0) {
340
+ console.log(` Note: No outputs found. This could be because:`)
341
+ console.log(` - Outputs need confirmation time`)
342
+ console.log(` - Wallet needs time to process new baskets`)
343
+ console.log(` - OP_RETURN outputs might not be tracked as spendable UTXOs`)
344
+ }
345
+
346
+ outputs.forEach((output, index) => {
347
+ console.log(` Output ${index + 1}:`)
348
+ console.log(` Outpoint: ${output.outpoint}`)
349
+ console.log(` Amount: ${output.satoshis} satoshis`)
350
+ console.log(` Spendable: ${output.spendable}`)
351
+ if (output.tags) {
352
+ console.log(` Tags: ${output.tags.join(', ')}`)
353
+ }
354
+ if (output.customInstructions) {
355
+ console.log(` Instructions: ${output.customInstructions}`)
356
+ }
357
+ })
358
+ }
359
+
360
+ // Add processing delay
361
+ await new Promise(resolve => setTimeout(resolve, 5000));
362
+
363
+ } catch (error: unknown) {
364
+ console.error('Error:', error)
365
+ }
366
+ }
367
+
368
+ advancedBasketManagement().catch(console.error)
369
+ ```
370
+
371
+ ## Transaction Chaining and Dependencies
372
+
373
+ Sometimes you need to create transactions that depend on previous ones. Here's how to handle transaction chaining:
374
+
375
+ ```typescript
376
+ import { WalletClient } from '@bsv/sdk'
377
+
378
+ async function createTransactionChain() {
379
+ try {
380
+ const wallet = new WalletClient('auto', 'localhost')
381
+
382
+ const { authenticated } = await wallet.isAuthenticated()
383
+ if (!authenticated) {
384
+ await wallet.waitForAuthentication()
385
+ }
386
+
387
+ console.log('Creating transaction chain...')
388
+ console.log('Transaction chaining allows you to create a series of transactions that depend on each other.')
389
+ console.log('This is useful for scenarios where you need to ensure that a transaction is only processed after a previous one has been confirmed.')
390
+ console.log('In this example, we will create two transactions: the first one creates an output, and the second one spends that output.')
391
+
392
+ // First transaction - creates outputs for the chain
393
+ const firstTx = await wallet.createAction({
394
+ description: 'Chain starter transaction',
395
+ outputs: [
396
+ {
397
+ satoshis: 400,
398
+ lockingScript: '006a0d436861696e207374617274657220', // OP_RETURN "Chain starter"
399
+ outputDescription: 'Chain starter output',
400
+ basket: 'chain-demo',
401
+ tags: ['chain', 'step-1']
402
+ }
403
+ ],
404
+ options: {
405
+ acceptDelayedBroadcast: true // Allow some delay for better fee optimization
406
+ }
407
+ })
408
+
409
+ if (!firstTx.txid) {
410
+ console.log('First transaction failed')
411
+ return
412
+ }
413
+
414
+ console.log(`First transaction: ${firstTx.txid}`)
415
+
416
+ // Wait a moment for the transaction to be processed
417
+ await new Promise(resolve => setTimeout(resolve, 2000))
418
+
419
+ // Second transaction - demonstrates chaining with sendWith option
420
+ // Note: We use automatic input selection rather than manual specification
421
+ // Manual input specification requires unlockingScript and unlockingScriptLength
422
+ // which adds complexity for tutorial purposes
423
+ const secondTx = await wallet.createAction({
424
+ description: 'Chain continuation transaction',
425
+ outputs: [
426
+ {
427
+ satoshis: 150,
428
+ lockingScript: '006a0c436861696e20636f6e74696e756174696f6e', // OP_RETURN "Chain continuation"
429
+ outputDescription: 'Chain continuation output',
430
+ basket: 'chain-demo',
431
+ tags: ['chain', 'step-2']
432
+ }
433
+ ],
434
+ options: {
435
+ sendWith: [firstTx.txid] // Ensure this transaction is sent with the first one
436
+ }
437
+ })
438
+
439
+ if (secondTx.txid) {
440
+ console.log(`Second transaction: ${secondTx.txid}`)
441
+ console.log('Transaction chain completed successfully')
442
+ }
443
+
444
+ } catch (error: unknown) {
445
+ console.error('Error in transaction chain:', error)
446
+ }
447
+ }
448
+
449
+ createTransactionChain().catch(console.error)
450
+ ```
451
+
452
+
453
+ ## Performance Optimization Strategies
454
+
455
+ For high-throughput applications, consider these optimization techniques:
456
+
457
+ ```typescript
458
+ import { WalletClient } from '@bsv/sdk'
459
+
460
+ async function optimizedTransactionPatterns() {
461
+ try {
462
+ const wallet = new WalletClient('auto', 'localhost')
463
+
464
+ const { authenticated } = await wallet.isAuthenticated()
465
+ if (!authenticated) {
466
+ await wallet.waitForAuthentication()
467
+ }
468
+
469
+ // Strategy 1: Pre-allocate UTXOs for different purposes
470
+ console.log('Pre-allocating UTXOs for optimal performance...')
471
+
472
+ const allocationTx = await wallet.createAction({
473
+ description: 'UTXO pre-allocation for performance',
474
+ outputs: [
475
+ // Create multiple small UTXOs for frequent operations
476
+ ...Array(5).fill(null).map((_, i) => ({
477
+ satoshis: 200,
478
+ lockingScript: `006a0f507265616c6c6f636174656420${i.toString(16).padStart(2, '0')}`, // "Preallocated" + index
479
+ outputDescription: `Pre-allocated UTXO ${i + 1}`,
480
+ basket: 'pre-allocated',
481
+ tags: ['performance', 'ready-to-use']
482
+ }))
483
+ ],
484
+ options: {
485
+ acceptDelayedBroadcast: true
486
+ }
487
+ })
488
+
489
+ if (allocationTx.txid) {
490
+ console.log(`Pre-allocation transaction: ${allocationTx.txid}`)
491
+ }
492
+
493
+ // Strategy 2: Batch multiple operations efficiently
494
+ await new Promise(resolve => setTimeout(resolve, 3000))
495
+
496
+ const operations = [
497
+ { type: 'data', content: 'Operation 1' },
498
+ { type: 'data', content: 'Operation 2' },
499
+ { type: 'data', content: 'Operation 3' }
500
+ ]
501
+
502
+ const batchOutputs = operations.map((op, index) => {
503
+ const dataHex = Buffer.from(op.content).toString('hex')
504
+ const dataLength = Buffer.from(op.content).length
505
+ const dataLengthHex = dataLength.toString(16).padStart(2, '0')
506
+
507
+ return {
508
+ satoshis: 100,
509
+ lockingScript: `006a${dataLengthHex}${dataHex}`,
510
+ outputDescription: `Batch operation ${index + 1}`,
511
+ basket: 'operations',
512
+ tags: ['batch', `op-${index + 1}`]
513
+ }
514
+ })
515
+
516
+ // Use pre-allocated UTXOs for the batch
517
+ const { outputs: preAllocated } = await wallet.listOutputs({
518
+ basket: 'pre-allocated',
519
+ limit: 3
520
+ })
521
+
522
+ console.log(`Found ${preAllocated.length} pre-allocated UTXOs`)
523
+
524
+ if (preAllocated.length > 0) {
525
+ // Let the wallet automatically select inputs instead of manual specification
526
+ const batchTx = await wallet.createAction({
527
+ description: 'Optimized batch operation',
528
+ outputs: batchOutputs,
529
+ options: {
530
+ randomizeOutputs: false, // Maintain order for processing
531
+ acceptDelayedBroadcast: true
532
+ }
533
+ })
534
+
535
+ if (batchTx.txid) {
536
+ console.log(`Optimized batch transaction: ${batchTx.txid}`)
537
+ console.log(`Processed ${operations.length} operations efficiently`)
538
+ }
539
+ }
540
+
541
+ } catch (error: unknown) {
542
+ console.error('Optimization error:', error)
543
+ }
544
+ }
545
+
546
+ optimizedTransactionPatterns().catch(console.error)
547
+ ```
548
+
549
+
550
+
551
+ ## Conclusion
552
+
553
+ You've now mastered advanced transaction construction with the BSV TypeScript SDK's `WalletClient`. You can:
554
+
555
+ - Create sophisticated multi-input/multi-output transactions
556
+ - Implement robust error handling and retry strategies
557
+ - Optimize transaction patterns for performance
558
+ - Use advanced `WalletClient` features like baskets, tags, and options
559
+ - Handle complex scenarios like transaction chaining and batch processing
560
+
561
+ These techniques enable you to build production-ready applications that efficiently manage Bitcoin transactions while maintaining reliability and performance.
562
+
563
+ ## Next Steps
564
+
565
+ - Review the [Transaction Signing Methods](../guides/transaction-signing-methods.md) for custom signing scenarios
566
+ - Check out specialized tutorials for your specific use case
567
+
568
+ - Advanced transaction construction requires robust error handling for production applications. For comprehensive coverage of error handling patterns, retry mechanisms, and recovery strategies, see the dedicated [Error Handling Tutorial](./error-handling.md).
569
+
570
+
571
+ ## Additional Resources
572
+
573
+ - [Wallet Reference](../reference/wallet.md)
574
+ - [BSV Blockchain Documentation](https://docs.bsvblockchain.org/)
575
+ - [MetaNet Desktop Wallet](https://metanet.bsvb.tech/)