@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,34 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import * as bitcoinMessage from 'bitcoinjs-message';
3
+ /**
4
+ * bip32-aware wrapper around bitcoin-message package
5
+ * @see {bitcoinMessage.sign}
6
+ */
7
+ export function signMessage(message, privateKey, network) {
8
+ if (!Buffer.isBuffer(privateKey)) {
9
+ privateKey = privateKey.privateKey;
10
+ if (!privateKey) {
11
+ throw new Error(`must provide privateKey`);
12
+ }
13
+ }
14
+ if (network === null || typeof network !== 'object' || typeof network.messagePrefix !== 'string') {
15
+ throw new Error(`invalid argument 'network'`);
16
+ }
17
+ const compressed = true;
18
+ return bitcoinMessage.sign(message, privateKey, compressed, network.messagePrefix);
19
+ }
20
+ /**
21
+ * bip32-aware wrapper around bitcoin-message package
22
+ * @see {bitcoinMessage.verify}
23
+ */
24
+ export function verifyMessage(message, publicKey, signature, network) {
25
+ if (!Buffer.isBuffer(publicKey)) {
26
+ publicKey = publicKey.publicKey;
27
+ }
28
+ if (network === null || typeof network !== 'object' || typeof network.messagePrefix !== 'string') {
29
+ throw new Error(`invalid argument 'network'`);
30
+ }
31
+ const address = utxolib.address.toBase58Check(utxolib.crypto.hash160(publicKey), utxolib.networks.bitcoin.pubKeyHash, utxolib.networks.bitcoin);
32
+ return bitcoinMessage.verify(message, address, signature, network.messagePrefix);
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlwMzJ1dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaXAzMnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxLQUFLLGNBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUN6QixPQUF3QixFQUN4QixVQUFtQyxFQUNuQyxPQUFrQztJQUVsQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ2pDLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBb0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxhQUFhLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDakcsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDeEIsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNyRixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsT0FBd0IsRUFDeEIsU0FBa0MsRUFDbEMsU0FBaUIsRUFDakIsT0FBa0M7SUFFbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUNoQyxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxhQUFhLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDakcsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FDM0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQ2pDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFDbkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQ3pCLENBQUM7SUFDRixPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ25GLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3NlY3AyNTZrMSc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCAqIGFzIGJpdGNvaW5NZXNzYWdlIGZyb20gJ2JpdGNvaW5qcy1tZXNzYWdlJztcbi8qKlxuICogYmlwMzItYXdhcmUgd3JhcHBlciBhcm91bmQgYml0Y29pbi1tZXNzYWdlIHBhY2thZ2VcbiAqIEBzZWUge2JpdGNvaW5NZXNzYWdlLnNpZ259XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduTWVzc2FnZShcbiAgbWVzc2FnZTogc3RyaW5nIHwgQnVmZmVyLFxuICBwcml2YXRlS2V5OiBCSVAzMkludGVyZmFjZSB8IEJ1ZmZlcixcbiAgbmV0d29yazogeyBtZXNzYWdlUHJlZml4OiBzdHJpbmcgfVxuKTogQnVmZmVyIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpdmF0ZUtleSkpIHtcbiAgICBwcml2YXRlS2V5ID0gcHJpdmF0ZUtleS5wcml2YXRlS2V5IGFzIEJ1ZmZlcjtcbiAgICBpZiAoIXByaXZhdGVLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbXVzdCBwcm92aWRlIHByaXZhdGVLZXlgKTtcbiAgICB9XG4gIH1cbiAgaWYgKG5ldHdvcmsgPT09IG51bGwgfHwgdHlwZW9mIG5ldHdvcmsgIT09ICdvYmplY3QnIHx8IHR5cGVvZiBuZXR3b3JrLm1lc3NhZ2VQcmVmaXggIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGFyZ3VtZW50ICduZXR3b3JrJ2ApO1xuICB9XG4gIGNvbnN0IGNvbXByZXNzZWQgPSB0cnVlO1xuICByZXR1cm4gYml0Y29pbk1lc3NhZ2Uuc2lnbihtZXNzYWdlLCBwcml2YXRlS2V5LCBjb21wcmVzc2VkLCBuZXR3b3JrLm1lc3NhZ2VQcmVmaXgpO1xufVxuXG4vKipcbiAqIGJpcDMyLWF3YXJlIHdyYXBwZXIgYXJvdW5kIGJpdGNvaW4tbWVzc2FnZSBwYWNrYWdlXG4gKiBAc2VlIHtiaXRjb2luTWVzc2FnZS52ZXJpZnl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlNZXNzYWdlKFxuICBtZXNzYWdlOiBzdHJpbmcgfCBCdWZmZXIsXG4gIHB1YmxpY0tleTogQklQMzJJbnRlcmZhY2UgfCBCdWZmZXIsXG4gIHNpZ25hdHVyZTogQnVmZmVyLFxuICBuZXR3b3JrOiB7IG1lc3NhZ2VQcmVmaXg6IHN0cmluZyB9XG4pOiBib29sZWFuIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHVibGljS2V5KSkge1xuICAgIHB1YmxpY0tleSA9IHB1YmxpY0tleS5wdWJsaWNLZXk7XG4gIH1cbiAgaWYgKG5ldHdvcmsgPT09IG51bGwgfHwgdHlwZW9mIG5ldHdvcmsgIT09ICdvYmplY3QnIHx8IHR5cGVvZiBuZXR3b3JrLm1lc3NhZ2VQcmVmaXggIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGFyZ3VtZW50ICduZXR3b3JrJ2ApO1xuICB9XG5cbiAgY29uc3QgYWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy50b0Jhc2U1OENoZWNrKFxuICAgIHV0eG9saWIuY3J5cHRvLmhhc2gxNjAocHVibGljS2V5KSxcbiAgICB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4ucHViS2V5SGFzaCxcbiAgICB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5cbiAgKTtcbiAgcmV0dXJuIGJpdGNvaW5NZXNzYWdlLnZlcmlmeShtZXNzYWdlLCBhZGRyZXNzLCBzaWduYXR1cmUsIG5ldHdvcmsubWVzc2FnZVByZWZpeCk7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './locktime';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,2 @@
1
+ export * from './locktime';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmlwNjUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xvY2t0aW1lJztcbiJdfQ==
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @param obj
3
+ * @return number
4
+ */
5
+ export declare function encodeLocktime(obj: Date | {
6
+ blocks: number;
7
+ }): number;
8
+ //# sourceMappingURL=locktime.d.ts.map
@@ -0,0 +1,34 @@
1
+ /*
2
+
3
+ Modified version of https://github.com/bitcoinjs/bip65/blob/master/index.js
4
+
5
+ BIP0065: https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki
6
+
7
+ */
8
+ // https://github.com/bitcoin/bitcoin/blob/v28.0/src/script/script.h#L44-L46
9
+ const LOCKTIME_THRESHOLD = 500000000;
10
+ /**
11
+ * @param obj
12
+ * @return number
13
+ */
14
+ export function encodeLocktime(obj) {
15
+ if (obj instanceof Date) {
16
+ if (!Number.isFinite(obj.getTime())) {
17
+ throw new Error('invalid date');
18
+ }
19
+ const seconds = Math.floor(obj.getTime() / 1000);
20
+ if (seconds < LOCKTIME_THRESHOLD) {
21
+ throw new TypeError('Expected Number utc >= ' + LOCKTIME_THRESHOLD);
22
+ }
23
+ return seconds;
24
+ }
25
+ const { blocks } = obj;
26
+ if (!Number.isFinite(blocks) || !Number.isInteger(blocks)) {
27
+ throw new TypeError('Expected Number blocks');
28
+ }
29
+ if (blocks >= LOCKTIME_THRESHOLD) {
30
+ throw new TypeError('Expected Number blocks < ' + LOCKTIME_THRESHOLD);
31
+ }
32
+ return blocks;
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ja3RpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmlwNjUvbG9ja3RpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztFQU1FO0FBRUYsNEVBQTRFO0FBQzVFLE1BQU0sa0JBQWtCLEdBQUcsU0FBVyxDQUFDO0FBRXZDOzs7R0FHRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsR0FBOEI7SUFDM0QsSUFBSSxHQUFHLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLE9BQU8sR0FBRyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxTQUFTLENBQUMseUJBQXlCLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFFdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDMUQsTUFBTSxJQUFJLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLE1BQU0sSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxTQUFTLENBQUMsMkJBQTJCLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5cbk1vZGlmaWVkIHZlcnNpb24gb2YgaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5qcy9iaXA2NS9ibG9iL21hc3Rlci9pbmRleC5qc1xuXG5CSVAwMDY1OiBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXBzL2Jsb2IvbWFzdGVyL2JpcC0wMDY1Lm1lZGlhd2lraVxuXG4qL1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXRjb2luL2Jsb2IvdjI4LjAvc3JjL3NjcmlwdC9zY3JpcHQuaCNMNDQtTDQ2XG5jb25zdCBMT0NLVElNRV9USFJFU0hPTEQgPSA1MDBfMDAwXzAwMDtcblxuLyoqXG4gKiBAcGFyYW0gb2JqXG4gKiBAcmV0dXJuIG51bWJlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlTG9ja3RpbWUob2JqOiBEYXRlIHwgeyBibG9ja3M6IG51bWJlciB9KTogbnVtYmVyIHtcbiAgaWYgKG9iaiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShvYmouZ2V0VGltZSgpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGRhdGUnKTtcbiAgICB9XG4gICAgY29uc3Qgc2Vjb25kcyA9IE1hdGguZmxvb3Iob2JqLmdldFRpbWUoKSAvIDEwMDApO1xuICAgIGlmIChzZWNvbmRzIDwgTE9DS1RJTUVfVEhSRVNIT0xEKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBOdW1iZXIgdXRjID49ICcgKyBMT0NLVElNRV9USFJFU0hPTEQpO1xuICAgIH1cblxuICAgIHJldHVybiBzZWNvbmRzO1xuICB9XG5cbiAgY29uc3QgeyBibG9ja3MgfSA9IG9iajtcblxuICBpZiAoIU51bWJlci5pc0Zpbml0ZShibG9ja3MpIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGJsb2NrcykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBOdW1iZXIgYmxvY2tzJyk7XG4gIH1cblxuICBpZiAoYmxvY2tzID49IExPQ0tUSU1FX1RIUkVTSE9MRCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIE51bWJlciBibG9ja3MgPCAnICsgTE9DS1RJTUVfVEhSRVNIT0xEKTtcbiAgfVxuXG4gIHJldHVybiBibG9ja3M7XG59XG4iXX0=
@@ -0,0 +1,9 @@
1
+ import { Descriptor } from '@bitgo/wasm-utxo';
2
+ /** Map from descriptor name to descriptor */
3
+ export type DescriptorMap = Map<string, Descriptor>;
4
+ /** Convert an array of descriptor name-value pairs to a descriptor map */
5
+ export declare function toDescriptorMap(descriptors: {
6
+ name: string;
7
+ value: Descriptor | string;
8
+ }[]): DescriptorMap;
9
+ //# sourceMappingURL=DescriptorMap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DescriptorMap.d.ts","sourceRoot":"","sources":["../../../src/descriptor/DescriptorMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,6CAA6C;AAC7C,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEpD,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAA;CAAE,EAAE,GAAG,aAAa,CAI1G"}
1
+ {"version":3,"file":"DescriptorMap.d.ts","sourceRoot":"","sources":["../../../src/descriptor/DescriptorMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,6CAA6C;AAC7C,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEpD,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAA;CAAE,EAAE,GAAG,aAAa,CAI1G"}
@@ -0,0 +1,6 @@
1
+ import { Descriptor } from '@bitgo/wasm-utxo';
2
+ /** Convert an array of descriptor name-value pairs to a descriptor map */
3
+ export function toDescriptorMap(descriptors) {
4
+ return new Map(descriptors.map((d) => [d.name, d.value instanceof Descriptor ? d.value : Descriptor.fromStringDetectType(d.value)]));
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVzY3JpcHRvck1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL0Rlc2NyaXB0b3JNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSzlDLDBFQUEwRTtBQUMxRSxNQUFNLFVBQVUsZUFBZSxDQUFDLFdBQTJEO0lBQ3pGLE9BQU8sSUFBSSxHQUFHLENBQ1osV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDckgsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbi8qKiBNYXAgZnJvbSBkZXNjcmlwdG9yIG5hbWUgdG8gZGVzY3JpcHRvciAqL1xuZXhwb3J0IHR5cGUgRGVzY3JpcHRvck1hcCA9IE1hcDxzdHJpbmcsIERlc2NyaXB0b3I+O1xuXG4vKiogQ29udmVydCBhbiBhcnJheSBvZiBkZXNjcmlwdG9yIG5hbWUtdmFsdWUgcGFpcnMgdG8gYSBkZXNjcmlwdG9yIG1hcCAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGVzY3JpcHRvck1hcChkZXNjcmlwdG9yczogeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBEZXNjcmlwdG9yIHwgc3RyaW5nIH1bXSk6IERlc2NyaXB0b3JNYXAge1xuICByZXR1cm4gbmV3IE1hcChcbiAgICBkZXNjcmlwdG9ycy5tYXAoKGQpID0+IFtkLm5hbWUsIGQudmFsdWUgaW5zdGFuY2VvZiBEZXNjcmlwdG9yID8gZC52YWx1ZSA6IERlc2NyaXB0b3IuZnJvbVN0cmluZ0RldGVjdFR5cGUoZC52YWx1ZSldKVxuICApO1xufVxuIl19
@@ -0,0 +1,23 @@
1
+ import { Descriptor } from '@bitgo/wasm-utxo';
2
+ import { MaxOutput, Output, PrevOutput } from '../Output';
3
+ import { DescriptorMap } from './DescriptorMap';
4
+ export type WithDescriptor<T> = T & {
5
+ descriptor: Descriptor;
6
+ };
7
+ export type WithOptDescriptor<T> = T & {
8
+ descriptor?: Descriptor;
9
+ };
10
+ export declare function isInternalOutput<T extends object>(output: T | WithDescriptor<T>): output is WithDescriptor<T>;
11
+ export declare function isExternalOutput<T extends object>(output: T | WithDescriptor<T>): output is T;
12
+ /**
13
+ * @return the sum of the external outputs that are not 'max'
14
+ * @param outputs
15
+ */
16
+ export declare function getExternalFixedAmount(outputs: WithOptDescriptor<Output | MaxOutput>[]): bigint;
17
+ export type DescriptorWalletOutput = PrevOutput & {
18
+ descriptorName: string;
19
+ descriptorIndex: number | undefined;
20
+ };
21
+ export type DerivedDescriptorWalletOutput = WithDescriptor<PrevOutput>;
22
+ export declare function toDerivedDescriptorWalletOutput(output: DescriptorWalletOutput, descriptorMap: DescriptorMap): DerivedDescriptorWalletOutput;
23
+ //# sourceMappingURL=Output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Output.d.ts","sourceRoot":"","sources":["../../../src/descriptor/Output.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAqB,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG;IAClC,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG;IACrC,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,CAE7G;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAE7F;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,MAAM,CAE/F;AAED,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AAEvE,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,sBAAsB,EAC9B,aAAa,EAAE,aAAa,GAC3B,6BAA6B,CAkB/B"}
1
+ {"version":3,"file":"Output.d.ts","sourceRoot":"","sources":["../../../src/descriptor/Output.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAqB,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG;IAClC,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG;IACrC,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,CAE7G;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAE7F;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,MAAM,CAE/F;AAED,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AAEvE,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,sBAAsB,EAC9B,aAAa,EAAE,aAAa,GAC3B,6BAA6B,CAkB/B"}
@@ -0,0 +1,32 @@
1
+ import assert from 'assert';
2
+ import { Descriptor } from '@bitgo/wasm-utxo';
3
+ import { getFixedOutputSum } from '../Output';
4
+ import { getDescriptorAtIndexCheckScript } from './derive';
5
+ export function isInternalOutput(output) {
6
+ return 'descriptor' in output && output.descriptor !== undefined;
7
+ }
8
+ export function isExternalOutput(output) {
9
+ return !isInternalOutput(output);
10
+ }
11
+ /**
12
+ * @return the sum of the external outputs that are not 'max'
13
+ * @param outputs
14
+ */
15
+ export function getExternalFixedAmount(outputs) {
16
+ return getFixedOutputSum(outputs.filter(isExternalOutput));
17
+ }
18
+ export function toDerivedDescriptorWalletOutput(output, descriptorMap) {
19
+ const descriptor = descriptorMap.get(output.descriptorName);
20
+ if (!descriptor) {
21
+ throw new Error(`Descriptor not found: ${output.descriptorName}`);
22
+ }
23
+ assert(descriptor instanceof Descriptor);
24
+ const descriptorAtIndex = getDescriptorAtIndexCheckScript(descriptor, output.descriptorIndex, output.witnessUtxo.script, output.descriptorName);
25
+ return {
26
+ hash: output.hash,
27
+ index: output.index,
28
+ witnessUtxo: output.witnessUtxo,
29
+ descriptor: descriptorAtIndex,
30
+ };
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvT3V0cHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFpQyxNQUFNLFdBQVcsQ0FBQztBQUc3RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFVM0QsTUFBTSxVQUFVLGdCQUFnQixDQUFtQixNQUE2QjtJQUM5RSxPQUFPLFlBQVksSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUM7QUFDbkUsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBbUIsTUFBNkI7SUFDOUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsT0FBZ0Q7SUFDckYsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBU0QsTUFBTSxVQUFVLCtCQUErQixDQUM3QyxNQUE4QixFQUM5QixhQUE0QjtJQUU1QixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELE1BQU0sQ0FBQyxVQUFVLFlBQVksVUFBVSxDQUFDLENBQUM7SUFDekMsTUFBTSxpQkFBaUIsR0FBRywrQkFBK0IsQ0FDdkQsVUFBVSxFQUNWLE1BQU0sQ0FBQyxlQUFlLEVBQ3RCLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUN6QixNQUFNLENBQUMsY0FBYyxDQUN0QixDQUFDO0lBQ0YsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtRQUNqQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7UUFDbkIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1FBQy9CLFVBQVUsRUFBRSxpQkFBaUI7S0FDOUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgZ2V0Rml4ZWRPdXRwdXRTdW0sIE1heE91dHB1dCwgT3V0cHV0LCBQcmV2T3V0cHV0IH0gZnJvbSAnLi4vT3V0cHV0JztcblxuaW1wb3J0IHsgRGVzY3JpcHRvck1hcCB9IGZyb20gJy4vRGVzY3JpcHRvck1hcCc7XG5pbXBvcnQgeyBnZXREZXNjcmlwdG9yQXRJbmRleENoZWNrU2NyaXB0IH0gZnJvbSAnLi9kZXJpdmUnO1xuXG5leHBvcnQgdHlwZSBXaXRoRGVzY3JpcHRvcjxUPiA9IFQgJiB7XG4gIGRlc2NyaXB0b3I6IERlc2NyaXB0b3I7XG59O1xuXG5leHBvcnQgdHlwZSBXaXRoT3B0RGVzY3JpcHRvcjxUPiA9IFQgJiB7XG4gIGRlc2NyaXB0b3I/OiBEZXNjcmlwdG9yO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW50ZXJuYWxPdXRwdXQ8VCBleHRlbmRzIG9iamVjdD4ob3V0cHV0OiBUIHwgV2l0aERlc2NyaXB0b3I8VD4pOiBvdXRwdXQgaXMgV2l0aERlc2NyaXB0b3I8VD4ge1xuICByZXR1cm4gJ2Rlc2NyaXB0b3InIGluIG91dHB1dCAmJiBvdXRwdXQuZGVzY3JpcHRvciAhPT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFeHRlcm5hbE91dHB1dDxUIGV4dGVuZHMgb2JqZWN0PihvdXRwdXQ6IFQgfCBXaXRoRGVzY3JpcHRvcjxUPik6IG91dHB1dCBpcyBUIHtcbiAgcmV0dXJuICFpc0ludGVybmFsT3V0cHV0KG91dHB1dCk7XG59XG5cbi8qKlxuICogQHJldHVybiB0aGUgc3VtIG9mIHRoZSBleHRlcm5hbCBvdXRwdXRzIHRoYXQgYXJlIG5vdCAnbWF4J1xuICogQHBhcmFtIG91dHB1dHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVybmFsRml4ZWRBbW91bnQob3V0cHV0czogV2l0aE9wdERlc2NyaXB0b3I8T3V0cHV0IHwgTWF4T3V0cHV0PltdKTogYmlnaW50IHtcbiAgcmV0dXJuIGdldEZpeGVkT3V0cHV0U3VtKG91dHB1dHMuZmlsdGVyKGlzRXh0ZXJuYWxPdXRwdXQpKTtcbn1cblxuZXhwb3J0IHR5cGUgRGVzY3JpcHRvcldhbGxldE91dHB1dCA9IFByZXZPdXRwdXQgJiB7XG4gIGRlc2NyaXB0b3JOYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0b3JJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgRGVyaXZlZERlc2NyaXB0b3JXYWxsZXRPdXRwdXQgPSBXaXRoRGVzY3JpcHRvcjxQcmV2T3V0cHV0PjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvRGVyaXZlZERlc2NyaXB0b3JXYWxsZXRPdXRwdXQoXG4gIG91dHB1dDogRGVzY3JpcHRvcldhbGxldE91dHB1dCxcbiAgZGVzY3JpcHRvck1hcDogRGVzY3JpcHRvck1hcFxuKTogRGVyaXZlZERlc2NyaXB0b3JXYWxsZXRPdXRwdXQge1xuICBjb25zdCBkZXNjcmlwdG9yID0gZGVzY3JpcHRvck1hcC5nZXQob3V0cHV0LmRlc2NyaXB0b3JOYW1lKTtcbiAgaWYgKCFkZXNjcmlwdG9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEZXNjcmlwdG9yIG5vdCBmb3VuZDogJHtvdXRwdXQuZGVzY3JpcHRvck5hbWV9YCk7XG4gIH1cbiAgYXNzZXJ0KGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBEZXNjcmlwdG9yKTtcbiAgY29uc3QgZGVzY3JpcHRvckF0SW5kZXggPSBnZXREZXNjcmlwdG9yQXRJbmRleENoZWNrU2NyaXB0KFxuICAgIGRlc2NyaXB0b3IsXG4gICAgb3V0cHV0LmRlc2NyaXB0b3JJbmRleCxcbiAgICBvdXRwdXQud2l0bmVzc1V0eG8uc2NyaXB0LFxuICAgIG91dHB1dC5kZXNjcmlwdG9yTmFtZVxuICApO1xuICByZXR1cm4ge1xuICAgIGhhc2g6IG91dHB1dC5oYXNoLFxuICAgIGluZGV4OiBvdXRwdXQuaW5kZXgsXG4gICAgd2l0bmVzc1V0eG86IG91dHB1dC53aXRuZXNzVXR4byxcbiAgICBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yQXRJbmRleCxcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import { Descriptor } from '@bitgo/wasm-utxo';
3
+ import { DescriptorMap } from './DescriptorMap';
4
+ export declare function getInputVSizesForDescriptors(descriptors: DescriptorMap): Record<string, number>;
5
+ export declare function getChangeOutputVSizesForDescriptor(d: Descriptor): {
6
+ inputVSize: number;
7
+ outputVSize: number;
8
+ };
9
+ type InputWithDescriptorName = {
10
+ descriptorName: string;
11
+ };
12
+ type OutputWithScript = {
13
+ script: Buffer;
14
+ };
15
+ type Tx<TInput> = {
16
+ inputs: TInput[];
17
+ outputs: OutputWithScript[];
18
+ };
19
+ export declare function getVirtualSize(tx: Tx<Descriptor>): number;
20
+ export declare function getVirtualSize(tx: Tx<InputWithDescriptorName>, descriptors: DescriptorMap): number;
21
+ export declare function getVirtualSizeEstimateForPsbt(psbt: utxolib.Psbt, descriptorMap: DescriptorMap): number;
22
+ export {};
23
+ //# sourceMappingURL=VirtualSize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualSize.d.ts","sourceRoot":"","sources":["../../../src/descriptor/VirtualSize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAkDhD,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM/F;AAED,wBAAgB,kCAAkC,CAAC,CAAC,EAAE,UAAU,GAAG;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAKA;AAED,KAAK,uBAAuB,GAAG;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1D,KAAK,gBAAgB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,KAAK,EAAE,CAAC,MAAM,IAAI;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;AAC3D,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,uBAAuB,CAAC,EAAE,WAAW,EAAE,aAAa,GAAG,MAAM,CAAC;AA6BpG,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,GAAG,MAAM,CAUtG"}
1
+ {"version":3,"file":"VirtualSize.d.ts","sourceRoot":"","sources":["../../../src/descriptor/VirtualSize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAkDhD,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM/F;AAED,wBAAgB,kCAAkC,CAAC,CAAC,EAAE,UAAU,GAAG;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAKA;AAED,KAAK,uBAAuB,GAAG;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1D,KAAK,gBAAgB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,KAAK,EAAE,CAAC,MAAM,IAAI;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;AAC3D,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,uBAAuB,CAAC,EAAE,WAAW,EAAE,aAAa,GAAG,MAAM,CAAC;AA6BpG,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,GAAG,MAAM,CAUtG"}
@@ -0,0 +1,94 @@
1
+ import { Dimensions, VirtualSizes } from '@bitgo-beta/unspents';
2
+ import { Descriptor } from '@bitgo/wasm-utxo';
3
+ import { findDescriptorForInput } from './psbt';
4
+ function getScriptPubKeyLength(descType) {
5
+ // See https://bitcoinops.org/en/tools/calc-size/
6
+ switch (descType) {
7
+ case 'Wpkh':
8
+ // https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#p2wpkh
9
+ return 22;
10
+ case 'Sh':
11
+ case 'ShWsh':
12
+ case 'ShWpkh':
13
+ // https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki#specification
14
+ return 23;
15
+ case 'Pkh':
16
+ return 25;
17
+ case 'Wsh':
18
+ case 'Tr':
19
+ // P2WSH: https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#p2wsh
20
+ // P2TR: https://github.com/bitcoin/bips/blob/58ffd93812ff25e87d53d1f202fbb389fdfb85bb/bip-0341.mediawiki#script-validation-rules
21
+ // > A Taproot output is a native SegWit output (see BIP141) with version number 1, and a 32-byte witness program.
22
+ // 32 bytes for the hash, 1 byte for the version, 1 byte for the push opcode
23
+ return 34;
24
+ case 'Bare':
25
+ throw new Error('cannot determine scriptPubKey length for Bare descriptor');
26
+ default:
27
+ throw new Error('unexpected descriptor type ' + descType);
28
+ }
29
+ }
30
+ function getInputVSizeForDescriptor(descriptor) {
31
+ // FIXME(BTC-1489): this can overestimate the size of the input significantly
32
+ const maxWeight = descriptor.maxWeightToSatisfy();
33
+ const maxVSize = Math.ceil(maxWeight / 4);
34
+ const sizeOpPushdata1 = 1;
35
+ const sizeOpPushdata2 = 2;
36
+ return (
37
+ // inputId
38
+ 32 +
39
+ // vOut
40
+ 4 +
41
+ // nSequence
42
+ 4 +
43
+ // script overhead
44
+ (maxVSize < 255 ? sizeOpPushdata1 : sizeOpPushdata2) +
45
+ // script
46
+ maxVSize);
47
+ }
48
+ export function getInputVSizesForDescriptors(descriptors) {
49
+ return Object.fromEntries(Array.from(descriptors.entries()).map(([name, d]) => {
50
+ return [name, getInputVSizeForDescriptor(d)];
51
+ }));
52
+ }
53
+ export function getChangeOutputVSizesForDescriptor(d) {
54
+ return {
55
+ inputVSize: getInputVSizeForDescriptor(d),
56
+ outputVSize: getScriptPubKeyLength(d.descType()),
57
+ };
58
+ }
59
+ export function getVirtualSize(tx, descriptorMap) {
60
+ const lookup = descriptorMap ? getInputVSizesForDescriptors(descriptorMap) : undefined;
61
+ const inputVSize = tx.inputs.reduce((sum, input) => {
62
+ if (input instanceof Descriptor) {
63
+ return sum + getInputVSizeForDescriptor(input);
64
+ }
65
+ if ('descriptorName' in input) {
66
+ if (!lookup) {
67
+ throw new Error('missing descriptorMap');
68
+ }
69
+ const vsize = lookup[input.descriptorName];
70
+ if (!vsize) {
71
+ throw new Error(`Could not find descriptor ${input.descriptorName}`);
72
+ }
73
+ return sum + vsize;
74
+ }
75
+ throw new Error('unexpected input');
76
+ }, 0);
77
+ const outputVSize = tx.outputs.reduce((sum, o) => {
78
+ return sum + Dimensions.getVSizeForOutputWithScriptLength(o.script.length);
79
+ }, 0);
80
+ // we will just assume that we have at least one segwit input
81
+ return inputVSize + outputVSize + VirtualSizes.txSegOverheadVSize;
82
+ }
83
+ export function getVirtualSizeEstimateForPsbt(psbt, descriptorMap) {
84
+ const inputs = psbt.data.inputs.map((i) => {
85
+ const result = findDescriptorForInput(i, descriptorMap);
86
+ if (!result) {
87
+ throw new Error('Could not find descriptor for input');
88
+ }
89
+ return result.descriptor;
90
+ });
91
+ const outputs = psbt.txOutputs.map((o) => ({ script: o.script }));
92
+ return getVirtualSize({ inputs, outputs });
93
+ }
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlydHVhbFNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9WaXJ0dWFsU2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUc5QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFaEQsU0FBUyxxQkFBcUIsQ0FBQyxRQUFnQjtJQUM3QyxpREFBaUQ7SUFDakQsUUFBUSxRQUFRLEVBQUUsQ0FBQztRQUNqQixLQUFLLE1BQU07WUFDVCx3RUFBd0U7WUFDeEUsT0FBTyxFQUFFLENBQUM7UUFDWixLQUFLLElBQUksQ0FBQztRQUNWLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxRQUFRO1lBQ1gsK0VBQStFO1lBQy9FLE9BQU8sRUFBRSxDQUFDO1FBQ1osS0FBSyxLQUFLO1lBQ1IsT0FBTyxFQUFFLENBQUM7UUFDWixLQUFLLEtBQUssQ0FBQztRQUNYLEtBQUssSUFBSTtZQUNQLDhFQUE4RTtZQUM5RSxpSUFBaUk7WUFDakksa0hBQWtIO1lBQ2xILDRFQUE0RTtZQUM1RSxPQUFPLEVBQUUsQ0FBQztRQUNaLEtBQUssTUFBTTtZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztRQUM5RTtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDOUQsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLDBCQUEwQixDQUFDLFVBQXNCO0lBQ3hELDZFQUE2RTtJQUM3RSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNsRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxQyxNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUM7SUFDMUIsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE9BQU87SUFDTCxVQUFVO0lBQ1YsRUFBRTtRQUNGLE9BQU87UUFDUCxDQUFDO1FBQ0QsWUFBWTtRQUNaLENBQUM7UUFDRCxrQkFBa0I7UUFDbEIsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztRQUNwRCxTQUFTO1FBQ1QsUUFBUSxDQUNULENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDRCQUE0QixDQUFDLFdBQTBCO0lBQ3JFLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FDdkIsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ2xELE9BQU8sQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxrQ0FBa0MsQ0FBQyxDQUFhO0lBSTlELE9BQU87UUFDTCxVQUFVLEVBQUUsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLFdBQVcsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7S0FDakQsQ0FBQztBQUNKLENBQUM7QUFZRCxNQUFNLFVBQVUsY0FBYyxDQUM1QixFQUFnRCxFQUNoRCxhQUE2QjtJQUU3QixNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdkYsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDakQsSUFBSSxLQUFLLFlBQVksVUFBVSxFQUFFLENBQUM7WUFDaEMsT0FBTyxHQUFHLEdBQUcsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELElBQUksZ0JBQWdCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDdkUsQ0FBQztZQUNELE9BQU8sR0FBRyxHQUFHLEtBQUssQ0FBQztRQUNyQixDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNOLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQy9DLE9BQU8sR0FBRyxHQUFHLFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNOLDZEQUE2RDtJQUM3RCxPQUFPLFVBQVUsR0FBRyxXQUFXLEdBQUcsWUFBWSxDQUFDLGtCQUFrQixDQUFDO0FBQ3BFLENBQUM7QUFFRCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsSUFBa0IsRUFBRSxhQUE0QjtJQUM1RixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUN4QyxNQUFNLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLE9BQU8sY0FBYyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgRGltZW5zaW9ucywgVmlydHVhbFNpemVzIH0gZnJvbSAnQGJpdGdvLWJldGEvdW5zcGVudHMnO1xuaW1wb3J0IHsgRGVzY3JpcHRvciB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBEZXNjcmlwdG9yTWFwIH0gZnJvbSAnLi9EZXNjcmlwdG9yTWFwJztcbmltcG9ydCB7IGZpbmREZXNjcmlwdG9yRm9ySW5wdXQgfSBmcm9tICcuL3BzYnQnO1xuXG5mdW5jdGlvbiBnZXRTY3JpcHRQdWJLZXlMZW5ndGgoZGVzY1R5cGU6IHN0cmluZyk6IG51bWJlciB7XG4gIC8vIFNlZSBodHRwczovL2JpdGNvaW5vcHMub3JnL2VuL3Rvb2xzL2NhbGMtc2l6ZS9cbiAgc3dpdGNoIChkZXNjVHlwZSkge1xuICAgIGNhc2UgJ1dwa2gnOlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9ibG9iL21hc3Rlci9iaXAtMDE0MS5tZWRpYXdpa2kjcDJ3cGtoXG4gICAgICByZXR1cm4gMjI7XG4gICAgY2FzZSAnU2gnOlxuICAgIGNhc2UgJ1NoV3NoJzpcbiAgICBjYXNlICdTaFdwa2gnOlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9ibG9iL21hc3Rlci9iaXAtMDAxNi5tZWRpYXdpa2kjc3BlY2lmaWNhdGlvblxuICAgICAgcmV0dXJuIDIzO1xuICAgIGNhc2UgJ1BraCc6XG4gICAgICByZXR1cm4gMjU7XG4gICAgY2FzZSAnV3NoJzpcbiAgICBjYXNlICdUcic6XG4gICAgICAvLyBQMldTSDogaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9ibG9iL21hc3Rlci9iaXAtMDE0MS5tZWRpYXdpa2kjcDJ3c2hcbiAgICAgIC8vIFAyVFI6IGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpcHMvYmxvYi81OGZmZDkzODEyZmYyNWU4N2Q1M2QxZjIwMmZiYjM4OWZkZmI4NWJiL2JpcC0wMzQxLm1lZGlhd2lraSNzY3JpcHQtdmFsaWRhdGlvbi1ydWxlc1xuICAgICAgLy8gPiBBIFRhcHJvb3Qgb3V0cHV0IGlzIGEgbmF0aXZlIFNlZ1dpdCBvdXRwdXQgKHNlZSBCSVAxNDEpIHdpdGggdmVyc2lvbiBudW1iZXIgMSwgYW5kIGEgMzItYnl0ZSB3aXRuZXNzIHByb2dyYW0uXG4gICAgICAvLyAzMiBieXRlcyBmb3IgdGhlIGhhc2gsIDEgYnl0ZSBmb3IgdGhlIHZlcnNpb24sIDEgYnl0ZSBmb3IgdGhlIHB1c2ggb3Bjb2RlXG4gICAgICByZXR1cm4gMzQ7XG4gICAgY2FzZSAnQmFyZSc6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBkZXRlcm1pbmUgc2NyaXB0UHViS2V5IGxlbmd0aCBmb3IgQmFyZSBkZXNjcmlwdG9yJyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBkZXNjcmlwdG9yIHR5cGUgJyArIGRlc2NUeXBlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRJbnB1dFZTaXplRm9yRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBEZXNjcmlwdG9yKTogbnVtYmVyIHtcbiAgLy8gRklYTUUoQlRDLTE0ODkpOiB0aGlzIGNhbiBvdmVyZXN0aW1hdGUgdGhlIHNpemUgb2YgdGhlIGlucHV0IHNpZ25pZmljYW50bHlcbiAgY29uc3QgbWF4V2VpZ2h0ID0gZGVzY3JpcHRvci5tYXhXZWlnaHRUb1NhdGlzZnkoKTtcbiAgY29uc3QgbWF4VlNpemUgPSBNYXRoLmNlaWwobWF4V2VpZ2h0IC8gNCk7XG4gIGNvbnN0IHNpemVPcFB1c2hkYXRhMSA9IDE7XG4gIGNvbnN0IHNpemVPcFB1c2hkYXRhMiA9IDI7XG4gIHJldHVybiAoXG4gICAgLy8gaW5wdXRJZFxuICAgIDMyICtcbiAgICAvLyB2T3V0XG4gICAgNCArXG4gICAgLy8gblNlcXVlbmNlXG4gICAgNCArXG4gICAgLy8gc2NyaXB0IG92ZXJoZWFkXG4gICAgKG1heFZTaXplIDwgMjU1ID8gc2l6ZU9wUHVzaGRhdGExIDogc2l6ZU9wUHVzaGRhdGEyKSArXG4gICAgLy8gc2NyaXB0XG4gICAgbWF4VlNpemVcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldElucHV0VlNpemVzRm9yRGVzY3JpcHRvcnMoZGVzY3JpcHRvcnM6IERlc2NyaXB0b3JNYXApOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+IHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBBcnJheS5mcm9tKGRlc2NyaXB0b3JzLmVudHJpZXMoKSkubWFwKChbbmFtZSwgZF0pID0+IHtcbiAgICAgIHJldHVybiBbbmFtZSwgZ2V0SW5wdXRWU2l6ZUZvckRlc2NyaXB0b3IoZCldO1xuICAgIH0pXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFuZ2VPdXRwdXRWU2l6ZXNGb3JEZXNjcmlwdG9yKGQ6IERlc2NyaXB0b3IpOiB7XG4gIGlucHV0VlNpemU6IG51bWJlcjtcbiAgb3V0cHV0VlNpemU6IG51bWJlcjtcbn0ge1xuICByZXR1cm4ge1xuICAgIGlucHV0VlNpemU6IGdldElucHV0VlNpemVGb3JEZXNjcmlwdG9yKGQpLFxuICAgIG91dHB1dFZTaXplOiBnZXRTY3JpcHRQdWJLZXlMZW5ndGgoZC5kZXNjVHlwZSgpKSxcbiAgfTtcbn1cblxudHlwZSBJbnB1dFdpdGhEZXNjcmlwdG9yTmFtZSA9IHsgZGVzY3JpcHRvck5hbWU6IHN0cmluZyB9O1xudHlwZSBPdXRwdXRXaXRoU2NyaXB0ID0geyBzY3JpcHQ6IEJ1ZmZlciB9O1xuXG50eXBlIFR4PFRJbnB1dD4gPSB7XG4gIGlucHV0czogVElucHV0W107XG4gIG91dHB1dHM6IE91dHB1dFdpdGhTY3JpcHRbXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaXJ0dWFsU2l6ZSh0eDogVHg8RGVzY3JpcHRvcj4pOiBudW1iZXI7XG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlydHVhbFNpemUodHg6IFR4PElucHV0V2l0aERlc2NyaXB0b3JOYW1lPiwgZGVzY3JpcHRvcnM6IERlc2NyaXB0b3JNYXApOiBudW1iZXI7XG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlydHVhbFNpemUoXG4gIHR4OiBUeDxEZXNjcmlwdG9yPiB8IFR4PElucHV0V2l0aERlc2NyaXB0b3JOYW1lPixcbiAgZGVzY3JpcHRvck1hcD86IERlc2NyaXB0b3JNYXBcbik6IG51bWJlciB7XG4gIGNvbnN0IGxvb2t1cCA9IGRlc2NyaXB0b3JNYXAgPyBnZXRJbnB1dFZTaXplc0ZvckRlc2NyaXB0b3JzKGRlc2NyaXB0b3JNYXApIDogdW5kZWZpbmVkO1xuICBjb25zdCBpbnB1dFZTaXplID0gdHguaW5wdXRzLnJlZHVjZSgoc3VtLCBpbnB1dCkgPT4ge1xuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIERlc2NyaXB0b3IpIHtcbiAgICAgIHJldHVybiBzdW0gKyBnZXRJbnB1dFZTaXplRm9yRGVzY3JpcHRvcihpbnB1dCk7XG4gICAgfVxuICAgIGlmICgnZGVzY3JpcHRvck5hbWUnIGluIGlucHV0KSB7XG4gICAgICBpZiAoIWxvb2t1cCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgZGVzY3JpcHRvck1hcCcpO1xuICAgICAgfVxuICAgICAgY29uc3QgdnNpemUgPSBsb29rdXBbaW5wdXQuZGVzY3JpcHRvck5hbWVdO1xuICAgICAgaWYgKCF2c2l6ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGRlc2NyaXB0b3IgJHtpbnB1dC5kZXNjcmlwdG9yTmFtZX1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdW0gKyB2c2l6ZTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIGlucHV0Jyk7XG4gIH0sIDApO1xuICBjb25zdCBvdXRwdXRWU2l6ZSA9IHR4Lm91dHB1dHMucmVkdWNlKChzdW0sIG8pID0+IHtcbiAgICByZXR1cm4gc3VtICsgRGltZW5zaW9ucy5nZXRWU2l6ZUZvck91dHB1dFdpdGhTY3JpcHRMZW5ndGgoby5zY3JpcHQubGVuZ3RoKTtcbiAgfSwgMCk7XG4gIC8vIHdlIHdpbGwganVzdCBhc3N1bWUgdGhhdCB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBzZWd3aXQgaW5wdXRcbiAgcmV0dXJuIGlucHV0VlNpemUgKyBvdXRwdXRWU2l6ZSArIFZpcnR1YWxTaXplcy50eFNlZ092ZXJoZWFkVlNpemU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaXJ0dWFsU2l6ZUVzdGltYXRlRm9yUHNidChwc2J0OiB1dHhvbGliLlBzYnQsIGRlc2NyaXB0b3JNYXA6IERlc2NyaXB0b3JNYXApOiBudW1iZXIge1xuICBjb25zdCBpbnB1dHMgPSBwc2J0LmRhdGEuaW5wdXRzLm1hcCgoaSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGZpbmREZXNjcmlwdG9yRm9ySW5wdXQoaSwgZGVzY3JpcHRvck1hcCk7XG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgZGVzY3JpcHRvciBmb3IgaW5wdXQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdC5kZXNjcmlwdG9yO1xuICB9KTtcbiAgY29uc3Qgb3V0cHV0cyA9IHBzYnQudHhPdXRwdXRzLm1hcCgobykgPT4gKHsgc2NyaXB0OiBvLnNjcmlwdCB9KSk7XG4gIHJldHVybiBnZXRWaXJ0dWFsU2l6ZSh7IGlucHV0cywgb3V0cHV0cyB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ import { Descriptor } from '@bitgo/wasm-utxo';
2
+ import * as utxolib from '@bitgo-beta/utxo-lib';
3
+ export declare function createScriptPubKeyFromDescriptor(descriptor: Descriptor, index: number | undefined): Buffer;
4
+ export declare function createAddressFromDescriptor(descriptor: Descriptor, index: number | undefined, network: utxolib.Network): string;
5
+ //# sourceMappingURL=address.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../../src/descriptor/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAK1G;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,MAAM,CAER"}
1
+ {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../../src/descriptor/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAK1G;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,MAAM,CAER"}
@@ -0,0 +1,11 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ export function createScriptPubKeyFromDescriptor(descriptor, index) {
3
+ if (index === undefined) {
4
+ return Buffer.from(descriptor.scriptPubkey());
5
+ }
6
+ return createScriptPubKeyFromDescriptor(descriptor.atDerivationIndex(index), undefined);
7
+ }
8
+ export function createAddressFromDescriptor(descriptor, index, network) {
9
+ return utxolib.address.fromOutputScript(createScriptPubKeyFromDescriptor(descriptor, index), network);
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL2FkZHJlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUVoRCxNQUFNLFVBQVUsZ0NBQWdDLENBQUMsVUFBc0IsRUFBRSxLQUF5QjtJQUNoRyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN4QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUNELE9BQU8sZ0NBQWdDLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFFRCxNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLFVBQXNCLEVBQ3RCLEtBQXlCLEVBQ3pCLE9BQXdCO0lBRXhCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxnQ0FBZ0MsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDeEcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2NyaXB0UHViS2V5RnJvbURlc2NyaXB0b3IoZGVzY3JpcHRvcjogRGVzY3JpcHRvciwgaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCk6IEJ1ZmZlciB7XG4gIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGRlc2NyaXB0b3Iuc2NyaXB0UHVia2V5KCkpO1xuICB9XG4gIHJldHVybiBjcmVhdGVTY3JpcHRQdWJLZXlGcm9tRGVzY3JpcHRvcihkZXNjcmlwdG9yLmF0RGVyaXZhdGlvbkluZGV4KGluZGV4KSwgdW5kZWZpbmVkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkZHJlc3NGcm9tRGVzY3JpcHRvcihcbiAgZGVzY3JpcHRvcjogRGVzY3JpcHRvcixcbiAgaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrXG4pOiBzdHJpbmcge1xuICByZXR1cm4gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoY3JlYXRlU2NyaXB0UHViS2V5RnJvbURlc2NyaXB0b3IoZGVzY3JpcHRvciwgaW5kZXgpLCBuZXR3b3JrKTtcbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { Descriptor } from '@bitgo/wasm-utxo';
2
+ /**
3
+ * Get a descriptor at a specific derivation index.
4
+ * For wildcard descriptors (containing '*'), the index is required and used for derivation.
5
+ * For definite descriptors (not containing '*'), no index should be provided.
6
+ * @param descriptor - The descriptor to derive from
7
+ * @param index - The derivation index for wildcard descriptors
8
+ * @returns A new descriptor at the specified index for wildcard descriptors, or the original descriptor for definite ones
9
+ * @throws {Error} If index is undefined for a wildcard descriptor or if index is provided for a definite descriptor
10
+ */
11
+ export declare function getDescriptorAtIndex(descriptor: Descriptor, index: number | undefined): Descriptor;
12
+ export declare function getDescriptorAtIndexCheckScript(descriptor: Descriptor, index: number | undefined, script: Buffer, descriptorString?: string): Descriptor;
13
+ //# sourceMappingURL=derive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../../src/descriptor/derive.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAelG;AAED,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,MAAM,EACd,gBAAgB,SAAwB,GACvC,UAAU,CAQZ"}
1
+ {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../../src/descriptor/derive.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAelG;AAED,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,MAAM,EACd,gBAAgB,SAAwB,GACvC,UAAU,CAQZ"}
@@ -0,0 +1,38 @@
1
+ import assert from 'assert';
2
+ import { Descriptor } from '@bitgo/wasm-utxo';
3
+ /**
4
+ * Get a descriptor at a specific derivation index.
5
+ * For wildcard descriptors (containing '*'), the index is required and used for derivation.
6
+ * For definite descriptors (not containing '*'), no index should be provided.
7
+ * @param descriptor - The descriptor to derive from
8
+ * @param index - The derivation index for wildcard descriptors
9
+ * @returns A new descriptor at the specified index for wildcard descriptors, or the original descriptor for definite ones
10
+ * @throws {Error} If index is undefined for a wildcard descriptor or if index is provided for a definite descriptor
11
+ */
12
+ export function getDescriptorAtIndex(descriptor, index) {
13
+ assert(descriptor instanceof Descriptor);
14
+ Descriptor.fromString(descriptor.toString(), 'derivable');
15
+ descriptor = Descriptor.fromStringDetectType(descriptor.toString());
16
+ if (descriptor.hasWildcard()) {
17
+ if (index === undefined) {
18
+ throw new Error('Derivable descriptor requires an index');
19
+ }
20
+ return descriptor.atDerivationIndex(index);
21
+ }
22
+ else {
23
+ if (index !== undefined) {
24
+ throw new Error('Definite descriptor cannot be derived with index');
25
+ }
26
+ return descriptor;
27
+ }
28
+ }
29
+ export function getDescriptorAtIndexCheckScript(descriptor, index, script, descriptorString = descriptor.toString()) {
30
+ assert(descriptor instanceof Descriptor);
31
+ const descriptorAtIndex = getDescriptorAtIndex(descriptor, index);
32
+ if (!script.equals(descriptorAtIndex.scriptPubkey())) {
33
+ throw new Error(`Script mismatch: descriptor ${descriptorString} script=${script.toString('hex')}`);
34
+ }
35
+ assert(descriptorAtIndex instanceof Descriptor);
36
+ return descriptorAtIndex;
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyaXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvZGVyaXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsVUFBc0IsRUFBRSxLQUF5QjtJQUNwRixNQUFNLENBQUMsVUFBVSxZQUFZLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzFELFVBQVUsR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDcEUsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUM3QixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7U0FBTSxDQUFDO1FBQ04sSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSwrQkFBK0IsQ0FDN0MsVUFBc0IsRUFDdEIsS0FBeUIsRUFDekIsTUFBYyxFQUNkLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUU7SUFFeEMsTUFBTSxDQUFDLFVBQVUsWUFBWSxVQUFVLENBQUMsQ0FBQztJQUN6QyxNQUFNLGlCQUFpQixHQUFHLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDckQsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsZ0JBQWdCLFdBQVcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUNELE1BQU0sQ0FBQyxpQkFBaUIsWUFBWSxVQUFVLENBQUMsQ0FBQztJQUNoRCxPQUFPLGlCQUFpQixDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuLyoqXG4gKiBHZXQgYSBkZXNjcmlwdG9yIGF0IGEgc3BlY2lmaWMgZGVyaXZhdGlvbiBpbmRleC5cbiAqIEZvciB3aWxkY2FyZCBkZXNjcmlwdG9ycyAoY29udGFpbmluZyAnKicpLCB0aGUgaW5kZXggaXMgcmVxdWlyZWQgYW5kIHVzZWQgZm9yIGRlcml2YXRpb24uXG4gKiBGb3IgZGVmaW5pdGUgZGVzY3JpcHRvcnMgKG5vdCBjb250YWluaW5nICcqJyksIG5vIGluZGV4IHNob3VsZCBiZSBwcm92aWRlZC5cbiAqIEBwYXJhbSBkZXNjcmlwdG9yIC0gVGhlIGRlc2NyaXB0b3IgdG8gZGVyaXZlIGZyb21cbiAqIEBwYXJhbSBpbmRleCAtIFRoZSBkZXJpdmF0aW9uIGluZGV4IGZvciB3aWxkY2FyZCBkZXNjcmlwdG9yc1xuICogQHJldHVybnMgQSBuZXcgZGVzY3JpcHRvciBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IGZvciB3aWxkY2FyZCBkZXNjcmlwdG9ycywgb3IgdGhlIG9yaWdpbmFsIGRlc2NyaXB0b3IgZm9yIGRlZmluaXRlIG9uZXNcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBpbmRleCBpcyB1bmRlZmluZWQgZm9yIGEgd2lsZGNhcmQgZGVzY3JpcHRvciBvciBpZiBpbmRleCBpcyBwcm92aWRlZCBmb3IgYSBkZWZpbml0ZSBkZXNjcmlwdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNjcmlwdG9yQXRJbmRleChkZXNjcmlwdG9yOiBEZXNjcmlwdG9yLCBpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkKTogRGVzY3JpcHRvciB7XG4gIGFzc2VydChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRGVzY3JpcHRvcik7XG4gIERlc2NyaXB0b3IuZnJvbVN0cmluZyhkZXNjcmlwdG9yLnRvU3RyaW5nKCksICdkZXJpdmFibGUnKTtcbiAgZGVzY3JpcHRvciA9IERlc2NyaXB0b3IuZnJvbVN0cmluZ0RldGVjdFR5cGUoZGVzY3JpcHRvci50b1N0cmluZygpKTtcbiAgaWYgKGRlc2NyaXB0b3IuaGFzV2lsZGNhcmQoKSkge1xuICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rlcml2YWJsZSBkZXNjcmlwdG9yIHJlcXVpcmVzIGFuIGluZGV4Jyk7XG4gICAgfVxuICAgIHJldHVybiBkZXNjcmlwdG9yLmF0RGVyaXZhdGlvbkluZGV4KGluZGV4KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEZWZpbml0ZSBkZXNjcmlwdG9yIGNhbm5vdCBiZSBkZXJpdmVkIHdpdGggaW5kZXgnKTtcbiAgICB9XG4gICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2NyaXB0b3JBdEluZGV4Q2hlY2tTY3JpcHQoXG4gIGRlc2NyaXB0b3I6IERlc2NyaXB0b3IsXG4gIGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIHNjcmlwdDogQnVmZmVyLFxuICBkZXNjcmlwdG9yU3RyaW5nID0gZGVzY3JpcHRvci50b1N0cmluZygpXG4pOiBEZXNjcmlwdG9yIHtcbiAgYXNzZXJ0KGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBEZXNjcmlwdG9yKTtcbiAgY29uc3QgZGVzY3JpcHRvckF0SW5kZXggPSBnZXREZXNjcmlwdG9yQXRJbmRleChkZXNjcmlwdG9yLCBpbmRleCk7XG4gIGlmICghc2NyaXB0LmVxdWFscyhkZXNjcmlwdG9yQXRJbmRleC5zY3JpcHRQdWJrZXkoKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNjcmlwdCBtaXNtYXRjaDogZGVzY3JpcHRvciAke2Rlc2NyaXB0b3JTdHJpbmd9IHNjcmlwdD0ke3NjcmlwdC50b1N0cmluZygnaGV4Jyl9YCk7XG4gIH1cbiAgYXNzZXJ0KGRlc2NyaXB0b3JBdEluZGV4IGluc3RhbmNlb2YgRGVzY3JpcHRvcik7XG4gIHJldHVybiBkZXNjcmlwdG9yQXRJbmRleDtcbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import { Descriptor } from '@bitgo/wasm-utxo';
3
+ /**
4
+ * Get a standard output descriptor that corresponds to the proprietary HD wallet setup
5
+ * used in BitGo wallets.
6
+ * Only supports a subset of script types.
7
+ */
8
+ export declare function getDescriptorForScriptType(rootWalletKeys: utxolib.bitgo.RootWalletKeys, scriptType: 'p2sh' | 'p2shP2wsh' | 'p2wsh', scope: 'internal' | 'external'): Descriptor;
9
+ /**
10
+ * Get a map of named descriptors for the given root wallet keys.
11
+ * Unsupported script types will have a value of null.
12
+ * Currently supports p2sh, p2shP2wsh, and p2wsh script types.
13
+ * @param rootWalletKeys
14
+ */
15
+ export declare function getNamedDescriptorsForRootWalletKeys(rootWalletKeys: utxolib.bitgo.RootWalletKeys): Map<string, Descriptor | null>;
16
+ //# sourceMappingURL=fromFixedScriptWallet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fromFixedScriptWallet.d.ts","sourceRoot":"","sources":["../../../src/descriptor/fromFixedScriptWallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAO,MAAM,wBAAwB,CAAC;AAYzD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,EAC5C,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,EAC1C,KAAK,EAAE,UAAU,GAAG,UAAU,GAC7B,UAAU,CAkBZ;AAQD;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAClD,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,GAC3C,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC,CAUhC"}
1
+ {"version":3,"file":"fromFixedScriptWallet.d.ts","sourceRoot":"","sources":["../../../src/descriptor/fromFixedScriptWallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAO,MAAM,kBAAkB,CAAC;AAYnD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,EAC5C,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,EAC1C,KAAK,EAAE,UAAU,GAAG,UAAU,GAC7B,UAAU,CAkBZ;AAQD;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAClD,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,GAC3C,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC,CAUhC"}
@@ -0,0 +1,51 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import { Descriptor, ast } from '@bitgo/wasm-utxo';
3
+ /** Expand a template with the given root wallet keys and chain code */
4
+ function expand(rootWalletKeys, keyIndex, chainCode) {
5
+ if (keyIndex !== 0 && keyIndex !== 1 && keyIndex !== 2) {
6
+ throw new Error('Invalid key index');
7
+ }
8
+ const xpub = rootWalletKeys.triple[keyIndex].neutered().toBase58();
9
+ const prefix = rootWalletKeys.derivationPrefixes[keyIndex];
10
+ return xpub + '/' + prefix + '/' + chainCode + '/*';
11
+ }
12
+ /**
13
+ * Get a standard output descriptor that corresponds to the proprietary HD wallet setup
14
+ * used in BitGo wallets.
15
+ * Only supports a subset of script types.
16
+ */
17
+ export function getDescriptorForScriptType(rootWalletKeys, scriptType, scope) {
18
+ const chain = scope === 'external'
19
+ ? utxolib.bitgo.getExternalChainCode(scriptType)
20
+ : utxolib.bitgo.getInternalChainCode(scriptType);
21
+ const multi = {
22
+ multi: [2, ...rootWalletKeys.triple.map((_, i) => expand(rootWalletKeys, i, chain))],
23
+ };
24
+ switch (scriptType) {
25
+ case 'p2sh':
26
+ return Descriptor.fromString(ast.formatNode({ sh: multi }), 'derivable');
27
+ case 'p2shP2wsh':
28
+ return Descriptor.fromString(ast.formatNode({ sh: { wsh: multi } }), 'derivable');
29
+ case 'p2wsh':
30
+ return Descriptor.fromString(ast.formatNode({ wsh: multi }), 'derivable');
31
+ default:
32
+ throw new Error(`Unsupported script type ${scriptType}`);
33
+ }
34
+ }
35
+ function isSupportedScriptType(scriptType) {
36
+ return ['p2sh', 'p2shP2wsh', 'p2wsh'].includes(scriptType);
37
+ }
38
+ /**
39
+ * Get a map of named descriptors for the given root wallet keys.
40
+ * Unsupported script types will have a value of null.
41
+ * Currently supports p2sh, p2shP2wsh, and p2wsh script types.
42
+ * @param rootWalletKeys
43
+ */
44
+ export function getNamedDescriptorsForRootWalletKeys(rootWalletKeys) {
45
+ const scopes = ['external', 'internal'];
46
+ return new Map(utxolib.bitgo.outputScripts.scriptTypes2Of3.flatMap((scriptType) => scopes.map((scope) => [
47
+ `${scriptType}/${scope}`,
48
+ isSupportedScriptType(scriptType) ? getDescriptorForScriptType(rootWalletKeys, scriptType, scope) : null,
49
+ ])));
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbUZpeGVkU2NyaXB0V2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvZnJvbUZpeGVkU2NyaXB0V2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCx1RUFBdUU7QUFDdkUsU0FBUyxNQUFNLENBQUMsY0FBNEMsRUFBRSxRQUFnQixFQUFFLFNBQWlCO0lBQy9GLElBQUksUUFBUSxLQUFLLENBQUMsSUFBSSxRQUFRLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkUsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNELE9BQU8sSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLEdBQUcsR0FBRyxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDdEQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQ3hDLGNBQTRDLEVBQzVDLFVBQTBDLEVBQzFDLEtBQThCO0lBRTlCLE1BQU0sS0FBSyxHQUNULEtBQUssS0FBSyxVQUFVO1FBQ2xCLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQztRQUNoRCxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRCxNQUFNLEtBQUssR0FBdUI7UUFDaEMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ3JGLENBQUM7SUFDRixRQUFRLFVBQVUsRUFBRSxDQUFDO1FBQ25CLEtBQUssTUFBTTtZQUNULE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDM0UsS0FBSyxXQUFXO1lBQ2QsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3BGLEtBQUssT0FBTztZQUNWLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUU7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FDNUIsVUFBc0Q7SUFFdEQsT0FBTyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxvQ0FBb0MsQ0FDbEQsY0FBNEM7SUFFNUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFVLENBQUM7SUFDakQsT0FBTyxJQUFJLEdBQUcsQ0FDWixPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDakUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDcEIsR0FBRyxVQUFVLElBQUksS0FBSyxFQUFFO1FBQ3hCLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO0tBQ3pHLENBQUMsQ0FDSCxDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yLCBhc3QgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuLyoqIEV4cGFuZCBhIHRlbXBsYXRlIHdpdGggdGhlIGdpdmVuIHJvb3Qgd2FsbGV0IGtleXMgYW5kIGNoYWluIGNvZGUgKi9cbmZ1bmN0aW9uIGV4cGFuZChyb290V2FsbGV0S2V5czogdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cywga2V5SW5kZXg6IG51bWJlciwgY2hhaW5Db2RlOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAoa2V5SW5kZXggIT09IDAgJiYga2V5SW5kZXggIT09IDEgJiYga2V5SW5kZXggIT09IDIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQga2V5IGluZGV4Jyk7XG4gIH1cbiAgY29uc3QgeHB1YiA9IHJvb3RXYWxsZXRLZXlzLnRyaXBsZVtrZXlJbmRleF0ubmV1dGVyZWQoKS50b0Jhc2U1OCgpO1xuICBjb25zdCBwcmVmaXggPSByb290V2FsbGV0S2V5cy5kZXJpdmF0aW9uUHJlZml4ZXNba2V5SW5kZXhdO1xuICByZXR1cm4geHB1YiArICcvJyArIHByZWZpeCArICcvJyArIGNoYWluQ29kZSArICcvKic7XG59XG5cbi8qKlxuICogR2V0IGEgc3RhbmRhcmQgb3V0cHV0IGRlc2NyaXB0b3IgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgcHJvcHJpZXRhcnkgSEQgd2FsbGV0IHNldHVwXG4gKiB1c2VkIGluIEJpdEdvIHdhbGxldHMuXG4gKiBPbmx5IHN1cHBvcnRzIGEgc3Vic2V0IG9mIHNjcmlwdCB0eXBlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2NyaXB0b3JGb3JTY3JpcHRUeXBlKFxuICByb290V2FsbGV0S2V5czogdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cyxcbiAgc2NyaXB0VHlwZTogJ3Ayc2gnIHwgJ3Ayc2hQMndzaCcgfCAncDJ3c2gnLFxuICBzY29wZTogJ2ludGVybmFsJyB8ICdleHRlcm5hbCdcbik6IERlc2NyaXB0b3Ige1xuICBjb25zdCBjaGFpbiA9XG4gICAgc2NvcGUgPT09ICdleHRlcm5hbCdcbiAgICAgID8gdXR4b2xpYi5iaXRnby5nZXRFeHRlcm5hbENoYWluQ29kZShzY3JpcHRUeXBlKVxuICAgICAgOiB1dHhvbGliLmJpdGdvLmdldEludGVybmFsQ2hhaW5Db2RlKHNjcmlwdFR5cGUpO1xuICBjb25zdCBtdWx0aTogYXN0Lk1pbmlzY3JpcHROb2RlID0ge1xuICAgIG11bHRpOiBbMiwgLi4ucm9vdFdhbGxldEtleXMudHJpcGxlLm1hcCgoXywgaSkgPT4gZXhwYW5kKHJvb3RXYWxsZXRLZXlzLCBpLCBjaGFpbikpXSxcbiAgfTtcbiAgc3dpdGNoIChzY3JpcHRUeXBlKSB7XG4gICAgY2FzZSAncDJzaCc6XG4gICAgICByZXR1cm4gRGVzY3JpcHRvci5mcm9tU3RyaW5nKGFzdC5mb3JtYXROb2RlKHsgc2g6IG11bHRpIH0pLCAnZGVyaXZhYmxlJyk7XG4gICAgY2FzZSAncDJzaFAyd3NoJzpcbiAgICAgIHJldHVybiBEZXNjcmlwdG9yLmZyb21TdHJpbmcoYXN0LmZvcm1hdE5vZGUoeyBzaDogeyB3c2g6IG11bHRpIH0gfSksICdkZXJpdmFibGUnKTtcbiAgICBjYXNlICdwMndzaCc6XG4gICAgICByZXR1cm4gRGVzY3JpcHRvci5mcm9tU3RyaW5nKGFzdC5mb3JtYXROb2RlKHsgd3NoOiBtdWx0aSB9KSwgJ2Rlcml2YWJsZScpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHNjcmlwdCB0eXBlICR7c2NyaXB0VHlwZX1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1N1cHBvcnRlZFNjcmlwdFR5cGUoXG4gIHNjcmlwdFR5cGU6IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5TY3JpcHRUeXBlMk9mM1xuKTogc2NyaXB0VHlwZSBpcyAncDJzaCcgfCAncDJzaFAyd3NoJyB8ICdwMndzaCcge1xuICByZXR1cm4gWydwMnNoJywgJ3Ayc2hQMndzaCcsICdwMndzaCddLmluY2x1ZGVzKHNjcmlwdFR5cGUpO1xufVxuXG4vKipcbiAqIEdldCBhIG1hcCBvZiBuYW1lZCBkZXNjcmlwdG9ycyBmb3IgdGhlIGdpdmVuIHJvb3Qgd2FsbGV0IGtleXMuXG4gKiBVbnN1cHBvcnRlZCBzY3JpcHQgdHlwZXMgd2lsbCBoYXZlIGEgdmFsdWUgb2YgbnVsbC5cbiAqIEN1cnJlbnRseSBzdXBwb3J0cyBwMnNoLCBwMnNoUDJ3c2gsIGFuZCBwMndzaCBzY3JpcHQgdHlwZXMuXG4gKiBAcGFyYW0gcm9vdFdhbGxldEtleXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5hbWVkRGVzY3JpcHRvcnNGb3JSb290V2FsbGV0S2V5cyhcbiAgcm9vdFdhbGxldEtleXM6IHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXNcbik6IE1hcDxzdHJpbmcsIERlc2NyaXB0b3IgfCBudWxsPiB7XG4gIGNvbnN0IHNjb3BlcyA9IFsnZXh0ZXJuYWwnLCAnaW50ZXJuYWwnXSBhcyBjb25zdDtcbiAgcmV0dXJuIG5ldyBNYXAoXG4gICAgdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLnNjcmlwdFR5cGVzMk9mMy5mbGF0TWFwKChzY3JpcHRUeXBlKSA9PlxuICAgICAgc2NvcGVzLm1hcCgoc2NvcGUpID0+IFtcbiAgICAgICAgYCR7c2NyaXB0VHlwZX0vJHtzY29wZX1gLFxuICAgICAgICBpc1N1cHBvcnRlZFNjcmlwdFR5cGUoc2NyaXB0VHlwZSkgPyBnZXREZXNjcmlwdG9yRm9yU2NyaXB0VHlwZShyb290V2FsbGV0S2V5cywgc2NyaXB0VHlwZSwgc2NvcGUpIDogbnVsbCxcbiAgICAgIF0pXG4gICAgKVxuICApO1xufVxuIl19
@@ -0,0 +1,11 @@
1
+ export * from './psbt';
2
+ export * from './address';
3
+ export * from './DescriptorMap';
4
+ export * from './derive';
5
+ export * from './Output';
6
+ export * from './VirtualSize';
7
+ export * from './fromFixedScriptWallet';
8
+ export * from './parse/PatternMatcher';
9
+ /** @deprecated - import from @bitgo-beta/utxo-core directly instead */
10
+ export * from '../Output';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/descriptor/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AAExC,uEAAuE;AACvE,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/descriptor/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AAEvC,uEAAuE;AACvE,cAAc,WAAW,CAAC"}
@@ -0,0 +1,11 @@
1
+ export * from './psbt';
2
+ export * from './address';
3
+ export * from './DescriptorMap';
4
+ export * from './derive';
5
+ export * from './Output';
6
+ export * from './VirtualSize';
7
+ export * from './fromFixedScriptWallet';
8
+ export * from './parse/PatternMatcher';
9
+ /** @deprecated - import from @bitgo-beta/utxo-core directly instead */
10
+ export * from '../Output';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx3QkFBd0IsQ0FBQztBQUV2Qyx1RUFBdUU7QUFDdkUsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BzYnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hZGRyZXNzJztcbmV4cG9ydCAqIGZyb20gJy4vRGVzY3JpcHRvck1hcCc7XG5leHBvcnQgKiBmcm9tICcuL2Rlcml2ZSc7XG5leHBvcnQgKiBmcm9tICcuL091dHB1dCc7XG5leHBvcnQgKiBmcm9tICcuL1ZpcnR1YWxTaXplJztcbmV4cG9ydCAqIGZyb20gJy4vZnJvbUZpeGVkU2NyaXB0V2FsbGV0JztcbmV4cG9ydCAqIGZyb20gJy4vcGFyc2UvUGF0dGVybk1hdGNoZXInO1xuXG4vKiogQGRlcHJlY2F0ZWQgLSBpbXBvcnQgZnJvbSBAYml0Z28tYmV0YS91dHhvLWNvcmUgZGlyZWN0bHkgaW5zdGVhZCAqL1xuZXhwb3J0ICogZnJvbSAnLi4vT3V0cHV0JztcbiJdfQ==
@@ -0,0 +1,14 @@
1
+ export type PatternVar = {
2
+ $var: string;
3
+ };
4
+ export type Pattern = PatternVar | string | number | {
5
+ [key: string]: Pattern | Pattern[];
6
+ } | Pattern[];
7
+ export type ExtractedVars = Record<string, unknown>;
8
+ export declare class PatternMatcher {
9
+ match(node: unknown, pattern: Pattern): ExtractedVars | null;
10
+ private matchNode;
11
+ private isPatternVar;
12
+ private deepEqual;
13
+ }
14
+ //# sourceMappingURL=PatternMatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternMatcher.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/parse/PatternMatcher.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1C,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,EAAE,CAAA;CAAE,GAAG,OAAO,EAAE,CAAC;AAExG,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpD,qBAAa,cAAc;IACzB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI;IAK5D,OAAO,CAAC,SAAS;IAwCjB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,SAAS;CAgBlB"}