@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
@@ -1,44 +1,225 @@
1
+ /**
2
+ * OP_RETURN Embed payment class.
3
+ *
4
+ * Embed payments use OP_RETURN to store arbitrary data in the blockchain.
5
+ * These outputs are provably unspendable.
6
+ *
7
+ * @packageDocumentation
8
+ */
1
9
  import { bitcoin as BITCOIN_NETWORK } from '../networks.js';
2
10
  import * as bscript from '../script.js';
3
- import { stacksEqual, typeforce as typef } from '../types.js';
11
+ import { stacksEqual } from '../types.js';
4
12
  import { PaymentType } from './types.js';
5
- import * as lazy from './lazy.js';
6
13
  const OPS = bscript.opcodes;
7
- export function p2data(a, opts) {
8
- if (!a.data && !a.output)
9
- throw new TypeError('Not enough data');
10
- opts = Object.assign({ validate: true }, opts || {});
11
- typef({
12
- network: typef.maybe(typef.Object),
13
- output: typef.maybe(typef.Buffer),
14
- data: typef.maybe(typef.arrayOf(typef.Buffer)),
15
- }, a);
16
- const network = a.network || BITCOIN_NETWORK;
17
- const o = { name: PaymentType.Embed, network, data: [] };
18
- lazy.prop(o, 'output', () => {
19
- if (!a.data)
20
- return;
21
- return bscript.compile([OPS.OP_RETURN].concat(a.data));
22
- });
23
- lazy.prop(o, 'data', () => {
24
- if (!a.output)
25
- return;
26
- const script = bscript.decompile(a.output);
27
- if (script === null || script === undefined) {
28
- return;
29
- }
30
- return script.slice(1);
31
- });
32
- if (opts.validate) {
33
- if (a.output) {
34
- const chunks = bscript.decompile(a.output);
35
- if (chunks[0] !== OPS.OP_RETURN)
14
+ /**
15
+ * OP_RETURN Embed payment class.
16
+ *
17
+ * Creates outputs of the form: `OP_RETURN {data1} {data2} ...`
18
+ * These outputs are provably unspendable and used for data storage.
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * import { Embed } from '@btc-vision/bitcoin';
23
+ *
24
+ * // Create from data
25
+ * const payment = Embed.fromData([Buffer.from('Hello, Bitcoin!')]);
26
+ * console.log(payment.output); // scriptPubKey with OP_RETURN
27
+ *
28
+ * // Decode an existing output
29
+ * const decoded = Embed.fromOutput(scriptPubKey);
30
+ * console.log(decoded.data); // array of data chunks
31
+ * ```
32
+ */
33
+ export class Embed {
34
+ // Static public fields
35
+ static NAME = PaymentType.Embed;
36
+ // Private instance fields
37
+ #network;
38
+ #opts;
39
+ // Input data (provided by user)
40
+ #inputData;
41
+ #inputOutput;
42
+ // Cached computed values
43
+ #data;
44
+ #output;
45
+ // Cache flags
46
+ #dataComputed = false;
47
+ #outputComputed = false;
48
+ /**
49
+ * Creates a new Embed payment instance.
50
+ *
51
+ * @param params - Payment parameters
52
+ * @param params.data - Array of data chunks to embed
53
+ * @param params.output - The scriptPubKey
54
+ * @param params.network - Network parameters (defaults to mainnet)
55
+ * @param opts - Payment options
56
+ * @param opts.validate - Whether to validate inputs (default: true)
57
+ *
58
+ * @throws {TypeError} If validation is enabled and data is invalid
59
+ */
60
+ constructor(params, opts) {
61
+ this.#network = params.network ?? BITCOIN_NETWORK;
62
+ this.#opts = {
63
+ validate: opts?.validate ?? true,
64
+ allowIncomplete: opts?.allowIncomplete ?? false,
65
+ };
66
+ // Store input data
67
+ this.#inputData = params.data;
68
+ this.#inputOutput = params.output;
69
+ // Validate if requested
70
+ if (this.#opts.validate) {
71
+ this.#validate();
72
+ }
73
+ }
74
+ // Public getters
75
+ /**
76
+ * Payment type discriminant.
77
+ */
78
+ get name() {
79
+ return PaymentType.Embed;
80
+ }
81
+ /**
82
+ * Network parameters.
83
+ */
84
+ get network() {
85
+ return this.#network;
86
+ }
87
+ /**
88
+ * The embedded data chunks.
89
+ */
90
+ get data() {
91
+ if (!this.#dataComputed) {
92
+ this.#data = this.#computeData();
93
+ this.#dataComputed = true;
94
+ }
95
+ return this.#data ?? [];
96
+ }
97
+ /**
98
+ * The scriptPubKey: `OP_RETURN {data...}`
99
+ */
100
+ get output() {
101
+ if (!this.#outputComputed) {
102
+ this.#output = this.#computeOutput();
103
+ this.#outputComputed = true;
104
+ }
105
+ return this.#output;
106
+ }
107
+ // Static factory methods
108
+ /**
109
+ * Creates an Embed payment from data chunks.
110
+ *
111
+ * @param data - Array of data chunks to embed
112
+ * @param network - Network parameters (defaults to mainnet)
113
+ * @returns A new Embed payment instance
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * const payment = Embed.fromData([
118
+ * new TextEncoder().encode('Hello'),
119
+ * new TextEncoder().encode('Bitcoin')
120
+ * ]);
121
+ * ```
122
+ */
123
+ static fromData(data, network) {
124
+ return new Embed({ data, network });
125
+ }
126
+ /**
127
+ * Creates an Embed payment from a scriptPubKey.
128
+ *
129
+ * @param output - The scriptPubKey
130
+ * @param network - Network parameters (defaults to mainnet)
131
+ * @returns A new Embed payment instance
132
+ */
133
+ static fromOutput(output, network) {
134
+ return new Embed({ output, network });
135
+ }
136
+ // Private computation methods
137
+ #computeData() {
138
+ if (this.#inputData) {
139
+ return this.#inputData;
140
+ }
141
+ if (this.#inputOutput) {
142
+ const script = bscript.decompile(this.#inputOutput);
143
+ if (script === null || script === undefined) {
144
+ return undefined;
145
+ }
146
+ return script.slice(1);
147
+ }
148
+ return undefined;
149
+ }
150
+ #computeOutput() {
151
+ if (this.#inputOutput) {
152
+ return this.#inputOutput;
153
+ }
154
+ if (!this.#inputData) {
155
+ return undefined;
156
+ }
157
+ return bscript.compile([OPS.OP_RETURN].concat(this.#inputData));
158
+ }
159
+ // Validation
160
+ #validate() {
161
+ if (this.#inputOutput) {
162
+ const chunks = bscript.decompile(this.#inputOutput);
163
+ if (!chunks) {
36
164
  throw new TypeError('Output is invalid');
37
- if (!chunks.slice(1).every(typef.Buffer))
165
+ }
166
+ if (chunks[0] !== OPS.OP_RETURN) {
38
167
  throw new TypeError('Output is invalid');
39
- if (a.data && !stacksEqual(a.data, o.data))
168
+ }
169
+ if (!chunks.slice(1).every((c) => c instanceof Uint8Array)) {
170
+ throw new TypeError('Output is invalid');
171
+ }
172
+ if (this.#inputData && !stacksEqual(this.#inputData, this.data)) {
40
173
  throw new TypeError('Data mismatch');
174
+ }
41
175
  }
42
176
  }
43
- return Object.assign(o, a);
177
+ /**
178
+ * Converts to a plain EmbedPayment object for backwards compatibility.
179
+ *
180
+ * @returns An EmbedPayment object
181
+ */
182
+ toPayment() {
183
+ return {
184
+ name: this.name,
185
+ network: this.network,
186
+ data: this.data,
187
+ output: this.output,
188
+ };
189
+ }
190
+ }
191
+ /**
192
+ * Creates an OP_RETURN Embed payment object.
193
+ *
194
+ * This is the legacy factory function for backwards compatibility.
195
+ * For new code, prefer using the Embed class directly.
196
+ *
197
+ * @param a - The payment object containing the necessary data
198
+ * @param opts - Optional payment options
199
+ * @returns The Embed payment object
200
+ * @throws {TypeError} If the required data is not provided or if the data is invalid
201
+ *
202
+ * @example
203
+ * ```typescript
204
+ * import { p2data } from '@btc-vision/bitcoin';
205
+ *
206
+ * // Create from data
207
+ * const payment = p2data({ data: [Buffer.from('Hello')] });
208
+ *
209
+ * // Decode from output
210
+ * const decoded = p2data({ output: scriptPubKey });
211
+ * ```
212
+ */
213
+ export function p2data(a, opts) {
214
+ if (!a.data && !a.output) {
215
+ throw new TypeError('Not enough data');
216
+ }
217
+ const instance = new Embed({
218
+ data: a.data,
219
+ output: a.output,
220
+ network: a.network,
221
+ }, opts);
222
+ // Return a merged object for backwards compatibility
223
+ return Object.assign(instance.toPayment(), a);
44
224
  }
225
+ //# sourceMappingURL=embed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed.js","sourceRoot":"","sources":["../../src/payments/embed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,IAAI,eAAe,EAAgB,MAAM,gBAAgB,CAAC;AAC1E,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAc,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAuC,MAAM,YAAY,CAAC;AAE9E,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;AAE5B;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,KAAK;IACd,uBAAuB;IACvB,MAAM,CAAU,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC;IAEzC,0BAA0B;IACjB,QAAQ,CAAU;IAClB,KAAK,CAAwB;IAEtC,gCAAgC;IAChC,UAAU,CAA4B;IACtC,YAAY,CAA0B;IAEtC,yBAAyB;IACzB,KAAK,CAA4B;IACjC,OAAO,CAA0B;IAEjC,cAAc;IACd,aAAa,GAAG,KAAK,CAAC;IACtB,eAAe,GAAG,KAAK,CAAC;IAExB;;;;;;;;;;;OAWG;IACH,YACI,MAIC,EACD,IAAkB;QAElB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,eAAe,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG;YACT,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI;YAChC,eAAe,EAAE,IAAI,EAAE,eAAe,IAAI,KAAK;SAClD,CAAC;QAEF,mBAAmB;QACnB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QAElC,wBAAwB;QACxB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,EAAE,CAAC;QACrB,CAAC;IACL,CAAC;IAED,iBAAiB;IAEjB;;OAEG;IACH,IAAI,IAAI;QACJ,OAAO,WAAW,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACJ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACN,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACrC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC,OAA6B,CAAC;IAC9C,CAAC;IAED,yBAAyB;IAEzB;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAkB,EAAE,OAAiB;QACjD,OAAO,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAkB,EAAE,OAAiB;QACnD,OAAO,IAAI,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,8BAA8B;IAE9B,YAAY;QACR,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,UAAU,CAAC;QAC3B,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC1C,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAiB,CAAC;QAC3C,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,cAAc;QACV,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,YAAY,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAE,CAAC,GAAG,CAAC,SAAS,CAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAW,CAAC;IACzF,CAAC;IAED,aAAa;IAEb,SAAS;QACL,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,SAAS,EAAE,CAAC;gBAC9B,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,UAAU,CAAC,EAAE,CAAC;gBACzD,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9D,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,SAAS;QACL,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC;IACN,CAAC;;AAGL;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,MAAM,CAAC,CAA6B,EAAE,IAAkB;IACpE,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,KAAK,CACtB;QACI,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,OAAO,EAAE,CAAC,CAAC,OAAO;KACrB,EACD,IAAI,CACP,CAAC;IAEF,qDAAqD;IACrD,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;AAClD,CAAC"}
@@ -1,12 +1,19 @@
1
+ /**
2
+ * Represents a payment object, which is used to create a payment.
3
+ *
4
+ * Supports P2PKH、P2SH、P2WPKH、P2WSH、P2TR and so on
5
+ *
6
+ * @packageDocumentation
7
+ */
1
8
  export { PaymentType, type BasePayment, type ScriptRedeem, type P2PKPayment, type P2PKHPayment, type P2SHPayment, type P2MSPayment, type P2WPKHPayment, type P2WSHPayment, type P2TRPayment, type P2OPPayment, type P2OPPaymentParams, type EmbedPayment, type Payment, type PaymentCreator, type PaymentOpts, } from './types.js';
2
- export { p2data } from './embed.js';
3
- export { prop, value } from './lazy.js';
4
- export { p2ms } from './p2ms.js';
5
- export { p2pk } from './p2pk.js';
6
- export { p2pkh } from './p2pkh.js';
7
- export { p2sh } from './p2sh.js';
8
- export { p2tr } from './p2tr.js';
9
- export { p2wpkh } from './p2wpkh.js';
10
- export { p2wsh } from './p2wsh.js';
11
- export { p2op } from './p2op.js';
9
+ export { P2PK, p2pk } from './p2pk.js';
10
+ export { P2PKH, p2pkh } from './p2pkh.js';
11
+ export { P2WPKH, p2wpkh } from './p2wpkh.js';
12
+ export { Embed, p2data } from './embed.js';
13
+ export { P2MS, p2ms } from './p2ms.js';
14
+ export { P2SH, p2sh } from './p2sh.js';
15
+ export { P2WSH, p2wsh } from './p2wsh.js';
16
+ export { P2TR, p2tr } from './p2tr.js';
17
+ export { P2OP, p2op } from './p2op.js';
12
18
  export { findScriptPath, LEAF_VERSION_TAPSCRIPT, MAX_TAPTREE_DEPTH, rootHashFromPath, tapleafHash, toHashTree, tweakKey, type HashTree, } from './bip341.js';
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACH,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,WAAW,GACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGvC,OAAO,EACH,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,QAAQ,EACR,KAAK,QAAQ,GAChB,MAAM,aAAa,CAAC"}
@@ -1,12 +1,22 @@
1
+ /**
2
+ * Represents a payment object, which is used to create a payment.
3
+ *
4
+ * Supports P2PKH、P2SH、P2WPKH、P2WSH、P2TR and so on
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ // Type exports
1
9
  export { PaymentType, } from './types.js';
2
- export { p2data } from './embed.js';
3
- export { prop, value } from './lazy.js';
4
- export { p2ms } from './p2ms.js';
5
- export { p2pk } from './p2pk.js';
6
- export { p2pkh } from './p2pkh.js';
7
- export { p2sh } from './p2sh.js';
8
- export { p2tr } from './p2tr.js';
9
- export { p2wpkh } from './p2wpkh.js';
10
- export { p2wsh } from './p2wsh.js';
11
- export { p2op } from './p2op.js';
10
+ // Class exports (new pattern)
11
+ export { P2PK, p2pk } from './p2pk.js';
12
+ export { P2PKH, p2pkh } from './p2pkh.js';
13
+ export { P2WPKH, p2wpkh } from './p2wpkh.js';
14
+ export { Embed, p2data } from './embed.js';
15
+ export { P2MS, p2ms } from './p2ms.js';
16
+ export { P2SH, p2sh } from './p2sh.js';
17
+ export { P2WSH, p2wsh } from './p2wsh.js';
18
+ export { P2TR, p2tr } from './p2tr.js';
19
+ export { P2OP, p2op } from './p2op.js';
20
+ // BIP341 Taproot utilities
12
21
  export { findScriptPath, LEAF_VERSION_TAPSCRIPT, MAX_TAPTREE_DEPTH, rootHashFromPath, tapleafHash, toHashTree, tweakKey, } from './bip341.js';
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAe;AACf,OAAO,EACH,WAAW,GAgBd,MAAM,YAAY,CAAC;AAEpB,8BAA8B;AAC9B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEvC,2BAA2B;AAC3B,OAAO,EACH,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,QAAQ,GAEX,MAAM,aAAa,CAAC"}
@@ -1,2 +1,160 @@
1
- import { P2MSPayment, PaymentOpts } from './types.js';
1
+ /**
2
+ * Pay-to-Multisig (P2MS) payment class.
3
+ *
4
+ * P2MS is a bare multisig script where M-of-N signatures are required
5
+ * to spend the output. The public keys are embedded directly in the script.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import { type Network } from '../networks.js';
10
+ import { type PublicKey, type Script, type Signature } from '../types.js';
11
+ import { type P2MSPayment, type PaymentOpts } from './types.js';
12
+ /**
13
+ * Pay-to-Multisig (P2MS) payment class.
14
+ *
15
+ * Creates locking scripts of the form:
16
+ * `m {pubKey1} {pubKey2} ... {pubKeyN} n OP_CHECKMULTISIG`
17
+ *
18
+ * Spending requires: `OP_0 {sig1} {sig2} ... {sigM}`
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * import { P2MS } from '@btc-vision/bitcoin';
23
+ *
24
+ * // Create a 2-of-3 multisig
25
+ * const payment = P2MS.fromPubkeys(2, [pubkey1, pubkey2, pubkey3]);
26
+ * console.log(payment.output); // scriptPubKey
27
+ * console.log(payment.m); // 2
28
+ * console.log(payment.n); // 3
29
+ *
30
+ * // Decode an existing output
31
+ * const decoded = P2MS.fromOutput(scriptPubKey);
32
+ * console.log(decoded.pubkeys); // array of public keys
33
+ * ```
34
+ */
35
+ export declare class P2MS {
36
+ #private;
37
+ static readonly NAME: "p2ms";
38
+ /**
39
+ * Creates a new P2MS payment instance.
40
+ *
41
+ * @param params - Payment parameters
42
+ * @param params.m - Required number of signatures
43
+ * @param params.n - Total number of public keys (optional, derived from pubkeys)
44
+ * @param params.pubkeys - Array of public keys
45
+ * @param params.signatures - Array of signatures
46
+ * @param params.output - The scriptPubKey
47
+ * @param params.input - The scriptSig
48
+ * @param params.network - Network parameters (defaults to mainnet)
49
+ * @param opts - Payment options
50
+ * @param opts.validate - Whether to validate inputs (default: true)
51
+ * @param opts.allowIncomplete - Allow incomplete signatures (default: false)
52
+ *
53
+ * @throws {TypeError} If validation is enabled and data is invalid
54
+ */
55
+ constructor(params: {
56
+ m?: number | undefined;
57
+ n?: number | undefined;
58
+ pubkeys?: Uint8Array[] | undefined;
59
+ signatures?: Uint8Array[] | undefined;
60
+ output?: Uint8Array | undefined;
61
+ input?: Uint8Array | undefined;
62
+ network?: Network | undefined;
63
+ }, opts?: PaymentOpts);
64
+ /**
65
+ * Payment type discriminant.
66
+ */
67
+ get name(): string;
68
+ /**
69
+ * Network parameters.
70
+ */
71
+ get network(): Network;
72
+ /**
73
+ * Required number of signatures (M in M-of-N).
74
+ */
75
+ get m(): number | undefined;
76
+ /**
77
+ * Total number of public keys (N in M-of-N).
78
+ */
79
+ get n(): number | undefined;
80
+ /**
81
+ * Array of public keys.
82
+ */
83
+ get pubkeys(): PublicKey[] | undefined;
84
+ /**
85
+ * Array of signatures.
86
+ */
87
+ get signatures(): Signature[] | undefined;
88
+ /**
89
+ * The scriptPubKey: `m {pubkeys} n OP_CHECKMULTISIG`
90
+ */
91
+ get output(): Script | undefined;
92
+ /**
93
+ * The scriptSig: `OP_0 {signatures}`
94
+ */
95
+ get input(): Script | undefined;
96
+ /**
97
+ * Witness stack (empty for P2MS as it's not a SegWit type).
98
+ */
99
+ get witness(): Uint8Array[] | undefined;
100
+ /**
101
+ * Creates a P2MS payment from public keys.
102
+ *
103
+ * @param m - Required number of signatures
104
+ * @param pubkeys - Array of public keys
105
+ * @param network - Network parameters (defaults to mainnet)
106
+ * @returns A new P2MS payment instance
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * // Create a 2-of-3 multisig
111
+ * const payment = P2MS.fromPubkeys(2, [pubkey1, pubkey2, pubkey3]);
112
+ * ```
113
+ */
114
+ static fromPubkeys(m: number, pubkeys: PublicKey[], network?: Network): P2MS;
115
+ /**
116
+ * Creates a P2MS payment from a scriptPubKey.
117
+ *
118
+ * @param output - The scriptPubKey
119
+ * @param network - Network parameters (defaults to mainnet)
120
+ * @returns A new P2MS payment instance
121
+ */
122
+ static fromOutput(output: Uint8Array, network?: Network): P2MS;
123
+ /**
124
+ * Creates a P2MS payment from signatures (for spending).
125
+ *
126
+ * @param signatures - Array of signatures
127
+ * @param m - Required number of signatures (optional)
128
+ * @param pubkeys - Array of public keys (optional, for validation)
129
+ * @param network - Network parameters (defaults to mainnet)
130
+ * @returns A new P2MS payment instance
131
+ */
132
+ static fromSignatures(signatures: Signature[], m?: number, pubkeys?: PublicKey[], network?: Network): P2MS;
133
+ /**
134
+ * Converts to a plain P2MSPayment object for backwards compatibility.
135
+ *
136
+ * @returns A P2MSPayment object
137
+ */
138
+ toPayment(): P2MSPayment;
139
+ }
140
+ /**
141
+ * Creates a Pay-to-Multisig (P2MS) payment object.
142
+ *
143
+ * This is the legacy factory function for backwards compatibility.
144
+ * For new code, prefer using the P2MS class directly.
145
+ *
146
+ * @param a - The payment object containing the necessary data
147
+ * @param opts - Optional payment options
148
+ * @returns The P2MS payment object
149
+ * @throws {TypeError} If the required data is not provided or if the data is invalid
150
+ *
151
+ * @example
152
+ * ```typescript
153
+ * import { p2ms } from '@btc-vision/bitcoin';
154
+ *
155
+ * // Create a 2-of-3 multisig
156
+ * const payment = p2ms({ m: 2, pubkeys: [pubkey1, pubkey2, pubkey3] });
157
+ * ```
158
+ */
2
159
  export declare function p2ms(a: Omit<P2MSPayment, 'name'>, opts?: PaymentOpts): P2MSPayment;
160
+ //# sourceMappingURL=p2ms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p2ms.d.ts","sourceRoot":"","sources":["../../src/payments/p2ms.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAwB,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAc,MAAM,aAAa,CAAC;AAC5G,OAAO,EAAe,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAK7E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,IAAI;;IAEb,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAoB;IAoCxC;;;;;;;;;;;;;;;;OAgBG;gBAEC,MAAM,EAAE;QACJ,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACvB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACvB,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QACnC,UAAU,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QACtC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACjC,EACD,IAAI,CAAC,EAAE,WAAW;IAwBtB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAOjB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,CAAC,IAAI,MAAM,GAAG,SAAS,CAM1B;IAED;;OAEG;IACH,IAAI,CAAC,IAAI,MAAM,GAAG,SAAS,CAM1B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,EAAE,GAAG,SAAS,CAMrC;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,SAAS,EAAE,GAAG,SAAS,CAMxC;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAM/B;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAM9B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,UAAU,EAAE,GAAG,SAAS,CAMtC;IAID;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5E;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI9D;;;;;;;;OAQG;IACH,MAAM,CAAC,cAAc,CACjB,UAAU,EAAE,SAAS,EAAE,EACvB,CAAC,CAAC,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,SAAS,EAAE,EACrB,OAAO,CAAC,EAAE,OAAO,GAClB,IAAI;IAsMP;;;;OAIG;IACH,SAAS,IAAI,WAAW;CAa3B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,CAoBlF"}