@btc-vision/bitcoin 6.5.6 → 7.0.0-alpha.1

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 (456) 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 +57 -10
  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 +12477 -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 +58 -11
  115. package/build/address.d.ts.map +1 -0
  116. package/build/address.js +82 -25
  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 +202 -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 +35 -9
  203. package/build/payments/bip341.d.ts.map +1 -0
  204. package/build/payments/bip341.js +34 -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 -150
  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 +428 -103
  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 +465 -143
  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 +117 -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 +406 -413
  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 +101 -37
  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 +169 -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 +68 -9
  332. package/scripts/bundle-ecc.ts +111 -0
  333. package/src/address.ts +91 -45
  334. package/src/bech32utils.ts +3 -3
  335. package/src/bip66.ts +34 -24
  336. package/src/block.ts +205 -86
  337. package/src/branded.ts +18 -0
  338. package/src/crypto.ts +64 -26
  339. package/src/ecc/context.ts +280 -0
  340. package/src/ecc/index.ts +14 -0
  341. package/src/ecc/types.ts +147 -0
  342. package/src/ecpair.d.ts +99 -0
  343. package/src/errors.ts +163 -0
  344. package/src/index.ts +112 -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 +32 -33
  355. package/src/payments/embed.ts +244 -41
  356. package/src/payments/index.ts +12 -10
  357. package/src/payments/p2ms.ts +497 -118
  358. package/src/payments/p2op.ts +432 -134
  359. package/src/payments/p2pk.ts +370 -72
  360. package/src/payments/p2pkh.ts +524 -130
  361. package/src/payments/p2sh.ts +572 -169
  362. package/src/payments/p2tr.ts +686 -194
  363. package/src/payments/p2wpkh.ts +482 -105
  364. package/src/payments/p2wsh.ts +524 -162
  365. package/src/payments/types.ts +80 -66
  366. package/src/psbt/bip371.ts +72 -51
  367. package/src/psbt/psbtutils.ts +39 -40
  368. package/src/psbt/types.ts +324 -0
  369. package/src/psbt/utils.ts +188 -0
  370. package/src/psbt/validation.ts +185 -0
  371. package/src/psbt.ts +608 -827
  372. package/src/pubkey.ts +22 -23
  373. package/src/push_data.ts +18 -16
  374. package/src/script.ts +81 -66
  375. package/src/script_number.ts +6 -6
  376. package/src/script_signature.ts +33 -36
  377. package/src/transaction.ts +462 -239
  378. package/src/types.ts +229 -100
  379. package/src/workers/WorkerSigningPool.node.ts +887 -0
  380. package/src/workers/WorkerSigningPool.ts +666 -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 +327 -0
  384. package/src/workers/signing-worker.ts +353 -0
  385. package/src/workers/types.ts +417 -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/typedoc.json +29 -0
  421. package/vite.config.browser.ts +3 -42
  422. package/vitest.config.integration.ts +2 -0
  423. package/browser/bufferutils.d.ts +0 -34
  424. package/browser/chunks/crypto-BhCpKpek.js +0 -2033
  425. package/browser/chunks/payments-B1wlSccx.js +0 -1089
  426. package/browser/chunks/psbt-BCNk7JUx.js +0 -4055
  427. package/browser/chunks/script-DyPItFEl.js +0 -318
  428. package/browser/chunks/transaction-C_UbhMGn.js +0 -432
  429. package/browser/chunks/utils-DNZi-T5W.js +0 -761
  430. package/browser/ecc_lib.d.ts +0 -3
  431. package/browser/hooks/AdvancedSignatureManager.d.ts +0 -16
  432. package/browser/hooks/HookedSigner.d.ts +0 -4
  433. package/browser/hooks/SignatureManager.d.ts +0 -13
  434. package/browser/payments/lazy.d.ts +0 -2
  435. package/browser/typeforce.d.ts +0 -38
  436. package/build/bufferutils.d.ts +0 -34
  437. package/build/bufferutils.js +0 -141
  438. package/build/ecc_lib.d.ts +0 -3
  439. package/build/ecc_lib.js +0 -61
  440. package/build/hooks/AdvancedSignatureManager.d.ts +0 -16
  441. package/build/hooks/AdvancedSignatureManager.js +0 -52
  442. package/build/hooks/HookedSigner.d.ts +0 -4
  443. package/build/hooks/HookedSigner.js +0 -64
  444. package/build/hooks/SignatureManager.d.ts +0 -13
  445. package/build/hooks/SignatureManager.js +0 -45
  446. package/build/payments/lazy.d.ts +0 -2
  447. package/build/payments/lazy.js +0 -28
  448. package/build/tsconfig.tsbuildinfo +0 -1
  449. package/src/bufferutils.ts +0 -188
  450. package/src/ecc_lib.ts +0 -94
  451. package/src/hooks/AdvancedSignatureManager.ts +0 -104
  452. package/src/hooks/HookedSigner.ts +0 -108
  453. package/src/hooks/SignatureManager.ts +0 -84
  454. package/src/payments/lazy.ts +0 -28
  455. package/src/typeforce.d.ts +0 -38
  456. package/tsconfig.webpack.json +0 -18
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Memory pool using SharedArrayBuffer for zero-allocation operations.
3
+ *
4
+ * Provides thread-safe memory allocation using Atomics for concurrent access.
5
+ * Ideal for parsing operations where temporary buffers are needed.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ /**
10
+ * Thread-safe memory pool using SharedArrayBuffer.
11
+ *
12
+ * Allocates memory from a pre-allocated SharedArrayBuffer pool,
13
+ * eliminating garbage collection pressure from repeated allocations.
14
+ *
15
+ * Uses Atomics for thread-safe allocation when used with Workers.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * import { MemoryPool } from '@btc-vision/bitcoin';
20
+ *
21
+ * // Create a 1MB pool
22
+ * const pool = new MemoryPool(1024 * 1024);
23
+ *
24
+ * // Allocate memory for transaction parsing
25
+ * const txBuffer = pool.alloc(500);
26
+ * // ... use txBuffer ...
27
+ *
28
+ * // Reset pool when done (all allocations become invalid)
29
+ * pool.reset();
30
+ * ```
31
+ */
32
+ export declare class MemoryPool {
33
+ #private;
34
+ /**
35
+ * Creates a new MemoryPool.
36
+ *
37
+ * @param size - Size of the pool in bytes (default 4MB)
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * import { MemoryPool } from '@btc-vision/bitcoin';
42
+ *
43
+ * // 4MB pool (default)
44
+ * const pool = new MemoryPool();
45
+ *
46
+ * // 16MB pool
47
+ * const largePool = new MemoryPool(16 * 1024 * 1024);
48
+ * ```
49
+ */
50
+ constructor(size?: number);
51
+ /**
52
+ * Total capacity of the pool in bytes.
53
+ */
54
+ get capacity(): number;
55
+ /**
56
+ * Current allocation offset (bytes used).
57
+ *
58
+ * Uses Atomics for thread-safe reading.
59
+ */
60
+ get used(): number;
61
+ /**
62
+ * Remaining available bytes.
63
+ */
64
+ get available(): number;
65
+ /**
66
+ * The underlying SharedArrayBuffer.
67
+ *
68
+ * Can be transferred to Workers for shared memory access.
69
+ */
70
+ get sharedBuffer(): SharedArrayBuffer;
71
+ /**
72
+ * Creates a MemoryPool from an existing SharedArrayBuffer.
73
+ *
74
+ * Useful for sharing a pool between Workers.
75
+ *
76
+ * @param buffer - Existing SharedArrayBuffer
77
+ * @returns A new MemoryPool instance wrapping the buffer
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * // Main thread
82
+ * const pool = new MemoryPool(1024 * 1024);
83
+ * worker.postMessage({ buffer: pool.sharedBuffer });
84
+ *
85
+ * // Worker thread
86
+ * self.onmessage = (e) => {
87
+ * const pool = MemoryPool.fromSharedBuffer(e.data.buffer);
88
+ * const mem = pool.alloc(100);
89
+ * };
90
+ * ```
91
+ */
92
+ static fromSharedBuffer(buffer: SharedArrayBuffer): MemoryPool;
93
+ /**
94
+ * Allocates memory from the pool.
95
+ *
96
+ * Thread-safe using Atomics.add for concurrent access.
97
+ *
98
+ * @param size - Number of bytes to allocate
99
+ * @returns Uint8Array view into the pool
100
+ * @throws RangeError if pool is exhausted
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * const pool = new MemoryPool(1024);
105
+ * const buf1 = pool.alloc(100); // First 100 bytes
106
+ * const buf2 = pool.alloc(200); // Next 200 bytes
107
+ * ```
108
+ */
109
+ alloc(size: number): Uint8Array;
110
+ /**
111
+ * Allocates memory and fills it with zeros.
112
+ *
113
+ * @param size - Number of bytes to allocate
114
+ * @returns Uint8Array view into the pool, filled with zeros
115
+ * @throws RangeError if pool is exhausted
116
+ */
117
+ allocZeroed(size: number): Uint8Array;
118
+ /**
119
+ * Allocates memory for a specific typed array.
120
+ *
121
+ * @param length - Number of elements
122
+ * @param bytesPerElement - Size of each element in bytes
123
+ * @returns Uint8Array view (use constructor of target type on underlying buffer)
124
+ * @throws RangeError if pool is exhausted
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * const pool = new MemoryPool(1024);
129
+ * const bytes = pool.allocTyped(10, 4); // 40 bytes for 10 Uint32
130
+ * const u32View = new Uint32Array(bytes.buffer, bytes.byteOffset, 10);
131
+ * ```
132
+ */
133
+ allocTyped(length: number, bytesPerElement: number): Uint8Array;
134
+ /**
135
+ * Resets the pool, making all memory available again.
136
+ *
137
+ * WARNING: All previously allocated views become invalid.
138
+ * Only call when you're sure no references are held.
139
+ *
140
+ * Thread-safe using Atomics.store.
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * const pool = new MemoryPool(1024);
145
+ * const buf = pool.alloc(100);
146
+ * // ... use buf ...
147
+ * pool.reset(); // buf is now invalid!
148
+ * ```
149
+ */
150
+ reset(): void;
151
+ /**
152
+ * Checks if the pool can accommodate an allocation.
153
+ *
154
+ * @param size - Number of bytes needed
155
+ * @returns True if allocation would succeed
156
+ */
157
+ canAlloc(size: number): boolean;
158
+ }
159
+ /**
160
+ * Non-shared memory pool using regular ArrayBuffer.
161
+ *
162
+ * Use when SharedArrayBuffer is not available (e.g., browsers without
163
+ * proper COOP/COEP headers) or when thread-safety is not needed.
164
+ *
165
+ * @example
166
+ * ```typescript
167
+ * import { SimpleMemoryPool } from '@btc-vision/bitcoin';
168
+ *
169
+ * const pool = new SimpleMemoryPool(1024 * 1024);
170
+ * const buf = pool.alloc(100);
171
+ * ```
172
+ */
173
+ export declare class SimpleMemoryPool {
174
+ #private;
175
+ /**
176
+ * Creates a new SimpleMemoryPool.
177
+ *
178
+ * @param size - Size of the pool in bytes
179
+ */
180
+ constructor(size: number);
181
+ /**
182
+ * Total capacity of the pool in bytes.
183
+ */
184
+ get capacity(): number;
185
+ /**
186
+ * Current allocation offset (bytes used).
187
+ */
188
+ get used(): number;
189
+ /**
190
+ * Remaining available bytes.
191
+ */
192
+ get available(): number;
193
+ /**
194
+ * Allocates memory from the pool.
195
+ *
196
+ * @param size - Number of bytes to allocate
197
+ * @returns Uint8Array view into the pool
198
+ * @throws RangeError if pool is exhausted
199
+ */
200
+ alloc(size: number): Uint8Array;
201
+ /**
202
+ * Allocates memory and fills it with zeros.
203
+ *
204
+ * @param size - Number of bytes to allocate
205
+ * @returns Uint8Array view into the pool, filled with zeros
206
+ */
207
+ allocZeroed(size: number): Uint8Array;
208
+ /**
209
+ * Resets the pool, making all memory available again.
210
+ */
211
+ reset(): void;
212
+ /**
213
+ * Checks if the pool can accommodate an allocation.
214
+ *
215
+ * @param size - Number of bytes needed
216
+ * @returns True if allocation would succeed
217
+ */
218
+ canAlloc(size: number): boolean;
219
+ }
220
+ //# sourceMappingURL=MemoryPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryPool.d.ts","sourceRoot":"","sources":["../../src/io/MemoryPool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,UAAU;;IAsBnB;;;;;;;;;;;;;;;OAeG;gBACgB,IAAI,GAAE,MAAwB;IASjD;;OAEG;IACH,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;;;OAIG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;;;OAIG;IACH,IAAW,YAAY,IAAI,iBAAiB,CAE3C;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;WACW,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU;IAarE;;;;;;;;;;;;;;;OAeG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAmBtC;;;;;;OAMG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAM5C;;;;;;;;;;;;;;OAcG;IACI,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,UAAU;IAItE;;;;;;;;;;;;;;;OAeG;IACI,KAAK,IAAI,IAAI;IAIpB;;;;;OAKG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAgB;;IAIzB;;;;OAIG;gBACgB,IAAI,EAAE,MAAM;IAI/B;;OAEG;IACH,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;;;;;OAMG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAgBtC;;;;;OAKG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAM5C;;OAEG;IACI,KAAK,IAAI,IAAI;IAIpB;;;;;OAKG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGzC"}
@@ -0,0 +1,309 @@
1
+ /**
2
+ * Memory pool using SharedArrayBuffer for zero-allocation operations.
3
+ *
4
+ * Provides thread-safe memory allocation using Atomics for concurrent access.
5
+ * Ideal for parsing operations where temporary buffers are needed.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ /**
10
+ * Thread-safe memory pool using SharedArrayBuffer.
11
+ *
12
+ * Allocates memory from a pre-allocated SharedArrayBuffer pool,
13
+ * eliminating garbage collection pressure from repeated allocations.
14
+ *
15
+ * Uses Atomics for thread-safe allocation when used with Workers.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * import { MemoryPool } from '@btc-vision/bitcoin';
20
+ *
21
+ * // Create a 1MB pool
22
+ * const pool = new MemoryPool(1024 * 1024);
23
+ *
24
+ * // Allocate memory for transaction parsing
25
+ * const txBuffer = pool.alloc(500);
26
+ * // ... use txBuffer ...
27
+ *
28
+ * // Reset pool when done (all allocations become invalid)
29
+ * pool.reset();
30
+ * ```
31
+ */
32
+ export class MemoryPool {
33
+ /**
34
+ * The underlying SharedArrayBuffer.
35
+ */
36
+ #buffer;
37
+ /**
38
+ * View for data allocations.
39
+ */
40
+ #data;
41
+ /**
42
+ * Control array for atomic offset management.
43
+ * Located at the end of the buffer.
44
+ */
45
+ #control;
46
+ /**
47
+ * Maximum allocatable size (buffer size minus control bytes).
48
+ */
49
+ #maxSize;
50
+ /**
51
+ * Creates a new MemoryPool.
52
+ *
53
+ * @param size - Size of the pool in bytes (default 4MB)
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * import { MemoryPool } from '@btc-vision/bitcoin';
58
+ *
59
+ * // 4MB pool (default)
60
+ * const pool = new MemoryPool();
61
+ *
62
+ * // 16MB pool
63
+ * const largePool = new MemoryPool(16 * 1024 * 1024);
64
+ * ```
65
+ */
66
+ constructor(size = 4 * 1024 * 1024) {
67
+ // Add 4 bytes for atomic control (current offset)
68
+ const totalSize = size + 4;
69
+ this.#buffer = new SharedArrayBuffer(totalSize);
70
+ this.#data = new Uint8Array(this.#buffer, 0, size);
71
+ this.#control = new Int32Array(this.#buffer, size, 1);
72
+ this.#maxSize = size;
73
+ }
74
+ /**
75
+ * Total capacity of the pool in bytes.
76
+ */
77
+ get capacity() {
78
+ return this.#maxSize;
79
+ }
80
+ /**
81
+ * Current allocation offset (bytes used).
82
+ *
83
+ * Uses Atomics for thread-safe reading.
84
+ */
85
+ get used() {
86
+ return Atomics.load(this.#control, 0);
87
+ }
88
+ /**
89
+ * Remaining available bytes.
90
+ */
91
+ get available() {
92
+ return this.#maxSize - this.used;
93
+ }
94
+ /**
95
+ * The underlying SharedArrayBuffer.
96
+ *
97
+ * Can be transferred to Workers for shared memory access.
98
+ */
99
+ get sharedBuffer() {
100
+ return this.#buffer;
101
+ }
102
+ /**
103
+ * Creates a MemoryPool from an existing SharedArrayBuffer.
104
+ *
105
+ * Useful for sharing a pool between Workers.
106
+ *
107
+ * @param buffer - Existing SharedArrayBuffer
108
+ * @returns A new MemoryPool instance wrapping the buffer
109
+ *
110
+ * @example
111
+ * ```typescript
112
+ * // Main thread
113
+ * const pool = new MemoryPool(1024 * 1024);
114
+ * worker.postMessage({ buffer: pool.sharedBuffer });
115
+ *
116
+ * // Worker thread
117
+ * self.onmessage = (e) => {
118
+ * const pool = MemoryPool.fromSharedBuffer(e.data.buffer);
119
+ * const mem = pool.alloc(100);
120
+ * };
121
+ * ```
122
+ */
123
+ static fromSharedBuffer(buffer) {
124
+ const pool = Object.create(MemoryPool.prototype);
125
+ const size = buffer.byteLength - 4;
126
+ // Use Object.defineProperty to set private fields on the created object
127
+ Object.defineProperty(pool, '#buffer', { value: buffer });
128
+ Object.defineProperty(pool, '#data', { value: new Uint8Array(buffer, 0, size) });
129
+ Object.defineProperty(pool, '#control', { value: new Int32Array(buffer, size, 1) });
130
+ Object.defineProperty(pool, '#maxSize', { value: size });
131
+ return pool;
132
+ }
133
+ /**
134
+ * Allocates memory from the pool.
135
+ *
136
+ * Thread-safe using Atomics.add for concurrent access.
137
+ *
138
+ * @param size - Number of bytes to allocate
139
+ * @returns Uint8Array view into the pool
140
+ * @throws RangeError if pool is exhausted
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * const pool = new MemoryPool(1024);
145
+ * const buf1 = pool.alloc(100); // First 100 bytes
146
+ * const buf2 = pool.alloc(200); // Next 200 bytes
147
+ * ```
148
+ */
149
+ alloc(size) {
150
+ if (size <= 0) {
151
+ throw new RangeError('Allocation size must be positive');
152
+ }
153
+ // Atomically reserve space
154
+ const oldOffset = Atomics.add(this.#control, 0, size);
155
+ if (oldOffset + size > this.#maxSize) {
156
+ // Undo the allocation
157
+ Atomics.sub(this.#control, 0, size);
158
+ throw new RangeError(`MemoryPool exhausted: requested ${size} bytes, only ${this.#maxSize - oldOffset} available`);
159
+ }
160
+ return this.#data.subarray(oldOffset, oldOffset + size);
161
+ }
162
+ /**
163
+ * Allocates memory and fills it with zeros.
164
+ *
165
+ * @param size - Number of bytes to allocate
166
+ * @returns Uint8Array view into the pool, filled with zeros
167
+ * @throws RangeError if pool is exhausted
168
+ */
169
+ allocZeroed(size) {
170
+ const mem = this.alloc(size);
171
+ mem.fill(0);
172
+ return mem;
173
+ }
174
+ /**
175
+ * Allocates memory for a specific typed array.
176
+ *
177
+ * @param length - Number of elements
178
+ * @param bytesPerElement - Size of each element in bytes
179
+ * @returns Uint8Array view (use constructor of target type on underlying buffer)
180
+ * @throws RangeError if pool is exhausted
181
+ *
182
+ * @example
183
+ * ```typescript
184
+ * const pool = new MemoryPool(1024);
185
+ * const bytes = pool.allocTyped(10, 4); // 40 bytes for 10 Uint32
186
+ * const u32View = new Uint32Array(bytes.buffer, bytes.byteOffset, 10);
187
+ * ```
188
+ */
189
+ allocTyped(length, bytesPerElement) {
190
+ return this.alloc(length * bytesPerElement);
191
+ }
192
+ /**
193
+ * Resets the pool, making all memory available again.
194
+ *
195
+ * WARNING: All previously allocated views become invalid.
196
+ * Only call when you're sure no references are held.
197
+ *
198
+ * Thread-safe using Atomics.store.
199
+ *
200
+ * @example
201
+ * ```typescript
202
+ * const pool = new MemoryPool(1024);
203
+ * const buf = pool.alloc(100);
204
+ * // ... use buf ...
205
+ * pool.reset(); // buf is now invalid!
206
+ * ```
207
+ */
208
+ reset() {
209
+ Atomics.store(this.#control, 0, 0);
210
+ }
211
+ /**
212
+ * Checks if the pool can accommodate an allocation.
213
+ *
214
+ * @param size - Number of bytes needed
215
+ * @returns True if allocation would succeed
216
+ */
217
+ canAlloc(size) {
218
+ return this.available >= size;
219
+ }
220
+ }
221
+ /**
222
+ * Non-shared memory pool using regular ArrayBuffer.
223
+ *
224
+ * Use when SharedArrayBuffer is not available (e.g., browsers without
225
+ * proper COOP/COEP headers) or when thread-safety is not needed.
226
+ *
227
+ * @example
228
+ * ```typescript
229
+ * import { SimpleMemoryPool } from '@btc-vision/bitcoin';
230
+ *
231
+ * const pool = new SimpleMemoryPool(1024 * 1024);
232
+ * const buf = pool.alloc(100);
233
+ * ```
234
+ */
235
+ export class SimpleMemoryPool {
236
+ #data;
237
+ #offset = 0;
238
+ /**
239
+ * Creates a new SimpleMemoryPool.
240
+ *
241
+ * @param size - Size of the pool in bytes
242
+ */
243
+ constructor(size) {
244
+ this.#data = new Uint8Array(size);
245
+ }
246
+ /**
247
+ * Total capacity of the pool in bytes.
248
+ */
249
+ get capacity() {
250
+ return this.#data.length;
251
+ }
252
+ /**
253
+ * Current allocation offset (bytes used).
254
+ */
255
+ get used() {
256
+ return this.#offset;
257
+ }
258
+ /**
259
+ * Remaining available bytes.
260
+ */
261
+ get available() {
262
+ return this.#data.length - this.#offset;
263
+ }
264
+ /**
265
+ * Allocates memory from the pool.
266
+ *
267
+ * @param size - Number of bytes to allocate
268
+ * @returns Uint8Array view into the pool
269
+ * @throws RangeError if pool is exhausted
270
+ */
271
+ alloc(size) {
272
+ if (size <= 0) {
273
+ throw new RangeError('Allocation size must be positive');
274
+ }
275
+ if (this.#offset + size > this.#data.length) {
276
+ throw new RangeError(`SimpleMemoryPool exhausted: requested ${size} bytes, only ${this.available} available`);
277
+ }
278
+ const start = this.#offset;
279
+ this.#offset += size;
280
+ return this.#data.subarray(start, this.#offset);
281
+ }
282
+ /**
283
+ * Allocates memory and fills it with zeros.
284
+ *
285
+ * @param size - Number of bytes to allocate
286
+ * @returns Uint8Array view into the pool, filled with zeros
287
+ */
288
+ allocZeroed(size) {
289
+ const mem = this.alloc(size);
290
+ mem.fill(0);
291
+ return mem;
292
+ }
293
+ /**
294
+ * Resets the pool, making all memory available again.
295
+ */
296
+ reset() {
297
+ this.#offset = 0;
298
+ }
299
+ /**
300
+ * Checks if the pool can accommodate an allocation.
301
+ *
302
+ * @param size - Number of bytes needed
303
+ * @returns True if allocation would succeed
304
+ */
305
+ canAlloc(size) {
306
+ return this.available >= size;
307
+ }
308
+ }
309
+ //# sourceMappingURL=MemoryPool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryPool.js","sourceRoot":"","sources":["../../src/io/MemoryPool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Base64 encoding and decoding utilities.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ /**
7
+ * Decodes a base64 string to a Uint8Array.
8
+ *
9
+ * @param base64 - The base64-encoded string to decode
10
+ * @returns Uint8Array containing the decoded bytes
11
+ */
12
+ export declare function fromBase64(base64: string): Uint8Array;
13
+ //# sourceMappingURL=base64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../src/io/base64.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAOrD"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Base64 encoding and decoding utilities.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ /**
7
+ * Decodes a base64 string to a Uint8Array.
8
+ *
9
+ * @param base64 - The base64-encoded string to decode
10
+ * @returns Uint8Array containing the decoded bytes
11
+ */
12
+ export function fromBase64(base64) {
13
+ const binaryString = atob(base64);
14
+ const bytes = new Uint8Array(binaryString.length);
15
+ for (let i = 0; i < binaryString.length; i++) {
16
+ bytes[i] = binaryString.charCodeAt(i);
17
+ }
18
+ return bytes;
19
+ }
20
+ //# sourceMappingURL=base64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/io/base64.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACrC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Hex encoding and decoding utilities.
3
+ *
4
+ * Direct implementations with zero dependencies and no wrappers.
5
+ * Optimized for performance with lookup tables.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ /**
10
+ * Converts a Uint8Array to a lowercase hex string.
11
+ *
12
+ * @param bytes - The byte array to convert
13
+ * @returns Lowercase hex string representation
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * import { toHex } from '@btc-vision/bitcoin';
18
+ *
19
+ * const bytes = new Uint8Array([0xde, 0xad, 0xbe, 0xef]);
20
+ * const hex = toHex(bytes);
21
+ * console.log(hex); // 'deadbeef'
22
+ * ```
23
+ */
24
+ export declare function toHex(bytes: Uint8Array): string;
25
+ /**
26
+ * Converts a hex string to a Uint8Array.
27
+ *
28
+ * Accepts hex strings with or without '0x' prefix.
29
+ * Case-insensitive (accepts both 'DEADBEEF' and 'deadbeef').
30
+ *
31
+ * @param hex - The hex string to convert
32
+ * @returns Uint8Array containing the decoded bytes
33
+ * @throws TypeError if hex string has odd length
34
+ * @throws TypeError if hex string contains invalid characters
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * import { fromHex, toHex } from '@btc-vision/bitcoin';
39
+ *
40
+ * const bytes = fromHex('deadbeef');
41
+ * console.log(bytes); // Uint8Array [222, 173, 190, 239]
42
+ *
43
+ * // Also works with 0x prefix
44
+ * const bytes2 = fromHex('0xCAFEBABE');
45
+ * console.log(toHex(bytes2)); // 'cafebabe'
46
+ * ```
47
+ */
48
+ export declare function fromHex(hex: string): Uint8Array;
49
+ /**
50
+ * Checks if a string is valid hexadecimal.
51
+ *
52
+ * @param value - The string to check
53
+ * @returns True if the string is valid hex (even length, valid chars)
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * import { isHex } from '@btc-vision/bitcoin';
58
+ *
59
+ * isHex('deadbeef'); // true
60
+ * isHex('0xdeadbeef'); // true
61
+ * isHex('DEADBEEF'); // true
62
+ * isHex('deadbee'); // false (odd length)
63
+ * isHex('deadbeeg'); // false (invalid char)
64
+ * ```
65
+ */
66
+ export declare function isHex(value: string): boolean;
67
+ //# sourceMappingURL=hex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hex.d.ts","sourceRoot":"","sources":["../../src/io/hex.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA0BH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAM/C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAsC/C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAkB5C"}