@btc-vision/bitcoin 6.3.1 → 6.3.3

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 (374) hide show
  1. package/.babelrc +4 -0
  2. package/.gitattributes +2 -0
  3. package/.nyc_output/6368a5b2-daa5-4821-8ed0-b742d6fc7eab.json +1 -0
  4. package/.nyc_output/processinfo/6368a5b2-daa5-4821-8ed0-b742d6fc7eab.json +1 -0
  5. package/.nyc_output/processinfo/index.json +1 -0
  6. package/.prettierrc.json +12 -0
  7. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/.ready +0 -0
  8. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/.release-please-manifest.json +3 -0
  9. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/CHANGELOG.md +962 -0
  10. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/CONTRIBUTING.md +34 -0
  11. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/LICENSE +24 -0
  12. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/README.md +273 -0
  13. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/SECURITY.md +2 -0
  14. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/addon.gypi +204 -0
  15. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/bin/node-gyp.js +138 -0
  16. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/.release-please-manifest.json +3 -0
  17. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/LICENSE +28 -0
  18. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/data/ninja/build.ninja +4 -0
  19. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +12 -0
  20. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/GypVsCMake.md +116 -0
  21. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/Hacking.md +46 -0
  22. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/InputFormatReference.md +1080 -0
  23. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/LanguageSpecification.md +430 -0
  24. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/README.md +27 -0
  25. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/Testing.md +450 -0
  26. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/UserDocumentation.md +965 -0
  27. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp +8 -0
  28. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp.bat +5 -0
  29. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp_main.py +45 -0
  30. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +365 -0
  31. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +206 -0
  32. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +1272 -0
  33. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +1547 -0
  34. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +59 -0
  35. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +153 -0
  36. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +271 -0
  37. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +574 -0
  38. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +692 -0
  39. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/common.py +711 -0
  40. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +171 -0
  41. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +169 -0
  42. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +113 -0
  43. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +55 -0
  44. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  45. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +804 -0
  46. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +1173 -0
  47. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +1318 -0
  48. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +127 -0
  49. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +103 -0
  50. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +461 -0
  51. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +89 -0
  52. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +57 -0
  53. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +2745 -0
  54. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +3976 -0
  55. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +44 -0
  56. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +2964 -0
  57. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +67 -0
  58. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +1391 -0
  59. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +25 -0
  60. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/input.py +3115 -0
  61. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +98 -0
  62. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +771 -0
  63. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +1260 -0
  64. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +174 -0
  65. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +61 -0
  66. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +373 -0
  67. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +1938 -0
  68. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation_test.py +53 -0
  69. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +302 -0
  70. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +3198 -0
  71. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +65 -0
  72. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE +3 -0
  73. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.APACHE +177 -0
  74. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.BSD +23 -0
  75. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/__init__.py +15 -0
  76. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_elffile.py +108 -0
  77. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_manylinux.py +252 -0
  78. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_musllinux.py +83 -0
  79. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_parser.py +359 -0
  80. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_structures.py +61 -0
  81. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_tokenizer.py +192 -0
  82. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/markers.py +252 -0
  83. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +825 -0
  84. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/py.typed +0 -0
  85. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/requirements.py +90 -0
  86. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/specifiers.py +1030 -0
  87. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/tags.py +553 -0
  88. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/utils.py +172 -0
  89. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/version.py +563 -0
  90. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pyproject.toml +120 -0
  91. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/release-please-config.json +11 -0
  92. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/test_gyp.py +261 -0
  93. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/Find-VisualStudio.cs +250 -0
  94. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/build.js +227 -0
  95. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/clean.js +15 -0
  96. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/configure.js +328 -0
  97. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/create-config-gypi.js +150 -0
  98. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/download.js +39 -0
  99. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-node-directory.js +63 -0
  100. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-python.js +310 -0
  101. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-visualstudio.js +590 -0
  102. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/install.js +415 -0
  103. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/list.js +26 -0
  104. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/log.js +168 -0
  105. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/node-gyp.js +188 -0
  106. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/process-release.js +146 -0
  107. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/rebuild.js +12 -0
  108. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/remove.js +43 -0
  109. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/util.js +81 -0
  110. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/macOS_Catalina_acid_test.sh +21 -0
  111. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/package.json +51 -0
  112. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/release-please-config.json +40 -0
  113. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/src/win_delay_load_hook.cc +39 -0
  114. package/CHANGELOG.md +403 -0
  115. package/CONTRIBUTING.md +83 -0
  116. package/browser/address.d.ts +16 -0
  117. package/{src → browser}/bip66.d.ts +6 -7
  118. package/{src → browser}/block.d.ts +29 -30
  119. package/{src → browser}/bufferutils.d.ts +34 -54
  120. package/browser/crypto/crypto.d.ts +1 -0
  121. package/{src → browser}/crypto.d.ts +13 -18
  122. package/browser/ecc_lib.d.ts +3 -0
  123. package/browser/hooks/AdvancedSignatureManager.d.ts +16 -0
  124. package/{src → browser}/hooks/HookedSigner.d.ts +4 -4
  125. package/browser/hooks/SignatureManager.d.ts +13 -0
  126. package/browser/index.d.ts +58 -0
  127. package/browser/index.js +2 -0
  128. package/browser/index.js.LICENSE.txt +14 -0
  129. package/browser/merkle.d.ts +1 -0
  130. package/browser/networks.d.ts +23 -0
  131. package/{src → browser}/ops.d.ts +126 -126
  132. package/browser/payments/bip341.d.ts +23 -0
  133. package/browser/payments/embed.d.ts +2 -0
  134. package/browser/payments/index.d.ts +43 -0
  135. package/{src → browser}/payments/lazy.d.ts +2 -2
  136. package/browser/payments/p2ms.d.ts +2 -0
  137. package/browser/payments/p2pk.d.ts +2 -0
  138. package/browser/payments/p2pkh.d.ts +2 -0
  139. package/browser/payments/p2sh.d.ts +2 -0
  140. package/browser/payments/p2tr.d.ts +2 -0
  141. package/browser/payments/p2wpkh.d.ts +2 -0
  142. package/browser/payments/p2wsh.d.ts +2 -0
  143. package/browser/psbt/bip371.d.ts +16 -0
  144. package/browser/psbt/psbtutils.d.ts +26 -0
  145. package/{src → browser}/psbt.d.ts +167 -238
  146. package/browser/push_data.d.ts +7 -0
  147. package/browser/script.d.ts +17 -0
  148. package/browser/script_number.d.ts +2 -0
  149. package/browser/script_signature.d.ts +7 -0
  150. package/{src → browser}/transaction.d.ts +48 -60
  151. package/{src → browser}/types.d.ts +37 -54
  152. package/build/address.d.ts +16 -0
  153. package/build/address.js +148 -0
  154. package/build/bip66.d.ts +6 -0
  155. package/build/bip66.js +99 -0
  156. package/build/block.d.ts +29 -0
  157. package/build/block.js +181 -0
  158. package/build/bufferutils.d.ts +34 -0
  159. package/build/bufferutils.js +141 -0
  160. package/build/crypto/crypto.d.ts +1 -0
  161. package/build/crypto/crypto.js +1 -0
  162. package/build/crypto.d.ts +13 -0
  163. package/build/crypto.js +87 -0
  164. package/build/ecc_lib.d.ts +3 -0
  165. package/build/ecc_lib.js +61 -0
  166. package/build/hooks/AdvancedSignatureManager.d.ts +16 -0
  167. package/build/hooks/AdvancedSignatureManager.js +52 -0
  168. package/build/hooks/HookedSigner.d.ts +4 -0
  169. package/build/hooks/HookedSigner.js +64 -0
  170. package/build/hooks/SignatureManager.d.ts +13 -0
  171. package/build/hooks/SignatureManager.js +45 -0
  172. package/build/index.d.ts +58 -0
  173. package/build/index.js +32 -0
  174. package/build/merkle.d.ts +1 -0
  175. package/build/merkle.js +19 -0
  176. package/build/networks.d.ts +23 -0
  177. package/build/networks.js +121 -0
  178. package/build/ops.d.ts +126 -0
  179. package/{src → build}/ops.js +127 -131
  180. package/build/payments/bip341.d.ts +23 -0
  181. package/build/payments/bip341.js +82 -0
  182. package/build/payments/embed.d.ts +2 -0
  183. package/build/payments/embed.js +39 -0
  184. package/build/payments/index.d.ts +43 -0
  185. package/build/payments/index.js +10 -0
  186. package/build/payments/lazy.d.ts +2 -0
  187. package/{src → build}/payments/lazy.js +28 -32
  188. package/build/payments/p2ms.d.ts +2 -0
  189. package/{src → build}/payments/p2ms.js +128 -158
  190. package/build/payments/p2pk.d.ts +2 -0
  191. package/build/payments/p2pk.js +68 -0
  192. package/build/payments/p2pkh.d.ts +2 -0
  193. package/build/payments/p2pkh.js +173 -0
  194. package/build/payments/p2sh.d.ts +2 -0
  195. package/build/payments/p2sh.js +176 -0
  196. package/build/payments/p2tr.d.ts +2 -0
  197. package/build/payments/p2tr.js +254 -0
  198. package/build/payments/p2wpkh.d.ts +2 -0
  199. package/build/payments/p2wpkh.js +130 -0
  200. package/build/payments/p2wsh.d.ts +2 -0
  201. package/build/payments/p2wsh.js +180 -0
  202. package/build/psbt/bip371.d.ts +16 -0
  203. package/build/psbt/bip371.js +246 -0
  204. package/build/psbt/psbtutils.d.ts +26 -0
  205. package/build/psbt/psbtutils.js +177 -0
  206. package/build/psbt.d.ts +167 -0
  207. package/build/psbt.js +1307 -0
  208. package/build/push_data.d.ts +7 -0
  209. package/build/push_data.js +57 -0
  210. package/build/script.d.ts +17 -0
  211. package/build/script.js +167 -0
  212. package/build/script_number.d.ts +2 -0
  213. package/build/script_number.js +49 -0
  214. package/build/script_signature.d.ts +7 -0
  215. package/build/script_signature.js +49 -0
  216. package/build/transaction.d.ts +48 -0
  217. package/build/transaction.js +445 -0
  218. package/build/types.d.ts +37 -0
  219. package/build/types.js +73 -0
  220. package/cjs/package.json +3 -0
  221. package/coverage/tmp/coverage-31752-1735543485354-0.json +1 -0
  222. package/coverage/tmp/coverage-59920-1735543484555-0.json +1 -0
  223. package/coverage/tmp/coverage-66252-1735543483919-0.json +1 -0
  224. package/coverage/tmp/coverage-68440-1735543485236-0.json +1 -0
  225. package/coverage/tmp/coverage-70588-1735543484426-0.json +1 -0
  226. package/coverage/tmp/coverage-79292-1735543485296-0.json +1 -0
  227. package/coverage/tmp/coverage-80212-1735543483980-0.json +1 -0
  228. package/eslint.config.js +56 -0
  229. package/gulpfile.js +42 -0
  230. package/package.json +105 -50
  231. package/src/{address.js → address.ts} +211 -191
  232. package/src/{bip66.js → bip66.ts} +23 -19
  233. package/src/{block.js → block.ts} +114 -105
  234. package/src/{bufferutils.js → bufferutils.ts} +65 -67
  235. package/src/crypto/crypto-browser.js +75 -0
  236. package/src/crypto/crypto.ts +1 -0
  237. package/src/crypto.ts +108 -0
  238. package/src/{ecc_lib.js → ecc_lib.ts} +25 -53
  239. package/src/hooks/{AdvancedSignatureManager.js → AdvancedSignatureManager.ts} +34 -18
  240. package/src/hooks/HookedSigner.ts +108 -0
  241. package/src/hooks/{SignatureManager.js → SignatureManager.ts} +26 -14
  242. package/src/index.ts +86 -0
  243. package/src/{merkle.js → merkle.ts} +8 -7
  244. package/src/{networks.js → networks.ts} +235 -220
  245. package/src/ops.ts +282 -0
  246. package/src/payments/bip341.ts +140 -0
  247. package/src/payments/embed.ts +55 -0
  248. package/src/payments/{index.d.ts → index.ts} +24 -10
  249. package/src/payments/lazy.ts +28 -0
  250. package/src/payments/p2ms.ts +150 -0
  251. package/src/payments/{p2pk.js → p2pk.ts} +85 -82
  252. package/src/payments/p2pkh.ts +206 -0
  253. package/src/payments/{p2sh.js → p2sh.ts} +206 -204
  254. package/src/payments/{p2tr.js → p2tr.ts} +114 -125
  255. package/src/payments/{p2wpkh.js → p2wpkh.ts} +51 -56
  256. package/src/payments/{p2wsh.js → p2wsh.ts} +69 -81
  257. package/src/psbt/{bip371.js → bip371.ts} +441 -424
  258. package/src/psbt/psbtutils.ts +301 -0
  259. package/src/{psbt.js → psbt.ts} +2187 -1828
  260. package/src/{push_data.js → push_data.ts} +35 -21
  261. package/src/{script.js → script.ts} +93 -77
  262. package/src/{script_number.js → script_number.ts} +15 -21
  263. package/src/{script_signature.js → script_signature.ts} +26 -14
  264. package/src/{transaction.js → transaction.ts} +247 -167
  265. package/src/types.ts +122 -0
  266. package/test/address.spec.js +124 -0
  267. package/test/address.spec.ts +177 -0
  268. package/test/bitcoin.core.spec.js +170 -0
  269. package/test/bitcoin.core.spec.ts +234 -0
  270. package/test/block.spec.js +141 -0
  271. package/test/block.spec.ts +194 -0
  272. package/test/bufferutils.spec.js +427 -0
  273. package/test/bufferutils.spec.ts +513 -0
  274. package/test/crypto.spec.js +41 -0
  275. package/test/crypto.spec.ts +55 -0
  276. package/test/fixtures/address.json +329 -0
  277. package/test/fixtures/block.json +148 -0
  278. package/test/fixtures/bufferutils.json +102 -0
  279. package/test/fixtures/core/README.md +26 -0
  280. package/test/fixtures/core/base58_encode_decode.json +50 -0
  281. package/test/fixtures/core/base58_keys_invalid.json +152 -0
  282. package/test/fixtures/core/base58_keys_valid.json +452 -0
  283. package/test/fixtures/core/blocks.json +27 -0
  284. package/test/fixtures/core/sig_canonical.json +7 -0
  285. package/test/fixtures/core/sig_noncanonical.json +33 -0
  286. package/test/fixtures/core/sighash.json +3505 -0
  287. package/test/fixtures/core/tx_valid.json +2023 -0
  288. package/test/fixtures/crypto.json +43 -0
  289. package/test/fixtures/ecdsa.json +217 -0
  290. package/test/fixtures/ecpair.json +141 -0
  291. package/test/fixtures/embed.json +108 -0
  292. package/test/fixtures/p2ms.json +434 -0
  293. package/test/fixtures/p2pk.json +179 -0
  294. package/test/fixtures/p2pkh.json +276 -0
  295. package/test/fixtures/p2sh.json +508 -0
  296. package/test/fixtures/p2tr.json +1198 -0
  297. package/test/fixtures/p2wpkh.json +290 -0
  298. package/test/fixtures/p2wsh.json +489 -0
  299. package/test/fixtures/psbt.json +924 -0
  300. package/test/fixtures/script.json +465 -0
  301. package/test/fixtures/script_number.json +225 -0
  302. package/test/fixtures/signature.json +140 -0
  303. package/test/fixtures/transaction.json +916 -0
  304. package/test/integration/_regtest.js +7 -0
  305. package/test/integration/_regtest.ts +6 -0
  306. package/test/integration/addresses.spec.js +116 -0
  307. package/test/integration/addresses.spec.ts +154 -0
  308. package/test/integration/bip32.spec.js +85 -0
  309. package/test/integration/bip32.spec.ts +151 -0
  310. package/test/integration/blocks.spec.js +26 -0
  311. package/test/integration/blocks.spec.ts +28 -0
  312. package/test/integration/cltv.spec.js +199 -0
  313. package/test/integration/cltv.spec.ts +283 -0
  314. package/test/integration/csv.spec.js +362 -0
  315. package/test/integration/csv.spec.ts +527 -0
  316. package/test/integration/payments.spec.js +98 -0
  317. package/test/integration/payments.spec.ts +135 -0
  318. package/test/integration/taproot.spec.js +532 -0
  319. package/test/integration/taproot.spec.ts +707 -0
  320. package/test/integration/transactions.spec.js +561 -0
  321. package/test/integration/transactions.spec.ts +769 -0
  322. package/test/payments.spec.js +97 -0
  323. package/test/payments.spec.ts +125 -0
  324. package/test/payments.utils.js +190 -0
  325. package/test/payments.utils.ts +208 -0
  326. package/test/psbt.spec.js +1044 -0
  327. package/test/psbt.spec.ts +1414 -0
  328. package/test/script.spec.js +151 -0
  329. package/test/script.spec.ts +210 -0
  330. package/test/script_number.spec.js +24 -0
  331. package/test/script_number.spec.ts +29 -0
  332. package/test/script_signature.spec.js +52 -0
  333. package/test/script_signature.spec.ts +66 -0
  334. package/test/transaction.spec.js +269 -0
  335. package/test/transaction.spec.ts +387 -0
  336. package/test/ts-node-register.js +5 -0
  337. package/test/tsconfig.json +45 -0
  338. package/test/types.spec.js +46 -0
  339. package/test/types.spec.ts +58 -0
  340. package/tsconfig.base.json +27 -0
  341. package/tsconfig.json +19 -0
  342. package/tsconfig.webpack.json +18 -0
  343. package/webpack.config.js +79 -0
  344. package/src/address.d.ts +0 -42
  345. package/src/crypto.js +0 -128
  346. package/src/ecc_lib.d.ts +0 -17
  347. package/src/hooks/AdvancedSignatureManager.d.ts +0 -44
  348. package/src/hooks/HookedSigner.js +0 -90
  349. package/src/hooks/SignatureManager.d.ts +0 -35
  350. package/src/index.d.ts +0 -42
  351. package/src/index.js +0 -87
  352. package/src/merkle.d.ts +0 -10
  353. package/src/networks.d.ts +0 -83
  354. package/src/payments/bip341.d.ts +0 -49
  355. package/src/payments/bip341.js +0 -124
  356. package/src/payments/embed.d.ts +0 -9
  357. package/src/payments/embed.js +0 -54
  358. package/src/payments/index.js +0 -69
  359. package/src/payments/p2ms.d.ts +0 -9
  360. package/src/payments/p2pk.d.ts +0 -10
  361. package/src/payments/p2pkh.d.ts +0 -10
  362. package/src/payments/p2pkh.js +0 -143
  363. package/src/payments/p2sh.d.ts +0 -10
  364. package/src/payments/p2tr.d.ts +0 -10
  365. package/src/payments/p2wpkh.d.ts +0 -10
  366. package/src/payments/p2wsh.d.ts +0 -10
  367. package/src/psbt/bip371.d.ts +0 -42
  368. package/src/psbt/psbtutils.d.ts +0 -64
  369. package/src/psbt/psbtutils.js +0 -191
  370. package/src/push_data.d.ts +0 -29
  371. package/src/script.d.ts +0 -42
  372. package/src/script_number.d.ts +0 -19
  373. package/src/script_signature.d.ts +0 -21
  374. package/src/types.js +0 -106
@@ -1,16 +1,14 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
3
- exports.decode = exports.encode = exports.encodingLength = void 0;
4
- const ops_1 = require('./ops');
1
+ import { OPS } from './ops.js';
2
+
5
3
  /**
6
4
  * Calculates the encoding length of a number used for push data in Bitcoin transactions.
7
5
  * @param i The number to calculate the encoding length for.
8
6
  * @returns The encoding length of the number.
9
7
  */
10
- function encodingLength(i) {
11
- return i < ops_1.OPS.OP_PUSHDATA1 ? 1 : i <= 0xff ? 2 : i <= 0xffff ? 3 : 5;
8
+ export function encodingLength(i: number): number {
9
+ return i < OPS.OP_PUSHDATA1 ? 1 : i <= 0xff ? 2 : i <= 0xffff ? 3 : 5;
12
10
  }
13
- exports.encodingLength = encodingLength;
11
+
14
12
  /**
15
13
  * Encodes a number into a buffer using a variable-length encoding scheme.
16
14
  * The encoded buffer is written starting at the specified offset.
@@ -21,63 +19,79 @@ exports.encodingLength = encodingLength;
21
19
  * @param offset - The offset at which to start writing the encoded buffer.
22
20
  * @returns The size of the encoded buffer.
23
21
  */
24
- function encode(buffer, num, offset) {
22
+ export function encode(buffer: Buffer, num: number, offset: number): number {
25
23
  const size = encodingLength(num);
24
+
26
25
  // ~6 bit
27
26
  if (size === 1) {
28
27
  buffer.writeUInt8(num, offset);
28
+
29
29
  // 8 bit
30
30
  } else if (size === 2) {
31
- buffer.writeUInt8(ops_1.OPS.OP_PUSHDATA1, offset);
31
+ buffer.writeUInt8(OPS.OP_PUSHDATA1, offset);
32
32
  buffer.writeUInt8(num, offset + 1);
33
+
33
34
  // 16 bit
34
35
  } else if (size === 3) {
35
- buffer.writeUInt8(ops_1.OPS.OP_PUSHDATA2, offset);
36
+ buffer.writeUInt8(OPS.OP_PUSHDATA2, offset);
36
37
  buffer.writeUInt16LE(num, offset + 1);
38
+
37
39
  // 32 bit
38
40
  } else {
39
- buffer.writeUInt8(ops_1.OPS.OP_PUSHDATA4, offset);
41
+ buffer.writeUInt8(OPS.OP_PUSHDATA4, offset);
40
42
  buffer.writeUInt32LE(num, offset + 1);
41
43
  }
44
+
42
45
  return size;
43
46
  }
44
- exports.encode = encode;
47
+
45
48
  /**
46
49
  * Decodes a buffer and returns information about the opcode, number, and size.
47
50
  * @param buffer - The buffer to decode.
48
51
  * @param offset - The offset within the buffer to start decoding.
49
52
  * @returns An object containing the opcode, number, and size, or null if decoding fails.
50
53
  */
51
- function decode(buffer, offset) {
54
+ export function decode(
55
+ buffer: Buffer,
56
+ offset: number,
57
+ ): {
58
+ opcode: number;
59
+ number: number;
60
+ size: number;
61
+ } | null {
52
62
  const opcode = buffer.readUInt8(offset);
53
- let num;
54
- let size;
63
+ let num: number;
64
+ let size: number;
65
+
55
66
  // ~6 bit
56
- if (opcode < ops_1.OPS.OP_PUSHDATA1) {
67
+ if (opcode < OPS.OP_PUSHDATA1) {
57
68
  num = opcode;
58
69
  size = 1;
70
+
59
71
  // 8 bit
60
- } else if (opcode === ops_1.OPS.OP_PUSHDATA1) {
72
+ } else if (opcode === OPS.OP_PUSHDATA1) {
61
73
  if (offset + 2 > buffer.length) return null;
62
74
  num = buffer.readUInt8(offset + 1);
63
75
  size = 2;
76
+
64
77
  // 16 bit
65
- } else if (opcode === ops_1.OPS.OP_PUSHDATA2) {
78
+ } else if (opcode === OPS.OP_PUSHDATA2) {
66
79
  if (offset + 3 > buffer.length) return null;
67
80
  num = buffer.readUInt16LE(offset + 1);
68
81
  size = 3;
82
+
69
83
  // 32 bit
70
84
  } else {
71
85
  if (offset + 5 > buffer.length) return null;
72
- if (opcode !== ops_1.OPS.OP_PUSHDATA4)
73
- throw new Error('Unexpected opcode');
86
+ if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode');
87
+
74
88
  num = buffer.readUInt32LE(offset + 1);
75
89
  size = 5;
76
90
  }
91
+
77
92
  return {
78
93
  opcode,
79
94
  number: num,
80
95
  size,
81
96
  };
82
97
  }
83
- exports.decode = decode;
@@ -1,71 +1,60 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
3
- exports.signature =
4
- exports.number =
5
- exports.isCanonicalScriptSignature =
6
- exports.isDefinedHashType =
7
- exports.isCanonicalPubKey =
8
- exports.toStack =
9
- exports.fromASM =
10
- exports.toASM =
11
- exports.decompile =
12
- exports.compile =
13
- exports.countNonPushOnlyOPs =
14
- exports.isPushOnly =
15
- exports.OPS =
16
- void 0;
17
1
  /**
18
2
  * Script tools, including decompile, compile, toASM, fromASM, toStack, isCanonicalPubKey, isCanonicalScriptSignature
19
3
  * @packageDocumentation
20
4
  */
21
- const bip66 = require('./bip66');
22
- const ops_1 = require('./ops');
23
- Object.defineProperty(exports, 'OPS', {
24
- enumerable: true,
25
- get: function () {
26
- return ops_1.OPS;
27
- },
28
- });
29
- const pushdata = require('./push_data');
30
- const scriptNumber = require('./script_number');
31
- const scriptSignature = require('./script_signature');
32
- const types = require('./types');
5
+ import * as bip66 from './bip66.js';
6
+ import { Opcodes, OPS, REVERSE_OPS } from './ops.js';
7
+ import { Stack } from './payments/index.js';
8
+ import * as pushdata from './push_data.js';
9
+ import * as scriptNumber from './script_number.js';
10
+ import * as scriptSignature from './script_signature.js';
11
+ import * as types from './types.js';
12
+
33
13
  const { typeforce } = types;
34
- const OP_INT_BASE = ops_1.OPS.OP_RESERVED; // OP_1 - 1
35
- function isOPInt(value) {
14
+
15
+ const OP_INT_BASE = OPS.OP_RESERVED; // OP_1 - 1
16
+ export { OPS };
17
+
18
+ function isOPInt(value: number): boolean {
36
19
  return (
37
20
  types.Number(value) &&
38
- (value === ops_1.OPS.OP_0 ||
39
- (value >= ops_1.OPS.OP_1 && value <= ops_1.OPS.OP_16) ||
40
- value === ops_1.OPS.OP_1NEGATE)
21
+ (value === OPS.OP_0 ||
22
+ (value >= OPS.OP_1 && value <= OPS.OP_16) ||
23
+ value === OPS.OP_1NEGATE)
41
24
  );
42
25
  }
43
- function isPushOnlyChunk(value) {
44
- return types.Buffer(value) || isOPInt(value);
26
+
27
+ function isPushOnlyChunk(value: number | Buffer): boolean {
28
+ return types.Buffer(value) || isOPInt(value as number);
45
29
  }
46
- function isPushOnly(value) {
30
+
31
+ export function isPushOnly(value: Stack): boolean {
47
32
  return types.Array(value) && value.every(isPushOnlyChunk);
48
33
  }
49
- exports.isPushOnly = isPushOnly;
50
- function countNonPushOnlyOPs(value) {
34
+
35
+ export function countNonPushOnlyOPs(value: Stack): number {
51
36
  return value.length - value.filter(isPushOnlyChunk).length;
52
37
  }
53
- exports.countNonPushOnlyOPs = countNonPushOnlyOPs;
54
- function asMinimalOP(buffer) {
55
- if (buffer.length === 0) return ops_1.OPS.OP_0;
38
+
39
+ function asMinimalOP(buffer: Buffer): number | void {
40
+ if (buffer.length === 0) return OPS.OP_0;
56
41
  if (buffer.length !== 1) return;
57
42
  if (buffer[0] >= 1 && buffer[0] <= 16) return OP_INT_BASE + buffer[0];
58
- if (buffer[0] === 0x81) return ops_1.OPS.OP_1NEGATE;
43
+ if (buffer[0] === 0x81) return OPS.OP_1NEGATE;
59
44
  }
60
- function chunksIsBuffer(buf) {
45
+
46
+ function chunksIsBuffer(buf: Buffer | Stack): buf is Buffer {
61
47
  return Buffer.isBuffer(buf);
62
48
  }
63
- function chunksIsArray(buf) {
49
+
50
+ function chunksIsArray(buf: Buffer | Stack): buf is Stack {
64
51
  return types.Array(buf);
65
52
  }
66
- function singleChunkIsBuffer(buf) {
53
+
54
+ function singleChunkIsBuffer(buf: number | Buffer): buf is Buffer {
67
55
  return Buffer.isBuffer(buf);
68
56
  }
57
+
69
58
  /**
70
59
  * Compiles an array of chunks into a Buffer.
71
60
  *
@@ -73,25 +62,31 @@ function singleChunkIsBuffer(buf) {
73
62
  * @returns The compiled Buffer.
74
63
  * @throws Error if the compilation fails.
75
64
  */
76
- function compile(chunks) {
65
+ export function compile(chunks: Buffer | Stack): Buffer {
77
66
  // TODO: remove me
78
67
  if (chunksIsBuffer(chunks)) return chunks;
68
+
79
69
  typeforce(types.Array, chunks);
80
- const bufferSize = chunks.reduce((accum, chunk) => {
70
+
71
+ const bufferSize = chunks.reduce((accum: number, chunk) => {
81
72
  // data chunk
82
73
  if (singleChunkIsBuffer(chunk)) {
83
74
  // adhere to BIP62.3, minimal push policy
84
75
  if (chunk.length === 1 && asMinimalOP(chunk) !== undefined) {
85
76
  return accum + 1;
86
77
  }
78
+
87
79
  return accum + pushdata.encodingLength(chunk.length) + chunk.length;
88
80
  }
81
+
89
82
  // opcode
90
83
  return accum + 1;
91
84
  }, 0.0);
85
+
92
86
  const buffer = Buffer.allocUnsafe(bufferSize);
93
87
  let offset = 0;
94
- chunks.forEach(chunk => {
88
+
89
+ chunks.forEach((chunk) => {
95
90
  // data chunk
96
91
  if (singleChunkIsBuffer(chunk)) {
97
92
  // adhere to BIP62.3, minimal push policy
@@ -101,37 +96,48 @@ function compile(chunks) {
101
96
  offset += 1;
102
97
  return;
103
98
  }
99
+
104
100
  offset += pushdata.encode(buffer, chunk.length, offset);
105
101
  chunk.copy(buffer, offset);
106
102
  offset += chunk.length;
103
+
107
104
  // opcode
108
105
  } else {
109
106
  buffer.writeUInt8(chunk, offset);
110
107
  offset += 1;
111
108
  }
112
109
  });
110
+
113
111
  if (offset !== buffer.length) throw new Error('Could not decode chunks');
114
112
  return buffer;
115
113
  }
116
- exports.compile = compile;
117
- function decompile(buffer) {
114
+
115
+ export function decompile(buffer: Buffer | Array<number | Buffer>): Array<number | Buffer> | null {
118
116
  // TODO: remove me
119
117
  if (chunksIsArray(buffer)) return buffer;
118
+
120
119
  typeforce(types.Buffer, buffer);
121
- const chunks = [];
120
+
121
+ const chunks: Array<number | Buffer> = [];
122
122
  let i = 0;
123
+
123
124
  while (i < buffer.length) {
124
125
  const opcode = buffer[i];
126
+
125
127
  // data chunk
126
- if (opcode > ops_1.OPS.OP_0 && opcode <= ops_1.OPS.OP_PUSHDATA4) {
128
+ if (opcode > OPS.OP_0 && opcode <= OPS.OP_PUSHDATA4) {
127
129
  const d = pushdata.decode(buffer, i);
130
+
128
131
  // did reading a pushDataInt fail?
129
132
  if (d === null) return null;
130
133
  i += d.size;
134
+
131
135
  // attempt to read too much data?
132
136
  if (i + d.number > buffer.length) return null;
137
+
133
138
  const data = buffer.slice(i, i + d.number);
134
139
  i += d.number;
140
+
135
141
  // decompile minimally
136
142
  const op = asMinimalOP(data);
137
143
  if (op !== undefined) {
@@ -139,93 +145,103 @@ function decompile(buffer) {
139
145
  } else {
140
146
  chunks.push(data);
141
147
  }
148
+
142
149
  // opcode
143
150
  } else {
144
151
  chunks.push(opcode);
152
+
145
153
  i += 1;
146
154
  }
147
155
  }
156
+
148
157
  return chunks;
149
158
  }
150
- exports.decompile = decompile;
159
+
151
160
  /**
152
161
  * Converts the given chunks into an ASM (Assembly) string representation.
153
162
  * If the chunks parameter is a Buffer, it will be decompiled into a Stack before conversion.
154
163
  * @param chunks - The chunks to convert into ASM.
155
164
  * @returns The ASM string representation of the chunks.
156
165
  */
157
- function toASM(chunks) {
166
+ export function toASM(chunks: Buffer | Array<number | Buffer>): string {
158
167
  if (chunksIsBuffer(chunks)) {
159
- chunks = decompile(chunks);
168
+ chunks = decompile(chunks) as Stack;
160
169
  }
161
170
  if (!chunks) {
162
171
  throw new Error('Could not convert invalid chunks to ASM');
163
172
  }
164
173
  return chunks
165
- .map(chunk => {
174
+ .map((chunk) => {
166
175
  // data?
167
176
  if (singleChunkIsBuffer(chunk)) {
168
177
  const op = asMinimalOP(chunk);
169
178
  if (op === undefined) return chunk.toString('hex');
170
- chunk = op;
179
+ chunk = op as number;
171
180
  }
181
+
172
182
  // opcode!
173
- return ops_1.REVERSE_OPS[chunk];
183
+ return REVERSE_OPS[chunk];
174
184
  })
175
185
  .join(' ');
176
186
  }
177
- exports.toASM = toASM;
187
+
178
188
  /**
179
189
  * Converts an ASM string to a Buffer.
180
190
  * @param asm The ASM string to convert.
181
191
  * @returns The converted Buffer.
182
192
  */
183
- function fromASM(asm) {
193
+ export function fromASM(asm: string): Buffer {
184
194
  typeforce(types.String, asm);
195
+
185
196
  return compile(
186
- asm.split(' ').map(chunkStr => {
197
+ asm.split(' ').map((chunkStr) => {
187
198
  // opcode?
188
- if (ops_1.OPS[chunkStr] !== undefined) {
189
- return ops_1.OPS[chunkStr];
199
+ if (OPS[chunkStr as keyof Opcodes] !== undefined) {
200
+ return OPS[chunkStr as keyof Opcodes];
190
201
  }
191
202
  typeforce(types.Hex, chunkStr);
203
+
192
204
  // data!
193
205
  return Buffer.from(chunkStr, 'hex');
194
206
  }),
195
207
  );
196
208
  }
197
- exports.fromASM = fromASM;
209
+
198
210
  /**
199
211
  * Converts the given chunks into a stack of buffers.
200
212
  *
201
213
  * @param chunks - The chunks to convert.
202
214
  * @returns The stack of buffers.
203
215
  */
204
- function toStack(chunks) {
205
- chunks = decompile(chunks);
216
+ export function toStack(chunks: Buffer | Array<number | Buffer>): Buffer[] {
217
+ chunks = decompile(chunks) as Stack;
206
218
  typeforce(isPushOnly, chunks);
207
- return chunks.map(op => {
219
+
220
+ return chunks.map((op) => {
208
221
  if (singleChunkIsBuffer(op)) return op;
209
- if (op === ops_1.OPS.OP_0) return Buffer.allocUnsafe(0);
222
+ if (op === OPS.OP_0) return Buffer.allocUnsafe(0);
223
+
210
224
  return scriptNumber.encode(op - OP_INT_BASE);
211
225
  });
212
226
  }
213
- exports.toStack = toStack;
214
- function isCanonicalPubKey(buffer) {
227
+
228
+ export function isCanonicalPubKey(buffer: Buffer): boolean {
215
229
  return types.isPoint(buffer);
216
230
  }
217
- exports.isCanonicalPubKey = isCanonicalPubKey;
218
- function isDefinedHashType(hashType) {
231
+
232
+ export function isDefinedHashType(hashType: number): boolean {
219
233
  const hashTypeMod = hashType & ~0x80;
234
+
220
235
  // return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE
221
236
  return hashTypeMod > 0x00 && hashTypeMod < 0x04;
222
237
  }
223
- exports.isDefinedHashType = isDefinedHashType;
224
- function isCanonicalScriptSignature(buffer) {
238
+
239
+ export function isCanonicalScriptSignature(buffer: Buffer): boolean {
225
240
  if (!Buffer.isBuffer(buffer)) return false;
226
241
  if (!isDefinedHashType(buffer[buffer.length - 1])) return false;
242
+
227
243
  return bip66.check(buffer.slice(0, -1));
228
244
  }
229
- exports.isCanonicalScriptSignature = isCanonicalScriptSignature;
230
- exports.number = scriptNumber;
231
- exports.signature = scriptSignature;
245
+
246
+ export const number = scriptNumber;
247
+ export const signature = scriptSignature;
@@ -1,6 +1,3 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
3
- exports.encode = exports.decode = void 0;
4
1
  /**
5
2
  * Decodes a script number from a buffer.
6
3
  *
@@ -11,9 +8,10 @@ exports.encode = exports.decode = void 0;
11
8
  * @throws {TypeError} If the script number overflows the maximum length.
12
9
  * @throws {Error} If the script number is not minimally encoded when minimal is true.
13
10
  */
14
- function decode(buffer, maxLength, minimal) {
11
+ export function decode(buffer: Buffer, maxLength?: number, minimal?: boolean): number {
15
12
  maxLength = maxLength || 4;
16
13
  minimal = minimal === undefined ? true : minimal;
14
+
17
15
  const length = buffer.length;
18
16
  if (length === 0) return 0;
19
17
  if (length > maxLength) throw new TypeError('Script number overflow');
@@ -23,56 +21,52 @@ function decode(buffer, maxLength, minimal) {
23
21
  throw new Error('Non-minimally encoded script number');
24
22
  }
25
23
  }
24
+
26
25
  // 40-bit
27
26
  if (length === 5) {
28
27
  const a = buffer.readUInt32LE(0);
29
28
  const b = buffer.readUInt8(4);
29
+
30
30
  if (b & 0x80) return -((b & ~0x80) * 0x100000000 + a);
31
31
  return b * 0x100000000 + a;
32
32
  }
33
+
33
34
  // 32-bit / 24-bit / 16-bit / 8-bit
34
35
  let result = 0;
35
36
  for (let i = 0; i < length; ++i) {
36
37
  result |= buffer[i] << (8 * i);
37
38
  }
38
- if (buffer[length - 1] & 0x80)
39
- return -(result & ~(0x80 << (8 * (length - 1))));
39
+
40
+ if (buffer[length - 1] & 0x80) return -(result & ~(0x80 << (8 * (length - 1))));
40
41
  return result;
41
42
  }
42
- exports.decode = decode;
43
- function scriptNumSize(i) {
44
- return i > 0x7fffffff
45
- ? 5
46
- : i > 0x7fffff
47
- ? 4
48
- : i > 0x7fff
49
- ? 3
50
- : i > 0x7f
51
- ? 2
52
- : i > 0x00
53
- ? 1
54
- : 0;
43
+
44
+ function scriptNumSize(i: number): number {
45
+ return i > 0x7fffffff ? 5 : i > 0x7fffff ? 4 : i > 0x7fff ? 3 : i > 0x7f ? 2 : i > 0x00 ? 1 : 0;
55
46
  }
47
+
56
48
  /**
57
49
  * Encodes a number into a Buffer using a specific format.
58
50
  *
59
51
  * @param _number - The number to encode.
60
52
  * @returns The encoded number as a Buffer.
61
53
  */
62
- function encode(_number) {
54
+ export function encode(_number: number): Buffer {
63
55
  let value = Math.abs(_number);
64
56
  const size = scriptNumSize(value);
65
57
  const buffer = Buffer.allocUnsafe(size);
66
58
  const negative = _number < 0;
59
+
67
60
  for (let i = 0; i < size; ++i) {
68
61
  buffer.writeUInt8(value & 0xff, i);
69
62
  value >>= 8;
70
63
  }
64
+
71
65
  if (buffer[size - 1] & 0x80) {
72
66
  buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1);
73
67
  } else if (negative) {
74
68
  buffer[size - 1] |= 0x80;
75
69
  }
70
+
76
71
  return buffer;
77
72
  }
78
- exports.encode = encode;
@@ -1,17 +1,17 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
3
- exports.encode = exports.decode = void 0;
4
- const bip66 = require('./bip66');
5
- const script_1 = require('./script');
6
- const types = require('./types');
1
+ import * as bip66 from './bip66.js';
2
+ import { isDefinedHashType } from './script.js';
3
+ import * as types from './types.js';
4
+
7
5
  const { typeforce } = types;
6
+
8
7
  const ZERO = Buffer.alloc(1, 0);
8
+
9
9
  /**
10
10
  * Converts a buffer to a DER-encoded buffer.
11
11
  * @param x - The buffer to be converted.
12
12
  * @returns The DER-encoded buffer.
13
13
  */
14
- function toDER(x) {
14
+ function toDER(x: Buffer): Buffer {
15
15
  let i = 0;
16
16
  while (x[i] === 0) ++i;
17
17
  if (i === x.length) return ZERO;
@@ -19,6 +19,7 @@ function toDER(x) {
19
19
  if (x[0] & 0x80) return Buffer.concat([ZERO, x], 1 + x.length);
20
20
  return x;
21
21
  }
22
+
22
23
  /**
23
24
  * Converts a DER-encoded signature to a buffer.
24
25
  * If the first byte of the input buffer is 0x00, it is skipped.
@@ -26,13 +27,19 @@ function toDER(x) {
26
27
  * @param x - The DER-encoded signature.
27
28
  * @returns The converted buffer.
28
29
  */
29
- function fromDER(x) {
30
+ function fromDER(x: Buffer): Buffer {
30
31
  if (x[0] === 0x00) x = x.slice(1);
31
32
  const buffer = Buffer.alloc(32, 0);
32
33
  const bstart = Math.max(0, 32 - x.length);
33
34
  x.copy(buffer, bstart);
34
35
  return buffer;
35
36
  }
37
+
38
+ interface ScriptSignature {
39
+ signature: Buffer;
40
+ hashType: number;
41
+ }
42
+
36
43
  // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
37
44
  /**
38
45
  * Decodes a buffer into a ScriptSignature object.
@@ -40,18 +47,20 @@ function fromDER(x) {
40
47
  * @returns The decoded ScriptSignature object.
41
48
  * @throws Error if the hashType is invalid.
42
49
  */
43
- function decode(buffer) {
50
+ export function decode(buffer: Buffer): ScriptSignature {
44
51
  const hashType = buffer.readUInt8(buffer.length - 1);
45
- if (!(0, script_1.isDefinedHashType)(hashType)) {
52
+ if (!isDefinedHashType(hashType)) {
46
53
  throw new Error('Invalid hashType ' + hashType);
47
54
  }
55
+
48
56
  const decoded = bip66.decode(buffer.slice(0, -1));
49
57
  const r = fromDER(decoded.r);
50
58
  const s = fromDER(decoded.s);
51
59
  const signature = Buffer.concat([r, s], 64);
60
+
52
61
  return { signature, hashType };
53
62
  }
54
- exports.decode = decode;
63
+
55
64
  /**
56
65
  * Encodes a signature and hash type into a buffer.
57
66
  * @param signature - The signature to encode.
@@ -59,7 +68,7 @@ exports.decode = decode;
59
68
  * @returns The encoded buffer.
60
69
  * @throws Error if the hashType is invalid.
61
70
  */
62
- function encode(signature, hashType) {
71
+ export function encode(signature: Buffer, hashType: number): Buffer {
63
72
  typeforce(
64
73
  {
65
74
  signature: types.BufferN(64),
@@ -67,13 +76,16 @@ function encode(signature, hashType) {
67
76
  },
68
77
  { signature, hashType },
69
78
  );
70
- if (!(0, script_1.isDefinedHashType)(hashType)) {
79
+
80
+ if (!isDefinedHashType(hashType)) {
71
81
  throw new Error('Invalid hashType ' + hashType);
72
82
  }
83
+
73
84
  const hashTypeBuffer = Buffer.allocUnsafe(1);
74
85
  hashTypeBuffer.writeUInt8(hashType, 0);
86
+
75
87
  const r = toDER(signature.slice(0, 32));
76
88
  const s = toDER(signature.slice(32, 64));
89
+
77
90
  return Buffer.concat([bip66.encode(r, s), hashTypeBuffer]);
78
91
  }
79
- exports.encode = encode;