@bitgo-beta/utxo-core 1.8.1-beta.60 → 1.8.1-beta.601

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 (356) hide show
  1. package/dist/cjs/src/Output.d.ts.map +1 -0
  2. package/dist/cjs/src/Output.js +60 -0
  3. package/dist/cjs/src/bip322/index.d.ts +5 -0
  4. package/dist/cjs/src/bip322/index.d.ts.map +1 -0
  5. package/dist/cjs/src/bip322/index.js +21 -0
  6. package/dist/cjs/src/bip322/toSign.d.ts +25 -0
  7. package/dist/cjs/src/bip322/toSign.d.ts.map +1 -0
  8. package/dist/cjs/src/bip322/toSign.js +126 -0
  9. package/dist/cjs/src/bip322/toSpend.d.ts +22 -0
  10. package/dist/cjs/src/bip322/toSpend.d.ts.map +1 -0
  11. package/dist/cjs/src/bip322/toSpend.js +72 -0
  12. package/dist/cjs/src/bip322/utils.d.ts +18 -0
  13. package/dist/cjs/src/bip322/utils.d.ts.map +1 -0
  14. package/dist/cjs/src/bip322/utils.js +115 -0
  15. package/dist/cjs/src/bip322/verify.d.ts +12 -0
  16. package/dist/cjs/src/bip322/verify.d.ts.map +1 -0
  17. package/dist/cjs/src/bip322/verify.js +115 -0
  18. package/dist/cjs/src/bip32utils.d.ts +16 -0
  19. package/dist/cjs/src/bip32utils.d.ts.map +1 -0
  20. package/dist/cjs/src/bip32utils.js +71 -0
  21. package/dist/cjs/src/bip65/index.d.ts.map +1 -0
  22. package/dist/{src → cjs/src}/bip65/index.js +1 -1
  23. package/dist/cjs/src/bip65/locktime.d.ts.map +1 -0
  24. package/dist/cjs/src/bip65/locktime.js +37 -0
  25. package/dist/{src → cjs/src}/descriptor/DescriptorMap.d.ts +1 -1
  26. package/dist/cjs/src/descriptor/DescriptorMap.d.ts.map +1 -0
  27. package/dist/cjs/src/descriptor/DescriptorMap.js +9 -0
  28. package/dist/{src → cjs/src}/descriptor/Output.d.ts +1 -1
  29. package/dist/cjs/src/descriptor/Output.d.ts.map +1 -0
  30. package/dist/cjs/src/descriptor/Output.js +41 -0
  31. package/dist/{src → cjs/src}/descriptor/VirtualSize.d.ts +1 -1
  32. package/dist/cjs/src/descriptor/VirtualSize.d.ts.map +1 -0
  33. package/dist/cjs/src/descriptor/VirtualSize.js +100 -0
  34. package/dist/{src → cjs/src}/descriptor/address.d.ts +1 -1
  35. package/dist/cjs/src/descriptor/address.d.ts.map +1 -0
  36. package/dist/{src → cjs/src}/descriptor/address.js +1 -1
  37. package/dist/{src → cjs/src}/descriptor/derive.d.ts +1 -1
  38. package/dist/cjs/src/descriptor/derive.d.ts.map +1 -0
  39. package/dist/cjs/src/descriptor/derive.js +45 -0
  40. package/dist/{src → cjs/src}/descriptor/fromFixedScriptWallet.d.ts +1 -1
  41. package/dist/cjs/src/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  42. package/dist/cjs/src/descriptor/fromFixedScriptWallet.js +88 -0
  43. package/dist/{src → cjs/src}/descriptor/index.d.ts +1 -0
  44. package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
  45. package/dist/{src → cjs/src}/descriptor/index.js +2 -1
  46. package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts +14 -0
  47. package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  48. package/dist/cjs/src/descriptor/parse/PatternMatcher.js +60 -0
  49. package/dist/{src → cjs/src}/descriptor/psbt/assertSatisfiable.d.ts +1 -1
  50. package/dist/cjs/src/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  51. package/dist/cjs/src/descriptor/psbt/assertSatisfiable.js +74 -0
  52. package/dist/{src → cjs/src}/descriptor/psbt/createPsbt.d.ts +4 -0
  53. package/dist/cjs/src/descriptor/psbt/createPsbt.d.ts.map +1 -0
  54. package/dist/cjs/src/descriptor/psbt/createPsbt.js +107 -0
  55. package/dist/{src → cjs/src}/descriptor/psbt/findDescriptors.d.ts +1 -1
  56. package/dist/cjs/src/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  57. package/dist/cjs/src/descriptor/psbt/findDescriptors.js +98 -0
  58. package/dist/cjs/src/descriptor/psbt/index.d.ts.map +1 -0
  59. package/dist/{src → cjs/src}/descriptor/psbt/index.js +1 -1
  60. package/dist/{src → cjs/src}/descriptor/psbt/parse.d.ts +1 -1
  61. package/dist/cjs/src/descriptor/psbt/parse.d.ts.map +1 -0
  62. package/dist/cjs/src/descriptor/psbt/parse.js +87 -0
  63. package/dist/{src → cjs/src}/descriptor/psbt/sign.d.ts +4 -4
  64. package/dist/cjs/src/descriptor/psbt/sign.d.ts.map +1 -0
  65. package/dist/cjs/src/descriptor/psbt/sign.js +42 -0
  66. package/dist/{src → cjs/src}/descriptor/psbt/wrap.d.ts +1 -1
  67. package/dist/cjs/src/descriptor/psbt/wrap.d.ts.map +1 -0
  68. package/dist/cjs/src/descriptor/psbt/wrap.js +76 -0
  69. package/dist/cjs/src/dustThreshold.d.ts.map +1 -0
  70. package/dist/cjs/src/dustThreshold.js +134 -0
  71. package/dist/{src → cjs/src}/index.d.ts +1 -0
  72. package/dist/cjs/src/index.d.ts.map +1 -0
  73. package/dist/{src → cjs/src}/index.js +3 -2
  74. package/dist/cjs/src/paygo/attestation.d.ts +11 -0
  75. package/dist/cjs/src/paygo/attestation.d.ts.map +1 -0
  76. package/dist/cjs/src/paygo/attestation.js +58 -0
  77. package/dist/cjs/src/paygo/index.d.ts +3 -0
  78. package/dist/cjs/src/paygo/index.d.ts.map +1 -0
  79. package/dist/cjs/src/paygo/index.js +19 -0
  80. package/dist/{src/paygo/ExtractAddressPayGoAttestation.d.ts → cjs/src/paygo/parsePayGoAttestation.d.ts} +8 -3
  81. package/dist/cjs/src/paygo/parsePayGoAttestation.d.ts.map +1 -0
  82. package/dist/cjs/src/paygo/parsePayGoAttestation.js +50 -0
  83. package/dist/cjs/src/paygo/psbt/Errors.d.ts +22 -0
  84. package/dist/cjs/src/paygo/psbt/Errors.d.ts.map +1 -0
  85. package/dist/cjs/src/paygo/psbt/Errors.js +44 -0
  86. package/dist/cjs/src/paygo/psbt/index.d.ts +2 -0
  87. package/dist/cjs/src/paygo/psbt/index.d.ts.map +1 -0
  88. package/dist/{src/paygo → cjs/src/paygo/psbt}/index.js +2 -2
  89. package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts +29 -0
  90. package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  91. package/dist/cjs/src/paygo/psbt/payGoAddressProof.js +124 -0
  92. package/dist/{src → cjs/src}/testutil/descriptor/descriptors.d.ts +4 -1
  93. package/dist/cjs/src/testutil/descriptor/descriptors.d.ts.map +1 -0
  94. package/dist/cjs/src/testutil/descriptor/descriptors.js +162 -0
  95. package/dist/cjs/src/testutil/descriptor/index.d.ts.map +1 -0
  96. package/dist/{src → cjs/src}/testutil/descriptor/index.js +1 -1
  97. package/dist/{src → cjs/src}/testutil/descriptor/mock.utils.d.ts +3 -1
  98. package/dist/cjs/src/testutil/descriptor/mock.utils.d.ts.map +1 -0
  99. package/dist/cjs/src/testutil/descriptor/mock.utils.js +92 -0
  100. package/dist/cjs/src/testutil/descriptor/psbt.utils.d.ts.map +1 -0
  101. package/dist/cjs/src/testutil/descriptor/psbt.utils.js +21 -0
  102. package/dist/cjs/src/testutil/fixtures.utils.d.ts.map +1 -0
  103. package/dist/cjs/src/testutil/fixtures.utils.js +127 -0
  104. package/dist/{src → cjs/src}/testutil/generatePayGoAttestationProof.utils.d.ts +1 -1
  105. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  106. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.js +38 -0
  107. package/dist/{src → cjs/src}/testutil/index.d.ts +1 -0
  108. package/dist/cjs/src/testutil/index.d.ts.map +1 -0
  109. package/dist/{src → cjs/src}/testutil/index.js +2 -1
  110. package/dist/{src → cjs/src}/testutil/key.utils.d.ts +1 -1
  111. package/dist/cjs/src/testutil/key.utils.d.ts.map +1 -0
  112. package/dist/cjs/src/testutil/key.utils.js +60 -0
  113. package/dist/cjs/src/testutil/toPlainObject.utils.d.ts.map +1 -0
  114. package/dist/cjs/src/testutil/toPlainObject.utils.js +89 -0
  115. package/dist/cjs/src/testutil/trimMessagePrefix.d.ts +11 -0
  116. package/dist/cjs/src/testutil/trimMessagePrefix.d.ts.map +1 -0
  117. package/dist/cjs/src/testutil/trimMessagePrefix.js +60 -0
  118. package/dist/cjs/src/xOnlyPubkey.d.ts.map +1 -0
  119. package/dist/cjs/src/xOnlyPubkey.js +18 -0
  120. package/dist/cjs/test/Output.d.ts +2 -0
  121. package/dist/cjs/test/Output.d.ts.map +1 -0
  122. package/dist/cjs/test/Output.js +70 -0
  123. package/dist/cjs/test/bip322/bip322.utils.d.ts +7 -0
  124. package/dist/cjs/test/bip322/bip322.utils.d.ts.map +1 -0
  125. package/dist/cjs/test/bip322/bip322.utils.js +16 -0
  126. package/dist/cjs/test/bip322/toSign.d.ts +2 -0
  127. package/dist/cjs/test/bip322/toSign.d.ts.map +1 -0
  128. package/dist/cjs/test/bip322/toSign.js +133 -0
  129. package/dist/cjs/test/bip322/toSpend.d.ts +2 -0
  130. package/dist/cjs/test/bip322/toSpend.d.ts.map +1 -0
  131. package/dist/cjs/test/bip322/toSpend.js +70 -0
  132. package/dist/cjs/test/bip322/utils.d.ts +2 -0
  133. package/dist/cjs/test/bip322/utils.d.ts.map +1 -0
  134. package/dist/cjs/test/bip322/utils.js +79 -0
  135. package/dist/cjs/test/bip322/verify.d.ts +2 -0
  136. package/dist/cjs/test/bip322/verify.d.ts.map +1 -0
  137. package/dist/cjs/test/bip322/verify.js +293 -0
  138. package/dist/cjs/test/bip32utils.d.ts +2 -0
  139. package/dist/cjs/test/bip32utils.d.ts.map +1 -0
  140. package/dist/cjs/test/bip32utils.js +62 -0
  141. package/dist/cjs/test/bip65/locktime.d.ts +2 -0
  142. package/dist/cjs/test/bip65/locktime.d.ts.map +1 -0
  143. package/dist/cjs/test/bip65/locktime.js +22 -0
  144. package/dist/cjs/test/descriptor/Output.d.ts +2 -0
  145. package/dist/cjs/test/descriptor/Output.d.ts.map +1 -0
  146. package/dist/cjs/test/descriptor/Output.js +44 -0
  147. package/dist/cjs/test/descriptor/derive.d.ts +2 -0
  148. package/dist/cjs/test/descriptor/derive.d.ts.map +1 -0
  149. package/dist/cjs/test/descriptor/derive.js +27 -0
  150. package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts +2 -0
  151. package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  152. package/dist/cjs/test/descriptor/fromFixedScriptWallet.js +145 -0
  153. package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts +2 -0
  154. package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  155. package/dist/cjs/test/descriptor/parse/PatternMatcher.js +120 -0
  156. package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts +2 -0
  157. package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts.map +1 -0
  158. package/dist/cjs/test/descriptor/psbt/VirtualSize.js +71 -0
  159. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts +2 -0
  160. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  161. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.js +56 -0
  162. package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts +2 -0
  163. package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  164. package/dist/cjs/test/descriptor/psbt/findDescriptors.js +70 -0
  165. package/dist/cjs/test/descriptor/psbt/psbt.d.ts +2 -0
  166. package/dist/cjs/test/descriptor/psbt/psbt.d.ts.map +1 -0
  167. package/dist/cjs/test/descriptor/psbt/psbt.js +211 -0
  168. package/dist/cjs/test/dustThreshold.d.ts +2 -0
  169. package/dist/cjs/test/dustThreshold.d.ts.map +1 -0
  170. package/dist/cjs/test/dustThreshold.js +110 -0
  171. package/dist/cjs/test/paygo/attestation.d.ts +2 -0
  172. package/dist/cjs/test/paygo/attestation.d.ts.map +1 -0
  173. package/dist/cjs/test/paygo/attestation.js +23 -0
  174. package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts +2 -0
  175. package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts.map +1 -0
  176. package/dist/cjs/test/paygo/parsePayGoAttestation.js +75 -0
  177. package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts +9 -0
  178. package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  179. package/dist/cjs/test/paygo/psbt/payGoAddressProof.js +163 -0
  180. package/dist/cjs/test/xOnlyPubkey.d.ts +2 -0
  181. package/dist/cjs/test/xOnlyPubkey.d.ts.map +1 -0
  182. package/dist/cjs/test/xOnlyPubkey.js +18 -0
  183. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  184. package/dist/esm/Output.d.ts +43 -0
  185. package/dist/esm/Output.js +53 -0
  186. package/dist/esm/bip322/index.d.ts +5 -0
  187. package/dist/esm/bip322/index.d.ts.map +1 -0
  188. package/dist/esm/bip322/index.js +5 -0
  189. package/dist/esm/bip322/toSign.d.ts +25 -0
  190. package/dist/esm/bip322/toSign.d.ts.map +1 -0
  191. package/dist/esm/bip322/toSign.js +120 -0
  192. package/dist/esm/bip322/toSpend.d.ts +22 -0
  193. package/dist/esm/bip322/toSpend.d.ts.map +1 -0
  194. package/dist/esm/bip322/toSpend.js +66 -0
  195. package/dist/esm/bip322/utils.d.ts +18 -0
  196. package/dist/esm/bip322/utils.d.ts.map +1 -0
  197. package/dist/esm/bip322/utils.js +77 -0
  198. package/dist/esm/bip322/verify.d.ts +12 -0
  199. package/dist/esm/bip322/verify.d.ts.map +1 -0
  200. package/dist/esm/bip322/verify.js +76 -0
  201. package/dist/esm/bip32utils.d.ts +16 -0
  202. package/dist/esm/bip32utils.d.ts.map +1 -0
  203. package/dist/esm/bip32utils.js +34 -0
  204. package/dist/esm/bip65/index.d.ts +2 -0
  205. package/dist/esm/bip65/index.js +2 -0
  206. package/dist/esm/bip65/locktime.d.ts +8 -0
  207. package/dist/esm/bip65/locktime.js +34 -0
  208. package/dist/esm/descriptor/DescriptorMap.d.ts +9 -0
  209. package/dist/{src → esm}/descriptor/DescriptorMap.d.ts.map +1 -1
  210. package/dist/esm/descriptor/DescriptorMap.js +6 -0
  211. package/dist/esm/descriptor/Output.d.ts +23 -0
  212. package/dist/{src → esm}/descriptor/Output.d.ts.map +1 -1
  213. package/dist/esm/descriptor/Output.js +32 -0
  214. package/dist/esm/descriptor/VirtualSize.d.ts +23 -0
  215. package/dist/{src → esm}/descriptor/VirtualSize.d.ts.map +1 -1
  216. package/dist/esm/descriptor/VirtualSize.js +94 -0
  217. package/dist/esm/descriptor/address.d.ts +5 -0
  218. package/dist/{src → esm}/descriptor/address.d.ts.map +1 -1
  219. package/dist/esm/descriptor/address.js +11 -0
  220. package/dist/esm/descriptor/derive.d.ts +13 -0
  221. package/dist/{src → esm}/descriptor/derive.d.ts.map +1 -1
  222. package/dist/esm/descriptor/derive.js +38 -0
  223. package/dist/esm/descriptor/fromFixedScriptWallet.d.ts +16 -0
  224. package/dist/{src → esm}/descriptor/fromFixedScriptWallet.d.ts.map +1 -1
  225. package/dist/esm/descriptor/fromFixedScriptWallet.js +51 -0
  226. package/dist/esm/descriptor/index.d.ts +11 -0
  227. package/dist/{src → esm}/descriptor/index.d.ts.map +1 -1
  228. package/dist/esm/descriptor/index.js +11 -0
  229. package/dist/esm/descriptor/parse/PatternMatcher.d.ts +14 -0
  230. package/dist/esm/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  231. package/dist/esm/descriptor/parse/PatternMatcher.js +56 -0
  232. package/dist/esm/descriptor/psbt/assertSatisfiable.d.ts +20 -0
  233. package/dist/{src → esm}/descriptor/psbt/assertSatisfiable.d.ts.map +1 -1
  234. package/dist/esm/descriptor/psbt/assertSatisfiable.js +69 -0
  235. package/dist/esm/descriptor/psbt/createPsbt.d.ts +23 -0
  236. package/dist/esm/descriptor/psbt/createPsbt.d.ts.map +1 -0
  237. package/dist/esm/descriptor/psbt/createPsbt.js +69 -0
  238. package/dist/esm/descriptor/psbt/findDescriptors.d.ts +26 -0
  239. package/dist/{src → esm}/descriptor/psbt/findDescriptors.d.ts.map +1 -1
  240. package/dist/esm/descriptor/psbt/findDescriptors.js +94 -0
  241. package/dist/esm/descriptor/psbt/index.d.ts +7 -0
  242. package/dist/esm/descriptor/psbt/index.js +7 -0
  243. package/dist/esm/descriptor/psbt/parse.d.ts +27 -0
  244. package/dist/{src → esm}/descriptor/psbt/parse.d.ts.map +1 -1
  245. package/dist/esm/descriptor/psbt/parse.js +51 -0
  246. package/dist/esm/descriptor/psbt/sign.d.ts +26 -0
  247. package/dist/esm/descriptor/psbt/sign.d.ts.map +1 -0
  248. package/dist/esm/descriptor/psbt/sign.js +34 -0
  249. package/dist/esm/descriptor/psbt/wrap.d.ts +12 -0
  250. package/dist/{src → esm}/descriptor/psbt/wrap.d.ts.map +1 -1
  251. package/dist/esm/descriptor/psbt/wrap.js +38 -0
  252. package/dist/esm/dustThreshold.d.ts +4 -0
  253. package/dist/esm/dustThreshold.js +97 -0
  254. package/dist/esm/index.d.ts +10 -0
  255. package/dist/{src → esm}/index.d.ts.map +1 -1
  256. package/dist/esm/index.js +10 -0
  257. package/dist/esm/paygo/attestation.d.ts +11 -0
  258. package/dist/esm/paygo/attestation.d.ts.map +1 -0
  259. package/dist/esm/paygo/attestation.js +18 -0
  260. package/dist/esm/paygo/index.d.ts +3 -0
  261. package/dist/esm/paygo/index.d.ts.map +1 -0
  262. package/dist/esm/paygo/index.js +3 -0
  263. package/dist/esm/paygo/parsePayGoAttestation.d.ts +16 -0
  264. package/dist/esm/paygo/parsePayGoAttestation.d.ts.map +1 -0
  265. package/dist/esm/paygo/parsePayGoAttestation.js +43 -0
  266. package/dist/esm/paygo/psbt/Errors.d.ts +22 -0
  267. package/dist/esm/paygo/psbt/Errors.d.ts.map +1 -0
  268. package/dist/esm/paygo/psbt/Errors.js +35 -0
  269. package/dist/esm/paygo/psbt/index.d.ts +2 -0
  270. package/dist/esm/paygo/psbt/index.d.ts.map +1 -0
  271. package/dist/esm/paygo/psbt/index.js +2 -0
  272. package/dist/esm/paygo/psbt/payGoAddressProof.d.ts +29 -0
  273. package/dist/esm/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  274. package/dist/esm/paygo/psbt/payGoAddressProof.js +85 -0
  275. package/dist/esm/testutil/descriptor/descriptors.d.ts +13 -0
  276. package/dist/esm/testutil/descriptor/descriptors.d.ts.map +1 -0
  277. package/dist/esm/testutil/descriptor/descriptors.js +150 -0
  278. package/dist/esm/testutil/descriptor/index.d.ts +4 -0
  279. package/dist/esm/testutil/descriptor/index.js +4 -0
  280. package/dist/esm/testutil/descriptor/mock.utils.d.ts +36 -0
  281. package/dist/esm/testutil/descriptor/mock.utils.d.ts.map +1 -0
  282. package/dist/esm/testutil/descriptor/mock.utils.js +53 -0
  283. package/dist/esm/testutil/descriptor/psbt.utils.d.ts +4 -0
  284. package/dist/{src → esm}/testutil/descriptor/psbt.utils.d.ts.map +1 -1
  285. package/dist/esm/testutil/descriptor/psbt.utils.js +17 -0
  286. package/dist/esm/testutil/fixtures.utils.d.ts +15 -0
  287. package/dist/{src → esm}/testutil/fixtures.utils.js +5 -42
  288. package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
  289. package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  290. package/dist/esm/testutil/generatePayGoAttestationProof.utils.js +32 -0
  291. package/dist/esm/testutil/index.d.ts +6 -0
  292. package/dist/{src → esm}/testutil/index.d.ts.map +1 -1
  293. package/dist/esm/testutil/index.js +6 -0
  294. package/dist/esm/testutil/key.utils.d.ts +16 -0
  295. package/dist/{src → esm}/testutil/key.utils.d.ts.map +1 -1
  296. package/dist/esm/testutil/key.utils.js +22 -0
  297. package/dist/esm/testutil/toPlainObject.utils.d.ts +11 -0
  298. package/dist/{src → esm}/testutil/toPlainObject.utils.d.ts.map +1 -1
  299. package/dist/esm/testutil/toPlainObject.utils.js +85 -0
  300. package/dist/esm/testutil/trimMessagePrefix.d.ts +11 -0
  301. package/dist/esm/testutil/trimMessagePrefix.d.ts.map +1 -0
  302. package/dist/esm/testutil/trimMessagePrefix.js +24 -0
  303. package/dist/esm/xOnlyPubkey.d.ts +2 -0
  304. package/dist/esm/xOnlyPubkey.js +15 -0
  305. package/package.json +50 -25
  306. package/dist/src/Output.js +0 -60
  307. package/dist/src/bip32utils.d.ts +0 -16
  308. package/dist/src/bip32utils.d.ts.map +0 -1
  309. package/dist/src/bip32utils.js +0 -72
  310. package/dist/src/bip65/locktime.js +0 -37
  311. package/dist/src/descriptor/DescriptorMap.js +0 -9
  312. package/dist/src/descriptor/Output.js +0 -41
  313. package/dist/src/descriptor/VirtualSize.js +0 -100
  314. package/dist/src/descriptor/derive.js +0 -45
  315. package/dist/src/descriptor/fromFixedScriptWallet.js +0 -88
  316. package/dist/src/descriptor/psbt/assertSatisfiable.js +0 -74
  317. package/dist/src/descriptor/psbt/createPsbt.d.ts.map +0 -1
  318. package/dist/src/descriptor/psbt/createPsbt.js +0 -82
  319. package/dist/src/descriptor/psbt/findDescriptors.js +0 -98
  320. package/dist/src/descriptor/psbt/parse.js +0 -87
  321. package/dist/src/descriptor/psbt/sign.d.ts.map +0 -1
  322. package/dist/src/descriptor/psbt/sign.js +0 -42
  323. package/dist/src/descriptor/psbt/wrap.js +0 -76
  324. package/dist/src/dustThreshold.js +0 -134
  325. package/dist/src/paygo/ExtractAddressPayGoAttestation.d.ts.map +0 -1
  326. package/dist/src/paygo/ExtractAddressPayGoAttestation.js +0 -44
  327. package/dist/src/paygo/index.d.ts +0 -2
  328. package/dist/src/paygo/index.d.ts.map +0 -1
  329. package/dist/src/testutil/descriptor/descriptors.d.ts.map +0 -1
  330. package/dist/src/testutil/descriptor/descriptors.js +0 -125
  331. package/dist/src/testutil/descriptor/mock.utils.d.ts.map +0 -1
  332. package/dist/src/testutil/descriptor/mock.utils.js +0 -91
  333. package/dist/src/testutil/descriptor/psbt.utils.js +0 -20
  334. package/dist/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +0 -1
  335. package/dist/src/testutil/generatePayGoAttestationProof.utils.js +0 -43
  336. package/dist/src/testutil/key.utils.js +0 -59
  337. package/dist/src/testutil/toPlainObject.utils.js +0 -75
  338. package/dist/src/xOnlyPubkey.js +0 -18
  339. /package/dist/{src → cjs/src}/Output.d.ts +0 -0
  340. /package/dist/{src → cjs/src}/bip65/index.d.ts +0 -0
  341. /package/dist/{src → cjs/src}/bip65/locktime.d.ts +0 -0
  342. /package/dist/{src → cjs/src}/descriptor/psbt/index.d.ts +0 -0
  343. /package/dist/{src → cjs/src}/dustThreshold.d.ts +0 -0
  344. /package/dist/{src → cjs/src}/testutil/descriptor/index.d.ts +0 -0
  345. /package/dist/{src → cjs/src}/testutil/descriptor/psbt.utils.d.ts +0 -0
  346. /package/dist/{src → cjs/src}/testutil/fixtures.utils.d.ts +0 -0
  347. /package/dist/{src → cjs/src}/testutil/toPlainObject.utils.d.ts +0 -0
  348. /package/dist/{src → cjs/src}/xOnlyPubkey.d.ts +0 -0
  349. /package/dist/{src → esm}/Output.d.ts.map +0 -0
  350. /package/dist/{src → esm}/bip65/index.d.ts.map +0 -0
  351. /package/dist/{src → esm}/bip65/locktime.d.ts.map +0 -0
  352. /package/dist/{src → esm}/descriptor/psbt/index.d.ts.map +0 -0
  353. /package/dist/{src → esm}/dustThreshold.d.ts.map +0 -0
  354. /package/dist/{src → esm}/testutil/descriptor/index.d.ts.map +0 -0
  355. /package/dist/{src → esm}/testutil/fixtures.utils.d.ts.map +0 -0
  356. /package/dist/{src → esm}/xOnlyPubkey.d.ts.map +0 -0
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getInputVSizesForDescriptors = getInputVSizesForDescriptors;
4
- exports.getChangeOutputVSizesForDescriptor = getChangeOutputVSizesForDescriptor;
5
- exports.getVirtualSize = getVirtualSize;
6
- exports.getVirtualSizeEstimateForPsbt = getVirtualSizeEstimateForPsbt;
7
- const unspents_1 = require("@bitgo-beta/unspents");
8
- const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
9
- const psbt_1 = require("./psbt");
10
- function getScriptPubKeyLength(descType) {
11
- // See https://bitcoinops.org/en/tools/calc-size/
12
- switch (descType) {
13
- case 'Wpkh':
14
- // https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#p2wpkh
15
- return 22;
16
- case 'Sh':
17
- case 'ShWsh':
18
- case 'ShWpkh':
19
- // https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki#specification
20
- return 23;
21
- case 'Pkh':
22
- return 25;
23
- case 'Wsh':
24
- case 'Tr':
25
- // P2WSH: https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#p2wsh
26
- // P2TR: https://github.com/bitcoin/bips/blob/58ffd93812ff25e87d53d1f202fbb389fdfb85bb/bip-0341.mediawiki#script-validation-rules
27
- // > A Taproot output is a native SegWit output (see BIP141) with version number 1, and a 32-byte witness program.
28
- // 32 bytes for the hash, 1 byte for the version, 1 byte for the push opcode
29
- return 34;
30
- case 'Bare':
31
- throw new Error('cannot determine scriptPubKey length for Bare descriptor');
32
- default:
33
- throw new Error('unexpected descriptor type ' + descType);
34
- }
35
- }
36
- function getInputVSizeForDescriptor(descriptor) {
37
- // FIXME(BTC-1489): this can overestimate the size of the input significantly
38
- const maxWeight = descriptor.maxWeightToSatisfy();
39
- const maxVSize = Math.ceil(maxWeight / 4);
40
- const sizeOpPushdata1 = 1;
41
- const sizeOpPushdata2 = 2;
42
- return (
43
- // inputId
44
- 32 +
45
- // vOut
46
- 4 +
47
- // nSequence
48
- 4 +
49
- // script overhead
50
- (maxVSize < 255 ? sizeOpPushdata1 : sizeOpPushdata2) +
51
- // script
52
- maxVSize);
53
- }
54
- function getInputVSizesForDescriptors(descriptors) {
55
- return Object.fromEntries(Array.from(descriptors.entries()).map(([name, d]) => {
56
- return [name, getInputVSizeForDescriptor(d)];
57
- }));
58
- }
59
- function getChangeOutputVSizesForDescriptor(d) {
60
- return {
61
- inputVSize: getInputVSizeForDescriptor(d),
62
- outputVSize: getScriptPubKeyLength(d.descType()),
63
- };
64
- }
65
- function getVirtualSize(tx, descriptorMap) {
66
- const lookup = descriptorMap ? getInputVSizesForDescriptors(descriptorMap) : undefined;
67
- const inputVSize = tx.inputs.reduce((sum, input) => {
68
- if (input instanceof wasm_miniscript_1.Descriptor) {
69
- return sum + getInputVSizeForDescriptor(input);
70
- }
71
- if ('descriptorName' in input) {
72
- if (!lookup) {
73
- throw new Error('missing descriptorMap');
74
- }
75
- const vsize = lookup[input.descriptorName];
76
- if (!vsize) {
77
- throw new Error(`Could not find descriptor ${input.descriptorName}`);
78
- }
79
- return sum + vsize;
80
- }
81
- throw new Error('unexpected input');
82
- }, 0);
83
- const outputVSize = tx.outputs.reduce((sum, o) => {
84
- return sum + unspents_1.Dimensions.getVSizeForOutputWithScriptLength(o.script.length);
85
- }, 0);
86
- // we will just assume that we have at least one segwit input
87
- return inputVSize + outputVSize + unspents_1.VirtualSizes.txSegOverheadVSize;
88
- }
89
- function getVirtualSizeEstimateForPsbt(psbt, descriptorMap) {
90
- const inputs = psbt.data.inputs.map((i) => {
91
- const result = (0, psbt_1.findDescriptorForInput)(i, descriptorMap);
92
- if (!result) {
93
- throw new Error('Could not find descriptor for input');
94
- }
95
- return result.descriptor;
96
- });
97
- const outputs = psbt.txOutputs.map((o) => ({ script: o.script }));
98
- return getVirtualSize({ inputs, outputs });
99
- }
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlydHVhbFNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9WaXJ0dWFsU2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXNEQSxvRUFNQztBQUVELGdGQVFDO0FBWUQsd0NBMEJDO0FBRUQsc0VBVUM7QUF2SEQsbURBQWdFO0FBQ2hFLDREQUFvRDtBQUdwRCxpQ0FBZ0Q7QUFFaEQsU0FBUyxxQkFBcUIsQ0FBQyxRQUFnQjtJQUM3QyxpREFBaUQ7SUFDakQsUUFBUSxRQUFRLEVBQUUsQ0FBQztRQUNqQixLQUFLLE1BQU07WUFDVCx3RUFBd0U7WUFDeEUsT0FBTyxFQUFFLENBQUM7UUFDWixLQUFLLElBQUksQ0FBQztRQUNWLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxRQUFRO1lBQ1gsK0VBQStFO1lBQy9FLE9BQU8sRUFBRSxDQUFDO1FBQ1osS0FBSyxLQUFLO1lBQ1IsT0FBTyxFQUFFLENBQUM7UUFDWixLQUFLLEtBQUssQ0FBQztRQUNYLEtBQUssSUFBSTtZQUNQLDhFQUE4RTtZQUM5RSxpSUFBaUk7WUFDakksa0hBQWtIO1lBQ2xILDRFQUE0RTtZQUM1RSxPQUFPLEVBQUUsQ0FBQztRQUNaLEtBQUssTUFBTTtZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztRQUM5RTtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDOUQsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLDBCQUEwQixDQUFDLFVBQXNCO0lBQ3hELDZFQUE2RTtJQUM3RSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNsRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxQyxNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUM7SUFDMUIsTUFBTSxlQUFl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QUNaLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRSxPQUFPLGNBQWMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IERpbWVuc2lvbnMsIFZpcnR1YWxTaXplcyB9IGZyb20gJ0BiaXRnby1iZXRhL3Vuc3BlbnRzJztcbmltcG9ydCB7IERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS1taW5pc2NyaXB0JztcblxuaW1wb3J0IHsgRGVzY3JpcHRvck1hcCB9IGZyb20gJy4vRGVzY3JpcHRvck1hcCc7XG5pbXBvcnQgeyBmaW5kRGVzY3JpcHRvckZvcklucHV0IH0gZnJvbSAnLi9wc2J0JztcblxuZnVuY3Rpb24gZ2V0U2NyaXB0UHViS2V5TGVuZ3RoKGRlc2NUeXBlOiBzdHJpbmcpOiBudW1iZXIge1xuICAvLyBTZWUgaHR0cHM6Ly9iaXRjb2lub3BzLm9yZy9lbi90b29scy9jYWxjLXNpemUvXG4gIHN3aXRjaCAoZGVzY1R5cGUpIHtcbiAgICBjYXNlICdXcGtoJzpcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpcHMvYmxvYi9tYXN0ZXIvYmlwLTAxNDEubWVkaWF3aWtpI3Ayd3BraFxuICAgICAgcmV0dXJuIDIyO1xuICAgIGNhc2UgJ1NoJzpcbiAgICBjYXNlICdTaFdzaCc6XG4gICAgY2FzZSAnU2hXcGtoJzpcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpcHMvYmxvYi9tYXN0ZXIvYmlwLTAwMTYubWVkaWF3aWtpI3NwZWNpZmljYXRpb25cbiAgICAgIHJldHVybiAyMztcbiAgICBjYXNlICdQa2gnOlxuICAgICAgcmV0dXJuIDI1O1xuICAgIGNhc2UgJ1dzaCc6XG4gICAgY2FzZSAnVHInOlxuICAgICAgLy8gUDJXU0g6IGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpcHMvYmxvYi9tYXN0ZXIvYmlwLTAxNDEubWVkaWF3aWtpI3Ayd3NoXG4gICAgICAvLyBQMlRSOiBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXBzL2Jsb2IvNThmZmQ5MzgxMmZmMjVlODdkNTNkMWYyMDJmYmIzODlmZGZiODViYi9iaXAtMDM0MS5tZWRpYXdpa2kjc2NyaXB0LXZhbGlkYXRpb24tcnVsZXNcbiAgICAgIC8vID4gQSBUYXByb290IG91dHB1dCBpcyBhIG5hdGl2ZSBTZWdXaXQgb3V0cHV0IChzZWUgQklQMTQxKSB3aXRoIHZlcnNpb24gbnVtYmVyIDEsIGFuZCBhIDMyLWJ5dGUgd2l0bmVzcyBwcm9ncmFtLlxuICAgICAgLy8gMzIgYnl0ZXMgZm9yIHRoZSBoYXNoLCAxIGJ5dGUgZm9yIHRoZSB2ZXJzaW9uLCAxIGJ5dGUgZm9yIHRoZSBwdXNoIG9wY29kZVxuICAgICAgcmV0dXJuIDM0O1xuICAgIGNhc2UgJ0JhcmUnOlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgZGV0ZXJtaW5lIHNjcmlwdFB1YktleSBsZW5ndGggZm9yIEJhcmUgZGVzY3JpcHRvcicpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgZGVzY3JpcHRvciB0eXBlICcgKyBkZXNjVHlwZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0SW5wdXRWU2l6ZUZvckRlc2NyaXB0b3IoZGVzY3JpcHRvcjogRGVzY3JpcHRvcik6IG51bWJlciB7XG4gIC8vIEZJWE1FKEJUQy0xNDg5KTogdGhpcyBjYW4gb3ZlcmVzdGltYXRlIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBzaWduaWZpY2FudGx5XG4gIGNvbnN0IG1heFdlaWdodCA9IGRlc2NyaXB0b3IubWF4V2VpZ2h0VG9TYXRpc2Z5KCk7XG4gIGNvbnN0IG1heFZTaXplID0gTWF0aC5jZWlsKG1heFdlaWdodCAvIDQpO1xuICBjb25zdCBzaXplT3BQdXNoZGF0YTEgPSAxO1xuICBjb25zdCBzaXplT3BQdXNoZGF0YTIgPSAyO1xuICByZXR1cm4gKFxuICAgIC8vIGlucHV0SWRcbiAgICAzMiArXG4gICAgLy8gdk91dFxuICAgIDQgK1xuICAgIC8vIG5TZXF1ZW5jZVxuICAgIDQgK1xuICAgIC8vIHNjcmlwdCBvdmVyaGVhZFxuICAgIChtYXhWU2l6ZSA8IDI1NSA/IHNpemVPcFB1c2hkYXRhMSA6IHNpemVPcFB1c2hkYXRhMikgK1xuICAgIC8vIHNjcmlwdFxuICAgIG1heFZTaXplXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dFZTaXplc0ZvckRlc2NyaXB0b3JzKGRlc2NyaXB0b3JzOiBEZXNjcmlwdG9yTWFwKTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiB7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgQXJyYXkuZnJvbShkZXNjcmlwdG9ycy5lbnRyaWVzKCkpLm1hcCgoW25hbWUsIGRdKSA9PiB7XG4gICAgICByZXR1cm4gW25hbWUsIGdldElucHV0VlNpemVGb3JEZXNjcmlwdG9yKGQpXTtcbiAgICB9KVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hhbmdlT3V0cHV0VlNpemVzRm9yRGVzY3JpcHRvcihkOiBEZXNjcmlwdG9yKToge1xuICBpbnB1dFZTaXplOiBudW1iZXI7XG4gIG91dHB1dFZTaXplOiBudW1iZXI7XG59IHtcbiAgcmV0dXJuIHtcbiAgICBpbnB1dFZTaXplOiBnZXRJbnB1dFZTaXplRm9yRGVzY3JpcHRvcihkKSxcbiAgICBvdXRwdXRWU2l6ZTogZ2V0U2NyaXB0UHViS2V5TGVuZ3RoKGQuZGVzY1R5cGUoKSksXG4gIH07XG59XG5cbnR5cGUgSW5wdXRXaXRoRGVzY3JpcHRvck5hbWUgPSB7IGRlc2NyaXB0b3JOYW1lOiBzdHJpbmcgfTtcbnR5cGUgT3V0cHV0V2l0aFNjcmlwdCA9IHsgc2NyaXB0OiBCdWZmZXIgfTtcblxudHlwZSBUeDxUSW5wdXQ+ID0ge1xuICBpbnB1dHM6IFRJbnB1dFtdO1xuICBvdXRwdXRzOiBPdXRwdXRXaXRoU2NyaXB0W107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlydHVhbFNpemUodHg6IFR4PERlc2NyaXB0b3I+KTogbnVtYmVyO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZpcnR1YWxTaXplKHR4OiBUeDxJbnB1dFdpdGhEZXNjcmlwdG9yTmFtZT4sIGRlc2NyaXB0b3JzOiBEZXNjcmlwdG9yTWFwKTogbnVtYmVyO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZpcnR1YWxTaXplKFxuICB0eDogVHg8RGVzY3JpcHRvcj4gfCBUeDxJbnB1dFdpdGhEZXNjcmlwdG9yTmFtZT4sXG4gIGRlc2NyaXB0b3JNYXA/OiBEZXNjcmlwdG9yTWFwXG4pOiBudW1iZXIge1xuICBjb25zdCBsb29rdXAgPSBkZXNjcmlwdG9yTWFwID8gZ2V0SW5wdXRWU2l6ZXNGb3JEZXNjcmlwdG9ycyhkZXNjcmlwdG9yTWFwKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaW5wdXRWU2l6ZSA9IHR4LmlucHV0cy5yZWR1Y2UoKHN1bSwgaW5wdXQpID0+IHtcbiAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBEZXNjcmlwdG9yKSB7XG4gICAgICByZXR1cm4gc3VtICsgZ2V0SW5wdXRWU2l6ZUZvckRlc2NyaXB0b3IoaW5wdXQpO1xuICAgIH1cbiAgICBpZiAoJ2Rlc2NyaXB0b3JOYW1lJyBpbiBpbnB1dCkge1xuICAgICAgaWYgKCFsb29rdXApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGRlc2NyaXB0b3JNYXAnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZzaXplID0gbG9va3VwW2lucHV0LmRlc2NyaXB0b3JOYW1lXTtcbiAgICAgIGlmICghdnNpemUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBkZXNjcmlwdG9yICR7aW5wdXQuZGVzY3JpcHRvck5hbWV9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3VtICsgdnNpemU7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBpbnB1dCcpO1xuICB9LCAwKTtcbiAgY29uc3Qgb3V0cHV0VlNpemUgPSB0eC5vdXRwdXRzLnJlZHVjZSgoc3VtLCBvKSA9PiB7XG4gICAgcmV0dXJuIHN1bSArIERpbWVuc2lvbnMuZ2V0VlNpemVGb3JPdXRwdXRXaXRoU2NyaXB0TGVuZ3RoKG8uc2NyaXB0Lmxlbmd0aCk7XG4gIH0sIDApO1xuICAvLyB3ZSB3aWxsIGp1c3QgYXNzdW1lIHRoYXQgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgc2Vnd2l0IGlucHV0XG4gIHJldHVybiBpbnB1dFZTaXplICsgb3V0cHV0VlNpemUgKyBWaXJ0dWFsU2l6ZXMudHhTZWdPdmVyaGVhZFZTaXplO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlydHVhbFNpemVFc3RpbWF0ZUZvclBzYnQocHNidDogdXR4b2xpYi5Qc2J0LCBkZXNjcmlwdG9yTWFwOiBEZXNjcmlwdG9yTWFwKTogbnVtYmVyIHtcbiAgY29uc3QgaW5wdXRzID0gcHNidC5kYXRhLmlucHV0cy5tYXAoKGkpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBmaW5kRGVzY3JpcHRvckZvcklucHV0KGksIGRlc2NyaXB0b3JNYXApO1xuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGRlc2NyaXB0b3IgZm9yIGlucHV0Jyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQuZGVzY3JpcHRvcjtcbiAgfSk7XG4gIGNvbnN0IG91dHB1dHMgPSBwc2J0LnR4T3V0cHV0cy5tYXAoKG8pID0+ICh7IHNjcmlwdDogby5zY3JpcHQgfSkpO1xuICByZXR1cm4gZ2V0VmlydHVhbFNpemUoeyBpbnB1dHMsIG91dHB1dHMgfSk7XG59XG4iXX0=
@@ -1,45 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getDescriptorAtIndex = getDescriptorAtIndex;
7
- exports.getDescriptorAtIndexCheckScript = getDescriptorAtIndexCheckScript;
8
- const assert_1 = __importDefault(require("assert"));
9
- const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
10
- /**
11
- * Get a descriptor at a specific derivation index.
12
- * For wildcard descriptors (containing '*'), the index is required and used for derivation.
13
- * For definite descriptors (not containing '*'), no index should be provided.
14
- * @param descriptor - The descriptor to derive from
15
- * @param index - The derivation index for wildcard descriptors
16
- * @returns A new descriptor at the specified index for wildcard descriptors, or the original descriptor for definite ones
17
- * @throws {Error} If index is undefined for a wildcard descriptor or if index is provided for a definite descriptor
18
- */
19
- function getDescriptorAtIndex(descriptor, index) {
20
- (0, assert_1.default)(descriptor instanceof wasm_miniscript_1.Descriptor);
21
- wasm_miniscript_1.Descriptor.fromString(descriptor.toString(), 'derivable');
22
- descriptor = wasm_miniscript_1.Descriptor.fromStringDetectType(descriptor.toString());
23
- if (descriptor.hasWildcard()) {
24
- if (index === undefined) {
25
- throw new Error('Derivable descriptor requires an index');
26
- }
27
- return descriptor.atDerivationIndex(index);
28
- }
29
- else {
30
- if (index !== undefined) {
31
- throw new Error('Definite descriptor cannot be derived with index');
32
- }
33
- return descriptor;
34
- }
35
- }
36
- function getDescriptorAtIndexCheckScript(descriptor, index, script, descriptorString = descriptor.toString()) {
37
- (0, assert_1.default)(descriptor instanceof wasm_miniscript_1.Descriptor);
38
- const descriptorAtIndex = getDescriptorAtIndex(descriptor, index);
39
- if (!script.equals(descriptorAtIndex.scriptPubkey())) {
40
- throw new Error(`Script mismatch: descriptor ${descriptorString} script=${script.toString('hex')}`);
41
- }
42
- (0, assert_1.default)(descriptorAtIndex instanceof wasm_miniscript_1.Descriptor);
43
- return descriptorAtIndex;
44
- }
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyaXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvZGVyaXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBYUEsb0RBZUM7QUFFRCwwRUFhQztBQTNDRCxvREFBNEI7QUFFNUIsNERBQW9EO0FBRXBEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsVUFBc0IsRUFBRSxLQUF5QjtJQUNwRixJQUFBLGdCQUFNLEVBQUMsVUFBVSxZQUFZLDRCQUFVLENBQUMsQ0FBQztJQUN6Qyw0QkFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDMUQsVUFBVSxHQUFHLDRCQUFVLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDcEUsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUM3QixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7U0FBTSxDQUFDO1FBQ04sSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLCtCQUErQixDQUM3QyxVQUFzQixFQUN0QixLQUF5QixFQUN6QixNQUFjLEVBQ2QsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRTtJQUV4QyxJQUFBLGdCQUFNLEVBQUMsVUFBVSxZQUFZLDRCQUFVLENBQUMsQ0FBQztJQUN6QyxNQUFNLGlCQUFpQixHQUFHLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDckQsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsZ0JBQWdCLFdBQVcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUNELElBQUEsZ0JBQU0sRUFBQyxpQkFBaUIsWUFBWSw0QkFBVSxDQUFDLENBQUM7SUFDaEQsT0FBTyxpQkFBaUIsQ0FBQztBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5cbi8qKlxuICogR2V0IGEgZGVzY3JpcHRvciBhdCBhIHNwZWNpZmljIGRlcml2YXRpb24gaW5kZXguXG4gKiBGb3Igd2lsZGNhcmQgZGVzY3JpcHRvcnMgKGNvbnRhaW5pbmcgJyonKSwgdGhlIGluZGV4IGlzIHJlcXVpcmVkIGFuZCB1c2VkIGZvciBkZXJpdmF0aW9uLlxuICogRm9yIGRlZmluaXRlIGRlc2NyaXB0b3JzIChub3QgY29udGFpbmluZyAnKicpLCBubyBpbmRleCBzaG91bGQgYmUgcHJvdmlkZWQuXG4gKiBAcGFyYW0gZGVzY3JpcHRvciAtIFRoZSBkZXNjcmlwdG9yIHRvIGRlcml2ZSBmcm9tXG4gKiBAcGFyYW0gaW5kZXggLSBUaGUgZGVyaXZhdGlvbiBpbmRleCBmb3Igd2lsZGNhcmQgZGVzY3JpcHRvcnNcbiAqIEByZXR1cm5zIEEgbmV3IGRlc2NyaXB0b3IgYXQgdGhlIHNwZWNpZmllZCBpbmRleCBmb3Igd2lsZGNhcmQgZGVzY3JpcHRvcnMsIG9yIHRoZSBvcmlnaW5hbCBkZXNjcmlwdG9yIGZvciBkZWZpbml0ZSBvbmVzXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgaW5kZXggaXMgdW5kZWZpbmVkIGZvciBhIHdpbGRjYXJkIGRlc2NyaXB0b3Igb3IgaWYgaW5kZXggaXMgcHJvdmlkZWQgZm9yIGEgZGVmaW5pdGUgZGVzY3JpcHRvclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVzY3JpcHRvckF0SW5kZXgoZGVzY3JpcHRvcjogRGVzY3JpcHRvciwgaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCk6IERlc2NyaXB0b3Ige1xuICBhc3NlcnQoZGVzY3JpcHRvciBpbnN0YW5jZW9mIERlc2NyaXB0b3IpO1xuICBEZXNjcmlwdG9yLmZyb21TdHJpbmcoZGVzY3JpcHRvci50b1N0cmluZygpLCAnZGVyaXZhYmxlJyk7XG4gIGRlc2NyaXB0b3IgPSBEZXNjcmlwdG9yLmZyb21TdHJpbmdEZXRlY3RUeXBlKGRlc2NyaXB0b3IudG9TdHJpbmcoKSk7XG4gIGlmIChkZXNjcmlwdG9yLmhhc1dpbGRjYXJkKCkpIHtcbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEZXJpdmFibGUgZGVzY3JpcHRvciByZXF1aXJlcyBhbiBpbmRleCcpO1xuICAgIH1cbiAgICByZXR1cm4gZGVzY3JpcHRvci5hdERlcml2YXRpb25JbmRleChpbmRleCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGVmaW5pdGUgZGVzY3JpcHRvciBjYW5ub3QgYmUgZGVyaXZlZCB3aXRoIGluZGV4Jyk7XG4gICAgfVxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNjcmlwdG9yQXRJbmRleENoZWNrU2NyaXB0KFxuICBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yLFxuICBpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBzY3JpcHQ6IEJ1ZmZlcixcbiAgZGVzY3JpcHRvclN0cmluZyA9IGRlc2NyaXB0b3IudG9TdHJpbmcoKVxuKTogRGVzY3JpcHRvciB7XG4gIGFzc2VydChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRGVzY3JpcHRvcik7XG4gIGNvbnN0IGRlc2NyaXB0b3JBdEluZGV4ID0gZ2V0RGVzY3JpcHRvckF0SW5kZXgoZGVzY3JpcHRvciwgaW5kZXgpO1xuICBpZiAoIXNjcmlwdC5lcXVhbHMoZGVzY3JpcHRvckF0SW5kZXguc2NyaXB0UHVia2V5KCkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTY3JpcHQgbWlzbWF0Y2g6IGRlc2NyaXB0b3IgJHtkZXNjcmlwdG9yU3RyaW5nfSBzY3JpcHQ9JHtzY3JpcHQudG9TdHJpbmcoJ2hleCcpfWApO1xuICB9XG4gIGFzc2VydChkZXNjcmlwdG9yQXRJbmRleCBpbnN0YW5jZW9mIERlc2NyaXB0b3IpO1xuICByZXR1cm4gZGVzY3JpcHRvckF0SW5kZXg7XG59XG4iXX0=
@@ -1,88 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.getDescriptorForScriptType = getDescriptorForScriptType;
37
- exports.getNamedDescriptorsForRootWalletKeys = getNamedDescriptorsForRootWalletKeys;
38
- const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
39
- const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
40
- /** Expand a template with the given root wallet keys and chain code */
41
- function expand(rootWalletKeys, keyIndex, chainCode) {
42
- if (keyIndex !== 0 && keyIndex !== 1 && keyIndex !== 2) {
43
- throw new Error('Invalid key index');
44
- }
45
- const xpub = rootWalletKeys.triple[keyIndex].neutered().toBase58();
46
- const prefix = rootWalletKeys.derivationPrefixes[keyIndex];
47
- return xpub + '/' + prefix + '/' + chainCode + '/*';
48
- }
49
- /**
50
- * Get a standard output descriptor that corresponds to the proprietary HD wallet setup
51
- * used in BitGo wallets.
52
- * Only supports a subset of script types.
53
- */
54
- function getDescriptorForScriptType(rootWalletKeys, scriptType, scope) {
55
- const chain = scope === 'external'
56
- ? utxolib.bitgo.getExternalChainCode(scriptType)
57
- : utxolib.bitgo.getInternalChainCode(scriptType);
58
- const multi = {
59
- multi: [2, ...rootWalletKeys.triple.map((_, i) => expand(rootWalletKeys, i, chain))],
60
- };
61
- switch (scriptType) {
62
- case 'p2sh':
63
- return wasm_miniscript_1.Descriptor.fromString(wasm_miniscript_1.ast.formatNode({ sh: multi }), 'derivable');
64
- case 'p2shP2wsh':
65
- return wasm_miniscript_1.Descriptor.fromString(wasm_miniscript_1.ast.formatNode({ sh: { wsh: multi } }), 'derivable');
66
- case 'p2wsh':
67
- return wasm_miniscript_1.Descriptor.fromString(wasm_miniscript_1.ast.formatNode({ wsh: multi }), 'derivable');
68
- default:
69
- throw new Error(`Unsupported script type ${scriptType}`);
70
- }
71
- }
72
- function isSupportedScriptType(scriptType) {
73
- return ['p2sh', 'p2shP2wsh', 'p2wsh'].includes(scriptType);
74
- }
75
- /**
76
- * Get a map of named descriptors for the given root wallet keys.
77
- * Unsupported script types will have a value of null.
78
- * Currently supports p2sh, p2shP2wsh, and p2wsh script types.
79
- * @param rootWalletKeys
80
- */
81
- function getNamedDescriptorsForRootWalletKeys(rootWalletKeys) {
82
- const scopes = ['external', 'internal'];
83
- return new Map(utxolib.bitgo.outputScripts.scriptTypes2Of3.flatMap((scriptType) => scopes.map((scope) => [
84
- `${scriptType}/${scope}`,
85
- isSupportedScriptType(scriptType) ? getDescriptorForScriptType(rootWalletKeys, scriptType, scope) : null,
86
- ])));
87
- }
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbUZpeGVkU2NyaXB0V2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvZnJvbUZpeGVkU2NyaXB0V2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBLGdFQXNCQztBQWNELG9GQVlDO0FBbEVELDhEQUFnRDtBQUNoRCw0REFBeUQ7QUFFekQsdUVBQXVFO0FBQ3ZFLFNBQVMsTUFBTSxDQUFDLGNBQTRDLEVBQUUsUUFBZ0IsRUFBRSxTQUFpQjtJQUMvRixJQUFJLFFBQVEsS0FBSyxDQUFDLElBQUksUUFBUSxLQUFLLENBQUMsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkQsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25FLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzRCxPQUFPLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLEdBQUcsR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQ3RELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsMEJBQTBCLENBQ3hDLGNBQTRDLEVBQzVDLFVBQTBDLEVBQzFDLEtBQThCO0lBRTlCLE1BQU0sS0FBSyxHQUNULEtBQUssS0FBSyxVQUFVO1FBQ2xCLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQztRQUNoRCxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRCxNQUFNLEtBQUssR0FBdUI7UUFDaEMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ3JGLENBQUM7SUFDRixRQUFRLFVBQVUsRUFBRSxDQUFDO1FBQ25CLEtBQUssTUFBTTtZQUNULE9BQU8sNEJBQVUsQ0FBQyxVQUFVLENBQUMscUJBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMzRSxLQUFLLFdBQVc7WUFDZCxPQUFPLDRCQUFVLENBQUMsVUFBVSxDQUFDLHFCQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNwRixLQUFLLE9BQU87WUFDVixPQUFPLDRCQUFVLENBQUMsVUFBVSxDQUFDLHFCQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUU7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FDNUIsVUFBc0Q7SUFFdEQsT0FBTyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLG9DQUFvQyxDQUNsRCxjQUE0QztJQUU1QyxNQUFNLE1BQU0sR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQVUsQ0FBQztJQUNqRCxPQUFPLElBQUksR0FBRyxDQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUNqRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNwQixHQUFHLFVBQVUsSUFBSSxLQUFLLEVBQUU7UUFDeEIscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7S0FDekcsQ0FBQyxDQUNILENBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IERlc2NyaXB0b3IsIGFzdCB9IGZyb20gJ0BiaXRnby93YXNtLW1pbmlzY3JpcHQnO1xuXG4vKiogRXhwYW5kIGEgdGVtcGxhdGUgd2l0aCB0aGUgZ2l2ZW4gcm9vdCB3YWxsZXQga2V5cyBhbmQgY2hhaW4gY29kZSAqL1xuZnVuY3Rpb24gZXhwYW5kKHJvb3RXYWxsZXRLZXlzOiB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzLCBrZXlJbmRleDogbnVtYmVyLCBjaGFpbkNvZGU6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmIChrZXlJbmRleCAhPT0gMCAmJiBrZXlJbmRleCAhPT0gMSAmJiBrZXlJbmRleCAhPT0gMikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBrZXkgaW5kZXgnKTtcbiAgfVxuICBjb25zdCB4cHViID0gcm9vdFdhbGxldEtleXMudHJpcGxlW2tleUluZGV4XS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCk7XG4gIGNvbnN0IHByZWZpeCA9IHJvb3RXYWxsZXRLZXlzLmRlcml2YXRpb25QcmVmaXhlc1trZXlJbmRleF07XG4gIHJldHVybiB4cHViICsgJy8nICsgcHJlZml4ICsgJy8nICsgY2hhaW5Db2RlICsgJy8qJztcbn1cblxuLyoqXG4gKiBHZXQgYSBzdGFuZGFyZCBvdXRwdXQgZGVzY3JpcHRvciB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBwcm9wcmlldGFyeSBIRCB3YWxsZXQgc2V0dXBcbiAqIHVzZWQgaW4gQml0R28gd2FsbGV0cy5cbiAqIE9ubHkgc3VwcG9ydHMgYSBzdWJzZXQgb2Ygc2NyaXB0IHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVzY3JpcHRvckZvclNjcmlwdFR5cGUoXG4gIHJvb3RXYWxsZXRLZXlzOiB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzLFxuICBzY3JpcHRUeXBlOiAncDJzaCcgfCAncDJzaFAyd3NoJyB8ICdwMndzaCcsXG4gIHNjb3BlOiAnaW50ZXJuYWwnIHwgJ2V4dGVybmFsJ1xuKTogRGVzY3JpcHRvciB7XG4gIGNvbnN0IGNoYWluID1cbiAgICBzY29wZSA9PT0gJ2V4dGVybmFsJ1xuICAgICAgPyB1dHhvbGliLmJpdGdvLmdldEV4dGVybmFsQ2hhaW5Db2RlKHNjcmlwdFR5cGUpXG4gICAgICA6IHV0eG9saWIuYml0Z28uZ2V0SW50ZXJuYWxDaGFpbkNvZGUoc2NyaXB0VHlwZSk7XG4gIGNvbnN0IG11bHRpOiBhc3QuTWluaXNjcmlwdE5vZGUgPSB7XG4gICAgbXVsdGk6IFsyLCAuLi5yb290V2FsbGV0S2V5cy50cmlwbGUubWFwKChfLCBpKSA9PiBleHBhbmQocm9vdFdhbGxldEtleXMsIGksIGNoYWluKSldLFxuICB9O1xuICBzd2l0Y2ggKHNjcmlwdFR5cGUpIHtcbiAgICBjYXNlICdwMnNoJzpcbiAgICAgIHJldHVybiBEZXNjcmlwdG9yLmZyb21TdHJpbmcoYXN0LmZvcm1hdE5vZGUoeyBzaDogbXVsdGkgfSksICdkZXJpdmFibGUnKTtcbiAgICBjYXNlICdwMnNoUDJ3c2gnOlxuICAgICAgcmV0dXJuIERlc2NyaXB0b3IuZnJvbVN0cmluZyhhc3QuZm9ybWF0Tm9kZSh7IHNoOiB7IHdzaDogbXVsdGkgfSB9KSwgJ2Rlcml2YWJsZScpO1xuICAgIGNhc2UgJ3Ayd3NoJzpcbiAgICAgIHJldHVybiBEZXNjcmlwdG9yLmZyb21TdHJpbmcoYXN0LmZvcm1hdE5vZGUoeyB3c2g6IG11bHRpIH0pLCAnZGVyaXZhYmxlJyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgc2NyaXB0IHR5cGUgJHtzY3JpcHRUeXBlfWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzU3VwcG9ydGVkU2NyaXB0VHlwZShcbiAgc2NyaXB0VHlwZTogdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGUyT2YzXG4pOiBzY3JpcHRUeXBlIGlzICdwMnNoJyB8ICdwMnNoUDJ3c2gnIHwgJ3Ayd3NoJyB7XG4gIHJldHVybiBbJ3Ayc2gnLCAncDJzaFAyd3NoJywgJ3Ayd3NoJ10uaW5jbHVkZXMoc2NyaXB0VHlwZSk7XG59XG5cbi8qKlxuICogR2V0IGEgbWFwIG9mIG5hbWVkIGRlc2NyaXB0b3JzIGZvciB0aGUgZ2l2ZW4gcm9vdCB3YWxsZXQga2V5cy5cbiAqIFVuc3VwcG9ydGVkIHNjcmlwdCB0eXBlcyB3aWxsIGhhdmUgYSB2YWx1ZSBvZiBudWxsLlxuICogQ3VycmVudGx5IHN1cHBvcnRzIHAyc2gsIHAyc2hQMndzaCwgYW5kIHAyd3NoIHNjcmlwdCB0eXBlcy5cbiAqIEBwYXJhbSByb290V2FsbGV0S2V5c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmFtZWREZXNjcmlwdG9yc0ZvclJvb3RXYWxsZXRLZXlzKFxuICByb290V2FsbGV0S2V5czogdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5c1xuKTogTWFwPHN0cmluZywgRGVzY3JpcHRvciB8IG51bGw+IHtcbiAgY29uc3Qgc2NvcGVzID0gWydleHRlcm5hbCcsICdpbnRlcm5hbCddIGFzIGNvbnN0O1xuICByZXR1cm4gbmV3IE1hcChcbiAgICB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuc2NyaXB0VHlwZXMyT2YzLmZsYXRNYXAoKHNjcmlwdFR5cGUpID0+XG4gICAgICBzY29wZXMubWFwKChzY29wZSkgPT4gW1xuICAgICAgICBgJHtzY3JpcHRUeXBlfS8ke3Njb3BlfWAsXG4gICAgICAgIGlzU3VwcG9ydGVkU2NyaXB0VHlwZShzY3JpcHRUeXBlKSA/IGdldERlc2NyaXB0b3JGb3JTY3JpcHRUeXBlKHJvb3RXYWxsZXRLZXlzLCBzY3JpcHRUeXBlLCBzY29wZSkgOiBudWxsLFxuICAgICAgXSlcbiAgICApXG4gICk7XG59XG4iXX0=
@@ -1,74 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FINAL_SEQUENCE = void 0;
4
- exports.getRequiredLocktime = getRequiredLocktime;
5
- exports.assertSatisfiable = assertSatisfiable;
6
- /**
7
- * These are some helpers for testing satisfiability of descriptors in PSBTs.
8
- *
9
- * They are mostly a debugging aid - if an input cannot be satisified, the `finalizePsbt()` method will fail, but
10
- * the error message is pretty vague.
11
- *
12
- * The methods here have the goal of catching certain cases earlier and with a better error message.
13
- *
14
- * The goal is not an exhaustive check, but to catch common mistakes.
15
- */
16
- const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
17
- exports.FINAL_SEQUENCE = 0xffffffff;
18
- /**
19
- * Get the required locktime for a descriptor.
20
- * @param descriptor
21
- */
22
- function getRequiredLocktime(descriptor) {
23
- if (descriptor instanceof wasm_miniscript_1.Descriptor) {
24
- return getRequiredLocktime(descriptor.node());
25
- }
26
- if (typeof descriptor !== 'object' || descriptor === null) {
27
- return undefined;
28
- }
29
- if ('Wsh' in descriptor) {
30
- return getRequiredLocktime(descriptor.Wsh);
31
- }
32
- if ('Sh' in descriptor) {
33
- return getRequiredLocktime(descriptor.Sh);
34
- }
35
- if ('Ms' in descriptor) {
36
- return getRequiredLocktime(descriptor.Ms);
37
- }
38
- if ('AndV' in descriptor) {
39
- if (!Array.isArray(descriptor.AndV)) {
40
- throw new Error('Expected an array');
41
- }
42
- if (descriptor.AndV.length !== 2) {
43
- throw new Error('Expected exactly two elements');
44
- }
45
- const [a, b] = descriptor.AndV;
46
- return getRequiredLocktime(a) ?? getRequiredLocktime(b);
47
- }
48
- if ('Drop' in descriptor) {
49
- return getRequiredLocktime(descriptor.Drop);
50
- }
51
- if ('Verify' in descriptor) {
52
- return getRequiredLocktime(descriptor.Verify);
53
- }
54
- if ('After' in descriptor && typeof descriptor.After === 'object' && descriptor.After !== null) {
55
- if ('absLockTime' in descriptor.After && typeof descriptor.After.absLockTime === 'number') {
56
- return descriptor.After.absLockTime;
57
- }
58
- }
59
- return undefined;
60
- }
61
- function assertSatisfiable(psbt, inputIndex, descriptor) {
62
- // If the descriptor requires a locktime, the input must have a non-final sequence number
63
- const requiredLocktime = getRequiredLocktime(descriptor);
64
- if (requiredLocktime !== undefined) {
65
- const input = psbt.txInputs[inputIndex];
66
- if (input.sequence === exports.FINAL_SEQUENCE) {
67
- throw new Error(`Input ${inputIndex} has a non-final sequence number, but requires a timelock`);
68
- }
69
- if (psbt.locktime !== requiredLocktime) {
70
- throw new Error(`psbt locktime (${psbt.locktime}) does not match required locktime (${requiredLocktime})`);
71
- }
72
- }
73
- }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0U2F0aXNmaWFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9wc2J0L2Fzc2VydFNhdGlzZmlhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW1CQSxrREFzQ0M7QUFFRCw4Q0FZQztBQXZFRDs7Ozs7Ozs7O0dBU0c7QUFDSCw0REFBb0Q7QUFHdkMsUUFBQSxjQUFjLEdBQUcsVUFBVSxDQUFDO0FBRXpDOzs7R0FHRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLFVBQWdDO0lBQ2xFLElBQUksVUFBVSxZQUFZLDRCQUFVLEVBQUUsQ0FBQztRQUNyQyxPQUFPLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDMUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELElBQUksS0FBSyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sbUJBQW1CLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxJQUFJLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUN2QixPQUFPLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsSUFBSSxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7UUFDdkIsT0FBTyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELElBQUksTUFBTSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztRQUMvQixPQUFPLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRCxJQUFJLE1BQU0sSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUN6QixPQUFPLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsSUFBSSxRQUFRLElBQUksVUFBVSxFQUFFLENBQUM7UUFDM0IsT0FBTyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUNELElBQUksT0FBTyxJQUFJLFVBQVUsSUFBSSxPQUFPLFVBQVUsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLFVBQVUsQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDL0YsSUFBSSxhQUFhLElBQUksVUFBVSxDQUFDLEtBQUssSUFBSSxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFGLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUMsSUFBa0IsRUFBRSxVQUFrQixFQUFFLFVBQXNCO0lBQzlGLHlGQUF5RjtJQUN6RixNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pELElBQUksZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssc0JBQWMsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxVQUFVLDJEQUEyRCxDQUFDLENBQUM7UUFDbEcsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLElBQUksQ0FBQyxRQUFRLHVDQUF1QyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDN0csQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGVzZSBhcmUgc29tZSBoZWxwZXJzIGZvciB0ZXN0aW5nIHNhdGlzZmlhYmlsaXR5IG9mIGRlc2NyaXB0b3JzIGluIFBTQlRzLlxuICpcbiAqIFRoZXkgYXJlIG1vc3RseSBhIGRlYnVnZ2luZyBhaWQgLSBpZiBhbiBpbnB1dCBjYW5ub3QgYmUgc2F0aXNpZmllZCwgdGhlIGBmaW5hbGl6ZVBzYnQoKWAgbWV0aG9kIHdpbGwgZmFpbCwgYnV0XG4gKiB0aGUgZXJyb3IgbWVzc2FnZSBpcyBwcmV0dHkgdmFndWUuXG4gKlxuICogVGhlIG1ldGhvZHMgaGVyZSBoYXZlIHRoZSBnb2FsIG9mIGNhdGNoaW5nIGNlcnRhaW4gY2FzZXMgZWFybGllciBhbmQgd2l0aCBhIGJldHRlciBlcnJvciBtZXNzYWdlLlxuICpcbiAqIFRoZSBnb2FsIGlzIG5vdCBhbiBleGhhdXN0aXZlIGNoZWNrLCBidXQgdG8gY2F0Y2ggY29tbW9uIG1pc3Rha2VzLlxuICovXG5pbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuZXhwb3J0IGNvbnN0IEZJTkFMX1NFUVVFTkNFID0gMHhmZmZmZmZmZjtcblxuLyoqXG4gKiBHZXQgdGhlIHJlcXVpcmVkIGxvY2t0aW1lIGZvciBhIGRlc2NyaXB0b3IuXG4gKiBAcGFyYW0gZGVzY3JpcHRvclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVxdWlyZWRMb2NrdGltZShkZXNjcmlwdG9yOiBEZXNjcmlwdG9yIHwgdW5rbm93bik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRGVzY3JpcHRvcikge1xuICAgIHJldHVybiBnZXRSZXF1aXJlZExvY2t0aW1lKGRlc2NyaXB0b3Iubm9kZSgpKTtcbiAgfVxuICBpZiAodHlwZW9mIGRlc2NyaXB0b3IgIT09ICdvYmplY3QnIHx8IGRlc2NyaXB0b3IgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmICgnV3NoJyBpbiBkZXNjcmlwdG9yKSB7XG4gICAgcmV0dXJuIGdldFJlcXVpcmVkTG9ja3RpbWUoZGVzY3JpcHRvci5Xc2gpO1xuICB9XG4gIGlmICgnU2gnIGluIGRlc2NyaXB0b3IpIHtcbiAgICByZXR1cm4gZ2V0UmVxdWlyZWRMb2NrdGltZShkZXNjcmlwdG9yLlNoKTtcbiAgfVxuICBpZiAoJ01zJyBpbiBkZXNjcmlwdG9yKSB7XG4gICAgcmV0dXJuIGdldFJlcXVpcmVkTG9ja3RpbWUoZGVzY3JpcHRvci5Ncyk7XG4gIH1cbiAgaWYgKCdBbmRWJyBpbiBkZXNjcmlwdG9yKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRlc2NyaXB0b3IuQW5kVikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgYW4gYXJyYXknKTtcbiAgICB9XG4gICAgaWYgKGRlc2NyaXB0b3IuQW5kVi5sZW5ndGggIT09IDIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgZXhhY3RseSB0d28gZWxlbWVudHMnKTtcbiAgICB9XG4gICAgY29uc3QgW2EsIGJdID0gZGVzY3JpcHRvci5BbmRWO1xuICAgIHJldHVybiBnZXRSZXF1aXJlZExvY2t0aW1lKGEpID8/IGdldFJlcXVpcmVkTG9ja3RpbWUoYik7XG4gIH1cbiAgaWYgKCdEcm9wJyBpbiBkZXNjcmlwdG9yKSB7XG4gICAgcmV0dXJuIGdldFJlcXVpcmVkTG9ja3RpbWUoZGVzY3JpcHRvci5Ecm9wKTtcbiAgfVxuICBpZiAoJ1ZlcmlmeScgaW4gZGVzY3JpcHRvcikge1xuICAgIHJldHVybiBnZXRSZXF1aXJlZExvY2t0aW1lKGRlc2NyaXB0b3IuVmVyaWZ5KTtcbiAgfVxuICBpZiAoJ0FmdGVyJyBpbiBkZXNjcmlwdG9yICYmIHR5cGVvZiBkZXNjcmlwdG9yLkFmdGVyID09PSAnb2JqZWN0JyAmJiBkZXNjcmlwdG9yLkFmdGVyICE9PSBudWxsKSB7XG4gICAgaWYgKCdhYnNMb2NrVGltZScgaW4gZGVzY3JpcHRvci5BZnRlciAmJiB0eXBlb2YgZGVzY3JpcHRvci5BZnRlci5hYnNMb2NrVGltZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBkZXNjcmlwdG9yLkFmdGVyLmFic0xvY2tUaW1lO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0U2F0aXNmaWFibGUocHNidDogdXR4b2xpYi5Qc2J0LCBpbnB1dEluZGV4OiBudW1iZXIsIGRlc2NyaXB0b3I6IERlc2NyaXB0b3IpOiB2b2lkIHtcbiAgLy8gSWYgdGhlIGRlc2NyaXB0b3IgcmVxdWlyZXMgYSBsb2NrdGltZSwgdGhlIGlucHV0IG11c3QgaGF2ZSBhIG5vbi1maW5hbCBzZXF1ZW5jZSBudW1iZXJcbiAgY29uc3QgcmVxdWlyZWRMb2NrdGltZSA9IGdldFJlcXVpcmVkTG9ja3RpbWUoZGVzY3JpcHRvcik7XG4gIGlmIChyZXF1aXJlZExvY2t0aW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBpbnB1dCA9IHBzYnQudHhJbnB1dHNbaW5wdXRJbmRleF07XG4gICAgaWYgKGlucHV0LnNlcXVlbmNlID09PSBGSU5BTF9TRVFVRU5DRSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnB1dCAke2lucHV0SW5kZXh9IGhhcyBhIG5vbi1maW5hbCBzZXF1ZW5jZSBudW1iZXIsIGJ1dCByZXF1aXJlcyBhIHRpbWVsb2NrYCk7XG4gICAgfVxuICAgIGlmIChwc2J0LmxvY2t0aW1lICE9PSByZXF1aXJlZExvY2t0aW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHBzYnQgbG9ja3RpbWUgKCR7cHNidC5sb2NrdGltZX0pIGRvZXMgbm90IG1hdGNoIHJlcXVpcmVkIGxvY2t0aW1lICgke3JlcXVpcmVkTG9ja3RpbWV9KWApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1 +0,0 @@
1
- {"version":3,"file":"createPsbt.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/psbt/createPsbt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAKtC;;;KAGK;AACL,eAAO,MAAM,uBAAuB,QAAiB,CAAC;AA8BtD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG,6BAA6B,GAAG;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,UAAU,CACxB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,iCAAiC,EAAE,EAC3C,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,GACnC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAYxB"}
@@ -1,82 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.MAX_BIP125_RBF_SEQUENCE = void 0;
37
- exports.createPsbt = createPsbt;
38
- const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
39
- const wrap_1 = require("./wrap");
40
- const assertSatisfiable_1 = require("./assertSatisfiable");
41
- /**
42
- * Non-Final (Replaceable)
43
- * Reference: https://github.com/bitcoin/bitcoin/blob/v25.1/src/rpc/rawtransaction_util.cpp#L49
44
- * */
45
- exports.MAX_BIP125_RBF_SEQUENCE = 0xffffffff - 2;
46
- function updateInputsWithDescriptors(psbt, descriptors) {
47
- if (psbt.txInputs.length !== descriptors.length) {
48
- throw new Error(`Input count mismatch (psbt=${psbt.txInputs.length}, descriptors=${descriptors.length})`);
49
- }
50
- const wrappedPsbt = (0, wrap_1.toWrappedPsbt)(psbt);
51
- for (const [inputIndex, descriptor] of descriptors.entries()) {
52
- (0, assertSatisfiable_1.assertSatisfiable)(psbt, inputIndex, descriptor);
53
- wrappedPsbt.updateInputWithDescriptor(inputIndex, descriptor);
54
- }
55
- const unwrappedPsbt = (0, wrap_1.toUtxoPsbt)(wrappedPsbt, psbt.network);
56
- for (const inputIndex in psbt.txInputs) {
57
- psbt.data.inputs[inputIndex] = unwrappedPsbt.data.inputs[inputIndex];
58
- }
59
- }
60
- function updateOutputsWithDescriptors(psbt, descriptors) {
61
- const wrappedPsbt = (0, wrap_1.toWrappedPsbt)(psbt);
62
- for (const [outputIndex, { descriptor }] of descriptors.entries()) {
63
- if (descriptor) {
64
- wrappedPsbt.updateOutputWithDescriptor(outputIndex, descriptor);
65
- }
66
- }
67
- const unwrappedPsbt = (0, wrap_1.toUtxoPsbt)(wrappedPsbt, psbt.network);
68
- for (const outputIndex in psbt.txOutputs) {
69
- psbt.data.outputs[outputIndex] = unwrappedPsbt.data.outputs[outputIndex];
70
- }
71
- }
72
- function createPsbt(params, inputs, outputs) {
73
- const psbt = utxolib.bitgo.UtxoPsbt.createPsbt({ network: params.network });
74
- psbt.setVersion(params.version ?? 2);
75
- psbt.setLocktime(params.locktime ?? 0);
76
- psbt.addInputs(inputs.map((i) => ({ ...i, sequence: i.sequence ?? params.sequence ?? exports.MAX_BIP125_RBF_SEQUENCE })));
77
- psbt.addOutputs(outputs);
78
- updateInputsWithDescriptors(psbt, inputs.map((i) => i.descriptor));
79
- updateOutputsWithDescriptors(psbt, outputs);
80
- return psbt;
81
- }
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL3BzYnQvY3JlYXRlUHNidC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzREEsZ0NBZ0JDO0FBdEVELDhEQUFnRDtBQU1oRCxpQ0FBbUQ7QUFDbkQsMkRBQXdEO0FBRXhEOzs7S0FHSztBQUNRLFFBQUEsdUJBQXVCLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQztBQUV0RCxTQUFTLDJCQUEyQixDQUFDLElBQTRCLEVBQUUsV0FBeUI7SUFDMUYsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLGlCQUFpQixXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBQSxvQkFBYSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUM3RCxJQUFBLHFDQUFpQixFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEQsV0FBVyxDQUFDLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsTUFBTSxhQUFhLEdBQUcsSUFBQSxpQkFBVSxFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUQsS0FBSyxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkUsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLDRCQUE0QixDQUFDLElBQTRCLEVBQUUsV0FBd0M7SUFDMUcsTUFBTSxXQUFXLEdBQUcsSUFBQSxvQkFBYSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDbEUsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLFdBQVcsQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLGFBQWEsR0FBRyxJQUFBLGlCQUFVLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RCxLQUFLLE1BQU0sV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzRSxDQUFDO0FBQ0gsQ0FBQztBQWFELFNBQWdCLFVBQVUsQ0FDeEIsTUFBa0IsRUFDbEIsTUFBMkMsRUFDM0MsT0FBb0M7SUFFcEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSwrQkFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xILElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekIsMkJBQTJCLENBQ3pCLElBQUksRUFDSixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQ2hDLENBQUM7SUFDRiw0QkFBNEIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5cbmltcG9ydCB7IERlcml2ZWREZXNjcmlwdG9yV2FsbGV0T3V0cHV0LCBXaXRoT3B0RGVzY3JpcHRvciB9IGZyb20gJy4uL091dHB1dCc7XG5pbXBvcnQgeyBPdXRwdXQgfSBmcm9tICcuLi8uLi9PdXRwdXQnO1xuXG5pbXBvcnQgeyB0b1V0eG9Qc2J0LCB0b1dyYXBwZWRQc2J0IH0gZnJvbSAnLi93cmFwJztcbmltcG9ydCB7IGFzc2VydFNhdGlzZmlhYmxlIH0gZnJvbSAnLi9hc3NlcnRTYXRpc2ZpYWJsZSc7XG5cbi8qKlxuICogTm9uLUZpbmFsIChSZXBsYWNlYWJsZSlcbiAqIFJlZmVyZW5jZTogaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYml0Y29pbi9ibG9iL3YyNS4xL3NyYy9ycGMvcmF3dHJhbnNhY3Rpb25fdXRpbC5jcHAjTDQ5XG4gKiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9CSVAxMjVfUkJGX1NFUVVFTkNFID0gMHhmZmZmZmZmZiAtIDI7XG5cbmZ1bmN0aW9uIHVwZGF0ZUlucHV0c1dpdGhEZXNjcmlwdG9ycyhwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0LCBkZXNjcmlwdG9yczogRGVzY3JpcHRvcltdKSB7XG4gIGlmIChwc2J0LnR4SW5wdXRzLmxlbmd0aCAhPT0gZGVzY3JpcHRvcnMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnB1dCBjb3VudCBtaXNtYXRjaCAocHNidD0ke3BzYnQudHhJbnB1dHMubGVuZ3RofSwgZGVzY3JpcHRvcnM9JHtkZXNjcmlwdG9ycy5sZW5ndGh9KWApO1xuICB9XG4gIGNvbnN0IHdyYXBwZWRQc2J0ID0gdG9XcmFwcGVkUHNidChwc2J0KTtcbiAgZm9yIChjb25zdCBbaW5wdXRJbmRleCwgZGVzY3JpcHRvcl0gb2YgZGVzY3JpcHRvcnMuZW50cmllcygpKSB7XG4gICAgYXNzZXJ0U2F0aXNmaWFibGUocHNidCwgaW5wdXRJbmRleCwgZGVzY3JpcHRvcik7XG4gICAgd3JhcHBlZFBzYnQudXBkYXRlSW5wdXRXaXRoRGVzY3JpcHRvcihpbnB1dEluZGV4LCBkZXNjcmlwdG9yKTtcbiAgfVxuICBjb25zdCB1bndyYXBwZWRQc2J0ID0gdG9VdHhvUHNidCh3cmFwcGVkUHNidCwgcHNidC5uZXR3b3JrKTtcbiAgZm9yIChjb25zdCBpbnB1dEluZGV4IGluIHBzYnQudHhJbnB1dHMpIHtcbiAgICBwc2J0LmRhdGEuaW5wdXRzW2lucHV0SW5kZXhdID0gdW53cmFwcGVkUHNidC5kYXRhLmlucHV0c1tpbnB1dEluZGV4XTtcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVPdXRwdXRzV2l0aERlc2NyaXB0b3JzKHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsIGRlc2NyaXB0b3JzOiBXaXRoT3B0RGVzY3JpcHRvcjxPdXRwdXQ+W10pIHtcbiAgY29uc3Qgd3JhcHBlZFBzYnQgPSB0b1dyYXBwZWRQc2J0KHBzYnQpO1xuICBmb3IgKGNvbnN0IFtvdXRwdXRJbmRleCwgeyBkZXNjcmlwdG9yIH1dIG9mIGRlc2NyaXB0b3JzLmVudHJpZXMoKSkge1xuICAgIGlmIChkZXNjcmlwdG9yKSB7XG4gICAgICB3cmFwcGVkUHNidC51cGRhdGVPdXRwdXRXaXRoRGVzY3JpcHRvcihvdXRwdXRJbmRleCwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG4gIGNvbnN0IHVud3JhcHBlZFBzYnQgPSB0b1V0eG9Qc2J0KHdyYXBwZWRQc2J0LCBwc2J0Lm5ldHdvcmspO1xuICBmb3IgKGNvbnN0IG91dHB1dEluZGV4IGluIHBzYnQudHhPdXRwdXRzKSB7XG4gICAgcHNidC5kYXRhLm91dHB1dHNbb3V0cHV0SW5kZXhdID0gdW53cmFwcGVkUHNidC5kYXRhLm91dHB1dHNbb3V0cHV0SW5kZXhdO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFBzYnRQYXJhbXMgPSB7XG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29yaztcbiAgdmVyc2lvbj86IG51bWJlcjtcbiAgbG9ja3RpbWU/OiBudW1iZXI7XG4gIHNlcXVlbmNlPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRGVyaXZlZERlc2NyaXB0b3JUcmFuc2FjdGlvbklucHV0ID0gRGVyaXZlZERlc2NyaXB0b3JXYWxsZXRPdXRwdXQgJiB7XG4gIHNlcXVlbmNlPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBzYnQoXG4gIHBhcmFtczogUHNidFBhcmFtcyxcbiAgaW5wdXRzOiBEZXJpdmVkRGVzY3JpcHRvclRyYW5zYWN0aW9uSW5wdXRbXSxcbiAgb3V0cHV0czogV2l0aE9wdERlc2NyaXB0b3I8T3V0cHV0PltdXG4pOiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0IHtcbiAgY29uc3QgcHNidCA9IHV0eG9saWIuYml0Z28uVXR4b1BzYnQuY3JlYXRlUHNidCh7IG5ldHdvcms6IHBhcmFtcy5uZXR3b3JrIH0pO1xuICBwc2J0LnNldFZlcnNpb24ocGFyYW1zLnZlcnNpb24gPz8gMik7XG4gIHBzYnQuc2V0TG9ja3RpbWUocGFyYW1zLmxvY2t0aW1lID8/IDApO1xuICBwc2J0LmFkZElucHV0cyhpbnB1dHMubWFwKChpKSA9PiAoeyAuLi5pLCBzZXF1ZW5jZTogaS5zZXF1ZW5jZSA/PyBwYXJhbXMuc2VxdWVuY2UgPz8gTUFYX0JJUDEyNV9SQkZfU0VRVUVOQ0UgfSkpKTtcbiAgcHNidC5hZGRPdXRwdXRzKG91dHB1dHMpO1xuICB1cGRhdGVJbnB1dHNXaXRoRGVzY3JpcHRvcnMoXG4gICAgcHNidCxcbiAgICBpbnB1dHMubWFwKChpKSA9PiBpLmRlc2NyaXB0b3IpXG4gICk7XG4gIHVwZGF0ZU91dHB1dHNXaXRoRGVzY3JpcHRvcnMocHNidCwgb3V0cHV0cyk7XG4gIHJldHVybiBwc2J0O1xufVxuIl19
@@ -1,98 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findDescriptorForInput = findDescriptorForInput;
4
- exports.findDescriptorForOutput = findDescriptorForOutput;
5
- /**
6
- * Find a definite descriptor in the descriptor map that matches the given script.
7
- * @param script
8
- * @param descriptorMap
9
- */
10
- function findDescriptorWithoutDerivation(script, descriptorMap) {
11
- for (const descriptor of descriptorMap.values()) {
12
- if (!descriptor.hasWildcard()) {
13
- if (Buffer.from(descriptor.scriptPubkey()).equals(script)) {
14
- return { descriptor, index: undefined };
15
- }
16
- }
17
- }
18
- return undefined;
19
- }
20
- /**
21
- * Find a descriptor in the descriptor map that matches the given script and derivation index.
22
- * @param script
23
- * @param index
24
- * @param descriptorMap
25
- * @returns DescriptorWithIndex if found, undefined otherwise
26
- */
27
- function findDescriptorForDerivationIndex(script, index, descriptorMap) {
28
- for (const descriptor of descriptorMap.values()) {
29
- if (descriptor.hasWildcard() && Buffer.from(descriptor.atDerivationIndex(index).scriptPubkey()).equals(script)) {
30
- return { descriptor, index };
31
- }
32
- }
33
- return undefined;
34
- }
35
- function getDerivationIndexFromPath(path) {
36
- const indexStr = path.split('/').pop();
37
- if (!indexStr) {
38
- throw new Error(`Invalid derivation path ${path}`);
39
- }
40
- const index = parseInt(indexStr, 10);
41
- if (index.toString() !== indexStr) {
42
- throw new Error(`Invalid derivation path ${path}`);
43
- }
44
- return index;
45
- }
46
- /**
47
- * Wrapper around findDescriptorForDerivationPath that tries multiple derivation paths.
48
- * @param script
49
- * @param derivationPaths
50
- * @param descriptorMap
51
- */
52
- function findDescriptorForAnyDerivationPath(script, derivationPaths, descriptorMap) {
53
- const derivationIndexSet = new Set(derivationPaths.map((p) => getDerivationIndexFromPath(p)));
54
- for (const index of [...derivationIndexSet]) {
55
- const desc = findDescriptorForDerivationIndex(script, index, descriptorMap);
56
- if (desc) {
57
- return desc;
58
- }
59
- }
60
- return undefined;
61
- }
62
- function getDerivationPaths(v) {
63
- if ('bip32Derivation' in v && v.bip32Derivation) {
64
- return v.bip32Derivation.map((v) => v.path);
65
- }
66
- if ('tapBip32Derivation' in v && v.tapBip32Derivation) {
67
- return v.tapBip32Derivation.map((v) => v.path).filter((v) => v !== '' && v !== 'm');
68
- }
69
- return undefined;
70
- }
71
- /**
72
- * @param input
73
- * @param descriptorMap
74
- * @returns DescriptorWithIndex for the input if found, undefined otherwise
75
- */
76
- function findDescriptorForInput(input, descriptorMap) {
77
- const script = input.witnessUtxo?.script;
78
- if (!script) {
79
- throw new Error('Missing script');
80
- }
81
- const derivationPaths = getDerivationPaths(input) ?? [];
82
- return (findDescriptorWithoutDerivation(script, descriptorMap) ??
83
- findDescriptorForAnyDerivationPath(script, derivationPaths, descriptorMap));
84
- }
85
- /**
86
- * @param script - the output script
87
- * @param output - the PSBT output
88
- * @param descriptorMap
89
- * @returns DescriptorWithIndex for the output if found, undefined otherwise
90
- */
91
- function findDescriptorForOutput(script, output, descriptorMap) {
92
- const derivationPaths = getDerivationPaths(output);
93
- return (findDescriptorWithoutDerivation(script, descriptorMap) ??
94
- (derivationPaths === undefined
95
- ? undefined
96
- : findDescriptorForAnyDerivationPath(script, derivationPaths, descriptorMap)));
97
- }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZERlc2NyaXB0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvcHNidC9maW5kRGVzY3JpcHRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpSEEsd0RBYUM7QUFRRCwwREFZQztBQWhJRDs7OztHQUlHO0FBQ0gsU0FBUywrQkFBK0IsQ0FDdEMsTUFBYyxFQUNkLGFBQTRCO0lBRTVCLEtBQUssTUFBTSxVQUFVLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQzlCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDMUMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUlEOzs7Ozs7R0FNRztBQUNILFNBQVMsZ0NBQWdDLENBQ3ZDLE1BQWMsRUFDZCxLQUFhLEVBQ2IsYUFBNEI7SUFFNUIsS0FBSyxNQUFNLFVBQVUsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUNoRCxJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQy9HLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsU0FBUywwQkFB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WUFDNUIsQ0FBQyxDQUFDLFNBQVM7WUFDWCxDQUFDLENBQUMsa0NBQWtDLENBQUMsTUFBTSxFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUNoRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5cblV0aWxpdGllcyBmb3IgbWFwcGluZyBiYWNrIGZyb20gUFNCVCBpbnB1dHMgdG8gZGVzY3JpcHRvcnMuXG5cblRoaXMgaXMgYSBzb21ld2hhdCBicnV0ZS1mb3JjZSBhdHRlbXB0IHRoYXQgcmVsaWVzIG9uIHRoZSBgYmlwMzJEZXJpdmF0aW9uYCBmaWVsZCB0byBiZSBzZXQuXG5cbkl0IHdpbGwgcHJvYmFibHkgb25seSB3b3JrIGNvcnJlY3RseSBpZiBhbGwgeHB1YnMgaW4gdGhlIGRlc2NyaXB0b3IgYXJlIGRlcml2YWJsZS5cblxuV2Ugc2hvdWxkIHRha2UgYSBsb29rIGF0IGEgbW9yZSByb2J1c3QgYW5kIHN0YW5kYXJkIGFwcHJvYWNoIGxpa2UgdGhpczogaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9wdWxsLzE1NDhcblxuICovXG5pbXBvcnQgeyBQc2J0SW5wdXQsIFBzYnRPdXRwdXQgfSBmcm9tICdiaXAxNzQvc3JjL2xpYi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS1taW5pc2NyaXB0JztcblxuaW1wb3J0IHsgRGVzY3JpcHRvck1hcCB9IGZyb20gJy4uL0Rlc2NyaXB0b3JNYXAnO1xuXG50eXBlIERlc2NyaXB0b3JXaXRob3V0SW5kZXggPSB7IGRlc2NyaXB0b3I6IERlc2NyaXB0b3I7IGluZGV4OiB1bmRlZmluZWQgfTtcblxuLyoqXG4gKiBGaW5kIGEgZGVmaW5pdGUgZGVzY3JpcHRvciBpbiB0aGUgZGVzY3JpcHRvciBtYXAgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbiBzY3JpcHQuXG4gKiBAcGFyYW0gc2NyaXB0XG4gKiBAcGFyYW0gZGVzY3JpcHRvck1hcFxuICovXG5mdW5jdGlvbiBmaW5kRGVzY3JpcHRvcldpdGhvdXREZXJpdmF0aW9uKFxuICBzY3JpcHQ6IEJ1ZmZlcixcbiAgZGVzY3JpcHRvck1hcDogRGVzY3JpcHRvck1hcFxuKTogRGVzY3JpcHRvcldpdGhvdXRJbmRleCB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgZGVzY3JpcHRvciBvZiBkZXNjcmlwdG9yTWFwLnZhbHVlcygpKSB7XG4gICAgaWYgKCFkZXNjcmlwdG9yLmhhc1dpbGRjYXJkKCkpIHtcbiAgICAgIGlmIChCdWZmZXIuZnJvbShkZXNjcmlwdG9yLnNjcmlwdFB1YmtleSgpKS5lcXVhbHMoc2NyaXB0KSkge1xuICAgICAgICByZXR1cm4geyBkZXNjcmlwdG9yLCBpbmRleDogdW5kZWZpbmVkIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxudHlwZSBEZXNjcmlwdG9yV2l0aEluZGV4ID0geyBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yOyBpbmRleDogbnVtYmVyIH07XG5cbi8qKlxuICogRmluZCBhIGRlc2NyaXB0b3IgaW4gdGhlIGRlc2NyaXB0b3IgbWFwIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gc2NyaXB0IGFuZCBkZXJpdmF0aW9uIGluZGV4LlxuICogQHBhcmFtIHNjcmlwdFxuICogQHBhcmFtIGluZGV4XG4gKiBAcGFyYW0gZGVzY3JpcHRvck1hcFxuICogQHJldHVybnMgRGVzY3JpcHRvcldpdGhJbmRleCBpZiBmb3VuZCwgdW5kZWZpbmVkIG90aGVyd2lzZVxuICovXG5mdW5jdGlvbiBmaW5kRGVzY3JpcHRvckZvckRlcml2YXRpb25JbmRleChcbiAgc2NyaXB0OiBCdWZmZXIsXG4gIGluZGV4OiBudW1iZXIsXG4gIGRlc2NyaXB0b3JNYXA6IERlc2NyaXB0b3JNYXBcbik6IERlc2NyaXB0b3JXaXRoSW5kZXggfCB1bmRlZmluZWQge1xuICBmb3IgKGNvbnN0IGRlc2NyaXB0b3Igb2YgZGVzY3JpcHRvck1hcC52YWx1ZXMoKSkge1xuICAgIGlmIChkZXNjcmlwdG9yLmhhc1dpbGRjYXJkKCkgJiYgQnVmZmVyLmZyb20oZGVzY3JpcHRvci5hdERlcml2YXRpb25JbmRleChpbmRleCkuc2NyaXB0UHVia2V5KCkpLmVxdWFscyhzY3JpcHQpKSB7XG4gICAgICByZXR1cm4geyBkZXNjcmlwdG9yLCBpbmRleCB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldERlcml2YXRpb25JbmRleEZyb21QYXRoKHBhdGg6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IGluZGV4U3RyID0gcGF0aC5zcGxpdCgnLycpLnBvcCgpO1xuICBpZiAoIWluZGV4U3RyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRlcml2YXRpb24gcGF0aCAke3BhdGh9YCk7XG4gIH1cbiAgY29uc3QgaW5kZXggPSBwYXJzZUludChpbmRleFN0ciwgMTApO1xuICBpZiAoaW5kZXgudG9TdHJpbmcoKSAhPT0gaW5kZXhTdHIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGVyaXZhdGlvbiBwYXRoICR7cGF0aH1gKTtcbiAgfVxuICByZXR1cm4gaW5kZXg7XG59XG5cbi8qKlxuICogV3JhcHBlciBhcm91bmQgZmluZERlc2NyaXB0b3JGb3JEZXJpdmF0aW9uUGF0aCB0aGF0IHRyaWVzIG11bHRpcGxlIGRlcml2YXRpb24gcGF0aHMuXG4gKiBAcGFyYW0gc2NyaXB0XG4gKiBAcGFyYW0gZGVyaXZhdGlvblBhdGhzXG4gKiBAcGFyYW0gZGVzY3JpcHRvck1hcFxuICovXG5mdW5jdGlvbiBmaW5kRGVzY3JpcHRvckZvckFueURlcml2YXRpb25QYXRoKFxuICBzY3JpcHQ6IEJ1ZmZlcixcbiAgZGVyaXZhdGlvblBhdGhzOiBzdHJpbmdbXSxcbiAgZGVzY3JpcHRvck1hcDogRGVzY3JpcHRvck1hcFxuKTogRGVzY3JpcHRvcldpdGhJbmRleCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGRlcml2YXRpb25JbmRleFNldCA9IG5ldyBTZXQoZGVyaXZhdGlvblBhdGhzLm1hcCgocCkgPT4gZ2V0RGVyaXZhdGlvbkluZGV4RnJvbVBhdGgocCkpKTtcbiAgZm9yIChjb25zdCBpbmRleCBvZiBbLi4uZGVyaXZhdGlvbkluZGV4U2V0XSkge1xuICAgIGNvbnN0IGRlc2MgPSBmaW5kRGVzY3JpcHRvckZvckRlcml2YXRpb25JbmRleChzY3JpcHQsIGluZGV4LCBkZXNjcmlwdG9yTWFwKTtcbiAgICBpZiAoZGVzYykge1xuICAgICAgcmV0dXJuIGRlc2M7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxudHlwZSBXaXRoQmlwMzJEZXJpdmF0aW9uID0geyBiaXAzMkRlcml2YXRpb24/OiB7IHBhdGg6IHN0cmluZyB9W10gfTtcbnR5cGUgV2l0aFRhcEJpcDMyRGVyaXZhdGlvbiA9IHsgdGFwQmlwMzJEZXJpdmF0aW9uPzogeyBwYXRoOiBzdHJpbmcgfVtdIH07XG5cbmZ1bmN0aW9uIGdldERlcml2YXRpb25QYXRocyh2OiBXaXRoQmlwMzJEZXJpdmF0aW9uIHwgV2l0aFRhcEJpcDMyRGVyaXZhdGlvbik6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCdiaXAzMkRlcml2YXRpb24nIGluIHYgJiYgdi5iaXAzMkRlcml2YXRpb24pIHtcbiAgICByZXR1cm4gdi5iaXAzMkRlcml2YXRpb24ubWFwKCh2KSA9PiB2LnBhdGgpO1xuICB9XG4gIGlmICgndGFwQmlwMzJEZXJpdmF0aW9uJyBpbiB2ICYmIHYudGFwQmlwMzJEZXJpdmF0aW9uKSB7XG4gICAgcmV0dXJuIHYudGFwQmlwMzJEZXJpdmF0aW9uLm1hcCgodikgPT4gdi5wYXRoKS5maWx0ZXIoKHYpID0+IHYgIT09ICcnICYmIHYgIT09ICdtJyk7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBAcGFyYW0gaW5wdXRcbiAqIEBwYXJhbSBkZXNjcmlwdG9yTWFwXG4gKiBAcmV0dXJucyBEZXNjcmlwdG9yV2l0aEluZGV4IGZvciB0aGUgaW5wdXQgaWYgZm91bmQsIHVuZGVmaW5lZCBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmREZXNjcmlwdG9yRm9ySW5wdXQoXG4gIGlucHV0OiBQc2J0SW5wdXQsXG4gIGRlc2NyaXB0b3JNYXA6IERlc2NyaXB0b3JNYXBcbik6IERlc2NyaXB0b3JXaXRoSW5kZXggfCBEZXNjcmlwdG9yV2l0aG91dEluZGV4IHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc2NyaXB0ID0gaW5wdXQud2l0bmVzc1V0eG8/LnNjcmlwdDtcbiAgaWYgKCFzY3JpcHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgc2NyaXB0Jyk7XG4gIH1cbiAgY29uc3QgZGVyaXZhdGlvblBhdGhzID0gZ2V0RGVyaXZhdGlvblBhdGhzKGlucHV0KSA/PyBbXTtcbiAgcmV0dXJuIChcbiAgICBmaW5kRGVzY3JpcHRvcldpdGhvdXREZXJpdmF0aW9uKHNjcmlwdCwgZGVzY3JpcHRvck1hcCkgPz9cbiAgICBmaW5kRGVzY3JpcHRvckZvckFueURlcml2YXRpb25QYXRoKHNjcmlwdCwgZGVyaXZhdGlvblBhdGhzLCBkZXNjcmlwdG9yTWFwKVxuICApO1xufVxuXG4vKipcbiAqIEBwYXJhbSBzY3JpcHQgLSB0aGUgb3V0cHV0IHNjcmlwdFxuICogQHBhcmFtIG91dHB1dCAtIHRoZSBQU0JUIG91dHB1dFxuICogQHBhcmFtIGRlc2NyaXB0b3JNYXBcbiAqIEByZXR1cm5zIERlc2NyaXB0b3JXaXRoSW5kZXggZm9yIHRoZSBvdXRwdXQgaWYgZm91bmQsIHVuZGVmaW5lZCBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmREZXNjcmlwdG9yRm9yT3V0cHV0KFxuICBzY3JpcHQ6IEJ1ZmZlcixcbiAgb3V0cHV0OiBQc2J0T3V0cHV0LFxuICBkZXNjcmlwdG9yTWFwOiBEZXNjcmlwdG9yTWFwXG4pOiBEZXNjcmlwdG9yV2l0aEluZGV4IHwgRGVzY3JpcHRvcldpdGhvdXRJbmRleCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGRlcml2YXRpb25QYXRocyA9IGdldERlcml2YXRpb25QYXRocyhvdXRwdXQpO1xuICByZXR1cm4gKFxuICAgIGZpbmREZXNjcmlwdG9yV2l0aG91dERlcml2YXRpb24oc2NyaXB0LCBkZXNjcmlwdG9yTWFwKSA/P1xuICAgIChkZXJpdmF0aW9uUGF0aHMgPT09IHVuZGVmaW5lZFxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogZmluZERlc2NyaXB0b3JGb3JBbnlEZXJpdmF0aW9uUGF0aChzY3JpcHQsIGRlcml2YXRpb25QYXRocywgZGVzY3JpcHRvck1hcCkpXG4gICk7XG59XG4iXX0=