@bsv/sdk 2.1.0 → 2.1.1

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 (383) hide show
  1. package/README.md +7 -7
  2. package/dist/cjs/package.json +1 -1
  3. package/dist/cjs/src/auth/Peer.js +8 -13
  4. package/dist/cjs/src/auth/Peer.js.map +1 -1
  5. package/dist/cjs/src/auth/SessionManager.js +4 -7
  6. package/dist/cjs/src/auth/SessionManager.js.map +1 -1
  7. package/dist/cjs/src/auth/certificates/MasterCertificate.js +1 -1
  8. package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
  9. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +1 -1
  10. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  11. package/dist/cjs/src/auth/clients/AuthFetch.js +32 -32
  12. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  13. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +4 -4
  14. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  15. package/dist/cjs/src/compat/ECIES.js +29 -34
  16. package/dist/cjs/src/compat/ECIES.js.map +1 -1
  17. package/dist/cjs/src/compat/HD.js +9 -4
  18. package/dist/cjs/src/compat/HD.js.map +1 -1
  19. package/dist/cjs/src/compat/Mnemonic.js +12 -12
  20. package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
  21. package/dist/cjs/src/identity/ContactsManager.js +172 -232
  22. package/dist/cjs/src/identity/ContactsManager.js.map +1 -1
  23. package/dist/cjs/src/identity/IdentityClient.js +122 -55
  24. package/dist/cjs/src/identity/IdentityClient.js.map +1 -1
  25. package/dist/cjs/src/kvstore/GlobalKVStore.js +30 -31
  26. package/dist/cjs/src/kvstore/GlobalKVStore.js.map +1 -1
  27. package/dist/cjs/src/kvstore/LocalKVStore.js +9 -9
  28. package/dist/cjs/src/kvstore/LocalKVStore.js.map +1 -1
  29. package/dist/cjs/src/kvstore/kvStoreInterpreter.js +2 -2
  30. package/dist/cjs/src/kvstore/kvStoreInterpreter.js.map +1 -1
  31. package/dist/cjs/src/messages/SignedMessage.js +1 -1
  32. package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
  33. package/dist/cjs/src/overlay-tools/Historian.js +1 -1
  34. package/dist/cjs/src/overlay-tools/Historian.js.map +1 -1
  35. package/dist/cjs/src/overlay-tools/LookupResolver.js +139 -46
  36. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
  37. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +75 -146
  38. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  39. package/dist/cjs/src/primitives/AESGCM.js +2 -2
  40. package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
  41. package/dist/cjs/src/primitives/BigNumber.js +164 -148
  42. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  43. package/dist/cjs/src/primitives/Curve.js +17 -15
  44. package/dist/cjs/src/primitives/Curve.js.map +1 -1
  45. package/dist/cjs/src/primitives/ECDSA.js +12 -7
  46. package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
  47. package/dist/cjs/src/primitives/Hash.js +140 -56
  48. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  49. package/dist/cjs/src/primitives/JacobianPoint.js +8 -8
  50. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
  51. package/dist/cjs/src/primitives/K256.js +3 -3
  52. package/dist/cjs/src/primitives/K256.js.map +1 -1
  53. package/dist/cjs/src/primitives/Point.js +36 -40
  54. package/dist/cjs/src/primitives/Point.js.map +1 -1
  55. package/dist/cjs/src/primitives/PrivateKey.js +4 -4
  56. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  57. package/dist/cjs/src/primitives/PublicKey.js +4 -4
  58. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  59. package/dist/cjs/src/primitives/Random.js +10 -14
  60. package/dist/cjs/src/primitives/Random.js.map +1 -1
  61. package/dist/cjs/src/primitives/ReaderUint8Array.js +6 -6
  62. package/dist/cjs/src/primitives/ReaderUint8Array.js.map +1 -1
  63. package/dist/cjs/src/primitives/Schnorr.js +2 -2
  64. package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
  65. package/dist/cjs/src/primitives/Secp256r1.js +2 -1
  66. package/dist/cjs/src/primitives/Secp256r1.js.map +1 -1
  67. package/dist/cjs/src/primitives/Signature.js +8 -8
  68. package/dist/cjs/src/primitives/Signature.js.map +1 -1
  69. package/dist/cjs/src/primitives/TransactionSignature.js +20 -21
  70. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  71. package/dist/cjs/src/primitives/utils.js +39 -46
  72. package/dist/cjs/src/primitives/utils.js.map +1 -1
  73. package/dist/cjs/src/registry/RegistryClient.js +31 -23
  74. package/dist/cjs/src/registry/RegistryClient.js.map +1 -1
  75. package/dist/cjs/src/remittance/RemittanceManager.js +19 -18
  76. package/dist/cjs/src/remittance/RemittanceManager.js.map +1 -1
  77. package/dist/cjs/src/remittance/modules/BasicBRC29.js.map +1 -1
  78. package/dist/cjs/src/script/Script.js +93 -170
  79. package/dist/cjs/src/script/Script.js.map +1 -1
  80. package/dist/cjs/src/script/ScriptEvaluationError.js +2 -2
  81. package/dist/cjs/src/script/ScriptEvaluationError.js.map +1 -1
  82. package/dist/cjs/src/script/Spend.js +14 -12
  83. package/dist/cjs/src/script/Spend.js.map +1 -1
  84. package/dist/cjs/src/script/templates/PushDrop.js +22 -18
  85. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  86. package/dist/cjs/src/script/templates/RPuzzle.js +2 -4
  87. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  88. package/dist/cjs/src/storage/StorageDownloader.js +42 -9
  89. package/dist/cjs/src/storage/StorageDownloader.js.map +1 -1
  90. package/dist/cjs/src/totp/totp.js +1 -1
  91. package/dist/cjs/src/totp/totp.js.map +1 -1
  92. package/dist/cjs/src/transaction/Beef.js +239 -192
  93. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  94. package/dist/cjs/src/transaction/BeefConstants.js +19 -0
  95. package/dist/cjs/src/transaction/BeefConstants.js.map +1 -0
  96. package/dist/cjs/src/transaction/BeefTx.js +12 -12
  97. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  98. package/dist/cjs/src/transaction/MerklePath.js +4 -4
  99. package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
  100. package/dist/cjs/src/transaction/Transaction.js +49 -52
  101. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  102. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js +1 -1
  103. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  104. package/dist/cjs/src/transaction/http/BinaryFetchClient.js +9 -9
  105. package/dist/cjs/src/transaction/http/BinaryFetchClient.js.map +1 -1
  106. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +9 -9
  107. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  108. package/dist/cjs/src/wallet/CachedKeyDeriver.js +1 -1
  109. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
  110. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  111. package/dist/cjs/src/wallet/WalletError.js.map +1 -1
  112. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +5 -4
  113. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  114. package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js +9 -9
  115. package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
  116. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +92 -92
  117. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  118. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +387 -711
  119. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  120. package/dist/cjs/src/wallet/substrates/XDM.js +4 -4
  121. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
  122. package/dist/cjs/src/wallet/substrates/window.CWI.js +2 -2
  123. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  124. package/dist/cjs/src/wallet/validationHelpers.js +9 -9
  125. package/dist/cjs/src/wallet/validationHelpers.js.map +1 -1
  126. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  127. package/dist/esm/src/auth/Peer.js +25 -13
  128. package/dist/esm/src/auth/Peer.js.map +1 -1
  129. package/dist/esm/src/auth/SessionManager.js +4 -7
  130. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  131. package/dist/esm/src/auth/certificates/MasterCertificate.js +1 -1
  132. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  133. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +1 -1
  134. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  135. package/dist/esm/src/auth/clients/AuthFetch.js +32 -32
  136. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  137. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +4 -4
  138. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  139. package/dist/esm/src/compat/ECIES.js +29 -34
  140. package/dist/esm/src/compat/ECIES.js.map +1 -1
  141. package/dist/esm/src/compat/HD.js +9 -4
  142. package/dist/esm/src/compat/HD.js.map +1 -1
  143. package/dist/esm/src/compat/Mnemonic.js +12 -12
  144. package/dist/esm/src/compat/Mnemonic.js.map +1 -1
  145. package/dist/esm/src/identity/ContactsManager.js +172 -232
  146. package/dist/esm/src/identity/ContactsManager.js.map +1 -1
  147. package/dist/esm/src/identity/IdentityClient.js +122 -55
  148. package/dist/esm/src/identity/IdentityClient.js.map +1 -1
  149. package/dist/esm/src/kvstore/GlobalKVStore.js +30 -31
  150. package/dist/esm/src/kvstore/GlobalKVStore.js.map +1 -1
  151. package/dist/esm/src/kvstore/LocalKVStore.js +9 -9
  152. package/dist/esm/src/kvstore/LocalKVStore.js.map +1 -1
  153. package/dist/esm/src/kvstore/kvStoreInterpreter.js +2 -2
  154. package/dist/esm/src/kvstore/kvStoreInterpreter.js.map +1 -1
  155. package/dist/esm/src/messages/SignedMessage.js +1 -1
  156. package/dist/esm/src/messages/SignedMessage.js.map +1 -1
  157. package/dist/esm/src/overlay-tools/Historian.js +1 -1
  158. package/dist/esm/src/overlay-tools/Historian.js.map +1 -1
  159. package/dist/esm/src/overlay-tools/LookupResolver.js +139 -46
  160. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  161. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +74 -146
  162. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  163. package/dist/esm/src/primitives/AESGCM.js +2 -2
  164. package/dist/esm/src/primitives/AESGCM.js.map +1 -1
  165. package/dist/esm/src/primitives/BigNumber.js +167 -154
  166. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  167. package/dist/esm/src/primitives/Curve.js +17 -15
  168. package/dist/esm/src/primitives/Curve.js.map +1 -1
  169. package/dist/esm/src/primitives/ECDSA.js +12 -7
  170. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  171. package/dist/esm/src/primitives/Hash.js +140 -56
  172. package/dist/esm/src/primitives/Hash.js.map +1 -1
  173. package/dist/esm/src/primitives/JacobianPoint.js +8 -8
  174. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
  175. package/dist/esm/src/primitives/K256.js +3 -3
  176. package/dist/esm/src/primitives/K256.js.map +1 -1
  177. package/dist/esm/src/primitives/Point.js +36 -40
  178. package/dist/esm/src/primitives/Point.js.map +1 -1
  179. package/dist/esm/src/primitives/PrivateKey.js +4 -4
  180. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  181. package/dist/esm/src/primitives/PublicKey.js +4 -4
  182. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  183. package/dist/esm/src/primitives/Random.js +10 -14
  184. package/dist/esm/src/primitives/Random.js.map +1 -1
  185. package/dist/esm/src/primitives/ReaderUint8Array.js +6 -6
  186. package/dist/esm/src/primitives/ReaderUint8Array.js.map +1 -1
  187. package/dist/esm/src/primitives/Schnorr.js +1 -1
  188. package/dist/esm/src/primitives/Schnorr.js.map +1 -1
  189. package/dist/esm/src/primitives/Secp256r1.js +2 -1
  190. package/dist/esm/src/primitives/Secp256r1.js.map +1 -1
  191. package/dist/esm/src/primitives/Signature.js +8 -8
  192. package/dist/esm/src/primitives/Signature.js.map +1 -1
  193. package/dist/esm/src/primitives/TransactionSignature.js +20 -21
  194. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  195. package/dist/esm/src/primitives/utils.js +39 -48
  196. package/dist/esm/src/primitives/utils.js.map +1 -1
  197. package/dist/esm/src/registry/RegistryClient.js +31 -23
  198. package/dist/esm/src/registry/RegistryClient.js.map +1 -1
  199. package/dist/esm/src/remittance/RemittanceManager.js +19 -18
  200. package/dist/esm/src/remittance/RemittanceManager.js.map +1 -1
  201. package/dist/esm/src/remittance/modules/BasicBRC29.js.map +1 -1
  202. package/dist/esm/src/script/Script.js +93 -170
  203. package/dist/esm/src/script/Script.js.map +1 -1
  204. package/dist/esm/src/script/ScriptEvaluationError.js +2 -2
  205. package/dist/esm/src/script/ScriptEvaluationError.js.map +1 -1
  206. package/dist/esm/src/script/Spend.js +14 -12
  207. package/dist/esm/src/script/Spend.js.map +1 -1
  208. package/dist/esm/src/script/templates/PushDrop.js +4 -3
  209. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  210. package/dist/esm/src/script/templates/RPuzzle.js +2 -4
  211. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  212. package/dist/esm/src/storage/StorageDownloader.js +1 -1
  213. package/dist/esm/src/storage/StorageDownloader.js.map +1 -1
  214. package/dist/esm/src/totp/totp.js +1 -1
  215. package/dist/esm/src/totp/totp.js.map +1 -1
  216. package/dist/esm/src/transaction/Beef.js +229 -186
  217. package/dist/esm/src/transaction/Beef.js.map +1 -1
  218. package/dist/esm/src/transaction/BeefConstants.js +16 -0
  219. package/dist/esm/src/transaction/BeefConstants.js.map +1 -0
  220. package/dist/esm/src/transaction/BeefTx.js +3 -3
  221. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  222. package/dist/esm/src/transaction/MerklePath.js +4 -4
  223. package/dist/esm/src/transaction/MerklePath.js.map +1 -1
  224. package/dist/esm/src/transaction/Transaction.js +49 -52
  225. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  226. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js +1 -1
  227. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  228. package/dist/esm/src/transaction/http/BinaryFetchClient.js +9 -9
  229. package/dist/esm/src/transaction/http/BinaryFetchClient.js.map +1 -1
  230. package/dist/esm/src/transaction/http/DefaultHttpClient.js +9 -9
  231. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  232. package/dist/esm/src/wallet/CachedKeyDeriver.js +1 -1
  233. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
  234. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  235. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  236. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +5 -4
  237. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  238. package/dist/esm/src/wallet/substrates/ReactNativeWebView.js +9 -9
  239. package/dist/esm/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
  240. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +92 -92
  241. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  242. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +387 -711
  243. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  244. package/dist/esm/src/wallet/substrates/XDM.js +4 -4
  245. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
  246. package/dist/esm/src/wallet/substrates/window.CWI.js +2 -2
  247. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  248. package/dist/esm/src/wallet/validationHelpers.js +9 -9
  249. package/dist/esm/src/wallet/validationHelpers.js.map +1 -1
  250. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  251. package/dist/types/src/auth/Peer.d.ts +13 -0
  252. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  253. package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
  254. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  255. package/dist/types/src/compat/ECIES.d.ts.map +1 -1
  256. package/dist/types/src/compat/HD.d.ts.map +1 -1
  257. package/dist/types/src/identity/ContactsManager.d.ts +18 -0
  258. package/dist/types/src/identity/ContactsManager.d.ts.map +1 -1
  259. package/dist/types/src/identity/IdentityClient.d.ts +47 -8
  260. package/dist/types/src/identity/IdentityClient.d.ts.map +1 -1
  261. package/dist/types/src/kvstore/GlobalKVStore.d.ts.map +1 -1
  262. package/dist/types/src/overlay-tools/LookupResolver.d.ts +59 -1
  263. package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
  264. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +18 -3
  265. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
  266. package/dist/types/src/primitives/BigNumber.d.ts +13 -3
  267. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  268. package/dist/types/src/primitives/Curve.d.ts.map +1 -1
  269. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  270. package/dist/types/src/primitives/Hash.d.ts +3 -3
  271. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  272. package/dist/types/src/primitives/JacobianPoint.d.ts +3 -1
  273. package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
  274. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  275. package/dist/types/src/primitives/Random.d.ts +2 -2
  276. package/dist/types/src/primitives/Random.d.ts.map +1 -1
  277. package/dist/types/src/primitives/ReaderUint8Array.d.ts.map +1 -1
  278. package/dist/types/src/primitives/Schnorr.d.ts +2 -1
  279. package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
  280. package/dist/types/src/primitives/Secp256r1.d.ts.map +1 -1
  281. package/dist/types/src/primitives/utils.d.ts +2 -4
  282. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  283. package/dist/types/src/registry/RegistryClient.d.ts.map +1 -1
  284. package/dist/types/src/remittance/RemittanceManager.d.ts.map +1 -1
  285. package/dist/types/src/remittance/modules/BasicBRC29.d.ts.map +1 -1
  286. package/dist/types/src/script/Script.d.ts +15 -8
  287. package/dist/types/src/script/Script.d.ts.map +1 -1
  288. package/dist/types/src/script/Spend.d.ts.map +1 -1
  289. package/dist/types/src/script/templates/PushDrop.d.ts +3 -1
  290. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  291. package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
  292. package/dist/types/src/transaction/Beef.d.ts +46 -8
  293. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  294. package/dist/types/src/transaction/BeefConstants.d.ts +15 -0
  295. package/dist/types/src/transaction/BeefConstants.d.ts.map +1 -0
  296. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  297. package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
  298. package/dist/types/src/wallet/KeyDeriver.d.ts +1 -1
  299. package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
  300. package/dist/types/src/wallet/Wallet.interfaces.d.ts +2 -2
  301. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  302. package/dist/types/src/wallet/WalletClient.d.ts +7 -7
  303. package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
  304. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +7 -7
  305. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  306. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts +36 -7
  307. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
  308. package/dist/types/src/wallet/substrates/window.CWI.d.ts +8 -8
  309. package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
  310. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  311. package/dist/umd/bundle.js +3 -3
  312. package/package.json +1 -1
  313. package/src/auth/Peer.ts +26 -13
  314. package/src/auth/SessionManager.ts +4 -7
  315. package/src/auth/certificates/MasterCertificate.ts +1 -1
  316. package/src/auth/certificates/__tests/CompletedProtoWallet.ts +1 -1
  317. package/src/auth/clients/AuthFetch.ts +41 -41
  318. package/src/auth/transports/SimplifiedFetchTransport.ts +4 -4
  319. package/src/compat/ECIES.ts +29 -34
  320. package/src/compat/HD.ts +10 -5
  321. package/src/compat/Mnemonic.ts +11 -11
  322. package/src/compat/__tests/HD.test.ts +19 -0
  323. package/src/identity/ContactsManager.ts +194 -257
  324. package/src/identity/IdentityClient.ts +155 -66
  325. package/src/identity/__tests/IdentityClient.test.ts +25 -1
  326. package/src/kvstore/GlobalKVStore.ts +31 -32
  327. package/src/kvstore/LocalKVStore.ts +8 -8
  328. package/src/kvstore/kvStoreInterpreter.ts +2 -2
  329. package/src/messages/SignedMessage.ts +1 -1
  330. package/src/overlay-tools/Historian.ts +1 -1
  331. package/src/overlay-tools/LookupResolver.ts +182 -45
  332. package/src/overlay-tools/SHIPBroadcaster.ts +92 -168
  333. package/src/primitives/AESGCM.ts +2 -2
  334. package/src/primitives/BigNumber.ts +122 -113
  335. package/src/primitives/Curve.ts +16 -15
  336. package/src/primitives/ECDSA.ts +10 -8
  337. package/src/primitives/Hash.ts +152 -53
  338. package/src/primitives/JacobianPoint.ts +13 -11
  339. package/src/primitives/K256.ts +3 -3
  340. package/src/primitives/Point.ts +35 -38
  341. package/src/primitives/PrivateKey.ts +3 -3
  342. package/src/primitives/PublicKey.ts +3 -3
  343. package/src/primitives/Random.ts +11 -14
  344. package/src/primitives/ReaderUint8Array.ts +7 -7
  345. package/src/primitives/Schnorr.ts +2 -1
  346. package/src/primitives/Secp256r1.ts +2 -1
  347. package/src/primitives/Signature.ts +8 -8
  348. package/src/primitives/TransactionSignature.ts +16 -16
  349. package/src/primitives/utils.ts +37 -47
  350. package/src/registry/RegistryClient.ts +25 -25
  351. package/src/remittance/RemittanceManager.ts +17 -18
  352. package/src/remittance/modules/BasicBRC29.ts +2 -5
  353. package/src/script/Script.ts +114 -170
  354. package/src/script/ScriptEvaluationError.ts +2 -2
  355. package/src/script/Spend.ts +14 -15
  356. package/src/script/templates/PushDrop.ts +5 -3
  357. package/src/script/templates/RPuzzle.ts +2 -4
  358. package/src/storage/StorageDownloader.ts +1 -1
  359. package/src/totp/totp.ts +1 -1
  360. package/src/transaction/Beef.ts +241 -203
  361. package/src/transaction/BeefConstants.ts +16 -0
  362. package/src/transaction/BeefTx.ts +3 -3
  363. package/src/transaction/MerklePath.ts +4 -4
  364. package/src/transaction/Transaction.ts +48 -51
  365. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +1 -1
  366. package/src/transaction/http/BinaryFetchClient.ts +8 -8
  367. package/src/transaction/http/DefaultHttpClient.ts +8 -8
  368. package/src/wallet/CachedKeyDeriver.ts +8 -6
  369. package/src/wallet/KeyDeriver.ts +1 -1
  370. package/src/wallet/Wallet.interfaces.ts +2 -4
  371. package/src/wallet/WalletClient.ts +8 -8
  372. package/src/wallet/WalletError.ts +1 -1
  373. package/src/wallet/__tests/WalletClient.substrate.test.ts +10 -6
  374. package/src/wallet/substrates/HTTPWalletJSON.ts +22 -21
  375. package/src/wallet/substrates/ReactNativeWebView.ts +9 -9
  376. package/src/wallet/substrates/WalletWireProcessor.ts +83 -83
  377. package/src/wallet/substrates/WalletWireTransceiver.ts +528 -938
  378. package/src/wallet/substrates/XDM.ts +4 -4
  379. package/src/wallet/substrates/__tests/HTTPWalletJSON.test.ts +38 -25
  380. package/src/wallet/substrates/__tests/ReactNativeWebView.test.ts +174 -0
  381. package/src/wallet/substrates/__tests/window.CWI.test.ts +256 -0
  382. package/src/wallet/substrates/window.CWI.ts +10 -10
  383. package/src/wallet/validationHelpers.ts +9 -9
@@ -56,7 +56,7 @@ export default class HTTPWalletJSON implements WalletInterface {
56
56
  this.httpClient = httpClient
57
57
 
58
58
  // Detect if we're in a browser environment
59
- const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window?.origin !== 'file://'
59
+ const isBrowser = typeof globalThis.window !== 'undefined' && typeof document !== 'undefined' && globalThis.window?.origin !== 'file://'
60
60
 
61
61
  this.api = async (call: string, args: object) => {
62
62
  // In browser environments, let the browser handle Origin header automatically
@@ -66,21 +66,22 @@ export default class HTTPWalletJSON implements WalletInterface {
66
66
  : undefined
67
67
 
68
68
  if (!isBrowser && origin === undefined) {
69
- console.error('Originator is required in Node.js environments')
69
+ throw new Error(
70
+ 'HTTPWalletJSON: originator is required when using the HTTP substrate in Node.js. ' +
71
+ 'Pass an originator (e.g. "example.com") to the constructor.'
72
+ )
70
73
  }
71
74
 
72
- const res = await (
73
- await httpClient(`${this.baseUrl}/${call}`, {
74
- method: 'POST',
75
- headers: {
76
- Accept: 'application/json',
77
- 'Content-Type': 'application/json',
78
- ...(origin ? { Origin: origin } : {}),
79
- ...(origin ? { Originator: origin } : {}),
80
- },
81
- body: JSON.stringify(args)
82
- })
83
- )
75
+ const res = await httpClient(`${this.baseUrl}/${call}`, {
76
+ method: 'POST',
77
+ headers: {
78
+ Accept: 'application/json',
79
+ 'Content-Type': 'application/json',
80
+ ...(origin ? { Origin: origin } : {}),
81
+ ...(origin ? { Originator: origin } : {}),
82
+ },
83
+ body: JSON.stringify(args)
84
+ })
84
85
 
85
86
  const data = await res.json()
86
87
 
@@ -152,7 +153,7 @@ export default class HTTPWalletJSON implements WalletInterface {
152
153
  keyID?: KeyIDStringUnder800Bytes
153
154
  privileged?: BooleanDefaultFalse
154
155
  privilegedReason?: DescriptionString5to50Bytes
155
- counterparty?: PubKeyHex | 'self' | 'anyone'
156
+ counterparty?: PubKeyHex
156
157
  forSelf?: BooleanDefaultFalse
157
158
  }): Promise<{ publicKey: PubKeyHex }> {
158
159
  return await this.api('getPublicKey', args) as { publicKey: PubKeyHex }
@@ -216,7 +217,7 @@ export default class HTTPWalletJSON implements WalletInterface {
216
217
  protocolID: [SecurityLevel, ProtocolString5To400Bytes]
217
218
  keyID: KeyIDStringUnder800Bytes
218
219
  privilegedReason?: DescriptionString5to50Bytes
219
- counterparty?: PubKeyHex | 'self' | 'anyone'
220
+ counterparty?: PubKeyHex
220
221
  privileged?: BooleanDefaultFalse
221
222
  }): Promise<{ ciphertext: Byte[] }> {
222
223
  return await this.api('encrypt', args) as { ciphertext: Byte[] }
@@ -228,7 +229,7 @@ export default class HTTPWalletJSON implements WalletInterface {
228
229
  protocolID: [SecurityLevel, ProtocolString5To400Bytes]
229
230
  keyID: KeyIDStringUnder800Bytes
230
231
  privilegedReason?: DescriptionString5to50Bytes
231
- counterparty?: PubKeyHex | 'self' | 'anyone'
232
+ counterparty?: PubKeyHex
232
233
  privileged?: BooleanDefaultFalse
233
234
  }): Promise<{ plaintext: Byte[] }> {
234
235
  return await this.api('decrypt', args) as { plaintext: Byte[] }
@@ -240,7 +241,7 @@ export default class HTTPWalletJSON implements WalletInterface {
240
241
  protocolID: [SecurityLevel, ProtocolString5To400Bytes]
241
242
  keyID: KeyIDStringUnder800Bytes
242
243
  privilegedReason?: DescriptionString5to50Bytes
243
- counterparty?: PubKeyHex | 'self' | 'anyone'
244
+ counterparty?: PubKeyHex
244
245
  privileged?: BooleanDefaultFalse
245
246
  }): Promise<{ hmac: Byte[] }> {
246
247
  return await this.api('createHmac', args) as { hmac: Byte[] }
@@ -253,7 +254,7 @@ export default class HTTPWalletJSON implements WalletInterface {
253
254
  protocolID: [SecurityLevel, ProtocolString5To400Bytes]
254
255
  keyID: KeyIDStringUnder800Bytes
255
256
  privilegedReason?: DescriptionString5to50Bytes
256
- counterparty?: PubKeyHex | 'self' | 'anyone'
257
+ counterparty?: PubKeyHex
257
258
  privileged?: BooleanDefaultFalse
258
259
  }): Promise<{ valid: true }> {
259
260
  return await this.api('verifyHmac', args) as { valid: true }
@@ -266,7 +267,7 @@ export default class HTTPWalletJSON implements WalletInterface {
266
267
  protocolID: [SecurityLevel, ProtocolString5To400Bytes]
267
268
  keyID: KeyIDStringUnder800Bytes
268
269
  privilegedReason?: DescriptionString5to50Bytes
269
- counterparty?: PubKeyHex | 'self' | 'anyone'
270
+ counterparty?: PubKeyHex
270
271
  privileged?: BooleanDefaultFalse
271
272
  }): Promise<{ signature: Byte[] }> {
272
273
  return await this.api('createSignature', args) as { signature: Byte[] }
@@ -280,7 +281,7 @@ export default class HTTPWalletJSON implements WalletInterface {
280
281
  protocolID: [SecurityLevel, ProtocolString5To400Bytes]
281
282
  keyID: KeyIDStringUnder800Bytes
282
283
  privilegedReason?: DescriptionString5to50Bytes
283
- counterparty?: PubKeyHex | 'self' | 'anyone'
284
+ counterparty?: PubKeyHex
284
285
  forSelf?: BooleanDefaultFalse
285
286
  privileged?: BooleanDefaultFalse
286
287
  }): Promise<{ valid: true }> {
@@ -19,16 +19,16 @@ export default class ReactNativeWebView extends InvokableWalletBase {
19
19
 
20
20
  constructor(domain: string = '*') {
21
21
  super()
22
- if (typeof window !== 'object') {
23
- throw new Error('The XDM substrate requires a global window object.')
22
+ if (typeof globalThis.window !== 'object') {
23
+ throw new TypeError('The XDM substrate requires a global window object.')
24
24
  }
25
- if (!(window as unknown as ReactNativeWindow).hasOwnProperty("ReactNativeWebView")) {
25
+ if (!(globalThis.window as unknown as ReactNativeWindow).hasOwnProperty("ReactNativeWebView")) {
26
26
  throw new Error(
27
27
  'The window object does not have a ReactNativeWebView property.'
28
28
  )
29
29
  }
30
- if (typeof (window as unknown as ReactNativeWindow).ReactNativeWebView.postMessage !== 'function') {
31
- throw new Error(
30
+ if (typeof (globalThis.window as unknown as ReactNativeWindow).ReactNativeWebView.postMessage !== 'function') {
31
+ throw new TypeError(
32
32
  'The window.ReactNativeWebView property does not seem to support postMessage calls.'
33
33
  )
34
34
  }
@@ -47,8 +47,8 @@ export default class ReactNativeWebView extends InvokableWalletBase {
47
47
  ) {
48
48
  return
49
49
  }
50
- if (typeof window.removeEventListener === 'function') {
51
- window.removeEventListener('message', listener)
50
+ if (typeof globalThis.window.removeEventListener === 'function') {
51
+ globalThis.window.removeEventListener('message', listener)
52
52
  }
53
53
  if (data.status === 'error') {
54
54
  const err = new WalletError(data.description, data.code)
@@ -57,8 +57,8 @@ export default class ReactNativeWebView extends InvokableWalletBase {
57
57
  resolve(data.result)
58
58
  }
59
59
  }
60
- window.addEventListener('message', listener)
61
- ;(window as unknown as ReactNativeWindow).ReactNativeWebView.postMessage(
60
+ globalThis.window.addEventListener('message', listener)
61
+ ;(globalThis.window as unknown as ReactNativeWindow).ReactNativeWebView.postMessage(
62
62
  JSON.stringify({
63
63
  type: 'CWI',
64
64
  isInvocation: true,
@@ -319,26 +319,28 @@ export default class WalletWireProcessor implements WalletWire {
319
319
  }
320
320
 
321
321
  // tx
322
- if (createActionResult.tx != null) {
322
+ if (createActionResult.tx == null) {
323
+ resultWriter.writeInt8(0)
324
+ } else {
323
325
  resultWriter.writeInt8(1)
324
326
  resultWriter.writeVarIntNum(createActionResult.tx.length)
325
327
  resultWriter.write(createActionResult.tx)
326
- } else {
327
- resultWriter.writeInt8(0)
328
328
  }
329
329
 
330
330
  // noSendChange
331
- if (createActionResult.noSendChange != null) {
331
+ if (createActionResult.noSendChange == null) {
332
+ resultWriter.writeVarIntNum(-1)
333
+ } else {
332
334
  resultWriter.writeVarIntNum(createActionResult.noSendChange.length)
333
335
  for (const outpoint of createActionResult.noSendChange) {
334
336
  resultWriter.write(this.encodeOutpoint(outpoint))
335
337
  }
336
- } else {
337
- resultWriter.writeVarIntNum(-1)
338
338
  }
339
339
 
340
340
  // sendWithResults
341
- if (createActionResult.sendWithResults != null) {
341
+ if (createActionResult.sendWithResults == null) {
342
+ resultWriter.writeVarIntNum(-1)
343
+ } else {
342
344
  resultWriter.writeVarIntNum(
343
345
  createActionResult.sendWithResults.length
344
346
  )
@@ -350,12 +352,12 @@ export default class WalletWireProcessor implements WalletWire {
350
352
  else if (result.status === 'failed') statusCode = 3
351
353
  resultWriter.writeInt8(statusCode)
352
354
  }
353
- } else {
354
- resultWriter.writeVarIntNum(-1)
355
355
  }
356
356
 
357
357
  // signableTransaction
358
- if (createActionResult.signableTransaction != null) {
358
+ if (createActionResult.signableTransaction == null) {
359
+ resultWriter.writeInt8(0)
360
+ } else {
359
361
  resultWriter.writeInt8(1)
360
362
  resultWriter.writeVarIntNum(
361
363
  createActionResult.signableTransaction.tx.length
@@ -367,8 +369,6 @@ export default class WalletWireProcessor implements WalletWire {
367
369
  )
368
370
  resultWriter.writeVarIntNum(referenceBytes.length)
369
371
  resultWriter.write(referenceBytes)
370
- } else {
371
- resultWriter.writeInt8(0)
372
372
  }
373
373
 
374
374
  // Return success code and result
@@ -474,16 +474,18 @@ export default class WalletWireProcessor implements WalletWire {
474
474
  }
475
475
 
476
476
  // tx
477
- if (signActionResult.tx != null) {
477
+ if (signActionResult.tx == null) {
478
+ resultWriter.writeInt8(0)
479
+ } else {
478
480
  resultWriter.writeInt8(1)
479
481
  resultWriter.writeVarIntNum(signActionResult.tx.length)
480
482
  resultWriter.write(signActionResult.tx)
481
- } else {
482
- resultWriter.writeInt8(0)
483
483
  }
484
484
 
485
485
  // sendWithResults
486
- if (signActionResult.sendWithResults != null) {
486
+ if (signActionResult.sendWithResults == null) {
487
+ resultWriter.writeVarIntNum(-1)
488
+ } else {
487
489
  resultWriter.writeVarIntNum(
488
490
  signActionResult.sendWithResults.length
489
491
  )
@@ -495,8 +497,6 @@ export default class WalletWireProcessor implements WalletWire {
495
497
  else if (result.status === 'failed') statusCode = 3
496
498
  resultWriter.writeInt8(statusCode)
497
499
  }
498
- } else {
499
- resultWriter.writeVarIntNum(-1)
500
500
  }
501
501
 
502
502
  // Return success code and result
@@ -644,15 +644,15 @@ export default class WalletWireProcessor implements WalletWire {
644
644
  resultWriter.write(descriptionBytes)
645
645
 
646
646
  // labels
647
- if (action.labels !== undefined) {
647
+ if (action.labels === undefined) {
648
+ resultWriter.writeVarIntNum(-1)
649
+ } else {
648
650
  resultWriter.writeVarIntNum(action.labels.length)
649
651
  for (const label of action.labels) {
650
652
  const labelBytes = Utils.toArray(label, 'utf8')
651
653
  resultWriter.writeVarIntNum(labelBytes.length)
652
654
  resultWriter.write(labelBytes)
653
655
  }
654
- } else {
655
- resultWriter.writeVarIntNum(-1)
656
656
  }
657
657
 
658
658
  // version
@@ -662,7 +662,9 @@ export default class WalletWireProcessor implements WalletWire {
662
662
  resultWriter.writeVarIntNum(action.lockTime)
663
663
 
664
664
  // inputs
665
- if (action.inputs !== undefined) {
665
+ if (action.inputs === undefined) {
666
+ resultWriter.writeVarIntNum(-1)
667
+ } else {
666
668
  resultWriter.writeVarIntNum(action.inputs.length)
667
669
  for (const input of action.inputs) {
668
670
  // sourceOutpoint
@@ -672,27 +674,27 @@ export default class WalletWireProcessor implements WalletWire {
672
674
  resultWriter.writeVarIntNum(input.sourceSatoshis)
673
675
 
674
676
  // sourceLockingScript
675
- if (input.sourceLockingScript !== undefined) {
677
+ if (input.sourceLockingScript === undefined) {
678
+ resultWriter.writeVarIntNum(-1)
679
+ } else {
676
680
  const sourceLockingScriptBytes = Utils.toArray(
677
681
  input.sourceLockingScript,
678
682
  'hex'
679
683
  )
680
684
  resultWriter.writeVarIntNum(sourceLockingScriptBytes.length)
681
685
  resultWriter.write(sourceLockingScriptBytes)
682
- } else {
683
- resultWriter.writeVarIntNum(-1)
684
686
  }
685
687
 
686
688
  // unlockingScript
687
- if (input.unlockingScript !== undefined) {
689
+ if (input.unlockingScript === undefined) {
690
+ resultWriter.writeVarIntNum(-1)
691
+ } else {
688
692
  const unlockingScriptBytes = Utils.toArray(
689
693
  input.unlockingScript,
690
694
  'hex'
691
695
  )
692
696
  resultWriter.writeVarIntNum(unlockingScriptBytes.length)
693
697
  resultWriter.write(unlockingScriptBytes)
694
- } else {
695
- resultWriter.writeVarIntNum(-1)
696
698
  }
697
699
 
698
700
  // inputDescription
@@ -706,12 +708,12 @@ export default class WalletWireProcessor implements WalletWire {
706
708
  // sequenceNumber
707
709
  resultWriter.writeVarIntNum(input.sequenceNumber)
708
710
  }
709
- } else {
710
- resultWriter.writeVarIntNum(-1)
711
711
  }
712
712
 
713
713
  // outputs
714
- if (action.outputs !== undefined) {
714
+ if (action.outputs === undefined) {
715
+ resultWriter.writeVarIntNum(-1)
716
+ } else {
715
717
  resultWriter.writeVarIntNum(action.outputs.length)
716
718
  for (const output of action.outputs) {
717
719
  // outputIndex
@@ -721,15 +723,15 @@ export default class WalletWireProcessor implements WalletWire {
721
723
  resultWriter.writeVarIntNum(output.satoshis)
722
724
 
723
725
  // lockingScript
724
- if (output.lockingScript !== undefined) {
726
+ if (output.lockingScript === undefined) {
727
+ resultWriter.writeVarIntNum(-1)
728
+ } else {
725
729
  const lockingScriptBytes = Utils.toArray(
726
730
  output.lockingScript,
727
731
  'hex'
728
732
  )
729
733
  resultWriter.writeVarIntNum(lockingScriptBytes.length)
730
734
  resultWriter.write(lockingScriptBytes)
731
- } else {
732
- resultWriter.writeVarIntNum(-1)
733
735
  }
734
736
 
735
737
  // spendable
@@ -744,40 +746,38 @@ export default class WalletWireProcessor implements WalletWire {
744
746
  resultWriter.write(outputDescriptionBytes)
745
747
 
746
748
  // basket
747
- if (output.basket !== undefined) {
749
+ if (output.basket === undefined) {
750
+ resultWriter.writeVarIntNum(-1)
751
+ } else {
748
752
  const basketBytes = Utils.toArray(output.basket, 'utf8')
749
753
  resultWriter.writeVarIntNum(basketBytes.length)
750
754
  resultWriter.write(basketBytes)
751
- } else {
752
- resultWriter.writeVarIntNum(-1)
753
755
  }
754
756
 
755
757
  // tags
756
- if (output.tags !== undefined) {
758
+ if (output.tags === undefined) {
759
+ resultWriter.writeVarIntNum(-1)
760
+ } else {
757
761
  resultWriter.writeVarIntNum(output.tags.length)
758
762
  for (const tag of output.tags) {
759
763
  const tagBytes = Utils.toArray(tag, 'utf8')
760
764
  resultWriter.writeVarIntNum(tagBytes.length)
761
765
  resultWriter.write(tagBytes)
762
766
  }
763
- } else {
764
- resultWriter.writeVarIntNum(-1)
765
767
  }
766
768
 
767
769
  // customInstructions
768
- if (output.customInstructions !== undefined) {
770
+ if (output.customInstructions === undefined) {
771
+ resultWriter.writeVarIntNum(-1)
772
+ } else {
769
773
  const customInstructionsBytes = Utils.toArray(
770
774
  output.customInstructions,
771
775
  'utf8'
772
776
  )
773
777
  resultWriter.writeVarIntNum(customInstructionsBytes.length)
774
778
  resultWriter.write(customInstructionsBytes)
775
- } else {
776
- resultWriter.writeVarIntNum(-1)
777
779
  }
778
780
  }
779
- } else {
780
- resultWriter.writeVarIntNum(-1)
781
781
  }
782
782
  }
783
783
 
@@ -1000,11 +1000,11 @@ export default class WalletWireProcessor implements WalletWire {
1000
1000
  resultWriter.writeVarIntNum(listOutputsResult.totalOutputs)
1001
1001
 
1002
1002
  // BEEF length and BEEF or -1
1003
- if (listOutputsResult.BEEF != null) {
1003
+ if (listOutputsResult.BEEF == null) {
1004
+ resultWriter.writeVarIntNum(-1)
1005
+ } else {
1004
1006
  resultWriter.writeVarIntNum(listOutputsResult.BEEF.length)
1005
1007
  resultWriter.write(listOutputsResult.BEEF)
1006
- } else {
1007
- resultWriter.writeVarIntNum(-1)
1008
1008
  }
1009
1009
 
1010
1010
  // outputs
@@ -1016,51 +1016,51 @@ export default class WalletWireProcessor implements WalletWire {
1016
1016
  resultWriter.writeVarIntNum(output.satoshis)
1017
1017
 
1018
1018
  // lockingScript
1019
- if (output.lockingScript !== undefined) {
1019
+ if (output.lockingScript === undefined) {
1020
+ resultWriter.writeVarIntNum(-1)
1021
+ } else {
1020
1022
  const lockingScriptBytes = Utils.toArray(
1021
1023
  output.lockingScript,
1022
1024
  'hex'
1023
1025
  )
1024
1026
  resultWriter.writeVarIntNum(lockingScriptBytes.length)
1025
1027
  resultWriter.write(lockingScriptBytes)
1026
- } else {
1027
- resultWriter.writeVarIntNum(-1)
1028
1028
  }
1029
1029
 
1030
1030
  // customInstructions
1031
- if (output.customInstructions !== undefined) {
1031
+ if (output.customInstructions === undefined) {
1032
+ resultWriter.writeVarIntNum(-1)
1033
+ } else {
1032
1034
  const customInstructionsBytes = Utils.toArray(
1033
1035
  output.customInstructions,
1034
1036
  'utf8'
1035
1037
  )
1036
1038
  resultWriter.writeVarIntNum(customInstructionsBytes.length)
1037
1039
  resultWriter.write(customInstructionsBytes)
1038
- } else {
1039
- resultWriter.writeVarIntNum(-1)
1040
1040
  }
1041
1041
 
1042
1042
  // tags
1043
- if (output.tags !== undefined) {
1043
+ if (output.tags === undefined) {
1044
+ resultWriter.writeVarIntNum(-1)
1045
+ } else {
1044
1046
  resultWriter.writeVarIntNum(output.tags.length)
1045
1047
  for (const tag of output.tags) {
1046
1048
  const tagBytes = Utils.toArray(tag, 'utf8')
1047
1049
  resultWriter.writeVarIntNum(tagBytes.length)
1048
1050
  resultWriter.write(tagBytes)
1049
1051
  }
1050
- } else {
1051
- resultWriter.writeVarIntNum(-1)
1052
1052
  }
1053
1053
 
1054
1054
  // labels
1055
- if (output.labels !== undefined) {
1055
+ if (output.labels === undefined) {
1056
+ resultWriter.writeVarIntNum(-1)
1057
+ } else {
1056
1058
  resultWriter.writeVarIntNum(output.labels.length)
1057
1059
  for (const label of output.labels) {
1058
1060
  const labelBytes = Utils.toArray(label, 'utf8')
1059
1061
  resultWriter.writeVarIntNum(labelBytes.length)
1060
1062
  resultWriter.write(labelBytes)
1061
1063
  }
1062
- } else {
1063
- resultWriter.writeVarIntNum(-1)
1064
1064
  }
1065
1065
  }
1066
1066
 
@@ -1098,7 +1098,25 @@ export default class WalletWireProcessor implements WalletWire {
1098
1098
  const identityKeyFlag = paramsReader.readUInt8()
1099
1099
  args.identityKey = identityKeyFlag === 1
1100
1100
 
1101
- if (args.identityKey !== true) {
1101
+ if (args.identityKey === true) {
1102
+ // Deserialize privilege parameters
1103
+ const privilegedFlag = paramsReader.readInt8()
1104
+ if (privilegedFlag === -1) {
1105
+ args.privileged = undefined
1106
+ } else {
1107
+ args.privileged = privilegedFlag === 1
1108
+ }
1109
+
1110
+ const privilegedReasonLength = paramsReader.readInt8()
1111
+ if (privilegedReasonLength === -1) {
1112
+ args.privilegedReason = undefined
1113
+ } else {
1114
+ const privilegedReasonBytes = paramsReader.read(
1115
+ privilegedReasonLength
1116
+ )
1117
+ args.privilegedReason = Utils.toUTF8(privilegedReasonBytes)
1118
+ }
1119
+ } else {
1102
1120
  // Deserialize protocolID
1103
1121
  args.protocolID = this.decodeProtocolID(paramsReader)
1104
1122
 
@@ -1117,13 +1135,13 @@ export default class WalletWireProcessor implements WalletWire {
1117
1135
  }
1118
1136
 
1119
1137
  const privilegedReasonLength = paramsReader.readInt8()
1120
- if (privilegedReasonLength !== -1) {
1138
+ if (privilegedReasonLength === -1) {
1139
+ args.privilegedReason = undefined
1140
+ } else {
1121
1141
  const privilegedReasonBytes = paramsReader.read(
1122
1142
  privilegedReasonLength
1123
1143
  )
1124
1144
  args.privilegedReason = Utils.toUTF8(privilegedReasonBytes)
1125
- } else {
1126
- args.privilegedReason = undefined
1127
1145
  }
1128
1146
 
1129
1147
  // Deserialize forSelf
@@ -1133,24 +1151,6 @@ export default class WalletWireProcessor implements WalletWire {
1133
1151
  } else {
1134
1152
  args.forSelf = forSelfFlag === 1
1135
1153
  }
1136
- } else {
1137
- // Deserialize privilege parameters
1138
- const privilegedFlag = paramsReader.readInt8()
1139
- if (privilegedFlag === -1) {
1140
- args.privileged = undefined
1141
- } else {
1142
- args.privileged = privilegedFlag === 1
1143
- }
1144
-
1145
- const privilegedReasonLength = paramsReader.readInt8()
1146
- if (privilegedReasonLength !== -1) {
1147
- const privilegedReasonBytes = paramsReader.read(
1148
- privilegedReasonLength
1149
- )
1150
- args.privilegedReason = Utils.toUTF8(privilegedReasonBytes)
1151
- } else {
1152
- args.privilegedReason = undefined
1153
- }
1154
1154
  }
1155
1155
 
1156
1156
  // Deserialize seekPermission
@@ -2085,7 +2085,7 @@ export default class WalletWireProcessor implements WalletWire {
2085
2085
 
2086
2086
  private decodeCounterparty(
2087
2087
  reader: Utils.Reader
2088
- ): string | 'self' | 'anyone' | undefined {
2088
+ ): string | undefined {
2089
2089
  const counterpartyFlag = reader.readUInt8()
2090
2090
  if (counterpartyFlag === 11) {
2091
2091
  return 'self'