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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. package/HOW_TO_WRITE_GOOD_CODE.md +2436 -0
  2. package/benchmark/psbt-2000-inputs.bench.ts +178 -0
  3. package/benchmark/signing.bench.ts +147 -0
  4. package/browser/address.d.ts +57 -10
  5. package/browser/address.d.ts.map +1 -0
  6. package/browser/bech32utils.d.ts +9 -1
  7. package/browser/bech32utils.d.ts.map +1 -0
  8. package/browser/bip66.d.ts +11 -6
  9. package/browser/bip66.d.ts.map +1 -0
  10. package/browser/block.d.ts +117 -11
  11. package/browser/block.d.ts.map +1 -0
  12. package/browser/branded.d.ts +20 -0
  13. package/browser/branded.d.ts.map +1 -0
  14. package/browser/crypto/crypto.d.ts +1 -0
  15. package/browser/crypto/crypto.d.ts.map +1 -0
  16. package/browser/crypto.d.ts +46 -7
  17. package/browser/crypto.d.ts.map +1 -0
  18. package/browser/ecc/context.d.ts +129 -0
  19. package/browser/ecc/context.d.ts.map +1 -0
  20. package/browser/ecc/index.d.ts +11 -0
  21. package/browser/ecc/index.d.ts.map +1 -0
  22. package/browser/ecc/types.d.ts +128 -0
  23. package/browser/ecc/types.d.ts.map +1 -0
  24. package/browser/ecpair.d.ts +99 -0
  25. package/browser/errors.d.ts +124 -0
  26. package/browser/errors.d.ts.map +1 -0
  27. package/browser/index.d.ts +32 -5
  28. package/browser/index.d.ts.map +1 -0
  29. package/browser/index.js +12477 -101
  30. package/browser/io/BinaryReader.d.ts +276 -0
  31. package/browser/io/BinaryReader.d.ts.map +1 -0
  32. package/browser/io/BinaryWriter.d.ts +391 -0
  33. package/browser/io/BinaryWriter.d.ts.map +1 -0
  34. package/browser/io/MemoryPool.d.ts +220 -0
  35. package/browser/io/MemoryPool.d.ts.map +1 -0
  36. package/browser/io/base64.d.ts +13 -0
  37. package/browser/io/base64.d.ts.map +1 -0
  38. package/browser/io/hex.d.ts +67 -0
  39. package/browser/io/hex.d.ts.map +1 -0
  40. package/browser/io/index.d.ts +17 -0
  41. package/browser/io/index.d.ts.map +1 -0
  42. package/browser/io/utils.d.ts +199 -0
  43. package/browser/io/utils.d.ts.map +1 -0
  44. package/browser/merkle.d.ts +10 -1
  45. package/browser/merkle.d.ts.map +1 -0
  46. package/browser/networks.d.ts +70 -9
  47. package/browser/networks.d.ts.map +1 -0
  48. package/browser/opcodes.d.ts +1 -0
  49. package/browser/opcodes.d.ts.map +1 -0
  50. package/browser/payments/bip341.d.ts +35 -9
  51. package/browser/payments/bip341.d.ts.map +1 -0
  52. package/browser/payments/embed.d.ts +112 -1
  53. package/browser/payments/embed.d.ts.map +1 -0
  54. package/browser/payments/index.d.ts +17 -10
  55. package/browser/payments/index.d.ts.map +1 -0
  56. package/browser/payments/p2ms.d.ts +150 -0
  57. package/browser/payments/p2ms.d.ts.map +1 -0
  58. package/browser/payments/p2op.d.ts +150 -24
  59. package/browser/payments/p2op.d.ts.map +1 -0
  60. package/browser/payments/p2pk.d.ts +154 -1
  61. package/browser/payments/p2pk.d.ts.map +1 -0
  62. package/browser/payments/p2pkh.d.ts +176 -1
  63. package/browser/payments/p2pkh.d.ts.map +1 -0
  64. package/browser/payments/p2sh.d.ts +150 -1
  65. package/browser/payments/p2sh.d.ts.map +1 -0
  66. package/browser/payments/p2tr.d.ts +185 -1
  67. package/browser/payments/p2tr.d.ts.map +1 -0
  68. package/browser/payments/p2wpkh.d.ts +161 -1
  69. package/browser/payments/p2wpkh.d.ts.map +1 -0
  70. package/browser/payments/p2wsh.d.ts +146 -1
  71. package/browser/payments/p2wsh.d.ts.map +1 -0
  72. package/browser/payments/types.d.ts +94 -64
  73. package/browser/payments/types.d.ts.map +1 -0
  74. package/browser/psbt/bip371.d.ts +34 -8
  75. package/browser/psbt/bip371.d.ts.map +1 -0
  76. package/browser/psbt/psbtutils.d.ts +56 -16
  77. package/browser/psbt/psbtutils.d.ts.map +1 -0
  78. package/browser/psbt/types.d.ts +245 -0
  79. package/browser/psbt/types.d.ts.map +1 -0
  80. package/browser/psbt/utils.d.ts +64 -0
  81. package/browser/psbt/utils.d.ts.map +1 -0
  82. package/browser/psbt/validation.d.ts +84 -0
  83. package/browser/psbt/validation.d.ts.map +1 -0
  84. package/browser/psbt.d.ts +82 -118
  85. package/browser/psbt.d.ts.map +1 -0
  86. package/browser/pubkey.d.ts +27 -6
  87. package/browser/pubkey.d.ts.map +1 -0
  88. package/browser/push_data.d.ts +24 -2
  89. package/browser/push_data.d.ts.map +1 -0
  90. package/browser/script.d.ts +33 -8
  91. package/browser/script.d.ts.map +1 -0
  92. package/browser/script_number.d.ts +17 -0
  93. package/browser/script_number.d.ts.map +1 -0
  94. package/browser/script_signature.d.ts +23 -5
  95. package/browser/script_signature.d.ts.map +1 -0
  96. package/browser/transaction.d.ts +160 -18
  97. package/browser/transaction.d.ts.map +1 -0
  98. package/browser/types.d.ts +36 -38
  99. package/browser/types.d.ts.map +1 -0
  100. package/browser/workers/WorkerSigningPool.d.ts +143 -0
  101. package/browser/workers/WorkerSigningPool.d.ts.map +1 -0
  102. package/browser/workers/WorkerSigningPool.node.d.ts +116 -0
  103. package/browser/workers/WorkerSigningPool.node.d.ts.map +1 -0
  104. package/browser/workers/ecc-bundle.d.ts +25 -0
  105. package/browser/workers/ecc-bundle.d.ts.map +1 -0
  106. package/browser/workers/index.d.ts +91 -0
  107. package/browser/workers/index.d.ts.map +1 -0
  108. package/browser/workers/psbt-parallel.d.ts +88 -0
  109. package/browser/workers/psbt-parallel.d.ts.map +1 -0
  110. package/browser/workers/signing-worker.d.ts +37 -0
  111. package/browser/workers/signing-worker.d.ts.map +1 -0
  112. package/browser/workers/types.d.ts +365 -0
  113. package/browser/workers/types.d.ts.map +1 -0
  114. package/build/address.d.ts +58 -11
  115. package/build/address.d.ts.map +1 -0
  116. package/build/address.js +82 -25
  117. package/build/address.js.map +1 -0
  118. package/build/bech32utils.d.ts +9 -1
  119. package/build/bech32utils.d.ts.map +1 -0
  120. package/build/bech32utils.js +10 -2
  121. package/build/bech32utils.js.map +1 -0
  122. package/build/bip66.d.ts +11 -6
  123. package/build/bip66.d.ts.map +1 -0
  124. package/build/bip66.js +32 -3
  125. package/build/bip66.js.map +1 -0
  126. package/build/block.d.ts +117 -11
  127. package/build/block.d.ts.map +1 -0
  128. package/build/block.js +202 -72
  129. package/build/block.js.map +1 -0
  130. package/build/branded.d.ts +20 -0
  131. package/build/branded.d.ts.map +1 -0
  132. package/build/branded.js +7 -0
  133. package/build/branded.js.map +1 -0
  134. package/build/crypto/crypto.d.ts +1 -0
  135. package/build/crypto/crypto.d.ts.map +1 -0
  136. package/build/crypto/crypto.js +1 -0
  137. package/build/crypto/crypto.js.map +1 -0
  138. package/build/crypto.d.ts +46 -7
  139. package/build/crypto.d.ts.map +1 -0
  140. package/build/crypto.js +65 -20
  141. package/build/crypto.js.map +1 -0
  142. package/build/ecc/context.d.ts +135 -0
  143. package/build/ecc/context.d.ts.map +1 -0
  144. package/build/ecc/context.js +232 -0
  145. package/build/ecc/context.js.map +1 -0
  146. package/build/ecc/index.d.ts +11 -0
  147. package/build/ecc/index.d.ts.map +1 -0
  148. package/build/ecc/index.js +11 -0
  149. package/build/ecc/index.js.map +1 -0
  150. package/build/ecc/types.d.ts +134 -0
  151. package/build/ecc/types.d.ts.map +1 -0
  152. package/build/ecc/types.js +8 -0
  153. package/build/ecc/types.js.map +1 -0
  154. package/build/errors.d.ts +124 -0
  155. package/build/errors.d.ts.map +1 -0
  156. package/build/errors.js +155 -0
  157. package/build/errors.js.map +1 -0
  158. package/build/index.d.ts +32 -5
  159. package/build/index.d.ts.map +1 -0
  160. package/build/index.js +26 -3
  161. package/build/index.js.map +1 -0
  162. package/build/io/BinaryReader.d.ts +276 -0
  163. package/build/io/BinaryReader.d.ts.map +1 -0
  164. package/build/io/BinaryReader.js +425 -0
  165. package/build/io/BinaryReader.js.map +1 -0
  166. package/build/io/BinaryWriter.d.ts +391 -0
  167. package/build/io/BinaryWriter.d.ts.map +1 -0
  168. package/build/io/BinaryWriter.js +611 -0
  169. package/build/io/BinaryWriter.js.map +1 -0
  170. package/build/io/MemoryPool.d.ts +220 -0
  171. package/build/io/MemoryPool.d.ts.map +1 -0
  172. package/build/io/MemoryPool.js +309 -0
  173. package/build/io/MemoryPool.js.map +1 -0
  174. package/build/io/base64.d.ts +13 -0
  175. package/build/io/base64.d.ts.map +1 -0
  176. package/build/io/base64.js +20 -0
  177. package/build/io/base64.js.map +1 -0
  178. package/build/io/hex.d.ts +67 -0
  179. package/build/io/hex.d.ts.map +1 -0
  180. package/build/io/hex.js +138 -0
  181. package/build/io/hex.js.map +1 -0
  182. package/build/io/index.d.ts +17 -0
  183. package/build/io/index.d.ts.map +1 -0
  184. package/build/io/index.js +23 -0
  185. package/build/io/index.js.map +1 -0
  186. package/build/io/utils.d.ts +199 -0
  187. package/build/io/utils.d.ts.map +1 -0
  188. package/build/io/utils.js +271 -0
  189. package/build/io/utils.js.map +1 -0
  190. package/build/merkle.d.ts +10 -1
  191. package/build/merkle.d.ts.map +1 -0
  192. package/build/merkle.js +12 -1
  193. package/build/merkle.js.map +1 -0
  194. package/build/networks.d.ts +70 -9
  195. package/build/networks.d.ts.map +1 -0
  196. package/build/networks.js +90 -4
  197. package/build/networks.js.map +1 -0
  198. package/build/opcodes.d.ts +1 -0
  199. package/build/opcodes.d.ts.map +1 -0
  200. package/build/opcodes.js +1 -0
  201. package/build/opcodes.js.map +1 -0
  202. package/build/payments/bip341.d.ts +35 -9
  203. package/build/payments/bip341.d.ts.map +1 -0
  204. package/build/payments/bip341.js +34 -15
  205. package/build/payments/bip341.js.map +1 -0
  206. package/build/payments/embed.d.ts +120 -1
  207. package/build/payments/embed.d.ts.map +1 -0
  208. package/build/payments/embed.js +215 -34
  209. package/build/payments/embed.js.map +1 -0
  210. package/build/payments/index.d.ts +17 -10
  211. package/build/payments/index.d.ts.map +1 -0
  212. package/build/payments/index.js +20 -10
  213. package/build/payments/index.js.map +1 -0
  214. package/build/payments/p2ms.d.ts +159 -1
  215. package/build/payments/p2ms.d.ts.map +1 -0
  216. package/build/payments/p2ms.js +427 -108
  217. package/build/payments/p2ms.js.map +1 -0
  218. package/build/payments/p2op.d.ts +158 -24
  219. package/build/payments/p2op.d.ts.map +1 -0
  220. package/build/payments/p2op.js +379 -93
  221. package/build/payments/p2op.js.map +1 -0
  222. package/build/payments/p2pk.d.ts +162 -1
  223. package/build/payments/p2pk.d.ts.map +1 -0
  224. package/build/payments/p2pk.js +327 -58
  225. package/build/payments/p2pk.js.map +1 -0
  226. package/build/payments/p2pkh.d.ts +185 -1
  227. package/build/payments/p2pkh.d.ts.map +1 -0
  228. package/build/payments/p2pkh.js +467 -114
  229. package/build/payments/p2pkh.js.map +1 -0
  230. package/build/payments/p2sh.d.ts +159 -1
  231. package/build/payments/p2sh.d.ts.map +1 -0
  232. package/build/payments/p2sh.js +500 -150
  233. package/build/payments/p2sh.js.map +1 -0
  234. package/build/payments/p2tr.d.ts +193 -1
  235. package/build/payments/p2tr.d.ts.map +1 -0
  236. package/build/payments/p2tr.js +592 -174
  237. package/build/payments/p2tr.js.map +1 -0
  238. package/build/payments/p2wpkh.d.ts +170 -1
  239. package/build/payments/p2wpkh.d.ts.map +1 -0
  240. package/build/payments/p2wpkh.js +428 -103
  241. package/build/payments/p2wpkh.js.map +1 -0
  242. package/build/payments/p2wsh.d.ts +155 -1
  243. package/build/payments/p2wsh.d.ts.map +1 -0
  244. package/build/payments/p2wsh.js +465 -143
  245. package/build/payments/p2wsh.js.map +1 -0
  246. package/build/payments/types.d.ts +98 -64
  247. package/build/payments/types.d.ts.map +1 -0
  248. package/build/payments/types.js +17 -13
  249. package/build/payments/types.js.map +1 -0
  250. package/build/psbt/bip371.d.ts +35 -9
  251. package/build/psbt/bip371.d.ts.map +1 -0
  252. package/build/psbt/bip371.js +117 -28
  253. package/build/psbt/bip371.js.map +1 -0
  254. package/build/psbt/psbtutils.d.ts +56 -16
  255. package/build/psbt/psbtutils.d.ts.map +1 -0
  256. package/build/psbt/psbtutils.js +71 -16
  257. package/build/psbt/psbtutils.js.map +1 -0
  258. package/build/psbt/types.d.ts +249 -0
  259. package/build/psbt/types.d.ts.map +1 -0
  260. package/build/psbt/types.js +6 -0
  261. package/build/psbt/types.js.map +1 -0
  262. package/build/psbt/utils.d.ts +68 -0
  263. package/build/psbt/utils.d.ts.map +1 -0
  264. package/build/psbt/utils.js +171 -0
  265. package/build/psbt/utils.js.map +1 -0
  266. package/build/psbt/validation.d.ts +88 -0
  267. package/build/psbt/validation.d.ts.map +1 -0
  268. package/build/psbt/validation.js +149 -0
  269. package/build/psbt/validation.js.map +1 -0
  270. package/build/psbt.d.ts +84 -120
  271. package/build/psbt.d.ts.map +1 -0
  272. package/build/psbt.js +406 -413
  273. package/build/psbt.js.map +1 -0
  274. package/build/pubkey.d.ts +27 -6
  275. package/build/pubkey.d.ts.map +1 -0
  276. package/build/pubkey.js +36 -12
  277. package/build/pubkey.js.map +1 -0
  278. package/build/push_data.d.ts +24 -2
  279. package/build/push_data.d.ts.map +1 -0
  280. package/build/push_data.js +44 -12
  281. package/build/push_data.js.map +1 -0
  282. package/build/script.d.ts +33 -8
  283. package/build/script.d.ts.map +1 -0
  284. package/build/script.js +101 -37
  285. package/build/script.js.map +1 -0
  286. package/build/script_number.d.ts +17 -0
  287. package/build/script_number.d.ts.map +1 -0
  288. package/build/script_number.js +19 -0
  289. package/build/script_number.js.map +1 -0
  290. package/build/script_signature.d.ts +23 -5
  291. package/build/script_signature.d.ts.map +1 -0
  292. package/build/script_signature.js +48 -15
  293. package/build/script_signature.js.map +1 -0
  294. package/build/transaction.d.ts +160 -18
  295. package/build/transaction.d.ts.map +1 -0
  296. package/build/transaction.js +443 -176
  297. package/build/transaction.js.map +1 -0
  298. package/build/tsconfig.build.tsbuildinfo +1 -0
  299. package/build/types.d.ts +36 -38
  300. package/build/types.d.ts.map +1 -0
  301. package/build/types.js +169 -57
  302. package/build/types.js.map +1 -0
  303. package/build/workers/WorkerSigningPool.d.ts +174 -0
  304. package/build/workers/WorkerSigningPool.d.ts.map +1 -0
  305. package/build/workers/WorkerSigningPool.js +553 -0
  306. package/build/workers/WorkerSigningPool.js.map +1 -0
  307. package/build/workers/WorkerSigningPool.node.d.ts +124 -0
  308. package/build/workers/WorkerSigningPool.node.d.ts.map +1 -0
  309. package/build/workers/WorkerSigningPool.node.js +753 -0
  310. package/build/workers/WorkerSigningPool.node.js.map +1 -0
  311. package/build/workers/ecc-bundle.d.ts +25 -0
  312. package/build/workers/ecc-bundle.d.ts.map +1 -0
  313. package/build/workers/ecc-bundle.js +25 -0
  314. package/build/workers/ecc-bundle.js.map +1 -0
  315. package/build/workers/index.d.ts +91 -0
  316. package/build/workers/index.d.ts.map +1 -0
  317. package/build/workers/index.js +114 -0
  318. package/build/workers/index.js.map +1 -0
  319. package/build/workers/psbt-parallel.d.ts +117 -0
  320. package/build/workers/psbt-parallel.d.ts.map +1 -0
  321. package/build/workers/psbt-parallel.js +233 -0
  322. package/build/workers/psbt-parallel.js.map +1 -0
  323. package/build/workers/signing-worker.d.ts +37 -0
  324. package/build/workers/signing-worker.d.ts.map +1 -0
  325. package/build/workers/signing-worker.js +350 -0
  326. package/build/workers/signing-worker.js.map +1 -0
  327. package/build/workers/types.d.ts +365 -0
  328. package/build/workers/types.d.ts.map +1 -0
  329. package/build/workers/types.js +60 -0
  330. package/build/workers/types.js.map +1 -0
  331. package/package.json +68 -9
  332. package/scripts/bundle-ecc.ts +111 -0
  333. package/src/address.ts +91 -45
  334. package/src/bech32utils.ts +3 -3
  335. package/src/bip66.ts +34 -24
  336. package/src/block.ts +205 -86
  337. package/src/branded.ts +18 -0
  338. package/src/crypto.ts +64 -26
  339. package/src/ecc/context.ts +280 -0
  340. package/src/ecc/index.ts +14 -0
  341. package/src/ecc/types.ts +147 -0
  342. package/src/ecpair.d.ts +99 -0
  343. package/src/errors.ts +163 -0
  344. package/src/index.ts +112 -9
  345. package/src/io/BinaryReader.ts +461 -0
  346. package/src/io/BinaryWriter.ts +696 -0
  347. package/src/io/MemoryPool.ts +343 -0
  348. package/src/io/base64.ts +20 -0
  349. package/src/io/hex.ts +155 -0
  350. package/src/io/index.ts +41 -0
  351. package/src/io/utils.ts +283 -0
  352. package/src/merkle.ts +14 -9
  353. package/src/networks.ts +9 -9
  354. package/src/payments/bip341.ts +32 -33
  355. package/src/payments/embed.ts +244 -41
  356. package/src/payments/index.ts +12 -10
  357. package/src/payments/p2ms.ts +497 -118
  358. package/src/payments/p2op.ts +432 -134
  359. package/src/payments/p2pk.ts +370 -72
  360. package/src/payments/p2pkh.ts +524 -130
  361. package/src/payments/p2sh.ts +572 -169
  362. package/src/payments/p2tr.ts +686 -194
  363. package/src/payments/p2wpkh.ts +482 -105
  364. package/src/payments/p2wsh.ts +524 -162
  365. package/src/payments/types.ts +80 -66
  366. package/src/psbt/bip371.ts +72 -51
  367. package/src/psbt/psbtutils.ts +39 -40
  368. package/src/psbt/types.ts +324 -0
  369. package/src/psbt/utils.ts +188 -0
  370. package/src/psbt/validation.ts +185 -0
  371. package/src/psbt.ts +608 -827
  372. package/src/pubkey.ts +22 -23
  373. package/src/push_data.ts +18 -16
  374. package/src/script.ts +81 -66
  375. package/src/script_number.ts +6 -6
  376. package/src/script_signature.ts +33 -36
  377. package/src/transaction.ts +462 -239
  378. package/src/types.ts +229 -100
  379. package/src/workers/WorkerSigningPool.node.ts +887 -0
  380. package/src/workers/WorkerSigningPool.ts +666 -0
  381. package/src/workers/ecc-bundle.ts +26 -0
  382. package/src/workers/index.ts +165 -0
  383. package/src/workers/psbt-parallel.ts +327 -0
  384. package/src/workers/signing-worker.ts +353 -0
  385. package/src/workers/types.ts +417 -0
  386. package/test/address.spec.ts +9 -6
  387. package/test/bitcoin.core.spec.ts +16 -17
  388. package/test/block.spec.ts +8 -7
  389. package/test/bufferutils.spec.ts +228 -214
  390. package/test/crypto.spec.ts +19 -11
  391. package/test/fixtures/p2pk.json +0 -8
  392. package/test/fixtures/p2pkh.json +1 -1
  393. package/test/fixtures/p2sh.json +1 -1
  394. package/test/fixtures/script.json +1 -1
  395. package/test/fixtures/transaction.json +2 -2
  396. package/test/integration/_regtest.ts +25 -0
  397. package/test/integration/addresses.spec.ts +4 -3
  398. package/test/integration/bip32.spec.ts +2 -1
  399. package/test/integration/blocks.spec.ts +1 -1
  400. package/test/integration/cltv.spec.ts +18 -16
  401. package/test/integration/csv.spec.ts +37 -64
  402. package/test/integration/payments.spec.ts +5 -3
  403. package/test/integration/taproot.spec.ts +76 -83
  404. package/test/integration/transactions.spec.ts +38 -35
  405. package/test/payments.spec.ts +35 -13
  406. package/test/payments.utils.ts +17 -16
  407. package/test/psbt.spec.ts +111 -100
  408. package/test/script.spec.ts +11 -10
  409. package/test/script_signature.spec.ts +9 -11
  410. package/test/taproot-cache.spec.ts +694 -0
  411. package/test/transaction.spec.ts +32 -40
  412. package/test/types.spec.ts +74 -29
  413. package/test/workers-pool.spec.ts +963 -0
  414. package/test/workers-signing.spec.ts +635 -0
  415. package/test/workers.spec.ts +1390 -0
  416. package/tsconfig.base.json +34 -18
  417. package/tsconfig.browser.json +15 -0
  418. package/tsconfig.build.json +5 -0
  419. package/tsconfig.json +5 -14
  420. package/typedoc.json +29 -0
  421. package/vite.config.browser.ts +3 -42
  422. package/vitest.config.integration.ts +2 -0
  423. package/browser/bufferutils.d.ts +0 -34
  424. package/browser/chunks/crypto-BhCpKpek.js +0 -2033
  425. package/browser/chunks/payments-B1wlSccx.js +0 -1089
  426. package/browser/chunks/psbt-BCNk7JUx.js +0 -4055
  427. package/browser/chunks/script-DyPItFEl.js +0 -318
  428. package/browser/chunks/transaction-C_UbhMGn.js +0 -432
  429. package/browser/chunks/utils-DNZi-T5W.js +0 -761
  430. package/browser/ecc_lib.d.ts +0 -3
  431. package/browser/hooks/AdvancedSignatureManager.d.ts +0 -16
  432. package/browser/hooks/HookedSigner.d.ts +0 -4
  433. package/browser/hooks/SignatureManager.d.ts +0 -13
  434. package/browser/payments/lazy.d.ts +0 -2
  435. package/browser/typeforce.d.ts +0 -38
  436. package/build/bufferutils.d.ts +0 -34
  437. package/build/bufferutils.js +0 -141
  438. package/build/ecc_lib.d.ts +0 -3
  439. package/build/ecc_lib.js +0 -61
  440. package/build/hooks/AdvancedSignatureManager.d.ts +0 -16
  441. package/build/hooks/AdvancedSignatureManager.js +0 -52
  442. package/build/hooks/HookedSigner.d.ts +0 -4
  443. package/build/hooks/HookedSigner.js +0 -64
  444. package/build/hooks/SignatureManager.d.ts +0 -13
  445. package/build/hooks/SignatureManager.js +0 -45
  446. package/build/payments/lazy.d.ts +0 -2
  447. package/build/payments/lazy.js +0 -28
  448. package/build/tsconfig.tsbuildinfo +0 -1
  449. package/src/bufferutils.ts +0 -188
  450. package/src/ecc_lib.ts +0 -94
  451. package/src/hooks/AdvancedSignatureManager.ts +0 -104
  452. package/src/hooks/HookedSigner.ts +0 -108
  453. package/src/hooks/SignatureManager.ts +0 -84
  454. package/src/payments/lazy.ts +0 -28
  455. package/src/typeforce.d.ts +0 -38
  456. package/tsconfig.webpack.json +0 -18
@@ -1,23 +1,49 @@
1
- import { Tapleaf, Taptree } from '../types.js';
1
+ import { Bytes32, Tapleaf, Taptree, XOnlyPublicKey } from '../types.js';
2
2
  export declare const LEAF_VERSION_TAPSCRIPT = 192;
3
3
  export declare const MAX_TAPTREE_DEPTH = 128;
4
4
  interface HashLeaf {
5
- hash: Buffer;
5
+ hash: Bytes32;
6
6
  }
7
7
  interface HashBranch {
8
- hash: Buffer;
8
+ hash: Bytes32;
9
9
  left: HashTree;
10
10
  right: HashTree;
11
11
  }
12
12
  interface TweakedPublicKey {
13
13
  parity: number;
14
- x: Buffer;
14
+ x: XOnlyPublicKey;
15
15
  }
16
+ /**
17
+ * Binary tree representing leaf, branch, and root node hashes of a Taptree.
18
+ * Each node contains a hash, and potentially left and right branch hashes.
19
+ * This tree is used for 2 purposes: Providing the root hash for tweaking,
20
+ * and calculating merkle inclusion proofs when constructing a control block.
21
+ */
16
22
  export type HashTree = HashLeaf | HashBranch;
17
- export declare function rootHashFromPath(controlBlock: Buffer, leafHash: Buffer): Buffer;
23
+ /**
24
+ * Calculates the root hash from a given control block and leaf hash.
25
+ * @param controlBlock - The control block.
26
+ * @param leafHash - The leaf hash.
27
+ * @returns The root hash.
28
+ * @throws {TypeError} If the control block length is less than 33.
29
+ */
30
+ export declare function rootHashFromPath(controlBlock: Uint8Array, leafHash: Uint8Array): Bytes32;
31
+ /**
32
+ * Build a hash tree of merkle nodes from the scripts binary tree.
33
+ * @param scriptTree - the tree of scripts to pairwise hash.
34
+ */
18
35
  export declare function toHashTree(scriptTree: Taptree): HashTree;
19
- export declare function findScriptPath(node: HashTree, hash: Buffer): Buffer[] | undefined;
20
- export declare function tapleafHash(leaf: Tapleaf): Buffer;
21
- export declare function tapTweakHash(pubKey: Buffer, h: Buffer | undefined): Buffer;
22
- export declare function tweakKey(pubKey: Buffer, h: Buffer | undefined): TweakedPublicKey | null;
36
+ /**
37
+ * Given a HashTree, finds the path from a particular hash to the root.
38
+ * @param node - the root of the tree
39
+ * @param hash - the hash to search for
40
+ * @returns - array of sibling hashes, from leaf (inclusive) to root
41
+ * (exclusive) needed to prove inclusion of the specified hash. undefined if no
42
+ * path is found
43
+ */
44
+ export declare function findScriptPath(node: HashTree, hash: Bytes32): Bytes32[] | undefined;
45
+ export declare function tapleafHash(leaf: Tapleaf): Bytes32;
46
+ export declare function tapTweakHash(pubKey: XOnlyPublicKey, h: Bytes32 | undefined): Bytes32;
47
+ export declare function tweakKey(pubKey: XOnlyPublicKey, h: Bytes32 | undefined): TweakedPublicKey | null;
23
48
  export {};
49
+ //# sourceMappingURL=bip341.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bip341.d.ts","sourceRoot":"","sources":["../../src/payments/bip341.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7E,eAAO,MAAM,sBAAsB,MAAO,CAAC;AAC3C,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,UAAU,QAAQ;IACd,IAAI,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,UAAU;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,QAAQ,CAAC;CACnB;AAED,UAAU,gBAAgB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,cAAc,CAAC;CACrB;AAID;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAkBxF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,OAAO,GAAG,QAAQ,CAYxD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,SAAS,CAYnF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAMlD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAEpF;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAchG"}
@@ -1,2 +1,113 @@
1
- import { EmbedPayment, PaymentOpts } from './types.js';
1
+ import { Network } from '../networks.js';
2
+ import { Script } from '../types.js';
3
+ import { EmbedPayment, PaymentOpts, PaymentType } from './types.js';
4
+ /**
5
+ * OP_RETURN Embed payment class.
6
+ *
7
+ * Creates outputs of the form: `OP_RETURN {data1} {data2} ...`
8
+ * These outputs are provably unspendable and used for data storage.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { Embed } from '@btc-vision/bitcoin';
13
+ *
14
+ * // Create from data
15
+ * const payment = Embed.fromData([Buffer.from('Hello, Bitcoin!')]);
16
+ * console.log(payment.output); // scriptPubKey with OP_RETURN
17
+ *
18
+ * // Decode an existing output
19
+ * const decoded = Embed.fromOutput(scriptPubKey);
20
+ * console.log(decoded.data); // array of data chunks
21
+ * ```
22
+ */
23
+ export declare class Embed {
24
+ #private;
25
+ static readonly NAME: "embed";
26
+ /**
27
+ * Creates a new Embed payment instance.
28
+ *
29
+ * @param params - Payment parameters
30
+ * @param params.data - Array of data chunks to embed
31
+ * @param params.output - The scriptPubKey
32
+ * @param params.network - Network parameters (defaults to mainnet)
33
+ * @param opts - Payment options
34
+ * @param opts.validate - Whether to validate inputs (default: true)
35
+ *
36
+ * @throws {TypeError} If validation is enabled and data is invalid
37
+ */
38
+ constructor(params: {
39
+ data?: Uint8Array[] | undefined;
40
+ output?: Uint8Array | undefined;
41
+ network?: Network | undefined;
42
+ }, opts?: PaymentOpts);
43
+ /**
44
+ * Payment type discriminant.
45
+ */
46
+ get name(): typeof PaymentType.Embed;
47
+ /**
48
+ * Network parameters.
49
+ */
50
+ get network(): Network;
51
+ /**
52
+ * The embedded data chunks.
53
+ */
54
+ get data(): Uint8Array[];
55
+ /**
56
+ * The scriptPubKey: `OP_RETURN {data...}`
57
+ */
58
+ get output(): Script | undefined;
59
+ /**
60
+ * Creates an Embed payment from data chunks.
61
+ *
62
+ * @param data - Array of data chunks to embed
63
+ * @param network - Network parameters (defaults to mainnet)
64
+ * @returns A new Embed payment instance
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * const payment = Embed.fromData([
69
+ * new TextEncoder().encode('Hello'),
70
+ * new TextEncoder().encode('Bitcoin')
71
+ * ]);
72
+ * ```
73
+ */
74
+ static fromData(data: Uint8Array[], network?: Network): Embed;
75
+ /**
76
+ * Creates an Embed payment from a scriptPubKey.
77
+ *
78
+ * @param output - The scriptPubKey
79
+ * @param network - Network parameters (defaults to mainnet)
80
+ * @returns A new Embed payment instance
81
+ */
82
+ static fromOutput(output: Uint8Array, network?: Network): Embed;
83
+ /**
84
+ * Converts to a plain EmbedPayment object for backwards compatibility.
85
+ *
86
+ * @returns An EmbedPayment object
87
+ */
88
+ toPayment(): EmbedPayment;
89
+ }
90
+ /**
91
+ * Creates an OP_RETURN Embed payment object.
92
+ *
93
+ * This is the legacy factory function for backwards compatibility.
94
+ * For new code, prefer using the Embed class directly.
95
+ *
96
+ * @param a - The payment object containing the necessary data
97
+ * @param opts - Optional payment options
98
+ * @returns The Embed payment object
99
+ * @throws {TypeError} If the required data is not provided or if the data is invalid
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * import { p2data } from '@btc-vision/bitcoin';
104
+ *
105
+ * // Create from data
106
+ * const payment = p2data({ data: [Buffer.from('Hello')] });
107
+ *
108
+ * // Decode from output
109
+ * const decoded = p2data({ output: scriptPubKey });
110
+ * ```
111
+ */
2
112
  export declare function p2data(a: Omit<EmbedPayment, 'name'>, opts?: PaymentOpts): EmbedPayment;
113
+ //# sourceMappingURL=embed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/payments/embed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9E;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,KAAK;;IAEd,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAqB;IAkBzC;;;;;;;;;;;OAWG;gBAEC,MAAM,EAAE;QACJ,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QAChC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACjC,EACD,IAAI,CAAC,EAAE,WAAW;IAoBtB;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,WAAW,CAAC,KAAK,CAEnC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,UAAU,EAAE,CAMvB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAM/B;IAID;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK;IAI7D;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK;IAM/D;;;;OAIG;IACH,SAAS,IAAI,YAAY;CAqD5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,CAgBtF"}
@@ -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,2 +1,152 @@
1
+ import { Network } from '../networks.js';
2
+ import { PublicKey, Script, Signature } from '../types.js';
1
3
  import { P2MSPayment, PaymentOpts } from './types.js';
4
+ /**
5
+ * Pay-to-Multisig (P2MS) payment class.
6
+ *
7
+ * Creates locking scripts of the form:
8
+ * `m {pubKey1} {pubKey2} ... {pubKeyN} n OP_CHECKMULTISIG`
9
+ *
10
+ * Spending requires: `OP_0 {sig1} {sig2} ... {sigM}`
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { P2MS } from '@btc-vision/bitcoin';
15
+ *
16
+ * // Create a 2-of-3 multisig
17
+ * const payment = P2MS.fromPubkeys(2, [pubkey1, pubkey2, pubkey3]);
18
+ * console.log(payment.output); // scriptPubKey
19
+ * console.log(payment.m); // 2
20
+ * console.log(payment.n); // 3
21
+ *
22
+ * // Decode an existing output
23
+ * const decoded = P2MS.fromOutput(scriptPubKey);
24
+ * console.log(decoded.pubkeys); // array of public keys
25
+ * ```
26
+ */
27
+ export declare class P2MS {
28
+ #private;
29
+ static readonly NAME: "p2ms";
30
+ /**
31
+ * Creates a new P2MS payment instance.
32
+ *
33
+ * @param params - Payment parameters
34
+ * @param params.m - Required number of signatures
35
+ * @param params.n - Total number of public keys (optional, derived from pubkeys)
36
+ * @param params.pubkeys - Array of public keys
37
+ * @param params.signatures - Array of signatures
38
+ * @param params.output - The scriptPubKey
39
+ * @param params.input - The scriptSig
40
+ * @param params.network - Network parameters (defaults to mainnet)
41
+ * @param opts - Payment options
42
+ * @param opts.validate - Whether to validate inputs (default: true)
43
+ * @param opts.allowIncomplete - Allow incomplete signatures (default: false)
44
+ *
45
+ * @throws {TypeError} If validation is enabled and data is invalid
46
+ */
47
+ constructor(params: {
48
+ m?: number | undefined;
49
+ n?: number | undefined;
50
+ pubkeys?: Uint8Array[] | undefined;
51
+ signatures?: Uint8Array[] | undefined;
52
+ output?: Uint8Array | undefined;
53
+ input?: Uint8Array | undefined;
54
+ network?: Network | undefined;
55
+ }, opts?: PaymentOpts);
56
+ /**
57
+ * Payment type discriminant.
58
+ */
59
+ get name(): string;
60
+ /**
61
+ * Network parameters.
62
+ */
63
+ get network(): Network;
64
+ /**
65
+ * Required number of signatures (M in M-of-N).
66
+ */
67
+ get m(): number | undefined;
68
+ /**
69
+ * Total number of public keys (N in M-of-N).
70
+ */
71
+ get n(): number | undefined;
72
+ /**
73
+ * Array of public keys.
74
+ */
75
+ get pubkeys(): PublicKey[] | undefined;
76
+ /**
77
+ * Array of signatures.
78
+ */
79
+ get signatures(): Signature[] | undefined;
80
+ /**
81
+ * The scriptPubKey: `m {pubkeys} n OP_CHECKMULTISIG`
82
+ */
83
+ get output(): Script | undefined;
84
+ /**
85
+ * The scriptSig: `OP_0 {signatures}`
86
+ */
87
+ get input(): Script | undefined;
88
+ /**
89
+ * Witness stack (empty for P2MS as it's not a SegWit type).
90
+ */
91
+ get witness(): Uint8Array[] | undefined;
92
+ /**
93
+ * Creates a P2MS payment from public keys.
94
+ *
95
+ * @param m - Required number of signatures
96
+ * @param pubkeys - Array of public keys
97
+ * @param network - Network parameters (defaults to mainnet)
98
+ * @returns A new P2MS payment instance
99
+ *
100
+ * @example
101
+ * ```typescript
102
+ * // Create a 2-of-3 multisig
103
+ * const payment = P2MS.fromPubkeys(2, [pubkey1, pubkey2, pubkey3]);
104
+ * ```
105
+ */
106
+ static fromPubkeys(m: number, pubkeys: PublicKey[], network?: Network): P2MS;
107
+ /**
108
+ * Creates a P2MS payment from a scriptPubKey.
109
+ *
110
+ * @param output - The scriptPubKey
111
+ * @param network - Network parameters (defaults to mainnet)
112
+ * @returns A new P2MS payment instance
113
+ */
114
+ static fromOutput(output: Uint8Array, network?: Network): P2MS;
115
+ /**
116
+ * Creates a P2MS payment from signatures (for spending).
117
+ *
118
+ * @param signatures - Array of signatures
119
+ * @param m - Required number of signatures (optional)
120
+ * @param pubkeys - Array of public keys (optional, for validation)
121
+ * @param network - Network parameters (defaults to mainnet)
122
+ * @returns A new P2MS payment instance
123
+ */
124
+ static fromSignatures(signatures: Signature[], m?: number, pubkeys?: PublicKey[], network?: Network): P2MS;
125
+ /**
126
+ * Converts to a plain P2MSPayment object for backwards compatibility.
127
+ *
128
+ * @returns A P2MSPayment object
129
+ */
130
+ toPayment(): P2MSPayment;
131
+ }
132
+ /**
133
+ * Creates a Pay-to-Multisig (P2MS) payment object.
134
+ *
135
+ * This is the legacy factory function for backwards compatibility.
136
+ * For new code, prefer using the P2MS class directly.
137
+ *
138
+ * @param a - The payment object containing the necessary data
139
+ * @param opts - Optional payment options
140
+ * @returns The P2MS payment object
141
+ * @throws {TypeError} If the required data is not provided or if the data is invalid
142
+ *
143
+ * @example
144
+ * ```typescript
145
+ * import { p2ms } from '@btc-vision/bitcoin';
146
+ *
147
+ * // Create a 2-of-3 multisig
148
+ * const payment = p2ms({ m: 2, pubkeys: [pubkey1, pubkey2, pubkey3] });
149
+ * ```
150
+ */
2
151
  export declare function p2ms(a: Omit<P2MSPayment, 'name'>, opts?: PaymentOpts): P2MSPayment;
152
+ //# 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,EAEH,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,SAAS,EAGjB,MAAM,aAAa,CAAC;AACrB,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;IAMP;;;;OAIG;IACH,SAAS,IAAI,WAAW;CA6M3B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,CAoBlF"}
@@ -1,25 +1,151 @@
1
- import { BasePayment, P2OPPayment, PaymentOpts, PaymentType } from './types.js';
2
- interface P2OPBase extends BasePayment {
3
- name: PaymentType.P2OP;
1
+ import { Network } from '../networks.js';
2
+ import { Bytes20 } from '../types.js';
3
+ import { P2OPPayment, PaymentOpts, PaymentType } from './types.js';
4
+ /**
5
+ * Pay-to-OPNet (P2OP) payment class.
6
+ *
7
+ * Creates locking scripts of the form: `OP_16 {program}`
8
+ * where program = `{deploymentVersion:uint8}{hash160:20-bytes|...}`
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { P2OP } from '@btc-vision/bitcoin';
13
+ *
14
+ * // Create from program
15
+ * const payment = P2OP.fromProgram(program);
16
+ * console.log(payment.address); // opnet address
17
+ *
18
+ * // Create from deployment version and hash160
19
+ * const fromParts = P2OP.fromParts(deploymentVersion, hash160);
20
+ *
21
+ * // Decode an existing output
22
+ * const decoded = P2OP.fromOutput(scriptPubKey);
23
+ * console.log(decoded.program);
24
+ * ```
25
+ */
26
+ export declare class P2OP {
27
+ #private;
28
+ static readonly NAME: "p2op";
29
+ /**
30
+ * Creates a new P2OP payment instance.
31
+ *
32
+ * @param params - Payment parameters
33
+ * @param params.address - Bech32m encoded OPNet address
34
+ * @param params.program - Witness program (2-40 bytes)
35
+ * @param params.deploymentVersion - Deployment version (0-255)
36
+ * @param params.hash160 - 20-byte hash
37
+ * @param params.output - The scriptPubKey
38
+ * @param params.network - Network parameters (defaults to mainnet)
39
+ * @param opts - Payment options
40
+ * @param opts.validate - Whether to validate inputs (default: true)
41
+ *
42
+ * @throws {TypeError} If validation is enabled and data is invalid
43
+ */
44
+ constructor(params: {
45
+ address?: string | undefined;
46
+ program?: Uint8Array | undefined;
47
+ deploymentVersion?: number | undefined;
48
+ hash160?: Uint8Array | undefined;
49
+ output?: Uint8Array | undefined;
50
+ network?: Network | undefined;
51
+ }, opts?: PaymentOpts);
52
+ /**
53
+ * Payment type discriminant.
54
+ */
55
+ get name(): typeof PaymentType.P2OP;
56
+ /**
57
+ * Network parameters.
58
+ */
59
+ get network(): Network;
60
+ /**
61
+ * Bech32m encoded OPNet address.
62
+ */
63
+ get address(): string | undefined;
64
+ /**
65
+ * Witness program (2-40 bytes).
66
+ * Format: `{deploymentVersion:uint8}{hash160:20-bytes|...}`
67
+ */
68
+ get program(): Uint8Array | undefined;
69
+ /**
70
+ * Deployment version (first byte of program).
71
+ */
72
+ get deploymentVersion(): number | undefined;
73
+ /**
74
+ * Hash160 (remaining bytes of program).
75
+ */
76
+ get hash160(): Bytes20 | undefined;
77
+ /**
78
+ * The scriptPubKey: `OP_16 {program}`
79
+ */
80
+ get output(): Uint8Array | undefined;
81
+ /**
82
+ * Creates a P2OP payment from a witness program.
83
+ *
84
+ * @param program - Witness program (2-40 bytes)
85
+ * @param network - Network parameters (defaults to mainnet)
86
+ * @returns A new P2OP payment instance
87
+ */
88
+ static fromProgram(program: Uint8Array, network?: Network): P2OP;
89
+ /**
90
+ * Creates a P2OP payment from deployment version and hash160.
91
+ *
92
+ * @param deploymentVersion - Deployment version (0-255)
93
+ * @param hash160 - 20-byte hash
94
+ * @param network - Network parameters (defaults to mainnet)
95
+ * @returns A new P2OP payment instance
96
+ */
97
+ static fromParts(deploymentVersion: number, hash160: Uint8Array, network?: Network): P2OP;
98
+ /**
99
+ * Creates a P2OP payment from an OPNet address.
100
+ *
101
+ * @param address - Bech32m encoded OPNet address
102
+ * @param network - Network parameters (defaults to mainnet)
103
+ * @returns A new P2OP payment instance
104
+ */
105
+ static fromAddress(address: string, network?: Network): P2OP;
106
+ /**
107
+ * Creates a P2OP payment from a scriptPubKey.
108
+ *
109
+ * @param output - The scriptPubKey
110
+ * @param network - Network parameters (defaults to mainnet)
111
+ * @returns A new P2OP payment instance
112
+ */
113
+ static fromOutput(output: Uint8Array, network?: Network): P2OP;
114
+ /**
115
+ * Converts to a plain P2OPPayment object for backwards compatibility.
116
+ *
117
+ * @returns A P2OPPayment object
118
+ */
119
+ toPayment(): P2OPPayment;
4
120
  }
5
- interface P2OP_fromOutput extends P2OPBase {
6
- output: Buffer;
7
- program?: undefined;
8
- deploymentVersion?: undefined;
9
- hash160?: undefined;
10
- }
11
- interface P2OP_fromProgram extends P2OPBase {
12
- program: Buffer;
13
- output?: undefined;
14
- deploymentVersion?: never;
15
- hash160?: never;
16
- }
17
- interface P2OP_fromParts extends P2OPBase {
18
- deploymentVersion: number;
19
- hash160: Buffer;
20
- output?: undefined;
21
- program?: undefined;
22
- }
23
- export type P2OPPaymentParams = P2OP_fromOutput | P2OP_fromProgram | P2OP_fromParts;
24
- export declare function p2op(a: Omit<P2OPPaymentParams, 'name'>, opts?: PaymentOpts): P2OPPayment;
25
- export {};
121
+ /**
122
+ * Creates a Pay-to-OPNet (P2OP) payment object.
123
+ *
124
+ * This is the legacy factory function for backwards compatibility.
125
+ * For new code, prefer using the P2OP class directly.
126
+ *
127
+ * @param a - The payment object containing the necessary data
128
+ * @param opts - Optional payment options
129
+ * @returns The P2OP payment object
130
+ * @throws {TypeError} If the required data is not provided or if the data is invalid
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * import { p2op } from '@btc-vision/bitcoin';
135
+ *
136
+ * // Create from program
137
+ * const payment = p2op({ program });
138
+ *
139
+ * // Create from parts
140
+ * const fromParts = p2op({ deploymentVersion: 0, hash160 });
141
+ * ```
142
+ */
143
+ export declare function p2op(a: {
144
+ address?: string;
145
+ program?: Uint8Array;
146
+ deploymentVersion?: number;
147
+ hash160?: Uint8Array;
148
+ output?: Uint8Array;
149
+ network?: Network;
150
+ }, opts?: PaymentOpts): P2OPPayment;
151
+ //# sourceMappingURL=p2op.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p2op.d.ts","sourceRoot":"","sources":["../../src/payments/p2op.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG1E,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO7E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,IAAI;;IAEb,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAoB;IA+BxC;;;;;;;;;;;;;;OAcG;gBAEC,MAAM,EAAE;QACJ,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QACjC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACvC,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QACjC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACjC,EACD,IAAI,CAAC,EAAE,WAAW;IAuBtB;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,WAAW,CAAC,IAAI,CAElC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAMhC;IAED;;;OAGG;IACH,IAAI,OAAO,IAAI,UAAU,GAAG,SAAS,CAMpC;IAED;;OAEG;IACH,IAAI,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAM1C;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,GAAG,SAAS,CAMjC;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,UAAU,GAAG,SAAS,CAMnC;IAID;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAIhE;;;;;;;OAOG;IACH,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAIzF;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5D;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAM9D;;;;OAIG;IACH,SAAS,IAAI,WAAW;CA2L3B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,IAAI,CAChB,CAAC,EAAE;IACC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,EACD,IAAI,CAAC,EAAE,WAAW,GACnB,WAAW,CAwBb"}