@btc-vision/bitcoin 6.5.5 → 7.0.0-alpha.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 (457) hide show
  1. package/AUDIT/README.md +9 -0
  2. package/HOW_TO_WRITE_GOOD_CODE.md +2436 -0
  3. package/SECURITY.md +27 -0
  4. package/benchmark/psbt-2000-inputs.bench.ts +178 -0
  5. package/benchmark/signing.bench.ts +147 -0
  6. package/browser/address.d.ts +56 -9
  7. package/browser/address.d.ts.map +1 -0
  8. package/browser/bech32utils.d.ts +9 -1
  9. package/browser/bech32utils.d.ts.map +1 -0
  10. package/browser/bip66.d.ts +11 -6
  11. package/browser/bip66.d.ts.map +1 -0
  12. package/browser/block.d.ts +117 -11
  13. package/browser/block.d.ts.map +1 -0
  14. package/browser/branded.d.ts +20 -0
  15. package/browser/branded.d.ts.map +1 -0
  16. package/browser/crypto/crypto.d.ts +1 -0
  17. package/browser/crypto/crypto.d.ts.map +1 -0
  18. package/browser/crypto.d.ts +46 -7
  19. package/browser/crypto.d.ts.map +1 -0
  20. package/browser/ecc/context.d.ts +129 -0
  21. package/browser/ecc/context.d.ts.map +1 -0
  22. package/browser/ecc/index.d.ts +11 -0
  23. package/browser/ecc/index.d.ts.map +1 -0
  24. package/browser/ecc/types.d.ts +128 -0
  25. package/browser/ecc/types.d.ts.map +1 -0
  26. package/browser/ecpair.d.ts +99 -0
  27. package/browser/errors.d.ts +124 -0
  28. package/browser/errors.d.ts.map +1 -0
  29. package/browser/index.d.ts +32 -5
  30. package/browser/index.d.ts.map +1 -0
  31. package/browser/index.js +12482 -101
  32. package/browser/io/BinaryReader.d.ts +276 -0
  33. package/browser/io/BinaryReader.d.ts.map +1 -0
  34. package/browser/io/BinaryWriter.d.ts +391 -0
  35. package/browser/io/BinaryWriter.d.ts.map +1 -0
  36. package/browser/io/MemoryPool.d.ts +220 -0
  37. package/browser/io/MemoryPool.d.ts.map +1 -0
  38. package/browser/io/base64.d.ts +13 -0
  39. package/browser/io/base64.d.ts.map +1 -0
  40. package/browser/io/hex.d.ts +67 -0
  41. package/browser/io/hex.d.ts.map +1 -0
  42. package/browser/io/index.d.ts +17 -0
  43. package/browser/io/index.d.ts.map +1 -0
  44. package/browser/io/utils.d.ts +199 -0
  45. package/browser/io/utils.d.ts.map +1 -0
  46. package/browser/merkle.d.ts +10 -1
  47. package/browser/merkle.d.ts.map +1 -0
  48. package/browser/networks.d.ts +70 -9
  49. package/browser/networks.d.ts.map +1 -0
  50. package/browser/opcodes.d.ts +1 -0
  51. package/browser/opcodes.d.ts.map +1 -0
  52. package/browser/payments/bip341.d.ts +35 -9
  53. package/browser/payments/bip341.d.ts.map +1 -0
  54. package/browser/payments/embed.d.ts +112 -1
  55. package/browser/payments/embed.d.ts.map +1 -0
  56. package/browser/payments/index.d.ts +17 -10
  57. package/browser/payments/index.d.ts.map +1 -0
  58. package/browser/payments/p2ms.d.ts +150 -0
  59. package/browser/payments/p2ms.d.ts.map +1 -0
  60. package/browser/payments/p2op.d.ts +150 -24
  61. package/browser/payments/p2op.d.ts.map +1 -0
  62. package/browser/payments/p2pk.d.ts +154 -1
  63. package/browser/payments/p2pk.d.ts.map +1 -0
  64. package/browser/payments/p2pkh.d.ts +176 -1
  65. package/browser/payments/p2pkh.d.ts.map +1 -0
  66. package/browser/payments/p2sh.d.ts +150 -1
  67. package/browser/payments/p2sh.d.ts.map +1 -0
  68. package/browser/payments/p2tr.d.ts +185 -1
  69. package/browser/payments/p2tr.d.ts.map +1 -0
  70. package/browser/payments/p2wpkh.d.ts +161 -1
  71. package/browser/payments/p2wpkh.d.ts.map +1 -0
  72. package/browser/payments/p2wsh.d.ts +146 -1
  73. package/browser/payments/p2wsh.d.ts.map +1 -0
  74. package/browser/payments/types.d.ts +94 -64
  75. package/browser/payments/types.d.ts.map +1 -0
  76. package/browser/psbt/bip371.d.ts +34 -8
  77. package/browser/psbt/bip371.d.ts.map +1 -0
  78. package/browser/psbt/psbtutils.d.ts +56 -16
  79. package/browser/psbt/psbtutils.d.ts.map +1 -0
  80. package/browser/psbt/types.d.ts +245 -0
  81. package/browser/psbt/types.d.ts.map +1 -0
  82. package/browser/psbt/utils.d.ts +64 -0
  83. package/browser/psbt/utils.d.ts.map +1 -0
  84. package/browser/psbt/validation.d.ts +84 -0
  85. package/browser/psbt/validation.d.ts.map +1 -0
  86. package/browser/psbt.d.ts +82 -118
  87. package/browser/psbt.d.ts.map +1 -0
  88. package/browser/pubkey.d.ts +27 -6
  89. package/browser/pubkey.d.ts.map +1 -0
  90. package/browser/push_data.d.ts +24 -2
  91. package/browser/push_data.d.ts.map +1 -0
  92. package/browser/script.d.ts +33 -8
  93. package/browser/script.d.ts.map +1 -0
  94. package/browser/script_number.d.ts +17 -0
  95. package/browser/script_number.d.ts.map +1 -0
  96. package/browser/script_signature.d.ts +23 -5
  97. package/browser/script_signature.d.ts.map +1 -0
  98. package/browser/transaction.d.ts +160 -18
  99. package/browser/transaction.d.ts.map +1 -0
  100. package/browser/types.d.ts +36 -38
  101. package/browser/types.d.ts.map +1 -0
  102. package/browser/workers/WorkerSigningPool.d.ts +143 -0
  103. package/browser/workers/WorkerSigningPool.d.ts.map +1 -0
  104. package/browser/workers/WorkerSigningPool.node.d.ts +116 -0
  105. package/browser/workers/WorkerSigningPool.node.d.ts.map +1 -0
  106. package/browser/workers/ecc-bundle.d.ts +25 -0
  107. package/browser/workers/ecc-bundle.d.ts.map +1 -0
  108. package/browser/workers/index.d.ts +91 -0
  109. package/browser/workers/index.d.ts.map +1 -0
  110. package/browser/workers/psbt-parallel.d.ts +88 -0
  111. package/browser/workers/psbt-parallel.d.ts.map +1 -0
  112. package/browser/workers/signing-worker.d.ts +37 -0
  113. package/browser/workers/signing-worker.d.ts.map +1 -0
  114. package/browser/workers/types.d.ts +365 -0
  115. package/browser/workers/types.d.ts.map +1 -0
  116. package/build/address.d.ts +57 -10
  117. package/build/address.d.ts.map +1 -0
  118. package/build/address.js +80 -24
  119. package/build/address.js.map +1 -0
  120. package/build/bech32utils.d.ts +9 -1
  121. package/build/bech32utils.d.ts.map +1 -0
  122. package/build/bech32utils.js +10 -2
  123. package/build/bech32utils.js.map +1 -0
  124. package/build/bip66.d.ts +11 -6
  125. package/build/bip66.d.ts.map +1 -0
  126. package/build/bip66.js +32 -3
  127. package/build/bip66.js.map +1 -0
  128. package/build/block.d.ts +117 -11
  129. package/build/block.d.ts.map +1 -0
  130. package/build/block.js +204 -72
  131. package/build/block.js.map +1 -0
  132. package/build/branded.d.ts +20 -0
  133. package/build/branded.d.ts.map +1 -0
  134. package/build/branded.js +7 -0
  135. package/build/branded.js.map +1 -0
  136. package/build/crypto/crypto.d.ts +1 -0
  137. package/build/crypto/crypto.d.ts.map +1 -0
  138. package/build/crypto/crypto.js +1 -0
  139. package/build/crypto/crypto.js.map +1 -0
  140. package/build/crypto.d.ts +46 -7
  141. package/build/crypto.d.ts.map +1 -0
  142. package/build/crypto.js +65 -20
  143. package/build/crypto.js.map +1 -0
  144. package/build/ecc/context.d.ts +135 -0
  145. package/build/ecc/context.d.ts.map +1 -0
  146. package/build/ecc/context.js +232 -0
  147. package/build/ecc/context.js.map +1 -0
  148. package/build/ecc/index.d.ts +11 -0
  149. package/build/ecc/index.d.ts.map +1 -0
  150. package/build/ecc/index.js +11 -0
  151. package/build/ecc/index.js.map +1 -0
  152. package/build/ecc/types.d.ts +134 -0
  153. package/build/ecc/types.d.ts.map +1 -0
  154. package/build/ecc/types.js +8 -0
  155. package/build/ecc/types.js.map +1 -0
  156. package/build/errors.d.ts +124 -0
  157. package/build/errors.d.ts.map +1 -0
  158. package/build/errors.js +155 -0
  159. package/build/errors.js.map +1 -0
  160. package/build/index.d.ts +32 -5
  161. package/build/index.d.ts.map +1 -0
  162. package/build/index.js +26 -3
  163. package/build/index.js.map +1 -0
  164. package/build/io/BinaryReader.d.ts +276 -0
  165. package/build/io/BinaryReader.d.ts.map +1 -0
  166. package/build/io/BinaryReader.js +425 -0
  167. package/build/io/BinaryReader.js.map +1 -0
  168. package/build/io/BinaryWriter.d.ts +391 -0
  169. package/build/io/BinaryWriter.d.ts.map +1 -0
  170. package/build/io/BinaryWriter.js +611 -0
  171. package/build/io/BinaryWriter.js.map +1 -0
  172. package/build/io/MemoryPool.d.ts +220 -0
  173. package/build/io/MemoryPool.d.ts.map +1 -0
  174. package/build/io/MemoryPool.js +309 -0
  175. package/build/io/MemoryPool.js.map +1 -0
  176. package/build/io/base64.d.ts +13 -0
  177. package/build/io/base64.d.ts.map +1 -0
  178. package/build/io/base64.js +20 -0
  179. package/build/io/base64.js.map +1 -0
  180. package/build/io/hex.d.ts +67 -0
  181. package/build/io/hex.d.ts.map +1 -0
  182. package/build/io/hex.js +138 -0
  183. package/build/io/hex.js.map +1 -0
  184. package/build/io/index.d.ts +17 -0
  185. package/build/io/index.d.ts.map +1 -0
  186. package/build/io/index.js +23 -0
  187. package/build/io/index.js.map +1 -0
  188. package/build/io/utils.d.ts +199 -0
  189. package/build/io/utils.d.ts.map +1 -0
  190. package/build/io/utils.js +271 -0
  191. package/build/io/utils.js.map +1 -0
  192. package/build/merkle.d.ts +10 -1
  193. package/build/merkle.d.ts.map +1 -0
  194. package/build/merkle.js +12 -1
  195. package/build/merkle.js.map +1 -0
  196. package/build/networks.d.ts +70 -9
  197. package/build/networks.d.ts.map +1 -0
  198. package/build/networks.js +90 -4
  199. package/build/networks.js.map +1 -0
  200. package/build/opcodes.d.ts +1 -0
  201. package/build/opcodes.d.ts.map +1 -0
  202. package/build/opcodes.js +1 -0
  203. package/build/opcodes.js.map +1 -0
  204. package/build/payments/bip341.d.ts +36 -9
  205. package/build/payments/bip341.d.ts.map +1 -0
  206. package/build/payments/bip341.js +35 -15
  207. package/build/payments/bip341.js.map +1 -0
  208. package/build/payments/embed.d.ts +120 -1
  209. package/build/payments/embed.d.ts.map +1 -0
  210. package/build/payments/embed.js +215 -34
  211. package/build/payments/embed.js.map +1 -0
  212. package/build/payments/index.d.ts +17 -10
  213. package/build/payments/index.d.ts.map +1 -0
  214. package/build/payments/index.js +20 -10
  215. package/build/payments/index.js.map +1 -0
  216. package/build/payments/p2ms.d.ts +159 -1
  217. package/build/payments/p2ms.d.ts.map +1 -0
  218. package/build/payments/p2ms.js +427 -108
  219. package/build/payments/p2ms.js.map +1 -0
  220. package/build/payments/p2op.d.ts +158 -24
  221. package/build/payments/p2op.d.ts.map +1 -0
  222. package/build/payments/p2op.js +379 -93
  223. package/build/payments/p2op.js.map +1 -0
  224. package/build/payments/p2pk.d.ts +162 -1
  225. package/build/payments/p2pk.d.ts.map +1 -0
  226. package/build/payments/p2pk.js +327 -58
  227. package/build/payments/p2pk.js.map +1 -0
  228. package/build/payments/p2pkh.d.ts +185 -1
  229. package/build/payments/p2pkh.d.ts.map +1 -0
  230. package/build/payments/p2pkh.js +467 -114
  231. package/build/payments/p2pkh.js.map +1 -0
  232. package/build/payments/p2sh.d.ts +159 -1
  233. package/build/payments/p2sh.d.ts.map +1 -0
  234. package/build/payments/p2sh.js +500 -152
  235. package/build/payments/p2sh.js.map +1 -0
  236. package/build/payments/p2tr.d.ts +193 -1
  237. package/build/payments/p2tr.d.ts.map +1 -0
  238. package/build/payments/p2tr.js +592 -174
  239. package/build/payments/p2tr.js.map +1 -0
  240. package/build/payments/p2wpkh.d.ts +170 -1
  241. package/build/payments/p2wpkh.d.ts.map +1 -0
  242. package/build/payments/p2wpkh.js +429 -104
  243. package/build/payments/p2wpkh.js.map +1 -0
  244. package/build/payments/p2wsh.d.ts +155 -1
  245. package/build/payments/p2wsh.d.ts.map +1 -0
  246. package/build/payments/p2wsh.js +466 -144
  247. package/build/payments/p2wsh.js.map +1 -0
  248. package/build/payments/types.d.ts +98 -64
  249. package/build/payments/types.d.ts.map +1 -0
  250. package/build/payments/types.js +17 -13
  251. package/build/payments/types.js.map +1 -0
  252. package/build/psbt/bip371.d.ts +35 -9
  253. package/build/psbt/bip371.d.ts.map +1 -0
  254. package/build/psbt/bip371.js +113 -28
  255. package/build/psbt/bip371.js.map +1 -0
  256. package/build/psbt/psbtutils.d.ts +56 -16
  257. package/build/psbt/psbtutils.d.ts.map +1 -0
  258. package/build/psbt/psbtutils.js +71 -16
  259. package/build/psbt/psbtutils.js.map +1 -0
  260. package/build/psbt/types.d.ts +249 -0
  261. package/build/psbt/types.d.ts.map +1 -0
  262. package/build/psbt/types.js +6 -0
  263. package/build/psbt/types.js.map +1 -0
  264. package/build/psbt/utils.d.ts +68 -0
  265. package/build/psbt/utils.d.ts.map +1 -0
  266. package/build/psbt/utils.js +171 -0
  267. package/build/psbt/utils.js.map +1 -0
  268. package/build/psbt/validation.d.ts +88 -0
  269. package/build/psbt/validation.d.ts.map +1 -0
  270. package/build/psbt/validation.js +149 -0
  271. package/build/psbt/validation.js.map +1 -0
  272. package/build/psbt.d.ts +84 -120
  273. package/build/psbt.d.ts.map +1 -0
  274. package/build/psbt.js +411 -412
  275. package/build/psbt.js.map +1 -0
  276. package/build/pubkey.d.ts +27 -6
  277. package/build/pubkey.d.ts.map +1 -0
  278. package/build/pubkey.js +37 -13
  279. package/build/pubkey.js.map +1 -0
  280. package/build/push_data.d.ts +24 -2
  281. package/build/push_data.d.ts.map +1 -0
  282. package/build/push_data.js +44 -12
  283. package/build/push_data.js.map +1 -0
  284. package/build/script.d.ts +33 -8
  285. package/build/script.d.ts.map +1 -0
  286. package/build/script.js +100 -36
  287. package/build/script.js.map +1 -0
  288. package/build/script_number.d.ts +17 -0
  289. package/build/script_number.d.ts.map +1 -0
  290. package/build/script_number.js +19 -0
  291. package/build/script_number.js.map +1 -0
  292. package/build/script_signature.d.ts +23 -5
  293. package/build/script_signature.d.ts.map +1 -0
  294. package/build/script_signature.js +48 -15
  295. package/build/script_signature.js.map +1 -0
  296. package/build/transaction.d.ts +160 -18
  297. package/build/transaction.d.ts.map +1 -0
  298. package/build/transaction.js +443 -176
  299. package/build/transaction.js.map +1 -0
  300. package/build/tsconfig.build.tsbuildinfo +1 -0
  301. package/build/types.d.ts +36 -38
  302. package/build/types.d.ts.map +1 -0
  303. package/build/types.js +175 -57
  304. package/build/types.js.map +1 -0
  305. package/build/workers/WorkerSigningPool.d.ts +174 -0
  306. package/build/workers/WorkerSigningPool.d.ts.map +1 -0
  307. package/build/workers/WorkerSigningPool.js +553 -0
  308. package/build/workers/WorkerSigningPool.js.map +1 -0
  309. package/build/workers/WorkerSigningPool.node.d.ts +124 -0
  310. package/build/workers/WorkerSigningPool.node.d.ts.map +1 -0
  311. package/build/workers/WorkerSigningPool.node.js +753 -0
  312. package/build/workers/WorkerSigningPool.node.js.map +1 -0
  313. package/build/workers/ecc-bundle.d.ts +25 -0
  314. package/build/workers/ecc-bundle.d.ts.map +1 -0
  315. package/build/workers/ecc-bundle.js +25 -0
  316. package/build/workers/ecc-bundle.js.map +1 -0
  317. package/build/workers/index.d.ts +91 -0
  318. package/build/workers/index.d.ts.map +1 -0
  319. package/build/workers/index.js +114 -0
  320. package/build/workers/index.js.map +1 -0
  321. package/build/workers/psbt-parallel.d.ts +117 -0
  322. package/build/workers/psbt-parallel.d.ts.map +1 -0
  323. package/build/workers/psbt-parallel.js +233 -0
  324. package/build/workers/psbt-parallel.js.map +1 -0
  325. package/build/workers/signing-worker.d.ts +37 -0
  326. package/build/workers/signing-worker.d.ts.map +1 -0
  327. package/build/workers/signing-worker.js +350 -0
  328. package/build/workers/signing-worker.js.map +1 -0
  329. package/build/workers/types.d.ts +365 -0
  330. package/build/workers/types.d.ts.map +1 -0
  331. package/build/workers/types.js +60 -0
  332. package/build/workers/types.js.map +1 -0
  333. package/package.json +83 -25
  334. package/scripts/bundle-ecc.ts +111 -0
  335. package/src/address.ts +81 -44
  336. package/src/bech32utils.ts +3 -3
  337. package/src/bip66.ts +34 -24
  338. package/src/block.ts +196 -84
  339. package/src/branded.ts +18 -0
  340. package/src/crypto.ts +64 -26
  341. package/src/ecc/context.ts +277 -0
  342. package/src/ecc/index.ts +14 -0
  343. package/src/ecc/types.ts +154 -0
  344. package/src/ecpair.d.ts +99 -0
  345. package/src/errors.ts +163 -0
  346. package/src/index.ts +113 -9
  347. package/src/io/BinaryReader.ts +461 -0
  348. package/src/io/BinaryWriter.ts +696 -0
  349. package/src/io/MemoryPool.ts +343 -0
  350. package/src/io/base64.ts +20 -0
  351. package/src/io/hex.ts +155 -0
  352. package/src/io/index.ts +41 -0
  353. package/src/io/utils.ts +283 -0
  354. package/src/merkle.ts +14 -9
  355. package/src/networks.ts +9 -9
  356. package/src/payments/bip341.ts +34 -33
  357. package/src/payments/embed.ts +244 -41
  358. package/src/payments/index.ts +12 -10
  359. package/src/payments/p2ms.ts +490 -118
  360. package/src/payments/p2op.ts +431 -133
  361. package/src/payments/p2pk.ts +370 -72
  362. package/src/payments/p2pkh.ts +524 -130
  363. package/src/payments/p2sh.ts +572 -172
  364. package/src/payments/p2tr.ts +686 -194
  365. package/src/payments/p2wpkh.ts +484 -107
  366. package/src/payments/p2wsh.ts +526 -164
  367. package/src/payments/types.ts +80 -66
  368. package/src/psbt/bip371.ts +68 -51
  369. package/src/psbt/psbtutils.ts +39 -40
  370. package/src/psbt/types.ts +331 -0
  371. package/src/psbt/utils.ts +188 -0
  372. package/src/psbt/validation.ts +192 -0
  373. package/src/psbt.ts +566 -809
  374. package/src/pubkey.ts +24 -25
  375. package/src/push_data.ts +18 -16
  376. package/src/script.ts +82 -64
  377. package/src/script_number.ts +6 -6
  378. package/src/script_signature.ts +33 -36
  379. package/src/transaction.ts +458 -238
  380. package/src/types.ts +231 -100
  381. package/src/workers/WorkerSigningPool.node.ts +887 -0
  382. package/src/workers/WorkerSigningPool.ts +670 -0
  383. package/src/workers/ecc-bundle.ts +26 -0
  384. package/src/workers/index.ts +165 -0
  385. package/src/workers/psbt-parallel.ts +332 -0
  386. package/src/workers/signing-worker.ts +353 -0
  387. package/src/workers/types.ts +413 -0
  388. package/test/address.spec.ts +9 -6
  389. package/test/bitcoin.core.spec.ts +16 -17
  390. package/test/block.spec.ts +8 -7
  391. package/test/bufferutils.spec.ts +228 -214
  392. package/test/crypto.spec.ts +19 -11
  393. package/test/fixtures/p2pk.json +0 -8
  394. package/test/fixtures/p2pkh.json +1 -1
  395. package/test/fixtures/p2sh.json +1 -1
  396. package/test/fixtures/script.json +1 -1
  397. package/test/fixtures/transaction.json +2 -2
  398. package/test/integration/_regtest.ts +25 -0
  399. package/test/integration/addresses.spec.ts +4 -3
  400. package/test/integration/bip32.spec.ts +2 -1
  401. package/test/integration/blocks.spec.ts +1 -1
  402. package/test/integration/cltv.spec.ts +18 -16
  403. package/test/integration/csv.spec.ts +37 -64
  404. package/test/integration/payments.spec.ts +5 -3
  405. package/test/integration/taproot.spec.ts +76 -83
  406. package/test/integration/transactions.spec.ts +38 -35
  407. package/test/payments.spec.ts +35 -13
  408. package/test/payments.utils.ts +17 -16
  409. package/test/psbt.spec.ts +111 -100
  410. package/test/script.spec.ts +11 -10
  411. package/test/script_signature.spec.ts +9 -11
  412. package/test/taproot-cache.spec.ts +694 -0
  413. package/test/transaction.spec.ts +32 -40
  414. package/test/types.spec.ts +74 -29
  415. package/test/workers-pool.spec.ts +963 -0
  416. package/test/workers-signing.spec.ts +635 -0
  417. package/test/workers.spec.ts +1390 -0
  418. package/tsconfig.base.json +34 -18
  419. package/tsconfig.browser.json +15 -0
  420. package/tsconfig.build.json +5 -0
  421. package/tsconfig.json +5 -14
  422. package/vite.config.browser.ts +3 -42
  423. package/vitest.config.integration.ts +11 -0
  424. package/browser/bufferutils.d.ts +0 -34
  425. package/browser/chunks/crypto-BhCpKpek.js +0 -2033
  426. package/browser/chunks/payments-yjA0Evsv.js +0 -1089
  427. package/browser/chunks/psbt-URK2hBFc.js +0 -4039
  428. package/browser/chunks/script-DyPItFEl.js +0 -318
  429. package/browser/chunks/transaction-C_UbhMGn.js +0 -432
  430. package/browser/chunks/utils-DNZi-T5W.js +0 -761
  431. package/browser/ecc_lib.d.ts +0 -3
  432. package/browser/hooks/AdvancedSignatureManager.d.ts +0 -16
  433. package/browser/hooks/HookedSigner.d.ts +0 -4
  434. package/browser/hooks/SignatureManager.d.ts +0 -13
  435. package/browser/payments/lazy.d.ts +0 -2
  436. package/browser/typeforce.d.ts +0 -38
  437. package/build/bufferutils.d.ts +0 -34
  438. package/build/bufferutils.js +0 -141
  439. package/build/ecc_lib.d.ts +0 -3
  440. package/build/ecc_lib.js +0 -61
  441. package/build/hooks/AdvancedSignatureManager.d.ts +0 -16
  442. package/build/hooks/AdvancedSignatureManager.js +0 -52
  443. package/build/hooks/HookedSigner.d.ts +0 -4
  444. package/build/hooks/HookedSigner.js +0 -64
  445. package/build/hooks/SignatureManager.d.ts +0 -13
  446. package/build/hooks/SignatureManager.js +0 -45
  447. package/build/payments/lazy.d.ts +0 -2
  448. package/build/payments/lazy.js +0 -28
  449. package/build/tsconfig.tsbuildinfo +0 -1
  450. package/src/bufferutils.ts +0 -188
  451. package/src/ecc_lib.ts +0 -94
  452. package/src/hooks/AdvancedSignatureManager.ts +0 -104
  453. package/src/hooks/HookedSigner.ts +0 -108
  454. package/src/hooks/SignatureManager.ts +0 -84
  455. package/src/payments/lazy.ts +0 -28
  456. package/src/typeforce.d.ts +0 -38
  457. package/tsconfig.webpack.json +0 -18
@@ -2,6 +2,7 @@ import assert from 'assert';
2
2
  import { beforeEach, describe, it } from 'vitest';
3
3
  import { Transaction } from '../src/index.js';
4
4
  import * as bscript from '../src/script.js';
5
+ import type { Bytes32, Script, Satoshi } from '../src/types.js';
5
6
  import fixtures from './fixtures/transaction.json' with { type: 'json' };
6
7
 
7
8
  describe('Transaction', () => {
@@ -11,11 +12,11 @@ describe('Transaction', () => {
11
12
  tx.locktime = raw.locktime;
12
13
 
13
14
  raw.ins.forEach((txIn: any, i: number) => {
14
- const txHash = Buffer.from(txIn.hash, 'hex');
15
+ const txHash = Buffer.from(txIn.hash, 'hex') as unknown as Bytes32;
15
16
  let scriptSig;
16
17
 
17
18
  if (txIn.data) {
18
- scriptSig = Buffer.from(txIn.data, 'hex');
19
+ scriptSig = Buffer.from(txIn.data, 'hex') as unknown as Script;
19
20
  } else if (txIn.script) {
20
21
  scriptSig = bscript.fromASM(txIn.script);
21
22
  }
@@ -32,15 +33,15 @@ describe('Transaction', () => {
32
33
  });
33
34
 
34
35
  raw.outs.forEach((txOut: any) => {
35
- let script: Buffer;
36
+ let script: Script;
36
37
 
37
38
  if (txOut.data) {
38
- script = Buffer.from(txOut.data, 'hex');
39
+ script = Buffer.from(txOut.data, 'hex') as unknown as Script;
39
40
  } else if (txOut.script) {
40
41
  script = bscript.fromASM(txOut.script);
41
42
  }
42
43
 
43
- tx.addOutput(script!, txOut.value);
44
+ tx.addOutput(script!, BigInt(txOut.value) as Satoshi);
44
45
  });
45
46
 
46
47
  return tx;
@@ -112,11 +113,11 @@ describe('Transaction', () => {
112
113
 
113
114
  assert.strictEqual(a.length, byteLength);
114
115
  assert.strictEqual(b.length, byteLength);
115
- assert.strictEqual(a.toString('hex'), f.hex);
116
- assert.strictEqual(b.toString('hex'), f.hex);
116
+ assert.strictEqual(Buffer.from(a).toString('hex'), f.hex);
117
+ assert.strictEqual(Buffer.from(b).toString('hex'), f.hex);
117
118
  assert.deepStrictEqual(a, b);
118
- assert.deepStrictEqual(a, target.slice(0, byteLength));
119
- assert.deepStrictEqual(b, target.slice(byteLength));
119
+ assert.deepStrictEqual(Buffer.from(a), target.slice(0, byteLength));
120
+ assert.deepStrictEqual(Buffer.from(b), target.slice(byteLength));
120
121
  });
121
122
  });
122
123
 
@@ -150,12 +151,12 @@ describe('Transaction', () => {
150
151
  });
151
152
 
152
153
  describe('addInput', () => {
153
- let prevTxHash: Buffer;
154
+ let prevTxHash: Bytes32;
154
155
  beforeEach(() => {
155
156
  prevTxHash = Buffer.from(
156
157
  'ffffffff00ffff000000000000000000000000000000000000000000101010ff',
157
158
  'hex',
158
- );
159
+ ) as unknown as Bytes32;
159
160
  });
160
161
 
161
162
  it('returns an index', () => {
@@ -176,7 +177,7 @@ describe('Transaction', () => {
176
177
  fixtures.invalid.addInput.forEach((f) => {
177
178
  it('throws on ' + f.exception, () => {
178
179
  const tx = new Transaction();
179
- const hash = Buffer.from(f.hash, 'hex');
180
+ const hash = Buffer.from(f.hash, 'hex') as unknown as Bytes32;
180
181
 
181
182
  assert.throws(() => {
182
183
  tx.addInput(hash, f.index);
@@ -188,8 +189,8 @@ describe('Transaction', () => {
188
189
  describe('addOutput', () => {
189
190
  it('returns an index', () => {
190
191
  const tx = new Transaction();
191
- assert.strictEqual(tx.addOutput(Buffer.alloc(0), 0), 0);
192
- assert.strictEqual(tx.addOutput(Buffer.alloc(0), 0), 1);
192
+ assert.strictEqual(tx.addOutput(Buffer.alloc(0) as unknown as Script, 0n as Satoshi), 0);
193
+ assert.strictEqual(tx.addOutput(Buffer.alloc(0) as unknown as Script, 0n as Satoshi), 1);
193
194
  });
194
195
  });
195
196
 
@@ -218,7 +219,7 @@ describe('Transaction', () => {
218
219
  it('should return the id for ' + f.id + '(' + f.description + ')', () => {
219
220
  const tx = Transaction.fromHex(f.whex || f.hex);
220
221
 
221
- assert.strictEqual(tx.getHash().toString('hex'), f.hash);
222
+ assert.strictEqual(Buffer.from(tx.getHash()).toString('hex'), f.hash);
222
223
  assert.strictEqual(tx.getId(), f.id);
223
224
  });
224
225
  }
@@ -247,25 +248,18 @@ describe('Transaction', () => {
247
248
  Buffer.from(
248
249
  '0000000000000000000000000000000000000000000000000000000000000000',
249
250
  'hex',
250
- ),
251
+ ) as unknown as Bytes32,
251
252
  0,
252
253
  );
253
- tx.addOutput(randScript, 5000000000);
254
-
255
- const original = (tx as any).__toBuffer;
256
- (tx as any).__toBuffer = function (this: Transaction, a: any, b: any, c: any): any {
257
- if (c !== false) throw new Error('hashForSignature MUST pass false');
254
+ tx.addOutput(randScript as unknown as Script, 5000000000n as Satoshi);
258
255
 
259
- return original.call(this, a, b, c);
260
- };
261
-
262
- assert.throws(() => {
263
- (tx as any).__toBuffer(undefined, undefined, true);
264
- }, /hashForSignature MUST pass false/);
256
+ // Note: __toBuffer has been converted to #toBuffer (true private field)
257
+ // which cannot be accessed from tests. The behavior is tested through
258
+ // the expected hash output in the fixtures below.
265
259
 
266
- // assert hashForSignature does not pass false
260
+ // Test that hashForSignature works correctly
267
261
  assert.doesNotThrow(() => {
268
- tx.hashForSignature(0, randScript, 1);
262
+ tx.hashForSignature(0, randScript as unknown as Script, 1);
269
263
  });
270
264
  });
271
265
 
@@ -280,7 +274,7 @@ describe('Transaction', () => {
280
274
  const script = bscript.fromASM(f.script);
281
275
 
282
276
  assert.strictEqual(
283
- tx.hashForSignature(f.inIndex, script, f.type).toString('hex'),
277
+ Buffer.from(tx.hashForSignature(f.inIndex, script, f.type)).toString('hex'),
284
278
  f.hash,
285
279
  );
286
280
  },
@@ -299,10 +293,8 @@ describe('Transaction', () => {
299
293
  const tx = Transaction.fromHex(f.txHex);
300
294
  const script = bscript.fromASM(f.script);
301
295
 
302
- assert.strictEqual(
303
- tx.hashForWitnessV0(f.inIndex, script, f.value, f.type).toString('hex'),
304
- f.hash,
305
- );
296
+ const hash = tx.hashForWitnessV0(f.inIndex, script, BigInt(f.value) as Satoshi, f.type);
297
+ assert.strictEqual(Buffer.from(hash).toString('hex'), f.hash);
306
298
  },
307
299
  );
308
300
  });
@@ -311,27 +303,27 @@ describe('Transaction', () => {
311
303
  describe('taprootSigning', () => {
312
304
  fixtures.taprootSigning.forEach((f) => {
313
305
  const tx = Transaction.fromHex(f.txHex);
314
- const prevOutScripts = f.utxos.map(({ scriptHex }) => Buffer.from(scriptHex, 'hex'));
315
- const values = f.utxos.map(({ value }) => value);
306
+ const prevOutScripts = f.utxos.map(({ scriptHex }) => Buffer.from(scriptHex, 'hex')) as unknown as Script[];
307
+ const values = f.utxos.map(({ value }) => BigInt(value)) as Satoshi[];
316
308
 
317
309
  f.cases.forEach((c) => {
318
- let hash: Buffer;
310
+ let hash: Uint8Array;
319
311
 
320
312
  it(`should hash to ${c.hash} for ${f.description}:${c.vin}`, () => {
321
313
  const hashType = Buffer.from(c.typeHex, 'hex').readUInt8(0);
322
314
 
323
315
  hash = tx.hashForWitnessV1(c.vin, prevOutScripts, values, hashType);
324
- assert.strictEqual(hash.toString('hex'), c.hash);
316
+ assert.strictEqual(Buffer.from(hash).toString('hex'), c.hash);
325
317
  });
326
318
  });
327
319
  });
328
320
  });
329
321
 
330
322
  describe('setWitness', () => {
331
- it('only accepts a witness stack (Array of Buffers)', () => {
323
+ it('only accepts a witness stack (Array of Uint8Arrays)', () => {
332
324
  assert.throws(() => {
333
325
  (new Transaction().setWitness as any)(0, 'foobar');
334
- }, /Expected property "1" of type \[Buffer], got String "foobar"/);
326
+ }, /Expected array of Uint8Array for witness/);
335
327
  });
336
328
  });
337
329
  });
@@ -2,52 +2,97 @@ import assert from 'assert';
2
2
  import { describe, it } from 'vitest';
3
3
  import * as types from '../src/types.js';
4
4
 
5
- // @ts-ignore
6
- import typeforce from 'typeforce';
7
-
8
5
  describe('types', () => {
9
- describe('Buffer Hash160/Hash256', () => {
10
- const buffer20byte = Buffer.alloc(20);
11
- const buffer32byte = Buffer.alloc(32);
6
+ describe('Buffer validation', () => {
7
+ const buffer20byte = new Uint8Array(20);
8
+ const buffer32byte = new Uint8Array(32);
12
9
 
13
- it('return true for valid size', () => {
14
- assert(types.Hash160bit(buffer20byte));
15
- assert(types.Hash256bit(buffer32byte));
10
+ it('isBytes20 returns true for 20-byte buffer', () => {
11
+ assert(types.isBytes20(buffer20byte));
16
12
  });
17
13
 
18
- it('return true for oneOf', () => {
19
- assert.doesNotThrow(() => {
20
- typeforce(types.oneOf(types.Hash160bit, types.Hash256bit), buffer32byte);
21
- });
14
+ it('isBytes32 returns true for 32-byte buffer', () => {
15
+ assert(types.isBytes32(buffer32byte));
16
+ });
22
17
 
23
- assert.doesNotThrow(() => {
24
- typeforce(types.oneOf(types.Hash256bit, types.Hash160bit), buffer32byte);
25
- });
18
+ it('isBytes20 returns false for wrong size', () => {
19
+ assert.strictEqual(types.isBytes20(buffer32byte), false);
20
+ });
21
+
22
+ it('isBytes32 returns false for wrong size', () => {
23
+ assert.strictEqual(types.isBytes32(buffer20byte), false);
26
24
  });
27
25
 
28
- it('throws for invalid size', () => {
26
+ it('toBytes20 throws for invalid size', () => {
29
27
  assert.throws(() => {
30
- types.Hash160bit(buffer32byte);
31
- }, /Expected Buffer\(Length: 20\), got Buffer\(Length: 32\)/);
28
+ types.toBytes20(buffer32byte);
29
+ }, /Expected 20-byte Uint8Array/);
30
+ });
32
31
 
32
+ it('toBytes32 throws for invalid size', () => {
33
33
  assert.throws(() => {
34
- types.Hash256bit(buffer20byte);
35
- }, /Expected Buffer\(Length: 32\), got Buffer\(Length: 20\)/);
34
+ types.toBytes32(buffer20byte);
35
+ }, /Expected 32-byte Uint8Array/);
36
36
  });
37
37
  });
38
38
 
39
39
  describe('Satoshi', () => {
40
40
  [
41
- { value: -1, result: false },
42
- { value: 0, result: true },
43
- { value: 1, result: true },
44
- { value: 20999999 * 1e8, result: true },
45
- { value: 21000000 * 1e8, result: true },
46
- { value: 21000001 * 1e8, result: false },
41
+ { value: -1n, result: false },
42
+ { value: 0n, result: true },
43
+ { value: 1n, result: true },
44
+ { value: 20999999n * 100000000n, result: true },
45
+ { value: 21000000n * 100000000n, result: true },
46
+ { value: 21000001n * 100000000n, result: false },
47
47
  ].forEach((f) => {
48
- it('returns ' + f.result + ' for valid for ' + f.value, () => {
49
- assert.strictEqual(types.Satoshi(f.value), f.result);
48
+ it('returns ' + f.result + ' for value ' + f.value, () => {
49
+ assert.strictEqual(types.isSatoshi(f.value), f.result);
50
50
  });
51
51
  });
52
52
  });
53
+
54
+ describe('Type guards', () => {
55
+ it('isUInt8 validates correctly', () => {
56
+ assert.strictEqual(types.isUInt8(0), true);
57
+ assert.strictEqual(types.isUInt8(255), true);
58
+ assert.strictEqual(types.isUInt8(256), false);
59
+ assert.strictEqual(types.isUInt8(-1), false);
60
+ assert.strictEqual(types.isUInt8(1.5), false);
61
+ });
62
+
63
+ it('isUInt32 validates correctly', () => {
64
+ assert.strictEqual(types.isUInt32(0), true);
65
+ assert.strictEqual(types.isUInt32(0xffffffff), true);
66
+ assert.strictEqual(types.isUInt32(0x100000000), false);
67
+ assert.strictEqual(types.isUInt32(-1), false);
68
+ });
69
+
70
+ it('isHex validates correctly', () => {
71
+ assert.strictEqual(types.isHex('abcd'), true);
72
+ assert.strictEqual(types.isHex('ABCD'), true);
73
+ assert.strictEqual(types.isHex('1234'), true);
74
+ assert.strictEqual(types.isHex('abc'), false); // odd length
75
+ assert.strictEqual(types.isHex('ghij'), false); // invalid chars
76
+ });
77
+
78
+ it('isUint8Array validates correctly', () => {
79
+ assert.strictEqual(types.isUint8Array(new Uint8Array(10)), true);
80
+ assert.strictEqual(types.isUint8Array(Buffer.alloc(10)), true);
81
+ assert.strictEqual(types.isUint8Array([1, 2, 3]), false);
82
+ assert.strictEqual(types.isUint8Array('hello'), false);
83
+ });
84
+
85
+ it('isPoint validates public keys', () => {
86
+ // Compressed pubkey (33 bytes, prefix 0x02 or 0x03)
87
+ const compressedKey = new Uint8Array(33);
88
+ compressedKey[0] = 0x02;
89
+ compressedKey[1] = 0x01; // non-zero x coordinate
90
+
91
+ // Invalid: all zeros
92
+ const zeroKey = new Uint8Array(33);
93
+ zeroKey[0] = 0x02;
94
+
95
+ assert.strictEqual(types.isPoint(zeroKey), false);
96
+ });
97
+ });
53
98
  });