@bitgo-beta/utxo-core 1.8.1-beta.61 → 1.8.1-beta.610

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
@@ -0,0 +1,145 @@
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
+ const assert = __importStar(require("node:assert/strict"));
37
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
38
+ const fromFixedScriptWallet_1 = require("../../src/descriptor/fromFixedScriptWallet");
39
+ function getRootWalletKeys(derivationPrefixes) {
40
+ // This is a fixed script wallet, so we use a fixed key triple.
41
+ // In practice, this would be derived from the wallet's root keys.
42
+ return new utxolib.bitgo.RootWalletKeys(utxolib.testutil.getKeyTriple('fixedScript'), derivationPrefixes);
43
+ }
44
+ const customPrefixes = [
45
+ undefined,
46
+ ['1/2', '1/2', '1/2'], // Custom prefixes for testing
47
+ ['1/2', '3/4', '5/6'], // Different custom prefixes
48
+ ];
49
+ const scriptTypes = utxolib.bitgo.outputScripts.scriptTypes2Of3;
50
+ const scope = ['external', 'internal'];
51
+ const index = [0, 1, 2];
52
+ /** Get the expected max weight to satisfy the descriptor */
53
+ function getExpectedMaxWeightToSatisfy(scriptType) {
54
+ switch (scriptType) {
55
+ case 'p2sh':
56
+ return 256;
57
+ case 'p2shP2wsh':
58
+ return 99;
59
+ case 'p2wsh':
60
+ return 64;
61
+ default:
62
+ throw new Error('unexpected script type');
63
+ }
64
+ }
65
+ /** Compute the total size of the input, including overhead */
66
+ function getTotalInputSize(vSize) {
67
+ const sizeOpPushData1 = 1;
68
+ const sizeOpPushData2 = 2;
69
+ return 32 /* txid */ + 4 /* vout */ + 4 /* nSequence */ + (vSize < 255 ? sizeOpPushData1 : sizeOpPushData2) + vSize;
70
+ }
71
+ /** Get the full expected vSize of the input including overhead */
72
+ function getExpectedVSize(scriptType) {
73
+ // https://github.com/BitGo/BitGoJS/blob/master/modules/unspents/docs/input-costs.md
74
+ switch (scriptType) {
75
+ case 'p2sh':
76
+ return 298;
77
+ case 'p2shP2wsh':
78
+ return 140;
79
+ case 'p2wsh':
80
+ return 105;
81
+ default:
82
+ throw new Error('unexpected script type');
83
+ }
84
+ }
85
+ function runTestGetDescriptorWithScriptType(customPrefix, scriptType, index, scope) {
86
+ describe(`customPrefix=${customPrefix}, scriptType=${scriptType}, index=${index}, scope=${scope}`, function () {
87
+ const rootWalletKeys = getRootWalletKeys(customPrefix);
88
+ const chainCode = scope === 'external'
89
+ ? utxolib.bitgo.getExternalChainCode(scriptType)
90
+ : utxolib.bitgo.getInternalChainCode(scriptType);
91
+ const derivedKeys = rootWalletKeys.deriveForChainAndIndex(chainCode, index);
92
+ const scriptUtxolib = utxolib.bitgo.outputScripts.createOutputScript2of3(derivedKeys.publicKeys, scriptType).scriptPubKey;
93
+ let descriptor;
94
+ before(function () {
95
+ descriptor = (0, fromFixedScriptWallet_1.getDescriptorForScriptType)(rootWalletKeys, scriptType, scope);
96
+ });
97
+ it('address should match descriptor', function () {
98
+ const scriptFromDescriptor = Buffer.from(descriptor.atDerivationIndex(index).scriptPubkey());
99
+ assert.deepStrictEqual(scriptUtxolib.toString('hex'), scriptFromDescriptor.toString('hex'));
100
+ });
101
+ it('should have expected weights', function () {
102
+ assert.ok(Number.isInteger(descriptor.maxWeightToSatisfy()));
103
+ const vSize = Math.ceil(descriptor.maxWeightToSatisfy() / 4);
104
+ assert.equal(vSize, getExpectedMaxWeightToSatisfy(scriptType));
105
+ assert.equal(getTotalInputSize(vSize), getExpectedVSize(scriptType));
106
+ });
107
+ });
108
+ }
109
+ function runTestGetDescriptorMap(customPrefix) {
110
+ describe(`getNamedDescriptorsForRootWalletKeys with customPrefix=${customPrefix}`, function () {
111
+ const rootWalletKeys = getRootWalletKeys(customPrefix);
112
+ const descriptorMap = (0, fromFixedScriptWallet_1.getNamedDescriptorsForRootWalletKeys)(rootWalletKeys);
113
+ it('should return a map with the correct number of entries', function () {
114
+ assert.equal(descriptorMap.size, scriptTypes.length * scope.length);
115
+ });
116
+ scriptTypes.forEach((scriptType) => {
117
+ scope.forEach((s) => {
118
+ const key = `${scriptType}/${s}`;
119
+ it(`should have a correct descriptor for ${key}`, function () {
120
+ const descriptorFromMap = descriptorMap.get(key);
121
+ if (scriptType === 'p2tr' || scriptType === 'p2trMusig2') {
122
+ assert.equal(descriptorFromMap, null, `Descriptor for ${key} should be null`);
123
+ return;
124
+ }
125
+ assert.ok(descriptorFromMap, `Descriptor for ${key} should exist`);
126
+ const expectedDescriptor = (0, fromFixedScriptWallet_1.getDescriptorForScriptType)(rootWalletKeys, scriptType, s);
127
+ assert.equal(descriptorFromMap.toString(), expectedDescriptor.toString());
128
+ });
129
+ });
130
+ });
131
+ });
132
+ }
133
+ customPrefixes.forEach((customPrefix) => {
134
+ scriptTypes.forEach((scriptType) => {
135
+ index.forEach((index) => {
136
+ scope.forEach((scope) => {
137
+ if (scriptType !== 'p2tr' && scriptType !== 'p2trMusig2') {
138
+ runTestGetDescriptorWithScriptType(customPrefix, scriptType, index, scope);
139
+ }
140
+ });
141
+ });
142
+ });
143
+ runTestGetDescriptorMap(customPrefix);
144
+ });
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbUZpeGVkU2NyaXB0V2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC9kZXNjcmlwdG9yL2Zyb21GaXhlZFNjcmlwdFdhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJEQUE2QztBQUU3Qyw4REFBZ0Q7QUFHaEQsc0ZBR29EO0FBRXBELFNBQVMsaUJBQWlCLENBQUMsa0JBQWlEO0lBQzFFLCtEQUErRDtJQUMvRCxrRUFBa0U7SUFDbEUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUM7QUFDNUcsQ0FBQztBQUVELE1BQU0sY0FBYyxHQUFpRDtJQUNuRSxTQUFTO0lBQ1QsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLDhCQUE4QjtJQUNyRCxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsNEJBQTRCO0NBQ3BELENBQUM7QUFDRixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUM7QUFDaEUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFDaEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRXhCLDREQUE0RDtBQUM1RCxTQUFTLDZCQUE2QixDQUFDLFVBQXNEO0lBQzNGLFFBQVEsVUFBVSxFQUFFLENBQUM7UUFDbkIsS0FBSyxNQUFNO1lBQ1QsT0FBTyxHQUFHLENBQUM7UUFDYixLQUFLLFdBQVc7WUFDZCxPQUFPLEVBQUUsQ0FBQztRQUNaLEtBQUssT0FBTztZQUNWLE9BQU8sRUFBRSxDQUFDO1FBQ1o7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RSxDQUFDLENBQUMsQ0FBQztvQkFDckYsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RSxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7SUFDdEMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQ2pDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN0QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksVUFBVSxLQUFLLE1BQU0sSUFBSSxVQUFVLEtBQUssWUFBWSxFQUFFLENBQUM7b0JBQ3pELGtDQUFrQyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUM3RSxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsdUJBQXVCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDeEMsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnbm9kZTphc3NlcnQvc3RyaWN0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbmltcG9ydCB7XG4gIGdldERlc2NyaXB0b3JGb3JTY3JpcHRUeXBlLFxuICBnZXROYW1lZERlc2NyaXB0b3JzRm9yUm9vdFdhbGxldEtleXMsXG59IGZyb20gJy4uLy4uL3NyYy9kZXNjcmlwdG9yL2Zyb21GaXhlZFNjcmlwdFdhbGxldCc7XG5cbmZ1bmN0aW9uIGdldFJvb3RXYWxsZXRLZXlzKGRlcml2YXRpb25QcmVmaXhlcz86IHV0eG9saWIuYml0Z28uVHJpcGxlPHN0cmluZz4pOiB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzIHtcbiAgLy8gVGhpcyBpcyBhIGZpeGVkIHNjcmlwdCB3YWxsZXQsIHNvIHdlIHVzZSBhIGZpeGVkIGtleSB0cmlwbGUuXG4gIC8vIEluIHByYWN0aWNlLCB0aGlzIHdvdWxkIGJlIGRlcml2ZWQgZnJvbSB0aGUgd2FsbGV0J3Mgcm9vdCBrZXlzLlxuICByZXR1cm4gbmV3IHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXModXR4b2xpYi50ZXN0dXRpbC5nZXRLZXlUcmlwbGUoJ2ZpeGVkU2NyaXB0JyksIGRlcml2YXRpb25QcmVmaXhlcyk7XG59XG5cbmNvbnN0IGN1c3RvbVByZWZpeGVzOiAodXR4b2xpYi5iaXRnby5UcmlwbGU8c3RyaW5nPiB8IHVuZGVmaW5lZClbXSA9IFtcbiAgdW5kZWZpbmVkLFxuICBbJzEvMicsICcxLzInLCAnMS8yJ10sIC8vIEN1c3RvbSBwcmVmaXhlcyBmb3IgdGVzdGluZ1xuICBbJzEvMicsICczLzQnLCAnNS82J10sIC8vIERpZmZlcmVudCBjdXN0b20gcHJlZml4ZXNcbl07XG5jb25zdCBzY3JpcHRUeXBlcyA9IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5zY3JpcHRUeXBlczJPZjM7XG5jb25zdCBzY29wZSA9IFsnZXh0ZXJuYWwnLCAnaW50ZXJuYWwnXSBhcyBjb25zdDtcbmNvbnN0IGluZGV4ID0gWzAsIDEsIDJdO1xuXG4vKiogR2V0IHRoZSBleHBlY3RlZCBtYXggd2VpZ2h0IHRvIHNhdGlzZnkgdGhlIGRlc2NyaXB0b3IgKi9cbmZ1bmN0aW9uIGdldEV4cGVjdGVkTWF4V2VpZ2h0VG9TYXRpc2Z5KHNjcmlwdFR5cGU6IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5TY3JpcHRUeXBlMk9mMykge1xuICBzd2l0Y2ggKHNjcmlwdFR5cGUpIHtcbiAgICBjYXNlICdwMnNoJzpcbiAgICAgIHJldHVybiAyNTY7XG4gICAgY2FzZSAncDJzaFAyd3NoJzpcbiAgICAgIHJldHVybiA5OTtcbiAgICBjYXNlICdwMndzaCc6XG4gICAgICByZXR1cm4gNjQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBzY3JpcHQgdHlwZScpO1xuICB9XG59XG5cbi8qKiBDb21wdXRlIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBpbnB1dCwgaW5jbHVkaW5nIG92ZXJoZWFkICovXG5mdW5jdGlvbiBnZXRUb3RhbElucHV0U2l6ZSh2U2l6ZTogbnVtYmVyKSB7XG4gIGNvbnN0IHNpemVPcFB1c2hEYXRhMSA9IDE7XG4gIGNvbnN0IHNpemVPcFB1c2hEYXRhMiA9IDI7XG4gIHJldHVybiAzMiAvKiB0eGlkICovICsgNCAvKiB2b3V0ICovICsgNCAvKiBuU2VxdWVuY2UgKi8gKyAodlNpemUgPCAyNTUgPyBzaXplT3BQdXNoRGF0YTEgOiBzaXplT3BQdXNoRGF0YTIpICsgdlNpemU7XG59XG5cbi8qKiBHZXQgdGhlIGZ1bGwgZXhwZWN0ZWQgdlNpemUgb2YgdGhlIGlucHV0IGluY2x1ZGluZyBvdmVyaGVhZCAqL1xuZnVuY3Rpb24gZ2V0RXhwZWN0ZWRWU2l6ZShzY3JpcHRUeXBlOiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjMpIHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0JpdEdvL0JpdEdvSlMvYmxvYi9tYXN0ZXIvbW9kdWxlcy91bnNwZW50cy9kb2NzL2lucHV0LWNvc3RzLm1kXG4gIHN3aXRjaCAoc2NyaXB0VHlwZSkge1xuICAgIGNhc2UgJ3Ayc2gnOlxuICAgICAgcmV0dXJuIDI5ODtcbiAgICBjYXNlICdwMnNoUDJ3c2gnOlxuICAgICAgcmV0dXJuIDE0MDtcbiAgICBjYXNlICdwMndzaCc6XG4gICAgICByZXR1cm4gMTA1O1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgc2NyaXB0IHR5cGUnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBydW5UZXN0R2V0RGVzY3JpcHRvcldpdGhTY3JpcHRUeXBlKFxuICBjdXN0b21QcmVmaXg6IHV0eG9saWIuYml0Z28uVHJpcGxlPHN0cmluZz4gfCB1bmRlZmluZWQsXG4gIHNjcmlwdFR5cGU6ICdwMnNoJyB8ICdwMnNoUDJ3c2gnIHwgJ3Ayd3NoJyxcbiAgaW5kZXg6IG51bWJlcixcbiAgc2NvcGU6ICdpbnRlcm5hbCcgfCAnZXh0ZXJuYWwnXG4pIHtcbiAgZGVzY3JpYmUoYGN1c3RvbVByZWZpeD0ke2N1c3RvbVByZWZpeH0sIHNjcmlwdFR5cGU9JHtzY3JpcHRUeXBlfSwgaW5kZXg9JHtpbmRleH0sIHNjb3BlPSR7c2NvcGV9YCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJvb3RXYWxsZXRLZXlzID0gZ2V0Um9vdFdhbGxldEtleXMoY3VzdG9tUHJlZml4KTtcbiAgICBjb25zdCBjaGFpbkNvZGUgPVxuICAgICAgc2NvcGUgPT09ICdleHRlcm5hbCdcbiAgICAgICAgPyB1dHhvbGliLmJpdGdvLmdldEV4dGVybmFsQ2hhaW5Db2RlKHNjcmlwdFR5cGUpXG4gICAgICAgIDogdXR4b2xpYi5iaXRnby5nZXRJbnRlcm5hbENoYWluQ29kZShzY3JpcHRUeXBlKTtcbiAgICBjb25zdCBkZXJpdmVkS2V5cyA9IHJvb3RXYWxsZXRLZXlzLmRlcml2ZUZvckNoYWluQW5kSW5kZXgoY2hhaW5Db2RlLCBpbmRleCk7XG4gICAgY29uc3Qgc2NyaXB0VXR4b2xpYiA9IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5jcmVhdGVPdXRwdXRTY3JpcHQyb2YzKFxuICAgICAgZGVyaXZlZEtleXMucHVibGljS2V5cyxcbiAgICAgIHNjcmlwdFR5cGVcbiAgICApLnNjcmlwdFB1YktleTtcblxuICAgIGxldCBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yO1xuXG4gICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlc2NyaXB0b3IgPSBnZXREZXNjcmlwdG9yRm9yU2NyaXB0VHlwZShyb290V2FsbGV0S2V5cywgc2NyaXB0VHlwZSwgc2NvcGUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FkZHJlc3Mgc2hvdWxkIG1hdGNoIGRlc2NyaXB0b3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzY3JpcHRGcm9tRGVzY3JpcHRvciA9IEJ1ZmZlci5mcm9tKGRlc2NyaXB0b3IuYXREZXJpdmF0aW9uSW5kZXgoaW5kZXgpLnNjcmlwdFB1YmtleSgpKTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2NyaXB0VXR4b2xpYi50b1N0cmluZygnaGV4JyksIHNjcmlwdEZyb21EZXNjcmlwdG9yLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhdmUgZXhwZWN0ZWQgd2VpZ2h0cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5vayhOdW1iZXIuaXNJbnRlZ2VyKGRlc2NyaXB0b3IubWF4V2VpZ2h0VG9TYXRpc2Z5KCkpKTtcbiAgICAgIGNvbnN0IHZTaXplID0gTWF0aC5jZWlsKGRlc2NyaXB0b3IubWF4V2VpZ2h0VG9TYXRpc2Z5KCkgLyA0KTtcbiAgICAgIGFzc2VydC5lcXVhbCh2U2l6ZSwgZ2V0RXhwZWN0ZWRNYXhXZWlnaHRUb1NhdGlzZnkoc2NyaXB0VHlwZSkpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGdldFRvdGFsSW5wdXRTaXplKHZTaXplKSwgZ2V0RXhwZWN0ZWRWU2l6ZShzY3JpcHRUeXBlKSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBydW5UZXN0R2V0RGVzY3JpcHRvck1hcChjdXN0b21QcmVmaXg6IHV0eG9saWIuYml0Z28uVHJpcGxlPHN0cmluZz4gfCB1bmRlZmluZWQpIHtcbiAgZGVzY3JpYmUoYGdldE5hbWVkRGVzY3JpcHRvcnNGb3JSb290V2FsbGV0S2V5cyB3aXRoIGN1c3RvbVByZWZpeD0ke2N1c3RvbVByZWZpeH1gLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgcm9vdFdhbGxldEtleXMgPSBnZXRSb290V2FsbGV0S2V5cyhjdXN0b21QcmVmaXgpO1xuICAgIGNvbnN0IGRlc2NyaXB0b3JNYXAgPSBnZXROYW1lZERlc2NyaXB0b3JzRm9yUm9vdFdhbGxldEtleXMocm9vdFdhbGxldEtleXMpO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBtYXAgd2l0aCB0aGUgY29ycmVjdCBudW1iZXIgb2YgZW50cmllcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5lcXVhbChkZXNjcmlwdG9yTWFwLnNpemUsIHNjcmlwdFR5cGVzLmxlbmd0aCAqIHNjb3BlLmxlbmd0aCk7XG4gICAgfSk7XG5cbiAgICBzY3JpcHRUeXBlcy5mb3JFYWNoKChzY3JpcHRUeXBlKSA9PiB7XG4gICAgICBzY29wZS5mb3JFYWNoKChzKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGAke3NjcmlwdFR5cGV9LyR7c31gO1xuICAgICAgICBpdChgc2hvdWxkIGhhdmUgYSBjb3JyZWN0IGRlc2NyaXB0b3IgZm9yICR7a2V5fWAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBkZXNjcmlwdG9yRnJvbU1hcCA9IGRlc2NyaXB0b3JNYXAuZ2V0KGtleSk7XG4gICAgICAgICAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnRyJyB8fCBzY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMicpIHtcbiAgICAgICAgICAgIGFzc2VydC5lcXVhbChkZXNjcmlwdG9yRnJvbU1hcCwgbnVsbCwgYERlc2NyaXB0b3IgZm9yICR7a2V5fSBzaG91bGQgYmUgbnVsbGApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhc3NlcnQub2soZGVzY3JpcHRvckZyb21NYXAsIGBEZXNjcmlwdG9yIGZvciAke2tleX0gc2hvdWxkIGV4aXN0YCk7XG4gICAgICAgICAgY29uc3QgZXhwZWN0ZWREZXNjcmlwdG9yID0gZ2V0RGVzY3JpcHRvckZvclNjcmlwdFR5cGUocm9vdFdhbGxldEtleXMsIHNjcmlwdFR5cGUsIHMpO1xuICAgICAgICAgIGFzc2VydC5lcXVhbChkZXNjcmlwdG9yRnJvbU1hcC50b1N0cmluZygpLCBleHBlY3RlZERlc2NyaXB0b3IudG9TdHJpbmcoKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5jdXN0b21QcmVmaXhlcy5mb3JFYWNoKChjdXN0b21QcmVmaXgpID0+IHtcbiAgc2NyaXB0VHlwZXMuZm9yRWFjaCgoc2NyaXB0VHlwZSkgPT4ge1xuICAgIGluZGV4LmZvckVhY2goKGluZGV4KSA9PiB7XG4gICAgICBzY29wZS5mb3JFYWNoKChzY29wZSkgPT4ge1xuICAgICAgICBpZiAoc2NyaXB0VHlwZSAhPT0gJ3AydHInICYmIHNjcmlwdFR5cGUgIT09ICdwMnRyTXVzaWcyJykge1xuICAgICAgICAgIHJ1blRlc3RHZXREZXNjcmlwdG9yV2l0aFNjcmlwdFR5cGUoY3VzdG9tUHJlZml4LCBzY3JpcHRUeXBlLCBpbmRleCwgc2NvcGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcnVuVGVzdEdldERlc2NyaXB0b3JNYXAoY3VzdG9tUHJlZml4KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PatternMatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternMatcher.d.ts","sourceRoot":"","sources":["../../../../../test/descriptor/parse/PatternMatcher.ts"],"names":[],"mappings":""}
@@ -0,0 +1,120 @@
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
+ const assert_1 = __importDefault(require("assert"));
7
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
8
+ const testutil_1 = require("../../../src/testutil");
9
+ const src_1 = require("../../../src");
10
+ const PatternMatcher_1 = require("../../../src/descriptor/parse/PatternMatcher");
11
+ function key32(seed) {
12
+ // return x-only public key from seed
13
+ return (0, src_1.toXOnlyPublicKey)((0, testutil_1.getKey)(seed).publicKey);
14
+ }
15
+ function getUnspendableKey() {
16
+ return '50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0';
17
+ }
18
+ function pk(b) {
19
+ return { 'v:pk': b.toString('hex') };
20
+ }
21
+ function sortedKeys(keys) {
22
+ return [...keys].sort((a, b) => a.compare(b));
23
+ }
24
+ function multiArgs(threshold, keys) {
25
+ return [threshold, ...sortedKeys(keys).map((k) => k.toString('hex'))];
26
+ }
27
+ function taprootScriptOnlyFromAst(n) {
28
+ return wasm_utxo_1.Descriptor.fromString(wasm_utxo_1.ast.formatNode({ tr: [getUnspendableKey(), n] }), 'definite');
29
+ }
30
+ class StakingDescriptorBuilder {
31
+ constructor(userKey, providerKeys, guardianKeys, guardianThreshold, stakingTimeLock) {
32
+ this.userKey = userKey;
33
+ this.providerKeys = providerKeys;
34
+ this.guardianKeys = guardianKeys;
35
+ this.guardianThreshold = guardianThreshold;
36
+ this.stakingTimeLock = stakingTimeLock;
37
+ }
38
+ getTimelockMiniscriptNode() {
39
+ return { and_v: [pk(this.userKey), { older: this.stakingTimeLock }] };
40
+ }
41
+ getWithdrawalMiniscriptNode() {
42
+ return { and_v: [pk(this.userKey), { multi_a: multiArgs(this.guardianThreshold, this.guardianKeys) }] };
43
+ }
44
+ getPenaltyMiniscriptNode() {
45
+ return {
46
+ and_v: [
47
+ {
48
+ and_v: [
49
+ pk(this.userKey),
50
+ this.providerKeys.length === 1
51
+ ? { 'v:pk': this.providerKeys[0].toString('hex') }
52
+ : { 'v:multi_a': multiArgs(1, this.providerKeys) },
53
+ ],
54
+ },
55
+ { multi_a: multiArgs(this.guardianThreshold, this.guardianKeys) },
56
+ ],
57
+ };
58
+ }
59
+ getStakingDescriptor() {
60
+ return taprootScriptOnlyFromAst([
61
+ this.getPenaltyMiniscriptNode(),
62
+ [this.getWithdrawalMiniscriptNode(), this.getTimelockMiniscriptNode()],
63
+ ]);
64
+ }
65
+ }
66
+ // Inverse function to parse the descriptor
67
+ function parseStakingDescriptor(descriptor) {
68
+ const pattern = {
69
+ tr: [getUnspendableKey(), [{ $var: 'penaltyNode' }, [{ $var: 'withdrawalNode' }, { $var: 'timelockNode' }]]],
70
+ };
71
+ const matcher = new PatternMatcher_1.PatternMatcher();
72
+ const descriptorNode = wasm_utxo_1.ast.fromDescriptor(descriptor);
73
+ const result = matcher.match(descriptorNode, pattern);
74
+ if (!result) {
75
+ return null;
76
+ }
77
+ return {
78
+ penaltyNode: result.penaltyNode,
79
+ withdrawalNode: result.withdrawalNode,
80
+ timelockNode: result.timelockNode,
81
+ };
82
+ }
83
+ describe('PatternMatcher', function () {
84
+ it('should match basic object', function () {
85
+ const pattern = { a: { $var: 'x' }, b: 'hello' };
86
+ const node = { a: 123, b: 'hello' };
87
+ const vars = new PatternMatcher_1.PatternMatcher().match(node, pattern);
88
+ assert_1.default.deepStrictEqual(vars, { x: 123 });
89
+ });
90
+ it('should fail on non-matching object', function () {
91
+ const pattern = { a: { $var: 'x' }, b: 'world' };
92
+ const node = { a: 123, b: 'hello' };
93
+ const vars = new PatternMatcher_1.PatternMatcher().match(node, pattern);
94
+ assert_1.default.strictEqual(vars, null);
95
+ });
96
+ it('should match with repeated var', function () {
97
+ const pattern = { a: { $var: 'x' }, b: { $var: 'x' } };
98
+ const node = { a: 123, b: 123 };
99
+ const vars = new PatternMatcher_1.PatternMatcher().match(node, pattern);
100
+ assert_1.default.deepStrictEqual(vars, { x: 123 });
101
+ });
102
+ it('should fail with non-matching repeated var', function () {
103
+ const pattern = { a: { $var: 'x' }, b: { $var: 'x' } };
104
+ const node = { a: 123, b: 456 };
105
+ const vars = new PatternMatcher_1.PatternMatcher().match(node, pattern);
106
+ assert_1.default.strictEqual(vars, null);
107
+ });
108
+ it('should parse staking descriptor', function () {
109
+ const builder = new StakingDescriptorBuilder(key32('user'), [key32('provider1')], [key32('guardian1'), key32('guardian2')], 2, 100);
110
+ const descriptor = builder.getStakingDescriptor();
111
+ const parsed = parseStakingDescriptor(descriptor);
112
+ assert_1.default.notStrictEqual(parsed, null);
113
+ if (parsed) {
114
+ assert_1.default.deepStrictEqual(parsed.penaltyNode, builder.getPenaltyMiniscriptNode());
115
+ assert_1.default.deepStrictEqual(parsed.withdrawalNode, builder.getWithdrawalMiniscriptNode());
116
+ assert_1.default.deepStrictEqual(parsed.timelockNode, builder.getTimelockMiniscriptNode());
117
+ }
118
+ });
119
+ });
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0dGVybk1hdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L2Rlc2NyaXB0b3IvcGFyc2UvUGF0dGVybk1hdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsZ0RBQW1EO0FBRW5ELG9EQUErQztBQUMvQyxzQ0FBZ0Q7QUFDaEQsaUZBQXVGO0FBRXZGLFNBQVMsS0FBSyxDQUFDLElBQVk7SUFDekIscUNBQXFDO0lBQ3JDLE9BQU8sSUFBQSxzQkFBZ0IsRUFBQyxJQUFBLGlCQUFNLEVBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUVELFNBQVMsaUJBQWlCO0lBQ3hCLE9BQU8sa0VBQWtFLENBQUM7QUFDNUUsQ0FBQztBQUVELFNBQVMsRUFBRSxDQUFDLENBQVM7SUFDbkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDdkMsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQWM7SUFDaEMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxTQUFpQixFQUFFLElBQWM7SUFDbEQsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLENBQWtCO0lBQ2xELE9BQU8sc0JBQVUsQ0FBQyxVQUFVLENBQUMsZUFBRyxD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LE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLGdCQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQztZQUNyRixnQkFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUM7UUFDbkYsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IERlc2NyaXB0b3IsIGFzdCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBnZXRLZXkgfSBmcm9tICcuLi8uLi8uLi9zcmMvdGVzdHV0aWwnO1xuaW1wb3J0IHsgdG9YT25seVB1YmxpY0tleSB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBQYXR0ZXJuTWF0Y2hlciwgUGF0dGVybiB9IGZyb20gJy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL3BhcnNlL1BhdHRlcm5NYXRjaGVyJztcblxuZnVuY3Rpb24ga2V5MzIoc2VlZDogc3RyaW5nKTogQnVmZmVyIHtcbiAgLy8gcmV0dXJuIHgtb25seSBwdWJsaWMga2V5IGZyb20gc2VlZFxuICByZXR1cm4gdG9YT25seVB1YmxpY0tleShnZXRLZXkoc2VlZCkucHVibGljS2V5KTtcbn1cblxuZnVuY3Rpb24gZ2V0VW5zcGVuZGFibGVLZXkoKTogc3RyaW5nIHtcbiAgcmV0dXJuICc1MDkyOWI3NGMxYTA0OTU0Yjc4YjRiNjAzNWU5N2E1ZTA3OGE1YTBmMjhlYzk2ZDU0N2JmZWU5YWNlODAzYWMwJztcbn1cblxuZnVuY3Rpb24gcGsoYjogQnVmZmVyKTogYXN0Lk1pbmlzY3JpcHROb2RlIHtcbiAgcmV0dXJuIHsgJ3Y6cGsnOiBiLnRvU3RyaW5nKCdoZXgnKSB9O1xufVxuXG5mdW5jdGlvbiBzb3J0ZWRLZXlzKGtleXM6IEJ1ZmZlcltdKTogQnVmZmVyW10ge1xuICByZXR1cm4gWy4uLmtleXNdLnNvcnQoKGEsIGIpID0+IGEuY29tcGFyZShiKSk7XG59XG5cbmZ1bmN0aW9uIG11bHRpQXJncyh0aHJlc2hvbGQ6IG51bWJlciwga2V5czogQnVmZmVyW10pOiBbbnVtYmVyLCAuLi5zdHJpbmdbXV0ge1xuICByZXR1cm4gW3RocmVzaG9sZCwgLi4uc29ydGVkS2V5cyhrZXlzKS5tYXAoKGspID0+IGsudG9TdHJpbmcoJ2hleCcpKV07XG59XG5cbmZ1bmN0aW9uIHRhcHJvb3RTY3JpcHRPbmx5RnJvbUFzdChuOiBhc3QuVGFwVHJlZU5vZGUpOiBEZXNjcmlwdG9yIHtcbiAgcmV0dXJuIERlc2NyaXB0b3IuZnJvbVN0cmluZyhhc3QuZm9ybWF0Tm9kZSh7IHRyOiBbZ2V0VW5zcGVuZGFibGVLZXkoKSwgbl0gfSksICdkZWZpbml0ZScpO1xufVxuXG5jbGFzcyBTdGFraW5nRGVzY3JpcHRvckJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdXNlcktleTogQnVmZmVyLFxuICAgIHB1YmxpYyBwcm92aWRlcktleXM6IEJ1ZmZlcltdLFxuICAgIHB1YmxpYyBndWFyZGlhbktleXM6IEJ1ZmZlcltdLFxuICAgIHB1YmxpYyBndWFyZGlhblRocmVzaG9sZDogbnVtYmVyLFxuICAgIHB1YmxpYyBzdGFraW5nVGltZUxvY2s6IG51bWJlclxuICApIHt9XG5cbiAgZ2V0VGltZWxvY2tNaW5pc2NyaXB0Tm9kZSgpOiBhc3QuTWluaXNjcmlwdE5vZGUge1xuICAgIHJldHVybiB7IGFuZF92OiBbcGsodGhpcy51c2VyS2V5KSwgeyBvbGRlcjogdGhpcy5zdGFraW5nVGltZUxvY2sgfV0gfTtcbiAgfVxuXG4gIGdldFdpdGhkcmF3YWxNaW5pc2NyaXB0Tm9kZSgpOiBhc3QuTWluaXNjcmlwdE5vZGUge1xuICAgIHJldHVybiB7IGFuZF92OiBbcGsodGhpcy51c2VyS2V5KSwgeyBtdWx0aV9hOiBtdWx0aUFyZ3ModGhpcy5ndWFyZGlhblRocmVzaG9sZCwgdGhpcy5ndWFyZGlhbktleXMpIH1dIH07XG4gIH1cblxuICBnZXRQZW5hbHR5TWluaXNjcmlwdE5vZGUoKTogYXN0Lk1pbmlzY3JpcHROb2RlIHtcbiAgICByZXR1cm4ge1xuICAgICAgYW5kX3Y6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFuZF92OiBbXG4gICAgICAgICAgICBwayh0aGlzLnVzZXJLZXkpLFxuICAgICAgICAgICAgdGhpcy5wcm92aWRlcktleXMubGVuZ3RoID09PSAxXG4gICAgICAgICAgICAgID8geyAndjpwayc6IHRoaXMucHJvdmlkZXJLZXlzWzBdLnRvU3RyaW5nKCdoZXgnKSB9XG4gICAgICAgICAgICAgIDogeyAndjptdWx0aV9hJzogbXVsdGlBcmdzKDEsIHRoaXMucHJvdmlkZXJLZXlzKSB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHsgbXVsdGlfYTogbXVsdGlBcmdzKHRoaXMuZ3VhcmRpYW5UaHJlc2hvbGQsIHRoaXMuZ3VhcmRpYW5LZXlzKSB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U3Rha2luZ0Rlc2NyaXB0b3IoKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIHRhcHJvb3RTY3JpcHRPbmx5RnJvbUFzdChbXG4gICAgICB0aGlzLmdldFBlbmFsdHlNaW5pc2NyaXB0Tm9kZSgpLFxuICAgICAgW3RoaXMuZ2V0V2l0aGRyYXdhbE1pbmlzY3JpcHROb2RlKCksIHRoaXMuZ2V0VGltZWxvY2tNaW5pc2NyaXB0Tm9kZSgpXSxcbiAgICBdKTtcbiAgfVxufVxuXG4vLyBJbnZlcnNlIGZ1bmN0aW9uIHRvIHBhcnNlIHRoZSBkZXNjcmlwdG9yXG5mdW5jdGlvbiBwYXJzZVN0YWtpbmdEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IERlc2NyaXB0b3IpOiB7XG4gIHBlbmFsdHlOb2RlOiBhc3QuTWluaXNjcmlwdE5vZGU7XG4gIHdpdGhkcmF3YWxOb2RlOiBhc3QuTWluaXNjcmlwdE5vZGU7XG4gIHRpbWVsb2NrTm9kZTogYXN0Lk1pbmlzY3JpcHROb2RlO1xufSB8IG51bGwge1xuICBjb25zdCBwYXR0ZXJuOiBQYXR0ZXJuID0ge1xuICAgIHRyOiBbZ2V0VW5zcGVuZGFibGVLZXkoKSwgW3sgJHZhcjogJ3BlbmFsdHlOb2RlJyB9LCBbeyAkdmFyOiAnd2l0aGRyYXdhbE5vZGUnIH0sIHsgJHZhcjogJ3RpbWVsb2NrTm9kZScgfV1dXSxcbiAgfTtcblxuICBjb25zdCBtYXRjaGVyID0gbmV3IFBhdHRlcm5NYXRjaGVyKCk7XG4gIGNvbnN0IGRlc2NyaXB0b3JOb2RlID0gYXN0LmZyb21EZXNjcmlwdG9yKGRlc2NyaXB0b3IpO1xuICBjb25zdCByZXN1bHQgPSBtYXRjaGVyLm1hdGNoKGRlc2NyaXB0b3JOb2RlLCBwYXR0ZXJuKTtcblxuICBpZiAoIXJlc3VsdCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwZW5hbHR5Tm9kZTogcmVzdWx0LnBlbmFsdHlOb2RlIGFzIGFzdC5NaW5pc2NyaXB0Tm9kZSxcbiAgICB3aXRoZHJhd2FsTm9kZTogcmVzdWx0LndpdGhkcmF3YWxOb2RlIGFzIGFzdC5NaW5pc2NyaXB0Tm9kZSxcbiAgICB0aW1lbG9ja05vZGU6IHJlc3VsdC50aW1lbG9ja05vZGUgYXMgYXN0Lk1pbmlzY3JpcHROb2RlLFxuICB9O1xufVxuXG5kZXNjcmliZSgnUGF0dGVybk1hdGNoZXInLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdzaG91bGQgbWF0Y2ggYmFzaWMgb2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBhdHRlcm4gPSB7IGE6IHsgJHZhcjogJ3gnIH0sIGI6ICdoZWxsbycgfTtcbiAgICBjb25zdCBub2RlID0geyBhOiAxMjMsIGI6ICdoZWxsbycgfTtcbiAgICBjb25zdCB2YXJzID0gbmV3IFBhdHRlcm5NYXRjaGVyKCkubWF0Y2gobm9kZSwgcGF0dGVybik7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh2YXJzLCB7IHg6IDEyMyB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIG9uIG5vbi1tYXRjaGluZyBvYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IHsgYTogeyAkdmFyOiAneCcgfSwgYjogJ3dvcmxkJyB9O1xuICAgIGNvbnN0IG5vZGUgPSB7IGE6IDEyMywgYjogJ2hlbGxvJyB9O1xuICAgIGNvbnN0IHZhcnMgPSBuZXcgUGF0dGVybk1hdGNoZXIoKS5tYXRjaChub2RlLCBwYXR0ZXJuKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFycywgbnVsbCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbWF0Y2ggd2l0aCByZXBlYXRlZCB2YXInLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IHsgYTogeyAkdmFyOiAneCcgfSwgYjogeyAkdmFyOiAneCcgfSB9O1xuICAgIGNvbnN0IG5vZGUgPSB7IGE6IDEyMywgYjogMTIzIH07XG4gICAgY29uc3QgdmFycyA9IG5ldyBQYXR0ZXJuTWF0Y2hlcigpLm1hdGNoKG5vZGUsIHBhdHRlcm4pO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodmFycywgeyB4OiAxMjMgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aXRoIG5vbi1tYXRjaGluZyByZXBlYXRlZCB2YXInLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IHsgYTogeyAkdmFyOiAneCcgfSwgYjogeyAkdmFyOiAneCcgfSB9O1xuICAgIGNvbnN0IG5vZGUgPSB7IGE6IDEyMywgYjogNDU2IH07XG4gICAgY29uc3QgdmFycyA9IG5ldyBQYXR0ZXJuTWF0Y2hlcigpLm1hdGNoKG5vZGUsIHBhdHRlcm4pO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YXJzLCBudWxsKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXJzZSBzdGFraW5nIGRlc2NyaXB0b3InLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBTdGFraW5nRGVzY3JpcHRvckJ1aWxkZXIoXG4gICAgICBrZXkzMigndXNlcicpLFxuICAgICAgW2tleTMyKCdwcm92aWRlcjEnKV0sXG4gICAgICBba2V5MzIoJ2d1YXJkaWFuMScpLCBrZXkzMignZ3VhcmRpYW4yJyldLFxuICAgICAgMixcbiAgICAgIDEwMFxuICAgICk7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0gYnVpbGRlci5nZXRTdGFraW5nRGVzY3JpcHRvcigpO1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU3Rha2luZ0Rlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG5cbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwocGFyc2VkLCBudWxsKTtcbiAgICBpZiAocGFyc2VkKSB7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlZC5wZW5hbHR5Tm9kZSwgYnVpbGRlci5nZXRQZW5hbHR5TWluaXNjcmlwdE5vZGUoKSk7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlZC53aXRoZHJhd2FsTm9kZSwgYnVpbGRlci5nZXRXaXRoZHJhd2FsTWluaXNjcmlwdE5vZGUoKSk7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlZC50aW1lbG9ja05vZGUsIGJ1aWxkZXIuZ2V0VGltZWxvY2tNaW5pc2NyaXB0Tm9kZSgpKTtcbiAgICB9XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=VirtualSize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VirtualSize.d.ts","sourceRoot":"","sources":["../../../../../test/descriptor/psbt/VirtualSize.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
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
+ const assert_1 = __importDefault(require("assert"));
7
+ const VirtualSize_1 = require("../../../src/descriptor/VirtualSize");
8
+ const descriptor_1 = require("../../../src/testutil/descriptor");
9
+ const testutil_1 = require("../../../src/testutil");
10
+ const descriptor_2 = require("../../../src/descriptor");
11
+ describe('VirtualSize', function () {
12
+ describe('getInputVSizesForDescriptorWallet', function () {
13
+ it('returns the input virtual sizes for a descriptor wallet', function () {
14
+ assert_1.default.deepStrictEqual((0, VirtualSize_1.getInputVSizesForDescriptors)(new Map([
15
+ ['foo', (0, descriptor_1.getDescriptor)('Wsh2Of2')],
16
+ ['bar', (0, descriptor_1.getDescriptor)('Wsh2Of2')],
17
+ ])), {
18
+ foo: 96,
19
+ bar: 96,
20
+ });
21
+ assert_1.default.deepStrictEqual((0, VirtualSize_1.getInputVSizesForDescriptors)((0, descriptor_1.getDescriptorMap)('Wsh2Of3')), {
22
+ external: 105,
23
+ internal: 105,
24
+ });
25
+ });
26
+ });
27
+ describe('getChangeOutputVSizesForDescriptor', function () {
28
+ it('returns the output virtual sizes for a descriptor', function () {
29
+ assert_1.default.deepStrictEqual((0, VirtualSize_1.getChangeOutputVSizesForDescriptor)((0, descriptor_1.getDescriptor)('Wsh2Of2')), {
30
+ inputVSize: 96,
31
+ outputVSize: 34,
32
+ });
33
+ });
34
+ });
35
+ function describeWithTemplate(t, inputSize, outputSize) {
36
+ describe(`getVirtualSize ${t}`, function () {
37
+ it('returns expected virtual size', function () {
38
+ assert_1.default.deepStrictEqual((0, VirtualSize_1.getVirtualSize)({
39
+ inputs: [{ descriptorName: 'internal' }],
40
+ outputs: [{ script: Buffer.alloc(34) }],
41
+ }, (0, descriptor_1.getDescriptorMap)(t)), inputSize + outputSize + 11);
42
+ const descriptor = (0, descriptor_1.getDescriptor)(t);
43
+ const nInputs = 10000;
44
+ assert_1.default.deepStrictEqual((0, VirtualSize_1.getVirtualSize)({
45
+ /* as proof we can pass 10_000 inputs */
46
+ inputs: Array.from({ length: nInputs }).map(() => descriptor),
47
+ outputs: [],
48
+ }), inputSize * nInputs + 11);
49
+ });
50
+ });
51
+ describe(`getVirtualSizeForPsbt ${t}`, function () {
52
+ const keys = (0, testutil_1.getKeyTriple)('a');
53
+ const descriptorSelf = (0, descriptor_1.getDescriptor)(t, keys.map((k) => k.neutered().toBase58()));
54
+ const descriptorOther = (0, descriptor_1.getDescriptor)(t, (0, descriptor_1.getDefaultXPubs)('b'));
55
+ it('returns expected virtual size', function () {
56
+ const psbt = (0, descriptor_1.mockPsbtDefault)({ descriptorSelf, descriptorOther });
57
+ const descriptorMap = new Map([['internal', descriptorSelf]]);
58
+ const expectedVirtualSize = inputSize * 2 + outputSize * 2 + 11;
59
+ assert_1.default.deepStrictEqual((0, VirtualSize_1.getVirtualSizeEstimateForPsbt)(psbt, descriptorMap), expectedVirtualSize);
60
+ psbt.signAllInputsHD(keys[0]);
61
+ psbt.signAllInputsHD(keys[1]);
62
+ (0, descriptor_2.finalizePsbt)(psbt);
63
+ // TODO(BTC-1797): figure out why we overestimate by 1
64
+ assert_1.default.strictEqual(psbt.extractTransaction().virtualSize(), expectedVirtualSize - 1);
65
+ });
66
+ });
67
+ }
68
+ describeWithTemplate('Wsh2Of3', 105, 43);
69
+ describeWithTemplate('Tr2Of3-NoKeyPath', 109, 43);
70
+ });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlydHVhbFNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L2Rlc2NyaXB0b3IvcHNidC9WaXJ0dWFsU2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUU1QixxRUFLNkM7QUFDN0MsaUVBTTBDO0FBQzFDLG9EQUFxRDtBQUNyRCx3REFBdUQ7QUFFdkQsUUFBUSxDQUFDLGFBQWEsRUFBRTtJQUN0QixRQUFRLENBQUMsbUNBQW1DLEVBQUU7UUFDNUMsRUFBRSxDQUFDLHlEQUF5RCxFQUFFO1lBQzVELGdCQUFNLENBQUMsZUFBZSxDQUNwQixJQUFBLDBDQUE0QixFQUMxQixJQUFJLEdBQUcsQ0FBQztnQkFDTixDQUFDLEtBQUssRUFBRSxJQUFBLDBCQUFhLEVBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2pDLENBQUMsS0FBSyxFQUFFLElBQUEsMEJBQWEsRUFBQyxTQUFTLENBQUMsQ0FBQzthQUNsQyxDQUFDLENBQ0gsRUFDRDtnQkFDRSxHQUFHLEVBQUUsRUFBRTtnQkFDUCxHQUFHLEVBQUUsRUFBRTthQUNSLENBQ0YsQ0FBQztZQUNGLGdCQUFNLENBQUMsZUFBZSxDQUFDLElBQUEsMENBQTRCLEVBQUMsSUFBQSw2QkFBZ0IsRUFBQyxTQUFTLENBQUMsQ0FBQyxFQUFFO2dCQUNoRixRQUFRLEVBQUUsR0FBRztnQkFDYixRQUFRLEVBQUUsR0FBRzthQUNkLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsb0NBQW9DLEVBQUU7UUFDN0MsRUFBRSxDQUFDLG1EQUFtRCxFQUFFO1lBQ3RELGdCQUFNLENBQUMsZUFBZSxDQUFDLElBQUEsZ0RBQWtDLEVBQUMsSUFBQSwwQkFBYSxFQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25GLFVBQVUsRUFBRSxFQUFFO2dCQUNkLFdBQVcsRUFBRSxFQUFFO2FBQ2hCLENB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LENBQUMsQ0FBQztJQUN6QyxvQkFBb0IsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7XG4gIGdldENoYW5nZU91dHB1dFZTaXplc0ZvckRlc2NyaXB0b3IsXG4gIGdldElucHV0VlNpemVzRm9yRGVzY3JpcHRvcnMsXG4gIGdldFZpcnR1YWxTaXplLFxuICBnZXRWaXJ0dWFsU2l6ZUVzdGltYXRlRm9yUHNidCxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvVmlydHVhbFNpemUnO1xuaW1wb3J0IHtcbiAgRGVzY3JpcHRvclRlbXBsYXRlLFxuICBnZXREZWZhdWx0WFB1YnMsXG4gIGdldERlc2NyaXB0b3IsXG4gIGdldERlc2NyaXB0b3JNYXAsXG4gIG1vY2tQc2J0RGVmYXVsdCxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZ2V0S2V5VHJpcGxlIH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsJztcbmltcG9ydCB7IGZpbmFsaXplUHNidCB9IGZyb20gJy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yJztcblxuZGVzY3JpYmUoJ1ZpcnR1YWxTaXplJywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnZ2V0SW5wdXRWU2l6ZXNGb3JEZXNjcmlwdG9yV2FsbGV0JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdyZXR1cm5zIHRoZSBpbnB1dCB2aXJ0dWFsIHNpemVzIGZvciBhIGRlc2NyaXB0b3Igd2FsbGV0JywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChcbiAgICAgICAgZ2V0SW5wdXRWU2l6ZXNGb3JEZXNjcmlwdG9ycyhcbiAgICAgICAgICBuZXcgTWFwKFtcbiAgICAgICAgICAgIFsnZm9vJywgZ2V0RGVzY3JpcHRvcignV3NoMk9mMicpXSxcbiAgICAgICAgICAgIFsnYmFyJywgZ2V0RGVzY3JpcHRvcignV3NoMk9mMicpXSxcbiAgICAgICAgICBdKVxuICAgICAgICApLFxuICAgICAgICB7XG4gICAgICAgICAgZm9vOiA5NixcbiAgICAgICAgICBiYXI6IDk2LFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChnZXRJbnB1dFZTaXplc0ZvckRlc2NyaXB0b3JzKGdldERlc2NyaXB0b3JNYXAoJ1dzaDJPZjMnKSksIHtcbiAgICAgICAgZXh0ZXJuYWw6IDEwNSxcbiAgICAgICAgaW50ZXJuYWw6IDEwNSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0Q2hhbmdlT3V0cHV0VlNpemVzRm9yRGVzY3JpcHRvcicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgncmV0dXJucyB0aGUgb3V0cHV0IHZpcnR1YWwgc2l6ZXMgZm9yIGEgZGVzY3JpcHRvcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZ2V0Q2hhbmdlT3V0cHV0VlNpemVzRm9yRGVzY3JpcHRvcihnZXREZXNjcmlwdG9yKCdXc2gyT2YyJykpLCB7XG4gICAgICAgIGlucHV0VlNpemU6IDk2LFxuICAgICAgICBvdXRwdXRWU2l6ZTogMzQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gZGVzY3JpYmVXaXRoVGVtcGxhdGUodDogRGVzY3JpcHRvclRlbXBsYXRlLCBpbnB1dFNpemU6IG51bWJlciwgb3V0cHV0U2l6ZTogbnVtYmVyKSB7XG4gICAgZGVzY3JpYmUoYGdldFZpcnR1YWxTaXplICR7dH1gLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgncmV0dXJucyBleHBlY3RlZCB2aXJ0dWFsIHNpemUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoXG4gICAgICAgICAgZ2V0VmlydHVhbFNpemUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlucHV0czogW3sgZGVzY3JpcHRvck5hbWU6ICdpbnRlcm5hbCcgfV0sXG4gICAgICAgICAgICAgIG91dHB1dHM6IFt7IHNjcmlwdDogQnVmZmVyLmFsbG9jKDM0KSB9XSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXREZXNjcmlwdG9yTWFwKHQpXG4gICAgICAgICAgKSxcbiAgICAgICAgICBpbnB1dFNpemUgKyBvdXRwdXRTaXplICsgMTFcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gZ2V0RGVzY3JpcHRvcih0KTtcblxuICAgICAgICBjb25zdCBuSW5wdXRzID0gMTBfMDAwO1xuICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKFxuICAgICAgICAgIGdldFZpcnR1YWxTaXplKHtcbiAgICAgICAgICAgIC8qIGFzIHByb29mIHdlIGNhbiBwYXNzIDEwXzAwMCBpbnB1dHMgKi9cbiAgICAgICAgICAgIGlucHV0czogQXJyYXkuZnJvbSh7IGxlbmd0aDogbklucHV0cyB9KS5tYXAoKCkgPT4gZGVzY3JpcHRvciksXG4gICAgICAgICAgICBvdXRwdXRzOiBbXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBpbnB1dFNpemUgKiBuSW5wdXRzICsgMTFcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoYGdldFZpcnR1YWxTaXplRm9yUHNidCAke3R9YCwgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qga2V5cyA9IGdldEtleVRyaXBsZSgnYScpO1xuICAgICAgY29uc3QgZGVzY3JpcHRvclNlbGYgPSBnZXREZXNjcmlwdG9yKFxuICAgICAgICB0LFxuICAgICAgICBrZXlzLm1hcCgoaykgPT4gay5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkpXG4gICAgICApO1xuICAgICAgY29uc3QgZGVzY3JpcHRvck90aGVyID0gZ2V0RGVzY3JpcHRvcih0LCBnZXREZWZhdWx0WFB1YnMoJ2InKSk7XG4gICAgICBpdCgncmV0dXJucyBleHBlY3RlZCB2aXJ0dWFsIHNpemUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHBzYnQgPSBtb2NrUHNidERlZmF1bHQoeyBkZXNjcmlwdG9yU2VsZiwgZGVzY3JpcHRvck90aGVyIH0pO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yTWFwID0gbmV3IE1hcChbWydpbnRlcm5hbCcsIGRlc2NyaXB0b3JTZWxmXV0pO1xuICAgICAgICBjb25zdCBleHBlY3RlZFZpcnR1YWxTaXplID0gaW5wdXRTaXplICogMiArIG91dHB1dFNpemUgKiAyICsgMTE7XG4gICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZ2V0VmlydHVhbFNpemVFc3RpbWF0ZUZvclBzYnQocHNidCwgZGVzY3JpcHRvck1hcCksIGV4cGVjdGVkVmlydHVhbFNpemUpO1xuICAgICAgICBwc2J0LnNpZ25BbGxJbnB1dHNIRChrZXlzWzBdKTtcbiAgICAgICAgcHNidC5zaWduQWxsSW5wdXRzSEQoa2V5c1sxXSk7XG4gICAgICAgIGZpbmFsaXplUHNidChwc2J0KTtcbiAgICAgICAgLy8gVE9ETyhCVEMtMTc5Nyk6IGZpZ3VyZSBvdXQgd2h5IHdlIG92ZXJlc3RpbWF0ZSBieSAxXG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwc2J0LmV4dHJhY3RUcmFuc2FjdGlvbigpLnZpcnR1YWxTaXplKCksIGV4cGVjdGVkVmlydHVhbFNpemUgLSAxKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZGVzY3JpYmVXaXRoVGVtcGxhdGUoJ1dzaDJPZjMnLCAxMDUsIDQzKTtcbiAgZGVzY3JpYmVXaXRoVGVtcGxhdGUoJ1RyMk9mMy1Ob0tleVBhdGgnLCAxMDksIDQzKTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=assertSatisfiable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertSatisfiable.d.ts","sourceRoot":"","sources":["../../../../../test/descriptor/psbt/assertSatisfiable.ts"],"names":[],"mappings":""}
@@ -0,0 +1,56 @@
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
+ const assert = __importStar(require("assert"));
37
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
38
+ const descriptor_1 = require("../../../src/testutil/descriptor");
39
+ const descriptor_2 = require("../../../src/descriptor");
40
+ function d(s) {
41
+ return wasm_utxo_1.Descriptor.fromString(s, 'derivable');
42
+ }
43
+ describe('assertSatisfiable', function () {
44
+ describe('getRequiredLocktime', function () {
45
+ const xpubs = (0, descriptor_1.getDefaultXPubs)();
46
+ it('has expected result', function () {
47
+ // OP_DROP
48
+ assert.strictEqual((0, descriptor_2.getRequiredLocktime)(d(`wsh(and_v(r:after(100),pk(${xpubs[0]})))`)), 100);
49
+ // OP_VERIFY
50
+ assert.strictEqual((0, descriptor_2.getRequiredLocktime)(d(`wsh(and_v(v:after(100),pk(${xpubs[0]})))`)), 100);
51
+ // no locktime at all
52
+ assert.strictEqual((0, descriptor_2.getRequiredLocktime)(d(`wsh(pk(${xpubs[0]}))`)), undefined);
53
+ });
54
+ });
55
+ });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0U2F0aXNmaWFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L2Rlc2NyaXB0b3IvcHNidC9hc3NlcnRTYXRpc2ZpYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUVqQyxnREFBOEM7QUFFOUMsaUVBQW1FO0FBQ25FLHdEQUE4RDtBQUU5RCxTQUFTLENBQUMsQ0FBQyxDQUFTO0lBQ2xCLE9BQU8sc0JBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxRQUFRLENBQUMsbUJBQW1CLEVBQUU7SUFDNUIsUUFBUSxDQUFDLHFCQUFxQixFQUFFO1FBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUEsNEJBQWUsR0FBRSxDQUFDO1FBQ2hDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRTtZQUN4QixVQUFVO1lBQ1YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLGdDQUFtQixFQUFDLENBQUMsQ0FBQyw2QkFBNkIsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVGLFlBQVk7WUFDWixNQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsZ0NBQW1CLEVBQUMsQ0FBQyxDQUFDLDZCQUE2QixLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUYscUJBQXFCO1lBQ3JCLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBQSxnQ0FBbUIsRUFBQyxDQUFDLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgZ2V0RGVmYXVsdFhQdWJzIH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZ2V0UmVxdWlyZWRMb2NrdGltZSB9IGZyb20gJy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yJztcblxuZnVuY3Rpb24gZChzOiBzdHJpbmcpOiBEZXNjcmlwdG9yIHtcbiAgcmV0dXJuIERlc2NyaXB0b3IuZnJvbVN0cmluZyhzLCAnZGVyaXZhYmxlJyk7XG59XG5cbmRlc2NyaWJlKCdhc3NlcnRTYXRpc2ZpYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ2dldFJlcXVpcmVkTG9ja3RpbWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgeHB1YnMgPSBnZXREZWZhdWx0WFB1YnMoKTtcbiAgICBpdCgnaGFzIGV4cGVjdGVkIHJlc3VsdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIE9QX0RST1BcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRSZXF1aXJlZExvY2t0aW1lKGQoYHdzaChhbmRfdihyOmFmdGVyKDEwMCkscGsoJHt4cHVic1swXX0pKSlgKSksIDEwMCk7XG4gICAgICAvLyBPUF9WRVJJRllcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRSZXF1aXJlZExvY2t0aW1lKGQoYHdzaChhbmRfdih2OmFmdGVyKDEwMCkscGsoJHt4cHVic1swXX0pKSlgKSksIDEwMCk7XG4gICAgICAvLyBubyBsb2NrdGltZSBhdCBhbGxcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRSZXF1aXJlZExvY2t0aW1lKGQoYHdzaChwaygke3hwdWJzWzBdfSkpYCkpLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=findDescriptors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findDescriptors.d.ts","sourceRoot":"","sources":["../../../../../test/descriptor/psbt/findDescriptors.ts"],"names":[],"mappings":""}
@@ -0,0 +1,70 @@
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
+ const assert = __importStar(require("assert"));
37
+ const descriptor_1 = require("../../../src/testutil/descriptor");
38
+ const descriptor_2 = require("../../../src/descriptor");
39
+ function describeWithTemplates(templateSelf, templateOther) {
40
+ describe(`parsePsbt [${templateSelf},${templateOther}]`, function () {
41
+ const descriptorA = (0, descriptor_1.getDescriptor)(templateSelf, (0, descriptor_1.getDefaultXPubs)('a'));
42
+ const descriptorB = (0, descriptor_1.getDescriptor)(templateOther, (0, descriptor_1.getDefaultXPubs)('b'));
43
+ const descriptorMap = new Map([
44
+ ['a', descriptorA],
45
+ ['b', descriptorB],
46
+ ]);
47
+ it('finds descriptors for PSBT inputs/outputs', function () {
48
+ const psbt = (0, descriptor_1.mockPsbt)([
49
+ { descriptor: descriptorA, index: 0 },
50
+ { descriptor: descriptorB, index: 1, id: { vout: 1 } },
51
+ ], [{ descriptor: descriptorA, index: 2, value: BigInt(1e6) }]);
52
+ assert.deepStrictEqual((0, descriptor_2.findDescriptorForInput)(psbt.data.inputs[0], descriptorMap), {
53
+ descriptor: descriptorA,
54
+ index: 0,
55
+ });
56
+ assert.deepStrictEqual((0, descriptor_2.findDescriptorForInput)(psbt.data.inputs[1], descriptorMap), {
57
+ descriptor: descriptorB,
58
+ index: 1,
59
+ });
60
+ assert.deepStrictEqual((0, descriptor_2.findDescriptorForOutput)(psbt.txOutputs[0].script, psbt.data.outputs[0], descriptorMap), {
61
+ descriptor: descriptorA,
62
+ index: 2,
63
+ });
64
+ });
65
+ });
66
+ }
67
+ describeWithTemplates('Wsh2Of3', 'Wsh2Of3');
68
+ describeWithTemplates('Wsh2Of3', 'Tr2Of3-NoKeyPath');
69
+ describeWithTemplates('Tr2Of3-NoKeyPath', 'Tr2Of3-NoKeyPath');
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZERlc2NyaXB0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC9kZXNjcmlwdG9yL3BzYnQvZmluZERlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBRWpDLGlFQUFnSDtBQUNoSCx3REFBMEY7QUFFMUYsU0FBUyxxQkFBcUIsQ0FBQyxZQUFnQyxFQUFFLGFBQWlDO0lBQ2hHLFFBQVEsQ0FBQyxjQUFjLFlBQVksSUFBSSxhQUFhLEdBQUcsRUFBRTtRQUN2RCxNQUFNLFdBQVcsR0FBRyxJQUFBLDBCQUFhLEVBQUMsWUFBWSxFQUFFLElBQUEsNEJBQWUsRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sV0FBVyxHQUFHLElBQUEsMEJBQWEsRUFBQyxhQUFhLEVBQUUsSUFBQSw0QkFBZSxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkUsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUM7WUFDNUIsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDO1lBQ2xCLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQztTQUNuQixDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkNBQTJDLEVBQUU7WUFDOUMsTUFBTSxJQUFJLEdBQUcsSUFBQSxxQkFBUSxFQUNuQjtnQkFDRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtnQkFDckMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO2FBQ3ZELEVBQ0QsQ0FBQyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FDNUQsQ0FBQztZQUVGLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBQSxtQ0FBc0IsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsRUFBRTtnQkFDakYsVUFBVSxFQUFFLFdBQVc7Z0JBQ3ZCLEtBQUssRUFBRSxDQUFDO2FBQ1QsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFBLG1DQUFzQixFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxFQUFFO2dCQUNqRixVQUFVLEVBQUUsV0FBVztnQkFDdkIsS0FBSyxFQUFFLENBQUM7YUFDVCxDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUEsb0NBQXVCLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQUU7Z0JBQzdHLFVBQVUsRUFBRSxXQUFXO2dCQUN2QixLQUFLLEVBQUUsQ0FBQzthQUNULENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQscUJBQXFCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzVDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3JELHFCQUFxQixDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgRGVzY3JpcHRvclRlbXBsYXRlLCBnZXREZWZhdWx0WFB1YnMsIGdldERlc2NyaXB0b3IsIG1vY2tQc2J0IH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZmluZERlc2NyaXB0b3JGb3JJbnB1dCwgZmluZERlc2NyaXB0b3JGb3JPdXRwdXQgfSBmcm9tICcuLi8uLi8uLi9zcmMvZGVzY3JpcHRvcic7XG5cbmZ1bmN0aW9uIGRlc2NyaWJlV2l0aFRlbXBsYXRlcyh0ZW1wbGF0ZVNlbGY6IERlc2NyaXB0b3JUZW1wbGF0ZSwgdGVtcGxhdGVPdGhlcjogRGVzY3JpcHRvclRlbXBsYXRlKSB7XG4gIGRlc2NyaWJlKGBwYXJzZVBzYnQgWyR7dGVtcGxhdGVTZWxmfSwke3RlbXBsYXRlT3RoZXJ9XWAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkZXNjcmlwdG9yQSA9IGdldERlc2NyaXB0b3IodGVtcGxhdGVTZWxmLCBnZXREZWZhdWx0WFB1YnMoJ2EnKSk7XG4gICAgY29uc3QgZGVzY3JpcHRvckIgPSBnZXREZXNjcmlwdG9yKHRlbXBsYXRlT3RoZXIsIGdldERlZmF1bHRYUHVicygnYicpKTtcbiAgICBjb25zdCBkZXNjcmlwdG9yTWFwID0gbmV3IE1hcChbXG4gICAgICBbJ2EnLCBkZXNjcmlwdG9yQV0sXG4gICAgICBbJ2InLCBkZXNjcmlwdG9yQl0sXG4gICAgXSk7XG5cbiAgICBpdCgnZmluZHMgZGVzY3JpcHRvcnMgZm9yIFBTQlQgaW5wdXRzL291dHB1dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwc2J0ID0gbW9ja1BzYnQoXG4gICAgICAgIFtcbiAgICAgICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JBLCBpbmRleDogMCB9LFxuICAgICAgICAgIHsgZGVzY3JpcHRvcjogZGVzY3JpcHRvckIsIGluZGV4OiAxLCBpZDogeyB2b3V0OiAxIH0gfSxcbiAgICAgICAgXSxcbiAgICAgICAgW3sgZGVzY3JpcHRvcjogZGVzY3JpcHRvckEsIGluZGV4OiAyLCB2YWx1ZTogQmlnSW50KDFlNikgfV1cbiAgICAgICk7XG5cbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZmluZERlc2NyaXB0b3JGb3JJbnB1dChwc2J0LmRhdGEuaW5wdXRzWzBdLCBkZXNjcmlwdG9yTWFwKSwge1xuICAgICAgICBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yQSxcbiAgICAgICAgaW5kZXg6IDAsXG4gICAgICB9KTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZmluZERlc2NyaXB0b3JGb3JJbnB1dChwc2J0LmRhdGEuaW5wdXRzWzFdLCBkZXNjcmlwdG9yTWFwKSwge1xuICAgICAgICBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yQixcbiAgICAgICAgaW5kZXg6IDEsXG4gICAgICB9KTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZmluZERlc2NyaXB0b3JGb3JPdXRwdXQocHNidC50eE91dHB1dHNbMF0uc2NyaXB0LCBwc2J0LmRhdGEub3V0cHV0c1swXSwgZGVzY3JpcHRvck1hcCksIHtcbiAgICAgICAgZGVzY3JpcHRvcjogZGVzY3JpcHRvckEsXG4gICAgICAgIGluZGV4OiAyLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5kZXNjcmliZVdpdGhUZW1wbGF0ZXMoJ1dzaDJPZjMnLCAnV3NoMk9mMycpO1xuZGVzY3JpYmVXaXRoVGVtcGxhdGVzKCdXc2gyT2YzJywgJ1RyMk9mMy1Ob0tleVBhdGgnKTtcbmRlc2NyaWJlV2l0aFRlbXBsYXRlcygnVHIyT2YzLU5vS2V5UGF0aCcsICdUcjJPZjMtTm9LZXlQYXRoJyk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=psbt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"psbt.d.ts","sourceRoot":"","sources":["../../../../../test/descriptor/psbt/psbt.ts"],"names":[],"mappings":""}