@bsv/sdk 1.3.12 → 1.3.13

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 (1234) hide show
  1. package/dist/cjs/mod.js +15 -15
  2. package/dist/cjs/mod.js.map +1 -1
  3. package/dist/cjs/package.json +10 -2
  4. package/dist/cjs/src/auth/Peer.js +62 -46
  5. package/dist/cjs/src/auth/Peer.js.map +1 -1
  6. package/dist/cjs/src/auth/SessionManager.js +4 -4
  7. package/dist/cjs/src/auth/SessionManager.js.map +1 -1
  8. package/dist/cjs/src/auth/__tests/Peer.test.js +446 -0
  9. package/dist/cjs/src/auth/__tests/Peer.test.js.map +1 -0
  10. package/dist/cjs/src/auth/__tests/SessionManager.test.js +69 -0
  11. package/dist/cjs/src/auth/__tests/SessionManager.test.js.map +1 -0
  12. package/dist/cjs/src/auth/certificates/Certificate.js +26 -23
  13. package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
  14. package/dist/cjs/src/auth/certificates/MasterCertificate.js +18 -16
  15. package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
  16. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +7 -7
  17. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  18. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js +182 -0
  19. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js.map +1 -0
  20. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +22 -22
  21. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  22. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js +184 -0
  23. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js.map +1 -0
  24. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js +75 -0
  25. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +1 -0
  26. package/dist/cjs/src/auth/certificates/index.js +5 -5
  27. package/dist/cjs/src/auth/certificates/index.js.map +1 -1
  28. package/dist/cjs/src/auth/clients/AuthFetch.js +74 -64
  29. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  30. package/dist/cjs/src/auth/clients/index.js +1 -1
  31. package/dist/cjs/src/auth/clients/index.js.map +1 -1
  32. package/dist/cjs/src/auth/index.js +7 -7
  33. package/dist/cjs/src/auth/index.js.map +1 -1
  34. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +62 -54
  35. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  36. package/dist/cjs/src/auth/transports/index.js +1 -1
  37. package/dist/cjs/src/auth/transports/index.js.map +1 -1
  38. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js +101 -0
  39. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js.map +1 -0
  40. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js +106 -0
  41. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +1 -0
  42. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js +111 -0
  43. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js.map +1 -0
  44. package/dist/cjs/src/auth/utils/createNonce.js +4 -4
  45. package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
  46. package/dist/cjs/src/auth/utils/getVerifiableCertificates.js +2 -2
  47. package/dist/cjs/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  48. package/dist/cjs/src/auth/utils/index.js +4 -4
  49. package/dist/cjs/src/auth/utils/index.js.map +1 -1
  50. package/dist/cjs/src/auth/utils/validateCertificates.js +2 -2
  51. package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
  52. package/dist/cjs/src/auth/utils/verifyNonce.js +3 -3
  53. package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
  54. package/dist/cjs/src/compat/BSM.js +9 -9
  55. package/dist/cjs/src/compat/BSM.js.map +1 -1
  56. package/dist/cjs/src/compat/ECIES.js +157 -116
  57. package/dist/cjs/src/compat/ECIES.js.map +1 -1
  58. package/dist/cjs/src/compat/HD.js +75 -75
  59. package/dist/cjs/src/compat/HD.js.map +1 -1
  60. package/dist/cjs/src/compat/Mnemonic.js +98 -93
  61. package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
  62. package/dist/cjs/src/compat/Utxo.js +5 -5
  63. package/dist/cjs/src/compat/Utxo.js.map +1 -1
  64. package/dist/cjs/src/compat/__tests/BSM.test.js +69 -0
  65. package/dist/cjs/src/compat/__tests/BSM.test.js.map +1 -0
  66. package/dist/cjs/src/compat/__tests/ECIES.test.js +115 -0
  67. package/dist/cjs/src/compat/__tests/ECIES.test.js.map +1 -0
  68. package/dist/cjs/src/compat/__tests/HD.test.js +336 -0
  69. package/dist/cjs/src/compat/__tests/HD.test.js.map +1 -0
  70. package/dist/cjs/src/compat/__tests/Mnemonic.test.js +150 -0
  71. package/dist/cjs/src/compat/__tests/Mnemonic.test.js.map +1 -0
  72. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js +175 -0
  73. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js.map +1 -0
  74. package/dist/cjs/src/compat/index.js +9 -9
  75. package/dist/cjs/src/compat/index.js.map +1 -1
  76. package/dist/cjs/src/messages/EncryptedMessage.js +17 -15
  77. package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
  78. package/dist/cjs/src/messages/SignedMessage.js +20 -20
  79. package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
  80. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js +57 -0
  81. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js.map +1 -0
  82. package/dist/cjs/src/messages/__tests/SignedMessage.test.js +52 -0
  83. package/dist/cjs/src/messages/__tests/SignedMessage.test.js.map +1 -0
  84. package/dist/cjs/src/messages/index.js +2 -2
  85. package/dist/cjs/src/messages/index.js.map +1 -1
  86. package/dist/cjs/src/overlay-tools/LookupResolver.js +20 -13
  87. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
  88. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js +44 -32
  89. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  90. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +41 -30
  91. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  92. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js +1471 -0
  93. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js.map +1 -0
  94. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +78 -0
  95. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +1 -0
  96. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js +933 -0
  97. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +1 -0
  98. package/dist/cjs/src/overlay-tools/index.js +8 -8
  99. package/dist/cjs/src/overlay-tools/index.js.map +1 -1
  100. package/dist/cjs/src/primitives/BasePoint.js +2 -2
  101. package/dist/cjs/src/primitives/BasePoint.js.map +1 -1
  102. package/dist/cjs/src/primitives/BigNumber.js +46 -59
  103. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  104. package/dist/cjs/src/primitives/Curve.js +29 -39
  105. package/dist/cjs/src/primitives/Curve.js.map +1 -1
  106. package/dist/cjs/src/primitives/DRBG.js +8 -14
  107. package/dist/cjs/src/primitives/DRBG.js.map +1 -1
  108. package/dist/cjs/src/primitives/ECDSA.js +24 -24
  109. package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
  110. package/dist/cjs/src/primitives/Hash.js +76 -111
  111. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  112. package/dist/cjs/src/primitives/JacobianPoint.js +20 -16
  113. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
  114. package/dist/cjs/src/primitives/K256.js +2 -2
  115. package/dist/cjs/src/primitives/K256.js.map +1 -1
  116. package/dist/cjs/src/primitives/Mersenne.js +4 -4
  117. package/dist/cjs/src/primitives/Mersenne.js.map +1 -1
  118. package/dist/cjs/src/primitives/MontgomoryMethod.js +5 -5
  119. package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -1
  120. package/dist/cjs/src/primitives/Point.js +74 -72
  121. package/dist/cjs/src/primitives/Point.js.map +1 -1
  122. package/dist/cjs/src/primitives/Polynomial.js +15 -13
  123. package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
  124. package/dist/cjs/src/primitives/PrivateKey.js +48 -39
  125. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  126. package/dist/cjs/src/primitives/PublicKey.js +23 -23
  127. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  128. package/dist/cjs/src/primitives/Random.js +4 -4
  129. package/dist/cjs/src/primitives/Random.js.map +1 -1
  130. package/dist/cjs/src/primitives/ReductionContext.js +11 -11
  131. package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
  132. package/dist/cjs/src/primitives/Schnorr.js +29 -23
  133. package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
  134. package/dist/cjs/src/primitives/Signature.js +25 -24
  135. package/dist/cjs/src/primitives/Signature.js.map +1 -1
  136. package/dist/cjs/src/primitives/SymmetricKey.js +26 -26
  137. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
  138. package/dist/cjs/src/primitives/TransactionSignature.js +23 -21
  139. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  140. package/dist/cjs/src/primitives/__tests/AESGCM.test.js +248 -0
  141. package/dist/cjs/src/primitives/__tests/AESGCM.test.js.map +1 -0
  142. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js +36 -0
  143. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js.map +1 -0
  144. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js +36 -0
  145. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js.map +1 -0
  146. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js +501 -0
  147. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js.map +1 -0
  148. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js +185 -0
  149. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js.map +1 -0
  150. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js +149 -0
  151. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js.map +1 -0
  152. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js +23 -0
  153. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js.map +1 -0
  154. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js +268 -0
  155. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js.map +1 -0
  156. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js +147 -0
  157. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js.map +1 -0
  158. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js +322 -0
  159. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js.map +1 -0
  160. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js +145 -0
  161. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js.map +1 -0
  162. package/dist/cjs/src/primitives/__tests/DRBG.test.js +22 -0
  163. package/dist/cjs/src/primitives/__tests/DRBG.test.js.map +1 -0
  164. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js +170 -0
  165. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js.map +1 -0
  166. package/dist/cjs/src/primitives/__tests/ECDH.test.js +34 -0
  167. package/dist/cjs/src/primitives/__tests/ECDH.test.js.map +1 -0
  168. package/dist/cjs/src/primitives/__tests/ECDSA.test.js +89 -0
  169. package/dist/cjs/src/primitives/__tests/ECDSA.test.js.map +1 -0
  170. package/dist/cjs/src/primitives/__tests/HMAC.test.js +60 -0
  171. package/dist/cjs/src/primitives/__tests/HMAC.test.js.map +1 -0
  172. package/dist/cjs/src/primitives/__tests/Hash.test.js +159 -0
  173. package/dist/cjs/src/primitives/__tests/Hash.test.js.map +1 -0
  174. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js +122 -0
  175. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js.map +1 -0
  176. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js +105 -0
  177. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js.map +1 -0
  178. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js +90 -0
  179. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js.map +1 -0
  180. package/dist/cjs/src/primitives/__tests/PublicKey.test.js +83 -0
  181. package/dist/cjs/src/primitives/__tests/PublicKey.test.js.map +1 -0
  182. package/dist/cjs/src/primitives/__tests/Random.test.js +19 -0
  183. package/dist/cjs/src/primitives/__tests/Random.test.js.map +1 -0
  184. package/dist/cjs/src/primitives/__tests/Reader.test.js +282 -0
  185. package/dist/cjs/src/primitives/__tests/Reader.test.js.map +1 -0
  186. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js +224 -0
  187. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js.map +1 -0
  188. package/dist/cjs/src/primitives/__tests/Schnorr.test.js +213 -0
  189. package/dist/cjs/src/primitives/__tests/Schnorr.test.js.map +1 -0
  190. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js +51 -0
  191. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js.map +1 -0
  192. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js +43 -0
  193. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js.map +1 -0
  194. package/dist/cjs/src/primitives/__tests/Writer.test.js +176 -0
  195. package/dist/cjs/src/primitives/__tests/Writer.test.js.map +1 -0
  196. package/dist/cjs/src/primitives/__tests/bug-31.test.js +32 -0
  197. package/dist/cjs/src/primitives/__tests/bug-31.test.js.map +1 -0
  198. package/dist/cjs/src/primitives/__tests/sighash.vectors.js +3506 -0
  199. package/dist/cjs/src/primitives/__tests/sighash.vectors.js.map +1 -0
  200. package/dist/cjs/src/primitives/__tests/utils.test.js +110 -0
  201. package/dist/cjs/src/primitives/__tests/utils.test.js.map +1 -0
  202. package/dist/cjs/src/primitives/index.js +27 -27
  203. package/dist/cjs/src/primitives/index.js.map +1 -1
  204. package/dist/cjs/src/primitives/utils.js +70 -60
  205. package/dist/cjs/src/primitives/utils.js.map +1 -1
  206. package/dist/cjs/src/script/LockingScript.js +2 -2
  207. package/dist/cjs/src/script/LockingScript.js.map +1 -1
  208. package/dist/cjs/src/script/Script.js +49 -47
  209. package/dist/cjs/src/script/Script.js.map +1 -1
  210. package/dist/cjs/src/script/Spend.js +305 -300
  211. package/dist/cjs/src/script/Spend.js.map +1 -1
  212. package/dist/cjs/src/script/UnlockingScript.js +2 -2
  213. package/dist/cjs/src/script/UnlockingScript.js.map +1 -1
  214. package/dist/cjs/src/script/__tests/Script.test.js +347 -0
  215. package/dist/cjs/src/script/__tests/Script.test.js.map +1 -0
  216. package/dist/cjs/src/script/__tests/Spend.test.js +282 -0
  217. package/dist/cjs/src/script/__tests/Spend.test.js.map +1 -0
  218. package/dist/cjs/src/script/__tests/SpendComplex.test.js +52 -0
  219. package/dist/cjs/src/script/__tests/SpendComplex.test.js.map +1 -0
  220. package/dist/cjs/src/script/__tests/script.invalid.vectors.js +2370 -0
  221. package/dist/cjs/src/script/__tests/script.invalid.vectors.js.map +1 -0
  222. package/dist/cjs/src/script/__tests/script.valid.vectors.js +1181 -0
  223. package/dist/cjs/src/script/__tests/script.valid.vectors.js.map +1 -0
  224. package/dist/cjs/src/script/__tests/spend.valid.vectors.js +2298 -0
  225. package/dist/cjs/src/script/__tests/spend.valid.vectors.js.map +1 -0
  226. package/dist/cjs/src/script/index.js +11 -11
  227. package/dist/cjs/src/script/index.js.map +1 -1
  228. package/dist/cjs/src/script/templates/P2PKH.js +40 -36
  229. package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
  230. package/dist/cjs/src/script/templates/PushDrop.js +42 -43
  231. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  232. package/dist/cjs/src/script/templates/RPuzzle.js +48 -45
  233. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  234. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js +161 -0
  235. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js.map +1 -0
  236. package/dist/cjs/src/script/templates/index.js +6 -6
  237. package/dist/cjs/src/script/templates/index.js.map +1 -1
  238. package/dist/cjs/src/totp/__tests/totp.test.js +67 -0
  239. package/dist/cjs/src/totp/__tests/totp.test.js.map +1 -0
  240. package/dist/cjs/src/totp/index.js +1 -1
  241. package/dist/cjs/src/totp/index.js.map +1 -1
  242. package/dist/cjs/src/totp/totp.js +7 -7
  243. package/dist/cjs/src/totp/totp.js.map +1 -1
  244. package/dist/cjs/src/transaction/Beef.js +141 -129
  245. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  246. package/dist/cjs/src/transaction/BeefParty.js +25 -25
  247. package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
  248. package/dist/cjs/src/transaction/BeefTx.js +25 -23
  249. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  250. package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
  251. package/dist/cjs/src/transaction/MerklePath.js +27 -22
  252. package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
  253. package/dist/cjs/src/transaction/Transaction.js +89 -157
  254. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  255. package/dist/cjs/src/transaction/__tests/Beef.test.js +393 -0
  256. package/dist/cjs/src/transaction/__tests/Beef.test.js.map +1 -0
  257. package/dist/cjs/src/transaction/__tests/MerklePath.test.js +209 -0
  258. package/dist/cjs/src/transaction/__tests/MerklePath.test.js.map +1 -0
  259. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js +219 -0
  260. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js.map +1 -0
  261. package/dist/cjs/src/transaction/__tests/Transaction.test.js +1073 -0
  262. package/dist/cjs/src/transaction/__tests/Transaction.test.js.map +1 -0
  263. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js +7 -0
  264. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js.map +1 -0
  265. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js +11 -0
  266. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js.map +1 -0
  267. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js +7 -0
  268. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js.map +1 -0
  269. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js +230 -0
  270. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js.map +1 -0
  271. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js +296 -0
  272. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js.map +1 -0
  273. package/dist/cjs/src/transaction/broadcasters/ARC.js +39 -35
  274. package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
  275. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +2 -2
  276. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  277. package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js +15 -15
  278. package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  279. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js +246 -0
  280. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js.map +1 -0
  281. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +148 -0
  282. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +1 -0
  283. package/dist/cjs/src/transaction/broadcasters/index.js +6 -6
  284. package/dist/cjs/src/transaction/broadcasters/index.js.map +1 -1
  285. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +2 -2
  286. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
  287. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +8 -8
  288. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  289. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +155 -0
  290. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +1 -0
  291. package/dist/cjs/src/transaction/chaintrackers/index.js +4 -4
  292. package/dist/cjs/src/transaction/chaintrackers/index.js.map +1 -1
  293. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js +3 -3
  294. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  295. package/dist/cjs/src/transaction/fee-models/index.js +2 -2
  296. package/dist/cjs/src/transaction/fee-models/index.js.map +1 -1
  297. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +11 -11
  298. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  299. package/dist/cjs/src/transaction/http/FetchHttpClient.js +4 -2
  300. package/dist/cjs/src/transaction/http/FetchHttpClient.js.map +1 -1
  301. package/dist/cjs/src/transaction/http/NodejsHttpClient.js +10 -8
  302. package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
  303. package/dist/cjs/src/transaction/http/index.js +6 -6
  304. package/dist/cjs/src/transaction/http/index.js.map +1 -1
  305. package/dist/cjs/src/transaction/index.js +12 -12
  306. package/dist/cjs/src/transaction/index.js.map +1 -1
  307. package/dist/cjs/src/wallet/CachedKeyDeriver.js +65 -63
  308. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
  309. package/dist/cjs/src/wallet/KeyDeriver.js +66 -58
  310. package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
  311. package/dist/cjs/src/wallet/ProtoWallet.js +27 -14
  312. package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
  313. package/dist/cjs/src/wallet/WalletClient.js +15 -14
  314. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  315. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js +269 -0
  316. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js.map +1 -0
  317. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js +114 -0
  318. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js.map +1 -0
  319. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js +475 -0
  320. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js.map +1 -0
  321. package/dist/cjs/src/wallet/index.js +12 -12
  322. package/dist/cjs/src/wallet/index.js.map +1 -1
  323. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +3 -3
  324. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  325. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +10 -10
  326. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  327. package/dist/cjs/src/wallet/substrates/WalletWireCalls.js.map +1 -1
  328. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1293 -1316
  329. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  330. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +320 -272
  331. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  332. package/dist/cjs/src/wallet/substrates/XDM.js +8 -5
  333. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
  334. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js +1962 -0
  335. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +1 -0
  336. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js +579 -0
  337. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js.map +1 -0
  338. package/dist/cjs/src/wallet/substrates/index.js +12 -12
  339. package/dist/cjs/src/wallet/substrates/index.js.map +1 -1
  340. package/dist/cjs/src/wallet/substrates/window.CWI.js +4 -4
  341. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  342. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  343. package/dist/esm/mod.js +31 -15
  344. package/dist/esm/mod.js.map +1 -1
  345. package/dist/esm/src/auth/Peer.js +67 -47
  346. package/dist/esm/src/auth/Peer.js.map +1 -1
  347. package/dist/esm/src/auth/SessionManager.js +9 -5
  348. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  349. package/dist/esm/src/auth/__tests/Peer.test.js +448 -0
  350. package/dist/esm/src/auth/__tests/Peer.test.js.map +1 -0
  351. package/dist/esm/src/auth/__tests/SessionManager.test.js +69 -0
  352. package/dist/esm/src/auth/__tests/SessionManager.test.js.map +1 -0
  353. package/dist/esm/src/auth/certificates/Certificate.js +31 -25
  354. package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
  355. package/dist/esm/src/auth/certificates/MasterCertificate.js +25 -16
  356. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  357. package/dist/esm/src/auth/certificates/VerifiableCertificate.js +14 -7
  358. package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  359. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js +182 -0
  360. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js.map +1 -0
  361. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +26 -22
  362. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  363. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js +184 -0
  364. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js.map +1 -0
  365. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js +75 -0
  366. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +1 -0
  367. package/dist/esm/src/auth/certificates/index.js +25 -4
  368. package/dist/esm/src/auth/certificates/index.js.map +1 -1
  369. package/dist/esm/src/auth/clients/AuthFetch.js +79 -65
  370. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  371. package/dist/esm/src/auth/clients/index.js +17 -1
  372. package/dist/esm/src/auth/clients/index.js.map +1 -1
  373. package/dist/esm/src/auth/index.js +23 -7
  374. package/dist/esm/src/auth/index.js.map +1 -1
  375. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +67 -55
  376. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  377. package/dist/esm/src/auth/transports/index.js +17 -1
  378. package/dist/esm/src/auth/transports/index.js.map +1 -1
  379. package/dist/esm/src/auth/types.js +2 -1
  380. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js +101 -0
  381. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js.map +1 -0
  382. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js +106 -0
  383. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +1 -0
  384. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js +111 -0
  385. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js.map +1 -0
  386. package/dist/esm/src/auth/utils/createNonce.js +8 -5
  387. package/dist/esm/src/auth/utils/createNonce.js.map +1 -1
  388. package/dist/esm/src/auth/utils/getVerifiableCertificates.js +7 -3
  389. package/dist/esm/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  390. package/dist/esm/src/auth/utils/index.js +20 -4
  391. package/dist/esm/src/auth/utils/index.js.map +1 -1
  392. package/dist/esm/src/auth/utils/validateCertificates.js +7 -3
  393. package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
  394. package/dist/esm/src/auth/utils/verifyNonce.js +7 -4
  395. package/dist/esm/src/auth/utils/verifyNonce.js.map +1 -1
  396. package/dist/esm/src/compat/BSM.js +56 -14
  397. package/dist/esm/src/compat/BSM.js.map +1 -1
  398. package/dist/esm/src/compat/ECIES.js +197 -117
  399. package/dist/esm/src/compat/ECIES.js.map +1 -1
  400. package/dist/esm/src/compat/HD.js +115 -76
  401. package/dist/esm/src/compat/HD.js.map +1 -1
  402. package/dist/esm/src/compat/Mnemonic.js +138 -94
  403. package/dist/esm/src/compat/Mnemonic.js.map +1 -1
  404. package/dist/esm/src/compat/Utxo.js +12 -6
  405. package/dist/esm/src/compat/Utxo.js.map +1 -1
  406. package/dist/esm/src/compat/__tests/BSM.test.js +69 -0
  407. package/dist/esm/src/compat/__tests/BSM.test.js.map +1 -0
  408. package/dist/esm/src/compat/__tests/ECIES.test.js +115 -0
  409. package/dist/esm/src/compat/__tests/ECIES.test.js.map +1 -0
  410. package/dist/esm/src/compat/__tests/HD.test.js +336 -0
  411. package/dist/esm/src/compat/__tests/HD.test.js.map +1 -0
  412. package/dist/esm/src/compat/__tests/Mnemonic.test.js +150 -0
  413. package/dist/esm/src/compat/__tests/Mnemonic.test.js.map +1 -0
  414. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js +175 -0
  415. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js.map +1 -0
  416. package/dist/esm/src/compat/bip-39-wordlist-en.js +4 -1
  417. package/dist/esm/src/compat/bip-39-wordlist-en.js.map +1 -1
  418. package/dist/esm/src/compat/index.js +48 -5
  419. package/dist/esm/src/compat/index.js.map +1 -1
  420. package/dist/esm/src/messages/EncryptedMessage.js +27 -17
  421. package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
  422. package/dist/esm/src/messages/SignedMessage.js +30 -22
  423. package/dist/esm/src/messages/SignedMessage.js.map +1 -1
  424. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js +57 -0
  425. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js.map +1 -0
  426. package/dist/esm/src/messages/__tests/SignedMessage.test.js +52 -0
  427. package/dist/esm/src/messages/__tests/SignedMessage.test.js.map +1 -0
  428. package/dist/esm/src/messages/index.js +38 -2
  429. package/dist/esm/src/messages/index.js.map +1 -1
  430. package/dist/esm/src/overlay-tools/LookupResolver.js +32 -17
  431. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  432. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js +51 -33
  433. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  434. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +51 -32
  435. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  436. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js +1471 -0
  437. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js.map +1 -0
  438. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +78 -0
  439. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +1 -0
  440. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js +933 -0
  441. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +1 -0
  442. package/dist/esm/src/overlay-tools/index.js +28 -5
  443. package/dist/esm/src/overlay-tools/index.js.map +1 -1
  444. package/dist/esm/src/primitives/AESGCM.js +39 -26
  445. package/dist/esm/src/primitives/AESGCM.js.map +1 -1
  446. package/dist/esm/src/primitives/BasePoint.js +9 -3
  447. package/dist/esm/src/primitives/BasePoint.js.map +1 -1
  448. package/dist/esm/src/primitives/BigNumber.js +50 -60
  449. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  450. package/dist/esm/src/primitives/Curve.js +36 -40
  451. package/dist/esm/src/primitives/Curve.js.map +1 -1
  452. package/dist/esm/src/primitives/DRBG.js +12 -15
  453. package/dist/esm/src/primitives/DRBG.js.map +1 -1
  454. package/dist/esm/src/primitives/ECDSA.js +34 -26
  455. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  456. package/dist/esm/src/primitives/Hash.js +115 -130
  457. package/dist/esm/src/primitives/Hash.js.map +1 -1
  458. package/dist/esm/src/primitives/JacobianPoint.js +26 -16
  459. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
  460. package/dist/esm/src/primitives/K256.js +8 -2
  461. package/dist/esm/src/primitives/K256.js.map +1 -1
  462. package/dist/esm/src/primitives/Mersenne.js +11 -5
  463. package/dist/esm/src/primitives/Mersenne.js.map +1 -1
  464. package/dist/esm/src/primitives/MontgomoryMethod.js +11 -5
  465. package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -1
  466. package/dist/esm/src/primitives/Point.js +80 -72
  467. package/dist/esm/src/primitives/Point.js.map +1 -1
  468. package/dist/esm/src/primitives/Polynomial.js +25 -15
  469. package/dist/esm/src/primitives/Polynomial.js.map +1 -1
  470. package/dist/esm/src/primitives/PrivateKey.js +90 -40
  471. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  472. package/dist/esm/src/primitives/PublicKey.js +29 -23
  473. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  474. package/dist/esm/src/primitives/Random.js +7 -5
  475. package/dist/esm/src/primitives/Random.js.map +1 -1
  476. package/dist/esm/src/primitives/ReductionContext.js +18 -12
  477. package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
  478. package/dist/esm/src/primitives/Schnorr.js +36 -24
  479. package/dist/esm/src/primitives/Schnorr.js.map +1 -1
  480. package/dist/esm/src/primitives/Signature.js +32 -25
  481. package/dist/esm/src/primitives/Signature.js.map +1 -1
  482. package/dist/esm/src/primitives/SymmetricKey.js +32 -26
  483. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
  484. package/dist/esm/src/primitives/TransactionSignature.js +62 -21
  485. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  486. package/dist/esm/src/primitives/__tests/AESGCM.test.js +248 -0
  487. package/dist/esm/src/primitives/__tests/AESGCM.test.js.map +1 -0
  488. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js +36 -0
  489. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js.map +1 -0
  490. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js +36 -0
  491. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js.map +1 -0
  492. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js +501 -0
  493. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js.map +1 -0
  494. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js +185 -0
  495. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js.map +1 -0
  496. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js +149 -0
  497. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js.map +1 -0
  498. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js +23 -0
  499. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js.map +1 -0
  500. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js +268 -0
  501. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js.map +1 -0
  502. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js +147 -0
  503. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js.map +1 -0
  504. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js +322 -0
  505. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js.map +1 -0
  506. package/dist/esm/src/primitives/__tests/Curve.unit.test.js +145 -0
  507. package/dist/esm/src/primitives/__tests/Curve.unit.test.js.map +1 -0
  508. package/dist/esm/src/primitives/__tests/DRBG.test.js +22 -0
  509. package/dist/esm/src/primitives/__tests/DRBG.test.js.map +1 -0
  510. package/dist/esm/src/primitives/__tests/DRBG.vectors.js +170 -0
  511. package/dist/esm/src/primitives/__tests/DRBG.vectors.js.map +1 -0
  512. package/dist/esm/src/primitives/__tests/ECDH.test.js +34 -0
  513. package/dist/esm/src/primitives/__tests/ECDH.test.js.map +1 -0
  514. package/dist/esm/src/primitives/__tests/ECDSA.test.js +89 -0
  515. package/dist/esm/src/primitives/__tests/ECDSA.test.js.map +1 -0
  516. package/dist/esm/src/primitives/__tests/HMAC.test.js +60 -0
  517. package/dist/esm/src/primitives/__tests/HMAC.test.js.map +1 -0
  518. package/dist/esm/src/primitives/__tests/Hash.test.js +159 -0
  519. package/dist/esm/src/primitives/__tests/Hash.test.js.map +1 -0
  520. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js +122 -0
  521. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js.map +1 -0
  522. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js +105 -0
  523. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js.map +1 -0
  524. package/dist/esm/src/primitives/__tests/PrivateKey.test.js +90 -0
  525. package/dist/esm/src/primitives/__tests/PrivateKey.test.js.map +1 -0
  526. package/dist/esm/src/primitives/__tests/PublicKey.test.js +83 -0
  527. package/dist/esm/src/primitives/__tests/PublicKey.test.js.map +1 -0
  528. package/dist/esm/src/primitives/__tests/Random.test.js +19 -0
  529. package/dist/esm/src/primitives/__tests/Random.test.js.map +1 -0
  530. package/dist/esm/src/primitives/__tests/Reader.test.js +282 -0
  531. package/dist/esm/src/primitives/__tests/Reader.test.js.map +1 -0
  532. package/dist/esm/src/primitives/__tests/ReductionContext.test.js +223 -0
  533. package/dist/esm/src/primitives/__tests/ReductionContext.test.js.map +1 -0
  534. package/dist/esm/src/primitives/__tests/Schnorr.test.js +213 -0
  535. package/dist/esm/src/primitives/__tests/Schnorr.test.js.map +1 -0
  536. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js +51 -0
  537. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js.map +1 -0
  538. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js +43 -0
  539. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js.map +1 -0
  540. package/dist/esm/src/primitives/__tests/Writer.test.js +176 -0
  541. package/dist/esm/src/primitives/__tests/Writer.test.js.map +1 -0
  542. package/dist/esm/src/primitives/__tests/bug-31.test.js +32 -0
  543. package/dist/esm/src/primitives/__tests/bug-31.test.js.map +1 -0
  544. package/dist/esm/src/primitives/__tests/sighash.vectors.js +3506 -0
  545. package/dist/esm/src/primitives/__tests/sighash.vectors.js.map +1 -0
  546. package/dist/esm/src/primitives/__tests/utils.test.js +110 -0
  547. package/dist/esm/src/primitives/__tests/utils.test.js.map +1 -0
  548. package/dist/esm/src/primitives/index.js +66 -14
  549. package/dist/esm/src/primitives/index.js.map +1 -1
  550. package/dist/esm/src/primitives/utils.js +109 -80
  551. package/dist/esm/src/primitives/utils.js.map +1 -1
  552. package/dist/esm/src/script/LockingScript.js +8 -2
  553. package/dist/esm/src/script/LockingScript.js.map +1 -1
  554. package/dist/esm/src/script/OP.js +3 -1
  555. package/dist/esm/src/script/OP.js.map +1 -1
  556. package/dist/esm/src/script/Script.js +56 -48
  557. package/dist/esm/src/script/Script.js.map +1 -1
  558. package/dist/esm/src/script/ScriptChunk.js +2 -1
  559. package/dist/esm/src/script/ScriptTemplate.js +2 -1
  560. package/dist/esm/src/script/Spend.js +345 -301
  561. package/dist/esm/src/script/Spend.js.map +1 -1
  562. package/dist/esm/src/script/UnlockingScript.js +8 -2
  563. package/dist/esm/src/script/UnlockingScript.js.map +1 -1
  564. package/dist/esm/src/script/__tests/Script.test.js +347 -0
  565. package/dist/esm/src/script/__tests/Script.test.js.map +1 -0
  566. package/dist/esm/src/script/__tests/Spend.test.js +282 -0
  567. package/dist/esm/src/script/__tests/Spend.test.js.map +1 -0
  568. package/dist/esm/src/script/__tests/SpendComplex.test.js +51 -0
  569. package/dist/esm/src/script/__tests/SpendComplex.test.js.map +1 -0
  570. package/dist/esm/src/script/__tests/script.invalid.vectors.js +2370 -0
  571. package/dist/esm/src/script/__tests/script.invalid.vectors.js.map +1 -0
  572. package/dist/esm/src/script/__tests/script.valid.vectors.js +1181 -0
  573. package/dist/esm/src/script/__tests/script.valid.vectors.js.map +1 -0
  574. package/dist/esm/src/script/__tests/spend.valid.vectors.js +2298 -0
  575. package/dist/esm/src/script/__tests/spend.valid.vectors.js.map +1 -0
  576. package/dist/esm/src/script/index.js +31 -6
  577. package/dist/esm/src/script/index.js.map +1 -1
  578. package/dist/esm/src/script/templates/P2PKH.js +52 -39
  579. package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
  580. package/dist/esm/src/script/templates/PushDrop.js +51 -46
  581. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  582. package/dist/esm/src/script/templates/RPuzzle.js +55 -46
  583. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  584. package/dist/esm/src/script/templates/__tests/PushDrop.test.js +161 -0
  585. package/dist/esm/src/script/templates/__tests/PushDrop.test.js.map +1 -0
  586. package/dist/esm/src/script/templates/index.js +12 -3
  587. package/dist/esm/src/script/templates/index.js.map +1 -1
  588. package/dist/esm/src/totp/__tests/totp.test.js +67 -0
  589. package/dist/esm/src/totp/__tests/totp.test.js.map +1 -0
  590. package/dist/esm/src/totp/index.js +17 -1
  591. package/dist/esm/src/totp/index.js.map +1 -1
  592. package/dist/esm/src/totp/totp.js +15 -8
  593. package/dist/esm/src/totp/totp.js.map +1 -1
  594. package/dist/esm/src/transaction/Beef.js +160 -141
  595. package/dist/esm/src/transaction/Beef.js.map +1 -1
  596. package/dist/esm/src/transaction/BeefParty.js +30 -26
  597. package/dist/esm/src/transaction/BeefParty.js.map +1 -1
  598. package/dist/esm/src/transaction/BeefTx.js +32 -24
  599. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  600. package/dist/esm/src/transaction/Broadcaster.js +6 -2
  601. package/dist/esm/src/transaction/Broadcaster.js.map +1 -1
  602. package/dist/esm/src/transaction/ChainTracker.js +2 -1
  603. package/dist/esm/src/transaction/FeeModel.js +2 -1
  604. package/dist/esm/src/transaction/MerklePath.js +31 -23
  605. package/dist/esm/src/transaction/MerklePath.js.map +1 -1
  606. package/dist/esm/src/transaction/Transaction.js +96 -158
  607. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  608. package/dist/esm/src/transaction/TransactionInput.js +2 -1
  609. package/dist/esm/src/transaction/TransactionOutput.js +2 -1
  610. package/dist/esm/src/transaction/__tests/Beef.test.js +393 -0
  611. package/dist/esm/src/transaction/__tests/Beef.test.js.map +1 -0
  612. package/dist/esm/src/transaction/__tests/MerklePath.test.js +209 -0
  613. package/dist/esm/src/transaction/__tests/MerklePath.test.js.map +1 -0
  614. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js +219 -0
  615. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js.map +1 -0
  616. package/dist/esm/src/transaction/__tests/Transaction.test.js +1072 -0
  617. package/dist/esm/src/transaction/__tests/Transaction.test.js.map +1 -0
  618. package/dist/esm/src/transaction/__tests/bigtx.vectors.js +7 -0
  619. package/dist/esm/src/transaction/__tests/bigtx.vectors.js.map +1 -0
  620. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js +11 -0
  621. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js.map +1 -0
  622. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js +7 -0
  623. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js.map +1 -0
  624. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js +230 -0
  625. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js.map +1 -0
  626. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js +296 -0
  627. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js.map +1 -0
  628. package/dist/esm/src/transaction/broadcasters/ARC.js +46 -36
  629. package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
  630. package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js +9 -3
  631. package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  632. package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js +19 -16
  633. package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  634. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js +246 -0
  635. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js.map +1 -0
  636. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +148 -0
  637. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +1 -0
  638. package/dist/esm/src/transaction/broadcasters/index.js +12 -3
  639. package/dist/esm/src/transaction/broadcasters/index.js.map +1 -1
  640. package/dist/esm/src/transaction/chaintrackers/DefaultChainTracker.js +9 -3
  641. package/dist/esm/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
  642. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +12 -9
  643. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  644. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +155 -0
  645. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +1 -0
  646. package/dist/esm/src/transaction/chaintrackers/index.js +10 -2
  647. package/dist/esm/src/transaction/chaintrackers/index.js.map +1 -1
  648. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js +7 -4
  649. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  650. package/dist/esm/src/transaction/fee-models/index.js +8 -1
  651. package/dist/esm/src/transaction/fee-models/index.js.map +1 -1
  652. package/dist/esm/src/transaction/http/DefaultHttpClient.js +15 -12
  653. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  654. package/dist/esm/src/transaction/http/FetchHttpClient.js +9 -3
  655. package/dist/esm/src/transaction/http/FetchHttpClient.js.map +1 -1
  656. package/dist/esm/src/transaction/http/HttpClient.js +2 -1
  657. package/dist/esm/src/transaction/http/NodejsHttpClient.js +15 -9
  658. package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
  659. package/dist/esm/src/transaction/http/index.js +9 -3
  660. package/dist/esm/src/transaction/http/index.js.map +1 -1
  661. package/dist/esm/src/transaction/index.js +32 -6
  662. package/dist/esm/src/transaction/index.js.map +1 -1
  663. package/dist/esm/src/wallet/CachedKeyDeriver.js +69 -64
  664. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
  665. package/dist/esm/src/wallet/KeyDeriver.js +72 -60
  666. package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
  667. package/dist/esm/src/wallet/ProtoWallet.js +33 -16
  668. package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
  669. package/dist/esm/src/wallet/Wallet.interfaces.js +5 -2
  670. package/dist/esm/src/wallet/Wallet.interfaces.js.map +1 -1
  671. package/dist/esm/src/wallet/WalletClient.js +22 -15
  672. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  673. package/dist/esm/src/wallet/WalletError.js +6 -2
  674. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  675. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js +269 -0
  676. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js.map +1 -0
  677. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js +113 -0
  678. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js.map +1 -0
  679. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js +475 -0
  680. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js.map +1 -0
  681. package/dist/esm/src/wallet/index.js +32 -8
  682. package/dist/esm/src/wallet/index.js.map +1 -1
  683. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +7 -4
  684. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  685. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js +17 -11
  686. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  687. package/dist/esm/src/wallet/substrates/WalletWire.js +2 -1
  688. package/dist/esm/src/wallet/substrates/WalletWireCalls.js +3 -1
  689. package/dist/esm/src/wallet/substrates/WalletWireCalls.js.map +1 -1
  690. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1300 -1317
  691. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  692. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +327 -273
  693. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  694. package/dist/esm/src/wallet/substrates/XDM.js +12 -6
  695. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
  696. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js +1962 -0
  697. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +1 -0
  698. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js +579 -0
  699. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js.map +1 -0
  700. package/dist/esm/src/wallet/substrates/index.js +32 -7
  701. package/dist/esm/src/wallet/substrates/index.js.map +1 -1
  702. package/dist/esm/src/wallet/substrates/window.CWI.js +8 -5
  703. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  704. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  705. package/dist/types/mod.d.ts +15 -15
  706. package/dist/types/mod.d.ts.map +1 -1
  707. package/dist/types/src/auth/Peer.d.ts +14 -14
  708. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  709. package/dist/types/src/auth/SessionManager.d.ts +5 -5
  710. package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
  711. package/dist/types/src/auth/__tests/Peer.test.d.ts +2 -0
  712. package/dist/types/src/auth/__tests/Peer.test.d.ts.map +1 -0
  713. package/dist/types/src/auth/__tests/SessionManager.test.d.ts +2 -0
  714. package/dist/types/src/auth/__tests/SessionManager.test.d.ts.map +1 -0
  715. package/dist/types/src/auth/certificates/Certificate.d.ts +2 -2
  716. package/dist/types/src/auth/certificates/Certificate.d.ts.map +1 -1
  717. package/dist/types/src/auth/certificates/MasterCertificate.d.ts +2 -2
  718. package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
  719. package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts +2 -2
  720. package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts.map +1 -1
  721. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts +2 -0
  722. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts.map +1 -0
  723. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts +2 -2
  724. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts.map +1 -1
  725. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts +2 -0
  726. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts.map +1 -0
  727. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts +2 -0
  728. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts.map +1 -0
  729. package/dist/types/src/auth/certificates/index.d.ts +4 -4
  730. package/dist/types/src/auth/certificates/index.d.ts.map +1 -1
  731. package/dist/types/src/auth/clients/AuthFetch.d.ts +9 -9
  732. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  733. package/dist/types/src/auth/clients/index.d.ts +1 -1
  734. package/dist/types/src/auth/clients/index.d.ts.map +1 -1
  735. package/dist/types/src/auth/index.d.ts +7 -7
  736. package/dist/types/src/auth/index.d.ts.map +1 -1
  737. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts +1 -1
  738. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts.map +1 -1
  739. package/dist/types/src/auth/transports/index.d.ts +1 -1
  740. package/dist/types/src/auth/transports/index.d.ts.map +1 -1
  741. package/dist/types/src/auth/types.d.ts +1 -1
  742. package/dist/types/src/auth/types.d.ts.map +1 -1
  743. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts +2 -0
  744. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts.map +1 -0
  745. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts +2 -0
  746. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts.map +1 -0
  747. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts +2 -0
  748. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts.map +1 -0
  749. package/dist/types/src/auth/utils/createNonce.d.ts +1 -1
  750. package/dist/types/src/auth/utils/createNonce.d.ts.map +1 -1
  751. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts +3 -3
  752. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
  753. package/dist/types/src/auth/utils/index.d.ts +4 -4
  754. package/dist/types/src/auth/utils/index.d.ts.map +1 -1
  755. package/dist/types/src/auth/utils/validateCertificates.d.ts +2 -2
  756. package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
  757. package/dist/types/src/auth/utils/verifyNonce.d.ts +1 -1
  758. package/dist/types/src/auth/utils/verifyNonce.d.ts.map +1 -1
  759. package/dist/types/src/compat/BSM.d.ts +3 -3
  760. package/dist/types/src/compat/BSM.d.ts.map +1 -1
  761. package/dist/types/src/compat/ECIES.d.ts +38 -38
  762. package/dist/types/src/compat/ECIES.d.ts.map +1 -1
  763. package/dist/types/src/compat/HD.d.ts +53 -53
  764. package/dist/types/src/compat/HD.d.ts.map +1 -1
  765. package/dist/types/src/compat/Mnemonic.d.ts +79 -79
  766. package/dist/types/src/compat/Mnemonic.d.ts.map +1 -1
  767. package/dist/types/src/compat/Utxo.d.ts +3 -3
  768. package/dist/types/src/compat/Utxo.d.ts.map +1 -1
  769. package/dist/types/src/compat/__tests/BSM.test.d.ts +2 -0
  770. package/dist/types/src/compat/__tests/BSM.test.d.ts.map +1 -0
  771. package/dist/types/src/compat/__tests/ECIES.test.d.ts +2 -0
  772. package/dist/types/src/compat/__tests/ECIES.test.d.ts.map +1 -0
  773. package/dist/types/src/compat/__tests/HD.test.d.ts +2 -0
  774. package/dist/types/src/compat/__tests/HD.test.d.ts.map +1 -0
  775. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts +2 -0
  776. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts.map +1 -0
  777. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts +11 -0
  778. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts.map +1 -0
  779. package/dist/types/src/compat/index.d.ts +5 -5
  780. package/dist/types/src/compat/index.d.ts.map +1 -1
  781. package/dist/types/src/messages/EncryptedMessage.d.ts +2 -2
  782. package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
  783. package/dist/types/src/messages/SignedMessage.d.ts +2 -2
  784. package/dist/types/src/messages/SignedMessage.d.ts.map +1 -1
  785. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts +2 -0
  786. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts.map +1 -0
  787. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts +2 -0
  788. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts.map +1 -0
  789. package/dist/types/src/messages/index.d.ts +2 -2
  790. package/dist/types/src/messages/index.d.ts.map +1 -1
  791. package/dist/types/src/overlay-tools/LookupResolver.d.ts +9 -9
  792. package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
  793. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +21 -21
  794. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -1
  795. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +16 -16
  796. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
  797. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts +2 -0
  798. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts.map +1 -0
  799. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts +2 -0
  800. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts.map +1 -0
  801. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts +2 -0
  802. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts.map +1 -0
  803. package/dist/types/src/overlay-tools/index.d.ts +5 -5
  804. package/dist/types/src/overlay-tools/index.d.ts.map +1 -1
  805. package/dist/types/src/primitives/BasePoint.d.ts +1 -1
  806. package/dist/types/src/primitives/BasePoint.d.ts.map +1 -1
  807. package/dist/types/src/primitives/BigNumber.d.ts +1 -1
  808. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  809. package/dist/types/src/primitives/Curve.d.ts +3 -3
  810. package/dist/types/src/primitives/Curve.d.ts.map +1 -1
  811. package/dist/types/src/primitives/DRBG.d.ts +1 -1
  812. package/dist/types/src/primitives/DRBG.d.ts.map +1 -1
  813. package/dist/types/src/primitives/ECDSA.d.ts +3 -3
  814. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  815. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  816. package/dist/types/src/primitives/JacobianPoint.d.ts +3 -3
  817. package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
  818. package/dist/types/src/primitives/K256.d.ts +2 -2
  819. package/dist/types/src/primitives/K256.d.ts.map +1 -1
  820. package/dist/types/src/primitives/Mersenne.d.ts +1 -1
  821. package/dist/types/src/primitives/Mersenne.d.ts.map +1 -1
  822. package/dist/types/src/primitives/MontgomoryMethod.d.ts +2 -2
  823. package/dist/types/src/primitives/MontgomoryMethod.d.ts.map +1 -1
  824. package/dist/types/src/primitives/Point.d.ts +17 -13
  825. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  826. package/dist/types/src/primitives/Polynomial.d.ts +2 -2
  827. package/dist/types/src/primitives/Polynomial.d.ts.map +1 -1
  828. package/dist/types/src/primitives/PrivateKey.d.ts +5 -5
  829. package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
  830. package/dist/types/src/primitives/PublicKey.d.ts +4 -4
  831. package/dist/types/src/primitives/PublicKey.d.ts.map +1 -1
  832. package/dist/types/src/primitives/Random.d.ts.map +1 -1
  833. package/dist/types/src/primitives/ReductionContext.d.ts +2 -2
  834. package/dist/types/src/primitives/ReductionContext.d.ts.map +1 -1
  835. package/dist/types/src/primitives/Schnorr.d.ts +17 -17
  836. package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
  837. package/dist/types/src/primitives/Signature.d.ts +2 -2
  838. package/dist/types/src/primitives/Signature.d.ts.map +1 -1
  839. package/dist/types/src/primitives/SymmetricKey.d.ts +14 -14
  840. package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
  841. package/dist/types/src/primitives/TransactionSignature.d.ts +9 -9
  842. package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
  843. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts +2 -0
  844. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts.map +1 -0
  845. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts +8 -0
  846. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts.map +1 -0
  847. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts +8 -0
  848. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts.map +1 -0
  849. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts +2 -0
  850. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts.map +1 -0
  851. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts +2 -0
  852. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts.map +1 -0
  853. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts +2 -0
  854. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts.map +1 -0
  855. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts +2 -0
  856. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts.map +1 -0
  857. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts +15 -0
  858. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts.map +1 -0
  859. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts +2 -0
  860. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts.map +1 -0
  861. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts +2 -0
  862. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts.map +1 -0
  863. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts +2 -0
  864. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts.map +1 -0
  865. package/dist/types/src/primitives/__tests/DRBG.test.d.ts +2 -0
  866. package/dist/types/src/primitives/__tests/DRBG.test.d.ts.map +1 -0
  867. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts +10 -0
  868. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts.map +1 -0
  869. package/dist/types/src/primitives/__tests/ECDH.test.d.ts +2 -0
  870. package/dist/types/src/primitives/__tests/ECDH.test.d.ts.map +1 -0
  871. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts +2 -0
  872. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts.map +1 -0
  873. package/dist/types/src/primitives/__tests/HMAC.test.d.ts +2 -0
  874. package/dist/types/src/primitives/__tests/HMAC.test.d.ts.map +1 -0
  875. package/dist/types/src/primitives/__tests/Hash.test.d.ts +2 -0
  876. package/dist/types/src/primitives/__tests/Hash.test.d.ts.map +1 -0
  877. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts +68 -0
  878. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts.map +1 -0
  879. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts +2 -0
  880. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts.map +1 -0
  881. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts +2 -0
  882. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts.map +1 -0
  883. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts +2 -0
  884. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts.map +1 -0
  885. package/dist/types/src/primitives/__tests/Random.test.d.ts +2 -0
  886. package/dist/types/src/primitives/__tests/Random.test.d.ts.map +1 -0
  887. package/dist/types/src/primitives/__tests/Reader.test.d.ts +2 -0
  888. package/dist/types/src/primitives/__tests/Reader.test.d.ts.map +1 -0
  889. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts +2 -0
  890. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts.map +1 -0
  891. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts +2 -0
  892. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts.map +1 -0
  893. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts +2 -0
  894. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts.map +1 -0
  895. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts +20 -0
  896. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts.map +1 -0
  897. package/dist/types/src/primitives/__tests/Writer.test.d.ts +2 -0
  898. package/dist/types/src/primitives/__tests/Writer.test.d.ts.map +1 -0
  899. package/dist/types/src/primitives/__tests/bug-31.test.d.ts +2 -0
  900. package/dist/types/src/primitives/__tests/bug-31.test.d.ts.map +1 -0
  901. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts +3 -0
  902. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts.map +1 -0
  903. package/dist/types/src/primitives/__tests/utils.test.d.ts +2 -0
  904. package/dist/types/src/primitives/__tests/utils.test.d.ts.map +1 -0
  905. package/dist/types/src/primitives/index.d.ts +14 -14
  906. package/dist/types/src/primitives/index.d.ts.map +1 -1
  907. package/dist/types/src/primitives/utils.d.ts +1 -1
  908. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  909. package/dist/types/src/script/LockingScript.d.ts +1 -1
  910. package/dist/types/src/script/LockingScript.d.ts.map +1 -1
  911. package/dist/types/src/script/Script.d.ts +5 -5
  912. package/dist/types/src/script/Script.d.ts.map +1 -1
  913. package/dist/types/src/script/ScriptTemplate.d.ts +3 -3
  914. package/dist/types/src/script/ScriptTemplate.d.ts.map +1 -1
  915. package/dist/types/src/script/Spend.d.ts +4 -4
  916. package/dist/types/src/script/Spend.d.ts.map +1 -1
  917. package/dist/types/src/script/UnlockingScript.d.ts +1 -1
  918. package/dist/types/src/script/UnlockingScript.d.ts.map +1 -1
  919. package/dist/types/src/script/__tests/Script.test.d.ts +2 -0
  920. package/dist/types/src/script/__tests/Script.test.d.ts.map +1 -0
  921. package/dist/types/src/script/__tests/Spend.test.d.ts +2 -0
  922. package/dist/types/src/script/__tests/Spend.test.d.ts.map +1 -0
  923. package/dist/types/src/script/__tests/SpendComplex.test.d.ts +2 -0
  924. package/dist/types/src/script/__tests/SpendComplex.test.d.ts.map +1 -0
  925. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts +3 -0
  926. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts.map +1 -0
  927. package/dist/types/src/script/__tests/script.valid.vectors.d.ts +3 -0
  928. package/dist/types/src/script/__tests/script.valid.vectors.d.ts.map +1 -0
  929. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts +3 -0
  930. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts.map +1 -0
  931. package/dist/types/src/script/index.d.ts +7 -7
  932. package/dist/types/src/script/index.d.ts.map +1 -1
  933. package/dist/types/src/script/templates/P2PKH.d.ts +7 -7
  934. package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -1
  935. package/dist/types/src/script/templates/PushDrop.d.ts +7 -7
  936. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  937. package/dist/types/src/script/templates/RPuzzle.d.ts +9 -9
  938. package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
  939. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts +2 -0
  940. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts.map +1 -0
  941. package/dist/types/src/script/templates/index.d.ts +3 -3
  942. package/dist/types/src/script/templates/index.d.ts.map +1 -1
  943. package/dist/types/src/totp/__tests/totp.test.d.ts +2 -0
  944. package/dist/types/src/totp/__tests/totp.test.d.ts.map +1 -0
  945. package/dist/types/src/totp/index.d.ts +1 -1
  946. package/dist/types/src/totp/index.d.ts.map +1 -1
  947. package/dist/types/src/transaction/Beef.d.ts +96 -96
  948. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  949. package/dist/types/src/transaction/BeefParty.d.ts +23 -23
  950. package/dist/types/src/transaction/BeefParty.d.ts.map +1 -1
  951. package/dist/types/src/transaction/BeefTx.d.ts +5 -5
  952. package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
  953. package/dist/types/src/transaction/Broadcaster.d.ts +1 -1
  954. package/dist/types/src/transaction/Broadcaster.d.ts.map +1 -1
  955. package/dist/types/src/transaction/ChainTracker.d.ts +2 -2
  956. package/dist/types/src/transaction/FeeModel.d.ts +1 -1
  957. package/dist/types/src/transaction/FeeModel.d.ts.map +1 -1
  958. package/dist/types/src/transaction/MerklePath.d.ts +2 -2
  959. package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
  960. package/dist/types/src/transaction/Transaction.d.ts +11 -19
  961. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  962. package/dist/types/src/transaction/TransactionInput.d.ts +2 -2
  963. package/dist/types/src/transaction/TransactionInput.d.ts.map +1 -1
  964. package/dist/types/src/transaction/TransactionOutput.d.ts +1 -1
  965. package/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -1
  966. package/dist/types/src/transaction/__tests/Beef.test.d.ts +2 -0
  967. package/dist/types/src/transaction/__tests/Beef.test.d.ts.map +1 -0
  968. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts +2 -0
  969. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts.map +1 -0
  970. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts +2 -0
  971. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts.map +1 -0
  972. package/dist/types/src/transaction/__tests/Transaction.test.d.ts +2 -0
  973. package/dist/types/src/transaction/__tests/Transaction.test.d.ts.map +1 -0
  974. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts +6 -0
  975. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts.map +1 -0
  976. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts +6 -0
  977. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts.map +1 -0
  978. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts +5 -0
  979. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts.map +1 -0
  980. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts +3 -0
  981. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts.map +1 -0
  982. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts +3 -0
  983. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts.map +1 -0
  984. package/dist/types/src/transaction/broadcasters/ARC.d.ts +3 -3
  985. package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
  986. package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts +2 -2
  987. package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts.map +1 -1
  988. package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts +4 -4
  989. package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts.map +1 -1
  990. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts +2 -0
  991. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts.map +1 -0
  992. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts +2 -0
  993. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts.map +1 -0
  994. package/dist/types/src/transaction/broadcasters/index.d.ts +4 -4
  995. package/dist/types/src/transaction/broadcasters/index.d.ts.map +1 -1
  996. package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts +1 -1
  997. package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts.map +1 -1
  998. package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts +3 -3
  999. package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -1
  1000. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts +2 -0
  1001. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts.map +1 -0
  1002. package/dist/types/src/transaction/chaintrackers/index.d.ts +3 -3
  1003. package/dist/types/src/transaction/chaintrackers/index.d.ts.map +1 -1
  1004. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts +2 -2
  1005. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -1
  1006. package/dist/types/src/transaction/fee-models/index.d.ts +1 -1
  1007. package/dist/types/src/transaction/fee-models/index.d.ts.map +1 -1
  1008. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts +2 -2
  1009. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts.map +1 -1
  1010. package/dist/types/src/transaction/http/FetchHttpClient.d.ts +6 -6
  1011. package/dist/types/src/transaction/http/FetchHttpClient.d.ts.map +1 -1
  1012. package/dist/types/src/transaction/http/HttpClient.d.ts +4 -4
  1013. package/dist/types/src/transaction/http/HttpClient.d.ts.map +1 -1
  1014. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts +4 -4
  1015. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts.map +1 -1
  1016. package/dist/types/src/transaction/http/index.d.ts +6 -6
  1017. package/dist/types/src/transaction/http/index.d.ts.map +1 -1
  1018. package/dist/types/src/transaction/index.d.ts +10 -10
  1019. package/dist/types/src/transaction/index.d.ts.map +1 -1
  1020. package/dist/types/src/wallet/CachedKeyDeriver.d.ts +61 -61
  1021. package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
  1022. package/dist/types/src/wallet/KeyDeriver.d.ts +80 -80
  1023. package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
  1024. package/dist/types/src/wallet/ProtoWallet.d.ts +3 -3
  1025. package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -1
  1026. package/dist/types/src/wallet/Wallet.interfaces.d.ts +144 -144
  1027. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  1028. package/dist/types/src/wallet/WalletClient.d.ts +1 -1
  1029. package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
  1030. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts +2 -0
  1031. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts.map +1 -0
  1032. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts +2 -0
  1033. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts.map +1 -0
  1034. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts +2 -0
  1035. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts.map +1 -0
  1036. package/dist/types/src/wallet/index.d.ts +8 -8
  1037. package/dist/types/src/wallet/index.d.ts.map +1 -1
  1038. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +1 -1
  1039. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  1040. package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts +1 -1
  1041. package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts.map +1 -1
  1042. package/dist/types/src/wallet/substrates/WalletWire.d.ts.map +1 -1
  1043. package/dist/types/src/wallet/substrates/WalletWireCalls.d.ts.map +1 -1
  1044. package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts +2 -2
  1045. package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -1
  1046. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts +10 -10
  1047. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
  1048. package/dist/types/src/wallet/substrates/XDM.d.ts +2 -2
  1049. package/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -1
  1050. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts +2 -0
  1051. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts.map +1 -0
  1052. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts +5 -0
  1053. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts.map +1 -0
  1054. package/dist/types/src/wallet/substrates/index.d.ts +7 -7
  1055. package/dist/types/src/wallet/substrates/index.d.ts.map +1 -1
  1056. package/dist/types/src/wallet/substrates/window.CWI.d.ts +19 -19
  1057. package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
  1058. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  1059. package/dist/umd/bundle.js +1 -1
  1060. package/docs/auth.md +55 -51
  1061. package/docs/compat.md +24 -24
  1062. package/docs/messages.md +7 -5
  1063. package/docs/overlay-tools.md +21 -21
  1064. package/docs/primitives.md +239 -242
  1065. package/docs/script.md +31 -31
  1066. package/docs/totp.md +5 -5
  1067. package/docs/transaction.md +76 -78
  1068. package/docs/wallet-substrates.md +6 -6
  1069. package/docs/wallet.md +129 -129
  1070. package/mod.ts +15 -15
  1071. package/package.json +10 -2
  1072. package/src/auth/Peer.ts +217 -72
  1073. package/src/auth/SessionManager.ts +8 -6
  1074. package/src/auth/__tests/Peer.test.ts +314 -159
  1075. package/src/auth/certificates/Certificate.ts +16 -6
  1076. package/src/auth/certificates/MasterCertificate.ts +96 -43
  1077. package/src/auth/certificates/VerifiableCertificate.ts +29 -9
  1078. package/src/auth/certificates/__tests/Certificate.test.ts +160 -146
  1079. package/src/auth/certificates/__tests/CompletedProtoWallet.ts +148 -59
  1080. package/src/auth/certificates/__tests/MasterCertificate.test.ts +65 -41
  1081. package/src/auth/certificates/__tests/VerifiableCertificate.test.ts +47 -31
  1082. package/src/auth/certificates/index.ts +4 -4
  1083. package/src/auth/clients/AuthFetch.ts +316 -231
  1084. package/src/auth/clients/index.ts +1 -1
  1085. package/src/auth/index.ts +7 -7
  1086. package/src/auth/transports/SimplifiedFetchTransport.ts +166 -124
  1087. package/src/auth/transports/index.ts +1 -1
  1088. package/src/auth/types.ts +1 -1
  1089. package/src/auth/utils/__tests/cryptononce.test.ts +52 -25
  1090. package/src/auth/utils/__tests/getVerifiableCertificates.test.ts +64 -38
  1091. package/src/auth/utils/__tests/validateCertificates.test.ts +101 -89
  1092. package/src/auth/utils/createNonce.ts +11 -3
  1093. package/src/auth/utils/getVerifiableCertificates.ts +11 -6
  1094. package/src/auth/utils/index.ts +4 -4
  1095. package/src/auth/utils/validateCertificates.ts +53 -39
  1096. package/src/auth/utils/verifyNonce.ts +6 -2
  1097. package/src/compat/BSM.ts +17 -9
  1098. package/src/compat/ECIES.ts +239 -123
  1099. package/src/compat/HD.ts +82 -63
  1100. package/src/compat/Mnemonic.ts +98 -87
  1101. package/src/compat/Utxo.ts +12 -9
  1102. package/src/compat/__tests/BSM.test.ts +43 -16
  1103. package/src/compat/__tests/ECIES.test.ts +117 -52
  1104. package/src/compat/__tests/HD.test.ts +49 -38
  1105. package/src/compat/__tests/Mnemonic.test.ts +145 -145
  1106. package/src/compat/index.ts +5 -5
  1107. package/src/messages/EncryptedMessage.ts +11 -7
  1108. package/src/messages/SignedMessage.ts +19 -14
  1109. package/src/messages/__tests/EncryptedMessage.test.ts +55 -56
  1110. package/src/messages/__tests/SignedMessage.test.ts +58 -52
  1111. package/src/messages/index.ts +2 -2
  1112. package/src/overlay-tools/LookupResolver.ts +65 -33
  1113. package/src/overlay-tools/OverlayAdminTokenTemplate.ts +52 -27
  1114. package/src/overlay-tools/SHIPBroadcaster.ts +134 -59
  1115. package/src/overlay-tools/__tests/LookupResolver.test.ts +723 -323
  1116. package/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.ts +50 -22
  1117. package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +607 -290
  1118. package/src/overlay-tools/index.ts +5 -5
  1119. package/src/primitives/BasePoint.ts +1 -1
  1120. package/src/primitives/BigNumber.ts +94 -87
  1121. package/src/primitives/Curve.ts +49 -30
  1122. package/src/primitives/DRBG.ts +10 -12
  1123. package/src/primitives/ECDSA.ts +59 -33
  1124. package/src/primitives/Hash.ts +298 -179
  1125. package/src/primitives/JacobianPoint.ts +55 -21
  1126. package/src/primitives/K256.ts +2 -2
  1127. package/src/primitives/Mersenne.ts +1 -1
  1128. package/src/primitives/MontgomoryMethod.ts +2 -2
  1129. package/src/primitives/Point.ts +193 -113
  1130. package/src/primitives/Polynomial.ts +12 -7
  1131. package/src/primitives/PrivateKey.ts +44 -20
  1132. package/src/primitives/PublicKey.ts +21 -11
  1133. package/src/primitives/Random.ts +7 -5
  1134. package/src/primitives/ReductionContext.ts +4 -4
  1135. package/src/primitives/Schnorr.ts +45 -23
  1136. package/src/primitives/Signature.ts +27 -19
  1137. package/src/primitives/SymmetricKey.ts +17 -17
  1138. package/src/primitives/TransactionSignature.ts +29 -18
  1139. package/src/primitives/__tests/AESGCM.test.ts +635 -329
  1140. package/src/primitives/__tests/BigNumber.arithmatic.test.ts +721 -502
  1141. package/src/primitives/__tests/BigNumber.binary.test.ts +271 -190
  1142. package/src/primitives/__tests/BigNumber.constructor.test.ts +60 -24
  1143. package/src/primitives/__tests/BigNumber.dhGroup.test.ts +19 -15
  1144. package/src/primitives/__tests/BigNumber.serializers.test.ts +183 -157
  1145. package/src/primitives/__tests/BigNumber.utils.test.ts +394 -304
  1146. package/src/primitives/__tests/Curve.unit.test.ts +158 -143
  1147. package/src/primitives/__tests/DRBG.test.ts +13 -13
  1148. package/src/primitives/__tests/ECDH.test.ts +15 -8
  1149. package/src/primitives/__tests/ECDSA.test.ts +63 -57
  1150. package/src/primitives/__tests/HMAC.test.ts +55 -49
  1151. package/src/primitives/__tests/Hash.test.ts +96 -85
  1152. package/src/primitives/__tests/PrivateKey.split.test.ts +29 -9
  1153. package/src/primitives/__tests/PrivateKey.test.ts +53 -50
  1154. package/src/primitives/__tests/PublicKey.test.ts +15 -6
  1155. package/src/primitives/__tests/Random.test.ts +10 -10
  1156. package/src/primitives/__tests/Reader.test.ts +240 -219
  1157. package/src/primitives/__tests/ReductionContext.test.ts +271 -234
  1158. package/src/primitives/__tests/Schnorr.test.ts +252 -242
  1159. package/src/primitives/__tests/SymmetricKey.test.ts +53 -50
  1160. package/src/primitives/__tests/Writer.test.ts +23 -13
  1161. package/src/primitives/__tests/bug-31.test.ts +25 -23
  1162. package/src/primitives/__tests/utils.test.ts +70 -19
  1163. package/src/primitives/index.ts +14 -14
  1164. package/src/primitives/utils.ts +88 -63
  1165. package/src/script/LockingScript.ts +1 -1
  1166. package/src/script/Script.ts +14 -10
  1167. package/src/script/ScriptTemplate.ts +5 -7
  1168. package/src/script/Spend.ts +314 -118
  1169. package/src/script/UnlockingScript.ts +1 -1
  1170. package/src/script/__tests/Script.test.ts +68 -54
  1171. package/src/script/__tests/Spend.test.ts +188 -68
  1172. package/src/script/__tests/SpendComplex.test.ts +36 -26
  1173. package/src/script/__tests/script.valid.vectors.ts +1064 -3100
  1174. package/src/script/index.ts +7 -7
  1175. package/src/script/templates/P2PKH.ts +63 -52
  1176. package/src/script/templates/PushDrop.ts +117 -89
  1177. package/src/script/templates/RPuzzle.ts +72 -54
  1178. package/src/script/templates/__tests/PushDrop.test.ts +146 -40
  1179. package/src/script/templates/index.ts +3 -3
  1180. package/src/totp/__tests/totp.test.ts +39 -39
  1181. package/src/totp/index.ts +1 -1
  1182. package/src/totp/totp.ts +2 -2
  1183. package/src/transaction/Beef.ts +211 -141
  1184. package/src/transaction/BeefParty.ts +35 -27
  1185. package/src/transaction/BeefTx.ts +13 -9
  1186. package/src/transaction/Broadcaster.ts +11 -7
  1187. package/src/transaction/ChainTracker.ts +2 -2
  1188. package/src/transaction/FeeModel.ts +2 -2
  1189. package/src/transaction/MerklePath.ts +81 -37
  1190. package/src/transaction/Transaction.ts +185 -208
  1191. package/src/transaction/TransactionInput.ts +2 -2
  1192. package/src/transaction/TransactionOutput.ts +2 -2
  1193. package/src/transaction/__tests/Beef.test.ts +359 -297
  1194. package/src/transaction/__tests/MerklePath.test.ts +163 -131
  1195. package/src/transaction/__tests/Transaction.benchmarks.test.ts +235 -202
  1196. package/src/transaction/__tests/Transaction.test.ts +746 -459
  1197. package/src/transaction/broadcasters/ARC.ts +120 -94
  1198. package/src/transaction/broadcasters/DefaultBroadcaster.ts +11 -5
  1199. package/src/transaction/broadcasters/WhatsOnChainBroadcaster.ts +46 -33
  1200. package/src/transaction/broadcasters/__tests/ARC.test.ts +77 -45
  1201. package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +25 -17
  1202. package/src/transaction/broadcasters/index.ts +4 -4
  1203. package/src/transaction/chaintrackers/DefaultChainTracker.ts +4 -4
  1204. package/src/transaction/chaintrackers/WhatsOnChain.ts +53 -38
  1205. package/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +138 -102
  1206. package/src/transaction/chaintrackers/index.ts +3 -3
  1207. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +37 -32
  1208. package/src/transaction/fee-models/index.ts +1 -1
  1209. package/src/transaction/http/DefaultHttpClient.ts +17 -17
  1210. package/src/transaction/http/FetchHttpClient.ts +18 -9
  1211. package/src/transaction/http/HttpClient.ts +30 -25
  1212. package/src/transaction/http/NodejsHttpClient.ts +42 -28
  1213. package/src/transaction/http/index.ts +10 -6
  1214. package/src/transaction/index.ts +14 -10
  1215. package/src/wallet/CachedKeyDeriver.ts +118 -72
  1216. package/src/wallet/KeyDeriver.ts +186 -105
  1217. package/src/wallet/ProtoWallet.ts +53 -17
  1218. package/src/wallet/Wallet.interfaces.ts +158 -149
  1219. package/src/wallet/WalletClient.ts +316 -58
  1220. package/src/wallet/__tests/CachedKeyDeriver.test.ts +83 -27
  1221. package/src/wallet/__tests/KeyDeriver.test.ts +219 -116
  1222. package/src/wallet/__tests/ProtoWallet.test.ts +420 -339
  1223. package/src/wallet/index.ts +8 -8
  1224. package/src/wallet/substrates/HTTPWalletJSON.ts +201 -32
  1225. package/src/wallet/substrates/HTTPWalletWire.ts +30 -26
  1226. package/src/wallet/substrates/WalletWire.ts +1 -1
  1227. package/src/wallet/substrates/WalletWireCalls.ts +3 -3
  1228. package/src/wallet/substrates/WalletWireProcessor.ts +1651 -1515
  1229. package/src/wallet/substrates/WalletWireTransceiver.ts +1424 -854
  1230. package/src/wallet/substrates/XDM.ts +427 -37
  1231. package/src/wallet/substrates/__tests/WalletWire.integration.test.ts +484 -223
  1232. package/src/wallet/substrates/__tests/XDM.test.ts +191 -195
  1233. package/src/wallet/substrates/index.ts +7 -7
  1234. package/src/wallet/substrates/window.CWI.ts +524 -65
@@ -1,469 +1,553 @@
1
- import { AcquireCertificateArgs, AcquireCertificateResult, SecurityLevel, Base64String, BasketStringUnder300Bytes, BEEF, BooleanDefaultFalse, BooleanDefaultTrue, Byte, CertificateFieldNameUnder50Bytes, CreateActionArgs, CreateActionResult, DescriptionString5to50Bytes, DiscoverCertificatesResult, EntityIconURLStringMax500Bytes, EntityNameStringMax100Bytes, HexString, InternalizeActionArgs, ISOTimestampString, KeyIDStringUnder800Bytes, LabelStringUnder300Bytes, ListActionsArgs, ListActionsResult, ListCertificatesResult, ListOutputsArgs, ListOutputsResult, OriginatorDomainNameStringUnder250Bytes, OutpointString, OutputTagStringUnder300Bytes, PositiveInteger, PositiveIntegerDefault10Max10000, PositiveIntegerMax10, PositiveIntegerOrZero, ProtocolString5To400Bytes, ProveCertificateArgs, ProveCertificateResult, PubKeyHex, SatoshiValue, SignActionArgs, SignActionResult, TXIDHexString, VersionString7To30Bytes, WalletInterface } from '../Wallet.interfaces.js'
2
- import WalletWire from './WalletWire.js'
3
- import { Certificate } from '../../auth/index.js'
4
- import { Utils } from '../../primitives/index.js'
5
- import calls, { CallType } from './WalletWireCalls.js'
6
- import { WalletError } from '../WalletError.js'
1
+ import {
2
+ AcquireCertificateArgs,
3
+ AcquireCertificateResult,
4
+ SecurityLevel,
5
+ Base64String,
6
+ BasketStringUnder300Bytes,
7
+ BEEF,
8
+ BooleanDefaultFalse,
9
+ BooleanDefaultTrue,
10
+ Byte,
11
+ CertificateFieldNameUnder50Bytes,
12
+ CreateActionArgs,
13
+ CreateActionResult,
14
+ DescriptionString5to50Bytes,
15
+ DiscoverCertificatesResult,
16
+ EntityIconURLStringMax500Bytes,
17
+ EntityNameStringMax100Bytes,
18
+ HexString,
19
+ InternalizeActionArgs,
20
+ ISOTimestampString,
21
+ KeyIDStringUnder800Bytes,
22
+ LabelStringUnder300Bytes,
23
+ ListActionsArgs,
24
+ ListActionsResult,
25
+ ListCertificatesResult,
26
+ ListOutputsArgs,
27
+ ListOutputsResult,
28
+ OriginatorDomainNameStringUnder250Bytes,
29
+ OutpointString,
30
+ OutputTagStringUnder300Bytes,
31
+ PositiveInteger,
32
+ PositiveIntegerDefault10Max10000,
33
+ PositiveIntegerMax10,
34
+ PositiveIntegerOrZero,
35
+ ProtocolString5To400Bytes,
36
+ ProveCertificateArgs,
37
+ ProveCertificateResult,
38
+ PubKeyHex,
39
+ SatoshiValue,
40
+ SignActionArgs,
41
+ SignActionResult,
42
+ TXIDHexString,
43
+ VersionString7To30Bytes,
44
+ WalletInterface,
45
+ } from "../Wallet.interfaces";
46
+ import WalletWire from "./WalletWire";
47
+ import { Certificate } from "../../auth/index";
48
+ import { Utils } from "../../primitives/index";
49
+ import calls, { CallType } from "./WalletWireCalls";
50
+ import { WalletError } from "../WalletError";
7
51
 
8
52
  /**
9
53
  * A way to make remote calls to a wallet over a wallet wire.
10
54
  */
11
55
  export default class WalletWireTransceiver implements WalletInterface {
12
- wire: WalletWire
56
+ wire: WalletWire;
13
57
 
14
58
  constructor(wire: WalletWire) {
15
- this.wire = wire
59
+ this.wire = wire;
16
60
  }
17
61
 
18
- private async transmit(call: CallType, originator: OriginatorDomainNameStringUnder250Bytes = '', params: number[] = []): Promise<number[]> {
19
- const frameWriter = new Utils.Writer()
20
- frameWriter.writeUInt8(calls[call])
21
- const originatorArray = Utils.toArray(originator, 'utf8')
22
- frameWriter.writeUInt8(originatorArray.length)
23
- frameWriter.write(originatorArray)
62
+ private async transmit(
63
+ call: CallType,
64
+ originator: OriginatorDomainNameStringUnder250Bytes = "",
65
+ params: number[] = []
66
+ ): Promise<number[]> {
67
+ const frameWriter = new Utils.Writer();
68
+ frameWriter.writeUInt8(calls[call]);
69
+ const originatorArray = Utils.toArray(originator, "utf8");
70
+ frameWriter.writeUInt8(originatorArray.length);
71
+ frameWriter.write(originatorArray);
24
72
  if (params.length > 0) {
25
- frameWriter.write(params)
73
+ frameWriter.write(params);
26
74
  }
27
- const frame = frameWriter.toArray()
28
- const result = await this.wire.transmitToWallet(frame)
29
- const resultReader = new Utils.Reader(result)
30
- const errorByte = resultReader.readUInt8()
75
+ const frame = frameWriter.toArray();
76
+ const result = await this.wire.transmitToWallet(frame);
77
+ const resultReader = new Utils.Reader(result);
78
+ const errorByte = resultReader.readUInt8();
31
79
  if (errorByte === 0) {
32
- const resultFrame = resultReader.read()
33
- return resultFrame
80
+ const resultFrame = resultReader.read();
81
+ return resultFrame;
34
82
  } else {
35
83
  // Deserialize the error message length
36
- const errorMessageLength = resultReader.readVarIntNum()
37
- const errorMessageBytes = resultReader.read(errorMessageLength)
38
- const errorMessage = Utils.toUTF8(errorMessageBytes)
84
+ const errorMessageLength = resultReader.readVarIntNum();
85
+ const errorMessageBytes = resultReader.read(errorMessageLength);
86
+ const errorMessage = Utils.toUTF8(errorMessageBytes);
39
87
 
40
88
  // Deserialize the stack trace length
41
- const stackTraceLength = resultReader.readVarIntNum()
42
- const stackTraceBytes = resultReader.read(stackTraceLength)
43
- const stackTrace = Utils.toUTF8(stackTraceBytes)
89
+ const stackTraceLength = resultReader.readVarIntNum();
90
+ const stackTraceBytes = resultReader.read(stackTraceLength);
91
+ const stackTrace = Utils.toUTF8(stackTraceBytes);
44
92
 
45
93
  // Construct a custom wallet error
46
- const e = new WalletError(errorMessage, errorByte, stackTrace)
47
- throw e
94
+ const e = new WalletError(errorMessage, errorByte, stackTrace);
95
+ throw e;
48
96
  }
49
97
  }
50
98
 
51
- async createAction(args: CreateActionArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<CreateActionResult> {
52
- const paramWriter = new Utils.Writer()
99
+ async createAction(
100
+ args: CreateActionArgs,
101
+ originator?: OriginatorDomainNameStringUnder250Bytes
102
+ ): Promise<CreateActionResult> {
103
+ const paramWriter = new Utils.Writer();
53
104
 
54
105
  // Serialize description
55
- const descriptionBytes = Utils.toArray(args.description, 'utf8')
56
- paramWriter.writeVarIntNum(descriptionBytes.length)
57
- paramWriter.write(descriptionBytes)
106
+ const descriptionBytes = Utils.toArray(args.description, "utf8");
107
+ paramWriter.writeVarIntNum(descriptionBytes.length);
108
+ paramWriter.write(descriptionBytes);
58
109
 
59
110
  // input BEEF
60
111
  if (args.inputBEEF) {
61
- paramWriter.writeVarIntNum(args.inputBEEF.length)
62
- paramWriter.write(args.inputBEEF)
112
+ paramWriter.writeVarIntNum(args.inputBEEF.length);
113
+ paramWriter.write(args.inputBEEF);
63
114
  } else {
64
- paramWriter.writeVarIntNum(-1)
115
+ paramWriter.writeVarIntNum(-1);
65
116
  }
66
117
 
67
118
  // Serialize inputs
68
119
  if (args.inputs) {
69
- paramWriter.writeVarIntNum(args.inputs.length)
120
+ paramWriter.writeVarIntNum(args.inputs.length);
70
121
  for (const input of args.inputs) {
71
122
  // outpoint
72
- paramWriter.write(this.encodeOutpoint(input.outpoint))
123
+ paramWriter.write(this.encodeOutpoint(input.outpoint));
73
124
 
74
125
  // unlockingScript / unlockingScriptLength
75
126
  if (input.unlockingScript) {
76
- const unlockingScriptBytes = Utils.toArray(input.unlockingScript, 'hex')
77
- paramWriter.writeVarIntNum(unlockingScriptBytes.length)
78
- paramWriter.write(unlockingScriptBytes)
127
+ const unlockingScriptBytes = Utils.toArray(
128
+ input.unlockingScript,
129
+ "hex"
130
+ );
131
+ paramWriter.writeVarIntNum(unlockingScriptBytes.length);
132
+ paramWriter.write(unlockingScriptBytes);
79
133
  } else {
80
- paramWriter.writeVarIntNum(-1)
81
- paramWriter.writeVarIntNum(input.unlockingScriptLength)
134
+ paramWriter.writeVarIntNum(-1);
135
+ paramWriter.writeVarIntNum(input.unlockingScriptLength);
82
136
  }
83
137
 
84
138
  // inputDescription
85
- const inputDescriptionBytes = Utils.toArray(input.inputDescription, 'utf8')
86
- paramWriter.writeVarIntNum(inputDescriptionBytes.length)
87
- paramWriter.write(inputDescriptionBytes)
139
+ const inputDescriptionBytes = Utils.toArray(
140
+ input.inputDescription,
141
+ "utf8"
142
+ );
143
+ paramWriter.writeVarIntNum(inputDescriptionBytes.length);
144
+ paramWriter.write(inputDescriptionBytes);
88
145
 
89
146
  // sequenceNumber
90
- if (typeof input.sequenceNumber === 'number') {
91
- paramWriter.writeVarIntNum(input.sequenceNumber)
147
+ if (typeof input.sequenceNumber === "number") {
148
+ paramWriter.writeVarIntNum(input.sequenceNumber);
92
149
  } else {
93
- paramWriter.writeVarIntNum(-1)
150
+ paramWriter.writeVarIntNum(-1);
94
151
  }
95
152
  }
96
153
  } else {
97
- paramWriter.writeVarIntNum(-1)
154
+ paramWriter.writeVarIntNum(-1);
98
155
  }
99
156
 
100
157
  // Serialize outputs
101
158
  if (args.outputs) {
102
- paramWriter.writeVarIntNum(args.outputs.length)
159
+ paramWriter.writeVarIntNum(args.outputs.length);
103
160
  for (const output of args.outputs) {
104
161
  // lockingScript
105
- const lockingScriptBytes = Utils.toArray(output.lockingScript, 'hex')
106
- paramWriter.writeVarIntNum(lockingScriptBytes.length)
107
- paramWriter.write(lockingScriptBytes)
162
+ const lockingScriptBytes = Utils.toArray(output.lockingScript, "hex");
163
+ paramWriter.writeVarIntNum(lockingScriptBytes.length);
164
+ paramWriter.write(lockingScriptBytes);
108
165
 
109
166
  // satoshis
110
- paramWriter.writeVarIntNum(output.satoshis)
167
+ paramWriter.writeVarIntNum(output.satoshis);
111
168
 
112
169
  // outputDescription
113
- const outputDescriptionBytes = Utils.toArray(output.outputDescription, 'utf8')
114
- paramWriter.writeVarIntNum(outputDescriptionBytes.length)
115
- paramWriter.write(outputDescriptionBytes)
170
+ const outputDescriptionBytes = Utils.toArray(
171
+ output.outputDescription,
172
+ "utf8"
173
+ );
174
+ paramWriter.writeVarIntNum(outputDescriptionBytes.length);
175
+ paramWriter.write(outputDescriptionBytes);
116
176
 
117
177
  // basket
118
178
  if (output.basket) {
119
- const basketBytes = Utils.toArray(output.basket, 'utf8')
120
- paramWriter.writeVarIntNum(basketBytes.length)
121
- paramWriter.write(basketBytes)
179
+ const basketBytes = Utils.toArray(output.basket, "utf8");
180
+ paramWriter.writeVarIntNum(basketBytes.length);
181
+ paramWriter.write(basketBytes);
122
182
  } else {
123
- paramWriter.writeVarIntNum(-1)
183
+ paramWriter.writeVarIntNum(-1);
124
184
  }
125
185
 
126
186
  // customInstructions
127
187
  if (output.customInstructions) {
128
- const customInstructionsBytes = Utils.toArray(output.customInstructions, 'utf8')
129
- paramWriter.writeVarIntNum(customInstructionsBytes.length)
130
- paramWriter.write(customInstructionsBytes)
188
+ const customInstructionsBytes = Utils.toArray(
189
+ output.customInstructions,
190
+ "utf8"
191
+ );
192
+ paramWriter.writeVarIntNum(customInstructionsBytes.length);
193
+ paramWriter.write(customInstructionsBytes);
131
194
  } else {
132
- paramWriter.writeVarIntNum(-1)
195
+ paramWriter.writeVarIntNum(-1);
133
196
  }
134
197
 
135
198
  // tags
136
199
  if (output.tags) {
137
- paramWriter.writeVarIntNum(output.tags.length)
200
+ paramWriter.writeVarIntNum(output.tags.length);
138
201
  for (const tag of output.tags) {
139
- const tagBytes = Utils.toArray(tag, 'utf8')
140
- paramWriter.writeVarIntNum(tagBytes.length)
141
- paramWriter.write(tagBytes)
202
+ const tagBytes = Utils.toArray(tag, "utf8");
203
+ paramWriter.writeVarIntNum(tagBytes.length);
204
+ paramWriter.write(tagBytes);
142
205
  }
143
206
  } else {
144
- paramWriter.writeVarIntNum(-1)
207
+ paramWriter.writeVarIntNum(-1);
145
208
  }
146
209
  }
147
210
  } else {
148
- paramWriter.writeVarIntNum(-1)
211
+ paramWriter.writeVarIntNum(-1);
149
212
  }
150
213
 
151
214
  // Serialize lockTime
152
- if (typeof args.lockTime === 'number') {
153
- paramWriter.writeVarIntNum(args.lockTime)
215
+ if (typeof args.lockTime === "number") {
216
+ paramWriter.writeVarIntNum(args.lockTime);
154
217
  } else {
155
- paramWriter.writeVarIntNum(-1)
218
+ paramWriter.writeVarIntNum(-1);
156
219
  }
157
220
 
158
221
  // Serialize version
159
- if (typeof args.version === 'number') {
160
- paramWriter.writeVarIntNum(args.version)
222
+ if (typeof args.version === "number") {
223
+ paramWriter.writeVarIntNum(args.version);
161
224
  } else {
162
- paramWriter.writeVarIntNum(-1)
225
+ paramWriter.writeVarIntNum(-1);
163
226
  }
164
227
 
165
228
  // Serialize labels
166
229
  if (args.labels) {
167
- paramWriter.writeVarIntNum(args.labels.length)
230
+ paramWriter.writeVarIntNum(args.labels.length);
168
231
  for (const label of args.labels) {
169
- const labelBytes = Utils.toArray(label, 'utf8')
170
- paramWriter.writeVarIntNum(labelBytes.length)
171
- paramWriter.write(labelBytes)
232
+ const labelBytes = Utils.toArray(label, "utf8");
233
+ paramWriter.writeVarIntNum(labelBytes.length);
234
+ paramWriter.write(labelBytes);
172
235
  }
173
236
  } else {
174
- paramWriter.writeVarIntNum(-1)
237
+ paramWriter.writeVarIntNum(-1);
175
238
  }
176
239
 
177
240
  // Serialize options
178
241
  if (args.options) {
179
- paramWriter.writeInt8(1) // options present
242
+ paramWriter.writeInt8(1); // options present
180
243
 
181
244
  // signAndProcess
182
- if (typeof args.options.signAndProcess === 'boolean') {
183
- paramWriter.writeInt8(args.options.signAndProcess ? 1 : 0)
245
+ if (typeof args.options.signAndProcess === "boolean") {
246
+ paramWriter.writeInt8(args.options.signAndProcess ? 1 : 0);
184
247
  } else {
185
- paramWriter.writeInt8(-1)
248
+ paramWriter.writeInt8(-1);
186
249
  }
187
250
 
188
251
  // acceptDelayedBroadcast
189
- if (typeof args.options.acceptDelayedBroadcast === 'boolean') {
190
- paramWriter.writeInt8(args.options.acceptDelayedBroadcast ? 1 : 0)
252
+ if (typeof args.options.acceptDelayedBroadcast === "boolean") {
253
+ paramWriter.writeInt8(args.options.acceptDelayedBroadcast ? 1 : 0);
191
254
  } else {
192
- paramWriter.writeInt8(-1)
255
+ paramWriter.writeInt8(-1);
193
256
  }
194
257
 
195
258
  // trustSelf
196
- if (args.options.trustSelf === 'known') {
197
- paramWriter.writeInt8(1)
259
+ if (args.options.trustSelf === "known") {
260
+ paramWriter.writeInt8(1);
198
261
  } else {
199
- paramWriter.writeInt8(-1)
262
+ paramWriter.writeInt8(-1);
200
263
  }
201
264
 
202
265
  // knownTxids
203
266
  if (args.options.knownTxids) {
204
- paramWriter.writeVarIntNum(args.options.knownTxids.length)
267
+ paramWriter.writeVarIntNum(args.options.knownTxids.length);
205
268
  for (const txid of args.options.knownTxids) {
206
- const txidBytes = Utils.toArray(txid, 'hex')
207
- paramWriter.write(txidBytes)
269
+ const txidBytes = Utils.toArray(txid, "hex");
270
+ paramWriter.write(txidBytes);
208
271
  }
209
272
  } else {
210
- paramWriter.writeVarIntNum(-1)
273
+ paramWriter.writeVarIntNum(-1);
211
274
  }
212
275
 
213
276
  // returnTXIDOnly
214
- if (typeof args.options.returnTXIDOnly === 'boolean') {
215
- paramWriter.writeInt8(args.options.returnTXIDOnly ? 1 : 0)
277
+ if (typeof args.options.returnTXIDOnly === "boolean") {
278
+ paramWriter.writeInt8(args.options.returnTXIDOnly ? 1 : 0);
216
279
  } else {
217
- paramWriter.writeInt8(-1)
280
+ paramWriter.writeInt8(-1);
218
281
  }
219
282
 
220
283
  // noSend
221
- if (typeof args.options.noSend === 'boolean') {
222
- paramWriter.writeInt8(args.options.noSend ? 1 : 0)
284
+ if (typeof args.options.noSend === "boolean") {
285
+ paramWriter.writeInt8(args.options.noSend ? 1 : 0);
223
286
  } else {
224
- paramWriter.writeInt8(-1)
287
+ paramWriter.writeInt8(-1);
225
288
  }
226
289
 
227
290
  // noSendChange
228
291
  if (args.options.noSendChange) {
229
- paramWriter.writeVarIntNum(args.options.noSendChange.length)
292
+ paramWriter.writeVarIntNum(args.options.noSendChange.length);
230
293
  for (const outpoint of args.options.noSendChange) {
231
- paramWriter.write(this.encodeOutpoint(outpoint))
294
+ paramWriter.write(this.encodeOutpoint(outpoint));
232
295
  }
233
296
  } else {
234
- paramWriter.writeVarIntNum(-1)
297
+ paramWriter.writeVarIntNum(-1);
235
298
  }
236
299
 
237
300
  // sendWith
238
301
  if (args.options.sendWith) {
239
- paramWriter.writeVarIntNum(args.options.sendWith.length)
302
+ paramWriter.writeVarIntNum(args.options.sendWith.length);
240
303
  for (const txid of args.options.sendWith) {
241
- const txidBytes = Utils.toArray(txid, 'hex')
242
- paramWriter.write(txidBytes)
304
+ const txidBytes = Utils.toArray(txid, "hex");
305
+ paramWriter.write(txidBytes);
243
306
  }
244
307
  } else {
245
- paramWriter.writeVarIntNum(-1)
308
+ paramWriter.writeVarIntNum(-1);
246
309
  }
247
310
 
248
311
  // randomizeOutputs
249
- if (typeof args.options.randomizeOutputs === 'boolean') {
250
- paramWriter.writeInt8(args.options.randomizeOutputs ? 1 : 0)
312
+ if (typeof args.options.randomizeOutputs === "boolean") {
313
+ paramWriter.writeInt8(args.options.randomizeOutputs ? 1 : 0);
251
314
  } else {
252
- paramWriter.writeInt8(-1)
315
+ paramWriter.writeInt8(-1);
253
316
  }
254
317
  } else {
255
- paramWriter.writeInt8(0) // options not present
318
+ paramWriter.writeInt8(0); // options not present
256
319
  }
257
320
 
258
321
  // Transmit and parse response
259
- const result = await this.transmit('createAction', originator, paramWriter.toArray())
260
- const resultReader = new Utils.Reader(result)
322
+ const result = await this.transmit(
323
+ "createAction",
324
+ originator,
325
+ paramWriter.toArray()
326
+ );
327
+ const resultReader = new Utils.Reader(result);
261
328
 
262
329
  const response: {
263
- txid?: TXIDHexString
264
- tx?: BEEF
265
- noSendChange?: OutpointString[]
330
+ txid?: TXIDHexString;
331
+ tx?: BEEF;
332
+ noSendChange?: OutpointString[];
266
333
  sendWithResults?: Array<{
267
- txid: TXIDHexString
268
- status: 'unproven' | 'sending' | 'failed'
269
- }>
334
+ txid: TXIDHexString;
335
+ status: "unproven" | "sending" | "failed";
336
+ }>;
270
337
  signableTransaction?: {
271
- tx: BEEF
272
- reference: Base64String
273
- }
274
- } = {}
338
+ tx: BEEF;
339
+ reference: Base64String;
340
+ };
341
+ } = {};
275
342
 
276
343
  // Parse txid
277
- const txidFlag = resultReader.readInt8()
344
+ const txidFlag = resultReader.readInt8();
278
345
  if (txidFlag === 1) {
279
- const txidBytes = resultReader.read(32)
280
- response.txid = Utils.toHex(txidBytes)
346
+ const txidBytes = resultReader.read(32);
347
+ response.txid = Utils.toHex(txidBytes);
281
348
  }
282
349
 
283
350
  // Parse tx
284
- const txFlag = resultReader.readInt8()
351
+ const txFlag = resultReader.readInt8();
285
352
  if (txFlag === 1) {
286
- const txLength = resultReader.readVarIntNum()
287
- response.tx = resultReader.read(txLength)
353
+ const txLength = resultReader.readVarIntNum();
354
+ response.tx = resultReader.read(txLength);
288
355
  }
289
356
 
290
357
  // Parse noSendChange
291
- const noSendChangeLength = resultReader.readVarIntNum()
358
+ const noSendChangeLength = resultReader.readVarIntNum();
292
359
  if (noSendChangeLength >= 0) {
293
- response.noSendChange = []
360
+ response.noSendChange = [];
294
361
  for (let i = 0; i < noSendChangeLength; i++) {
295
- const outpoint = this.readOutpoint(resultReader)
296
- response.noSendChange.push(outpoint)
362
+ const outpoint = this.readOutpoint(resultReader);
363
+ response.noSendChange.push(outpoint);
297
364
  }
298
365
  }
299
366
 
300
367
  // Parse sendWithResults
301
- const sendWithResultsLength = resultReader.readVarIntNum()
368
+ const sendWithResultsLength = resultReader.readVarIntNum();
302
369
  if (sendWithResultsLength >= 0) {
303
- response.sendWithResults = []
370
+ response.sendWithResults = [];
304
371
  for (let i = 0; i < sendWithResultsLength; i++) {
305
- const txidBytes = resultReader.read(32)
306
- const txid = Utils.toHex(txidBytes)
307
- const statusCode = resultReader.readInt8()
308
- let status: 'unproven' | 'sending' | 'failed'
309
- if (statusCode === 1) status = 'unproven'
310
- else if (statusCode === 2) status = 'sending'
311
- else if (statusCode === 3) status = 'failed'
312
- response.sendWithResults.push({ txid, status })
372
+ const txidBytes = resultReader.read(32);
373
+ const txid = Utils.toHex(txidBytes);
374
+ const statusCode = resultReader.readInt8();
375
+ let status: "unproven" | "sending" | "failed";
376
+ if (statusCode === 1) status = "unproven";
377
+ else if (statusCode === 2) status = "sending";
378
+ else if (statusCode === 3) status = "failed";
379
+ response.sendWithResults.push({ txid, status });
313
380
  }
314
381
  }
315
382
 
316
383
  // Parse signableTransaction
317
- const signableTransactionFlag = resultReader.readInt8()
384
+ const signableTransactionFlag = resultReader.readInt8();
318
385
  if (signableTransactionFlag === 1) {
319
- const txLength = resultReader.readVarIntNum()
320
- const tx = resultReader.read(txLength)
321
- const referenceLength = resultReader.readVarIntNum()
322
- const referenceBytes = resultReader.read(referenceLength)
386
+ const txLength = resultReader.readVarIntNum();
387
+ const tx = resultReader.read(txLength);
388
+ const referenceLength = resultReader.readVarIntNum();
389
+ const referenceBytes = resultReader.read(referenceLength);
323
390
  response.signableTransaction = {
324
391
  tx,
325
- reference: Utils.toBase64(referenceBytes)
326
- }
392
+ reference: Utils.toBase64(referenceBytes),
393
+ };
327
394
  }
328
395
 
329
- return response
396
+ return response;
330
397
  }
331
398
 
332
- async signAction(args: SignActionArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<SignActionResult> {
333
- const paramWriter = new Utils.Writer()
399
+ async signAction(
400
+ args: SignActionArgs,
401
+ originator?: OriginatorDomainNameStringUnder250Bytes
402
+ ): Promise<SignActionResult> {
403
+ const paramWriter = new Utils.Writer();
334
404
 
335
405
  // Serialize spends
336
- const spendIndexes = Object.keys(args.spends)
337
- paramWriter.writeVarIntNum(spendIndexes.length)
406
+ const spendIndexes = Object.keys(args.spends);
407
+ paramWriter.writeVarIntNum(spendIndexes.length);
338
408
  for (const index of spendIndexes) {
339
- paramWriter.writeVarIntNum(Number(index))
340
- const spend = args.spends[Number(index)]
409
+ paramWriter.writeVarIntNum(Number(index));
410
+ const spend = args.spends[Number(index)];
341
411
  // unlockingScript
342
- const unlockingScriptBytes = Utils.toArray(spend.unlockingScript, 'hex')
343
- paramWriter.writeVarIntNum(unlockingScriptBytes.length)
344
- paramWriter.write(unlockingScriptBytes)
412
+ const unlockingScriptBytes = Utils.toArray(spend.unlockingScript, "hex");
413
+ paramWriter.writeVarIntNum(unlockingScriptBytes.length);
414
+ paramWriter.write(unlockingScriptBytes);
345
415
  // sequenceNumber
346
- if (typeof spend.sequenceNumber === 'number') {
347
- paramWriter.writeVarIntNum(spend.sequenceNumber)
416
+ if (typeof spend.sequenceNumber === "number") {
417
+ paramWriter.writeVarIntNum(spend.sequenceNumber);
348
418
  } else {
349
- paramWriter.writeVarIntNum(-1)
419
+ paramWriter.writeVarIntNum(-1);
350
420
  }
351
421
  }
352
422
 
353
423
  // Serialize reference
354
- const referenceBytes = Utils.toArray(args.reference, 'base64')
355
- paramWriter.writeVarIntNum(referenceBytes.length)
356
- paramWriter.write(referenceBytes)
424
+ const referenceBytes = Utils.toArray(args.reference, "base64");
425
+ paramWriter.writeVarIntNum(referenceBytes.length);
426
+ paramWriter.write(referenceBytes);
357
427
 
358
428
  // Serialize options
359
429
  if (args.options) {
360
- paramWriter.writeInt8(1) // options present
430
+ paramWriter.writeInt8(1); // options present
361
431
 
362
432
  // acceptDelayedBroadcast
363
- if (typeof args.options.acceptDelayedBroadcast === 'boolean') {
364
- paramWriter.writeInt8(args.options.acceptDelayedBroadcast ? 1 : 0)
433
+ if (typeof args.options.acceptDelayedBroadcast === "boolean") {
434
+ paramWriter.writeInt8(args.options.acceptDelayedBroadcast ? 1 : 0);
365
435
  } else {
366
- paramWriter.writeInt8(-1)
436
+ paramWriter.writeInt8(-1);
367
437
  }
368
438
 
369
439
  // returnTXIDOnly
370
- if (typeof args.options.returnTXIDOnly === 'boolean') {
371
- paramWriter.writeInt8(args.options.returnTXIDOnly ? 1 : 0)
440
+ if (typeof args.options.returnTXIDOnly === "boolean") {
441
+ paramWriter.writeInt8(args.options.returnTXIDOnly ? 1 : 0);
372
442
  } else {
373
- paramWriter.writeInt8(-1)
443
+ paramWriter.writeInt8(-1);
374
444
  }
375
445
 
376
446
  // noSend
377
- if (typeof args.options.noSend === 'boolean') {
378
- paramWriter.writeInt8(args.options.noSend ? 1 : 0)
447
+ if (typeof args.options.noSend === "boolean") {
448
+ paramWriter.writeInt8(args.options.noSend ? 1 : 0);
379
449
  } else {
380
- paramWriter.writeInt8(-1)
450
+ paramWriter.writeInt8(-1);
381
451
  }
382
452
 
383
453
  // sendWith
384
454
  if (args.options.sendWith) {
385
- paramWriter.writeVarIntNum(args.options.sendWith.length)
455
+ paramWriter.writeVarIntNum(args.options.sendWith.length);
386
456
  for (const txid of args.options.sendWith) {
387
- const txidBytes = Utils.toArray(txid, 'hex')
388
- paramWriter.write(txidBytes)
457
+ const txidBytes = Utils.toArray(txid, "hex");
458
+ paramWriter.write(txidBytes);
389
459
  }
390
460
  } else {
391
- paramWriter.writeVarIntNum(-1)
461
+ paramWriter.writeVarIntNum(-1);
392
462
  }
393
463
  } else {
394
- paramWriter.writeInt8(0) // options not present
464
+ paramWriter.writeInt8(0); // options not present
395
465
  }
396
466
 
397
467
  // Transmit and parse response
398
- const result = await this.transmit('signAction', originator, paramWriter.toArray())
399
- const resultReader = new Utils.Reader(result)
468
+ const result = await this.transmit(
469
+ "signAction",
470
+ originator,
471
+ paramWriter.toArray()
472
+ );
473
+ const resultReader = new Utils.Reader(result);
400
474
 
401
475
  const response: {
402
- txid?: TXIDHexString
403
- tx?: BEEF
404
- noSendChange?: OutpointString[]
476
+ txid?: TXIDHexString;
477
+ tx?: BEEF;
478
+ noSendChange?: OutpointString[];
405
479
  sendWithResults?: Array<{
406
- txid: TXIDHexString
407
- status: 'unproven' | 'sending' | 'failed'
408
- }>
409
- } = {}
480
+ txid: TXIDHexString;
481
+ status: "unproven" | "sending" | "failed";
482
+ }>;
483
+ } = {};
410
484
 
411
485
  // Parse txid
412
- const txidFlag = resultReader.readInt8()
486
+ const txidFlag = resultReader.readInt8();
413
487
  if (txidFlag === 1) {
414
- const txidBytes = resultReader.read(32)
415
- response.txid = Utils.toHex(txidBytes)
488
+ const txidBytes = resultReader.read(32);
489
+ response.txid = Utils.toHex(txidBytes);
416
490
  }
417
491
 
418
492
  // Parse tx
419
- const txFlag = resultReader.readInt8()
493
+ const txFlag = resultReader.readInt8();
420
494
  if (txFlag === 1) {
421
- const txLength = resultReader.readVarIntNum()
422
- response.tx = resultReader.read(txLength)
495
+ const txLength = resultReader.readVarIntNum();
496
+ response.tx = resultReader.read(txLength);
423
497
  }
424
498
 
425
499
  // Parse sendWithResults
426
- const sendWithResultsLength = resultReader.readVarIntNum()
500
+ const sendWithResultsLength = resultReader.readVarIntNum();
427
501
  if (sendWithResultsLength >= 0) {
428
- response.sendWithResults = []
502
+ response.sendWithResults = [];
429
503
  for (let i = 0; i < sendWithResultsLength; i++) {
430
- const txidBytes = resultReader.read(32)
431
- const txid = Utils.toHex(txidBytes)
432
- const statusCode = resultReader.readInt8()
433
- let status: 'unproven' | 'sending' | 'failed'
434
- if (statusCode === 1) status = 'unproven'
435
- else if (statusCode === 2) status = 'sending'
436
- else if (statusCode === 3) status = 'failed'
437
- response.sendWithResults.push({ txid, status })
504
+ const txidBytes = resultReader.read(32);
505
+ const txid = Utils.toHex(txidBytes);
506
+ const statusCode = resultReader.readInt8();
507
+ let status: "unproven" | "sending" | "failed";
508
+ if (statusCode === 1) status = "unproven";
509
+ else if (statusCode === 2) status = "sending";
510
+ else if (statusCode === 3) status = "failed";
511
+ response.sendWithResults.push({ txid, status });
438
512
  }
439
513
  }
440
514
 
441
- return response
515
+ return response;
442
516
  }
443
517
 
444
- async abortAction(args: { reference: Base64String }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ aborted: true }> {
445
- await this.transmit('abortAction', originator, Utils.toArray(args.reference, 'base64'))
446
- return { aborted: true }
518
+ async abortAction(
519
+ args: { reference: Base64String },
520
+ originator?: OriginatorDomainNameStringUnder250Bytes
521
+ ): Promise<{ aborted: true }> {
522
+ await this.transmit(
523
+ "abortAction",
524
+ originator,
525
+ Utils.toArray(args.reference, "base64")
526
+ );
527
+ return { aborted: true };
447
528
  }
448
529
 
449
- async listActions(args: ListActionsArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ListActionsResult> {
450
- const paramWriter = new Utils.Writer()
530
+ async listActions(
531
+ args: ListActionsArgs,
532
+ originator?: OriginatorDomainNameStringUnder250Bytes
533
+ ): Promise<ListActionsResult> {
534
+ const paramWriter = new Utils.Writer();
451
535
 
452
536
  // Serialize labels
453
- paramWriter.writeVarIntNum(args.labels.length)
537
+ paramWriter.writeVarIntNum(args.labels.length);
454
538
  for (const label of args.labels) {
455
- const labelBytes = Utils.toArray(label, 'utf8')
456
- paramWriter.writeVarIntNum(labelBytes.length)
457
- paramWriter.write(labelBytes)
539
+ const labelBytes = Utils.toArray(label, "utf8");
540
+ paramWriter.writeVarIntNum(labelBytes.length);
541
+ paramWriter.write(labelBytes);
458
542
  }
459
543
 
460
544
  // Serialize labelQueryMode
461
- if (args.labelQueryMode === 'any') {
462
- paramWriter.writeInt8(1)
463
- } else if (args.labelQueryMode === 'all') {
464
- paramWriter.writeInt8(2)
545
+ if (args.labelQueryMode === "any") {
546
+ paramWriter.writeInt8(1);
547
+ } else if (args.labelQueryMode === "all") {
548
+ paramWriter.writeInt8(2);
465
549
  } else {
466
- paramWriter.writeInt8(-1)
550
+ paramWriter.writeInt8(-1);
467
551
  }
468
552
 
469
553
  // Serialize include options
@@ -473,105 +557,129 @@ export default class WalletWireTransceiver implements WalletInterface {
473
557
  args.includeInputSourceLockingScripts,
474
558
  args.includeInputUnlockingScripts,
475
559
  args.includeOutputs,
476
- args.includeOutputLockingScripts
477
- ]
560
+ args.includeOutputLockingScripts,
561
+ ];
478
562
  for (const option of includeOptions) {
479
- if (typeof option === 'boolean') {
480
- paramWriter.writeInt8(option ? 1 : 0)
563
+ if (typeof option === "boolean") {
564
+ paramWriter.writeInt8(option ? 1 : 0);
481
565
  } else {
482
- paramWriter.writeInt8(-1)
566
+ paramWriter.writeInt8(-1);
483
567
  }
484
568
  }
485
569
 
486
570
  // Serialize limit and offset
487
- if (typeof args.limit === 'number') {
488
- paramWriter.writeVarIntNum(args.limit)
571
+ if (typeof args.limit === "number") {
572
+ paramWriter.writeVarIntNum(args.limit);
489
573
  } else {
490
- paramWriter.writeVarIntNum(-1)
574
+ paramWriter.writeVarIntNum(-1);
491
575
  }
492
- if (typeof args.offset === 'number') {
493
- paramWriter.writeVarIntNum(args.offset)
576
+ if (typeof args.offset === "number") {
577
+ paramWriter.writeVarIntNum(args.offset);
494
578
  } else {
495
- paramWriter.writeVarIntNum(-1)
579
+ paramWriter.writeVarIntNum(-1);
496
580
  }
497
581
 
498
582
  // Serialize seekPermission
499
- paramWriter.writeInt8(typeof args.seekPermission === 'boolean' ? args.seekPermission ? 1 : 0 : -1)
583
+ paramWriter.writeInt8(
584
+ typeof args.seekPermission === "boolean"
585
+ ? args.seekPermission
586
+ ? 1
587
+ : 0
588
+ : -1
589
+ );
500
590
 
501
591
  // Transmit and parse response
502
- const result = await this.transmit('listActions', originator, paramWriter.toArray())
503
- const resultReader = new Utils.Reader(result)
504
-
505
- const totalActions = resultReader.readVarIntNum()
592
+ const result = await this.transmit(
593
+ "listActions",
594
+ originator,
595
+ paramWriter.toArray()
596
+ );
597
+ const resultReader = new Utils.Reader(result);
598
+
599
+ const totalActions = resultReader.readVarIntNum();
506
600
  const actions: Array<{
507
- txid: TXIDHexString
508
- satoshis: SatoshiValue
509
- status: 'completed' | 'unprocessed' | 'sending' | 'unproven' | 'unsigned' | 'nosend' | 'nonfinal'
510
- isOutgoing: boolean
511
- description: DescriptionString5to50Bytes
512
- labels?: LabelStringUnder300Bytes[]
513
- version: PositiveIntegerOrZero
514
- lockTime: PositiveIntegerOrZero
601
+ txid: TXIDHexString;
602
+ satoshis: SatoshiValue;
603
+ status:
604
+ | "completed"
605
+ | "unprocessed"
606
+ | "sending"
607
+ | "unproven"
608
+ | "unsigned"
609
+ | "nosend"
610
+ | "nonfinal";
611
+ isOutgoing: boolean;
612
+ description: DescriptionString5to50Bytes;
613
+ labels?: LabelStringUnder300Bytes[];
614
+ version: PositiveIntegerOrZero;
615
+ lockTime: PositiveIntegerOrZero;
515
616
  inputs?: Array<{
516
- sourceOutpoint: OutpointString
517
- sourceSatoshis: SatoshiValue
518
- sourceLockingScript?: HexString
519
- unlockingScript?: HexString
520
- inputDescription: DescriptionString5to50Bytes
521
- sequenceNumber: PositiveIntegerOrZero
522
- }>
617
+ sourceOutpoint: OutpointString;
618
+ sourceSatoshis: SatoshiValue;
619
+ sourceLockingScript?: HexString;
620
+ unlockingScript?: HexString;
621
+ inputDescription: DescriptionString5to50Bytes;
622
+ sequenceNumber: PositiveIntegerOrZero;
623
+ }>;
523
624
  outputs?: Array<{
524
- outputIndex: PositiveIntegerOrZero
525
- satoshis: SatoshiValue
526
- lockingScript?: HexString
527
- spendable: boolean
528
- outputDescription: DescriptionString5to50Bytes
529
- basket: BasketStringUnder300Bytes
530
- tags: OutputTagStringUnder300Bytes[]
531
- customInstructions?: string
532
- }>
533
- }> = []
625
+ outputIndex: PositiveIntegerOrZero;
626
+ satoshis: SatoshiValue;
627
+ lockingScript?: HexString;
628
+ spendable: boolean;
629
+ outputDescription: DescriptionString5to50Bytes;
630
+ basket: BasketStringUnder300Bytes;
631
+ tags: OutputTagStringUnder300Bytes[];
632
+ customInstructions?: string;
633
+ }>;
634
+ }> = [];
534
635
 
535
636
  for (let i = 0; i < totalActions; i++) {
536
637
  // Parse action fields
537
- const txidBytes = resultReader.read(32)
538
- const txid = Utils.toHex(txidBytes)
539
-
540
- const satoshis = resultReader.readVarIntNum()
541
-
542
- const statusCode = resultReader.readInt8()
543
- let status: 'completed' | 'unprocessed' | 'sending' | 'unproven' | 'unsigned' | 'nosend' | 'nonfinal'
638
+ const txidBytes = resultReader.read(32);
639
+ const txid = Utils.toHex(txidBytes);
640
+
641
+ const satoshis = resultReader.readVarIntNum();
642
+
643
+ const statusCode = resultReader.readInt8();
644
+ let status:
645
+ | "completed"
646
+ | "unprocessed"
647
+ | "sending"
648
+ | "unproven"
649
+ | "unsigned"
650
+ | "nosend"
651
+ | "nonfinal";
544
652
  switch (statusCode) {
545
653
  case 1:
546
- status = 'completed'
547
- break
654
+ status = "completed";
655
+ break;
548
656
  case 2:
549
- status = 'unprocessed'
550
- break
657
+ status = "unprocessed";
658
+ break;
551
659
  case 3:
552
- status = 'sending'
553
- break
660
+ status = "sending";
661
+ break;
554
662
  case 4:
555
- status = 'unproven'
556
- break
663
+ status = "unproven";
664
+ break;
557
665
  case 5:
558
- status = 'unsigned'
559
- break
666
+ status = "unsigned";
667
+ break;
560
668
  case 6:
561
- status = 'nosend'
562
- break
669
+ status = "nosend";
670
+ break;
563
671
  case 7:
564
- status = 'nonfinal'
565
- break
672
+ status = "nonfinal";
673
+ break;
566
674
  default:
567
- throw new Error(`Unknown status code: ${statusCode}`)
675
+ throw new Error(`Unknown status code: ${statusCode}`);
568
676
  }
569
677
 
570
- const isOutgoing = resultReader.readInt8() === 1
678
+ const isOutgoing = resultReader.readInt8() === 1;
571
679
 
572
- const descriptionLength = resultReader.readVarIntNum()
573
- const descriptionBytes = resultReader.read(descriptionLength)
574
- const description = Utils.toUTF8(descriptionBytes)
680
+ const descriptionLength = resultReader.readVarIntNum();
681
+ const descriptionBytes = resultReader.read(descriptionLength);
682
+ const description = Utils.toUTF8(descriptionBytes);
575
683
 
576
684
  const action: any = {
577
685
  txid,
@@ -580,55 +688,61 @@ export default class WalletWireTransceiver implements WalletInterface {
580
688
  isOutgoing,
581
689
  description,
582
690
  version: 0,
583
- lockTime: 0
584
- }
691
+ lockTime: 0,
692
+ };
585
693
 
586
694
  // Parse labels
587
- const labelsLength = resultReader.readVarIntNum()
695
+ const labelsLength = resultReader.readVarIntNum();
588
696
  if (labelsLength >= 0) {
589
- action.labels = []
697
+ action.labels = [];
590
698
  for (let j = 0; j < labelsLength; j++) {
591
- const labelLength = resultReader.readVarIntNum()
592
- const labelBytes = resultReader.read(labelLength)
593
- action.labels.push(Utils.toUTF8(labelBytes))
699
+ const labelLength = resultReader.readVarIntNum();
700
+ const labelBytes = resultReader.read(labelLength);
701
+ action.labels.push(Utils.toUTF8(labelBytes));
594
702
  }
595
703
  }
596
704
 
597
705
  // Parse version and lockTime
598
- action.version = resultReader.readVarIntNum()
599
- action.lockTime = resultReader.readVarIntNum()
706
+ action.version = resultReader.readVarIntNum();
707
+ action.lockTime = resultReader.readVarIntNum();
600
708
 
601
709
  // Parse inputs
602
- const inputsLength = resultReader.readVarIntNum()
710
+ const inputsLength = resultReader.readVarIntNum();
603
711
  if (inputsLength >= 0) {
604
- action.inputs = []
712
+ action.inputs = [];
605
713
  for (let k = 0; k < inputsLength; k++) {
606
- const sourceOutpoint = this.readOutpoint(resultReader)
607
- const sourceSatoshis = resultReader.readVarIntNum()
714
+ const sourceOutpoint = this.readOutpoint(resultReader);
715
+ const sourceSatoshis = resultReader.readVarIntNum();
608
716
 
609
717
  // sourceLockingScript
610
- const sourceLockingScriptLength = resultReader.readVarIntNum()
611
- let sourceLockingScript: string | undefined
718
+ const sourceLockingScriptLength = resultReader.readVarIntNum();
719
+ let sourceLockingScript: string | undefined;
612
720
  if (sourceLockingScriptLength >= 0) {
613
- const sourceLockingScriptBytes = resultReader.read(sourceLockingScriptLength)
614
- sourceLockingScript = Utils.toHex(sourceLockingScriptBytes)
721
+ const sourceLockingScriptBytes = resultReader.read(
722
+ sourceLockingScriptLength
723
+ );
724
+ sourceLockingScript = Utils.toHex(sourceLockingScriptBytes);
615
725
  }
616
726
 
617
727
  // unlockingScript
618
- const unlockingScriptLength = resultReader.readVarIntNum()
619
- let unlockingScript: string | undefined
728
+ const unlockingScriptLength = resultReader.readVarIntNum();
729
+ let unlockingScript: string | undefined;
620
730
  if (unlockingScriptLength >= 0) {
621
- const unlockingScriptBytes = resultReader.read(unlockingScriptLength)
622
- unlockingScript = Utils.toHex(unlockingScriptBytes)
731
+ const unlockingScriptBytes = resultReader.read(
732
+ unlockingScriptLength
733
+ );
734
+ unlockingScript = Utils.toHex(unlockingScriptBytes);
623
735
  }
624
736
 
625
737
  // inputDescription
626
- const inputDescriptionLength = resultReader.readVarIntNum()
627
- const inputDescriptionBytes = resultReader.read(inputDescriptionLength)
628
- const inputDescription = Utils.toUTF8(inputDescriptionBytes)
738
+ const inputDescriptionLength = resultReader.readVarIntNum();
739
+ const inputDescriptionBytes = resultReader.read(
740
+ inputDescriptionLength
741
+ );
742
+ const inputDescription = Utils.toUTF8(inputDescriptionBytes);
629
743
 
630
744
  // sequenceNumber
631
- const sequenceNumber = resultReader.readVarIntNum()
745
+ const sequenceNumber = resultReader.readVarIntNum();
632
746
 
633
747
  action.inputs.push({
634
748
  sourceOutpoint,
@@ -636,59 +750,63 @@ export default class WalletWireTransceiver implements WalletInterface {
636
750
  sourceLockingScript,
637
751
  unlockingScript,
638
752
  inputDescription,
639
- sequenceNumber
640
- })
753
+ sequenceNumber,
754
+ });
641
755
  }
642
756
  }
643
757
 
644
758
  // Parse outputs
645
- const outputsLength = resultReader.readVarIntNum()
759
+ const outputsLength = resultReader.readVarIntNum();
646
760
  if (outputsLength >= 0) {
647
- action.outputs = []
761
+ action.outputs = [];
648
762
  for (let l = 0; l < outputsLength; l++) {
649
- const outputIndex = resultReader.readVarIntNum()
650
- const satoshis = resultReader.readVarIntNum()
763
+ const outputIndex = resultReader.readVarIntNum();
764
+ const satoshis = resultReader.readVarIntNum();
651
765
 
652
766
  // lockingScript
653
- const lockingScriptLength = resultReader.readVarIntNum()
654
- let lockingScript: string | undefined
767
+ const lockingScriptLength = resultReader.readVarIntNum();
768
+ let lockingScript: string | undefined;
655
769
  if (lockingScriptLength >= 0) {
656
- const lockingScriptBytes = resultReader.read(lockingScriptLength)
657
- lockingScript = Utils.toHex(lockingScriptBytes)
770
+ const lockingScriptBytes = resultReader.read(lockingScriptLength);
771
+ lockingScript = Utils.toHex(lockingScriptBytes);
658
772
  }
659
773
 
660
- const spendable = resultReader.readInt8() === 1
774
+ const spendable = resultReader.readInt8() === 1;
661
775
 
662
776
  // outputDescription
663
- const outputDescriptionLength = resultReader.readVarIntNum()
664
- const outputDescriptionBytes = resultReader.read(outputDescriptionLength)
665
- const outputDescription = Utils.toUTF8(outputDescriptionBytes)
777
+ const outputDescriptionLength = resultReader.readVarIntNum();
778
+ const outputDescriptionBytes = resultReader.read(
779
+ outputDescriptionLength
780
+ );
781
+ const outputDescription = Utils.toUTF8(outputDescriptionBytes);
666
782
 
667
783
  // basket
668
- const basketLength = resultReader.readVarIntNum()
669
- let basket: string | undefined
784
+ const basketLength = resultReader.readVarIntNum();
785
+ let basket: string | undefined;
670
786
  if (basketLength >= 0) {
671
- const basketBytes = resultReader.read(basketLength)
672
- basket = Utils.toUTF8(basketBytes)
787
+ const basketBytes = resultReader.read(basketLength);
788
+ basket = Utils.toUTF8(basketBytes);
673
789
  }
674
790
 
675
791
  // tags
676
- const tagsLength = resultReader.readVarIntNum()
677
- const tags: string[] = []
792
+ const tagsLength = resultReader.readVarIntNum();
793
+ const tags: string[] = [];
678
794
  if (tagsLength >= 0) {
679
795
  for (let m = 0; m < tagsLength; m++) {
680
- const tagLength = resultReader.readVarIntNum()
681
- const tagBytes = resultReader.read(tagLength)
682
- tags.push(Utils.toUTF8(tagBytes))
796
+ const tagLength = resultReader.readVarIntNum();
797
+ const tagBytes = resultReader.read(tagLength);
798
+ tags.push(Utils.toUTF8(tagBytes));
683
799
  }
684
800
  }
685
801
 
686
802
  // customInstructions
687
- const customInstructionsLength = resultReader.readVarIntNum()
688
- let customInstructions: string | undefined
803
+ const customInstructionsLength = resultReader.readVarIntNum();
804
+ let customInstructions: string | undefined;
689
805
  if (customInstructionsLength >= 0) {
690
- const customInstructionsBytes = resultReader.read(customInstructionsLength)
691
- customInstructions = Utils.toUTF8(customInstructionsBytes)
806
+ const customInstructionsBytes = resultReader.read(
807
+ customInstructionsLength
808
+ );
809
+ customInstructions = Utils.toUTF8(customInstructionsBytes);
692
810
  }
693
811
 
694
812
  action.outputs.push({
@@ -699,283 +817,432 @@ export default class WalletWireTransceiver implements WalletInterface {
699
817
  outputDescription,
700
818
  basket,
701
819
  tags,
702
- customInstructions
703
- })
820
+ customInstructions,
821
+ });
704
822
  }
705
823
  }
706
824
 
707
- actions.push(action)
825
+ actions.push(action);
708
826
  }
709
827
 
710
828
  return {
711
829
  totalActions,
712
- actions
713
- }
830
+ actions,
831
+ };
714
832
  }
715
833
 
716
- async internalizeAction(args: InternalizeActionArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ accepted: true }> {
717
- const paramWriter = new Utils.Writer()
718
- paramWriter.writeVarIntNum(args.tx.length)
719
- paramWriter.write(args.tx)
720
- paramWriter.writeVarIntNum(args.outputs.length)
834
+ async internalizeAction(
835
+ args: InternalizeActionArgs,
836
+ originator?: OriginatorDomainNameStringUnder250Bytes
837
+ ): Promise<{ accepted: true }> {
838
+ const paramWriter = new Utils.Writer();
839
+ paramWriter.writeVarIntNum(args.tx.length);
840
+ paramWriter.write(args.tx);
841
+ paramWriter.writeVarIntNum(args.outputs.length);
721
842
  for (const out of args.outputs) {
722
- paramWriter.writeVarIntNum(out.outputIndex)
723
- if (out.protocol === 'wallet payment') {
724
- paramWriter.writeUInt8(1)
725
- paramWriter.write(Utils.toArray(out.paymentRemittance.senderIdentityKey, 'hex'))
726
- const derivationPrefixAsArray = Utils.toArray(out.paymentRemittance.derivationPrefix, 'base64')
727
- paramWriter.writeVarIntNum(derivationPrefixAsArray.length)
728
- paramWriter.write(derivationPrefixAsArray)
729
- const derivationSuffixAsArray = Utils.toArray(out.paymentRemittance.derivationSuffix, 'base64')
730
- paramWriter.writeVarIntNum(derivationSuffixAsArray.length)
731
- paramWriter.write(derivationSuffixAsArray)
843
+ paramWriter.writeVarIntNum(out.outputIndex);
844
+ if (out.protocol === "wallet payment") {
845
+ paramWriter.writeUInt8(1);
846
+ paramWriter.write(
847
+ Utils.toArray(out.paymentRemittance.senderIdentityKey, "hex")
848
+ );
849
+ const derivationPrefixAsArray = Utils.toArray(
850
+ out.paymentRemittance.derivationPrefix,
851
+ "base64"
852
+ );
853
+ paramWriter.writeVarIntNum(derivationPrefixAsArray.length);
854
+ paramWriter.write(derivationPrefixAsArray);
855
+ const derivationSuffixAsArray = Utils.toArray(
856
+ out.paymentRemittance.derivationSuffix,
857
+ "base64"
858
+ );
859
+ paramWriter.writeVarIntNum(derivationSuffixAsArray.length);
860
+ paramWriter.write(derivationSuffixAsArray);
732
861
  } else {
733
- paramWriter.writeUInt8(2)
734
- const basketAsArray = Utils.toArray(out.insertionRemittance.basket, 'utf8')
735
- paramWriter.writeVarIntNum(basketAsArray.length)
736
- paramWriter.write(basketAsArray)
862
+ paramWriter.writeUInt8(2);
863
+ const basketAsArray = Utils.toArray(
864
+ out.insertionRemittance.basket,
865
+ "utf8"
866
+ );
867
+ paramWriter.writeVarIntNum(basketAsArray.length);
868
+ paramWriter.write(basketAsArray);
737
869
  if (typeof out.insertionRemittance.customInstructions) {
738
- const customInstructionsAsArray = Utils.toArray(out.insertionRemittance.customInstructions, 'utf8')
739
- paramWriter.writeVarIntNum(customInstructionsAsArray.length)
740
- paramWriter.write(customInstructionsAsArray)
870
+ const customInstructionsAsArray = Utils.toArray(
871
+ out.insertionRemittance.customInstructions,
872
+ "utf8"
873
+ );
874
+ paramWriter.writeVarIntNum(customInstructionsAsArray.length);
875
+ paramWriter.write(customInstructionsAsArray);
741
876
  } else {
742
- paramWriter.writeVarIntNum(-1)
877
+ paramWriter.writeVarIntNum(-1);
743
878
  }
744
- if (typeof out.insertionRemittance.tags === 'object') {
745
- paramWriter.writeVarIntNum(out.insertionRemittance.tags.length)
879
+ if (typeof out.insertionRemittance.tags === "object") {
880
+ paramWriter.writeVarIntNum(out.insertionRemittance.tags.length);
746
881
  for (const tag of out.insertionRemittance.tags) {
747
- const tagAsArray = Utils.toArray(tag, 'utf8')
748
- paramWriter.writeVarIntNum(tagAsArray.length)
749
- paramWriter.write(tagAsArray)
882
+ const tagAsArray = Utils.toArray(tag, "utf8");
883
+ paramWriter.writeVarIntNum(tagAsArray.length);
884
+ paramWriter.write(tagAsArray);
750
885
  }
751
886
  } else {
752
- paramWriter.writeVarIntNum(0)
887
+ paramWriter.writeVarIntNum(0);
753
888
  }
754
889
  }
755
890
  }
756
- if (typeof args.labels === 'object') {
757
- paramWriter.writeVarIntNum(args.labels.length)
891
+ if (typeof args.labels === "object") {
892
+ paramWriter.writeVarIntNum(args.labels.length);
758
893
  for (const l of args.labels) {
759
- const labelAsArray = Utils.toArray(l, 'utf8')
760
- paramWriter.writeVarIntNum(labelAsArray.length)
761
- paramWriter.write(labelAsArray)
894
+ const labelAsArray = Utils.toArray(l, "utf8");
895
+ paramWriter.writeVarIntNum(labelAsArray.length);
896
+ paramWriter.write(labelAsArray);
762
897
  }
763
898
  } else {
764
- paramWriter.writeVarIntNum(-1)
899
+ paramWriter.writeVarIntNum(-1);
765
900
  }
766
- const descriptionAsArray = Utils.toArray(args.description)
767
- paramWriter.writeVarIntNum(descriptionAsArray.length)
768
- paramWriter.write(descriptionAsArray)
901
+ const descriptionAsArray = Utils.toArray(args.description);
902
+ paramWriter.writeVarIntNum(descriptionAsArray.length);
903
+ paramWriter.write(descriptionAsArray);
769
904
 
770
905
  // Serialize seekPermission
771
- paramWriter.writeInt8(typeof args.seekPermission === 'boolean' ? args.seekPermission ? 1 : 0 : -1)
772
-
773
- await this.transmit('internalizeAction', originator, paramWriter.toArray())
774
- return { accepted: true }
906
+ paramWriter.writeInt8(
907
+ typeof args.seekPermission === "boolean"
908
+ ? args.seekPermission
909
+ ? 1
910
+ : 0
911
+ : -1
912
+ );
913
+
914
+ await this.transmit("internalizeAction", originator, paramWriter.toArray());
915
+ return { accepted: true };
775
916
  }
776
917
 
777
- async listOutputs(args: ListOutputsArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ListOutputsResult> {
778
- const paramWriter = new Utils.Writer()
779
- const basketAsArray = Utils.toArray(args.basket, 'utf8')
780
- paramWriter.writeVarIntNum(basketAsArray.length)
781
- paramWriter.write(basketAsArray)
782
- if (typeof args.tags === 'object') {
783
- paramWriter.writeVarIntNum(args.tags.length)
918
+ async listOutputs(
919
+ args: ListOutputsArgs,
920
+ originator?: OriginatorDomainNameStringUnder250Bytes
921
+ ): Promise<ListOutputsResult> {
922
+ const paramWriter = new Utils.Writer();
923
+ const basketAsArray = Utils.toArray(args.basket, "utf8");
924
+ paramWriter.writeVarIntNum(basketAsArray.length);
925
+ paramWriter.write(basketAsArray);
926
+ if (typeof args.tags === "object") {
927
+ paramWriter.writeVarIntNum(args.tags.length);
784
928
  for (const tag of args.tags) {
785
- const tagAsArray = Utils.toArray(tag, 'utf8')
786
- paramWriter.writeVarIntNum(tagAsArray.length)
787
- paramWriter.write(tagAsArray)
929
+ const tagAsArray = Utils.toArray(tag, "utf8");
930
+ paramWriter.writeVarIntNum(tagAsArray.length);
931
+ paramWriter.write(tagAsArray);
788
932
  }
789
933
  } else {
790
- paramWriter.writeVarIntNum(0)
934
+ paramWriter.writeVarIntNum(0);
791
935
  }
792
- if (args.tagQueryMode === 'all') {
793
- paramWriter.writeInt8(1)
794
- } else if (args.tagQueryMode === 'any') {
795
- paramWriter.writeInt8(2)
936
+ if (args.tagQueryMode === "all") {
937
+ paramWriter.writeInt8(1);
938
+ } else if (args.tagQueryMode === "any") {
939
+ paramWriter.writeInt8(2);
796
940
  } else {
797
- paramWriter.writeInt8(-1)
941
+ paramWriter.writeInt8(-1);
798
942
  }
799
- if (args.include === 'locking scripts') {
800
- paramWriter.writeInt8(1)
801
- } else if (args.include === 'entire transactions') {
802
- paramWriter.writeInt8(2)
943
+ if (args.include === "locking scripts") {
944
+ paramWriter.writeInt8(1);
945
+ } else if (args.include === "entire transactions") {
946
+ paramWriter.writeInt8(2);
803
947
  } else {
804
- paramWriter.writeInt8(-1)
948
+ paramWriter.writeInt8(-1);
805
949
  }
806
- if (typeof args.includeCustomInstructions === 'boolean') {
807
- paramWriter.writeInt8(args.includeCustomInstructions ? 1 : 0)
950
+ if (typeof args.includeCustomInstructions === "boolean") {
951
+ paramWriter.writeInt8(args.includeCustomInstructions ? 1 : 0);
808
952
  } else {
809
- paramWriter.writeInt8(-1)
953
+ paramWriter.writeInt8(-1);
810
954
  }
811
- if (typeof args.includeTags === 'boolean') {
812
- paramWriter.writeInt8(args.includeTags ? 1 : 0)
955
+ if (typeof args.includeTags === "boolean") {
956
+ paramWriter.writeInt8(args.includeTags ? 1 : 0);
813
957
  } else {
814
- paramWriter.writeInt8(-1)
958
+ paramWriter.writeInt8(-1);
815
959
  }
816
- if (typeof args.includeLabels === 'boolean') {
817
- paramWriter.writeInt8(args.includeLabels ? 1 : 0)
960
+ if (typeof args.includeLabels === "boolean") {
961
+ paramWriter.writeInt8(args.includeLabels ? 1 : 0);
818
962
  } else {
819
- paramWriter.writeInt8(-1)
963
+ paramWriter.writeInt8(-1);
820
964
  }
821
- if (typeof args.limit === 'number') {
822
- paramWriter.writeVarIntNum(args.limit)
965
+ if (typeof args.limit === "number") {
966
+ paramWriter.writeVarIntNum(args.limit);
823
967
  } else {
824
- paramWriter.writeVarIntNum(-1)
968
+ paramWriter.writeVarIntNum(-1);
825
969
  }
826
- if (typeof args.offset === 'number') {
827
- paramWriter.writeVarIntNum(args.offset)
970
+ if (typeof args.offset === "number") {
971
+ paramWriter.writeVarIntNum(args.offset);
828
972
  } else {
829
- paramWriter.writeVarIntNum(-1)
973
+ paramWriter.writeVarIntNum(-1);
830
974
  }
831
975
 
832
976
  // Serialize seekPermission
833
- paramWriter.writeInt8(typeof args.seekPermission === 'boolean' ? args.seekPermission ? 1 : 0 : -1)
834
-
835
- const result = await this.transmit('listOutputs', originator, paramWriter.toArray())
836
- const resultReader = new Utils.Reader(result)
837
- const totalOutputs = resultReader.readVarIntNum()
838
- const beefLength = resultReader.readVarIntNum()
839
- let BEEF = undefined
977
+ paramWriter.writeInt8(
978
+ typeof args.seekPermission === "boolean"
979
+ ? args.seekPermission
980
+ ? 1
981
+ : 0
982
+ : -1
983
+ );
984
+
985
+ const result = await this.transmit(
986
+ "listOutputs",
987
+ originator,
988
+ paramWriter.toArray()
989
+ );
990
+ const resultReader = new Utils.Reader(result);
991
+ const totalOutputs = resultReader.readVarIntNum();
992
+ const beefLength = resultReader.readVarIntNum();
993
+ let BEEF = undefined;
840
994
  if (beefLength >= 0) {
841
- BEEF = resultReader.read(beefLength)
842
- }
843
- const outputs: Array<{ outpoint: OutpointString, satoshis: SatoshiValue, lockingScript?: HexString, tx?: BEEF, spendable: true, customInstructions?: string, tags?: OutputTagStringUnder300Bytes[], labels?: LabelStringUnder300Bytes[] }> = []
995
+ BEEF = resultReader.read(beefLength);
996
+ }
997
+ const outputs: Array<{
998
+ outpoint: OutpointString;
999
+ satoshis: SatoshiValue;
1000
+ lockingScript?: HexString;
1001
+ tx?: BEEF;
1002
+ spendable: true;
1003
+ customInstructions?: string;
1004
+ tags?: OutputTagStringUnder300Bytes[];
1005
+ labels?: LabelStringUnder300Bytes[];
1006
+ }> = [];
844
1007
  for (let i = 0; i < totalOutputs; i++) {
845
- const outpoint = this.readOutpoint(resultReader)
846
- const satoshis = resultReader.readVarIntNum()
847
- const output: { outpoint: OutpointString, satoshis: SatoshiValue, lockingScript?: HexString, tx?: BEEF, spendable: true, customInstructions?: string, tags?: OutputTagStringUnder300Bytes[], labels?: LabelStringUnder300Bytes[] } = {
1008
+ const outpoint = this.readOutpoint(resultReader);
1009
+ const satoshis = resultReader.readVarIntNum();
1010
+ const output: {
1011
+ outpoint: OutpointString;
1012
+ satoshis: SatoshiValue;
1013
+ lockingScript?: HexString;
1014
+ tx?: BEEF;
1015
+ spendable: true;
1016
+ customInstructions?: string;
1017
+ tags?: OutputTagStringUnder300Bytes[];
1018
+ labels?: LabelStringUnder300Bytes[];
1019
+ } = {
848
1020
  spendable: true,
849
1021
  outpoint,
850
- satoshis
851
- }
852
- const scriptLength = resultReader.readVarIntNum()
1022
+ satoshis,
1023
+ };
1024
+ const scriptLength = resultReader.readVarIntNum();
853
1025
  if (scriptLength >= 0) {
854
- output.lockingScript = Utils.toHex(resultReader.read(scriptLength))
1026
+ output.lockingScript = Utils.toHex(resultReader.read(scriptLength));
855
1027
  }
856
- const customInstructionsLength = resultReader.readVarIntNum()
1028
+ const customInstructionsLength = resultReader.readVarIntNum();
857
1029
  if (customInstructionsLength >= 0) {
858
- output.customInstructions = Utils.toUTF8(resultReader.read(customInstructionsLength))
1030
+ output.customInstructions = Utils.toUTF8(
1031
+ resultReader.read(customInstructionsLength)
1032
+ );
859
1033
  }
860
- const tagsLength = resultReader.readVarIntNum()
1034
+ const tagsLength = resultReader.readVarIntNum();
861
1035
  if (tagsLength !== -1) {
862
- const tags: OutputTagStringUnder300Bytes[] = []
1036
+ const tags: OutputTagStringUnder300Bytes[] = [];
863
1037
  for (let i = 0; i < tagsLength; i++) {
864
- const tagLength = resultReader.readVarIntNum()
865
- tags.push(Utils.toUTF8(resultReader.read(tagLength)))
1038
+ const tagLength = resultReader.readVarIntNum();
1039
+ tags.push(Utils.toUTF8(resultReader.read(tagLength)));
866
1040
  }
867
- output.tags = tags
1041
+ output.tags = tags;
868
1042
  }
869
- const labelsLength = resultReader.readVarIntNum()
1043
+ const labelsLength = resultReader.readVarIntNum();
870
1044
  if (labelsLength !== -1) {
871
- const labels: LabelStringUnder300Bytes[] = []
1045
+ const labels: LabelStringUnder300Bytes[] = [];
872
1046
  for (let i = 0; i < labelsLength; i++) {
873
- const labelLength = resultReader.readVarIntNum()
874
- labels.push(Utils.toUTF8(resultReader.read(labelLength)))
1047
+ const labelLength = resultReader.readVarIntNum();
1048
+ labels.push(Utils.toUTF8(resultReader.read(labelLength)));
875
1049
  }
876
- output.labels = labels
1050
+ output.labels = labels;
877
1051
  }
878
- outputs.push(output)
1052
+ outputs.push(output);
879
1053
  }
880
1054
  return {
881
1055
  totalOutputs,
882
1056
  BEEF,
883
- outputs
884
- }
1057
+ outputs,
1058
+ };
885
1059
  }
886
1060
 
887
- async relinquishOutput(args: { basket: BasketStringUnder300Bytes, output: OutpointString }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ relinquished: true }> {
888
- const paramWriter = new Utils.Writer()
889
- const basketAsArray = Utils.toArray(args.basket, 'utf8')
890
- paramWriter.writeVarIntNum(basketAsArray.length)
891
- paramWriter.write(basketAsArray)
892
- paramWriter.write(this.encodeOutpoint(args.output))
893
- await this.transmit('relinquishOutput', originator, paramWriter.toArray())
894
- return { relinquished: true }
1061
+ async relinquishOutput(
1062
+ args: { basket: BasketStringUnder300Bytes; output: OutpointString },
1063
+ originator?: OriginatorDomainNameStringUnder250Bytes
1064
+ ): Promise<{ relinquished: true }> {
1065
+ const paramWriter = new Utils.Writer();
1066
+ const basketAsArray = Utils.toArray(args.basket, "utf8");
1067
+ paramWriter.writeVarIntNum(basketAsArray.length);
1068
+ paramWriter.write(basketAsArray);
1069
+ paramWriter.write(this.encodeOutpoint(args.output));
1070
+ await this.transmit("relinquishOutput", originator, paramWriter.toArray());
1071
+ return { relinquished: true };
895
1072
  }
896
1073
 
897
1074
  private encodeOutpoint(outpoint: OutpointString): number[] {
898
- const writer = new Utils.Writer()
899
- const [txid, index] = outpoint.split('.')
900
- writer.write(Utils.toArray(txid, 'hex'))
901
- writer.writeVarIntNum(Number(index))
902
- return writer.toArray()
1075
+ const writer = new Utils.Writer();
1076
+ const [txid, index] = outpoint.split(".");
1077
+ writer.write(Utils.toArray(txid, "hex"));
1078
+ writer.writeVarIntNum(Number(index));
1079
+ return writer.toArray();
903
1080
  }
904
1081
 
905
1082
  private readOutpoint(reader: Utils.Reader): OutpointString {
906
- const txid = Utils.toHex(reader.read(32))
907
- const index = reader.readVarIntNum()
908
- return `${txid}.${index}`
1083
+ const txid = Utils.toHex(reader.read(32));
1084
+ const index = reader.readVarIntNum();
1085
+ return `${txid}.${index}`;
909
1086
  }
910
1087
 
911
- async getPublicKey(args: { seekPermission?: BooleanDefaultTrue, identityKey?: true, protocolID?: [SecurityLevel, ProtocolString5To400Bytes], keyID?: KeyIDStringUnder800Bytes, privileged?: BooleanDefaultFalse, privilegedReason?: DescriptionString5to50Bytes, counterparty?: PubKeyHex | 'self' | 'anyone', forSelf?: BooleanDefaultFalse }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ publicKey: PubKeyHex }> {
912
- const paramWriter = new Utils.Writer()
913
- paramWriter.writeUInt8(args.identityKey ? 1 : 0)
1088
+ async getPublicKey(
1089
+ args: {
1090
+ seekPermission?: BooleanDefaultTrue;
1091
+ identityKey?: true;
1092
+ protocolID?: [SecurityLevel, ProtocolString5To400Bytes];
1093
+ keyID?: KeyIDStringUnder800Bytes;
1094
+ privileged?: BooleanDefaultFalse;
1095
+ privilegedReason?: DescriptionString5to50Bytes;
1096
+ counterparty?: PubKeyHex | "self" | "anyone";
1097
+ forSelf?: BooleanDefaultFalse;
1098
+ },
1099
+ originator?: OriginatorDomainNameStringUnder250Bytes
1100
+ ): Promise<{ publicKey: PubKeyHex }> {
1101
+ const paramWriter = new Utils.Writer();
1102
+ paramWriter.writeUInt8(args.identityKey ? 1 : 0);
914
1103
  if (!args.identityKey) {
915
- paramWriter.write(this.encodeKeyRelatedParams(args.protocolID, args.keyID, args.counterparty, args.privileged, args.privilegedReason))
916
- if (typeof args.forSelf === 'boolean') {
917
- paramWriter.writeInt8(args.forSelf ? 1 : 0)
1104
+ paramWriter.write(
1105
+ this.encodeKeyRelatedParams(
1106
+ args.protocolID,
1107
+ args.keyID,
1108
+ args.counterparty,
1109
+ args.privileged,
1110
+ args.privilegedReason
1111
+ )
1112
+ );
1113
+ if (typeof args.forSelf === "boolean") {
1114
+ paramWriter.writeInt8(args.forSelf ? 1 : 0);
918
1115
  } else {
919
- paramWriter.writeInt8(-1)
1116
+ paramWriter.writeInt8(-1);
920
1117
  }
921
1118
  } else {
922
- paramWriter.write(this.encodePrivilegedParams(args.privileged, args.privilegedReason))
1119
+ paramWriter.write(
1120
+ this.encodePrivilegedParams(args.privileged, args.privilegedReason)
1121
+ );
923
1122
  }
924
1123
 
925
1124
  // Serialize seekPermission
926
- paramWriter.writeInt8(typeof args.seekPermission === 'boolean' ? args.seekPermission ? 1 : 0 : -1)
927
-
928
- const result = await this.transmit('getPublicKey', originator, paramWriter.toArray())
1125
+ paramWriter.writeInt8(
1126
+ typeof args.seekPermission === "boolean"
1127
+ ? args.seekPermission
1128
+ ? 1
1129
+ : 0
1130
+ : -1
1131
+ );
1132
+
1133
+ const result = await this.transmit(
1134
+ "getPublicKey",
1135
+ originator,
1136
+ paramWriter.toArray()
1137
+ );
929
1138
  return {
930
- publicKey: Utils.toHex(result)
931
- }
1139
+ publicKey: Utils.toHex(result),
1140
+ };
932
1141
  }
933
1142
 
934
- async revealCounterpartyKeyLinkage(args: { counterparty: PubKeyHex, verifier: PubKeyHex, privilegedReason?: DescriptionString5to50Bytes, privileged?: BooleanDefaultFalse }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ prover: PubKeyHex, verifier: PubKeyHex, counterparty: PubKeyHex, revelationTime: ISOTimestampString, encryptedLinkage: Byte[], encryptedLinkageProof: number[] }> {
935
- const paramWriter = new Utils.Writer()
936
- paramWriter.write(this.encodePrivilegedParams(args.privileged, args.privilegedReason))
937
- paramWriter.write(Utils.toArray(args.counterparty, 'hex'))
938
- paramWriter.write(Utils.toArray(args.verifier, 'hex'))
939
- const result = await this.transmit('revealCounterpartyKeyLinkage', originator, paramWriter.toArray())
940
- const resultReader = new Utils.Reader(result)
941
- const prover = Utils.toHex(resultReader.read(33))
942
- const verifier = Utils.toHex(resultReader.read(33))
943
- const counterparty = Utils.toHex(resultReader.read(33))
944
- const revelationTimeLength = resultReader.readVarIntNum()
945
- const revelationTime = Utils.toUTF8(resultReader.read(revelationTimeLength))
946
- const encryptedLinkageLength = resultReader.readVarIntNum()
947
- const encryptedLinkage = resultReader.read(encryptedLinkageLength)
948
- const encryptedLinkageProofLength = resultReader.readVarIntNum()
949
- const encryptedLinkageProof = resultReader.read(encryptedLinkageProofLength)
1143
+ async revealCounterpartyKeyLinkage(
1144
+ args: {
1145
+ counterparty: PubKeyHex;
1146
+ verifier: PubKeyHex;
1147
+ privilegedReason?: DescriptionString5to50Bytes;
1148
+ privileged?: BooleanDefaultFalse;
1149
+ },
1150
+ originator?: OriginatorDomainNameStringUnder250Bytes
1151
+ ): Promise<{
1152
+ prover: PubKeyHex;
1153
+ verifier: PubKeyHex;
1154
+ counterparty: PubKeyHex;
1155
+ revelationTime: ISOTimestampString;
1156
+ encryptedLinkage: Byte[];
1157
+ encryptedLinkageProof: number[];
1158
+ }> {
1159
+ const paramWriter = new Utils.Writer();
1160
+ paramWriter.write(
1161
+ this.encodePrivilegedParams(args.privileged, args.privilegedReason)
1162
+ );
1163
+ paramWriter.write(Utils.toArray(args.counterparty, "hex"));
1164
+ paramWriter.write(Utils.toArray(args.verifier, "hex"));
1165
+ const result = await this.transmit(
1166
+ "revealCounterpartyKeyLinkage",
1167
+ originator,
1168
+ paramWriter.toArray()
1169
+ );
1170
+ const resultReader = new Utils.Reader(result);
1171
+ const prover = Utils.toHex(resultReader.read(33));
1172
+ const verifier = Utils.toHex(resultReader.read(33));
1173
+ const counterparty = Utils.toHex(resultReader.read(33));
1174
+ const revelationTimeLength = resultReader.readVarIntNum();
1175
+ const revelationTime = Utils.toUTF8(
1176
+ resultReader.read(revelationTimeLength)
1177
+ );
1178
+ const encryptedLinkageLength = resultReader.readVarIntNum();
1179
+ const encryptedLinkage = resultReader.read(encryptedLinkageLength);
1180
+ const encryptedLinkageProofLength = resultReader.readVarIntNum();
1181
+ const encryptedLinkageProof = resultReader.read(
1182
+ encryptedLinkageProofLength
1183
+ );
950
1184
  return {
951
1185
  prover,
952
1186
  verifier,
953
1187
  counterparty,
954
1188
  revelationTime,
955
1189
  encryptedLinkage,
956
- encryptedLinkageProof
957
- }
1190
+ encryptedLinkageProof,
1191
+ };
958
1192
  }
959
1193
 
960
- async revealSpecificKeyLinkage(args: { counterparty: PubKeyHex, verifier: PubKeyHex, protocolID: [SecurityLevel, ProtocolString5To400Bytes], keyID: KeyIDStringUnder800Bytes, privilegedReason?: DescriptionString5to50Bytes, privileged?: BooleanDefaultFalse }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ prover: PubKeyHex, verifier: PubKeyHex, counterparty: PubKeyHex, protocolID: [SecurityLevel, ProtocolString5To400Bytes], keyID: KeyIDStringUnder800Bytes, encryptedLinkage: Byte[], encryptedLinkageProof: Byte[], proofType: Byte }> {
961
- const paramWriter = new Utils.Writer()
962
- paramWriter.write(this.encodeKeyRelatedParams(args.protocolID, args.keyID, args.counterparty, args.privileged, args.privilegedReason))
963
- paramWriter.write(Utils.toArray(args.verifier, 'hex'))
964
- const result = await this.transmit('revealSpecificKeyLinkage', originator, paramWriter.toArray())
965
- const resultReader = new Utils.Reader(result)
966
- const prover = Utils.toHex(resultReader.read(33))
967
- const verifier = Utils.toHex(resultReader.read(33))
968
- const counterparty = Utils.toHex(resultReader.read(33))
969
- const securityLevel = resultReader.readUInt8()
970
- const protocolLength = resultReader.readVarIntNum()
971
- const protocol = Utils.toUTF8(resultReader.read(protocolLength))
972
- const keyIDLength = resultReader.readVarIntNum()
973
- const keyID = Utils.toUTF8(resultReader.read(keyIDLength))
974
- const encryptedLinkageLength = resultReader.readVarIntNum()
975
- const encryptedLinkage = resultReader.read(encryptedLinkageLength)
976
- const encryptedLinkageProofLength = resultReader.readVarIntNum()
977
- const encryptedLinkageProof = resultReader.read(encryptedLinkageProofLength)
978
- const proofType = resultReader.readUInt8()
1194
+ async revealSpecificKeyLinkage(
1195
+ args: {
1196
+ counterparty: PubKeyHex;
1197
+ verifier: PubKeyHex;
1198
+ protocolID: [SecurityLevel, ProtocolString5To400Bytes];
1199
+ keyID: KeyIDStringUnder800Bytes;
1200
+ privilegedReason?: DescriptionString5to50Bytes;
1201
+ privileged?: BooleanDefaultFalse;
1202
+ },
1203
+ originator?: OriginatorDomainNameStringUnder250Bytes
1204
+ ): Promise<{
1205
+ prover: PubKeyHex;
1206
+ verifier: PubKeyHex;
1207
+ counterparty: PubKeyHex;
1208
+ protocolID: [SecurityLevel, ProtocolString5To400Bytes];
1209
+ keyID: KeyIDStringUnder800Bytes;
1210
+ encryptedLinkage: Byte[];
1211
+ encryptedLinkageProof: Byte[];
1212
+ proofType: Byte;
1213
+ }> {
1214
+ const paramWriter = new Utils.Writer();
1215
+ paramWriter.write(
1216
+ this.encodeKeyRelatedParams(
1217
+ args.protocolID,
1218
+ args.keyID,
1219
+ args.counterparty,
1220
+ args.privileged,
1221
+ args.privilegedReason
1222
+ )
1223
+ );
1224
+ paramWriter.write(Utils.toArray(args.verifier, "hex"));
1225
+ const result = await this.transmit(
1226
+ "revealSpecificKeyLinkage",
1227
+ originator,
1228
+ paramWriter.toArray()
1229
+ );
1230
+ const resultReader = new Utils.Reader(result);
1231
+ const prover = Utils.toHex(resultReader.read(33));
1232
+ const verifier = Utils.toHex(resultReader.read(33));
1233
+ const counterparty = Utils.toHex(resultReader.read(33));
1234
+ const securityLevel = resultReader.readUInt8();
1235
+ const protocolLength = resultReader.readVarIntNum();
1236
+ const protocol = Utils.toUTF8(resultReader.read(protocolLength));
1237
+ const keyIDLength = resultReader.readVarIntNum();
1238
+ const keyID = Utils.toUTF8(resultReader.read(keyIDLength));
1239
+ const encryptedLinkageLength = resultReader.readVarIntNum();
1240
+ const encryptedLinkage = resultReader.read(encryptedLinkageLength);
1241
+ const encryptedLinkageProofLength = resultReader.readVarIntNum();
1242
+ const encryptedLinkageProof = resultReader.read(
1243
+ encryptedLinkageProofLength
1244
+ );
1245
+ const proofType = resultReader.readUInt8();
979
1246
  return {
980
1247
  prover,
981
1248
  verifier,
@@ -984,472 +1251,775 @@ export default class WalletWireTransceiver implements WalletInterface {
984
1251
  keyID,
985
1252
  encryptedLinkage,
986
1253
  encryptedLinkageProof,
987
- proofType
988
- }
1254
+ proofType,
1255
+ };
989
1256
  }
990
1257
 
991
- async encrypt(args: { seekPermission?: BooleanDefaultTrue, plaintext: Byte[], protocolID: [SecurityLevel, ProtocolString5To400Bytes], keyID: KeyIDStringUnder800Bytes, privilegedReason?: DescriptionString5to50Bytes, counterparty?: PubKeyHex | 'self' | 'anyone', privileged?: BooleanDefaultFalse }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ ciphertext: Byte[] }> {
992
- const paramWriter = new Utils.Writer()
993
- paramWriter.write(this.encodeKeyRelatedParams(args.protocolID, args.keyID, args.counterparty, args.privileged, args.privilegedReason))
994
- paramWriter.writeVarIntNum(args.plaintext.length)
995
- paramWriter.write(args.plaintext)
1258
+ async encrypt(
1259
+ args: {
1260
+ seekPermission?: BooleanDefaultTrue;
1261
+ plaintext: Byte[];
1262
+ protocolID: [SecurityLevel, ProtocolString5To400Bytes];
1263
+ keyID: KeyIDStringUnder800Bytes;
1264
+ privilegedReason?: DescriptionString5to50Bytes;
1265
+ counterparty?: PubKeyHex | "self" | "anyone";
1266
+ privileged?: BooleanDefaultFalse;
1267
+ },
1268
+ originator?: OriginatorDomainNameStringUnder250Bytes
1269
+ ): Promise<{ ciphertext: Byte[] }> {
1270
+ const paramWriter = new Utils.Writer();
1271
+ paramWriter.write(
1272
+ this.encodeKeyRelatedParams(
1273
+ args.protocolID,
1274
+ args.keyID,
1275
+ args.counterparty,
1276
+ args.privileged,
1277
+ args.privilegedReason
1278
+ )
1279
+ );
1280
+ paramWriter.writeVarIntNum(args.plaintext.length);
1281
+ paramWriter.write(args.plaintext);
996
1282
  // Serialize seekPermission
997
- paramWriter.writeInt8(typeof args.seekPermission === 'boolean' ? args.seekPermission ? 1 : 0 : -1)
1283
+ paramWriter.writeInt8(
1284
+ typeof args.seekPermission === "boolean"
1285
+ ? args.seekPermission
1286
+ ? 1
1287
+ : 0
1288
+ : -1
1289
+ );
998
1290
  return {
999
- ciphertext: await this.transmit('encrypt', originator, paramWriter.toArray())
1000
- }
1291
+ ciphertext: await this.transmit(
1292
+ "encrypt",
1293
+ originator,
1294
+ paramWriter.toArray()
1295
+ ),
1296
+ };
1001
1297
  }
1002
1298
 
1003
- async decrypt(args: { seekPermission?: BooleanDefaultTrue, ciphertext: Byte[], protocolID: [SecurityLevel, ProtocolString5To400Bytes], keyID: KeyIDStringUnder800Bytes, privilegedReason?: DescriptionString5to50Bytes, counterparty?: PubKeyHex | 'self' | 'anyone', privileged?: BooleanDefaultFalse }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ plaintext: Byte[] }> {
1004
- const paramWriter = new Utils.Writer()
1005
- paramWriter.write(this.encodeKeyRelatedParams(args.protocolID, args.keyID, args.counterparty, args.privileged, args.privilegedReason))
1006
- paramWriter.writeVarIntNum(args.ciphertext.length)
1007
- paramWriter.write(args.ciphertext)
1299
+ async decrypt(
1300
+ args: {
1301
+ seekPermission?: BooleanDefaultTrue;
1302
+ ciphertext: Byte[];
1303
+ protocolID: [SecurityLevel, ProtocolString5To400Bytes];
1304
+ keyID: KeyIDStringUnder800Bytes;
1305
+ privilegedReason?: DescriptionString5to50Bytes;
1306
+ counterparty?: PubKeyHex | "self" | "anyone";
1307
+ privileged?: BooleanDefaultFalse;
1308
+ },
1309
+ originator?: OriginatorDomainNameStringUnder250Bytes
1310
+ ): Promise<{ plaintext: Byte[] }> {
1311
+ const paramWriter = new Utils.Writer();
1312
+ paramWriter.write(
1313
+ this.encodeKeyRelatedParams(
1314
+ args.protocolID,
1315
+ args.keyID,
1316
+ args.counterparty,
1317
+ args.privileged,
1318
+ args.privilegedReason
1319
+ )
1320
+ );
1321
+ paramWriter.writeVarIntNum(args.ciphertext.length);
1322
+ paramWriter.write(args.ciphertext);
1008
1323
  // Serialize seekPermission
1009
- paramWriter.writeInt8(typeof args.seekPermission === 'boolean' ? args.seekPermission ? 1 : 0 : -1)
1324
+ paramWriter.writeInt8(
1325
+ typeof args.seekPermission === "boolean"
1326
+ ? args.seekPermission
1327
+ ? 1
1328
+ : 0
1329
+ : -1
1330
+ );
1010
1331
  return {
1011
- plaintext: await this.transmit('decrypt', originator, paramWriter.toArray())
1012
- }
1332
+ plaintext: await this.transmit(
1333
+ "decrypt",
1334
+ originator,
1335
+ paramWriter.toArray()
1336
+ ),
1337
+ };
1013
1338
  }
1014
1339
 
1015
- async createHmac(args: { seekPermission?: BooleanDefaultTrue, data: Byte[], protocolID: [SecurityLevel, ProtocolString5To400Bytes], keyID: KeyIDStringUnder800Bytes, privilegedReason?: DescriptionString5to50Bytes, counterparty?: PubKeyHex | 'self' | 'anyone', privileged?: BooleanDefaultFalse }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ hmac: Byte[] }> {
1016
- const paramWriter = new Utils.Writer()
1017
- paramWriter.write(this.encodeKeyRelatedParams(args.protocolID, args.keyID, args.counterparty, args.privileged, args.privilegedReason))
1018
- paramWriter.writeVarIntNum(args.data.length)
1019
- paramWriter.write(args.data)
1340
+ async createHmac(
1341
+ args: {
1342
+ seekPermission?: BooleanDefaultTrue;
1343
+ data: Byte[];
1344
+ protocolID: [SecurityLevel, ProtocolString5To400Bytes];
1345
+ keyID: KeyIDStringUnder800Bytes;
1346
+ privilegedReason?: DescriptionString5to50Bytes;
1347
+ counterparty?: PubKeyHex | "self" | "anyone";
1348
+ privileged?: BooleanDefaultFalse;
1349
+ },
1350
+ originator?: OriginatorDomainNameStringUnder250Bytes
1351
+ ): Promise<{ hmac: Byte[] }> {
1352
+ const paramWriter = new Utils.Writer();
1353
+ paramWriter.write(
1354
+ this.encodeKeyRelatedParams(
1355
+ args.protocolID,
1356
+ args.keyID,
1357
+ args.counterparty,
1358
+ args.privileged,
1359
+ args.privilegedReason
1360
+ )
1361
+ );
1362
+ paramWriter.writeVarIntNum(args.data.length);
1363
+ paramWriter.write(args.data);
1020
1364
  // Serialize seekPermission
1021
- paramWriter.writeInt8(typeof args.seekPermission === 'boolean' ? args.seekPermission ? 1 : 0 : -1)
1365
+ paramWriter.writeInt8(
1366
+ typeof args.seekPermission === "boolean"
1367
+ ? args.seekPermission
1368
+ ? 1
1369
+ : 0
1370
+ : -1
1371
+ );
1022
1372
  return {
1023
- hmac: await this.transmit('createHmac', originator, paramWriter.toArray())
1024
- }
1373
+ hmac: await this.transmit(
1374
+ "createHmac",
1375
+ originator,
1376
+ paramWriter.toArray()
1377
+ ),
1378
+ };
1025
1379
  }
1026
1380
 
1027
- async verifyHmac(args: { seekPermission?: BooleanDefaultTrue, data: Byte[], hmac: Byte[], protocolID: [SecurityLevel, ProtocolString5To400Bytes], keyID: KeyIDStringUnder800Bytes, privilegedReason?: DescriptionString5to50Bytes, counterparty?: PubKeyHex | 'self' | 'anyone', privileged?: BooleanDefaultFalse }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ valid: true }> {
1028
- const paramWriter = new Utils.Writer()
1029
- paramWriter.write(this.encodeKeyRelatedParams(args.protocolID, args.keyID, args.counterparty, args.privileged, args.privilegedReason))
1030
- paramWriter.write(args.hmac)
1031
- paramWriter.writeVarIntNum(args.data.length)
1032
- paramWriter.write(args.data)
1381
+ async verifyHmac(
1382
+ args: {
1383
+ seekPermission?: BooleanDefaultTrue;
1384
+ data: Byte[];
1385
+ hmac: Byte[];
1386
+ protocolID: [SecurityLevel, ProtocolString5To400Bytes];
1387
+ keyID: KeyIDStringUnder800Bytes;
1388
+ privilegedReason?: DescriptionString5to50Bytes;
1389
+ counterparty?: PubKeyHex | "self" | "anyone";
1390
+ privileged?: BooleanDefaultFalse;
1391
+ },
1392
+ originator?: OriginatorDomainNameStringUnder250Bytes
1393
+ ): Promise<{ valid: true }> {
1394
+ const paramWriter = new Utils.Writer();
1395
+ paramWriter.write(
1396
+ this.encodeKeyRelatedParams(
1397
+ args.protocolID,
1398
+ args.keyID,
1399
+ args.counterparty,
1400
+ args.privileged,
1401
+ args.privilegedReason
1402
+ )
1403
+ );
1404
+ paramWriter.write(args.hmac);
1405
+ paramWriter.writeVarIntNum(args.data.length);
1406
+ paramWriter.write(args.data);
1033
1407
  // Serialize seekPermission
1034
- paramWriter.writeInt8(typeof args.seekPermission === 'boolean' ? args.seekPermission ? 1 : 0 : -1)
1035
- await this.transmit('verifyHmac', originator, paramWriter.toArray())
1036
- return { valid: true }
1408
+ paramWriter.writeInt8(
1409
+ typeof args.seekPermission === "boolean"
1410
+ ? args.seekPermission
1411
+ ? 1
1412
+ : 0
1413
+ : -1
1414
+ );
1415
+ await this.transmit("verifyHmac", originator, paramWriter.toArray());
1416
+ return { valid: true };
1037
1417
  }
1038
1418
 
1039
- async createSignature(args: { seekPermission?: BooleanDefaultTrue, data?: Byte[], hashToDirectlySign?: Byte[], protocolID: [SecurityLevel, ProtocolString5To400Bytes], keyID: KeyIDStringUnder800Bytes, privilegedReason?: DescriptionString5to50Bytes, counterparty?: PubKeyHex | 'self' | 'anyone', privileged?: BooleanDefaultFalse }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ signature: Byte[] }> {
1040
- const paramWriter = new Utils.Writer()
1041
- paramWriter.write(this.encodeKeyRelatedParams(args.protocolID, args.keyID, args.counterparty, args.privileged, args.privilegedReason))
1042
- if (typeof args.data === 'object') {
1043
- paramWriter.writeUInt8(1)
1044
- paramWriter.writeVarIntNum(args.data.length)
1045
- paramWriter.write(args.data)
1419
+ async createSignature(
1420
+ args: {
1421
+ seekPermission?: BooleanDefaultTrue;
1422
+ data?: Byte[];
1423
+ hashToDirectlySign?: Byte[];
1424
+ protocolID: [SecurityLevel, ProtocolString5To400Bytes];
1425
+ keyID: KeyIDStringUnder800Bytes;
1426
+ privilegedReason?: DescriptionString5to50Bytes;
1427
+ counterparty?: PubKeyHex | "self" | "anyone";
1428
+ privileged?: BooleanDefaultFalse;
1429
+ },
1430
+ originator?: OriginatorDomainNameStringUnder250Bytes
1431
+ ): Promise<{ signature: Byte[] }> {
1432
+ const paramWriter = new Utils.Writer();
1433
+ paramWriter.write(
1434
+ this.encodeKeyRelatedParams(
1435
+ args.protocolID,
1436
+ args.keyID,
1437
+ args.counterparty,
1438
+ args.privileged,
1439
+ args.privilegedReason
1440
+ )
1441
+ );
1442
+ if (typeof args.data === "object") {
1443
+ paramWriter.writeUInt8(1);
1444
+ paramWriter.writeVarIntNum(args.data.length);
1445
+ paramWriter.write(args.data);
1046
1446
  } else {
1047
- paramWriter.writeUInt8(2)
1048
- paramWriter.write(args.hashToDirectlySign)
1447
+ paramWriter.writeUInt8(2);
1448
+ paramWriter.write(args.hashToDirectlySign);
1049
1449
  }
1050
1450
  // Serialize seekPermission
1051
- paramWriter.writeInt8(typeof args.seekPermission === 'boolean' ? args.seekPermission ? 1 : 0 : -1)
1451
+ paramWriter.writeInt8(
1452
+ typeof args.seekPermission === "boolean"
1453
+ ? args.seekPermission
1454
+ ? 1
1455
+ : 0
1456
+ : -1
1457
+ );
1052
1458
  return {
1053
- signature: await this.transmit('createSignature', originator, paramWriter.toArray())
1054
- }
1459
+ signature: await this.transmit(
1460
+ "createSignature",
1461
+ originator,
1462
+ paramWriter.toArray()
1463
+ ),
1464
+ };
1055
1465
  }
1056
1466
 
1057
- async verifySignature(args: { seekPermission?: BooleanDefaultTrue, data?: Byte[], hashToDirectlyVerify?: Byte[], signature: Byte[], protocolID: [SecurityLevel, ProtocolString5To400Bytes], keyID: KeyIDStringUnder800Bytes, privilegedReason?: DescriptionString5to50Bytes, counterparty?: PubKeyHex | 'self' | 'anyone', forSelf?: BooleanDefaultFalse, privileged?: BooleanDefaultFalse }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ valid: true }> {
1058
- const paramWriter = new Utils.Writer()
1059
- paramWriter.write(this.encodeKeyRelatedParams(args.protocolID, args.keyID, args.counterparty, args.privileged, args.privilegedReason))
1060
- if (typeof args.forSelf === 'boolean') {
1061
- paramWriter.writeInt8(args.forSelf ? 1 : 0)
1467
+ async verifySignature(
1468
+ args: {
1469
+ seekPermission?: BooleanDefaultTrue;
1470
+ data?: Byte[];
1471
+ hashToDirectlyVerify?: Byte[];
1472
+ signature: Byte[];
1473
+ protocolID: [SecurityLevel, ProtocolString5To400Bytes];
1474
+ keyID: KeyIDStringUnder800Bytes;
1475
+ privilegedReason?: DescriptionString5to50Bytes;
1476
+ counterparty?: PubKeyHex | "self" | "anyone";
1477
+ forSelf?: BooleanDefaultFalse;
1478
+ privileged?: BooleanDefaultFalse;
1479
+ },
1480
+ originator?: OriginatorDomainNameStringUnder250Bytes
1481
+ ): Promise<{ valid: true }> {
1482
+ const paramWriter = new Utils.Writer();
1483
+ paramWriter.write(
1484
+ this.encodeKeyRelatedParams(
1485
+ args.protocolID,
1486
+ args.keyID,
1487
+ args.counterparty,
1488
+ args.privileged,
1489
+ args.privilegedReason
1490
+ )
1491
+ );
1492
+ if (typeof args.forSelf === "boolean") {
1493
+ paramWriter.writeInt8(args.forSelf ? 1 : 0);
1062
1494
  } else {
1063
- paramWriter.writeInt8(-1)
1064
- }
1065
- paramWriter.writeVarIntNum(args.signature.length)
1066
- paramWriter.write(args.signature)
1067
- if (typeof args.data === 'object') {
1068
- paramWriter.writeUInt8(1)
1069
- paramWriter.writeVarIntNum(args.data.length)
1070
- paramWriter.write(args.data)
1495
+ paramWriter.writeInt8(-1);
1496
+ }
1497
+ paramWriter.writeVarIntNum(args.signature.length);
1498
+ paramWriter.write(args.signature);
1499
+ if (typeof args.data === "object") {
1500
+ paramWriter.writeUInt8(1);
1501
+ paramWriter.writeVarIntNum(args.data.length);
1502
+ paramWriter.write(args.data);
1071
1503
  } else {
1072
- paramWriter.writeUInt8(2)
1073
- paramWriter.write(args.hashToDirectlyVerify)
1504
+ paramWriter.writeUInt8(2);
1505
+ paramWriter.write(args.hashToDirectlyVerify);
1074
1506
  }
1075
1507
  // Serialize seekPermission
1076
- paramWriter.writeInt8(typeof args.seekPermission === 'boolean' ? args.seekPermission ? 1 : 0 : -1)
1077
- await this.transmit('verifySignature', originator, paramWriter.toArray())
1078
- return { valid: true }
1508
+ paramWriter.writeInt8(
1509
+ typeof args.seekPermission === "boolean"
1510
+ ? args.seekPermission
1511
+ ? 1
1512
+ : 0
1513
+ : -1
1514
+ );
1515
+ await this.transmit("verifySignature", originator, paramWriter.toArray());
1516
+ return { valid: true };
1079
1517
  }
1080
1518
 
1081
- private encodeKeyRelatedParams(protocolID: [SecurityLevel, ProtocolString5To400Bytes], keyID: KeyIDStringUnder800Bytes, counterparty?: PubKeyHex | 'self' | 'anyone', privileged?: boolean, privilegedReason?: string): number[] {
1082
- const paramWriter = new Utils.Writer()
1083
- paramWriter.writeUInt8(protocolID[0])
1084
- const protocolAsArray = Utils.toArray(protocolID[1], 'utf8')
1085
- paramWriter.writeVarIntNum(protocolAsArray.length)
1086
- paramWriter.write(protocolAsArray)
1087
- const keyIDAsArray = Utils.toArray(keyID, 'utf8')
1088
- paramWriter.writeVarIntNum(keyIDAsArray.length)
1089
- paramWriter.write(keyIDAsArray)
1090
- if (typeof counterparty !== 'string') {
1091
- paramWriter.writeUInt8(0)
1092
- } else if (counterparty === 'self') {
1093
- paramWriter.writeUInt8(11)
1094
- } else if (counterparty === 'anyone') {
1095
- paramWriter.writeUInt8(12)
1519
+ private encodeKeyRelatedParams(
1520
+ protocolID: [SecurityLevel, ProtocolString5To400Bytes],
1521
+ keyID: KeyIDStringUnder800Bytes,
1522
+ counterparty?: PubKeyHex | "self" | "anyone",
1523
+ privileged?: boolean,
1524
+ privilegedReason?: string
1525
+ ): number[] {
1526
+ const paramWriter = new Utils.Writer();
1527
+ paramWriter.writeUInt8(protocolID[0]);
1528
+ const protocolAsArray = Utils.toArray(protocolID[1], "utf8");
1529
+ paramWriter.writeVarIntNum(protocolAsArray.length);
1530
+ paramWriter.write(protocolAsArray);
1531
+ const keyIDAsArray = Utils.toArray(keyID, "utf8");
1532
+ paramWriter.writeVarIntNum(keyIDAsArray.length);
1533
+ paramWriter.write(keyIDAsArray);
1534
+ if (typeof counterparty !== "string") {
1535
+ paramWriter.writeUInt8(0);
1536
+ } else if (counterparty === "self") {
1537
+ paramWriter.writeUInt8(11);
1538
+ } else if (counterparty === "anyone") {
1539
+ paramWriter.writeUInt8(12);
1096
1540
  } else {
1097
- paramWriter.write(Utils.toArray(counterparty, 'hex'))
1541
+ paramWriter.write(Utils.toArray(counterparty, "hex"));
1098
1542
  }
1099
- paramWriter.write(this.encodePrivilegedParams(privileged, privilegedReason))
1100
- return paramWriter.toArray()
1543
+ paramWriter.write(
1544
+ this.encodePrivilegedParams(privileged, privilegedReason)
1545
+ );
1546
+ return paramWriter.toArray();
1101
1547
  }
1102
1548
 
1103
1549
  async acquireCertificate(
1104
1550
  args: AcquireCertificateArgs,
1105
1551
  originator?: OriginatorDomainNameStringUnder250Bytes
1106
1552
  ): Promise<AcquireCertificateResult> {
1107
- const paramWriter = new Utils.Writer()
1108
- paramWriter.write(Utils.toArray(args.type, 'base64'))
1109
- paramWriter.write(Utils.toArray(args.certifier, 'hex'))
1553
+ const paramWriter = new Utils.Writer();
1554
+ paramWriter.write(Utils.toArray(args.type, "base64"));
1555
+ paramWriter.write(Utils.toArray(args.certifier, "hex"));
1110
1556
 
1111
- const fieldEntries = Object.entries(args.fields)
1112
- paramWriter.writeVarIntNum(fieldEntries.length)
1557
+ const fieldEntries = Object.entries(args.fields);
1558
+ paramWriter.writeVarIntNum(fieldEntries.length);
1113
1559
  for (const [key, value] of fieldEntries) {
1114
- const keyAsArray = Utils.toArray(key, 'utf8')
1115
- const valueAsArray = Utils.toArray(value, 'utf8')
1560
+ const keyAsArray = Utils.toArray(key, "utf8");
1561
+ const valueAsArray = Utils.toArray(value, "utf8");
1116
1562
 
1117
- paramWriter.writeVarIntNum(keyAsArray.length)
1118
- paramWriter.write(keyAsArray)
1563
+ paramWriter.writeVarIntNum(keyAsArray.length);
1564
+ paramWriter.write(keyAsArray);
1119
1565
 
1120
- paramWriter.writeVarIntNum(valueAsArray.length)
1121
- paramWriter.write(valueAsArray)
1566
+ paramWriter.writeVarIntNum(valueAsArray.length);
1567
+ paramWriter.write(valueAsArray);
1122
1568
  }
1123
1569
 
1124
- paramWriter.write(this.encodePrivilegedParams(args.privileged, args.privilegedReason))
1125
- paramWriter.writeUInt8(args.acquisitionProtocol === 'direct' ? 1 : 2)
1570
+ paramWriter.write(
1571
+ this.encodePrivilegedParams(args.privileged, args.privilegedReason)
1572
+ );
1573
+ paramWriter.writeUInt8(args.acquisitionProtocol === "direct" ? 1 : 2);
1126
1574
 
1127
- if (args.acquisitionProtocol === 'direct') {
1128
- paramWriter.write(Utils.toArray(args.serialNumber, 'base64'))
1129
- paramWriter.write(this.encodeOutpoint(args.revocationOutpoint))
1130
- const signatureAsArray = Utils.toArray(args.signature, 'hex')
1131
- paramWriter.writeVarIntNum(signatureAsArray.length)
1132
- paramWriter.write(signatureAsArray)
1575
+ if (args.acquisitionProtocol === "direct") {
1576
+ paramWriter.write(Utils.toArray(args.serialNumber, "base64"));
1577
+ paramWriter.write(this.encodeOutpoint(args.revocationOutpoint));
1578
+ const signatureAsArray = Utils.toArray(args.signature, "hex");
1579
+ paramWriter.writeVarIntNum(signatureAsArray.length);
1580
+ paramWriter.write(signatureAsArray);
1133
1581
 
1134
- const keyringRevealerAsArray = args.keyringRevealer !== 'certifier'
1135
- ? Utils.toArray(args.keyringRevealer, 'hex')
1136
- : [11]
1137
- paramWriter.write(keyringRevealerAsArray)
1582
+ const keyringRevealerAsArray =
1583
+ args.keyringRevealer !== "certifier"
1584
+ ? Utils.toArray(args.keyringRevealer, "hex")
1585
+ : [11];
1586
+ paramWriter.write(keyringRevealerAsArray);
1138
1587
 
1139
- const keyringKeys = Object.keys(args.keyringForSubject)
1140
- paramWriter.writeVarIntNum(keyringKeys.length)
1588
+ const keyringKeys = Object.keys(args.keyringForSubject);
1589
+ paramWriter.writeVarIntNum(keyringKeys.length);
1141
1590
  for (let i = 0; i < keyringKeys.length; i++) {
1142
- const keyringKeysAsArray = Utils.toArray(keyringKeys[i], 'utf8')
1143
- paramWriter.writeVarIntNum(keyringKeysAsArray.length)
1144
- paramWriter.write(keyringKeysAsArray)
1145
- const keyringForSubjectAsArray = Utils.toArray(args.keyringForSubject[keyringKeys[i]], 'base64')
1146
- paramWriter.writeVarIntNum(keyringForSubjectAsArray.length)
1147
- paramWriter.write(keyringForSubjectAsArray)
1591
+ const keyringKeysAsArray = Utils.toArray(keyringKeys[i], "utf8");
1592
+ paramWriter.writeVarIntNum(keyringKeysAsArray.length);
1593
+ paramWriter.write(keyringKeysAsArray);
1594
+ const keyringForSubjectAsArray = Utils.toArray(
1595
+ args.keyringForSubject[keyringKeys[i]],
1596
+ "base64"
1597
+ );
1598
+ paramWriter.writeVarIntNum(keyringForSubjectAsArray.length);
1599
+ paramWriter.write(keyringForSubjectAsArray);
1148
1600
  }
1149
1601
  } else {
1150
- const certifierUrlAsArray = Utils.toArray(args.certifierUrl, 'utf8')
1151
- paramWriter.writeVarIntNum(certifierUrlAsArray.length)
1152
- paramWriter.write(certifierUrlAsArray)
1602
+ const certifierUrlAsArray = Utils.toArray(args.certifierUrl, "utf8");
1603
+ paramWriter.writeVarIntNum(certifierUrlAsArray.length);
1604
+ paramWriter.write(certifierUrlAsArray);
1153
1605
  }
1154
1606
 
1155
- const result = await this.transmit('acquireCertificate', originator, paramWriter.toArray())
1156
- const cert = Certificate.fromBinary(result)
1607
+ const result = await this.transmit(
1608
+ "acquireCertificate",
1609
+ originator,
1610
+ paramWriter.toArray()
1611
+ );
1612
+ const cert = Certificate.fromBinary(result);
1157
1613
  return {
1158
1614
  ...cert,
1159
- signature: cert.signature as string
1160
- }
1615
+ signature: cert.signature as string,
1616
+ };
1161
1617
  }
1162
1618
 
1163
- private encodePrivilegedParams(privileged?: boolean, privilegedReason?: string): number[] {
1164
- const paramWriter = new Utils.Writer()
1165
- if (typeof privileged === 'boolean') {
1166
- paramWriter.writeInt8(privileged ? 1 : 0)
1619
+ private encodePrivilegedParams(
1620
+ privileged?: boolean,
1621
+ privilegedReason?: string
1622
+ ): number[] {
1623
+ const paramWriter = new Utils.Writer();
1624
+ if (typeof privileged === "boolean") {
1625
+ paramWriter.writeInt8(privileged ? 1 : 0);
1167
1626
  } else {
1168
- paramWriter.writeInt8(-1)
1627
+ paramWriter.writeInt8(-1);
1169
1628
  }
1170
- if (typeof privilegedReason === 'string') {
1171
- const privilegedReasonAsArray = Utils.toArray(privilegedReason, 'utf8')
1172
- paramWriter.writeInt8(privilegedReasonAsArray.length)
1173
- paramWriter.write(privilegedReasonAsArray)
1629
+ if (typeof privilegedReason === "string") {
1630
+ const privilegedReasonAsArray = Utils.toArray(privilegedReason, "utf8");
1631
+ paramWriter.writeInt8(privilegedReasonAsArray.length);
1632
+ paramWriter.write(privilegedReasonAsArray);
1174
1633
  } else {
1175
- paramWriter.writeInt8(-1)
1634
+ paramWriter.writeInt8(-1);
1176
1635
  }
1177
- return paramWriter.toArray()
1636
+ return paramWriter.toArray();
1178
1637
  }
1179
1638
 
1180
- async listCertificates(args: { certifiers: PubKeyHex[], types: Base64String[], limit?: PositiveIntegerDefault10Max10000, offset?: PositiveIntegerOrZero, privileged?: BooleanDefaultFalse, privilegedReason?: DescriptionString5to50Bytes }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ListCertificatesResult> {
1181
- const paramWriter = new Utils.Writer()
1182
- paramWriter.writeVarIntNum(args.certifiers.length)
1639
+ async listCertificates(
1640
+ args: {
1641
+ certifiers: PubKeyHex[];
1642
+ types: Base64String[];
1643
+ limit?: PositiveIntegerDefault10Max10000;
1644
+ offset?: PositiveIntegerOrZero;
1645
+ privileged?: BooleanDefaultFalse;
1646
+ privilegedReason?: DescriptionString5to50Bytes;
1647
+ },
1648
+ originator?: OriginatorDomainNameStringUnder250Bytes
1649
+ ): Promise<ListCertificatesResult> {
1650
+ const paramWriter = new Utils.Writer();
1651
+ paramWriter.writeVarIntNum(args.certifiers.length);
1183
1652
  for (let i = 0; i < args.certifiers.length; i++) {
1184
- paramWriter.write(Utils.toArray(args.certifiers[i], 'hex'))
1653
+ paramWriter.write(Utils.toArray(args.certifiers[i], "hex"));
1185
1654
  }
1186
1655
 
1187
- paramWriter.writeVarIntNum(args.types.length)
1656
+ paramWriter.writeVarIntNum(args.types.length);
1188
1657
  for (let i = 0; i < args.types.length; i++) {
1189
- paramWriter.write(Utils.toArray(args.types[i], 'base64'))
1658
+ paramWriter.write(Utils.toArray(args.types[i], "base64"));
1190
1659
  }
1191
- if (typeof args.limit === 'number') {
1192
- paramWriter.writeVarIntNum(args.limit)
1660
+ if (typeof args.limit === "number") {
1661
+ paramWriter.writeVarIntNum(args.limit);
1193
1662
  } else {
1194
- paramWriter.writeVarIntNum(-1)
1663
+ paramWriter.writeVarIntNum(-1);
1195
1664
  }
1196
- if (typeof args.offset === 'number') {
1197
- paramWriter.writeVarIntNum(args.offset)
1665
+ if (typeof args.offset === "number") {
1666
+ paramWriter.writeVarIntNum(args.offset);
1198
1667
  } else {
1199
- paramWriter.writeVarIntNum(-1)
1200
- }
1201
- paramWriter.write(this.encodePrivilegedParams(args.privileged, args.privilegedReason))
1202
- const result = await this.transmit('listCertificates', originator, paramWriter.toArray())
1203
- const resultReader = new Utils.Reader(result)
1204
- const totalCertificates = resultReader.readVarIntNum()
1668
+ paramWriter.writeVarIntNum(-1);
1669
+ }
1670
+ paramWriter.write(
1671
+ this.encodePrivilegedParams(args.privileged, args.privilegedReason)
1672
+ );
1673
+ const result = await this.transmit(
1674
+ "listCertificates",
1675
+ originator,
1676
+ paramWriter.toArray()
1677
+ );
1678
+ const resultReader = new Utils.Reader(result);
1679
+ const totalCertificates = resultReader.readVarIntNum();
1205
1680
  const certificates: Array<{
1206
- type: Base64String
1207
- subject: PubKeyHex
1208
- serialNumber: Base64String
1209
- certifier: PubKeyHex
1210
- revocationOutpoint: OutpointString
1211
- signature: HexString
1212
- fields: Record<CertificateFieldNameUnder50Bytes, Base64String>
1213
- }> = []
1681
+ type: Base64String;
1682
+ subject: PubKeyHex;
1683
+ serialNumber: Base64String;
1684
+ certifier: PubKeyHex;
1685
+ revocationOutpoint: OutpointString;
1686
+ signature: HexString;
1687
+ fields: Record<CertificateFieldNameUnder50Bytes, Base64String>;
1688
+ }> = [];
1214
1689
  for (let i = 0; i < totalCertificates; i++) {
1215
- const certificateLength = resultReader.readVarIntNum()
1216
- const certificateBin = resultReader.read(certificateLength)
1217
- const cert = Certificate.fromBinary(certificateBin)
1690
+ const certificateLength = resultReader.readVarIntNum();
1691
+ const certificateBin = resultReader.read(certificateLength);
1692
+ const cert = Certificate.fromBinary(certificateBin);
1218
1693
  certificates.push({
1219
1694
  ...cert,
1220
- signature: cert.signature as string
1221
- })
1695
+ signature: cert.signature as string,
1696
+ });
1222
1697
  }
1223
1698
  return {
1224
1699
  totalCertificates,
1225
- certificates
1226
- }
1700
+ certificates,
1701
+ };
1227
1702
  }
1228
1703
 
1229
- async proveCertificate(args: ProveCertificateArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ProveCertificateResult> {
1230
- const paramWriter = new Utils.Writer()
1231
- const typeAsArray = Utils.toArray(args.certificate.type, 'base64')
1232
- paramWriter.write(typeAsArray)
1233
- const subjectAsArray = Utils.toArray(args.certificate.subject, 'hex')
1234
- paramWriter.write(subjectAsArray)
1235
- const serialNumberAsArray = Utils.toArray(args.certificate.serialNumber, 'base64')
1236
- paramWriter.write(serialNumberAsArray)
1237
- const certifierAsArray = Utils.toArray(args.certificate.certifier, 'hex')
1238
- paramWriter.write(certifierAsArray)
1239
- const revocationOutpointAsArray = this.encodeOutpoint(args.certificate.revocationOutpoint)
1240
- paramWriter.write(revocationOutpointAsArray)
1241
- const signatureAsArray = Utils.toArray(args.certificate.signature, 'hex')
1242
- paramWriter.writeVarIntNum(signatureAsArray.length)
1243
- paramWriter.write(signatureAsArray)
1244
- const fieldEntries = Object.entries(args.certificate.fields)
1245
- paramWriter.writeVarIntNum(fieldEntries.length)
1704
+ async proveCertificate(
1705
+ args: ProveCertificateArgs,
1706
+ originator?: OriginatorDomainNameStringUnder250Bytes
1707
+ ): Promise<ProveCertificateResult> {
1708
+ const paramWriter = new Utils.Writer();
1709
+ const typeAsArray = Utils.toArray(args.certificate.type, "base64");
1710
+ paramWriter.write(typeAsArray);
1711
+ const subjectAsArray = Utils.toArray(args.certificate.subject, "hex");
1712
+ paramWriter.write(subjectAsArray);
1713
+ const serialNumberAsArray = Utils.toArray(
1714
+ args.certificate.serialNumber,
1715
+ "base64"
1716
+ );
1717
+ paramWriter.write(serialNumberAsArray);
1718
+ const certifierAsArray = Utils.toArray(args.certificate.certifier, "hex");
1719
+ paramWriter.write(certifierAsArray);
1720
+ const revocationOutpointAsArray = this.encodeOutpoint(
1721
+ args.certificate.revocationOutpoint
1722
+ );
1723
+ paramWriter.write(revocationOutpointAsArray);
1724
+ const signatureAsArray = Utils.toArray(args.certificate.signature, "hex");
1725
+ paramWriter.writeVarIntNum(signatureAsArray.length);
1726
+ paramWriter.write(signatureAsArray);
1727
+ const fieldEntries = Object.entries(args.certificate.fields);
1728
+ paramWriter.writeVarIntNum(fieldEntries.length);
1246
1729
  for (const [key, value] of fieldEntries) {
1247
- const keyAsArray = Utils.toArray(key, 'utf8')
1248
- const valueAsArray = Utils.toArray(value, 'utf8')
1249
- paramWriter.writeVarIntNum(keyAsArray.length)
1250
- paramWriter.write(keyAsArray)
1251
- paramWriter.writeVarIntNum(valueAsArray.length)
1252
- paramWriter.write(valueAsArray)
1253
- }
1254
- paramWriter.writeVarIntNum(args.fieldsToReveal.length)
1730
+ const keyAsArray = Utils.toArray(key, "utf8");
1731
+ const valueAsArray = Utils.toArray(value, "utf8");
1732
+ paramWriter.writeVarIntNum(keyAsArray.length);
1733
+ paramWriter.write(keyAsArray);
1734
+ paramWriter.writeVarIntNum(valueAsArray.length);
1735
+ paramWriter.write(valueAsArray);
1736
+ }
1737
+ paramWriter.writeVarIntNum(args.fieldsToReveal.length);
1255
1738
  for (const field of args.fieldsToReveal) {
1256
- const fieldAsArray = Utils.toArray(field, 'utf8')
1257
- paramWriter.writeVarIntNum(fieldAsArray.length)
1258
- paramWriter.write(fieldAsArray)
1259
- }
1260
- paramWriter.write(Utils.toArray(args.verifier, 'hex'))
1261
- paramWriter.write(this.encodePrivilegedParams(args.privileged, args.privilegedReason))
1262
- const result = await this.transmit('proveCertificate', originator, paramWriter.toArray())
1263
- const resultReader = new Utils.Reader(result)
1264
- const numFields = resultReader.readVarIntNum()
1265
- const keyringForVerifier: Record<string, string> = {}
1739
+ const fieldAsArray = Utils.toArray(field, "utf8");
1740
+ paramWriter.writeVarIntNum(fieldAsArray.length);
1741
+ paramWriter.write(fieldAsArray);
1742
+ }
1743
+ paramWriter.write(Utils.toArray(args.verifier, "hex"));
1744
+ paramWriter.write(
1745
+ this.encodePrivilegedParams(args.privileged, args.privilegedReason)
1746
+ );
1747
+ const result = await this.transmit(
1748
+ "proveCertificate",
1749
+ originator,
1750
+ paramWriter.toArray()
1751
+ );
1752
+ const resultReader = new Utils.Reader(result);
1753
+ const numFields = resultReader.readVarIntNum();
1754
+ const keyringForVerifier: Record<string, string> = {};
1266
1755
  for (let i = 0; i < numFields; i++) {
1267
- const fieldKeyLength = resultReader.readVarIntNum()
1268
- const fieldKey = Utils.toUTF8(resultReader.read(fieldKeyLength))
1269
- const fieldValueLength = resultReader.readVarIntNum()
1270
- keyringForVerifier[fieldKey] = Utils.toBase64(resultReader.read(fieldValueLength))
1756
+ const fieldKeyLength = resultReader.readVarIntNum();
1757
+ const fieldKey = Utils.toUTF8(resultReader.read(fieldKeyLength));
1758
+ const fieldValueLength = resultReader.readVarIntNum();
1759
+ keyringForVerifier[fieldKey] = Utils.toBase64(
1760
+ resultReader.read(fieldValueLength)
1761
+ );
1271
1762
  }
1272
1763
  return {
1273
- keyringForVerifier
1274
- }
1764
+ keyringForVerifier,
1765
+ };
1275
1766
  }
1276
1767
 
1277
- async relinquishCertificate(args: { type: Base64String, serialNumber: Base64String, certifier: PubKeyHex }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ relinquished: true }> {
1278
- const paramWriter = new Utils.Writer()
1279
- const typeAsArray = Utils.toArray(args.type, 'base64')
1280
- paramWriter.write(typeAsArray)
1281
- const serialNumberAsArray = Utils.toArray(args.serialNumber, 'base64')
1282
- paramWriter.write(serialNumberAsArray)
1283
- const certifierAsArray = Utils.toArray(args.certifier, 'hex')
1284
- paramWriter.write(certifierAsArray)
1285
- await this.transmit('relinquishCertificate', originator, paramWriter.toArray())
1286
- return { relinquished: true }
1768
+ async relinquishCertificate(
1769
+ args: {
1770
+ type: Base64String;
1771
+ serialNumber: Base64String;
1772
+ certifier: PubKeyHex;
1773
+ },
1774
+ originator?: OriginatorDomainNameStringUnder250Bytes
1775
+ ): Promise<{ relinquished: true }> {
1776
+ const paramWriter = new Utils.Writer();
1777
+ const typeAsArray = Utils.toArray(args.type, "base64");
1778
+ paramWriter.write(typeAsArray);
1779
+ const serialNumberAsArray = Utils.toArray(args.serialNumber, "base64");
1780
+ paramWriter.write(serialNumberAsArray);
1781
+ const certifierAsArray = Utils.toArray(args.certifier, "hex");
1782
+ paramWriter.write(certifierAsArray);
1783
+ await this.transmit(
1784
+ "relinquishCertificate",
1785
+ originator,
1786
+ paramWriter.toArray()
1787
+ );
1788
+ return { relinquished: true };
1287
1789
  }
1288
1790
 
1289
1791
  private parseDiscoveryResult(result: number[]): {
1290
- totalCertificates: number
1792
+ totalCertificates: number;
1291
1793
  certificates: Array<{
1292
- type: Base64String
1293
- subject: PubKeyHex
1294
- serialNumber: Base64String
1295
- certifier: PubKeyHex
1296
- revocationOutpoint: OutpointString
1297
- signature: HexString
1298
- fields: Record<CertificateFieldNameUnder50Bytes, Base64String>
1794
+ type: Base64String;
1795
+ subject: PubKeyHex;
1796
+ serialNumber: Base64String;
1797
+ certifier: PubKeyHex;
1798
+ revocationOutpoint: OutpointString;
1799
+ signature: HexString;
1800
+ fields: Record<CertificateFieldNameUnder50Bytes, Base64String>;
1299
1801
  certifierInfo: {
1300
- name: EntityNameStringMax100Bytes
1301
- iconUrl: EntityIconURLStringMax500Bytes
1302
- description: DescriptionString5to50Bytes
1303
- trust: PositiveIntegerMax10
1304
- }
1305
- publiclyRevealedKeyring: Record<CertificateFieldNameUnder50Bytes, Base64String>
1306
- decryptedFields: Record<CertificateFieldNameUnder50Bytes, string>
1307
- }>
1802
+ name: EntityNameStringMax100Bytes;
1803
+ iconUrl: EntityIconURLStringMax500Bytes;
1804
+ description: DescriptionString5to50Bytes;
1805
+ trust: PositiveIntegerMax10;
1806
+ };
1807
+ publiclyRevealedKeyring: Record<
1808
+ CertificateFieldNameUnder50Bytes,
1809
+ Base64String
1810
+ >;
1811
+ decryptedFields: Record<CertificateFieldNameUnder50Bytes, string>;
1812
+ }>;
1308
1813
  } {
1309
- const resultReader = new Utils.Reader(result)
1310
- const totalCertificates = resultReader.readVarIntNum()
1814
+ const resultReader = new Utils.Reader(result);
1815
+ const totalCertificates = resultReader.readVarIntNum();
1311
1816
  const certificates: Array<{
1312
- type: Base64String
1313
- subject: PubKeyHex
1314
- serialNumber: Base64String
1315
- certifier: PubKeyHex
1316
- revocationOutpoint: OutpointString
1317
- signature: HexString
1318
- fields: Record<CertificateFieldNameUnder50Bytes, Base64String>
1817
+ type: Base64String;
1818
+ subject: PubKeyHex;
1819
+ serialNumber: Base64String;
1820
+ certifier: PubKeyHex;
1821
+ revocationOutpoint: OutpointString;
1822
+ signature: HexString;
1823
+ fields: Record<CertificateFieldNameUnder50Bytes, Base64String>;
1319
1824
  certifierInfo: {
1320
- name: EntityNameStringMax100Bytes
1321
- iconUrl: EntityIconURLStringMax500Bytes
1322
- description: DescriptionString5to50Bytes
1323
- trust: PositiveIntegerMax10
1324
- }
1325
- publiclyRevealedKeyring: Record<CertificateFieldNameUnder50Bytes, Base64String>
1326
- decryptedFields: Record<CertificateFieldNameUnder50Bytes, string>
1327
- }> = []
1825
+ name: EntityNameStringMax100Bytes;
1826
+ iconUrl: EntityIconURLStringMax500Bytes;
1827
+ description: DescriptionString5to50Bytes;
1828
+ trust: PositiveIntegerMax10;
1829
+ };
1830
+ publiclyRevealedKeyring: Record<
1831
+ CertificateFieldNameUnder50Bytes,
1832
+ Base64String
1833
+ >;
1834
+ decryptedFields: Record<CertificateFieldNameUnder50Bytes, string>;
1835
+ }> = [];
1328
1836
  for (let i = 0; i < totalCertificates; i++) {
1329
- const certBinLen = resultReader.readVarIntNum()
1330
- const certBin = resultReader.read(certBinLen)
1331
- const cert = Certificate.fromBinary(certBin)
1332
- const nameLength = resultReader.readVarIntNum()
1333
- const name = Utils.toUTF8(resultReader.read(nameLength))
1334
- const iconUrlLength = resultReader.readVarIntNum()
1335
- const iconUrl = Utils.toUTF8(resultReader.read(iconUrlLength))
1336
- const descriptionLength = resultReader.readVarIntNum()
1337
- const description = Utils.toUTF8(resultReader.read(descriptionLength))
1338
- const trust = resultReader.readUInt8()
1339
- const publiclyRevealedKeyring = {}
1340
- const numPublicKeyringEntries = resultReader.readVarIntNum()
1837
+ const certBinLen = resultReader.readVarIntNum();
1838
+ const certBin = resultReader.read(certBinLen);
1839
+ const cert = Certificate.fromBinary(certBin);
1840
+ const nameLength = resultReader.readVarIntNum();
1841
+ const name = Utils.toUTF8(resultReader.read(nameLength));
1842
+ const iconUrlLength = resultReader.readVarIntNum();
1843
+ const iconUrl = Utils.toUTF8(resultReader.read(iconUrlLength));
1844
+ const descriptionLength = resultReader.readVarIntNum();
1845
+ const description = Utils.toUTF8(resultReader.read(descriptionLength));
1846
+ const trust = resultReader.readUInt8();
1847
+ const publiclyRevealedKeyring = {};
1848
+ const numPublicKeyringEntries = resultReader.readVarIntNum();
1341
1849
  for (let j = 0; j < numPublicKeyringEntries; j++) {
1342
- const fieldKeyLen = resultReader.readVarIntNum()
1343
- const fieldKey = Utils.toUTF8(resultReader.read(fieldKeyLen))
1344
- const fieldValueLen = resultReader.readVarIntNum()
1345
- publiclyRevealedKeyring[fieldKey] = resultReader.read(fieldValueLen)
1850
+ const fieldKeyLen = resultReader.readVarIntNum();
1851
+ const fieldKey = Utils.toUTF8(resultReader.read(fieldKeyLen));
1852
+ const fieldValueLen = resultReader.readVarIntNum();
1853
+ publiclyRevealedKeyring[fieldKey] = resultReader.read(fieldValueLen);
1346
1854
  }
1347
- const decryptedFields = {}
1348
- const numDecryptedFields = resultReader.readVarIntNum()
1855
+ const decryptedFields = {};
1856
+ const numDecryptedFields = resultReader.readVarIntNum();
1349
1857
  for (let k = 0; k < numDecryptedFields; k++) {
1350
- const fieldKeyLen = resultReader.readVarIntNum()
1351
- const fieldKey = Utils.toUTF8(resultReader.read(fieldKeyLen))
1352
- const fieldValueLen = resultReader.readVarIntNum()
1353
- decryptedFields[fieldKey] = Utils.toUTF8(resultReader.read(fieldValueLen))
1858
+ const fieldKeyLen = resultReader.readVarIntNum();
1859
+ const fieldKey = Utils.toUTF8(resultReader.read(fieldKeyLen));
1860
+ const fieldValueLen = resultReader.readVarIntNum();
1861
+ decryptedFields[fieldKey] = Utils.toUTF8(
1862
+ resultReader.read(fieldValueLen)
1863
+ );
1354
1864
  }
1355
1865
  certificates.push({
1356
1866
  ...cert,
1357
1867
  signature: cert.signature as string,
1358
1868
  certifierInfo: { iconUrl, name, description, trust },
1359
1869
  publiclyRevealedKeyring,
1360
- decryptedFields
1361
- })
1870
+ decryptedFields,
1871
+ });
1362
1872
  }
1363
1873
  return {
1364
1874
  totalCertificates,
1365
- certificates
1366
- }
1875
+ certificates,
1876
+ };
1367
1877
  }
1368
1878
 
1369
- async discoverByIdentityKey(args: { seekPermission?: BooleanDefaultTrue, identityKey: PubKeyHex, limit?: PositiveIntegerDefault10Max10000, offset?: PositiveIntegerOrZero }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<DiscoverCertificatesResult> {
1370
- const paramWriter = new Utils.Writer()
1371
- paramWriter.write(Utils.toArray(args.identityKey, 'hex'))
1372
- if (typeof args.limit === 'number') {
1373
- paramWriter.writeVarIntNum(args.limit)
1879
+ async discoverByIdentityKey(
1880
+ args: {
1881
+ seekPermission?: BooleanDefaultTrue;
1882
+ identityKey: PubKeyHex;
1883
+ limit?: PositiveIntegerDefault10Max10000;
1884
+ offset?: PositiveIntegerOrZero;
1885
+ },
1886
+ originator?: OriginatorDomainNameStringUnder250Bytes
1887
+ ): Promise<DiscoverCertificatesResult> {
1888
+ const paramWriter = new Utils.Writer();
1889
+ paramWriter.write(Utils.toArray(args.identityKey, "hex"));
1890
+ if (typeof args.limit === "number") {
1891
+ paramWriter.writeVarIntNum(args.limit);
1374
1892
  } else {
1375
- paramWriter.writeVarIntNum(-1)
1893
+ paramWriter.writeVarIntNum(-1);
1376
1894
  }
1377
- if (typeof args.offset === 'number') {
1378
- paramWriter.writeVarIntNum(args.offset)
1895
+ if (typeof args.offset === "number") {
1896
+ paramWriter.writeVarIntNum(args.offset);
1379
1897
  } else {
1380
- paramWriter.writeVarIntNum(-1)
1898
+ paramWriter.writeVarIntNum(-1);
1381
1899
  }
1382
1900
  // Serialize seekPermission
1383
- paramWriter.writeInt8(typeof args.seekPermission === 'boolean' ? args.seekPermission ? 1 : 0 : -1)
1384
- const result = await this.transmit('discoverByIdentityKey', originator, paramWriter.toArray())
1385
- return this.parseDiscoveryResult(result)
1901
+ paramWriter.writeInt8(
1902
+ typeof args.seekPermission === "boolean"
1903
+ ? args.seekPermission
1904
+ ? 1
1905
+ : 0
1906
+ : -1
1907
+ );
1908
+ const result = await this.transmit(
1909
+ "discoverByIdentityKey",
1910
+ originator,
1911
+ paramWriter.toArray()
1912
+ );
1913
+ return this.parseDiscoveryResult(result);
1386
1914
  }
1387
1915
 
1388
- async discoverByAttributes(args: { seekPermission?: BooleanDefaultTrue, attributes: Record<CertificateFieldNameUnder50Bytes, string>, limit?: PositiveIntegerDefault10Max10000, offset?: PositiveIntegerOrZero }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<DiscoverCertificatesResult> {
1389
- const paramWriter = new Utils.Writer()
1390
- const attributeKeys = Object.keys(args.attributes)
1391
- paramWriter.writeVarIntNum(attributeKeys.length)
1916
+ async discoverByAttributes(
1917
+ args: {
1918
+ seekPermission?: BooleanDefaultTrue;
1919
+ attributes: Record<CertificateFieldNameUnder50Bytes, string>;
1920
+ limit?: PositiveIntegerDefault10Max10000;
1921
+ offset?: PositiveIntegerOrZero;
1922
+ },
1923
+ originator?: OriginatorDomainNameStringUnder250Bytes
1924
+ ): Promise<DiscoverCertificatesResult> {
1925
+ const paramWriter = new Utils.Writer();
1926
+ const attributeKeys = Object.keys(args.attributes);
1927
+ paramWriter.writeVarIntNum(attributeKeys.length);
1392
1928
  for (let i = 0; i < attributeKeys.length; i++) {
1393
- paramWriter.writeVarIntNum(attributeKeys[i].length)
1394
- paramWriter.write(Utils.toArray(attributeKeys[i], 'utf8'))
1395
- paramWriter.writeVarIntNum(args.attributes[attributeKeys[i]].length)
1396
- paramWriter.write(Utils.toArray(args.attributes[attributeKeys[i]], 'utf8'))
1397
- }
1398
- if (typeof args.limit === 'number') {
1399
- paramWriter.writeVarIntNum(args.limit)
1929
+ paramWriter.writeVarIntNum(attributeKeys[i].length);
1930
+ paramWriter.write(Utils.toArray(attributeKeys[i], "utf8"));
1931
+ paramWriter.writeVarIntNum(args.attributes[attributeKeys[i]].length);
1932
+ paramWriter.write(
1933
+ Utils.toArray(args.attributes[attributeKeys[i]], "utf8")
1934
+ );
1935
+ }
1936
+ if (typeof args.limit === "number") {
1937
+ paramWriter.writeVarIntNum(args.limit);
1400
1938
  } else {
1401
- paramWriter.writeVarIntNum(-1)
1939
+ paramWriter.writeVarIntNum(-1);
1402
1940
  }
1403
- if (typeof args.offset === 'number') {
1404
- paramWriter.writeVarIntNum(args.offset)
1941
+ if (typeof args.offset === "number") {
1942
+ paramWriter.writeVarIntNum(args.offset);
1405
1943
  } else {
1406
- paramWriter.writeVarIntNum(-1)
1944
+ paramWriter.writeVarIntNum(-1);
1407
1945
  }
1408
1946
  // Serialize seekPermission
1409
- paramWriter.writeInt8(typeof args.seekPermission === 'boolean' ? args.seekPermission ? 1 : 0 : -1)
1410
- const result = await this.transmit('discoverByAttributes', originator, paramWriter.toArray())
1411
- return this.parseDiscoveryResult(result)
1947
+ paramWriter.writeInt8(
1948
+ typeof args.seekPermission === "boolean"
1949
+ ? args.seekPermission
1950
+ ? 1
1951
+ : 0
1952
+ : -1
1953
+ );
1954
+ const result = await this.transmit(
1955
+ "discoverByAttributes",
1956
+ originator,
1957
+ paramWriter.toArray()
1958
+ );
1959
+ return this.parseDiscoveryResult(result);
1412
1960
  }
1413
1961
 
1414
- async isAuthenticated(args: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ authenticated: true }> {
1415
- const result = await this.transmit('isAuthenticated', originator)
1962
+ async isAuthenticated(
1963
+ args: {},
1964
+ originator?: OriginatorDomainNameStringUnder250Bytes
1965
+ ): Promise<{ authenticated: true }> {
1966
+ const result = await this.transmit("isAuthenticated", originator);
1416
1967
  // @ts-ignore
1417
- return { authenticated: !!result[0] }
1968
+ return { authenticated: !!result[0] };
1418
1969
  }
1419
1970
 
1420
- async waitForAuthentication(args: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ authenticated: true }> {
1421
- await this.transmit('waitForAuthentication', originator)
1422
- return { authenticated: true }
1971
+ async waitForAuthentication(
1972
+ args: {},
1973
+ originator?: OriginatorDomainNameStringUnder250Bytes
1974
+ ): Promise<{ authenticated: true }> {
1975
+ await this.transmit("waitForAuthentication", originator);
1976
+ return { authenticated: true };
1423
1977
  }
1424
1978
 
1425
- async getHeight(args: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ height: PositiveInteger }> {
1426
- const result = await this.transmit('getHeight', originator)
1427
- const resultReader = new Utils.Reader(result)
1979
+ async getHeight(
1980
+ args: {},
1981
+ originator?: OriginatorDomainNameStringUnder250Bytes
1982
+ ): Promise<{ height: PositiveInteger }> {
1983
+ const result = await this.transmit("getHeight", originator);
1984
+ const resultReader = new Utils.Reader(result);
1428
1985
  return {
1429
- height: resultReader.readVarIntNum()
1430
- }
1986
+ height: resultReader.readVarIntNum(),
1987
+ };
1431
1988
  }
1432
1989
 
1433
- async getHeaderForHeight(args: { height: PositiveInteger }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ header: HexString }> {
1434
- const paramWriter = new Utils.Writer()
1435
- paramWriter.writeVarIntNum(args.height)
1436
- const header = await this.transmit('getHeaderForHeight', originator, paramWriter.toArray())
1990
+ async getHeaderForHeight(
1991
+ args: { height: PositiveInteger },
1992
+ originator?: OriginatorDomainNameStringUnder250Bytes
1993
+ ): Promise<{ header: HexString }> {
1994
+ const paramWriter = new Utils.Writer();
1995
+ paramWriter.writeVarIntNum(args.height);
1996
+ const header = await this.transmit(
1997
+ "getHeaderForHeight",
1998
+ originator,
1999
+ paramWriter.toArray()
2000
+ );
1437
2001
  return {
1438
- header: Utils.toHex(header)
1439
- }
2002
+ header: Utils.toHex(header),
2003
+ };
1440
2004
  }
1441
2005
 
1442
- async getNetwork(args: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ network: 'mainnet' | 'testnet' }> {
1443
- const net = await this.transmit('getNetwork', originator)
2006
+ async getNetwork(
2007
+ args: {},
2008
+ originator?: OriginatorDomainNameStringUnder250Bytes
2009
+ ): Promise<{ network: "mainnet" | "testnet" }> {
2010
+ const net = await this.transmit("getNetwork", originator);
1444
2011
  return {
1445
- network: net[0] === 0 ? 'mainnet' : 'testnet'
1446
- }
2012
+ network: net[0] === 0 ? "mainnet" : "testnet",
2013
+ };
1447
2014
  }
1448
2015
 
1449
- async getVersion(args: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ version: VersionString7To30Bytes }> {
1450
- const version = await this.transmit('getVersion', originator)
2016
+ async getVersion(
2017
+ args: {},
2018
+ originator?: OriginatorDomainNameStringUnder250Bytes
2019
+ ): Promise<{ version: VersionString7To30Bytes }> {
2020
+ const version = await this.transmit("getVersion", originator);
1451
2021
  return {
1452
- version: Utils.toUTF8(version)
1453
- }
2022
+ version: Utils.toUTF8(version),
2023
+ };
1454
2024
  }
1455
2025
  }