@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,2 +1,163 @@
1
- import { P2PKPayment, PaymentOpts } from './types.js';
1
+ /**
2
+ * Pay-to-Public-Key (P2PK) payment class.
3
+ *
4
+ * P2PK is one of the simplest Bitcoin payment types where the output script
5
+ * contains a public key directly, and spending requires a signature from that key.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import { type Network } from '../networks.js';
10
+ import { type PublicKey, type Script, type Signature } from '../types.js';
11
+ import { PaymentType, type P2PKPayment, type PaymentOpts } from './types.js';
12
+ /**
13
+ * Pay-to-Public-Key (P2PK) payment class.
14
+ *
15
+ * Creates locking scripts of the form: `{pubKey} OP_CHECKSIG`
16
+ * Spending requires providing: `{signature}`
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { P2PK } from '@btc-vision/bitcoin';
21
+ *
22
+ * // Create from public key
23
+ * const payment = P2PK.fromPubkey(pubkey);
24
+ * console.log(payment.output); // scriptPubKey
25
+ *
26
+ * // Create from output script
27
+ * const decoded = P2PK.fromOutput(scriptPubKey);
28
+ * console.log(decoded.pubkey); // extracted public key
29
+ *
30
+ * // Legacy factory function still works
31
+ * const legacy = p2pk({ pubkey });
32
+ * ```
33
+ */
34
+ export declare class P2PK {
35
+ #private;
36
+ static readonly NAME: "p2pk";
37
+ /**
38
+ * Creates a new P2PK payment instance.
39
+ *
40
+ * @param params - Payment parameters
41
+ * @param params.pubkey - The public key (33 or 65 bytes)
42
+ * @param params.signature - DER-encoded signature
43
+ * @param params.output - The scriptPubKey
44
+ * @param params.input - The scriptSig
45
+ * @param params.network - Network parameters (defaults to mainnet)
46
+ * @param opts - Payment options
47
+ * @param opts.validate - Whether to validate inputs (default: true)
48
+ *
49
+ * @throws {TypeError} If validation is enabled and data is invalid
50
+ */
51
+ constructor(params: {
52
+ pubkey?: Uint8Array | undefined;
53
+ signature?: Uint8Array | undefined;
54
+ output?: Uint8Array | undefined;
55
+ input?: Uint8Array | undefined;
56
+ network?: Network | undefined;
57
+ }, opts?: PaymentOpts);
58
+ /**
59
+ * Payment type discriminant.
60
+ */
61
+ get name(): typeof PaymentType.P2PK;
62
+ /**
63
+ * Network parameters.
64
+ */
65
+ get network(): Network;
66
+ /**
67
+ * The public key (33 or 65 bytes).
68
+ * Computed lazily from output if not provided directly.
69
+ */
70
+ get pubkey(): PublicKey | undefined;
71
+ /**
72
+ * The DER-encoded signature.
73
+ * Computed lazily from input if not provided directly.
74
+ */
75
+ get signature(): Signature | undefined;
76
+ /**
77
+ * The scriptPubKey: `{pubKey} OP_CHECKSIG`
78
+ * Computed lazily from pubkey if not provided directly.
79
+ */
80
+ get output(): Script | undefined;
81
+ /**
82
+ * The scriptSig: `{signature}`
83
+ * Computed lazily from signature if not provided directly.
84
+ */
85
+ get input(): Script | undefined;
86
+ /**
87
+ * Witness stack (empty for P2PK as it's not a SegWit type).
88
+ */
89
+ get witness(): Uint8Array[] | undefined;
90
+ /**
91
+ * Creates a P2PK payment from a public key.
92
+ *
93
+ * @param pubkey - The public key (33 or 65 bytes)
94
+ * @param network - Network parameters (defaults to mainnet)
95
+ * @returns A new P2PK payment instance
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * const payment = P2PK.fromPubkey(pubkey);
100
+ * const scriptPubKey = payment.output;
101
+ * ```
102
+ */
103
+ static fromPubkey(pubkey: PublicKey, network?: Network): P2PK;
104
+ /**
105
+ * Creates a P2PK payment from a scriptPubKey.
106
+ *
107
+ * @param output - The scriptPubKey
108
+ * @param network - Network parameters (defaults to mainnet)
109
+ * @returns A new P2PK payment instance
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * const payment = P2PK.fromOutput(scriptPubKey);
114
+ * const pubkey = payment.pubkey;
115
+ * ```
116
+ */
117
+ static fromOutput(output: Uint8Array, network?: Network): P2PK;
118
+ /**
119
+ * Creates a P2PK payment from a signature (for spending).
120
+ *
121
+ * @param signature - The DER-encoded signature
122
+ * @param pubkey - The public key (optional, for validation)
123
+ * @param network - Network parameters (defaults to mainnet)
124
+ * @returns A new P2PK payment instance
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * const payment = P2PK.fromSignature(signature, pubkey);
129
+ * const scriptSig = payment.input;
130
+ * ```
131
+ */
132
+ static fromSignature(signature: Signature, pubkey?: PublicKey, network?: Network): P2PK;
133
+ /**
134
+ * Converts to a plain P2PKPayment object for backwards compatibility.
135
+ *
136
+ * @returns A P2PKPayment object
137
+ */
138
+ toPayment(): P2PKPayment;
139
+ }
140
+ /**
141
+ * Creates a Pay-to-Public-Key (P2PK) payment object.
142
+ *
143
+ * This is the legacy factory function for backwards compatibility.
144
+ * For new code, prefer using the P2PK class directly.
145
+ *
146
+ * @param a - The payment object containing the necessary data
147
+ * @param opts - Optional payment options
148
+ * @returns The P2PK 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 { p2pk } from '@btc-vision/bitcoin';
154
+ *
155
+ * // Create from public key
156
+ * const payment = p2pk({ pubkey });
157
+ *
158
+ * // Create from output
159
+ * const decoded = p2pk({ output: scriptPubKey });
160
+ * ```
161
+ */
2
162
  export declare function p2pk(a: Omit<P2PKPayment, 'name'>, opts?: PaymentOpts): P2PKPayment;
163
+ //# sourceMappingURL=p2pk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p2pk.d.ts","sourceRoot":"","sources":["../../src/payments/p2pk.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAW,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAI7E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,IAAI;;IAEb,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAoB;IA0BxC;;;;;;;;;;;;;OAaG;gBAEC,MAAM,EAAE;QACJ,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,SAAS,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QACnC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACjC,EACD,IAAI,CAAC,EAAE,WAAW;IAsBtB;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,WAAW,CAAC,IAAI,CAElC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAMlC;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,CAMrC;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAM/B;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAM9B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,UAAU,EAAE,GAAG,SAAS,CAMtC;IAID;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI7D;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI9D;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAkGvF;;;;OAIG;IACH,SAAS,IAAI,WAAW;CAW3B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,CAkBlF"}
@@ -1,73 +1,342 @@
1
+ /**
2
+ * Pay-to-Public-Key (P2PK) payment class.
3
+ *
4
+ * P2PK is one of the simplest Bitcoin payment types where the output script
5
+ * contains a public key directly, and spending requires a signature from that key.
6
+ *
7
+ * @packageDocumentation
8
+ */
1
9
  import { bitcoin as BITCOIN_NETWORK } from '../networks.js';
2
10
  import * as bscript from '../script.js';
3
- import { isPoint, typeforce as typef } from '../types.js';
11
+ import { isPoint } from '../types.js';
12
+ import { equals } from '../io/index.js';
4
13
  import { PaymentType } from './types.js';
5
- import * as lazy from './lazy.js';
6
14
  const OPS = bscript.opcodes;
7
- export function p2pk(a, opts) {
8
- if (!a.input && !a.output && !a.pubkey && !a.input && !a.signature)
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
- pubkey: typef.maybe(isPoint),
15
- signature: typef.maybe(bscript.isCanonicalScriptSignature),
16
- input: typef.maybe(typef.Buffer),
17
- }, a);
18
- const _chunks = lazy.value(() => {
19
- return bscript.decompile(a.input);
20
- });
21
- const network = a.network || BITCOIN_NETWORK;
22
- const o = {
23
- name: PaymentType.P2PK,
24
- network,
25
- pubkey: undefined,
26
- };
27
- lazy.prop(o, 'output', () => {
28
- if (!a.pubkey)
29
- return;
30
- return bscript.compile([a.pubkey, OPS.OP_CHECKSIG]);
31
- });
32
- lazy.prop(o, 'pubkey', () => {
33
- if (!a.output)
34
- return;
35
- return a.output.subarray(1, -1);
36
- });
37
- lazy.prop(o, 'signature', () => {
38
- if (!a.input)
39
- return;
40
- return _chunks()[0];
41
- });
42
- lazy.prop(o, 'input', () => {
43
- if (!a.signature)
44
- return;
45
- return bscript.compile([a.signature]);
46
- });
47
- lazy.prop(o, 'witness', () => {
48
- if (!o.input)
49
- return;
50
- return [];
51
- });
52
- if (opts.validate) {
53
- if (a.output) {
54
- if (a.output[a.output.length - 1] !== OPS.OP_CHECKSIG)
15
+ /**
16
+ * Pay-to-Public-Key (P2PK) payment class.
17
+ *
18
+ * Creates locking scripts of the form: `{pubKey} OP_CHECKSIG`
19
+ * Spending requires providing: `{signature}`
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * import { P2PK } from '@btc-vision/bitcoin';
24
+ *
25
+ * // Create from public key
26
+ * const payment = P2PK.fromPubkey(pubkey);
27
+ * console.log(payment.output); // scriptPubKey
28
+ *
29
+ * // Create from output script
30
+ * const decoded = P2PK.fromOutput(scriptPubKey);
31
+ * console.log(decoded.pubkey); // extracted public key
32
+ *
33
+ * // Legacy factory function still works
34
+ * const legacy = p2pk({ pubkey });
35
+ * ```
36
+ */
37
+ export class P2PK {
38
+ // Static public fields
39
+ static NAME = PaymentType.P2PK;
40
+ // Private instance fields
41
+ #network;
42
+ #opts;
43
+ // Input data (provided by user)
44
+ #inputPubkey;
45
+ #inputSignature;
46
+ #inputOutput;
47
+ #inputInput;
48
+ // Cached computed values
49
+ #pubkey;
50
+ #signature;
51
+ #output;
52
+ #input;
53
+ #witness;
54
+ // Cache flags
55
+ #pubkeyComputed = false;
56
+ #signatureComputed = false;
57
+ #outputComputed = false;
58
+ #inputComputed = false;
59
+ #witnessComputed = false;
60
+ /**
61
+ * Creates a new P2PK payment instance.
62
+ *
63
+ * @param params - Payment parameters
64
+ * @param params.pubkey - The public key (33 or 65 bytes)
65
+ * @param params.signature - DER-encoded signature
66
+ * @param params.output - The scriptPubKey
67
+ * @param params.input - The scriptSig
68
+ * @param params.network - Network parameters (defaults to mainnet)
69
+ * @param opts - Payment options
70
+ * @param opts.validate - Whether to validate inputs (default: true)
71
+ *
72
+ * @throws {TypeError} If validation is enabled and data is invalid
73
+ */
74
+ constructor(params, opts) {
75
+ this.#network = params.network ?? BITCOIN_NETWORK;
76
+ this.#opts = {
77
+ validate: opts?.validate ?? true,
78
+ allowIncomplete: opts?.allowIncomplete ?? false,
79
+ };
80
+ // Store input data
81
+ this.#inputPubkey = params.pubkey;
82
+ this.#inputSignature = params.signature;
83
+ this.#inputOutput = params.output;
84
+ this.#inputInput = params.input;
85
+ // Validate if requested
86
+ if (this.#opts.validate) {
87
+ this.#validate();
88
+ }
89
+ }
90
+ // Public getters
91
+ /**
92
+ * Payment type discriminant.
93
+ */
94
+ get name() {
95
+ return PaymentType.P2PK;
96
+ }
97
+ /**
98
+ * Network parameters.
99
+ */
100
+ get network() {
101
+ return this.#network;
102
+ }
103
+ /**
104
+ * The public key (33 or 65 bytes).
105
+ * Computed lazily from output if not provided directly.
106
+ */
107
+ get pubkey() {
108
+ if (!this.#pubkeyComputed) {
109
+ this.#pubkey = this.#computePubkey();
110
+ this.#pubkeyComputed = true;
111
+ }
112
+ return this.#pubkey;
113
+ }
114
+ /**
115
+ * The DER-encoded signature.
116
+ * Computed lazily from input if not provided directly.
117
+ */
118
+ get signature() {
119
+ if (!this.#signatureComputed) {
120
+ this.#signature = this.#computeSignature();
121
+ this.#signatureComputed = true;
122
+ }
123
+ return this.#signature;
124
+ }
125
+ /**
126
+ * The scriptPubKey: `{pubKey} OP_CHECKSIG`
127
+ * Computed lazily from pubkey if not provided directly.
128
+ */
129
+ get output() {
130
+ if (!this.#outputComputed) {
131
+ this.#output = this.#computeOutput();
132
+ this.#outputComputed = true;
133
+ }
134
+ return this.#output;
135
+ }
136
+ /**
137
+ * The scriptSig: `{signature}`
138
+ * Computed lazily from signature if not provided directly.
139
+ */
140
+ get input() {
141
+ if (!this.#inputComputed) {
142
+ this.#input = this.#computeInput();
143
+ this.#inputComputed = true;
144
+ }
145
+ return this.#input;
146
+ }
147
+ /**
148
+ * Witness stack (empty for P2PK as it's not a SegWit type).
149
+ */
150
+ get witness() {
151
+ if (!this.#witnessComputed) {
152
+ this.#witness = this.#computeWitness();
153
+ this.#witnessComputed = true;
154
+ }
155
+ return this.#witness;
156
+ }
157
+ // Static factory methods
158
+ /**
159
+ * Creates a P2PK payment from a public key.
160
+ *
161
+ * @param pubkey - The public key (33 or 65 bytes)
162
+ * @param network - Network parameters (defaults to mainnet)
163
+ * @returns A new P2PK payment instance
164
+ *
165
+ * @example
166
+ * ```typescript
167
+ * const payment = P2PK.fromPubkey(pubkey);
168
+ * const scriptPubKey = payment.output;
169
+ * ```
170
+ */
171
+ static fromPubkey(pubkey, network) {
172
+ return new P2PK({ pubkey, network });
173
+ }
174
+ /**
175
+ * Creates a P2PK payment from a scriptPubKey.
176
+ *
177
+ * @param output - The scriptPubKey
178
+ * @param network - Network parameters (defaults to mainnet)
179
+ * @returns A new P2PK payment instance
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * const payment = P2PK.fromOutput(scriptPubKey);
184
+ * const pubkey = payment.pubkey;
185
+ * ```
186
+ */
187
+ static fromOutput(output, network) {
188
+ return new P2PK({ output, network });
189
+ }
190
+ /**
191
+ * Creates a P2PK payment from a signature (for spending).
192
+ *
193
+ * @param signature - The DER-encoded signature
194
+ * @param pubkey - The public key (optional, for validation)
195
+ * @param network - Network parameters (defaults to mainnet)
196
+ * @returns A new P2PK payment instance
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * const payment = P2PK.fromSignature(signature, pubkey);
201
+ * const scriptSig = payment.input;
202
+ * ```
203
+ */
204
+ static fromSignature(signature, pubkey, network) {
205
+ return new P2PK({ signature, pubkey, network });
206
+ }
207
+ // Private computation methods
208
+ #computePubkey() {
209
+ if (this.#inputPubkey) {
210
+ return this.#inputPubkey;
211
+ }
212
+ if (this.#inputOutput) {
213
+ // Extract pubkey from output: {pubkey} OP_CHECKSIG
214
+ return this.#inputOutput.subarray(1, -1);
215
+ }
216
+ return undefined;
217
+ }
218
+ #computeSignature() {
219
+ if (this.#inputSignature) {
220
+ return this.#inputSignature;
221
+ }
222
+ if (this.#inputInput) {
223
+ const chunks = bscript.decompile(this.#inputInput);
224
+ if (chunks && chunks.length > 0) {
225
+ return chunks[0];
226
+ }
227
+ }
228
+ return undefined;
229
+ }
230
+ #computeOutput() {
231
+ if (this.#inputOutput) {
232
+ return this.#inputOutput;
233
+ }
234
+ const pubkey = this.#inputPubkey;
235
+ if (pubkey) {
236
+ return bscript.compile([pubkey, OPS.OP_CHECKSIG]);
237
+ }
238
+ return undefined;
239
+ }
240
+ #computeInput() {
241
+ if (this.#inputInput) {
242
+ return this.#inputInput;
243
+ }
244
+ const signature = this.#inputSignature;
245
+ if (signature) {
246
+ return bscript.compile([signature]);
247
+ }
248
+ return undefined;
249
+ }
250
+ #computeWitness() {
251
+ if (this.input) {
252
+ return [];
253
+ }
254
+ return undefined;
255
+ }
256
+ // Validation
257
+ #validate() {
258
+ if (this.#inputOutput) {
259
+ if (this.#inputOutput[this.#inputOutput.length - 1] !== OPS.OP_CHECKSIG) {
55
260
  throw new TypeError('Output is invalid');
56
- if (!isPoint(o.pubkey))
261
+ }
262
+ const extractedPubkey = this.pubkey;
263
+ if (!isPoint(extractedPubkey)) {
57
264
  throw new TypeError('Output pubkey is invalid');
58
- if (a.pubkey && !a.pubkey.equals(o.pubkey))
265
+ }
266
+ if (this.#inputPubkey &&
267
+ extractedPubkey &&
268
+ !equals(this.#inputPubkey, extractedPubkey)) {
59
269
  throw new TypeError('Pubkey mismatch');
270
+ }
60
271
  }
61
- if (a.signature) {
62
- if (a.input && !a.input.equals(o.input))
272
+ if (this.#inputSignature) {
273
+ const computedInput = this.input;
274
+ if (this.#inputInput && computedInput && !equals(this.#inputInput, computedInput)) {
63
275
  throw new TypeError('Signature mismatch');
276
+ }
64
277
  }
65
- if (a.input) {
66
- if (_chunks().length !== 1)
278
+ if (this.#inputInput) {
279
+ const chunks = bscript.decompile(this.#inputInput);
280
+ if (!chunks || chunks.length !== 1) {
67
281
  throw new TypeError('Input is invalid');
68
- if (!bscript.isCanonicalScriptSignature(o.signature))
282
+ }
283
+ const sig = this.signature;
284
+ if (!sig || !bscript.isCanonicalScriptSignature(sig)) {
69
285
  throw new TypeError('Input has invalid signature');
286
+ }
70
287
  }
71
288
  }
72
- return Object.assign(o, a);
289
+ /**
290
+ * Converts to a plain P2PKPayment object for backwards compatibility.
291
+ *
292
+ * @returns A P2PKPayment object
293
+ */
294
+ toPayment() {
295
+ return {
296
+ name: this.name,
297
+ network: this.network,
298
+ pubkey: this.pubkey,
299
+ signature: this.signature,
300
+ output: this.output,
301
+ input: this.input,
302
+ witness: this.witness,
303
+ };
304
+ }
305
+ }
306
+ /**
307
+ * Creates a Pay-to-Public-Key (P2PK) payment object.
308
+ *
309
+ * This is the legacy factory function for backwards compatibility.
310
+ * For new code, prefer using the P2PK class directly.
311
+ *
312
+ * @param a - The payment object containing the necessary data
313
+ * @param opts - Optional payment options
314
+ * @returns The P2PK payment object
315
+ * @throws {TypeError} If the required data is not provided or if the data is invalid
316
+ *
317
+ * @example
318
+ * ```typescript
319
+ * import { p2pk } from '@btc-vision/bitcoin';
320
+ *
321
+ * // Create from public key
322
+ * const payment = p2pk({ pubkey });
323
+ *
324
+ * // Create from output
325
+ * const decoded = p2pk({ output: scriptPubKey });
326
+ * ```
327
+ */
328
+ export function p2pk(a, opts) {
329
+ if (!a.input && !a.output && !a.pubkey && !a.signature) {
330
+ throw new TypeError('Not enough data');
331
+ }
332
+ const instance = new P2PK({
333
+ pubkey: a.pubkey,
334
+ signature: a.signature,
335
+ output: a.output,
336
+ input: a.input,
337
+ network: a.network,
338
+ }, opts);
339
+ // Return a merged object for backwards compatibility
340
+ return Object.assign(instance.toPayment(), a);
73
341
  }
342
+ //# sourceMappingURL=p2pk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p2pk.js","sourceRoot":"","sources":["../../src/payments/p2pk.ts"],"names":[],"mappings":"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"}