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