@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
package/docs/script.md ADDED
@@ -0,0 +1,766 @@
1
+ # API
2
+
3
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
4
+
5
+ ## Interfaces
6
+
7
+ | |
8
+ | --- |
9
+ | [ScriptChunk](#interface-scriptchunk) |
10
+ | [ScriptTemplate](#interface-scripttemplate) |
11
+
12
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
13
+
14
+ ---
15
+
16
+ ### Interface: ScriptChunk
17
+
18
+ A representation of a chunk of a script, which includes an opcode. For push operations, the associated data to push onto the stack is also included.
19
+
20
+ ```ts
21
+ export default interface ScriptChunk {
22
+ op: number;
23
+ data?: number[];
24
+ }
25
+ ```
26
+
27
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
28
+
29
+ ---
30
+ ### Interface: ScriptTemplate
31
+
32
+ ```ts
33
+ export default interface ScriptTemplate {
34
+ lock: (...params: any) => LockingScript;
35
+ unlock: (...params: any) => {
36
+ sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
37
+ estimateLength: (tx: Transaction, inputIndex: number) => Promise<number>;
38
+ };
39
+ }
40
+ ```
41
+
42
+ <details>
43
+
44
+ <summary>Interface ScriptTemplate Details</summary>
45
+
46
+ #### Property lock
47
+
48
+ Creates a locking script with the given parameters.
49
+
50
+ ```ts
51
+ lock: (...params: any) => LockingScript
52
+ ```
53
+
54
+ #### Property unlock
55
+
56
+ Creates a function that generates an unlocking script along with its signature and length estimation.
57
+
58
+ This method returns an object containing two functions:
59
+ 1. `sign` - A function that, when called with a transaction and an input index, returns an UnlockingScript instance.
60
+ 2. `estimateLength` - A function that returns the estimated length of the unlocking script in bytes.
61
+
62
+ ```ts
63
+ unlock: (...params: any) => {
64
+ sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
65
+ estimateLength: (tx: Transaction, inputIndex: number) => Promise<number>;
66
+ }
67
+ ```
68
+
69
+ </details>
70
+
71
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
72
+
73
+ ---
74
+ ## Classes
75
+
76
+ | |
77
+ | --- |
78
+ | [LockingScript](#class-lockingscript) |
79
+ | [P2PKH](#class-p2pkh) |
80
+ | [RPuzzle](#class-rpuzzle) |
81
+ | [Script](#class-script) |
82
+ | [Spend](#class-spend) |
83
+ | [UnlockingScript](#class-unlockingscript) |
84
+
85
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
86
+
87
+ ---
88
+
89
+ ### Class: Script
90
+
91
+ The Script class represents a script in a Bitcoin SV transaction,
92
+ encapsulating the functionality to construct, parse, and serialize
93
+ scripts used in both locking (output) and unlocking (input) scripts.
94
+
95
+ ```ts
96
+ export default class Script {
97
+ chunks: ScriptChunk[];
98
+ static fromASM(asm: string): Script
99
+ static fromHex(hex: string): Script
100
+ static fromBinary(bin: number[]): Script
101
+ constructor(chunks: ScriptChunk[] = [])
102
+ toASM(): string
103
+ toHex(): string
104
+ toBinary(): number[]
105
+ writeScript(script: Script): Script
106
+ writeOpCode(op: number): Script
107
+ setChunkOpCode(i: number, op: number): Script
108
+ writeBn(bn: BigNumber): Script
109
+ writeBin(bin: number[]): Script
110
+ writeNumber(num: number): Script
111
+ removeCodeseparators(): Script
112
+ findAndDelete(script: Script): Script
113
+ isPushOnly(): boolean
114
+ isLockingScript(): boolean
115
+ isUnlockingScript(): boolean
116
+ }
117
+ ```
118
+
119
+ <details>
120
+
121
+ <summary>Class Script Details</summary>
122
+
123
+ #### Constructor
124
+
125
+ ```ts
126
+ constructor(chunks: ScriptChunk[] = [])
127
+ ```
128
+
129
+ Argument Details
130
+
131
+ + **chunks**
132
+ + =[] - An array of script chunks to directly initialize the script.
133
+
134
+ #### Method findAndDelete
135
+
136
+ Deletes the given item wherever it appears in the current script.
137
+
138
+ ```ts
139
+ findAndDelete(script: Script): Script
140
+ ```
141
+
142
+ Returns
143
+
144
+ This script instance for chaining.
145
+
146
+ Argument Details
147
+
148
+ + **script**
149
+ + The script containing the item to delete from the current script.
150
+
151
+ #### Method fromASM
152
+
153
+ ```ts
154
+ static fromASM(asm: string): Script
155
+ ```
156
+
157
+ Returns
158
+
159
+ A new Script instance.
160
+
161
+ Argument Details
162
+
163
+ + **asm**
164
+ + The script in ASM string format.
165
+
166
+ Example
167
+
168
+ ```ts
169
+ const script = Script.fromASM("OP_DUP OP_HASH160 abcd... OP_EQUALVERIFY OP_CHECKSIG")
170
+ ```
171
+
172
+ #### Method fromBinary
173
+
174
+ ```ts
175
+ static fromBinary(bin: number[]): Script
176
+ ```
177
+
178
+ Returns
179
+
180
+ A new Script instance.
181
+
182
+ Argument Details
183
+
184
+ + **bin**
185
+ + The script in binary array format.
186
+
187
+ Example
188
+
189
+ ```ts
190
+ const script = Script.fromBinary([0x76, 0xa9, ...])
191
+ ```
192
+
193
+ #### Method fromHex
194
+
195
+ ```ts
196
+ static fromHex(hex: string): Script
197
+ ```
198
+
199
+ Returns
200
+
201
+ A new Script instance.
202
+
203
+ Argument Details
204
+
205
+ + **hex**
206
+ + The script in hexadecimal format.
207
+
208
+ Example
209
+
210
+ ```ts
211
+ const script = Script.fromHex("76a9...");
212
+ ```
213
+
214
+ #### Method isLockingScript
215
+
216
+ ```ts
217
+ isLockingScript(): boolean
218
+ ```
219
+
220
+ Returns
221
+
222
+ True if the script is a locking script, otherwise false.
223
+
224
+ #### Method isPushOnly
225
+
226
+ ```ts
227
+ isPushOnly(): boolean
228
+ ```
229
+
230
+ Returns
231
+
232
+ True if the script is push-only, otherwise false.
233
+
234
+ #### Method isUnlockingScript
235
+
236
+ ```ts
237
+ isUnlockingScript(): boolean
238
+ ```
239
+
240
+ Returns
241
+
242
+ True if the script is an unlocking script, otherwise false.
243
+
244
+ #### Method removeCodeseparators
245
+
246
+ ```ts
247
+ removeCodeseparators(): Script
248
+ ```
249
+
250
+ Returns
251
+
252
+ This script instance for chaining.
253
+
254
+ #### Method setChunkOpCode
255
+
256
+ ```ts
257
+ setChunkOpCode(i: number, op: number): Script
258
+ ```
259
+
260
+ Returns
261
+
262
+ This script instance for chaining.
263
+
264
+ Argument Details
265
+
266
+ + **i**
267
+ + The index of the chunk.
268
+ + **op**
269
+ + The opcode to set.
270
+
271
+ #### Method toASM
272
+
273
+ ```ts
274
+ toASM(): string
275
+ ```
276
+
277
+ Returns
278
+
279
+ The script in ASM string format.
280
+
281
+ #### Method toBinary
282
+
283
+ ```ts
284
+ toBinary(): number[]
285
+ ```
286
+
287
+ Returns
288
+
289
+ The script in binary array format.
290
+
291
+ #### Method toHex
292
+
293
+ ```ts
294
+ toHex(): string
295
+ ```
296
+
297
+ Returns
298
+
299
+ The script in hexadecimal format.
300
+
301
+ #### Method writeBin
302
+
303
+ ```ts
304
+ writeBin(bin: number[]): Script
305
+ ```
306
+
307
+ Returns
308
+
309
+ This script instance for chaining.
310
+
311
+ Argument Details
312
+
313
+ + **bin**
314
+ + The binary data to append.
315
+
316
+ Throws
317
+
318
+ Throws an error if the data is too large to be pushed.
319
+
320
+ #### Method writeBn
321
+
322
+ ```ts
323
+ writeBn(bn: BigNumber): Script
324
+ ```
325
+
326
+ Returns
327
+
328
+ This script instance for chaining.
329
+
330
+ Argument Details
331
+
332
+ + **bn**
333
+ + The BigNumber to append.
334
+
335
+ #### Method writeNumber
336
+
337
+ ```ts
338
+ writeNumber(num: number): Script
339
+ ```
340
+
341
+ Returns
342
+
343
+ This script instance for chaining.
344
+
345
+ Argument Details
346
+
347
+ + **num**
348
+ + The number to append.
349
+
350
+ #### Method writeOpCode
351
+
352
+ ```ts
353
+ writeOpCode(op: number): Script
354
+ ```
355
+
356
+ Returns
357
+
358
+ This script instance for chaining.
359
+
360
+ Argument Details
361
+
362
+ + **op**
363
+ + The opcode to append.
364
+
365
+ #### Method writeScript
366
+
367
+ ```ts
368
+ writeScript(script: Script): Script
369
+ ```
370
+
371
+ Returns
372
+
373
+ This script instance for chaining.
374
+
375
+ Argument Details
376
+
377
+ + **script**
378
+ + The script to append.
379
+
380
+ </details>
381
+
382
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
383
+
384
+ ---
385
+ ### Class: LockingScript
386
+
387
+ The LockingScript class represents a locking script in a Bitcoin SV transaction.
388
+ It extends the Script class and is used specifically for output scripts that lock funds.
389
+
390
+ Inherits all properties and methods from the Script class.
391
+
392
+ ```ts
393
+ export default class LockingScript extends Script {
394
+ isLockingScript(): boolean
395
+ isUnlockingScript(): boolean
396
+ }
397
+ ```
398
+
399
+ <details>
400
+
401
+ <summary>Class LockingScript Details</summary>
402
+
403
+ #### Method isLockingScript
404
+
405
+ ```ts
406
+ isLockingScript(): boolean
407
+ ```
408
+
409
+ Returns
410
+
411
+ Always returns true for a LockingScript instance.
412
+
413
+ #### Method isUnlockingScript
414
+
415
+ ```ts
416
+ isUnlockingScript(): boolean
417
+ ```
418
+
419
+ Returns
420
+
421
+ Always returns false for a LockingScript instance.
422
+
423
+ </details>
424
+
425
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
426
+
427
+ ---
428
+ ### Class: UnlockingScript
429
+
430
+ The UnlockingScript class represents an unlocking script in a Bitcoin SV transaction.
431
+ It extends the Script class and is used specifically for input scripts that unlock funds.
432
+
433
+ Inherits all properties and methods from the Script class.
434
+
435
+ ```ts
436
+ export default class UnlockingScript extends Script {
437
+ isLockingScript(): boolean
438
+ isUnlockingScript(): boolean
439
+ }
440
+ ```
441
+
442
+ <details>
443
+
444
+ <summary>Class UnlockingScript Details</summary>
445
+
446
+ #### Method isLockingScript
447
+
448
+ ```ts
449
+ isLockingScript(): boolean
450
+ ```
451
+
452
+ Returns
453
+
454
+ Always returns false for an UnlockingScript instance.
455
+
456
+ #### Method isUnlockingScript
457
+
458
+ ```ts
459
+ isUnlockingScript(): boolean
460
+ ```
461
+
462
+ Returns
463
+
464
+ Always returns true for an UnlockingScript instance.
465
+
466
+ </details>
467
+
468
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
469
+
470
+ ---
471
+ ### Class: Spend
472
+
473
+ The Spend class represents a spend action within a Bitcoin SV transaction.
474
+ It encapsulates all the necessary data required for spending a UTXO (Unspent Transaction Output)
475
+ and includes details about the source transaction, output, and the spending transaction itself.
476
+
477
+ ```ts
478
+ export default class Spend {
479
+ sourceTXID: string;
480
+ sourceOutputIndex: number;
481
+ sourceSatoshis: number;
482
+ lockingScript: LockingScript;
483
+ transactionVersion: number;
484
+ otherInputs: TransactionInput[];
485
+ outputs: TransactionOutput[];
486
+ inputIndex: number;
487
+ unlockingScript: UnlockingScript;
488
+ inputSequence: number;
489
+ lockTime: number;
490
+ context: "UnlockingScript" | "LockingScript";
491
+ programCounter: number;
492
+ lastCodeSeparator: number | null;
493
+ stack: number[][];
494
+ altStack: number[][];
495
+ ifStack: boolean[];
496
+ constructor(params: {
497
+ sourceTXID: string;
498
+ sourceOutputIndex: number;
499
+ sourceSatoshis: number;
500
+ lockingScript: LockingScript;
501
+ transactionVersion: number;
502
+ otherInputs: TransactionInput[];
503
+ outputs: TransactionOutput[];
504
+ unlockingScript: UnlockingScript;
505
+ inputSequence: number;
506
+ inputIndex: number;
507
+ lockTime: number;
508
+ })
509
+ reset(): void
510
+ step(): void
511
+ validate(): boolean
512
+ }
513
+ ```
514
+
515
+ <details>
516
+
517
+ <summary>Class Spend Details</summary>
518
+
519
+ #### Constructor
520
+
521
+ ```ts
522
+ constructor(params: {
523
+ sourceTXID: string;
524
+ sourceOutputIndex: number;
525
+ sourceSatoshis: number;
526
+ lockingScript: LockingScript;
527
+ transactionVersion: number;
528
+ otherInputs: TransactionInput[];
529
+ outputs: TransactionOutput[];
530
+ unlockingScript: UnlockingScript;
531
+ inputSequence: number;
532
+ inputIndex: number;
533
+ lockTime: number;
534
+ })
535
+ ```
536
+
537
+ Argument Details
538
+
539
+ + **params.sourceTXID**
540
+ + The transaction ID of the source UTXO.
541
+ + **params.sourceOutputIndex**
542
+ + The index of the output in the source transaction.
543
+ + **params.sourceSatoshis**
544
+ + The amount of satoshis in the source UTXO.
545
+ + **params.lockingScript**
546
+ + The locking script associated with the UTXO.
547
+ + **params.transactionVersion**
548
+ + The version of the current transaction.
549
+ + **params.otherInputs**
550
+ + -
551
+ An array of other inputs in the transaction.
552
+ + **params.outputs**
553
+ + -
554
+ The outputs of the current transaction.
555
+ + **params.inputIndex**
556
+ + The index of this input in the current transaction.
557
+ + **params.unlockingScript**
558
+ + The unlocking script for this spend.
559
+ + **params.inputSequence**
560
+ + The sequence number of this input.
561
+ + **params.lockTime**
562
+ + The lock time of the transaction.
563
+
564
+ Example
565
+
566
+ ```ts
567
+ const spend = new Spend({
568
+ sourceTXID: "abcd1234", // sourceTXID
569
+ sourceOutputIndex: 0, // sourceOutputIndex
570
+ sourceSatoshis: new BigNumber(1000), // sourceSatoshis
571
+ lockingScript: LockingScript.fromASM("OP_DUP OP_HASH160 abcd1234... OP_EQUALVERIFY OP_CHECKSIG"),
572
+ transactionVersion: 1, // transactionVersion
573
+ otherInputs: [{ sourceTXID: "abcd1234", sourceOutputIndex: 1, sequence: 0xffffffff }], // otherInputs
574
+ outputs: [{ satoshis: new BigNumber(500), lockingScript: LockingScript.fromASM("OP_DUP...") }], // outputs
575
+ inputIndex: 0, // inputIndex
576
+ unlockingScript: UnlockingScript.fromASM("3045... 02ab..."),
577
+ inputSequence: 0xffffffff // inputSequence
578
+ });
579
+ ```
580
+
581
+ #### Method validate
582
+
583
+ ```ts
584
+ validate(): boolean
585
+ ```
586
+
587
+ Returns
588
+
589
+ Returns true if the scripts are valid and the spend is legitimate, otherwise false.
590
+
591
+ Example
592
+
593
+ ```ts
594
+ if (spend.validate()) {
595
+ console.log("Spend is valid!");
596
+ } else {
597
+ console.log("Invalid spend!");
598
+ }
599
+ ```
600
+
601
+ </details>
602
+
603
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
604
+
605
+ ---
606
+ ### Class: P2PKH
607
+
608
+ P2PKH (Pay To Public Key Hash) class implementing ScriptTemplate.
609
+
610
+ This class provides methods to create Pay To Public Key Hash locking and unlocking scripts, including the unlocking of P2PKH UTXOs with the private key.
611
+
612
+ ```ts
613
+ export default class P2PKH implements ScriptTemplate {
614
+ lock(pubkeyhash: number[]): LockingScript
615
+ unlock(privateKey: PrivateKey, signOutputs: "all" | "none" | "single" = "all", anyoneCanPay: boolean = false): {
616
+ sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
617
+ estimateLength: () => Promise<106>;
618
+ }
619
+ }
620
+ ```
621
+
622
+ <details>
623
+
624
+ <summary>Class P2PKH Details</summary>
625
+
626
+ #### Method lock
627
+
628
+ Creates a P2PKH locking script for a given public key hash.
629
+
630
+ ```ts
631
+ lock(pubkeyhash: number[]): LockingScript
632
+ ```
633
+
634
+ Returns
635
+
636
+ - A P2PKH locking script.
637
+
638
+ Argument Details
639
+
640
+ + **pubkeyhash**
641
+ + An array representing the public key hash.
642
+
643
+ #### Method unlock
644
+
645
+ Creates a function that generates a P2PKH unlocking script along with its signature and length estimation.
646
+
647
+ The returned object contains:
648
+ 1. `sign` - A function that, when invoked with a transaction and an input index,
649
+ produces an unlocking script suitable for a P2PKH locked output.
650
+ 2. `estimateLength` - A function that returns the estimated length of the unlocking script in bytes.
651
+
652
+ ```ts
653
+ unlock(privateKey: PrivateKey, signOutputs: "all" | "none" | "single" = "all", anyoneCanPay: boolean = false): {
654
+ sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
655
+ estimateLength: () => Promise<106>;
656
+ }
657
+ ```
658
+
659
+ Returns
660
+
661
+ - An object containing the `sign` and `estimateLength` functions.
662
+
663
+ Argument Details
664
+
665
+ + **privateKey**
666
+ + The private key used for signing the transaction.
667
+ + **signOutputs**
668
+ + The signature scope for outputs.
669
+ + **anyoneCanPay**
670
+ + Flag indicating if the signature allows for other inputs to be added later.
671
+
672
+ </details>
673
+
674
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
675
+
676
+ ---
677
+ ### Class: RPuzzle
678
+
679
+ RPuzzle class implementing ScriptTemplate.
680
+
681
+ This class provides methods to create R Puzzle and R Puzzle Hash locking and unlocking scripts, including the unlocking of UTXOs with the correct K value.
682
+
683
+ ```ts
684
+ export default class RPuzzle implements ScriptTemplate {
685
+ type: "raw" | "SHA1" | "SHA256" | "HASH256" | "RIPEMD160" | "HASH160" = "raw";
686
+ constructor(type: "raw" | "SHA1" | "SHA256" | "HASH256" | "RIPEMD160" | "HASH160" = "raw")
687
+ lock(value: number[]): LockingScript
688
+ unlock(k: BigNumber, privateKey: PrivateKey, signOutputs: "all" | "none" | "single" = "all", anyoneCanPay: boolean = false): {
689
+ sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
690
+ estimateLength: () => Promise<106>;
691
+ }
692
+ }
693
+ ```
694
+
695
+ <details>
696
+
697
+ <summary>Class RPuzzle Details</summary>
698
+
699
+ #### Constructor
700
+
701
+ ```ts
702
+ constructor(type: "raw" | "SHA1" | "SHA256" | "HASH256" | "RIPEMD160" | "HASH160" = "raw")
703
+ ```
704
+
705
+ Argument Details
706
+
707
+ + **type**
708
+ + Denotes the type of puzzle to create
709
+
710
+ #### Method lock
711
+
712
+ Creates an R puzzle locking script for a given R value or R value hash.
713
+
714
+ ```ts
715
+ lock(value: number[]): LockingScript
716
+ ```
717
+
718
+ Returns
719
+
720
+ - An R puzzle locking script.
721
+
722
+ Argument Details
723
+
724
+ + **value**
725
+ + An array representing the R value or its hash.
726
+
727
+ #### Method unlock
728
+
729
+ Creates a function that generates an R puzzle unlocking script along with its signature and length estimation.
730
+
731
+ The returned object contains:
732
+ 1. `sign` - A function that, when invoked with a transaction and an input index,
733
+ produces an unlocking script suitable for an R puzzle locked output.
734
+ 2. `estimateLength` - A function that returns the estimated length of the unlocking script in bytes.
735
+
736
+ ```ts
737
+ unlock(k: BigNumber, privateKey: PrivateKey, signOutputs: "all" | "none" | "single" = "all", anyoneCanPay: boolean = false): {
738
+ sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
739
+ estimateLength: () => Promise<106>;
740
+ }
741
+ ```
742
+
743
+ Returns
744
+
745
+ - An object containing the `sign` and `estimateLength` functions.
746
+
747
+ Argument Details
748
+
749
+ + **k**
750
+ + — The K-value used to unlock the R-puzzle.
751
+ + **privateKey**
752
+ + The private key used for signing the transaction. If not provided, a random key will be generated.
753
+ + **signOutputs**
754
+ + The signature scope for outputs.
755
+ + **anyoneCanPay**
756
+ + Flag indicating if the signature allows for other inputs to be added later.
757
+
758
+ </details>
759
+
760
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
761
+
762
+ ---
763
+ ## Functions
764
+
765
+ ## Variables
766
+