@bitgo-beta/utxo-core 1.0.1-alpha.2 → 1.0.1-alpha.200

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 (352) hide show
  1. package/dist/cjs/src/Output.d.ts +43 -0
  2. package/dist/cjs/src/Output.d.ts.map +1 -0
  3. package/dist/cjs/src/Output.js +60 -0
  4. package/dist/cjs/src/bip322/index.d.ts +5 -0
  5. package/dist/cjs/src/bip322/index.d.ts.map +1 -0
  6. package/dist/cjs/src/bip322/index.js +21 -0
  7. package/dist/cjs/src/bip322/toSign.d.ts +25 -0
  8. package/dist/cjs/src/bip322/toSign.d.ts.map +1 -0
  9. package/dist/cjs/src/bip322/toSign.js +125 -0
  10. package/dist/cjs/src/bip322/toSpend.d.ts +22 -0
  11. package/dist/cjs/src/bip322/toSpend.d.ts.map +1 -0
  12. package/dist/cjs/src/bip322/toSpend.js +72 -0
  13. package/dist/cjs/src/bip322/utils.d.ts +18 -0
  14. package/dist/cjs/src/bip322/utils.d.ts.map +1 -0
  15. package/dist/cjs/src/bip322/utils.js +115 -0
  16. package/dist/cjs/src/bip322/verify.d.ts +12 -0
  17. package/dist/cjs/src/bip322/verify.d.ts.map +1 -0
  18. package/dist/cjs/src/bip322/verify.js +113 -0
  19. package/dist/cjs/src/bip32utils.d.ts +12 -0
  20. package/dist/cjs/src/bip32utils.d.ts.map +1 -0
  21. package/dist/cjs/src/bip32utils.js +15 -0
  22. package/dist/cjs/src/bip65/index.d.ts +2 -0
  23. package/dist/cjs/src/bip65/index.d.ts.map +1 -0
  24. package/dist/{src/testutil → cjs/src/bip65}/index.js +2 -4
  25. package/dist/cjs/src/bip65/locktime.d.ts +8 -0
  26. package/dist/cjs/src/bip65/locktime.d.ts.map +1 -0
  27. package/dist/cjs/src/bip65/locktime.js +37 -0
  28. package/dist/{src → cjs/src}/descriptor/DescriptorMap.d.ts +1 -1
  29. package/dist/cjs/src/descriptor/DescriptorMap.d.ts.map +1 -0
  30. package/dist/cjs/src/descriptor/DescriptorMap.js +9 -0
  31. package/dist/cjs/src/descriptor/Output.d.ts +23 -0
  32. package/dist/cjs/src/descriptor/Output.d.ts.map +1 -0
  33. package/dist/cjs/src/descriptor/Output.js +41 -0
  34. package/dist/{src → cjs/src}/descriptor/VirtualSize.d.ts +3 -1
  35. package/dist/cjs/src/descriptor/VirtualSize.d.ts.map +1 -0
  36. package/dist/cjs/src/descriptor/VirtualSize.js +100 -0
  37. package/dist/{src → cjs/src}/descriptor/address.d.ts +2 -2
  38. package/dist/cjs/src/descriptor/address.d.ts.map +1 -0
  39. package/dist/{src → cjs/src}/descriptor/address.js +2 -2
  40. package/dist/cjs/src/descriptor/derive.d.ts +13 -0
  41. package/dist/cjs/src/descriptor/derive.d.ts.map +1 -0
  42. package/dist/cjs/src/descriptor/derive.js +45 -0
  43. package/dist/cjs/src/descriptor/fromFixedScriptWallet.d.ts +16 -0
  44. package/dist/cjs/src/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  45. package/dist/cjs/src/descriptor/fromFixedScriptWallet.js +88 -0
  46. package/dist/cjs/src/descriptor/index.d.ts +11 -0
  47. package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
  48. package/dist/cjs/src/descriptor/index.js +27 -0
  49. package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts +14 -0
  50. package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  51. package/dist/cjs/src/descriptor/parse/PatternMatcher.js +60 -0
  52. package/dist/{src → cjs/src}/descriptor/psbt/assertSatisfiable.d.ts +1 -1
  53. package/dist/cjs/src/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  54. package/dist/cjs/src/descriptor/psbt/assertSatisfiable.js +74 -0
  55. package/dist/cjs/src/descriptor/psbt/createPsbt.d.ts +23 -0
  56. package/dist/cjs/src/descriptor/psbt/createPsbt.d.ts.map +1 -0
  57. package/dist/cjs/src/descriptor/psbt/createPsbt.js +107 -0
  58. package/dist/{src → cjs/src}/descriptor/psbt/findDescriptors.d.ts +7 -3
  59. package/dist/cjs/src/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  60. package/dist/cjs/src/descriptor/psbt/findDescriptors.js +98 -0
  61. package/dist/{src → cjs/src}/descriptor/psbt/index.d.ts +1 -0
  62. package/dist/cjs/src/descriptor/psbt/index.d.ts.map +1 -0
  63. package/dist/{src → cjs/src}/descriptor/psbt/index.js +2 -1
  64. package/dist/{src → cjs/src}/descriptor/psbt/parse.d.ts +2 -2
  65. package/dist/cjs/src/descriptor/psbt/parse.d.ts.map +1 -0
  66. package/dist/cjs/src/descriptor/psbt/parse.js +87 -0
  67. package/dist/cjs/src/descriptor/psbt/sign.d.ts +26 -0
  68. package/dist/cjs/src/descriptor/psbt/sign.d.ts.map +1 -0
  69. package/dist/cjs/src/descriptor/psbt/sign.js +42 -0
  70. package/dist/{src → cjs/src}/descriptor/psbt/wrap.d.ts +1 -1
  71. package/dist/cjs/src/descriptor/psbt/wrap.d.ts.map +1 -0
  72. package/dist/cjs/src/descriptor/psbt/wrap.js +76 -0
  73. package/dist/cjs/src/dustThreshold.d.ts +4 -0
  74. package/dist/cjs/src/dustThreshold.d.ts.map +1 -0
  75. package/dist/cjs/src/dustThreshold.js +134 -0
  76. package/dist/cjs/src/index.d.ts +10 -0
  77. package/dist/cjs/src/index.d.ts.map +1 -0
  78. package/dist/{src → cjs/src}/index.js +12 -2
  79. package/dist/cjs/src/paygo/attestation.d.ts +11 -0
  80. package/dist/cjs/src/paygo/attestation.d.ts.map +1 -0
  81. package/dist/cjs/src/paygo/attestation.js +58 -0
  82. package/dist/cjs/src/paygo/index.d.ts +3 -0
  83. package/dist/cjs/src/paygo/index.d.ts.map +1 -0
  84. package/dist/cjs/src/paygo/index.js +19 -0
  85. package/dist/cjs/src/paygo/parsePayGoAttestation.d.ts +16 -0
  86. package/dist/cjs/src/paygo/parsePayGoAttestation.d.ts.map +1 -0
  87. package/dist/cjs/src/paygo/parsePayGoAttestation.js +50 -0
  88. package/dist/cjs/src/paygo/psbt/Errors.d.ts +22 -0
  89. package/dist/cjs/src/paygo/psbt/Errors.d.ts.map +1 -0
  90. package/dist/cjs/src/paygo/psbt/Errors.js +44 -0
  91. package/dist/cjs/src/paygo/psbt/index.d.ts +2 -0
  92. package/dist/cjs/src/paygo/psbt/index.d.ts.map +1 -0
  93. package/dist/cjs/src/paygo/psbt/index.js +18 -0
  94. package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts +29 -0
  95. package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  96. package/dist/cjs/src/paygo/psbt/payGoAddressProof.js +124 -0
  97. package/dist/{src → cjs/src}/testutil/descriptor/descriptors.d.ts +5 -2
  98. package/dist/cjs/src/testutil/descriptor/descriptors.d.ts.map +1 -0
  99. package/dist/cjs/src/testutil/descriptor/descriptors.js +162 -0
  100. package/dist/cjs/src/testutil/descriptor/index.d.ts.map +1 -0
  101. package/dist/{src → cjs/src}/testutil/descriptor/index.js +1 -1
  102. package/dist/{src → cjs/src}/testutil/descriptor/mock.utils.d.ts +6 -4
  103. package/dist/cjs/src/testutil/descriptor/mock.utils.d.ts.map +1 -0
  104. package/dist/cjs/src/testutil/descriptor/mock.utils.js +92 -0
  105. package/dist/cjs/src/testutil/descriptor/psbt.utils.d.ts.map +1 -0
  106. package/dist/cjs/src/testutil/descriptor/psbt.utils.js +21 -0
  107. package/dist/cjs/src/testutil/fixtures.utils.d.ts.map +1 -0
  108. package/dist/cjs/src/testutil/fixtures.utils.js +127 -0
  109. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
  110. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  111. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.js +38 -0
  112. package/dist/cjs/src/testutil/index.d.ts +6 -0
  113. package/dist/cjs/src/testutil/index.d.ts.map +1 -0
  114. package/dist/cjs/src/testutil/index.js +22 -0
  115. package/dist/{src → cjs/src}/testutil/key.utils.d.ts +1 -1
  116. package/dist/cjs/src/testutil/key.utils.d.ts.map +1 -0
  117. package/dist/cjs/src/testutil/key.utils.js +60 -0
  118. package/dist/cjs/src/testutil/toPlainObject.utils.d.ts.map +1 -0
  119. package/dist/cjs/src/testutil/toPlainObject.utils.js +89 -0
  120. package/dist/cjs/src/testutil/trimMessagePrefix.d.ts +11 -0
  121. package/dist/cjs/src/testutil/trimMessagePrefix.d.ts.map +1 -0
  122. package/dist/cjs/src/testutil/trimMessagePrefix.js +60 -0
  123. package/dist/cjs/src/xOnlyPubkey.d.ts +2 -0
  124. package/dist/cjs/src/xOnlyPubkey.d.ts.map +1 -0
  125. package/dist/cjs/src/xOnlyPubkey.js +18 -0
  126. package/dist/cjs/test/Output.d.ts +2 -0
  127. package/dist/cjs/test/Output.d.ts.map +1 -0
  128. package/dist/cjs/test/Output.js +70 -0
  129. package/dist/cjs/test/bip322/bip322.utils.d.ts +7 -0
  130. package/dist/cjs/test/bip322/bip322.utils.d.ts.map +1 -0
  131. package/dist/cjs/test/bip322/bip322.utils.js +16 -0
  132. package/dist/cjs/test/bip322/toSign.d.ts +2 -0
  133. package/dist/cjs/test/bip322/toSign.d.ts.map +1 -0
  134. package/dist/cjs/test/bip322/toSign.js +133 -0
  135. package/dist/cjs/test/bip322/toSpend.d.ts +2 -0
  136. package/dist/cjs/test/bip322/toSpend.d.ts.map +1 -0
  137. package/dist/cjs/test/bip322/toSpend.js +70 -0
  138. package/dist/cjs/test/bip322/utils.d.ts +2 -0
  139. package/dist/cjs/test/bip322/utils.d.ts.map +1 -0
  140. package/dist/cjs/test/bip322/utils.js +79 -0
  141. package/dist/cjs/test/bip322/verify.d.ts +2 -0
  142. package/dist/cjs/test/bip322/verify.d.ts.map +1 -0
  143. package/dist/cjs/test/bip322/verify.js +293 -0
  144. package/dist/cjs/test/bip32utils.d.ts +2 -0
  145. package/dist/cjs/test/bip32utils.d.ts.map +1 -0
  146. package/dist/cjs/test/bip32utils.js +62 -0
  147. package/dist/cjs/test/bip65/locktime.d.ts +2 -0
  148. package/dist/cjs/test/bip65/locktime.d.ts.map +1 -0
  149. package/dist/cjs/test/bip65/locktime.js +22 -0
  150. package/dist/cjs/test/descriptor/Output.d.ts +2 -0
  151. package/dist/cjs/test/descriptor/Output.d.ts.map +1 -0
  152. package/dist/cjs/test/descriptor/Output.js +44 -0
  153. package/dist/cjs/test/descriptor/derive.d.ts +2 -0
  154. package/dist/cjs/test/descriptor/derive.d.ts.map +1 -0
  155. package/dist/cjs/test/descriptor/derive.js +27 -0
  156. package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts +2 -0
  157. package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  158. package/dist/cjs/test/descriptor/fromFixedScriptWallet.js +145 -0
  159. package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts +2 -0
  160. package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  161. package/dist/cjs/test/descriptor/parse/PatternMatcher.js +120 -0
  162. package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts +2 -0
  163. package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts.map +1 -0
  164. package/dist/cjs/test/descriptor/psbt/VirtualSize.js +71 -0
  165. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts +2 -0
  166. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  167. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.js +56 -0
  168. package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts +2 -0
  169. package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  170. package/dist/cjs/test/descriptor/psbt/findDescriptors.js +70 -0
  171. package/dist/cjs/test/descriptor/psbt/psbt.d.ts +2 -0
  172. package/dist/cjs/test/descriptor/psbt/psbt.d.ts.map +1 -0
  173. package/dist/cjs/test/descriptor/psbt/psbt.js +211 -0
  174. package/dist/cjs/test/dustThreshold.d.ts +2 -0
  175. package/dist/cjs/test/dustThreshold.d.ts.map +1 -0
  176. package/dist/cjs/test/dustThreshold.js +110 -0
  177. package/dist/cjs/test/paygo/attestation.d.ts +2 -0
  178. package/dist/cjs/test/paygo/attestation.d.ts.map +1 -0
  179. package/dist/cjs/test/paygo/attestation.js +23 -0
  180. package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts +2 -0
  181. package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts.map +1 -0
  182. package/dist/cjs/test/paygo/parsePayGoAttestation.js +75 -0
  183. package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts +9 -0
  184. package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  185. package/dist/cjs/test/paygo/psbt/payGoAddressProof.js +163 -0
  186. package/dist/cjs/test/xOnlyPubkey.d.ts +2 -0
  187. package/dist/cjs/test/xOnlyPubkey.d.ts.map +1 -0
  188. package/dist/cjs/test/xOnlyPubkey.js +18 -0
  189. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  190. package/dist/esm/Output.d.ts +43 -0
  191. package/dist/esm/Output.d.ts.map +1 -0
  192. package/dist/esm/Output.js +53 -0
  193. package/dist/esm/bip322/index.d.ts +5 -0
  194. package/dist/esm/bip322/index.d.ts.map +1 -0
  195. package/dist/esm/bip322/index.js +5 -0
  196. package/dist/esm/bip322/toSign.d.ts +25 -0
  197. package/dist/esm/bip322/toSign.d.ts.map +1 -0
  198. package/dist/esm/bip322/toSign.js +119 -0
  199. package/dist/esm/bip322/toSpend.d.ts +22 -0
  200. package/dist/esm/bip322/toSpend.d.ts.map +1 -0
  201. package/dist/esm/bip322/toSpend.js +66 -0
  202. package/dist/esm/bip322/utils.d.ts +18 -0
  203. package/dist/esm/bip322/utils.d.ts.map +1 -0
  204. package/dist/esm/bip322/utils.js +77 -0
  205. package/dist/esm/bip322/verify.d.ts +12 -0
  206. package/dist/esm/bip322/verify.d.ts.map +1 -0
  207. package/dist/esm/bip322/verify.js +74 -0
  208. package/dist/esm/bip32utils.d.ts +12 -0
  209. package/dist/esm/bip32utils.d.ts.map +1 -0
  210. package/dist/esm/bip32utils.js +12 -0
  211. package/dist/esm/bip65/index.d.ts +2 -0
  212. package/dist/esm/bip65/index.d.ts.map +1 -0
  213. package/dist/esm/bip65/index.js +2 -0
  214. package/dist/esm/bip65/locktime.d.ts +8 -0
  215. package/dist/esm/bip65/locktime.d.ts.map +1 -0
  216. package/dist/esm/bip65/locktime.js +34 -0
  217. package/dist/esm/descriptor/DescriptorMap.d.ts +9 -0
  218. package/dist/{src → esm}/descriptor/DescriptorMap.d.ts.map +1 -1
  219. package/dist/esm/descriptor/DescriptorMap.js +6 -0
  220. package/dist/esm/descriptor/Output.d.ts +23 -0
  221. package/dist/esm/descriptor/Output.d.ts.map +1 -0
  222. package/dist/esm/descriptor/Output.js +32 -0
  223. package/dist/esm/descriptor/VirtualSize.d.ts +23 -0
  224. package/dist/esm/descriptor/VirtualSize.d.ts.map +1 -0
  225. package/dist/esm/descriptor/VirtualSize.js +94 -0
  226. package/dist/esm/descriptor/address.d.ts +5 -0
  227. package/dist/esm/descriptor/address.d.ts.map +1 -0
  228. package/dist/esm/descriptor/address.js +11 -0
  229. package/dist/esm/descriptor/derive.d.ts +13 -0
  230. package/dist/esm/descriptor/derive.d.ts.map +1 -0
  231. package/dist/esm/descriptor/derive.js +38 -0
  232. package/dist/esm/descriptor/fromFixedScriptWallet.d.ts +16 -0
  233. package/dist/esm/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  234. package/dist/esm/descriptor/fromFixedScriptWallet.js +51 -0
  235. package/dist/esm/descriptor/index.d.ts +11 -0
  236. package/dist/esm/descriptor/index.d.ts.map +1 -0
  237. package/dist/esm/descriptor/index.js +11 -0
  238. package/dist/esm/descriptor/parse/PatternMatcher.d.ts +14 -0
  239. package/dist/esm/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  240. package/dist/esm/descriptor/parse/PatternMatcher.js +56 -0
  241. package/dist/esm/descriptor/psbt/assertSatisfiable.d.ts +20 -0
  242. package/dist/{src → esm}/descriptor/psbt/assertSatisfiable.d.ts.map +1 -1
  243. package/dist/esm/descriptor/psbt/assertSatisfiable.js +69 -0
  244. package/dist/esm/descriptor/psbt/createPsbt.d.ts +23 -0
  245. package/dist/esm/descriptor/psbt/createPsbt.d.ts.map +1 -0
  246. package/dist/esm/descriptor/psbt/createPsbt.js +69 -0
  247. package/dist/esm/descriptor/psbt/findDescriptors.d.ts +26 -0
  248. package/dist/esm/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  249. package/dist/esm/descriptor/psbt/findDescriptors.js +94 -0
  250. package/dist/esm/descriptor/psbt/index.d.ts +7 -0
  251. package/dist/{src → esm}/descriptor/psbt/index.d.ts.map +1 -1
  252. package/dist/esm/descriptor/psbt/index.js +7 -0
  253. package/dist/esm/descriptor/psbt/parse.d.ts +27 -0
  254. package/dist/esm/descriptor/psbt/parse.d.ts.map +1 -0
  255. package/dist/esm/descriptor/psbt/parse.js +51 -0
  256. package/dist/esm/descriptor/psbt/sign.d.ts +26 -0
  257. package/dist/esm/descriptor/psbt/sign.d.ts.map +1 -0
  258. package/dist/esm/descriptor/psbt/sign.js +34 -0
  259. package/dist/esm/descriptor/psbt/wrap.d.ts +12 -0
  260. package/dist/{src → esm}/descriptor/psbt/wrap.d.ts.map +1 -1
  261. package/dist/esm/descriptor/psbt/wrap.js +38 -0
  262. package/dist/esm/dustThreshold.d.ts +4 -0
  263. package/dist/esm/dustThreshold.d.ts.map +1 -0
  264. package/dist/esm/dustThreshold.js +97 -0
  265. package/dist/esm/index.d.ts +10 -0
  266. package/dist/esm/index.d.ts.map +1 -0
  267. package/dist/esm/index.js +10 -0
  268. package/dist/esm/paygo/attestation.d.ts +11 -0
  269. package/dist/esm/paygo/attestation.d.ts.map +1 -0
  270. package/dist/esm/paygo/attestation.js +18 -0
  271. package/dist/esm/paygo/index.d.ts +3 -0
  272. package/dist/esm/paygo/index.d.ts.map +1 -0
  273. package/dist/esm/paygo/index.js +3 -0
  274. package/dist/esm/paygo/parsePayGoAttestation.d.ts +16 -0
  275. package/dist/esm/paygo/parsePayGoAttestation.d.ts.map +1 -0
  276. package/dist/esm/paygo/parsePayGoAttestation.js +43 -0
  277. package/dist/esm/paygo/psbt/Errors.d.ts +22 -0
  278. package/dist/esm/paygo/psbt/Errors.d.ts.map +1 -0
  279. package/dist/esm/paygo/psbt/Errors.js +35 -0
  280. package/dist/esm/paygo/psbt/index.d.ts +2 -0
  281. package/dist/esm/paygo/psbt/index.d.ts.map +1 -0
  282. package/dist/esm/paygo/psbt/index.js +2 -0
  283. package/dist/esm/paygo/psbt/payGoAddressProof.d.ts +29 -0
  284. package/dist/esm/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  285. package/dist/esm/paygo/psbt/payGoAddressProof.js +85 -0
  286. package/dist/esm/testutil/descriptor/descriptors.d.ts +13 -0
  287. package/dist/esm/testutil/descriptor/descriptors.d.ts.map +1 -0
  288. package/dist/esm/testutil/descriptor/descriptors.js +150 -0
  289. package/dist/esm/testutil/descriptor/index.d.ts +4 -0
  290. package/dist/esm/testutil/descriptor/index.js +4 -0
  291. package/dist/esm/testutil/descriptor/mock.utils.d.ts +36 -0
  292. package/dist/esm/testutil/descriptor/mock.utils.d.ts.map +1 -0
  293. package/dist/esm/testutil/descriptor/mock.utils.js +53 -0
  294. package/dist/esm/testutil/descriptor/psbt.utils.d.ts +4 -0
  295. package/dist/{src → esm}/testutil/descriptor/psbt.utils.d.ts.map +1 -1
  296. package/dist/esm/testutil/descriptor/psbt.utils.js +17 -0
  297. package/dist/esm/testutil/fixtures.utils.d.ts +15 -0
  298. package/dist/{src → esm}/testutil/fixtures.utils.js +5 -42
  299. package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
  300. package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  301. package/dist/esm/testutil/generatePayGoAttestationProof.utils.js +32 -0
  302. package/dist/esm/testutil/index.d.ts +6 -0
  303. package/dist/{src → esm}/testutil/index.d.ts.map +1 -1
  304. package/dist/esm/testutil/index.js +6 -0
  305. package/dist/esm/testutil/key.utils.d.ts +16 -0
  306. package/dist/{src → esm}/testutil/key.utils.d.ts.map +1 -1
  307. package/dist/esm/testutil/key.utils.js +22 -0
  308. package/dist/esm/testutil/toPlainObject.utils.d.ts +11 -0
  309. package/dist/{src → esm}/testutil/toPlainObject.utils.d.ts.map +1 -1
  310. package/dist/esm/testutil/toPlainObject.utils.js +85 -0
  311. package/dist/esm/testutil/trimMessagePrefix.d.ts +11 -0
  312. package/dist/esm/testutil/trimMessagePrefix.d.ts.map +1 -0
  313. package/dist/esm/testutil/trimMessagePrefix.js +24 -0
  314. package/dist/esm/xOnlyPubkey.d.ts +2 -0
  315. package/dist/esm/xOnlyPubkey.d.ts.map +1 -0
  316. package/dist/esm/xOnlyPubkey.js +15 -0
  317. package/package.json +51 -22
  318. package/dist/src/descriptor/DescriptorMap.js +0 -12
  319. package/dist/src/descriptor/Output.d.ts +0 -24
  320. package/dist/src/descriptor/Output.d.ts.map +0 -1
  321. package/dist/src/descriptor/Output.js +0 -22
  322. package/dist/src/descriptor/VirtualSize.d.ts.map +0 -1
  323. package/dist/src/descriptor/VirtualSize.js +0 -87
  324. package/dist/src/descriptor/address.d.ts.map +0 -1
  325. package/dist/src/descriptor/index.d.ts +0 -9
  326. package/dist/src/descriptor/index.d.ts.map +0 -1
  327. package/dist/src/descriptor/index.js +0 -49
  328. package/dist/src/descriptor/psbt/assertSatisfiable.js +0 -74
  329. package/dist/src/descriptor/psbt/createPsbt.d.ts +0 -15
  330. package/dist/src/descriptor/psbt/createPsbt.d.ts.map +0 -1
  331. package/dist/src/descriptor/psbt/createPsbt.js +0 -82
  332. package/dist/src/descriptor/psbt/findDescriptors.d.ts.map +0 -1
  333. package/dist/src/descriptor/psbt/findDescriptors.js +0 -85
  334. package/dist/src/descriptor/psbt/parse.d.ts.map +0 -1
  335. package/dist/src/descriptor/psbt/parse.js +0 -87
  336. package/dist/src/descriptor/psbt/wrap.js +0 -76
  337. package/dist/src/index.d.ts +0 -3
  338. package/dist/src/index.d.ts.map +0 -1
  339. package/dist/src/testutil/descriptor/descriptors.d.ts.map +0 -1
  340. package/dist/src/testutil/descriptor/descriptors.js +0 -105
  341. package/dist/src/testutil/descriptor/mock.utils.d.ts.map +0 -1
  342. package/dist/src/testutil/descriptor/mock.utils.js +0 -87
  343. package/dist/src/testutil/descriptor/psbt.utils.js +0 -20
  344. package/dist/src/testutil/index.d.ts +0 -4
  345. package/dist/src/testutil/key.utils.js +0 -59
  346. package/dist/src/testutil/toPlainObject.utils.js +0 -75
  347. /package/dist/{src → cjs/src}/testutil/descriptor/index.d.ts +0 -0
  348. /package/dist/{src → cjs/src}/testutil/descriptor/psbt.utils.d.ts +0 -0
  349. /package/dist/{src → cjs/src}/testutil/fixtures.utils.d.ts +0 -0
  350. /package/dist/{src → cjs/src}/testutil/toPlainObject.utils.d.ts +0 -0
  351. /package/dist/{src → esm}/testutil/descriptor/index.d.ts.map +0 -0
  352. /package/dist/{src → esm}/testutil/fixtures.utils.d.ts.map +0 -0
@@ -0,0 +1,62 @@
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 crypto = __importStar(require("crypto"));
37
+ const assert = __importStar(require("assert"));
38
+ const secp256k1_1 = require("@bitgo-beta/secp256k1");
39
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
40
+ const bip32utils_1 = require("../src/bip32utils");
41
+ describe('bip32utils', function () {
42
+ function getSeedBuffers(length) {
43
+ return Array.from({ length }).map((_, i) => crypto.createHash('sha256').update(`${i}`).digest());
44
+ }
45
+ it('signMessage/verifyMessage', function () {
46
+ const keys = getSeedBuffers(4).map((seed) => secp256k1_1.bip32.fromSeed(seed));
47
+ const messages = ['hello', 'goodbye', Buffer.from('\x01\x02\x03'), Buffer.from('')];
48
+ keys.forEach((key) => {
49
+ messages.forEach((message) => {
50
+ const signature = (0, bip32utils_1.signMessage)(message, key, utxolib.networks.bitcoin);
51
+ keys.forEach((otherKey) => {
52
+ messages.forEach((otherMessage) => {
53
+ const expectValid = message === otherMessage && key === otherKey;
54
+ assert.strictEqual((0, bip32utils_1.verifyMessage)(otherMessage, otherKey, signature, utxolib.networks.bitcoin), expectValid);
55
+ assert.strictEqual((0, bip32utils_1.verifyMessage)(Buffer.from(otherMessage), otherKey, signature, utxolib.networks.bitcoin), expectValid);
56
+ });
57
+ });
58
+ });
59
+ });
60
+ });
61
+ });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlwMzJ1dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvYmlwMzJ1dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQywrQ0FBaUM7QUFFakMscURBQThDO0FBQzlDLDhEQUFnRDtBQUVoRCxrREFBK0Q7QUFFL0QsUUFBUSxDQUFDLFlBQVksRUFBRTtJQUNyQixTQUFTLGNBQWMsQ0FBQyxNQUFjO1FBQ3BDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUNELEVBQUUsQ0FBQywyQkFBMkIsRUFBRTtRQUM5QixNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxpQkFBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbkIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFBLHdCQUFXLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUV0RSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ3hCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTt3QkFDaEMsTUFBTSxXQUFXLEdBQUcsT0FBTyxLQUFLLFlBQVksSUFBSSxHQUFHLEtBQUssUUFBUSxDQUFDO3dCQUNqRSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsMEJBQWEsRUFBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO3dCQUM1RyxNQUFNLENBQUMsV0FBVyxDQUNoQixJQUFBLDBCQUFhLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQ3ZGLFdBQVcsQ0FDWixDQUFDO29CQUNKLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBiaXAzMiB9IGZyb20gJ0BiaXRnby1iZXRhL3NlY3AyNTZrMSc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgc2lnbk1lc3NhZ2UsIHZlcmlmeU1lc3NhZ2UgfSBmcm9tICcuLi9zcmMvYmlwMzJ1dGlscyc7XG5cbmRlc2NyaWJlKCdiaXAzMnV0aWxzJywgZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBnZXRTZWVkQnVmZmVycyhsZW5ndGg6IG51bWJlcikge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoIH0pLm1hcCgoXywgaSkgPT4gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShgJHtpfWApLmRpZ2VzdCgpKTtcbiAgfVxuICBpdCgnc2lnbk1lc3NhZ2UvdmVyaWZ5TWVzc2FnZScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBrZXlzID0gZ2V0U2VlZEJ1ZmZlcnMoNCkubWFwKChzZWVkKSA9PiBiaXAzMi5mcm9tU2VlZChzZWVkKSk7XG4gICAgY29uc3QgbWVzc2FnZXMgPSBbJ2hlbGxvJywgJ2dvb2RieWUnLCBCdWZmZXIuZnJvbSgnXFx4MDFcXHgwMlxceDAzJyksIEJ1ZmZlci5mcm9tKCcnKV07XG4gICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIG1lc3NhZ2VzLmZvckVhY2goKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gc2lnbk1lc3NhZ2UobWVzc2FnZSwga2V5LCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pO1xuXG4gICAgICAgIGtleXMuZm9yRWFjaCgob3RoZXJLZXkpID0+IHtcbiAgICAgICAgICBtZXNzYWdlcy5mb3JFYWNoKChvdGhlck1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4cGVjdFZhbGlkID0gbWVzc2FnZSA9PT0gb3RoZXJNZXNzYWdlICYmIGtleSA9PT0gb3RoZXJLZXk7XG4gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmVyaWZ5TWVzc2FnZShvdGhlck1lc3NhZ2UsIG90aGVyS2V5LCBzaWduYXR1cmUsIHV0eG9saWIubmV0d29ya3MuYml0Y29pbiksIGV4cGVjdFZhbGlkKTtcbiAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgICAgICAgICAgdmVyaWZ5TWVzc2FnZShCdWZmZXIuZnJvbShvdGhlck1lc3NhZ2UpLCBvdGhlcktleSwgc2lnbmF0dXJlLCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pLFxuICAgICAgICAgICAgICBleHBlY3RWYWxpZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=locktime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locktime.d.ts","sourceRoot":"","sources":["../../../../test/bip65/locktime.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
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 locktime_1 = require("../../src/bip65/locktime");
8
+ describe('locktime', function () {
9
+ it('encodes relative and absolute locktimes', function () {
10
+ assert_1.default.strictEqual((0, locktime_1.encodeLocktime)({ blocks: 1 }), 1);
11
+ assert_1.default.strictEqual((0, locktime_1.encodeLocktime)({ blocks: 500000000 - 1 }), 500000000 - 1);
12
+ assert_1.default.strictEqual((0, locktime_1.encodeLocktime)(new Date('1985-11-05T00:53:20Z')), 500000000);
13
+ assert_1.default.strictEqual((0, locktime_1.encodeLocktime)(new Date('2033-05-18T03:33:20.000Z')), 2000000000);
14
+ assert_1.default.throws(() => {
15
+ (0, locktime_1.encodeLocktime)({ blocks: 500000000 });
16
+ });
17
+ assert_1.default.throws(() => {
18
+ (0, locktime_1.encodeLocktime)(new Date('1985-11-05T00:53:19Z'));
19
+ });
20
+ });
21
+ });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ja3RpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L2JpcDY1L2xvY2t0aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLHVEQUEwRDtBQUUxRCxRQUFRLENBQUMsVUFBVSxFQUFFO0lBQ25CLEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRTtRQUM1QyxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLHlCQUFjLEVBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLHlCQUFjLEVBQUMsRUFBRSxNQUFNLEVBQUUsU0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLGdCQUFNLENBQUMsV0FBVyxDQUFDLElBQUEseUJBQWMsRUFBQyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsU0FBVyxDQUFDLENBQUM7UUFDbEYsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsSUFBQSx5QkFBYyxFQUFDLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsRUFBRSxVQUFhLENBQUMsQ0FBQztRQUN4RixnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBQSx5QkFBYyxFQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVcsRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBQSx5QkFBYyxFQUFDLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IGVuY29kZUxvY2t0aW1lIH0gZnJvbSAnLi4vLi4vc3JjL2JpcDY1L2xvY2t0aW1lJztcblxuZGVzY3JpYmUoJ2xvY2t0aW1lJywgZnVuY3Rpb24gKCkge1xuICBpdCgnZW5jb2RlcyByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgbG9ja3RpbWVzJywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbmNvZGVMb2NrdGltZSh7IGJsb2NrczogMSB9KSwgMSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGVuY29kZUxvY2t0aW1lKHsgYmxvY2tzOiA1MDBfMDAwXzAwMCAtIDEgfSksIDUwMF8wMDBfMDAwIC0gMSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGVuY29kZUxvY2t0aW1lKG5ldyBEYXRlKCcxOTg1LTExLTA1VDAwOjUzOjIwWicpKSwgNTAwXzAwMF8wMDApO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbmNvZGVMb2NrdGltZShuZXcgRGF0ZSgnMjAzMy0wNS0xOFQwMzozMzoyMC4wMDBaJykpLCAyXzAwMF8wMDBfMDAwKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgIGVuY29kZUxvY2t0aW1lKHsgYmxvY2tzOiA1MDBfMDAwXzAwMCB9KTtcbiAgICB9KTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgIGVuY29kZUxvY2t0aW1lKG5ldyBEYXRlKCcxOTg1LTExLTA1VDAwOjUzOjE5WicpKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Output.d.ts","sourceRoot":"","sources":["../../../../test/descriptor/Output.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
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 Output_1 = require("../../src/descriptor/Output");
8
+ const descriptor_1 = require("../../src/testutil/descriptor");
9
+ const descriptor_2 = require("../../src/descriptor");
10
+ describe('decscriptor.Output', function () {
11
+ const descriptor = (0, descriptor_1.getDescriptor)('Wsh2Of3');
12
+ it('isInternalOutput correctly identifies internal outputs', function () {
13
+ const internalOutput = { value: 1n, descriptor };
14
+ const externalOutput = { value: 1n };
15
+ assert_1.default.strictEqual((0, Output_1.isInternalOutput)(internalOutput), true);
16
+ assert_1.default.strictEqual((0, Output_1.isInternalOutput)(externalOutput), false);
17
+ });
18
+ it('isExternalOutput correctly identifies external outputs', function () {
19
+ const internalOutput = { value: 1n, descriptor };
20
+ const externalOutput = { value: 1n };
21
+ assert_1.default.strictEqual((0, Output_1.isExternalOutput)(internalOutput), false);
22
+ assert_1.default.strictEqual((0, Output_1.isExternalOutput)(externalOutput), true);
23
+ });
24
+ it('toDerivedDescriptorWalletOutput returns expected values', function () {
25
+ const derivable = descriptor;
26
+ const definite = derivable.atDerivationIndex(0);
27
+ for (const descriptor of [derivable, definite]) {
28
+ const descriptorIndex = descriptor === derivable ? 0 : undefined;
29
+ const descriptorMap = new Map([['desc', descriptor]]);
30
+ const descriptorWalletOutput = {
31
+ hash: Buffer.alloc(32).toString('hex'),
32
+ index: 0,
33
+ witnessUtxo: {
34
+ script: (0, descriptor_2.createScriptPubKeyFromDescriptor)(descriptor, descriptorIndex),
35
+ value: 1n,
36
+ },
37
+ descriptorName: 'desc',
38
+ descriptorIndex,
39
+ };
40
+ assert_1.default.strictEqual((0, Output_1.toDerivedDescriptorWalletOutput)(descriptorWalletOutput, descriptorMap).descriptor.toString(), definite.toString());
41
+ }
42
+ });
43
+ });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC9kZXNjcmlwdG9yL091dHB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUU1Qix3REFBa0g7QUFDbEgsOERBQThEO0FBQzlELHFEQUF3RTtBQUV4RSxRQUFRLENBQUMsb0JBQW9CLEVBQUU7SUFDN0IsTUFBTSxVQUFVLEdBQUcsSUFBQSwwQkFBYSxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTVDLEVBQUUsQ0FBQyx3REFBd0QsRUFBRTtRQUMzRCxNQUFNLGNBQWMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDakQsTUFBTSxjQUFjLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFFckMsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsSUFBQSx5QkFBZ0IsRUFBQyxjQUFjLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLHlCQUFnQixFQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHdEQUF3RCxFQUFFO1FBQzNELE1BQU0sY0FBYyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUNqRCxNQUFNLGNBQWMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUVyQyxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLHlCQUFnQixFQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVELGdCQUFNLENBQUMsV0FBVyxDQUFDLElBQUEseUJBQWdCLEVBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMseURBQXlELEVBQUU7UUFDNUQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDO1FBQzdCLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxLQUFLLE1BQU0sVUFBVSxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDL0MsTUFBTSxlQUFlLEdBQUcsVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDakUsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsTUFBTSxzQkFBc0IsR0FBRztnQkFDN0IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDdEMsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsV0FBVyxFQUFFO29CQUNYLE1BQU0sRUFBRSxJQUFBLDZDQUFnQyxFQUFDLFVBQVUsRUFBRSxlQUFlLENBQUM7b0JBQ3JFLEtBQUssRUFBRSxFQUFFO2lCQUNWO2dCQUNELGNBQWMsRUFBRSxNQUFNO2dCQUN0QixlQUFlO2FBQ2hCLENBQUM7WUFDRixnQkFBTSxDQUFDLFdBQVcsQ0FDaEIsSUFBQSx3Q0FBK0IsRUFBQyxzQkFBc0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQzVGLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FDcEIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBpc0V4dGVybmFsT3V0cHV0LCBpc0ludGVybmFsT3V0cHV0LCB0b0Rlcml2ZWREZXNjcmlwdG9yV2FsbGV0T3V0cHV0IH0gZnJvbSAnLi4vLi4vc3JjL2Rlc2NyaXB0b3IvT3V0cHV0JztcbmltcG9ydCB7IGdldERlc2NyaXB0b3IgfSBmcm9tICcuLi8uLi9zcmMvdGVzdHV0aWwvZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBjcmVhdGVTY3JpcHRQdWJLZXlGcm9tRGVzY3JpcHRvciB9IGZyb20gJy4uLy4uL3NyYy9kZXNjcmlwdG9yJztcblxuZGVzY3JpYmUoJ2RlY3NjcmlwdG9yLk91dHB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZGVzY3JpcHRvciA9IGdldERlc2NyaXB0b3IoJ1dzaDJPZjMnKTtcblxuICBpdCgnaXNJbnRlcm5hbE91dHB1dCBjb3JyZWN0bHkgaWRlbnRpZmllcyBpbnRlcm5hbCBvdXRwdXRzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGludGVybmFsT3V0cHV0ID0geyB2YWx1ZTogMW4sIGRlc2NyaXB0b3IgfTtcbiAgICBjb25zdCBleHRlcm5hbE91dHB1dCA9IHsgdmFsdWU6IDFuIH07XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNJbnRlcm5hbE91dHB1dChpbnRlcm5hbE91dHB1dCksIHRydWUpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc0ludGVybmFsT3V0cHV0KGV4dGVybmFsT3V0cHV0KSwgZmFsc2UpO1xuICB9KTtcblxuICBpdCgnaXNFeHRlcm5hbE91dHB1dCBjb3JyZWN0bHkgaWRlbnRpZmllcyBleHRlcm5hbCBvdXRwdXRzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGludGVybmFsT3V0cHV0ID0geyB2YWx1ZTogMW4sIGRlc2NyaXB0b3IgfTtcbiAgICBjb25zdCBleHRlcm5hbE91dHB1dCA9IHsgdmFsdWU6IDFuIH07XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNFeHRlcm5hbE91dHB1dChpbnRlcm5hbE91dHB1dCksIGZhbHNlKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNFeHRlcm5hbE91dHB1dChleHRlcm5hbE91dHB1dCksIHRydWUpO1xuICB9KTtcblxuICBpdCgndG9EZXJpdmVkRGVzY3JpcHRvcldhbGxldE91dHB1dCByZXR1cm5zIGV4cGVjdGVkIHZhbHVlcycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkZXJpdmFibGUgPSBkZXNjcmlwdG9yO1xuICAgIGNvbnN0IGRlZmluaXRlID0gZGVyaXZhYmxlLmF0RGVyaXZhdGlvbkluZGV4KDApO1xuICAgIGZvciAoY29uc3QgZGVzY3JpcHRvciBvZiBbZGVyaXZhYmxlLCBkZWZpbml0ZV0pIHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3JJbmRleCA9IGRlc2NyaXB0b3IgPT09IGRlcml2YWJsZSA/IDAgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBkZXNjcmlwdG9yTWFwID0gbmV3IE1hcChbWydkZXNjJywgZGVzY3JpcHRvcl1dKTtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3JXYWxsZXRPdXRwdXQgPSB7XG4gICAgICAgIGhhc2g6IEJ1ZmZlci5hbGxvYygzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBpbmRleDogMCxcbiAgICAgICAgd2l0bmVzc1V0eG86IHtcbiAgICAgICAgICBzY3JpcHQ6IGNyZWF0ZVNjcmlwdFB1YktleUZyb21EZXNjcmlwdG9yKGRlc2NyaXB0b3IsIGRlc2NyaXB0b3JJbmRleCksXG4gICAgICAgICAgdmFsdWU6IDFuLFxuICAgICAgICB9LFxuICAgICAgICBkZXNjcmlwdG9yTmFtZTogJ2Rlc2MnLFxuICAgICAgICBkZXNjcmlwdG9ySW5kZXgsXG4gICAgICB9O1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgICB0b0Rlcml2ZWREZXNjcmlwdG9yV2FsbGV0T3V0cHV0KGRlc2NyaXB0b3JXYWxsZXRPdXRwdXQsIGRlc2NyaXB0b3JNYXApLmRlc2NyaXB0b3IudG9TdHJpbmcoKSxcbiAgICAgICAgZGVmaW5pdGUudG9TdHJpbmcoKVxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=derive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../../../test/descriptor/derive.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
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 descriptor_1 = require("../../src/testutil/descriptor");
8
+ const derive_1 = require("../../src/descriptor/derive");
9
+ describe('derive', function () {
10
+ const derivable = (0, descriptor_1.getDescriptor)('Wsh2Of3');
11
+ const definite = derivable.atDerivationIndex(0);
12
+ it('getDescriptorAtIndex', function () {
13
+ (0, assert_1.default)(derivable.hasWildcard());
14
+ (0, assert_1.default)(!definite.hasWildcard());
15
+ assert_1.default.strictEqual((0, derive_1.getDescriptorAtIndex)(derivable, 0).toString(), definite.toString());
16
+ assert_1.default.strictEqual((0, derive_1.getDescriptorAtIndex)(definite, undefined).toString(), definite.toString());
17
+ assert_1.default.throws(() => (0, derive_1.getDescriptorAtIndex)(derivable, undefined), /Derivable descriptor requires an index/);
18
+ assert_1.default.throws(() => (0, derive_1.getDescriptorAtIndex)(definite, 0), /Definite descriptor cannot be derived with index/);
19
+ });
20
+ it('getDescriptorAtIndexCheckScript', function () {
21
+ const script0 = Buffer.from(derivable.atDerivationIndex(0).scriptPubkey());
22
+ const script1 = Buffer.from(derivable.atDerivationIndex(1).scriptPubkey());
23
+ assert_1.default.strictEqual((0, derive_1.getDescriptorAtIndexCheckScript)(derivable, 0, script0).toString(), definite.toString());
24
+ assert_1.default.throws(() => (0, derive_1.getDescriptorAtIndexCheckScript)(derivable, 0, script1), /Script mismatch/);
25
+ });
26
+ });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyaXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC9kZXNjcmlwdG9yL2Rlcml2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUU1Qiw4REFBOEQ7QUFDOUQsd0RBQW9HO0FBRXBHLFFBQVEsQ0FBQyxRQUFRLEVBQUU7SUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBQSwwQkFBYSxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVoRCxFQUFFLENBQUMsc0JBQXNCLEVBQUU7UUFDekIsSUFBQSxnQkFBTSxFQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUEsZ0JBQU0sRUFBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLGdCQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsNkJBQW9CLEVBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLGdCQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsNkJBQW9CLEVBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEsNkJBQW9CLEVBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxFQUFFLHdDQUF3QyxDQUFDLENBQUM7UUFDMUcsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSw2QkFBb0IsRUFBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsa0RBQWtELENBQUMsQ0FBQztJQUM3RyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRTtRQUNwQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDM0UsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsSUFBQSx3Q0FBK0IsRUFBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzNHLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEsd0NBQStCLEVBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2pHLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IGdldERlc2NyaXB0b3IgfSBmcm9tICcuLi8uLi9zcmMvdGVzdHV0aWwvZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBnZXREZXNjcmlwdG9yQXRJbmRleCwgZ2V0RGVzY3JpcHRvckF0SW5kZXhDaGVja1NjcmlwdCB9IGZyb20gJy4uLy4uL3NyYy9kZXNjcmlwdG9yL2Rlcml2ZSc7XG5cbmRlc2NyaWJlKCdkZXJpdmUnLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGRlcml2YWJsZSA9IGdldERlc2NyaXB0b3IoJ1dzaDJPZjMnKTtcbiAgY29uc3QgZGVmaW5pdGUgPSBkZXJpdmFibGUuYXREZXJpdmF0aW9uSW5kZXgoMCk7XG5cbiAgaXQoJ2dldERlc2NyaXB0b3JBdEluZGV4JywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydChkZXJpdmFibGUuaGFzV2lsZGNhcmQoKSk7XG4gICAgYXNzZXJ0KCFkZWZpbml0ZS5oYXNXaWxkY2FyZCgpKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ2V0RGVzY3JpcHRvckF0SW5kZXgoZGVyaXZhYmxlLCAwKS50b1N0cmluZygpLCBkZWZpbml0ZS50b1N0cmluZygpKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ2V0RGVzY3JpcHRvckF0SW5kZXgoZGVmaW5pdGUsIHVuZGVmaW5lZCkudG9TdHJpbmcoKSwgZGVmaW5pdGUudG9TdHJpbmcoKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBnZXREZXNjcmlwdG9yQXRJbmRleChkZXJpdmFibGUsIHVuZGVmaW5lZCksIC9EZXJpdmFibGUgZGVzY3JpcHRvciByZXF1aXJlcyBhbiBpbmRleC8pO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gZ2V0RGVzY3JpcHRvckF0SW5kZXgoZGVmaW5pdGUsIDApLCAvRGVmaW5pdGUgZGVzY3JpcHRvciBjYW5ub3QgYmUgZGVyaXZlZCB3aXRoIGluZGV4Lyk7XG4gIH0pO1xuXG4gIGl0KCdnZXREZXNjcmlwdG9yQXRJbmRleENoZWNrU2NyaXB0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNjcmlwdDAgPSBCdWZmZXIuZnJvbShkZXJpdmFibGUuYXREZXJpdmF0aW9uSW5kZXgoMCkuc2NyaXB0UHVia2V5KCkpO1xuICAgIGNvbnN0IHNjcmlwdDEgPSBCdWZmZXIuZnJvbShkZXJpdmFibGUuYXREZXJpdmF0aW9uSW5kZXgoMSkuc2NyaXB0UHVia2V5KCkpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXREZXNjcmlwdG9yQXRJbmRleENoZWNrU2NyaXB0KGRlcml2YWJsZSwgMCwgc2NyaXB0MCkudG9TdHJpbmcoKSwgZGVmaW5pdGUudG9TdHJpbmcoKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBnZXREZXNjcmlwdG9yQXRJbmRleENoZWNrU2NyaXB0KGRlcml2YWJsZSwgMCwgc2NyaXB0MSksIC9TY3JpcHQgbWlzbWF0Y2gvKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fromFixedScriptWallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fromFixedScriptWallet.d.ts","sourceRoot":"","sources":["../../../../test/descriptor/fromFixedScriptWallet.ts"],"names":[],"mappings":""}
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0dGVybk1hdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L2Rlc2NyaXB0b3IvcGFyc2UvUGF0dGVybk1hdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsZ0RBQW1EO0FBRW5ELG9EQUErQztBQUMvQyxzQ0FBZ0Q7QUFDaEQsaUZBQXVGO0FBRXZGLFNBQVMsS0FBSyxDQUFDLElBQVk7SUFDekIscUNBQXFDO0lBQ3JDLE9BQU8sSUFBQSxzQkFBZ0IsRUFBQyxJQUFBLGlCQUFNLEVBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUVELFNBQVMsaUJBQWlCO0lBQ3hCLE9BQU8sa0VBQWtFLENBQUM7QUFDNUUsQ0FBQztBQUVELFNBQVMsRUFBRSxDQUFDLENBQVM7SUFDbkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDdkMsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQWM7SUFDaEMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxTQUFpQixFQUFFLElBQWM7SUFDbEQsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLENBQWtCO0lBQ2xELE9BQU8sc0JBQVUsQ0FBQyxVQUFVLENBQUMsZUFBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzdGLENBQUM7QUFFRCxNQUFNLHdCQUF3QjtJQUM1QixZQUNTLE9BQWUsRUFDZixZQUFzQixFQUN0QixZQUFzQixFQUN0QixpQkFBeUIsRUFDekIsZUFBdUI7UUFKdkIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQUN6QixvQkFBZSxHQUFmLGVBQWUsQ0FBUTtJQUM3QixDQUFDO0lBRUoseUJBQXlCO1FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEUsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMxRyxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLE9BQU87WUFDTCxLQUFLLEVBQUU7Z0JBQ0w7b0JBQ0UsS0FBSyxFQUFFO3dCQUNMLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDOzRCQUM1QixDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7NEJBQ2xELENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtxQkFDckQ7aUJBQ0Y7Z0JBQ0QsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7YUFDbEU7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLHdCQUF3QixDQUFDO1lBQzlCLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUMvQixDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxFQUFFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1NBQ3ZFLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELDJDQUEyQztBQUMzQyxTQUFTLHNCQUFzQixDQUFDLFVBQXNCO0lBS3BELE1BQU0sT0FBTyxHQUFZO1FBQ3ZCLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQzdHLENBQUM7SUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUFjLEVBQUUsQ0FBQztJQUNyQyxNQUFNLGNBQWMsR0FBRyxlQUFHLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXRELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU87UUFDTCxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQWlDO1FBQ3JELGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBb0M7UUFDM0QsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFrQztLQUN4RCxDQUFDO0FBQ0osQ0FBQztBQUVELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtJQUN6QixFQUFFLENBQUMsMkJBQTJCLEVBQUU7UUFDOUIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2pELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSwrQkFBYyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN2RCxnQkFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRTtRQUN2QyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDakQsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLCtCQUFjLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELGdCQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRTtRQUNuQyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUN2RCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksK0JBQWMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkQsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNENBQTRDLEVBQUU7UUFDL0MsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksR0FBRyxJQUFJLCtCQUFjLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELGdCQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRTtRQUNwQyxNQUFNLE9BQU8sR0FBRyxJQUFJLHdCQUF3QixDQUMxQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQ2IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDcEIsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ3hDLENBQUMsRUFDRCxHQUFHLENBQ0osQ0FBQztRQUVGLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2xELE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxELGdCQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLGdCQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQztZQUNyRixnQkFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUM7UUFDbkYsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IERlc2NyaXB0b3IsIGFzdCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBnZXRLZXkgfSBmcm9tICcuLi8uLi8uLi9zcmMvdGVzdHV0aWwnO1xuaW1wb3J0IHsgdG9YT25seVB1YmxpY0tleSB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBQYXR0ZXJuTWF0Y2hlciwgUGF0dGVybiB9IGZyb20gJy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL3BhcnNlL1BhdHRlcm5NYXRjaGVyJztcblxuZnVuY3Rpb24ga2V5MzIoc2VlZDogc3RyaW5nKTogQnVmZmVyIHtcbiAgLy8gcmV0dXJuIHgtb25seSBwdWJsaWMga2V5IGZyb20gc2VlZFxuICByZXR1cm4gdG9YT25seVB1YmxpY0tleShnZXRLZXkoc2VlZCkucHVibGljS2V5KTtcbn1cblxuZnVuY3Rpb24gZ2V0VW5zcGVuZGFibGVLZXkoKTogc3RyaW5nIHtcbiAgcmV0dXJuICc1MDkyOWI3NGMxYTA0OTU0Yjc4YjRiNjAzNWU5N2E1ZTA3OGE1YTBmMjhlYzk2ZDU0N2JmZWU5YWNlODAzYWMwJztcbn1cblxuZnVuY3Rpb24gcGsoYjogQnVmZmVyKTogYXN0Lk1pbmlzY3JpcHROb2RlIHtcbiAgcmV0dXJuIHsgJ3Y6cGsnOiBiLnRvU3RyaW5nKCdoZXgnKSB9O1xufVxuXG5mdW5jdGlvbiBzb3J0ZWRLZXlzKGtleXM6IEJ1ZmZlcltdKTogQnVmZmVyW10ge1xuICByZXR1cm4gWy4uLmtleXNdLnNvcnQoKGEsIGIpID0+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":""}