@bsv/sdk 1.3.12 → 1.3.14

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 (607) hide show
  1. package/dist/cjs/package.json +15 -3
  2. package/dist/cjs/src/auth/Peer.js +83 -57
  3. package/dist/cjs/src/auth/Peer.js.map +1 -1
  4. package/dist/cjs/src/auth/SessionManager.js +14 -9
  5. package/dist/cjs/src/auth/SessionManager.js.map +1 -1
  6. package/dist/cjs/src/auth/certificates/Certificate.js +16 -10
  7. package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
  8. package/dist/cjs/src/auth/certificates/MasterCertificate.js +25 -23
  9. package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
  10. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +2 -2
  11. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  12. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +62 -46
  13. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  14. package/dist/cjs/src/auth/clients/AuthFetch.js +1 -0
  15. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  16. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +70 -43
  17. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  18. package/dist/cjs/src/auth/utils/createNonce.js +2 -1
  19. package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
  20. package/dist/cjs/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  21. package/dist/cjs/src/auth/utils/validateCertificates.js +5 -2
  22. package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
  23. package/dist/cjs/src/auth/utils/verifyNonce.js +2 -1
  24. package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
  25. package/dist/cjs/src/compat/BSM.js +7 -17
  26. package/dist/cjs/src/compat/BSM.js.map +1 -1
  27. package/dist/cjs/src/compat/ECIES.js +172 -133
  28. package/dist/cjs/src/compat/ECIES.js.map +1 -1
  29. package/dist/cjs/src/compat/HD.js +63 -73
  30. package/dist/cjs/src/compat/HD.js.map +1 -1
  31. package/dist/cjs/src/compat/Mnemonic.js +102 -106
  32. package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
  33. package/dist/cjs/src/compat/Utxo.js +2 -2
  34. package/dist/cjs/src/compat/Utxo.js.map +1 -1
  35. package/dist/cjs/src/compat/index.js +7 -17
  36. package/dist/cjs/src/compat/index.js.map +1 -1
  37. package/dist/cjs/src/messages/EncryptedMessage.js +3 -1
  38. package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
  39. package/dist/cjs/src/messages/SignedMessage.js +1 -0
  40. package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
  41. package/dist/cjs/src/messages/index.js +7 -17
  42. package/dist/cjs/src/messages/index.js.map +1 -1
  43. package/dist/cjs/src/overlay-tools/LookupResolver.js +54 -35
  44. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
  45. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
  46. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  47. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +40 -28
  48. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  49. package/dist/cjs/src/primitives/AESGCM.js +6 -5
  50. package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
  51. package/dist/cjs/src/primitives/BasePoint.js +1 -1
  52. package/dist/cjs/src/primitives/BasePoint.js.map +1 -1
  53. package/dist/cjs/src/primitives/BigNumber.js +50 -62
  54. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  55. package/dist/cjs/src/primitives/Curve.js +46 -22
  56. package/dist/cjs/src/primitives/Curve.js.map +1 -1
  57. package/dist/cjs/src/primitives/DRBG.js +2 -8
  58. package/dist/cjs/src/primitives/DRBG.js.map +1 -1
  59. package/dist/cjs/src/primitives/ECDSA.js +51 -35
  60. package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
  61. package/dist/cjs/src/primitives/Hash.js +191 -216
  62. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  63. package/dist/cjs/src/primitives/JacobianPoint.js +19 -5
  64. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
  65. package/dist/cjs/src/primitives/K256.js.map +1 -1
  66. package/dist/cjs/src/primitives/Mersenne.js.map +1 -1
  67. package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -1
  68. package/dist/cjs/src/primitives/Point.js +117 -88
  69. package/dist/cjs/src/primitives/Point.js.map +1 -1
  70. package/dist/cjs/src/primitives/Polynomial.js +4 -2
  71. package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
  72. package/dist/cjs/src/primitives/PrivateKey.js +32 -33
  73. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  74. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  75. package/dist/cjs/src/primitives/Random.js +6 -5
  76. package/dist/cjs/src/primitives/Random.js.map +1 -1
  77. package/dist/cjs/src/primitives/ReductionContext.js +1 -1
  78. package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
  79. package/dist/cjs/src/primitives/Schnorr.js +21 -15
  80. package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
  81. package/dist/cjs/src/primitives/Signature.js +8 -7
  82. package/dist/cjs/src/primitives/Signature.js.map +1 -1
  83. package/dist/cjs/src/primitives/SymmetricKey.js +13 -13
  84. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
  85. package/dist/cjs/src/primitives/TransactionSignature.js +31 -29
  86. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  87. package/dist/cjs/src/primitives/index.js +7 -17
  88. package/dist/cjs/src/primitives/index.js.map +1 -1
  89. package/dist/cjs/src/primitives/utils.js +79 -68
  90. package/dist/cjs/src/primitives/utils.js.map +1 -1
  91. package/dist/cjs/src/script/OP.js +3 -3
  92. package/dist/cjs/src/script/OP.js.map +1 -1
  93. package/dist/cjs/src/script/Script.js +12 -10
  94. package/dist/cjs/src/script/Script.js.map +1 -1
  95. package/dist/cjs/src/script/Spend.js +47 -49
  96. package/dist/cjs/src/script/Spend.js.map +1 -1
  97. package/dist/cjs/src/script/templates/P2PKH.js +24 -12
  98. package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
  99. package/dist/cjs/src/script/templates/PushDrop.js +28 -23
  100. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  101. package/dist/cjs/src/script/templates/RPuzzle.js +10 -6
  102. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  103. package/dist/cjs/src/totp/totp.js +2 -1
  104. package/dist/cjs/src/totp/totp.js.map +1 -1
  105. package/dist/cjs/src/transaction/Beef.js +177 -154
  106. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  107. package/dist/cjs/src/transaction/BeefParty.js +24 -24
  108. package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
  109. package/dist/cjs/src/transaction/BeefTx.js +26 -18
  110. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  111. package/dist/cjs/src/transaction/Broadcaster.js +3 -2
  112. package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
  113. package/dist/cjs/src/transaction/MerklePath.js +64 -37
  114. package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
  115. package/dist/cjs/src/transaction/Transaction.js +111 -137
  116. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  117. package/dist/cjs/src/transaction/broadcasters/ARC.js +25 -16
  118. package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
  119. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +2 -1
  120. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  121. package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  122. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +2 -1
  123. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
  124. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
  125. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  126. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  127. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +5 -3
  128. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  129. package/dist/cjs/src/transaction/http/FetchHttpClient.js +5 -2
  130. package/dist/cjs/src/transaction/http/FetchHttpClient.js.map +1 -1
  131. package/dist/cjs/src/transaction/http/NodejsHttpClient.js +5 -3
  132. package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
  133. package/dist/cjs/src/transaction/http/index.js.map +1 -1
  134. package/dist/cjs/src/transaction/index.js.map +1 -1
  135. package/dist/cjs/src/wallet/CachedKeyDeriver.js +91 -66
  136. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
  137. package/dist/cjs/src/wallet/KeyDeriver.js +61 -52
  138. package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
  139. package/dist/cjs/src/wallet/ProtoWallet.js +79 -29
  140. package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
  141. package/dist/cjs/src/wallet/WalletClient.js +7 -2
  142. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  143. package/dist/cjs/src/wallet/WalletError.js +2 -2
  144. package/dist/cjs/src/wallet/WalletError.js.map +1 -1
  145. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +4 -3
  146. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  147. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +2 -2
  148. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  149. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
  150. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  151. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +102 -43
  152. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  153. package/dist/cjs/src/wallet/substrates/XDM.js +8 -3
  154. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
  155. package/dist/cjs/src/wallet/substrates/window.CWI.js +28 -28
  156. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  157. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  158. package/dist/esm/mod.js +15 -15
  159. package/dist/esm/src/auth/Peer.js +75 -54
  160. package/dist/esm/src/auth/Peer.js.map +1 -1
  161. package/dist/esm/src/auth/SessionManager.js +14 -9
  162. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  163. package/dist/esm/src/auth/certificates/Certificate.js +15 -11
  164. package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
  165. package/dist/esm/src/auth/certificates/MasterCertificate.js +25 -23
  166. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  167. package/dist/esm/src/auth/certificates/VerifiableCertificate.js +2 -2
  168. package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  169. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +64 -47
  170. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  171. package/dist/esm/src/auth/clients/AuthFetch.js +1 -0
  172. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  173. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +69 -43
  174. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  175. package/dist/esm/src/auth/utils/createNonce.js.map +1 -1
  176. package/dist/esm/src/auth/utils/getVerifiableCertificates.js +1 -1
  177. package/dist/esm/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  178. package/dist/esm/src/auth/utils/validateCertificates.js +6 -3
  179. package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
  180. package/dist/esm/src/auth/utils/verifyNonce.js.map +1 -1
  181. package/dist/esm/src/compat/BSM.js.map +1 -1
  182. package/dist/esm/src/compat/ECIES.js +165 -116
  183. package/dist/esm/src/compat/ECIES.js.map +1 -1
  184. package/dist/esm/src/compat/HD.js +56 -56
  185. package/dist/esm/src/compat/HD.js.map +1 -1
  186. package/dist/esm/src/compat/Mnemonic.js +95 -89
  187. package/dist/esm/src/compat/Mnemonic.js.map +1 -1
  188. package/dist/esm/src/compat/Utxo.js +1 -1
  189. package/dist/esm/src/compat/Utxo.js.map +1 -1
  190. package/dist/esm/src/messages/EncryptedMessage.js +3 -1
  191. package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
  192. package/dist/esm/src/messages/SignedMessage.js +1 -0
  193. package/dist/esm/src/messages/SignedMessage.js.map +1 -1
  194. package/dist/esm/src/overlay-tools/LookupResolver.js +53 -35
  195. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  196. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
  197. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  198. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +40 -28
  199. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  200. package/dist/esm/src/primitives/AESGCM.js +1 -0
  201. package/dist/esm/src/primitives/AESGCM.js.map +1 -1
  202. package/dist/esm/src/primitives/BasePoint.js +1 -1
  203. package/dist/esm/src/primitives/BasePoint.js.map +1 -1
  204. package/dist/esm/src/primitives/BigNumber.js +50 -62
  205. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  206. package/dist/esm/src/primitives/Curve.js +45 -22
  207. package/dist/esm/src/primitives/Curve.js.map +1 -1
  208. package/dist/esm/src/primitives/DRBG.js +2 -8
  209. package/dist/esm/src/primitives/DRBG.js.map +1 -1
  210. package/dist/esm/src/primitives/ECDSA.js +50 -35
  211. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  212. package/dist/esm/src/primitives/Hash.js +188 -213
  213. package/dist/esm/src/primitives/Hash.js.map +1 -1
  214. package/dist/esm/src/primitives/JacobianPoint.js +18 -5
  215. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
  216. package/dist/esm/src/primitives/K256.js.map +1 -1
  217. package/dist/esm/src/primitives/Mersenne.js.map +1 -1
  218. package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -1
  219. package/dist/esm/src/primitives/Point.js +107 -88
  220. package/dist/esm/src/primitives/Point.js.map +1 -1
  221. package/dist/esm/src/primitives/Polynomial.js +4 -2
  222. package/dist/esm/src/primitives/Polynomial.js.map +1 -1
  223. package/dist/esm/src/primitives/PrivateKey.js +25 -16
  224. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  225. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  226. package/dist/esm/src/primitives/Random.js +7 -6
  227. package/dist/esm/src/primitives/Random.js.map +1 -1
  228. package/dist/esm/src/primitives/ReductionContext.js +1 -1
  229. package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
  230. package/dist/esm/src/primitives/Schnorr.js +21 -15
  231. package/dist/esm/src/primitives/Schnorr.js.map +1 -1
  232. package/dist/esm/src/primitives/Signature.js +8 -7
  233. package/dist/esm/src/primitives/Signature.js.map +1 -1
  234. package/dist/esm/src/primitives/SymmetricKey.js +13 -13
  235. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
  236. package/dist/esm/src/primitives/TransactionSignature.js +22 -12
  237. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  238. package/dist/esm/src/primitives/utils.js +76 -66
  239. package/dist/esm/src/primitives/utils.js.map +1 -1
  240. package/dist/esm/src/script/OP.js +3 -3
  241. package/dist/esm/src/script/OP.js.map +1 -1
  242. package/dist/esm/src/script/Script.js +12 -10
  243. package/dist/esm/src/script/Script.js.map +1 -1
  244. package/dist/esm/src/script/Spend.js +39 -32
  245. package/dist/esm/src/script/Spend.js.map +1 -1
  246. package/dist/esm/src/script/templates/P2PKH.js +26 -11
  247. package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
  248. package/dist/esm/src/script/templates/PushDrop.js +29 -22
  249. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  250. package/dist/esm/src/script/templates/RPuzzle.js +11 -6
  251. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  252. package/dist/esm/src/totp/totp.js +2 -1
  253. package/dist/esm/src/totp/totp.js.map +1 -1
  254. package/dist/esm/src/transaction/Beef.js +176 -154
  255. package/dist/esm/src/transaction/Beef.js.map +1 -1
  256. package/dist/esm/src/transaction/BeefParty.js +24 -24
  257. package/dist/esm/src/transaction/BeefParty.js.map +1 -1
  258. package/dist/esm/src/transaction/BeefTx.js +26 -18
  259. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  260. package/dist/esm/src/transaction/Broadcaster.js.map +1 -1
  261. package/dist/esm/src/transaction/MerklePath.js +61 -36
  262. package/dist/esm/src/transaction/MerklePath.js.map +1 -1
  263. package/dist/esm/src/transaction/Transaction.js +105 -138
  264. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  265. package/dist/esm/src/transaction/broadcasters/ARC.js +25 -16
  266. package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
  267. package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  268. package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  269. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
  270. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  271. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  272. package/dist/esm/src/transaction/http/DefaultHttpClient.js +3 -2
  273. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  274. package/dist/esm/src/transaction/http/FetchHttpClient.js +4 -2
  275. package/dist/esm/src/transaction/http/FetchHttpClient.js.map +1 -1
  276. package/dist/esm/src/transaction/http/NodejsHttpClient.js +5 -3
  277. package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
  278. package/dist/esm/src/transaction/http/index.js.map +1 -1
  279. package/dist/esm/src/transaction/index.js.map +1 -1
  280. package/dist/esm/src/wallet/CachedKeyDeriver.js +91 -66
  281. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
  282. package/dist/esm/src/wallet/KeyDeriver.js +60 -52
  283. package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
  284. package/dist/esm/src/wallet/ProtoWallet.js +75 -29
  285. package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
  286. package/dist/esm/src/wallet/WalletClient.js +7 -2
  287. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  288. package/dist/esm/src/wallet/WalletError.js +2 -2
  289. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  290. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +4 -4
  291. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  292. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js +2 -2
  293. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  294. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
  295. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  296. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +95 -43
  297. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  298. package/dist/esm/src/wallet/substrates/XDM.js +8 -3
  299. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
  300. package/dist/esm/src/wallet/substrates/window.CWI.js +28 -28
  301. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  302. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  303. package/dist/types/mod.d.ts +15 -15
  304. package/dist/types/src/auth/Peer.d.ts +10 -10
  305. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  306. package/dist/types/src/auth/SessionManager.d.ts +4 -4
  307. package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
  308. package/dist/types/src/auth/certificates/Certificate.d.ts +6 -6
  309. package/dist/types/src/auth/certificates/Certificate.d.ts.map +1 -1
  310. package/dist/types/src/auth/certificates/MasterCertificate.d.ts +5 -5
  311. package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
  312. package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts.map +1 -1
  313. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts +23 -22
  314. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts.map +1 -1
  315. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  316. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts +1 -1
  317. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts.map +1 -1
  318. package/dist/types/src/auth/utils/createNonce.d.ts.map +1 -1
  319. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts +3 -3
  320. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
  321. package/dist/types/src/auth/utils/validateCertificates.d.ts +2 -2
  322. package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
  323. package/dist/types/src/auth/utils/verifyNonce.d.ts +1 -1
  324. package/dist/types/src/auth/utils/verifyNonce.d.ts.map +1 -1
  325. package/dist/types/src/compat/BSM.d.ts +1 -1
  326. package/dist/types/src/compat/BSM.d.ts.map +1 -1
  327. package/dist/types/src/compat/ECIES.d.ts +36 -36
  328. package/dist/types/src/compat/ECIES.d.ts.map +1 -1
  329. package/dist/types/src/compat/HD.d.ts +51 -51
  330. package/dist/types/src/compat/HD.d.ts.map +1 -1
  331. package/dist/types/src/compat/Mnemonic.d.ts +79 -79
  332. package/dist/types/src/compat/Mnemonic.d.ts.map +1 -1
  333. package/dist/types/src/compat/Utxo.d.ts.map +1 -1
  334. package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
  335. package/dist/types/src/messages/SignedMessage.d.ts.map +1 -1
  336. package/dist/types/src/overlay-tools/LookupResolver.d.ts +9 -9
  337. package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
  338. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +17 -17
  339. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -1
  340. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +14 -14
  341. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
  342. package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
  343. package/dist/types/src/primitives/BasePoint.d.ts +8 -8
  344. package/dist/types/src/primitives/BasePoint.d.ts.map +1 -1
  345. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  346. package/dist/types/src/primitives/Curve.d.ts +14 -7
  347. package/dist/types/src/primitives/Curve.d.ts.map +1 -1
  348. package/dist/types/src/primitives/DRBG.d.ts.map +1 -1
  349. package/dist/types/src/primitives/ECDSA.d.ts +1 -1
  350. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  351. package/dist/types/src/primitives/Hash.d.ts +11 -11
  352. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  353. package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
  354. package/dist/types/src/primitives/Point.d.ts +14 -10
  355. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  356. package/dist/types/src/primitives/Polynomial.d.ts.map +1 -1
  357. package/dist/types/src/primitives/PrivateKey.d.ts +2 -2
  358. package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
  359. package/dist/types/src/primitives/PublicKey.d.ts.map +1 -1
  360. package/dist/types/src/primitives/Random.d.ts.map +1 -1
  361. package/dist/types/src/primitives/Schnorr.d.ts +14 -14
  362. package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
  363. package/dist/types/src/primitives/Signature.d.ts +1 -1
  364. package/dist/types/src/primitives/Signature.d.ts.map +1 -1
  365. package/dist/types/src/primitives/SymmetricKey.d.ts +13 -13
  366. package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
  367. package/dist/types/src/primitives/TransactionSignature.d.ts +4 -4
  368. package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
  369. package/dist/types/src/primitives/utils.d.ts +3 -6
  370. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  371. package/dist/types/src/script/Script.d.ts +3 -3
  372. package/dist/types/src/script/Script.d.ts.map +1 -1
  373. package/dist/types/src/script/ScriptTemplate.d.ts +2 -2
  374. package/dist/types/src/script/ScriptTemplate.d.ts.map +1 -1
  375. package/dist/types/src/script/Spend.d.ts.map +1 -1
  376. package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -1
  377. package/dist/types/src/script/templates/PushDrop.d.ts +1 -2
  378. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  379. package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
  380. package/dist/types/src/totp/totp.d.ts.map +1 -1
  381. package/dist/types/src/transaction/Beef.d.ts +96 -96
  382. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  383. package/dist/types/src/transaction/BeefParty.d.ts +22 -22
  384. package/dist/types/src/transaction/BeefParty.d.ts.map +1 -1
  385. package/dist/types/src/transaction/BeefTx.d.ts +5 -5
  386. package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
  387. package/dist/types/src/transaction/Broadcaster.d.ts.map +1 -1
  388. package/dist/types/src/transaction/ChainTracker.d.ts +2 -2
  389. package/dist/types/src/transaction/FeeModel.d.ts.map +1 -1
  390. package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
  391. package/dist/types/src/transaction/Transaction.d.ts +4 -12
  392. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  393. package/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -1
  394. package/dist/types/src/transaction/broadcasters/ARC.d.ts +1 -1
  395. package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
  396. package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts.map +1 -1
  397. package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts.map +1 -1
  398. package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts.map +1 -1
  399. package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -1
  400. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -1
  401. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts +1 -1
  402. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts.map +1 -1
  403. package/dist/types/src/transaction/http/FetchHttpClient.d.ts +5 -5
  404. package/dist/types/src/transaction/http/FetchHttpClient.d.ts.map +1 -1
  405. package/dist/types/src/transaction/http/HttpClient.d.ts +4 -4
  406. package/dist/types/src/transaction/http/HttpClient.d.ts.map +1 -1
  407. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts +3 -3
  408. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts.map +1 -1
  409. package/dist/types/src/transaction/http/index.d.ts.map +1 -1
  410. package/dist/types/src/transaction/index.d.ts.map +1 -1
  411. package/dist/types/src/wallet/CachedKeyDeriver.d.ts +58 -58
  412. package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
  413. package/dist/types/src/wallet/KeyDeriver.d.ts +78 -78
  414. package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
  415. package/dist/types/src/wallet/ProtoWallet.d.ts +10 -10
  416. package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -1
  417. package/dist/types/src/wallet/Wallet.interfaces.d.ts +151 -152
  418. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  419. package/dist/types/src/wallet/WalletClient.d.ts +5 -5
  420. package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
  421. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +6 -6
  422. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  423. package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts.map +1 -1
  424. package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -1
  425. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
  426. package/dist/types/src/wallet/substrates/XDM.d.ts +1 -1
  427. package/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -1
  428. package/dist/types/src/wallet/substrates/window.CWI.d.ts +6 -6
  429. package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
  430. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  431. package/dist/umd/bundle.js +1 -1
  432. package/docs/auth.md +92 -82
  433. package/docs/compat.md +24 -24
  434. package/docs/messages.md +7 -5
  435. package/docs/overlay-tools.md +21 -21
  436. package/docs/primitives.md +336 -315
  437. package/docs/script.md +35 -35
  438. package/docs/swagger/dist/swagger-initializer.js +7 -7
  439. package/docs/swagger/dist/swagger-ui-bundle.js +1 -1
  440. package/docs/swagger/dist/swagger-ui-es-bundle-core.js +2 -2
  441. package/docs/swagger/dist/swagger-ui-es-bundle.js +1 -1
  442. package/docs/swagger/dist/swagger-ui-standalone-preset.js +1 -1
  443. package/docs/swagger/dist/swagger-ui.js +2 -2
  444. package/docs/totp.md +5 -5
  445. package/docs/transaction.md +103 -105
  446. package/docs/wallet-substrates.md +17 -17
  447. package/docs/wallet.md +202 -204
  448. package/mod.ts +15 -15
  449. package/package.json +15 -3
  450. package/src/auth/Peer.ts +271 -121
  451. package/src/auth/SessionManager.ts +17 -10
  452. package/src/auth/__tests/Peer.test.ts +361 -179
  453. package/src/auth/__tests/SessionManager.test.ts +67 -19
  454. package/src/auth/__tests/build.test.ts +11 -0
  455. package/src/auth/certificates/Certificate.ts +27 -14
  456. package/src/auth/certificates/MasterCertificate.ts +106 -62
  457. package/src/auth/certificates/VerifiableCertificate.ts +30 -8
  458. package/src/auth/certificates/__tests/Certificate.test.ts +32 -17
  459. package/src/auth/certificates/__tests/CompletedProtoWallet.ts +171 -68
  460. package/src/auth/certificates/__tests/MasterCertificate.test.ts +63 -47
  461. package/src/auth/certificates/__tests/VerifiableCertificate.test.ts +42 -31
  462. package/src/auth/certificates/index.ts +1 -1
  463. package/src/auth/clients/AuthFetch.ts +1 -0
  464. package/src/auth/clients/index.ts +1 -1
  465. package/src/auth/transports/SimplifiedFetchTransport.ts +145 -72
  466. package/src/auth/transports/index.ts +1 -1
  467. package/src/auth/utils/__tests/cryptononce.test.ts +52 -23
  468. package/src/auth/utils/__tests/getVerifiableCertificates.test.ts +56 -30
  469. package/src/auth/utils/__tests/validateCertificates.test.ts +53 -31
  470. package/src/auth/utils/createNonce.ts +11 -3
  471. package/src/auth/utils/getVerifiableCertificates.ts +12 -7
  472. package/src/auth/utils/validateCertificates.ts +57 -39
  473. package/src/auth/utils/verifyNonce.ts +6 -2
  474. package/src/compat/BSM.ts +10 -2
  475. package/src/compat/ECIES.ts +265 -141
  476. package/src/compat/HD.ts +81 -63
  477. package/src/compat/Mnemonic.ts +104 -91
  478. package/src/compat/Utxo.ts +8 -5
  479. package/src/compat/__tests/BSM.test.ts +42 -16
  480. package/src/compat/__tests/ECIES.test.ts +117 -52
  481. package/src/compat/__tests/HD.test.ts +55 -42
  482. package/src/compat/__tests/Mnemonic.test.ts +11 -12
  483. package/src/compat/__tests/Mnemonic.vectors.ts +110 -55
  484. package/src/messages/EncryptedMessage.ts +6 -2
  485. package/src/messages/SignedMessage.ts +14 -8
  486. package/src/messages/__tests/EncryptedMessage.test.ts +23 -24
  487. package/src/messages/__tests/SignedMessage.test.ts +17 -11
  488. package/src/overlay-tools/LookupResolver.ts +108 -56
  489. package/src/overlay-tools/OverlayAdminTokenTemplate.ts +52 -23
  490. package/src/overlay-tools/SHIPBroadcaster.ts +135 -59
  491. package/src/overlay-tools/__tests/LookupResolver.test.ts +723 -323
  492. package/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.ts +50 -22
  493. package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +607 -290
  494. package/src/primitives/AESGCM.ts +2 -0
  495. package/src/primitives/BasePoint.ts +4 -4
  496. package/src/primitives/BigNumber.ts +99 -90
  497. package/src/primitives/Curve.ts +117 -46
  498. package/src/primitives/DRBG.ts +9 -11
  499. package/src/primitives/ECDSA.ts +109 -63
  500. package/src/primitives/Hash.ts +492 -321
  501. package/src/primitives/JacobianPoint.ts +67 -19
  502. package/src/primitives/Point.ts +254 -152
  503. package/src/primitives/Polynomial.ts +8 -3
  504. package/src/primitives/PrivateKey.ts +41 -17
  505. package/src/primitives/PublicKey.ts +13 -3
  506. package/src/primitives/Random.ts +14 -8
  507. package/src/primitives/ReductionContext.ts +1 -1
  508. package/src/primitives/Schnorr.ts +40 -18
  509. package/src/primitives/Signature.ts +26 -16
  510. package/src/primitives/SymmetricKey.ts +14 -14
  511. package/src/primitives/TransactionSignature.ts +41 -17
  512. package/src/primitives/__tests/AESGCM.test.ts +457 -151
  513. package/src/primitives/__tests/BRC42.private.vectors.ts +30 -15
  514. package/src/primitives/__tests/BRC42.public.vectors.ts +30 -15
  515. package/src/primitives/__tests/BigNumber.arithmatic.test.ts +344 -125
  516. package/src/primitives/__tests/BigNumber.binary.test.ts +148 -67
  517. package/src/primitives/__tests/BigNumber.constructor.test.ts +65 -25
  518. package/src/primitives/__tests/BigNumber.dhGroup.test.ts +15 -11
  519. package/src/primitives/__tests/BigNumber.fixtures.ts +16 -8
  520. package/src/primitives/__tests/BigNumber.serializers.test.ts +41 -15
  521. package/src/primitives/__tests/BigNumber.utils.test.ts +132 -42
  522. package/src/primitives/__tests/Curve.unit.test.ts +75 -53
  523. package/src/primitives/__tests/DRBG.test.ts +1 -1
  524. package/src/primitives/__tests/DRBG.vectors.ts +45 -75
  525. package/src/primitives/__tests/ECDH.test.ts +15 -8
  526. package/src/primitives/__tests/ECDSA.test.ts +12 -6
  527. package/src/primitives/__tests/HMAC.test.ts +24 -18
  528. package/src/primitives/__tests/Hash.test.ts +57 -46
  529. package/src/primitives/__tests/PBKDF2.vectors.ts +130 -117
  530. package/src/primitives/__tests/PrivateKey.split.test.ts +33 -11
  531. package/src/primitives/__tests/PrivateKey.test.ts +11 -10
  532. package/src/primitives/__tests/PublicKey.test.ts +64 -53
  533. package/src/primitives/__tests/Random.test.ts +1 -1
  534. package/src/primitives/__tests/Reader.test.ts +240 -219
  535. package/src/primitives/__tests/ReductionContext.test.ts +98 -61
  536. package/src/primitives/__tests/Schnorr.test.ts +249 -237
  537. package/src/primitives/__tests/SymmetricKey.test.ts +18 -15
  538. package/src/primitives/__tests/SymmetricKey.vectors.ts +16 -8
  539. package/src/primitives/__tests/Writer.test.ts +23 -13
  540. package/src/primitives/__tests/bug-31.test.ts +6 -10
  541. package/src/primitives/__tests/utils.test.ts +70 -19
  542. package/src/primitives/utils.ts +103 -79
  543. package/src/script/Script.ts +18 -12
  544. package/src/script/ScriptTemplate.ts +3 -5
  545. package/src/script/Spend.ts +306 -108
  546. package/src/script/__tests/Script.test.ts +73 -55
  547. package/src/script/__tests/Spend.test.ts +208 -83
  548. package/src/script/__tests/SpendComplex.test.ts +19 -13
  549. package/src/script/__tests/script.invalid.vectors.ts +428 -1796
  550. package/src/script/__tests/script.valid.vectors.ts +728 -2764
  551. package/src/script/templates/P2PKH.ts +34 -12
  552. package/src/script/templates/PushDrop.ts +65 -31
  553. package/src/script/templates/RPuzzle.ts +29 -8
  554. package/src/script/templates/__tests/PushDrop.test.ts +146 -41
  555. package/src/totp/__tests/totp.test.ts +45 -44
  556. package/src/totp/totp.ts +3 -2
  557. package/src/transaction/Beef.ts +269 -174
  558. package/src/transaction/BeefParty.ts +41 -31
  559. package/src/transaction/BeefTx.ts +36 -26
  560. package/src/transaction/Broadcaster.ts +10 -6
  561. package/src/transaction/ChainTracker.ts +2 -2
  562. package/src/transaction/FeeModel.ts +0 -1
  563. package/src/transaction/MerklePath.ts +124 -59
  564. package/src/transaction/Transaction.ts +188 -187
  565. package/src/transaction/TransactionOutput.ts +0 -1
  566. package/src/transaction/__tests/Beef.test.ts +390 -287
  567. package/src/transaction/__tests/MerklePath.test.ts +59 -26
  568. package/src/transaction/__tests/Transaction.benchmarks.test.ts +231 -201
  569. package/src/transaction/__tests/Transaction.test.ts +758 -482
  570. package/src/transaction/__tests/bigtx.vectors.ts +2 -1
  571. package/src/transaction/__tests/bump.invalid.vectors.ts +24 -6
  572. package/src/transaction/__tests/bump.valid.vectors.ts +6 -2
  573. package/src/transaction/__tests/tx.invalid.vectors.ts +881 -185
  574. package/src/transaction/__tests/tx.valid.vectors.ts +1210 -257
  575. package/src/transaction/broadcasters/ARC.ts +69 -38
  576. package/src/transaction/broadcasters/DefaultBroadcaster.ts +9 -3
  577. package/src/transaction/broadcasters/WhatsOnChainBroadcaster.ts +20 -7
  578. package/src/transaction/broadcasters/__tests/ARC.test.ts +127 -59
  579. package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +27 -18
  580. package/src/transaction/chaintrackers/DefaultChainTracker.ts +1 -1
  581. package/src/transaction/chaintrackers/WhatsOnChain.ts +27 -11
  582. package/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +59 -23
  583. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +9 -5
  584. package/src/transaction/http/DefaultHttpClient.ts +5 -4
  585. package/src/transaction/http/FetchHttpClient.ts +18 -9
  586. package/src/transaction/http/HttpClient.ts +27 -22
  587. package/src/transaction/http/NodejsHttpClient.ts +23 -9
  588. package/src/transaction/http/index.ts +5 -1
  589. package/src/transaction/index.ts +5 -1
  590. package/src/wallet/CachedKeyDeriver.ts +151 -82
  591. package/src/wallet/KeyDeriver.ts +186 -105
  592. package/src/wallet/ProtoWallet.ts +121 -52
  593. package/src/wallet/Wallet.interfaces.ts +167 -156
  594. package/src/wallet/WalletClient.ts +314 -59
  595. package/src/wallet/WalletError.ts +2 -2
  596. package/src/wallet/__tests/CachedKeyDeriver.test.ts +86 -27
  597. package/src/wallet/__tests/KeyDeriver.test.ts +136 -33
  598. package/src/wallet/__tests/ProtoWallet.test.ts +190 -102
  599. package/src/wallet/substrates/HTTPWalletJSON.ts +250 -67
  600. package/src/wallet/substrates/HTTPWalletWire.ts +7 -3
  601. package/src/wallet/substrates/WalletWireCalls.ts +2 -2
  602. package/src/wallet/substrates/WalletWireProcessor.ts +1412 -1277
  603. package/src/wallet/substrates/WalletWireTransceiver.ts +713 -138
  604. package/src/wallet/substrates/XDM.ts +425 -36
  605. package/src/wallet/substrates/__tests/WalletWire.integration.test.ts +488 -225
  606. package/src/wallet/substrates/__tests/XDM.test.ts +232 -234
  607. package/src/wallet/substrates/window.CWI.ts +520 -61
@@ -8,6 +8,11 @@ const MerklePath_js_1 = __importDefault(require("./MerklePath.js"));
8
8
  const BeefTx_js_1 = __importDefault(require("./BeefTx.js"));
9
9
  const utils_js_1 = require("../primitives/utils.js");
10
10
  const Hash_js_1 = require("../primitives/Hash.js");
11
+ function verifyTruthy(v) {
12
+ if (v == null)
13
+ throw new Error('Expected a valid value, but got undefined.');
14
+ return v;
15
+ }
11
16
  exports.BEEF_V1 = 4022206465; // 0100BEEF in LE order
12
17
  exports.BEEF_V2 = 4022206466; // 0200BEEF in LE order
13
18
  exports.ATOMIC_BEEF = 0x01010101; // 01010101
@@ -79,11 +84,11 @@ class Beef {
79
84
  this.version = version;
80
85
  }
81
86
  /**
82
- * @param txid of `beefTx` to find
83
- * @returns `BeefTx` in `txs` with `txid`.
84
- */
87
+ * @param txid of `beefTx` to find
88
+ * @returns `BeefTx` in `txs` with `txid`.
89
+ */
85
90
  findTxid(txid) {
86
- return this.txs.find(tx => tx.txid === txid);
91
+ return this.txs.find((tx) => tx.txid === txid);
87
92
  }
88
93
  /**
89
94
  * Replaces `BeefTx` for this txid with txidOnly.
@@ -96,7 +101,7 @@ class Beef {
96
101
  * @returns undefined if txid is unknown.
97
102
  */
98
103
  makeTxidOnly(txid) {
99
- const i = this.txs.findIndex(tx => tx.txid === txid);
104
+ const i = this.txs.findIndex((tx) => tx.txid === txid);
100
105
  if (i === -1)
101
106
  return undefined;
102
107
  let btx = this.txs[i];
@@ -111,7 +116,8 @@ class Beef {
111
116
  * @returns `MerklePath` with level zero hash equal to txid or undefined.
112
117
  */
113
118
  findBump(txid) {
114
- return this.bumps.find(b => b.path[0].find(leaf => leaf.hash === txid));
119
+ return this.bumps.find((b) => b.path[0].some((leaf) => leaf.hash === txid) // ✅ Ensure boolean return with `.some()`
120
+ );
115
121
  }
116
122
  /**
117
123
  * Finds a Transaction in this `Beef`
@@ -124,12 +130,12 @@ class Beef {
124
130
  */
125
131
  findTransactionForSigning(txid) {
126
132
  const beefTx = this.findTxid(txid);
127
- if (!beefTx)
128
- return undefined;
133
+ if ((beefTx == null) || (beefTx.tx == null))
134
+ return undefined; // Ensure beefTx.tx exists before using it
129
135
  for (const i of beefTx.tx.inputs) {
130
- if (!i.sourceTransaction) {
131
- const itx = this.findTxid(i.sourceTXID);
132
- if (itx) {
136
+ if (i.sourceTransaction == null) {
137
+ const itx = this.findTxid(verifyTruthy(i.sourceTXID)); // Ensure sourceTXID is valid
138
+ if (itx != null) {
133
139
  i.sourceTransaction = itx.tx;
134
140
  }
135
141
  }
@@ -146,24 +152,24 @@ class Beef {
146
152
  */
147
153
  findAtomicTransaction(txid) {
148
154
  const beefTx = this.findTxid(txid);
149
- if (!beefTx)
150
- return undefined;
155
+ if ((beefTx == null) || (beefTx.tx == null))
156
+ return undefined; // Ensure beefTx.tx exists before using it
151
157
  const addInputProof = (beef, tx) => {
152
158
  const mp = beef.findBump(tx.id('hex'));
153
- if (mp) {
159
+ if (mp != null) {
154
160
  tx.merklePath = mp;
155
161
  }
156
162
  else {
157
163
  for (const i of tx.inputs) {
158
- if (!i.sourceTransaction) {
159
- const itx = beef.findTxid(i.sourceTXID);
160
- if (itx) {
164
+ if (i.sourceTransaction == null) {
165
+ const itx = beef.findTxid(verifyTruthy(i.sourceTXID)); // Ensure sourceTXID is valid
166
+ if (itx != null) {
161
167
  i.sourceTransaction = itx.tx;
162
168
  }
163
169
  }
164
- if (i.sourceTransaction) {
170
+ if (i.sourceTransaction != null) {
165
171
  const mp = beef.findBump(i.sourceTransaction.id('hex'));
166
- if (mp) {
172
+ if (mp != null) {
167
173
  i.sourceTransaction.merklePath = mp;
168
174
  }
169
175
  else {
@@ -173,20 +179,21 @@ class Beef {
173
179
  }
174
180
  }
175
181
  };
176
- addInputProof(this, beefTx.tx);
182
+ addInputProof(this, beefTx.tx); // Safe because we checked that beefTx.tx exists
177
183
  return beefTx.tx;
178
184
  }
179
185
  /**
180
- * Merge a MerklePath that is assumed to be fully valid.
181
- * @param bump
182
- * @returns index of merged bump
183
- */
186
+ * Merge a MerklePath that is assumed to be fully valid.
187
+ * @param bump
188
+ * @returns index of merged bump
189
+ */
184
190
  mergeBump(bump) {
185
191
  let bumpIndex;
186
192
  // If this proof is identical to another one previously added, we use that first. Otherwise, we try to merge it with proofs from the same block.
187
193
  for (let i = 0; i < this.bumps.length; i++) {
188
194
  const b = this.bumps[i];
189
- if (b === bump) { // Literally the same
195
+ if (b === bump) {
196
+ // Literally the same
190
197
  return i;
191
198
  }
192
199
  if (b.blockHeight === bump.blockHeight) {
@@ -206,11 +213,11 @@ class Beef {
206
213
  bumpIndex = this.bumps.length;
207
214
  this.bumps.push(bump);
208
215
  }
209
- // review if any transactions are proven by this bump
216
+ // Review if any transactions are proven by this bump
210
217
  const b = this.bumps[bumpIndex];
211
218
  for (const tx of this.txs) {
212
219
  const txid = tx.txid;
213
- if (!tx.bumpIndex) {
220
+ if (tx.bumpIndex == null) { // ✅ Explicitly check for null or undefined
214
221
  for (const n of b.path[0]) {
215
222
  if (n.hash === txid) {
216
223
  tx.bumpIndex = bumpIndex;
@@ -223,16 +230,16 @@ class Beef {
223
230
  return bumpIndex;
224
231
  }
225
232
  /**
226
- * Merge a serialized transaction.
227
- *
228
- * Checks that a transaction with the same txid hasn't already been merged.
229
- *
230
- * Replaces existing transaction with same txid.
231
- *
232
- * @param rawTx
233
- * @param bumpIndex Optional. If a number, must be valid index into bumps array.
234
- * @returns txid of rawTx
235
- */
233
+ * Merge a serialized transaction.
234
+ *
235
+ * Checks that a transaction with the same txid hasn't already been merged.
236
+ *
237
+ * Replaces existing transaction with same txid.
238
+ *
239
+ * @param rawTx
240
+ * @param bumpIndex Optional. If a number, must be valid index into bumps array.
241
+ * @returns txid of rawTx
242
+ */
236
243
  mergeRawTx(rawTx, bumpIndex) {
237
244
  const newTx = new BeefTx_js_1.default(rawTx, bumpIndex);
238
245
  this.removeExistingTxid(newTx.txid);
@@ -241,20 +248,20 @@ class Beef {
241
248
  return newTx;
242
249
  }
243
250
  /**
244
- * Merge a `Transaction` and any referenced `merklePath` and `sourceTransaction`, recursifely.
245
- *
246
- * Replaces existing transaction with same txid.
247
- *
248
- * Attempts to match an existing bump to the new transaction.
249
- *
250
- * @param tx
251
- * @returns txid of tx
252
- */
251
+ * Merge a `Transaction` and any referenced `merklePath` and `sourceTransaction`, recursifely.
252
+ *
253
+ * Replaces existing transaction with same txid.
254
+ *
255
+ * Attempts to match an existing bump to the new transaction.
256
+ *
257
+ * @param tx
258
+ * @returns txid of tx
259
+ */
253
260
  mergeTransaction(tx) {
254
261
  const txid = tx.id('hex');
255
262
  this.removeExistingTxid(txid);
256
263
  let bumpIndex;
257
- if (tx.merklePath) {
264
+ if (tx.merklePath != null) {
258
265
  bumpIndex = this.mergeBump(tx.merklePath);
259
266
  }
260
267
  const newTx = new BeefTx_js_1.default(tx, bumpIndex);
@@ -263,7 +270,7 @@ class Beef {
263
270
  bumpIndex = newTx.bumpIndex;
264
271
  if (bumpIndex === undefined) {
265
272
  for (const input of tx.inputs) {
266
- if (input.sourceTransaction) {
273
+ if (input.sourceTransaction != null) {
267
274
  this.mergeTransaction(input.sourceTransaction);
268
275
  }
269
276
  }
@@ -271,18 +278,18 @@ class Beef {
271
278
  return newTx;
272
279
  }
273
280
  /**
274
- * Removes an existing transaction from the BEEF, given its TXID
275
- * @param txid TXID of the transaction to remove
276
- */
281
+ * Removes an existing transaction from the BEEF, given its TXID
282
+ * @param txid TXID of the transaction to remove
283
+ */
277
284
  removeExistingTxid(txid) {
278
- const existingTxIndex = this.txs.findIndex(t => t.txid === txid);
285
+ const existingTxIndex = this.txs.findIndex((t) => t.txid === txid);
279
286
  if (existingTxIndex >= 0) {
280
287
  this.txs.splice(existingTxIndex, 1);
281
288
  }
282
289
  }
283
290
  mergeTxidOnly(txid) {
284
- let tx = this.txs.find(t => t.txid === txid);
285
- if (!tx) {
291
+ let tx = this.txs.find((t) => t.txid === txid);
292
+ if (tx == null) {
286
293
  tx = new BeefTx_js_1.default(txid);
287
294
  this.txs.push(tx);
288
295
  this.tryToValidateBumpIndex(tx);
@@ -291,15 +298,18 @@ class Beef {
291
298
  }
292
299
  mergeBeefTx(btx) {
293
300
  let beefTx = this.findTxid(btx.txid);
294
- if (btx.isTxidOnly && !beefTx) {
301
+ if (btx.isTxidOnly && (beefTx == null)) {
295
302
  beefTx = this.mergeTxidOnly(btx.txid);
296
303
  }
297
- else if (btx._tx && (!beefTx || beefTx.isTxidOnly)) {
304
+ else if ((btx._tx != null) && ((beefTx == null) || beefTx.isTxidOnly)) {
298
305
  beefTx = this.mergeTransaction(btx._tx);
299
306
  }
300
- else if (btx._rawTx && (!beefTx || beefTx.isTxidOnly)) {
307
+ else if ((btx._rawTx != null) && ((beefTx == null) || beefTx.isTxidOnly)) {
301
308
  beefTx = this.mergeRawTx(btx._rawTx);
302
309
  }
310
+ if (beefTx == null) {
311
+ throw new Error(`Failed to merge BeefTx for txid: ${btx.txid}`);
312
+ }
303
313
  return beefTx;
304
314
  }
305
315
  mergeBeef(beef) {
@@ -312,35 +322,35 @@ class Beef {
312
322
  }
313
323
  }
314
324
  /**
315
- * Sorts `txs` and checks structural validity of beef.
316
- *
317
- * Does NOT verify merkle roots.
318
- *
319
- * Validity requirements:
320
- * 1. No 'known' txids, unless `allowTxidOnly` is true.
321
- * 2. All transactions have bumps or their inputs chain back to bumps (or are known).
322
- * 3. Order of transactions satisfies dependencies before dependents.
323
- * 4. No transactions with duplicate txids.
324
- *
325
- * @param allowTxidOnly optional. If true, transaction txid only is assumed valid
326
- */
325
+ * Sorts `txs` and checks structural validity of beef.
326
+ *
327
+ * Does NOT verify merkle roots.
328
+ *
329
+ * Validity requirements:
330
+ * 1. No 'known' txids, unless `allowTxidOnly` is true.
331
+ * 2. All transactions have bumps or their inputs chain back to bumps (or are known).
332
+ * 3. Order of transactions satisfies dependencies before dependents.
333
+ * 4. No transactions with duplicate txids.
334
+ *
335
+ * @param allowTxidOnly optional. If true, transaction txid only is assumed valid
336
+ */
327
337
  isValid(allowTxidOnly) {
328
338
  return this.verifyValid(allowTxidOnly).valid;
329
339
  }
330
340
  /**
331
- * Sorts `txs` and confirms validity of transaction data contained in beef
332
- * by validating structure of this beef and confirming computed merkle roots
333
- * using `chainTracker`.
334
- *
335
- * Validity requirements:
336
- * 1. No 'known' txids, unless `allowTxidOnly` is true.
337
- * 2. All transactions have bumps or their inputs chain back to bumps (or are known).
338
- * 3. Order of transactions satisfies dependencies before dependents.
339
- * 4. No transactions with duplicate txids.
340
- *
341
- * @param chainTracker Used to verify computed merkle path roots for all bump txids.
342
- * @param allowTxidOnly optional. If true, transaction txid is assumed valid
343
- */
341
+ * Sorts `txs` and confirms validity of transaction data contained in beef
342
+ * by validating structure of this beef and confirming computed merkle roots
343
+ * using `chainTracker`.
344
+ *
345
+ * Validity requirements:
346
+ * 1. No 'known' txids, unless `allowTxidOnly` is true.
347
+ * 2. All transactions have bumps or their inputs chain back to bumps (or are known).
348
+ * 3. Order of transactions satisfies dependencies before dependents.
349
+ * 4. No transactions with duplicate txids.
350
+ *
351
+ * @param chainTracker Used to verify computed merkle path roots for all bump txids.
352
+ * @param allowTxidOnly optional. If true, transaction txid is assumed valid
353
+ */
344
354
  async verify(chainTracker, allowTxidOnly) {
345
355
  const r = this.verifyValid(allowTxidOnly);
346
356
  if (!r.valid)
@@ -354,20 +364,23 @@ class Beef {
354
364
  return true;
355
365
  }
356
366
  verifyValid(allowTxidOnly) {
357
- const r = { valid: false, roots: {} };
367
+ const r = {
368
+ valid: false,
369
+ roots: {}
370
+ };
358
371
  this.sortTxs();
359
372
  // valid txids: only txids if allowed, bump txids, then txids with input's in txids
360
373
  const txids = {};
361
374
  for (const tx of this.txs) {
362
375
  if (tx.isTxidOnly) {
363
- if (!allowTxidOnly)
364
- return r;
376
+ if (allowTxidOnly !== true)
377
+ return r; // ✅ Explicit check for `true`
365
378
  txids[tx.txid] = true;
366
379
  }
367
380
  }
368
381
  const confirmComputedRoot = (b, txid) => {
369
382
  const root = b.computeRoot(txid);
370
- if (!r.roots[b.blockHeight]) {
383
+ if (r.roots[b.blockHeight] === undefined || r.roots[b.blockHeight] === '') {
371
384
  // accept the root as valid for this block and reuse for subsequent txids
372
385
  r.roots[b.blockHeight] = root;
373
386
  }
@@ -378,9 +391,9 @@ class Beef {
378
391
  };
379
392
  for (const b of this.bumps) {
380
393
  for (const n of b.path[0]) {
381
- if (n.txid && n.hash) {
394
+ if (n.txid === true && typeof n.hash === 'string' && n.hash.length > 0) {
382
395
  txids[n.hash] = true;
383
- // all txid hashes in all bumps must have agree on computed merkle path roots
396
+ // All txid hashes in all bumps must agree on computed merkle path roots
384
397
  if (!confirmComputedRoot(b, n.hash)) {
385
398
  return r;
386
399
  }
@@ -388,9 +401,8 @@ class Beef {
388
401
  }
389
402
  }
390
403
  for (const t of this.txs) {
391
- for (const i of t.inputTxids)
392
404
  // all input txids must be included before they are referenced
393
- {
405
+ for (const i of t.inputTxids) {
394
406
  if (!txids[i])
395
407
  return r;
396
408
  }
@@ -415,9 +427,9 @@ class Beef {
415
427
  }
416
428
  }
417
429
  /**
418
- * Returns a binary array representing the serialized BEEF
419
- * @returns A binary array representing the BEEF
420
- */
430
+ * Returns a binary array representing the serialized BEEF
431
+ * @returns A binary array representing the BEEF
432
+ */
421
433
  toBinary() {
422
434
  const writer = new utils_js_1.Writer();
423
435
  this.toWriter(writer);
@@ -436,13 +448,13 @@ class Beef {
436
448
  toBinaryAtomic(txid) {
437
449
  this.sortTxs();
438
450
  const tx = this.findTxid(txid);
439
- if (!tx) {
451
+ if (tx == null) {
440
452
  throw new Error(`${txid} does not exist in this Beef`);
441
453
  }
442
- let beef = this;
443
- if (this.txs[this.txs.length - 1] !== tx) {
444
- beef = this.clone();
445
- const i = this.txs.findIndex(t => t.txid === txid);
454
+ // If the transaction is not the last one, clone and modify
455
+ const beef = (this.txs[this.txs.length - 1] === tx) ? this : this.clone();
456
+ if (beef !== this) {
457
+ const i = this.txs.findIndex((t) => t.txid === txid);
446
458
  beef.txs.splice(i + 1);
447
459
  }
448
460
  const writer = new utils_js_1.Writer();
@@ -452,9 +464,9 @@ class Beef {
452
464
  return writer.toArray();
453
465
  }
454
466
  /**
455
- * Returns a hex string representing the serialized BEEF
456
- * @returns A hex string representing the BEEF
457
- */
467
+ * Returns a hex string representing the serialized BEEF
468
+ * @returns A hex string representing the BEEF
469
+ */
458
470
  toHex() {
459
471
  return (0, utils_js_1.toHex)(this.toBinary());
460
472
  }
@@ -484,39 +496,39 @@ class Beef {
484
496
  return beef;
485
497
  }
486
498
  /**
487
- * Constructs an instance of the Beef class based on the provided binary array
488
- * @param bin The binary array from which to construct BEEF
489
- * @returns An instance of the Beef class constructed from the binary data
490
- */
499
+ * Constructs an instance of the Beef class based on the provided binary array
500
+ * @param bin The binary array from which to construct BEEF
501
+ * @returns An instance of the Beef class constructed from the binary data
502
+ */
491
503
  static fromBinary(bin) {
492
504
  const br = new utils_js_1.Reader(bin);
493
505
  return Beef.fromReader(br);
494
506
  }
495
507
  /**
496
- * Constructs an instance of the Beef class based on the provided string
497
- * @param s The string value from which to construct BEEF
498
- * @param enc The encoding of the string value from which BEEF should be constructed
499
- * @returns An instance of the Beef class constructed from the string
500
- */
508
+ * Constructs an instance of the Beef class based on the provided string
509
+ * @param s The string value from which to construct BEEF
510
+ * @param enc The encoding of the string value from which BEEF should be constructed
511
+ * @returns An instance of the Beef class constructed from the string
512
+ */
501
513
  static fromString(s, enc = 'hex') {
502
514
  const bin = (0, utils_js_1.toArray)(s, enc);
503
515
  const br = new utils_js_1.Reader(bin);
504
516
  return Beef.fromReader(br);
505
517
  }
506
518
  /**
507
- * Try to validate newTx.bumpIndex by looking for an existing bump
508
- * that proves newTx.txid
509
- *
510
- * @param newTx A new `BeefTx` that has been added to this.txs
511
- * @returns true if a bump was found, false otherwise
512
- */
519
+ * Try to validate newTx.bumpIndex by looking for an existing bump
520
+ * that proves newTx.txid
521
+ *
522
+ * @param newTx A new `BeefTx` that has been added to this.txs
523
+ * @returns true if a bump was found, false otherwise
524
+ */
513
525
  tryToValidateBumpIndex(newTx) {
514
526
  if (newTx.bumpIndex !== undefined) {
515
527
  return true;
516
528
  }
517
529
  const txid = newTx.txid;
518
530
  for (let i = 0; i < this.bumps.length; i++) {
519
- const j = this.bumps[i].path[0].findIndex(b => b.hash === txid);
531
+ const j = this.bumps[i].path[0].findIndex((b) => b.hash === txid);
520
532
  if (j >= 0) {
521
533
  newTx.bumpIndex = i;
522
534
  this.bumps[i].path[0][j].txid = true;
@@ -526,15 +538,15 @@ class Beef {
526
538
  return false;
527
539
  }
528
540
  /**
529
- * Sort the `txs` by input txid dependency order:
530
- * - Oldest Tx Anchored by Path or txid only
531
- * - Newer Txs depending on Older parents
532
- * - Newest Tx
533
- *
534
- * with proof (MerklePath) last, longest chain of dependencies first
535
- *
536
- * @returns `{ missingInputs, notValid, valid, withMissingInputs }`
537
- */
541
+ * Sort the `txs` by input txid dependency order:
542
+ * - Oldest Tx Anchored by Path or txid only
543
+ * - Newer Txs depending on Older parents
544
+ * - Newest Tx
545
+ *
546
+ * with proof (MerklePath) last, longest chain of dependencies first
547
+ *
548
+ * @returns `{ missingInputs, notValid, valid, withMissingInputs }`
549
+ */
538
550
  sortTxs() {
539
551
  // Hashtable of valid txids (with proof or all inputs chain to proof)
540
552
  const validTxids = {};
@@ -574,7 +586,7 @@ class Beef {
574
586
  // link their inputs that exist in this beef,
575
587
  // make a note of missing inputs.
576
588
  for (const inputTxid of tx.inputTxids) {
577
- if (!txidToTx[inputTxid]) {
589
+ if (txidToTx[inputTxid] === undefined) { // Explicitly check for undefined
578
590
  missingInputs[inputTxid] = true;
579
591
  hasMissingInput = true;
580
592
  }
@@ -593,7 +605,7 @@ class Beef {
593
605
  // all tx are isValid false, hasProof false.
594
606
  // if isTxidOnly then has inputTxids
595
607
  for (const tx of oldQueue) {
596
- if (tx.inputTxids.every(txid => validTxids[txid])) {
608
+ if (tx.inputTxids.every((txid) => validTxids[txid])) {
597
609
  validTxids[tx.txid] = true;
598
610
  result.push(tx);
599
611
  }
@@ -608,28 +620,32 @@ class Beef {
608
620
  // transactions that don't have proofs and don't chain to proofs
609
621
  const txsNotValid = queue;
610
622
  // New order of txs is unsortable (missing inputs or depends on missing inputs), txidOnly, sorted (so newest sorted is last)
611
- this.txs = txsMissingInputs.concat(txsNotValid).concat(txidOnly).concat(result);
623
+ this.txs = txsMissingInputs
624
+ .concat(txsNotValid)
625
+ .concat(txidOnly)
626
+ .concat(result);
612
627
  return {
613
628
  missingInputs: Object.keys(missingInputs),
614
- notValid: txsNotValid.map(tx => tx.txid),
629
+ notValid: txsNotValid.map((tx) => tx.txid),
615
630
  valid: Object.keys(validTxids),
616
- withMissingInputs: txsMissingInputs.map(tx => tx.txid),
617
- txidOnly: txidOnly.map(tx => tx.txid)
631
+ withMissingInputs: txsMissingInputs.map((tx) => tx.txid),
632
+ txidOnly: txidOnly.map((tx) => tx.txid)
618
633
  };
619
634
  }
620
635
  /**
621
- * @returns a shallow copy of this beef
622
- */
636
+ * @returns a shallow copy of this beef
637
+ */
623
638
  clone() {
624
639
  const c = new Beef();
640
+ c.version = this.version;
625
641
  c.bumps = Array.from(this.bumps);
626
642
  c.txs = Array.from(this.txs);
627
643
  return c;
628
644
  }
629
645
  /**
630
- * Ensure that all the txids in `knownTxids` are txidOnly
631
- * @param knownTxids
632
- */
646
+ * Ensure that all the txids in `knownTxids` are txidOnly
647
+ * @param knownTxids
648
+ */
633
649
  trimKnownTxids(knownTxids) {
634
650
  for (let i = 0; i < this.txs.length;) {
635
651
  const tx = this.txs[i];
@@ -650,15 +666,19 @@ class Beef {
650
666
  return r.valid;
651
667
  }
652
668
  /**
653
- * @returns Summary of `Beef` contents as multi-line string.
654
- */
669
+ * @returns Summary of `Beef` contents as multi-line string.
670
+ */
655
671
  toLogString() {
672
+ var _a, _b;
656
673
  let log = '';
657
- log += `BEEF with ${this.bumps.length} BUMPS and ${this.txs.length} Transactions, isValid ${this.isValid()}\n`;
674
+ log += `BEEF with ${this.bumps.length} BUMPS and ${this.txs.length} Transactions, isValid ${this.isValid().toString()}\n`;
658
675
  let i = -1;
659
676
  for (const b of this.bumps) {
660
677
  i++;
661
- log += ` BUMP ${i}\n block: ${b.blockHeight}\n txids: [\n${b.path[0].filter(n => !!n.txid).map(n => ` '${n.hash}'`).join(',\n')}\n ]\n`;
678
+ log += ` BUMP ${i}\n block: ${b.blockHeight}\n txids: [\n${b.path[0]
679
+ .filter((n) => n.txid === true) // ✅ Explicitly check if txid is `true`
680
+ .map((n) => { var _a; return ` '${(_a = n.hash) !== null && _a !== void 0 ? _a : ''}'`; })
681
+ .join(',\n')}\n ]\n`;
662
682
  }
663
683
  i = -1;
664
684
  for (const t of this.txs) {
@@ -671,32 +691,35 @@ class Beef {
671
691
  log += ' txidOnly\n';
672
692
  }
673
693
  else {
674
- log += ` rawTx length=${t.rawTx.length}\n`;
694
+ log += ` rawTx length=${(_b = (_a = t.rawTx) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0}\n`; // ✅ Fix applied here
675
695
  }
676
696
  if (t.inputTxids.length > 0) {
677
- log += ` inputs: [\n${t.inputTxids.map(it => ` '${it}'`).join(',\n')}\n ]\n`;
697
+ log += ` inputs: [\n${t.inputTxids
698
+ .map((it) => ` '${it}'`)
699
+ .join(',\n')}\n ]\n`;
678
700
  }
679
701
  }
680
702
  return log;
681
703
  }
682
704
  /**
683
- * In some circumstances it may be helpful for the BUMP MerkePaths to include
684
- * leaves that can be computed from row zero.
685
- */
705
+ * In some circumstances it may be helpful for the BUMP MerklePaths to include
706
+ * leaves that can be computed from row zero.
707
+ */
686
708
  addComputedLeaves() {
687
- const beef = this;
688
- const hash = (m) => (0, utils_js_1.toHex)(((0, Hash_js_1.hash256)((0, utils_js_1.toArray)(m, 'hex').reverse())).reverse());
689
- for (const bump of beef.bumps) {
709
+ const hash = (m) => (0, utils_js_1.toHex)((0, Hash_js_1.hash256)((0, utils_js_1.toArray)(m, 'hex').reverse()).reverse());
710
+ for (const bump of this.bumps) { // Use `this` instead of `beef`
690
711
  for (let row = 1; row < bump.path.length; row++) {
691
712
  for (const leafL of bump.path[row - 1]) {
692
- if (leafL.hash && (leafL.offset & 1) === 0) {
693
- const leafR = bump.path[row - 1].find(l => l.offset === leafL.offset + 1);
713
+ if (typeof leafL.hash === 'string' && (leafL.offset & 1) === 0) {
714
+ const leafR = bump.path[row - 1].find((l) => l.offset === leafL.offset + 1);
694
715
  const offsetOnRow = leafL.offset >> 1;
695
- if (leafR && leafR.hash && bump.path[row].findIndex(l => l.offset === offsetOnRow) === -1) {
696
- // computable leaf is missing... add it.
716
+ if (leafR !== undefined &&
717
+ typeof leafR.hash === 'string' &&
718
+ bump.path[row].every((l) => l.offset !== offsetOnRow)) {
719
+ // Computable leaf is missing... add it.
697
720
  bump.path[row].push({
698
721
  offset: offsetOnRow,
699
- // string concatenation puts the right leaf on the left of the left leaf hash :-)
722
+ // String concatenation puts the right leaf on the left of the left leaf hash
700
723
  hash: hash(leafR.hash + leafL.hash)
701
724
  });
702
725
  }