@btc-vision/bitcoin 6.5.5 → 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 (457) hide show
  1. package/AUDIT/README.md +9 -0
  2. package/HOW_TO_WRITE_GOOD_CODE.md +2436 -0
  3. package/SECURITY.md +27 -0
  4. package/benchmark/psbt-2000-inputs.bench.ts +178 -0
  5. package/benchmark/signing.bench.ts +147 -0
  6. package/browser/address.d.ts +56 -9
  7. package/browser/address.d.ts.map +1 -0
  8. package/browser/bech32utils.d.ts +9 -1
  9. package/browser/bech32utils.d.ts.map +1 -0
  10. package/browser/bip66.d.ts +11 -6
  11. package/browser/bip66.d.ts.map +1 -0
  12. package/browser/block.d.ts +117 -11
  13. package/browser/block.d.ts.map +1 -0
  14. package/browser/branded.d.ts +20 -0
  15. package/browser/branded.d.ts.map +1 -0
  16. package/browser/crypto/crypto.d.ts +1 -0
  17. package/browser/crypto/crypto.d.ts.map +1 -0
  18. package/browser/crypto.d.ts +46 -7
  19. package/browser/crypto.d.ts.map +1 -0
  20. package/browser/ecc/context.d.ts +129 -0
  21. package/browser/ecc/context.d.ts.map +1 -0
  22. package/browser/ecc/index.d.ts +11 -0
  23. package/browser/ecc/index.d.ts.map +1 -0
  24. package/browser/ecc/types.d.ts +128 -0
  25. package/browser/ecc/types.d.ts.map +1 -0
  26. package/browser/ecpair.d.ts +99 -0
  27. package/browser/errors.d.ts +124 -0
  28. package/browser/errors.d.ts.map +1 -0
  29. package/browser/index.d.ts +32 -5
  30. package/browser/index.d.ts.map +1 -0
  31. package/browser/index.js +12482 -101
  32. package/browser/io/BinaryReader.d.ts +276 -0
  33. package/browser/io/BinaryReader.d.ts.map +1 -0
  34. package/browser/io/BinaryWriter.d.ts +391 -0
  35. package/browser/io/BinaryWriter.d.ts.map +1 -0
  36. package/browser/io/MemoryPool.d.ts +220 -0
  37. package/browser/io/MemoryPool.d.ts.map +1 -0
  38. package/browser/io/base64.d.ts +13 -0
  39. package/browser/io/base64.d.ts.map +1 -0
  40. package/browser/io/hex.d.ts +67 -0
  41. package/browser/io/hex.d.ts.map +1 -0
  42. package/browser/io/index.d.ts +17 -0
  43. package/browser/io/index.d.ts.map +1 -0
  44. package/browser/io/utils.d.ts +199 -0
  45. package/browser/io/utils.d.ts.map +1 -0
  46. package/browser/merkle.d.ts +10 -1
  47. package/browser/merkle.d.ts.map +1 -0
  48. package/browser/networks.d.ts +70 -9
  49. package/browser/networks.d.ts.map +1 -0
  50. package/browser/opcodes.d.ts +1 -0
  51. package/browser/opcodes.d.ts.map +1 -0
  52. package/browser/payments/bip341.d.ts +35 -9
  53. package/browser/payments/bip341.d.ts.map +1 -0
  54. package/browser/payments/embed.d.ts +112 -1
  55. package/browser/payments/embed.d.ts.map +1 -0
  56. package/browser/payments/index.d.ts +17 -10
  57. package/browser/payments/index.d.ts.map +1 -0
  58. package/browser/payments/p2ms.d.ts +150 -0
  59. package/browser/payments/p2ms.d.ts.map +1 -0
  60. package/browser/payments/p2op.d.ts +150 -24
  61. package/browser/payments/p2op.d.ts.map +1 -0
  62. package/browser/payments/p2pk.d.ts +154 -1
  63. package/browser/payments/p2pk.d.ts.map +1 -0
  64. package/browser/payments/p2pkh.d.ts +176 -1
  65. package/browser/payments/p2pkh.d.ts.map +1 -0
  66. package/browser/payments/p2sh.d.ts +150 -1
  67. package/browser/payments/p2sh.d.ts.map +1 -0
  68. package/browser/payments/p2tr.d.ts +185 -1
  69. package/browser/payments/p2tr.d.ts.map +1 -0
  70. package/browser/payments/p2wpkh.d.ts +161 -1
  71. package/browser/payments/p2wpkh.d.ts.map +1 -0
  72. package/browser/payments/p2wsh.d.ts +146 -1
  73. package/browser/payments/p2wsh.d.ts.map +1 -0
  74. package/browser/payments/types.d.ts +94 -64
  75. package/browser/payments/types.d.ts.map +1 -0
  76. package/browser/psbt/bip371.d.ts +34 -8
  77. package/browser/psbt/bip371.d.ts.map +1 -0
  78. package/browser/psbt/psbtutils.d.ts +56 -16
  79. package/browser/psbt/psbtutils.d.ts.map +1 -0
  80. package/browser/psbt/types.d.ts +245 -0
  81. package/browser/psbt/types.d.ts.map +1 -0
  82. package/browser/psbt/utils.d.ts +64 -0
  83. package/browser/psbt/utils.d.ts.map +1 -0
  84. package/browser/psbt/validation.d.ts +84 -0
  85. package/browser/psbt/validation.d.ts.map +1 -0
  86. package/browser/psbt.d.ts +82 -118
  87. package/browser/psbt.d.ts.map +1 -0
  88. package/browser/pubkey.d.ts +27 -6
  89. package/browser/pubkey.d.ts.map +1 -0
  90. package/browser/push_data.d.ts +24 -2
  91. package/browser/push_data.d.ts.map +1 -0
  92. package/browser/script.d.ts +33 -8
  93. package/browser/script.d.ts.map +1 -0
  94. package/browser/script_number.d.ts +17 -0
  95. package/browser/script_number.d.ts.map +1 -0
  96. package/browser/script_signature.d.ts +23 -5
  97. package/browser/script_signature.d.ts.map +1 -0
  98. package/browser/transaction.d.ts +160 -18
  99. package/browser/transaction.d.ts.map +1 -0
  100. package/browser/types.d.ts +36 -38
  101. package/browser/types.d.ts.map +1 -0
  102. package/browser/workers/WorkerSigningPool.d.ts +143 -0
  103. package/browser/workers/WorkerSigningPool.d.ts.map +1 -0
  104. package/browser/workers/WorkerSigningPool.node.d.ts +116 -0
  105. package/browser/workers/WorkerSigningPool.node.d.ts.map +1 -0
  106. package/browser/workers/ecc-bundle.d.ts +25 -0
  107. package/browser/workers/ecc-bundle.d.ts.map +1 -0
  108. package/browser/workers/index.d.ts +91 -0
  109. package/browser/workers/index.d.ts.map +1 -0
  110. package/browser/workers/psbt-parallel.d.ts +88 -0
  111. package/browser/workers/psbt-parallel.d.ts.map +1 -0
  112. package/browser/workers/signing-worker.d.ts +37 -0
  113. package/browser/workers/signing-worker.d.ts.map +1 -0
  114. package/browser/workers/types.d.ts +365 -0
  115. package/browser/workers/types.d.ts.map +1 -0
  116. package/build/address.d.ts +57 -10
  117. package/build/address.d.ts.map +1 -0
  118. package/build/address.js +80 -24
  119. package/build/address.js.map +1 -0
  120. package/build/bech32utils.d.ts +9 -1
  121. package/build/bech32utils.d.ts.map +1 -0
  122. package/build/bech32utils.js +10 -2
  123. package/build/bech32utils.js.map +1 -0
  124. package/build/bip66.d.ts +11 -6
  125. package/build/bip66.d.ts.map +1 -0
  126. package/build/bip66.js +32 -3
  127. package/build/bip66.js.map +1 -0
  128. package/build/block.d.ts +117 -11
  129. package/build/block.d.ts.map +1 -0
  130. package/build/block.js +204 -72
  131. package/build/block.js.map +1 -0
  132. package/build/branded.d.ts +20 -0
  133. package/build/branded.d.ts.map +1 -0
  134. package/build/branded.js +7 -0
  135. package/build/branded.js.map +1 -0
  136. package/build/crypto/crypto.d.ts +1 -0
  137. package/build/crypto/crypto.d.ts.map +1 -0
  138. package/build/crypto/crypto.js +1 -0
  139. package/build/crypto/crypto.js.map +1 -0
  140. package/build/crypto.d.ts +46 -7
  141. package/build/crypto.d.ts.map +1 -0
  142. package/build/crypto.js +65 -20
  143. package/build/crypto.js.map +1 -0
  144. package/build/ecc/context.d.ts +135 -0
  145. package/build/ecc/context.d.ts.map +1 -0
  146. package/build/ecc/context.js +232 -0
  147. package/build/ecc/context.js.map +1 -0
  148. package/build/ecc/index.d.ts +11 -0
  149. package/build/ecc/index.d.ts.map +1 -0
  150. package/build/ecc/index.js +11 -0
  151. package/build/ecc/index.js.map +1 -0
  152. package/build/ecc/types.d.ts +134 -0
  153. package/build/ecc/types.d.ts.map +1 -0
  154. package/build/ecc/types.js +8 -0
  155. package/build/ecc/types.js.map +1 -0
  156. package/build/errors.d.ts +124 -0
  157. package/build/errors.d.ts.map +1 -0
  158. package/build/errors.js +155 -0
  159. package/build/errors.js.map +1 -0
  160. package/build/index.d.ts +32 -5
  161. package/build/index.d.ts.map +1 -0
  162. package/build/index.js +26 -3
  163. package/build/index.js.map +1 -0
  164. package/build/io/BinaryReader.d.ts +276 -0
  165. package/build/io/BinaryReader.d.ts.map +1 -0
  166. package/build/io/BinaryReader.js +425 -0
  167. package/build/io/BinaryReader.js.map +1 -0
  168. package/build/io/BinaryWriter.d.ts +391 -0
  169. package/build/io/BinaryWriter.d.ts.map +1 -0
  170. package/build/io/BinaryWriter.js +611 -0
  171. package/build/io/BinaryWriter.js.map +1 -0
  172. package/build/io/MemoryPool.d.ts +220 -0
  173. package/build/io/MemoryPool.d.ts.map +1 -0
  174. package/build/io/MemoryPool.js +309 -0
  175. package/build/io/MemoryPool.js.map +1 -0
  176. package/build/io/base64.d.ts +13 -0
  177. package/build/io/base64.d.ts.map +1 -0
  178. package/build/io/base64.js +20 -0
  179. package/build/io/base64.js.map +1 -0
  180. package/build/io/hex.d.ts +67 -0
  181. package/build/io/hex.d.ts.map +1 -0
  182. package/build/io/hex.js +138 -0
  183. package/build/io/hex.js.map +1 -0
  184. package/build/io/index.d.ts +17 -0
  185. package/build/io/index.d.ts.map +1 -0
  186. package/build/io/index.js +23 -0
  187. package/build/io/index.js.map +1 -0
  188. package/build/io/utils.d.ts +199 -0
  189. package/build/io/utils.d.ts.map +1 -0
  190. package/build/io/utils.js +271 -0
  191. package/build/io/utils.js.map +1 -0
  192. package/build/merkle.d.ts +10 -1
  193. package/build/merkle.d.ts.map +1 -0
  194. package/build/merkle.js +12 -1
  195. package/build/merkle.js.map +1 -0
  196. package/build/networks.d.ts +70 -9
  197. package/build/networks.d.ts.map +1 -0
  198. package/build/networks.js +90 -4
  199. package/build/networks.js.map +1 -0
  200. package/build/opcodes.d.ts +1 -0
  201. package/build/opcodes.d.ts.map +1 -0
  202. package/build/opcodes.js +1 -0
  203. package/build/opcodes.js.map +1 -0
  204. package/build/payments/bip341.d.ts +36 -9
  205. package/build/payments/bip341.d.ts.map +1 -0
  206. package/build/payments/bip341.js +35 -15
  207. package/build/payments/bip341.js.map +1 -0
  208. package/build/payments/embed.d.ts +120 -1
  209. package/build/payments/embed.d.ts.map +1 -0
  210. package/build/payments/embed.js +215 -34
  211. package/build/payments/embed.js.map +1 -0
  212. package/build/payments/index.d.ts +17 -10
  213. package/build/payments/index.d.ts.map +1 -0
  214. package/build/payments/index.js +20 -10
  215. package/build/payments/index.js.map +1 -0
  216. package/build/payments/p2ms.d.ts +159 -1
  217. package/build/payments/p2ms.d.ts.map +1 -0
  218. package/build/payments/p2ms.js +427 -108
  219. package/build/payments/p2ms.js.map +1 -0
  220. package/build/payments/p2op.d.ts +158 -24
  221. package/build/payments/p2op.d.ts.map +1 -0
  222. package/build/payments/p2op.js +379 -93
  223. package/build/payments/p2op.js.map +1 -0
  224. package/build/payments/p2pk.d.ts +162 -1
  225. package/build/payments/p2pk.d.ts.map +1 -0
  226. package/build/payments/p2pk.js +327 -58
  227. package/build/payments/p2pk.js.map +1 -0
  228. package/build/payments/p2pkh.d.ts +185 -1
  229. package/build/payments/p2pkh.d.ts.map +1 -0
  230. package/build/payments/p2pkh.js +467 -114
  231. package/build/payments/p2pkh.js.map +1 -0
  232. package/build/payments/p2sh.d.ts +159 -1
  233. package/build/payments/p2sh.d.ts.map +1 -0
  234. package/build/payments/p2sh.js +500 -152
  235. package/build/payments/p2sh.js.map +1 -0
  236. package/build/payments/p2tr.d.ts +193 -1
  237. package/build/payments/p2tr.d.ts.map +1 -0
  238. package/build/payments/p2tr.js +592 -174
  239. package/build/payments/p2tr.js.map +1 -0
  240. package/build/payments/p2wpkh.d.ts +170 -1
  241. package/build/payments/p2wpkh.d.ts.map +1 -0
  242. package/build/payments/p2wpkh.js +429 -104
  243. package/build/payments/p2wpkh.js.map +1 -0
  244. package/build/payments/p2wsh.d.ts +155 -1
  245. package/build/payments/p2wsh.d.ts.map +1 -0
  246. package/build/payments/p2wsh.js +466 -144
  247. package/build/payments/p2wsh.js.map +1 -0
  248. package/build/payments/types.d.ts +98 -64
  249. package/build/payments/types.d.ts.map +1 -0
  250. package/build/payments/types.js +17 -13
  251. package/build/payments/types.js.map +1 -0
  252. package/build/psbt/bip371.d.ts +35 -9
  253. package/build/psbt/bip371.d.ts.map +1 -0
  254. package/build/psbt/bip371.js +113 -28
  255. package/build/psbt/bip371.js.map +1 -0
  256. package/build/psbt/psbtutils.d.ts +56 -16
  257. package/build/psbt/psbtutils.d.ts.map +1 -0
  258. package/build/psbt/psbtutils.js +71 -16
  259. package/build/psbt/psbtutils.js.map +1 -0
  260. package/build/psbt/types.d.ts +249 -0
  261. package/build/psbt/types.d.ts.map +1 -0
  262. package/build/psbt/types.js +6 -0
  263. package/build/psbt/types.js.map +1 -0
  264. package/build/psbt/utils.d.ts +68 -0
  265. package/build/psbt/utils.d.ts.map +1 -0
  266. package/build/psbt/utils.js +171 -0
  267. package/build/psbt/utils.js.map +1 -0
  268. package/build/psbt/validation.d.ts +88 -0
  269. package/build/psbt/validation.d.ts.map +1 -0
  270. package/build/psbt/validation.js +149 -0
  271. package/build/psbt/validation.js.map +1 -0
  272. package/build/psbt.d.ts +84 -120
  273. package/build/psbt.d.ts.map +1 -0
  274. package/build/psbt.js +411 -412
  275. package/build/psbt.js.map +1 -0
  276. package/build/pubkey.d.ts +27 -6
  277. package/build/pubkey.d.ts.map +1 -0
  278. package/build/pubkey.js +37 -13
  279. package/build/pubkey.js.map +1 -0
  280. package/build/push_data.d.ts +24 -2
  281. package/build/push_data.d.ts.map +1 -0
  282. package/build/push_data.js +44 -12
  283. package/build/push_data.js.map +1 -0
  284. package/build/script.d.ts +33 -8
  285. package/build/script.d.ts.map +1 -0
  286. package/build/script.js +100 -36
  287. package/build/script.js.map +1 -0
  288. package/build/script_number.d.ts +17 -0
  289. package/build/script_number.d.ts.map +1 -0
  290. package/build/script_number.js +19 -0
  291. package/build/script_number.js.map +1 -0
  292. package/build/script_signature.d.ts +23 -5
  293. package/build/script_signature.d.ts.map +1 -0
  294. package/build/script_signature.js +48 -15
  295. package/build/script_signature.js.map +1 -0
  296. package/build/transaction.d.ts +160 -18
  297. package/build/transaction.d.ts.map +1 -0
  298. package/build/transaction.js +443 -176
  299. package/build/transaction.js.map +1 -0
  300. package/build/tsconfig.build.tsbuildinfo +1 -0
  301. package/build/types.d.ts +36 -38
  302. package/build/types.d.ts.map +1 -0
  303. package/build/types.js +175 -57
  304. package/build/types.js.map +1 -0
  305. package/build/workers/WorkerSigningPool.d.ts +174 -0
  306. package/build/workers/WorkerSigningPool.d.ts.map +1 -0
  307. package/build/workers/WorkerSigningPool.js +553 -0
  308. package/build/workers/WorkerSigningPool.js.map +1 -0
  309. package/build/workers/WorkerSigningPool.node.d.ts +124 -0
  310. package/build/workers/WorkerSigningPool.node.d.ts.map +1 -0
  311. package/build/workers/WorkerSigningPool.node.js +753 -0
  312. package/build/workers/WorkerSigningPool.node.js.map +1 -0
  313. package/build/workers/ecc-bundle.d.ts +25 -0
  314. package/build/workers/ecc-bundle.d.ts.map +1 -0
  315. package/build/workers/ecc-bundle.js +25 -0
  316. package/build/workers/ecc-bundle.js.map +1 -0
  317. package/build/workers/index.d.ts +91 -0
  318. package/build/workers/index.d.ts.map +1 -0
  319. package/build/workers/index.js +114 -0
  320. package/build/workers/index.js.map +1 -0
  321. package/build/workers/psbt-parallel.d.ts +117 -0
  322. package/build/workers/psbt-parallel.d.ts.map +1 -0
  323. package/build/workers/psbt-parallel.js +233 -0
  324. package/build/workers/psbt-parallel.js.map +1 -0
  325. package/build/workers/signing-worker.d.ts +37 -0
  326. package/build/workers/signing-worker.d.ts.map +1 -0
  327. package/build/workers/signing-worker.js +350 -0
  328. package/build/workers/signing-worker.js.map +1 -0
  329. package/build/workers/types.d.ts +365 -0
  330. package/build/workers/types.d.ts.map +1 -0
  331. package/build/workers/types.js +60 -0
  332. package/build/workers/types.js.map +1 -0
  333. package/package.json +83 -25
  334. package/scripts/bundle-ecc.ts +111 -0
  335. package/src/address.ts +81 -44
  336. package/src/bech32utils.ts +3 -3
  337. package/src/bip66.ts +34 -24
  338. package/src/block.ts +196 -84
  339. package/src/branded.ts +18 -0
  340. package/src/crypto.ts +64 -26
  341. package/src/ecc/context.ts +277 -0
  342. package/src/ecc/index.ts +14 -0
  343. package/src/ecc/types.ts +154 -0
  344. package/src/ecpair.d.ts +99 -0
  345. package/src/errors.ts +163 -0
  346. package/src/index.ts +113 -9
  347. package/src/io/BinaryReader.ts +461 -0
  348. package/src/io/BinaryWriter.ts +696 -0
  349. package/src/io/MemoryPool.ts +343 -0
  350. package/src/io/base64.ts +20 -0
  351. package/src/io/hex.ts +155 -0
  352. package/src/io/index.ts +41 -0
  353. package/src/io/utils.ts +283 -0
  354. package/src/merkle.ts +14 -9
  355. package/src/networks.ts +9 -9
  356. package/src/payments/bip341.ts +34 -33
  357. package/src/payments/embed.ts +244 -41
  358. package/src/payments/index.ts +12 -10
  359. package/src/payments/p2ms.ts +490 -118
  360. package/src/payments/p2op.ts +431 -133
  361. package/src/payments/p2pk.ts +370 -72
  362. package/src/payments/p2pkh.ts +524 -130
  363. package/src/payments/p2sh.ts +572 -172
  364. package/src/payments/p2tr.ts +686 -194
  365. package/src/payments/p2wpkh.ts +484 -107
  366. package/src/payments/p2wsh.ts +526 -164
  367. package/src/payments/types.ts +80 -66
  368. package/src/psbt/bip371.ts +68 -51
  369. package/src/psbt/psbtutils.ts +39 -40
  370. package/src/psbt/types.ts +331 -0
  371. package/src/psbt/utils.ts +188 -0
  372. package/src/psbt/validation.ts +192 -0
  373. package/src/psbt.ts +566 -809
  374. package/src/pubkey.ts +24 -25
  375. package/src/push_data.ts +18 -16
  376. package/src/script.ts +82 -64
  377. package/src/script_number.ts +6 -6
  378. package/src/script_signature.ts +33 -36
  379. package/src/transaction.ts +458 -238
  380. package/src/types.ts +231 -100
  381. package/src/workers/WorkerSigningPool.node.ts +887 -0
  382. package/src/workers/WorkerSigningPool.ts +670 -0
  383. package/src/workers/ecc-bundle.ts +26 -0
  384. package/src/workers/index.ts +165 -0
  385. package/src/workers/psbt-parallel.ts +332 -0
  386. package/src/workers/signing-worker.ts +353 -0
  387. package/src/workers/types.ts +413 -0
  388. package/test/address.spec.ts +9 -6
  389. package/test/bitcoin.core.spec.ts +16 -17
  390. package/test/block.spec.ts +8 -7
  391. package/test/bufferutils.spec.ts +228 -214
  392. package/test/crypto.spec.ts +19 -11
  393. package/test/fixtures/p2pk.json +0 -8
  394. package/test/fixtures/p2pkh.json +1 -1
  395. package/test/fixtures/p2sh.json +1 -1
  396. package/test/fixtures/script.json +1 -1
  397. package/test/fixtures/transaction.json +2 -2
  398. package/test/integration/_regtest.ts +25 -0
  399. package/test/integration/addresses.spec.ts +4 -3
  400. package/test/integration/bip32.spec.ts +2 -1
  401. package/test/integration/blocks.spec.ts +1 -1
  402. package/test/integration/cltv.spec.ts +18 -16
  403. package/test/integration/csv.spec.ts +37 -64
  404. package/test/integration/payments.spec.ts +5 -3
  405. package/test/integration/taproot.spec.ts +76 -83
  406. package/test/integration/transactions.spec.ts +38 -35
  407. package/test/payments.spec.ts +35 -13
  408. package/test/payments.utils.ts +17 -16
  409. package/test/psbt.spec.ts +111 -100
  410. package/test/script.spec.ts +11 -10
  411. package/test/script_signature.spec.ts +9 -11
  412. package/test/taproot-cache.spec.ts +694 -0
  413. package/test/transaction.spec.ts +32 -40
  414. package/test/types.spec.ts +74 -29
  415. package/test/workers-pool.spec.ts +963 -0
  416. package/test/workers-signing.spec.ts +635 -0
  417. package/test/workers.spec.ts +1390 -0
  418. package/tsconfig.base.json +34 -18
  419. package/tsconfig.browser.json +15 -0
  420. package/tsconfig.build.json +5 -0
  421. package/tsconfig.json +5 -14
  422. package/vite.config.browser.ts +3 -42
  423. package/vitest.config.integration.ts +11 -0
  424. package/browser/bufferutils.d.ts +0 -34
  425. package/browser/chunks/crypto-BhCpKpek.js +0 -2033
  426. package/browser/chunks/payments-yjA0Evsv.js +0 -1089
  427. package/browser/chunks/psbt-URK2hBFc.js +0 -4039
  428. package/browser/chunks/script-DyPItFEl.js +0 -318
  429. package/browser/chunks/transaction-C_UbhMGn.js +0 -432
  430. package/browser/chunks/utils-DNZi-T5W.js +0 -761
  431. package/browser/ecc_lib.d.ts +0 -3
  432. package/browser/hooks/AdvancedSignatureManager.d.ts +0 -16
  433. package/browser/hooks/HookedSigner.d.ts +0 -4
  434. package/browser/hooks/SignatureManager.d.ts +0 -13
  435. package/browser/payments/lazy.d.ts +0 -2
  436. package/browser/typeforce.d.ts +0 -38
  437. package/build/bufferutils.d.ts +0 -34
  438. package/build/bufferutils.js +0 -141
  439. package/build/ecc_lib.d.ts +0 -3
  440. package/build/ecc_lib.js +0 -61
  441. package/build/hooks/AdvancedSignatureManager.d.ts +0 -16
  442. package/build/hooks/AdvancedSignatureManager.js +0 -52
  443. package/build/hooks/HookedSigner.d.ts +0 -4
  444. package/build/hooks/HookedSigner.js +0 -64
  445. package/build/hooks/SignatureManager.d.ts +0 -13
  446. package/build/hooks/SignatureManager.js +0 -45
  447. package/build/payments/lazy.d.ts +0 -2
  448. package/build/payments/lazy.js +0 -28
  449. package/build/tsconfig.tsbuildinfo +0 -1
  450. package/src/bufferutils.ts +0 -188
  451. package/src/ecc_lib.ts +0 -94
  452. package/src/hooks/AdvancedSignatureManager.ts +0 -104
  453. package/src/hooks/HookedSigner.ts +0 -108
  454. package/src/hooks/SignatureManager.ts +0 -84
  455. package/src/payments/lazy.ts +0 -28
  456. package/src/typeforce.d.ts +0 -38
  457. package/tsconfig.webpack.json +0 -18
@@ -1,88 +1,368 @@
1
+ /**
2
+ * Pay-to-Public-Key-Hash (P2PKH) payment class.
3
+ *
4
+ * P2PKH is the most common legacy Bitcoin payment type. The output script
5
+ * contains the hash of a public key, and spending requires the full public key
6
+ * and a valid signature.
7
+ *
8
+ * @packageDocumentation
9
+ */
1
10
  import * as bs58check from 'bs58check';
2
11
  import * as bcrypto from '../crypto.js';
3
12
  import { bitcoin as BITCOIN_NETWORK } from '../networks.js';
4
13
  import { decompressPublicKey } from '../pubkey.js';
5
14
  import * as bscript from '../script.js';
6
- import { isPoint, typeforce as typef } from '../types.js';
15
+ import { isPoint } from '../types.js';
16
+ import { alloc, equals } from '../io/index.js';
7
17
  import { PaymentType } from './types.js';
8
- import * as lazy from './lazy.js';
9
18
  const OPS = bscript.opcodes;
10
- export function p2pkh(a, opts) {
11
- if (!a.address && !a.hash && !a.output && !a.pubkey && !a.input) {
12
- throw new TypeError('Not enough data');
19
+ /**
20
+ * Pay-to-Public-Key-Hash (P2PKH) payment class.
21
+ *
22
+ * Creates locking scripts of the form:
23
+ * `OP_DUP OP_HASH160 {hash160(pubkey)} OP_EQUALVERIFY OP_CHECKSIG`
24
+ *
25
+ * Spending requires providing: `{signature} {pubkey}`
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * import { P2PKH } from '@btc-vision/bitcoin';
30
+ *
31
+ * // Create from public key
32
+ * const payment = P2PKH.fromPubkey(pubkey);
33
+ * console.log(payment.address); // Bitcoin address
34
+ * console.log(payment.output); // scriptPubKey
35
+ *
36
+ * // Create from address
37
+ * const fromAddr = P2PKH.fromAddress('1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2');
38
+ * console.log(fromAddr.hash); // 20-byte pubkey hash
39
+ *
40
+ * // Create from hash
41
+ * const fromHash = P2PKH.fromHash(hash160);
42
+ * console.log(fromHash.address);
43
+ * ```
44
+ */
45
+ export class P2PKH {
46
+ // Static public fields
47
+ static NAME = PaymentType.P2PKH;
48
+ // Private instance fields
49
+ #network;
50
+ #opts;
51
+ // Input data (provided by user)
52
+ #inputAddress;
53
+ #inputHash;
54
+ #inputPubkey;
55
+ #inputSignature;
56
+ #inputOutput;
57
+ #inputInput;
58
+ // Hybrid/uncompressed key flags
59
+ #useHybrid = false;
60
+ #useUncompressed = false;
61
+ // Cached computed values
62
+ #address;
63
+ #hash;
64
+ #pubkey;
65
+ #signature;
66
+ #output;
67
+ #input;
68
+ #witness;
69
+ // Cache flags
70
+ #addressComputed = false;
71
+ #hashComputed = false;
72
+ #pubkeyComputed = false;
73
+ #signatureComputed = false;
74
+ #outputComputed = false;
75
+ #inputComputed = false;
76
+ #witnessComputed = false;
77
+ // Decoded address cache
78
+ #decodedAddress;
79
+ #decodedAddressComputed = false;
80
+ // Decoded input chunks cache
81
+ #inputChunks;
82
+ #inputChunksComputed = false;
83
+ /**
84
+ * Creates a new P2PKH payment instance.
85
+ *
86
+ * @param params - Payment parameters
87
+ * @param params.address - Base58Check encoded address
88
+ * @param params.hash - 20-byte pubkey hash (RIPEMD160(SHA256(pubkey)))
89
+ * @param params.pubkey - The public key (33 or 65 bytes)
90
+ * @param params.signature - DER-encoded signature
91
+ * @param params.output - The scriptPubKey
92
+ * @param params.input - The scriptSig
93
+ * @param params.network - Network parameters (defaults to mainnet)
94
+ * @param opts - Payment options
95
+ * @param opts.validate - Whether to validate inputs (default: true)
96
+ *
97
+ * @throws {TypeError} If validation is enabled and data is invalid
98
+ */
99
+ constructor(params, opts) {
100
+ this.#network = params.network ?? BITCOIN_NETWORK;
101
+ this.#opts = {
102
+ validate: opts?.validate ?? true,
103
+ allowIncomplete: opts?.allowIncomplete ?? false,
104
+ };
105
+ // Store input data
106
+ this.#inputAddress = params.address;
107
+ this.#inputHash = params.hash;
108
+ this.#inputPubkey = params.pubkey;
109
+ this.#inputSignature = params.signature;
110
+ this.#inputOutput = params.output;
111
+ this.#inputInput = params.input;
112
+ this.#useHybrid = params.useHybrid ?? false;
113
+ this.#useUncompressed = params.useUncompressed ?? false;
114
+ // Validate if requested
115
+ if (this.#opts.validate) {
116
+ this.#validate();
117
+ }
118
+ }
119
+ // Public getters
120
+ /**
121
+ * Payment type discriminant.
122
+ */
123
+ get name() {
124
+ return PaymentType.P2PKH;
125
+ }
126
+ /**
127
+ * Network parameters.
128
+ */
129
+ get network() {
130
+ return this.#network;
131
+ }
132
+ /**
133
+ * Base58Check encoded Bitcoin address.
134
+ */
135
+ get address() {
136
+ if (!this.#addressComputed) {
137
+ this.#address = this.#computeAddress();
138
+ this.#addressComputed = true;
139
+ }
140
+ return this.#address;
141
+ }
142
+ /**
143
+ * 20-byte pubkey hash (RIPEMD160(SHA256(pubkey))).
144
+ */
145
+ get hash() {
146
+ if (!this.#hashComputed) {
147
+ this.#hash = this.#computeHash();
148
+ this.#hashComputed = true;
149
+ }
150
+ return this.#hash;
151
+ }
152
+ /**
153
+ * The public key (33 or 65 bytes).
154
+ */
155
+ get pubkey() {
156
+ if (!this.#pubkeyComputed) {
157
+ this.#pubkey = this.#computePubkey();
158
+ this.#pubkeyComputed = true;
159
+ }
160
+ return this.#pubkey;
161
+ }
162
+ /**
163
+ * The DER-encoded signature.
164
+ */
165
+ get signature() {
166
+ if (!this.#signatureComputed) {
167
+ this.#signature = this.#computeSignature();
168
+ this.#signatureComputed = true;
169
+ }
170
+ return this.#signature;
171
+ }
172
+ /**
173
+ * The scriptPubKey:
174
+ * `OP_DUP OP_HASH160 {hash} OP_EQUALVERIFY OP_CHECKSIG`
175
+ */
176
+ get output() {
177
+ if (!this.#outputComputed) {
178
+ this.#output = this.#computeOutput();
179
+ this.#outputComputed = true;
180
+ }
181
+ return this.#output;
182
+ }
183
+ /**
184
+ * The scriptSig: `{signature} {pubkey}`
185
+ */
186
+ get input() {
187
+ if (!this.#inputComputed) {
188
+ this.#input = this.#computeInput();
189
+ this.#inputComputed = true;
190
+ }
191
+ return this.#input;
13
192
  }
14
- opts = Object.assign({ validate: true }, opts || {});
15
- typef({
16
- network: typef.maybe(typef.Object),
17
- address: typef.maybe(typef.String),
18
- hash: typef.maybe(typef.BufferN(20)),
19
- output: typef.maybe(typef.BufferN(25)),
20
- pubkey: typef.maybe(isPoint),
21
- signature: typef.maybe(bscript.isCanonicalScriptSignature),
22
- input: typef.maybe(typef.Buffer),
23
- }, a);
24
- const _address = lazy.value(() => {
25
- const payload = Buffer.from(bs58check.default.decode(a.address));
26
- const version = payload.readUInt8(0);
27
- const hash = payload.subarray(1);
28
- return { version, hash };
29
- });
30
- const _chunks = lazy.value(() => {
31
- return bscript.decompile(a.input);
32
- });
33
- const network = a.network || BITCOIN_NETWORK;
34
- const o = {
35
- name: PaymentType.P2PKH,
36
- network,
37
- hash: undefined,
38
- };
39
- lazy.prop(o, 'address', () => {
40
- if (!o.hash)
41
- return;
42
- const payload = Buffer.allocUnsafe(21);
43
- payload.writeUInt8(network.pubKeyHash, 0);
44
- o.hash.copy(payload, 1);
193
+ /**
194
+ * Witness stack (empty for P2PKH as it's not a SegWit type).
195
+ */
196
+ get witness() {
197
+ if (!this.#witnessComputed) {
198
+ this.#witness = this.#computeWitness();
199
+ this.#witnessComputed = true;
200
+ }
201
+ return this.#witness;
202
+ }
203
+ // Static factory methods
204
+ /**
205
+ * Creates a P2PKH payment from a public key.
206
+ *
207
+ * @param pubkey - The public key (33 or 65 bytes)
208
+ * @param network - Network parameters (defaults to mainnet)
209
+ * @returns A new P2PKH payment instance
210
+ *
211
+ * @example
212
+ * ```typescript
213
+ * const payment = P2PKH.fromPubkey(pubkey);
214
+ * const address = payment.address;
215
+ * ```
216
+ */
217
+ static fromPubkey(pubkey, network) {
218
+ return new P2PKH({ pubkey, network });
219
+ }
220
+ /**
221
+ * Creates a P2PKH payment from a Base58Check address.
222
+ *
223
+ * @param address - Base58Check encoded address
224
+ * @param network - Network parameters (defaults to mainnet)
225
+ * @returns A new P2PKH payment instance
226
+ *
227
+ * @example
228
+ * ```typescript
229
+ * const payment = P2PKH.fromAddress('1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2');
230
+ * const hash = payment.hash;
231
+ * ```
232
+ */
233
+ static fromAddress(address, network) {
234
+ return new P2PKH({ address, network });
235
+ }
236
+ /**
237
+ * Creates a P2PKH payment from a 20-byte pubkey hash.
238
+ *
239
+ * @param hash - 20-byte pubkey hash
240
+ * @param network - Network parameters (defaults to mainnet)
241
+ * @returns A new P2PKH payment instance
242
+ *
243
+ * @example
244
+ * ```typescript
245
+ * const payment = P2PKH.fromHash(hash160);
246
+ * const address = payment.address;
247
+ * ```
248
+ */
249
+ static fromHash(hash, network) {
250
+ return new P2PKH({ hash, network });
251
+ }
252
+ /**
253
+ * Creates a P2PKH payment from a scriptPubKey.
254
+ *
255
+ * @param output - The scriptPubKey
256
+ * @param network - Network parameters (defaults to mainnet)
257
+ * @returns A new P2PKH payment instance
258
+ */
259
+ static fromOutput(output, network) {
260
+ return new P2PKH({ output, network });
261
+ }
262
+ // Private helper methods
263
+ #getDecodedAddress() {
264
+ if (!this.#decodedAddressComputed) {
265
+ if (this.#inputAddress) {
266
+ const payload = new Uint8Array(bs58check.default.decode(this.#inputAddress));
267
+ this.#decodedAddress = {
268
+ version: payload[0],
269
+ hash: payload.subarray(1),
270
+ };
271
+ }
272
+ this.#decodedAddressComputed = true;
273
+ }
274
+ return this.#decodedAddress;
275
+ }
276
+ #getInputChunks() {
277
+ if (!this.#inputChunksComputed) {
278
+ if (this.#inputInput) {
279
+ this.#inputChunks = bscript.decompile(this.#inputInput) ?? undefined;
280
+ }
281
+ this.#inputChunksComputed = true;
282
+ }
283
+ return this.#inputChunks;
284
+ }
285
+ // Private computation methods
286
+ #computeAddress() {
287
+ if (this.#inputAddress) {
288
+ return this.#inputAddress;
289
+ }
290
+ const h = this.hash;
291
+ if (!h)
292
+ return undefined;
293
+ const payload = alloc(21);
294
+ payload[0] = this.#network.pubKeyHash;
295
+ payload.set(h, 1);
45
296
  return bs58check.default.encode(payload);
46
- });
47
- lazy.prop(o, 'hash', () => {
48
- if (a.output)
49
- return a.output.subarray(3, 23);
50
- if (a.address)
51
- return _address().hash;
52
- if (a.pubkey || o.pubkey)
53
- return bcrypto.hash160(a.pubkey || o.pubkey);
54
- });
55
- lazy.prop(o, 'output', () => {
56
- if (!o.hash)
57
- return;
297
+ }
298
+ #computeHash() {
299
+ if (this.#inputHash) {
300
+ return this.#inputHash;
301
+ }
302
+ if (this.#inputOutput) {
303
+ return this.#inputOutput.subarray(3, 23);
304
+ }
305
+ if (this.#inputAddress) {
306
+ return this.#getDecodedAddress()?.hash;
307
+ }
308
+ // Use the pubkey getter to derive pubkey from input if available
309
+ const pk = this.pubkey;
310
+ if (pk) {
311
+ return bcrypto.hash160(pk);
312
+ }
313
+ return undefined;
314
+ }
315
+ #computePubkey() {
316
+ if (this.#inputPubkey) {
317
+ return this.#inputPubkey;
318
+ }
319
+ if (this.#inputInput) {
320
+ const chunks = this.#getInputChunks();
321
+ if (chunks && chunks.length >= 2) {
322
+ return chunks[1];
323
+ }
324
+ }
325
+ return undefined;
326
+ }
327
+ #computeSignature() {
328
+ if (this.#inputSignature) {
329
+ return this.#inputSignature;
330
+ }
331
+ if (this.#inputInput) {
332
+ const chunks = this.#getInputChunks();
333
+ if (chunks && chunks.length >= 1) {
334
+ return chunks[0];
335
+ }
336
+ }
337
+ return undefined;
338
+ }
339
+ #computeOutput() {
340
+ if (this.#inputOutput) {
341
+ return this.#inputOutput;
342
+ }
343
+ const h = this.hash;
344
+ if (!h)
345
+ return undefined;
58
346
  return bscript.compile([
59
347
  OPS.OP_DUP,
60
348
  OPS.OP_HASH160,
61
- o.hash,
349
+ h,
62
350
  OPS.OP_EQUALVERIFY,
63
351
  OPS.OP_CHECKSIG,
64
352
  ]);
65
- });
66
- lazy.prop(o, 'pubkey', () => {
67
- if (!a.input)
68
- return;
69
- return _chunks()[1];
70
- });
71
- lazy.prop(o, 'signature', () => {
72
- if (!a.input)
73
- return;
74
- return _chunks()[0];
75
- });
76
- lazy.prop(o, 'input', () => {
77
- if (!a.pubkey)
78
- return;
79
- if (!a.signature)
80
- return;
81
- let pubKey = a.pubkey;
82
- if (a.useHybrid || a.useUncompressed) {
83
- const decompressed = decompressPublicKey(a.pubkey);
353
+ }
354
+ #computeInput() {
355
+ if (this.#inputInput) {
356
+ return this.#inputInput;
357
+ }
358
+ if (!this.#inputPubkey || !this.#inputSignature) {
359
+ return undefined;
360
+ }
361
+ let pubKey = this.#inputPubkey;
362
+ if (this.#useHybrid || this.#useUncompressed) {
363
+ const decompressed = decompressPublicKey(this.#inputPubkey);
84
364
  if (decompressed) {
85
- if (a.useUncompressed) {
365
+ if (this.#useUncompressed) {
86
366
  pubKey = decompressed.uncompressed;
87
367
  }
88
368
  else {
@@ -90,66 +370,75 @@ export function p2pkh(a, opts) {
90
370
  }
91
371
  }
92
372
  }
93
- return bscript.compile([a.signature, pubKey]);
94
- });
95
- lazy.prop(o, 'witness', () => {
96
- if (!o.input)
97
- return;
98
- return [];
99
- });
100
- if (opts.validate) {
101
- let hash = Buffer.from([]);
102
- if (a.address) {
103
- if (_address().version !== network.pubKeyHash) {
373
+ return bscript.compile([this.#inputSignature, pubKey]);
374
+ }
375
+ #computeWitness() {
376
+ if (this.input) {
377
+ return [];
378
+ }
379
+ return undefined;
380
+ }
381
+ // Validation
382
+ #validate() {
383
+ let hash = new Uint8Array(0);
384
+ if (this.#inputAddress) {
385
+ const addr = this.#getDecodedAddress();
386
+ if (!addr) {
387
+ throw new TypeError('Invalid address');
388
+ }
389
+ if (addr.version !== this.#network.pubKeyHash) {
104
390
  throw new TypeError('Invalid version or Network mismatch');
105
391
  }
106
- if (_address().hash.length !== 20) {
392
+ if (addr.hash.length !== 20) {
107
393
  throw new TypeError('Invalid address');
108
394
  }
109
- hash = _address().hash;
395
+ hash = addr.hash;
110
396
  }
111
- if (a.hash) {
112
- if (hash.length > 0 && !hash.equals(a.hash)) {
397
+ if (this.#inputHash) {
398
+ if (hash.length > 0 && !equals(hash, this.#inputHash)) {
113
399
  throw new TypeError('Hash mismatch');
114
400
  }
115
401
  else {
116
- hash = a.hash;
402
+ hash = this.#inputHash;
117
403
  }
118
404
  }
119
- if (a.output) {
120
- if (a.output.length !== 25 ||
121
- a.output[0] !== OPS.OP_DUP ||
122
- a.output[1] !== OPS.OP_HASH160 ||
123
- a.output[2] !== 0x14 ||
124
- a.output[23] !== OPS.OP_EQUALVERIFY ||
125
- a.output[24] !== OPS.OP_CHECKSIG) {
405
+ if (this.#inputOutput) {
406
+ if (this.#inputOutput.length !== 25 ||
407
+ this.#inputOutput[0] !== OPS.OP_DUP ||
408
+ this.#inputOutput[1] !== OPS.OP_HASH160 ||
409
+ this.#inputOutput[2] !== 0x14 ||
410
+ this.#inputOutput[23] !== OPS.OP_EQUALVERIFY ||
411
+ this.#inputOutput[24] !== OPS.OP_CHECKSIG) {
126
412
  throw new TypeError('Output is invalid');
127
413
  }
128
- const hash2 = a.output.subarray(3, 23);
129
- if (hash.length > 0 && !hash.equals(hash2))
414
+ const hash2 = this.#inputOutput.subarray(3, 23);
415
+ if (hash.length > 0 && !equals(hash, hash2)) {
130
416
  throw new TypeError('Hash mismatch');
131
- else
417
+ }
418
+ else {
132
419
  hash = hash2;
420
+ }
133
421
  }
134
- if (a.pubkey) {
135
- const pkh = bcrypto.hash160(a.pubkey);
136
- let badHash = hash.length > 0 && !hash.equals(pkh);
422
+ if (this.#inputPubkey) {
423
+ const pkh = bcrypto.hash160(this.#inputPubkey);
424
+ let badHash = hash.length > 0 && !equals(hash, pkh);
137
425
  if (badHash) {
138
- if ((a.pubkey.length === 33 && (a.pubkey[0] === 0x02 || a.pubkey[0] === 0x03)) ||
139
- (a.pubkey.length === 65 && a.pubkey[0] === 0x04)) {
140
- const uncompressed = decompressPublicKey(a.pubkey);
426
+ if ((this.#inputPubkey.length === 33 &&
427
+ (this.#inputPubkey[0] === 0x02 || this.#inputPubkey[0] === 0x03)) ||
428
+ (this.#inputPubkey.length === 65 && this.#inputPubkey[0] === 0x04)) {
429
+ const uncompressed = decompressPublicKey(this.#inputPubkey);
141
430
  if (uncompressed) {
142
431
  const pkh2 = bcrypto.hash160(uncompressed.uncompressed);
143
- if (!hash.equals(pkh2)) {
432
+ if (!equals(hash, pkh2)) {
144
433
  const pkh3 = bcrypto.hash160(uncompressed.hybrid);
145
- badHash = !hash.equals(pkh3);
434
+ badHash = !equals(hash, pkh3);
146
435
  if (!badHash) {
147
- a.useHybrid = true;
436
+ this.#useHybrid = true;
148
437
  }
149
438
  }
150
439
  else {
151
440
  badHash = false;
152
- a.useUncompressed = true;
441
+ this.#useUncompressed = true;
153
442
  }
154
443
  }
155
444
  }
@@ -161,22 +450,86 @@ export function p2pkh(a, opts) {
161
450
  hash = pkh;
162
451
  }
163
452
  }
164
- if (a.input) {
165
- const chunks = _chunks();
166
- if (chunks.length !== 2)
453
+ if (this.#inputInput) {
454
+ const chunks = this.#getInputChunks();
455
+ if (!chunks || chunks.length !== 2) {
167
456
  throw new TypeError('Input is invalid');
168
- if (!bscript.isCanonicalScriptSignature(chunks[0]))
457
+ }
458
+ if (!bscript.isCanonicalScriptSignature(chunks[0])) {
169
459
  throw new TypeError('Input has invalid signature');
170
- if (!isPoint(chunks[1]))
460
+ }
461
+ if (!isPoint(chunks[1])) {
171
462
  throw new TypeError('Input has invalid pubkey');
172
- if (a.signature && !a.signature.equals(chunks[0]))
463
+ }
464
+ if (this.#inputSignature && !equals(this.#inputSignature, chunks[0])) {
173
465
  throw new TypeError('Signature mismatch');
174
- if (a.pubkey && !a.pubkey.equals(chunks[1]))
466
+ }
467
+ if (this.#inputPubkey && !equals(this.#inputPubkey, chunks[1])) {
175
468
  throw new TypeError('Pubkey mismatch');
469
+ }
176
470
  const pkh = bcrypto.hash160(chunks[1]);
177
- if (hash.length > 0 && !hash.equals(pkh))
471
+ if (hash.length > 0 && !equals(hash, pkh)) {
178
472
  throw new TypeError('Hash mismatch (input)');
473
+ }
179
474
  }
180
475
  }
181
- return Object.assign(o, a);
476
+ /**
477
+ * Converts to a plain P2PKHPayment object for backwards compatibility.
478
+ *
479
+ * @returns A P2PKHPayment object
480
+ */
481
+ toPayment() {
482
+ return {
483
+ name: this.name,
484
+ network: this.network,
485
+ address: this.address,
486
+ hash: this.hash,
487
+ pubkey: this.pubkey,
488
+ signature: this.signature,
489
+ output: this.output,
490
+ input: this.input,
491
+ witness: this.witness,
492
+ };
493
+ }
494
+ }
495
+ /**
496
+ * Creates a Pay-to-Public-Key-Hash (P2PKH) payment object.
497
+ *
498
+ * This is the legacy factory function for backwards compatibility.
499
+ * For new code, prefer using the P2PKH class directly.
500
+ *
501
+ * @param a - The payment object containing the necessary data
502
+ * @param opts - Optional payment options
503
+ * @returns The P2PKH payment object
504
+ * @throws {TypeError} If the required data is not provided or if the data is invalid
505
+ *
506
+ * @example
507
+ * ```typescript
508
+ * import { p2pkh } from '@btc-vision/bitcoin';
509
+ *
510
+ * // Create from public key
511
+ * const payment = p2pkh({ pubkey });
512
+ *
513
+ * // Create from address
514
+ * const fromAddr = p2pkh({ address: '1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2' });
515
+ * ```
516
+ */
517
+ export function p2pkh(a, opts) {
518
+ if (!a.address && !a.hash && !a.output && !a.pubkey && !a.input) {
519
+ throw new TypeError('Not enough data');
520
+ }
521
+ const instance = new P2PKH({
522
+ address: a.address,
523
+ hash: a.hash,
524
+ pubkey: a.pubkey,
525
+ signature: a.signature,
526
+ output: a.output,
527
+ input: a.input,
528
+ network: a.network,
529
+ useHybrid: a.useHybrid,
530
+ useUncompressed: a.useUncompressed,
531
+ }, opts);
532
+ // Return a merged object for backwards compatibility
533
+ return Object.assign(instance.toPayment(), a);
182
534
  }
535
+ //# sourceMappingURL=p2pkh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p2pkh.js","sourceRoot":"","sources":["../../src/payments/p2pkh.ts"],"names":[],"mappings":"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"}