@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,741 @@
1
+ # API
2
+
3
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
4
+
5
+ ## Interfaces
6
+
7
+ | |
8
+ | --- |
9
+ | [BroadcastFailure](#interface-broadcastfailure) |
10
+ | [BroadcastResponse](#interface-broadcastresponse) |
11
+ | [Broadcaster](#interface-broadcaster) |
12
+ | [ChainTracker](#interface-chaintracker) |
13
+ | [FeeModel](#interface-feemodel) |
14
+ | [TransactionInput](#interface-transactioninput) |
15
+ | [TransactionOutput](#interface-transactionoutput) |
16
+
17
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
18
+
19
+ ---
20
+
21
+ ### Interface: TransactionInput
22
+
23
+ Represents an input to a Bitcoin transaction.
24
+ This interface defines the structure and components required to construct
25
+ a transaction input in the Bitcoin blockchain.
26
+
27
+ Example
28
+
29
+ ```ts
30
+ // Creating a simple transaction input
31
+ let txInput = {
32
+ sourceTXID: '123abc...',
33
+ sourceOutputIndex: 0,
34
+ sequence: 0xFFFFFFFF
35
+ };
36
+
37
+ // Using an unlocking script template
38
+ txInput.unlockingScriptTemplate = {
39
+ sign: async (tx, index) => { ... },
40
+ estimateLength: async (tx, index) => { ... }
41
+ };
42
+ ```
43
+
44
+ ```ts
45
+ export default interface TransactionInput {
46
+ sourceTransaction?: Transaction;
47
+ sourceTXID?: string;
48
+ sourceOutputIndex: number;
49
+ unlockingScript?: UnlockingScript;
50
+ unlockingScriptTemplate?: {
51
+ sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
52
+ estimateLength: (tx: Transaction, inputIndex: number) => Promise<number>;
53
+ };
54
+ sequence: number;
55
+ }
56
+ ```
57
+
58
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
59
+
60
+ ---
61
+ ### Interface: TransactionOutput
62
+
63
+ Represents an output in a Bitcoin transaction.
64
+ This interface defines the structure and components necessary to construct
65
+ a transaction output, which secures owned Bitcoins to be unlocked later.
66
+
67
+ Example
68
+
69
+ ```ts
70
+ // Creating a simple transaction output
71
+ let txOutput = {
72
+ satoshis: 1000,
73
+ lockingScript: LockingScript.fromASM('OP_DUP OP_HASH160 ... OP_EQUALVERIFY OP_CHECKSIG'),
74
+ change: false
75
+ };
76
+ ```
77
+
78
+ ```ts
79
+ export default interface TransactionOutput {
80
+ satoshis?: number;
81
+ lockingScript: LockingScript;
82
+ change?: boolean;
83
+ }
84
+ ```
85
+
86
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
87
+
88
+ ---
89
+ ### Interface: FeeModel
90
+
91
+ Represents the interface for a transaction fee model.
92
+ This interface defines a standard method for computing a fee when given a transaction.
93
+
94
+ ```ts
95
+ export default interface FeeModel {
96
+ computeFee: (transaction: Transaction) => Promise<number>;
97
+ }
98
+ ```
99
+
100
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
101
+
102
+ ---
103
+ ### Interface: BroadcastResponse
104
+
105
+ Defines the structure of a successful broadcast response.
106
+
107
+ ```ts
108
+ export interface BroadcastResponse {
109
+ status: "success";
110
+ txid: string;
111
+ message: string;
112
+ }
113
+ ```
114
+
115
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
116
+
117
+ ---
118
+ ### Interface: BroadcastFailure
119
+
120
+ Defines the structure of a failed broadcast response.
121
+
122
+ ```ts
123
+ export interface BroadcastFailure {
124
+ status: "error";
125
+ code: string;
126
+ description: string;
127
+ }
128
+ ```
129
+
130
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
131
+
132
+ ---
133
+ ### Interface: Broadcaster
134
+
135
+ Represents the interface for a transaction broadcaster.
136
+ This interface defines a standard method for broadcasting transactions.
137
+
138
+ ```ts
139
+ export interface Broadcaster {
140
+ broadcast: (transaction: Transaction) => Promise<BroadcastResponse | BroadcastFailure>;
141
+ }
142
+ ```
143
+
144
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
145
+
146
+ ---
147
+ ### Interface: ChainTracker
148
+
149
+ The Chain Tracker is responsible for verifying the validity of a given Merkle root
150
+ for a specific block height within the blockchain.
151
+
152
+ Chain Trackers ensure the integrity of the blockchain by
153
+ validating new headers against the chain's history. They use accumulated
154
+ proof-of-work and protocol adherence as metrics to assess the legitimacy of blocks.
155
+
156
+ Example
157
+
158
+ ```ts
159
+ const chainTracker = {
160
+ isValidRootForHeight: async (root, height) => {
161
+ // Implementation to check if the Merkle root is valid for the specified block height.
162
+ }
163
+ };
164
+ ```
165
+
166
+ ```ts
167
+ export default interface ChainTracker {
168
+ isValidRootForHeight: (root: string, height: number) => Promise<boolean>;
169
+ }
170
+ ```
171
+
172
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
173
+
174
+ ---
175
+ ## Classes
176
+
177
+ | |
178
+ | --- |
179
+ | [MerklePath](#class-merklepath) |
180
+ | [SatoshisPerKilobyte](#class-satoshisperkilobyte) |
181
+ | [Transaction](#class-transaction) |
182
+
183
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
184
+
185
+ ---
186
+
187
+ ### Class: SatoshisPerKilobyte
188
+
189
+ Represents the "satoshis per kilobyte" transaction fee model.
190
+
191
+ ```ts
192
+ export default class SatoshisPerKilobyte implements FeeModel {
193
+ value: number;
194
+ constructor(value: number)
195
+ async computeFee(tx: Transaction): Promise<number>
196
+ }
197
+ ```
198
+
199
+ <details>
200
+
201
+ <summary>Class SatoshisPerKilobyte Details</summary>
202
+
203
+ #### Constructor
204
+
205
+ Constructs an instance of the sat/kb fee model.
206
+
207
+ ```ts
208
+ constructor(value: number)
209
+ ```
210
+
211
+ Argument Details
212
+
213
+ + **value**
214
+ + The number of satoshis per kilobyte to charge as a fee.
215
+
216
+ #### Method computeFee
217
+
218
+ Computes the fee for a given transaction.
219
+
220
+ ```ts
221
+ async computeFee(tx: Transaction): Promise<number>
222
+ ```
223
+
224
+ Returns
225
+
226
+ The fee in satoshis for the transaction, as a BigNumber.
227
+
228
+ Argument Details
229
+
230
+ + **tx**
231
+ + The transaction for which a fee is to be computed.
232
+
233
+ </details>
234
+
235
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
236
+
237
+ ---
238
+ ### Class: MerklePath
239
+
240
+ Represents a Merkle Path, which is used to provide a compact proof of inclusion for a
241
+ transaction in a block. This class encapsulates all the details required for creating
242
+ and verifying Merkle Proofs.
243
+
244
+ Example
245
+
246
+ ```ts
247
+ // Creating and verifying a Merkle Path
248
+ const merklePath = MerklePath.fromHex('...');
249
+ const isValid = merklePath.verify(txid, chainTracker);
250
+ ```
251
+
252
+ ```ts
253
+ export default class MerklePath {
254
+ blockHeight: number;
255
+ path: Array<Array<{
256
+ offset: number;
257
+ hash?: string;
258
+ txid?: boolean;
259
+ duplicate?: boolean;
260
+ }>>;
261
+ static fromHex(hex: string): MerklePath
262
+ static fromReader(reader: Reader): MerklePath
263
+ static fromBinary(bump: number[]): MerklePath
264
+ constructor(blockHeight: number, path: Array<Array<{
265
+ offset: number;
266
+ hash?: string;
267
+ txid?: boolean;
268
+ duplicate?: boolean;
269
+ }>>)
270
+ toBinary(): number[]
271
+ toHex(): string
272
+ computeRoot(txid?: string): string
273
+ async verify(txid: string, chainTracker: ChainTracker): Promise<boolean>
274
+ combine(other: MerklePath): void
275
+ }
276
+ ```
277
+
278
+ <details>
279
+
280
+ <summary>Class MerklePath Details</summary>
281
+
282
+ #### Method combine
283
+
284
+ Combines this MerklePath with another to create a compound proof.
285
+
286
+ ```ts
287
+ combine(other: MerklePath): void
288
+ ```
289
+
290
+ Argument Details
291
+
292
+ + **other**
293
+ + Another MerklePath to combine with this path.
294
+
295
+ Throws
296
+
297
+ - If the paths have different block heights or roots.
298
+
299
+ #### Method computeRoot
300
+
301
+ Computes the Merkle root from the provided transaction ID.
302
+
303
+ ```ts
304
+ computeRoot(txid?: string): string
305
+ ```
306
+
307
+ Returns
308
+
309
+ - The computed Merkle root as a hexadecimal string.
310
+
311
+ Argument Details
312
+
313
+ + **txid**
314
+ + The transaction ID to compute the Merkle root for. If not provided, the root will be computed from an unspecified branch, and not all branches will be validated!
315
+
316
+ Throws
317
+
318
+ - If the transaction ID is not part of the Merkle Path.
319
+
320
+ #### Method fromBinary
321
+
322
+ Creates a MerklePath instance from a binary array.
323
+
324
+ ```ts
325
+ static fromBinary(bump: number[]): MerklePath
326
+ ```
327
+
328
+ Returns
329
+
330
+ - A new MerklePath instance.
331
+
332
+ Argument Details
333
+
334
+ + **bump**
335
+ + The binary array representation of the Merkle Path.
336
+
337
+ #### Method fromHex
338
+
339
+ Creates a MerklePath instance from a hexadecimal string.
340
+
341
+ ```ts
342
+ static fromHex(hex: string): MerklePath
343
+ ```
344
+
345
+ Returns
346
+
347
+ - A new MerklePath instance.
348
+
349
+ Argument Details
350
+
351
+ + **hex**
352
+ + The hexadecimal string representation of the Merkle Path.
353
+
354
+ #### Method toBinary
355
+
356
+ Converts the MerklePath to a binary array format.
357
+
358
+ ```ts
359
+ toBinary(): number[]
360
+ ```
361
+
362
+ Returns
363
+
364
+ - The binary array representation of the Merkle Path.
365
+
366
+ #### Method toHex
367
+
368
+ Converts the MerklePath to a hexadecimal string format.
369
+
370
+ ```ts
371
+ toHex(): string
372
+ ```
373
+
374
+ Returns
375
+
376
+ - The hexadecimal string representation of the Merkle Path.
377
+
378
+ #### Method verify
379
+
380
+ Verifies if the given transaction ID is part of the Merkle tree at the specified block height.
381
+
382
+ ```ts
383
+ async verify(txid: string, chainTracker: ChainTracker): Promise<boolean>
384
+ ```
385
+
386
+ Returns
387
+
388
+ - True if the transaction ID is valid within the Merkle Path at the specified block height.
389
+
390
+ Argument Details
391
+
392
+ + **txid**
393
+ + The transaction ID to verify.
394
+ + **chainTracker**
395
+ + The ChainTracker instance used to verify the Merkle root.
396
+
397
+ </details>
398
+
399
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
400
+
401
+ ---
402
+ ### Class: Transaction
403
+
404
+ Represents a complete Bitcoin transaction. This class encapsulates all the details
405
+ required for creating, signing, and processing a Bitcoin transaction, including
406
+ inputs, outputs, and various transaction-related methods.
407
+
408
+ Example
409
+
410
+ ```ts
411
+ // Creating a new transaction
412
+ let tx = new Transaction();
413
+ tx.addInput(...);
414
+ tx.addOutput(...);
415
+ await tx.fee();
416
+ await tx.sign();
417
+ await tx.broadcast();
418
+ ```
419
+
420
+ ```ts
421
+ export default class Transaction {
422
+ version: number;
423
+ inputs: TransactionInput[];
424
+ outputs: TransactionOutput[];
425
+ lockTime: number;
426
+ metadata: Record<string, any>;
427
+ merklePath?: MerklePath;
428
+ static fromBEEF(beef: number[]): Transaction
429
+ static fromBinary(bin: number[]): Transaction
430
+ static fromHex(hex: string): Transaction
431
+ static fromHexBEEF(hex: string): Transaction
432
+ constructor(version: number = 1, inputs: TransactionInput[] = [], outputs: TransactionOutput[] = [], lockTime: number = 0, metadata: Record<string, any> = {}, merklePath?: MerklePath)
433
+ addInput(input: TransactionInput): void
434
+ addOutput(output: TransactionOutput): void
435
+ updateMetadata(metadata: Record<string, any>): void
436
+ async fee(model?: FeeModel, changeDistribution: "equal" | "random" = "equal"): Promise<void>
437
+ async sign(): Promise<void>
438
+ async broadcast(broadcaster: Broadcaster): Promise<BroadcastResponse | BroadcastFailure>
439
+ toBinary(): number[]
440
+ toEF(): number[]
441
+ toHexEF(): string
442
+ toHex(): string
443
+ toHexBEEF(): string
444
+ hash(enc?: "hex"): number[] | string
445
+ id(enc?: "hex"): number[] | string
446
+ async verify(chainTracker: ChainTracker): Promise<boolean>
447
+ toBEEF(): number[]
448
+ }
449
+ ```
450
+
451
+ <details>
452
+
453
+ <summary>Class Transaction Details</summary>
454
+
455
+ #### Method addInput
456
+
457
+ Adds a new input to the transaction.
458
+
459
+ ```ts
460
+ addInput(input: TransactionInput): void
461
+ ```
462
+
463
+ Argument Details
464
+
465
+ + **input**
466
+ + The TransactionInput object to add to the transaction.
467
+
468
+ Throws
469
+
470
+ - If the input does not have a sourceTXID or sourceTransaction defined.
471
+
472
+ #### Method addOutput
473
+
474
+ Adds a new output to the transaction.
475
+
476
+ ```ts
477
+ addOutput(output: TransactionOutput): void
478
+ ```
479
+
480
+ Argument Details
481
+
482
+ + **output**
483
+ + The TransactionOutput object to add to the transaction.
484
+
485
+ #### Method broadcast
486
+
487
+ Broadcasts a transaction.
488
+
489
+ ```ts
490
+ async broadcast(broadcaster: Broadcaster): Promise<BroadcastResponse | BroadcastFailure>
491
+ ```
492
+
493
+ Returns
494
+
495
+ A BroadcastResponse or BroadcastFailure from the Broadcaster
496
+
497
+ Argument Details
498
+
499
+ + **broadcaster**
500
+ + The Broadcaster instance wwhere the transaction will be sent
501
+
502
+ #### Method fee
503
+
504
+ Computes fees prior to signing.
505
+ If no fee model is provided, uses a SatoshisPerKilobyte fee model that pays 10 sat/kb.
506
+
507
+ ```ts
508
+ async fee(model?: FeeModel, changeDistribution: "equal" | "random" = "equal"): Promise<void>
509
+ ```
510
+
511
+ Argument Details
512
+
513
+ + **model**
514
+ + The initialized fee model to use
515
+ + **changeDistribution**
516
+ + Specifies how the change should be distributed
517
+ amongst the change outputs
518
+
519
+ TODO: Benford's law change distribution.
520
+
521
+ #### Method fromBEEF
522
+
523
+ Creates a new transaction, linked to its inputs and their associated merkle paths, from a BEEF (BRC-62) structure.
524
+
525
+ ```ts
526
+ static fromBEEF(beef: number[]): Transaction
527
+ ```
528
+
529
+ Returns
530
+
531
+ An anchored transaction, linked to its associated inputs populated with merkle paths.
532
+
533
+ Argument Details
534
+
535
+ + **beef**
536
+ + A binary representation of a transaction in BEEF format.
537
+
538
+ #### Method fromBinary
539
+
540
+ Creates a Transaction instance from a binary array.
541
+
542
+ ```ts
543
+ static fromBinary(bin: number[]): Transaction
544
+ ```
545
+
546
+ Returns
547
+
548
+ - A new Transaction instance.
549
+
550
+ Argument Details
551
+
552
+ + **bin**
553
+ + The binary array representation of the transaction.
554
+
555
+ #### Method fromHex
556
+
557
+ Creates a Transaction instance from a hexadecimal string.
558
+
559
+ ```ts
560
+ static fromHex(hex: string): Transaction
561
+ ```
562
+
563
+ Returns
564
+
565
+ - A new Transaction instance.
566
+
567
+ Argument Details
568
+
569
+ + **hex**
570
+ + The hexadecimal string representation of the transaction.
571
+
572
+ #### Method fromHexBEEF
573
+
574
+ Creates a Transaction instance from a hexadecimal string encoded BEEF.
575
+
576
+ ```ts
577
+ static fromHexBEEF(hex: string): Transaction
578
+ ```
579
+
580
+ Returns
581
+
582
+ - A new Transaction instance.
583
+
584
+ Argument Details
585
+
586
+ + **hex**
587
+ + The hexadecimal string representation of the transaction BEEF.
588
+
589
+ #### Method hash
590
+
591
+ Calculates the transaction's hash.
592
+
593
+ ```ts
594
+ hash(enc?: "hex"): number[] | string
595
+ ```
596
+
597
+ Returns
598
+
599
+ - The hash of the transaction in the specified format.
600
+
601
+ Argument Details
602
+
603
+ + **enc**
604
+ + The encoding to use for the hash. If 'hex', returns a hexadecimal string; otherwise returns a binary array.
605
+
606
+ #### Method id
607
+
608
+ Calculates the transaction's ID.
609
+
610
+ ```ts
611
+ id(enc?: "hex"): number[] | string
612
+ ```
613
+
614
+ Returns
615
+
616
+ - The ID of the transaction in the specified format.
617
+
618
+ Argument Details
619
+
620
+ + **enc**
621
+ + The encoding to use for the ID. If 'hex', returns a hexadecimal string; otherwise returns a binary array.
622
+
623
+ #### Method sign
624
+
625
+ Signs a transaction, hydrating all its unlocking scripts based on the provided script templates where they are available.
626
+
627
+ ```ts
628
+ async sign(): Promise<void>
629
+ ```
630
+
631
+ #### Method toBEEF
632
+
633
+ Serializes this transaction, together with its inputs and the respective merkle proofs, into the BEEF (BRC-62) format. This enables efficient verification of its compliance with the rules of SPV.
634
+
635
+ ```ts
636
+ toBEEF(): number[]
637
+ ```
638
+
639
+ Returns
640
+
641
+ The serialized BEEF structure
642
+
643
+ #### Method toBinary
644
+
645
+ Converts the transaction to a binary array format.
646
+
647
+ ```ts
648
+ toBinary(): number[]
649
+ ```
650
+
651
+ Returns
652
+
653
+ - The binary array representation of the transaction.
654
+
655
+ #### Method toEF
656
+
657
+ Converts the transaction to a BRC-30 EF format.
658
+
659
+ ```ts
660
+ toEF(): number[]
661
+ ```
662
+
663
+ Returns
664
+
665
+ - The BRC-30 EF representation of the transaction.
666
+
667
+ #### Method toHex
668
+
669
+ Converts the transaction to a hexadecimal string format.
670
+
671
+ ```ts
672
+ toHex(): string
673
+ ```
674
+
675
+ Returns
676
+
677
+ - The hexadecimal string representation of the transaction.
678
+
679
+ #### Method toHexBEEF
680
+
681
+ Converts the transaction to a hexadecimal string BEEF.
682
+
683
+ ```ts
684
+ toHexBEEF(): string
685
+ ```
686
+
687
+ Returns
688
+
689
+ - The hexadecimal string representation of the transaction BEEF.
690
+
691
+ #### Method toHexEF
692
+
693
+ Converts the transaction to a hexadecimal string EF.
694
+
695
+ ```ts
696
+ toHexEF(): string
697
+ ```
698
+
699
+ Returns
700
+
701
+ - The hexadecimal string representation of the transaction EF.
702
+
703
+ #### Method updateMetadata
704
+
705
+ Updates the transaction's metadata.
706
+
707
+ ```ts
708
+ updateMetadata(metadata: Record<string, any>): void
709
+ ```
710
+
711
+ Argument Details
712
+
713
+ + **metadata**
714
+ + The metadata object to merge into the existing metadata.
715
+
716
+ #### Method verify
717
+
718
+ Verifies the legitimacy of the Bitcoin transaction according to the rules of SPV by ensuring all the input transactions link back to valid block headers, the chain of spends for all inputs are valid, and the sum of inputs is not less than the sum of outputs.
719
+
720
+ ```ts
721
+ async verify(chainTracker: ChainTracker): Promise<boolean>
722
+ ```
723
+
724
+ Returns
725
+
726
+ Whether the transaction is valid according to the rules of SPV.
727
+
728
+ Argument Details
729
+
730
+ + **chainTracker**
731
+ + An instance of ChainTracker, a Bitcoin block header tracker.
732
+
733
+ </details>
734
+
735
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
736
+
737
+ ---
738
+ ## Functions
739
+
740
+ ## Variables
741
+