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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/dist/cjs/src/Output.d.ts.map +1 -0
  2. package/dist/cjs/src/Output.js +60 -0
  3. package/dist/cjs/src/bip322/index.d.ts +5 -0
  4. package/dist/cjs/src/bip322/index.d.ts.map +1 -0
  5. package/dist/cjs/src/bip322/index.js +21 -0
  6. package/dist/cjs/src/bip322/toSign.d.ts +25 -0
  7. package/dist/cjs/src/bip322/toSign.d.ts.map +1 -0
  8. package/dist/cjs/src/bip322/toSign.js +126 -0
  9. package/dist/cjs/src/bip322/toSpend.d.ts +22 -0
  10. package/dist/cjs/src/bip322/toSpend.d.ts.map +1 -0
  11. package/dist/cjs/src/bip322/toSpend.js +72 -0
  12. package/dist/cjs/src/bip322/utils.d.ts +18 -0
  13. package/dist/cjs/src/bip322/utils.d.ts.map +1 -0
  14. package/dist/cjs/src/bip322/utils.js +115 -0
  15. package/dist/cjs/src/bip322/verify.d.ts +12 -0
  16. package/dist/cjs/src/bip322/verify.d.ts.map +1 -0
  17. package/dist/cjs/src/bip322/verify.js +115 -0
  18. package/dist/cjs/src/bip32utils.d.ts +16 -0
  19. package/dist/cjs/src/bip32utils.d.ts.map +1 -0
  20. package/dist/cjs/src/bip32utils.js +71 -0
  21. package/dist/cjs/src/bip65/index.d.ts.map +1 -0
  22. package/dist/{src → cjs/src}/bip65/index.js +1 -1
  23. package/dist/cjs/src/bip65/locktime.d.ts.map +1 -0
  24. package/dist/cjs/src/bip65/locktime.js +37 -0
  25. package/dist/{src → cjs/src}/descriptor/DescriptorMap.d.ts +1 -1
  26. package/dist/cjs/src/descriptor/DescriptorMap.d.ts.map +1 -0
  27. package/dist/cjs/src/descriptor/DescriptorMap.js +9 -0
  28. package/dist/{src → cjs/src}/descriptor/Output.d.ts +1 -1
  29. package/dist/cjs/src/descriptor/Output.d.ts.map +1 -0
  30. package/dist/cjs/src/descriptor/Output.js +41 -0
  31. package/dist/{src → cjs/src}/descriptor/VirtualSize.d.ts +1 -1
  32. package/dist/cjs/src/descriptor/VirtualSize.d.ts.map +1 -0
  33. package/dist/cjs/src/descriptor/VirtualSize.js +100 -0
  34. package/dist/{src → cjs/src}/descriptor/address.d.ts +1 -1
  35. package/dist/cjs/src/descriptor/address.d.ts.map +1 -0
  36. package/dist/{src → cjs/src}/descriptor/address.js +1 -1
  37. package/dist/{src → cjs/src}/descriptor/derive.d.ts +1 -1
  38. package/dist/cjs/src/descriptor/derive.d.ts.map +1 -0
  39. package/dist/cjs/src/descriptor/derive.js +45 -0
  40. package/dist/{src → cjs/src}/descriptor/fromFixedScriptWallet.d.ts +1 -1
  41. package/dist/cjs/src/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  42. package/dist/cjs/src/descriptor/fromFixedScriptWallet.js +88 -0
  43. package/dist/{src → cjs/src}/descriptor/index.d.ts +1 -0
  44. package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
  45. package/dist/{src → cjs/src}/descriptor/index.js +2 -1
  46. package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts +14 -0
  47. package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  48. package/dist/cjs/src/descriptor/parse/PatternMatcher.js +60 -0
  49. package/dist/{src → cjs/src}/descriptor/psbt/assertSatisfiable.d.ts +1 -1
  50. package/dist/cjs/src/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  51. package/dist/cjs/src/descriptor/psbt/assertSatisfiable.js +74 -0
  52. package/dist/{src → cjs/src}/descriptor/psbt/createPsbt.d.ts +4 -0
  53. package/dist/cjs/src/descriptor/psbt/createPsbt.d.ts.map +1 -0
  54. package/dist/cjs/src/descriptor/psbt/createPsbt.js +107 -0
  55. package/dist/{src → cjs/src}/descriptor/psbt/findDescriptors.d.ts +1 -1
  56. package/dist/cjs/src/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  57. package/dist/cjs/src/descriptor/psbt/findDescriptors.js +98 -0
  58. package/dist/cjs/src/descriptor/psbt/index.d.ts.map +1 -0
  59. package/dist/{src → cjs/src}/descriptor/psbt/index.js +1 -1
  60. package/dist/{src → cjs/src}/descriptor/psbt/parse.d.ts +1 -1
  61. package/dist/cjs/src/descriptor/psbt/parse.d.ts.map +1 -0
  62. package/dist/cjs/src/descriptor/psbt/parse.js +87 -0
  63. package/dist/{src → cjs/src}/descriptor/psbt/sign.d.ts +4 -4
  64. package/dist/cjs/src/descriptor/psbt/sign.d.ts.map +1 -0
  65. package/dist/cjs/src/descriptor/psbt/sign.js +42 -0
  66. package/dist/{src → cjs/src}/descriptor/psbt/wrap.d.ts +1 -1
  67. package/dist/cjs/src/descriptor/psbt/wrap.d.ts.map +1 -0
  68. package/dist/cjs/src/descriptor/psbt/wrap.js +76 -0
  69. package/dist/cjs/src/dustThreshold.d.ts.map +1 -0
  70. package/dist/cjs/src/dustThreshold.js +134 -0
  71. package/dist/{src → cjs/src}/index.d.ts +1 -0
  72. package/dist/cjs/src/index.d.ts.map +1 -0
  73. package/dist/{src → cjs/src}/index.js +3 -2
  74. package/dist/cjs/src/paygo/attestation.d.ts +11 -0
  75. package/dist/cjs/src/paygo/attestation.d.ts.map +1 -0
  76. package/dist/cjs/src/paygo/attestation.js +58 -0
  77. package/dist/cjs/src/paygo/index.d.ts +3 -0
  78. package/dist/cjs/src/paygo/index.d.ts.map +1 -0
  79. package/dist/cjs/src/paygo/index.js +19 -0
  80. package/dist/{src/paygo/ExtractAddressPayGoAttestation.d.ts → cjs/src/paygo/parsePayGoAttestation.d.ts} +8 -3
  81. package/dist/cjs/src/paygo/parsePayGoAttestation.d.ts.map +1 -0
  82. package/dist/cjs/src/paygo/parsePayGoAttestation.js +50 -0
  83. package/dist/cjs/src/paygo/psbt/Errors.d.ts +22 -0
  84. package/dist/cjs/src/paygo/psbt/Errors.d.ts.map +1 -0
  85. package/dist/cjs/src/paygo/psbt/Errors.js +44 -0
  86. package/dist/cjs/src/paygo/psbt/index.d.ts +2 -0
  87. package/dist/cjs/src/paygo/psbt/index.d.ts.map +1 -0
  88. package/dist/{src/paygo → cjs/src/paygo/psbt}/index.js +2 -2
  89. package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts +29 -0
  90. package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  91. package/dist/cjs/src/paygo/psbt/payGoAddressProof.js +124 -0
  92. package/dist/{src → cjs/src}/testutil/descriptor/descriptors.d.ts +4 -1
  93. package/dist/cjs/src/testutil/descriptor/descriptors.d.ts.map +1 -0
  94. package/dist/cjs/src/testutil/descriptor/descriptors.js +162 -0
  95. package/dist/cjs/src/testutil/descriptor/index.d.ts.map +1 -0
  96. package/dist/{src → cjs/src}/testutil/descriptor/index.js +1 -1
  97. package/dist/{src → cjs/src}/testutil/descriptor/mock.utils.d.ts +3 -1
  98. package/dist/cjs/src/testutil/descriptor/mock.utils.d.ts.map +1 -0
  99. package/dist/cjs/src/testutil/descriptor/mock.utils.js +92 -0
  100. package/dist/cjs/src/testutil/descriptor/psbt.utils.d.ts.map +1 -0
  101. package/dist/cjs/src/testutil/descriptor/psbt.utils.js +21 -0
  102. package/dist/cjs/src/testutil/fixtures.utils.d.ts.map +1 -0
  103. package/dist/cjs/src/testutil/fixtures.utils.js +127 -0
  104. package/dist/{src → cjs/src}/testutil/generatePayGoAttestationProof.utils.d.ts +1 -1
  105. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  106. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.js +38 -0
  107. package/dist/{src → cjs/src}/testutil/index.d.ts +1 -0
  108. package/dist/cjs/src/testutil/index.d.ts.map +1 -0
  109. package/dist/{src → cjs/src}/testutil/index.js +2 -1
  110. package/dist/{src → cjs/src}/testutil/key.utils.d.ts +1 -1
  111. package/dist/cjs/src/testutil/key.utils.d.ts.map +1 -0
  112. package/dist/cjs/src/testutil/key.utils.js +60 -0
  113. package/dist/cjs/src/testutil/toPlainObject.utils.d.ts.map +1 -0
  114. package/dist/cjs/src/testutil/toPlainObject.utils.js +89 -0
  115. package/dist/cjs/src/testutil/trimMessagePrefix.d.ts +11 -0
  116. package/dist/cjs/src/testutil/trimMessagePrefix.d.ts.map +1 -0
  117. package/dist/cjs/src/testutil/trimMessagePrefix.js +60 -0
  118. package/dist/cjs/src/xOnlyPubkey.d.ts.map +1 -0
  119. package/dist/cjs/src/xOnlyPubkey.js +18 -0
  120. package/dist/cjs/test/Output.d.ts +2 -0
  121. package/dist/cjs/test/Output.d.ts.map +1 -0
  122. package/dist/cjs/test/Output.js +70 -0
  123. package/dist/cjs/test/bip322/bip322.utils.d.ts +7 -0
  124. package/dist/cjs/test/bip322/bip322.utils.d.ts.map +1 -0
  125. package/dist/cjs/test/bip322/bip322.utils.js +16 -0
  126. package/dist/cjs/test/bip322/toSign.d.ts +2 -0
  127. package/dist/cjs/test/bip322/toSign.d.ts.map +1 -0
  128. package/dist/cjs/test/bip322/toSign.js +133 -0
  129. package/dist/cjs/test/bip322/toSpend.d.ts +2 -0
  130. package/dist/cjs/test/bip322/toSpend.d.ts.map +1 -0
  131. package/dist/cjs/test/bip322/toSpend.js +70 -0
  132. package/dist/cjs/test/bip322/utils.d.ts +2 -0
  133. package/dist/cjs/test/bip322/utils.d.ts.map +1 -0
  134. package/dist/cjs/test/bip322/utils.js +79 -0
  135. package/dist/cjs/test/bip322/verify.d.ts +2 -0
  136. package/dist/cjs/test/bip322/verify.d.ts.map +1 -0
  137. package/dist/cjs/test/bip322/verify.js +293 -0
  138. package/dist/cjs/test/bip32utils.d.ts +2 -0
  139. package/dist/cjs/test/bip32utils.d.ts.map +1 -0
  140. package/dist/cjs/test/bip32utils.js +62 -0
  141. package/dist/cjs/test/bip65/locktime.d.ts +2 -0
  142. package/dist/cjs/test/bip65/locktime.d.ts.map +1 -0
  143. package/dist/cjs/test/bip65/locktime.js +22 -0
  144. package/dist/cjs/test/descriptor/Output.d.ts +2 -0
  145. package/dist/cjs/test/descriptor/Output.d.ts.map +1 -0
  146. package/dist/cjs/test/descriptor/Output.js +44 -0
  147. package/dist/cjs/test/descriptor/derive.d.ts +2 -0
  148. package/dist/cjs/test/descriptor/derive.d.ts.map +1 -0
  149. package/dist/cjs/test/descriptor/derive.js +27 -0
  150. package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts +2 -0
  151. package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  152. package/dist/cjs/test/descriptor/fromFixedScriptWallet.js +145 -0
  153. package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts +2 -0
  154. package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  155. package/dist/cjs/test/descriptor/parse/PatternMatcher.js +120 -0
  156. package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts +2 -0
  157. package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts.map +1 -0
  158. package/dist/cjs/test/descriptor/psbt/VirtualSize.js +71 -0
  159. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts +2 -0
  160. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  161. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.js +56 -0
  162. package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts +2 -0
  163. package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  164. package/dist/cjs/test/descriptor/psbt/findDescriptors.js +70 -0
  165. package/dist/cjs/test/descriptor/psbt/psbt.d.ts +2 -0
  166. package/dist/cjs/test/descriptor/psbt/psbt.d.ts.map +1 -0
  167. package/dist/cjs/test/descriptor/psbt/psbt.js +211 -0
  168. package/dist/cjs/test/dustThreshold.d.ts +2 -0
  169. package/dist/cjs/test/dustThreshold.d.ts.map +1 -0
  170. package/dist/cjs/test/dustThreshold.js +110 -0
  171. package/dist/cjs/test/paygo/attestation.d.ts +2 -0
  172. package/dist/cjs/test/paygo/attestation.d.ts.map +1 -0
  173. package/dist/cjs/test/paygo/attestation.js +23 -0
  174. package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts +2 -0
  175. package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts.map +1 -0
  176. package/dist/cjs/test/paygo/parsePayGoAttestation.js +75 -0
  177. package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts +9 -0
  178. package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  179. package/dist/cjs/test/paygo/psbt/payGoAddressProof.js +163 -0
  180. package/dist/cjs/test/xOnlyPubkey.d.ts +2 -0
  181. package/dist/cjs/test/xOnlyPubkey.d.ts.map +1 -0
  182. package/dist/cjs/test/xOnlyPubkey.js +18 -0
  183. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  184. package/dist/esm/Output.d.ts +43 -0
  185. package/dist/esm/Output.js +53 -0
  186. package/dist/esm/bip322/index.d.ts +5 -0
  187. package/dist/esm/bip322/index.d.ts.map +1 -0
  188. package/dist/esm/bip322/index.js +5 -0
  189. package/dist/esm/bip322/toSign.d.ts +25 -0
  190. package/dist/esm/bip322/toSign.d.ts.map +1 -0
  191. package/dist/esm/bip322/toSign.js +120 -0
  192. package/dist/esm/bip322/toSpend.d.ts +22 -0
  193. package/dist/esm/bip322/toSpend.d.ts.map +1 -0
  194. package/dist/esm/bip322/toSpend.js +66 -0
  195. package/dist/esm/bip322/utils.d.ts +18 -0
  196. package/dist/esm/bip322/utils.d.ts.map +1 -0
  197. package/dist/esm/bip322/utils.js +77 -0
  198. package/dist/esm/bip322/verify.d.ts +12 -0
  199. package/dist/esm/bip322/verify.d.ts.map +1 -0
  200. package/dist/esm/bip322/verify.js +76 -0
  201. package/dist/esm/bip32utils.d.ts +16 -0
  202. package/dist/esm/bip32utils.d.ts.map +1 -0
  203. package/dist/esm/bip32utils.js +34 -0
  204. package/dist/esm/bip65/index.d.ts +2 -0
  205. package/dist/esm/bip65/index.js +2 -0
  206. package/dist/esm/bip65/locktime.d.ts +8 -0
  207. package/dist/esm/bip65/locktime.js +34 -0
  208. package/dist/esm/descriptor/DescriptorMap.d.ts +9 -0
  209. package/dist/{src → esm}/descriptor/DescriptorMap.d.ts.map +1 -1
  210. package/dist/esm/descriptor/DescriptorMap.js +6 -0
  211. package/dist/esm/descriptor/Output.d.ts +23 -0
  212. package/dist/{src → esm}/descriptor/Output.d.ts.map +1 -1
  213. package/dist/esm/descriptor/Output.js +32 -0
  214. package/dist/esm/descriptor/VirtualSize.d.ts +23 -0
  215. package/dist/{src → esm}/descriptor/VirtualSize.d.ts.map +1 -1
  216. package/dist/esm/descriptor/VirtualSize.js +94 -0
  217. package/dist/esm/descriptor/address.d.ts +5 -0
  218. package/dist/{src → esm}/descriptor/address.d.ts.map +1 -1
  219. package/dist/esm/descriptor/address.js +11 -0
  220. package/dist/esm/descriptor/derive.d.ts +13 -0
  221. package/dist/{src → esm}/descriptor/derive.d.ts.map +1 -1
  222. package/dist/esm/descriptor/derive.js +38 -0
  223. package/dist/esm/descriptor/fromFixedScriptWallet.d.ts +16 -0
  224. package/dist/{src → esm}/descriptor/fromFixedScriptWallet.d.ts.map +1 -1
  225. package/dist/esm/descriptor/fromFixedScriptWallet.js +51 -0
  226. package/dist/esm/descriptor/index.d.ts +11 -0
  227. package/dist/{src → esm}/descriptor/index.d.ts.map +1 -1
  228. package/dist/esm/descriptor/index.js +11 -0
  229. package/dist/esm/descriptor/parse/PatternMatcher.d.ts +14 -0
  230. package/dist/esm/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  231. package/dist/esm/descriptor/parse/PatternMatcher.js +56 -0
  232. package/dist/esm/descriptor/psbt/assertSatisfiable.d.ts +20 -0
  233. package/dist/{src → esm}/descriptor/psbt/assertSatisfiable.d.ts.map +1 -1
  234. package/dist/esm/descriptor/psbt/assertSatisfiable.js +69 -0
  235. package/dist/esm/descriptor/psbt/createPsbt.d.ts +23 -0
  236. package/dist/esm/descriptor/psbt/createPsbt.d.ts.map +1 -0
  237. package/dist/esm/descriptor/psbt/createPsbt.js +69 -0
  238. package/dist/esm/descriptor/psbt/findDescriptors.d.ts +26 -0
  239. package/dist/{src → esm}/descriptor/psbt/findDescriptors.d.ts.map +1 -1
  240. package/dist/esm/descriptor/psbt/findDescriptors.js +94 -0
  241. package/dist/esm/descriptor/psbt/index.d.ts +7 -0
  242. package/dist/esm/descriptor/psbt/index.js +7 -0
  243. package/dist/esm/descriptor/psbt/parse.d.ts +27 -0
  244. package/dist/{src → esm}/descriptor/psbt/parse.d.ts.map +1 -1
  245. package/dist/esm/descriptor/psbt/parse.js +51 -0
  246. package/dist/esm/descriptor/psbt/sign.d.ts +26 -0
  247. package/dist/esm/descriptor/psbt/sign.d.ts.map +1 -0
  248. package/dist/esm/descriptor/psbt/sign.js +34 -0
  249. package/dist/esm/descriptor/psbt/wrap.d.ts +12 -0
  250. package/dist/{src → esm}/descriptor/psbt/wrap.d.ts.map +1 -1
  251. package/dist/esm/descriptor/psbt/wrap.js +38 -0
  252. package/dist/esm/dustThreshold.d.ts +4 -0
  253. package/dist/esm/dustThreshold.js +97 -0
  254. package/dist/esm/index.d.ts +10 -0
  255. package/dist/{src → esm}/index.d.ts.map +1 -1
  256. package/dist/esm/index.js +10 -0
  257. package/dist/esm/paygo/attestation.d.ts +11 -0
  258. package/dist/esm/paygo/attestation.d.ts.map +1 -0
  259. package/dist/esm/paygo/attestation.js +18 -0
  260. package/dist/esm/paygo/index.d.ts +3 -0
  261. package/dist/esm/paygo/index.d.ts.map +1 -0
  262. package/dist/esm/paygo/index.js +3 -0
  263. package/dist/esm/paygo/parsePayGoAttestation.d.ts +16 -0
  264. package/dist/esm/paygo/parsePayGoAttestation.d.ts.map +1 -0
  265. package/dist/esm/paygo/parsePayGoAttestation.js +43 -0
  266. package/dist/esm/paygo/psbt/Errors.d.ts +22 -0
  267. package/dist/esm/paygo/psbt/Errors.d.ts.map +1 -0
  268. package/dist/esm/paygo/psbt/Errors.js +35 -0
  269. package/dist/esm/paygo/psbt/index.d.ts +2 -0
  270. package/dist/esm/paygo/psbt/index.d.ts.map +1 -0
  271. package/dist/esm/paygo/psbt/index.js +2 -0
  272. package/dist/esm/paygo/psbt/payGoAddressProof.d.ts +29 -0
  273. package/dist/esm/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  274. package/dist/esm/paygo/psbt/payGoAddressProof.js +85 -0
  275. package/dist/esm/testutil/descriptor/descriptors.d.ts +13 -0
  276. package/dist/esm/testutil/descriptor/descriptors.d.ts.map +1 -0
  277. package/dist/esm/testutil/descriptor/descriptors.js +150 -0
  278. package/dist/esm/testutil/descriptor/index.d.ts +4 -0
  279. package/dist/esm/testutil/descriptor/index.js +4 -0
  280. package/dist/esm/testutil/descriptor/mock.utils.d.ts +36 -0
  281. package/dist/esm/testutil/descriptor/mock.utils.d.ts.map +1 -0
  282. package/dist/esm/testutil/descriptor/mock.utils.js +53 -0
  283. package/dist/esm/testutil/descriptor/psbt.utils.d.ts +4 -0
  284. package/dist/{src → esm}/testutil/descriptor/psbt.utils.d.ts.map +1 -1
  285. package/dist/esm/testutil/descriptor/psbt.utils.js +17 -0
  286. package/dist/esm/testutil/fixtures.utils.d.ts +15 -0
  287. package/dist/{src → esm}/testutil/fixtures.utils.js +5 -42
  288. package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
  289. package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  290. package/dist/esm/testutil/generatePayGoAttestationProof.utils.js +32 -0
  291. package/dist/esm/testutil/index.d.ts +6 -0
  292. package/dist/{src → esm}/testutil/index.d.ts.map +1 -1
  293. package/dist/esm/testutil/index.js +6 -0
  294. package/dist/esm/testutil/key.utils.d.ts +16 -0
  295. package/dist/{src → esm}/testutil/key.utils.d.ts.map +1 -1
  296. package/dist/esm/testutil/key.utils.js +22 -0
  297. package/dist/esm/testutil/toPlainObject.utils.d.ts +11 -0
  298. package/dist/{src → esm}/testutil/toPlainObject.utils.d.ts.map +1 -1
  299. package/dist/esm/testutil/toPlainObject.utils.js +85 -0
  300. package/dist/esm/testutil/trimMessagePrefix.d.ts +11 -0
  301. package/dist/esm/testutil/trimMessagePrefix.d.ts.map +1 -0
  302. package/dist/esm/testutil/trimMessagePrefix.js +24 -0
  303. package/dist/esm/xOnlyPubkey.d.ts +2 -0
  304. package/dist/esm/xOnlyPubkey.js +15 -0
  305. package/package.json +50 -25
  306. package/dist/src/Output.js +0 -60
  307. package/dist/src/bip32utils.d.ts +0 -16
  308. package/dist/src/bip32utils.d.ts.map +0 -1
  309. package/dist/src/bip32utils.js +0 -72
  310. package/dist/src/bip65/locktime.js +0 -37
  311. package/dist/src/descriptor/DescriptorMap.js +0 -9
  312. package/dist/src/descriptor/Output.js +0 -41
  313. package/dist/src/descriptor/VirtualSize.js +0 -100
  314. package/dist/src/descriptor/derive.js +0 -45
  315. package/dist/src/descriptor/fromFixedScriptWallet.js +0 -88
  316. package/dist/src/descriptor/psbt/assertSatisfiable.js +0 -74
  317. package/dist/src/descriptor/psbt/createPsbt.d.ts.map +0 -1
  318. package/dist/src/descriptor/psbt/createPsbt.js +0 -82
  319. package/dist/src/descriptor/psbt/findDescriptors.js +0 -98
  320. package/dist/src/descriptor/psbt/parse.js +0 -87
  321. package/dist/src/descriptor/psbt/sign.d.ts.map +0 -1
  322. package/dist/src/descriptor/psbt/sign.js +0 -42
  323. package/dist/src/descriptor/psbt/wrap.js +0 -76
  324. package/dist/src/dustThreshold.js +0 -134
  325. package/dist/src/paygo/ExtractAddressPayGoAttestation.d.ts.map +0 -1
  326. package/dist/src/paygo/ExtractAddressPayGoAttestation.js +0 -44
  327. package/dist/src/paygo/index.d.ts +0 -2
  328. package/dist/src/paygo/index.d.ts.map +0 -1
  329. package/dist/src/testutil/descriptor/descriptors.d.ts.map +0 -1
  330. package/dist/src/testutil/descriptor/descriptors.js +0 -125
  331. package/dist/src/testutil/descriptor/mock.utils.d.ts.map +0 -1
  332. package/dist/src/testutil/descriptor/mock.utils.js +0 -91
  333. package/dist/src/testutil/descriptor/psbt.utils.js +0 -20
  334. package/dist/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +0 -1
  335. package/dist/src/testutil/generatePayGoAttestationProof.utils.js +0 -43
  336. package/dist/src/testutil/key.utils.js +0 -59
  337. package/dist/src/testutil/toPlainObject.utils.js +0 -75
  338. package/dist/src/xOnlyPubkey.js +0 -18
  339. /package/dist/{src → cjs/src}/Output.d.ts +0 -0
  340. /package/dist/{src → cjs/src}/bip65/index.d.ts +0 -0
  341. /package/dist/{src → cjs/src}/bip65/locktime.d.ts +0 -0
  342. /package/dist/{src → cjs/src}/descriptor/psbt/index.d.ts +0 -0
  343. /package/dist/{src → cjs/src}/dustThreshold.d.ts +0 -0
  344. /package/dist/{src → cjs/src}/testutil/descriptor/index.d.ts +0 -0
  345. /package/dist/{src → cjs/src}/testutil/descriptor/psbt.utils.d.ts +0 -0
  346. /package/dist/{src → cjs/src}/testutil/fixtures.utils.d.ts +0 -0
  347. /package/dist/{src → cjs/src}/testutil/toPlainObject.utils.d.ts +0 -0
  348. /package/dist/{src → cjs/src}/xOnlyPubkey.d.ts +0 -0
  349. /package/dist/{src → esm}/Output.d.ts.map +0 -0
  350. /package/dist/{src → esm}/bip65/index.d.ts.map +0 -0
  351. /package/dist/{src → esm}/bip65/locktime.d.ts.map +0 -0
  352. /package/dist/{src → esm}/descriptor/psbt/index.d.ts.map +0 -0
  353. /package/dist/{src → esm}/dustThreshold.d.ts.map +0 -0
  354. /package/dist/{src → esm}/testutil/descriptor/index.d.ts.map +0 -0
  355. /package/dist/{src → esm}/testutil/fixtures.utils.d.ts.map +0 -0
  356. /package/dist/{src → esm}/xOnlyPubkey.d.ts.map +0 -0
@@ -0,0 +1,150 @@
1
+ import assert from 'assert';
2
+ import { bip32 } from '@bitgo-beta/secp256k1';
3
+ import { Miniscript, Descriptor, ast } from '@bitgo/wasm-utxo';
4
+ import { getKeyTriple } from '../key.utils';
5
+ export function getDefaultXPubs(seed) {
6
+ return getKeyTriple(seed).map((k) => k.neutered().toBase58());
7
+ }
8
+ export function getUnspendableKey() {
9
+ /*
10
+ https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#constructing-and-spending-taproot-outputs
11
+
12
+ ```
13
+ If one or more of the spending conditions consist of just a single key (after aggregation), the most likely one should
14
+ be made the internal key. If no such condition exists, it may be worthwhile adding one that consists of an aggregation
15
+ of all keys participating in all scripts combined; effectively adding an "everyone agrees" branch. If that is
16
+ inacceptable, pick as internal key a "Nothing Up My Sleeve" (NUMS) point, i.e., a point with unknown discrete
17
+ logarithm.
18
+
19
+ One example of such a point is H = lift_x(0x50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0) which is
20
+ constructed by taking the hash of the standard uncompressed encoding of the secp256k1 base point G as X coordinate.
21
+ In order to avoid leaking the information that key path spending is not possible it is recommended to pick a fresh
22
+ integer r in the range 0...n-1 uniformly at random and use H + rG as internal key. It is possible to prove that this
23
+ internal key does not have a known discrete logarithm with respect to G by revealing r to a verifier who can then
24
+ reconstruct how the internal key was created.
25
+ ```
26
+
27
+ We could do the random integer trick here, but for internal testing it is sufficient to use the fixed point.
28
+ */
29
+ return '50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0';
30
+ }
31
+ function toDescriptorMap(v) {
32
+ return new Map(Object.entries(v).map(([k, v]) => [k, Descriptor.fromString(v, 'derivable')]));
33
+ }
34
+ function toXPub(k, path) {
35
+ if (typeof k === 'string') {
36
+ return k + '/' + path;
37
+ }
38
+ return k.neutered().toBase58() + '/' + path;
39
+ }
40
+ function toPlain(k, { xonly = false } = {}) {
41
+ if (typeof k === 'string') {
42
+ if (k.startsWith('xpub') || k.startsWith('xprv')) {
43
+ return toPlain(bip32.fromBase58(k), { xonly });
44
+ }
45
+ return k;
46
+ }
47
+ return k.publicKey.subarray(xonly ? 1 : 0).toString('hex');
48
+ }
49
+ function toXOnly(k) {
50
+ return toPlain(k, { xonly: true });
51
+ }
52
+ function multiArgs(m, n, keys, path) {
53
+ if (n < m) {
54
+ throw new Error(`Cannot create ${m} of ${n} multisig`);
55
+ }
56
+ if (keys.length < n) {
57
+ throw new Error(`Not enough keys for ${m} of ${n} multisig: keys.length=${keys.length}`);
58
+ }
59
+ keys = keys.slice(0, n);
60
+ return [m, ...keys.map((k) => toXPub(k, path))];
61
+ }
62
+ export function getPsbtParams(t) {
63
+ switch (t) {
64
+ case 'Wsh2Of3CltvDrop':
65
+ return { locktime: 1 };
66
+ default:
67
+ return {};
68
+ }
69
+ }
70
+ function getDescriptorNode(template, keys = getDefaultXPubs(), path = '0/*') {
71
+ switch (template) {
72
+ case 'Wsh2Of3':
73
+ return {
74
+ wsh: { multi: multiArgs(2, 3, keys, path) },
75
+ };
76
+ case 'Wsh2Of3CltvDrop':
77
+ const { locktime } = getPsbtParams(template);
78
+ assert(locktime);
79
+ return {
80
+ wsh: {
81
+ and_v: [{ 'r:after': locktime }, { multi: multiArgs(2, 3, keys, path) }],
82
+ },
83
+ };
84
+ case 'Wsh2Of2':
85
+ return {
86
+ wsh: { multi: multiArgs(2, 2, keys, path) },
87
+ };
88
+ case 'Tr2Of3-NoKeyPath':
89
+ return {
90
+ tr: [getUnspendableKey(), { multi_a: multiArgs(2, 3, keys, path) }],
91
+ };
92
+ case 'Tr1Of3-NoKeyPath-Tree':
93
+ return {
94
+ tr: [
95
+ getUnspendableKey(),
96
+ [{ pk: toXPub(keys[0], path) }, [{ pk: toXPub(keys[1], path) }, { pk: toXPub(keys[2], path) }]],
97
+ ],
98
+ };
99
+ case 'Tr1Of3-NoKeyPath-Tree-Plain':
100
+ return {
101
+ tr: [getUnspendableKey(), [{ pk: toXOnly(keys[0]) }, [{ pk: toXOnly(keys[1]) }, { pk: toXOnly(keys[2]) }]]],
102
+ };
103
+ }
104
+ throw new Error(`Unknown descriptor template: ${template}`);
105
+ }
106
+ function getTapLeafScriptNodes(t) {
107
+ if (Array.isArray(t)) {
108
+ if (t.length !== 2) {
109
+ throw new Error(`expected tuple, got: ${JSON.stringify(t)}`);
110
+ }
111
+ return t.map((v) => (Array.isArray(v) ? getTapLeafScriptNodes(v) : v)).flat();
112
+ }
113
+ if (typeof t === 'object') {
114
+ const node = t;
115
+ if (!('tr' in node)) {
116
+ throw new Error(`TapLeafScripts are only supported for Taproot descriptors, got: ${t}`);
117
+ }
118
+ if (!Array.isArray(node.tr) || node.tr.length !== 2) {
119
+ throw new Error(`expected tuple, got: ${JSON.stringify(node.tr)}`);
120
+ }
121
+ const tapscript = node.tr[1];
122
+ if (!Array.isArray(tapscript)) {
123
+ throw new Error(`expected tapscript to be an array, got: ${JSON.stringify(tapscript)}`);
124
+ }
125
+ return getTapLeafScriptNodes(tapscript);
126
+ }
127
+ throw new Error(`Invalid input: ${JSON.stringify(t)}`);
128
+ }
129
+ export function containsKey(script, key) {
130
+ if (script instanceof Miniscript) {
131
+ script = ast.fromMiniscript(script);
132
+ }
133
+ if ('pk' in script) {
134
+ return script.pk === toXOnly(key);
135
+ }
136
+ throw new Error(`Unsupported script type: ${JSON.stringify(script)}`);
137
+ }
138
+ export function getTapLeafScripts(d) {
139
+ return getTapLeafScriptNodes(ast.fromDescriptor(d)).map((n) => Miniscript.fromString(ast.formatNode(n), 'tap').toString());
140
+ }
141
+ export function getDescriptor(template, keys = getDefaultXPubs(), path = '0/*') {
142
+ return Descriptor.fromStringDetectType(ast.formatNode(getDescriptorNode(template, keys, path)));
143
+ }
144
+ export function getDescriptorMap(template, keys = getDefaultXPubs()) {
145
+ return toDescriptorMap({
146
+ external: getDescriptor(template, keys, '0/*').toString(),
147
+ internal: getDescriptor(template, keys, '1/*').toString(),
148
+ });
149
+ }
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVzdHV0aWwvZGVzY3JpcHRvci9kZXNjcmlwdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLEtBQUssRUFBa0IsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUcvRCxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLGNBQWMsQ0FBQztBQUUvRCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQWE7SUFDM0MsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQW1CLENBQUM7QUFDbEYsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUI7SUFDL0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFtQkU7SUFDRixPQUFPLGtFQUFrRSxDQUFDO0FBQzVFLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxDQUF5QjtJQUNoRCxPQUFPLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hHLENBQUM7QUFnQkQsU0FBUyxNQUFNLENBQUMsQ0FBMEIsRUFBRSxJQUFZO0lBQ3RELElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUIsT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztBQUM5QyxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsQ0FBMEIsRUFBRSxFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFO0lBQ2pFLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNqRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBQyxDQUEwQjtJQUN6QyxPQUFPLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxJQUFpQyxFQUFFLElBQVk7SUFDdEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLDBCQUEwQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBQ0QsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxDQUFxQjtJQUNqRCxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ1YsS0FBSyxpQkFBaUI7WUFDcEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN6QjtZQUNFLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUN4QixRQUE0QixFQUM1QixPQUE2QixlQUFlLEVBQUUsRUFDOUMsSUFBSSxHQUFHLEtBQUs7SUFFWixRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssU0FBUztZQUNaLE9BQU87Z0JBQ0wsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTthQUM1QyxDQUFDO1FBQ0osS0FBSyxpQkFBaUI7WUFDcEIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakIsT0FBTztnQkFDTCxHQUFHLEVBQUU7b0JBQ0gsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7aUJBQ3pFO2FBQ0YsQ0FBQztRQUNKLEtBQUssU0FBUztZQUNaLE9BQU87Z0JBQ0wsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTthQUM1QyxDQUFDO1FBQ0osS0FBSyxrQkFBa0I7WUFDckIsT0FBTztnQkFDTCxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO2FBQ3BFLENBQUM7UUFDSixLQUFLLHVCQUF1QjtZQUMxQixPQUFPO2dCQUNMLEVBQUUsRUFBRTtvQkFDRixpQkFBaUIsRUFBRTtvQkFDbkIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ2hHO2FBQ0YsQ0FBQztRQUNKLEtBQUssNkJBQTZCO1lBQ2hDLE9BQU87Z0JBQ0wsRUFBRSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzVHLENBQUM7SUFDTixDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBSUQsU0FBUyxxQkFBcUIsQ0FBQyxDQUErQjtJQUM1RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoRixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMxQixNQUFNLElBQUksR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUNELE9BQU8scUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQXVDLEVBQUUsR0FBNEI7SUFDL0YsSUFBSSxNQUFNLFlBQVksVUFBVSxFQUFFLENBQUM7UUFDakMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ25CLE9BQU8sTUFBTSxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsQ0FBYTtJQUM3QyxPQUFPLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUM1RCxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQzNELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsUUFBNEIsRUFDNUIsT0FBNkIsZUFBZSxFQUFFLEVBQzlDLElBQUksR0FBRyxLQUFLO0lBRVosT0FBTyxVQUFVLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixRQUE0QixFQUM1QixPQUE2QixlQUFlLEVBQUU7SUFFOUMsT0FBTyxlQUFlLENBQUM7UUFDckIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRTtRQUN6RCxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFO0tBQzFELENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IGJpcDMyLCBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBNaW5pc2NyaXB0LCBEZXNjcmlwdG9yLCBhc3QgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgRGVzY3JpcHRvck1hcCwgUHNidFBhcmFtcyB9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZ2V0S2V5VHJpcGxlLCBUcmlwbGUsIEtleVRyaXBsZSB9IGZyb20gJy4uL2tleS51dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0WFB1YnMoc2VlZD86IHN0cmluZyk6IFRyaXBsZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGdldEtleVRyaXBsZShzZWVkKS5tYXAoKGspID0+IGsubmV1dGVyZWQoKS50b0Jhc2U1OCgpKSBhcyBUcmlwbGU8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFVuc3BlbmRhYmxlS2V5KCk6IHN0cmluZyB7XG4gIC8qXG4gIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpcHMvYmxvYi9tYXN0ZXIvYmlwLTAzNDEubWVkaWF3aWtpI2NvbnN0cnVjdGluZy1hbmQtc3BlbmRpbmctdGFwcm9vdC1vdXRwdXRzXG5cbiAgYGBgXG4gIElmIG9uZSBvciBtb3JlIG9mIHRoZSBzcGVuZGluZyBjb25kaXRpb25zIGNvbnNpc3Qgb2YganVzdCBhIHNpbmdsZSBrZXkgKGFmdGVyIGFnZ3JlZ2F0aW9uKSwgdGhlIG1vc3QgbGlrZWx5IG9uZSBzaG91bGRcbiAgYmUgbWFkZSB0aGUgaW50ZXJuYWwga2V5LiBJZiBubyBzdWNoIGNvbmRpdGlvbiBleGlzdHMsIGl0IG1heSBiZSB3b3J0aHdoaWxlIGFkZGluZyBvbmUgdGhhdCBjb25zaXN0cyBvZiBhbiBhZ2dyZWdhdGlvblxuICBvZiBhbGwga2V5cyBwYXJ0aWNpcGF0aW5nIGluIGFsbCBzY3JpcHRzIGNvbWJpbmVkOyBlZmZlY3RpdmVseSBhZGRpbmcgYW4gXCJldmVyeW9uZSBhZ3JlZXNcIiBicmFuY2guIElmIHRoYXQgaXNcbiAgaW5hY2NlcHRhYmxlLCBwaWNrIGFzIGludGVybmFsIGtleSBhIFwiTm90aGluZyBVcCBNeSBTbGVldmVcIiAoTlVNUykgcG9pbnQsIGkuZS4sIGEgcG9pbnQgd2l0aCB1bmtub3duIGRpc2NyZXRlXG4gIGxvZ2FyaXRobS5cblxuICBPbmUgZXhhbXBsZSBvZiBzdWNoIGEgcG9pbnQgaXMgSCA9IGxpZnRfeCgweDUwOTI5Yjc0YzFhMDQ5NTRiNzhiNGI2MDM1ZTk3YTVlMDc4YTVhMGYyOGVjOTZkNTQ3YmZlZTlhY2U4MDNhYzApIHdoaWNoIGlzXG4gIGNvbnN0cnVjdGVkIGJ5IHRha2luZyB0aGUgaGFzaCBvZiB0aGUgc3RhbmRhcmQgdW5jb21wcmVzc2VkIGVuY29kaW5nIG9mIHRoZSBzZWNwMjU2azEgYmFzZSBwb2ludCBHIGFzIFggY29vcmRpbmF0ZS5cbiAgSW4gb3JkZXIgdG8gYXZvaWQgbGVha2luZyB0aGUgaW5mb3JtYXRpb24gdGhhdCBrZXkgcGF0aCBzcGVuZGluZyBpcyBub3QgcG9zc2libGUgaXQgaXMgcmVjb21tZW5kZWQgdG8gcGljayBhIGZyZXNoXG4gIGludGVnZXIgciBpbiB0aGUgcmFuZ2UgMC4uLm4tMSB1bmlmb3JtbHkgYXQgcmFuZG9tIGFuZCB1c2UgSCArIHJHIGFzIGludGVybmFsIGtleS4gSXQgaXMgcG9zc2libGUgdG8gcHJvdmUgdGhhdCB0aGlzXG4gIGludGVybmFsIGtleSBkb2VzIG5vdCBoYXZlIGEga25vd24gZGlzY3JldGUgbG9nYXJpdGhtIHdpdGggcmVzcGVjdCB0byBHIGJ5IHJldmVhbGluZyByIHRvIGEgdmVyaWZpZXIgd2hvIGNhbiB0aGVuXG4gIHJlY29uc3RydWN0IGhvdyB0aGUgaW50ZXJuYWwga2V5IHdhcyBjcmVhdGVkLlxuICBgYGBcblxuICBXZSBjb3VsZCBkbyB0aGUgcmFuZG9tIGludGVnZXIgdHJpY2sgaGVyZSwgYnV0IGZvciBpbnRlcm5hbCB0ZXN0aW5nIGl0IGlzIHN1ZmZpY2llbnQgdG8gdXNlIHRoZSBmaXhlZCBwb2ludC5cbiAgKi9cbiAgcmV0dXJuICc1MDkyOWI3NGMxYTA0OTU0Yjc4YjRiNjAzNWU5N2E1ZTA3OGE1YTBmMjhlYzk2ZDU0N2JmZWU5YWNlODAzYWMwJztcbn1cblxuZnVuY3Rpb24gdG9EZXNjcmlwdG9yTWFwKHY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBEZXNjcmlwdG9yTWFwIHtcbiAgcmV0dXJuIG5ldyBNYXAoT2JqZWN0LmVudHJpZXModikubWFwKChbaywgdl0pID0+IFtrLCBEZXNjcmlwdG9yLmZyb21TdHJpbmcodiwgJ2Rlcml2YWJsZScpXSkpO1xufVxuXG5leHBvcnQgdHlwZSBEZXNjcmlwdG9yVGVtcGxhdGUgPVxuICB8ICdXc2gyT2YzJ1xuICB8ICdUcjFPZjMtTm9LZXlQYXRoLVRyZWUnXG4gIC8vIG5vIHhwdWJzLCBqdXN0IHBsYWluIGtleXNcbiAgfCAnVHIxT2YzLU5vS2V5UGF0aC1UcmVlLVBsYWluJ1xuICB8ICdUcjJPZjMtTm9LZXlQYXRoJ1xuICB8ICdXc2gyT2YyJ1xuICAvKlxuICAgKiBUaGlzIGlzIGEgd3JhcHBlZCBzZWd3aXQgMm9mMyBtdWx0aXNpZyB0aGF0IGFsc28gdXNlcyBhIHJlbGF0aXZlIGxvY2t0aW1lIHdpdGhcbiAgICogYW4gT1BfRFJPUCAocmVxdWlyaW5nIGEgbWluaXNjcmlwdCBleHRlbnNpb24pLlxuICAgKiBJdCBpcyBiYXNpY2FsbHkgd2hhdCBpcyB1c2VkIGluIENvcmVEYW8gc3Rha2luZyB0cmFuc2FjdGlvbnMuXG4gICAqL1xuICB8ICdXc2gyT2YzQ2x0dkRyb3AnO1xuXG5mdW5jdGlvbiB0b1hQdWIoazogQklQMzJJbnRlcmZhY2UgfCBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgayA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gayArICcvJyArIHBhdGg7XG4gIH1cbiAgcmV0dXJuIGsubmV1dGVyZWQoKS50b0Jhc2U1OCgpICsgJy8nICsgcGF0aDtcbn1cblxuZnVuY3Rpb24gdG9QbGFpbihrOiBCSVAzMkludGVyZmFjZSB8IHN0cmluZywgeyB4b25seSA9IGZhbHNlIH0gPSB7fSk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgayA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoay5zdGFydHNXaXRoKCd4cHViJykgfHwgay5zdGFydHNXaXRoKCd4cHJ2JykpIHtcbiAgICAgIHJldHVybiB0b1BsYWluKGJpcDMyLmZyb21CYXNlNTgoayksIHsgeG9ubHkgfSk7XG4gICAgfVxuICAgIHJldHVybiBrO1xuICB9XG4gIHJldHVybiBrLnB1YmxpY0tleS5zdWJhcnJheSh4b25seSA/IDEgOiAwKS50b1N0cmluZygnaGV4Jyk7XG59XG5cbmZ1bmN0aW9uIHRvWE9ubHkoazogQklQMzJJbnRlcmZhY2UgfCBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdG9QbGFpbihrLCB7IHhvbmx5OiB0cnVlIH0pO1xufVxuXG5mdW5jdGlvbiBtdWx0aUFyZ3MobTogbnVtYmVyLCBuOiBudW1iZXIsIGtleXM6IEJJUDMySW50ZXJmYWNlW10gfCBzdHJpbmdbXSwgcGF0aDogc3RyaW5nKTogW251bWJlciwgLi4uc3RyaW5nW11dIHtcbiAgaWYgKG4gPCBtKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY3JlYXRlICR7bX0gb2YgJHtufSBtdWx0aXNpZ2ApO1xuICB9XG4gIGlmIChrZXlzLmxlbmd0aCA8IG4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCBlbm91Z2gga2V5cyBmb3IgJHttfSBvZiAke259IG11bHRpc2lnOiBrZXlzLmxlbmd0aD0ke2tleXMubGVuZ3RofWApO1xuICB9XG4gIGtleXMgPSBrZXlzLnNsaWNlKDAsIG4pO1xuICByZXR1cm4gW20sIC4uLmtleXMubWFwKChrKSA9PiB0b1hQdWIoaywgcGF0aCkpXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBzYnRQYXJhbXModDogRGVzY3JpcHRvclRlbXBsYXRlKTogUGFydGlhbDxQc2J0UGFyYW1zPiB7XG4gIHN3aXRjaCAodCkge1xuICAgIGNhc2UgJ1dzaDJPZjNDbHR2RHJvcCc6XG4gICAgICByZXR1cm4geyBsb2NrdGltZTogMSB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge307XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVzY3JpcHRvck5vZGUoXG4gIHRlbXBsYXRlOiBEZXNjcmlwdG9yVGVtcGxhdGUsXG4gIGtleXM6IEtleVRyaXBsZSB8IHN0cmluZ1tdID0gZ2V0RGVmYXVsdFhQdWJzKCksXG4gIHBhdGggPSAnMC8qJ1xuKTogYXN0LkRlc2NyaXB0b3JOb2RlIHtcbiAgc3dpdGNoICh0ZW1wbGF0ZSkge1xuICAgIGNhc2UgJ1dzaDJPZjMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3NoOiB7IG11bHRpOiBtdWx0aUFyZ3MoMiwgMywga2V5cywgcGF0aCkgfSxcbiAgICAgIH07XG4gICAgY2FzZSAnV3NoMk9mM0NsdHZEcm9wJzpcbiAgICAgIGNvbnN0IHsgbG9ja3RpbWUgfSA9IGdldFBzYnRQYXJhbXModGVtcGxhdGUpO1xuICAgICAgYXNzZXJ0KGxvY2t0aW1lKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdzaDoge1xuICAgICAgICAgIGFuZF92OiBbeyAncjphZnRlcic6IGxvY2t0aW1lIH0sIHsgbXVsdGk6IG11bHRpQXJncygyLCAzLCBrZXlzLCBwYXRoKSB9XSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSAnV3NoMk9mMic6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3c2g6IHsgbXVsdGk6IG11bHRpQXJncygyLCAyLCBrZXlzLCBwYXRoKSB9LFxuICAgICAgfTtcbiAgICBjYXNlICdUcjJPZjMtTm9LZXlQYXRoJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRyOiBbZ2V0VW5zcGVuZGFibGVLZXkoKSwgeyBtdWx0aV9hOiBtdWx0aUFyZ3MoMiwgMywga2V5cywgcGF0aCkgfV0sXG4gICAgICB9O1xuICAgIGNhc2UgJ1RyMU9mMy1Ob0tleVBhdGgtVHJlZSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cjogW1xuICAgICAgICAgIGdldFVuc3BlbmRhYmxlS2V5KCksXG4gICAgICAgICAgW3sgcGs6IHRvWFB1YihrZXlzWzBdLCBwYXRoKSB9LCBbeyBwazogdG9YUHViKGtleXNbMV0sIHBhdGgpIH0sIHsgcGs6IHRvWFB1YihrZXlzWzJdLCBwYXRoKSB9XV0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIGNhc2UgJ1RyMU9mMy1Ob0tleVBhdGgtVHJlZS1QbGFpbic6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cjogW2dldFVuc3BlbmRhYmxlS2V5KCksIFt7IHBrOiB0b1hPbmx5KGtleXNbMF0pIH0sIFt7IHBrOiB0b1hPbmx5KGtleXNbMV0pIH0sIHsgcGs6IHRvWE9ubHkoa2V5c1syXSkgfV1dXSxcbiAgICAgIH07XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGRlc2NyaXB0b3IgdGVtcGxhdGU6ICR7dGVtcGxhdGV9YCk7XG59XG5cbnR5cGUgVGFwVHJlZSA9IFtUYXBUcmVlLCBUYXBUcmVlXSB8IGFzdC5NaW5pc2NyaXB0Tm9kZTtcblxuZnVuY3Rpb24gZ2V0VGFwTGVhZlNjcmlwdE5vZGVzKHQ6IGFzdC5EZXNjcmlwdG9yTm9kZSB8IFRhcFRyZWUpOiBhc3QuTWluaXNjcmlwdE5vZGVbXSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHQpKSB7XG4gICAgaWYgKHQubGVuZ3RoICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIHR1cGxlLCBnb3Q6ICR7SlNPTi5zdHJpbmdpZnkodCl9YCk7XG4gICAgfVxuICAgIHJldHVybiB0Lm1hcCgodikgPT4gKEFycmF5LmlzQXJyYXkodikgPyBnZXRUYXBMZWFmU2NyaXB0Tm9kZXModikgOiB2KSkuZmxhdCgpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0ID09PSAnb2JqZWN0Jykge1xuICAgIGNvbnN0IG5vZGUgPSB0O1xuICAgIGlmICghKCd0cicgaW4gbm9kZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGFwTGVhZlNjcmlwdHMgYXJlIG9ubHkgc3VwcG9ydGVkIGZvciBUYXByb290IGRlc2NyaXB0b3JzLCBnb3Q6ICR7dH1gKTtcbiAgICB9XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG5vZGUudHIpIHx8IG5vZGUudHIubGVuZ3RoICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIHR1cGxlLCBnb3Q6ICR7SlNPTi5zdHJpbmdpZnkobm9kZS50cil9YCk7XG4gICAgfVxuICAgIGNvbnN0IHRhcHNjcmlwdCA9IG5vZGUudHJbMV07XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRhcHNjcmlwdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgdGFwc2NyaXB0IHRvIGJlIGFuIGFycmF5LCBnb3Q6ICR7SlNPTi5zdHJpbmdpZnkodGFwc2NyaXB0KX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGdldFRhcExlYWZTY3JpcHROb2Rlcyh0YXBzY3JpcHQpO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGlucHV0OiAke0pTT04uc3RyaW5naWZ5KHQpfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGFpbnNLZXkoc2NyaXB0OiBNaW5pc2NyaXB0IHwgYXN0Lk1pbmlzY3JpcHROb2RlLCBrZXk6IEJJUDMySW50ZXJmYWNlIHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChzY3JpcHQgaW5zdGFuY2VvZiBNaW5pc2NyaXB0KSB7XG4gICAgc2NyaXB0ID0gYXN0LmZyb21NaW5pc2NyaXB0KHNjcmlwdCk7XG4gIH1cbiAgaWYgKCdwaycgaW4gc2NyaXB0KSB7XG4gICAgcmV0dXJuIHNjcmlwdC5wayA9PT0gdG9YT25seShrZXkpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgc2NyaXB0IHR5cGU6ICR7SlNPTi5zdHJpbmdpZnkoc2NyaXB0KX1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRhcExlYWZTY3JpcHRzKGQ6IERlc2NyaXB0b3IpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBnZXRUYXBMZWFmU2NyaXB0Tm9kZXMoYXN0LmZyb21EZXNjcmlwdG9yKGQpKS5tYXAoKG4pID0+XG4gICAgTWluaXNjcmlwdC5mcm9tU3RyaW5nKGFzdC5mb3JtYXROb2RlKG4pLCAndGFwJykudG9TdHJpbmcoKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVzY3JpcHRvcihcbiAgdGVtcGxhdGU6IERlc2NyaXB0b3JUZW1wbGF0ZSxcbiAga2V5czogS2V5VHJpcGxlIHwgc3RyaW5nW10gPSBnZXREZWZhdWx0WFB1YnMoKSxcbiAgcGF0aCA9ICcwLyonXG4pOiBEZXNjcmlwdG9yIHtcbiAgcmV0dXJuIERlc2NyaXB0b3IuZnJvbVN0cmluZ0RldGVjdFR5cGUoYXN0LmZvcm1hdE5vZGUoZ2V0RGVzY3JpcHRvck5vZGUodGVtcGxhdGUsIGtleXMsIHBhdGgpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNjcmlwdG9yTWFwKFxuICB0ZW1wbGF0ZTogRGVzY3JpcHRvclRlbXBsYXRlLFxuICBrZXlzOiBLZXlUcmlwbGUgfCBzdHJpbmdbXSA9IGdldERlZmF1bHRYUHVicygpXG4pOiBEZXNjcmlwdG9yTWFwIHtcbiAgcmV0dXJuIHRvRGVzY3JpcHRvck1hcCh7XG4gICAgZXh0ZXJuYWw6IGdldERlc2NyaXB0b3IodGVtcGxhdGUsIGtleXMsICcwLyonKS50b1N0cmluZygpLFxuICAgIGludGVybmFsOiBnZXREZXNjcmlwdG9yKHRlbXBsYXRlLCBrZXlzLCAnMS8qJykudG9TdHJpbmcoKSxcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export * from './descriptors';
2
+ export * from './mock.utils';
3
+ export * from './psbt.utils';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,4 @@
1
+ export * from './descriptors';
2
+ export * from './mock.utils';
3
+ export * from './psbt.utils';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVzdHV0aWwvZGVzY3JpcHRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGVzY3JpcHRvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2NrLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vcHNidC51dGlscyc7XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { Descriptor, Miniscript } from '@bitgo/wasm-utxo';
2
+ import * as utxolib from '@bitgo-beta/utxo-lib';
3
+ import { PsbtParams, DerivedDescriptorTransactionInput } from '../../descriptor';
4
+ import { DescriptorTemplate } from './descriptors';
5
+ type MockOutputIdParams = {
6
+ hash?: string;
7
+ vout?: number;
8
+ };
9
+ type BaseMockDescriptorOutputParams = {
10
+ id?: MockOutputIdParams;
11
+ index?: number;
12
+ value?: bigint;
13
+ sequence?: number;
14
+ selectTapLeafScript?: Miniscript;
15
+ };
16
+ export declare function mockDerivedDescriptorWalletOutput(descriptor: Descriptor, outputParams?: BaseMockDescriptorOutputParams): DerivedDescriptorTransactionInput;
17
+ type MockInput = BaseMockDescriptorOutputParams & {
18
+ index: number;
19
+ descriptor: Descriptor;
20
+ selectTapLeafScript?: Miniscript;
21
+ };
22
+ type MockOutput = {
23
+ descriptor: Descriptor;
24
+ index: number;
25
+ value: bigint;
26
+ external?: boolean;
27
+ };
28
+ export declare function mockPsbt(inputs: MockInput[], outputs: MockOutput[], params?: Partial<PsbtParams>): utxolib.bitgo.UtxoPsbt;
29
+ export declare function mockPsbtDefault({ descriptorSelf, descriptorOther, params, }?: {
30
+ descriptorSelf?: Descriptor;
31
+ descriptorOther?: Descriptor;
32
+ params?: Partial<PsbtParams>;
33
+ }): utxolib.bitgo.UtxoPsbt;
34
+ export declare function mockPsbtDefaultWithDescriptorTemplate(t: DescriptorTemplate, params?: Partial<PsbtParams>): utxolib.bitgo.UtxoPsbt;
35
+ export {};
36
+ //# sourceMappingURL=mock.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.utils.d.ts","sourceRoot":"","sources":["../../../../src/testutil/descriptor/mock.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EACL,UAAU,EAGV,iCAAiC,EAClC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAkC,MAAM,eAAe,CAAC;AAEnF,KAAK,kBAAkB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,KAAK,8BAA8B,GAAG;IACpC,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,UAAU,CAAC;CAClC,CAAC;AAWF,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,EACtB,YAAY,GAAE,8BAAmC,GAChD,iCAAiC,CAcnC;AAED,KAAK,SAAS,GAAG,8BAA8B,GAAG;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,CAAC;IACvB,mBAAmB,CAAC,EAAE,UAAU,CAAC;CAClC,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAMF,wBAAgB,QAAQ,CACtB,MAAM,EAAE,SAAS,EAAE,EACnB,OAAO,EAAE,UAAU,EAAE,EACrB,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM,GAC/B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAaxB;AAED,wBAAgB,eAAe,CAAC,EAC9B,cAA+D,EAC/D,eAAgE,EAChE,MAAW,GACZ,GAAE;IACD,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;CACzB,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAY9B;AAED,wBAAgB,qCAAqC,CACnD,CAAC,EAAE,kBAAkB,EACrB,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM,GAC/B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAMxB"}
@@ -0,0 +1,53 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import { createPsbt, createScriptPubKeyFromDescriptor, } from '../../descriptor';
3
+ import { getDefaultXPubs, getDescriptor } from './descriptors';
4
+ function mockOutputId(id) {
5
+ const hash = id?.hash ?? Buffer.alloc(32, 1).toString('hex');
6
+ const vout = id?.vout ?? 0;
7
+ return { hash, vout };
8
+ }
9
+ export function mockDerivedDescriptorWalletOutput(descriptor, outputParams = {}) {
10
+ const { value = BigInt(1e6) } = outputParams;
11
+ const { hash, vout } = mockOutputId(outputParams.id);
12
+ return {
13
+ hash,
14
+ index: vout,
15
+ witnessUtxo: {
16
+ script: createScriptPubKeyFromDescriptor(descriptor, undefined),
17
+ value,
18
+ },
19
+ descriptor,
20
+ selectTapLeafScript: outputParams.selectTapLeafScript,
21
+ sequence: outputParams.sequence,
22
+ };
23
+ }
24
+ function tryDeriveAtIndex(descriptor, index) {
25
+ return descriptor.hasWildcard() ? descriptor.atDerivationIndex(index) : descriptor;
26
+ }
27
+ export function mockPsbt(inputs, outputs, params = {}) {
28
+ return createPsbt({ ...params, network: params.network ?? utxolib.networks.bitcoin }, inputs.map((i) => mockDerivedDescriptorWalletOutput(tryDeriveAtIndex(i.descriptor, i.index), i)), outputs.map((o) => {
29
+ const derivedDescriptor = tryDeriveAtIndex(o.descriptor, o.index);
30
+ return {
31
+ script: createScriptPubKeyFromDescriptor(derivedDescriptor, undefined),
32
+ value: o.value,
33
+ descriptor: o.external ? undefined : derivedDescriptor,
34
+ };
35
+ }));
36
+ }
37
+ export function mockPsbtDefault({ descriptorSelf = getDescriptor('Wsh2Of3', getDefaultXPubs('a')), descriptorOther = getDescriptor('Wsh2Of3', getDefaultXPubs('b')), params = {}, } = {}) {
38
+ return mockPsbt([
39
+ { descriptor: descriptorSelf, index: 0 },
40
+ { descriptor: descriptorSelf, index: 1, id: { vout: 1 } },
41
+ ], [
42
+ { descriptor: descriptorOther, index: 0, value: BigInt(4e5), external: true },
43
+ { descriptor: descriptorSelf, index: 0, value: BigInt(4e5) },
44
+ ], params);
45
+ }
46
+ export function mockPsbtDefaultWithDescriptorTemplate(t, params = {}) {
47
+ return mockPsbtDefault({
48
+ descriptorSelf: getDescriptor(t, getDefaultXPubs('a')),
49
+ descriptorOther: getDescriptor(t, getDefaultXPubs('b')),
50
+ params,
51
+ });
52
+ }
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0dXRpbC9kZXNjcmlwdG9yL21vY2sudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUVoRCxPQUFPLEVBRUwsVUFBVSxFQUNWLGdDQUFnQyxHQUVqQyxNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBc0IsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVluRixTQUFTLFlBQVksQ0FBQyxFQUF1QjtJQUkzQyxNQUFNLElBQUksR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxNQUFNLElBQUksR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUMzQixPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLFVBQVUsaUNBQWlDLENBQy9DLFVBQXNCLEVBQ3RCLGVBQStDLEVBQUU7SUFFakQsTUFBTSxFQUFFLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxZQUFZLENBQUM7SUFDN0MsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELE9BQU87UUFDTCxJQUFJO1FBQ0osS0FBSyxFQUFFLElBQUk7UUFDWCxXQUFXLEVBQUU7WUFDWCxNQUFNLEVBQUUsZ0NBQWdDLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQztZQUMvRCxLQUFLO1NBQ047UUFDRCxVQUFVO1FBQ1YsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLG1CQUFtQjtRQUNyRCxRQUFRLEVBQUUsWUFBWSxDQUFDLFFBQVE7S0FDaEMsQ0FBQztBQUNKLENBQUM7QUFlRCxTQUFTLGdCQUFnQixDQUFDLFVBQXNCLEVBQUUsS0FBYTtJQUM3RCxPQUFPLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDckYsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQ3RCLE1BQW1CLEVBQ25CLE9BQXFCLEVBQ3JCLFNBQThCLEVBQUU7SUFFaEMsT0FBTyxVQUFVLENBQ2YsRUFBRSxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUNsRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNoRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDaEIsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRSxPQUFPO1lBQ0wsTUFBTSxFQUFFLGdDQUFnQyxDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQztZQUN0RSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7WUFDZCxVQUFVLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxpQkFBaUI7U0FDdkQsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxFQUM5QixjQUFjLEdBQUcsYUFBYSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDL0QsZUFBZSxHQUFHLGFBQWEsQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ2hFLE1BQU0sR0FBRyxFQUFFLE1BS1QsRUFBRTtJQUNKLE9BQU8sUUFBUSxDQUNiO1FBQ0UsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7UUFDeEMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO0tBQzFELEVBQ0Q7UUFDRSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7UUFDN0UsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtLQUM3RCxFQUNELE1BQU0sQ0FDUCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxxQ0FBcUMsQ0FDbkQsQ0FBcUIsRUFDckIsU0FBOEIsRUFBRTtJQUVoQyxPQUFPLGVBQWUsQ0FBQztRQUNyQixjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEQsZUFBZSxFQUFFLGFBQWEsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELE1BQU07S0FDUCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY3JpcHRvciwgTWluaXNjcmlwdCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmltcG9ydCB7XG4gIFBzYnRQYXJhbXMsXG4gIGNyZWF0ZVBzYnQsXG4gIGNyZWF0ZVNjcmlwdFB1YktleUZyb21EZXNjcmlwdG9yLFxuICBEZXJpdmVkRGVzY3JpcHRvclRyYW5zYWN0aW9uSW5wdXQsXG59IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3InO1xuXG5pbXBvcnQgeyBEZXNjcmlwdG9yVGVtcGxhdGUsIGdldERlZmF1bHRYUHVicywgZ2V0RGVzY3JpcHRvciB9IGZyb20gJy4vZGVzY3JpcHRvcnMnO1xuXG50eXBlIE1vY2tPdXRwdXRJZFBhcmFtcyA9IHsgaGFzaD86IHN0cmluZzsgdm91dD86IG51bWJlciB9O1xuXG50eXBlIEJhc2VNb2NrRGVzY3JpcHRvck91dHB1dFBhcmFtcyA9IHtcbiAgaWQ/OiBNb2NrT3V0cHV0SWRQYXJhbXM7XG4gIGluZGV4PzogbnVtYmVyO1xuICB2YWx1ZT86IGJpZ2ludDtcbiAgc2VxdWVuY2U/OiBudW1iZXI7XG4gIHNlbGVjdFRhcExlYWZTY3JpcHQ/OiBNaW5pc2NyaXB0O1xufTtcblxuZnVuY3Rpb24gbW9ja091dHB1dElkKGlkPzogTW9ja091dHB1dElkUGFyYW1zKToge1xuICBoYXNoOiBzdHJpbmc7XG4gIHZvdXQ6IG51bWJlcjtcbn0ge1xuICBjb25zdCBoYXNoID0gaWQ/Lmhhc2ggPz8gQnVmZmVyLmFsbG9jKDMyLCAxKS50b1N0cmluZygnaGV4Jyk7XG4gIGNvbnN0IHZvdXQgPSBpZD8udm91dCA/PyAwO1xuICByZXR1cm4geyBoYXNoLCB2b3V0IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2NrRGVyaXZlZERlc2NyaXB0b3JXYWxsZXRPdXRwdXQoXG4gIGRlc2NyaXB0b3I6IERlc2NyaXB0b3IsXG4gIG91dHB1dFBhcmFtczogQmFzZU1vY2tEZXNjcmlwdG9yT3V0cHV0UGFyYW1zID0ge31cbik6IERlcml2ZWREZXNjcmlwdG9yVHJhbnNhY3Rpb25JbnB1dCB7XG4gIGNvbnN0IHsgdmFsdWUgPSBCaWdJbnQoMWU2KSB9ID0gb3V0cHV0UGFyYW1zO1xuICBjb25zdCB7IGhhc2gsIHZvdXQgfSA9IG1vY2tPdXRwdXRJZChvdXRwdXRQYXJhbXMuaWQpO1xuICByZXR1cm4ge1xuICAgIGhhc2gsXG4gICAgaW5kZXg6IHZvdXQsXG4gICAgd2l0bmVzc1V0eG86IHtcbiAgICAgIHNjcmlwdDogY3JlYXRlU2NyaXB0UHViS2V5RnJvbURlc2NyaXB0b3IoZGVzY3JpcHRvciwgdW5kZWZpbmVkKSxcbiAgICAgIHZhbHVlLFxuICAgIH0sXG4gICAgZGVzY3JpcHRvcixcbiAgICBzZWxlY3RUYXBMZWFmU2NyaXB0OiBvdXRwdXRQYXJhbXMuc2VsZWN0VGFwTGVhZlNjcmlwdCxcbiAgICBzZXF1ZW5jZTogb3V0cHV0UGFyYW1zLnNlcXVlbmNlLFxuICB9O1xufVxuXG50eXBlIE1vY2tJbnB1dCA9IEJhc2VNb2NrRGVzY3JpcHRvck91dHB1dFBhcmFtcyAmIHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgZGVzY3JpcHRvcjogRGVzY3JpcHRvcjtcbiAgc2VsZWN0VGFwTGVhZlNjcmlwdD86IE1pbmlzY3JpcHQ7XG59O1xuXG50eXBlIE1vY2tPdXRwdXQgPSB7XG4gIGRlc2NyaXB0b3I6IERlc2NyaXB0b3I7XG4gIGluZGV4OiBudW1iZXI7XG4gIHZhbHVlOiBiaWdpbnQ7XG4gIGV4dGVybmFsPzogYm9vbGVhbjtcbn07XG5cbmZ1bmN0aW9uIHRyeURlcml2ZUF0SW5kZXgoZGVzY3JpcHRvcjogRGVzY3JpcHRvciwgaW5kZXg6IG51bWJlcik6IERlc2NyaXB0b3Ige1xuICByZXR1cm4gZGVzY3JpcHRvci5oYXNXaWxkY2FyZCgpID8gZGVzY3JpcHRvci5hdERlcml2YXRpb25JbmRleChpbmRleCkgOiBkZXNjcmlwdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1BzYnQoXG4gIGlucHV0czogTW9ja0lucHV0W10sXG4gIG91dHB1dHM6IE1vY2tPdXRwdXRbXSxcbiAgcGFyYW1zOiBQYXJ0aWFsPFBzYnRQYXJhbXM+ID0ge31cbik6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQge1xuICByZXR1cm4gY3JlYXRlUHNidChcbiAgICB7IC4uLnBhcmFtcywgbmV0d29yazogcGFyYW1zLm5ldHdvcmsgPz8gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luIH0sXG4gICAgaW5wdXRzLm1hcCgoaSkgPT4gbW9ja0Rlcml2ZWREZXNjcmlwdG9yV2FsbGV0T3V0cHV0KHRyeURlcml2ZUF0SW5kZXgoaS5kZXNjcmlwdG9yLCBpLmluZGV4KSwgaSkpLFxuICAgIG91dHB1dHMubWFwKChvKSA9PiB7XG4gICAgICBjb25zdCBkZXJpdmVkRGVzY3JpcHRvciA9IHRyeURlcml2ZUF0SW5kZXgoby5kZXNjcmlwdG9yLCBvLmluZGV4KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNjcmlwdDogY3JlYXRlU2NyaXB0UHViS2V5RnJvbURlc2NyaXB0b3IoZGVyaXZlZERlc2NyaXB0b3IsIHVuZGVmaW5lZCksXG4gICAgICAgIHZhbHVlOiBvLnZhbHVlLFxuICAgICAgICBkZXNjcmlwdG9yOiBvLmV4dGVybmFsID8gdW5kZWZpbmVkIDogZGVyaXZlZERlc2NyaXB0b3IsXG4gICAgICB9O1xuICAgIH0pXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2NrUHNidERlZmF1bHQoe1xuICBkZXNjcmlwdG9yU2VsZiA9IGdldERlc2NyaXB0b3IoJ1dzaDJPZjMnLCBnZXREZWZhdWx0WFB1YnMoJ2EnKSksXG4gIGRlc2NyaXB0b3JPdGhlciA9IGdldERlc2NyaXB0b3IoJ1dzaDJPZjMnLCBnZXREZWZhdWx0WFB1YnMoJ2InKSksXG4gIHBhcmFtcyA9IHt9LFxufToge1xuICBkZXNjcmlwdG9yU2VsZj86IERlc2NyaXB0b3I7XG4gIGRlc2NyaXB0b3JPdGhlcj86IERlc2NyaXB0b3I7XG4gIHBhcmFtcz86IFBhcnRpYWw8UHNidFBhcmFtcz47XG59ID0ge30pOiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0IHtcbiAgcmV0dXJuIG1vY2tQc2J0KFxuICAgIFtcbiAgICAgIHsgZGVzY3JpcHRvcjogZGVzY3JpcHRvclNlbGYsIGluZGV4OiAwIH0sXG4gICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JTZWxmLCBpbmRleDogMSwgaWQ6IHsgdm91dDogMSB9IH0sXG4gICAgXSxcbiAgICBbXG4gICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JPdGhlciwgaW5kZXg6IDAsIHZhbHVlOiBCaWdJbnQoNGU1KSwgZXh0ZXJuYWw6IHRydWUgfSxcbiAgICAgIHsgZGVzY3JpcHRvcjogZGVzY3JpcHRvclNlbGYsIGluZGV4OiAwLCB2YWx1ZTogQmlnSW50KDRlNSkgfSxcbiAgICBdLFxuICAgIHBhcmFtc1xuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1BzYnREZWZhdWx0V2l0aERlc2NyaXB0b3JUZW1wbGF0ZShcbiAgdDogRGVzY3JpcHRvclRlbXBsYXRlLFxuICBwYXJhbXM6IFBhcnRpYWw8UHNidFBhcmFtcz4gPSB7fVxuKTogdXR4b2xpYi5iaXRnby5VdHhvUHNidCB7XG4gIHJldHVybiBtb2NrUHNidERlZmF1bHQoe1xuICAgIGRlc2NyaXB0b3JTZWxmOiBnZXREZXNjcmlwdG9yKHQsIGdldERlZmF1bHRYUHVicygnYScpKSxcbiAgICBkZXNjcmlwdG9yT3RoZXI6IGdldERlc2NyaXB0b3IodCwgZ2V0RGVmYXVsdFhQdWJzKCdiJykpLFxuICAgIHBhcmFtcyxcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ export declare function toPlainObjectFromPsbt(v: utxolib.Psbt): unknown;
3
+ export declare function toPlainObjectFromTx(v: utxolib.Transaction): unknown;
4
+ //# sourceMappingURL=psbt.utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"psbt.utils.d.ts","sourceRoot":"","sources":["../../../../src/testutil/descriptor/psbt.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAIhD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAgB9D;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,GAAG,OAAO,CAEnE"}
1
+ {"version":3,"file":"psbt.utils.d.ts","sourceRoot":"","sources":["../../../../src/testutil/descriptor/psbt.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAIhD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAiB9D;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,GAAG,OAAO,CAEnE"}
@@ -0,0 +1,17 @@
1
+ import { matchPath, toPlainObject } from '../../../src/testutil';
2
+ export function toPlainObjectFromPsbt(v) {
3
+ return toPlainObject(v, {
4
+ propertyDescriptors: true,
5
+ ignorePaths(path) {
6
+ return (matchPath(path, ['__CACHE']) ||
7
+ matchPath(path, ['opts', 'network']) ||
8
+ matchPath(path, ['data', 'globalMap', 'unsignedTx', 'tx', 'network']) ||
9
+ matchPath(path, ['tx', 'network']) ||
10
+ matchPath(path, ['network']));
11
+ },
12
+ }, []);
13
+ }
14
+ export function toPlainObjectFromTx(v) {
15
+ return toPlainObject(v, {}, []);
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNidC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0dXRpbC9kZXNjcmlwdG9yL3BzYnQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5RSxNQUFNLFVBQVUscUJBQXFCLENBQUMsQ0FBZTtJQUNuRCxPQUFPLGFBQWEsQ0FDbEIsQ0FBQyxFQUNEO1FBQ0UsbUJBQW1CLEVBQUUsSUFBSTtRQUN6QixXQUFXLENBQUMsSUFBbUI7WUFDN0IsT0FBTyxDQUNMLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDNUIsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDcEMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDckUsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDbEMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQzdCLENBQUM7UUFDSixDQUFDO0tBQ0YsRUFDRCxFQUFFLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsQ0FBc0I7SUFDeEQsT0FBTyxhQUFhLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmltcG9ydCB7IG1hdGNoUGF0aCwgUGF0aEVsZW1lbnQsIHRvUGxhaW5PYmplY3QgfSBmcm9tICcuLi8uLi8uLi9zcmMvdGVzdHV0aWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gdG9QbGFpbk9iamVjdEZyb21Qc2J0KHY6IHV0eG9saWIuUHNidCk6IHVua25vd24ge1xuICByZXR1cm4gdG9QbGFpbk9iamVjdChcbiAgICB2LFxuICAgIHtcbiAgICAgIHByb3BlcnR5RGVzY3JpcHRvcnM6IHRydWUsXG4gICAgICBpZ25vcmVQYXRocyhwYXRoOiBQYXRoRWxlbWVudFtdKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbWF0Y2hQYXRoKHBhdGgsIFsnX19DQUNIRSddKSB8fFxuICAgICAgICAgIG1hdGNoUGF0aChwYXRoLCBbJ29wdHMnLCAnbmV0d29yayddKSB8fFxuICAgICAgICAgIG1hdGNoUGF0aChwYXRoLCBbJ2RhdGEnLCAnZ2xvYmFsTWFwJywgJ3Vuc2lnbmVkVHgnLCAndHgnLCAnbmV0d29yayddKSB8fFxuICAgICAgICAgIG1hdGNoUGF0aChwYXRoLCBbJ3R4JywgJ25ldHdvcmsnXSkgfHxcbiAgICAgICAgICBtYXRjaFBhdGgocGF0aCwgWyduZXR3b3JrJ10pXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgW11cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvUGxhaW5PYmplY3RGcm9tVHgodjogdXR4b2xpYi5UcmFuc2FjdGlvbik6IHVua25vd24ge1xuICByZXR1cm4gdG9QbGFpbk9iamVjdCh2LCB7fSwgW10pO1xufVxuIl19
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Contains helpers for working with test fixtures
3
+ */
4
+ /**
5
+ * Return fixture described in `path`.
6
+ *
7
+ * If file does not exist and `defaultValue` is provided, writes defaultValue to `path` and throws an error.
8
+ *
9
+ * @param path
10
+ * @param defaultValue
11
+ * @return T - fixture content
12
+ */
13
+ export declare function getFixture<T>(path: string, defaultValue?: T | (() => Promise<T>)): Promise<T>;
14
+ export declare function jsonNormalize<T>(v: T): T;
15
+ //# sourceMappingURL=fixtures.utils.d.ts.map
@@ -1,45 +1,8 @@
1
- "use strict";
2
1
  /**
3
2
  * Contains helpers for working with test fixtures
4
3
  */
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || (function () {
22
- var ownKeys = function(o) {
23
- ownKeys = Object.getOwnPropertyNames || function (o) {
24
- var ar = [];
25
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
- return ar;
27
- };
28
- return ownKeys(o);
29
- };
30
- return function (mod) {
31
- if (mod && mod.__esModule) return mod;
32
- var result = {};
33
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
- __setModuleDefault(result, mod);
35
- return result;
36
- };
37
- })();
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.getFixture = getFixture;
40
- exports.jsonNormalize = jsonNormalize;
41
- const fs = __importStar(require("fs"));
42
- const mpath = __importStar(require("path"));
4
+ import * as fs from 'fs';
5
+ import * as mpath from 'path';
43
6
  function isNodeJsError(e) {
44
7
  return e instanceof Error && typeof e.code === 'string';
45
8
  }
@@ -90,7 +53,7 @@ function encodeFixture(value, encoding) {
90
53
  * @param defaultValue
91
54
  * @return T - fixture content
92
55
  */
93
- async function getFixture(path, defaultValue) {
56
+ export async function getFixture(path, defaultValue) {
94
57
  try {
95
58
  await fs.promises.stat(mpath.dirname(path));
96
59
  }
@@ -121,7 +84,7 @@ async function getFixture(path, defaultValue) {
121
84
  throw e;
122
85
  }
123
86
  }
124
- function jsonNormalize(v) {
87
+ export function jsonNormalize(v) {
125
88
  return JSON.parse(JSON.stringify(v));
126
89
  }
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvZml4dHVyZXMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTZESCxnQ0ErQkM7QUFFRCxzQ0FFQztBQTlGRCx1Q0FBeUI7QUFDekIsNENBQThCO0FBSTlCLFNBQVMsYUFBYSxDQUFDLENBQVU7SUFDL0IsT0FBTyxDQUFDLFlBQVksS0FBSyxJQUFJLE9BQVEsQ0FBMkIsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDO0FBQ3JGLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxJQUFZO0lBQ25DLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxHQUFXLEVBQUUsUUFBeUI7SUFDM0QsUUFBUSxRQUFRLEVBQUUsQ0FBQztRQUNqQixLQUFLLE1BQU07WUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsS0FBSyxLQUFLO1lBQ1IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqQyxLQUFLLEtBQUs7WUFDUixPQUFPLEdBQUcsQ0FBQztJQUNm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KipcbiAqIENvbnRhaW5zIGhlbHBlcnMgZm9yIHdvcmtpbmcgd2l0aCB0ZXN0IGZpeHR1cmVzXG4gKi9cblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgbXBhdGggZnJvbSAncGF0aCc7XG5cbnR5cGUgRml4dHVyZUVuY29kaW5nID0gJ2pzb24nIHwgJ2hleCcgfCAndHh0JztcblxuZnVuY3Rpb24gaXNOb2RlSnNFcnJvcihlOiB1bmtub3duKTogZSBpcyBOb2RlSlMuRXJybm9FeGNlcHRpb24ge1xuICByZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yICYmIHR5cGVvZiAoZSBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgPT09ICdzdHJpbmcnO1xufVxuXG5mdW5jdGlvbiBmaXh0dXJlRW5jb2RpbmcocGF0aDogc3RyaW5nKTogRml4dHVyZUVuY29kaW5nIHtcbiAgaWYgKHBhdGguZW5kc1dpdGgoJy5qc29uJykpIHtcbiAgICByZXR1cm4gJ2pzb24nO1xuICB9XG4gIGlmIChwYXRoLmVuZHNXaXRoKCcuaGV4JykpIHtcbiAgICByZXR1cm4gJ2hleCc7XG4gIH1cbiAgaWYgKHBhdGguZW5kc1dpdGgoJy50eHQnKSkge1xuICAgIHJldHVybiAndHh0JztcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gZml4dHVyZSBlbmNvZGluZyBmb3IgJHtwYXRofWApO1xufVxuXG5mdW5jdGlvbiBkZWNvZGVGaXh0dXJlKHJhdzogc3RyaW5nLCBlbmNvZGluZzogRml4dHVyZUVuY29kaW5nKTogdW5rbm93biB7XG4gIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICBjYXNlICdqc29uJzpcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHJhdyk7XG4gICAgY2FzZSAnaGV4JzpcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShyYXcsICdoZXgnKTtcbiAgICBjYXNlICd0eHQnOlxuICAgICAgcmV0dXJuIHJhdztcbiAgfVxufVxuXG5mdW5jdGlvbiBlbmNvZGVGaXh0dXJlKHZhbHVlOiB1bmtub3duLCBlbmNvZGluZzogRml4dHVyZUVuY29kaW5nKTogc3RyaW5nIHtcbiAgc3dpdGNoIChlbmNvZGluZykge1xuICAgIGNhc2UgJ2pzb24nOlxuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKSArICdcXG4nO1xuICAgIGNhc2UgJ2hleCc6XG4gICAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCBCdWZmZXIsIGdvdCAke3R5cGVvZiB2YWx1ZX1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygnaGV4Jyk7XG4gICAgY2FzZSAndHh0JzpcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgc3RyaW5nLCBnb3QgJHt0eXBlb2YgdmFsdWV9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gZml4dHVyZSBkZXNjcmliZWQgaW4gYHBhdGhgLlxuICpcbiAqIElmIGZpbGUgZG9lcyBub3QgZXhpc3QgYW5kIGBkZWZhdWx0VmFsdWVgIGlzIHByb3ZpZGVkLCB3cml0ZXMgZGVmYXVsdFZhbHVlIHRvIGBwYXRoYCBhbmQgdGhyb3dzIGFuIGVycm9yLlxuICpcbiAqIEBwYXJhbSBwYXRoXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlXG4gKiBAcmV0dXJuIFQgLSBmaXh0dXJlIGNvbnRlbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZpeHR1cmU8VD4ocGF0aDogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBUIHwgKCgpID0+IFByb21pc2U8VD4pKTogUHJvbWlzZTxUPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMucHJvbWlzZXMuc3RhdChtcGF0aC5kaXJuYW1lKHBhdGgpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChpc05vZGVKc0Vycm9yKGUpICYmIGUuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZml4dHVyZSBkaXJlY3RvcnkgJHttcGF0aC5kaXJuYW1lKHBhdGgpfSBub3QgZm91bmQsIHBsZWFzZSBjcmVhdGUgaXQgZmlyc3RgKTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuXG4gIGNvbnN0IGVuY29kaW5nID0gZml4dHVyZUVuY29kaW5nKHBhdGgpO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZUZpeHR1cmUoYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUocGF0aCwgJ3V0ZjgnKSwgZW5jb2RpbmcpIGFzIFQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoaXNOb2RlSnNFcnJvcihlKSAmJiBlLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuV1JJVEVfRklYVFVSRVMgPT09ICcwJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGZpeHR1cmUgJHtwYXRofSBub3QgZm91bmQsIFdSSVRFX0ZJWFRVUkVTPTBgKTtcbiAgICAgIH1cbiAgICAgIGlmIChkZWZhdWx0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGZpeHR1cmUgJHtwYXRofSBub3QgZm91bmQgYW5kIG5vIGRlZmF1bHQgdmFsdWUgZ2l2ZW5gKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGF3YWl0IChkZWZhdWx0VmFsdWUgYXMgKCkgPT4gUHJvbWlzZTxUPikoKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShwYXRoLCBlbmNvZGVGaXh0dXJlKGRlZmF1bHRWYWx1ZSwgZW5jb2RpbmcpKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgd3JvdGUgZGVmYXVsdCB2YWx1ZSBmb3IgJHtwYXRofSwgcGxlYXNlIGluc3BlY3QgYW5kIHJlc3RhcnQgdGVzdGApO1xuICAgIH1cblxuICAgIHRocm93IGU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGpzb25Ob3JtYWxpemU8VD4odjogVCk6IFQge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2KSkgYXMgVDtcbn1cbiJdfQ==
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvZml4dHVyZXMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEtBQUssS0FBSyxNQUFNLE1BQU0sQ0FBQztBQUk5QixTQUFTLGFBQWEsQ0FBQyxDQUFVO0lBQy9CLE9BQU8sQ0FBQyxZQUFZLEtBQUssSUFBSSxPQUFRLENBQTJCLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztBQUNyRixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsSUFBWTtJQUNuQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMzQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsR0FBVyxFQUFFLFFBQXlCO0lBQzNELFFBQVEsUUFBUSxFQUFFLENBQUM7UUFDakIsS0FBSyxNQUFNO1lBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLEtBQUssS0FBSztZQUNSLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakMsS0FBSyxLQUFLO1lBQ1IsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FB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KipcbiAqIENvbnRhaW5zIGhlbHBlcnMgZm9yIHdvcmtpbmcgd2l0aCB0ZXN0IGZpeHR1cmVzXG4gKi9cblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgbXBhdGggZnJvbSAncGF0aCc7XG5cbnR5cGUgRml4dHVyZUVuY29kaW5nID0gJ2pzb24nIHwgJ2hleCcgfCAndHh0JztcblxuZnVuY3Rpb24gaXNOb2RlSnNFcnJvcihlOiB1bmtub3duKTogZSBpcyBOb2RlSlMuRXJybm9FeGNlcHRpb24ge1xuICByZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yICYmIHR5cGVvZiAoZSBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgPT09ICdzdHJpbmcnO1xufVxuXG5mdW5jdGlvbiBmaXh0dXJlRW5jb2RpbmcocGF0aDogc3RyaW5nKTogRml4dHVyZUVuY29kaW5nIHtcbiAgaWYgKHBhdGguZW5kc1dpdGgoJy5qc29uJykpIHtcbiAgICByZXR1cm4gJ2pzb24nO1xuICB9XG4gIGlmIChwYXRoLmVuZHNXaXRoKCcuaGV4JykpIHtcbiAgICByZXR1cm4gJ2hleCc7XG4gIH1cbiAgaWYgKHBhdGguZW5kc1dpdGgoJy50eHQnKSkge1xuICAgIHJldHVybiAndHh0JztcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gZml4dHVyZSBlbmNvZGluZyBmb3IgJHtwYXRofWApO1xufVxuXG5mdW5jdGlvbiBkZWNvZGVGaXh0dXJlKHJhdzogc3RyaW5nLCBlbmNvZGluZzogRml4dHVyZUVuY29kaW5nKTogdW5rbm93biB7XG4gIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICBjYXNlICdqc29uJzpcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHJhdyk7XG4gICAgY2FzZSAnaGV4JzpcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShyYXcsICdoZXgnKTtcbiAgICBjYXNlICd0eHQnOlxuICAgICAgcmV0dXJuIHJhdztcbiAgfVxufVxuXG5mdW5jdGlvbiBlbmNvZGVGaXh0dXJlKHZhbHVlOiB1bmtub3duLCBlbmNvZGluZzogRml4dHVyZUVuY29kaW5nKTogc3RyaW5nIHtcbiAgc3dpdGNoIChlbmNvZGluZykge1xuICAgIGNhc2UgJ2pzb24nOlxuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKSArICdcXG4nO1xuICAgIGNhc2UgJ2hleCc6XG4gICAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCBCdWZmZXIsIGdvdCAke3R5cGVvZiB2YWx1ZX1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygnaGV4Jyk7XG4gICAgY2FzZSAndHh0JzpcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgc3RyaW5nLCBnb3QgJHt0eXBlb2YgdmFsdWV9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gZml4dHVyZSBkZXNjcmliZWQgaW4gYHBhdGhgLlxuICpcbiAqIElmIGZpbGUgZG9lcyBub3QgZXhpc3QgYW5kIGBkZWZhdWx0VmFsdWVgIGlzIHByb3ZpZGVkLCB3cml0ZXMgZGVmYXVsdFZhbHVlIHRvIGBwYXRoYCBhbmQgdGhyb3dzIGFuIGVycm9yLlxuICpcbiAqIEBwYXJhbSBwYXRoXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlXG4gKiBAcmV0dXJuIFQgLSBmaXh0dXJlIGNvbnRlbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZpeHR1cmU8VD4ocGF0aDogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBUIHwgKCgpID0+IFByb21pc2U8VD4pKTogUHJvbWlzZTxUPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMucHJvbWlzZXMuc3RhdChtcGF0aC5kaXJuYW1lKHBhdGgpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChpc05vZGVKc0Vycm9yKGUpICYmIGUuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZml4dHVyZSBkaXJlY3RvcnkgJHttcGF0aC5kaXJuYW1lKHBhdGgpfSBub3QgZm91bmQsIHBsZWFzZSBjcmVhdGUgaXQgZmlyc3RgKTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuXG4gIGNvbnN0IGVuY29kaW5nID0gZml4dHVyZUVuY29kaW5nKHBhdGgpO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZUZpeHR1cmUoYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUocGF0aCwgJ3V0ZjgnKSwgZW5jb2RpbmcpIGFzIFQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoaXNOb2RlSnNFcnJvcihlKSAmJiBlLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuV1JJVEVfRklYVFVSRVMgPT09ICcwJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGZpeHR1cmUgJHtwYXRofSBub3QgZm91bmQsIFdSSVRFX0ZJWFRVUkVTPTBgKTtcbiAgICAgIH1cbiAgICAgIGlmIChkZWZhdWx0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGZpeHR1cmUgJHtwYXRofSBub3QgZm91bmQgYW5kIG5vIGRlZmF1bHQgdmFsdWUgZ2l2ZW5gKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGF3YWl0IChkZWZhdWx0VmFsdWUgYXMgKCkgPT4gUHJvbWlzZTxUPikoKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShwYXRoLCBlbmNvZGVGaXh0dXJlKGRlZmF1bHRWYWx1ZSwgZW5jb2RpbmcpKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgd3JvdGUgZGVmYXVsdCB2YWx1ZSBmb3IgJHtwYXRofSwgcGxlYXNlIGluc3BlY3QgYW5kIHJlc3RhcnQgdGVzdGApO1xuICAgIH1cblxuICAgIHRocm93IGU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGpzb25Ob3JtYWxpemU8VD4odjogVCk6IFQge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2KSkgYXMgVDtcbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ /** We have a mirrored function similar to our hsm that generates our Bitcoin signed
2
+ * message so that we can use for testing. This creates a random entropy as well using
3
+ * the nilUUID structure to construct our uuid buffer and given our address we can
4
+ * directly encode it into our message.
5
+ *
6
+ * @param attestationPrvKey
7
+ * @param uuid
8
+ * @param address
9
+ * @returns
10
+ */
11
+ export declare function generatePayGoAttestationProof(uuid: string, address: Buffer, hasPrefix?: boolean): Buffer;
12
+ //# sourceMappingURL=generatePayGoAttestationProof.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatePayGoAttestationProof.utils.d.ts","sourceRoot":"","sources":["../../../src/testutil/generatePayGoAttestationProof.utils.ts"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,UAAO,GAAG,MAAM,CAsBrG"}
@@ -0,0 +1,32 @@
1
+ import crypto from 'crypto';
2
+ import { bufferutils } from '@bitgo-beta/utxo-lib';
3
+ import { Prefix } from '../paygo';
4
+ /** We have a mirrored function similar to our hsm that generates our Bitcoin signed
5
+ * message so that we can use for testing. This creates a random entropy as well using
6
+ * the nilUUID structure to construct our uuid buffer and given our address we can
7
+ * directly encode it into our message.
8
+ *
9
+ * @param attestationPrvKey
10
+ * @param uuid
11
+ * @param address
12
+ * @returns
13
+ */
14
+ export function generatePayGoAttestationProof(uuid, address, hasPrefix = true) {
15
+ // <ENTROPY>
16
+ const entropyLength = 64;
17
+ const entropy = crypto.randomBytes(entropyLength);
18
+ // <UUID>
19
+ const uuidBuffer = Buffer.from(uuid);
20
+ const uuidBufferLength = uuidBuffer.length;
21
+ // <ADDRESS>
22
+ const addressBufferLength = address.length;
23
+ // <VARINT_LENGTH>
24
+ const msgLength = entropyLength + addressBufferLength + uuidBufferLength;
25
+ const msgLengthBuffer = bufferutils.varuint.encode(msgLength);
26
+ // <LENGTH><ENTROPY><ADDRESS><UUID>
27
+ const proofMessage = Buffer.concat([msgLengthBuffer, entropy, address, uuidBuffer]);
28
+ // If hasPrefix, we return 0x18Bitcoin Signed Message:\n<proof> otherwise its just <proof>
29
+ // where <proof> = <VARINT_LEN><ENTROPY><ADDRESS><UUID>
30
+ return hasPrefix ? Buffer.concat([Prefix, proofMessage]) : proofMessage;
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxJQUFZLEVBQUUsT0FBZSxFQUFFLFNBQVMsR0FBRyxJQUFJO0lBQzNGLFlBQVk7SUFDWixNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDekIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVsRCxTQUFTO0lBQ1QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFFM0MsWUFBWTtJQUNaLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUUzQyxrQkFBa0I7SUFDbEIsTUFBTSxTQUFTLEdBQUcsYUFBYSxHQUFHLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDO0lBQ3pFLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTlELG1DQUFtQztJQUNuQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUVwRiwwRkFBMEY7SUFDMUYsdURBQXVEO0lBQ3ZELE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztBQUMxRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgeyBidWZmZXJ1dGlscyB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgUHJlZml4IH0gZnJvbSAnLi4vcGF5Z28nO1xuXG4vKiogV2UgaGF2ZSBhIG1pcnJvcmVkIGZ1bmN0aW9uIHNpbWlsYXIgdG8gb3VyIGhzbSB0aGF0IGdlbmVyYXRlcyBvdXIgQml0Y29pbiBzaWduZWRcbiAqIG1lc3NhZ2Ugc28gdGhhdCB3ZSBjYW4gdXNlIGZvciB0ZXN0aW5nLiBUaGlzIGNyZWF0ZXMgYSByYW5kb20gZW50cm9weSBhcyB3ZWxsIHVzaW5nXG4gKiB0aGUgbmlsVVVJRCBzdHJ1Y3R1cmUgdG8gY29uc3RydWN0IG91ciB1dWlkIGJ1ZmZlciBhbmQgZ2l2ZW4gb3VyIGFkZHJlc3Mgd2UgY2FuXG4gKiBkaXJlY3RseSBlbmNvZGUgaXQgaW50byBvdXIgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gYXR0ZXN0YXRpb25QcnZLZXlcbiAqIEBwYXJhbSB1dWlkXG4gKiBAcGFyYW0gYWRkcmVzc1xuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUGF5R29BdHRlc3RhdGlvblByb29mKHV1aWQ6IHN0cmluZywgYWRkcmVzczogQnVmZmVyLCBoYXNQcmVmaXggPSB0cnVlKTogQnVmZmVyIHtcbiAgLy8gPEVOVFJPUFk+XG4gIGNvbnN0IGVudHJvcHlMZW5ndGggPSA2NDtcbiAgY29uc3QgZW50cm9weSA9IGNyeXB0by5yYW5kb21CeXRlcyhlbnRyb3B5TGVuZ3RoKTtcblxuICAvLyA8VVVJRD5cbiAgY29uc3QgdXVpZEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHV1aWQpO1xuICBjb25zdCB1dWlkQnVmZmVyTGVuZ3RoID0gdXVpZEJ1ZmZlci5sZW5ndGg7XG5cbiAgLy8gPEFERFJFU1M+XG4gIGNvbnN0IGFkZHJlc3NCdWZmZXJMZW5ndGggPSBhZGRyZXNzLmxlbmd0aDtcblxuICAvLyA8VkFSSU5UX0xFTkdUSD5cbiAgY29uc3QgbXNnTGVuZ3RoID0gZW50cm9weUxlbmd0aCArIGFkZHJlc3NCdWZmZXJMZW5ndGggKyB1dWlkQnVmZmVyTGVuZ3RoO1xuICBjb25zdCBtc2dMZW5ndGhCdWZmZXIgPSBidWZmZXJ1dGlscy52YXJ1aW50LmVuY29kZShtc2dMZW5ndGgpO1xuXG4gIC8vIDxMRU5HVEg+PEVOVFJPUFk+PEFERFJFU1M+PFVVSUQ+XG4gIGNvbnN0IHByb29mTWVzc2FnZSA9IEJ1ZmZlci5jb25jYXQoW21zZ0xlbmd0aEJ1ZmZlciwgZW50cm9weSwgYWRkcmVzcywgdXVpZEJ1ZmZlcl0pO1xuXG4gIC8vIElmIGhhc1ByZWZpeCwgd2UgcmV0dXJuIDB4MThCaXRjb2luIFNpZ25lZCBNZXNzYWdlOlxcbjxwcm9vZj4gb3RoZXJ3aXNlIGl0cyBqdXN0IDxwcm9vZj5cbiAgLy8gd2hlcmUgPHByb29mPiA9IDxWQVJJTlRfTEVOPjxFTlRST1BZPjxBRERSRVNTPjxVVUlEPlxuICByZXR1cm4gaGFzUHJlZml4ID8gQnVmZmVyLmNvbmNhdChbUHJlZml4LCBwcm9vZk1lc3NhZ2VdKSA6IHByb29mTWVzc2FnZTtcbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export * from './fixtures.utils';
2
+ export * from './key.utils';
3
+ export * from './toPlainObject.utils';
4
+ export * from './generatePayGoAttestationProof.utils';
5
+ export * from './trimMessagePrefix';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testutil/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testutil/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './fixtures.utils';
2
+ export * from './key.utils';
3
+ export * from './toPlainObject.utils';
4
+ export * from './generatePayGoAttestationProof.utils';
5
+ export * from './trimMessagePrefix';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZml4dHVyZXMudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9rZXkudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi90b1BsYWluT2JqZWN0LnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi90cmltTWVzc2FnZVByZWZpeCc7XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { BIP32Interface } from '@bitgo-beta/secp256k1';
2
+ import * as utxolib from '@bitgo-beta/utxo-lib';
3
+ export type Triple<T> = [T, T, T];
4
+ export type KeyTriple = Triple<BIP32Interface>;
5
+ /**
6
+ * Create new bip32 key. Uses random seed if none is passed.
7
+ * @param seed
8
+ */
9
+ export declare function getKey(seed?: string): BIP32Interface;
10
+ /**
11
+ * Return deterministic key triple of bip32 keys
12
+ * @param prefix
13
+ */
14
+ export declare function getKeyTriple(prefix?: string): KeyTriple;
15
+ export declare function getRootWalletKeys(prefix?: string, derivationPrefixes?: Triple<string>): utxolib.bitgo.RootWalletKeys;
16
+ //# sourceMappingURL=key.utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"key.utils.d.ts","sourceRoot":"","sources":["../../../src/testutil/key.utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAElC,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,cAAc,CAGpD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,SAAK,GAAG,SAAS,CAEnD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,SAAK,EAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAEhH"}
1
+ {"version":3,"file":"key.utils.d.ts","sourceRoot":"","sources":["../../../src/testutil/key.utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAElC,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,cAAc,CAGpD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,SAAK,GAAG,SAAS,CAEnD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,SAAK,EAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAEhH"}
@@ -0,0 +1,22 @@
1
+ import * as crypto from 'crypto';
2
+ import { bip32 } from '@bitgo-beta/secp256k1';
3
+ import * as utxolib from '@bitgo-beta/utxo-lib';
4
+ /**
5
+ * Create new bip32 key. Uses random seed if none is passed.
6
+ * @param seed
7
+ */
8
+ export function getKey(seed) {
9
+ const finalSeed = seed === undefined ? crypto.randomBytes(32) : crypto.createHash('sha256').update(seed).digest();
10
+ return bip32.fromSeed(finalSeed);
11
+ }
12
+ /**
13
+ * Return deterministic key triple of bip32 keys
14
+ * @param prefix
15
+ */
16
+ export function getKeyTriple(prefix = '') {
17
+ return Array.from({ length: 3 }).map((_, i) => getKey(`${prefix}${i}`));
18
+ }
19
+ export function getRootWalletKeys(prefix = '', derivationPrefixes) {
20
+ return new utxolib.bitgo.RootWalletKeys(getKeyTriple(prefix), derivationPrefixes);
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rlc3R1dGlsL2tleS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsS0FBSyxFQUFrQixNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sS0FBSyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFNaEQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxJQUFhO0lBQ2xDLE1BQU0sU0FBUyxHQUFHLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xILE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUFNLEdBQUcsRUFBRTtJQUN0QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBYyxDQUFDO0FBQ3ZGLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxrQkFBbUM7SUFDaEYsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3BGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuaW1wb3J0IHsgYmlwMzIsIEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2VjcDI1NmsxJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5leHBvcnQgdHlwZSBUcmlwbGU8VD4gPSBbVCwgVCwgVF07XG5cbmV4cG9ydCB0eXBlIEtleVRyaXBsZSA9IFRyaXBsZTxCSVAzMkludGVyZmFjZT47XG5cbi8qKlxuICogQ3JlYXRlIG5ldyBiaXAzMiBrZXkuIFVzZXMgcmFuZG9tIHNlZWQgaWYgbm9uZSBpcyBwYXNzZWQuXG4gKiBAcGFyYW0gc2VlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5KHNlZWQ/OiBzdHJpbmcpOiBCSVAzMkludGVyZmFjZSB7XG4gIGNvbnN0IGZpbmFsU2VlZCA9IHNlZWQgPT09IHVuZGVmaW5lZCA/IGNyeXB0by5yYW5kb21CeXRlcygzMikgOiBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHNlZWQpLmRpZ2VzdCgpO1xuICByZXR1cm4gYmlwMzIuZnJvbVNlZWQoZmluYWxTZWVkKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gZGV0ZXJtaW5pc3RpYyBrZXkgdHJpcGxlIG9mIGJpcDMyIGtleXNcbiAqIEBwYXJhbSBwcmVmaXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEtleVRyaXBsZShwcmVmaXggPSAnJyk6IEtleVRyaXBsZSB7XG4gIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiAzIH0pLm1hcCgoXywgaSkgPT4gZ2V0S2V5KGAke3ByZWZpeH0ke2l9YCkpIGFzIEtleVRyaXBsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvb3RXYWxsZXRLZXlzKHByZWZpeCA9ICcnLCBkZXJpdmF0aW9uUHJlZml4ZXM/OiBUcmlwbGU8c3RyaW5nPik6IHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXMge1xuICByZXR1cm4gbmV3IHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXMoZ2V0S2V5VHJpcGxlKHByZWZpeCksIGRlcml2YXRpb25QcmVmaXhlcyk7XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ type ToPlainObjectOpts = {
2
+ propertyDescriptors?: boolean;
3
+ skipUndefinedValues?: boolean;
4
+ ignorePaths?: string[] | ((path: PathElement[]) => boolean);
5
+ apply?: (v: unknown, path: PathElement[]) => unknown;
6
+ };
7
+ export type PathElement = string | number;
8
+ export declare function matchPath(a: PathElement[], b: PathElement[]): boolean;
9
+ export declare function toPlainObject(v: unknown, opts?: ToPlainObjectOpts, path?: PathElement[]): unknown;
10
+ export {};
11
+ //# sourceMappingURL=toPlainObject.utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toPlainObject.utils.d.ts","sourceRoot":"","sources":["../../../src/testutil/toPlainObject.utils.ts"],"names":[],"mappings":"AAAA,KAAK,iBAAiB,GAAG;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC;IAC5D,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC;CACtD,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,wBAAgB,SAAS,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,OAAO,CAErE;AA0CD,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,GAAE,iBAAsB,EAAE,IAAI,GAAE,WAAW,EAAO,GAAG,OAAO,CAyCzG"}
1
+ {"version":3,"file":"toPlainObject.utils.d.ts","sourceRoot":"","sources":["../../../src/testutil/toPlainObject.utils.ts"],"names":[],"mappings":"AAAA,KAAK,iBAAiB,GAAG;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC;IAC5D,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC;CACtD,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,wBAAgB,SAAS,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,OAAO,CAErE;AAyDD,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,GAAE,iBAAsB,EAAE,IAAI,GAAE,WAAW,EAAO,GAAG,OAAO,CAyCzG"}