@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
@@ -1,2 +1,155 @@
1
- import { P2PKPayment, PaymentOpts } from './types.js';
1
+ import { Network } from '../networks.js';
2
+ import { PublicKey, Script, Signature } from '../types.js';
3
+ import { PaymentType, P2PKPayment, PaymentOpts } from './types.js';
4
+ /**
5
+ * Pay-to-Public-Key (P2PK) payment class.
6
+ *
7
+ * Creates locking scripts of the form: `{pubKey} OP_CHECKSIG`
8
+ * Spending requires providing: `{signature}`
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { P2PK } from '@btc-vision/bitcoin';
13
+ *
14
+ * // Create from public key
15
+ * const payment = P2PK.fromPubkey(pubkey);
16
+ * console.log(payment.output); // scriptPubKey
17
+ *
18
+ * // Create from output script
19
+ * const decoded = P2PK.fromOutput(scriptPubKey);
20
+ * console.log(decoded.pubkey); // extracted public key
21
+ *
22
+ * // Legacy factory function still works
23
+ * const legacy = p2pk({ pubkey });
24
+ * ```
25
+ */
26
+ export declare class P2PK {
27
+ #private;
28
+ static readonly NAME: "p2pk";
29
+ /**
30
+ * Creates a new P2PK payment instance.
31
+ *
32
+ * @param params - Payment parameters
33
+ * @param params.pubkey - The public key (33 or 65 bytes)
34
+ * @param params.signature - DER-encoded signature
35
+ * @param params.output - The scriptPubKey
36
+ * @param params.input - The scriptSig
37
+ * @param params.network - Network parameters (defaults to mainnet)
38
+ * @param opts - Payment options
39
+ * @param opts.validate - Whether to validate inputs (default: true)
40
+ *
41
+ * @throws {TypeError} If validation is enabled and data is invalid
42
+ */
43
+ constructor(params: {
44
+ pubkey?: Uint8Array | undefined;
45
+ signature?: Uint8Array | undefined;
46
+ output?: Uint8Array | undefined;
47
+ input?: Uint8Array | undefined;
48
+ network?: Network | undefined;
49
+ }, opts?: PaymentOpts);
50
+ /**
51
+ * Payment type discriminant.
52
+ */
53
+ get name(): typeof PaymentType.P2PK;
54
+ /**
55
+ * Network parameters.
56
+ */
57
+ get network(): Network;
58
+ /**
59
+ * The public key (33 or 65 bytes).
60
+ * Computed lazily from output if not provided directly.
61
+ */
62
+ get pubkey(): PublicKey | undefined;
63
+ /**
64
+ * The DER-encoded signature.
65
+ * Computed lazily from input if not provided directly.
66
+ */
67
+ get signature(): Signature | undefined;
68
+ /**
69
+ * The scriptPubKey: `{pubKey} OP_CHECKSIG`
70
+ * Computed lazily from pubkey if not provided directly.
71
+ */
72
+ get output(): Script | undefined;
73
+ /**
74
+ * The scriptSig: `{signature}`
75
+ * Computed lazily from signature if not provided directly.
76
+ */
77
+ get input(): Script | undefined;
78
+ /**
79
+ * Witness stack (empty for P2PK as it's not a SegWit type).
80
+ */
81
+ get witness(): Uint8Array[] | undefined;
82
+ /**
83
+ * Creates a P2PK payment from a public key.
84
+ *
85
+ * @param pubkey - The public key (33 or 65 bytes)
86
+ * @param network - Network parameters (defaults to mainnet)
87
+ * @returns A new P2PK payment instance
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * const payment = P2PK.fromPubkey(pubkey);
92
+ * const scriptPubKey = payment.output;
93
+ * ```
94
+ */
95
+ static fromPubkey(pubkey: PublicKey, network?: Network): P2PK;
96
+ /**
97
+ * Creates a P2PK payment from a scriptPubKey.
98
+ *
99
+ * @param output - The scriptPubKey
100
+ * @param network - Network parameters (defaults to mainnet)
101
+ * @returns A new P2PK payment instance
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * const payment = P2PK.fromOutput(scriptPubKey);
106
+ * const pubkey = payment.pubkey;
107
+ * ```
108
+ */
109
+ static fromOutput(output: Uint8Array, network?: Network): P2PK;
110
+ /**
111
+ * Creates a P2PK payment from a signature (for spending).
112
+ *
113
+ * @param signature - The DER-encoded signature
114
+ * @param pubkey - The public key (optional, for validation)
115
+ * @param network - Network parameters (defaults to mainnet)
116
+ * @returns A new P2PK payment instance
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * const payment = P2PK.fromSignature(signature, pubkey);
121
+ * const scriptSig = payment.input;
122
+ * ```
123
+ */
124
+ static fromSignature(signature: Signature, pubkey?: PublicKey, network?: Network): P2PK;
125
+ /**
126
+ * Converts to a plain P2PKPayment object for backwards compatibility.
127
+ *
128
+ * @returns A P2PKPayment object
129
+ */
130
+ toPayment(): P2PKPayment;
131
+ }
132
+ /**
133
+ * Creates a Pay-to-Public-Key (P2PK) payment object.
134
+ *
135
+ * This is the legacy factory function for backwards compatibility.
136
+ * For new code, prefer using the P2PK class directly.
137
+ *
138
+ * @param a - The payment object containing the necessary data
139
+ * @param opts - Optional payment options
140
+ * @returns The P2PK payment object
141
+ * @throws {TypeError} If the required data is not provided or if the data is invalid
142
+ *
143
+ * @example
144
+ * ```typescript
145
+ * import { p2pk } from '@btc-vision/bitcoin';
146
+ *
147
+ * // Create from public key
148
+ * const payment = p2pk({ pubkey });
149
+ *
150
+ * // Create from output
151
+ * const decoded = p2pk({ output: scriptPubKey });
152
+ * ```
153
+ */
2
154
  export declare function p2pk(a: Omit<P2PKPayment, 'name'>, opts?: PaymentOpts): P2PKPayment;
155
+ //# sourceMappingURL=p2pk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p2pk.d.ts","sourceRoot":"","sources":["../../src/payments/p2pk.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAW,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAI7E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,IAAI;;IAEb,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAoB;IA0BxC;;;;;;;;;;;;;OAaG;gBAEC,MAAM,EAAE;QACJ,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,SAAS,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QACnC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACjC,EACD,IAAI,CAAC,EAAE,WAAW;IAsBtB;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,WAAW,CAAC,IAAI,CAElC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAMlC;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,CAMrC;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAM/B;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAM9B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,UAAU,EAAE,GAAG,SAAS,CAMtC;IAID;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI7D;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI9D;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAkGvF;;;;OAIG;IACH,SAAS,IAAI,WAAW;CAW3B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,CAkBlF"}
@@ -1,2 +1,177 @@
1
- import { P2PKHPayment, PaymentOpts } from './types.js';
1
+ import { Network } from '../networks.js';
2
+ import { Bytes20, PublicKey, Script, Signature } from '../types.js';
3
+ import { PaymentType, P2PKHPayment, PaymentOpts } from './types.js';
4
+ /**
5
+ * Pay-to-Public-Key-Hash (P2PKH) payment class.
6
+ *
7
+ * Creates locking scripts of the form:
8
+ * `OP_DUP OP_HASH160 {hash160(pubkey)} OP_EQUALVERIFY OP_CHECKSIG`
9
+ *
10
+ * Spending requires providing: `{signature} {pubkey}`
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { P2PKH } from '@btc-vision/bitcoin';
15
+ *
16
+ * // Create from public key
17
+ * const payment = P2PKH.fromPubkey(pubkey);
18
+ * console.log(payment.address); // Bitcoin address
19
+ * console.log(payment.output); // scriptPubKey
20
+ *
21
+ * // Create from address
22
+ * const fromAddr = P2PKH.fromAddress('1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2');
23
+ * console.log(fromAddr.hash); // 20-byte pubkey hash
24
+ *
25
+ * // Create from hash
26
+ * const fromHash = P2PKH.fromHash(hash160);
27
+ * console.log(fromHash.address);
28
+ * ```
29
+ */
30
+ export declare class P2PKH {
31
+ #private;
32
+ static readonly NAME: "p2pkh";
33
+ /**
34
+ * Creates a new P2PKH payment instance.
35
+ *
36
+ * @param params - Payment parameters
37
+ * @param params.address - Base58Check encoded address
38
+ * @param params.hash - 20-byte pubkey hash (RIPEMD160(SHA256(pubkey)))
39
+ * @param params.pubkey - The public key (33 or 65 bytes)
40
+ * @param params.signature - DER-encoded signature
41
+ * @param params.output - The scriptPubKey
42
+ * @param params.input - The scriptSig
43
+ * @param params.network - Network parameters (defaults to mainnet)
44
+ * @param opts - Payment options
45
+ * @param opts.validate - Whether to validate inputs (default: true)
46
+ *
47
+ * @throws {TypeError} If validation is enabled and data is invalid
48
+ */
49
+ constructor(params: {
50
+ address?: string | undefined;
51
+ hash?: Uint8Array | undefined;
52
+ pubkey?: Uint8Array | undefined;
53
+ signature?: Uint8Array | undefined;
54
+ output?: Uint8Array | undefined;
55
+ input?: Uint8Array | undefined;
56
+ network?: Network | undefined;
57
+ useHybrid?: boolean | undefined;
58
+ useUncompressed?: boolean | undefined;
59
+ }, opts?: PaymentOpts);
60
+ /**
61
+ * Payment type discriminant.
62
+ */
63
+ get name(): typeof PaymentType.P2PKH;
64
+ /**
65
+ * Network parameters.
66
+ */
67
+ get network(): Network;
68
+ /**
69
+ * Base58Check encoded Bitcoin address.
70
+ */
71
+ get address(): string | undefined;
72
+ /**
73
+ * 20-byte pubkey hash (RIPEMD160(SHA256(pubkey))).
74
+ */
75
+ get hash(): Bytes20 | undefined;
76
+ /**
77
+ * The public key (33 or 65 bytes).
78
+ */
79
+ get pubkey(): PublicKey | undefined;
80
+ /**
81
+ * The DER-encoded signature.
82
+ */
83
+ get signature(): Signature | undefined;
84
+ /**
85
+ * The scriptPubKey:
86
+ * `OP_DUP OP_HASH160 {hash} OP_EQUALVERIFY OP_CHECKSIG`
87
+ */
88
+ get output(): Script | undefined;
89
+ /**
90
+ * The scriptSig: `{signature} {pubkey}`
91
+ */
92
+ get input(): Script | undefined;
93
+ /**
94
+ * Witness stack (empty for P2PKH as it's not a SegWit type).
95
+ */
96
+ get witness(): Uint8Array[] | undefined;
97
+ /**
98
+ * Creates a P2PKH payment from a public key.
99
+ *
100
+ * @param pubkey - The public key (33 or 65 bytes)
101
+ * @param network - Network parameters (defaults to mainnet)
102
+ * @returns A new P2PKH payment instance
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * const payment = P2PKH.fromPubkey(pubkey);
107
+ * const address = payment.address;
108
+ * ```
109
+ */
110
+ static fromPubkey(pubkey: PublicKey, network?: Network): P2PKH;
111
+ /**
112
+ * Creates a P2PKH payment from a Base58Check address.
113
+ *
114
+ * @param address - Base58Check encoded address
115
+ * @param network - Network parameters (defaults to mainnet)
116
+ * @returns A new P2PKH payment instance
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * const payment = P2PKH.fromAddress('1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2');
121
+ * const hash = payment.hash;
122
+ * ```
123
+ */
124
+ static fromAddress(address: string, network?: Network): P2PKH;
125
+ /**
126
+ * Creates a P2PKH payment from a 20-byte pubkey hash.
127
+ *
128
+ * @param hash - 20-byte pubkey hash
129
+ * @param network - Network parameters (defaults to mainnet)
130
+ * @returns A new P2PKH payment instance
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * const payment = P2PKH.fromHash(hash160);
135
+ * const address = payment.address;
136
+ * ```
137
+ */
138
+ static fromHash(hash: Bytes20, network?: Network): P2PKH;
139
+ /**
140
+ * Creates a P2PKH payment from a scriptPubKey.
141
+ *
142
+ * @param output - The scriptPubKey
143
+ * @param network - Network parameters (defaults to mainnet)
144
+ * @returns A new P2PKH payment instance
145
+ */
146
+ static fromOutput(output: Uint8Array, network?: Network): P2PKH;
147
+ /**
148
+ * Converts to a plain P2PKHPayment object for backwards compatibility.
149
+ *
150
+ * @returns A P2PKHPayment object
151
+ */
152
+ toPayment(): P2PKHPayment;
153
+ }
154
+ /**
155
+ * Creates a Pay-to-Public-Key-Hash (P2PKH) payment object.
156
+ *
157
+ * This is the legacy factory function for backwards compatibility.
158
+ * For new code, prefer using the P2PKH class directly.
159
+ *
160
+ * @param a - The payment object containing the necessary data
161
+ * @param opts - Optional payment options
162
+ * @returns The P2PKH payment object
163
+ * @throws {TypeError} If the required data is not provided or if the data is invalid
164
+ *
165
+ * @example
166
+ * ```typescript
167
+ * import { p2pkh } from '@btc-vision/bitcoin';
168
+ *
169
+ * // Create from public key
170
+ * const payment = p2pkh({ pubkey });
171
+ *
172
+ * // Create from address
173
+ * const fromAddr = p2pkh({ address: '1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2' });
174
+ * ```
175
+ */
2
176
  export declare function p2pkh(a: Omit<P2PKHPayment, 'name'>, opts?: PaymentOpts): P2PKHPayment;
177
+ //# sourceMappingURL=p2pkh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p2pkh.d.ts","sourceRoot":"","sources":["../../src/payments/p2pkh.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG1E,OAAO,EAAW,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAEjG,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,KAAK;;IAEd,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAqB;IA4CzC;;;;;;;;;;;;;;;OAeG;gBAEC,MAAM,EAAE;QACJ,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAC9B,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,SAAS,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QACnC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC9B,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAChC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACzC,EACD,IAAI,CAAC,EAAE,WAAW;IA0BtB;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,WAAW,CAAC,KAAK,CAEnC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAMhC;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,GAAG,SAAS,CAM9B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAMlC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,CAMrC;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAM/B;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAM9B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,UAAU,EAAE,GAAG,SAAS,CAMtC;IAID;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK;IAI9D;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK;IAI7D;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK;IAIxD;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK;IAoP/D;;;;OAIG;IACH,SAAS,IAAI,YAAY;CAa5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,CAsBrF"}
@@ -1,2 +1,151 @@
1
- import { P2SHPayment, PaymentOpts } from './types.js';
1
+ import { Network } from '../networks.js';
2
+ import { Bytes20, Script } from '../types.js';
3
+ import { P2SHPayment, PaymentOpts, ScriptRedeem } from './types.js';
4
+ /**
5
+ * Pay-to-Script-Hash (P2SH) payment class.
6
+ *
7
+ * Creates locking scripts of the form:
8
+ * `OP_HASH160 {hash160(redeemScript)} OP_EQUAL`
9
+ *
10
+ * Spending requires: `{redeemScriptSig...} {redeemScript}`
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { P2SH, P2MS } from '@btc-vision/bitcoin';
15
+ *
16
+ * // Wrap a multisig in P2SH
17
+ * const multisig = P2MS.fromPubkeys(2, [pubkey1, pubkey2, pubkey3]);
18
+ * const p2sh = P2SH.fromRedeem({ output: multisig.output });
19
+ * console.log(p2sh.address); // 3... address
20
+ *
21
+ * // Decode an existing output
22
+ * const decoded = P2SH.fromOutput(scriptPubKey);
23
+ * console.log(decoded.hash); // 20-byte script hash
24
+ * ```
25
+ */
26
+ export declare class P2SH {
27
+ #private;
28
+ static readonly NAME: "p2sh";
29
+ /**
30
+ * Creates a new P2SH payment instance.
31
+ *
32
+ * @param params - Payment parameters
33
+ * @param params.address - Base58Check encoded address (3...)
34
+ * @param params.hash - 20-byte script hash
35
+ * @param params.output - The scriptPubKey
36
+ * @param params.input - The scriptSig
37
+ * @param params.redeem - The redeem script information
38
+ * @param params.witness - The witness stack (for wrapped SegWit)
39
+ * @param params.network - Network parameters (defaults to mainnet)
40
+ * @param opts - Payment options
41
+ * @param opts.validate - Whether to validate inputs (default: true)
42
+ *
43
+ * @throws {TypeError} If validation is enabled and data is invalid
44
+ */
45
+ constructor(params: {
46
+ address?: string | undefined;
47
+ hash?: Uint8Array | undefined;
48
+ output?: Uint8Array | undefined;
49
+ input?: Uint8Array | undefined;
50
+ redeem?: ScriptRedeem | undefined;
51
+ witness?: Uint8Array[] | undefined;
52
+ network?: Network | undefined;
53
+ }, opts?: PaymentOpts);
54
+ /**
55
+ * Payment type discriminant.
56
+ */
57
+ get name(): string;
58
+ /**
59
+ * Network parameters.
60
+ */
61
+ get network(): Network;
62
+ /**
63
+ * Base58Check encoded address (3... for mainnet).
64
+ */
65
+ get address(): string | undefined;
66
+ /**
67
+ * 20-byte script hash (HASH160 of redeem script).
68
+ */
69
+ get hash(): Bytes20 | undefined;
70
+ /**
71
+ * The scriptPubKey: `OP_HASH160 {hash} OP_EQUAL`
72
+ */
73
+ get output(): Script | undefined;
74
+ /**
75
+ * The scriptSig: `{redeemScriptSig...} {redeemScript}`
76
+ */
77
+ get input(): Script | undefined;
78
+ /**
79
+ * The redeem script information.
80
+ */
81
+ get redeem(): ScriptRedeem | undefined;
82
+ /**
83
+ * The witness stack (for wrapped SegWit).
84
+ */
85
+ get witness(): Uint8Array[] | undefined;
86
+ /**
87
+ * Creates a P2SH payment from a redeem script.
88
+ *
89
+ * @param redeem - The redeem script information
90
+ * @param network - Network parameters (defaults to mainnet)
91
+ * @returns A new P2SH payment instance
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * const p2sh = P2SH.fromRedeem({ output: redeemScript });
96
+ * ```
97
+ */
98
+ static fromRedeem(redeem: ScriptRedeem, network?: Network): P2SH;
99
+ /**
100
+ * Creates a P2SH payment from a Base58Check address.
101
+ *
102
+ * @param address - Base58Check encoded address
103
+ * @param network - Network parameters (defaults to mainnet)
104
+ * @returns A new P2SH payment instance
105
+ */
106
+ static fromAddress(address: string, network?: Network): P2SH;
107
+ /**
108
+ * Creates a P2SH payment from a 20-byte script hash.
109
+ *
110
+ * @param hash - 20-byte script hash
111
+ * @param network - Network parameters (defaults to mainnet)
112
+ * @returns A new P2SH payment instance
113
+ */
114
+ static fromHash(hash: Bytes20, network?: Network): P2SH;
115
+ /**
116
+ * Creates a P2SH payment from a scriptPubKey.
117
+ *
118
+ * @param output - The scriptPubKey
119
+ * @param network - Network parameters (defaults to mainnet)
120
+ * @returns A new P2SH payment instance
121
+ */
122
+ static fromOutput(output: Uint8Array, network?: Network): P2SH;
123
+ /**
124
+ * Converts to a plain P2SHPayment object for backwards compatibility.
125
+ *
126
+ * @returns A P2SHPayment object
127
+ */
128
+ toPayment(): P2SHPayment;
129
+ }
130
+ /**
131
+ * Creates a Pay-to-Script-Hash (P2SH) payment object.
132
+ *
133
+ * This is the legacy factory function for backwards compatibility.
134
+ * For new code, prefer using the P2SH class directly.
135
+ *
136
+ * @param a - The payment object containing the necessary data
137
+ * @param opts - Optional payment options
138
+ * @returns The P2SH payment object
139
+ * @throws {TypeError} If the required data is not provided or if the data is invalid
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * import { p2sh, p2ms } from '@btc-vision/bitcoin';
144
+ *
145
+ * // Wrap a multisig in P2SH
146
+ * const multisig = p2ms({ m: 2, pubkeys: [pk1, pk2, pk3] });
147
+ * const payment = p2sh({ redeem: multisig });
148
+ * ```
149
+ */
2
150
  export declare function p2sh(a: Omit<P2SHPayment, 'name'>, opts?: PaymentOpts): P2SHPayment;
151
+ //# sourceMappingURL=p2sh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p2sh.d.ts","sourceRoot":"","sources":["../../src/payments/p2sh.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAe,KAAK,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,aAAa,CAAC;AAEjF,OAAO,EAEH,KAAK,WAAW,EAEhB,KAAK,WAAW,EAChB,KAAK,YAAY,EACpB,MAAM,YAAY,CAAC;AAIpB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,IAAI;;IAEb,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAoB;IA0CxC;;;;;;;;;;;;;;;OAeG;gBAEC,MAAM,EAAE;QACJ,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAC9B,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAC/B,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;QAClC,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QACnC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACjC,EACD,IAAI,CAAC,EAAE,WAAW;IA6BtB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAMjB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAMhC;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,GAAG,SAAS,CAM9B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAM/B;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAM9B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,YAAY,GAAG,SAAS,CAMrC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,UAAU,EAAE,GAAG,SAAS,CAMtC;IAID;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAIhE;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5D;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAIvD;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAgR9D;;;;OAIG;IACH,SAAS,IAAI,WAAW;CAY3B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,CAoBlF"}
@@ -1,2 +1,186 @@
1
- import { P2TRPayment, PaymentOpts } from './types.js';
1
+ import { Network } from '../networks.js';
2
+ import { Bytes32, Script, SchnorrSignature, Taptree, XOnlyPublicKey } from '../types.js';
3
+ import { PaymentType, P2TRPayment, PaymentOpts, ScriptRedeem } from './types.js';
4
+ /**
5
+ * Pay-to-Taproot (P2TR) payment class.
6
+ *
7
+ * Creates locking scripts of the form: `OP_1 {x-only pubkey}`
8
+ *
9
+ * Key-path spending witness: `[signature]`
10
+ * Script-path spending witness: `[script inputs..., script, control block]`
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { P2TR } from '@btc-vision/bitcoin';
15
+ *
16
+ * // Key-path only (no scripts)
17
+ * const keyOnly = P2TR.fromInternalPubkey(internalPubkey);
18
+ * console.log(keyOnly.address); // bc1p... address
19
+ *
20
+ * // With script tree
21
+ * const withScripts = P2TR.fromInternalPubkey(internalPubkey, scriptTree);
22
+ *
23
+ * // Decode an existing output
24
+ * const decoded = P2TR.fromOutput(scriptPubKey);
25
+ * console.log(decoded.pubkey); // 32-byte x-only pubkey
26
+ * ```
27
+ */
28
+ export declare class P2TR {
29
+ #private;
30
+ static readonly NAME: "p2tr";
31
+ /**
32
+ * Creates a new P2TR payment instance.
33
+ *
34
+ * @param params - Payment parameters
35
+ * @param params.address - Bech32m encoded address (bc1p...)
36
+ * @param params.pubkey - x-only output pubkey (32 bytes)
37
+ * @param params.internalPubkey - x-only internal pubkey (32 bytes)
38
+ * @param params.hash - Merkle root (32 bytes, or empty for key-path only)
39
+ * @param params.scriptTree - Full script tree definition
40
+ * @param params.signature - Schnorr signature (for key-path spending)
41
+ * @param params.output - The scriptPubKey
42
+ * @param params.witness - The witness stack
43
+ * @param params.redeem - Redeem script for script-path spending
44
+ * @param params.redeemVersion - Leaf version (defaults to LEAF_VERSION_TAPSCRIPT)
45
+ * @param params.network - Network parameters (defaults to mainnet)
46
+ * @param opts - Payment options
47
+ * @param opts.validate - Whether to validate inputs (default: true)
48
+ *
49
+ * @throws {TypeError} If validation is enabled and data is invalid
50
+ */
51
+ constructor(params: {
52
+ address?: string | undefined;
53
+ pubkey?: Uint8Array | undefined;
54
+ internalPubkey?: Uint8Array | undefined;
55
+ hash?: Uint8Array | undefined;
56
+ scriptTree?: Taptree | undefined;
57
+ signature?: Uint8Array | undefined;
58
+ output?: Uint8Array | undefined;
59
+ witness?: Uint8Array[] | undefined;
60
+ redeem?: ScriptRedeem | undefined;
61
+ redeemVersion?: number | undefined;
62
+ network?: Network | undefined;
63
+ }, opts?: PaymentOpts);
64
+ /**
65
+ * Payment type discriminant.
66
+ */
67
+ get name(): typeof PaymentType.P2TR;
68
+ /**
69
+ * Network parameters.
70
+ */
71
+ get network(): Network;
72
+ /**
73
+ * Bech32m encoded address (bc1p... for mainnet).
74
+ */
75
+ get address(): string | undefined;
76
+ /**
77
+ * x-only output pubkey (32 bytes).
78
+ * This is the tweaked pubkey that appears in the output.
79
+ */
80
+ get pubkey(): XOnlyPublicKey | undefined;
81
+ /**
82
+ * x-only internal pubkey (32 bytes).
83
+ * This is the untweaked pubkey before adding the merkle root tweak.
84
+ */
85
+ get internalPubkey(): XOnlyPublicKey | undefined;
86
+ /**
87
+ * Merkle root hash (32 bytes).
88
+ * Present when a script tree is defined.
89
+ */
90
+ get hash(): Bytes32 | undefined;
91
+ /**
92
+ * Schnorr signature (for key-path spending).
93
+ */
94
+ get signature(): SchnorrSignature | undefined;
95
+ /**
96
+ * The scriptPubKey: `OP_1 {32-byte x-only pubkey}`
97
+ */
98
+ get output(): Script | undefined;
99
+ /**
100
+ * Redeem script information (for script-path spending).
101
+ */
102
+ get redeem(): ScriptRedeem | undefined;
103
+ /**
104
+ * Leaf version (defaults to LEAF_VERSION_TAPSCRIPT = 0xc0).
105
+ */
106
+ get redeemVersion(): number;
107
+ /**
108
+ * Witness stack.
109
+ * Key-path: `[signature]`
110
+ * Script-path: `[script inputs..., script, control block]`
111
+ */
112
+ get witness(): Uint8Array[] | undefined;
113
+ /**
114
+ * Creates a P2TR payment from an internal pubkey (key-path only).
115
+ *
116
+ * @param internalPubkey - x-only internal pubkey (32 bytes)
117
+ * @param scriptTree - Optional script tree
118
+ * @param network - Network parameters (defaults to mainnet)
119
+ * @returns A new P2TR payment instance
120
+ *
121
+ * @example
122
+ * ```typescript
123
+ * // Key-path only
124
+ * const p2tr = P2TR.fromInternalPubkey(internalPubkey);
125
+ *
126
+ * // With script tree
127
+ * const withScripts = P2TR.fromInternalPubkey(internalPubkey, scriptTree);
128
+ * ```
129
+ */
130
+ static fromInternalPubkey(internalPubkey: XOnlyPublicKey, scriptTree?: Taptree, network?: Network): P2TR;
131
+ /**
132
+ * Creates a P2TR payment from a bech32m address.
133
+ *
134
+ * @param address - Bech32m encoded address (bc1p...)
135
+ * @param network - Network parameters (defaults to mainnet)
136
+ * @returns A new P2TR payment instance
137
+ */
138
+ static fromAddress(address: string, network?: Network): P2TR;
139
+ /**
140
+ * Creates a P2TR payment from a scriptPubKey.
141
+ *
142
+ * @param output - The scriptPubKey
143
+ * @param network - Network parameters (defaults to mainnet)
144
+ * @returns A new P2TR payment instance
145
+ */
146
+ static fromOutput(output: Uint8Array, network?: Network): P2TR;
147
+ /**
148
+ * Creates a P2TR payment from a signature (for key-path spending).
149
+ *
150
+ * @param signature - Schnorr signature
151
+ * @param internalPubkey - x-only internal pubkey
152
+ * @param network - Network parameters (defaults to mainnet)
153
+ * @returns A new P2TR payment instance
154
+ */
155
+ static fromSignature(signature: SchnorrSignature, internalPubkey?: XOnlyPublicKey, network?: Network): P2TR;
156
+ /**
157
+ * Converts to a plain P2TRPayment object for backwards compatibility.
158
+ *
159
+ * @returns A P2TRPayment object
160
+ */
161
+ toPayment(): P2TRPayment;
162
+ }
163
+ /**
164
+ * Creates a Pay-to-Taproot (P2TR) payment object.
165
+ *
166
+ * This is the legacy factory function for backwards compatibility.
167
+ * For new code, prefer using the P2TR class directly.
168
+ *
169
+ * @param a - The payment object containing the necessary data
170
+ * @param opts - Optional payment options
171
+ * @returns The P2TR payment object
172
+ * @throws {TypeError} If the required data is not provided or if the data is invalid
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * import { p2tr } from '@btc-vision/bitcoin';
177
+ *
178
+ * // Key-path only
179
+ * const payment = p2tr({ internalPubkey });
180
+ *
181
+ * // With script tree
182
+ * const withScripts = p2tr({ internalPubkey, scriptTree });
183
+ * ```
184
+ */
2
185
  export declare function p2tr(a: Omit<P2TRPayment, 'name'>, opts?: PaymentOpts): P2TRPayment;
186
+ //# sourceMappingURL=p2tr.d.ts.map