@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
@@ -1,13 +1,52 @@
1
- export declare function ripemd160(buffer: Buffer): Buffer;
2
- export declare function sha1(buffer: Buffer): Buffer;
3
- export declare function sha256(buffer: Buffer): Buffer;
4
- export declare function hash160(buffer: Buffer): Buffer;
5
- export declare function hash256(buffer: Buffer): Buffer;
1
+ import { Bytes20, Bytes32 } from './types.js';
2
+ /**
3
+ * Computes RIPEMD-160 hash of the input.
4
+ * @param data - Input data
5
+ * @returns 20-byte hash (Bytes20)
6
+ */
7
+ export declare function ripemd160(data: Uint8Array): Bytes20;
8
+ /**
9
+ * Computes SHA-1 hash of the input.
10
+ * @param data - Input data
11
+ * @returns 20-byte hash (Bytes20)
12
+ */
13
+ export declare function sha1(data: Uint8Array): Bytes20;
14
+ /**
15
+ * Computes SHA-256 hash of the input.
16
+ * @param data - Input data
17
+ * @returns 32-byte hash (Bytes32)
18
+ */
19
+ export declare function sha256(data: Uint8Array): Bytes32;
20
+ /**
21
+ * Computes HASH160 (RIPEMD160(SHA256(data))) of the input.
22
+ * @param data - Input data
23
+ * @returns 20-byte hash (Bytes20)
24
+ */
25
+ export declare function hash160(data: Uint8Array): Bytes20;
26
+ /**
27
+ * Computes double SHA-256 hash of the input.
28
+ * @param data - Input data
29
+ * @returns 32-byte hash (Bytes32)
30
+ */
31
+ export declare function hash256(data: Uint8Array): Bytes32;
32
+ /**
33
+ * BIP340/Taproot tag names for tagged hashing.
34
+ */
6
35
  export declare const TAGS: readonly ["BIP0340/challenge", "BIP0340/aux", "BIP0340/nonce", "TapLeaf", "TapBranch", "TapSighash", "TapTweak", "KeyAgg list", "KeyAgg coefficient"];
7
36
  export type TaggedHashPrefix = (typeof TAGS)[number];
8
37
  type TaggedHashPrefixes = {
9
- [key in TaggedHashPrefix]: Buffer;
38
+ [key in TaggedHashPrefix]: Uint8Array;
10
39
  };
40
+ /**
41
+ * Precomputed tagged hash prefixes: SHA256(tag) || SHA256(tag)
42
+ */
11
43
  export declare const TAGGED_HASH_PREFIXES: TaggedHashPrefixes;
12
- export declare function taggedHash(prefix: TaggedHashPrefix, data: Buffer): Buffer;
44
+ /**
45
+ * Computes a BIP340-style tagged hash.
46
+ * @param prefix - The tag name
47
+ * @param data - Input data
48
+ * @returns 32-byte hash (Bytes32)
49
+ */
50
+ export declare function taggedHash(prefix: TaggedHashPrefix, data: Uint8Array): Bytes32;
13
51
  export {};
52
+ //# sourceMappingURL=crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAEjD;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,uJAUP,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,KAAK,kBAAkB,GAAG;KACrB,GAAG,IAAI,gBAAgB,GAAG,UAAU;CACxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAsDlC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAE9E"}
@@ -0,0 +1,129 @@
1
+ import { EccLib } from './types.js';
2
+ /**
3
+ * Context class for managing the ECC library instance.
4
+ * Uses dependency injection pattern instead of global singleton.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { EccContext } from '@btc-vision/bitcoin';
9
+ * import * as secp256k1 from 'tiny-secp256k1';
10
+ *
11
+ * // Initialize once at app startup
12
+ * EccContext.init(secp256k1);
13
+ *
14
+ * // Get instance anywhere in your code
15
+ * const ecc = EccContext.get();
16
+ *
17
+ * // Clear when done (optional, for testing)
18
+ * EccContext.clear();
19
+ * ```
20
+ */
21
+ export declare class EccContext {
22
+ #private;
23
+ private constructor();
24
+ /**
25
+ * The underlying ECC library instance.
26
+ */
27
+ get lib(): EccLib;
28
+ /**
29
+ * Initializes the ECC context with the provided library.
30
+ * The library is verified before being set as active.
31
+ *
32
+ * @param lib - The ECC library instance to initialize
33
+ * @returns The initialized EccContext instance
34
+ * @throws Error if the ECC library fails verification
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * import { EccContext } from '@btc-vision/bitcoin';
39
+ * import * as secp256k1 from 'tiny-secp256k1';
40
+ *
41
+ * const context = EccContext.init(secp256k1);
42
+ * ```
43
+ */
44
+ static init(lib: EccLib): EccContext;
45
+ /**
46
+ * Gets the initialized ECC context.
47
+ *
48
+ * @returns The EccContext instance
49
+ * @throws Error if the context has not been initialized
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * import { EccContext } from '@btc-vision/bitcoin';
54
+ *
55
+ * const context = EccContext.get();
56
+ * const isValid = context.lib.isXOnlyPoint(someKey);
57
+ * ```
58
+ */
59
+ static get(): EccContext;
60
+ /**
61
+ * Clears the ECC context.
62
+ * Useful for testing or when reinitializing with a different library.
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * import { EccContext } from '@btc-vision/bitcoin';
67
+ *
68
+ * EccContext.clear();
69
+ * // Context is now uninitialized
70
+ * ```
71
+ */
72
+ static clear(): void;
73
+ /**
74
+ * Checks if the ECC context has been initialized.
75
+ *
76
+ * @returns True if initialized
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * import { EccContext } from '@btc-vision/bitcoin';
81
+ *
82
+ * if (!EccContext.isInitialized()) {
83
+ * EccContext.init(secp256k1);
84
+ * }
85
+ * ```
86
+ */
87
+ static isInitialized(): boolean;
88
+ }
89
+ /**
90
+ * Initializes the ECC library with the provided instance.
91
+ * This is a convenience function that wraps EccContext.init().
92
+ * Pass `undefined` to clear the library.
93
+ *
94
+ * @param eccLib - The ECC library instance to initialize, or undefined to clear
95
+ * @throws Error if the ECC library fails verification
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * import { initEccLib } from '@btc-vision/bitcoin';
100
+ * import * as secp256k1 from 'tiny-secp256k1';
101
+ *
102
+ * // Initialize the ECC library
103
+ * initEccLib(secp256k1);
104
+ *
105
+ * // Clear the library
106
+ * initEccLib(undefined);
107
+ * ```
108
+ */
109
+ export declare function initEccLib(eccLib: EccLib | undefined): void;
110
+ /**
111
+ * Retrieves the initialized ECC library instance.
112
+ * This is a convenience function that wraps EccContext.get().lib.
113
+ *
114
+ * @returns The ECC library instance
115
+ * @throws Error if the ECC library has not been initialized
116
+ *
117
+ * @example
118
+ * ```typescript
119
+ * import { getEccLib, initEccLib } from '@btc-vision/bitcoin';
120
+ * import * as secp256k1 from 'tiny-secp256k1';
121
+ *
122
+ * initEccLib(secp256k1);
123
+ *
124
+ * const ecc = getEccLib();
125
+ * const isValid = ecc.isXOnlyPoint(somePublicKey);
126
+ * ```
127
+ */
128
+ export declare function getEccLib(): EccLib;
129
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/ecc/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,UAAU;;IAInB,OAAO;IAIP;;OAEG;IACH,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAMpC;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,GAAG,IAAI,UAAU;IASxB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAIpB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,aAAa,IAAI,OAAO;CAGlC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAM3D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * ECC (Elliptic Curve Cryptography) module.
3
+ *
4
+ * Provides dependency injection for the secp256k1 elliptic curve library
5
+ * required for Taproot (BIP340/BIP341) operations.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ export type { EccLib, XOnlyPointAddTweakResult, Parity } from './types.js';
10
+ export { EccContext, initEccLib, getEccLib } from './context.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ecc/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAG3E,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,128 @@
1
+ import { Bytes32, PrivateKey, PublicKey, SchnorrSignature, Signature, XOnlyPublicKey } from '../branded.js';
2
+ /**
3
+ * Parity of the y-coordinate for an x-only public key.
4
+ * - 0: even y-coordinate
5
+ * - 1: odd y-coordinate
6
+ */
7
+ export type Parity = 0 | 1;
8
+ /**
9
+ * Result of x-only point addition with tweak.
10
+ */
11
+ export interface XOnlyPointAddTweakResult {
12
+ /** Parity of the resulting y-coordinate (0 = even, 1 = odd) */
13
+ readonly parity: Parity;
14
+ /** The resulting x-only public key */
15
+ readonly xOnlyPubkey: XOnlyPublicKey;
16
+ }
17
+ /**
18
+ * Interface for the ECC library used by this library.
19
+ * This is compatible with tiny-secp256k1 and @noble/secp256k1.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * import { EccLib, initEccLib } from '@btc-vision/bitcoin';
24
+ * import * as secp256k1 from 'tiny-secp256k1';
25
+ *
26
+ * // tiny-secp256k1 implements EccLib
27
+ * const ecc: EccLib = secp256k1;
28
+ * initEccLib(ecc);
29
+ * ```
30
+ */
31
+ export interface EccLib {
32
+ /**
33
+ * Checks if a 32-byte value is a valid x-only public key.
34
+ *
35
+ * @param p - 32-byte x-coordinate
36
+ * @returns True if the point is valid on the secp256k1 curve
37
+ */
38
+ isXOnlyPoint(p: Uint8Array): boolean;
39
+ /**
40
+ * Adds a tweak to an x-only public key.
41
+ *
42
+ * @param p - 32-byte x-only public key
43
+ * @param tweak - 32-byte scalar to add
44
+ * @returns The tweaked public key with parity, or null if result is invalid
45
+ */
46
+ xOnlyPointAddTweak(p: XOnlyPublicKey, tweak: Bytes32): XOnlyPointAddTweakResult | null;
47
+ /**
48
+ * Signs a 32-byte message hash with a private key (ECDSA).
49
+ * Optional - only needed for signing operations.
50
+ *
51
+ * @param hash - 32-byte message hash
52
+ * @param privateKey - 32-byte private key
53
+ * @returns DER-encoded signature
54
+ */
55
+ sign?(hash: Bytes32, privateKey: PrivateKey): Signature;
56
+ /**
57
+ * Signs a 32-byte message hash with a private key (Schnorr/BIP340).
58
+ * Optional - only needed for Taproot key-path signing.
59
+ *
60
+ * @param hash - 32-byte message hash
61
+ * @param privateKey - 32-byte private key
62
+ * @returns 64-byte Schnorr signature
63
+ */
64
+ signSchnorr?(hash: Bytes32, privateKey: PrivateKey): SchnorrSignature;
65
+ /**
66
+ * Verifies an ECDSA signature.
67
+ * Optional - only needed for signature verification.
68
+ *
69
+ * @param hash - 32-byte message hash
70
+ * @param publicKey - 33 or 65-byte public key
71
+ * @param signature - DER-encoded signature
72
+ * @returns True if signature is valid
73
+ */
74
+ verify?(hash: Bytes32, publicKey: PublicKey, signature: Signature): boolean;
75
+ /**
76
+ * Verifies a Schnorr/BIP340 signature.
77
+ * Optional - only needed for Taproot signature verification.
78
+ *
79
+ * @param hash - 32-byte message hash
80
+ * @param publicKey - 32-byte x-only public key
81
+ * @param signature - 64-byte Schnorr signature
82
+ * @returns True if signature is valid
83
+ */
84
+ verifySchnorr?(hash: Bytes32, publicKey: XOnlyPublicKey, signature: SchnorrSignature): boolean;
85
+ /**
86
+ * Derives a public key from a private key.
87
+ * Optional - only needed for key derivation.
88
+ *
89
+ * @param privateKey - 32-byte private key
90
+ * @param compressed - Whether to return compressed (33-byte) or uncompressed (65-byte)
91
+ * @returns The public key, or null if private key is invalid
92
+ */
93
+ pointFromScalar?(privateKey: PrivateKey, compressed?: boolean): PublicKey | null;
94
+ /**
95
+ * Computes the x-only public key from a private key.
96
+ * Optional - only needed for Taproot key derivation.
97
+ *
98
+ * @param privateKey - 32-byte private key
99
+ * @returns 32-byte x-only public key, or null if private key is invalid
100
+ */
101
+ xOnlyPointFromScalar?(privateKey: PrivateKey): XOnlyPublicKey | null;
102
+ /**
103
+ * Converts a full public key to x-only format.
104
+ * Optional - only needed when working with x-only keys.
105
+ *
106
+ * @param pubkey - 33 or 65-byte public key
107
+ * @returns 32-byte x-only public key
108
+ */
109
+ xOnlyPointFromPoint?(pubkey: PublicKey): XOnlyPublicKey;
110
+ /**
111
+ * Adds a scalar to a private key.
112
+ * Optional - only needed for key tweaking.
113
+ *
114
+ * @param privateKey - 32-byte private key
115
+ * @param tweak - 32-byte scalar to add
116
+ * @returns The tweaked private key, or null if result is invalid
117
+ */
118
+ privateAdd?(privateKey: PrivateKey, tweak: Bytes32): PrivateKey | null;
119
+ /**
120
+ * Negates a private key.
121
+ * Optional - only needed for Taproot parity handling.
122
+ *
123
+ * @param privateKey - 32-byte private key
124
+ * @returns The negated private key
125
+ */
126
+ privateNegate?(privateKey: PrivateKey): PrivateKey;
127
+ }
128
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ecc/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAG,MAAM,eAAe,CAAC;AAElH;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;CACxC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,MAAM;IACnB;;;;;OAKG;IACH,YAAY,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAErC;;;;;;OAMG;IACH,kBAAkB,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,GAAG,wBAAwB,GAAG,IAAI,CAAC;IAEvF;;;;;;;OAOG;IACH,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IAExD;;;;;;;OAOG;IACH,WAAW,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,gBAAgB,CAAC;IAEtE;;;;;;;;OAQG;IACH,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC;IAE5E;;;;;;;;OAQG;IACH,aAAa,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAE/F;;;;;;;OAOG;IACH,eAAe,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IAEjF;;;;;;OAMG;IACH,oBAAoB,CAAC,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,IAAI,CAAC;IAErE;;;;;;OAMG;IACH,mBAAmB,CAAC,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc,CAAC;IAExD;;;;;;;OAOG;IACH,UAAU,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC;IAEvE;;;;;;OAMG;IACH,aAAa,CAAC,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;CACtD"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Ambient module declaration for ecpair.
3
+ *
4
+ * The upstream ecpair@3 .d.ts files depend on valibot@^0.37 type-level APIs.
5
+ * When a different valibot major is hoisted (e.g. v1.x required by bip32),
6
+ * @typescript-eslint resolves valibot from the project root instead of
7
+ * ecpair's nested node_modules, turning every ecpair type into an error type.
8
+ *
9
+ * This local declaration re-exports the subset of ecpair's public API that
10
+ * this project actually uses, without any valibot dependency.
11
+ */
12
+ declare module 'ecpair' {
13
+ interface Network {
14
+ messagePrefix: string | Uint8Array;
15
+ bech32: string;
16
+ bip32: {
17
+ public: number;
18
+ private: number;
19
+ };
20
+ pubKeyHash: number;
21
+ scriptHash: number;
22
+ wif: number;
23
+ }
24
+
25
+ interface Signer {
26
+ publicKey: Uint8Array;
27
+ network?: unknown;
28
+ sign(hash: Uint8Array, lowR?: boolean): Uint8Array;
29
+ }
30
+
31
+ interface SignerAsync {
32
+ publicKey: Uint8Array;
33
+ network?: unknown;
34
+ sign(hash: Uint8Array, lowR?: boolean): Promise<Uint8Array>;
35
+ }
36
+
37
+ interface ECPairInterface extends Signer {
38
+ compressed: boolean;
39
+ network: Network;
40
+ lowR: boolean;
41
+ privateKey?: Uint8Array;
42
+ toWIF(): string;
43
+ tweak(t: Uint8Array): ECPairInterface;
44
+ verify(hash: Uint8Array, signature: Uint8Array): boolean;
45
+ verifySchnorr(hash: Uint8Array, signature: Uint8Array): boolean;
46
+ signSchnorr(hash: Uint8Array): Uint8Array;
47
+ }
48
+
49
+ interface ECPairOptions {
50
+ compressed?: boolean;
51
+ network?: Network;
52
+ rng?: (arg?: number) => Uint8Array;
53
+ }
54
+
55
+ interface ECPairAPI {
56
+ isPoint(maybePoint: unknown): boolean;
57
+ fromPrivateKey(buffer: Uint8Array, options?: ECPairOptions): ECPairInterface;
58
+ fromPublicKey(buffer: Uint8Array, options?: ECPairOptions): ECPairInterface;
59
+ fromWIF(wifString: string, network?: Network | Network[]): ECPairInterface;
60
+ makeRandom(options?: ECPairOptions): ECPairInterface;
61
+ }
62
+
63
+ interface TinySecp256k1Interface {
64
+ isPoint(p: Uint8Array): boolean;
65
+ pointCompress(p: Uint8Array, compressed?: boolean): Uint8Array;
66
+ isPrivate(d: Uint8Array): boolean;
67
+ pointFromScalar(d: Uint8Array, compressed?: boolean): Uint8Array | null;
68
+ xOnlyPointAddTweak(
69
+ p: Uint8Array,
70
+ tweak: Uint8Array,
71
+ ): { parity: 1 | 0; xOnlyPubkey: Uint8Array } | null;
72
+ privateAdd(d: Uint8Array, tweak: Uint8Array): Uint8Array | null;
73
+ privateNegate(d: Uint8Array): Uint8Array;
74
+ sign(h: Uint8Array, d: Uint8Array, e?: Uint8Array): Uint8Array;
75
+ signSchnorr?(h: Uint8Array, d: Uint8Array, e?: Uint8Array): Uint8Array;
76
+ verify(h: Uint8Array, Q: Uint8Array, signature: Uint8Array, strict?: boolean): boolean;
77
+ verifySchnorr?(h: Uint8Array, Q: Uint8Array, signature: Uint8Array): boolean;
78
+ }
79
+
80
+ const networks: {
81
+ bitcoin: Network;
82
+ testnet: Network;
83
+ };
84
+
85
+ function ECPairFactory(ecc: TinySecp256k1Interface): ECPairAPI;
86
+ export default ECPairFactory;
87
+
88
+ export {
89
+ ECPairFactory,
90
+ Signer,
91
+ SignerAsync,
92
+ ECPairAPI,
93
+ ECPairInterface,
94
+ ECPairOptions,
95
+ TinySecp256k1Interface,
96
+ Network,
97
+ networks,
98
+ };
99
+ }
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Custom error types for the Bitcoin library.
3
+ * @packageDocumentation
4
+ */
5
+ /**
6
+ * Base error class for all Bitcoin-related errors.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { BitcoinError } from '@btc-vision/bitcoin';
11
+ *
12
+ * if (error instanceof BitcoinError) {
13
+ * console.log('Bitcoin library error:', error.message);
14
+ * }
15
+ * ```
16
+ */
17
+ export declare class BitcoinError extends Error {
18
+ constructor(message: string);
19
+ }
20
+ /**
21
+ * Error thrown when input validation fails.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * import { ValidationError } from '@btc-vision/bitcoin';
26
+ *
27
+ * throw new ValidationError('Invalid public key length');
28
+ * ```
29
+ */
30
+ export declare class ValidationError extends BitcoinError {
31
+ constructor(message: string);
32
+ }
33
+ /**
34
+ * Error thrown when an invalid input is provided to a transaction.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * import { InvalidInputError } from '@btc-vision/bitcoin';
39
+ *
40
+ * throw new InvalidInputError('Input index out of range');
41
+ * ```
42
+ */
43
+ export declare class InvalidInputError extends BitcoinError {
44
+ constructor(message: string);
45
+ }
46
+ /**
47
+ * Error thrown when an invalid output is provided to a transaction.
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * import { InvalidOutputError } from '@btc-vision/bitcoin';
52
+ *
53
+ * throw new InvalidOutputError('Output value exceeds maximum');
54
+ * ```
55
+ */
56
+ export declare class InvalidOutputError extends BitcoinError {
57
+ constructor(message: string);
58
+ }
59
+ /**
60
+ * Error thrown when a script operation fails.
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * import { ScriptError } from '@btc-vision/bitcoin';
65
+ *
66
+ * throw new ScriptError('Failed to decompile script');
67
+ * ```
68
+ */
69
+ export declare class ScriptError extends BitcoinError {
70
+ constructor(message: string);
71
+ }
72
+ /**
73
+ * Error thrown when a PSBT operation fails.
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * import { PsbtError } from '@btc-vision/bitcoin';
78
+ *
79
+ * throw new PsbtError('Cannot finalize unsigned input');
80
+ * ```
81
+ */
82
+ export declare class PsbtError extends BitcoinError {
83
+ constructor(message: string);
84
+ }
85
+ /**
86
+ * Error thrown when ECC library is not initialized.
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * import { EccError } from '@btc-vision/bitcoin';
91
+ *
92
+ * throw new EccError('ECC library must be initialized before use');
93
+ * ```
94
+ */
95
+ export declare class EccError extends BitcoinError {
96
+ constructor(message: string);
97
+ }
98
+ /**
99
+ * Error thrown when address encoding/decoding fails.
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * import { AddressError } from '@btc-vision/bitcoin';
104
+ *
105
+ * throw new AddressError('Invalid address checksum');
106
+ * ```
107
+ */
108
+ export declare class AddressError extends BitcoinError {
109
+ constructor(message: string);
110
+ }
111
+ /**
112
+ * Error thrown when signature operations fail.
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * import { SignatureError } from '@btc-vision/bitcoin';
117
+ *
118
+ * throw new SignatureError('Invalid signature format');
119
+ * ```
120
+ */
121
+ export declare class SignatureError extends BitcoinError {
122
+ constructor(message: string);
123
+ }
124
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;GAWG;AACH,qBAAa,YAAa,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAQ9B;AAED;;;;;;;;;GASG;AACH,qBAAa,eAAgB,SAAQ,YAAY;gBACjC,OAAO,EAAE,MAAM;CAI9B;AAED;;;;;;;;;GASG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;gBACnC,OAAO,EAAE,MAAM;CAI9B;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;gBACpC,OAAO,EAAE,MAAM;CAI9B;AAED;;;;;;;;;GASG;AACH,qBAAa,WAAY,SAAQ,YAAY;gBAC7B,OAAO,EAAE,MAAM;CAI9B;AAED;;;;;;;;;GASG;AACH,qBAAa,SAAU,SAAQ,YAAY;gBAC3B,OAAO,EAAE,MAAM;CAI9B;AAED;;;;;;;;;GASG;AACH,qBAAa,QAAS,SAAQ,YAAY;gBAC1B,OAAO,EAAE,MAAM;CAI9B;AAED;;;;;;;;;GASG;AACH,qBAAa,YAAa,SAAQ,YAAY;gBAC9B,OAAO,EAAE,MAAM;CAI9B;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,YAAY;gBAChC,OAAO,EAAE,MAAM;CAI9B"}
@@ -1,4 +1,5 @@
1
- import { PsbtInput as _PsbtInput, PsbtInputUpdate as _PsbtInputUpdate, PsbtOutput as _PsbtOutput, TapBip32Derivation as _TapBip32Derivation, TapInternalKey as _TapInternalKey, TapKeySig as _TapKeySig, TapLeaf as _TapLeaf, TapLeafScript as _TapLeafScript, TapMerkleRoot as _TapMerkleRoot, TapScriptSig as _TapScriptSig, TapTree as _TapTree } from 'bip174/src/lib/interfaces.js';
1
+ import { PsbtInput as _PsbtInput, PsbtInputUpdate as _PsbtInputUpdate, PsbtOutput as _PsbtOutput, TapBip32Derivation as _TapBip32Derivation, TapInternalKey as _TapInternalKey, TapKeySig as _TapKeySig, TapLeaf as _TapLeaf, TapLeafScript as _TapLeafScript, TapMerkleRoot as _TapMerkleRoot, TapScriptSig as _TapScriptSig, TapTree as _TapTree } from 'bip174';
2
+ import { AddressError, BitcoinError, EccError, InvalidInputError, InvalidOutputError, PsbtError, ScriptError, SignatureError, ValidationError } from './errors.js';
2
3
  import * as networks from './networks.js';
3
4
  import * as address from './address.js';
4
5
  import * as payments from './payments/index.js';
@@ -11,12 +12,18 @@ export * as networks from './networks.js';
11
12
  export * as payments from './payments/index.js';
12
13
  export * as script from './script.js';
13
14
  export { Block } from './block.js';
15
+ /** @hidden */
14
16
  export * from './crypto.js';
15
17
  export * from './psbt.js';
18
+ /** @hidden */
16
19
  export { opcodes } from './opcodes.js';
17
20
  export { Transaction } from './transaction.js';
21
+ export type { TaprootHashCache } from './transaction.js';
22
+ /** @hidden */
18
23
  export type { Network } from './networks.js';
19
- export { initEccLib } from './ecc_lib.js';
24
+ /** @hidden */
25
+ export { initEccLib, getEccLib, EccContext } from './ecc/context.js';
26
+ export type { EccLib } from './ecc/types.js';
20
27
  export { PaymentType } from './payments/index.js';
21
28
  export type { Payment, PaymentCreator, PaymentOpts, P2WSHPayment, P2PKPayment, BasePayment, P2SHPayment, P2TRPayment, P2WPKHPayment, P2PKHPayment, P2MSPayment, EmbedPayment, P2OPPayment, P2OPPaymentParams, } from './payments/index.js';
22
29
  export type { Stack, StackElement, StackFunction } from './types.js';
@@ -45,12 +52,31 @@ export interface PsbtInputUpdate extends _PsbtInputUpdate {
45
52
  }
46
53
  export * from './psbt/bip371.js';
47
54
  export * from './address.js';
48
- export * from './bufferutils.js';
55
+ export { toHex, fromHex, isHex, concat, equals, compare, isZero, clone, reverse, reverseCopy, alloc, xor, fromUtf8, toUtf8, MemoryPool, SimpleMemoryPool, varuint, } from './io/index.js';
49
56
  export * from './payments/bip341.js';
50
57
  export * from './psbt/psbtutils.js';
51
- export { toXOnly, decompressPublicKey, pubkeysMatch, type UncompressedPublicKey } from './pubkey.js';
58
+ export { toXOnly, decompressPublicKey, pubkeysMatch, type UncompressedPublicKey, } from './pubkey.js';
52
59
  export { TAPLEAF_VERSION_MASK } from './types.js';
53
- export type { Taptree, XOnlyPointAddTweakResult, Tapleaf, TinySecp256k1Interface, } from './types.js';
60
+ export type { Taptree, Tapleaf } from './types.js';
61
+ export type { Bytes32, Bytes20, PublicKey, XOnlyPublicKey, Satoshi, PrivateKey, Signature, SchnorrSignature, Script, } from './types.js';
62
+ export { isPrivateKey, isSchnorrSignature, isSignature, isScript, isBytes32, isBytes20, isPoint, isXOnlyPublicKey, isSatoshi, assertXOnlyPublicKey, assertPrivateKey, toBytes32, toBytes20, toSatoshi, } from './types.js';
63
+ export type { XOnlyPointAddTweakResult } from './ecc/types.js';
64
+ export { BitcoinError, ValidationError, InvalidInputError, InvalidOutputError, ScriptError, PsbtError, EccError, AddressError, SignatureError, };
65
+ /** All error classes grouped as a namespace */
66
+ export declare const errors: {
67
+ readonly BitcoinError: typeof BitcoinError;
68
+ readonly ValidationError: typeof ValidationError;
69
+ readonly InvalidInputError: typeof InvalidInputError;
70
+ readonly InvalidOutputError: typeof InvalidOutputError;
71
+ readonly ScriptError: typeof ScriptError;
72
+ readonly PsbtError: typeof PsbtError;
73
+ readonly EccError: typeof EccError;
74
+ readonly AddressError: typeof AddressError;
75
+ readonly SignatureError: typeof SignatureError;
76
+ };
77
+ export * as workers from './workers/index.js';
78
+ export { WorkerSigningPool, getSigningPool, SignatureType, createSigningPool, signPsbtParallel, } from './workers/index.js';
79
+ export type { WorkerPoolConfig, SigningTask, ParallelSignerKeyPair, ParallelSigningResult, ParallelSignOptions, PsbtParallelKeyPair, } from './workers/index.js';
54
80
  declare const bitcoin: {
55
81
  networks: typeof networks;
56
82
  address: typeof address;
@@ -60,3 +86,4 @@ declare const bitcoin: {
60
86
  Transaction: typeof Transaction;
61
87
  };
62
88
  export default bitcoin;
89
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}