@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,3 +0,0 @@
1
- import { TinySecp256k1Interface } from './types.js';
2
- export declare function initEccLib(eccLib: TinySecp256k1Interface | undefined): void;
3
- export declare function getEccLib(): TinySecp256k1Interface;
@@ -1,16 +0,0 @@
1
- export interface CacheEntry {
2
- pubKey: string;
3
- dataRef: WeakRef<Buffer>;
4
- signature: Buffer;
5
- }
6
- export declare class AdvancedSignatureManager {
7
- private static instance;
8
- private cacheBySigner;
9
- private registry;
10
- private constructor();
11
- static getInstance(): AdvancedSignatureManager;
12
- addSignature(pubKey: string, data: Buffer, signature: Buffer): Buffer;
13
- getSignature(pubKey: string, data: Buffer): Buffer | undefined;
14
- clearCache(): void;
15
- clearCacheForSigner(pubKey: string): void;
16
- }
@@ -1,4 +0,0 @@
1
- import { BIP32Interface } from '@btc-vision/bip32';
2
- import { ECPairInterface } from 'ecpair';
3
- import { Signer, SignerAlternative, SignerAsync } from '../psbt.js';
4
- export declare function hookSigner(keyPair: Signer | SignerAlternative | SignerAsync | BIP32Interface | ECPairInterface): void;
@@ -1,13 +0,0 @@
1
- export interface CacheEntry {
2
- length: number;
3
- dataRef: WeakRef<Buffer>;
4
- signature: Buffer;
5
- }
6
- export declare class SignatureManager {
7
- private cacheByLength;
8
- private registry;
9
- constructor();
10
- addSignature(data: Buffer, signature: Buffer): Buffer;
11
- getSignature(data: Buffer): Buffer | undefined;
12
- clearCache(): void;
13
- }
@@ -1,2 +0,0 @@
1
- export declare function prop<T extends object>(object: T, name: string, f: () => T[keyof T]): void;
2
- export declare function value<T>(f: () => T): () => T;
@@ -1,38 +0,0 @@
1
- /**
2
- * Type definitions for typeforce library
3
- */
4
-
5
- /**
6
- * Typeforce type validator - validates that a value matches a given type.
7
- */
8
- type TypeforceValidator = (value: unknown) => boolean;
9
-
10
- /**
11
- * Interface representing the typeforce library's API.
12
- */
13
- interface TypeforceLib {
14
- (type: unknown, value: unknown): void;
15
- Number: TypeforceValidator;
16
- Array: TypeforceValidator;
17
- Boolean: TypeforceValidator;
18
- String: TypeforceValidator;
19
- Buffer: TypeforceValidator;
20
- Hex: TypeforceValidator;
21
- Null: TypeforceValidator;
22
- Function: TypeforceValidator;
23
- UInt8: TypeforceValidator;
24
- UInt32: TypeforceValidator;
25
- UInt53: TypeforceValidator;
26
- BufferN: (n: number) => TypeforceValidator;
27
- maybe: (type: unknown) => TypeforceValidator;
28
- tuple: (...types: unknown[]) => TypeforceValidator;
29
- oneOf: (...types: unknown[]) => TypeforceValidator;
30
- arrayOf: (type: unknown) => TypeforceValidator;
31
- Object: TypeforceValidator;
32
- anyOf: (...types: unknown[]) => TypeforceValidator;
33
- }
34
-
35
- declare module 'typeforce' {
36
- const typeforce: TypeforceLib;
37
- export = typeforce;
38
- }
@@ -1,34 +0,0 @@
1
- import * as varuint from 'varuint-bitcoin';
2
- export { varuint };
3
- export declare function readUInt64LE(buffer: Buffer, offset: number): number;
4
- export declare function writeUInt64LE(buffer: Buffer, value: number, offset: number): number;
5
- export declare function reverseBuffer(buffer: Buffer): Buffer;
6
- export declare function cloneBuffer(buffer: Buffer): Buffer;
7
- export declare class BufferWriter {
8
- buffer: Buffer;
9
- offset: number;
10
- constructor(buffer: Buffer, offset?: number);
11
- static withCapacity(size: number): BufferWriter;
12
- writeUInt8(i: number): void;
13
- writeInt32(i: number): void;
14
- writeUInt32(i: number): void;
15
- writeUInt64(i: number): void;
16
- writeVarInt(i: number): void;
17
- writeSlice(slice: Buffer): void;
18
- writeVarSlice(slice: Buffer): void;
19
- writeVector(vector: Buffer[]): void;
20
- end(): Buffer;
21
- }
22
- export declare class BufferReader {
23
- buffer: Buffer;
24
- offset: number;
25
- constructor(buffer: Buffer, offset?: number);
26
- readUInt8(): number;
27
- readInt32(): number;
28
- readUInt32(): number;
29
- readUInt64(): number;
30
- readVarInt(): number;
31
- readSlice(n: number): Buffer;
32
- readVarSlice(): Buffer;
33
- readVector(): Buffer[];
34
- }
@@ -1,141 +0,0 @@
1
- import * as varuint from 'varuint-bitcoin';
2
- import * as types from './types.js';
3
- const { typeforce } = types;
4
- export { varuint };
5
- function verifuint(value, max) {
6
- if (typeof value !== 'number')
7
- throw new Error('cannot write a non-number as a number');
8
- if (value < 0)
9
- throw new Error('specified a negative value for writing an unsigned value');
10
- if (value > max)
11
- throw new Error('RangeError: value out of range');
12
- if (Math.floor(value) !== value)
13
- throw new Error('value has a fractional component');
14
- }
15
- export function readUInt64LE(buffer, offset) {
16
- const a = buffer.readUInt32LE(offset);
17
- let b = buffer.readUInt32LE(offset + 4);
18
- b *= 0x100000000;
19
- verifuint(b + a, 0x001fffffffffffff);
20
- return b + a;
21
- }
22
- export function writeUInt64LE(buffer, value, offset) {
23
- verifuint(value, 0x001fffffffffffff);
24
- buffer.writeInt32LE(value & -1, offset);
25
- buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4);
26
- return offset + 8;
27
- }
28
- export function reverseBuffer(buffer) {
29
- if (buffer.length < 1)
30
- return buffer;
31
- let j = buffer.length - 1;
32
- let tmp = 0;
33
- for (let i = 0; i < buffer.length / 2; i++) {
34
- tmp = buffer[i];
35
- buffer[i] = buffer[j];
36
- buffer[j] = tmp;
37
- j--;
38
- }
39
- return buffer;
40
- }
41
- export function cloneBuffer(buffer) {
42
- const clone = Buffer.allocUnsafe(buffer.length);
43
- buffer.copy(clone);
44
- return clone;
45
- }
46
- export class BufferWriter {
47
- constructor(buffer, offset = 0) {
48
- this.buffer = buffer;
49
- this.offset = offset;
50
- typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]);
51
- }
52
- static withCapacity(size) {
53
- return new BufferWriter(Buffer.alloc(size));
54
- }
55
- writeUInt8(i) {
56
- this.offset = this.buffer.writeUInt8(i, this.offset);
57
- }
58
- writeInt32(i) {
59
- this.offset = this.buffer.writeInt32LE(i, this.offset);
60
- }
61
- writeUInt32(i) {
62
- this.offset = this.buffer.writeUInt32LE(i, this.offset);
63
- }
64
- writeUInt64(i) {
65
- this.offset = writeUInt64LE(this.buffer, i, this.offset);
66
- }
67
- writeVarInt(i) {
68
- const encode = varuint.encode(i, this.buffer, this.offset);
69
- this.offset += encode.bytes;
70
- }
71
- writeSlice(slice) {
72
- if (this.buffer.length < this.offset + slice.length) {
73
- throw new Error('Cannot write slice out of bounds');
74
- }
75
- this.offset += slice.copy(this.buffer, this.offset);
76
- }
77
- writeVarSlice(slice) {
78
- this.writeVarInt(slice.length);
79
- this.writeSlice(slice);
80
- }
81
- writeVector(vector) {
82
- this.writeVarInt(vector.length);
83
- vector.forEach((buf) => this.writeVarSlice(buf));
84
- }
85
- end() {
86
- if (this.buffer.length === this.offset) {
87
- return this.buffer;
88
- }
89
- throw new Error(`buffer size ${this.buffer.length}, offset ${this.offset}`);
90
- }
91
- }
92
- export class BufferReader {
93
- constructor(buffer, offset = 0) {
94
- this.buffer = buffer;
95
- this.offset = offset;
96
- typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]);
97
- }
98
- readUInt8() {
99
- const result = this.buffer.readUInt8(this.offset);
100
- this.offset++;
101
- return result;
102
- }
103
- readInt32() {
104
- const result = this.buffer.readInt32LE(this.offset);
105
- this.offset += 4;
106
- return result;
107
- }
108
- readUInt32() {
109
- const result = this.buffer.readUInt32LE(this.offset);
110
- this.offset += 4;
111
- return result;
112
- }
113
- readUInt64() {
114
- const result = readUInt64LE(this.buffer, this.offset);
115
- this.offset += 8;
116
- return result;
117
- }
118
- readVarInt() {
119
- const vi = varuint.decode(this.buffer, this.offset);
120
- this.offset += vi.bytes;
121
- return vi.numberValue || 0;
122
- }
123
- readSlice(n) {
124
- if (this.buffer.length < this.offset + n) {
125
- throw new Error('Cannot read slice out of bounds');
126
- }
127
- const result = Buffer.from(this.buffer.subarray(this.offset, this.offset + n));
128
- this.offset += n;
129
- return result;
130
- }
131
- readVarSlice() {
132
- return this.readSlice(this.readVarInt());
133
- }
134
- readVector() {
135
- const count = this.readVarInt();
136
- const vector = [];
137
- for (let i = 0; i < count; i++)
138
- vector.push(this.readVarSlice());
139
- return vector;
140
- }
141
- }
@@ -1,3 +0,0 @@
1
- import { TinySecp256k1Interface } from './types.js';
2
- export declare function initEccLib(eccLib: TinySecp256k1Interface | undefined): void;
3
- export declare function getEccLib(): TinySecp256k1Interface;
package/build/ecc_lib.js DELETED
@@ -1,61 +0,0 @@
1
- const _ECCLIB_CACHE = {};
2
- export function initEccLib(eccLib) {
3
- if (!eccLib) {
4
- _ECCLIB_CACHE.eccLib = eccLib;
5
- }
6
- else if (eccLib !== _ECCLIB_CACHE.eccLib) {
7
- verifyEcc(eccLib);
8
- _ECCLIB_CACHE.eccLib = eccLib;
9
- }
10
- }
11
- export function getEccLib() {
12
- if (!_ECCLIB_CACHE.eccLib)
13
- throw new Error('No ECC Library provided. You must call initEccLib() with a valid TinySecp256k1Interface instance');
14
- return _ECCLIB_CACHE.eccLib;
15
- }
16
- const h = (hex) => Buffer.from(hex, 'hex');
17
- function verifyEcc(ecc) {
18
- assert(typeof ecc.isXOnlyPoint === 'function');
19
- assert(ecc.isXOnlyPoint(h('79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798')));
20
- assert(ecc.isXOnlyPoint(h('fffffffffffffffffffffffffffffffffffffffffffffffffffffffeeffffc2e')));
21
- assert(ecc.isXOnlyPoint(h('f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9')));
22
- assert(ecc.isXOnlyPoint(h('0000000000000000000000000000000000000000000000000000000000000001')));
23
- assert(!ecc.isXOnlyPoint(h('0000000000000000000000000000000000000000000000000000000000000000')));
24
- assert(!ecc.isXOnlyPoint(h('fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f')));
25
- assert(typeof ecc.xOnlyPointAddTweak === 'function');
26
- tweakAddVectors.forEach((t) => {
27
- const r = ecc.xOnlyPointAddTweak(h(t.pubkey), h(t.tweak));
28
- if (t.result === null) {
29
- assert(r === null);
30
- }
31
- else {
32
- assert(r !== null);
33
- assert(r.parity === t.parity);
34
- assert(Buffer.from(r.xOnlyPubkey).equals(h(t.result)));
35
- }
36
- });
37
- }
38
- function assert(bool) {
39
- if (!bool)
40
- throw new Error('ecc library invalid');
41
- }
42
- const tweakAddVectors = [
43
- {
44
- pubkey: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
45
- tweak: 'fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364140',
46
- parity: -1,
47
- result: null,
48
- },
49
- {
50
- pubkey: '1617d38ed8d8657da4d4761e8057bc396ea9e4b9d29776d4be096016dbd2509b',
51
- tweak: 'a8397a935f0dfceba6ba9618f6451ef4d80637abf4e6af2669fbc9de6a8fd2ac',
52
- parity: 1,
53
- result: 'e478f99dab91052ab39a33ea35fd5e6e4933f4d28023cd597c9a1f6760346adf',
54
- },
55
- {
56
- pubkey: '2c0b7cf95324a07d05398b240174dc0c2be444d96b159aa6c7f7b1e668680991',
57
- tweak: '823c3cd2142744b075a87eade7e1b8678ba308d566226a0056ca2b7a76f86b47',
58
- parity: 0,
59
- result: '9534f8dc8c6deda2dc007655981c78b49c5d96c778fbf363462a11ec9dfd948c',
60
- },
61
- ];
@@ -1,16 +0,0 @@
1
- export interface CacheEntry {
2
- pubKey: string;
3
- dataRef: WeakRef<Buffer>;
4
- signature: Buffer;
5
- }
6
- export declare class AdvancedSignatureManager {
7
- private static instance;
8
- private cacheBySigner;
9
- private registry;
10
- private constructor();
11
- static getInstance(): AdvancedSignatureManager;
12
- addSignature(pubKey: string, data: Buffer, signature: Buffer): Buffer;
13
- getSignature(pubKey: string, data: Buffer): Buffer | undefined;
14
- clearCache(): void;
15
- clearCacheForSigner(pubKey: string): void;
16
- }
@@ -1,52 +0,0 @@
1
- export class AdvancedSignatureManager {
2
- constructor() {
3
- this.cacheBySigner = new Map();
4
- this.registry = new FinalizationRegistry((entry) => {
5
- const set = this.cacheBySigner.get(entry.pubKey);
6
- if (set) {
7
- set.delete(entry);
8
- if (set.size === 0) {
9
- this.cacheBySigner.delete(entry.pubKey);
10
- }
11
- }
12
- });
13
- }
14
- static getInstance() {
15
- if (!AdvancedSignatureManager.instance) {
16
- AdvancedSignatureManager.instance = new AdvancedSignatureManager();
17
- }
18
- return AdvancedSignatureManager.instance;
19
- }
20
- addSignature(pubKey, data, signature) {
21
- const entry = {
22
- pubKey,
23
- dataRef: new WeakRef(data),
24
- signature,
25
- };
26
- if (!this.cacheBySigner.has(pubKey)) {
27
- this.cacheBySigner.set(pubKey, new Set());
28
- }
29
- const set = this.cacheBySigner.get(pubKey);
30
- set.add(entry);
31
- this.registry.register(data, entry);
32
- return signature;
33
- }
34
- getSignature(pubKey, data) {
35
- const set = this.cacheBySigner.get(pubKey);
36
- if (!set)
37
- return undefined;
38
- for (const entry of set) {
39
- const cachedData = entry.dataRef.deref();
40
- if (cachedData && cachedData.equals(data)) {
41
- return entry.signature;
42
- }
43
- }
44
- return undefined;
45
- }
46
- clearCache() {
47
- this.cacheBySigner.clear();
48
- }
49
- clearCacheForSigner(pubKey) {
50
- this.cacheBySigner.delete(pubKey);
51
- }
52
- }
@@ -1,4 +0,0 @@
1
- import { BIP32Interface } from '@btc-vision/bip32';
2
- import { ECPairInterface } from 'ecpair';
3
- import { Signer, SignerAlternative, SignerAsync } from '../psbt.js';
4
- export declare function hookSigner(keyPair: Signer | SignerAlternative | SignerAsync | BIP32Interface | ECPairInterface): void;
@@ -1,64 +0,0 @@
1
- import { SignatureManager } from './SignatureManager.js';
2
- import { AdvancedSignatureManager } from './AdvancedSignatureManager.js';
3
- const advancedSignatureManager = AdvancedSignatureManager.getInstance();
4
- function getPublicKey(keyPair) {
5
- if (keyPair.publicKey && Buffer.isBuffer(keyPair.publicKey)) {
6
- return keyPair.publicKey.toString('hex');
7
- }
8
- }
9
- function hookKeyPair(keyPair) {
10
- const oldSign = keyPair.sign;
11
- if (oldSign) {
12
- keyPair.sign = new Proxy(oldSign, {
13
- apply: function (target, thisArg, argumentsList) {
14
- const publicKey = getPublicKey(keyPair);
15
- const hash = argumentsList[0];
16
- if (publicKey) {
17
- let possibleSignature = advancedSignatureManager.getSignature(publicKey, hash);
18
- if (!possibleSignature) {
19
- possibleSignature = advancedSignatureManager.addSignature(publicKey, hash, Reflect.apply(target, thisArg, argumentsList));
20
- }
21
- return possibleSignature;
22
- }
23
- else {
24
- let possibleSignature = keyPair.signatureManager.getSignature(hash);
25
- if (!possibleSignature) {
26
- possibleSignature = keyPair.signatureManager.addSignature(hash, Reflect.apply(target, thisArg, argumentsList));
27
- }
28
- return possibleSignature;
29
- }
30
- },
31
- });
32
- }
33
- const oldSignSchnorr = keyPair.signSchnorr;
34
- if (oldSignSchnorr) {
35
- keyPair.signSchnorr = new Proxy(oldSignSchnorr, {
36
- apply: function (target, thisArg, argumentsList) {
37
- const publicKey = getPublicKey(keyPair);
38
- const hash = argumentsList[0];
39
- if (publicKey) {
40
- let possibleSignature = advancedSignatureManager.getSignature(publicKey, hash);
41
- if (!possibleSignature) {
42
- possibleSignature = advancedSignatureManager.addSignature(publicKey, hash, Reflect.apply(target, thisArg, argumentsList));
43
- }
44
- return possibleSignature;
45
- }
46
- else {
47
- let possibleSignature = keyPair.signatureManager.getSignature(hash);
48
- if (!possibleSignature) {
49
- possibleSignature = keyPair.signatureManager.addSignature(hash, Reflect.apply(target, thisArg, argumentsList));
50
- }
51
- return possibleSignature;
52
- }
53
- },
54
- });
55
- }
56
- }
57
- export function hookSigner(keyPair) {
58
- const newKeypair = keyPair;
59
- if (!newKeypair.hasHook) {
60
- newKeypair.hasHook = true;
61
- newKeypair.signatureManager = new SignatureManager();
62
- hookKeyPair(newKeypair);
63
- }
64
- }
@@ -1,13 +0,0 @@
1
- export interface CacheEntry {
2
- length: number;
3
- dataRef: WeakRef<Buffer>;
4
- signature: Buffer;
5
- }
6
- export declare class SignatureManager {
7
- private cacheByLength;
8
- private registry;
9
- constructor();
10
- addSignature(data: Buffer, signature: Buffer): Buffer;
11
- getSignature(data: Buffer): Buffer | undefined;
12
- clearCache(): void;
13
- }
@@ -1,45 +0,0 @@
1
- export class SignatureManager {
2
- constructor() {
3
- this.cacheByLength = new Map();
4
- this.registry = new FinalizationRegistry((entry) => {
5
- const set = this.cacheByLength.get(entry.length);
6
- if (set) {
7
- set.delete(entry);
8
- if (set.size === 0) {
9
- this.cacheByLength.delete(entry.length);
10
- }
11
- }
12
- });
13
- }
14
- addSignature(data, signature) {
15
- const length = data.length;
16
- const entry = {
17
- length,
18
- dataRef: new WeakRef(data),
19
- signature,
20
- };
21
- if (!this.cacheByLength.has(length)) {
22
- this.cacheByLength.set(length, new Set());
23
- }
24
- const set = this.cacheByLength.get(length);
25
- set.add(entry);
26
- this.registry.register(data, entry);
27
- return signature;
28
- }
29
- getSignature(data) {
30
- const length = data.length;
31
- const set = this.cacheByLength.get(length);
32
- if (!set)
33
- return undefined;
34
- for (const entry of set) {
35
- const cachedData = entry.dataRef.deref();
36
- if (cachedData && cachedData.equals(data)) {
37
- return entry.signature;
38
- }
39
- }
40
- return undefined;
41
- }
42
- clearCache() {
43
- this.cacheByLength.clear();
44
- }
45
- }
@@ -1,2 +0,0 @@
1
- export declare function prop<T extends object>(object: T, name: string, f: () => T[keyof T]): void;
2
- export declare function value<T>(f: () => T): () => T;
@@ -1,28 +0,0 @@
1
- export function prop(object, name, f) {
2
- Object.defineProperty(object, name, {
3
- configurable: true,
4
- enumerable: true,
5
- get() {
6
- const _value = f.call(this);
7
- this[name] = _value;
8
- return _value;
9
- },
10
- set(_value) {
11
- Object.defineProperty(this, name, {
12
- configurable: true,
13
- enumerable: true,
14
- value: _value,
15
- writable: true,
16
- });
17
- },
18
- });
19
- }
20
- export function value(f) {
21
- let _value;
22
- return () => {
23
- if (_value !== undefined)
24
- return _value;
25
- _value = f();
26
- return _value;
27
- };
28
- }