@bsv/sdk 2.1.0 → 2.1.2

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 (392) 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 +212 -234
  22. package/dist/cjs/src/identity/ContactsManager.js.map +1 -1
  23. package/dist/cjs/src/identity/IdentityClient.js +199 -63
  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 +213 -93
  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 +312 -105
  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/SymmetricKey.js +123 -1
  70. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
  71. package/dist/cjs/src/primitives/TransactionSignature.js +20 -21
  72. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  73. package/dist/cjs/src/primitives/utils.js +39 -46
  74. package/dist/cjs/src/primitives/utils.js.map +1 -1
  75. package/dist/cjs/src/registry/RegistryClient.js +31 -23
  76. package/dist/cjs/src/registry/RegistryClient.js.map +1 -1
  77. package/dist/cjs/src/remittance/RemittanceManager.js +19 -18
  78. package/dist/cjs/src/remittance/RemittanceManager.js.map +1 -1
  79. package/dist/cjs/src/remittance/modules/BasicBRC29.js.map +1 -1
  80. package/dist/cjs/src/script/Script.js +93 -170
  81. package/dist/cjs/src/script/Script.js.map +1 -1
  82. package/dist/cjs/src/script/ScriptEvaluationError.js +2 -2
  83. package/dist/cjs/src/script/ScriptEvaluationError.js.map +1 -1
  84. package/dist/cjs/src/script/Spend.js +14 -12
  85. package/dist/cjs/src/script/Spend.js.map +1 -1
  86. package/dist/cjs/src/script/templates/PushDrop.js +22 -18
  87. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  88. package/dist/cjs/src/script/templates/RPuzzle.js +2 -4
  89. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  90. package/dist/cjs/src/storage/StorageDownloader.js +42 -9
  91. package/dist/cjs/src/storage/StorageDownloader.js.map +1 -1
  92. package/dist/cjs/src/totp/totp.js +1 -1
  93. package/dist/cjs/src/totp/totp.js.map +1 -1
  94. package/dist/cjs/src/transaction/Beef.js +239 -192
  95. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  96. package/dist/cjs/src/transaction/BeefConstants.js +19 -0
  97. package/dist/cjs/src/transaction/BeefConstants.js.map +1 -0
  98. package/dist/cjs/src/transaction/BeefTx.js +12 -12
  99. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  100. package/dist/cjs/src/transaction/MerklePath.js +4 -4
  101. package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
  102. package/dist/cjs/src/transaction/Transaction.js +49 -52
  103. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  104. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js +1 -1
  105. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  106. package/dist/cjs/src/transaction/http/BinaryFetchClient.js +9 -9
  107. package/dist/cjs/src/transaction/http/BinaryFetchClient.js.map +1 -1
  108. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +9 -9
  109. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  110. package/dist/cjs/src/wallet/CachedKeyDeriver.js +1 -1
  111. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
  112. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  113. package/dist/cjs/src/wallet/WalletError.js.map +1 -1
  114. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +5 -4
  115. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  116. package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js +9 -9
  117. package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
  118. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +92 -92
  119. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  120. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +387 -711
  121. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  122. package/dist/cjs/src/wallet/substrates/XDM.js +4 -4
  123. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
  124. package/dist/cjs/src/wallet/substrates/window.CWI.js +2 -2
  125. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  126. package/dist/cjs/src/wallet/validationHelpers.js +9 -9
  127. package/dist/cjs/src/wallet/validationHelpers.js.map +1 -1
  128. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  129. package/dist/esm/src/auth/Peer.js +25 -13
  130. package/dist/esm/src/auth/Peer.js.map +1 -1
  131. package/dist/esm/src/auth/SessionManager.js +4 -7
  132. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  133. package/dist/esm/src/auth/certificates/MasterCertificate.js +1 -1
  134. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  135. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +1 -1
  136. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  137. package/dist/esm/src/auth/clients/AuthFetch.js +32 -32
  138. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  139. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +4 -4
  140. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  141. package/dist/esm/src/compat/ECIES.js +29 -34
  142. package/dist/esm/src/compat/ECIES.js.map +1 -1
  143. package/dist/esm/src/compat/HD.js +9 -4
  144. package/dist/esm/src/compat/HD.js.map +1 -1
  145. package/dist/esm/src/compat/Mnemonic.js +12 -12
  146. package/dist/esm/src/compat/Mnemonic.js.map +1 -1
  147. package/dist/esm/src/identity/ContactsManager.js +212 -234
  148. package/dist/esm/src/identity/ContactsManager.js.map +1 -1
  149. package/dist/esm/src/identity/IdentityClient.js +199 -63
  150. package/dist/esm/src/identity/IdentityClient.js.map +1 -1
  151. package/dist/esm/src/kvstore/GlobalKVStore.js +30 -31
  152. package/dist/esm/src/kvstore/GlobalKVStore.js.map +1 -1
  153. package/dist/esm/src/kvstore/LocalKVStore.js +9 -9
  154. package/dist/esm/src/kvstore/LocalKVStore.js.map +1 -1
  155. package/dist/esm/src/kvstore/kvStoreInterpreter.js +2 -2
  156. package/dist/esm/src/kvstore/kvStoreInterpreter.js.map +1 -1
  157. package/dist/esm/src/messages/SignedMessage.js +1 -1
  158. package/dist/esm/src/messages/SignedMessage.js.map +1 -1
  159. package/dist/esm/src/overlay-tools/Historian.js +1 -1
  160. package/dist/esm/src/overlay-tools/Historian.js.map +1 -1
  161. package/dist/esm/src/overlay-tools/LookupResolver.js +213 -93
  162. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  163. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +74 -146
  164. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  165. package/dist/esm/src/primitives/AESGCM.js +2 -2
  166. package/dist/esm/src/primitives/AESGCM.js.map +1 -1
  167. package/dist/esm/src/primitives/BigNumber.js +167 -154
  168. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  169. package/dist/esm/src/primitives/Curve.js +17 -15
  170. package/dist/esm/src/primitives/Curve.js.map +1 -1
  171. package/dist/esm/src/primitives/ECDSA.js +12 -7
  172. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  173. package/dist/esm/src/primitives/Hash.js +316 -105
  174. package/dist/esm/src/primitives/Hash.js.map +1 -1
  175. package/dist/esm/src/primitives/JacobianPoint.js +8 -8
  176. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
  177. package/dist/esm/src/primitives/K256.js +3 -3
  178. package/dist/esm/src/primitives/K256.js.map +1 -1
  179. package/dist/esm/src/primitives/Point.js +36 -40
  180. package/dist/esm/src/primitives/Point.js.map +1 -1
  181. package/dist/esm/src/primitives/PrivateKey.js +4 -4
  182. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  183. package/dist/esm/src/primitives/PublicKey.js +4 -4
  184. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  185. package/dist/esm/src/primitives/Random.js +10 -14
  186. package/dist/esm/src/primitives/Random.js.map +1 -1
  187. package/dist/esm/src/primitives/ReaderUint8Array.js +6 -6
  188. package/dist/esm/src/primitives/ReaderUint8Array.js.map +1 -1
  189. package/dist/esm/src/primitives/Schnorr.js +1 -1
  190. package/dist/esm/src/primitives/Schnorr.js.map +1 -1
  191. package/dist/esm/src/primitives/Secp256r1.js +2 -1
  192. package/dist/esm/src/primitives/Secp256r1.js.map +1 -1
  193. package/dist/esm/src/primitives/Signature.js +8 -8
  194. package/dist/esm/src/primitives/Signature.js.map +1 -1
  195. package/dist/esm/src/primitives/SymmetricKey.js +123 -1
  196. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
  197. package/dist/esm/src/primitives/TransactionSignature.js +20 -21
  198. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  199. package/dist/esm/src/primitives/utils.js +39 -48
  200. package/dist/esm/src/primitives/utils.js.map +1 -1
  201. package/dist/esm/src/registry/RegistryClient.js +31 -23
  202. package/dist/esm/src/registry/RegistryClient.js.map +1 -1
  203. package/dist/esm/src/remittance/RemittanceManager.js +19 -18
  204. package/dist/esm/src/remittance/RemittanceManager.js.map +1 -1
  205. package/dist/esm/src/remittance/modules/BasicBRC29.js.map +1 -1
  206. package/dist/esm/src/script/Script.js +93 -170
  207. package/dist/esm/src/script/Script.js.map +1 -1
  208. package/dist/esm/src/script/ScriptEvaluationError.js +2 -2
  209. package/dist/esm/src/script/ScriptEvaluationError.js.map +1 -1
  210. package/dist/esm/src/script/Spend.js +14 -12
  211. package/dist/esm/src/script/Spend.js.map +1 -1
  212. package/dist/esm/src/script/templates/PushDrop.js +4 -3
  213. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  214. package/dist/esm/src/script/templates/RPuzzle.js +2 -4
  215. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  216. package/dist/esm/src/storage/StorageDownloader.js +1 -1
  217. package/dist/esm/src/storage/StorageDownloader.js.map +1 -1
  218. package/dist/esm/src/totp/totp.js +1 -1
  219. package/dist/esm/src/totp/totp.js.map +1 -1
  220. package/dist/esm/src/transaction/Beef.js +229 -186
  221. package/dist/esm/src/transaction/Beef.js.map +1 -1
  222. package/dist/esm/src/transaction/BeefConstants.js +16 -0
  223. package/dist/esm/src/transaction/BeefConstants.js.map +1 -0
  224. package/dist/esm/src/transaction/BeefTx.js +3 -3
  225. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  226. package/dist/esm/src/transaction/MerklePath.js +4 -4
  227. package/dist/esm/src/transaction/MerklePath.js.map +1 -1
  228. package/dist/esm/src/transaction/Transaction.js +49 -52
  229. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  230. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js +1 -1
  231. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  232. package/dist/esm/src/transaction/http/BinaryFetchClient.js +9 -9
  233. package/dist/esm/src/transaction/http/BinaryFetchClient.js.map +1 -1
  234. package/dist/esm/src/transaction/http/DefaultHttpClient.js +9 -9
  235. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  236. package/dist/esm/src/wallet/CachedKeyDeriver.js +1 -1
  237. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
  238. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  239. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  240. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +5 -4
  241. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  242. package/dist/esm/src/wallet/substrates/ReactNativeWebView.js +9 -9
  243. package/dist/esm/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
  244. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +92 -92
  245. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  246. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +387 -711
  247. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  248. package/dist/esm/src/wallet/substrates/XDM.js +4 -4
  249. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
  250. package/dist/esm/src/wallet/substrates/window.CWI.js +2 -2
  251. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  252. package/dist/esm/src/wallet/validationHelpers.js +9 -9
  253. package/dist/esm/src/wallet/validationHelpers.js.map +1 -1
  254. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  255. package/dist/types/src/auth/Peer.d.ts +13 -0
  256. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  257. package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
  258. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  259. package/dist/types/src/compat/ECIES.d.ts.map +1 -1
  260. package/dist/types/src/compat/HD.d.ts.map +1 -1
  261. package/dist/types/src/identity/ContactsManager.d.ts +31 -2
  262. package/dist/types/src/identity/ContactsManager.d.ts.map +1 -1
  263. package/dist/types/src/identity/IdentityClient.d.ts +75 -10
  264. package/dist/types/src/identity/IdentityClient.d.ts.map +1 -1
  265. package/dist/types/src/kvstore/GlobalKVStore.d.ts.map +1 -1
  266. package/dist/types/src/overlay-tools/LookupResolver.d.ts +73 -2
  267. package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
  268. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +18 -3
  269. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
  270. package/dist/types/src/primitives/BigNumber.d.ts +13 -3
  271. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  272. package/dist/types/src/primitives/Curve.d.ts.map +1 -1
  273. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  274. package/dist/types/src/primitives/Hash.d.ts +22 -17
  275. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  276. package/dist/types/src/primitives/JacobianPoint.d.ts +3 -1
  277. package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
  278. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  279. package/dist/types/src/primitives/Random.d.ts +2 -2
  280. package/dist/types/src/primitives/Random.d.ts.map +1 -1
  281. package/dist/types/src/primitives/ReaderUint8Array.d.ts.map +1 -1
  282. package/dist/types/src/primitives/Schnorr.d.ts +2 -1
  283. package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
  284. package/dist/types/src/primitives/Secp256r1.d.ts.map +1 -1
  285. package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
  286. package/dist/types/src/primitives/utils.d.ts +2 -4
  287. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  288. package/dist/types/src/registry/RegistryClient.d.ts.map +1 -1
  289. package/dist/types/src/remittance/RemittanceManager.d.ts.map +1 -1
  290. package/dist/types/src/remittance/modules/BasicBRC29.d.ts.map +1 -1
  291. package/dist/types/src/script/Script.d.ts +15 -8
  292. package/dist/types/src/script/Script.d.ts.map +1 -1
  293. package/dist/types/src/script/Spend.d.ts.map +1 -1
  294. package/dist/types/src/script/templates/PushDrop.d.ts +3 -1
  295. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  296. package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
  297. package/dist/types/src/transaction/Beef.d.ts +46 -8
  298. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  299. package/dist/types/src/transaction/BeefConstants.d.ts +15 -0
  300. package/dist/types/src/transaction/BeefConstants.d.ts.map +1 -0
  301. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  302. package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
  303. package/dist/types/src/wallet/KeyDeriver.d.ts +1 -1
  304. package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
  305. package/dist/types/src/wallet/Wallet.interfaces.d.ts +18 -3
  306. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  307. package/dist/types/src/wallet/WalletClient.d.ts +8 -8
  308. package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
  309. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +7 -7
  310. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  311. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts +36 -7
  312. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
  313. package/dist/types/src/wallet/substrates/window.CWI.d.ts +9 -9
  314. package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
  315. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  316. package/dist/umd/bundle.js +3 -3
  317. package/package.json +1 -1
  318. package/src/auth/Peer.ts +26 -13
  319. package/src/auth/SessionManager.ts +4 -7
  320. package/src/auth/certificates/MasterCertificate.ts +1 -1
  321. package/src/auth/certificates/__tests/CompletedProtoWallet.ts +1 -1
  322. package/src/auth/clients/AuthFetch.ts +41 -41
  323. package/src/auth/transports/SimplifiedFetchTransport.ts +4 -4
  324. package/src/compat/ECIES.ts +29 -34
  325. package/src/compat/HD.ts +10 -5
  326. package/src/compat/Mnemonic.ts +11 -11
  327. package/src/compat/__tests/HD.test.ts +19 -0
  328. package/src/identity/ContactsManager.ts +236 -258
  329. package/src/identity/IdentityClient.ts +244 -71
  330. package/src/identity/__tests/IdentityClient.additional.test.ts +150 -1
  331. package/src/identity/__tests/IdentityClient.test.ts +27 -3
  332. package/src/kvstore/GlobalKVStore.ts +31 -32
  333. package/src/kvstore/LocalKVStore.ts +8 -8
  334. package/src/kvstore/kvStoreInterpreter.ts +2 -2
  335. package/src/messages/SignedMessage.ts +1 -1
  336. package/src/overlay-tools/Historian.ts +1 -1
  337. package/src/overlay-tools/LookupResolver.ts +264 -90
  338. package/src/overlay-tools/SHIPBroadcaster.ts +92 -168
  339. package/src/primitives/AESGCM.ts +2 -2
  340. package/src/primitives/BigNumber.ts +122 -113
  341. package/src/primitives/Curve.ts +16 -15
  342. package/src/primitives/ECDSA.ts +10 -8
  343. package/src/primitives/Hash.ts +381 -146
  344. package/src/primitives/JacobianPoint.ts +13 -11
  345. package/src/primitives/K256.ts +3 -3
  346. package/src/primitives/Point.ts +35 -38
  347. package/src/primitives/PrivateKey.ts +3 -3
  348. package/src/primitives/PublicKey.ts +3 -3
  349. package/src/primitives/Random.ts +11 -14
  350. package/src/primitives/ReaderUint8Array.ts +7 -7
  351. package/src/primitives/Schnorr.ts +2 -1
  352. package/src/primitives/Secp256r1.ts +2 -1
  353. package/src/primitives/Signature.ts +8 -8
  354. package/src/primitives/SymmetricKey.ts +145 -1
  355. package/src/primitives/TransactionSignature.ts +16 -16
  356. package/src/primitives/__tests/Hash.additional.test.ts +65 -0
  357. package/src/primitives/__tests/Hash.test.ts +6 -1
  358. package/src/primitives/utils.ts +37 -47
  359. package/src/registry/RegistryClient.ts +25 -25
  360. package/src/remittance/RemittanceManager.ts +17 -18
  361. package/src/remittance/modules/BasicBRC29.ts +2 -5
  362. package/src/script/Script.ts +114 -170
  363. package/src/script/ScriptEvaluationError.ts +2 -2
  364. package/src/script/Spend.ts +14 -15
  365. package/src/script/templates/PushDrop.ts +5 -3
  366. package/src/script/templates/RPuzzle.ts +2 -4
  367. package/src/storage/StorageDownloader.ts +1 -1
  368. package/src/totp/totp.ts +1 -1
  369. package/src/transaction/Beef.ts +241 -203
  370. package/src/transaction/BeefConstants.ts +16 -0
  371. package/src/transaction/BeefTx.ts +3 -3
  372. package/src/transaction/MerklePath.ts +4 -4
  373. package/src/transaction/Transaction.ts +48 -51
  374. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +1 -1
  375. package/src/transaction/http/BinaryFetchClient.ts +8 -8
  376. package/src/transaction/http/DefaultHttpClient.ts +8 -8
  377. package/src/wallet/CachedKeyDeriver.ts +8 -6
  378. package/src/wallet/KeyDeriver.ts +1 -1
  379. package/src/wallet/Wallet.interfaces.ts +18 -5
  380. package/src/wallet/WalletClient.ts +9 -9
  381. package/src/wallet/WalletError.ts +1 -1
  382. package/src/wallet/__tests/WalletClient.substrate.test.ts +10 -6
  383. package/src/wallet/substrates/HTTPWalletJSON.ts +22 -21
  384. package/src/wallet/substrates/ReactNativeWebView.ts +9 -9
  385. package/src/wallet/substrates/WalletWireProcessor.ts +83 -83
  386. package/src/wallet/substrates/WalletWireTransceiver.ts +528 -938
  387. package/src/wallet/substrates/XDM.ts +4 -4
  388. package/src/wallet/substrates/__tests/HTTPWalletJSON.test.ts +38 -25
  389. package/src/wallet/substrates/__tests/ReactNativeWebView.test.ts +174 -0
  390. package/src/wallet/substrates/__tests/window.CWI.test.ts +256 -0
  391. package/src/wallet/substrates/window.CWI.ts +11 -11
  392. package/src/wallet/validationHelpers.ts +9 -9
@@ -1,8 +1,11 @@
1
1
  // @ts-nocheck
2
2
  import ReductionContext from './ReductionContext.js'
3
3
 
4
+ /** Comparison result: -1 (less than), 0 (equal), or 1 (greater than). */
5
+ type CompareResult = 1 | 0 | -1
6
+
4
7
  const BufferCtor =
5
- typeof globalThis !== 'undefined' ? (globalThis as any).Buffer : undefined
8
+ typeof globalThis === 'undefined' ? undefined : (globalThis as any).Buffer
6
9
  const CAN_USE_BUFFER =
7
10
  BufferCtor != null && typeof BufferCtor.from === 'function'
8
11
  const HEX_CHAR_TO_VALUE = new Int8Array(256).fill(-1)
@@ -69,9 +72,9 @@ export default class BigNumber {
69
72
  private static readonly MAX_IMULN_ARG: number = 0x4000000 - 1
70
73
  private static readonly MAX_NUMBER_CONSTRUCTOR_MAG_BIGINT: bigint = (1n << 53n) - 1n
71
74
 
72
- private _magnitude: bigint
73
- private _sign: 0 | 1
74
- private _nominalWordLength: number
75
+ private _magnitude: bigint = 0n
76
+ private _sign: 0 | 1 = 0
77
+ private _nominalWordLength: number = 1
75
78
 
76
79
  /**
77
80
  * Reduction context of the big number.
@@ -140,7 +143,7 @@ export default class BigNumber {
140
143
  let newMagnitude = 0n
141
144
  const len = newWords.length > 0 ? newWords.length : 1
142
145
  for (let i = len - 1; i >= 0; i--) {
143
- const wordVal = newWords[i] === undefined ? 0 : newWords[i]
146
+ const wordVal = newWords[i] ?? 0
144
147
  newMagnitude = (newMagnitude << BigNumber.WORD_SIZE_BIGINT) | BigInt(wordVal & Number(BigNumber.WORD_MASK))
145
148
  }
146
149
  this._magnitude = newMagnitude
@@ -207,77 +210,84 @@ export default class BigNumber {
207
210
  base: number | 'be' | 'le' | 'hex' = 10,
208
211
  endian: 'be' | 'le' = 'be'
209
212
  ) {
210
- this._magnitude = 0n
211
- this._sign = 0
212
- this._nominalWordLength = 1
213
213
  this.red = null
214
-
215
- if (number === undefined) number = 0
214
+ number ??= 0
216
215
 
217
216
  if (number === null) { this._initializeState(0n, 0); return }
218
217
  if (typeof number === 'bigint') { this._initializeState(number < 0n ? -number : number, number < 0n ? 1 : 0); this.normSign(); return }
219
218
 
220
219
  let effectiveBase: number | 'hex' = base
221
220
  let effectiveEndian: 'be' | 'le' = endian
222
-
223
221
  if (base === 'le' || base === 'be') { effectiveEndian = base; effectiveBase = 10 }
224
222
 
225
223
  if (typeof number === 'number') { this.initNumber(number, effectiveEndian); return }
226
224
  if (Array.isArray(number)) { this.initArray(number, effectiveEndian); return }
225
+ if (typeof number === 'string') { this._initFromString(number, effectiveBase, effectiveEndian); return }
227
226
 
228
- if (typeof number === 'string') {
229
- if (effectiveBase === 'hex') effectiveBase = 16
230
- this.assert(typeof effectiveBase === 'number' && effectiveBase === (effectiveBase | 0) && effectiveBase >= 2 && effectiveBase <= 36, 'Base must be an integer between 2 and 36')
231
- const originalNumberStr = number.toString().replace(/\s+/g, '')
232
- let start = 0; let sign = 0
233
- if (originalNumberStr.startsWith('-')) { start++; sign = 1 } else if (originalNumberStr.startsWith('+')) { start++ }
234
-
235
- const numStr = originalNumberStr.substring(start)
236
- if (numStr.length === 0) { this._initializeState(0n, (sign === 1 && originalNumberStr.startsWith('-')) ? 1 : 0); this.normSign(); return }
237
-
238
- if (effectiveBase === 16) {
239
- let tempMagnitude: bigint
240
- if (effectiveEndian === 'le') {
241
- const bytes: number[] = []; let hexStr = numStr
242
- if (hexStr.length % 2 !== 0) hexStr = '0' + hexStr
243
- for (let i = 0; i < hexStr.length; i += 2) {
244
- const byteHex = hexStr.substring(i, i + 2); const byteVal = parseInt(byteHex, 16)
245
- if (isNaN(byteVal)) throw new Error('Invalid character in ' + hexStr)
246
- bytes.push(byteVal)
247
- }
248
- this.initArray(bytes, 'le'); this._sign = sign; this.normSign(); return
249
- } else {
250
- try { tempMagnitude = BigInt('0x' + numStr) } catch (e) { throw new Error('Invalid character in ' + numStr) }
251
- }
252
- this._initializeState(tempMagnitude, sign); this.normSign()
253
- } else {
254
- try {
255
- this._parseBaseString(numStr, effectiveBase)
256
- this._sign = sign; this.normSign()
257
- if (effectiveEndian === 'le') {
258
- const currentSign = this._sign
259
- this.initArray(this.toArray('be'), 'le')
260
- this._sign = currentSign; this.normSign()
261
- }
262
- } catch (err) {
263
- const error = err as Error
264
- if (
265
- error.message.includes('Invalid character in string') ||
266
- error.message.includes('Invalid digit for base') ||
267
- error.message.startsWith('Invalid character:')
268
- ) {
269
- throw new Error('Invalid character')
270
- }
271
- throw error
272
- }
273
- }
274
- } else if (number !== 0) {
227
+ if (number !== 0) {
275
228
  this.assert(false, 'Unsupported input type for BigNumber constructor')
276
229
  } else {
277
230
  this._initializeState(0n, 0)
278
231
  }
279
232
  }
280
233
 
234
+ private _initFromString (number: string, effectiveBase: number | 'hex', effectiveEndian: 'be' | 'le'): void {
235
+ if (effectiveBase === 'hex') effectiveBase = 16
236
+ // eslint-disable-next-line no-bitwise -- ToInt32 (ECMA-262); required for integer base validation.
237
+ this.assert(typeof effectiveBase === 'number' && effectiveBase === (effectiveBase | 0) && effectiveBase >= 2 && effectiveBase <= 36, 'Base must be an integer between 2 and 36')
238
+ const originalNumberStr = number.toString().replace(/\s+/g, '')
239
+ let start = 0; let sign = 0
240
+ if (originalNumberStr.startsWith('-')) { start++; sign = 1 } else if (originalNumberStr.startsWith('+')) { start++ }
241
+
242
+ const numStr = originalNumberStr.substring(start)
243
+ if (numStr.length === 0) { this._initializeState(0n, (sign === 1 && originalNumberStr.startsWith('-')) ? 1 : 0); this.normSign(); return }
244
+
245
+ if (effectiveBase === 16) {
246
+ this._initFromHexString(numStr, sign, effectiveEndian)
247
+ } else {
248
+ this._initFromNonHexString(numStr, effectiveBase as number, sign, effectiveEndian)
249
+ }
250
+ }
251
+
252
+ private _initFromHexString (numStr: string, sign: number, effectiveEndian: 'be' | 'le'): void {
253
+ if (effectiveEndian === 'le') {
254
+ const bytes: number[] = []; let hexStr = numStr
255
+ if (hexStr.length % 2 !== 0) hexStr = '0' + hexStr
256
+ for (let i = 0; i < hexStr.length; i += 2) {
257
+ const byteHex = hexStr.substring(i, i + 2); const byteVal = Number.parseInt(byteHex, 16)
258
+ if (Number.isNaN(byteVal)) throw new Error('Invalid character in ' + hexStr)
259
+ bytes.push(byteVal)
260
+ }
261
+ this.initArray(bytes, 'le'); this._sign = sign; this.normSign()
262
+ } else {
263
+ let tempMagnitude: bigint
264
+ try { tempMagnitude = BigInt('0x' + numStr) } catch (_bigIntParseError) { throw new Error('Invalid character in ' + numStr) }
265
+ this._initializeState(tempMagnitude, sign); this.normSign()
266
+ }
267
+ }
268
+
269
+ private _initFromNonHexString (numStr: string, base: number, sign: number, effectiveEndian: 'be' | 'le'): void {
270
+ try {
271
+ this._parseBaseString(numStr, base)
272
+ this._sign = sign; this.normSign()
273
+ if (effectiveEndian === 'le') {
274
+ const currentSign = this._sign
275
+ this.initArray(this.toArray('be'), 'le')
276
+ this._sign = currentSign; this.normSign()
277
+ }
278
+ } catch (err) {
279
+ const error = err as Error
280
+ if (
281
+ error.message.includes('Invalid character in string') ||
282
+ error.message.includes('Invalid digit for base') ||
283
+ error.message.startsWith('Invalid character:')
284
+ ) {
285
+ throw new Error('Invalid character')
286
+ }
287
+ throw error
288
+ }
289
+ }
290
+
281
291
  private _bigIntToStringInBase (num: bigint, base: number): string {
282
292
  if (num === 0n) return '0'
283
293
  if (base < 2 || base > 36) throw new Error('Base must be between 2 and 36')
@@ -334,7 +344,7 @@ export default class BigNumber {
334
344
  private _parseBaseWord (str: string, base: number): number {
335
345
  let r = 0
336
346
  for (let i = 0; i < str.length; i++) {
337
- const charCode = str.charCodeAt(i)
347
+ const charCode = str.codePointAt(i) as number
338
348
  let digitVal
339
349
  if (charCode >= 48 && charCode <= 57) digitVal = charCode - 48
340
350
  else if (charCode >= 65 && charCode <= 90) digitVal = charCode - 65 + 10
@@ -383,7 +393,7 @@ export default class BigNumber {
383
393
  if (bytes.length === 0) { this._initializeState(0n, 0); return this }
384
394
  let magnitude = 0n
385
395
  if (endian === 'be') {
386
- for (let i = 0; i < bytes.length; i++) magnitude = (magnitude << 8n) | BigInt(bytes[i] & 0xff)
396
+ for (const byte of bytes) magnitude = (magnitude << 8n) | BigInt(byte & 0xff)
387
397
  } else {
388
398
  for (let i = bytes.length - 1; i >= 0; i--) magnitude = (magnitude << 8n) | BigInt(bytes[i] & 0xff)
389
399
  }
@@ -402,8 +412,8 @@ export default class BigNumber {
402
412
  }
403
413
 
404
414
  strip (): this { this._finishInitialization(); return this.normSign() }
405
- normSign (): this { if (this._magnitude === 0n) this._sign = 0; return this }
406
- inspect (): string { return (this.red !== null ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>' }
415
+ normSign (): this { if (this._magnitude === 0n) { this._sign = 0 } return this }
416
+ inspect (): string { return (this.red === null ? '<BN: ' : '<BN-R: ') + this.toString(16) + '>' }
407
417
 
408
418
  private _getMinimalHex (): string {
409
419
  if (this._magnitude === 0n) return '0'
@@ -464,27 +474,22 @@ export default class BigNumber {
464
474
  while (tempMag > 0n) {
465
475
  const remainder = tempMag % groupBaseBigInt
466
476
  tempMag /= groupBaseBigInt
467
-
468
477
  const chunkStr = this._bigIntToStringInBase(remainder, base)
469
-
470
- if (tempMag > 0n) {
471
- const zerosToPrepend = groupSize - chunkStr.length
472
- if (zerosToPrepend > 0 && zerosToPrepend < BigNumber.zeros.length) {
473
- out = BigNumber.zeros[zerosToPrepend] + chunkStr + out
474
- } else if (zerosToPrepend > 0) {
475
- out = '0'.repeat(zerosToPrepend) + chunkStr + out
476
- } else {
477
- out = chunkStr + out
478
- }
479
- } else {
480
- out = chunkStr + out
481
- }
478
+ out = (tempMag > 0n ? this._zeroPaddedChunk(chunkStr, groupSize) : chunkStr) + out
482
479
  }
483
480
 
484
481
  if (padding > 0) { while (out.length < padding) out = '0' + out }
485
482
  return (this._sign === 1 ? '-' : '') + out
486
483
  }
487
484
 
485
+ /** Returns a chunk string zero-padded to groupSize (used by toBaseString for interior chunks). */
486
+ private _zeroPaddedChunk (chunkStr: string, groupSize: number): string {
487
+ const zerosToPrepend = groupSize - chunkStr.length
488
+ if (zerosToPrepend <= 0) return chunkStr
489
+ if (zerosToPrepend < BigNumber.zeros.length) return BigNumber.zeros[zerosToPrepend] + chunkStr
490
+ return '0'.repeat(zerosToPrepend) + chunkStr
491
+ }
492
+
488
493
  /**
489
494
  * Converts the BigNumber instance to a JavaScript number.
490
495
  * Please note that JavaScript numbers are only precise up to 53 bits.
@@ -568,7 +573,7 @@ export default class BigNumber {
568
573
  * @method bitLength
569
574
  * @returns The bit length of the BigNumber.
570
575
  */
571
- bitLength (): number { if (this._magnitude === 0n) return 0; return this._magnitude.toString(2).length }
576
+ bitLength (): number { if (this._magnitude === 0n) { return 0 } return this._magnitude.toString(2).length }
572
577
  /**
573
578
  * Converts a BigNumber to an array of bits.
574
579
  *
@@ -582,7 +587,7 @@ export default class BigNumber {
582
587
  const w = new Array<0 | 1>(len)
583
588
  const mag = num._magnitude
584
589
  for (let bit = 0; bit < len; bit++) {
585
- w[bit] = ((mag >> BigInt(bit)) & 1n) !== 0n ? 1 : 0
590
+ w[bit] = ((mag >> BigInt(bit)) & 1n) === 0n ? 0 : 1
586
591
  }
587
592
  return w
588
593
  }
@@ -620,7 +625,7 @@ export default class BigNumber {
620
625
  * @method byteLength
621
626
  * @returns The byte length of the BigNumber.
622
627
  */
623
- byteLength (): number { if (this._magnitude === 0n) return 0; return Math.ceil(this.bitLength() / 8) }
628
+ byteLength (): number { if (this._magnitude === 0n) { return 0 } return Math.ceil(this.bitLength() / 8) }
624
629
 
625
630
  private _getSignedValue (): bigint { return this._sign === 1 ? -this._magnitude : this._magnitude }
626
631
 
@@ -662,7 +667,7 @@ export default class BigNumber {
662
667
 
663
668
  isNeg (): boolean { return this._sign === 1 && this._magnitude !== 0n }
664
669
  neg (): BigNumber { return this.clone().ineg() }
665
- ineg (): this { if (this._magnitude !== 0n) this._sign = this._sign === 1 ? 0 : 1; return this }
670
+ ineg (): this { if (this._magnitude !== 0n) { this._sign = this._sign === 1 ? 0 : 1 } return this }
666
671
 
667
672
  private _iuop (num: BigNumber, op: (a: bigint, b: bigint) => bigint, isXor: boolean = false): this {
668
673
  const newMag = op(this._magnitude, num._magnitude)
@@ -682,7 +687,7 @@ export default class BigNumber {
682
687
  ior (num: BigNumber): this { return this._iop(num, (a, b) => a | b) }
683
688
  iand (num: BigNumber): this { return this._iop(num, (a, b) => a & b) }
684
689
  ixor (num: BigNumber): this { return this._iop(num, (a, b) => a ^ b, true) }
685
- private _uop_new (num: BigNumber, opName: 'iuor' | 'iuand' | 'iuxor'): BigNumber { if (this.length >= num.length) return this.clone()[opName](num); return num.clone()[opName](this) }
690
+ private _uop_new (num: BigNumber, opName: 'iuor' | 'iuand' | 'iuxor'): BigNumber { if (this.length >= num.length) { return this.clone()[opName](num) } return num.clone()[opName](this) }
686
691
  or (num: BigNumber): BigNumber { this.assert(this._sign === 0 && num._sign === 0); return this._uop_new(num, 'iuor') }
687
692
  uor (num: BigNumber): BigNumber { return this._uop_new(num, 'iuor') }
688
693
  and (num: BigNumber): BigNumber { this.assert(this._sign === 0 && num._sign === 0); return this._uop_new(num, 'iuand') }
@@ -848,22 +853,27 @@ export default class BigNumber {
848
853
  this.assert(!num.isZero(), 'Division by zero')
849
854
  if (this.isZero()) {
850
855
  const z = new BigNumber(0n)
851
- return { div: mode !== 'mod' ? z : null, mod: mode !== 'div' ? z : null }
856
+ return { div: mode === 'mod' ? null : z, mod: mode === 'div' ? null : z }
852
857
  }
853
858
  const tV = this._getSignedValue()
854
859
  const nV = num._getSignedValue()
855
- let dV: bigint | null = null
856
- let mV: bigint | null = null
857
- if (mode !== 'mod') dV = tV / nV
858
- if (mode !== 'div') {
859
- mV = tV % nV
860
- if (positive === true && mV < 0n) mV += nV < 0n ? -nV : nV
861
- }
862
- const rd = dV !== null ? new BigNumber(0n) : null
863
- if (rd !== null && dV !== null) rd._setValueFromSigned(dV)
864
- const rm = mV !== null ? new BigNumber(0n) : null
865
- if (rm !== null && mV !== null) rm._setValueFromSigned(mV)
866
- return { div: rd, mod: rm }
860
+ const dV = mode !== 'mod' ? tV / nV : null
861
+ const mV = this._computeMod(tV, nV, mode, positive)
862
+ return { div: this._bigNumberFromSigned(dV), mod: this._bigNumberFromSigned(mV) }
863
+ }
864
+
865
+ private _computeMod (tV: bigint, nV: bigint, mode?: 'div' | 'mod', positive?: boolean): bigint | null {
866
+ if (mode === 'div') return null
867
+ let mV = tV % nV
868
+ if (positive === true && mV < 0n) mV += nV < 0n ? -nV : nV
869
+ return mV
870
+ }
871
+
872
+ private _bigNumberFromSigned (v: bigint | null): BigNumber | null {
873
+ if (v === null) return null
874
+ const r = new BigNumber(0n)
875
+ r._setValueFromSigned(v)
876
+ return r
867
877
  }
868
878
 
869
879
  div (num: BigNumber): BigNumber {
@@ -985,9 +995,9 @@ export default class BigNumber {
985
995
  andln (num: number): number { this.assert(num >= 0); return Number(this._magnitude & BigInt(num)) }
986
996
  bincn (bit: number): this { this.assert(typeof bit === 'number' && bit >= 0); const BVal = 1n << BigInt(bit); this._setValueFromSigned(this._getSignedValue() + BVal); return this }
987
997
  isZero (): boolean { return this._magnitude === 0n }
988
- cmpn (num: number): 1 | 0 | -1 { this.assert(Math.abs(num) <= BigNumber.MAX_IMULN_ARG, 'Number is too big'); const tV = this._getSignedValue(); const nV = BigInt(num); if (tV < nV) return -1; if (tV > nV) return 1; return 0 }
989
- cmp (num: BigNumber): 1 | 0 | -1 { const tV = this._getSignedValue(); const nV = num._getSignedValue(); if (tV < nV) return -1; if (tV > nV) return 1; return 0 }
990
- ucmp (num: BigNumber): 1 | 0 | -1 { if (this._magnitude < num._magnitude) return -1; if (this._magnitude > num._magnitude) return 1; return 0 }
998
+ cmpn (num: number): CompareResult { this.assert(Math.abs(num) <= BigNumber.MAX_IMULN_ARG, 'Number is too big'); const tV = this._getSignedValue(); const nV = BigInt(num); if (tV < nV) { return -1 } if (tV > nV) { return 1 } return 0 }
999
+ cmp (num: BigNumber): CompareResult { const tV = this._getSignedValue(); const nV = num._getSignedValue(); if (tV < nV) { return -1 } if (tV > nV) { return 1 } return 0 }
1000
+ ucmp (num: BigNumber): CompareResult { if (this._magnitude < num._magnitude) { return -1 } if (this._magnitude > num._magnitude) { return 1 } return 0 }
991
1001
  gtn (num: number): boolean { return this.cmpn(num) === 1 } gt (num: BigNumber): boolean { return this.cmp(num) === 1 } gten (num: number): boolean { return this.cmpn(num) >= 0 } gte (num: BigNumber): boolean { return this.cmp(num) >= 0 }
992
1002
  ltn (num: number): boolean { return this.cmpn(num) === -1 } lt (num: BigNumber): boolean { return this.cmp(num) === -1 } lten (num: number): boolean { return this.cmpn(num) <= 0 } lte (num: BigNumber): boolean { return this.cmp(num) <= 0 }
993
1003
  eqn (num: number): boolean { return this.cmpn(num) === 0 } eq (num: BigNumber): boolean { return this.cmp(num) === 0 }
@@ -1110,17 +1120,16 @@ export default class BigNumber {
1110
1120
  beBytes[0] &= 0x7f
1111
1121
  }
1112
1122
 
1113
- let magnitude = 0n
1123
+ let hexStr: string
1114
1124
  if (CAN_USE_BUFFER) {
1115
- const hex = BufferCtor.from(beBytes).toString('hex') as string
1116
- magnitude = hex.length === 0 ? 0n : BigInt('0x' + hex)
1125
+ hexStr = BufferCtor.from(beBytes).toString('hex') as string
1117
1126
  } else {
1118
- let hex = ''
1127
+ hexStr = ''
1119
1128
  for (const byte of beBytes) {
1120
- hex += byte < 16 ? '0' + byte.toString(16) : byte.toString(16)
1129
+ hexStr += byte < 16 ? '0' + byte.toString(16) : byte.toString(16)
1121
1130
  }
1122
- magnitude = hex.length === 0 ? 0n : BigInt('0x' + hex)
1123
1131
  }
1132
+ const magnitude = hexStr.length === 0 ? 0n : BigInt('0x' + hexStr)
1124
1133
 
1125
1134
  const r = new BigNumber(0n)
1126
1135
  r._initializeState(magnitude, sign)
@@ -1145,23 +1154,23 @@ export default class BigNumber {
1145
1154
  const byteLen = hex.length / 2
1146
1155
  const bytes = new Array(byteLen)
1147
1156
  for (let i = 0, j = 0; i < hex.length; i += 2) {
1148
- const high = HEX_CHAR_TO_VALUE[hex.charCodeAt(i)]
1149
- const low = HEX_CHAR_TO_VALUE[hex.charCodeAt(i + 1)]
1157
+ const high = HEX_CHAR_TO_VALUE[hex.codePointAt(i) as number]
1158
+ const low = HEX_CHAR_TO_VALUE[hex.codePointAt(i + 1) as number]
1150
1159
  bytes[j++] = ((high & 0xf) << 4) | (low & 0xf)
1151
1160
  }
1152
1161
 
1153
1162
  let result: number[]
1154
1163
  if (this._sign === 1) {
1155
- if ((bytes[0] & 0x80) !== 0) {
1156
- result = [0x80, ...bytes]
1157
- } else {
1164
+ if ((bytes[0] & 0x80) === 0) {
1158
1165
  result = bytes.slice()
1159
1166
  result[0] |= 0x80
1167
+ } else {
1168
+ result = [0x80, ...bytes]
1160
1169
  }
1161
- } else if ((bytes[0] & 0x80) !== 0) {
1162
- result = [0x00, ...bytes]
1163
- } else {
1170
+ } else if ((bytes[0] & 0x80) === 0) {
1164
1171
  result = bytes.slice()
1172
+ } else {
1173
+ result = [0x00, ...bytes]
1165
1174
  }
1166
1175
 
1167
1176
  return endian === 'little' ? result.reverse() : result
@@ -1279,8 +1288,8 @@ export default class BigNumber {
1279
1288
  if (maxNumSize !== undefined && num.length > maxNumSize) throw new Error('script number overflow')
1280
1289
  if (num.length === 0) return new BigNumber(0n)
1281
1290
  if (requireMinimal) {
1282
- if ((num[num.length - 1] & 0x7f) === 0) {
1283
- if (num.length <= 1 || (num[num.length - 2] & 0x80) === 0) {
1291
+ if ((num.at(-1) & 0x7f) === 0) {
1292
+ if (num.length <= 1 || (num.at(-2) & 0x80) === 0) {
1284
1293
  throw new Error('non-minimally encoded script number')
1285
1294
  }
1286
1295
  }
@@ -131,9 +131,10 @@ export default class Curve {
131
131
  static cachedProperty (obj, name: string, computer): void {
132
132
  const key = '_' + name
133
133
  obj.prototype[name] = function cachedProperty () {
134
- const r =
135
- this[key] !== undefined ? this[key] : (this[key] = computer.call(this))
136
- return r
134
+ if (this[key] === undefined) {
135
+ this[key] = computer.call(this)
136
+ }
137
+ return this[key]
137
138
  }
138
139
  }
139
140
 
@@ -146,11 +147,11 @@ export default class Curve {
146
147
  }
147
148
 
148
149
  constructor () {
149
- if (typeof globalCurve !== 'undefined') {
150
- return globalCurve
151
- } else {
152
- /* eslint-disable @typescript-eslint/no-this-alias */
150
+ if (globalCurve === undefined) {
151
+ /* eslint-disable-next-line @typescript-eslint/no-this-alias */
153
152
  globalCurve = this
153
+ } else {
154
+ return globalCurve
154
155
  }
155
156
 
156
157
  const precomputed = {
@@ -1015,9 +1016,7 @@ export default class Curve {
1015
1016
  let beta: BigNumber
1016
1017
  let lambda: BigNumber
1017
1018
 
1018
- if (conf.beta !== undefined) {
1019
- beta = new BigNumber(conf.beta, 16).toRed(this.red)
1020
- } else {
1019
+ if (conf.beta === undefined) {
1021
1020
  const betas = this._getEndoRoots(this.p)
1022
1021
  if (betas === null) {
1023
1022
  throw new Error('Failed to get endomorphism roots for beta.')
@@ -1025,11 +1024,11 @@ export default class Curve {
1025
1024
  // Choose the smallest beta
1026
1025
  beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1]
1027
1026
  beta = beta.toRed(this.red)
1027
+ } else {
1028
+ beta = new BigNumber(conf.beta, 16).toRed(this.red)
1028
1029
  }
1029
1030
 
1030
- if (conf.lambda !== undefined) {
1031
- lambda = new BigNumber(conf.lambda, 16)
1032
- } else {
1031
+ if (conf.lambda === undefined) {
1033
1032
  // Choose the lambda that matches selected beta
1034
1033
  const lambdas = this._getEndoRoots(this.n)
1035
1034
  if (lambdas === null) {
@@ -1041,7 +1040,7 @@ export default class Curve {
1041
1040
  }
1042
1041
 
1043
1042
  const gMulX = this.g.mul(lambdas[0])?.x
1044
- const gXRedMulBeta = (this.g.x != null) ? this.g.x.redMul(beta) : undefined
1043
+ const gXRedMulBeta = (this.g.x == null) ? undefined : this.g.x.redMul(beta)
1045
1044
 
1046
1045
  if ((gMulX != null) && (gXRedMulBeta != null) && gMulX.cmp(gXRedMulBeta) === 0) {
1047
1046
  lambda = lambdas[0]
@@ -1053,7 +1052,7 @@ export default class Curve {
1053
1052
  }
1054
1053
 
1055
1054
  const gMulX = this.g.mul(lambda)?.x
1056
- const gXRedMulBeta = (this.g.x != null) ? this.g.x.redMul(beta) : undefined
1055
+ const gXRedMulBeta = (this.g.x == null) ? undefined : this.g.x.redMul(beta)
1057
1056
 
1058
1057
  if ((gMulX == null) || (gXRedMulBeta == null)) {
1059
1058
  throw new Error('Lambda computation failed: g.mul(lambda).x or g.x.redMul(beta) is undefined.')
@@ -1064,6 +1063,8 @@ export default class Curve {
1064
1063
  'Lambda selection does not match computed beta.'
1065
1064
  )
1066
1065
  }
1066
+ } else {
1067
+ lambda = new BigNumber(conf.lambda, 16)
1067
1068
  }
1068
1069
 
1069
1070
  // Get basis vectors, used for balanced length-two representation
@@ -44,8 +44,8 @@ function truncateToN (
44
44
  function bnToBigInt (bn: BigNumber): bigint {
45
45
  const bytes = bn.toArray('be')
46
46
  let x = 0n
47
- for (let i = 0; i < bytes.length; i++) {
48
- x = (x << 8n) | BigInt(bytes[i])
47
+ for (const byte of bytes) {
48
+ x = (x << 8n) | BigInt(byte)
49
49
  }
50
50
  return x
51
51
  }
@@ -107,12 +107,14 @@ export const sign = (
107
107
  const drbg = new DRBG(bkey, nonce)
108
108
 
109
109
  for (let iter = 0; ; iter++) {
110
- let kBN =
111
- typeof customK === 'function'
112
- ? customK(iter)
113
- : BigNumber.isBN(customK)
114
- ? customK
115
- : new BigNumber(drbg.generate(bytes), 16)
110
+ let kBN: BigNumber | null
111
+ if (typeof customK === 'function') {
112
+ kBN = customK(iter)
113
+ } else if (BigNumber.isBN(customK)) {
114
+ kBN = customK
115
+ } else {
116
+ kBN = new BigNumber(drbg.generate(bytes), 16)
117
+ }
116
118
 
117
119
  if (kBN == null) {
118
120
  throw new Error('k is undefined')