@btc-vision/bitcoin 6.5.6 → 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 (455) hide show
  1. package/HOW_TO_WRITE_GOOD_CODE.md +2436 -0
  2. package/benchmark/psbt-2000-inputs.bench.ts +178 -0
  3. package/benchmark/signing.bench.ts +147 -0
  4. package/browser/address.d.ts +56 -9
  5. package/browser/address.d.ts.map +1 -0
  6. package/browser/bech32utils.d.ts +9 -1
  7. package/browser/bech32utils.d.ts.map +1 -0
  8. package/browser/bip66.d.ts +11 -6
  9. package/browser/bip66.d.ts.map +1 -0
  10. package/browser/block.d.ts +117 -11
  11. package/browser/block.d.ts.map +1 -0
  12. package/browser/branded.d.ts +20 -0
  13. package/browser/branded.d.ts.map +1 -0
  14. package/browser/crypto/crypto.d.ts +1 -0
  15. package/browser/crypto/crypto.d.ts.map +1 -0
  16. package/browser/crypto.d.ts +46 -7
  17. package/browser/crypto.d.ts.map +1 -0
  18. package/browser/ecc/context.d.ts +129 -0
  19. package/browser/ecc/context.d.ts.map +1 -0
  20. package/browser/ecc/index.d.ts +11 -0
  21. package/browser/ecc/index.d.ts.map +1 -0
  22. package/browser/ecc/types.d.ts +128 -0
  23. package/browser/ecc/types.d.ts.map +1 -0
  24. package/browser/ecpair.d.ts +99 -0
  25. package/browser/errors.d.ts +124 -0
  26. package/browser/errors.d.ts.map +1 -0
  27. package/browser/index.d.ts +32 -5
  28. package/browser/index.d.ts.map +1 -0
  29. package/browser/index.js +12482 -101
  30. package/browser/io/BinaryReader.d.ts +276 -0
  31. package/browser/io/BinaryReader.d.ts.map +1 -0
  32. package/browser/io/BinaryWriter.d.ts +391 -0
  33. package/browser/io/BinaryWriter.d.ts.map +1 -0
  34. package/browser/io/MemoryPool.d.ts +220 -0
  35. package/browser/io/MemoryPool.d.ts.map +1 -0
  36. package/browser/io/base64.d.ts +13 -0
  37. package/browser/io/base64.d.ts.map +1 -0
  38. package/browser/io/hex.d.ts +67 -0
  39. package/browser/io/hex.d.ts.map +1 -0
  40. package/browser/io/index.d.ts +17 -0
  41. package/browser/io/index.d.ts.map +1 -0
  42. package/browser/io/utils.d.ts +199 -0
  43. package/browser/io/utils.d.ts.map +1 -0
  44. package/browser/merkle.d.ts +10 -1
  45. package/browser/merkle.d.ts.map +1 -0
  46. package/browser/networks.d.ts +70 -9
  47. package/browser/networks.d.ts.map +1 -0
  48. package/browser/opcodes.d.ts +1 -0
  49. package/browser/opcodes.d.ts.map +1 -0
  50. package/browser/payments/bip341.d.ts +35 -9
  51. package/browser/payments/bip341.d.ts.map +1 -0
  52. package/browser/payments/embed.d.ts +112 -1
  53. package/browser/payments/embed.d.ts.map +1 -0
  54. package/browser/payments/index.d.ts +17 -10
  55. package/browser/payments/index.d.ts.map +1 -0
  56. package/browser/payments/p2ms.d.ts +150 -0
  57. package/browser/payments/p2ms.d.ts.map +1 -0
  58. package/browser/payments/p2op.d.ts +150 -24
  59. package/browser/payments/p2op.d.ts.map +1 -0
  60. package/browser/payments/p2pk.d.ts +154 -1
  61. package/browser/payments/p2pk.d.ts.map +1 -0
  62. package/browser/payments/p2pkh.d.ts +176 -1
  63. package/browser/payments/p2pkh.d.ts.map +1 -0
  64. package/browser/payments/p2sh.d.ts +150 -1
  65. package/browser/payments/p2sh.d.ts.map +1 -0
  66. package/browser/payments/p2tr.d.ts +185 -1
  67. package/browser/payments/p2tr.d.ts.map +1 -0
  68. package/browser/payments/p2wpkh.d.ts +161 -1
  69. package/browser/payments/p2wpkh.d.ts.map +1 -0
  70. package/browser/payments/p2wsh.d.ts +146 -1
  71. package/browser/payments/p2wsh.d.ts.map +1 -0
  72. package/browser/payments/types.d.ts +94 -64
  73. package/browser/payments/types.d.ts.map +1 -0
  74. package/browser/psbt/bip371.d.ts +34 -8
  75. package/browser/psbt/bip371.d.ts.map +1 -0
  76. package/browser/psbt/psbtutils.d.ts +56 -16
  77. package/browser/psbt/psbtutils.d.ts.map +1 -0
  78. package/browser/psbt/types.d.ts +245 -0
  79. package/browser/psbt/types.d.ts.map +1 -0
  80. package/browser/psbt/utils.d.ts +64 -0
  81. package/browser/psbt/utils.d.ts.map +1 -0
  82. package/browser/psbt/validation.d.ts +84 -0
  83. package/browser/psbt/validation.d.ts.map +1 -0
  84. package/browser/psbt.d.ts +82 -118
  85. package/browser/psbt.d.ts.map +1 -0
  86. package/browser/pubkey.d.ts +27 -6
  87. package/browser/pubkey.d.ts.map +1 -0
  88. package/browser/push_data.d.ts +24 -2
  89. package/browser/push_data.d.ts.map +1 -0
  90. package/browser/script.d.ts +33 -8
  91. package/browser/script.d.ts.map +1 -0
  92. package/browser/script_number.d.ts +17 -0
  93. package/browser/script_number.d.ts.map +1 -0
  94. package/browser/script_signature.d.ts +23 -5
  95. package/browser/script_signature.d.ts.map +1 -0
  96. package/browser/transaction.d.ts +160 -18
  97. package/browser/transaction.d.ts.map +1 -0
  98. package/browser/types.d.ts +36 -38
  99. package/browser/types.d.ts.map +1 -0
  100. package/browser/workers/WorkerSigningPool.d.ts +143 -0
  101. package/browser/workers/WorkerSigningPool.d.ts.map +1 -0
  102. package/browser/workers/WorkerSigningPool.node.d.ts +116 -0
  103. package/browser/workers/WorkerSigningPool.node.d.ts.map +1 -0
  104. package/browser/workers/ecc-bundle.d.ts +25 -0
  105. package/browser/workers/ecc-bundle.d.ts.map +1 -0
  106. package/browser/workers/index.d.ts +91 -0
  107. package/browser/workers/index.d.ts.map +1 -0
  108. package/browser/workers/psbt-parallel.d.ts +88 -0
  109. package/browser/workers/psbt-parallel.d.ts.map +1 -0
  110. package/browser/workers/signing-worker.d.ts +37 -0
  111. package/browser/workers/signing-worker.d.ts.map +1 -0
  112. package/browser/workers/types.d.ts +365 -0
  113. package/browser/workers/types.d.ts.map +1 -0
  114. package/build/address.d.ts +57 -10
  115. package/build/address.d.ts.map +1 -0
  116. package/build/address.js +80 -24
  117. package/build/address.js.map +1 -0
  118. package/build/bech32utils.d.ts +9 -1
  119. package/build/bech32utils.d.ts.map +1 -0
  120. package/build/bech32utils.js +10 -2
  121. package/build/bech32utils.js.map +1 -0
  122. package/build/bip66.d.ts +11 -6
  123. package/build/bip66.d.ts.map +1 -0
  124. package/build/bip66.js +32 -3
  125. package/build/bip66.js.map +1 -0
  126. package/build/block.d.ts +117 -11
  127. package/build/block.d.ts.map +1 -0
  128. package/build/block.js +204 -72
  129. package/build/block.js.map +1 -0
  130. package/build/branded.d.ts +20 -0
  131. package/build/branded.d.ts.map +1 -0
  132. package/build/branded.js +7 -0
  133. package/build/branded.js.map +1 -0
  134. package/build/crypto/crypto.d.ts +1 -0
  135. package/build/crypto/crypto.d.ts.map +1 -0
  136. package/build/crypto/crypto.js +1 -0
  137. package/build/crypto/crypto.js.map +1 -0
  138. package/build/crypto.d.ts +46 -7
  139. package/build/crypto.d.ts.map +1 -0
  140. package/build/crypto.js +65 -20
  141. package/build/crypto.js.map +1 -0
  142. package/build/ecc/context.d.ts +135 -0
  143. package/build/ecc/context.d.ts.map +1 -0
  144. package/build/ecc/context.js +232 -0
  145. package/build/ecc/context.js.map +1 -0
  146. package/build/ecc/index.d.ts +11 -0
  147. package/build/ecc/index.d.ts.map +1 -0
  148. package/build/ecc/index.js +11 -0
  149. package/build/ecc/index.js.map +1 -0
  150. package/build/ecc/types.d.ts +134 -0
  151. package/build/ecc/types.d.ts.map +1 -0
  152. package/build/ecc/types.js +8 -0
  153. package/build/ecc/types.js.map +1 -0
  154. package/build/errors.d.ts +124 -0
  155. package/build/errors.d.ts.map +1 -0
  156. package/build/errors.js +155 -0
  157. package/build/errors.js.map +1 -0
  158. package/build/index.d.ts +32 -5
  159. package/build/index.d.ts.map +1 -0
  160. package/build/index.js +26 -3
  161. package/build/index.js.map +1 -0
  162. package/build/io/BinaryReader.d.ts +276 -0
  163. package/build/io/BinaryReader.d.ts.map +1 -0
  164. package/build/io/BinaryReader.js +425 -0
  165. package/build/io/BinaryReader.js.map +1 -0
  166. package/build/io/BinaryWriter.d.ts +391 -0
  167. package/build/io/BinaryWriter.d.ts.map +1 -0
  168. package/build/io/BinaryWriter.js +611 -0
  169. package/build/io/BinaryWriter.js.map +1 -0
  170. package/build/io/MemoryPool.d.ts +220 -0
  171. package/build/io/MemoryPool.d.ts.map +1 -0
  172. package/build/io/MemoryPool.js +309 -0
  173. package/build/io/MemoryPool.js.map +1 -0
  174. package/build/io/base64.d.ts +13 -0
  175. package/build/io/base64.d.ts.map +1 -0
  176. package/build/io/base64.js +20 -0
  177. package/build/io/base64.js.map +1 -0
  178. package/build/io/hex.d.ts +67 -0
  179. package/build/io/hex.d.ts.map +1 -0
  180. package/build/io/hex.js +138 -0
  181. package/build/io/hex.js.map +1 -0
  182. package/build/io/index.d.ts +17 -0
  183. package/build/io/index.d.ts.map +1 -0
  184. package/build/io/index.js +23 -0
  185. package/build/io/index.js.map +1 -0
  186. package/build/io/utils.d.ts +199 -0
  187. package/build/io/utils.d.ts.map +1 -0
  188. package/build/io/utils.js +271 -0
  189. package/build/io/utils.js.map +1 -0
  190. package/build/merkle.d.ts +10 -1
  191. package/build/merkle.d.ts.map +1 -0
  192. package/build/merkle.js +12 -1
  193. package/build/merkle.js.map +1 -0
  194. package/build/networks.d.ts +70 -9
  195. package/build/networks.d.ts.map +1 -0
  196. package/build/networks.js +90 -4
  197. package/build/networks.js.map +1 -0
  198. package/build/opcodes.d.ts +1 -0
  199. package/build/opcodes.d.ts.map +1 -0
  200. package/build/opcodes.js +1 -0
  201. package/build/opcodes.js.map +1 -0
  202. package/build/payments/bip341.d.ts +36 -9
  203. package/build/payments/bip341.d.ts.map +1 -0
  204. package/build/payments/bip341.js +35 -15
  205. package/build/payments/bip341.js.map +1 -0
  206. package/build/payments/embed.d.ts +120 -1
  207. package/build/payments/embed.d.ts.map +1 -0
  208. package/build/payments/embed.js +215 -34
  209. package/build/payments/embed.js.map +1 -0
  210. package/build/payments/index.d.ts +17 -10
  211. package/build/payments/index.d.ts.map +1 -0
  212. package/build/payments/index.js +20 -10
  213. package/build/payments/index.js.map +1 -0
  214. package/build/payments/p2ms.d.ts +159 -1
  215. package/build/payments/p2ms.d.ts.map +1 -0
  216. package/build/payments/p2ms.js +427 -108
  217. package/build/payments/p2ms.js.map +1 -0
  218. package/build/payments/p2op.d.ts +158 -24
  219. package/build/payments/p2op.d.ts.map +1 -0
  220. package/build/payments/p2op.js +379 -93
  221. package/build/payments/p2op.js.map +1 -0
  222. package/build/payments/p2pk.d.ts +162 -1
  223. package/build/payments/p2pk.d.ts.map +1 -0
  224. package/build/payments/p2pk.js +327 -58
  225. package/build/payments/p2pk.js.map +1 -0
  226. package/build/payments/p2pkh.d.ts +185 -1
  227. package/build/payments/p2pkh.d.ts.map +1 -0
  228. package/build/payments/p2pkh.js +467 -114
  229. package/build/payments/p2pkh.js.map +1 -0
  230. package/build/payments/p2sh.d.ts +159 -1
  231. package/build/payments/p2sh.d.ts.map +1 -0
  232. package/build/payments/p2sh.js +500 -152
  233. package/build/payments/p2sh.js.map +1 -0
  234. package/build/payments/p2tr.d.ts +193 -1
  235. package/build/payments/p2tr.d.ts.map +1 -0
  236. package/build/payments/p2tr.js +592 -174
  237. package/build/payments/p2tr.js.map +1 -0
  238. package/build/payments/p2wpkh.d.ts +170 -1
  239. package/build/payments/p2wpkh.d.ts.map +1 -0
  240. package/build/payments/p2wpkh.js +429 -104
  241. package/build/payments/p2wpkh.js.map +1 -0
  242. package/build/payments/p2wsh.d.ts +155 -1
  243. package/build/payments/p2wsh.d.ts.map +1 -0
  244. package/build/payments/p2wsh.js +466 -144
  245. package/build/payments/p2wsh.js.map +1 -0
  246. package/build/payments/types.d.ts +98 -64
  247. package/build/payments/types.d.ts.map +1 -0
  248. package/build/payments/types.js +17 -13
  249. package/build/payments/types.js.map +1 -0
  250. package/build/psbt/bip371.d.ts +35 -9
  251. package/build/psbt/bip371.d.ts.map +1 -0
  252. package/build/psbt/bip371.js +113 -28
  253. package/build/psbt/bip371.js.map +1 -0
  254. package/build/psbt/psbtutils.d.ts +56 -16
  255. package/build/psbt/psbtutils.d.ts.map +1 -0
  256. package/build/psbt/psbtutils.js +71 -16
  257. package/build/psbt/psbtutils.js.map +1 -0
  258. package/build/psbt/types.d.ts +249 -0
  259. package/build/psbt/types.d.ts.map +1 -0
  260. package/build/psbt/types.js +6 -0
  261. package/build/psbt/types.js.map +1 -0
  262. package/build/psbt/utils.d.ts +68 -0
  263. package/build/psbt/utils.d.ts.map +1 -0
  264. package/build/psbt/utils.js +171 -0
  265. package/build/psbt/utils.js.map +1 -0
  266. package/build/psbt/validation.d.ts +88 -0
  267. package/build/psbt/validation.d.ts.map +1 -0
  268. package/build/psbt/validation.js +149 -0
  269. package/build/psbt/validation.js.map +1 -0
  270. package/build/psbt.d.ts +84 -120
  271. package/build/psbt.d.ts.map +1 -0
  272. package/build/psbt.js +411 -412
  273. package/build/psbt.js.map +1 -0
  274. package/build/pubkey.d.ts +27 -6
  275. package/build/pubkey.d.ts.map +1 -0
  276. package/build/pubkey.js +36 -12
  277. package/build/pubkey.js.map +1 -0
  278. package/build/push_data.d.ts +24 -2
  279. package/build/push_data.d.ts.map +1 -0
  280. package/build/push_data.js +44 -12
  281. package/build/push_data.js.map +1 -0
  282. package/build/script.d.ts +33 -8
  283. package/build/script.d.ts.map +1 -0
  284. package/build/script.js +100 -36
  285. package/build/script.js.map +1 -0
  286. package/build/script_number.d.ts +17 -0
  287. package/build/script_number.d.ts.map +1 -0
  288. package/build/script_number.js +19 -0
  289. package/build/script_number.js.map +1 -0
  290. package/build/script_signature.d.ts +23 -5
  291. package/build/script_signature.d.ts.map +1 -0
  292. package/build/script_signature.js +48 -15
  293. package/build/script_signature.js.map +1 -0
  294. package/build/transaction.d.ts +160 -18
  295. package/build/transaction.d.ts.map +1 -0
  296. package/build/transaction.js +443 -176
  297. package/build/transaction.js.map +1 -0
  298. package/build/tsconfig.build.tsbuildinfo +1 -0
  299. package/build/types.d.ts +36 -38
  300. package/build/types.d.ts.map +1 -0
  301. package/build/types.js +175 -57
  302. package/build/types.js.map +1 -0
  303. package/build/workers/WorkerSigningPool.d.ts +174 -0
  304. package/build/workers/WorkerSigningPool.d.ts.map +1 -0
  305. package/build/workers/WorkerSigningPool.js +553 -0
  306. package/build/workers/WorkerSigningPool.js.map +1 -0
  307. package/build/workers/WorkerSigningPool.node.d.ts +124 -0
  308. package/build/workers/WorkerSigningPool.node.d.ts.map +1 -0
  309. package/build/workers/WorkerSigningPool.node.js +753 -0
  310. package/build/workers/WorkerSigningPool.node.js.map +1 -0
  311. package/build/workers/ecc-bundle.d.ts +25 -0
  312. package/build/workers/ecc-bundle.d.ts.map +1 -0
  313. package/build/workers/ecc-bundle.js +25 -0
  314. package/build/workers/ecc-bundle.js.map +1 -0
  315. package/build/workers/index.d.ts +91 -0
  316. package/build/workers/index.d.ts.map +1 -0
  317. package/build/workers/index.js +114 -0
  318. package/build/workers/index.js.map +1 -0
  319. package/build/workers/psbt-parallel.d.ts +117 -0
  320. package/build/workers/psbt-parallel.d.ts.map +1 -0
  321. package/build/workers/psbt-parallel.js +233 -0
  322. package/build/workers/psbt-parallel.js.map +1 -0
  323. package/build/workers/signing-worker.d.ts +37 -0
  324. package/build/workers/signing-worker.d.ts.map +1 -0
  325. package/build/workers/signing-worker.js +350 -0
  326. package/build/workers/signing-worker.js.map +1 -0
  327. package/build/workers/types.d.ts +365 -0
  328. package/build/workers/types.d.ts.map +1 -0
  329. package/build/workers/types.js +60 -0
  330. package/build/workers/types.js.map +1 -0
  331. package/package.json +66 -8
  332. package/scripts/bundle-ecc.ts +111 -0
  333. package/src/address.ts +81 -44
  334. package/src/bech32utils.ts +3 -3
  335. package/src/bip66.ts +34 -24
  336. package/src/block.ts +196 -84
  337. package/src/branded.ts +18 -0
  338. package/src/crypto.ts +64 -26
  339. package/src/ecc/context.ts +277 -0
  340. package/src/ecc/index.ts +14 -0
  341. package/src/ecc/types.ts +154 -0
  342. package/src/ecpair.d.ts +99 -0
  343. package/src/errors.ts +163 -0
  344. package/src/index.ts +113 -9
  345. package/src/io/BinaryReader.ts +461 -0
  346. package/src/io/BinaryWriter.ts +696 -0
  347. package/src/io/MemoryPool.ts +343 -0
  348. package/src/io/base64.ts +20 -0
  349. package/src/io/hex.ts +155 -0
  350. package/src/io/index.ts +41 -0
  351. package/src/io/utils.ts +283 -0
  352. package/src/merkle.ts +14 -9
  353. package/src/networks.ts +9 -9
  354. package/src/payments/bip341.ts +34 -33
  355. package/src/payments/embed.ts +244 -41
  356. package/src/payments/index.ts +12 -10
  357. package/src/payments/p2ms.ts +490 -118
  358. package/src/payments/p2op.ts +431 -133
  359. package/src/payments/p2pk.ts +370 -72
  360. package/src/payments/p2pkh.ts +524 -130
  361. package/src/payments/p2sh.ts +572 -172
  362. package/src/payments/p2tr.ts +686 -194
  363. package/src/payments/p2wpkh.ts +484 -107
  364. package/src/payments/p2wsh.ts +526 -164
  365. package/src/payments/types.ts +80 -66
  366. package/src/psbt/bip371.ts +68 -51
  367. package/src/psbt/psbtutils.ts +39 -40
  368. package/src/psbt/types.ts +331 -0
  369. package/src/psbt/utils.ts +188 -0
  370. package/src/psbt/validation.ts +192 -0
  371. package/src/psbt.ts +566 -809
  372. package/src/pubkey.ts +22 -23
  373. package/src/push_data.ts +18 -16
  374. package/src/script.ts +82 -64
  375. package/src/script_number.ts +6 -6
  376. package/src/script_signature.ts +33 -36
  377. package/src/transaction.ts +458 -238
  378. package/src/types.ts +231 -100
  379. package/src/workers/WorkerSigningPool.node.ts +887 -0
  380. package/src/workers/WorkerSigningPool.ts +670 -0
  381. package/src/workers/ecc-bundle.ts +26 -0
  382. package/src/workers/index.ts +165 -0
  383. package/src/workers/psbt-parallel.ts +332 -0
  384. package/src/workers/signing-worker.ts +353 -0
  385. package/src/workers/types.ts +413 -0
  386. package/test/address.spec.ts +9 -6
  387. package/test/bitcoin.core.spec.ts +16 -17
  388. package/test/block.spec.ts +8 -7
  389. package/test/bufferutils.spec.ts +228 -214
  390. package/test/crypto.spec.ts +19 -11
  391. package/test/fixtures/p2pk.json +0 -8
  392. package/test/fixtures/p2pkh.json +1 -1
  393. package/test/fixtures/p2sh.json +1 -1
  394. package/test/fixtures/script.json +1 -1
  395. package/test/fixtures/transaction.json +2 -2
  396. package/test/integration/_regtest.ts +25 -0
  397. package/test/integration/addresses.spec.ts +4 -3
  398. package/test/integration/bip32.spec.ts +2 -1
  399. package/test/integration/blocks.spec.ts +1 -1
  400. package/test/integration/cltv.spec.ts +18 -16
  401. package/test/integration/csv.spec.ts +37 -64
  402. package/test/integration/payments.spec.ts +5 -3
  403. package/test/integration/taproot.spec.ts +76 -83
  404. package/test/integration/transactions.spec.ts +38 -35
  405. package/test/payments.spec.ts +35 -13
  406. package/test/payments.utils.ts +17 -16
  407. package/test/psbt.spec.ts +111 -100
  408. package/test/script.spec.ts +11 -10
  409. package/test/script_signature.spec.ts +9 -11
  410. package/test/taproot-cache.spec.ts +694 -0
  411. package/test/transaction.spec.ts +32 -40
  412. package/test/types.spec.ts +74 -29
  413. package/test/workers-pool.spec.ts +963 -0
  414. package/test/workers-signing.spec.ts +635 -0
  415. package/test/workers.spec.ts +1390 -0
  416. package/tsconfig.base.json +34 -18
  417. package/tsconfig.browser.json +15 -0
  418. package/tsconfig.build.json +5 -0
  419. package/tsconfig.json +5 -14
  420. package/vite.config.browser.ts +3 -42
  421. package/vitest.config.integration.ts +2 -0
  422. package/browser/bufferutils.d.ts +0 -34
  423. package/browser/chunks/crypto-BhCpKpek.js +0 -2033
  424. package/browser/chunks/payments-B1wlSccx.js +0 -1089
  425. package/browser/chunks/psbt-BCNk7JUx.js +0 -4055
  426. package/browser/chunks/script-DyPItFEl.js +0 -318
  427. package/browser/chunks/transaction-C_UbhMGn.js +0 -432
  428. package/browser/chunks/utils-DNZi-T5W.js +0 -761
  429. package/browser/ecc_lib.d.ts +0 -3
  430. package/browser/hooks/AdvancedSignatureManager.d.ts +0 -16
  431. package/browser/hooks/HookedSigner.d.ts +0 -4
  432. package/browser/hooks/SignatureManager.d.ts +0 -13
  433. package/browser/payments/lazy.d.ts +0 -2
  434. package/browser/typeforce.d.ts +0 -38
  435. package/build/bufferutils.d.ts +0 -34
  436. package/build/bufferutils.js +0 -141
  437. package/build/ecc_lib.d.ts +0 -3
  438. package/build/ecc_lib.js +0 -61
  439. package/build/hooks/AdvancedSignatureManager.d.ts +0 -16
  440. package/build/hooks/AdvancedSignatureManager.js +0 -52
  441. package/build/hooks/HookedSigner.d.ts +0 -4
  442. package/build/hooks/HookedSigner.js +0 -64
  443. package/build/hooks/SignatureManager.d.ts +0 -13
  444. package/build/hooks/SignatureManager.js +0 -45
  445. package/build/payments/lazy.d.ts +0 -2
  446. package/build/payments/lazy.js +0 -28
  447. package/build/tsconfig.tsbuildinfo +0 -1
  448. package/src/bufferutils.ts +0 -188
  449. package/src/ecc_lib.ts +0 -94
  450. package/src/hooks/AdvancedSignatureManager.ts +0 -104
  451. package/src/hooks/HookedSigner.ts +0 -108
  452. package/src/hooks/SignatureManager.ts +0 -84
  453. package/src/payments/lazy.ts +0 -28
  454. package/src/typeforce.d.ts +0 -38
  455. package/tsconfig.webpack.json +0 -18
@@ -0,0 +1,611 @@
1
+ /**
2
+ * Stateful binary writer with a single DataView instance.
3
+ *
4
+ * Zero allocations during write operations. The DataView is created once
5
+ * in the constructor and reused for all writes.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import { toHex } from './hex.js';
10
+ /**
11
+ * High-performance binary writer for serializing binary data.
12
+ *
13
+ * Creates exactly ONE DataView instance that is reused for all write operations.
14
+ * This eliminates garbage collection pressure from repeated DataView allocations.
15
+ *
16
+ * Methods return `this` for chaining.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { BinaryWriter } from '@btc-vision/bitcoin';
21
+ *
22
+ * // Serialize a simple structure
23
+ * const writer = new BinaryWriter(16);
24
+ * writer
25
+ * .writeInt32LE(1) // version
26
+ * .writeUInt32LE(0) // input count
27
+ * .writeUInt32LE(0) // output count
28
+ * .writeUInt32LE(0); // locktime
29
+ *
30
+ * const bytes = writer.finish();
31
+ * ```
32
+ */
33
+ export class BinaryWriter {
34
+ /**
35
+ * The underlying byte array.
36
+ */
37
+ #data;
38
+ /**
39
+ * Single DataView instance reused for all writes.
40
+ */
41
+ #view;
42
+ /**
43
+ * Current write position.
44
+ */
45
+ #offset;
46
+ constructor(arg, offset = 0) {
47
+ if (typeof arg === 'number') {
48
+ this.#data = new Uint8Array(arg);
49
+ this.#offset = 0;
50
+ }
51
+ else {
52
+ this.#data = arg;
53
+ this.#offset = offset;
54
+ }
55
+ this.#view = new DataView(this.#data.buffer, this.#data.byteOffset, this.#data.byteLength);
56
+ }
57
+ /**
58
+ * Creates a BinaryWriter with automatic capacity management.
59
+ *
60
+ * Initial capacity is 256 bytes, grows as needed.
61
+ *
62
+ * @returns A new GrowableBinaryWriter instance
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * import { BinaryWriter } from '@btc-vision/bitcoin';
67
+ *
68
+ * const writer = BinaryWriter.growable();
69
+ * writer.writeUInt32LE(1);
70
+ * writer.writeBytes(new Uint8Array(1000)); // Automatically grows
71
+ * ```
72
+ */
73
+ static growable(initialCapacity = 256) {
74
+ return new GrowableBinaryWriter(initialCapacity);
75
+ }
76
+ /**
77
+ * Current write position in the buffer.
78
+ */
79
+ get offset() {
80
+ return this.#offset;
81
+ }
82
+ /**
83
+ * Sets the write position.
84
+ *
85
+ * @param value - New offset value
86
+ * @throws RangeError if offset is negative or beyond buffer length
87
+ */
88
+ set offset(value) {
89
+ if (value < 0 || value > this.#data.length) {
90
+ throw new RangeError(`Offset ${value} is out of bounds [0, ${this.#data.length}]`);
91
+ }
92
+ this.#offset = value;
93
+ }
94
+ /**
95
+ * Total capacity of the underlying buffer.
96
+ */
97
+ get capacity() {
98
+ return this.#data.length;
99
+ }
100
+ /**
101
+ * Number of bytes remaining in the buffer.
102
+ */
103
+ get remaining() {
104
+ return this.#data.length - this.#offset;
105
+ }
106
+ /**
107
+ * The underlying data buffer.
108
+ */
109
+ get data() {
110
+ return this.#data;
111
+ }
112
+ /**
113
+ * Writes an 8-bit unsigned integer.
114
+ *
115
+ * @param value - Value to write (0-255)
116
+ * @returns This writer for chaining
117
+ * @throws RangeError if writing past end of buffer
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * writer.writeUInt8(255);
122
+ * ```
123
+ */
124
+ writeUInt8(value) {
125
+ if (this.#offset >= this.#data.length) {
126
+ throw new RangeError('Write past end of buffer');
127
+ }
128
+ this.#data[this.#offset++] = value & 0xff;
129
+ return this;
130
+ }
131
+ /**
132
+ * Writes an 8-bit signed integer.
133
+ *
134
+ * @param value - Value to write (-128 to 127)
135
+ * @returns This writer for chaining
136
+ * @throws RangeError if writing past end of buffer
137
+ */
138
+ writeInt8(value) {
139
+ return this.writeUInt8(value < 0 ? value + 256 : value);
140
+ }
141
+ /**
142
+ * Writes a 16-bit unsigned integer in little-endian format.
143
+ *
144
+ * @param value - Value to write (0-65535)
145
+ * @returns This writer for chaining
146
+ * @throws RangeError if writing past end of buffer
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * writer.writeUInt16LE(1); // Writes 01 00
151
+ * ```
152
+ */
153
+ writeUInt16LE(value) {
154
+ if (this.#offset + 2 > this.#data.length) {
155
+ throw new RangeError('Write past end of buffer');
156
+ }
157
+ this.#view.setUint16(this.#offset, value, true);
158
+ this.#offset += 2;
159
+ return this;
160
+ }
161
+ /**
162
+ * Writes a 16-bit signed integer in little-endian format.
163
+ *
164
+ * @param value - Value to write (-32768 to 32767)
165
+ * @returns This writer for chaining
166
+ * @throws RangeError if writing past end of buffer
167
+ */
168
+ writeInt16LE(value) {
169
+ if (this.#offset + 2 > this.#data.length) {
170
+ throw new RangeError('Write past end of buffer');
171
+ }
172
+ this.#view.setInt16(this.#offset, value, true);
173
+ this.#offset += 2;
174
+ return this;
175
+ }
176
+ /**
177
+ * Writes a 32-bit unsigned integer in little-endian format.
178
+ *
179
+ * @param value - Value to write (0 to 4294967295)
180
+ * @returns This writer for chaining
181
+ * @throws RangeError if writing past end of buffer
182
+ *
183
+ * @example
184
+ * ```typescript
185
+ * writer.writeUInt32LE(1); // Writes 01 00 00 00
186
+ * ```
187
+ */
188
+ writeUInt32LE(value) {
189
+ if (this.#offset + 4 > this.#data.length) {
190
+ throw new RangeError('Write past end of buffer');
191
+ }
192
+ this.#view.setUint32(this.#offset, value, true);
193
+ this.#offset += 4;
194
+ return this;
195
+ }
196
+ /**
197
+ * Writes a 32-bit signed integer in little-endian format.
198
+ *
199
+ * @param value - Value to write (-2147483648 to 2147483647)
200
+ * @returns This writer for chaining
201
+ * @throws RangeError if writing past end of buffer
202
+ *
203
+ * @example
204
+ * ```typescript
205
+ * writer.writeInt32LE(-1); // Writes ff ff ff ff
206
+ * ```
207
+ */
208
+ writeInt32LE(value) {
209
+ if (this.#offset + 4 > this.#data.length) {
210
+ throw new RangeError('Write past end of buffer');
211
+ }
212
+ this.#view.setInt32(this.#offset, value, true);
213
+ this.#offset += 4;
214
+ return this;
215
+ }
216
+ /**
217
+ * Writes a 64-bit unsigned integer in little-endian format.
218
+ *
219
+ * @param value - Value to write as bigint
220
+ * @returns This writer for chaining
221
+ * @throws RangeError if writing past end of buffer
222
+ *
223
+ * @example
224
+ * ```typescript
225
+ * writer.writeUInt64LE(50000n); // Writes 50 c3 00 00 00 00 00 00
226
+ * ```
227
+ */
228
+ writeUInt64LE(value) {
229
+ if (this.#offset + 8 > this.#data.length) {
230
+ throw new RangeError('Write past end of buffer');
231
+ }
232
+ this.#view.setBigUint64(this.#offset, value, true);
233
+ this.#offset += 8;
234
+ return this;
235
+ }
236
+ /**
237
+ * Writes a 64-bit signed integer in little-endian format.
238
+ *
239
+ * @param value - Value to write as bigint
240
+ * @returns This writer for chaining
241
+ * @throws RangeError if writing past end of buffer
242
+ */
243
+ writeInt64LE(value) {
244
+ if (this.#offset + 8 > this.#data.length) {
245
+ throw new RangeError('Write past end of buffer');
246
+ }
247
+ this.#view.setBigInt64(this.#offset, value, true);
248
+ this.#offset += 8;
249
+ return this;
250
+ }
251
+ /**
252
+ * Writes raw bytes.
253
+ *
254
+ * @param bytes - Bytes to write
255
+ * @returns This writer for chaining
256
+ * @throws RangeError if writing past end of buffer
257
+ *
258
+ * @example
259
+ * ```typescript
260
+ * writer.writeBytes(new Uint8Array([0xde, 0xad, 0xbe, 0xef]));
261
+ * ```
262
+ */
263
+ writeBytes(bytes) {
264
+ if (this.#offset + bytes.length > this.#data.length) {
265
+ throw new RangeError('Write past end of buffer');
266
+ }
267
+ this.#data.set(bytes, this.#offset);
268
+ this.#offset += bytes.length;
269
+ return this;
270
+ }
271
+ /**
272
+ * Writes a Bitcoin CompactSize variable-length integer.
273
+ *
274
+ * CompactSize encoding:
275
+ * - 0x00-0xFC: 1 byte (value as-is)
276
+ * - 0xFD-0xFFFF: 3 bytes (0xFD + 2-byte LE uint16)
277
+ * - 0x10000-0xFFFFFFFF: 5 bytes (0xFE + 4-byte LE uint32)
278
+ * - Larger: 9 bytes (0xFF + 8-byte LE uint64)
279
+ *
280
+ * @param value - Value to write
281
+ * @returns This writer for chaining
282
+ * @throws RangeError if writing past end of buffer
283
+ *
284
+ * @example
285
+ * ```typescript
286
+ * writer.writeVarInt(252); // Writes fc
287
+ * writer.writeVarInt(253); // Writes fd fd 00
288
+ * writer.writeVarInt(65535); // Writes fd ff ff
289
+ * writer.writeVarInt(65536); // Writes fe 00 00 01 00
290
+ * ```
291
+ */
292
+ writeVarInt(value) {
293
+ if (value < 0xfd) {
294
+ return this.writeUInt8(value);
295
+ }
296
+ if (value <= 0xffff) {
297
+ this.writeUInt8(0xfd);
298
+ return this.writeUInt16LE(value);
299
+ }
300
+ if (value <= 0xffffffff) {
301
+ this.writeUInt8(0xfe);
302
+ return this.writeUInt32LE(value);
303
+ }
304
+ this.writeUInt8(0xff);
305
+ return this.writeUInt64LE(BigInt(value));
306
+ }
307
+ /**
308
+ * Writes a Bitcoin CompactSize variable-length integer from bigint.
309
+ *
310
+ * @param value - Value to write as bigint
311
+ * @returns This writer for chaining
312
+ * @throws RangeError if writing past end of buffer
313
+ */
314
+ writeVarIntBig(value) {
315
+ if (value < 0xfdn) {
316
+ return this.writeUInt8(Number(value));
317
+ }
318
+ if (value <= 0xffffn) {
319
+ this.writeUInt8(0xfd);
320
+ return this.writeUInt16LE(Number(value));
321
+ }
322
+ if (value <= 0xffffffffn) {
323
+ this.writeUInt8(0xfe);
324
+ return this.writeUInt32LE(Number(value));
325
+ }
326
+ this.writeUInt8(0xff);
327
+ return this.writeUInt64LE(value);
328
+ }
329
+ /**
330
+ * Writes a length-prefixed byte array (VarInt length + bytes).
331
+ *
332
+ * @param bytes - Bytes to write
333
+ * @returns This writer for chaining
334
+ * @throws RangeError if writing past end of buffer
335
+ *
336
+ * @example
337
+ * ```typescript
338
+ * writer.writeVarBytes(new Uint8Array([0xde, 0xad])); // Writes 02 de ad
339
+ * ```
340
+ */
341
+ writeVarBytes(bytes) {
342
+ this.writeVarInt(bytes.length);
343
+ return this.writeBytes(bytes);
344
+ }
345
+ /**
346
+ * Writes an array of length-prefixed byte arrays.
347
+ *
348
+ * Format: VarInt count + (VarInt length + bytes) for each item.
349
+ *
350
+ * @param vector - Array of byte arrays to write
351
+ * @returns This writer for chaining
352
+ * @throws RangeError if writing past end of buffer
353
+ */
354
+ writeVector(vector) {
355
+ this.writeVarInt(vector.length);
356
+ for (const item of vector) {
357
+ this.writeVarBytes(item);
358
+ }
359
+ return this;
360
+ }
361
+ /**
362
+ * Fills a region with a specific byte value.
363
+ *
364
+ * @param value - Byte value to fill with
365
+ * @param length - Number of bytes to fill
366
+ * @returns This writer for chaining
367
+ * @throws RangeError if writing past end of buffer
368
+ */
369
+ fill(value, length) {
370
+ if (this.#offset + length > this.#data.length) {
371
+ throw new RangeError('Write past end of buffer');
372
+ }
373
+ this.#data.fill(value, this.#offset, this.#offset + length);
374
+ this.#offset += length;
375
+ return this;
376
+ }
377
+ /**
378
+ * Skips a specified number of bytes (leaves them unchanged).
379
+ *
380
+ * @param length - Number of bytes to skip
381
+ * @returns This writer for chaining
382
+ * @throws RangeError if skipping past end of buffer
383
+ */
384
+ skip(length) {
385
+ if (this.#offset + length > this.#data.length) {
386
+ throw new RangeError('Skip past end of buffer');
387
+ }
388
+ this.#offset += length;
389
+ return this;
390
+ }
391
+ /**
392
+ * Resets the write position to the beginning.
393
+ *
394
+ * @returns This writer for chaining
395
+ */
396
+ reset() {
397
+ this.#offset = 0;
398
+ return this;
399
+ }
400
+ /**
401
+ * Verifies the buffer was fully written and returns it.
402
+ *
403
+ * Unlike {@link finish}, this method throws if the writer has not
404
+ * written exactly to the end of the buffer.
405
+ *
406
+ * @returns The underlying buffer
407
+ * @throws Error if the buffer was not fully written
408
+ *
409
+ * @example
410
+ * ```typescript
411
+ * const writer = new BinaryWriter(8);
412
+ * writer.writeUInt32LE(1);
413
+ * writer.writeUInt32LE(2);
414
+ * const bytes = writer.end(); // OK: wrote exactly 8 bytes
415
+ *
416
+ * const writer2 = new BinaryWriter(8);
417
+ * writer2.writeUInt32LE(1);
418
+ * writer2.end(); // throws: buffer size 8, offset 4
419
+ * ```
420
+ */
421
+ end() {
422
+ if (this.#offset === this.#data.length) {
423
+ return this.#data;
424
+ }
425
+ throw new Error(`buffer size ${this.#data.length}, offset ${this.#offset}`);
426
+ }
427
+ /**
428
+ * Returns the written portion of the buffer.
429
+ *
430
+ * If the entire buffer was written, returns the buffer directly (no copy).
431
+ * Otherwise, returns a subarray view.
432
+ *
433
+ * @returns Uint8Array containing the written data
434
+ *
435
+ * @example
436
+ * ```typescript
437
+ * const writer = new BinaryWriter(100);
438
+ * writer.writeUInt32LE(42);
439
+ * const bytes = writer.finish(); // 4 bytes
440
+ * ```
441
+ */
442
+ finish() {
443
+ return this.#offset === this.#data.length
444
+ ? this.#data
445
+ : this.#data.subarray(0, this.#offset);
446
+ }
447
+ /**
448
+ * Returns the written portion as a hex string.
449
+ *
450
+ * @returns Hex string representation
451
+ *
452
+ * @example
453
+ * ```typescript
454
+ * const writer = new BinaryWriter(4);
455
+ * writer.writeUInt32LE(1);
456
+ * writer.toHex(); // '01000000'
457
+ * ```
458
+ */
459
+ toHex() {
460
+ return toHex(this.finish());
461
+ }
462
+ }
463
+ /**
464
+ * A BinaryWriter that automatically grows its buffer as needed.
465
+ *
466
+ * Use when the final size is unknown.
467
+ *
468
+ * @example
469
+ * ```typescript
470
+ * const writer = BinaryWriter.growable();
471
+ * writer.writeBytes(largeData); // Automatically grows
472
+ * const bytes = writer.finish();
473
+ * ```
474
+ */
475
+ export class GrowableBinaryWriter {
476
+ #data;
477
+ #view;
478
+ #offset = 0;
479
+ /**
480
+ * Creates a new GrowableBinaryWriter.
481
+ *
482
+ * @param initialCapacity - Initial buffer size (default 256)
483
+ */
484
+ constructor(initialCapacity = 256) {
485
+ this.#data = new Uint8Array(initialCapacity);
486
+ this.#view = new DataView(this.#data.buffer);
487
+ }
488
+ /**
489
+ * Current write position.
490
+ */
491
+ get offset() {
492
+ return this.#offset;
493
+ }
494
+ /**
495
+ * Sets the write position.
496
+ *
497
+ * @param value - New offset value
498
+ * @throws RangeError if offset is negative
499
+ */
500
+ set offset(value) {
501
+ if (value < 0) {
502
+ throw new RangeError(`Offset ${value} cannot be negative`);
503
+ }
504
+ // GrowableBinaryWriter can grow, so allow setting offset beyond current capacity
505
+ this.#offset = value;
506
+ }
507
+ /**
508
+ * Current buffer capacity.
509
+ */
510
+ get capacity() {
511
+ return this.#data.length;
512
+ }
513
+ /**
514
+ * Ensures the buffer has enough space for additional bytes.
515
+ *
516
+ * @param additionalBytes - Number of additional bytes needed
517
+ */
518
+ #ensureCapacity(additionalBytes) {
519
+ const required = this.#offset + additionalBytes;
520
+ if (required <= this.#data.length) {
521
+ return;
522
+ }
523
+ // Grow by at least 2x or to required size
524
+ let newCapacity = this.#data.length * 2;
525
+ while (newCapacity < required) {
526
+ newCapacity *= 2;
527
+ }
528
+ const newData = new Uint8Array(newCapacity);
529
+ newData.set(this.#data.subarray(0, this.#offset));
530
+ this.#data = newData;
531
+ this.#view = new DataView(this.#data.buffer);
532
+ }
533
+ writeUInt8(value) {
534
+ this.#ensureCapacity(1);
535
+ this.#data[this.#offset++] = value & 0xff;
536
+ return this;
537
+ }
538
+ writeUInt16LE(value) {
539
+ this.#ensureCapacity(2);
540
+ this.#view.setUint16(this.#offset, value, true);
541
+ this.#offset += 2;
542
+ return this;
543
+ }
544
+ writeUInt32LE(value) {
545
+ this.#ensureCapacity(4);
546
+ this.#view.setUint32(this.#offset, value, true);
547
+ this.#offset += 4;
548
+ return this;
549
+ }
550
+ writeInt32LE(value) {
551
+ this.#ensureCapacity(4);
552
+ this.#view.setInt32(this.#offset, value, true);
553
+ this.#offset += 4;
554
+ return this;
555
+ }
556
+ writeUInt64LE(value) {
557
+ this.#ensureCapacity(8);
558
+ this.#view.setBigUint64(this.#offset, value, true);
559
+ this.#offset += 8;
560
+ return this;
561
+ }
562
+ writeBytes(bytes) {
563
+ this.#ensureCapacity(bytes.length);
564
+ this.#data.set(bytes, this.#offset);
565
+ this.#offset += bytes.length;
566
+ return this;
567
+ }
568
+ writeVarInt(value) {
569
+ if (value < 0xfd) {
570
+ return this.writeUInt8(value);
571
+ }
572
+ if (value <= 0xffff) {
573
+ this.writeUInt8(0xfd);
574
+ return this.writeUInt16LE(value);
575
+ }
576
+ if (value <= 0xffffffff) {
577
+ this.writeUInt8(0xfe);
578
+ return this.writeUInt32LE(value);
579
+ }
580
+ this.writeUInt8(0xff);
581
+ return this.writeUInt64LE(BigInt(value));
582
+ }
583
+ writeVarBytes(bytes) {
584
+ this.writeVarInt(bytes.length);
585
+ return this.writeBytes(bytes);
586
+ }
587
+ writeVector(vector) {
588
+ this.writeVarInt(vector.length);
589
+ for (const item of vector) {
590
+ this.writeVarBytes(item);
591
+ }
592
+ return this;
593
+ }
594
+ /**
595
+ * Returns the written data as a new Uint8Array.
596
+ *
597
+ * @returns Copy of the written data
598
+ */
599
+ finish() {
600
+ return this.#data.slice(0, this.#offset);
601
+ }
602
+ /**
603
+ * Returns the written data as a hex string.
604
+ *
605
+ * @returns Hex string representation
606
+ */
607
+ toHex() {
608
+ return toHex(this.finish());
609
+ }
610
+ }
611
+ //# sourceMappingURL=BinaryWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinaryWriter.js","sourceRoot":"","sources":["../../src/io/BinaryWriter.ts"],"names":[],"mappings":"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"}