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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. package/HOW_TO_WRITE_GOOD_CODE.md +2436 -0
  2. package/benchmark/psbt-2000-inputs.bench.ts +178 -0
  3. package/benchmark/signing.bench.ts +147 -0
  4. package/browser/address.d.ts +57 -10
  5. package/browser/address.d.ts.map +1 -0
  6. package/browser/bech32utils.d.ts +9 -1
  7. package/browser/bech32utils.d.ts.map +1 -0
  8. package/browser/bip66.d.ts +11 -6
  9. package/browser/bip66.d.ts.map +1 -0
  10. package/browser/block.d.ts +117 -11
  11. package/browser/block.d.ts.map +1 -0
  12. package/browser/branded.d.ts +20 -0
  13. package/browser/branded.d.ts.map +1 -0
  14. package/browser/crypto/crypto.d.ts +1 -0
  15. package/browser/crypto/crypto.d.ts.map +1 -0
  16. package/browser/crypto.d.ts +46 -7
  17. package/browser/crypto.d.ts.map +1 -0
  18. package/browser/ecc/context.d.ts +129 -0
  19. package/browser/ecc/context.d.ts.map +1 -0
  20. package/browser/ecc/index.d.ts +11 -0
  21. package/browser/ecc/index.d.ts.map +1 -0
  22. package/browser/ecc/types.d.ts +128 -0
  23. package/browser/ecc/types.d.ts.map +1 -0
  24. package/browser/ecpair.d.ts +99 -0
  25. package/browser/errors.d.ts +124 -0
  26. package/browser/errors.d.ts.map +1 -0
  27. package/browser/index.d.ts +32 -5
  28. package/browser/index.d.ts.map +1 -0
  29. package/browser/index.js +12477 -101
  30. package/browser/io/BinaryReader.d.ts +276 -0
  31. package/browser/io/BinaryReader.d.ts.map +1 -0
  32. package/browser/io/BinaryWriter.d.ts +391 -0
  33. package/browser/io/BinaryWriter.d.ts.map +1 -0
  34. package/browser/io/MemoryPool.d.ts +220 -0
  35. package/browser/io/MemoryPool.d.ts.map +1 -0
  36. package/browser/io/base64.d.ts +13 -0
  37. package/browser/io/base64.d.ts.map +1 -0
  38. package/browser/io/hex.d.ts +67 -0
  39. package/browser/io/hex.d.ts.map +1 -0
  40. package/browser/io/index.d.ts +17 -0
  41. package/browser/io/index.d.ts.map +1 -0
  42. package/browser/io/utils.d.ts +199 -0
  43. package/browser/io/utils.d.ts.map +1 -0
  44. package/browser/merkle.d.ts +10 -1
  45. package/browser/merkle.d.ts.map +1 -0
  46. package/browser/networks.d.ts +70 -9
  47. package/browser/networks.d.ts.map +1 -0
  48. package/browser/opcodes.d.ts +1 -0
  49. package/browser/opcodes.d.ts.map +1 -0
  50. package/browser/payments/bip341.d.ts +35 -9
  51. package/browser/payments/bip341.d.ts.map +1 -0
  52. package/browser/payments/embed.d.ts +112 -1
  53. package/browser/payments/embed.d.ts.map +1 -0
  54. package/browser/payments/index.d.ts +17 -10
  55. package/browser/payments/index.d.ts.map +1 -0
  56. package/browser/payments/p2ms.d.ts +150 -0
  57. package/browser/payments/p2ms.d.ts.map +1 -0
  58. package/browser/payments/p2op.d.ts +150 -24
  59. package/browser/payments/p2op.d.ts.map +1 -0
  60. package/browser/payments/p2pk.d.ts +154 -1
  61. package/browser/payments/p2pk.d.ts.map +1 -0
  62. package/browser/payments/p2pkh.d.ts +176 -1
  63. package/browser/payments/p2pkh.d.ts.map +1 -0
  64. package/browser/payments/p2sh.d.ts +150 -1
  65. package/browser/payments/p2sh.d.ts.map +1 -0
  66. package/browser/payments/p2tr.d.ts +185 -1
  67. package/browser/payments/p2tr.d.ts.map +1 -0
  68. package/browser/payments/p2wpkh.d.ts +161 -1
  69. package/browser/payments/p2wpkh.d.ts.map +1 -0
  70. package/browser/payments/p2wsh.d.ts +146 -1
  71. package/browser/payments/p2wsh.d.ts.map +1 -0
  72. package/browser/payments/types.d.ts +94 -64
  73. package/browser/payments/types.d.ts.map +1 -0
  74. package/browser/psbt/bip371.d.ts +34 -8
  75. package/browser/psbt/bip371.d.ts.map +1 -0
  76. package/browser/psbt/psbtutils.d.ts +56 -16
  77. package/browser/psbt/psbtutils.d.ts.map +1 -0
  78. package/browser/psbt/types.d.ts +245 -0
  79. package/browser/psbt/types.d.ts.map +1 -0
  80. package/browser/psbt/utils.d.ts +64 -0
  81. package/browser/psbt/utils.d.ts.map +1 -0
  82. package/browser/psbt/validation.d.ts +84 -0
  83. package/browser/psbt/validation.d.ts.map +1 -0
  84. package/browser/psbt.d.ts +82 -118
  85. package/browser/psbt.d.ts.map +1 -0
  86. package/browser/pubkey.d.ts +27 -6
  87. package/browser/pubkey.d.ts.map +1 -0
  88. package/browser/push_data.d.ts +24 -2
  89. package/browser/push_data.d.ts.map +1 -0
  90. package/browser/script.d.ts +33 -8
  91. package/browser/script.d.ts.map +1 -0
  92. package/browser/script_number.d.ts +17 -0
  93. package/browser/script_number.d.ts.map +1 -0
  94. package/browser/script_signature.d.ts +23 -5
  95. package/browser/script_signature.d.ts.map +1 -0
  96. package/browser/transaction.d.ts +160 -18
  97. package/browser/transaction.d.ts.map +1 -0
  98. package/browser/types.d.ts +36 -38
  99. package/browser/types.d.ts.map +1 -0
  100. package/browser/workers/WorkerSigningPool.d.ts +143 -0
  101. package/browser/workers/WorkerSigningPool.d.ts.map +1 -0
  102. package/browser/workers/WorkerSigningPool.node.d.ts +116 -0
  103. package/browser/workers/WorkerSigningPool.node.d.ts.map +1 -0
  104. package/browser/workers/ecc-bundle.d.ts +25 -0
  105. package/browser/workers/ecc-bundle.d.ts.map +1 -0
  106. package/browser/workers/index.d.ts +91 -0
  107. package/browser/workers/index.d.ts.map +1 -0
  108. package/browser/workers/psbt-parallel.d.ts +88 -0
  109. package/browser/workers/psbt-parallel.d.ts.map +1 -0
  110. package/browser/workers/signing-worker.d.ts +37 -0
  111. package/browser/workers/signing-worker.d.ts.map +1 -0
  112. package/browser/workers/types.d.ts +365 -0
  113. package/browser/workers/types.d.ts.map +1 -0
  114. package/build/address.d.ts +58 -11
  115. package/build/address.d.ts.map +1 -0
  116. package/build/address.js +82 -25
  117. package/build/address.js.map +1 -0
  118. package/build/bech32utils.d.ts +9 -1
  119. package/build/bech32utils.d.ts.map +1 -0
  120. package/build/bech32utils.js +10 -2
  121. package/build/bech32utils.js.map +1 -0
  122. package/build/bip66.d.ts +11 -6
  123. package/build/bip66.d.ts.map +1 -0
  124. package/build/bip66.js +32 -3
  125. package/build/bip66.js.map +1 -0
  126. package/build/block.d.ts +117 -11
  127. package/build/block.d.ts.map +1 -0
  128. package/build/block.js +202 -72
  129. package/build/block.js.map +1 -0
  130. package/build/branded.d.ts +20 -0
  131. package/build/branded.d.ts.map +1 -0
  132. package/build/branded.js +7 -0
  133. package/build/branded.js.map +1 -0
  134. package/build/crypto/crypto.d.ts +1 -0
  135. package/build/crypto/crypto.d.ts.map +1 -0
  136. package/build/crypto/crypto.js +1 -0
  137. package/build/crypto/crypto.js.map +1 -0
  138. package/build/crypto.d.ts +46 -7
  139. package/build/crypto.d.ts.map +1 -0
  140. package/build/crypto.js +65 -20
  141. package/build/crypto.js.map +1 -0
  142. package/build/ecc/context.d.ts +135 -0
  143. package/build/ecc/context.d.ts.map +1 -0
  144. package/build/ecc/context.js +232 -0
  145. package/build/ecc/context.js.map +1 -0
  146. package/build/ecc/index.d.ts +11 -0
  147. package/build/ecc/index.d.ts.map +1 -0
  148. package/build/ecc/index.js +11 -0
  149. package/build/ecc/index.js.map +1 -0
  150. package/build/ecc/types.d.ts +134 -0
  151. package/build/ecc/types.d.ts.map +1 -0
  152. package/build/ecc/types.js +8 -0
  153. package/build/ecc/types.js.map +1 -0
  154. package/build/errors.d.ts +124 -0
  155. package/build/errors.d.ts.map +1 -0
  156. package/build/errors.js +155 -0
  157. package/build/errors.js.map +1 -0
  158. package/build/index.d.ts +32 -5
  159. package/build/index.d.ts.map +1 -0
  160. package/build/index.js +26 -3
  161. package/build/index.js.map +1 -0
  162. package/build/io/BinaryReader.d.ts +276 -0
  163. package/build/io/BinaryReader.d.ts.map +1 -0
  164. package/build/io/BinaryReader.js +425 -0
  165. package/build/io/BinaryReader.js.map +1 -0
  166. package/build/io/BinaryWriter.d.ts +391 -0
  167. package/build/io/BinaryWriter.d.ts.map +1 -0
  168. package/build/io/BinaryWriter.js +611 -0
  169. package/build/io/BinaryWriter.js.map +1 -0
  170. package/build/io/MemoryPool.d.ts +220 -0
  171. package/build/io/MemoryPool.d.ts.map +1 -0
  172. package/build/io/MemoryPool.js +309 -0
  173. package/build/io/MemoryPool.js.map +1 -0
  174. package/build/io/base64.d.ts +13 -0
  175. package/build/io/base64.d.ts.map +1 -0
  176. package/build/io/base64.js +20 -0
  177. package/build/io/base64.js.map +1 -0
  178. package/build/io/hex.d.ts +67 -0
  179. package/build/io/hex.d.ts.map +1 -0
  180. package/build/io/hex.js +138 -0
  181. package/build/io/hex.js.map +1 -0
  182. package/build/io/index.d.ts +17 -0
  183. package/build/io/index.d.ts.map +1 -0
  184. package/build/io/index.js +23 -0
  185. package/build/io/index.js.map +1 -0
  186. package/build/io/utils.d.ts +199 -0
  187. package/build/io/utils.d.ts.map +1 -0
  188. package/build/io/utils.js +271 -0
  189. package/build/io/utils.js.map +1 -0
  190. package/build/merkle.d.ts +10 -1
  191. package/build/merkle.d.ts.map +1 -0
  192. package/build/merkle.js +12 -1
  193. package/build/merkle.js.map +1 -0
  194. package/build/networks.d.ts +70 -9
  195. package/build/networks.d.ts.map +1 -0
  196. package/build/networks.js +90 -4
  197. package/build/networks.js.map +1 -0
  198. package/build/opcodes.d.ts +1 -0
  199. package/build/opcodes.d.ts.map +1 -0
  200. package/build/opcodes.js +1 -0
  201. package/build/opcodes.js.map +1 -0
  202. package/build/payments/bip341.d.ts +35 -9
  203. package/build/payments/bip341.d.ts.map +1 -0
  204. package/build/payments/bip341.js +34 -15
  205. package/build/payments/bip341.js.map +1 -0
  206. package/build/payments/embed.d.ts +120 -1
  207. package/build/payments/embed.d.ts.map +1 -0
  208. package/build/payments/embed.js +215 -34
  209. package/build/payments/embed.js.map +1 -0
  210. package/build/payments/index.d.ts +17 -10
  211. package/build/payments/index.d.ts.map +1 -0
  212. package/build/payments/index.js +20 -10
  213. package/build/payments/index.js.map +1 -0
  214. package/build/payments/p2ms.d.ts +159 -1
  215. package/build/payments/p2ms.d.ts.map +1 -0
  216. package/build/payments/p2ms.js +427 -108
  217. package/build/payments/p2ms.js.map +1 -0
  218. package/build/payments/p2op.d.ts +158 -24
  219. package/build/payments/p2op.d.ts.map +1 -0
  220. package/build/payments/p2op.js +379 -93
  221. package/build/payments/p2op.js.map +1 -0
  222. package/build/payments/p2pk.d.ts +162 -1
  223. package/build/payments/p2pk.d.ts.map +1 -0
  224. package/build/payments/p2pk.js +327 -58
  225. package/build/payments/p2pk.js.map +1 -0
  226. package/build/payments/p2pkh.d.ts +185 -1
  227. package/build/payments/p2pkh.d.ts.map +1 -0
  228. package/build/payments/p2pkh.js +467 -114
  229. package/build/payments/p2pkh.js.map +1 -0
  230. package/build/payments/p2sh.d.ts +159 -1
  231. package/build/payments/p2sh.d.ts.map +1 -0
  232. package/build/payments/p2sh.js +500 -150
  233. package/build/payments/p2sh.js.map +1 -0
  234. package/build/payments/p2tr.d.ts +193 -1
  235. package/build/payments/p2tr.d.ts.map +1 -0
  236. package/build/payments/p2tr.js +592 -174
  237. package/build/payments/p2tr.js.map +1 -0
  238. package/build/payments/p2wpkh.d.ts +170 -1
  239. package/build/payments/p2wpkh.d.ts.map +1 -0
  240. package/build/payments/p2wpkh.js +428 -103
  241. package/build/payments/p2wpkh.js.map +1 -0
  242. package/build/payments/p2wsh.d.ts +155 -1
  243. package/build/payments/p2wsh.d.ts.map +1 -0
  244. package/build/payments/p2wsh.js +465 -143
  245. package/build/payments/p2wsh.js.map +1 -0
  246. package/build/payments/types.d.ts +98 -64
  247. package/build/payments/types.d.ts.map +1 -0
  248. package/build/payments/types.js +17 -13
  249. package/build/payments/types.js.map +1 -0
  250. package/build/psbt/bip371.d.ts +35 -9
  251. package/build/psbt/bip371.d.ts.map +1 -0
  252. package/build/psbt/bip371.js +117 -28
  253. package/build/psbt/bip371.js.map +1 -0
  254. package/build/psbt/psbtutils.d.ts +56 -16
  255. package/build/psbt/psbtutils.d.ts.map +1 -0
  256. package/build/psbt/psbtutils.js +71 -16
  257. package/build/psbt/psbtutils.js.map +1 -0
  258. package/build/psbt/types.d.ts +249 -0
  259. package/build/psbt/types.d.ts.map +1 -0
  260. package/build/psbt/types.js +6 -0
  261. package/build/psbt/types.js.map +1 -0
  262. package/build/psbt/utils.d.ts +68 -0
  263. package/build/psbt/utils.d.ts.map +1 -0
  264. package/build/psbt/utils.js +171 -0
  265. package/build/psbt/utils.js.map +1 -0
  266. package/build/psbt/validation.d.ts +88 -0
  267. package/build/psbt/validation.d.ts.map +1 -0
  268. package/build/psbt/validation.js +149 -0
  269. package/build/psbt/validation.js.map +1 -0
  270. package/build/psbt.d.ts +84 -120
  271. package/build/psbt.d.ts.map +1 -0
  272. package/build/psbt.js +406 -413
  273. package/build/psbt.js.map +1 -0
  274. package/build/pubkey.d.ts +27 -6
  275. package/build/pubkey.d.ts.map +1 -0
  276. package/build/pubkey.js +36 -12
  277. package/build/pubkey.js.map +1 -0
  278. package/build/push_data.d.ts +24 -2
  279. package/build/push_data.d.ts.map +1 -0
  280. package/build/push_data.js +44 -12
  281. package/build/push_data.js.map +1 -0
  282. package/build/script.d.ts +33 -8
  283. package/build/script.d.ts.map +1 -0
  284. package/build/script.js +101 -37
  285. package/build/script.js.map +1 -0
  286. package/build/script_number.d.ts +17 -0
  287. package/build/script_number.d.ts.map +1 -0
  288. package/build/script_number.js +19 -0
  289. package/build/script_number.js.map +1 -0
  290. package/build/script_signature.d.ts +23 -5
  291. package/build/script_signature.d.ts.map +1 -0
  292. package/build/script_signature.js +48 -15
  293. package/build/script_signature.js.map +1 -0
  294. package/build/transaction.d.ts +160 -18
  295. package/build/transaction.d.ts.map +1 -0
  296. package/build/transaction.js +443 -176
  297. package/build/transaction.js.map +1 -0
  298. package/build/tsconfig.build.tsbuildinfo +1 -0
  299. package/build/types.d.ts +36 -38
  300. package/build/types.d.ts.map +1 -0
  301. package/build/types.js +169 -57
  302. package/build/types.js.map +1 -0
  303. package/build/workers/WorkerSigningPool.d.ts +174 -0
  304. package/build/workers/WorkerSigningPool.d.ts.map +1 -0
  305. package/build/workers/WorkerSigningPool.js +553 -0
  306. package/build/workers/WorkerSigningPool.js.map +1 -0
  307. package/build/workers/WorkerSigningPool.node.d.ts +124 -0
  308. package/build/workers/WorkerSigningPool.node.d.ts.map +1 -0
  309. package/build/workers/WorkerSigningPool.node.js +753 -0
  310. package/build/workers/WorkerSigningPool.node.js.map +1 -0
  311. package/build/workers/ecc-bundle.d.ts +25 -0
  312. package/build/workers/ecc-bundle.d.ts.map +1 -0
  313. package/build/workers/ecc-bundle.js +25 -0
  314. package/build/workers/ecc-bundle.js.map +1 -0
  315. package/build/workers/index.d.ts +91 -0
  316. package/build/workers/index.d.ts.map +1 -0
  317. package/build/workers/index.js +114 -0
  318. package/build/workers/index.js.map +1 -0
  319. package/build/workers/psbt-parallel.d.ts +117 -0
  320. package/build/workers/psbt-parallel.d.ts.map +1 -0
  321. package/build/workers/psbt-parallel.js +233 -0
  322. package/build/workers/psbt-parallel.js.map +1 -0
  323. package/build/workers/signing-worker.d.ts +37 -0
  324. package/build/workers/signing-worker.d.ts.map +1 -0
  325. package/build/workers/signing-worker.js +350 -0
  326. package/build/workers/signing-worker.js.map +1 -0
  327. package/build/workers/types.d.ts +365 -0
  328. package/build/workers/types.d.ts.map +1 -0
  329. package/build/workers/types.js +60 -0
  330. package/build/workers/types.js.map +1 -0
  331. package/package.json +68 -9
  332. package/scripts/bundle-ecc.ts +111 -0
  333. package/src/address.ts +91 -45
  334. package/src/bech32utils.ts +3 -3
  335. package/src/bip66.ts +34 -24
  336. package/src/block.ts +205 -86
  337. package/src/branded.ts +18 -0
  338. package/src/crypto.ts +64 -26
  339. package/src/ecc/context.ts +280 -0
  340. package/src/ecc/index.ts +14 -0
  341. package/src/ecc/types.ts +147 -0
  342. package/src/ecpair.d.ts +99 -0
  343. package/src/errors.ts +163 -0
  344. package/src/index.ts +112 -9
  345. package/src/io/BinaryReader.ts +461 -0
  346. package/src/io/BinaryWriter.ts +696 -0
  347. package/src/io/MemoryPool.ts +343 -0
  348. package/src/io/base64.ts +20 -0
  349. package/src/io/hex.ts +155 -0
  350. package/src/io/index.ts +41 -0
  351. package/src/io/utils.ts +283 -0
  352. package/src/merkle.ts +14 -9
  353. package/src/networks.ts +9 -9
  354. package/src/payments/bip341.ts +32 -33
  355. package/src/payments/embed.ts +244 -41
  356. package/src/payments/index.ts +12 -10
  357. package/src/payments/p2ms.ts +497 -118
  358. package/src/payments/p2op.ts +432 -134
  359. package/src/payments/p2pk.ts +370 -72
  360. package/src/payments/p2pkh.ts +524 -130
  361. package/src/payments/p2sh.ts +572 -169
  362. package/src/payments/p2tr.ts +686 -194
  363. package/src/payments/p2wpkh.ts +482 -105
  364. package/src/payments/p2wsh.ts +524 -162
  365. package/src/payments/types.ts +80 -66
  366. package/src/psbt/bip371.ts +72 -51
  367. package/src/psbt/psbtutils.ts +39 -40
  368. package/src/psbt/types.ts +324 -0
  369. package/src/psbt/utils.ts +188 -0
  370. package/src/psbt/validation.ts +185 -0
  371. package/src/psbt.ts +608 -827
  372. package/src/pubkey.ts +22 -23
  373. package/src/push_data.ts +18 -16
  374. package/src/script.ts +81 -66
  375. package/src/script_number.ts +6 -6
  376. package/src/script_signature.ts +33 -36
  377. package/src/transaction.ts +462 -239
  378. package/src/types.ts +229 -100
  379. package/src/workers/WorkerSigningPool.node.ts +887 -0
  380. package/src/workers/WorkerSigningPool.ts +666 -0
  381. package/src/workers/ecc-bundle.ts +26 -0
  382. package/src/workers/index.ts +165 -0
  383. package/src/workers/psbt-parallel.ts +327 -0
  384. package/src/workers/signing-worker.ts +353 -0
  385. package/src/workers/types.ts +417 -0
  386. package/test/address.spec.ts +9 -6
  387. package/test/bitcoin.core.spec.ts +16 -17
  388. package/test/block.spec.ts +8 -7
  389. package/test/bufferutils.spec.ts +228 -214
  390. package/test/crypto.spec.ts +19 -11
  391. package/test/fixtures/p2pk.json +0 -8
  392. package/test/fixtures/p2pkh.json +1 -1
  393. package/test/fixtures/p2sh.json +1 -1
  394. package/test/fixtures/script.json +1 -1
  395. package/test/fixtures/transaction.json +2 -2
  396. package/test/integration/_regtest.ts +25 -0
  397. package/test/integration/addresses.spec.ts +4 -3
  398. package/test/integration/bip32.spec.ts +2 -1
  399. package/test/integration/blocks.spec.ts +1 -1
  400. package/test/integration/cltv.spec.ts +18 -16
  401. package/test/integration/csv.spec.ts +37 -64
  402. package/test/integration/payments.spec.ts +5 -3
  403. package/test/integration/taproot.spec.ts +76 -83
  404. package/test/integration/transactions.spec.ts +38 -35
  405. package/test/payments.spec.ts +35 -13
  406. package/test/payments.utils.ts +17 -16
  407. package/test/psbt.spec.ts +111 -100
  408. package/test/script.spec.ts +11 -10
  409. package/test/script_signature.spec.ts +9 -11
  410. package/test/taproot-cache.spec.ts +694 -0
  411. package/test/transaction.spec.ts +32 -40
  412. package/test/types.spec.ts +74 -29
  413. package/test/workers-pool.spec.ts +963 -0
  414. package/test/workers-signing.spec.ts +635 -0
  415. package/test/workers.spec.ts +1390 -0
  416. package/tsconfig.base.json +34 -18
  417. package/tsconfig.browser.json +15 -0
  418. package/tsconfig.build.json +5 -0
  419. package/tsconfig.json +5 -14
  420. package/typedoc.json +29 -0
  421. package/vite.config.browser.ts +3 -42
  422. package/vitest.config.integration.ts +2 -0
  423. package/browser/bufferutils.d.ts +0 -34
  424. package/browser/chunks/crypto-BhCpKpek.js +0 -2033
  425. package/browser/chunks/payments-B1wlSccx.js +0 -1089
  426. package/browser/chunks/psbt-BCNk7JUx.js +0 -4055
  427. package/browser/chunks/script-DyPItFEl.js +0 -318
  428. package/browser/chunks/transaction-C_UbhMGn.js +0 -432
  429. package/browser/chunks/utils-DNZi-T5W.js +0 -761
  430. package/browser/ecc_lib.d.ts +0 -3
  431. package/browser/hooks/AdvancedSignatureManager.d.ts +0 -16
  432. package/browser/hooks/HookedSigner.d.ts +0 -4
  433. package/browser/hooks/SignatureManager.d.ts +0 -13
  434. package/browser/payments/lazy.d.ts +0 -2
  435. package/browser/typeforce.d.ts +0 -38
  436. package/build/bufferutils.d.ts +0 -34
  437. package/build/bufferutils.js +0 -141
  438. package/build/ecc_lib.d.ts +0 -3
  439. package/build/ecc_lib.js +0 -61
  440. package/build/hooks/AdvancedSignatureManager.d.ts +0 -16
  441. package/build/hooks/AdvancedSignatureManager.js +0 -52
  442. package/build/hooks/HookedSigner.d.ts +0 -4
  443. package/build/hooks/HookedSigner.js +0 -64
  444. package/build/hooks/SignatureManager.d.ts +0 -13
  445. package/build/hooks/SignatureManager.js +0 -45
  446. package/build/payments/lazy.d.ts +0 -2
  447. package/build/payments/lazy.js +0 -28
  448. package/build/tsconfig.tsbuildinfo +0 -1
  449. package/src/bufferutils.ts +0 -188
  450. package/src/ecc_lib.ts +0 -94
  451. package/src/hooks/AdvancedSignatureManager.ts +0 -104
  452. package/src/hooks/HookedSigner.ts +0 -108
  453. package/src/hooks/SignatureManager.ts +0 -84
  454. package/src/payments/lazy.ts +0 -28
  455. package/src/typeforce.d.ts +0 -38
  456. package/tsconfig.webpack.json +0 -18
@@ -0,0 +1 @@
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, SchnorrSignature, Script, Signature, 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,gBAAgB,EAChB,MAAM,EACN,SAAS,EACT,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;AAUhB,OAAO,KAAK,EAAoB,OAAO,EAAkB,MAAM,aAAa,CAAC;AAU7E,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,CAoBpF;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,45 @@ 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
81
+ ? new Uint8Array(tapInternalKey)
82
+ : undefined;
83
+ const tapMerkleRootBuf = input.tapMerkleRoot
84
+ ? new Uint8Array(input.tapMerkleRoot)
85
+ : undefined;
86
+ const outputKey = tapInternalKeyBuf && tweakKey(tapInternalKeyBuf, tapMerkleRootBuf);
69
87
  if (!outputKey)
70
- throw new Error(`Cannot tweak tap internal key for input #${inputIndex}. Public key: ${tapInternalKey && tapInternalKey.toString('hex')}`);
88
+ throw new Error(`Cannot tweak tap internal key for input #${inputIndex}. Public key: ${tapInternalKeyBuf &&
89
+ Array.from(tapInternalKeyBuf)
90
+ .map((b) => b.toString(16).padStart(2, '0'))
91
+ .join('')}`);
71
92
  return outputKey.x;
72
93
  }
94
+ /**
95
+ * Convert a binary tree to a BIP371 type list. Each element of the list is (according to BIP371):
96
+ * One or more tuples representing the depth, leaf version, and script for a leaf in the Taproot tree,
97
+ * allowing the entire tree to be reconstructed. The tuples must be in depth first search order so that
98
+ * the tree is correctly reconstructed.
99
+ * @param tree the binary tap tree
100
+ * @returns a list of BIP 371 tapleaves
101
+ */
73
102
  export function tapTreeToList(tree) {
74
103
  if (!isTaptree(tree))
75
104
  throw new Error('Cannot convert taptree to tapleaf list. Expecting a tapree structure.');
76
105
  return _tapTreeToList(tree);
77
106
  }
107
+ /**
108
+ * Convert a BIP371 TapLeaf list to a TapTree (binary).
109
+ * @param leaves a list of tapleaves where each element of the list is (according to BIP371):
110
+ * One or more tuples representing the depth, leaf version, and script for a leaf in the Taproot tree,
111
+ * allowing the entire tree to be reconstructed. The tuples must be in depth first search order so that
112
+ * the tree is correctly reconstructed.
113
+ * @returns the corresponding taptree, or throws an exception if the tree cannot be reconstructed
114
+ */
78
115
  export function tapTreeFromList(leaves = []) {
79
116
  if (leaves.length === 1 && leaves[0].depth === 0)
80
117
  return {
81
- output: leaves[0].script,
118
+ output: new Uint8Array(leaves[0].script),
82
119
  version: leaves[0].leafVersion,
83
120
  };
84
121
  return insertLeavesInTree(leaves);
@@ -96,11 +133,11 @@ function decodeSchnorrSignature(signature) {
96
133
  function extractTaprootSigs(input) {
97
134
  const sigs = [];
98
135
  if (input.tapKeySig)
99
- sigs.push(input.tapKeySig);
136
+ sigs.push(new Uint8Array(input.tapKeySig));
100
137
  if (input.tapScriptSig)
101
- sigs.push(...input.tapScriptSig.map((s) => s.signature));
138
+ sigs.push(...input.tapScriptSig.map((s) => new Uint8Array(s.signature)));
102
139
  if (!sigs.length) {
103
- const finalTapKeySig = getTapKeySigFromWitness(input.finalScriptWitness);
140
+ const finalTapKeySig = getTapKeySigFromWitness(input.finalScriptWitness ? new Uint8Array(input.finalScriptWitness) : undefined);
104
141
  if (finalTapKeySig)
105
142
  sigs.push(finalTapKeySig);
106
143
  }
@@ -110,8 +147,10 @@ export function getTapKeySigFromWitness(finalScriptWitness) {
110
147
  if (!finalScriptWitness)
111
148
  return;
112
149
  const witness = finalScriptWitness.subarray(2);
150
+ // todo: add schnorr signature validation
113
151
  if (witness.length === 64 || witness.length === 65)
114
152
  return witness;
153
+ return undefined;
115
154
  }
116
155
  function _tapTreeToList(tree, leaves = [], depth = 0) {
117
156
  if (depth > MAX_TAPTREE_DEPTH)
@@ -147,7 +186,7 @@ function insertLeafInTree(leaf, tree, depth = 0) {
147
186
  if (leaf.depth === depth) {
148
187
  if (!tree)
149
188
  return {
150
- output: leaf.script,
189
+ output: new Uint8Array(leaf.script),
151
190
  version: leaf.leafVersion,
152
191
  };
153
192
  return;
@@ -160,13 +199,14 @@ function insertLeafInTree(leaf, tree, depth = 0) {
160
199
  const rightSide = insertLeafInTree(leaf, tree && tree[1], depth + 1);
161
200
  if (rightSide)
162
201
  return [tree && tree[0], rightSide];
202
+ return undefined;
163
203
  }
164
204
  function checkMixedTaprootAndNonTaprootInputFields(inputData, newInputData, action) {
165
205
  const isBadTaprootUpdate = isTaprootInput(inputData) && hasNonTaprootFields(newInputData);
166
206
  const isBadNonTaprootUpdate = hasNonTaprootFields(inputData) && isTaprootInput(newInputData);
167
207
  const hasMixedFields = inputData === newInputData &&
168
208
  isTaprootInput(newInputData) &&
169
- hasNonTaprootFields(newInputData);
209
+ hasNonTaprootFields(newInputData); // todo: bad? use !===
170
210
  if (isBadTaprootUpdate || isBadNonTaprootUpdate || hasMixedFields)
171
211
  throw new Error(`Invalid arguments for Psbt.${action}. ` +
172
212
  `Cannot use both taproot and non-taproot fields.`);
@@ -181,45 +221,78 @@ function checkMixedTaprootAndNonTaprootOutputFields(inputData, newInputData, act
181
221
  throw new Error(`Invalid arguments for Psbt.${action}. ` +
182
222
  `Cannot use both taproot and non-taproot fields.`);
183
223
  }
224
+ /**
225
+ * Checks if the tap leaf is part of the tap tree for the given input data.
226
+ * Throws an error if the tap leaf is not part of the tap tree.
227
+ * @param inputData - The original PsbtInput data.
228
+ * @param newInputData - The new PsbtInput data.
229
+ * @param action - The action being performed.
230
+ * @throws {Error} - If the tap leaf is not part of the tap tree.
231
+ */
184
232
  function checkIfTapLeafInTree(inputData, newInputData, action) {
185
233
  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));
234
+ const merkleRoot = new Uint8Array(newInputData.tapMerkleRoot);
235
+ const newLeafsInTree = (newInputData.tapLeafScript || []).every((l) => isTapLeafInTree(l, merkleRoot));
236
+ const oldLeafsInTree = (inputData.tapLeafScript || []).every((l) => isTapLeafInTree(l, merkleRoot));
188
237
  if (!newLeafsInTree || !oldLeafsInTree)
189
238
  throw new Error(`Invalid arguments for Psbt.${action}. Tapleaf not part of taptree.`);
190
239
  }
191
240
  else if (inputData.tapMerkleRoot) {
192
- const newLeafsInTree = (newInputData.tapLeafScript || []).every((l) => isTapLeafInTree(l, inputData.tapMerkleRoot));
241
+ const merkleRoot = new Uint8Array(inputData.tapMerkleRoot);
242
+ const newLeafsInTree = (newInputData.tapLeafScript || []).every((l) => isTapLeafInTree(l, merkleRoot));
193
243
  if (!newLeafsInTree)
194
244
  throw new Error(`Invalid arguments for Psbt.${action}. Tapleaf not part of taptree.`);
195
245
  }
196
246
  }
247
+ /**
248
+ * Checks if a TapLeafScript is present in a Merkle tree.
249
+ * @param tapLeaf The TapLeafScript to check.
250
+ * @param merkleRoot The Merkle root of the tree. If not provided, the function assumes the TapLeafScript is present.
251
+ * @returns A boolean indicating whether the TapLeafScript is present in the tree.
252
+ */
197
253
  function isTapLeafInTree(tapLeaf, merkleRoot) {
198
254
  if (!merkleRoot)
199
255
  return true;
200
256
  const leafHash = tapleafHash({
201
- output: tapLeaf.script,
257
+ output: new Uint8Array(tapLeaf.script),
202
258
  version: tapLeaf.leafVersion,
203
259
  });
204
- const rootHash = rootHashFromPath(tapLeaf.controlBlock, leafHash);
205
- return rootHash.equals(merkleRoot);
260
+ const rootHash = rootHashFromPath(new Uint8Array(tapLeaf.controlBlock), leafHash);
261
+ return equals(rootHash, merkleRoot);
206
262
  }
263
+ /**
264
+ * Sorts the signatures in the input's tapScriptSig array based on their position in the tapLeaf script.
265
+ *
266
+ * @param input - The PsbtInput object.
267
+ * @param tapLeaf - The TapLeafScript object.
268
+ * @returns An array of sorted signatures as Uint8Arrays.
269
+ */
207
270
  function sortSignatures(input, tapLeaf) {
271
+ const tapLeafScript = new Uint8Array(tapLeaf.script);
208
272
  const leafHash = tapleafHash({
209
- output: tapLeaf.script,
273
+ output: tapLeafScript,
210
274
  version: tapLeaf.leafVersion,
211
275
  });
212
276
  return (input.tapScriptSig || [])
213
- .filter((tss) => tss.leafHash.equals(leafHash))
214
- .map((tss) => addPubkeyPositionInScript(tapLeaf.script, tss))
277
+ .filter((tss) => equals(new Uint8Array(tss.leafHash), leafHash))
278
+ .map((tss) => addPubkeyPositionInScript(tapLeafScript, tss))
215
279
  .sort((t1, t2) => t2.positionInScript - t1.positionInScript)
216
- .map((t) => t.signature);
280
+ .map((t) => new Uint8Array(t.signature));
217
281
  }
282
+ /**
283
+ * Adds the position of a public key in a script to a TapScriptSig object.
284
+ * @param script The script in which to find the position of the public key.
285
+ * @param tss The TapScriptSig object to add the position to.
286
+ * @returns A TapScriptSigWitPosition object with the added position.
287
+ */
218
288
  function addPubkeyPositionInScript(script, tss) {
219
289
  return Object.assign({
220
- positionInScript: pubkeyPositionInScript(tss.pubkey, script),
290
+ positionInScript: pubkeyPositionInScript(new Uint8Array(tss.pubkey), script),
221
291
  }, tss);
222
292
  }
293
+ /**
294
+ * Find tapleaf by hash, or get the signed tapleaf with the shortest path.
295
+ */
223
296
  function findTapLeafToFinalize(input, inputIndex, leafHashToFinalize) {
224
297
  const { tapScriptSig } = input;
225
298
  if (!tapScriptSig || !tapScriptSig.length)
@@ -231,15 +304,31 @@ function findTapLeafToFinalize(input, inputIndex, leafHashToFinalize) {
231
304
  throw new Error(`Can not finalize taproot input #${inputIndex}. Signature for tapleaf script not found.`);
232
305
  return tapLeaf;
233
306
  }
307
+ /**
308
+ * Determines whether a TapLeafScript can be finalized.
309
+ *
310
+ * @param leaf - The TapLeafScript to check.
311
+ * @param tapScriptSig - The array of TapScriptSig objects.
312
+ * @param hash - The optional hash to compare with the leaf hash.
313
+ * @returns A boolean indicating whether the TapLeafScript can be finalized.
314
+ */
234
315
  function canFinalizeLeaf(leaf, tapScriptSig, hash) {
235
316
  const leafHash = tapleafHash({
236
- output: leaf.script,
317
+ output: new Uint8Array(leaf.script),
237
318
  version: leaf.leafVersion,
238
319
  });
239
- const whiteListedHash = !hash || hash.equals(leafHash);
240
- return (whiteListedHash && tapScriptSig.find((tss) => tss.leafHash.equals(leafHash)) !== undefined);
320
+ const whiteListedHash = !hash || equals(hash, leafHash);
321
+ return (whiteListedHash &&
322
+ tapScriptSig.find((tss) => equals(new Uint8Array(tss.leafHash), leafHash)) !== undefined);
241
323
  }
324
+ /**
325
+ * Checks if the given PsbtInput or PsbtOutput has non-taproot fields.
326
+ * Non-taproot fields include redeemScript, witnessScript, and bip32Derivation.
327
+ * @param io The PsbtInput or PsbtOutput to check.
328
+ * @returns A boolean indicating whether the given input or output has non-taproot fields.
329
+ */
242
330
  function hasNonTaprootFields(io) {
243
331
  return (io &&
244
332
  !!(io.redeemScript || io.witnessScript || (io.bip32Derivation && io.bip32Derivation.length)));
245
333
  }
334
+ //# 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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"}