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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/HOW_TO_WRITE_GOOD_CODE.md +2436 -0
  2. package/benchmark/psbt-2000-inputs.bench.ts +178 -0
  3. package/benchmark/signing.bench.ts +147 -0
  4. package/browser/address.d.ts +56 -9
  5. package/browser/address.d.ts.map +1 -0
  6. package/browser/bech32utils.d.ts +9 -1
  7. package/browser/bech32utils.d.ts.map +1 -0
  8. package/browser/bip66.d.ts +11 -6
  9. package/browser/bip66.d.ts.map +1 -0
  10. package/browser/block.d.ts +117 -11
  11. package/browser/block.d.ts.map +1 -0
  12. package/browser/branded.d.ts +20 -0
  13. package/browser/branded.d.ts.map +1 -0
  14. package/browser/crypto/crypto.d.ts +1 -0
  15. package/browser/crypto/crypto.d.ts.map +1 -0
  16. package/browser/crypto.d.ts +46 -7
  17. package/browser/crypto.d.ts.map +1 -0
  18. package/browser/ecc/context.d.ts +129 -0
  19. package/browser/ecc/context.d.ts.map +1 -0
  20. package/browser/ecc/index.d.ts +11 -0
  21. package/browser/ecc/index.d.ts.map +1 -0
  22. package/browser/ecc/types.d.ts +128 -0
  23. package/browser/ecc/types.d.ts.map +1 -0
  24. package/browser/ecpair.d.ts +99 -0
  25. package/browser/errors.d.ts +124 -0
  26. package/browser/errors.d.ts.map +1 -0
  27. package/browser/index.d.ts +32 -5
  28. package/browser/index.d.ts.map +1 -0
  29. package/browser/index.js +12482 -101
  30. package/browser/io/BinaryReader.d.ts +276 -0
  31. package/browser/io/BinaryReader.d.ts.map +1 -0
  32. package/browser/io/BinaryWriter.d.ts +391 -0
  33. package/browser/io/BinaryWriter.d.ts.map +1 -0
  34. package/browser/io/MemoryPool.d.ts +220 -0
  35. package/browser/io/MemoryPool.d.ts.map +1 -0
  36. package/browser/io/base64.d.ts +13 -0
  37. package/browser/io/base64.d.ts.map +1 -0
  38. package/browser/io/hex.d.ts +67 -0
  39. package/browser/io/hex.d.ts.map +1 -0
  40. package/browser/io/index.d.ts +17 -0
  41. package/browser/io/index.d.ts.map +1 -0
  42. package/browser/io/utils.d.ts +199 -0
  43. package/browser/io/utils.d.ts.map +1 -0
  44. package/browser/merkle.d.ts +10 -1
  45. package/browser/merkle.d.ts.map +1 -0
  46. package/browser/networks.d.ts +70 -9
  47. package/browser/networks.d.ts.map +1 -0
  48. package/browser/opcodes.d.ts +1 -0
  49. package/browser/opcodes.d.ts.map +1 -0
  50. package/browser/payments/bip341.d.ts +35 -9
  51. package/browser/payments/bip341.d.ts.map +1 -0
  52. package/browser/payments/embed.d.ts +112 -1
  53. package/browser/payments/embed.d.ts.map +1 -0
  54. package/browser/payments/index.d.ts +17 -10
  55. package/browser/payments/index.d.ts.map +1 -0
  56. package/browser/payments/p2ms.d.ts +150 -0
  57. package/browser/payments/p2ms.d.ts.map +1 -0
  58. package/browser/payments/p2op.d.ts +150 -24
  59. package/browser/payments/p2op.d.ts.map +1 -0
  60. package/browser/payments/p2pk.d.ts +154 -1
  61. package/browser/payments/p2pk.d.ts.map +1 -0
  62. package/browser/payments/p2pkh.d.ts +176 -1
  63. package/browser/payments/p2pkh.d.ts.map +1 -0
  64. package/browser/payments/p2sh.d.ts +150 -1
  65. package/browser/payments/p2sh.d.ts.map +1 -0
  66. package/browser/payments/p2tr.d.ts +185 -1
  67. package/browser/payments/p2tr.d.ts.map +1 -0
  68. package/browser/payments/p2wpkh.d.ts +161 -1
  69. package/browser/payments/p2wpkh.d.ts.map +1 -0
  70. package/browser/payments/p2wsh.d.ts +146 -1
  71. package/browser/payments/p2wsh.d.ts.map +1 -0
  72. package/browser/payments/types.d.ts +94 -64
  73. package/browser/payments/types.d.ts.map +1 -0
  74. package/browser/psbt/bip371.d.ts +34 -8
  75. package/browser/psbt/bip371.d.ts.map +1 -0
  76. package/browser/psbt/psbtutils.d.ts +56 -16
  77. package/browser/psbt/psbtutils.d.ts.map +1 -0
  78. package/browser/psbt/types.d.ts +245 -0
  79. package/browser/psbt/types.d.ts.map +1 -0
  80. package/browser/psbt/utils.d.ts +64 -0
  81. package/browser/psbt/utils.d.ts.map +1 -0
  82. package/browser/psbt/validation.d.ts +84 -0
  83. package/browser/psbt/validation.d.ts.map +1 -0
  84. package/browser/psbt.d.ts +82 -118
  85. package/browser/psbt.d.ts.map +1 -0
  86. package/browser/pubkey.d.ts +27 -6
  87. package/browser/pubkey.d.ts.map +1 -0
  88. package/browser/push_data.d.ts +24 -2
  89. package/browser/push_data.d.ts.map +1 -0
  90. package/browser/script.d.ts +33 -8
  91. package/browser/script.d.ts.map +1 -0
  92. package/browser/script_number.d.ts +17 -0
  93. package/browser/script_number.d.ts.map +1 -0
  94. package/browser/script_signature.d.ts +23 -5
  95. package/browser/script_signature.d.ts.map +1 -0
  96. package/browser/transaction.d.ts +160 -18
  97. package/browser/transaction.d.ts.map +1 -0
  98. package/browser/types.d.ts +36 -38
  99. package/browser/types.d.ts.map +1 -0
  100. package/browser/workers/WorkerSigningPool.d.ts +143 -0
  101. package/browser/workers/WorkerSigningPool.d.ts.map +1 -0
  102. package/browser/workers/WorkerSigningPool.node.d.ts +116 -0
  103. package/browser/workers/WorkerSigningPool.node.d.ts.map +1 -0
  104. package/browser/workers/ecc-bundle.d.ts +25 -0
  105. package/browser/workers/ecc-bundle.d.ts.map +1 -0
  106. package/browser/workers/index.d.ts +91 -0
  107. package/browser/workers/index.d.ts.map +1 -0
  108. package/browser/workers/psbt-parallel.d.ts +88 -0
  109. package/browser/workers/psbt-parallel.d.ts.map +1 -0
  110. package/browser/workers/signing-worker.d.ts +37 -0
  111. package/browser/workers/signing-worker.d.ts.map +1 -0
  112. package/browser/workers/types.d.ts +365 -0
  113. package/browser/workers/types.d.ts.map +1 -0
  114. package/build/address.d.ts +57 -10
  115. package/build/address.d.ts.map +1 -0
  116. package/build/address.js +80 -24
  117. package/build/address.js.map +1 -0
  118. package/build/bech32utils.d.ts +9 -1
  119. package/build/bech32utils.d.ts.map +1 -0
  120. package/build/bech32utils.js +10 -2
  121. package/build/bech32utils.js.map +1 -0
  122. package/build/bip66.d.ts +11 -6
  123. package/build/bip66.d.ts.map +1 -0
  124. package/build/bip66.js +32 -3
  125. package/build/bip66.js.map +1 -0
  126. package/build/block.d.ts +117 -11
  127. package/build/block.d.ts.map +1 -0
  128. package/build/block.js +204 -72
  129. package/build/block.js.map +1 -0
  130. package/build/branded.d.ts +20 -0
  131. package/build/branded.d.ts.map +1 -0
  132. package/build/branded.js +7 -0
  133. package/build/branded.js.map +1 -0
  134. package/build/crypto/crypto.d.ts +1 -0
  135. package/build/crypto/crypto.d.ts.map +1 -0
  136. package/build/crypto/crypto.js +1 -0
  137. package/build/crypto/crypto.js.map +1 -0
  138. package/build/crypto.d.ts +46 -7
  139. package/build/crypto.d.ts.map +1 -0
  140. package/build/crypto.js +65 -20
  141. package/build/crypto.js.map +1 -0
  142. package/build/ecc/context.d.ts +135 -0
  143. package/build/ecc/context.d.ts.map +1 -0
  144. package/build/ecc/context.js +232 -0
  145. package/build/ecc/context.js.map +1 -0
  146. package/build/ecc/index.d.ts +11 -0
  147. package/build/ecc/index.d.ts.map +1 -0
  148. package/build/ecc/index.js +11 -0
  149. package/build/ecc/index.js.map +1 -0
  150. package/build/ecc/types.d.ts +134 -0
  151. package/build/ecc/types.d.ts.map +1 -0
  152. package/build/ecc/types.js +8 -0
  153. package/build/ecc/types.js.map +1 -0
  154. package/build/errors.d.ts +124 -0
  155. package/build/errors.d.ts.map +1 -0
  156. package/build/errors.js +155 -0
  157. package/build/errors.js.map +1 -0
  158. package/build/index.d.ts +32 -5
  159. package/build/index.d.ts.map +1 -0
  160. package/build/index.js +26 -3
  161. package/build/index.js.map +1 -0
  162. package/build/io/BinaryReader.d.ts +276 -0
  163. package/build/io/BinaryReader.d.ts.map +1 -0
  164. package/build/io/BinaryReader.js +425 -0
  165. package/build/io/BinaryReader.js.map +1 -0
  166. package/build/io/BinaryWriter.d.ts +391 -0
  167. package/build/io/BinaryWriter.d.ts.map +1 -0
  168. package/build/io/BinaryWriter.js +611 -0
  169. package/build/io/BinaryWriter.js.map +1 -0
  170. package/build/io/MemoryPool.d.ts +220 -0
  171. package/build/io/MemoryPool.d.ts.map +1 -0
  172. package/build/io/MemoryPool.js +309 -0
  173. package/build/io/MemoryPool.js.map +1 -0
  174. package/build/io/base64.d.ts +13 -0
  175. package/build/io/base64.d.ts.map +1 -0
  176. package/build/io/base64.js +20 -0
  177. package/build/io/base64.js.map +1 -0
  178. package/build/io/hex.d.ts +67 -0
  179. package/build/io/hex.d.ts.map +1 -0
  180. package/build/io/hex.js +138 -0
  181. package/build/io/hex.js.map +1 -0
  182. package/build/io/index.d.ts +17 -0
  183. package/build/io/index.d.ts.map +1 -0
  184. package/build/io/index.js +23 -0
  185. package/build/io/index.js.map +1 -0
  186. package/build/io/utils.d.ts +199 -0
  187. package/build/io/utils.d.ts.map +1 -0
  188. package/build/io/utils.js +271 -0
  189. package/build/io/utils.js.map +1 -0
  190. package/build/merkle.d.ts +10 -1
  191. package/build/merkle.d.ts.map +1 -0
  192. package/build/merkle.js +12 -1
  193. package/build/merkle.js.map +1 -0
  194. package/build/networks.d.ts +70 -9
  195. package/build/networks.d.ts.map +1 -0
  196. package/build/networks.js +90 -4
  197. package/build/networks.js.map +1 -0
  198. package/build/opcodes.d.ts +1 -0
  199. package/build/opcodes.d.ts.map +1 -0
  200. package/build/opcodes.js +1 -0
  201. package/build/opcodes.js.map +1 -0
  202. package/build/payments/bip341.d.ts +36 -9
  203. package/build/payments/bip341.d.ts.map +1 -0
  204. package/build/payments/bip341.js +35 -15
  205. package/build/payments/bip341.js.map +1 -0
  206. package/build/payments/embed.d.ts +120 -1
  207. package/build/payments/embed.d.ts.map +1 -0
  208. package/build/payments/embed.js +215 -34
  209. package/build/payments/embed.js.map +1 -0
  210. package/build/payments/index.d.ts +17 -10
  211. package/build/payments/index.d.ts.map +1 -0
  212. package/build/payments/index.js +20 -10
  213. package/build/payments/index.js.map +1 -0
  214. package/build/payments/p2ms.d.ts +159 -1
  215. package/build/payments/p2ms.d.ts.map +1 -0
  216. package/build/payments/p2ms.js +427 -108
  217. package/build/payments/p2ms.js.map +1 -0
  218. package/build/payments/p2op.d.ts +158 -24
  219. package/build/payments/p2op.d.ts.map +1 -0
  220. package/build/payments/p2op.js +379 -93
  221. package/build/payments/p2op.js.map +1 -0
  222. package/build/payments/p2pk.d.ts +162 -1
  223. package/build/payments/p2pk.d.ts.map +1 -0
  224. package/build/payments/p2pk.js +327 -58
  225. package/build/payments/p2pk.js.map +1 -0
  226. package/build/payments/p2pkh.d.ts +185 -1
  227. package/build/payments/p2pkh.d.ts.map +1 -0
  228. package/build/payments/p2pkh.js +467 -114
  229. package/build/payments/p2pkh.js.map +1 -0
  230. package/build/payments/p2sh.d.ts +159 -1
  231. package/build/payments/p2sh.d.ts.map +1 -0
  232. package/build/payments/p2sh.js +500 -152
  233. package/build/payments/p2sh.js.map +1 -0
  234. package/build/payments/p2tr.d.ts +193 -1
  235. package/build/payments/p2tr.d.ts.map +1 -0
  236. package/build/payments/p2tr.js +592 -174
  237. package/build/payments/p2tr.js.map +1 -0
  238. package/build/payments/p2wpkh.d.ts +170 -1
  239. package/build/payments/p2wpkh.d.ts.map +1 -0
  240. package/build/payments/p2wpkh.js +429 -104
  241. package/build/payments/p2wpkh.js.map +1 -0
  242. package/build/payments/p2wsh.d.ts +155 -1
  243. package/build/payments/p2wsh.d.ts.map +1 -0
  244. package/build/payments/p2wsh.js +466 -144
  245. package/build/payments/p2wsh.js.map +1 -0
  246. package/build/payments/types.d.ts +98 -64
  247. package/build/payments/types.d.ts.map +1 -0
  248. package/build/payments/types.js +17 -13
  249. package/build/payments/types.js.map +1 -0
  250. package/build/psbt/bip371.d.ts +35 -9
  251. package/build/psbt/bip371.d.ts.map +1 -0
  252. package/build/psbt/bip371.js +113 -28
  253. package/build/psbt/bip371.js.map +1 -0
  254. package/build/psbt/psbtutils.d.ts +56 -16
  255. package/build/psbt/psbtutils.d.ts.map +1 -0
  256. package/build/psbt/psbtutils.js +71 -16
  257. package/build/psbt/psbtutils.js.map +1 -0
  258. package/build/psbt/types.d.ts +249 -0
  259. package/build/psbt/types.d.ts.map +1 -0
  260. package/build/psbt/types.js +6 -0
  261. package/build/psbt/types.js.map +1 -0
  262. package/build/psbt/utils.d.ts +68 -0
  263. package/build/psbt/utils.d.ts.map +1 -0
  264. package/build/psbt/utils.js +171 -0
  265. package/build/psbt/utils.js.map +1 -0
  266. package/build/psbt/validation.d.ts +88 -0
  267. package/build/psbt/validation.d.ts.map +1 -0
  268. package/build/psbt/validation.js +149 -0
  269. package/build/psbt/validation.js.map +1 -0
  270. package/build/psbt.d.ts +84 -120
  271. package/build/psbt.d.ts.map +1 -0
  272. package/build/psbt.js +411 -412
  273. package/build/psbt.js.map +1 -0
  274. package/build/pubkey.d.ts +27 -6
  275. package/build/pubkey.d.ts.map +1 -0
  276. package/build/pubkey.js +36 -12
  277. package/build/pubkey.js.map +1 -0
  278. package/build/push_data.d.ts +24 -2
  279. package/build/push_data.d.ts.map +1 -0
  280. package/build/push_data.js +44 -12
  281. package/build/push_data.js.map +1 -0
  282. package/build/script.d.ts +33 -8
  283. package/build/script.d.ts.map +1 -0
  284. package/build/script.js +100 -36
  285. package/build/script.js.map +1 -0
  286. package/build/script_number.d.ts +17 -0
  287. package/build/script_number.d.ts.map +1 -0
  288. package/build/script_number.js +19 -0
  289. package/build/script_number.js.map +1 -0
  290. package/build/script_signature.d.ts +23 -5
  291. package/build/script_signature.d.ts.map +1 -0
  292. package/build/script_signature.js +48 -15
  293. package/build/script_signature.js.map +1 -0
  294. package/build/transaction.d.ts +160 -18
  295. package/build/transaction.d.ts.map +1 -0
  296. package/build/transaction.js +443 -176
  297. package/build/transaction.js.map +1 -0
  298. package/build/tsconfig.build.tsbuildinfo +1 -0
  299. package/build/types.d.ts +36 -38
  300. package/build/types.d.ts.map +1 -0
  301. package/build/types.js +175 -57
  302. package/build/types.js.map +1 -0
  303. package/build/workers/WorkerSigningPool.d.ts +174 -0
  304. package/build/workers/WorkerSigningPool.d.ts.map +1 -0
  305. package/build/workers/WorkerSigningPool.js +553 -0
  306. package/build/workers/WorkerSigningPool.js.map +1 -0
  307. package/build/workers/WorkerSigningPool.node.d.ts +124 -0
  308. package/build/workers/WorkerSigningPool.node.d.ts.map +1 -0
  309. package/build/workers/WorkerSigningPool.node.js +753 -0
  310. package/build/workers/WorkerSigningPool.node.js.map +1 -0
  311. package/build/workers/ecc-bundle.d.ts +25 -0
  312. package/build/workers/ecc-bundle.d.ts.map +1 -0
  313. package/build/workers/ecc-bundle.js +25 -0
  314. package/build/workers/ecc-bundle.js.map +1 -0
  315. package/build/workers/index.d.ts +91 -0
  316. package/build/workers/index.d.ts.map +1 -0
  317. package/build/workers/index.js +114 -0
  318. package/build/workers/index.js.map +1 -0
  319. package/build/workers/psbt-parallel.d.ts +117 -0
  320. package/build/workers/psbt-parallel.d.ts.map +1 -0
  321. package/build/workers/psbt-parallel.js +233 -0
  322. package/build/workers/psbt-parallel.js.map +1 -0
  323. package/build/workers/signing-worker.d.ts +37 -0
  324. package/build/workers/signing-worker.d.ts.map +1 -0
  325. package/build/workers/signing-worker.js +350 -0
  326. package/build/workers/signing-worker.js.map +1 -0
  327. package/build/workers/types.d.ts +365 -0
  328. package/build/workers/types.d.ts.map +1 -0
  329. package/build/workers/types.js +60 -0
  330. package/build/workers/types.js.map +1 -0
  331. package/package.json +66 -8
  332. package/scripts/bundle-ecc.ts +111 -0
  333. package/src/address.ts +81 -44
  334. package/src/bech32utils.ts +3 -3
  335. package/src/bip66.ts +34 -24
  336. package/src/block.ts +196 -84
  337. package/src/branded.ts +18 -0
  338. package/src/crypto.ts +64 -26
  339. package/src/ecc/context.ts +277 -0
  340. package/src/ecc/index.ts +14 -0
  341. package/src/ecc/types.ts +154 -0
  342. package/src/ecpair.d.ts +99 -0
  343. package/src/errors.ts +163 -0
  344. package/src/index.ts +113 -9
  345. package/src/io/BinaryReader.ts +461 -0
  346. package/src/io/BinaryWriter.ts +696 -0
  347. package/src/io/MemoryPool.ts +343 -0
  348. package/src/io/base64.ts +20 -0
  349. package/src/io/hex.ts +155 -0
  350. package/src/io/index.ts +41 -0
  351. package/src/io/utils.ts +283 -0
  352. package/src/merkle.ts +14 -9
  353. package/src/networks.ts +9 -9
  354. package/src/payments/bip341.ts +34 -33
  355. package/src/payments/embed.ts +244 -41
  356. package/src/payments/index.ts +12 -10
  357. package/src/payments/p2ms.ts +490 -118
  358. package/src/payments/p2op.ts +431 -133
  359. package/src/payments/p2pk.ts +370 -72
  360. package/src/payments/p2pkh.ts +524 -130
  361. package/src/payments/p2sh.ts +572 -172
  362. package/src/payments/p2tr.ts +686 -194
  363. package/src/payments/p2wpkh.ts +484 -107
  364. package/src/payments/p2wsh.ts +526 -164
  365. package/src/payments/types.ts +80 -66
  366. package/src/psbt/bip371.ts +68 -51
  367. package/src/psbt/psbtutils.ts +39 -40
  368. package/src/psbt/types.ts +331 -0
  369. package/src/psbt/utils.ts +188 -0
  370. package/src/psbt/validation.ts +192 -0
  371. package/src/psbt.ts +566 -809
  372. package/src/pubkey.ts +22 -23
  373. package/src/push_data.ts +18 -16
  374. package/src/script.ts +82 -64
  375. package/src/script_number.ts +6 -6
  376. package/src/script_signature.ts +33 -36
  377. package/src/transaction.ts +458 -238
  378. package/src/types.ts +231 -100
  379. package/src/workers/WorkerSigningPool.node.ts +887 -0
  380. package/src/workers/WorkerSigningPool.ts +670 -0
  381. package/src/workers/ecc-bundle.ts +26 -0
  382. package/src/workers/index.ts +165 -0
  383. package/src/workers/psbt-parallel.ts +332 -0
  384. package/src/workers/signing-worker.ts +353 -0
  385. package/src/workers/types.ts +413 -0
  386. package/test/address.spec.ts +9 -6
  387. package/test/bitcoin.core.spec.ts +16 -17
  388. package/test/block.spec.ts +8 -7
  389. package/test/bufferutils.spec.ts +228 -214
  390. package/test/crypto.spec.ts +19 -11
  391. package/test/fixtures/p2pk.json +0 -8
  392. package/test/fixtures/p2pkh.json +1 -1
  393. package/test/fixtures/p2sh.json +1 -1
  394. package/test/fixtures/script.json +1 -1
  395. package/test/fixtures/transaction.json +2 -2
  396. package/test/integration/_regtest.ts +25 -0
  397. package/test/integration/addresses.spec.ts +4 -3
  398. package/test/integration/bip32.spec.ts +2 -1
  399. package/test/integration/blocks.spec.ts +1 -1
  400. package/test/integration/cltv.spec.ts +18 -16
  401. package/test/integration/csv.spec.ts +37 -64
  402. package/test/integration/payments.spec.ts +5 -3
  403. package/test/integration/taproot.spec.ts +76 -83
  404. package/test/integration/transactions.spec.ts +38 -35
  405. package/test/payments.spec.ts +35 -13
  406. package/test/payments.utils.ts +17 -16
  407. package/test/psbt.spec.ts +111 -100
  408. package/test/script.spec.ts +11 -10
  409. package/test/script_signature.spec.ts +9 -11
  410. package/test/taproot-cache.spec.ts +694 -0
  411. package/test/transaction.spec.ts +32 -40
  412. package/test/types.spec.ts +74 -29
  413. package/test/workers-pool.spec.ts +963 -0
  414. package/test/workers-signing.spec.ts +635 -0
  415. package/test/workers.spec.ts +1390 -0
  416. package/tsconfig.base.json +34 -18
  417. package/tsconfig.browser.json +15 -0
  418. package/tsconfig.build.json +5 -0
  419. package/tsconfig.json +5 -14
  420. package/vite.config.browser.ts +3 -42
  421. package/vitest.config.integration.ts +2 -0
  422. package/browser/bufferutils.d.ts +0 -34
  423. package/browser/chunks/crypto-BhCpKpek.js +0 -2033
  424. package/browser/chunks/payments-B1wlSccx.js +0 -1089
  425. package/browser/chunks/psbt-BCNk7JUx.js +0 -4055
  426. package/browser/chunks/script-DyPItFEl.js +0 -318
  427. package/browser/chunks/transaction-C_UbhMGn.js +0 -432
  428. package/browser/chunks/utils-DNZi-T5W.js +0 -761
  429. package/browser/ecc_lib.d.ts +0 -3
  430. package/browser/hooks/AdvancedSignatureManager.d.ts +0 -16
  431. package/browser/hooks/HookedSigner.d.ts +0 -4
  432. package/browser/hooks/SignatureManager.d.ts +0 -13
  433. package/browser/payments/lazy.d.ts +0 -2
  434. package/browser/typeforce.d.ts +0 -38
  435. package/build/bufferutils.d.ts +0 -34
  436. package/build/bufferutils.js +0 -141
  437. package/build/ecc_lib.d.ts +0 -3
  438. package/build/ecc_lib.js +0 -61
  439. package/build/hooks/AdvancedSignatureManager.d.ts +0 -16
  440. package/build/hooks/AdvancedSignatureManager.js +0 -52
  441. package/build/hooks/HookedSigner.d.ts +0 -4
  442. package/build/hooks/HookedSigner.js +0 -64
  443. package/build/hooks/SignatureManager.d.ts +0 -13
  444. package/build/hooks/SignatureManager.js +0 -45
  445. package/build/payments/lazy.d.ts +0 -2
  446. package/build/payments/lazy.js +0 -28
  447. package/build/tsconfig.tsbuildinfo +0 -1
  448. package/src/bufferutils.ts +0 -188
  449. package/src/ecc_lib.ts +0 -94
  450. package/src/hooks/AdvancedSignatureManager.ts +0 -104
  451. package/src/hooks/HookedSigner.ts +0 -108
  452. package/src/hooks/SignatureManager.ts +0 -84
  453. package/src/payments/lazy.ts +0 -28
  454. package/src/typeforce.d.ts +0 -38
  455. package/tsconfig.webpack.json +0 -18
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p2wsh.js","sourceRoot":"","sources":["../../src/payments/p2wsh.ts"],"names":[],"mappings":"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"}
@@ -1,93 +1,127 @@
1
+ /**
2
+ * Payment types and interfaces
3
+ * @packageDocumentation
4
+ */
1
5
  import type { Network } from '../networks.js';
2
- import type { Taptree } from '../types.js';
3
- export declare enum PaymentType {
4
- P2PK = "p2pk",
5
- P2PKH = "p2pkh",
6
- P2SH = "p2sh",
7
- P2MS = "p2ms",
8
- P2WPKH = "p2wpkh",
9
- P2WSH = "p2wsh",
10
- P2TR = "p2tr",
11
- P2OP = "p2op",
12
- Embed = "embed",
13
- ScriptRedeem = "scriptRedeem"
14
- }
6
+ import type { Bytes20, Bytes32, PublicKey, Script, Signature, SchnorrSignature, Taptree, XOnlyPublicKey } from '../types.js';
7
+ export declare const PaymentType: {
8
+ readonly P2PK: "p2pk";
9
+ readonly P2PKH: "p2pkh";
10
+ readonly P2SH: "p2sh";
11
+ readonly P2MS: "p2ms";
12
+ readonly P2WPKH: "p2wpkh";
13
+ readonly P2WSH: "p2wsh";
14
+ readonly P2TR: "p2tr";
15
+ readonly P2OP: "p2op";
16
+ readonly Embed: "embed";
17
+ readonly ScriptRedeem: "scriptRedeem";
18
+ };
19
+ export type PaymentType = (typeof PaymentType)[keyof typeof PaymentType];
15
20
  export interface BasePayment {
16
- name?: PaymentType;
17
- network?: Network;
18
- output?: Buffer;
19
- input?: Buffer;
20
- address?: string;
21
- witness?: Buffer[];
22
- redeem?: ScriptRedeem;
23
- useHybrid?: boolean;
24
- useUncompressed?: boolean;
21
+ /** Convenience label, also the discriminant for the union. Can be dynamic for nested types. */
22
+ readonly name?: string | undefined;
23
+ /** Network parameters (mainnet if omitted). */
24
+ readonly network?: Network | undefined;
25
+ /** Fully-assembled scriptPubKey (if already known). */
26
+ readonly output?: Script | undefined;
27
+ /** Raw scriptSig (legacy script types only). */
28
+ readonly input?: Script | undefined;
29
+ /** Human-readable address (if already known). */
30
+ readonly address?: string | undefined;
31
+ /** Segwit stack (empty for legacy). */
32
+ readonly witness?: Uint8Array[] | undefined;
33
+ /** Script template for P2SH, P2WSH, P2TR, etc. */
34
+ readonly redeem?: ScriptRedeem | undefined;
35
+ /** Non-standard options used by some wallets. */
36
+ readonly useHybrid?: boolean | undefined;
37
+ readonly useUncompressed?: boolean | undefined;
25
38
  }
39
+ /** Helper used by redeeming script-template outputs (P2SH, P2WSH). */
26
40
  export interface ScriptRedeem extends BasePayment {
27
- output?: Buffer;
28
- redeemVersion?: number;
29
- network?: Network;
41
+ readonly output?: Script | undefined;
42
+ readonly redeemVersion?: number | undefined;
43
+ readonly network?: Network | undefined;
30
44
  }
31
45
  export interface P2PKPayment extends BasePayment {
32
- name: PaymentType.P2PK;
33
- pubkey?: Buffer;
34
- signature?: Buffer;
46
+ readonly name: typeof PaymentType.P2PK;
47
+ readonly pubkey?: PublicKey | undefined;
48
+ /** DER-encoded sig – empty until signed. */
49
+ readonly signature?: Signature | undefined;
35
50
  }
36
51
  export interface P2PKHPayment extends BasePayment {
37
- name: PaymentType.P2PKH;
38
- hash?: Buffer;
39
- pubkey?: Buffer;
40
- signature?: Buffer;
52
+ readonly name: typeof PaymentType.P2PKH;
53
+ /** RIPEMD-160(SHA-256(pubkey)) – 20 bytes. */
54
+ readonly hash?: Bytes20 | undefined;
55
+ readonly pubkey?: PublicKey | undefined;
56
+ readonly signature?: Signature | undefined;
41
57
  }
42
58
  export interface P2SHPayment extends BasePayment {
43
- name: PaymentType.P2SH;
44
- hash?: Buffer;
45
- signatures?: Buffer[];
59
+ /** Dynamic name like 'p2sh' or 'p2sh-p2wpkh' for nested types */
60
+ readonly name: string;
61
+ /** Hash160 of a redeem script. */
62
+ readonly hash?: Bytes20 | undefined;
63
+ /** The entire signature stack when spending a P2SH (non-segwit). */
64
+ readonly signatures?: Uint8Array[] | undefined;
46
65
  }
47
66
  export interface P2MSPayment extends BasePayment {
48
- name: PaymentType.P2MS;
49
- m?: number;
50
- n?: number;
51
- pubkeys?: Buffer[];
52
- signatures?: Buffer[];
67
+ /** Dynamic name like 'p2ms' or 'p2ms(2 of 3)' with M-of-N parameters */
68
+ readonly name: string;
69
+ /** M-of-N parameters. */
70
+ readonly m?: number | undefined;
71
+ readonly n?: number | undefined;
72
+ readonly pubkeys?: PublicKey[] | undefined;
73
+ readonly signatures?: Signature[] | undefined;
53
74
  }
54
75
  export interface P2WPKHPayment extends BasePayment {
55
- name: PaymentType.P2WPKH;
56
- hash?: Buffer;
57
- pubkey?: Buffer;
58
- signature?: Buffer;
76
+ readonly name: typeof PaymentType.P2WPKH;
77
+ /** 20-byte witness program. */
78
+ readonly hash?: Bytes20 | undefined;
79
+ readonly pubkey?: PublicKey | undefined;
80
+ readonly signature?: Signature | undefined;
59
81
  }
60
82
  export interface P2WSHPayment extends BasePayment {
61
- name: PaymentType.P2WSH;
62
- hash?: Buffer;
63
- redeem?: ScriptRedeem;
83
+ /** Dynamic name like 'p2wsh' or 'p2wsh-p2pk' for nested types */
84
+ readonly name: string;
85
+ /** 32-byte witness program. */
86
+ readonly hash?: Bytes32 | undefined;
87
+ readonly redeem?: ScriptRedeem | undefined;
64
88
  }
65
89
  export interface P2TRPayment extends BasePayment {
66
- name: PaymentType.P2TR;
67
- pubkey?: Buffer;
68
- internalPubkey?: Buffer;
69
- hash?: Buffer;
70
- scriptTree?: Taptree;
71
- signature?: Buffer;
72
- redeemVersion?: number;
73
- redeem?: ScriptRedeem;
90
+ readonly name: typeof PaymentType.P2TR;
91
+ /** x-only pubkey that commits to the tree. */
92
+ readonly pubkey?: XOnlyPublicKey | undefined;
93
+ /** Internal (untweaked) x-only pubkey. */
94
+ readonly internalPubkey?: XOnlyPublicKey | undefined;
95
+ /** Merkle-root tweak, present when a script path exists. */
96
+ readonly hash?: Bytes32 | undefined;
97
+ /** Full taptree description (optional, dev-side). */
98
+ readonly scriptTree?: Taptree | undefined;
99
+ /** Key-path sig or leading stack elem. */
100
+ readonly signature?: SchnorrSignature | undefined;
101
+ readonly redeemVersion?: number | undefined;
102
+ readonly redeem?: ScriptRedeem | undefined;
74
103
  }
75
104
  export interface P2OPPayment extends BasePayment {
76
- name: PaymentType.P2OP;
77
- program?: Buffer;
78
- deploymentVersion: number | undefined;
79
- hash160?: Buffer;
105
+ readonly name: typeof PaymentType.P2OP;
106
+ /** <deploymentVersion || HASH160(payload)> (2–40 bytes). */
107
+ readonly program?: Uint8Array | undefined;
108
+ readonly deploymentVersion?: number | undefined;
109
+ /** Convenience slice of `program` (20 bytes for current spec). */
110
+ readonly hash160?: Bytes20 | undefined;
80
111
  }
81
112
  export interface P2OPPaymentParams extends Omit<P2OPPayment, 'name' | 'deploymentVersion'> {
82
- deploymentVersion?: number;
113
+ readonly deploymentVersion?: number | undefined;
83
114
  }
115
+ /** OP_RETURN data-carrying output */
84
116
  export interface EmbedPayment extends BasePayment {
85
- name: PaymentType.Embed;
86
- data: Buffer[];
117
+ readonly name: typeof PaymentType.Embed;
118
+ /** Raw pushed chunks after OP_RETURN. */
119
+ readonly data: Uint8Array[];
87
120
  }
88
121
  export type Payment = P2PKPayment | P2PKHPayment | P2SHPayment | P2MSPayment | P2WPKHPayment | P2WSHPayment | P2TRPayment | P2OPPayment | EmbedPayment | ScriptRedeem;
89
122
  export type PaymentCreator = <T extends BasePayment>(a: T, opts?: PaymentOpts) => T;
90
123
  export interface PaymentOpts {
91
- validate?: boolean;
92
- allowIncomplete?: boolean;
124
+ readonly validate?: boolean;
125
+ readonly allowIncomplete?: boolean;
93
126
  }
127
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/payments/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,cAAc,EACjB,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,WAAW;;;;;;;;;;;CAWd,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEzE,MAAM,WAAW,WAAW;IACxB,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,uDAAuD;IACvD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,gDAAgD;IAChD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,iDAAiD;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,uCAAuC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IAE5C,kDAAkD;IAClD,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAE3C,iDAAiD;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAClD;AAED,sEAAsE;AACtE,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1C;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC5C,QAAQ,CAAC,IAAI,EAAE,OAAO,WAAW,CAAC,IAAI,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACxC,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC7C,QAAQ,CAAC,IAAI,EAAE,OAAO,WAAW,CAAC,KAAK,CAAC;IACxC,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC5C,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAEpC,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;CAClD;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC5C,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAC9C,QAAQ,CAAC,IAAI,EAAE,OAAO,WAAW,CAAC,MAAM,CAAC;IACzC,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC7C,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC5C,QAAQ,CAAC,IAAI,EAAE,OAAO,WAAW,CAAC,IAAI,CAAC;IACvC,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC7C,0CAA0C;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACrD,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,qDAAqD;IACrD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAElD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC5C,QAAQ,CAAC,IAAI,EAAE,OAAO,WAAW,CAAC,IAAI,CAAC;IACvC,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACtF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnD;AAED,qCAAqC;AACrC,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC7C,QAAQ,CAAC,IAAI,EAAE,OAAO,WAAW,CAAC,KAAK,CAAC;IACxC,yCAAyC;IACzC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;CAE/B;AAED,MAAM,MAAM,OAAO,GACb,WAAW,GACX,YAAY,GACZ,WAAW,GACX,WAAW,GACX,aAAa,GACb,YAAY,GACZ,WAAW,GACX,WAAW,GACX,YAAY,GACZ,YAAY,CAAC;AAEnB,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,CAAC,CAAC;AAEpF,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACtC"}
@@ -1,13 +1,17 @@
1
- export var PaymentType;
2
- (function (PaymentType) {
3
- PaymentType["P2PK"] = "p2pk";
4
- PaymentType["P2PKH"] = "p2pkh";
5
- PaymentType["P2SH"] = "p2sh";
6
- PaymentType["P2MS"] = "p2ms";
7
- PaymentType["P2WPKH"] = "p2wpkh";
8
- PaymentType["P2WSH"] = "p2wsh";
9
- PaymentType["P2TR"] = "p2tr";
10
- PaymentType["P2OP"] = "p2op";
11
- PaymentType["Embed"] = "embed";
12
- PaymentType["ScriptRedeem"] = "scriptRedeem";
13
- })(PaymentType || (PaymentType = {}));
1
+ /**
2
+ * Payment types and interfaces
3
+ * @packageDocumentation
4
+ */
5
+ export const PaymentType = {
6
+ P2PK: 'p2pk',
7
+ P2PKH: 'p2pkh',
8
+ P2SH: 'p2sh',
9
+ P2MS: 'p2ms',
10
+ P2WPKH: 'p2wpkh',
11
+ P2WSH: 'p2wsh',
12
+ P2TR: 'p2tr',
13
+ P2OP: 'p2op',
14
+ Embed: 'embed',
15
+ ScriptRedeem: 'scriptRedeem',
16
+ };
17
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/payments/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,cAAc;CACtB,CAAC"}
@@ -1,19 +1,45 @@
1
- import { PsbtInput, PsbtOutput, TapLeaf } from 'bip174/src/lib/interfaces.js';
2
- import { Taptree } from '../types.js';
1
+ import type { PsbtInput, PsbtOutput, TapLeaf } from 'bip174';
2
+ import type { Taptree } from '../types.js';
3
3
  interface PsbtOutputWithScript extends PsbtOutput {
4
- script?: Buffer;
4
+ script?: Uint8Array;
5
5
  }
6
- export declare function tapScriptFinalizer(inputIndex: number, input: PsbtInput, tapLeafHashToFinalize?: Buffer): {
7
- finalScriptWitness: Buffer | undefined;
6
+ /**
7
+ * Default tapscript finalizer. It searches for the `tapLeafHashToFinalize` if provided.
8
+ * Otherwise it will search for the tapleaf that has at least one signature and has the shortest path.
9
+ * @param inputIndex the position of the PSBT input.
10
+ * @param input the PSBT input.
11
+ * @param tapLeafHashToFinalize optional, if provided the finalizer will search for a tapleaf that has this hash
12
+ * and will try to build the finalScriptWitness.
13
+ * @returns the finalScriptWitness or throws an exception if no tapleaf found.
14
+ */
15
+ export declare function tapScriptFinalizer(inputIndex: number, input: PsbtInput, tapLeafHashToFinalize?: Uint8Array): {
16
+ finalScriptWitness: Uint8Array | undefined;
8
17
  };
9
- export declare function serializeTaprootSignature(sig: Buffer, sighashType?: number): Buffer;
18
+ export declare function serializeTaprootSignature(sig: Uint8Array, sighashType?: number): Uint8Array;
10
19
  export declare function isTaprootInput(input: PsbtInput): boolean;
11
- export declare function isTaprootOutput(output: PsbtOutput, script?: Buffer): boolean;
20
+ export declare function isTaprootOutput(output: PsbtOutput, script?: Uint8Array): boolean;
12
21
  export declare function checkTaprootInputFields(inputData: PsbtInput, newInputData: PsbtInput, action: string): void;
13
22
  export declare function checkTaprootOutputFields(outputData: PsbtOutputWithScript, newOutputData: PsbtOutput, action: string): void;
14
- export declare function tweakInternalPubKey(inputIndex: number, input: PsbtInput): Buffer;
23
+ export declare function tweakInternalPubKey(inputIndex: number, input: PsbtInput): Uint8Array;
24
+ /**
25
+ * Convert a binary tree to a BIP371 type list. Each element of the list is (according to BIP371):
26
+ * One or more tuples representing the depth, leaf version, and script for a leaf in the Taproot tree,
27
+ * allowing the entire tree to be reconstructed. The tuples must be in depth first search order so that
28
+ * the tree is correctly reconstructed.
29
+ * @param tree the binary tap tree
30
+ * @returns a list of BIP 371 tapleaves
31
+ */
15
32
  export declare function tapTreeToList(tree: Taptree): TapLeaf[];
33
+ /**
34
+ * Convert a BIP371 TapLeaf list to a TapTree (binary).
35
+ * @param leaves a list of tapleaves where each element of the list is (according to BIP371):
36
+ * One or more tuples representing the depth, leaf version, and script for a leaf in the Taproot tree,
37
+ * allowing the entire tree to be reconstructed. The tuples must be in depth first search order so that
38
+ * the tree is correctly reconstructed.
39
+ * @returns the corresponding taptree, or throws an exception if the tree cannot be reconstructed
40
+ */
16
41
  export declare function tapTreeFromList(leaves?: TapLeaf[]): Taptree;
17
42
  export declare function checkTaprootInputForSigs(input: PsbtInput, action: string): boolean;
18
- export declare function getTapKeySigFromWitness(finalScriptWitness?: Buffer): Buffer | undefined;
43
+ export declare function getTapKeySigFromWitness(finalScriptWitness?: Uint8Array): Uint8Array | undefined;
19
44
  export {};
45
+ //# sourceMappingURL=bip371.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bip371.d.ts","sourceRoot":"","sources":["../../src/psbt/bip371.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,SAAS,EACT,UAAU,EAEV,OAAO,EAIV,MAAM,QAAQ,CAAC;AAWhB,OAAO,KAAK,EAAW,OAAO,EAA2B,MAAM,aAAa,CAAC;AAS7E,UAAU,oBAAqB,SAAQ,UAAU;IAC7C,MAAM,CAAC,EAAE,UAAU,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,SAAS,EAChB,qBAAqB,CAAC,EAAE,UAAU,GACnC;IACC,kBAAkB,EAAE,UAAU,GAAG,SAAS,CAAC;CAC9C,CAYA;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAI3F;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAWxD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAUhF;AAED,wBAAgB,uBAAuB,CACnC,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,SAAS,EACvB,MAAM,EAAE,MAAM,GACf,IAAI,CAGN;AAED,wBAAgB,wBAAwB,CACpC,UAAU,EAAE,oBAAoB,EAChC,aAAa,EAAE,UAAU,EACzB,MAAM,EAAE,MAAM,GACf,IAAI,CAGN;AA6BD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,UAAU,CAgBpF;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,CAItD;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,GAAE,OAAO,EAAO,GAAG,OAAO,CAQ/D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGlF;AA2BD,wBAAgB,uBAAuB,CAAC,kBAAkB,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAM/F"}
@@ -2,12 +2,24 @@ import { LEAF_VERSION_TAPSCRIPT, MAX_TAPTREE_DEPTH, rootHashFromPath, tapleafHas
2
2
  import { p2tr } from '../payments/p2tr.js';
3
3
  import { Transaction } from '../transaction.js';
4
4
  import { isTapleaf, isTaptree } from '../types.js';
5
+ import { concat, equals } from '../io/index.js';
5
6
  import { isP2TR, pubkeyPositionInScript, signatureBlocksAction, witnessStackToScriptWitness, } from './psbtutils.js';
7
+ /**
8
+ * Default tapscript finalizer. It searches for the `tapLeafHashToFinalize` if provided.
9
+ * Otherwise it will search for the tapleaf that has at least one signature and has the shortest path.
10
+ * @param inputIndex the position of the PSBT input.
11
+ * @param input the PSBT input.
12
+ * @param tapLeafHashToFinalize optional, if provided the finalizer will search for a tapleaf that has this hash
13
+ * and will try to build the finalScriptWitness.
14
+ * @returns the finalScriptWitness or throws an exception if no tapleaf found.
15
+ */
6
16
  export function tapScriptFinalizer(inputIndex, input, tapLeafHashToFinalize) {
7
17
  const tapLeaf = findTapLeafToFinalize(input, inputIndex, tapLeafHashToFinalize);
8
18
  try {
9
19
  const sigs = sortSignatures(input, tapLeaf);
10
- const witness = sigs.concat(tapLeaf.script).concat(tapLeaf.controlBlock);
20
+ const witness = sigs
21
+ .concat(new Uint8Array(tapLeaf.script))
22
+ .concat(new Uint8Array(tapLeaf.controlBlock));
11
23
  return { finalScriptWitness: witnessStackToScriptWitness(witness) };
12
24
  }
13
25
  catch (err) {
@@ -15,8 +27,8 @@ export function tapScriptFinalizer(inputIndex, input, tapLeafHashToFinalize) {
15
27
  }
16
28
  }
17
29
  export function serializeTaprootSignature(sig, sighashType) {
18
- const sighashTypeByte = sighashType ? Buffer.from([sighashType]) : Buffer.from([]);
19
- return Buffer.concat([sig, sighashTypeByte]);
30
+ const sighashTypeByte = sighashType ? new Uint8Array([sighashType]) : new Uint8Array(0);
31
+ return concat([sig, sighashTypeByte]);
20
32
  }
21
33
  export function isTaprootInput(input) {
22
34
  return (input &&
@@ -24,7 +36,7 @@ export function isTaprootInput(input) {
24
36
  input.tapMerkleRoot ||
25
37
  (input.tapLeafScript && input.tapLeafScript.length) ||
26
38
  (input.tapBip32Derivation && input.tapBip32Derivation.length) ||
27
- (input.witnessUtxo && isP2TR(input.witnessUtxo.script))));
39
+ (input.witnessUtxo && isP2TR(new Uint8Array(input.witnessUtxo.script)))));
28
40
  }
29
41
  export function isTaprootOutput(output, script) {
30
42
  return (output &&
@@ -49,14 +61,14 @@ function checkTaprootScriptPubkey(outputData, newOutputData) {
49
61
  if (tapInternalKey) {
50
62
  const scriptPubkey = outputData.script;
51
63
  const script = getTaprootScripPubkey(tapInternalKey, tapTree);
52
- if (scriptPubkey && !scriptPubkey.equals(script))
64
+ if (scriptPubkey && !equals(scriptPubkey, script))
53
65
  throw new Error('Error adding output. Script or address missmatch.');
54
66
  }
55
67
  }
56
68
  function getTaprootScripPubkey(tapInternalKey, tapTree) {
57
69
  const scriptTree = tapTree && tapTreeFromList(tapTree.leaves);
58
70
  const { output } = p2tr({
59
- internalPubkey: tapInternalKey,
71
+ internalPubkey: new Uint8Array(tapInternalKey),
60
72
  scriptTree,
61
73
  });
62
74
  if (!output)
@@ -65,20 +77,41 @@ function getTaprootScripPubkey(tapInternalKey, tapTree) {
65
77
  }
66
78
  export function tweakInternalPubKey(inputIndex, input) {
67
79
  const tapInternalKey = input.tapInternalKey;
68
- const outputKey = tapInternalKey && tweakKey(tapInternalKey, input.tapMerkleRoot);
80
+ const tapInternalKeyBuf = tapInternalKey ? new Uint8Array(tapInternalKey) : undefined;
81
+ const tapMerkleRootBuf = input.tapMerkleRoot ? new Uint8Array(input.tapMerkleRoot) : undefined;
82
+ const outputKey = tapInternalKeyBuf && tweakKey(tapInternalKeyBuf, tapMerkleRootBuf);
69
83
  if (!outputKey)
70
- throw new Error(`Cannot tweak tap internal key for input #${inputIndex}. Public key: ${tapInternalKey && tapInternalKey.toString('hex')}`);
84
+ throw new Error(`Cannot tweak tap internal key for input #${inputIndex}. Public key: ${tapInternalKeyBuf &&
85
+ Array.from(tapInternalKeyBuf)
86
+ .map((b) => b.toString(16).padStart(2, '0'))
87
+ .join('')}`);
71
88
  return outputKey.x;
72
89
  }
90
+ /**
91
+ * Convert a binary tree to a BIP371 type list. Each element of the list is (according to BIP371):
92
+ * One or more tuples representing the depth, leaf version, and script for a leaf in the Taproot tree,
93
+ * allowing the entire tree to be reconstructed. The tuples must be in depth first search order so that
94
+ * the tree is correctly reconstructed.
95
+ * @param tree the binary tap tree
96
+ * @returns a list of BIP 371 tapleaves
97
+ */
73
98
  export function tapTreeToList(tree) {
74
99
  if (!isTaptree(tree))
75
100
  throw new Error('Cannot convert taptree to tapleaf list. Expecting a tapree structure.');
76
101
  return _tapTreeToList(tree);
77
102
  }
103
+ /**
104
+ * Convert a BIP371 TapLeaf list to a TapTree (binary).
105
+ * @param leaves a list of tapleaves where each element of the list is (according to BIP371):
106
+ * One or more tuples representing the depth, leaf version, and script for a leaf in the Taproot tree,
107
+ * allowing the entire tree to be reconstructed. The tuples must be in depth first search order so that
108
+ * the tree is correctly reconstructed.
109
+ * @returns the corresponding taptree, or throws an exception if the tree cannot be reconstructed
110
+ */
78
111
  export function tapTreeFromList(leaves = []) {
79
112
  if (leaves.length === 1 && leaves[0].depth === 0)
80
113
  return {
81
- output: leaves[0].script,
114
+ output: new Uint8Array(leaves[0].script),
82
115
  version: leaves[0].leafVersion,
83
116
  };
84
117
  return insertLeavesInTree(leaves);
@@ -96,11 +129,11 @@ function decodeSchnorrSignature(signature) {
96
129
  function extractTaprootSigs(input) {
97
130
  const sigs = [];
98
131
  if (input.tapKeySig)
99
- sigs.push(input.tapKeySig);
132
+ sigs.push(new Uint8Array(input.tapKeySig));
100
133
  if (input.tapScriptSig)
101
- sigs.push(...input.tapScriptSig.map((s) => s.signature));
134
+ sigs.push(...input.tapScriptSig.map((s) => new Uint8Array(s.signature)));
102
135
  if (!sigs.length) {
103
- const finalTapKeySig = getTapKeySigFromWitness(input.finalScriptWitness);
136
+ const finalTapKeySig = getTapKeySigFromWitness(input.finalScriptWitness ? new Uint8Array(input.finalScriptWitness) : undefined);
104
137
  if (finalTapKeySig)
105
138
  sigs.push(finalTapKeySig);
106
139
  }
@@ -110,8 +143,10 @@ export function getTapKeySigFromWitness(finalScriptWitness) {
110
143
  if (!finalScriptWitness)
111
144
  return;
112
145
  const witness = finalScriptWitness.subarray(2);
146
+ // todo: add schnorr signature validation
113
147
  if (witness.length === 64 || witness.length === 65)
114
148
  return witness;
149
+ return undefined;
115
150
  }
116
151
  function _tapTreeToList(tree, leaves = [], depth = 0) {
117
152
  if (depth > MAX_TAPTREE_DEPTH)
@@ -147,7 +182,7 @@ function insertLeafInTree(leaf, tree, depth = 0) {
147
182
  if (leaf.depth === depth) {
148
183
  if (!tree)
149
184
  return {
150
- output: leaf.script,
185
+ output: new Uint8Array(leaf.script),
151
186
  version: leaf.leafVersion,
152
187
  };
153
188
  return;
@@ -160,13 +195,14 @@ function insertLeafInTree(leaf, tree, depth = 0) {
160
195
  const rightSide = insertLeafInTree(leaf, tree && tree[1], depth + 1);
161
196
  if (rightSide)
162
197
  return [tree && tree[0], rightSide];
198
+ return undefined;
163
199
  }
164
200
  function checkMixedTaprootAndNonTaprootInputFields(inputData, newInputData, action) {
165
201
  const isBadTaprootUpdate = isTaprootInput(inputData) && hasNonTaprootFields(newInputData);
166
202
  const isBadNonTaprootUpdate = hasNonTaprootFields(inputData) && isTaprootInput(newInputData);
167
203
  const hasMixedFields = inputData === newInputData &&
168
204
  isTaprootInput(newInputData) &&
169
- hasNonTaprootFields(newInputData);
205
+ hasNonTaprootFields(newInputData); // todo: bad? use !===
170
206
  if (isBadTaprootUpdate || isBadNonTaprootUpdate || hasMixedFields)
171
207
  throw new Error(`Invalid arguments for Psbt.${action}. ` +
172
208
  `Cannot use both taproot and non-taproot fields.`);
@@ -181,45 +217,78 @@ function checkMixedTaprootAndNonTaprootOutputFields(inputData, newInputData, act
181
217
  throw new Error(`Invalid arguments for Psbt.${action}. ` +
182
218
  `Cannot use both taproot and non-taproot fields.`);
183
219
  }
220
+ /**
221
+ * Checks if the tap leaf is part of the tap tree for the given input data.
222
+ * Throws an error if the tap leaf is not part of the tap tree.
223
+ * @param inputData - The original PsbtInput data.
224
+ * @param newInputData - The new PsbtInput data.
225
+ * @param action - The action being performed.
226
+ * @throws {Error} - If the tap leaf is not part of the tap tree.
227
+ */
184
228
  function checkIfTapLeafInTree(inputData, newInputData, action) {
185
229
  if (newInputData.tapMerkleRoot) {
186
- const newLeafsInTree = (newInputData.tapLeafScript || []).every((l) => isTapLeafInTree(l, newInputData.tapMerkleRoot));
187
- const oldLeafsInTree = (inputData.tapLeafScript || []).every((l) => isTapLeafInTree(l, newInputData.tapMerkleRoot));
230
+ const merkleRoot = new Uint8Array(newInputData.tapMerkleRoot);
231
+ const newLeafsInTree = (newInputData.tapLeafScript || []).every((l) => isTapLeafInTree(l, merkleRoot));
232
+ const oldLeafsInTree = (inputData.tapLeafScript || []).every((l) => isTapLeafInTree(l, merkleRoot));
188
233
  if (!newLeafsInTree || !oldLeafsInTree)
189
234
  throw new Error(`Invalid arguments for Psbt.${action}. Tapleaf not part of taptree.`);
190
235
  }
191
236
  else if (inputData.tapMerkleRoot) {
192
- const newLeafsInTree = (newInputData.tapLeafScript || []).every((l) => isTapLeafInTree(l, inputData.tapMerkleRoot));
237
+ const merkleRoot = new Uint8Array(inputData.tapMerkleRoot);
238
+ const newLeafsInTree = (newInputData.tapLeafScript || []).every((l) => isTapLeafInTree(l, merkleRoot));
193
239
  if (!newLeafsInTree)
194
240
  throw new Error(`Invalid arguments for Psbt.${action}. Tapleaf not part of taptree.`);
195
241
  }
196
242
  }
243
+ /**
244
+ * Checks if a TapLeafScript is present in a Merkle tree.
245
+ * @param tapLeaf The TapLeafScript to check.
246
+ * @param merkleRoot The Merkle root of the tree. If not provided, the function assumes the TapLeafScript is present.
247
+ * @returns A boolean indicating whether the TapLeafScript is present in the tree.
248
+ */
197
249
  function isTapLeafInTree(tapLeaf, merkleRoot) {
198
250
  if (!merkleRoot)
199
251
  return true;
200
252
  const leafHash = tapleafHash({
201
- output: tapLeaf.script,
253
+ output: new Uint8Array(tapLeaf.script),
202
254
  version: tapLeaf.leafVersion,
203
255
  });
204
- const rootHash = rootHashFromPath(tapLeaf.controlBlock, leafHash);
205
- return rootHash.equals(merkleRoot);
256
+ const rootHash = rootHashFromPath(new Uint8Array(tapLeaf.controlBlock), leafHash);
257
+ return equals(rootHash, merkleRoot);
206
258
  }
259
+ /**
260
+ * Sorts the signatures in the input's tapScriptSig array based on their position in the tapLeaf script.
261
+ *
262
+ * @param input - The PsbtInput object.
263
+ * @param tapLeaf - The TapLeafScript object.
264
+ * @returns An array of sorted signatures as Uint8Arrays.
265
+ */
207
266
  function sortSignatures(input, tapLeaf) {
267
+ const tapLeafScript = new Uint8Array(tapLeaf.script);
208
268
  const leafHash = tapleafHash({
209
- output: tapLeaf.script,
269
+ output: tapLeafScript,
210
270
  version: tapLeaf.leafVersion,
211
271
  });
212
272
  return (input.tapScriptSig || [])
213
- .filter((tss) => tss.leafHash.equals(leafHash))
214
- .map((tss) => addPubkeyPositionInScript(tapLeaf.script, tss))
273
+ .filter((tss) => equals(new Uint8Array(tss.leafHash), leafHash))
274
+ .map((tss) => addPubkeyPositionInScript(tapLeafScript, tss))
215
275
  .sort((t1, t2) => t2.positionInScript - t1.positionInScript)
216
- .map((t) => t.signature);
276
+ .map((t) => new Uint8Array(t.signature));
217
277
  }
278
+ /**
279
+ * Adds the position of a public key in a script to a TapScriptSig object.
280
+ * @param script The script in which to find the position of the public key.
281
+ * @param tss The TapScriptSig object to add the position to.
282
+ * @returns A TapScriptSigWitPosition object with the added position.
283
+ */
218
284
  function addPubkeyPositionInScript(script, tss) {
219
285
  return Object.assign({
220
- positionInScript: pubkeyPositionInScript(tss.pubkey, script),
286
+ positionInScript: pubkeyPositionInScript(new Uint8Array(tss.pubkey), script),
221
287
  }, tss);
222
288
  }
289
+ /**
290
+ * Find tapleaf by hash, or get the signed tapleaf with the shortest path.
291
+ */
223
292
  function findTapLeafToFinalize(input, inputIndex, leafHashToFinalize) {
224
293
  const { tapScriptSig } = input;
225
294
  if (!tapScriptSig || !tapScriptSig.length)
@@ -231,15 +300,31 @@ function findTapLeafToFinalize(input, inputIndex, leafHashToFinalize) {
231
300
  throw new Error(`Can not finalize taproot input #${inputIndex}. Signature for tapleaf script not found.`);
232
301
  return tapLeaf;
233
302
  }
303
+ /**
304
+ * Determines whether a TapLeafScript can be finalized.
305
+ *
306
+ * @param leaf - The TapLeafScript to check.
307
+ * @param tapScriptSig - The array of TapScriptSig objects.
308
+ * @param hash - The optional hash to compare with the leaf hash.
309
+ * @returns A boolean indicating whether the TapLeafScript can be finalized.
310
+ */
234
311
  function canFinalizeLeaf(leaf, tapScriptSig, hash) {
235
312
  const leafHash = tapleafHash({
236
- output: leaf.script,
313
+ output: new Uint8Array(leaf.script),
237
314
  version: leaf.leafVersion,
238
315
  });
239
- const whiteListedHash = !hash || hash.equals(leafHash);
240
- return (whiteListedHash && tapScriptSig.find((tss) => tss.leafHash.equals(leafHash)) !== undefined);
316
+ const whiteListedHash = !hash || equals(hash, leafHash);
317
+ return (whiteListedHash &&
318
+ tapScriptSig.find((tss) => equals(new Uint8Array(tss.leafHash), leafHash)) !== undefined);
241
319
  }
320
+ /**
321
+ * Checks if the given PsbtInput or PsbtOutput has non-taproot fields.
322
+ * Non-taproot fields include redeemScript, witnessScript, and bip32Derivation.
323
+ * @param io The PsbtInput or PsbtOutput to check.
324
+ * @returns A boolean indicating whether the given input or output has non-taproot fields.
325
+ */
242
326
  function hasNonTaprootFields(io) {
243
327
  return (io &&
244
328
  !!(io.redeemScript || io.witnessScript || (io.bip32Derivation && io.bip32Derivation.length)));
245
329
  }
330
+ //# sourceMappingURL=bip371.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bip371.js","sourceRoot":"","sources":["../../src/psbt/bip371.ts"],"names":[],"mappings":"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"}