@bsv/sdk 2.0.0-beta.0 → 2.0.0

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 (487) hide show
  1. package/dist/cjs/mod.js +1 -0
  2. package/dist/cjs/mod.js.map +1 -1
  3. package/dist/cjs/package.json +1 -1
  4. package/dist/cjs/src/auth/Peer.js +149 -74
  5. package/dist/cjs/src/auth/Peer.js.map +1 -1
  6. package/dist/cjs/src/auth/SessionManager.js.map +1 -1
  7. package/dist/cjs/src/auth/certificates/Certificate.js +18 -8
  8. package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
  9. package/dist/cjs/src/auth/certificates/MasterCertificate.js +19 -9
  10. package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
  11. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +17 -7
  12. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  13. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  14. package/dist/cjs/src/auth/clients/AuthFetch.js +30 -10
  15. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  16. package/dist/cjs/src/auth/clients/__tests__/AuthFetch.test.js.map +1 -1
  17. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +17 -7
  18. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  19. package/dist/cjs/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js +17 -7
  20. package/dist/cjs/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js.map +1 -1
  21. package/dist/cjs/src/auth/utils/createNonce.js +18 -9
  22. package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
  23. package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
  24. package/dist/cjs/src/auth/utils/verifyNonce.js +18 -9
  25. package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
  26. package/dist/cjs/src/compat/BSM.js +17 -7
  27. package/dist/cjs/src/compat/BSM.js.map +1 -1
  28. package/dist/cjs/src/compat/ECIES.js +17 -7
  29. package/dist/cjs/src/compat/ECIES.js.map +1 -1
  30. package/dist/cjs/src/compat/HD.js +17 -7
  31. package/dist/cjs/src/compat/HD.js.map +1 -1
  32. package/dist/cjs/src/compat/Mnemonic.js +17 -7
  33. package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
  34. package/dist/cjs/src/compat/Utxo.js +1 -1
  35. package/dist/cjs/src/compat/Utxo.js.map +1 -1
  36. package/dist/cjs/src/compat/index.js +17 -7
  37. package/dist/cjs/src/compat/index.js.map +1 -1
  38. package/dist/cjs/src/identity/ContactsManager.js +1 -1
  39. package/dist/cjs/src/identity/ContactsManager.js.map +1 -1
  40. package/dist/cjs/src/identity/IdentityClient.js.map +1 -1
  41. package/dist/cjs/src/kvstore/GlobalKVStore.js +20 -10
  42. package/dist/cjs/src/kvstore/GlobalKVStore.js.map +1 -1
  43. package/dist/cjs/src/kvstore/LocalKVStore.js +17 -7
  44. package/dist/cjs/src/kvstore/LocalKVStore.js.map +1 -1
  45. package/dist/cjs/src/kvstore/kvStoreInterpreter.js +17 -7
  46. package/dist/cjs/src/kvstore/kvStoreInterpreter.js.map +1 -1
  47. package/dist/cjs/src/messages/EncryptedMessage.js +19 -0
  48. package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
  49. package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
  50. package/dist/cjs/src/messages/index.js +17 -7
  51. package/dist/cjs/src/messages/index.js.map +1 -1
  52. package/dist/cjs/src/overlay-tools/Historian.js.map +1 -1
  53. package/dist/cjs/src/overlay-tools/HostReputationTracker.js.map +1 -1
  54. package/dist/cjs/src/overlay-tools/LookupResolver.js +17 -7
  55. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
  56. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  57. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +17 -7
  58. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  59. package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js +1 -2
  60. package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js.map +1 -1
  61. package/dist/cjs/src/primitives/AESGCM.js +77 -32
  62. package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
  63. package/dist/cjs/src/primitives/BigNumber.js +28 -54
  64. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  65. package/dist/cjs/src/primitives/Curve.js.map +1 -1
  66. package/dist/cjs/src/primitives/DRBG.js.map +1 -1
  67. package/dist/cjs/src/primitives/ECDSA.js +58 -24
  68. package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
  69. package/dist/cjs/src/primitives/Hash.js +6 -6
  70. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  71. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
  72. package/dist/cjs/src/primitives/K256.js.map +1 -1
  73. package/dist/cjs/src/primitives/Mersenne.js.map +1 -1
  74. package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -1
  75. package/dist/cjs/src/primitives/Point.js +63 -6
  76. package/dist/cjs/src/primitives/Point.js.map +1 -1
  77. package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
  78. package/dist/cjs/src/primitives/PrivateKey.js +46 -9
  79. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  80. package/dist/cjs/src/primitives/PublicKey.js +1 -1
  81. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  82. package/dist/cjs/src/primitives/Random.js.map +1 -1
  83. package/dist/cjs/src/primitives/ReaderUint8Array.js +180 -0
  84. package/dist/cjs/src/primitives/ReaderUint8Array.js.map +1 -0
  85. package/dist/cjs/src/primitives/ReductionContext.js +35 -46
  86. package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
  87. package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
  88. package/dist/cjs/src/primitives/Secp256r1.js.map +1 -1
  89. package/dist/cjs/src/primitives/Signature.js.map +1 -1
  90. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
  91. package/dist/cjs/src/primitives/TransactionSignature.js +132 -17
  92. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  93. package/dist/cjs/src/primitives/WriterUint8Array.js +173 -0
  94. package/dist/cjs/src/primitives/WriterUint8Array.js.map +1 -0
  95. package/dist/cjs/src/primitives/hex.js +2 -3
  96. package/dist/cjs/src/primitives/hex.js.map +1 -1
  97. package/dist/cjs/src/primitives/index.js +17 -7
  98. package/dist/cjs/src/primitives/index.js.map +1 -1
  99. package/dist/cjs/src/primitives/utils.js +43 -16
  100. package/dist/cjs/src/primitives/utils.js.map +1 -1
  101. package/dist/cjs/src/registry/RegistryClient.js +2 -2
  102. package/dist/cjs/src/registry/RegistryClient.js.map +1 -1
  103. package/dist/cjs/src/remittance/CommsLayer.js +3 -0
  104. package/dist/cjs/src/remittance/CommsLayer.js.map +1 -0
  105. package/dist/cjs/src/remittance/IdentityLayer.js +3 -0
  106. package/dist/cjs/src/remittance/IdentityLayer.js.map +1 -0
  107. package/dist/cjs/src/remittance/RemittanceManager.js +1245 -0
  108. package/dist/cjs/src/remittance/RemittanceManager.js.map +1 -0
  109. package/dist/cjs/src/remittance/RemittanceModule.js +3 -0
  110. package/dist/cjs/src/remittance/RemittanceModule.js.map +1 -0
  111. package/dist/cjs/src/remittance/index.js +23 -0
  112. package/dist/cjs/src/remittance/index.js.map +1 -0
  113. package/dist/cjs/src/remittance/modules/BasicBRC29.js +225 -0
  114. package/dist/cjs/src/remittance/modules/BasicBRC29.js.map +1 -0
  115. package/dist/cjs/src/remittance/modules/index.js +18 -0
  116. package/dist/cjs/src/remittance/modules/index.js.map +1 -0
  117. package/dist/cjs/src/remittance/types.js +22 -0
  118. package/dist/cjs/src/remittance/types.js.map +1 -0
  119. package/dist/cjs/src/script/OP.js +15 -13
  120. package/dist/cjs/src/script/OP.js.map +1 -1
  121. package/dist/cjs/src/script/Script.js +4 -1
  122. package/dist/cjs/src/script/Script.js.map +1 -1
  123. package/dist/cjs/src/script/Spend.js +145 -53
  124. package/dist/cjs/src/script/Spend.js.map +1 -1
  125. package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
  126. package/dist/cjs/src/script/templates/PushDrop.js +21 -7
  127. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  128. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  129. package/dist/cjs/src/storage/StorageDownloader.js.map +1 -1
  130. package/dist/cjs/src/storage/StorageUploader.js +17 -7
  131. package/dist/cjs/src/storage/StorageUploader.js.map +1 -1
  132. package/dist/cjs/src/storage/StorageUtils.js.map +1 -1
  133. package/dist/cjs/src/storage/index.js +17 -7
  134. package/dist/cjs/src/storage/index.js.map +1 -1
  135. package/dist/cjs/src/totp/totp.js.map +1 -1
  136. package/dist/cjs/src/transaction/Beef.js +85 -27
  137. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  138. package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
  139. package/dist/cjs/src/transaction/BeefTx.js +32 -14
  140. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  141. package/dist/cjs/src/transaction/Broadcaster.js +2 -3
  142. package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
  143. package/dist/cjs/src/transaction/MerklePath.js +25 -6
  144. package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
  145. package/dist/cjs/src/transaction/Transaction.js +238 -27
  146. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  147. package/dist/cjs/src/transaction/broadcasters/ARC.js +23 -0
  148. package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
  149. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +1 -2
  150. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  151. package/dist/cjs/src/transaction/broadcasters/Teranode.js.map +1 -1
  152. package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  153. package/dist/cjs/src/transaction/chaintrackers/BlockHeadersService.js.map +1 -1
  154. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +1 -2
  155. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
  156. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  157. package/dist/cjs/src/transaction/fee-models/LivePolicy.js.map +1 -1
  158. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  159. package/dist/cjs/src/transaction/http/BinaryFetchClient.js +2 -2
  160. package/dist/cjs/src/transaction/http/BinaryFetchClient.js.map +1 -1
  161. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +1 -2
  162. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  163. package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
  164. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
  165. package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
  166. package/dist/cjs/src/wallet/ProtoWallet.js +1 -1
  167. package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
  168. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  169. package/dist/cjs/src/wallet/WalletError.js.map +1 -1
  170. package/dist/cjs/src/wallet/index.js +17 -7
  171. package/dist/cjs/src/wallet/index.js.map +1 -1
  172. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  173. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +17 -7
  174. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  175. package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js +17 -7
  176. package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
  177. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +17 -7
  178. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  179. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +17 -7
  180. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  181. package/dist/cjs/src/wallet/substrates/XDM.js +17 -7
  182. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
  183. package/dist/cjs/src/wallet/substrates/utils/toOriginHeader.js +1 -2
  184. package/dist/cjs/src/wallet/substrates/utils/toOriginHeader.js.map +1 -1
  185. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  186. package/dist/cjs/src/wallet/validationHelpers.js +51 -41
  187. package/dist/cjs/src/wallet/validationHelpers.js.map +1 -1
  188. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  189. package/dist/esm/mod.js +1 -0
  190. package/dist/esm/mod.js.map +1 -1
  191. package/dist/esm/src/auth/Peer.js +132 -67
  192. package/dist/esm/src/auth/Peer.js.map +1 -1
  193. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  194. package/dist/esm/src/auth/certificates/Certificate.js +1 -1
  195. package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
  196. package/dist/esm/src/auth/certificates/MasterCertificate.js +2 -2
  197. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  198. package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  199. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  200. package/dist/esm/src/auth/clients/AuthFetch.js +13 -3
  201. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  202. package/dist/esm/src/auth/clients/__tests__/AuthFetch.test.js.map +1 -1
  203. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  204. package/dist/esm/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js.map +1 -1
  205. package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
  206. package/dist/esm/src/compat/BSM.js.map +1 -1
  207. package/dist/esm/src/compat/ECIES.js.map +1 -1
  208. package/dist/esm/src/compat/HD.js.map +1 -1
  209. package/dist/esm/src/compat/Mnemonic.js.map +1 -1
  210. package/dist/esm/src/identity/ContactsManager.js +1 -1
  211. package/dist/esm/src/identity/ContactsManager.js.map +1 -1
  212. package/dist/esm/src/identity/IdentityClient.js.map +1 -1
  213. package/dist/esm/src/kvstore/GlobalKVStore.js +3 -3
  214. package/dist/esm/src/kvstore/GlobalKVStore.js.map +1 -1
  215. package/dist/esm/src/kvstore/LocalKVStore.js.map +1 -1
  216. package/dist/esm/src/kvstore/kvStoreInterpreter.js.map +1 -1
  217. package/dist/esm/src/messages/EncryptedMessage.js +19 -0
  218. package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
  219. package/dist/esm/src/messages/SignedMessage.js.map +1 -1
  220. package/dist/esm/src/overlay-tools/Historian.js.map +1 -1
  221. package/dist/esm/src/overlay-tools/HostReputationTracker.js.map +1 -1
  222. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  223. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  224. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  225. package/dist/esm/src/overlay-tools/withDoubleSpendRetry.js.map +1 -1
  226. package/dist/esm/src/primitives/AESGCM.js +71 -26
  227. package/dist/esm/src/primitives/AESGCM.js.map +1 -1
  228. package/dist/esm/src/primitives/BigNumber.js +28 -54
  229. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  230. package/dist/esm/src/primitives/Curve.js.map +1 -1
  231. package/dist/esm/src/primitives/DRBG.js.map +1 -1
  232. package/dist/esm/src/primitives/ECDSA.js +58 -24
  233. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  234. package/dist/esm/src/primitives/Hash.js.map +1 -1
  235. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
  236. package/dist/esm/src/primitives/K256.js.map +1 -1
  237. package/dist/esm/src/primitives/Mersenne.js.map +1 -1
  238. package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -1
  239. package/dist/esm/src/primitives/Point.js +61 -4
  240. package/dist/esm/src/primitives/Point.js.map +1 -1
  241. package/dist/esm/src/primitives/Polynomial.js.map +1 -1
  242. package/dist/esm/src/primitives/PrivateKey.js +29 -2
  243. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  244. package/dist/esm/src/primitives/PublicKey.js +1 -1
  245. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  246. package/dist/esm/src/primitives/Random.js.map +1 -1
  247. package/dist/esm/src/primitives/ReaderUint8Array.js +176 -0
  248. package/dist/esm/src/primitives/ReaderUint8Array.js.map +1 -0
  249. package/dist/esm/src/primitives/ReductionContext.js +35 -46
  250. package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
  251. package/dist/esm/src/primitives/Schnorr.js.map +1 -1
  252. package/dist/esm/src/primitives/Secp256r1.js.map +1 -1
  253. package/dist/esm/src/primitives/Signature.js.map +1 -1
  254. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
  255. package/dist/esm/src/primitives/TransactionSignature.js +115 -10
  256. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  257. package/dist/esm/src/primitives/WriterUint8Array.js +169 -0
  258. package/dist/esm/src/primitives/WriterUint8Array.js.map +1 -0
  259. package/dist/esm/src/primitives/hex.js.map +1 -1
  260. package/dist/esm/src/primitives/utils.js +37 -11
  261. package/dist/esm/src/primitives/utils.js.map +1 -1
  262. package/dist/esm/src/registry/RegistryClient.js.map +1 -1
  263. package/dist/esm/src/remittance/CommsLayer.js +2 -0
  264. package/dist/esm/src/remittance/CommsLayer.js.map +1 -0
  265. package/dist/esm/src/remittance/IdentityLayer.js +2 -0
  266. package/dist/esm/src/remittance/IdentityLayer.js.map +1 -0
  267. package/dist/esm/src/remittance/RemittanceManager.js +1254 -0
  268. package/dist/esm/src/remittance/RemittanceManager.js.map +1 -0
  269. package/dist/esm/src/remittance/RemittanceModule.js +2 -0
  270. package/dist/esm/src/remittance/RemittanceModule.js.map +1 -0
  271. package/dist/esm/src/remittance/index.js +7 -0
  272. package/dist/esm/src/remittance/index.js.map +1 -0
  273. package/dist/esm/src/remittance/modules/BasicBRC29.js +227 -0
  274. package/dist/esm/src/remittance/modules/BasicBRC29.js.map +1 -0
  275. package/dist/esm/src/remittance/modules/index.js +2 -0
  276. package/dist/esm/src/remittance/modules/index.js.map +1 -0
  277. package/dist/esm/src/remittance/types.js +19 -0
  278. package/dist/esm/src/remittance/types.js.map +1 -0
  279. package/dist/esm/src/script/OP.js +15 -13
  280. package/dist/esm/src/script/OP.js.map +1 -1
  281. package/dist/esm/src/script/Script.js +4 -1
  282. package/dist/esm/src/script/Script.js.map +1 -1
  283. package/dist/esm/src/script/Spend.js +129 -46
  284. package/dist/esm/src/script/Spend.js.map +1 -1
  285. package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
  286. package/dist/esm/src/script/templates/PushDrop.js +21 -7
  287. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  288. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  289. package/dist/esm/src/storage/StorageDownloader.js.map +1 -1
  290. package/dist/esm/src/storage/StorageUploader.js.map +1 -1
  291. package/dist/esm/src/storage/StorageUtils.js.map +1 -1
  292. package/dist/esm/src/totp/totp.js.map +1 -1
  293. package/dist/esm/src/transaction/Beef.js +86 -28
  294. package/dist/esm/src/transaction/Beef.js.map +1 -1
  295. package/dist/esm/src/transaction/BeefParty.js.map +1 -1
  296. package/dist/esm/src/transaction/BeefTx.js +32 -14
  297. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  298. package/dist/esm/src/transaction/MerklePath.js +26 -7
  299. package/dist/esm/src/transaction/MerklePath.js.map +1 -1
  300. package/dist/esm/src/transaction/Transaction.js +239 -28
  301. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  302. package/dist/esm/src/transaction/broadcasters/ARC.js +23 -0
  303. package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
  304. package/dist/esm/src/transaction/broadcasters/Teranode.js.map +1 -1
  305. package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  306. package/dist/esm/src/transaction/chaintrackers/BlockHeadersService.js.map +1 -1
  307. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  308. package/dist/esm/src/transaction/fee-models/LivePolicy.js.map +1 -1
  309. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  310. package/dist/esm/src/transaction/http/BinaryFetchClient.js.map +1 -1
  311. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  312. package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
  313. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
  314. package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
  315. package/dist/esm/src/wallet/ProtoWallet.js +1 -1
  316. package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
  317. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  318. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  319. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  320. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  321. package/dist/esm/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
  322. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  323. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  324. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
  325. package/dist/esm/src/wallet/substrates/utils/toOriginHeader.js.map +1 -1
  326. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  327. package/dist/esm/src/wallet/validationHelpers.js +1 -1
  328. package/dist/esm/src/wallet/validationHelpers.js.map +1 -1
  329. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  330. package/dist/types/mod.d.ts +1 -0
  331. package/dist/types/mod.d.ts.map +1 -1
  332. package/dist/types/src/auth/Peer.d.ts +12 -7
  333. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  334. package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
  335. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  336. package/dist/types/src/auth/types.d.ts +2 -0
  337. package/dist/types/src/auth/types.d.ts.map +1 -1
  338. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
  339. package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
  340. package/dist/types/src/compat/BSM.d.ts +1 -1
  341. package/dist/types/src/compat/BSM.d.ts.map +1 -1
  342. package/dist/types/src/messages/EncryptedMessage.d.ts +19 -0
  343. package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
  344. package/dist/types/src/messages/SignedMessage.d.ts.map +1 -1
  345. package/dist/types/src/primitives/AESGCM.d.ts +18 -0
  346. package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
  347. package/dist/types/src/primitives/BigNumber.d.ts +8 -0
  348. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  349. package/dist/types/src/primitives/ECDSA.d.ts +24 -0
  350. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  351. package/dist/types/src/primitives/Hash.d.ts +8 -8
  352. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  353. package/dist/types/src/primitives/Point.d.ts +1 -0
  354. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  355. package/dist/types/src/primitives/PrivateKey.d.ts +27 -0
  356. package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
  357. package/dist/types/src/primitives/Random.d.ts.map +1 -1
  358. package/dist/types/src/primitives/ReaderUint8Array.d.ts +32 -0
  359. package/dist/types/src/primitives/ReaderUint8Array.d.ts.map +1 -0
  360. package/dist/types/src/primitives/ReductionContext.d.ts +9 -0
  361. package/dist/types/src/primitives/ReductionContext.d.ts.map +1 -1
  362. package/dist/types/src/primitives/Secp256r1.d.ts.map +1 -1
  363. package/dist/types/src/primitives/TransactionSignature.d.ts +16 -4
  364. package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
  365. package/dist/types/src/primitives/WriterUint8Array.d.ts +54 -0
  366. package/dist/types/src/primitives/WriterUint8Array.d.ts.map +1 -0
  367. package/dist/types/src/primitives/utils.d.ts +19 -6
  368. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  369. package/dist/types/src/remittance/CommsLayer.d.ts +50 -0
  370. package/dist/types/src/remittance/CommsLayer.d.ts.map +1 -0
  371. package/dist/types/src/remittance/IdentityLayer.d.ts +35 -0
  372. package/dist/types/src/remittance/IdentityLayer.d.ts.map +1 -0
  373. package/dist/types/src/remittance/RemittanceManager.d.ts +452 -0
  374. package/dist/types/src/remittance/RemittanceManager.d.ts.map +1 -0
  375. package/dist/types/src/remittance/RemittanceModule.d.ts +106 -0
  376. package/dist/types/src/remittance/RemittanceModule.d.ts.map +1 -0
  377. package/dist/types/src/remittance/index.d.ts +7 -0
  378. package/dist/types/src/remittance/index.d.ts.map +1 -0
  379. package/dist/types/src/remittance/modules/BasicBRC29.d.ts +133 -0
  380. package/dist/types/src/remittance/modules/BasicBRC29.d.ts.map +1 -0
  381. package/dist/types/src/remittance/modules/index.d.ts +2 -0
  382. package/dist/types/src/remittance/modules/index.d.ts.map +1 -0
  383. package/dist/types/src/remittance/types.d.ts +238 -0
  384. package/dist/types/src/remittance/types.d.ts.map +1 -0
  385. package/dist/types/src/script/OP.d.ts +5 -3
  386. package/dist/types/src/script/OP.d.ts.map +1 -1
  387. package/dist/types/src/script/Script.d.ts.map +1 -1
  388. package/dist/types/src/script/Spend.d.ts +7 -0
  389. package/dist/types/src/script/Spend.d.ts.map +1 -1
  390. package/dist/types/src/script/templates/PushDrop.d.ts +3 -4
  391. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  392. package/dist/types/src/storage/StorageUtils.d.ts.map +1 -1
  393. package/dist/types/src/transaction/Beef.d.ts +26 -9
  394. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  395. package/dist/types/src/transaction/BeefTx.d.ts +13 -6
  396. package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
  397. package/dist/types/src/transaction/MerklePath.d.ts +16 -3
  398. package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
  399. package/dist/types/src/transaction/Transaction.d.ts +58 -7
  400. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  401. package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
  402. package/dist/types/src/transaction/http/BinaryFetchClient.d.ts +0 -2
  403. package/dist/types/src/transaction/http/BinaryFetchClient.d.ts.map +1 -1
  404. package/dist/types/src/wallet/Wallet.interfaces.d.ts +5 -5
  405. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  406. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  407. package/dist/umd/bundle.js +13 -13
  408. package/dist/umd/bundle.js.map +1 -1
  409. package/docs/index.md +3 -1
  410. package/docs/reference/auth.md +8 -12
  411. package/docs/reference/primitives.md +260 -55
  412. package/docs/reference/remittance.md +2166 -0
  413. package/docs/reference/script.md +12 -4
  414. package/docs/reference/transaction.md +203 -34
  415. package/docs/reference/wallet.md +6 -5
  416. package/docs/remittance-getting-started.md +138 -0
  417. package/mod.ts +1 -0
  418. package/package.json +11 -1
  419. package/src/auth/Peer.ts +196 -85
  420. package/src/auth/__tests/Peer.test.ts +424 -257
  421. package/src/auth/clients/AuthFetch.ts +18 -3
  422. package/src/auth/types.ts +2 -0
  423. package/src/messages/EncryptedMessage.ts +19 -0
  424. package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +7 -0
  425. package/src/primitives/AESGCM.ts +75 -34
  426. package/src/primitives/BigNumber.ts +27 -31
  427. package/src/primitives/ECDSA.ts +41 -2
  428. package/src/primitives/PrivateKey.ts +27 -0
  429. package/src/primitives/ReaderUint8Array.ts +196 -0
  430. package/src/primitives/ReductionContext.ts +44 -48
  431. package/src/primitives/TransactionSignature.ts +129 -10
  432. package/src/primitives/WriterUint8Array.ts +195 -0
  433. package/src/primitives/__tests/AESGCM.test.ts +31 -0
  434. package/src/primitives/__tests/ECDSA.test.ts +16 -0
  435. package/src/primitives/__tests/ReaderUint8Array.test.ts +317 -0
  436. package/src/primitives/__tests/WriterUint8Array.test.ts +208 -0
  437. package/src/primitives/utils.ts +31 -4
  438. package/src/remittance/CommsLayer.ts +41 -0
  439. package/src/remittance/IdentityLayer.ts +32 -0
  440. package/src/remittance/RemittanceManager.ts +1672 -0
  441. package/src/remittance/RemittanceModule.ts +92 -0
  442. package/src/remittance/__tests/BasicBRC29.test.ts +188 -0
  443. package/src/remittance/__tests/RemittanceManager.test.ts +493 -0
  444. package/src/remittance/__tests/examples.ts +130 -0
  445. package/src/remittance/index.ts +6 -0
  446. package/src/remittance/modules/BasicBRC29.ts +361 -0
  447. package/src/remittance/modules/index.ts +1 -0
  448. package/src/remittance/types.ts +284 -0
  449. package/src/script/OP.ts +15 -13
  450. package/src/script/Script.ts +3 -1
  451. package/src/script/Spend.ts +128 -52
  452. package/src/script/__tests/Chronicle.test.ts +186 -0
  453. package/src/script/__tests/Spend.test.ts +1 -1
  454. package/src/script/__tests/SpendValildVectors.test.ts +63 -0
  455. package/src/script/__tests/lrshiftnum.test.ts +185 -0
  456. package/src/script/__tests/sighashTestData.ts +1031 -0
  457. package/src/script/__tests/spend.valid.vectors.ts +9 -16
  458. package/src/script/templates/PushDrop.ts +32 -17
  459. package/src/script/templates/__tests/PushDrop.test.ts +28 -0
  460. package/src/storage/__tests/StorageUploader.test.ts +1 -1
  461. package/src/transaction/Beef.ts +103 -40
  462. package/src/transaction/BeefTx.ts +38 -19
  463. package/src/transaction/MerklePath.ts +30 -9
  464. package/src/transaction/Transaction.ts +277 -38
  465. package/src/transaction/__tests/Beef.test.ts +77 -0
  466. package/src/transaction/__tests/Transaction.test.ts +641 -3
  467. package/src/transaction/broadcasters/ARC.ts +34 -7
  468. package/src/transaction/broadcasters/__tests/ARC.test.ts +98 -0
  469. package/src/wallet/Wallet.interfaces.ts +5 -5
  470. package/dist/cjs/src/storage/__test/StorageDownloader.test.js +0 -171
  471. package/dist/cjs/src/storage/__test/StorageDownloader.test.js.map +0 -1
  472. package/dist/cjs/src/storage/__test/StorageUploader.test.js +0 -163
  473. package/dist/cjs/src/storage/__test/StorageUploader.test.js.map +0 -1
  474. package/dist/cjs/src/storage/__test/StorageUtils.test.js +0 -97
  475. package/dist/cjs/src/storage/__test/StorageUtils.test.js.map +0 -1
  476. package/dist/esm/src/storage/__test/StorageDownloader.test.js +0 -166
  477. package/dist/esm/src/storage/__test/StorageDownloader.test.js.map +0 -1
  478. package/dist/esm/src/storage/__test/StorageUploader.test.js +0 -135
  479. package/dist/esm/src/storage/__test/StorageUploader.test.js.map +0 -1
  480. package/dist/esm/src/storage/__test/StorageUtils.test.js +0 -72
  481. package/dist/esm/src/storage/__test/StorageUtils.test.js.map +0 -1
  482. package/dist/types/src/storage/__test/StorageDownloader.test.d.ts +0 -2
  483. package/dist/types/src/storage/__test/StorageDownloader.test.d.ts.map +0 -1
  484. package/dist/types/src/storage/__test/StorageUploader.test.d.ts +0 -2
  485. package/dist/types/src/storage/__test/StorageUploader.test.d.ts.map +0 -1
  486. package/dist/types/src/storage/__test/StorageUtils.test.d.ts +0 -2
  487. package/dist/types/src/storage/__test/StorageUtils.test.d.ts.map +0 -1
@@ -0,0 +1,317 @@
1
+ import BigNumber from '../BigNumber'
2
+ import { ReaderUint8Array, Writer, toHex } from '../utils'
3
+
4
+ describe('ReaderUint8Array', () => {
5
+ it('should make a new Br', () => {
6
+ let br = new ReaderUint8Array()
7
+ expect(br).toBeDefined()
8
+ br = new ReaderUint8Array()
9
+ expect(br).toBeDefined()
10
+ })
11
+
12
+ it('should create a new ReaderUint8Array with an Array', () => {
13
+ const arr: number[] = []
14
+ const br = new ReaderUint8Array(arr)
15
+ expect(br).toBeDefined()
16
+ expect(br.bin instanceof Uint8Array).toBeTruthy()
17
+ })
18
+
19
+ describe('#eof', () => {
20
+ it('should return true for a blank br', () => {
21
+ const br = new ReaderUint8Array([...Buffer.from([])])
22
+ expect(br.eof()).toBeTruthy()
23
+ })
24
+ })
25
+
26
+ describe('#read', () => {
27
+ it('should return the same buffer', () => {
28
+ const buf = Buffer.from([0])
29
+ const br = new ReaderUint8Array([...buf])
30
+ expect(Buffer.from(br.read()).toString('hex')).toEqual(
31
+ buf.toString('hex')
32
+ )
33
+ })
34
+ })
35
+
36
+ it('should return a buffer of this length', () => {
37
+ const buf = Buffer.alloc(10)
38
+ buf.fill(0)
39
+ const br = new ReaderUint8Array([...buf])
40
+ const buf2 = br.read(2)
41
+ expect(buf2.length).toEqual(2)
42
+ expect(br.eof()).toBeFalsy()
43
+ expect(br.pos).toEqual(2)
44
+ })
45
+
46
+ it('should be able to read 0 bytes', () => {
47
+ const buf = Buffer.from('0101', 'hex')
48
+ expect(new ReaderUint8Array([...buf]).read(0).length).toEqual(0)
49
+ })
50
+ })
51
+
52
+ describe('#readReverse', () => {
53
+ it('should reverse this [0, 1]', () => {
54
+ const buf = Buffer.from([0, 1])
55
+ const br = new ReaderUint8Array([...buf])
56
+ expect(toHex(br.readReverse())).toEqual('0100')
57
+ })
58
+
59
+ it('should be able to read 0 bytes', () => {
60
+ const buf = Buffer.from('0101', 'hex')
61
+ expect(new ReaderUint8Array([...buf]).readReverse(0).length).toEqual(0)
62
+ })
63
+ })
64
+
65
+ describe('#readUInt8', () => {
66
+ it('should return 1', () => {
67
+ const buf = Buffer.alloc(1)
68
+ buf.writeUInt8(1, 0)
69
+ const br = new ReaderUint8Array([...buf])
70
+ expect(br.readUInt8()).toEqual(1)
71
+ })
72
+ })
73
+
74
+ describe('#readInt8', () => {
75
+ it('should return 1', () => {
76
+ const buf = Buffer.alloc(1)
77
+ buf.writeInt8(1, 0)
78
+ const br = new ReaderUint8Array([...buf])
79
+ expect(br.readInt8()).toEqual(1)
80
+ const bufNegative = Buffer.from('ff', 'hex')
81
+ const brNegative = new ReaderUint8Array([...bufNegative])
82
+ expect(brNegative.readInt8()).toEqual(-1)
83
+ })
84
+ })
85
+
86
+ describe('#readUInt16BE', () => {
87
+ it('should return 1', () => {
88
+ const buf = Buffer.alloc(2)
89
+ buf.writeUInt16BE(1, 0)
90
+ const br = new ReaderUint8Array([...buf])
91
+ expect(br.readUInt16BE()).toEqual(1)
92
+ })
93
+ })
94
+
95
+ describe('#readInt16BE', () => {
96
+ it('should return 1', () => {
97
+ const buf = Buffer.alloc(2)
98
+ buf.writeInt16BE(1, 0)
99
+ const br = new ReaderUint8Array([...buf])
100
+ expect(br.readInt16BE()).toEqual(1)
101
+ const bufNegative = Buffer.from('ffff', 'hex')
102
+ const brNegative = new ReaderUint8Array([...bufNegative])
103
+ expect(brNegative.readInt8()).toEqual(-1)
104
+ })
105
+ })
106
+
107
+ describe('#readUInt16LE', () => {
108
+ it('should return 1', () => {
109
+ const buf = Buffer.alloc(2)
110
+ buf.writeUInt16LE(1, 0)
111
+ const br = new ReaderUint8Array([...buf])
112
+ expect(br.readUInt16LE()).toEqual(1)
113
+ })
114
+ })
115
+
116
+ describe('#readInt16LE', () => {
117
+ it('should return 1', () => {
118
+ const buf = Buffer.alloc(2)
119
+ buf.writeInt16LE(1, 0)
120
+ const br = new ReaderUint8Array([...buf])
121
+ expect(br.readInt16LE()).toEqual(1)
122
+ const bufNegative = Buffer.from('ffff', 'hex')
123
+ const brNegative = new ReaderUint8Array([...bufNegative])
124
+ expect(brNegative.readInt8()).toEqual(-1)
125
+ })
126
+ })
127
+
128
+ describe('#readUInt32BE', () => {
129
+ it('should return 1', () => {
130
+ const buf = Buffer.alloc(4)
131
+ buf.writeUInt32BE(1, 0)
132
+ const br = new ReaderUint8Array([...buf])
133
+ expect(br.readUInt32BE()).toEqual(1)
134
+ })
135
+ })
136
+
137
+ describe('#readInt32BE', () => {
138
+ it('should return 1', () => {
139
+ const buf = Buffer.alloc(4)
140
+ buf.writeInt32BE(1, 0)
141
+ const br = new ReaderUint8Array([...buf])
142
+ expect(br.readInt32BE()).toEqual(1)
143
+ const bufNegative = Buffer.from('ffffffff', 'hex')
144
+ const brNegative = new ReaderUint8Array([...bufNegative])
145
+ expect(brNegative.readInt8()).toEqual(-1)
146
+ })
147
+ })
148
+
149
+ describe('#readUInt32LE', () => {
150
+ it('should return 1', () => {
151
+ const buf = Buffer.alloc(4)
152
+ buf.writeUInt32LE(1, 0)
153
+ const br = new ReaderUint8Array([...buf])
154
+ expect(br.readUInt32LE()).toEqual(1)
155
+ })
156
+ })
157
+
158
+ describe('#readInt32LE', () => {
159
+ it('should return 1', () => {
160
+ const buf = Buffer.alloc(4)
161
+ buf.writeInt32LE(1, 0)
162
+ const br = new ReaderUint8Array([...buf])
163
+ expect(br.readInt32LE()).toEqual(1)
164
+ expect(
165
+ new ReaderUint8Array([...Buffer.from('ffffffff', 'hex')]).readInt32LE()
166
+ ).toEqual(-1)
167
+ })
168
+ })
169
+
170
+ describe('#readUInt64BEBn', () => {
171
+ it('should return 1', () => {
172
+ const buf = Buffer.alloc(8)
173
+ buf.fill(0)
174
+ buf.writeUInt32BE(1, 4)
175
+ const br = new ReaderUint8Array([...buf])
176
+ expect(br.readUInt64BEBn().toNumber()).toEqual(1)
177
+ })
178
+
179
+ it('should return 2^64', () => {
180
+ const buf = Buffer.alloc(8)
181
+ buf.fill(0xff)
182
+ const br = new ReaderUint8Array([...buf])
183
+ expect(br.readUInt64BEBn().toHex()).toEqual('ffffffffffffffff')
184
+ })
185
+ })
186
+
187
+ describe('#readUInt64LEBn', () => {
188
+ it('should return 1', () => {
189
+ const buf = Buffer.alloc(8)
190
+ buf.fill(0)
191
+ buf.writeUInt32LE(1, 0)
192
+ const br = new ReaderUint8Array([...buf])
193
+ expect(br.readUInt64LEBn().toNumber()).toEqual(1)
194
+ })
195
+
196
+ it('should return 2^30', () => {
197
+ const buf = Buffer.alloc(8)
198
+ buf.fill(0)
199
+ buf.writeUInt32LE(Math.pow(2, 30), 0)
200
+ const br = new ReaderUint8Array([...buf])
201
+ expect(br.readUInt64LEBn().toNumber()).toEqual(Math.pow(2, 30))
202
+ })
203
+
204
+ it('should return 0', () => {
205
+ const buf = Buffer.alloc(8)
206
+ buf.fill(0)
207
+ const br = new ReaderUint8Array([...buf])
208
+ expect(br.readUInt64LEBn().toNumber()).toEqual(0)
209
+ })
210
+
211
+ it('should return 2^64', () => {
212
+ const buf = Buffer.alloc(8)
213
+ buf.fill(0xff)
214
+ const br = new ReaderUint8Array([...buf])
215
+ expect(br.readUInt64LEBn().toHex()).toEqual('ffffffffffffffff')
216
+ })
217
+ })
218
+
219
+ describe('#readVarInt', () => {
220
+ it('should read a 1 byte varInt', () => {
221
+ const buf = Buffer.from([50])
222
+ const br = new ReaderUint8Array([...buf])
223
+ expect(br.readVarInt().length).toEqual(1)
224
+ })
225
+
226
+ it('should read a 3 byte varInt', () => {
227
+ const buf = Buffer.from([253, 253, 0])
228
+ const br = new ReaderUint8Array([...buf])
229
+ expect(br.readVarInt().length).toEqual(3)
230
+ })
231
+
232
+ it('should read a 5 byte varInt', () => {
233
+ const buf = Buffer.from([254, 0, 0, 0, 0])
234
+ buf.writeUInt32LE(50000, 1)
235
+ const br = new ReaderUint8Array([...buf])
236
+ expect(br.readVarInt().length).toEqual(5)
237
+ })
238
+
239
+ it('should read a 9 byte varInt', () => {
240
+ const buf = new Writer()
241
+ .writeVarIntBn(new BigNumber(Math.pow(2, 54).toString()))
242
+ .toArray()
243
+ const br = new ReaderUint8Array([...buf])
244
+ expect(br.readVarInt().length).toEqual(9)
245
+ })
246
+ })
247
+
248
+ describe('#readVarIntNum', () => {
249
+ it('should read a 1 byte varInt', () => {
250
+ const buf = Buffer.from([50])
251
+ const br = new ReaderUint8Array([...buf])
252
+ expect(br.readVarIntNum()).toEqual(50)
253
+ })
254
+
255
+ it('should read a 3 byte varInt', () => {
256
+ const buf = Buffer.from([253, 253, 0])
257
+ const br = new ReaderUint8Array([...buf])
258
+ expect(br.readVarIntNum()).toEqual(253)
259
+ })
260
+
261
+ it('should read a 5 byte varInt', () => {
262
+ const buf = Buffer.from([254, 0, 0, 0, 0])
263
+ buf.writeUInt32LE(50000, 1)
264
+ const br = new ReaderUint8Array([...buf])
265
+ expect(br.readVarIntNum()).toEqual(50000)
266
+ })
267
+
268
+ it('should throw an error on a 9 byte varInt over the javascript uint precision limit', () => {
269
+ const buf = new Writer()
270
+ .writeVarIntBn(new BigNumber(Math.pow(2, 54).toString()))
271
+ .toArray()
272
+ const br = new ReaderUint8Array([...buf])
273
+ expect(() => {
274
+ br.readVarIntNum()
275
+ }).toThrow('number too large to retain precision - use readVarIntBn')
276
+ })
277
+
278
+ it('should not throw an error on a 9 byte varInt not over the javascript uint precision limit', () => {
279
+ const buf = new Writer()
280
+ .writeVarIntBn(new BigNumber(Math.pow(2, 53).toString()))
281
+ .toArray()
282
+ const br = new ReaderUint8Array([...buf])
283
+ expect(() => {
284
+ br.readVarIntNum()
285
+ }).not.toThrow('number too large to retain precision - use readVarIntBn')
286
+ })
287
+ })
288
+
289
+ describe('#readVarIntBn', () => {
290
+ it('should read a 1 byte varInt', () => {
291
+ const buf = Buffer.from([50])
292
+ const br = new ReaderUint8Array([...buf])
293
+ expect(br.readVarIntBn().toNumber()).toEqual(50)
294
+ })
295
+
296
+ it('should read a 3 byte varInt', () => {
297
+ const buf = Buffer.from([253, 253, 0])
298
+ const br = new ReaderUint8Array([...buf])
299
+ expect(br.readVarIntBn().toNumber()).toEqual(253)
300
+ })
301
+
302
+ it('should read a 5 byte varInt', () => {
303
+ const buf = Buffer.from([254, 0, 0, 0, 0])
304
+ buf.writeUInt32LE(50000, 1)
305
+ const br = new ReaderUint8Array([...buf])
306
+ expect(br.readVarIntBn().toNumber()).toEqual(50000)
307
+ })
308
+
309
+ it('should read a 9 byte varInt', () => {
310
+ const buf = Buffer.concat([
311
+ Buffer.from([255]),
312
+ Buffer.from('ffffffffffffffff', 'hex')
313
+ ])
314
+ const br = new ReaderUint8Array([...buf])
315
+ expect(br.readVarIntBn().toHex()).toEqual('ffffffffffffffff')
316
+ })
317
+ })
@@ -0,0 +1,208 @@
1
+ import BigNumber from '../BigNumber'
2
+ import { Reader, encode, WriterUint8Array } from '../utils'
3
+
4
+ describe('WriterUint8Array', () => {
5
+ it('should create a new buffer writer', () => {
6
+ const bw = new WriterUint8Array()
7
+ expect(bw).toBeDefined()
8
+ })
9
+
10
+ describe('#getLength', () => {
11
+ it('should compute length correctly of two 2-byte buffers', () => {
12
+ const buf1 = Buffer.from('0000', 'hex')
13
+ const buf2 = Buffer.from('0000', 'hex')
14
+ const bw = new WriterUint8Array().write([...buf1]).write([...buf2])
15
+ expect(bw.getLength()).toEqual(4)
16
+ })
17
+ })
18
+
19
+ describe('#toArray', () => {
20
+ it('should concat these two bufs', () => {
21
+ const buf1 = [0]
22
+ const buf2 = [1]
23
+ const bw = new WriterUint8Array([buf1, buf2])
24
+ expect(encode(bw.toArray(), 'hex')).toEqual('0001')
25
+ })
26
+ })
27
+
28
+ describe('#write', () => {
29
+ it('should write a buffer', () => {
30
+ const buf = [0]
31
+ const bw = new WriterUint8Array()
32
+ bw.write(buf)
33
+ expect(encode(bw.toArray(), 'hex')).toEqual('00')
34
+ })
35
+ })
36
+
37
+ describe('#writeReverse', () => {
38
+ it('should write a buffer in reverse', () => {
39
+ const buf = [0, 1]
40
+ const bw = new WriterUint8Array()
41
+ bw.writeReverse(buf)
42
+ expect(encode(bw.toArray(), 'hex')).toEqual('0100')
43
+ })
44
+ })
45
+
46
+ describe('#writeUInt8', () => {
47
+ it('should write 1', () => {
48
+ const bw = new WriterUint8Array()
49
+ expect(encode(bw.writeUInt8(1).toArray(), 'hex')).toEqual('01')
50
+ })
51
+ })
52
+
53
+ describe('#writeInt8', () => {
54
+ it('should write 1', () => {
55
+ const bw = new WriterUint8Array()
56
+ expect(encode(bw.writeInt8(1).toArray(), 'hex')).toEqual('01')
57
+ expect(encode(new WriterUint8Array().writeInt8(-1).toArray(), 'hex')).toEqual('ff')
58
+ })
59
+ })
60
+
61
+ describe('#writeUInt16BE', () => {
62
+ it('should write 1', () => {
63
+ const bw = new WriterUint8Array()
64
+ expect(encode(bw.writeUInt16BE(1).toArray(), 'hex')).toEqual('0001')
65
+ })
66
+ })
67
+
68
+ describe('#writeInt16BE', () => {
69
+ it('should write 1', () => {
70
+ const bw = new WriterUint8Array()
71
+ expect(encode(bw.writeInt16BE(1).toArray(), 'hex')).toEqual('0001')
72
+ expect(encode(new WriterUint8Array().writeInt16BE(-1).toArray(), 'hex')).toEqual(
73
+ 'ffff'
74
+ )
75
+ })
76
+ })
77
+
78
+ describe('#writeUInt16LE', () => {
79
+ it('should write 1', () => {
80
+ const bw = new WriterUint8Array()
81
+ expect(encode(bw.writeUInt16LE(1).toArray(), 'hex')).toEqual('0100')
82
+ })
83
+ })
84
+
85
+ describe('#writeInt16LE', () => {
86
+ it('should write 1', () => {
87
+ const bw = new WriterUint8Array()
88
+ expect(encode(bw.writeInt16LE(1).toArray(), 'hex')).toEqual('0100')
89
+ expect(encode(new WriterUint8Array().writeInt16LE(-1).toArray(), 'hex')).toEqual(
90
+ 'ffff'
91
+ )
92
+ })
93
+ })
94
+
95
+ describe('#writeUInt32BE', () => {
96
+ it('should write 1', () => {
97
+ const bw = new WriterUint8Array()
98
+ expect(encode(bw.writeUInt32BE(1).toArray(), 'hex')).toEqual('00000001')
99
+ })
100
+ })
101
+
102
+ describe('#writeInt32BE', () => {
103
+ it('should write 1', () => {
104
+ const bw = new WriterUint8Array()
105
+ expect(encode(bw.writeInt32BE(1).toArray(), 'hex')).toEqual('00000001')
106
+ expect(encode(new WriterUint8Array().writeInt32BE(-1).toArray(), 'hex')).toEqual(
107
+ 'ffffffff'
108
+ )
109
+ })
110
+ })
111
+
112
+ describe('#writeUInt32LE', () => {
113
+ it('should write 1', () => {
114
+ const bw = new WriterUint8Array()
115
+ expect(encode(bw.writeUInt32LE(1).toArray(), 'hex')).toEqual('01000000')
116
+ })
117
+ })
118
+
119
+ describe('#writeInt32LE', () => {
120
+ it('should write 1', () => {
121
+ const bw = new WriterUint8Array()
122
+ expect(encode(bw.writeInt32LE(1).toArray(), 'hex')).toEqual('01000000')
123
+ expect(encode(new WriterUint8Array().writeInt32LE(-1).toArray(), 'hex')).toEqual(
124
+ 'ffffffff'
125
+ )
126
+ })
127
+ })
128
+
129
+ describe('#writeUInt64BEBn', () => {
130
+ it('should write 1', () => {
131
+ const bw = new WriterUint8Array()
132
+ expect(
133
+ encode(bw.writeUInt64BEBn(new BigNumber(1)).toArray(), 'hex')
134
+ ).toEqual('0000000000000001')
135
+ })
136
+ })
137
+
138
+ describe('#writeUInt64LEBn', () => {
139
+ it('should write 1', () => {
140
+ const bw = new WriterUint8Array()
141
+ expect(
142
+ encode(bw.writeUInt64LEBn(new BigNumber(1)).toArray(), 'hex')
143
+ ).toEqual('0100000000000000')
144
+ })
145
+ })
146
+
147
+ describe('#writeVarInt', () => {
148
+ it('should write a 1 byte varInt', () => {
149
+ const bw = new WriterUint8Array()
150
+ bw.writeVarIntNum(1)
151
+ expect(bw.toArray().length).toEqual(1)
152
+ })
153
+
154
+ it('should write a 3 byte varInt', () => {
155
+ const bw = new WriterUint8Array()
156
+ bw.writeVarIntNum(1000)
157
+ expect(bw.toArray().length).toEqual(3)
158
+ })
159
+
160
+ it('should write a 5 byte varInt', () => {
161
+ const bw = new WriterUint8Array()
162
+ bw.writeVarIntNum(Math.pow(2, 16 + 1))
163
+ expect(bw.toArray().length).toEqual(5)
164
+ })
165
+
166
+ it('should write a 9 byte varInt', () => {
167
+ const bw = new WriterUint8Array()
168
+ bw.writeVarIntNum(Math.pow(2, 32 + 1))
169
+ expect(bw.toArray().length).toEqual(9)
170
+ })
171
+
172
+ it('should read back the same value it wrote for a 9 byte varInt', () => {
173
+ const bw = new WriterUint8Array()
174
+ const n = Math.pow(2, 53)
175
+ expect(n).toEqual(n + 1) // javascript number precision limit
176
+ bw.writeVarIntNum(n)
177
+ const br = new Reader(bw.toArray())
178
+ expect(br.readVarIntBn().toHex()).toEqual('20000000000000')
179
+ })
180
+ })
181
+
182
+ describe('#writeVarIntBn', () => {
183
+ it('should write a 1 byte varInt', () => {
184
+ const bw = new WriterUint8Array()
185
+ bw.writeVarIntBn(new BigNumber(1))
186
+ expect(bw.toArray().length).toEqual(1)
187
+ })
188
+
189
+ it('should write a 3 byte varInt', () => {
190
+ const bw = new WriterUint8Array()
191
+ bw.writeVarIntBn(new BigNumber(1000))
192
+ expect(bw.toArray().length).toEqual(3)
193
+ })
194
+
195
+ it('should write a 5 byte varInt', () => {
196
+ const bw = new WriterUint8Array()
197
+ const bn = new BigNumber(Math.pow(2, 16 + 1))
198
+ bw.writeVarIntBn(bn)
199
+ expect(bw.toArray().length).toEqual(5)
200
+ })
201
+
202
+ it('should write a 9 byte varInt', () => {
203
+ const bw = new WriterUint8Array()
204
+ bw.writeVarIntBn(new BigNumber(Math.pow(2, 32 + 1)))
205
+ expect(bw.toArray().length).toEqual(9)
206
+ })
207
+ })
208
+ })
@@ -1,6 +1,11 @@
1
1
  import BigNumber from './BigNumber.js'
2
2
  import { hash256 } from './Hash.js'
3
3
  import { assertValidHex } from './hex.js'
4
+ import { WriterUint8Array } from './WriterUint8Array.js'
5
+ import { ReaderUint8Array } from './ReaderUint8Array.js'
6
+
7
+ export { WriterUint8Array }
8
+ export { ReaderUint8Array }
4
9
 
5
10
  const BufferCtor =
6
11
  typeof globalThis !== 'undefined' ? (globalThis as any).Buffer : undefined
@@ -32,7 +37,7 @@ for (let i = 0; i < 256; i++) {
32
37
  HEX_DIGITS[(i >> 4) & 0xf] + HEX_DIGITS[i & 0xf]
33
38
  }
34
39
 
35
- export const toHex = (msg: number[]): string => {
40
+ export const toHex = (msg: number[] | Uint8Array): string => {
36
41
  if (CAN_USE_BUFFER) {
37
42
  return BufferCtor.from(msg).toString('hex')
38
43
  }
@@ -44,11 +49,24 @@ export const toHex = (msg: number[]): string => {
44
49
  return out.join('')
45
50
  }
46
51
 
52
+ /**
53
+ * Converts various message formats into a Uint8Array.
54
+ * Supports Uint8Array, arrays of bytes, hexadecimal strings, base64 strings, and UTF-8 strings.
55
+ *
56
+ * @param {any} msg - The input message (Uint8Array, number[], Array or string).
57
+ * @param {('hex' | 'utf8' | 'base64')} enc - Specifies the string encoding, if applicable.
58
+ * @returns {Uint8Array}
59
+ */
60
+ export const toUint8Array = (msg: any, enc?: 'hex' | 'utf8' | 'base64'): Uint8Array => {
61
+ if (msg instanceof Uint8Array) return msg
62
+ return new Uint8Array(toArray(msg, enc))
63
+ }
64
+
47
65
  /**
48
66
  * Converts various message formats into an array of numbers.
49
67
  * Supports arrays, hexadecimal strings, base64 strings, and UTF-8 strings.
50
68
  *
51
- * @param {any} msg - The input message (array or string).
69
+ * @param {any} msg - The input message (Uint8Array, number[], Array or string).
52
70
  * @param {('hex' | 'utf8' | 'base64')} enc - Specifies the string encoding, if applicable.
53
71
  * @returns {any[]} - Array representation of the input.
54
72
  */
@@ -403,6 +421,10 @@ export class Writer {
403
421
  return ret
404
422
  }
405
423
 
424
+ toHex (): string {
425
+ return this.toArray().map((n) => n.toString(16).padStart(2, '0')).join('')
426
+ }
427
+
406
428
  write (buf: WriterChunk): this {
407
429
  this.bufs.push(buf)
408
430
  this.length += buf.length
@@ -496,8 +518,13 @@ export class Writer {
496
518
  }
497
519
 
498
520
  writeUInt64LE (n: number): this {
499
- const buf = new BigNumber(n).toArray('be', 8)
500
- this.writeReverse(buf)
521
+ if (n === -1) {
522
+ // This value is used as a dummy satoshis value when serializing OTDA placeholder output for SIGHASH_SINGLE
523
+ this.write(new Array(8).fill(0xff))
524
+ } else {
525
+ const buf = new BigNumber(n).toArray('be', 8)
526
+ this.writeReverse(buf)
527
+ }
501
528
  return this
502
529
  }
503
530
 
@@ -0,0 +1,41 @@
1
+ import type { PeerMessage } from './types.js'
2
+ import type { PubKeyHex } from '../wallet/Wallet.interfaces.js'
3
+
4
+ /**
5
+ * Abstract communications layer.
6
+ *
7
+ * This intentionally mirrors the essential subset of message-box-client / MessageBoxClient.
8
+ * RemittanceManager never talks directly to HTTP/WebSockets – it only uses this interface.
9
+ */
10
+ export interface CommsLayer {
11
+ /**
12
+ * Sends a message over the store-and-forward channel. Returns the transport messageId.
13
+ */
14
+ sendMessage: (args: { recipient: PubKeyHex, messageBox: string, body: string }, hostOverride?: string) => Promise<string>
15
+
16
+ /**
17
+ * Sends a message over the live channel (e.g. WebSocket). Returns the transport messageId.
18
+ * Implementers may throw if live sending is not possible.
19
+ * RemittanceManager will fall back to sendMessage where appropriate.
20
+ */
21
+ sendLiveMessage?: (args: { recipient: PubKeyHex, messageBox: string, body: string }, hostOverride?: string) => Promise<string>
22
+
23
+ /**
24
+ * Lists pending messages for a message box.
25
+ */
26
+ listMessages: (args: { messageBox: string, host?: string }) => Promise<PeerMessage[]>
27
+
28
+ /**
29
+ * Acknowledges messages (deletes them from the server / inbox).
30
+ */
31
+ acknowledgeMessage: (args: { messageIds: string[] }) => Promise<void>
32
+
33
+ /**
34
+ * Optional live listener.
35
+ */
36
+ listenForLiveMessages?: (args: {
37
+ messageBox: string
38
+ overrideHost?: string
39
+ onMessage: (msg: PeerMessage) => void
40
+ }) => Promise<void>
41
+ }
@@ -0,0 +1,32 @@
1
+ import type {
2
+ IdentityVerificationRequest,
3
+ IdentityVerificationResponse,
4
+ IdentityVerificationAcknowledgment,
5
+ ThreadId,
6
+ ModuleContext,
7
+ Termination
8
+ } from './types.js'
9
+ import { PubKeyHex } from '../wallet/Wallet.interfaces.js'
10
+
11
+ /**
12
+ * The Identity Layer handles identity certificate exchange and verification.
13
+ * It is optional and pluggable.
14
+ * Modules can use it to request/verify identity before accepting settlements.
15
+ *
16
+ * The runtime configuration can be used to determine whether and at what point identity
17
+ * exchange occurs: before invoicing, before settlement, etc.
18
+ *
19
+ * Makers and takers can both implement this layer as needed, and request/respond to
20
+ * identity verification at different points in the protocol.
21
+ */
22
+ export interface IdentityLayer {
23
+ /** Determine which certificates to request from a counterparty. */
24
+ determineCertificatesToRequest: (args: { counterparty: PubKeyHex, threadId: ThreadId }, ctx: ModuleContext) => Promise<IdentityVerificationRequest>
25
+ /** Respond to an incoming identity verification request. */
26
+ respondToRequest: (
27
+ args: { counterparty: PubKeyHex, threadId: ThreadId, request: IdentityVerificationRequest },
28
+ ctx: ModuleContext
29
+ ) => Promise<{ action: 'respond', response: IdentityVerificationResponse } | { action: 'terminate', termination: Termination }>
30
+ /** Assess whether received certificates satisfy the requirements for transaction settlement. */
31
+ assessReceivedCertificateSufficiency: (counterparty: PubKeyHex, received: IdentityVerificationResponse, threadId: ThreadId) => Promise<IdentityVerificationAcknowledgment | Termination>
32
+ }