@bsv/sdk 1.6.9 → 1.6.10

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 (647) hide show
  1. package/README.md +9 -4
  2. package/dist/cjs/package.json +4 -2
  3. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  4. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  5. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  6. package/docs/concepts/beef.md +84 -0
  7. package/docs/concepts/chain-tracking.md +122 -0
  8. package/docs/concepts/decentralized-identity.md +184 -0
  9. package/docs/concepts/fees.md +217 -0
  10. package/docs/concepts/identity-certificates.md +255 -0
  11. package/docs/concepts/index.md +62 -0
  12. package/docs/concepts/key-management.md +176 -0
  13. package/docs/concepts/script-templates.md +163 -0
  14. package/docs/concepts/sdk-philosophy.md +72 -0
  15. package/docs/concepts/signatures.md +179 -0
  16. package/docs/concepts/spv-verification.md +106 -0
  17. package/docs/concepts/transaction-encoding.md +148 -0
  18. package/docs/concepts/transaction-structure.md +63 -0
  19. package/docs/concepts/trust-model.md +123 -0
  20. package/docs/concepts/verification.md +219 -0
  21. package/docs/concepts/wallet-integration.md +95 -0
  22. package/docs/guides/direct-transaction-creation.md +137 -0
  23. package/docs/guides/http-client-configuration.md +414 -0
  24. package/docs/guides/index.md +30 -0
  25. package/docs/guides/transaction-signing-methods.md +268 -0
  26. package/docs/index.md +74 -0
  27. package/docs/reference/arc-config.md +698 -0
  28. package/docs/reference/brc-100.md +33 -0
  29. package/docs/reference/configuration.md +829 -0
  30. package/docs/reference/debugging.md +700 -0
  31. package/docs/reference/errors.md +547 -0
  32. package/docs/reference/index.md +98 -0
  33. package/docs/reference/network-config.md +914 -0
  34. package/docs/reference/op-codes.md +306 -0
  35. package/docs/reference/transaction-signatures.md +94 -0
  36. package/docs/requirements.txt +3 -0
  37. package/docs/tutorials/advanced-transaction.md +575 -0
  38. package/docs/tutorials/aes-encryption.md +947 -0
  39. package/docs/tutorials/authfetch-tutorial.md +957 -0
  40. package/docs/tutorials/ecdh-key-exchange.md +547 -0
  41. package/docs/tutorials/elliptic-curve-fundamentals.md +603 -0
  42. package/docs/tutorials/error-handling.md +1215 -0
  43. package/docs/tutorials/first-transaction-low-level.md +204 -0
  44. package/docs/tutorials/first-transaction.md +278 -0
  45. package/docs/tutorials/hashes-and-hmacs.md +814 -0
  46. package/docs/tutorials/identity-management.md +702 -0
  47. package/docs/tutorials/index.md +182 -0
  48. package/docs/tutorials/key-management.md +536 -0
  49. package/docs/tutorials/protowallet-development.md +716 -0
  50. package/docs/tutorials/script-construction.md +690 -0
  51. package/docs/tutorials/spv-merkle-proofs.md +682 -0
  52. package/docs/tutorials/testnet-transactions-low-level.md +352 -0
  53. package/docs/tutorials/transaction-broadcasting.md +535 -0
  54. package/docs/tutorials/transaction-types.md +419 -0
  55. package/docs/tutorials/type-42.md +582 -0
  56. package/docs/tutorials/uhrp-storage.md +579 -0
  57. package/package.json +4 -2
  58. package/dist/cjs/src/auth/__tests/Peer.test.js +0 -446
  59. package/dist/cjs/src/auth/__tests/Peer.test.js.map +0 -1
  60. package/dist/cjs/src/auth/__tests/SessionManager.test.js +0 -69
  61. package/dist/cjs/src/auth/__tests/SessionManager.test.js.map +0 -1
  62. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js +0 -182
  63. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
  64. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
  65. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
  66. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
  67. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
  68. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js +0 -101
  69. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
  70. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
  71. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
  72. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js +0 -111
  73. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
  74. package/dist/cjs/src/auth/utils/certificateHelpers.js +0 -51
  75. package/dist/cjs/src/auth/utils/certificateHelpers.js.map +0 -1
  76. package/dist/cjs/src/compat/__tests/BSM.test.js +0 -69
  77. package/dist/cjs/src/compat/__tests/BSM.test.js.map +0 -1
  78. package/dist/cjs/src/compat/__tests/ECIES.test.js +0 -115
  79. package/dist/cjs/src/compat/__tests/ECIES.test.js.map +0 -1
  80. package/dist/cjs/src/compat/__tests/HD.test.js +0 -336
  81. package/dist/cjs/src/compat/__tests/HD.test.js.map +0 -1
  82. package/dist/cjs/src/compat/__tests/Mnemonic.test.js +0 -150
  83. package/dist/cjs/src/compat/__tests/Mnemonic.test.js.map +0 -1
  84. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js +0 -175
  85. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
  86. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js +0 -57
  87. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
  88. package/dist/cjs/src/messages/__tests/SignedMessage.test.js +0 -52
  89. package/dist/cjs/src/messages/__tests/SignedMessage.test.js.map +0 -1
  90. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
  91. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
  92. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
  93. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
  94. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
  95. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
  96. package/dist/cjs/src/primitives/__tests/AESGCM.test.js +0 -248
  97. package/dist/cjs/src/primitives/__tests/AESGCM.test.js.map +0 -1
  98. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js +0 -36
  99. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
  100. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js +0 -36
  101. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
  102. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
  103. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
  104. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js +0 -185
  105. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
  106. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
  107. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
  108. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
  109. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
  110. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js +0 -268
  111. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
  112. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
  113. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
  114. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js +0 -322
  115. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
  116. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js +0 -145
  117. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js.map +0 -1
  118. package/dist/cjs/src/primitives/__tests/DRBG.test.js +0 -22
  119. package/dist/cjs/src/primitives/__tests/DRBG.test.js.map +0 -1
  120. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js +0 -170
  121. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js.map +0 -1
  122. package/dist/cjs/src/primitives/__tests/ECDH.test.js +0 -34
  123. package/dist/cjs/src/primitives/__tests/ECDH.test.js.map +0 -1
  124. package/dist/cjs/src/primitives/__tests/ECDSA.test.js +0 -89
  125. package/dist/cjs/src/primitives/__tests/ECDSA.test.js.map +0 -1
  126. package/dist/cjs/src/primitives/__tests/HMAC.test.js +0 -60
  127. package/dist/cjs/src/primitives/__tests/HMAC.test.js.map +0 -1
  128. package/dist/cjs/src/primitives/__tests/Hash.test.js +0 -159
  129. package/dist/cjs/src/primitives/__tests/Hash.test.js.map +0 -1
  130. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js +0 -122
  131. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
  132. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js +0 -105
  133. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
  134. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js +0 -90
  135. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js.map +0 -1
  136. package/dist/cjs/src/primitives/__tests/PublicKey.test.js +0 -83
  137. package/dist/cjs/src/primitives/__tests/PublicKey.test.js.map +0 -1
  138. package/dist/cjs/src/primitives/__tests/Random.test.js +0 -19
  139. package/dist/cjs/src/primitives/__tests/Random.test.js.map +0 -1
  140. package/dist/cjs/src/primitives/__tests/Reader.test.js +0 -282
  141. package/dist/cjs/src/primitives/__tests/Reader.test.js.map +0 -1
  142. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js +0 -224
  143. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js.map +0 -1
  144. package/dist/cjs/src/primitives/__tests/Schnorr.test.js +0 -213
  145. package/dist/cjs/src/primitives/__tests/Schnorr.test.js.map +0 -1
  146. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js +0 -51
  147. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
  148. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
  149. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
  150. package/dist/cjs/src/primitives/__tests/Writer.test.js +0 -176
  151. package/dist/cjs/src/primitives/__tests/Writer.test.js.map +0 -1
  152. package/dist/cjs/src/primitives/__tests/bug-31.test.js +0 -32
  153. package/dist/cjs/src/primitives/__tests/bug-31.test.js.map +0 -1
  154. package/dist/cjs/src/primitives/__tests/sighash.vectors.js +0 -3506
  155. package/dist/cjs/src/primitives/__tests/sighash.vectors.js.map +0 -1
  156. package/dist/cjs/src/primitives/__tests/utils.test.js +0 -110
  157. package/dist/cjs/src/primitives/__tests/utils.test.js.map +0 -1
  158. package/dist/cjs/src/script/__tests/Script.test.js +0 -347
  159. package/dist/cjs/src/script/__tests/Script.test.js.map +0 -1
  160. package/dist/cjs/src/script/__tests/Spend.test.js +0 -282
  161. package/dist/cjs/src/script/__tests/Spend.test.js.map +0 -1
  162. package/dist/cjs/src/script/__tests/SpendComplex.test.js +0 -52
  163. package/dist/cjs/src/script/__tests/SpendComplex.test.js.map +0 -1
  164. package/dist/cjs/src/script/__tests/script.invalid.vectors.js +0 -2370
  165. package/dist/cjs/src/script/__tests/script.invalid.vectors.js.map +0 -1
  166. package/dist/cjs/src/script/__tests/script.valid.vectors.js +0 -1181
  167. package/dist/cjs/src/script/__tests/script.valid.vectors.js.map +0 -1
  168. package/dist/cjs/src/script/__tests/spend.valid.vectors.js +0 -2298
  169. package/dist/cjs/src/script/__tests/spend.valid.vectors.js.map +0 -1
  170. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js +0 -161
  171. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js.map +0 -1
  172. package/dist/cjs/src/totp/__tests/totp.test.js +0 -67
  173. package/dist/cjs/src/totp/__tests/totp.test.js.map +0 -1
  174. package/dist/cjs/src/transaction/__tests/Beef.test.js +0 -393
  175. package/dist/cjs/src/transaction/__tests/Beef.test.js.map +0 -1
  176. package/dist/cjs/src/transaction/__tests/MerklePath.test.js +0 -209
  177. package/dist/cjs/src/transaction/__tests/MerklePath.test.js.map +0 -1
  178. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
  179. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
  180. package/dist/cjs/src/transaction/__tests/Transaction.test.js +0 -1073
  181. package/dist/cjs/src/transaction/__tests/Transaction.test.js.map +0 -1
  182. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js +0 -7
  183. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js.map +0 -1
  184. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js +0 -11
  185. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
  186. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js +0 -7
  187. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
  188. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js +0 -230
  189. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
  190. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js +0 -296
  191. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
  192. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
  193. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
  194. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
  195. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
  196. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
  197. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
  198. package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js +0 -39
  199. package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js.map +0 -1
  200. package/dist/cjs/src/wallet/WalletSigner.js +0 -260
  201. package/dist/cjs/src/wallet/WalletSigner.js.map +0 -1
  202. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
  203. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
  204. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js +0 -114
  205. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
  206. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js +0 -475
  207. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
  208. package/dist/cjs/src/wallet/createActionSdk.js +0 -230
  209. package/dist/cjs/src/wallet/createActionSdk.js.map +0 -1
  210. package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js +0 -174
  211. package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js.map +0 -1
  212. package/dist/cjs/src/wallet/sdk/CertOps.js +0 -181
  213. package/dist/cjs/src/wallet/sdk/CertOps.js.map +0 -1
  214. package/dist/cjs/src/wallet/sdk/Certificate.js +0 -162
  215. package/dist/cjs/src/wallet/sdk/Certificate.js.map +0 -1
  216. package/dist/cjs/src/wallet/sdk/KeyDeriver.js +0 -176
  217. package/dist/cjs/src/wallet/sdk/KeyDeriver.js.map +0 -1
  218. package/dist/cjs/src/wallet/sdk/ProtoWallet.js +0 -75
  219. package/dist/cjs/src/wallet/sdk/ProtoWallet.js.map +0 -1
  220. package/dist/cjs/src/wallet/sdk/StorageSyncReader.js +0 -3
  221. package/dist/cjs/src/wallet/sdk/StorageSyncReader.js.map +0 -1
  222. package/dist/cjs/src/wallet/sdk/WERR_errors.js +0 -107
  223. package/dist/cjs/src/wallet/sdk/WERR_errors.js.map +0 -1
  224. package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js +0 -3
  225. package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js.map +0 -1
  226. package/dist/cjs/src/wallet/sdk/WalletCrypto.js +0 -171
  227. package/dist/cjs/src/wallet/sdk/WalletCrypto.js.map +0 -1
  228. package/dist/cjs/src/wallet/sdk/WalletError.js +0 -103
  229. package/dist/cjs/src/wallet/sdk/WalletError.js.map +0 -1
  230. package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js +0 -3
  231. package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js.map +0 -1
  232. package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js +0 -3
  233. package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js.map +0 -1
  234. package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js +0 -3
  235. package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js.map +0 -1
  236. package/dist/cjs/src/wallet/sdk/index.js +0 -31
  237. package/dist/cjs/src/wallet/sdk/index.js.map +0 -1
  238. package/dist/cjs/src/wallet/sdk/types.js +0 -11
  239. package/dist/cjs/src/wallet/sdk/types.js.map +0 -1
  240. package/dist/cjs/src/wallet/sdk/validationHelpers.js +0 -601
  241. package/dist/cjs/src/wallet/sdk/validationHelpers.js.map +0 -1
  242. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
  243. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
  244. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js +0 -579
  245. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
  246. package/dist/cjs/src/wallet/utilityHelpers.js +0 -305
  247. package/dist/cjs/src/wallet/utilityHelpers.js.map +0 -1
  248. package/dist/cjs/src/wallet/validationHelpers.js +0 -601
  249. package/dist/cjs/src/wallet/validationHelpers.js.map +0 -1
  250. package/dist/esm/src/auth/__tests/Peer.test.js +0 -448
  251. package/dist/esm/src/auth/__tests/Peer.test.js.map +0 -1
  252. package/dist/esm/src/auth/__tests/SessionManager.test.js +0 -69
  253. package/dist/esm/src/auth/__tests/SessionManager.test.js.map +0 -1
  254. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js +0 -182
  255. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
  256. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
  257. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
  258. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
  259. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
  260. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js +0 -101
  261. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
  262. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
  263. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
  264. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js +0 -111
  265. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
  266. package/dist/esm/src/auth/utils/certificateHelpers.js +0 -47
  267. package/dist/esm/src/auth/utils/certificateHelpers.js.map +0 -1
  268. package/dist/esm/src/compat/__tests/BSM.test.js +0 -69
  269. package/dist/esm/src/compat/__tests/BSM.test.js.map +0 -1
  270. package/dist/esm/src/compat/__tests/ECIES.test.js +0 -115
  271. package/dist/esm/src/compat/__tests/ECIES.test.js.map +0 -1
  272. package/dist/esm/src/compat/__tests/HD.test.js +0 -336
  273. package/dist/esm/src/compat/__tests/HD.test.js.map +0 -1
  274. package/dist/esm/src/compat/__tests/Mnemonic.test.js +0 -150
  275. package/dist/esm/src/compat/__tests/Mnemonic.test.js.map +0 -1
  276. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js +0 -175
  277. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
  278. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js +0 -57
  279. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
  280. package/dist/esm/src/messages/__tests/SignedMessage.test.js +0 -52
  281. package/dist/esm/src/messages/__tests/SignedMessage.test.js.map +0 -1
  282. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
  283. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
  284. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
  285. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
  286. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
  287. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
  288. package/dist/esm/src/primitives/__tests/AESGCM.test.js +0 -248
  289. package/dist/esm/src/primitives/__tests/AESGCM.test.js.map +0 -1
  290. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js +0 -36
  291. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
  292. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js +0 -36
  293. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
  294. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
  295. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
  296. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js +0 -185
  297. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
  298. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
  299. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
  300. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
  301. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
  302. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js +0 -268
  303. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
  304. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
  305. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
  306. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js +0 -322
  307. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
  308. package/dist/esm/src/primitives/__tests/Curve.unit.test.js +0 -145
  309. package/dist/esm/src/primitives/__tests/Curve.unit.test.js.map +0 -1
  310. package/dist/esm/src/primitives/__tests/DRBG.test.js +0 -22
  311. package/dist/esm/src/primitives/__tests/DRBG.test.js.map +0 -1
  312. package/dist/esm/src/primitives/__tests/DRBG.vectors.js +0 -170
  313. package/dist/esm/src/primitives/__tests/DRBG.vectors.js.map +0 -1
  314. package/dist/esm/src/primitives/__tests/ECDH.test.js +0 -34
  315. package/dist/esm/src/primitives/__tests/ECDH.test.js.map +0 -1
  316. package/dist/esm/src/primitives/__tests/ECDSA.test.js +0 -89
  317. package/dist/esm/src/primitives/__tests/ECDSA.test.js.map +0 -1
  318. package/dist/esm/src/primitives/__tests/HMAC.test.js +0 -60
  319. package/dist/esm/src/primitives/__tests/HMAC.test.js.map +0 -1
  320. package/dist/esm/src/primitives/__tests/Hash.test.js +0 -159
  321. package/dist/esm/src/primitives/__tests/Hash.test.js.map +0 -1
  322. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js +0 -122
  323. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
  324. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js +0 -105
  325. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
  326. package/dist/esm/src/primitives/__tests/PrivateKey.test.js +0 -90
  327. package/dist/esm/src/primitives/__tests/PrivateKey.test.js.map +0 -1
  328. package/dist/esm/src/primitives/__tests/PublicKey.test.js +0 -83
  329. package/dist/esm/src/primitives/__tests/PublicKey.test.js.map +0 -1
  330. package/dist/esm/src/primitives/__tests/Random.test.js +0 -19
  331. package/dist/esm/src/primitives/__tests/Random.test.js.map +0 -1
  332. package/dist/esm/src/primitives/__tests/Reader.test.js +0 -282
  333. package/dist/esm/src/primitives/__tests/Reader.test.js.map +0 -1
  334. package/dist/esm/src/primitives/__tests/ReductionContext.test.js +0 -223
  335. package/dist/esm/src/primitives/__tests/ReductionContext.test.js.map +0 -1
  336. package/dist/esm/src/primitives/__tests/Schnorr.test.js +0 -213
  337. package/dist/esm/src/primitives/__tests/Schnorr.test.js.map +0 -1
  338. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js +0 -51
  339. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
  340. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
  341. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
  342. package/dist/esm/src/primitives/__tests/Writer.test.js +0 -176
  343. package/dist/esm/src/primitives/__tests/Writer.test.js.map +0 -1
  344. package/dist/esm/src/primitives/__tests/bug-31.test.js +0 -32
  345. package/dist/esm/src/primitives/__tests/bug-31.test.js.map +0 -1
  346. package/dist/esm/src/primitives/__tests/sighash.vectors.js +0 -3506
  347. package/dist/esm/src/primitives/__tests/sighash.vectors.js.map +0 -1
  348. package/dist/esm/src/primitives/__tests/utils.test.js +0 -110
  349. package/dist/esm/src/primitives/__tests/utils.test.js.map +0 -1
  350. package/dist/esm/src/script/__tests/Script.test.js +0 -347
  351. package/dist/esm/src/script/__tests/Script.test.js.map +0 -1
  352. package/dist/esm/src/script/__tests/Spend.test.js +0 -282
  353. package/dist/esm/src/script/__tests/Spend.test.js.map +0 -1
  354. package/dist/esm/src/script/__tests/SpendComplex.test.js +0 -51
  355. package/dist/esm/src/script/__tests/SpendComplex.test.js.map +0 -1
  356. package/dist/esm/src/script/__tests/script.invalid.vectors.js +0 -2370
  357. package/dist/esm/src/script/__tests/script.invalid.vectors.js.map +0 -1
  358. package/dist/esm/src/script/__tests/script.valid.vectors.js +0 -1181
  359. package/dist/esm/src/script/__tests/script.valid.vectors.js.map +0 -1
  360. package/dist/esm/src/script/__tests/spend.valid.vectors.js +0 -2298
  361. package/dist/esm/src/script/__tests/spend.valid.vectors.js.map +0 -1
  362. package/dist/esm/src/script/templates/__tests/PushDrop.test.js +0 -161
  363. package/dist/esm/src/script/templates/__tests/PushDrop.test.js.map +0 -1
  364. package/dist/esm/src/totp/__tests/totp.test.js +0 -67
  365. package/dist/esm/src/totp/__tests/totp.test.js.map +0 -1
  366. package/dist/esm/src/transaction/__tests/Beef.test.js +0 -393
  367. package/dist/esm/src/transaction/__tests/Beef.test.js.map +0 -1
  368. package/dist/esm/src/transaction/__tests/MerklePath.test.js +0 -209
  369. package/dist/esm/src/transaction/__tests/MerklePath.test.js.map +0 -1
  370. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
  371. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
  372. package/dist/esm/src/transaction/__tests/Transaction.test.js +0 -1072
  373. package/dist/esm/src/transaction/__tests/Transaction.test.js.map +0 -1
  374. package/dist/esm/src/transaction/__tests/bigtx.vectors.js +0 -7
  375. package/dist/esm/src/transaction/__tests/bigtx.vectors.js.map +0 -1
  376. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js +0 -11
  377. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
  378. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js +0 -7
  379. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
  380. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js +0 -230
  381. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
  382. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js +0 -296
  383. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
  384. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
  385. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
  386. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
  387. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
  388. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
  389. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
  390. package/dist/esm/src/wallet/ScriptTemplateSABPPP.js +0 -37
  391. package/dist/esm/src/wallet/ScriptTemplateSABPPP.js.map +0 -1
  392. package/dist/esm/src/wallet/WalletSigner.js +0 -263
  393. package/dist/esm/src/wallet/WalletSigner.js.map +0 -1
  394. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
  395. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
  396. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js +0 -113
  397. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
  398. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js +0 -475
  399. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
  400. package/dist/esm/src/wallet/createActionSdk.js +0 -223
  401. package/dist/esm/src/wallet/createActionSdk.js.map +0 -1
  402. package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js +0 -174
  403. package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js.map +0 -1
  404. package/dist/esm/src/wallet/sdk/CertOps.js +0 -181
  405. package/dist/esm/src/wallet/sdk/CertOps.js.map +0 -1
  406. package/dist/esm/src/wallet/sdk/Certificate.js +0 -186
  407. package/dist/esm/src/wallet/sdk/Certificate.js.map +0 -1
  408. package/dist/esm/src/wallet/sdk/KeyDeriver.js +0 -174
  409. package/dist/esm/src/wallet/sdk/KeyDeriver.js.map +0 -1
  410. package/dist/esm/src/wallet/sdk/ProtoWallet.js +0 -71
  411. package/dist/esm/src/wallet/sdk/ProtoWallet.js.map +0 -1
  412. package/dist/esm/src/wallet/sdk/StorageSyncReader.js +0 -2
  413. package/dist/esm/src/wallet/sdk/StorageSyncReader.js.map +0 -1
  414. package/dist/esm/src/wallet/sdk/WERR_errors.js +0 -99
  415. package/dist/esm/src/wallet/sdk/WERR_errors.js.map +0 -1
  416. package/dist/esm/src/wallet/sdk/Wallet.interfaces.js +0 -2
  417. package/dist/esm/src/wallet/sdk/Wallet.interfaces.js.map +0 -1
  418. package/dist/esm/src/wallet/sdk/WalletCrypto.js +0 -168
  419. package/dist/esm/src/wallet/sdk/WalletCrypto.js.map +0 -1
  420. package/dist/esm/src/wallet/sdk/WalletError.js +0 -100
  421. package/dist/esm/src/wallet/sdk/WalletError.js.map +0 -1
  422. package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js +0 -2
  423. package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js.map +0 -1
  424. package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js +0 -2
  425. package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js.map +0 -1
  426. package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js +0 -2
  427. package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js.map +0 -1
  428. package/dist/esm/src/wallet/sdk/index.js +0 -15
  429. package/dist/esm/src/wallet/sdk/index.js.map +0 -1
  430. package/dist/esm/src/wallet/sdk/types.js +0 -8
  431. package/dist/esm/src/wallet/sdk/types.js.map +0 -1
  432. package/dist/esm/src/wallet/sdk/validationHelpers.js +0 -566
  433. package/dist/esm/src/wallet/sdk/validationHelpers.js.map +0 -1
  434. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
  435. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
  436. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js +0 -579
  437. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
  438. package/dist/esm/src/wallet/utilityHelpers.js +0 -275
  439. package/dist/esm/src/wallet/utilityHelpers.js.map +0 -1
  440. package/dist/esm/src/wallet/validationHelpers.js +0 -566
  441. package/dist/esm/src/wallet/validationHelpers.js.map +0 -1
  442. package/dist/types/src/auth/__tests/Peer.test.d.ts +0 -2
  443. package/dist/types/src/auth/__tests/Peer.test.d.ts.map +0 -1
  444. package/dist/types/src/auth/__tests/SessionManager.test.d.ts +0 -2
  445. package/dist/types/src/auth/__tests/SessionManager.test.d.ts.map +0 -1
  446. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts +0 -2
  447. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts.map +0 -1
  448. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts +0 -2
  449. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts.map +0 -1
  450. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts +0 -2
  451. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts.map +0 -1
  452. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts +0 -2
  453. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts.map +0 -1
  454. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts +0 -2
  455. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts.map +0 -1
  456. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts +0 -2
  457. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts.map +0 -1
  458. package/dist/types/src/auth/utils/certificateHelpers.d.ts +0 -26
  459. package/dist/types/src/auth/utils/certificateHelpers.d.ts.map +0 -1
  460. package/dist/types/src/compat/__tests/BSM.test.d.ts +0 -2
  461. package/dist/types/src/compat/__tests/BSM.test.d.ts.map +0 -1
  462. package/dist/types/src/compat/__tests/ECIES.test.d.ts +0 -2
  463. package/dist/types/src/compat/__tests/ECIES.test.d.ts.map +0 -1
  464. package/dist/types/src/compat/__tests/HD.test.d.ts +0 -2
  465. package/dist/types/src/compat/__tests/HD.test.d.ts.map +0 -1
  466. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts +0 -2
  467. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts.map +0 -1
  468. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts +0 -11
  469. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts.map +0 -1
  470. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts +0 -2
  471. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts.map +0 -1
  472. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts +0 -2
  473. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts.map +0 -1
  474. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts +0 -2
  475. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts.map +0 -1
  476. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts +0 -2
  477. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts.map +0 -1
  478. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts +0 -2
  479. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts.map +0 -1
  480. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts +0 -2
  481. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts.map +0 -1
  482. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts +0 -8
  483. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts.map +0 -1
  484. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts +0 -8
  485. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts.map +0 -1
  486. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts +0 -2
  487. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts.map +0 -1
  488. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts +0 -2
  489. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts.map +0 -1
  490. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts +0 -2
  491. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts.map +0 -1
  492. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts +0 -2
  493. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts.map +0 -1
  494. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts +0 -15
  495. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts.map +0 -1
  496. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts +0 -2
  497. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts.map +0 -1
  498. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts +0 -2
  499. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts.map +0 -1
  500. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts +0 -2
  501. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts.map +0 -1
  502. package/dist/types/src/primitives/__tests/DRBG.test.d.ts +0 -2
  503. package/dist/types/src/primitives/__tests/DRBG.test.d.ts.map +0 -1
  504. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts +0 -10
  505. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts.map +0 -1
  506. package/dist/types/src/primitives/__tests/ECDH.test.d.ts +0 -2
  507. package/dist/types/src/primitives/__tests/ECDH.test.d.ts.map +0 -1
  508. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts +0 -2
  509. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts.map +0 -1
  510. package/dist/types/src/primitives/__tests/HMAC.test.d.ts +0 -2
  511. package/dist/types/src/primitives/__tests/HMAC.test.d.ts.map +0 -1
  512. package/dist/types/src/primitives/__tests/Hash.test.d.ts +0 -2
  513. package/dist/types/src/primitives/__tests/Hash.test.d.ts.map +0 -1
  514. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts +0 -68
  515. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts.map +0 -1
  516. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts +0 -2
  517. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts.map +0 -1
  518. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts +0 -2
  519. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts.map +0 -1
  520. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts +0 -2
  521. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts.map +0 -1
  522. package/dist/types/src/primitives/__tests/Random.test.d.ts +0 -2
  523. package/dist/types/src/primitives/__tests/Random.test.d.ts.map +0 -1
  524. package/dist/types/src/primitives/__tests/Reader.test.d.ts +0 -2
  525. package/dist/types/src/primitives/__tests/Reader.test.d.ts.map +0 -1
  526. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts +0 -2
  527. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts.map +0 -1
  528. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts +0 -2
  529. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts.map +0 -1
  530. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts +0 -2
  531. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts.map +0 -1
  532. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts +0 -20
  533. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts.map +0 -1
  534. package/dist/types/src/primitives/__tests/Writer.test.d.ts +0 -2
  535. package/dist/types/src/primitives/__tests/Writer.test.d.ts.map +0 -1
  536. package/dist/types/src/primitives/__tests/bug-31.test.d.ts +0 -2
  537. package/dist/types/src/primitives/__tests/bug-31.test.d.ts.map +0 -1
  538. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts +0 -3
  539. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts.map +0 -1
  540. package/dist/types/src/primitives/__tests/utils.test.d.ts +0 -2
  541. package/dist/types/src/primitives/__tests/utils.test.d.ts.map +0 -1
  542. package/dist/types/src/script/__tests/Script.test.d.ts +0 -2
  543. package/dist/types/src/script/__tests/Script.test.d.ts.map +0 -1
  544. package/dist/types/src/script/__tests/Spend.test.d.ts +0 -2
  545. package/dist/types/src/script/__tests/Spend.test.d.ts.map +0 -1
  546. package/dist/types/src/script/__tests/SpendComplex.test.d.ts +0 -2
  547. package/dist/types/src/script/__tests/SpendComplex.test.d.ts.map +0 -1
  548. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts +0 -3
  549. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts.map +0 -1
  550. package/dist/types/src/script/__tests/script.valid.vectors.d.ts +0 -3
  551. package/dist/types/src/script/__tests/script.valid.vectors.d.ts.map +0 -1
  552. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts +0 -3
  553. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts.map +0 -1
  554. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts +0 -2
  555. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts.map +0 -1
  556. package/dist/types/src/totp/__tests/totp.test.d.ts +0 -2
  557. package/dist/types/src/totp/__tests/totp.test.d.ts.map +0 -1
  558. package/dist/types/src/transaction/__tests/Beef.test.d.ts +0 -2
  559. package/dist/types/src/transaction/__tests/Beef.test.d.ts.map +0 -1
  560. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts +0 -2
  561. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts.map +0 -1
  562. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts +0 -2
  563. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts.map +0 -1
  564. package/dist/types/src/transaction/__tests/Transaction.test.d.ts +0 -2
  565. package/dist/types/src/transaction/__tests/Transaction.test.d.ts.map +0 -1
  566. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts +0 -6
  567. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts.map +0 -1
  568. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts +0 -6
  569. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts.map +0 -1
  570. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts +0 -5
  571. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts.map +0 -1
  572. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts +0 -3
  573. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts.map +0 -1
  574. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts +0 -3
  575. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts.map +0 -1
  576. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts +0 -2
  577. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts.map +0 -1
  578. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts +0 -2
  579. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts.map +0 -1
  580. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts +0 -2
  581. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts.map +0 -1
  582. package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts +0 -25
  583. package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts.map +0 -1
  584. package/dist/types/src/wallet/WalletSigner.d.ts +0 -110
  585. package/dist/types/src/wallet/WalletSigner.d.ts.map +0 -1
  586. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts +0 -2
  587. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts.map +0 -1
  588. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts +0 -2
  589. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts.map +0 -1
  590. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts +0 -2
  591. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts.map +0 -1
  592. package/dist/types/src/wallet/createActionSdk.d.ts +0 -8
  593. package/dist/types/src/wallet/createActionSdk.d.ts.map +0 -1
  594. package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts +0 -94
  595. package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts.map +0 -1
  596. package/dist/types/src/wallet/sdk/CertOps.d.ts +0 -63
  597. package/dist/types/src/wallet/sdk/CertOps.d.ts.map +0 -1
  598. package/dist/types/src/wallet/sdk/Certificate.d.ts +0 -77
  599. package/dist/types/src/wallet/sdk/Certificate.d.ts.map +0 -1
  600. package/dist/types/src/wallet/sdk/KeyDeriver.d.ts +0 -128
  601. package/dist/types/src/wallet/sdk/KeyDeriver.d.ts.map +0 -1
  602. package/dist/types/src/wallet/sdk/ProtoWallet.d.ts +0 -30
  603. package/dist/types/src/wallet/sdk/ProtoWallet.d.ts.map +0 -1
  604. package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts +0 -102
  605. package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts.map +0 -1
  606. package/dist/types/src/wallet/sdk/WERR_errors.d.ts +0 -84
  607. package/dist/types/src/wallet/sdk/WERR_errors.d.ts.map +0 -1
  608. package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts +0 -1036
  609. package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts.map +0 -1
  610. package/dist/types/src/wallet/sdk/WalletCrypto.d.ts +0 -31
  611. package/dist/types/src/wallet/sdk/WalletCrypto.d.ts.map +0 -1
  612. package/dist/types/src/wallet/sdk/WalletError.d.ts +0 -46
  613. package/dist/types/src/wallet/sdk/WalletError.d.ts.map +0 -1
  614. package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts +0 -293
  615. package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts.map +0 -1
  616. package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts +0 -48
  617. package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts.map +0 -1
  618. package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts +0 -296
  619. package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts.map +0 -1
  620. package/dist/types/src/wallet/sdk/index.d.ts +0 -15
  621. package/dist/types/src/wallet/sdk/index.d.ts.map +0 -1
  622. package/dist/types/src/wallet/sdk/types.d.ts +0 -56
  623. package/dist/types/src/wallet/sdk/types.d.ts.map +0 -1
  624. package/dist/types/src/wallet/sdk/validationHelpers.d.ts +0 -301
  625. package/dist/types/src/wallet/sdk/validationHelpers.d.ts.map +0 -1
  626. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts +0 -2
  627. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts.map +0 -1
  628. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts +0 -5
  629. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts.map +0 -1
  630. package/dist/types/src/wallet/utilityHelpers.d.ts +0 -142
  631. package/dist/types/src/wallet/utilityHelpers.d.ts.map +0 -1
  632. package/dist/types/src/wallet/validationHelpers.d.ts +0 -301
  633. package/dist/types/src/wallet/validationHelpers.d.ts.map +0 -1
  634. package/docs/README.md +0 -21
  635. /package/docs/{auth.md → reference/auth.md} +0 -0
  636. /package/docs/{compat.md → reference/compat.md} +0 -0
  637. /package/docs/{identity.md → reference/identity.md} +0 -0
  638. /package/docs/{kvstore.md → reference/kvstore.md} +0 -0
  639. /package/docs/{messages.md → reference/messages.md} +0 -0
  640. /package/docs/{overlay-tools.md → reference/overlay-tools.md} +0 -0
  641. /package/docs/{primitives.md → reference/primitives.md} +0 -0
  642. /package/docs/{registry.md → reference/registry.md} +0 -0
  643. /package/docs/{script.md → reference/script.md} +0 -0
  644. /package/docs/{storage.md → reference/storage.md} +0 -0
  645. /package/docs/{totp.md → reference/totp.md} +0 -0
  646. /package/docs/{transaction.md → reference/transaction.md} +0 -0
  647. /package/docs/{wallet.md → reference/wallet.md} +0 -0
@@ -0,0 +1,957 @@
1
+ # Authenticated HTTP Requests with AuthFetch
2
+
3
+ **Duration**: 60 minutes
4
+ **Prerequisites**: Node.js, basic TypeScript knowledge, understanding of HTTP and authentication
5
+ **Learning Goals**:
6
+ - Understand BRC-103/104 authentication protocols
7
+ - Implement authenticated HTTP requests with AuthFetch
8
+ - Handle peer-to-peer authentication and certificate exchange
9
+ - Build secure API communication systems
10
+
11
+ ## When to Use AuthFetch
12
+
13
+ **Use AuthFetch when you need:**
14
+ - BRC-103/104 cryptographic authentication
15
+ - Wallet-signed HTTP requests for identity verification
16
+ - Certificate-based peer authentication
17
+ - Secure peer-to-peer communication between BSV applications
18
+ - APIs that require cryptographic proof of identity
19
+
20
+ **For general HTTP client configuration, use [HTTP Client Configuration Guide](../guides/http-client-configuration.md) instead:**
21
+ - Custom HTTP client setup (Axios, fetch, etc.)
22
+ - Transaction broadcasting via ARC endpoints
23
+ - Environment-specific configuration (timeouts, retries)
24
+ - Testing and mocking HTTP clients
25
+ - Integration with existing HTTP infrastructure
26
+
27
+ ## Introduction
28
+
29
+ AuthFetch is a specialized HTTP client that implements BRC-103 and BRC-104 authentication protocols for secure peer-to-peer communication in the BSV ecosystem. Unlike traditional API authentication (like JWT tokens), AuthFetch uses cryptographic signatures and certificate-based authentication.
30
+
31
+ ## Key Features
32
+
33
+ - **BRC-103 Authentication**: Cryptographic request signing
34
+ - **BRC-104 Certificate Exchange**: Peer identity verification
35
+ - **Automatic Session Management**: Handles authentication state
36
+ - **Certificate Validation**: Verifies peer credentials
37
+ - **Secure Communication**: End-to-end authenticated requests
38
+
39
+ ## What You'll Build
40
+
41
+ In this tutorial, you'll create:
42
+ - Basic authenticated HTTP client
43
+ - Peer-to-peer communication system
44
+ - Certificate exchange mechanism
45
+ - Secure API integration
46
+
47
+ ## Setting Up AuthFetch with `WalletClient`
48
+
49
+ ### Basic AuthFetch Configuration
50
+
51
+ ```typescript
52
+ import { AuthFetch, WalletClient } from '@bsv/sdk'
53
+
54
+ async function createAuthFetch() {
55
+ // Create wallet for authentication - connects to local wallet (e.g., MetaNet Desktop)
56
+ const wallet = new WalletClient('auto', 'localhost')
57
+
58
+ // Check if wallet is connected
59
+ try {
60
+ const authStatus = await wallet.isAuthenticated()
61
+ console.log('Wallet authenticated:', authStatus.authenticated)
62
+
63
+ const network = await wallet.getNetwork()
64
+ console.log('Connected to network:', network.network)
65
+ } catch (error) {
66
+ console.log('Wallet connection status:', error.message)
67
+ // This is expected if no wallet is running
68
+ }
69
+
70
+ // Create AuthFetch instance
71
+ const authFetch = new AuthFetch(wallet)
72
+
73
+ console.log('AuthFetch client created')
74
+ return authFetch
75
+ }
76
+
77
+ async function basicAuthenticatedRequest() {
78
+ const authFetch = await createAuthFetch()
79
+
80
+ try {
81
+ // Make authenticated request to a real, working endpoint
82
+ const response = await authFetch.fetch('https://httpbin.org/get', {
83
+ method: 'GET',
84
+ headers: {
85
+ 'Content-Type': 'application/json',
86
+ 'X-BSV-Tutorial': 'AuthFetch-Example'
87
+ }
88
+ })
89
+
90
+ if (response.ok) {
91
+ const data = await response.json()
92
+ console.log('Authenticated request successful!')
93
+ console.log('Request URL:', data.url)
94
+ console.log('Headers sent:', Object.keys(data.headers).length)
95
+ return data
96
+ } else {
97
+ console.error('Request failed:', response.status, response.statusText)
98
+ }
99
+ } catch (error) {
100
+ console.error('Authentication error:', error.message)
101
+ if (error.message.includes('No wallet available')) {
102
+ console.log(' Install and run MetaNet Desktop Wallet to test with real authentication')
103
+ console.log(' For now, this demonstrates the AuthFetch API structure')
104
+ }
105
+ }
106
+ }
107
+
108
+ // Test the basic functionality
109
+ basicAuthenticatedRequest().catch(console.error)
110
+ ```
111
+
112
+ ### AuthFetch with Certificate Requirements
113
+
114
+ ```typescript
115
+ import { AuthFetch, WalletClient } from '@bsv/sdk'
116
+
117
+ async function createAuthFetchWithCertificates() {
118
+ const wallet = new WalletClient('auto', 'localhost')
119
+
120
+ // Define required certificates from peers
121
+ const requestedCertificates = {
122
+ certifiers: {
123
+ // Require identity certificates from trusted certifier
124
+ 'identity-certifier-key': {
125
+ certificateTypes: ['identity-cert'],
126
+ fieldsRequired: ['name', 'email']
127
+ }
128
+ },
129
+ acquisitionProtocol: 'direct' as const
130
+ }
131
+
132
+ const authFetch = new AuthFetch(wallet, requestedCertificates)
133
+
134
+ console.log('AuthFetch with certificate requirements created')
135
+ return authFetch
136
+ }
137
+
138
+ async function testCertificateRequirements() {
139
+ const authFetch = await createAuthFetchWithCertificates()
140
+
141
+ try {
142
+ // Test with a real endpoint that will show our certificate headers (using a dummy URL for demo purposes)
143
+ const response = await authFetch.fetch('https://httpbin.org/headers', {
144
+ method: 'GET'
145
+ })
146
+
147
+ if (response.ok) {
148
+ const data = await response.json()
149
+ console.log('Certificate-enabled request successful!')
150
+ console.log('Headers sent to server:', data.headers)
151
+
152
+ // AuthFetch will include certificate-related headers when available
153
+ const certHeaders = Object.keys(data.headers).filter(h =>
154
+ h.toLowerCase().includes('cert') || h.toLowerCase().includes('auth')
155
+ )
156
+ console.log('Certificate/Auth headers:', certHeaders)
157
+
158
+ } else {
159
+ console.error('Request failed:', response.status)
160
+ }
161
+ } catch (error) {
162
+ console.error('Certificate request error:', error.message)
163
+ if (error.message.includes('No wallet available')) {
164
+ console.log(' Certificate exchange requires a connected wallet')
165
+ }
166
+ }
167
+ }
168
+
169
+ testCertificateRequirements().catch(console.error)
170
+ ```
171
+
172
+ ## Certificate Exchange and Verification
173
+
174
+ ### Requesting Certificates from Peers
175
+
176
+ ```typescript
177
+ import { AuthFetch, WalletClient } from '@bsv/sdk'
178
+
179
+ class CertificateManager {
180
+ private authFetch: AuthFetch
181
+
182
+ constructor(wallet: WalletClient) {
183
+ this.authFetch = new AuthFetch(wallet)
184
+ }
185
+
186
+ async requestPeerCertificates(
187
+ peerBaseUrl: string,
188
+ certificateRequirements: any
189
+ ): Promise<any[]> {
190
+ try {
191
+ console.log('Requesting certificates from peer:', peerBaseUrl)
192
+
193
+ const certificates = await this.authFetch.sendCertificateRequest(
194
+ peerBaseUrl,
195
+ certificateRequirements
196
+ )
197
+
198
+ console.log('Received certificates:', certificates.length)
199
+ return certificates
200
+ } catch (error) {
201
+ console.error('Certificate request failed:', error)
202
+ throw error
203
+ }
204
+ }
205
+
206
+ async verifyPeerIdentity(peerUrl: string): Promise<{
207
+ verified: boolean
208
+ identity: string | null
209
+ certificates: any[]
210
+ }> {
211
+ const certificateRequirements = {
212
+ certifiers: {
213
+ 'trusted-identity-provider': {
214
+ certificateTypes: ['identity'],
215
+ fieldsRequired: ['name']
216
+ }
217
+ },
218
+ acquisitionProtocol: 'direct' as const
219
+ }
220
+
221
+ try {
222
+ const certificates = await this.requestPeerCertificates(
223
+ peerUrl,
224
+ certificateRequirements
225
+ )
226
+
227
+ // Verify certificates (simplified verification)
228
+ const verified = certificates.length > 0
229
+ const identity = verified ? certificates[0].subject : null
230
+
231
+ return { verified, identity, certificates }
232
+ } catch (error) {
233
+ console.error('Identity verification failed:', error)
234
+ return { verified: false, identity: null, certificates: [] }
235
+ }
236
+ }
237
+ }
238
+
239
+ async function demonstrateCertificateExchange() {
240
+ const wallet = new WalletClient('auto', 'localhost')
241
+ const certManager = new CertificateManager(wallet)
242
+
243
+ // Example peer URLs (replace with actual peer endpoints)
244
+ const peerUrls = [
245
+ 'https://peer1.example.com',
246
+ 'https://peer2.example.com'
247
+ ]
248
+
249
+ for (const peerUrl of peerUrls) {
250
+ console.log(`\n=== Verifying peer: ${peerUrl} ===`)
251
+
252
+ try {
253
+ const verification = await certManager.verifyPeerIdentity(peerUrl)
254
+
255
+ if (verification.verified) {
256
+ console.log(' Peer verified successfully')
257
+ console.log('Identity:', verification.identity)
258
+ console.log('Certificates received:', verification.certificates.length)
259
+ } else {
260
+ console.log(' Peer verification failed')
261
+ }
262
+ } catch (error) {
263
+ console.log(' Peer unreachable or invalid')
264
+ }
265
+ }
266
+ }
267
+
268
+ demonstrateCertificateExchange().catch(console.error)
269
+ ```
270
+
271
+ ## Building Secure API Clients
272
+
273
+ ### Authenticated API Client
274
+
275
+ ```typescript
276
+ import { AuthFetch, WalletClient } from '@bsv/sdk'
277
+
278
+ class SecureAPIClient {
279
+ private authFetch: AuthFetch
280
+ private baseUrl: string
281
+
282
+ constructor(baseUrl: string, wallet?: WalletClient) {
283
+ this.baseUrl = baseUrl
284
+ this.authFetch = new AuthFetch(wallet || new WalletClient('auto', 'localhost'))
285
+ }
286
+
287
+ async get(endpoint: string, options: any = {}): Promise<any> {
288
+ return this.request('GET', endpoint, null, options)
289
+ }
290
+
291
+ async post(endpoint: string, data: any, options: any = {}): Promise<any> {
292
+ return this.request('POST', endpoint, data, options)
293
+ }
294
+
295
+ async put(endpoint: string, data: any, options: any = {}): Promise<any> {
296
+ return this.request('PUT', endpoint, data, options)
297
+ }
298
+
299
+ async delete(endpoint: string, options: any = {}): Promise<any> {
300
+ return this.request('DELETE', endpoint, null, options)
301
+ }
302
+
303
+ private async request(
304
+ method: string,
305
+ endpoint: string,
306
+ data: any = null,
307
+ options: any = {}
308
+ ): Promise<any> {
309
+ const url = `${this.baseUrl}${endpoint}`
310
+
311
+ const requestOptions: any = {
312
+ method,
313
+ headers: {
314
+ 'Content-Type': 'application/json',
315
+ ...options.headers
316
+ }
317
+ }
318
+
319
+ if (data) {
320
+ requestOptions.body = JSON.stringify(data)
321
+ }
322
+
323
+ try {
324
+ console.log(`Making authenticated ${method} request to ${endpoint}`)
325
+
326
+ const response = await this.authFetch.fetch(url, requestOptions)
327
+
328
+ if (!response.ok) {
329
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`)
330
+ }
331
+
332
+ const contentType = response.headers.get('content-type')
333
+ if (contentType && contentType.includes('application/json')) {
334
+ return await response.json()
335
+ } else {
336
+ return await response.text()
337
+ }
338
+ } catch (error) {
339
+ console.error(`Request failed for ${method} ${endpoint}:`, error)
340
+ throw error
341
+ }
342
+ }
343
+
344
+ async healthCheck(): Promise<boolean> {
345
+ try {
346
+ await this.get('/health')
347
+ return true
348
+ } catch (error) {
349
+ return false
350
+ }
351
+ }
352
+ }
353
+
354
+ async function demonstrateSecureAPIClient() {
355
+ // Create secure API client using real, testable endpoints
356
+ const apiClient = new SecureAPIClient('https://httpbin.org')
357
+
358
+ try {
359
+ // Health check using a real endpoint
360
+ console.log('Testing API client with real endpoints...')
361
+
362
+ // Test GET request
363
+ const getResult = await apiClient.get('/get?test=true&client=secure')
364
+ console.log('✅ GET request successful')
365
+ console.log('Request URL:', getResult.url)
366
+ console.log('Query parameters received:', getResult.args)
367
+
368
+ // Test POST request with data
369
+ const postResult = await apiClient.post('/post', {
370
+ user: 'demo-user',
371
+ action: 'test-post',
372
+ timestamp: new Date().toISOString(),
373
+ authenticated: true
374
+ })
375
+ console.log('✅ POST request successful')
376
+ console.log('Data sent:', postResult.json)
377
+ console.log('Content-Type:', postResult.headers['Content-Type'])
378
+
379
+ // Test PUT request
380
+ const putResult = await apiClient.put('/put', {
381
+ resource: 'user-settings',
382
+ theme: 'dark',
383
+ notifications: true,
384
+ updated: new Date().toISOString()
385
+ })
386
+ console.log('✅ PUT request successful')
387
+ console.log('PUT data received:', putResult.json)
388
+
389
+ // Test DELETE request
390
+ const deleteResult = await apiClient.delete('/delete')
391
+ console.log('✅ DELETE request successful')
392
+ console.log('DELETE method confirmed:', deleteResult.url)
393
+
394
+ // Test custom headers
395
+ const headersResult = await apiClient.get('/headers')
396
+ console.log('✅ Headers test successful')
397
+ console.log('Custom headers sent:', Object.keys(headersResult.headers).length)
398
+
399
+ return {
400
+ get: getResult,
401
+ post: postResult,
402
+ put: putResult,
403
+ delete: deleteResult,
404
+ headers: headersResult
405
+ }
406
+ } catch (error) {
407
+ console.error('API operations failed:', error.message)
408
+ if (error.message.includes('No wallet available')) {
409
+ console.log('💡 Install MetaNet Desktop Wallet to test with real authentication')
410
+ console.log(' The API calls work, but authentication requires a connected wallet')
411
+ }
412
+ }
413
+ }
414
+
415
+ demonstrateSecureAPIClient().catch(console.error)
416
+ ```
417
+
418
+ ### Multi-Peer Communication System
419
+
420
+ ```typescript
421
+ import { AuthFetch, WalletClient } from '@bsv/sdk'
422
+
423
+ interface PeerInfo {
424
+ url: string
425
+ identity: string | null
426
+ verified: boolean
427
+ lastContact: Date
428
+ }
429
+
430
+ class PeerNetwork {
431
+ private authFetch: AuthFetch
432
+ private peers: Map<string, PeerInfo> = new Map()
433
+
434
+ constructor(wallet?: WalletClient) {
435
+ this.authFetch = new AuthFetch(wallet || new WalletClient('auto', 'localhost'))
436
+ }
437
+
438
+ async addPeer(peerUrl: string): Promise<boolean> {
439
+ try {
440
+ console.log(`Adding peer: ${peerUrl}`)
441
+
442
+ // Verify peer identity
443
+ const verification = await this.verifyPeer(peerUrl)
444
+
445
+ const peerInfo: PeerInfo = {
446
+ url: peerUrl,
447
+ identity: verification.identity,
448
+ verified: verification.verified,
449
+ lastContact: new Date()
450
+ }
451
+
452
+ this.peers.set(peerUrl, peerInfo)
453
+
454
+ console.log(`Peer ${peerUrl} ${verification.verified ? 'verified' : 'unverified'}`)
455
+ return verification.verified
456
+ } catch (error) {
457
+ console.error(`Failed to add peer ${peerUrl}:`, error)
458
+ return false
459
+ }
460
+ }
461
+
462
+ private async verifyPeer(peerUrl: string): Promise<{
463
+ verified: boolean
464
+ identity: string | null
465
+ }> {
466
+ try {
467
+ // Simple ping to verify peer is reachable
468
+ const response = await this.authFetch.fetch(`${peerUrl}/ping`, {
469
+ method: 'GET'
470
+ })
471
+
472
+ if (response.ok) {
473
+ // In a real implementation, you would verify certificates here
474
+ return { verified: true, identity: 'peer-identity' }
475
+ } else {
476
+ return { verified: false, identity: null }
477
+ }
478
+ } catch (error) {
479
+ return { verified: false, identity: null }
480
+ }
481
+ }
482
+
483
+ async broadcastMessage(message: any): Promise<{
484
+ successful: string[]
485
+ failed: string[]
486
+ }> {
487
+ const successful: string[] = []
488
+ const failed: string[] = []
489
+
490
+ console.log(`Broadcasting message to ${this.peers.size} peers`)
491
+
492
+ const promises = Array.from(this.peers.entries()).map(async ([url, peerInfo]) => {
493
+ try {
494
+ const response = await this.authFetch.fetch(`${url}/message`, {
495
+ method: 'POST',
496
+ headers: {
497
+ 'Content-Type': 'application/json'
498
+ },
499
+ body: JSON.stringify(message)
500
+ })
501
+
502
+ if (response.ok) {
503
+ successful.push(url)
504
+ // Update last contact
505
+ peerInfo.lastContact = new Date()
506
+ } else {
507
+ failed.push(url)
508
+ }
509
+ } catch (error) {
510
+ failed.push(url)
511
+ console.error(`Failed to send message to ${url}:`, error)
512
+ }
513
+ })
514
+
515
+ await Promise.all(promises)
516
+
517
+ console.log(`Broadcast complete: ${successful.length} successful, ${failed.length} failed`)
518
+ return { successful, failed }
519
+ }
520
+
521
+ async sendDirectMessage(peerUrl: string, message: any): Promise<any> {
522
+ const peer = this.peers.get(peerUrl)
523
+ if (!peer) {
524
+ throw new Error(`Peer ${peerUrl} not found`)
525
+ }
526
+
527
+ if (!peer.verified) {
528
+ throw new Error(`Peer ${peerUrl} not verified`)
529
+ }
530
+
531
+ try {
532
+ const response = await this.authFetch.fetch(`${peerUrl}/direct-message`, {
533
+ method: 'POST',
534
+ headers: {
535
+ 'Content-Type': 'application/json'
536
+ },
537
+ body: JSON.stringify(message)
538
+ })
539
+
540
+ if (response.ok) {
541
+ peer.lastContact = new Date()
542
+ return await response.json()
543
+ } else {
544
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`)
545
+ }
546
+ } catch (error) {
547
+ console.error(`Direct message to ${peerUrl} failed:`, error)
548
+ throw error
549
+ }
550
+ }
551
+
552
+ getPeerStatus(): { total: number; verified: number; unverified: number } {
553
+ const total = this.peers.size
554
+ let verified = 0
555
+ let unverified = 0
556
+
557
+ for (const peer of this.peers.values()) {
558
+ if (peer.verified) {
559
+ verified++
560
+ } else {
561
+ unverified++
562
+ }
563
+ }
564
+
565
+ return { total, verified, unverified }
566
+ }
567
+
568
+ listPeers(): PeerInfo[] {
569
+ return Array.from(this.peers.values())
570
+ }
571
+ }
572
+
573
+ async function demonstratePeerNetwork() {
574
+ const network = new PeerNetwork()
575
+
576
+ // Add peers (replace with actual peer URLs)
577
+ const peerUrls = [
578
+ 'https://peer1.example.com',
579
+ 'https://peer2.example.com',
580
+ 'https://peer3.example.com'
581
+ ]
582
+
583
+ console.log('=== Setting up peer network ===')
584
+
585
+ for (const peerUrl of peerUrls) {
586
+ await network.addPeer(peerUrl)
587
+ }
588
+
589
+ const status = network.getPeerStatus()
590
+ console.log('Network status:', status)
591
+
592
+ // Broadcast message
593
+ const broadcastMessage = {
594
+ type: 'announcement',
595
+ content: 'Hello from authenticated peer network!',
596
+ timestamp: new Date().toISOString()
597
+ }
598
+
599
+ console.log('\n=== Broadcasting message ===')
600
+ const broadcastResult = await network.broadcastMessage(broadcastMessage)
601
+ console.log('Broadcast result:', broadcastResult)
602
+
603
+ // Send direct message to first verified peer
604
+ const peers = network.listPeers()
605
+ const verifiedPeer = peers.find(p => p.verified)
606
+
607
+ if (verifiedPeer) {
608
+ console.log('\n=== Sending direct message ===')
609
+ try {
610
+ const directMessage = {
611
+ type: 'direct',
612
+ content: 'This is a direct authenticated message',
613
+ timestamp: new Date().toISOString()
614
+ }
615
+
616
+ const response = await network.sendDirectMessage(verifiedPeer.url, directMessage)
617
+ console.log('Direct message response:', response)
618
+ } catch (error) {
619
+ console.log('Direct message failed (expected in demo)')
620
+ }
621
+ }
622
+
623
+ return { status, broadcastResult, peers }
624
+ }
625
+
626
+ demonstratePeerNetwork().catch(console.error)
627
+ ```
628
+
629
+ ## Advanced Authentication Patterns
630
+
631
+ ### Session Management and Reconnection
632
+
633
+ ```typescript
634
+ import { AuthFetch, WalletClient } from '@bsv/sdk'
635
+
636
+ class RobustAuthClient {
637
+ private authFetch: AuthFetch
638
+ private maxRetries: number = 3
639
+ private retryDelay: number = 1000
640
+
641
+ constructor(wallet?: WalletClient) {
642
+ this.authFetch = new AuthFetch(wallet || new WalletClient('auto', 'localhost'))
643
+ }
644
+
645
+ async authenticatedRequest(
646
+ url: string,
647
+ options: any = {},
648
+ retryCount: number = 0
649
+ ): Promise<Response> {
650
+ try {
651
+ const response = await this.authFetch.fetch(url, options)
652
+
653
+ if (response.status === 401 && retryCount < this.maxRetries) {
654
+ console.log(`Authentication failed, retrying... (${retryCount + 1}/${this.maxRetries})`)
655
+
656
+ // Wait and retry - AuthFetch will handle session management automatically
657
+ await this.delay(this.retryDelay * (retryCount + 1))
658
+
659
+ return this.authenticatedRequest(url, options, retryCount + 1)
660
+ }
661
+
662
+ return response
663
+ } catch (error) {
664
+ if (retryCount < this.maxRetries) {
665
+ console.log(`Request failed, retrying... (${retryCount + 1}/${this.maxRetries})`)
666
+ await this.delay(this.retryDelay * (retryCount + 1))
667
+ return this.authenticatedRequest(url, options, retryCount + 1)
668
+ }
669
+
670
+ throw error
671
+ }
672
+ }
673
+
674
+ private delay(ms: number): Promise<void> {
675
+ return new Promise(resolve => setTimeout(resolve, ms))
676
+ }
677
+
678
+ async batchRequests(requests: Array<{
679
+ url: string
680
+ options?: any
681
+ }>): Promise<Array<{
682
+ success: boolean
683
+ response?: any
684
+ error?: string
685
+ }>> {
686
+ const results = await Promise.allSettled(
687
+ requests.map(req => this.authenticatedRequest(req.url, req.options))
688
+ )
689
+
690
+ return results.map((result, index) => {
691
+ if (result.status === 'fulfilled') {
692
+ return {
693
+ success: true,
694
+ response: result.value
695
+ }
696
+ } else {
697
+ return {
698
+ success: false,
699
+ error: result.reason.message
700
+ }
701
+ }
702
+ })
703
+ }
704
+ }
705
+
706
+ async function demonstrateRobustAuthentication() {
707
+ const robustClient = new RobustAuthClient()
708
+
709
+ console.log('=== Testing robust authentication ===')
710
+
711
+ // Single request with retry logic
712
+ try {
713
+ const response = await robustClient.authenticatedRequest('https://api.example.com/data')
714
+ console.log('Single request successful:', response.ok)
715
+ } catch (error) {
716
+ console.log('Single request failed after retries:', error.message)
717
+ }
718
+
719
+ // Batch requests
720
+ const batchRequests = [
721
+ { url: 'https://api.example.com/endpoint1' },
722
+ { url: 'https://api.example.com/endpoint2' },
723
+ { url: 'https://api.example.com/endpoint3' }
724
+ ]
725
+
726
+ console.log('\n=== Testing batch requests ===')
727
+ const batchResults = await robustClient.batchRequests(batchRequests)
728
+
729
+ batchResults.forEach((result, index) => {
730
+ console.log(`Request ${index + 1}:`, result.success ? 'SUCCESS' : `FAILED - ${result.error}`)
731
+ })
732
+
733
+ return batchResults
734
+ }
735
+
736
+ demonstrateRobustAuthentication().catch(console.error)
737
+ ```
738
+
739
+ ## Error Handling and Debugging
740
+
741
+ ### Comprehensive Error Handling
742
+
743
+ ```typescript
744
+ import { AuthFetch, WalletClient } from '@bsv/sdk'
745
+
746
+ enum AuthErrorType {
747
+ NETWORK_ERROR = 'network_error',
748
+ AUTHENTICATION_FAILED = 'authentication_failed',
749
+ CERTIFICATE_INVALID = 'certificate_invalid',
750
+ PEER_UNREACHABLE = 'peer_unreachable',
751
+ SESSION_EXPIRED = 'session_expired'
752
+ }
753
+
754
+ class AuthError extends Error {
755
+ constructor(
756
+ public type: AuthErrorType,
757
+ message: string,
758
+ public originalError?: Error
759
+ ) {
760
+ super(message)
761
+ this.name = 'AuthError'
762
+ }
763
+ }
764
+
765
+ class AuthFetchWithErrorHandling {
766
+ private authFetch: AuthFetch
767
+ private debugMode: boolean = false
768
+
769
+ constructor(wallet?: WalletClient, debugMode: boolean = false) {
770
+ this.authFetch = new AuthFetch(wallet || new WalletClient('auto', 'localhost'))
771
+ this.debugMode = debugMode
772
+ }
773
+
774
+ async safeRequest(url: string, options: any = {}): Promise<{
775
+ success: boolean
776
+ data?: any
777
+ error?: AuthError
778
+ }> {
779
+ try {
780
+ if (this.debugMode) {
781
+ console.log(`[DEBUG] Making request to: ${url}`)
782
+ console.log(`[DEBUG] Options:`, JSON.stringify(options, null, 2))
783
+ }
784
+
785
+ const response = await this.authFetch.fetch(url, options)
786
+
787
+ if (this.debugMode) {
788
+ console.log(`[DEBUG] Response status: ${response.status}`)
789
+ console.log(`[DEBUG] Response headers:`, Object.fromEntries(response.headers.entries()))
790
+ }
791
+
792
+ if (!response.ok) {
793
+ const errorType = this.categorizeHttpError(response.status)
794
+ const errorMessage = await this.extractErrorMessage(response)
795
+
796
+ return {
797
+ success: false,
798
+ error: new AuthError(errorType, errorMessage)
799
+ }
800
+ }
801
+
802
+ const data = await this.parseResponse(response)
803
+ return { success: true, data }
804
+
805
+ } catch (error) {
806
+ if (this.debugMode) {
807
+ console.log(`[DEBUG] Request failed:`, error)
808
+ }
809
+
810
+ const authError = this.categorizeError(error)
811
+ return { success: false, error: authError }
812
+ }
813
+ }
814
+
815
+ private categorizeHttpError(status: number): AuthErrorType {
816
+ switch (status) {
817
+ case 401:
818
+ return AuthErrorType.AUTHENTICATION_FAILED
819
+ case 403:
820
+ return AuthErrorType.CERTIFICATE_INVALID
821
+ case 408:
822
+ case 504:
823
+ return AuthErrorType.PEER_UNREACHABLE
824
+ default:
825
+ return AuthErrorType.NETWORK_ERROR
826
+ }
827
+ }
828
+
829
+ private async extractErrorMessage(response: Response): Promise<string> {
830
+ try {
831
+ const contentType = response.headers.get('content-type')
832
+ if (contentType && contentType.includes('application/json')) {
833
+ const errorData = await response.json()
834
+ return errorData.message || errorData.error || `HTTP ${response.status}`
835
+ } else {
836
+ return await response.text() || `HTTP ${response.status}`
837
+ }
838
+ } catch {
839
+ return `HTTP ${response.status}: ${response.statusText}`
840
+ }
841
+ }
842
+
843
+ private async parseResponse(response: Response): Promise<any> {
844
+ const contentType = response.headers.get('content-type')
845
+ if (contentType && contentType.includes('application/json')) {
846
+ return await response.json()
847
+ } else {
848
+ return await response.text()
849
+ }
850
+ }
851
+
852
+ private categorizeError(error: any): AuthError {
853
+ if (error.name === 'TypeError' && error.message.includes('fetch')) {
854
+ return new AuthError(
855
+ AuthErrorType.NETWORK_ERROR,
856
+ 'Network connection failed',
857
+ error
858
+ )
859
+ }
860
+
861
+ if (error.message.includes('certificate')) {
862
+ return new AuthError(
863
+ AuthErrorType.CERTIFICATE_INVALID,
864
+ 'Certificate validation failed',
865
+ error
866
+ )
867
+ }
868
+
869
+ if (error.message.includes('session')) {
870
+ return new AuthError(
871
+ AuthErrorType.SESSION_EXPIRED,
872
+ 'Authentication session expired',
873
+ error
874
+ )
875
+ }
876
+
877
+ return new AuthError(
878
+ AuthErrorType.NETWORK_ERROR,
879
+ error.message || 'Unknown error occurred',
880
+ error
881
+ )
882
+ }
883
+
884
+ async testConnectivity(urls: string[]): Promise<{
885
+ reachable: string[]
886
+ unreachable: string[]
887
+ errors: Record<string, string>
888
+ }> {
889
+ const reachable: string[] = []
890
+ const unreachable: string[] = []
891
+ const errors: Record<string, string> = {}
892
+
893
+ console.log(`Testing connectivity to ${urls.length} endpoints...`)
894
+
895
+ const results = await Promise.allSettled(
896
+ urls.map(url => this.safeRequest(`${url}/ping`))
897
+ )
898
+
899
+ results.forEach((result, index) => {
900
+ const url = urls[index]
901
+
902
+ if (result.status === 'fulfilled' && result.value.success) {
903
+ reachable.push(url)
904
+ console.log(` ${url} - reachable`)
905
+ } else {
906
+ unreachable.push(url)
907
+ const error = result.status === 'fulfilled'
908
+ ? result.value.error?.message || 'Unknown error'
909
+ : result.reason.message
910
+ errors[url] = error
911
+ console.log(` ${url} - ${error}`)
912
+ }
913
+ })
914
+
915
+ return { reachable, unreachable, errors }
916
+ }
917
+ }
918
+
919
+ async function demonstrateErrorHandling() {
920
+ const authClient = new AuthFetchWithErrorHandling(undefined, true) // Debug mode on
921
+
922
+ console.log('=== Testing error handling ===')
923
+
924
+ // Test various scenarios
925
+ const testUrls = [
926
+ 'https://httpbin.org/status/200', // Should succeed
927
+ 'https://httpbin.org/status/401', // Authentication error
928
+ 'https://httpbin.org/status/403', // Certificate error
929
+ 'https://httpbin.org/status/500', // Server error
930
+ 'https://invalid-domain-12345.com' // Network error
931
+ ]
932
+
933
+ for (const url of testUrls) {
934
+ console.log(`\n--- Testing: ${url} ---`)
935
+ const result = await authClient.safeRequest(url)
936
+
937
+ if (result.success) {
938
+ console.log(' Request successful')
939
+ } else {
940
+ console.log(` Request failed: ${result.error?.type} - ${result.error?.message}`)
941
+ }
942
+ }
943
+
944
+ // Test connectivity to multiple endpoints
945
+ console.log('\n=== Testing connectivity ===')
946
+ const connectivityTest = await authClient.testConnectivity([
947
+ 'https://httpbin.org',
948
+ 'https://jsonplaceholder.typicode.com',
949
+ 'https://invalid-endpoint.example.com'
950
+ ])
951
+
952
+ console.log('Connectivity results:', connectivityTest)
953
+
954
+ return connectivityTest
955
+ }
956
+
957
+ demonstrateErrorHandling().catch(console.error)