@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
@@ -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
+ * Creates a MemoryPool from an existing SharedArrayBuffer.
53
+ *
54
+ * Useful for sharing a pool between Workers.
55
+ *
56
+ * @param buffer - Existing SharedArrayBuffer
57
+ * @returns A new MemoryPool instance wrapping the buffer
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * // Main thread
62
+ * const pool = new MemoryPool(1024 * 1024);
63
+ * worker.postMessage({ buffer: pool.sharedBuffer });
64
+ *
65
+ * // Worker thread
66
+ * self.onmessage = (e) => {
67
+ * const pool = MemoryPool.fromSharedBuffer(e.data.buffer);
68
+ * const mem = pool.alloc(100);
69
+ * };
70
+ * ```
71
+ */
72
+ static fromSharedBuffer(buffer: SharedArrayBuffer): MemoryPool;
73
+ /**
74
+ * Total capacity of the pool in bytes.
75
+ */
76
+ get capacity(): number;
77
+ /**
78
+ * Current allocation offset (bytes used).
79
+ *
80
+ * Uses Atomics for thread-safe reading.
81
+ */
82
+ get used(): number;
83
+ /**
84
+ * Remaining available bytes.
85
+ */
86
+ get available(): number;
87
+ /**
88
+ * The underlying SharedArrayBuffer.
89
+ *
90
+ * Can be transferred to Workers for shared memory access.
91
+ */
92
+ get sharedBuffer(): SharedArrayBuffer;
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;;;;;;;;;;;;;;;;;;;;OAoBG;WACW,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU;IAarE;;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;;;;;;;;;;;;;;;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
+ * Creates a MemoryPool from an existing SharedArrayBuffer.
76
+ *
77
+ * Useful for sharing a pool between Workers.
78
+ *
79
+ * @param buffer - Existing SharedArrayBuffer
80
+ * @returns A new MemoryPool instance wrapping the buffer
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * // Main thread
85
+ * const pool = new MemoryPool(1024 * 1024);
86
+ * worker.postMessage({ buffer: pool.sharedBuffer });
87
+ *
88
+ * // Worker thread
89
+ * self.onmessage = (e) => {
90
+ * const pool = MemoryPool.fromSharedBuffer(e.data.buffer);
91
+ * const mem = pool.alloc(100);
92
+ * };
93
+ * ```
94
+ */
95
+ static fromSharedBuffer(buffer) {
96
+ const pool = Object.create(MemoryPool.prototype);
97
+ const size = buffer.byteLength - 4;
98
+ // Use Object.defineProperty to set private fields on the created object
99
+ Object.defineProperty(pool, '#buffer', { value: buffer });
100
+ Object.defineProperty(pool, '#data', { value: new Uint8Array(buffer, 0, size) });
101
+ Object.defineProperty(pool, '#control', { value: new Int32Array(buffer, size, 1) });
102
+ Object.defineProperty(pool, '#maxSize', { value: size });
103
+ return pool;
104
+ }
105
+ /**
106
+ * Total capacity of the pool in bytes.
107
+ */
108
+ get capacity() {
109
+ return this.#maxSize;
110
+ }
111
+ /**
112
+ * Current allocation offset (bytes used).
113
+ *
114
+ * Uses Atomics for thread-safe reading.
115
+ */
116
+ get used() {
117
+ return Atomics.load(this.#control, 0);
118
+ }
119
+ /**
120
+ * Remaining available bytes.
121
+ */
122
+ get available() {
123
+ return this.#maxSize - this.used;
124
+ }
125
+ /**
126
+ * The underlying SharedArrayBuffer.
127
+ *
128
+ * Can be transferred to Workers for shared memory access.
129
+ */
130
+ get sharedBuffer() {
131
+ return this.#buffer;
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"}