@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
@@ -9,6 +9,11 @@ import TransactionSignature from '../../primitives/TransactionSignature.js'
9
9
  import { sha256 } from '../../primitives/Hash.js'
10
10
  import Script from '../Script.js'
11
11
 
12
+ function verifyTruthy<T>(v: T | undefined): T {
13
+ if (v == null) throw new Error('must have value')
14
+ return v
15
+ }
16
+
12
17
  /**
13
18
  * P2PKH (Pay To Public Key Hash) class implementing ScriptTemplate.
14
19
  *
@@ -25,12 +30,16 @@ export default class P2PKH implements ScriptTemplate {
25
30
  let data: number[]
26
31
  if (typeof pubkeyhash === 'string') {
27
32
  const hash = fromBase58Check(pubkeyhash)
28
- if (hash.prefix[0] !== 0x00 && hash.prefix[0] !== 0x6f) throw new Error('only P2PKH is supported')
33
+ if (hash.prefix[0] !== 0x00 && hash.prefix[0] !== 0x6f) {
34
+ throw new Error('only P2PKH is supported')
35
+ }
29
36
  data = hash.data as number[]
30
37
  } else {
31
38
  data = pubkeyhash
32
39
  }
33
- if (data.length !== 20) throw new Error('P2PKH hash length must be 20 bytes')
40
+ if (data.length !== 20) {
41
+ throw new Error('P2PKH hash length must be 20 bytes')
42
+ }
34
43
  return new LockingScript([
35
44
  { op: OP.OP_DUP },
36
45
  { op: OP.OP_HASH160 },
@@ -83,22 +92,32 @@ export default class P2PKH implements ScriptTemplate {
83
92
 
84
93
  const input = tx.inputs[inputIndex]
85
94
 
86
- const otherInputs = tx.inputs.filter((_, index) => index !== inputIndex)
95
+ const otherInputs = tx.inputs.filter(
96
+ (_, index) => index !== inputIndex
97
+ )
87
98
 
88
- const sourceTXID = input.sourceTXID ? input.sourceTXID : input.sourceTransaction?.id('hex')
89
- if (!sourceTXID) {
99
+ const sourceTXID = input.sourceTXID ?? input.sourceTransaction?.id('hex')
100
+ if (sourceTXID == null || sourceTXID === undefined) {
90
101
  throw new Error(
91
102
  'The input sourceTXID or sourceTransaction is required for transaction signing.'
92
103
  )
93
104
  }
94
- sourceSatoshis ||= input.sourceTransaction?.outputs[input.sourceOutputIndex].satoshis
95
- if (!sourceSatoshis) {
105
+ if (sourceTXID === '') {
106
+ throw new Error(
107
+ 'The input sourceTXID or sourceTransaction is required for transaction signing.'
108
+ )
109
+ }
110
+ sourceSatoshis ||=
111
+ input.sourceTransaction?.outputs[input.sourceOutputIndex].satoshis
112
+ if (sourceSatoshis == null || sourceSatoshis === undefined) {
96
113
  throw new Error(
97
114
  'The sourceSatoshis or input sourceTransaction is required for transaction signing.'
98
115
  )
99
116
  }
100
- lockingScript ||= input.sourceTransaction?.outputs[input.sourceOutputIndex].lockingScript
101
- if (!lockingScript) {
117
+ lockingScript ||=
118
+ input.sourceTransaction?.outputs[input.sourceOutputIndex]
119
+ .lockingScript
120
+ if (lockingScript == null) {
102
121
  throw new Error(
103
122
  'The lockingScript or input sourceTransaction is required for transaction signing.'
104
123
  )
@@ -106,17 +125,18 @@ export default class P2PKH implements ScriptTemplate {
106
125
 
107
126
  const preimage = TransactionSignature.format({
108
127
  sourceTXID,
109
- sourceOutputIndex: input.sourceOutputIndex,
128
+ sourceOutputIndex: verifyTruthy(input.sourceOutputIndex),
110
129
  sourceSatoshis,
111
130
  transactionVersion: tx.version,
112
131
  otherInputs,
113
132
  inputIndex,
114
133
  outputs: tx.outputs,
115
- inputSequence: input.sequence,
134
+ inputSequence: verifyTruthy(input.sequence),
116
135
  subscript: lockingScript,
117
136
  lockTime: tx.lockTime,
118
137
  scope: signatureScope
119
138
  })
139
+
120
140
  const rawSignature = privateKey.sign(sha256(preimage))
121
141
  const sig = new TransactionSignature(
122
142
  rawSignature.r,
@@ -124,7 +144,9 @@ export default class P2PKH implements ScriptTemplate {
124
144
  signatureScope
125
145
  )
126
146
  const sigForScript = sig.toChecksigFormat()
127
- const pubkeyForScript = privateKey.toPublicKey().encode(true) as number[]
147
+ const pubkeyForScript = privateKey
148
+ .toPublicKey()
149
+ .encode(true) as number[]
128
150
  return new UnlockingScript([
129
151
  { op: sigForScript.length, data: sigForScript },
130
152
  { op: pubkeyForScript.length, data: pubkeyForScript }
@@ -1,8 +1,18 @@
1
1
  import { ScriptTemplate, LockingScript, UnlockingScript, OP } from '../index.js'
2
- import { Utils, Hash, TransactionSignature, Signature, PublicKey } from '../../primitives/index.js'
3
- import { WalletInterface } from '../../wallet/Wallet.interfaces.js'
2
+ import {
3
+ Utils,
4
+ Hash,
5
+ TransactionSignature,
6
+ Signature,
7
+ PublicKey
8
+ } from '../../primitives/index.js'
9
+ import { WalletInterface, SecurityLevel } from '../../wallet/Wallet.interfaces.js'
4
10
  import { Transaction } from '../../transaction/index.js'
5
- import { SecurityLevel } from '../../wallet/Wallet.interfaces.js'
11
+
12
+ function verifyTruthy<T>(v: T | undefined): T {
13
+ if (v == null) throw new Error('must have value')
14
+ return v
15
+ }
6
16
 
7
17
  /**
8
18
  * For a given piece of data to push onto the stack in script, creates the correct minimally-encoded script chunk,
@@ -10,7 +20,9 @@ import { SecurityLevel } from '../../wallet/Wallet.interfaces.js'
10
20
  *
11
21
  * TODO: This should be made into a TS-SDK util (distinct from the `minimallyEncode` util)
12
22
  */
13
- const createMinimallyEncodedScriptChunk = (data: number[]): { op: number, data?: number[] } => {
23
+ const createMinimallyEncodedScriptChunk = (
24
+ data: number[]
25
+ ): { op: number, data?: number[] } => {
14
26
  if (data.length === 0) {
15
27
  // Could have used OP_0.
16
28
  return { op: 0 }
@@ -52,13 +64,21 @@ export default class PushDrop implements ScriptTemplate {
52
64
  * @param script PushDrop script to decode back into token fields
53
65
  * @returns An object containing PushDrop token fields and the locking public key. If a signature was included, it will be the last field.
54
66
  */
55
- static decode(script: LockingScript): { lockingPublicKey: PublicKey, fields: number[][] } {
56
- const lockingPublicKey = PublicKey.fromString(Utils.toHex(script.chunks[0].data))
57
- const fields = []
67
+ static decode(script: LockingScript): {
68
+ lockingPublicKey: PublicKey
69
+ fields: number[][]
70
+ } {
71
+ const lockingPublicKey = PublicKey.fromString(
72
+ Utils.toHex(verifyTruthy(script.chunks[0].data)) // ✅ Ensure not undefined
73
+ )
74
+
75
+ const fields: number[][] = []
58
76
  for (let i = 2; i < script.chunks.length; i++) {
59
- const nextOpcode = script.chunks[i + 1].op
60
- let chunk = script.chunks[i].data
61
- if (!chunk) {
77
+ const nextOpcode = script.chunks[i + 1]?.op // ✅ Prevent accessing `op` from `undefined`
78
+ let chunk: number[] = script.chunks[i].data ?? [] // ✅ Ensure `chunk` is always `number[]`
79
+
80
+ if (chunk.length === 0) {
81
+ // ✅ Only modify `chunk` if it was empty
62
82
  if (script.chunks[i].op >= 80 && script.chunks[i].op <= 95) {
63
83
  chunk = [script.chunks[i].op - 80]
64
84
  } else if (script.chunks[i].op === 0) {
@@ -101,7 +121,15 @@ export default class PushDrop implements ScriptTemplate {
101
121
  * @param {boolean} [includeSignature=true] - Flag indicating if a signature should be included in the script (default yes).
102
122
  * @returns {Promise<LockingScript>} The generated PushDrop locking script.
103
123
  */
104
- async lock(fields: number[][], protocolID: [SecurityLevel, string], keyID: string, counterparty: string, forSelf = false, includeSignature = true, lockPosition: 'before' | 'after' = 'before'): Promise<LockingScript> {
124
+ async lock(
125
+ fields: number[][],
126
+ protocolID: [SecurityLevel, string],
127
+ keyID: string,
128
+ counterparty: string,
129
+ forSelf = false,
130
+ includeSignature = true,
131
+ lockPosition: 'before' | 'after' = 'before'
132
+ ): Promise<LockingScript> {
105
133
  const { publicKey } = await this.wallet.getPublicKey({
106
134
  protocolID,
107
135
  keyID,
@@ -110,7 +138,10 @@ export default class PushDrop implements ScriptTemplate {
110
138
  })
111
139
  const lockChunks: Array<{ op: number, data?: number[] }> = []
112
140
  const pushDropChunks: Array<{ op: number, data?: number[] }> = []
113
- lockChunks.push({ op: publicKey.length / 2, data: Utils.toArray(publicKey, 'hex') })
141
+ lockChunks.push({
142
+ op: publicKey.length / 2,
143
+ data: Utils.toArray(publicKey, 'hex')
144
+ })
114
145
  lockChunks.push({ op: OP.OP_CHECKSIG })
115
146
  if (includeSignature) {
116
147
  const dataToSign = fields.reduce((a, e) => [...a, ...e], [])
@@ -130,19 +161,13 @@ export default class PushDrop implements ScriptTemplate {
130
161
  pushDropChunks.push({ op: OP.OP_2DROP })
131
162
  notYetDropped -= 2
132
163
  }
133
- if (notYetDropped) {
164
+ if (notYetDropped !== 0) {
134
165
  pushDropChunks.push({ op: OP.OP_DROP })
135
166
  }
136
167
  if (lockPosition === 'before') {
137
- return new LockingScript([
138
- ...lockChunks,
139
- ...pushDropChunks
140
- ])
168
+ return new LockingScript([...lockChunks, ...pushDropChunks])
141
169
  } else {
142
- return new LockingScript([
143
- ...pushDropChunks,
144
- ...lockChunks
145
- ])
170
+ return new LockingScript([...pushDropChunks, ...lockChunks])
146
171
  }
147
172
  }
148
173
 
@@ -172,7 +197,10 @@ export default class PushDrop implements ScriptTemplate {
172
197
  estimateLength: () => Promise<73>
173
198
  } {
174
199
  return {
175
- sign: async (tx: Transaction, inputIndex: number): Promise<UnlockingScript> => {
200
+ sign: async (
201
+ tx: Transaction,
202
+ inputIndex: number
203
+ ): Promise<UnlockingScript> => {
176
204
  let signatureScope = TransactionSignature.SIGHASH_FORKID
177
205
  if (signOutputs === 'all') {
178
206
  signatureScope |= TransactionSignature.SIGHASH_ALL
@@ -189,22 +217,27 @@ export default class PushDrop implements ScriptTemplate {
189
217
 
190
218
  const input = tx.inputs[inputIndex]
191
219
 
192
- const otherInputs = tx.inputs.filter((_, index) => index !== inputIndex)
220
+ const otherInputs = tx.inputs.filter(
221
+ (_, index) => index !== inputIndex
222
+ )
193
223
 
194
- const sourceTXID = input.sourceTXID ? input.sourceTXID : input.sourceTransaction?.id('hex')
195
- if (!sourceTXID) {
224
+ const sourceTXID = input.sourceTXID ?? input.sourceTransaction?.id('hex')
225
+ if (sourceTXID == null || sourceTXID === undefined) {
196
226
  throw new Error(
197
227
  'The input sourceTXID or sourceTransaction is required for transaction signing.'
198
228
  )
199
229
  }
200
- sourceSatoshis ||= input.sourceTransaction?.outputs[input.sourceOutputIndex].satoshis
201
- if (!sourceSatoshis) {
230
+ sourceSatoshis ||=
231
+ input.sourceTransaction?.outputs[input.sourceOutputIndex].satoshis
232
+ if (sourceSatoshis == null || sourceSatoshis === undefined) {
202
233
  throw new Error(
203
234
  'The sourceSatoshis or input sourceTransaction is required for transaction signing.'
204
235
  )
205
236
  }
206
- lockingScript ||= input.sourceTransaction?.outputs[input.sourceOutputIndex].lockingScript
207
- if (!lockingScript) {
237
+ lockingScript ||=
238
+ input.sourceTransaction?.outputs[input.sourceOutputIndex]
239
+ .lockingScript
240
+ if (lockingScript == null) {
208
241
  throw new Error(
209
242
  'The lockingScript or input sourceTransaction is required for transaction signing.'
210
243
  )
@@ -212,17 +245,18 @@ export default class PushDrop implements ScriptTemplate {
212
245
 
213
246
  const preimage = TransactionSignature.format({
214
247
  sourceTXID,
215
- sourceOutputIndex: input.sourceOutputIndex,
248
+ sourceOutputIndex: verifyTruthy(input.sourceOutputIndex),
216
249
  sourceSatoshis,
217
250
  transactionVersion: tx.version,
218
251
  otherInputs,
219
252
  inputIndex,
220
253
  outputs: tx.outputs,
221
- inputSequence: input.sequence,
254
+ inputSequence: input.sequence ?? 0xffffffff,
222
255
  subscript: lockingScript,
223
256
  lockTime: tx.lockTime,
224
257
  scope: signatureScope
225
258
  })
259
+
226
260
  const preimageHash = Hash.sha256(preimage)
227
261
  const { signature: bareSignature } = await this.wallet.createSignature({
228
262
  data: preimageHash,
@@ -8,6 +8,7 @@ import TransactionSignature from '../../primitives/TransactionSignature.js'
8
8
  import { sha256 } from '../../primitives/Hash.js'
9
9
  import ScriptChunk from '../ScriptChunk.js'
10
10
  import BigNumber from '../../primitives/BigNumber.js'
11
+ import Script from '../Script.js'
11
12
 
12
13
  /**
13
14
  * RPuzzle class implementing ScriptTemplate.
@@ -23,7 +24,15 @@ export default class RPuzzle implements ScriptTemplate {
23
24
  *
24
25
  * @param {'raw'|'SHA1'|'SHA256'|'HASH256'|'RIPEMD160'|'HASH160'} type Denotes the type of puzzle to create
25
26
  */
26
- constructor(type: 'raw' | 'SHA1' | 'SHA256' | 'HASH256' | 'RIPEMD160' | 'HASH160' = 'raw') {
27
+ constructor(
28
+ type:
29
+ | 'raw'
30
+ | 'SHA1'
31
+ | 'SHA256'
32
+ | 'HASH256'
33
+ | 'RIPEMD160'
34
+ | 'HASH160' = 'raw'
35
+ ) {
27
36
  this.type = type
28
37
  }
29
38
 
@@ -105,26 +114,38 @@ export default class RPuzzle implements ScriptTemplate {
105
114
  )
106
115
  }
107
116
  const preimage = TransactionSignature.format({
108
- sourceTXID: input.sourceTransaction.id('hex'),
109
- sourceOutputIndex: input.sourceOutputIndex,
110
- sourceSatoshis: input.sourceTransaction.outputs[input.sourceOutputIndex].satoshis,
117
+ sourceTXID: input.sourceTransaction?.id('hex') ?? '',
118
+ sourceOutputIndex: input.sourceOutputIndex ?? 0,
119
+ sourceSatoshis:
120
+ input.sourceTransaction?.outputs[input.sourceOutputIndex]
121
+ ?.satoshis ?? 0,
111
122
  transactionVersion: tx.version,
112
123
  otherInputs,
113
124
  inputIndex,
114
125
  outputs: tx.outputs,
115
- inputSequence: input.sequence,
116
- subscript: input.sourceTransaction.outputs[input.sourceOutputIndex].lockingScript,
126
+ inputSequence: input.sequence ?? 0xffffffff,
127
+ subscript:
128
+ input.sourceTransaction?.outputs[input.sourceOutputIndex]
129
+ ?.lockingScript ?? new Script(),
117
130
  lockTime: tx.lockTime,
118
131
  scope: signatureScope
119
132
  })
120
- const rawSignature = privateKey.sign(sha256(preimage), undefined, true, k)
133
+
134
+ const rawSignature = privateKey.sign(
135
+ sha256(preimage),
136
+ undefined,
137
+ true,
138
+ k
139
+ )
121
140
  const sig = new TransactionSignature(
122
141
  rawSignature.r,
123
142
  rawSignature.s,
124
143
  signatureScope
125
144
  )
126
145
  const sigForScript = sig.toChecksigFormat()
127
- const pubkeyForScript = privateKey.toPublicKey().encode(true) as number[]
146
+ const pubkeyForScript = privateKey
147
+ .toPublicKey()
148
+ .encode(true) as number[]
128
149
  return new UnlockingScript([
129
150
  { op: sigForScript.length, data: sigForScript },
130
151
  { op: pubkeyForScript.length, data: pubkeyForScript }
@@ -1,33 +1,66 @@
1
1
  /* eslint-env jest */
2
- import PushDrop from '../../../../dist/cjs/src/script/templates/PushDrop.js'
3
- import ProtoWallet from '../../../../dist/cjs/src/wallet/ProtoWallet.js'
4
- import { PrivateKey, Utils } from '../../../../dist/cjs/src/primitives/index.js'
5
- import { Script, Spend } from '../../../../dist/cjs/src/script/index.js'
6
- import { Transaction } from '../../../../dist/cjs/src/transaction/index.js'
2
+ import PushDrop from '../../../script/templates/PushDrop'
3
+ import { CompletedProtoWallet } from '../../../auth/certificates/__tests/CompletedProtoWallet'
4
+ import { PrivateKey, Utils } from '../../../primitives/index'
5
+ import { Script, Spend } from '../../../script/index'
6
+ import { Transaction } from '../../../transaction/index'
7
7
 
8
8
  describe('PushDrop', () => {
9
- let privateKey: typeof PrivateKey
10
9
  let wallet
11
10
  let pushDrop: PushDrop
12
11
 
13
- const createDecodeRedeem = async (fields: number[][] = [], protocolID: [0 | 1 | 2, string] = [0, 'tests'], keyID: string = 'test-key', counterparty: string = 'self', signOutputs: 'all' | 'none' | 'single' = 'all', anyoneCanPay: boolean = false) => {
14
- const lockingScript = await pushDrop.lock(fields, protocolID, keyID, counterparty)
12
+ const createDecodeRedeem = async (
13
+ fields: number[][] = [],
14
+ protocolID: [0 | 1 | 2, string] = [0, 'tests'],
15
+ keyID: string = 'test-key',
16
+ counterparty: string = 'self',
17
+ signOutputs: 'all' | 'none' | 'single' = 'all',
18
+ anyoneCanPay: boolean = false
19
+ ): Promise<void> => {
20
+ const lockingScript = await pushDrop.lock(
21
+ fields,
22
+ protocolID,
23
+ keyID,
24
+ counterparty
25
+ )
15
26
  expect(lockingScript).toBeInstanceOf(Script)
16
27
  const decoded = await PushDrop.decode(lockingScript)
17
28
  expect(decoded.fields).toEqual(fields)
18
- const expectedPublicKey = (await wallet.getPublicKey({ protocolID, keyID, counterparty })).publicKey
29
+ const expectedPublicKey = (
30
+ await wallet.getPublicKey({ protocolID, keyID, counterparty })
31
+ ).publicKey
19
32
  expect(decoded.lockingPublicKey.toString()).toEqual(expectedPublicKey)
20
33
  const satoshis = 1
21
- const unlockingTemplate = await pushDrop.unlock(protocolID, keyID, counterparty, signOutputs, anyoneCanPay)
22
- const sourceTx = new Transaction(1, [], [{
23
- lockingScript,
24
- satoshis
25
- }], 0)
26
- const spendTx = new Transaction(1, [{
27
- sourceTransaction: sourceTx,
28
- sourceOutputIndex: 0,
29
- sequence: 0xffffffff
30
- }], [], 0)
34
+ const unlockingTemplate = await pushDrop.unlock(
35
+ protocolID,
36
+ keyID,
37
+ counterparty,
38
+ signOutputs,
39
+ anyoneCanPay
40
+ )
41
+ const sourceTx = new Transaction(
42
+ 1,
43
+ [],
44
+ [
45
+ {
46
+ lockingScript,
47
+ satoshis
48
+ }
49
+ ],
50
+ 0
51
+ )
52
+ const spendTx = new Transaction(
53
+ 1,
54
+ [
55
+ {
56
+ sourceTransaction: sourceTx,
57
+ sourceOutputIndex: 0,
58
+ sequence: 0xffffffff
59
+ }
60
+ ],
61
+ [],
62
+ 0
63
+ )
31
64
  const unlockingScript = await unlockingTemplate.sign(spendTx, 0)
32
65
  expect(await unlockingTemplate.estimateLength()).toEqual(73)
33
66
  const spend = new Spend({
@@ -48,8 +81,8 @@ describe('PushDrop', () => {
48
81
  }
49
82
 
50
83
  beforeEach(() => {
51
- privateKey = PrivateKey.fromRandom()
52
- wallet = new ProtoWallet(privateKey)
84
+ const privateKey = PrivateKey.fromRandom()
85
+ wallet = new CompletedProtoWallet(privateKey)
53
86
  pushDrop = new PushDrop(wallet)
54
87
  })
55
88
 
@@ -64,11 +97,46 @@ describe('PushDrop', () => {
64
97
  await createDecodeRedeem([new Array(70000).fill(0xff)])
65
98
  await createDecodeRedeem([[0], [1], [2]])
66
99
  await createDecodeRedeem([[0], [1], [2], [3]])
67
- await createDecodeRedeem([[3, 1, 4, 1, 5, 9]], undefined, undefined, undefined, 'none', false)
68
- await createDecodeRedeem([[3, 1, 4, 1, 5, 9]], undefined, undefined, undefined, 'single', false)
69
- await createDecodeRedeem([[3, 1, 4, 1, 5, 9]], undefined, undefined, undefined, 'all', true)
70
- await createDecodeRedeem([[3, 1, 4, 1, 5, 9]], undefined, undefined, undefined, 'none', true)
71
- await createDecodeRedeem([[3, 1, 4, 1, 5, 9]], undefined, undefined, undefined, 'single', true)
100
+ await createDecodeRedeem(
101
+ [[3, 1, 4, 1, 5, 9]],
102
+ undefined,
103
+ undefined,
104
+ undefined,
105
+ 'none',
106
+ false
107
+ )
108
+ await createDecodeRedeem(
109
+ [[3, 1, 4, 1, 5, 9]],
110
+ undefined,
111
+ undefined,
112
+ undefined,
113
+ 'single',
114
+ false
115
+ )
116
+ await createDecodeRedeem(
117
+ [[3, 1, 4, 1, 5, 9]],
118
+ undefined,
119
+ undefined,
120
+ undefined,
121
+ 'all',
122
+ true
123
+ )
124
+ await createDecodeRedeem(
125
+ [[3, 1, 4, 1, 5, 9]],
126
+ undefined,
127
+ undefined,
128
+ undefined,
129
+ 'none',
130
+ true
131
+ )
132
+ await createDecodeRedeem(
133
+ [[3, 1, 4, 1, 5, 9]],
134
+ undefined,
135
+ undefined,
136
+ undefined,
137
+ 'single',
138
+ true
139
+ )
72
140
  })
73
141
 
74
142
  describe('lock', () => {
@@ -81,7 +149,12 @@ describe('PushDrop', () => {
81
149
  const protocolID: [0 | 1 | 2, string] = [0, 'tests']
82
150
  const keyID = 'test-key'
83
151
  const counterparty = 'self'
84
- const lockingScript = await pushDrop.lock(fields, protocolID, keyID, counterparty)
152
+ const lockingScript = await pushDrop.lock(
153
+ fields,
154
+ protocolID,
155
+ keyID,
156
+ counterparty
157
+ )
85
158
 
86
159
  // Check that the locking script is not null
87
160
  expect(lockingScript).toBeInstanceOf(Script)
@@ -89,7 +162,9 @@ describe('PushDrop', () => {
89
162
  // Decode the locking script and check the fields and locking public key
90
163
  const decoded = await PushDrop.decode(lockingScript)
91
164
  expect(decoded.fields).toEqual(fields)
92
- const expectedPublicKey = (await wallet.getPublicKey({ protocolID, keyID, counterparty })).publicKey
165
+ const expectedPublicKey = (
166
+ await wallet.getPublicKey({ protocolID, keyID, counterparty })
167
+ ).publicKey
93
168
  expect(decoded.lockingPublicKey.toString()).toEqual(expectedPublicKey)
94
169
  })
95
170
  })
@@ -104,18 +179,41 @@ describe('PushDrop', () => {
104
179
  const protocolID: [0 | 1 | 2, string] = [0, 'tests']
105
180
  const keyID = 'test-key'
106
181
  const counterparty = 'self'
107
- const lockingScript = await pushDrop.lock(fields, protocolID, keyID, counterparty)
182
+ const lockingScript = await pushDrop.lock(
183
+ fields,
184
+ protocolID,
185
+ keyID,
186
+ counterparty
187
+ )
108
188
  const satoshis = 1
109
- const unlockingTemplate = await pushDrop.unlock(protocolID, keyID, counterparty)
110
- const sourceTx = new Transaction(1, [], [{
111
- lockingScript,
112
- satoshis
113
- }], 0)
114
- const spendTx = new Transaction(1, [{
115
- sourceTransaction: sourceTx,
116
- sourceOutputIndex: 0,
117
- sequence: 0xffffffff
118
- }], [], 0)
189
+ const unlockingTemplate = await pushDrop.unlock(
190
+ protocolID,
191
+ keyID,
192
+ counterparty
193
+ )
194
+ const sourceTx = new Transaction(
195
+ 1,
196
+ [],
197
+ [
198
+ {
199
+ lockingScript,
200
+ satoshis
201
+ }
202
+ ],
203
+ 0
204
+ )
205
+ const spendTx = new Transaction(
206
+ 1,
207
+ [
208
+ {
209
+ sourceTransaction: sourceTx,
210
+ sourceOutputIndex: 0,
211
+ sequence: 0xffffffff
212
+ }
213
+ ],
214
+ [],
215
+ 0
216
+ )
119
217
  const unlockingScript = await unlockingTemplate.sign(spendTx, 0)
120
218
  expect(await unlockingTemplate.estimateLength()).toEqual(73)
121
219
  const spend = new Spend({
@@ -147,11 +245,18 @@ describe('PushDrop', () => {
147
245
  const keyID = 'test-key'
148
246
  const counterparty = 'self'
149
247
 
150
- const lockingScript = await pushDrop.lock(fields, protocolID, keyID, counterparty)
248
+ const lockingScript = await pushDrop.lock(
249
+ fields,
250
+ protocolID,
251
+ keyID,
252
+ counterparty
253
+ )
151
254
 
152
255
  const decoded = await PushDrop.decode(lockingScript)
153
256
  expect(decoded.fields).toEqual(fields)
154
- const expectedPublicKey = (await wallet.getPublicKey({ protocolID, keyID, counterparty })).publicKey
257
+ const expectedPublicKey = (
258
+ await wallet.getPublicKey({ protocolID, keyID, counterparty })
259
+ ).publicKey
155
260
  expect(decoded.lockingPublicKey.toString()).toEqual(expectedPublicKey)
156
261
  })
157
262
  })