@bsv/sdk 1.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 (464) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
  2. package/.github/ISSUE_TEMPLATE/discussion.md +24 -0
  3. package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +23 -0
  4. package/CHANGELOG.md +72 -0
  5. package/CONTRIBUTING.md +85 -0
  6. package/LICENSE.txt +28 -0
  7. package/README.md +87 -0
  8. package/ROADMAP.md +3 -0
  9. package/dist/cjs/mod.js +25 -0
  10. package/dist/cjs/mod.js.map +1 -0
  11. package/dist/cjs/package.json +42 -0
  12. package/dist/cjs/src/compat/BIP39.js +272 -0
  13. package/dist/cjs/src/compat/BIP39.js.map +1 -0
  14. package/dist/cjs/src/compat/BSM.js +77 -0
  15. package/dist/cjs/src/compat/BSM.js.map +1 -0
  16. package/dist/cjs/src/compat/ECIES.js +483 -0
  17. package/dist/cjs/src/compat/ECIES.js.map +1 -0
  18. package/dist/cjs/src/compat/HD.js +326 -0
  19. package/dist/cjs/src/compat/HD.js.map +1 -0
  20. package/dist/cjs/src/compat/Mnemonic.js +298 -0
  21. package/dist/cjs/src/compat/Mnemonic.js.map +1 -0
  22. package/dist/cjs/src/compat/bip-39-wordlist-en.js +2057 -0
  23. package/dist/cjs/src/compat/bip-39-wordlist-en.js.map +1 -0
  24. package/dist/cjs/src/compat/index.js +37 -0
  25. package/dist/cjs/src/compat/index.js.map +1 -0
  26. package/dist/cjs/src/messages/EncryptedMessage.js +69 -0
  27. package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -0
  28. package/dist/cjs/src/messages/SignedMessage.js +85 -0
  29. package/dist/cjs/src/messages/SignedMessage.js.map +1 -0
  30. package/dist/cjs/src/messages/index.js +29 -0
  31. package/dist/cjs/src/messages/index.js.map +1 -0
  32. package/dist/cjs/src/primitives/AESGCM.js +384 -0
  33. package/dist/cjs/src/primitives/AESGCM.js.map +1 -0
  34. package/dist/cjs/src/primitives/BasePoint.js +19 -0
  35. package/dist/cjs/src/primitives/BasePoint.js.map +1 -0
  36. package/dist/cjs/src/primitives/BigNumber.js +4269 -0
  37. package/dist/cjs/src/primitives/BigNumber.js.map +1 -0
  38. package/dist/cjs/src/primitives/Curve.js +1126 -0
  39. package/dist/cjs/src/primitives/Curve.js.map +1 -0
  40. package/dist/cjs/src/primitives/DRBG.js +99 -0
  41. package/dist/cjs/src/primitives/DRBG.js.map +1 -0
  42. package/dist/cjs/src/primitives/ECDSA.js +169 -0
  43. package/dist/cjs/src/primitives/ECDSA.js.map +1 -0
  44. package/dist/cjs/src/primitives/Hash.js +1332 -0
  45. package/dist/cjs/src/primitives/Hash.js.map +1 -0
  46. package/dist/cjs/src/primitives/JacobianPoint.js +400 -0
  47. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -0
  48. package/dist/cjs/src/primitives/K256.js +111 -0
  49. package/dist/cjs/src/primitives/K256.js.map +1 -0
  50. package/dist/cjs/src/primitives/Mersenne.js +118 -0
  51. package/dist/cjs/src/primitives/Mersenne.js.map +1 -0
  52. package/dist/cjs/src/primitives/MontgomoryMethod.js +150 -0
  53. package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -0
  54. package/dist/cjs/src/primitives/Point.js +819 -0
  55. package/dist/cjs/src/primitives/Point.js.map +1 -0
  56. package/dist/cjs/src/primitives/PrivateKey.js +190 -0
  57. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -0
  58. package/dist/cjs/src/primitives/PublicKey.js +151 -0
  59. package/dist/cjs/src/primitives/PublicKey.js.map +1 -0
  60. package/dist/cjs/src/primitives/Random.js +57 -0
  61. package/dist/cjs/src/primitives/Random.js.map +1 -0
  62. package/dist/cjs/src/primitives/ReductionContext.js +490 -0
  63. package/dist/cjs/src/primitives/ReductionContext.js.map +1 -0
  64. package/dist/cjs/src/primitives/Signature.js +220 -0
  65. package/dist/cjs/src/primitives/Signature.js.map +1 -0
  66. package/dist/cjs/src/primitives/SymmetricKey.js +69 -0
  67. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -0
  68. package/dist/cjs/src/primitives/TransactionSignature.js +172 -0
  69. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -0
  70. package/dist/cjs/src/primitives/index.js +45 -0
  71. package/dist/cjs/src/primitives/index.js.map +1 -0
  72. package/dist/cjs/src/primitives/utils.js +615 -0
  73. package/dist/cjs/src/primitives/utils.js.map +1 -0
  74. package/dist/cjs/src/script/LockingScript.js +35 -0
  75. package/dist/cjs/src/script/LockingScript.js.map +1 -0
  76. package/dist/cjs/src/script/OP.js +208 -0
  77. package/dist/cjs/src/script/OP.js.map +1 -0
  78. package/dist/cjs/src/script/Script.js +429 -0
  79. package/dist/cjs/src/script/Script.js.map +1 -0
  80. package/dist/cjs/src/script/ScriptChunk.js +3 -0
  81. package/dist/cjs/src/script/ScriptChunk.js.map +1 -0
  82. package/dist/cjs/src/script/ScriptTemplate.js +3 -0
  83. package/dist/cjs/src/script/ScriptTemplate.js.map +1 -0
  84. package/dist/cjs/src/script/Spend.js +1252 -0
  85. package/dist/cjs/src/script/Spend.js.map +1 -0
  86. package/dist/cjs/src/script/UnlockingScript.js +35 -0
  87. package/dist/cjs/src/script/UnlockingScript.js.map +1 -0
  88. package/dist/cjs/src/script/index.js +32 -0
  89. package/dist/cjs/src/script/index.js.map +1 -0
  90. package/dist/cjs/src/script/templates/P2PKH.js +98 -0
  91. package/dist/cjs/src/script/templates/P2PKH.js.map +1 -0
  92. package/dist/cjs/src/script/templates/RPuzzle.js +125 -0
  93. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -0
  94. package/dist/cjs/src/script/templates/index.js +11 -0
  95. package/dist/cjs/src/script/templates/index.js.map +1 -0
  96. package/dist/cjs/src/transaction/Broadcaster.js +3 -0
  97. package/dist/cjs/src/transaction/Broadcaster.js.map +1 -0
  98. package/dist/cjs/src/transaction/ChainTracker.js +3 -0
  99. package/dist/cjs/src/transaction/ChainTracker.js.map +1 -0
  100. package/dist/cjs/src/transaction/FeeModel.js +3 -0
  101. package/dist/cjs/src/transaction/FeeModel.js.map +1 -0
  102. package/dist/cjs/src/transaction/MerklePath.js +239 -0
  103. package/dist/cjs/src/transaction/MerklePath.js.map +1 -0
  104. package/dist/cjs/src/transaction/Transaction.js +557 -0
  105. package/dist/cjs/src/transaction/Transaction.js.map +1 -0
  106. package/dist/cjs/src/transaction/TransactionInput.js +3 -0
  107. package/dist/cjs/src/transaction/TransactionInput.js.map +1 -0
  108. package/dist/cjs/src/transaction/TransactionOutput.js +3 -0
  109. package/dist/cjs/src/transaction/TransactionOutput.js.map +1 -0
  110. package/dist/cjs/src/transaction/broadcasters/ARC.js +101 -0
  111. package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -0
  112. package/dist/cjs/src/transaction/broadcasters/index.js +9 -0
  113. package/dist/cjs/src/transaction/broadcasters/index.js.map +1 -0
  114. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js +69 -0
  115. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -0
  116. package/dist/cjs/src/transaction/fee-models/index.js +9 -0
  117. package/dist/cjs/src/transaction/fee-models/index.js.map +1 -0
  118. package/dist/cjs/src/transaction/index.js +11 -0
  119. package/dist/cjs/src/transaction/index.js.map +1 -0
  120. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  121. package/dist/esm/mod.js +9 -0
  122. package/dist/esm/mod.js.map +1 -0
  123. package/dist/esm/src/compat/BIP39.js +272 -0
  124. package/dist/esm/src/compat/BIP39.js.map +1 -0
  125. package/dist/esm/src/compat/BSM.js +45 -0
  126. package/dist/esm/src/compat/BSM.js.map +1 -0
  127. package/dist/esm/src/compat/ECIES.js +454 -0
  128. package/dist/esm/src/compat/ECIES.js.map +1 -0
  129. package/dist/esm/src/compat/HD.js +304 -0
  130. package/dist/esm/src/compat/HD.js.map +1 -0
  131. package/dist/esm/src/compat/Mnemonic.js +272 -0
  132. package/dist/esm/src/compat/Mnemonic.js.map +1 -0
  133. package/dist/esm/src/compat/bip-39-wordlist-en.js +2054 -0
  134. package/dist/esm/src/compat/bip-39-wordlist-en.js.map +1 -0
  135. package/dist/esm/src/compat/index.js +5 -0
  136. package/dist/esm/src/compat/index.js.map +1 -0
  137. package/dist/esm/src/messages/EncryptedMessage.js +61 -0
  138. package/dist/esm/src/messages/EncryptedMessage.js.map +1 -0
  139. package/dist/esm/src/messages/SignedMessage.js +77 -0
  140. package/dist/esm/src/messages/SignedMessage.js.map +1 -0
  141. package/dist/esm/src/messages/index.js +3 -0
  142. package/dist/esm/src/messages/index.js.map +1 -0
  143. package/dist/esm/src/primitives/AESGCM.js +371 -0
  144. package/dist/esm/src/primitives/AESGCM.js.map +1 -0
  145. package/dist/esm/src/primitives/BasePoint.js +16 -0
  146. package/dist/esm/src/primitives/BasePoint.js.map +1 -0
  147. package/dist/esm/src/primitives/BigNumber.js +4304 -0
  148. package/dist/esm/src/primitives/BigNumber.js.map +1 -0
  149. package/dist/esm/src/primitives/Curve.js +1141 -0
  150. package/dist/esm/src/primitives/Curve.js.map +1 -0
  151. package/dist/esm/src/primitives/DRBG.js +98 -0
  152. package/dist/esm/src/primitives/DRBG.js.map +1 -0
  153. package/dist/esm/src/primitives/ECDSA.js +161 -0
  154. package/dist/esm/src/primitives/ECDSA.js.map +1 -0
  155. package/dist/esm/src/primitives/Hash.js +1336 -0
  156. package/dist/esm/src/primitives/Hash.js.map +1 -0
  157. package/dist/esm/src/primitives/JacobianPoint.js +398 -0
  158. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -0
  159. package/dist/esm/src/primitives/K256.js +105 -0
  160. package/dist/esm/src/primitives/K256.js.map +1 -0
  161. package/dist/esm/src/primitives/Mersenne.js +117 -0
  162. package/dist/esm/src/primitives/Mersenne.js.map +1 -0
  163. package/dist/esm/src/primitives/MontgomoryMethod.js +149 -0
  164. package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -0
  165. package/dist/esm/src/primitives/Point.js +816 -0
  166. package/dist/esm/src/primitives/Point.js.map +1 -0
  167. package/dist/esm/src/primitives/PrivateKey.js +184 -0
  168. package/dist/esm/src/primitives/PrivateKey.js.map +1 -0
  169. package/dist/esm/src/primitives/PublicKey.js +145 -0
  170. package/dist/esm/src/primitives/PublicKey.js.map +1 -0
  171. package/dist/esm/src/primitives/Random.js +56 -0
  172. package/dist/esm/src/primitives/Random.js.map +1 -0
  173. package/dist/esm/src/primitives/ReductionContext.js +486 -0
  174. package/dist/esm/src/primitives/ReductionContext.js.map +1 -0
  175. package/dist/esm/src/primitives/Signature.js +223 -0
  176. package/dist/esm/src/primitives/Signature.js.map +1 -0
  177. package/dist/esm/src/primitives/SymmetricKey.js +63 -0
  178. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -0
  179. package/dist/esm/src/primitives/TransactionSignature.js +144 -0
  180. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -0
  181. package/dist/esm/src/primitives/index.js +9 -0
  182. package/dist/esm/src/primitives/index.js.map +1 -0
  183. package/dist/esm/src/primitives/utils.js +601 -0
  184. package/dist/esm/src/primitives/utils.js.map +1 -0
  185. package/dist/esm/src/script/LockingScript.js +29 -0
  186. package/dist/esm/src/script/LockingScript.js.map +1 -0
  187. package/dist/esm/src/script/OP.js +206 -0
  188. package/dist/esm/src/script/OP.js.map +1 -0
  189. package/dist/esm/src/script/Script.js +424 -0
  190. package/dist/esm/src/script/Script.js.map +1 -0
  191. package/dist/esm/src/script/ScriptChunk.js +2 -0
  192. package/dist/esm/src/script/ScriptChunk.js.map +1 -0
  193. package/dist/esm/src/script/ScriptTemplate.js +2 -0
  194. package/dist/esm/src/script/ScriptTemplate.js.map +1 -0
  195. package/dist/esm/src/script/Spend.js +1240 -0
  196. package/dist/esm/src/script/Spend.js.map +1 -0
  197. package/dist/esm/src/script/UnlockingScript.js +29 -0
  198. package/dist/esm/src/script/UnlockingScript.js.map +1 -0
  199. package/dist/esm/src/script/index.js +7 -0
  200. package/dist/esm/src/script/index.js.map +1 -0
  201. package/dist/esm/src/script/templates/P2PKH.js +92 -0
  202. package/dist/esm/src/script/templates/P2PKH.js.map +1 -0
  203. package/dist/esm/src/script/templates/RPuzzle.js +119 -0
  204. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -0
  205. package/dist/esm/src/script/templates/index.js +3 -0
  206. package/dist/esm/src/script/templates/index.js.map +1 -0
  207. package/dist/esm/src/transaction/Broadcaster.js +2 -0
  208. package/dist/esm/src/transaction/Broadcaster.js.map +1 -0
  209. package/dist/esm/src/transaction/ChainTracker.js +2 -0
  210. package/dist/esm/src/transaction/ChainTracker.js.map +1 -0
  211. package/dist/esm/src/transaction/FeeModel.js +2 -0
  212. package/dist/esm/src/transaction/FeeModel.js.map +1 -0
  213. package/dist/esm/src/transaction/MerklePath.js +237 -0
  214. package/dist/esm/src/transaction/MerklePath.js.map +1 -0
  215. package/dist/esm/src/transaction/Transaction.js +557 -0
  216. package/dist/esm/src/transaction/Transaction.js.map +1 -0
  217. package/dist/esm/src/transaction/TransactionInput.js +2 -0
  218. package/dist/esm/src/transaction/TransactionInput.js.map +1 -0
  219. package/dist/esm/src/transaction/TransactionOutput.js +2 -0
  220. package/dist/esm/src/transaction/TransactionOutput.js.map +1 -0
  221. package/dist/esm/src/transaction/broadcasters/ARC.js +100 -0
  222. package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -0
  223. package/dist/esm/src/transaction/broadcasters/index.js +2 -0
  224. package/dist/esm/src/transaction/broadcasters/index.js.map +1 -0
  225. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js +71 -0
  226. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -0
  227. package/dist/esm/src/transaction/fee-models/index.js +2 -0
  228. package/dist/esm/src/transaction/fee-models/index.js.map +1 -0
  229. package/dist/esm/src/transaction/index.js +3 -0
  230. package/dist/esm/src/transaction/index.js.map +1 -0
  231. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  232. package/dist/types/mod.d.ts +9 -0
  233. package/dist/types/mod.d.ts.map +1 -0
  234. package/dist/types/src/compat/BIP39.d.ts +132 -0
  235. package/dist/types/src/compat/BIP39.d.ts.map +1 -0
  236. package/dist/types/src/compat/BSM.d.ts +28 -0
  237. package/dist/types/src/compat/BSM.d.ts.map +1 -0
  238. package/dist/types/src/compat/ECIES.d.ts +62 -0
  239. package/dist/types/src/compat/ECIES.d.ts.map +1 -0
  240. package/dist/types/src/compat/HD.d.ts +117 -0
  241. package/dist/types/src/compat/HD.d.ts.map +1 -0
  242. package/dist/types/src/compat/Mnemonic.d.ts +132 -0
  243. package/dist/types/src/compat/Mnemonic.d.ts.map +1 -0
  244. package/dist/types/src/compat/bip-39-wordlist-en.d.ts +5 -0
  245. package/dist/types/src/compat/bip-39-wordlist-en.d.ts.map +1 -0
  246. package/dist/types/src/compat/index.d.ts +5 -0
  247. package/dist/types/src/compat/index.d.ts.map +1 -0
  248. package/dist/types/src/messages/EncryptedMessage.d.ts +20 -0
  249. package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -0
  250. package/dist/types/src/messages/SignedMessage.d.ts +21 -0
  251. package/dist/types/src/messages/SignedMessage.d.ts.map +1 -0
  252. package/dist/types/src/messages/index.d.ts +3 -0
  253. package/dist/types/src/messages/index.d.ts.map +1 -0
  254. package/dist/types/src/primitives/AESGCM.d.ts +14 -0
  255. package/dist/types/src/primitives/AESGCM.d.ts.map +1 -0
  256. package/dist/types/src/primitives/BasePoint.d.ts +22 -0
  257. package/dist/types/src/primitives/BasePoint.d.ts.map +1 -0
  258. package/dist/types/src/primitives/BigNumber.d.ts +1895 -0
  259. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -0
  260. package/dist/types/src/primitives/Curve.d.ts +55 -0
  261. package/dist/types/src/primitives/Curve.d.ts.map +1 -0
  262. package/dist/types/src/primitives/DRBG.d.ts +54 -0
  263. package/dist/types/src/primitives/DRBG.d.ts.map +1 -0
  264. package/dist/types/src/primitives/ECDSA.d.ts +39 -0
  265. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -0
  266. package/dist/types/src/primitives/Hash.d.ts +411 -0
  267. package/dist/types/src/primitives/Hash.d.ts.map +1 -0
  268. package/dist/types/src/primitives/JacobianPoint.d.ts +164 -0
  269. package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -0
  270. package/dist/types/src/primitives/K256.d.ts +53 -0
  271. package/dist/types/src/primitives/K256.d.ts.map +1 -0
  272. package/dist/types/src/primitives/Mersenne.d.ts +72 -0
  273. package/dist/types/src/primitives/Mersenne.d.ts.map +1 -0
  274. package/dist/types/src/primitives/MontgomoryMethod.d.ts +96 -0
  275. package/dist/types/src/primitives/MontgomoryMethod.d.ts.map +1 -0
  276. package/dist/types/src/primitives/Point.d.ts +303 -0
  277. package/dist/types/src/primitives/Point.d.ts.map +1 -0
  278. package/dist/types/src/primitives/PrivateKey.d.ts +143 -0
  279. package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -0
  280. package/dist/types/src/primitives/PublicKey.d.ts +108 -0
  281. package/dist/types/src/primitives/PublicKey.d.ts.map +1 -0
  282. package/dist/types/src/primitives/Random.d.ts +14 -0
  283. package/dist/types/src/primitives/Random.d.ts.map +1 -0
  284. package/dist/types/src/primitives/ReductionContext.d.ts +308 -0
  285. package/dist/types/src/primitives/ReductionContext.d.ts.map +1 -0
  286. package/dist/types/src/primitives/Signature.d.ts +100 -0
  287. package/dist/types/src/primitives/Signature.d.ts.map +1 -0
  288. package/dist/types/src/primitives/SymmetricKey.d.ts +44 -0
  289. package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -0
  290. package/dist/types/src/primitives/TransactionSignature.d.ts +36 -0
  291. package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -0
  292. package/dist/types/src/primitives/index.d.ts +9 -0
  293. package/dist/types/src/primitives/index.d.ts.map +1 -0
  294. package/dist/types/src/primitives/utils.d.ts +118 -0
  295. package/dist/types/src/primitives/utils.d.ts.map +1 -0
  296. package/dist/types/src/script/LockingScript.d.ts +25 -0
  297. package/dist/types/src/script/LockingScript.d.ts.map +1 -0
  298. package/dist/types/src/script/OP.d.ts +193 -0
  299. package/dist/types/src/script/OP.d.ts.map +1 -0
  300. package/dist/types/src/script/Script.d.ts +148 -0
  301. package/dist/types/src/script/Script.d.ts.map +1 -0
  302. package/dist/types/src/script/ScriptChunk.d.ts +8 -0
  303. package/dist/types/src/script/ScriptChunk.d.ts.map +1 -0
  304. package/dist/types/src/script/ScriptTemplate.d.ts +33 -0
  305. package/dist/types/src/script/ScriptTemplate.d.ts.map +1 -0
  306. package/dist/types/src/script/Spend.d.ts +103 -0
  307. package/dist/types/src/script/Spend.d.ts.map +1 -0
  308. package/dist/types/src/script/UnlockingScript.d.ts +25 -0
  309. package/dist/types/src/script/UnlockingScript.d.ts.map +1 -0
  310. package/dist/types/src/script/index.d.ts +8 -0
  311. package/dist/types/src/script/index.d.ts.map +1 -0
  312. package/dist/types/src/script/templates/P2PKH.d.ts +37 -0
  313. package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -0
  314. package/dist/types/src/script/templates/RPuzzle.d.ts +47 -0
  315. package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -0
  316. package/dist/types/src/script/templates/index.d.ts +3 -0
  317. package/dist/types/src/script/templates/index.d.ts.map +1 -0
  318. package/dist/types/src/transaction/Broadcaster.d.ts +39 -0
  319. package/dist/types/src/transaction/Broadcaster.d.ts.map +1 -0
  320. package/dist/types/src/transaction/ChainTracker.d.ts +23 -0
  321. package/dist/types/src/transaction/ChainTracker.d.ts.map +1 -0
  322. package/dist/types/src/transaction/FeeModel.d.ts +12 -0
  323. package/dist/types/src/transaction/FeeModel.d.ts.map +1 -0
  324. package/dist/types/src/transaction/MerklePath.d.ts +91 -0
  325. package/dist/types/src/transaction/MerklePath.d.ts.map +1 -0
  326. package/dist/types/src/transaction/Transaction.d.ts +181 -0
  327. package/dist/types/src/transaction/Transaction.d.ts.map +1 -0
  328. package/dist/types/src/transaction/TransactionInput.d.ts +63 -0
  329. package/dist/types/src/transaction/TransactionInput.d.ts.map +1 -0
  330. package/dist/types/src/transaction/TransactionOutput.d.ts +36 -0
  331. package/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -0
  332. package/dist/types/src/transaction/broadcasters/ARC.d.ts +28 -0
  333. package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -0
  334. package/dist/types/src/transaction/broadcasters/index.d.ts +2 -0
  335. package/dist/types/src/transaction/broadcasters/index.d.ts.map +1 -0
  336. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts +26 -0
  337. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -0
  338. package/dist/types/src/transaction/fee-models/index.d.ts +2 -0
  339. package/dist/types/src/transaction/fee-models/index.d.ts.map +1 -0
  340. package/dist/types/src/transaction/index.d.ts +7 -0
  341. package/dist/types/src/transaction/index.d.ts.map +1 -0
  342. package/dist/types/tsconfig.types.tsbuildinfo +1 -0
  343. package/docs/README.md +9 -0
  344. package/docs/compat.md +2856 -0
  345. package/docs/getting-started/COMMONJS.md +94 -0
  346. package/docs/getting-started/REACT-TS.md +131 -0
  347. package/docs/getting-started/TS-NODE.md +106 -0
  348. package/docs/getting-started/VUE.md +103 -0
  349. package/docs/messages.md +146 -0
  350. package/docs/primitives.md +7440 -0
  351. package/docs/script.md +766 -0
  352. package/docs/transaction.md +741 -0
  353. package/jest.config.js +6 -0
  354. package/mod.ts +8 -0
  355. package/package.json +137 -0
  356. package/src/compat/BSM.ts +51 -0
  357. package/src/compat/ECIES.ts +557 -0
  358. package/src/compat/HD.ts +348 -0
  359. package/src/compat/Mnemonic.ts +295 -0
  360. package/src/compat/__tests/BSM.test.ts +38 -0
  361. package/src/compat/__tests/ECIES.test.ts +90 -0
  362. package/src/compat/__tests/HD.test.ts +405 -0
  363. package/src/compat/__tests/Mnemonic.test.ts +177 -0
  364. package/src/compat/__tests/Mnemonic.vectors.ts +172 -0
  365. package/src/compat/bip-39-wordlist-en.ts +2053 -0
  366. package/src/compat/index.ts +4 -0
  367. package/src/messages/EncryptedMessage.ts +70 -0
  368. package/src/messages/SignedMessage.ts +87 -0
  369. package/src/messages/__tests/EncryptedMessage.test.ts +36 -0
  370. package/src/messages/__tests/SignedMessage.test.ts +53 -0
  371. package/src/messages/index.ts +2 -0
  372. package/src/primitives/AESGCM.ts +479 -0
  373. package/src/primitives/BasePoint.ts +21 -0
  374. package/src/primitives/BigNumber.ts +4619 -0
  375. package/src/primitives/Curve.ts +1163 -0
  376. package/src/primitives/DRBG.ts +102 -0
  377. package/src/primitives/ECDSA.ts +164 -0
  378. package/src/primitives/Hash.ts +1420 -0
  379. package/src/primitives/JacobianPoint.ts +410 -0
  380. package/src/primitives/K256.ts +116 -0
  381. package/src/primitives/Mersenne.ts +123 -0
  382. package/src/primitives/MontgomoryMethod.ts +160 -0
  383. package/src/primitives/Point.ts +852 -0
  384. package/src/primitives/PrivateKey.ts +195 -0
  385. package/src/primitives/PublicKey.ts +154 -0
  386. package/src/primitives/Random.ts +55 -0
  387. package/src/primitives/ReductionContext.ts +528 -0
  388. package/src/primitives/Signature.ts +235 -0
  389. package/src/primitives/SymmetricKey.ts +75 -0
  390. package/src/primitives/TransactionSignature.ts +189 -0
  391. package/src/primitives/__tests/AESGCM.test.ts +338 -0
  392. package/src/primitives/__tests/BRC42.private.vectors.ts +33 -0
  393. package/src/primitives/__tests/BRC42.public.vectors.ts +33 -0
  394. package/src/primitives/__tests/BigNumber.arithmatic.test.ts +572 -0
  395. package/src/primitives/__tests/BigNumber.binary.test.ts +203 -0
  396. package/src/primitives/__tests/BigNumber.constructor.test.ts +176 -0
  397. package/src/primitives/__tests/BigNumber.dhGroup.test.ts +18 -0
  398. package/src/primitives/__tests/BigNumber.fixtures.ts +264 -0
  399. package/src/primitives/__tests/BigNumber.serializers.test.ts +157 -0
  400. package/src/primitives/__tests/BigNumber.utils.test.ts +347 -0
  401. package/src/primitives/__tests/Curve.unit.test.ts +192 -0
  402. package/src/primitives/__tests/DRBG.test.ts +18 -0
  403. package/src/primitives/__tests/DRBG.vectors.ts +167 -0
  404. package/src/primitives/__tests/ECDH.test.ts +31 -0
  405. package/src/primitives/__tests/ECDSA.test.ts +58 -0
  406. package/src/primitives/__tests/HMAC.test.ts +59 -0
  407. package/src/primitives/__tests/Hash.test.ts +121 -0
  408. package/src/primitives/__tests/PBKDF2.vectors.ts +119 -0
  409. package/src/primitives/__tests/PrivateKey.test.ts +17 -0
  410. package/src/primitives/__tests/PublicKey.test.ts +66 -0
  411. package/src/primitives/__tests/Random.test.ts +14 -0
  412. package/src/primitives/__tests/Reader.test.ts +296 -0
  413. package/src/primitives/__tests/ReductionContext.test.ts +279 -0
  414. package/src/primitives/__tests/SymmetricKey.test.ts +58 -0
  415. package/src/primitives/__tests/SymmetricKey.vectors.ts +40 -0
  416. package/src/primitives/__tests/Writer.test.ts +198 -0
  417. package/src/primitives/__tests/sighash.vectors.ts +3503 -0
  418. package/src/primitives/__tests/utils.test.ts +108 -0
  419. package/src/primitives/index.ts +8 -0
  420. package/src/primitives/utils.ts +665 -0
  421. package/src/script/LockingScript.ts +30 -0
  422. package/src/script/OP.ts +219 -0
  423. package/src/script/Script.ts +426 -0
  424. package/src/script/ScriptChunk.ts +7 -0
  425. package/src/script/ScriptTemplate.ts +36 -0
  426. package/src/script/Spend.ts +1379 -0
  427. package/src/script/UnlockingScript.ts +30 -0
  428. package/src/script/__tests/Script.test.ts +369 -0
  429. package/src/script/__tests/Spend.test.ts +248 -0
  430. package/src/script/__tests/script.invalid.vectors.ts +925 -0
  431. package/src/script/__tests/script.valid.vectors.ts +1120 -0
  432. package/src/script/__tests/scriptFromVector.ts +42 -0
  433. package/src/script/__tests/spend.valid.vectors.ts +2288 -0
  434. package/src/script/index.ts +7 -0
  435. package/src/script/templates/P2PKH.ts +109 -0
  436. package/src/script/templates/RPuzzle.ts +140 -0
  437. package/src/script/templates/index.ts +2 -0
  438. package/src/transaction/Broadcaster.ts +42 -0
  439. package/src/transaction/ChainTracker.ts +22 -0
  440. package/src/transaction/FeeModel.ts +13 -0
  441. package/src/transaction/MerklePath.ts +259 -0
  442. package/src/transaction/Transaction.ts +602 -0
  443. package/src/transaction/TransactionInput.ts +63 -0
  444. package/src/transaction/TransactionOutput.ts +37 -0
  445. package/src/transaction/__tests/MerklePath.test.ts +181 -0
  446. package/src/transaction/__tests/Transaction.test.ts +413 -0
  447. package/src/transaction/__tests/bigtx.vectors.ts +4 -0
  448. package/src/transaction/__tests/bump.invalid.vectors.ts +8 -0
  449. package/src/transaction/__tests/bump.valid.vectors.ts +4 -0
  450. package/src/transaction/__tests/tx.invalid.vectors.ts +281 -0
  451. package/src/transaction/__tests/tx.valid.vectors.ts +364 -0
  452. package/src/transaction/broadcasters/ARC.ts +106 -0
  453. package/src/transaction/broadcasters/__tests/ARC.test.ts +115 -0
  454. package/src/transaction/broadcasters/index.ts +1 -0
  455. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +71 -0
  456. package/src/transaction/fee-models/index.ts +1 -0
  457. package/src/transaction/index.ts +6 -0
  458. package/ts2md.json +5 -0
  459. package/tsconfig.base.json +26 -0
  460. package/tsconfig.cjs.json +11 -0
  461. package/tsconfig.eslint.json +12 -0
  462. package/tsconfig.esm.json +9 -0
  463. package/tsconfig.json +17 -0
  464. package/tsconfig.types.json +11 -0
@@ -0,0 +1,601 @@
1
+ import BigNumber from './BigNumber.js';
2
+ import { hash256 } from './Hash.js';
3
+ /**
4
+ * Appends a '0' to a single-character word to ensure it has two characters.
5
+ * @param {string} word - The input word.
6
+ * @returns {string} - The word with a leading '0' if it's a single character; otherwise, the original word.
7
+ */
8
+ export const zero2 = (word) => {
9
+ if (word.length === 1) {
10
+ return '0' + word;
11
+ }
12
+ else {
13
+ return word;
14
+ }
15
+ };
16
+ /**
17
+ * Converts an array of numbers to a hexadecimal string representation.
18
+ * @param {number[]} msg - The input array of numbers.
19
+ * @returns {string} - The hexadecimal string representation of the input array.
20
+ */
21
+ export const toHex = (msg) => {
22
+ let res = '';
23
+ for (let i = 0; i < msg.length; i++) {
24
+ res += zero2(msg[i].toString(16));
25
+ }
26
+ return res;
27
+ };
28
+ /**
29
+ * Converts various message formats into an array of numbers.
30
+ * Supports arrays, hexadecimal strings, base64 strings, and UTF-8 strings.
31
+ *
32
+ * @param {any} msg - The input message (array or string).
33
+ * @param {('hex' | 'utf8')} enc - Specifies the string encoding, if applicable.
34
+ * @returns {any[]} - Array representation of the input.
35
+ */
36
+ export const toArray = (msg, enc) => {
37
+ // Return a copy if already an array
38
+ if (Array.isArray(msg)) {
39
+ return msg.slice();
40
+ }
41
+ // Return empty array for falsy values
42
+ if (!msg) {
43
+ return [];
44
+ }
45
+ const res = [];
46
+ // Convert non-string messages to numbers
47
+ if (typeof msg !== 'string') {
48
+ for (let i = 0; i < msg.length; i++) {
49
+ res[i] = msg[i] | 0;
50
+ }
51
+ return res;
52
+ }
53
+ // Handle hexadecimal encoding
54
+ if (enc === 'hex') {
55
+ msg = msg.replace(/[^a-z0-9]+/ig, '');
56
+ if (msg.length % 2 !== 0) {
57
+ msg = '0' + msg;
58
+ }
59
+ for (let i = 0; i < msg.length; i += 2) {
60
+ res.push(parseInt(msg[i] + msg[i + 1], 16));
61
+ }
62
+ // Handle base64
63
+ }
64
+ else if (enc === 'base64') {
65
+ const base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
66
+ const result = [];
67
+ let currentBit = 0;
68
+ let currentByte = 0;
69
+ for (const char of msg.replace(/=+$/, '')) {
70
+ currentBit = (currentBit << 6) | base64Chars.indexOf(char);
71
+ currentByte += 6;
72
+ if (currentByte >= 8) {
73
+ currentByte -= 8;
74
+ result.push((currentBit >> currentByte) & 0xFF);
75
+ currentBit &= (1 << currentByte) - 1;
76
+ }
77
+ }
78
+ return result;
79
+ }
80
+ else {
81
+ // Handle UTF-8 encoding
82
+ for (let i = 0; i < msg.length; i++) {
83
+ const c = msg.charCodeAt(i);
84
+ const hi = c >> 8;
85
+ const lo = c & 0xff;
86
+ if (hi) {
87
+ res.push(hi, lo);
88
+ }
89
+ else {
90
+ res.push(lo);
91
+ }
92
+ }
93
+ }
94
+ return res;
95
+ };
96
+ /**
97
+ * Converts an array of numbers to a UTF-8 encoded string.
98
+ * @param {number[]} arr - The input array of numbers.
99
+ * @returns {string} - The UTF-8 encoded string.
100
+ */
101
+ const toUTF8 = (arr) => {
102
+ let result = '';
103
+ for (let i = 0; i < arr.length; i++) {
104
+ const byte = arr[i];
105
+ // 1-byte sequence (0xxxxxxx)
106
+ if (byte <= 0x7F) {
107
+ result += String.fromCharCode(byte);
108
+ }
109
+ // 2-byte sequence (110xxxxx 10xxxxxx)
110
+ else if (byte >= 0xC0 && byte <= 0xDF) {
111
+ const byte2 = arr[++i];
112
+ const codePoint = ((byte & 0x1F) << 6) | (byte2 & 0x3F);
113
+ result += String.fromCharCode(codePoint);
114
+ }
115
+ // 3-byte sequence (1110xxxx 10xxxxxx 10xxxxxx)
116
+ else if (byte >= 0xE0 && byte <= 0xEF) {
117
+ const byte2 = arr[++i];
118
+ const byte3 = arr[++i];
119
+ const codePoint = ((byte & 0x0F) << 12) | ((byte2 & 0x3F) << 6) | (byte3 & 0x3F);
120
+ result += String.fromCharCode(codePoint);
121
+ }
122
+ // 4-byte sequence (11110xxx 10xxxxxx 10xxxxxx 10xxxxxx)
123
+ else if (byte >= 0xF0 && byte <= 0xF7) {
124
+ const byte2 = arr[++i];
125
+ const byte3 = arr[++i];
126
+ const byte4 = arr[++i];
127
+ const codePoint = ((byte & 0x07) << 18) | ((byte2 & 0x3F) << 12) | ((byte3 & 0x3F) << 6) | (byte4 & 0x3F);
128
+ // Convert to UTF-16 surrogate pair
129
+ const surrogate1 = 0xD800 + ((codePoint - 0x10000) >> 10);
130
+ const surrogate2 = 0xDC00 + ((codePoint - 0x10000) & 0x3FF);
131
+ result += String.fromCharCode(surrogate1, surrogate2);
132
+ }
133
+ }
134
+ return result;
135
+ };
136
+ /**
137
+ * Encodes an array of numbers into a specified encoding ('hex' or 'utf8'). If no encoding is provided, returns the original array.
138
+ * @param {number[]} arr - The input array of numbers.
139
+ * @param {('hex' | 'utf8')} enc - The desired encoding.
140
+ * @returns {string | number[]} - The encoded message as a string (for 'hex' and 'utf8') or the original array.
141
+ */
142
+ export const encode = (arr, enc) => {
143
+ switch (enc) {
144
+ case 'hex':
145
+ return toHex(arr);
146
+ case 'utf8':
147
+ return toUTF8(arr);
148
+ // If no encoding is provided, return the original array
149
+ default:
150
+ return arr;
151
+ }
152
+ };
153
+ /**
154
+ * Converts an array of bytes (each between 0 and 255) into a base64 encoded string.
155
+ *
156
+ * @param {number[]} byteArray - An array of numbers where each number is a byte (0-255).
157
+ * @returns {string} The base64 encoded string.
158
+ *
159
+ * @example
160
+ * const bytes = [72, 101, 108, 108, 111]; // Represents the string "Hello"
161
+ * console.log(toBase64(bytes)); // Outputs: SGVsbG8=
162
+ */
163
+ export function toBase64(byteArray) {
164
+ const base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
165
+ let result = '';
166
+ let i;
167
+ for (i = 0; i < byteArray.length; i += 3) {
168
+ const byte1 = byteArray[i];
169
+ const byte2 = i + 1 < byteArray.length ? byteArray[i + 1] : 0;
170
+ const byte3 = i + 2 < byteArray.length ? byteArray[i + 2] : 0;
171
+ const encoded1 = byte1 >> 2;
172
+ const encoded2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);
173
+ const encoded3 = ((byte2 & 0x0F) << 2) | (byte3 >> 6);
174
+ const encoded4 = byte3 & 0x3F;
175
+ result += base64Chars.charAt(encoded1) + base64Chars.charAt(encoded2);
176
+ result += i + 1 < byteArray.length ? base64Chars.charAt(encoded3) : '=';
177
+ result += i + 2 < byteArray.length ? base64Chars.charAt(encoded4) : '=';
178
+ }
179
+ return result;
180
+ }
181
+ const base58chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
182
+ /**
183
+ * Converts a string from base58 to a binary array
184
+ * @param str - The string representation
185
+ * @returns The binary representation
186
+ */
187
+ export const fromBase58 = (str) => {
188
+ if (!str || typeof str !== "string")
189
+ throw new Error(`Expected base58 string but got “${str}”`);
190
+ if (str.match(/[IOl0]/gmu))
191
+ throw new Error(`Invalid base58 character “${str.match(/[IOl0]/gmu)}”`);
192
+ const lz = str.match(/^1+/gmu);
193
+ const psz = lz ? lz[0].length : 0;
194
+ const size = ((str.length - psz) * (Math.log(58) / Math.log(256)) + 1) >>> 0;
195
+ const uint8 = new Uint8Array([
196
+ ...new Uint8Array(psz),
197
+ ...str
198
+ .match(/.{1}/gmu)
199
+ .map((i) => base58chars.indexOf(i))
200
+ .reduce((acc, i) => {
201
+ acc = acc.map((j) => {
202
+ const x = j * 58 + i;
203
+ i = x >> 8;
204
+ return x;
205
+ });
206
+ return acc;
207
+ }, new Uint8Array(size))
208
+ .reverse()
209
+ .filter(((lastValue) => (value) =>
210
+ // @ts-ignore
211
+ (lastValue = lastValue || value))(false))
212
+ ]);
213
+ return [...uint8];
214
+ };
215
+ /**
216
+ * Converts a binary array into a base58 string
217
+ * @param bin - The binary array to convert to base58
218
+ * @returns The base58 string representation
219
+ */
220
+ export const toBase58 = (bin) => {
221
+ const base58Map = Array(256).fill(-1);
222
+ for (let i = 0; i < base58chars.length; ++i)
223
+ base58Map[base58chars.charCodeAt(i)] = i;
224
+ const result = [];
225
+ for (const byte of bin) {
226
+ let carry = byte;
227
+ for (let j = 0; j < result.length; ++j) {
228
+ // @ts-ignore
229
+ const x = (base58Map[result[j]] << 8) + carry;
230
+ result[j] = base58chars.charCodeAt(x % 58);
231
+ carry = (x / 58) | 0;
232
+ }
233
+ while (carry) {
234
+ result.push(base58chars.charCodeAt(carry % 58));
235
+ carry = (carry / 58) | 0;
236
+ }
237
+ }
238
+ for (const byte of bin)
239
+ if (byte)
240
+ break;
241
+ else
242
+ result.push("1".charCodeAt(0));
243
+ result.reverse();
244
+ return String.fromCharCode(...result);
245
+ };
246
+ /**
247
+ * Converts a binary array into a base58check string with a checksum
248
+ * @param bin - The binary array to convert to base58check
249
+ * @returns The base58check string representation
250
+ */
251
+ export const toBase58Check = (bin, prefix = [0]) => {
252
+ let hash = hash256([...prefix, ...bin]);
253
+ hash = [...prefix, ...bin, ...hash.slice(0, 4)];
254
+ return toBase58(hash);
255
+ };
256
+ /**
257
+ * Converts a base58check string into a binary array after validating the checksum
258
+ * @param str - The base58check string to convert to binary
259
+ * @param enc - If hex, the return values will be hex strings, arrays of numbers otherwise
260
+ * @param prefixLength - The length of the prefix. Optional, defaults to 1.
261
+ * @returns The binary array representation
262
+ */
263
+ export const fromBase58Check = (str, enc, prefixLength = 1) => {
264
+ const bin = fromBase58(str);
265
+ let prefix = bin.slice(0, prefixLength);
266
+ let data = bin.slice(prefixLength, -4);
267
+ let hash = [...prefix, ...data];
268
+ hash = hash256(hash);
269
+ bin.slice(-4).forEach((check, index) => {
270
+ if (check !== hash[index]) {
271
+ throw new Error('Invalid checksum');
272
+ }
273
+ });
274
+ if (enc === 'hex') {
275
+ prefix = toHex(prefix);
276
+ data = toHex(data);
277
+ }
278
+ return { prefix, data };
279
+ };
280
+ export class Writer {
281
+ bufs;
282
+ constructor(bufs) {
283
+ this.bufs = bufs || [];
284
+ }
285
+ getLength() {
286
+ let len = 0;
287
+ for (const buf of this.bufs) {
288
+ len = len + buf.length;
289
+ }
290
+ return len;
291
+ }
292
+ toArray() {
293
+ const ret = [];
294
+ for (const x of this.bufs) {
295
+ ret.push(...x);
296
+ }
297
+ return ret;
298
+ }
299
+ write(buf) {
300
+ this.bufs.push(buf);
301
+ return this;
302
+ }
303
+ writeReverse(buf) {
304
+ const buf2 = new Array(buf.length);
305
+ for (let i = 0; i < buf2.length; i++) {
306
+ buf2[i] = buf[buf.length - 1 - i];
307
+ }
308
+ this.bufs.push(buf2);
309
+ return this;
310
+ }
311
+ writeUInt8(n) {
312
+ const buf = new Array(1);
313
+ buf[0] = n;
314
+ this.write(buf);
315
+ return this;
316
+ }
317
+ writeInt8(n) {
318
+ const buf = new Array(1);
319
+ buf[0] = n & 0xFF;
320
+ this.write(buf);
321
+ return this;
322
+ }
323
+ writeUInt16BE(n) {
324
+ this.bufs.push([
325
+ (n >> 8) & 0xFF,
326
+ n & 0xFF // low byte is just the last 8 bits
327
+ ]);
328
+ return this;
329
+ }
330
+ writeInt16BE(n) {
331
+ return this.writeUInt16BE(n & 0xFFFF); // Mask with 0xFFFF to get the lower 16 bits
332
+ }
333
+ writeUInt16LE(n) {
334
+ this.bufs.push([
335
+ n & 0xFF,
336
+ (n >> 8) & 0xFF // shift right 8 bits to get the high byte
337
+ ]);
338
+ return this;
339
+ }
340
+ writeInt16LE(n) {
341
+ return this.writeUInt16LE(n & 0xFFFF); // Mask with 0xFFFF to get the lower 16 bits
342
+ }
343
+ writeUInt32BE(n) {
344
+ this.bufs.push([
345
+ (n >> 24) & 0xFF,
346
+ (n >> 16) & 0xFF,
347
+ (n >> 8) & 0xFF,
348
+ n & 0xFF // lowest byte
349
+ ]);
350
+ return this;
351
+ }
352
+ writeInt32BE(n) {
353
+ return this.writeUInt32BE(n >>> 0); // Using unsigned right shift to handle negative numbers
354
+ }
355
+ writeUInt32LE(n) {
356
+ this.bufs.push([
357
+ n & 0xFF,
358
+ (n >> 8) & 0xFF,
359
+ (n >> 16) & 0xFF,
360
+ (n >> 24) & 0xFF // highest byte
361
+ ]);
362
+ return this;
363
+ }
364
+ writeInt32LE(n) {
365
+ return this.writeUInt32LE(n >>> 0); // Using unsigned right shift to handle negative numbers
366
+ }
367
+ writeUInt64BEBn(bn) {
368
+ const buf = bn.toArray('be', 8);
369
+ this.write(buf);
370
+ return this;
371
+ }
372
+ writeUInt64LEBn(bn) {
373
+ const buf = bn.toArray('be', 8);
374
+ this.writeReverse(buf);
375
+ return this;
376
+ }
377
+ writeUInt64LE(n) {
378
+ const buf = new BigNumber(n).toArray('be', 8);
379
+ this.writeReverse(buf);
380
+ return this;
381
+ }
382
+ writeVarIntNum(n) {
383
+ const buf = Writer.varIntNum(n);
384
+ this.write(buf);
385
+ return this;
386
+ }
387
+ writeVarIntBn(bn) {
388
+ const buf = Writer.varIntBn(bn);
389
+ this.write(buf);
390
+ return this;
391
+ }
392
+ static varIntNum(n) {
393
+ let buf;
394
+ if (n < 253) {
395
+ buf = [n]; // 1 byte
396
+ }
397
+ else if (n < 0x10000) {
398
+ // 253 followed by the number in little-endian format
399
+ buf = [
400
+ 253,
401
+ n & 0xFF,
402
+ (n >> 8) & 0xFF // high byte
403
+ ];
404
+ }
405
+ else if (n < 0x100000000) {
406
+ // 254 followed by the number in little-endian format
407
+ buf = [
408
+ 254,
409
+ n & 0xFF,
410
+ (n >> 8) & 0xFF,
411
+ (n >> 16) & 0xFF,
412
+ (n >> 24) & 0xFF
413
+ ];
414
+ }
415
+ else {
416
+ // 255 followed by the number in little-endian format
417
+ // Since JavaScript bitwise operations work on 32 bits, we need to handle 64-bit numbers in two parts
418
+ const low = n & 0xFFFFFFFF;
419
+ const high = Math.floor(n / 0x100000000) & 0xFFFFFFFF;
420
+ buf = [
421
+ 255,
422
+ low & 0xFF,
423
+ (low >> 8) & 0xFF,
424
+ (low >> 16) & 0xFF,
425
+ (low >> 24) & 0xFF,
426
+ high & 0xFF,
427
+ (high >> 8) & 0xFF,
428
+ (high >> 16) & 0xFF,
429
+ (high >> 24) & 0xFF
430
+ ];
431
+ }
432
+ return buf;
433
+ }
434
+ static varIntBn(bn) {
435
+ let buf;
436
+ if (bn.ltn(253)) {
437
+ const n = bn.toNumber();
438
+ // No need for bitwise operation as the value is within a byte's range
439
+ buf = [n];
440
+ }
441
+ else if (bn.ltn(0x10000)) {
442
+ const n = bn.toNumber();
443
+ // Value fits in a uint16
444
+ buf = [253, n & 0xFF, (n >> 8) & 0xFF];
445
+ }
446
+ else if (bn.lt(new BigNumber(0x100000000))) {
447
+ const n = bn.toNumber();
448
+ // Value fits in a uint32
449
+ buf = [254, n & 0xFF, (n >> 8) & 0xFF, (n >> 16) & 0xFF, (n >> 24) & 0xFF];
450
+ }
451
+ else {
452
+ const bw = new Writer();
453
+ bw.writeUInt8(255);
454
+ bw.writeUInt64LEBn(bn);
455
+ buf = bw.toArray();
456
+ }
457
+ return buf;
458
+ }
459
+ }
460
+ export class Reader {
461
+ bin;
462
+ pos;
463
+ constructor(bin = [], pos = 0) {
464
+ this.bin = bin;
465
+ this.pos = pos;
466
+ }
467
+ eof() {
468
+ return this.pos >= this.bin.length;
469
+ }
470
+ read(len = this.bin.length) {
471
+ const bin = this.bin.slice(this.pos, this.pos + len);
472
+ this.pos = this.pos + len;
473
+ return bin;
474
+ }
475
+ readReverse(len = this.bin.length) {
476
+ const bin = this.bin.slice(this.pos, this.pos + len);
477
+ this.pos = this.pos + len;
478
+ const buf2 = new Array(bin.length);
479
+ for (let i = 0; i < buf2.length; i++) {
480
+ buf2[i] = bin[bin.length - 1 - i];
481
+ }
482
+ return buf2;
483
+ }
484
+ readUInt8() {
485
+ const val = this.bin[this.pos];
486
+ this.pos += 1;
487
+ return val;
488
+ }
489
+ readInt8() {
490
+ const val = this.bin[this.pos];
491
+ this.pos += 1;
492
+ // If the sign bit is set, convert to negative value
493
+ return (val & 0x80) !== 0 ? val - 0x100 : val;
494
+ }
495
+ readUInt16BE() {
496
+ const val = (this.bin[this.pos] << 8) | this.bin[this.pos + 1];
497
+ this.pos += 2;
498
+ return val;
499
+ }
500
+ readInt16BE() {
501
+ const val = this.readUInt16BE();
502
+ // If the sign bit is set, convert to negative value
503
+ return (val & 0x8000) !== 0 ? val - 0x10000 : val;
504
+ }
505
+ readUInt16LE() {
506
+ const val = this.bin[this.pos] | (this.bin[this.pos + 1] << 8);
507
+ this.pos += 2;
508
+ return val;
509
+ }
510
+ readInt16LE() {
511
+ const val = this.readUInt16LE();
512
+ // If the sign bit is set, convert to negative value
513
+ const x = (val & 0x8000) !== 0 ? val - 0x10000 : val;
514
+ return x;
515
+ }
516
+ readUInt32BE() {
517
+ const val = (this.bin[this.pos] * 0x1000000) + // Shift the first byte by 24 bits
518
+ ((this.bin[this.pos + 1] << 16) | // Shift the second byte by 16 bits
519
+ (this.bin[this.pos + 2] << 8) | // Shift the third byte by 8 bits
520
+ this.bin[this.pos + 3]); // The fourth byte
521
+ this.pos += 4;
522
+ return val;
523
+ }
524
+ readInt32BE() {
525
+ const val = this.readUInt32BE();
526
+ // If the sign bit is set, convert to negative value
527
+ return (val & 0x80000000) !== 0 ? val - 0x100000000 : val;
528
+ }
529
+ readUInt32LE() {
530
+ const val = (this.bin[this.pos] |
531
+ (this.bin[this.pos + 1] << 8) |
532
+ (this.bin[this.pos + 2] << 16) |
533
+ (this.bin[this.pos + 3] << 24)) >>> 0;
534
+ this.pos += 4;
535
+ return val;
536
+ }
537
+ readInt32LE() {
538
+ const val = this.readUInt32LE();
539
+ // Explicitly check if the sign bit is set and then convert to a negative value
540
+ return (val & 0x80000000) !== 0 ? val - 0x100000000 : val;
541
+ }
542
+ readUInt64BEBn() {
543
+ const bin = this.bin.slice(this.pos, this.pos + 8);
544
+ const bn = new BigNumber(bin);
545
+ this.pos = this.pos + 8;
546
+ return bn;
547
+ }
548
+ readUInt64LEBn() {
549
+ const bin = this.readReverse(8);
550
+ const bn = new BigNumber(bin);
551
+ return bn;
552
+ }
553
+ readVarIntNum() {
554
+ const first = this.readUInt8();
555
+ let bn;
556
+ let n;
557
+ switch (first) {
558
+ case 0xfd:
559
+ return this.readUInt16LE();
560
+ case 0xfe:
561
+ return this.readUInt32LE();
562
+ case 0xff:
563
+ bn = this.readUInt64LEBn();
564
+ if (bn.lte(new BigNumber(2).pow(new BigNumber(53)))) {
565
+ return bn.toNumber();
566
+ }
567
+ else {
568
+ throw new Error('number too large to retain precision - use readVarIntBn');
569
+ }
570
+ default:
571
+ return first;
572
+ }
573
+ }
574
+ readVarInt() {
575
+ const first = this.bin[this.pos];
576
+ switch (first) {
577
+ case 0xfd:
578
+ return this.read(1 + 2);
579
+ case 0xfe:
580
+ return this.read(1 + 4);
581
+ case 0xff:
582
+ return this.read(1 + 8);
583
+ default:
584
+ return this.read(1);
585
+ }
586
+ }
587
+ readVarIntBn() {
588
+ const first = this.readUInt8();
589
+ switch (first) {
590
+ case 0xfd:
591
+ return new BigNumber(this.readUInt16LE());
592
+ case 0xfe:
593
+ return new BigNumber(this.readUInt32LE());
594
+ case 0xff:
595
+ return this.readUInt64LEBn();
596
+ default:
597
+ return new BigNumber(first);
598
+ }
599
+ }
600
+ }
601
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/primitives/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import Script from './Script.js';
2
+ /**
3
+ * The LockingScript class represents a locking script in a Bitcoin SV transaction.
4
+ * It extends the Script class and is used specifically for output scripts that lock funds.
5
+ *
6
+ * Inherits all properties and methods from the Script class.
7
+ *
8
+ * @extends {Script}
9
+ * @see {@link Script} for more information on Script.
10
+ */
11
+ export default class LockingScript extends Script {
12
+ /**
13
+ * @method isLockingScript
14
+ * Determines if the script is a locking script.
15
+ * @returns {boolean} Always returns true for a LockingScript instance.
16
+ */
17
+ isLockingScript() {
18
+ return true;
19
+ }
20
+ /**
21
+ * @method isUnlockingScript
22
+ * Determines if the script is an unlocking script.
23
+ * @returns {boolean} Always returns false for a LockingScript instance.
24
+ */
25
+ isUnlockingScript() {
26
+ return false;
27
+ }
28
+ }
29
+ //# sourceMappingURL=LockingScript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LockingScript.js","sourceRoot":"","sources":["../../../../src/script/LockingScript.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,MAAM;IAC/C;;;;OAIG;IACH,eAAe;QACb,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACf,OAAO,KAAK,CAAA;IACd,CAAC;CACF"}