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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) hide show
  1. package/dist/cjs/src/Output.d.ts +43 -0
  2. package/dist/cjs/src/Output.d.ts.map +1 -0
  3. package/dist/cjs/src/Output.js +60 -0
  4. package/dist/cjs/src/bip322/index.d.ts +5 -0
  5. package/dist/cjs/src/bip322/index.d.ts.map +1 -0
  6. package/dist/cjs/src/bip322/index.js +21 -0
  7. package/dist/cjs/src/bip322/toSign.d.ts +25 -0
  8. package/dist/cjs/src/bip322/toSign.d.ts.map +1 -0
  9. package/dist/cjs/src/bip322/toSign.js +125 -0
  10. package/dist/cjs/src/bip322/toSpend.d.ts +22 -0
  11. package/dist/cjs/src/bip322/toSpend.d.ts.map +1 -0
  12. package/dist/cjs/src/bip322/toSpend.js +72 -0
  13. package/dist/cjs/src/bip322/utils.d.ts +18 -0
  14. package/dist/cjs/src/bip322/utils.d.ts.map +1 -0
  15. package/dist/cjs/src/bip322/utils.js +115 -0
  16. package/dist/cjs/src/bip322/verify.d.ts +12 -0
  17. package/dist/cjs/src/bip322/verify.d.ts.map +1 -0
  18. package/dist/cjs/src/bip322/verify.js +113 -0
  19. package/dist/cjs/src/bip32utils.d.ts +12 -0
  20. package/dist/cjs/src/bip32utils.d.ts.map +1 -0
  21. package/dist/cjs/src/bip32utils.js +15 -0
  22. package/dist/cjs/src/bip65/index.d.ts +2 -0
  23. package/dist/cjs/src/bip65/index.d.ts.map +1 -0
  24. package/dist/{src/testutil → cjs/src/bip65}/index.js +2 -4
  25. package/dist/cjs/src/bip65/locktime.d.ts +8 -0
  26. package/dist/cjs/src/bip65/locktime.d.ts.map +1 -0
  27. package/dist/cjs/src/bip65/locktime.js +37 -0
  28. package/dist/{src → cjs/src}/descriptor/DescriptorMap.d.ts +1 -1
  29. package/dist/cjs/src/descriptor/DescriptorMap.d.ts.map +1 -0
  30. package/dist/cjs/src/descriptor/DescriptorMap.js +9 -0
  31. package/dist/cjs/src/descriptor/Output.d.ts +23 -0
  32. package/dist/cjs/src/descriptor/Output.d.ts.map +1 -0
  33. package/dist/cjs/src/descriptor/Output.js +41 -0
  34. package/dist/{src → cjs/src}/descriptor/VirtualSize.d.ts +3 -1
  35. package/dist/cjs/src/descriptor/VirtualSize.d.ts.map +1 -0
  36. package/dist/cjs/src/descriptor/VirtualSize.js +100 -0
  37. package/dist/{src → cjs/src}/descriptor/address.d.ts +2 -2
  38. package/dist/cjs/src/descriptor/address.d.ts.map +1 -0
  39. package/dist/{src → cjs/src}/descriptor/address.js +2 -2
  40. package/dist/cjs/src/descriptor/derive.d.ts +13 -0
  41. package/dist/cjs/src/descriptor/derive.d.ts.map +1 -0
  42. package/dist/cjs/src/descriptor/derive.js +45 -0
  43. package/dist/cjs/src/descriptor/fromFixedScriptWallet.d.ts +16 -0
  44. package/dist/cjs/src/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  45. package/dist/cjs/src/descriptor/fromFixedScriptWallet.js +88 -0
  46. package/dist/cjs/src/descriptor/index.d.ts +11 -0
  47. package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
  48. package/dist/cjs/src/descriptor/index.js +27 -0
  49. package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts +14 -0
  50. package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  51. package/dist/cjs/src/descriptor/parse/PatternMatcher.js +60 -0
  52. package/dist/{src → cjs/src}/descriptor/psbt/assertSatisfiable.d.ts +1 -1
  53. package/dist/cjs/src/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  54. package/dist/cjs/src/descriptor/psbt/assertSatisfiable.js +74 -0
  55. package/dist/cjs/src/descriptor/psbt/createPsbt.d.ts +23 -0
  56. package/dist/cjs/src/descriptor/psbt/createPsbt.d.ts.map +1 -0
  57. package/dist/cjs/src/descriptor/psbt/createPsbt.js +107 -0
  58. package/dist/{src → cjs/src}/descriptor/psbt/findDescriptors.d.ts +7 -3
  59. package/dist/cjs/src/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  60. package/dist/cjs/src/descriptor/psbt/findDescriptors.js +98 -0
  61. package/dist/{src → cjs/src}/descriptor/psbt/index.d.ts +1 -0
  62. package/dist/cjs/src/descriptor/psbt/index.d.ts.map +1 -0
  63. package/dist/{src → cjs/src}/descriptor/psbt/index.js +2 -1
  64. package/dist/{src → cjs/src}/descriptor/psbt/parse.d.ts +2 -2
  65. package/dist/cjs/src/descriptor/psbt/parse.d.ts.map +1 -0
  66. package/dist/cjs/src/descriptor/psbt/parse.js +87 -0
  67. package/dist/cjs/src/descriptor/psbt/sign.d.ts +26 -0
  68. package/dist/cjs/src/descriptor/psbt/sign.d.ts.map +1 -0
  69. package/dist/cjs/src/descriptor/psbt/sign.js +42 -0
  70. package/dist/{src → cjs/src}/descriptor/psbt/wrap.d.ts +1 -1
  71. package/dist/cjs/src/descriptor/psbt/wrap.d.ts.map +1 -0
  72. package/dist/cjs/src/descriptor/psbt/wrap.js +76 -0
  73. package/dist/cjs/src/dustThreshold.d.ts +4 -0
  74. package/dist/cjs/src/dustThreshold.d.ts.map +1 -0
  75. package/dist/cjs/src/dustThreshold.js +134 -0
  76. package/dist/cjs/src/index.d.ts +10 -0
  77. package/dist/cjs/src/index.d.ts.map +1 -0
  78. package/dist/{src → cjs/src}/index.js +12 -2
  79. package/dist/cjs/src/paygo/attestation.d.ts +11 -0
  80. package/dist/cjs/src/paygo/attestation.d.ts.map +1 -0
  81. package/dist/cjs/src/paygo/attestation.js +58 -0
  82. package/dist/cjs/src/paygo/index.d.ts +3 -0
  83. package/dist/cjs/src/paygo/index.d.ts.map +1 -0
  84. package/dist/cjs/src/paygo/index.js +19 -0
  85. package/dist/cjs/src/paygo/parsePayGoAttestation.d.ts +16 -0
  86. package/dist/cjs/src/paygo/parsePayGoAttestation.d.ts.map +1 -0
  87. package/dist/cjs/src/paygo/parsePayGoAttestation.js +50 -0
  88. package/dist/cjs/src/paygo/psbt/Errors.d.ts +22 -0
  89. package/dist/cjs/src/paygo/psbt/Errors.d.ts.map +1 -0
  90. package/dist/cjs/src/paygo/psbt/Errors.js +44 -0
  91. package/dist/cjs/src/paygo/psbt/index.d.ts +2 -0
  92. package/dist/cjs/src/paygo/psbt/index.d.ts.map +1 -0
  93. package/dist/cjs/src/paygo/psbt/index.js +18 -0
  94. package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts +29 -0
  95. package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  96. package/dist/cjs/src/paygo/psbt/payGoAddressProof.js +124 -0
  97. package/dist/{src → cjs/src}/testutil/descriptor/descriptors.d.ts +5 -2
  98. package/dist/cjs/src/testutil/descriptor/descriptors.d.ts.map +1 -0
  99. package/dist/cjs/src/testutil/descriptor/descriptors.js +162 -0
  100. package/dist/cjs/src/testutil/descriptor/index.d.ts.map +1 -0
  101. package/dist/{src → cjs/src}/testutil/descriptor/index.js +1 -1
  102. package/dist/{src → cjs/src}/testutil/descriptor/mock.utils.d.ts +6 -4
  103. package/dist/cjs/src/testutil/descriptor/mock.utils.d.ts.map +1 -0
  104. package/dist/cjs/src/testutil/descriptor/mock.utils.js +92 -0
  105. package/dist/cjs/src/testutil/descriptor/psbt.utils.d.ts.map +1 -0
  106. package/dist/cjs/src/testutil/descriptor/psbt.utils.js +21 -0
  107. package/dist/cjs/src/testutil/fixtures.utils.d.ts.map +1 -0
  108. package/dist/cjs/src/testutil/fixtures.utils.js +127 -0
  109. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
  110. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  111. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.js +38 -0
  112. package/dist/cjs/src/testutil/index.d.ts +6 -0
  113. package/dist/cjs/src/testutil/index.d.ts.map +1 -0
  114. package/dist/cjs/src/testutil/index.js +22 -0
  115. package/dist/{src → cjs/src}/testutil/key.utils.d.ts +1 -1
  116. package/dist/cjs/src/testutil/key.utils.d.ts.map +1 -0
  117. package/dist/cjs/src/testutil/key.utils.js +60 -0
  118. package/dist/cjs/src/testutil/toPlainObject.utils.d.ts.map +1 -0
  119. package/dist/cjs/src/testutil/toPlainObject.utils.js +89 -0
  120. package/dist/cjs/src/testutil/trimMessagePrefix.d.ts +11 -0
  121. package/dist/cjs/src/testutil/trimMessagePrefix.d.ts.map +1 -0
  122. package/dist/cjs/src/testutil/trimMessagePrefix.js +60 -0
  123. package/dist/cjs/src/xOnlyPubkey.d.ts +2 -0
  124. package/dist/cjs/src/xOnlyPubkey.d.ts.map +1 -0
  125. package/dist/cjs/src/xOnlyPubkey.js +18 -0
  126. package/dist/cjs/test/Output.d.ts +2 -0
  127. package/dist/cjs/test/Output.d.ts.map +1 -0
  128. package/dist/cjs/test/Output.js +70 -0
  129. package/dist/cjs/test/bip322/bip322.utils.d.ts +7 -0
  130. package/dist/cjs/test/bip322/bip322.utils.d.ts.map +1 -0
  131. package/dist/cjs/test/bip322/bip322.utils.js +16 -0
  132. package/dist/cjs/test/bip322/toSign.d.ts +2 -0
  133. package/dist/cjs/test/bip322/toSign.d.ts.map +1 -0
  134. package/dist/cjs/test/bip322/toSign.js +133 -0
  135. package/dist/cjs/test/bip322/toSpend.d.ts +2 -0
  136. package/dist/cjs/test/bip322/toSpend.d.ts.map +1 -0
  137. package/dist/cjs/test/bip322/toSpend.js +70 -0
  138. package/dist/cjs/test/bip322/utils.d.ts +2 -0
  139. package/dist/cjs/test/bip322/utils.d.ts.map +1 -0
  140. package/dist/cjs/test/bip322/utils.js +79 -0
  141. package/dist/cjs/test/bip322/verify.d.ts +2 -0
  142. package/dist/cjs/test/bip322/verify.d.ts.map +1 -0
  143. package/dist/cjs/test/bip322/verify.js +293 -0
  144. package/dist/cjs/test/bip32utils.d.ts +2 -0
  145. package/dist/cjs/test/bip32utils.d.ts.map +1 -0
  146. package/dist/cjs/test/bip32utils.js +62 -0
  147. package/dist/cjs/test/bip65/locktime.d.ts +2 -0
  148. package/dist/cjs/test/bip65/locktime.d.ts.map +1 -0
  149. package/dist/cjs/test/bip65/locktime.js +22 -0
  150. package/dist/cjs/test/descriptor/Output.d.ts +2 -0
  151. package/dist/cjs/test/descriptor/Output.d.ts.map +1 -0
  152. package/dist/cjs/test/descriptor/Output.js +44 -0
  153. package/dist/cjs/test/descriptor/derive.d.ts +2 -0
  154. package/dist/cjs/test/descriptor/derive.d.ts.map +1 -0
  155. package/dist/cjs/test/descriptor/derive.js +27 -0
  156. package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts +2 -0
  157. package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  158. package/dist/cjs/test/descriptor/fromFixedScriptWallet.js +145 -0
  159. package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts +2 -0
  160. package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  161. package/dist/cjs/test/descriptor/parse/PatternMatcher.js +120 -0
  162. package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts +2 -0
  163. package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts.map +1 -0
  164. package/dist/cjs/test/descriptor/psbt/VirtualSize.js +71 -0
  165. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts +2 -0
  166. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  167. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.js +56 -0
  168. package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts +2 -0
  169. package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  170. package/dist/cjs/test/descriptor/psbt/findDescriptors.js +70 -0
  171. package/dist/cjs/test/descriptor/psbt/psbt.d.ts +2 -0
  172. package/dist/cjs/test/descriptor/psbt/psbt.d.ts.map +1 -0
  173. package/dist/cjs/test/descriptor/psbt/psbt.js +211 -0
  174. package/dist/cjs/test/dustThreshold.d.ts +2 -0
  175. package/dist/cjs/test/dustThreshold.d.ts.map +1 -0
  176. package/dist/cjs/test/dustThreshold.js +110 -0
  177. package/dist/cjs/test/paygo/attestation.d.ts +2 -0
  178. package/dist/cjs/test/paygo/attestation.d.ts.map +1 -0
  179. package/dist/cjs/test/paygo/attestation.js +23 -0
  180. package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts +2 -0
  181. package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts.map +1 -0
  182. package/dist/cjs/test/paygo/parsePayGoAttestation.js +75 -0
  183. package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts +9 -0
  184. package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  185. package/dist/cjs/test/paygo/psbt/payGoAddressProof.js +163 -0
  186. package/dist/cjs/test/xOnlyPubkey.d.ts +2 -0
  187. package/dist/cjs/test/xOnlyPubkey.d.ts.map +1 -0
  188. package/dist/cjs/test/xOnlyPubkey.js +18 -0
  189. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  190. package/dist/esm/Output.d.ts +43 -0
  191. package/dist/esm/Output.d.ts.map +1 -0
  192. package/dist/esm/Output.js +53 -0
  193. package/dist/esm/bip322/index.d.ts +5 -0
  194. package/dist/esm/bip322/index.d.ts.map +1 -0
  195. package/dist/esm/bip322/index.js +5 -0
  196. package/dist/esm/bip322/toSign.d.ts +25 -0
  197. package/dist/esm/bip322/toSign.d.ts.map +1 -0
  198. package/dist/esm/bip322/toSign.js +119 -0
  199. package/dist/esm/bip322/toSpend.d.ts +22 -0
  200. package/dist/esm/bip322/toSpend.d.ts.map +1 -0
  201. package/dist/esm/bip322/toSpend.js +66 -0
  202. package/dist/esm/bip322/utils.d.ts +18 -0
  203. package/dist/esm/bip322/utils.d.ts.map +1 -0
  204. package/dist/esm/bip322/utils.js +77 -0
  205. package/dist/esm/bip322/verify.d.ts +12 -0
  206. package/dist/esm/bip322/verify.d.ts.map +1 -0
  207. package/dist/esm/bip322/verify.js +74 -0
  208. package/dist/esm/bip32utils.d.ts +12 -0
  209. package/dist/esm/bip32utils.d.ts.map +1 -0
  210. package/dist/esm/bip32utils.js +12 -0
  211. package/dist/esm/bip65/index.d.ts +2 -0
  212. package/dist/esm/bip65/index.d.ts.map +1 -0
  213. package/dist/esm/bip65/index.js +2 -0
  214. package/dist/esm/bip65/locktime.d.ts +8 -0
  215. package/dist/esm/bip65/locktime.d.ts.map +1 -0
  216. package/dist/esm/bip65/locktime.js +34 -0
  217. package/dist/esm/descriptor/DescriptorMap.d.ts +9 -0
  218. package/dist/{src → esm}/descriptor/DescriptorMap.d.ts.map +1 -1
  219. package/dist/esm/descriptor/DescriptorMap.js +6 -0
  220. package/dist/esm/descriptor/Output.d.ts +23 -0
  221. package/dist/esm/descriptor/Output.d.ts.map +1 -0
  222. package/dist/esm/descriptor/Output.js +32 -0
  223. package/dist/esm/descriptor/VirtualSize.d.ts +23 -0
  224. package/dist/esm/descriptor/VirtualSize.d.ts.map +1 -0
  225. package/dist/esm/descriptor/VirtualSize.js +94 -0
  226. package/dist/esm/descriptor/address.d.ts +5 -0
  227. package/dist/esm/descriptor/address.d.ts.map +1 -0
  228. package/dist/esm/descriptor/address.js +11 -0
  229. package/dist/esm/descriptor/derive.d.ts +13 -0
  230. package/dist/esm/descriptor/derive.d.ts.map +1 -0
  231. package/dist/esm/descriptor/derive.js +38 -0
  232. package/dist/esm/descriptor/fromFixedScriptWallet.d.ts +16 -0
  233. package/dist/esm/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  234. package/dist/esm/descriptor/fromFixedScriptWallet.js +51 -0
  235. package/dist/esm/descriptor/index.d.ts +11 -0
  236. package/dist/esm/descriptor/index.d.ts.map +1 -0
  237. package/dist/esm/descriptor/index.js +11 -0
  238. package/dist/esm/descriptor/parse/PatternMatcher.d.ts +14 -0
  239. package/dist/esm/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  240. package/dist/esm/descriptor/parse/PatternMatcher.js +56 -0
  241. package/dist/esm/descriptor/psbt/assertSatisfiable.d.ts +20 -0
  242. package/dist/{src → esm}/descriptor/psbt/assertSatisfiable.d.ts.map +1 -1
  243. package/dist/esm/descriptor/psbt/assertSatisfiable.js +69 -0
  244. package/dist/esm/descriptor/psbt/createPsbt.d.ts +23 -0
  245. package/dist/esm/descriptor/psbt/createPsbt.d.ts.map +1 -0
  246. package/dist/esm/descriptor/psbt/createPsbt.js +69 -0
  247. package/dist/esm/descriptor/psbt/findDescriptors.d.ts +26 -0
  248. package/dist/esm/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  249. package/dist/esm/descriptor/psbt/findDescriptors.js +94 -0
  250. package/dist/esm/descriptor/psbt/index.d.ts +7 -0
  251. package/dist/{src → esm}/descriptor/psbt/index.d.ts.map +1 -1
  252. package/dist/esm/descriptor/psbt/index.js +7 -0
  253. package/dist/esm/descriptor/psbt/parse.d.ts +27 -0
  254. package/dist/esm/descriptor/psbt/parse.d.ts.map +1 -0
  255. package/dist/esm/descriptor/psbt/parse.js +51 -0
  256. package/dist/esm/descriptor/psbt/sign.d.ts +26 -0
  257. package/dist/esm/descriptor/psbt/sign.d.ts.map +1 -0
  258. package/dist/esm/descriptor/psbt/sign.js +34 -0
  259. package/dist/esm/descriptor/psbt/wrap.d.ts +12 -0
  260. package/dist/{src → esm}/descriptor/psbt/wrap.d.ts.map +1 -1
  261. package/dist/esm/descriptor/psbt/wrap.js +38 -0
  262. package/dist/esm/dustThreshold.d.ts +4 -0
  263. package/dist/esm/dustThreshold.d.ts.map +1 -0
  264. package/dist/esm/dustThreshold.js +97 -0
  265. package/dist/esm/index.d.ts +10 -0
  266. package/dist/esm/index.d.ts.map +1 -0
  267. package/dist/esm/index.js +10 -0
  268. package/dist/esm/paygo/attestation.d.ts +11 -0
  269. package/dist/esm/paygo/attestation.d.ts.map +1 -0
  270. package/dist/esm/paygo/attestation.js +18 -0
  271. package/dist/esm/paygo/index.d.ts +3 -0
  272. package/dist/esm/paygo/index.d.ts.map +1 -0
  273. package/dist/esm/paygo/index.js +3 -0
  274. package/dist/esm/paygo/parsePayGoAttestation.d.ts +16 -0
  275. package/dist/esm/paygo/parsePayGoAttestation.d.ts.map +1 -0
  276. package/dist/esm/paygo/parsePayGoAttestation.js +43 -0
  277. package/dist/esm/paygo/psbt/Errors.d.ts +22 -0
  278. package/dist/esm/paygo/psbt/Errors.d.ts.map +1 -0
  279. package/dist/esm/paygo/psbt/Errors.js +35 -0
  280. package/dist/esm/paygo/psbt/index.d.ts +2 -0
  281. package/dist/esm/paygo/psbt/index.d.ts.map +1 -0
  282. package/dist/esm/paygo/psbt/index.js +2 -0
  283. package/dist/esm/paygo/psbt/payGoAddressProof.d.ts +29 -0
  284. package/dist/esm/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  285. package/dist/esm/paygo/psbt/payGoAddressProof.js +85 -0
  286. package/dist/esm/testutil/descriptor/descriptors.d.ts +13 -0
  287. package/dist/esm/testutil/descriptor/descriptors.d.ts.map +1 -0
  288. package/dist/esm/testutil/descriptor/descriptors.js +150 -0
  289. package/dist/esm/testutil/descriptor/index.d.ts +4 -0
  290. package/dist/esm/testutil/descriptor/index.js +4 -0
  291. package/dist/esm/testutil/descriptor/mock.utils.d.ts +36 -0
  292. package/dist/esm/testutil/descriptor/mock.utils.d.ts.map +1 -0
  293. package/dist/esm/testutil/descriptor/mock.utils.js +53 -0
  294. package/dist/esm/testutil/descriptor/psbt.utils.d.ts +4 -0
  295. package/dist/{src → esm}/testutil/descriptor/psbt.utils.d.ts.map +1 -1
  296. package/dist/esm/testutil/descriptor/psbt.utils.js +17 -0
  297. package/dist/esm/testutil/fixtures.utils.d.ts +15 -0
  298. package/dist/{src → esm}/testutil/fixtures.utils.js +5 -42
  299. package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
  300. package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  301. package/dist/esm/testutil/generatePayGoAttestationProof.utils.js +32 -0
  302. package/dist/esm/testutil/index.d.ts +6 -0
  303. package/dist/{src → esm}/testutil/index.d.ts.map +1 -1
  304. package/dist/esm/testutil/index.js +6 -0
  305. package/dist/esm/testutil/key.utils.d.ts +16 -0
  306. package/dist/{src → esm}/testutil/key.utils.d.ts.map +1 -1
  307. package/dist/esm/testutil/key.utils.js +22 -0
  308. package/dist/esm/testutil/toPlainObject.utils.d.ts +11 -0
  309. package/dist/{src → esm}/testutil/toPlainObject.utils.d.ts.map +1 -1
  310. package/dist/esm/testutil/toPlainObject.utils.js +85 -0
  311. package/dist/esm/testutil/trimMessagePrefix.d.ts +11 -0
  312. package/dist/esm/testutil/trimMessagePrefix.d.ts.map +1 -0
  313. package/dist/esm/testutil/trimMessagePrefix.js +24 -0
  314. package/dist/esm/xOnlyPubkey.d.ts +2 -0
  315. package/dist/esm/xOnlyPubkey.d.ts.map +1 -0
  316. package/dist/esm/xOnlyPubkey.js +15 -0
  317. package/package.json +51 -22
  318. package/dist/src/descriptor/DescriptorMap.js +0 -12
  319. package/dist/src/descriptor/Output.d.ts +0 -24
  320. package/dist/src/descriptor/Output.d.ts.map +0 -1
  321. package/dist/src/descriptor/Output.js +0 -22
  322. package/dist/src/descriptor/VirtualSize.d.ts.map +0 -1
  323. package/dist/src/descriptor/VirtualSize.js +0 -87
  324. package/dist/src/descriptor/address.d.ts.map +0 -1
  325. package/dist/src/descriptor/index.d.ts +0 -9
  326. package/dist/src/descriptor/index.d.ts.map +0 -1
  327. package/dist/src/descriptor/index.js +0 -49
  328. package/dist/src/descriptor/psbt/assertSatisfiable.js +0 -74
  329. package/dist/src/descriptor/psbt/createPsbt.d.ts +0 -15
  330. package/dist/src/descriptor/psbt/createPsbt.d.ts.map +0 -1
  331. package/dist/src/descriptor/psbt/createPsbt.js +0 -82
  332. package/dist/src/descriptor/psbt/findDescriptors.d.ts.map +0 -1
  333. package/dist/src/descriptor/psbt/findDescriptors.js +0 -85
  334. package/dist/src/descriptor/psbt/parse.d.ts.map +0 -1
  335. package/dist/src/descriptor/psbt/parse.js +0 -87
  336. package/dist/src/descriptor/psbt/wrap.js +0 -76
  337. package/dist/src/index.d.ts +0 -3
  338. package/dist/src/index.d.ts.map +0 -1
  339. package/dist/src/testutil/descriptor/descriptors.d.ts.map +0 -1
  340. package/dist/src/testutil/descriptor/descriptors.js +0 -105
  341. package/dist/src/testutil/descriptor/mock.utils.d.ts.map +0 -1
  342. package/dist/src/testutil/descriptor/mock.utils.js +0 -87
  343. package/dist/src/testutil/descriptor/psbt.utils.js +0 -20
  344. package/dist/src/testutil/index.d.ts +0 -4
  345. package/dist/src/testutil/key.utils.js +0 -59
  346. package/dist/src/testutil/toPlainObject.utils.js +0 -75
  347. /package/dist/{src → cjs/src}/testutil/descriptor/index.d.ts +0 -0
  348. /package/dist/{src → cjs/src}/testutil/descriptor/psbt.utils.d.ts +0 -0
  349. /package/dist/{src → cjs/src}/testutil/fixtures.utils.d.ts +0 -0
  350. /package/dist/{src → cjs/src}/testutil/toPlainObject.utils.d.ts +0 -0
  351. /package/dist/{src → esm}/testutil/descriptor/index.d.ts.map +0 -0
  352. /package/dist/{src → esm}/testutil/fixtures.utils.d.ts.map +0 -0
@@ -0,0 +1,10 @@
1
+ export * as bip65 from './bip65';
2
+ export * as descriptor from './descriptor';
3
+ export * as testutil from './testutil';
4
+ export * as paygo from './paygo';
5
+ export * as bip32utils from './bip32utils';
6
+ export * as bip322 from './bip322';
7
+ export * from './dustThreshold';
8
+ export * from './Output';
9
+ export * from './xOnlyPubkey';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
@@ -0,0 +1,10 @@
1
+ export * as bip65 from './bip65';
2
+ export * as descriptor from './descriptor';
3
+ export * as testutil from './testutil';
4
+ export * as paygo from './paygo';
5
+ export * as bip32utils from './bip32utils';
6
+ export * as bip322 from './bip322';
7
+ export * from './dustThreshold';
8
+ export * from './Output';
9
+ export * from './xOnlyPubkey';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxLQUFLLFVBQVUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxLQUFLLFFBQVEsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxLQUFLLEtBQUssTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxLQUFLLFVBQVUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxVQUFVLENBQUM7QUFDbkMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGFzIGJpcDY1IGZyb20gJy4vYmlwNjUnO1xuZXhwb3J0ICogYXMgZGVzY3JpcHRvciBmcm9tICcuL2Rlc2NyaXB0b3InO1xuZXhwb3J0ICogYXMgdGVzdHV0aWwgZnJvbSAnLi90ZXN0dXRpbCc7XG5leHBvcnQgKiBhcyBwYXlnbyBmcm9tICcuL3BheWdvJztcbmV4cG9ydCAqIGFzIGJpcDMydXRpbHMgZnJvbSAnLi9iaXAzMnV0aWxzJztcbmV4cG9ydCAqIGFzIGJpcDMyMiBmcm9tICcuL2JpcDMyMic7XG5leHBvcnQgKiBmcm9tICcuL2R1c3RUaHJlc2hvbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9PdXRwdXQnO1xuZXhwb3J0ICogZnJvbSAnLi94T25seVB1YmtleSc7XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ export declare const NIL_UUID = "00000000-0000-0000-0000-000000000000";
3
+ /** This function reconstructs the proof <ENTROPY><ADDRESS><UUID>
4
+ * given the address and entropy.
5
+ *
6
+ * @param address
7
+ * @param entropy
8
+ * @returns
9
+ */
10
+ export declare function createPayGoAttestationBuffer(address: string, entropy: Buffer, network: utxolib.Network): Buffer;
11
+ //# sourceMappingURL=attestation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../../../src/paygo/attestation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,eAAO,MAAM,QAAQ,yCAAyC,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAM/G"}
@@ -0,0 +1,18 @@
1
+ import assert from 'assert';
2
+ import * as utxolib from '@bitgo-beta/utxo-lib';
3
+ export const NIL_UUID = '00000000-0000-0000-0000-000000000000';
4
+ /** This function reconstructs the proof <ENTROPY><ADDRESS><UUID>
5
+ * given the address and entropy.
6
+ *
7
+ * @param address
8
+ * @param entropy
9
+ * @returns
10
+ */
11
+ export function createPayGoAttestationBuffer(address, entropy, network) {
12
+ assert(address.length > 0);
13
+ const isValidAddress = utxolib.address.toOutputScript(address, network);
14
+ assert(isValidAddress, `Address ${address} is not a valid address.`);
15
+ const addressBuffer = Buffer.from(address);
16
+ return Buffer.concat([entropy, addressBuffer, Buffer.from(NIL_UUID)]);
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGF5Z28vYXR0ZXN0YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sS0FBSyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLHNDQUFzQyxDQUFDO0FBRS9EOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxPQUFlLEVBQUUsT0FBZSxFQUFFLE9BQXdCO0lBQ3JHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RSxNQUFNLENBQUMsY0FBYyxFQUFFLFdBQVcsT0FBTywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmV4cG9ydCBjb25zdCBOSUxfVVVJRCA9ICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnO1xuXG4vKiogVGhpcyBmdW5jdGlvbiByZWNvbnN0cnVjdHMgdGhlIHByb29mIDxFTlRST1BZPjxBRERSRVNTPjxVVUlEPlxuICogZ2l2ZW4gdGhlIGFkZHJlc3MgYW5kIGVudHJvcHkuXG4gKlxuICogQHBhcmFtIGFkZHJlc3NcbiAqIEBwYXJhbSBlbnRyb3B5XG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGF5R29BdHRlc3RhdGlvbkJ1ZmZlcihhZGRyZXNzOiBzdHJpbmcsIGVudHJvcHk6IEJ1ZmZlciwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogQnVmZmVyIHtcbiAgYXNzZXJ0KGFkZHJlc3MubGVuZ3RoID4gMCk7XG4gIGNvbnN0IGlzVmFsaWRBZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLnRvT3V0cHV0U2NyaXB0KGFkZHJlc3MsIG5ldHdvcmspO1xuICBhc3NlcnQoaXNWYWxpZEFkZHJlc3MsIGBBZGRyZXNzICR7YWRkcmVzc30gaXMgbm90IGEgdmFsaWQgYWRkcmVzcy5gKTtcbiAgY29uc3QgYWRkcmVzc0J1ZmZlciA9IEJ1ZmZlci5mcm9tKGFkZHJlc3MpO1xuICByZXR1cm4gQnVmZmVyLmNvbmNhdChbZW50cm9weSwgYWRkcmVzc0J1ZmZlciwgQnVmZmVyLmZyb20oTklMX1VVSUQpXSk7XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './parsePayGoAttestation';
2
+ export * from './psbt';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/paygo/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './parsePayGoAttestation';
2
+ export * from './psbt';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGF5Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGFyc2VQYXlHb0F0dGVzdGF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vcHNidCc7XG4iXX0=
@@ -0,0 +1,16 @@
1
+ export declare const Prefix: Buffer<ArrayBuffer>;
2
+ /**
3
+ * This function takes in the attestation proof of a PayGo address of the from
4
+ * <varint_length><ENTROPY><ADDRESS><UUID> and returns
5
+ * the address given its length. It is assumed that the ENTROPY is 64 bytes in the Buffer
6
+ * so if not given an address proof length we can still extract the address from the proof.
7
+ *
8
+ * @param message
9
+ * @param adressProofLength
10
+ */
11
+ export declare function parsePayGoAttestation(message: Buffer): {
12
+ entropy: Buffer;
13
+ address: Buffer;
14
+ uuid: Buffer;
15
+ };
16
+ //# sourceMappingURL=parsePayGoAttestation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsePayGoAttestation.d.ts","sourceRoot":"","sources":["../../../src/paygo/parsePayGoAttestation.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,MAAM,qBAA0D,CAAC;AAQ9E;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CA0BA"}
@@ -0,0 +1,43 @@
1
+ import assert from 'assert';
2
+ import { bufferutils } from '@bitgo-beta/utxo-lib';
3
+ // The signed address will always have the following structure:
4
+ // 0x18Bitcoin Signed Message:\n<varint_length><ENTROPY><ADDRESS><UUID>
5
+ export const Prefix = Buffer.from('\u0018Bitcoin Signed Message:\n', 'utf-8');
6
+ // UUID has the structure 00000000-0000-0000-0000-000000000000, and after
7
+ // we Buffer.from and get it's length its 36.
8
+ const UuidBufferLength = 36;
9
+ // The entropy will always be 64 bytes
10
+ const EntropyLen = 64;
11
+ /**
12
+ * This function takes in the attestation proof of a PayGo address of the from
13
+ * <varint_length><ENTROPY><ADDRESS><UUID> and returns
14
+ * the address given its length. It is assumed that the ENTROPY is 64 bytes in the Buffer
15
+ * so if not given an address proof length we can still extract the address from the proof.
16
+ *
17
+ * @param message
18
+ * @param adressProofLength
19
+ */
20
+ export function parsePayGoAttestation(message) {
21
+ if (message.length <= EntropyLen + UuidBufferLength) {
22
+ throw new Error('PayGo attestation proof is too short to contain a valid address');
23
+ }
24
+ // This generates the first part before the varint length so that we can
25
+ // determine how many bytes this is and iterate through the Buffer.
26
+ let offset = 0;
27
+ if (message.toString('hex').startsWith(Prefix.toString('hex'))) {
28
+ offset = Prefix.length;
29
+ }
30
+ // we decode the varint of the message which is uint32
31
+ // https://en.bitcoin.it/wiki/Protocol_documentation
32
+ const varInt = bufferutils.varuint.decode(message, offset);
33
+ assert(varInt);
34
+ offset += bufferutils.varuint.decode.bytes;
35
+ const entropy = message.subarray(offset, offset + EntropyLen);
36
+ offset += EntropyLen;
37
+ const address = message.subarray(offset, message.length - UuidBufferLength);
38
+ offset += address.length;
39
+ const uuid = message.subarray(message.length - UuidBufferLength);
40
+ // we break up the original message and retuen the entropy, address and uuid in their buffers
41
+ return { entropy, address, uuid };
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VQYXlHb0F0dGVzdGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BheWdvL3BhcnNlUGF5R29BdHRlc3RhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELCtEQUErRDtBQUMvRCx1RUFBdUU7QUFDdkUsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFOUUseUVBQXlFO0FBQ3pFLDZDQUE2QztBQUM3QyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUM1QixzQ0FBc0M7QUFDdEMsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBRXRCOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLE9BQWU7SUFLbkQsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLFVBQVUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BELE1BQU0sSUFBSSxLQUFLLENBQUMsaUVBQWlFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsd0VBQXdFO0lBQ3hFLG1FQUFtRTtJQUNuRSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDZixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9ELE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsb0RBQW9EO0lBQ3BELE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDZixNQUFNLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBRTNDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQztJQUM5RCxNQUFNLElBQUksVUFBVSxDQUFDO0lBQ3JCLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztJQUM1RSxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUN6QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztJQUVqRSw2RkFBNkY7SUFDN0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgYnVmZmVydXRpbHMgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbi8vIFRoZSBzaWduZWQgYWRkcmVzcyB3aWxsIGFsd2F5cyBoYXZlIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuLy8gMHgxOEJpdGNvaW4gU2lnbmVkIE1lc3NhZ2U6XFxuPHZhcmludF9sZW5ndGg+PEVOVFJPUFk+PEFERFJFU1M+PFVVSUQ+XG5leHBvcnQgY29uc3QgUHJlZml4ID0gQnVmZmVyLmZyb20oJ1xcdTAwMThCaXRjb2luIFNpZ25lZCBNZXNzYWdlOlxcbicsICd1dGYtOCcpO1xuXG4vLyBVVUlEIGhhcyB0aGUgc3RydWN0dXJlIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCwgYW5kIGFmdGVyXG4vLyB3ZSBCdWZmZXIuZnJvbSBhbmQgZ2V0IGl0J3MgbGVuZ3RoIGl0cyAzNi5cbmNvbnN0IFV1aWRCdWZmZXJMZW5ndGggPSAzNjtcbi8vIFRoZSBlbnRyb3B5IHdpbGwgYWx3YXlzIGJlIDY0IGJ5dGVzXG5jb25zdCBFbnRyb3B5TGVuID0gNjQ7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiB0YWtlcyBpbiB0aGUgYXR0ZXN0YXRpb24gcHJvb2Ygb2YgYSBQYXlHbyBhZGRyZXNzIG9mIHRoZSBmcm9tXG4gKiA8dmFyaW50X2xlbmd0aD48RU5UUk9QWT48QUREUkVTUz48VVVJRD4gYW5kIHJldHVybnNcbiAqIHRoZSBhZGRyZXNzIGdpdmVuIGl0cyBsZW5ndGguIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgRU5UUk9QWSBpcyA2NCBieXRlcyBpbiB0aGUgQnVmZmVyXG4gKiBzbyBpZiBub3QgZ2l2ZW4gYW4gYWRkcmVzcyBwcm9vZiBsZW5ndGggd2UgY2FuIHN0aWxsIGV4dHJhY3QgdGhlIGFkZHJlc3MgZnJvbSB0aGUgcHJvb2YuXG4gKlxuICogQHBhcmFtIG1lc3NhZ2VcbiAqIEBwYXJhbSBhZHJlc3NQcm9vZkxlbmd0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQYXlHb0F0dGVzdGF0aW9uKG1lc3NhZ2U6IEJ1ZmZlcik6IHtcbiAgZW50cm9weTogQnVmZmVyO1xuICBhZGRyZXNzOiBCdWZmZXI7XG4gIHV1aWQ6IEJ1ZmZlcjtcbn0ge1xuICBpZiAobWVzc2FnZS5sZW5ndGggPD0gRW50cm9weUxlbiArIFV1aWRCdWZmZXJMZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BheUdvIGF0dGVzdGF0aW9uIHByb29mIGlzIHRvbyBzaG9ydCB0byBjb250YWluIGEgdmFsaWQgYWRkcmVzcycpO1xuICB9XG5cbiAgLy8gVGhpcyBnZW5lcmF0ZXMgdGhlIGZpcnN0IHBhcnQgYmVmb3JlIHRoZSB2YXJpbnQgbGVuZ3RoIHNvIHRoYXQgd2UgY2FuXG4gIC8vIGRldGVybWluZSBob3cgbWFueSBieXRlcyB0aGlzIGlzIGFuZCBpdGVyYXRlIHRocm91Z2ggdGhlIEJ1ZmZlci5cbiAgbGV0IG9mZnNldCA9IDA7XG4gIGlmIChtZXNzYWdlLnRvU3RyaW5nKCdoZXgnKS5zdGFydHNXaXRoKFByZWZpeC50b1N0cmluZygnaGV4JykpKSB7XG4gICAgb2Zmc2V0ID0gUHJlZml4Lmxlbmd0aDtcbiAgfVxuXG4gIC8vIHdlIGRlY29kZSB0aGUgdmFyaW50IG9mIHRoZSBtZXNzYWdlIHdoaWNoIGlzIHVpbnQzMlxuICAvLyBodHRwczovL2VuLmJpdGNvaW4uaXQvd2lraS9Qcm90b2NvbF9kb2N1bWVudGF0aW9uXG4gIGNvbnN0IHZhckludCA9IGJ1ZmZlcnV0aWxzLnZhcnVpbnQuZGVjb2RlKG1lc3NhZ2UsIG9mZnNldCk7XG4gIGFzc2VydCh2YXJJbnQpO1xuICBvZmZzZXQgKz0gYnVmZmVydXRpbHMudmFydWludC5kZWNvZGUuYnl0ZXM7XG5cbiAgY29uc3QgZW50cm9weSA9IG1lc3NhZ2Uuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBFbnRyb3B5TGVuKTtcbiAgb2Zmc2V0ICs9IEVudHJvcHlMZW47XG4gIGNvbnN0IGFkZHJlc3MgPSBtZXNzYWdlLnN1YmFycmF5KG9mZnNldCwgbWVzc2FnZS5sZW5ndGggLSBVdWlkQnVmZmVyTGVuZ3RoKTtcbiAgb2Zmc2V0ICs9IGFkZHJlc3MubGVuZ3RoO1xuICBjb25zdCB1dWlkID0gbWVzc2FnZS5zdWJhcnJheShtZXNzYWdlLmxlbmd0aCAtIFV1aWRCdWZmZXJMZW5ndGgpO1xuXG4gIC8vIHdlIGJyZWFrIHVwIHRoZSBvcmlnaW5hbCBtZXNzYWdlIGFuZCByZXR1ZW4gdGhlIGVudHJvcHksIGFkZHJlc3MgYW5kIHV1aWQgaW4gdGhlaXIgYnVmZmVyc1xuICByZXR1cm4geyBlbnRyb3B5LCBhZGRyZXNzLCB1dWlkIH07XG59XG4iXX0=
@@ -0,0 +1,22 @@
1
+ export declare class PayGoError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class ErrorNoPayGoProof extends PayGoError {
5
+ outputIndex: number;
6
+ constructor(outputIndex: number);
7
+ }
8
+ export declare class ErrorMultiplePayGoProof extends PayGoError {
9
+ constructor();
10
+ }
11
+ export declare class ErrorPayGoAddressProofFailedVerification extends PayGoError {
12
+ constructor();
13
+ }
14
+ export declare class ErrorOutputIndexOutOfBounds extends PayGoError {
15
+ outputIndex: number;
16
+ constructor(outputIndex: number);
17
+ }
18
+ export declare class ErrorMultiplePayGoProofAtPsbtIndex extends PayGoError {
19
+ outputIndex: number;
20
+ constructor(outputIndex: number);
21
+ }
22
+ //# sourceMappingURL=Errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../../../src/paygo/psbt/Errors.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,iBAAkB,SAAQ,UAAU;IAC5B,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;CAGvC;AAED,qBAAa,uBAAwB,SAAQ,UAAU;;CAItD;AAED,qBAAa,wCAAyC,SAAQ,UAAU;;CAIvE;AAED,qBAAa,2BAA4B,SAAQ,UAAU;IACtC,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;CAGvC;AAED,qBAAa,kCAAmC,SAAQ,UAAU;IAC7C,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;CAGvC"}
@@ -0,0 +1,35 @@
1
+ export class PayGoError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = this.constructor.name;
5
+ }
6
+ }
7
+ export class ErrorNoPayGoProof extends PayGoError {
8
+ constructor(outputIndex) {
9
+ super(`There is no paygo address proof encoded in the PSBT at output ${outputIndex}.`);
10
+ this.outputIndex = outputIndex;
11
+ }
12
+ }
13
+ export class ErrorMultiplePayGoProof extends PayGoError {
14
+ constructor() {
15
+ super('There are multiple paygo address proofs encoded in the PSBT. Something went wrong.');
16
+ }
17
+ }
18
+ export class ErrorPayGoAddressProofFailedVerification extends PayGoError {
19
+ constructor() {
20
+ super('Cannot verify the paygo address signature with the provided pubkey.');
21
+ }
22
+ }
23
+ export class ErrorOutputIndexOutOfBounds extends PayGoError {
24
+ constructor(outputIndex) {
25
+ super(`Output index ${outputIndex} is out of bounds for PSBT outputs.`);
26
+ this.outputIndex = outputIndex;
27
+ }
28
+ }
29
+ export class ErrorMultiplePayGoProofAtPsbtIndex extends PayGoError {
30
+ constructor(outputIndex) {
31
+ super(`There are multiple PayGo addresses in the PSBT output ${outputIndex}.`);
32
+ this.outputIndex = outputIndex;
33
+ }
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BheWdvL3BzYnQvRXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxVQUFXLFNBQVEsS0FBSztJQUNuQyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUNwQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsVUFBVTtJQUMvQyxZQUFtQixXQUFtQjtRQUNwQyxLQUFLLENBQUMsaUVBQWlFLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFEdEUsZ0JBQVcsR0FBWCxXQUFXLENBQVE7SUFFdEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFVBQVU7SUFDckQ7UUFDRSxLQUFLLENBQUMsb0ZBQW9GLENBQUMsQ0FBQztJQUM5RixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sd0NBQXlDLFNBQVEsVUFBVTtJQUN0RTtRQUNFLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTywyQkFBNEIsU0FBUSxVQUFVO0lBQ3pELFlBQW1CLFdBQW1CO1FBQ3BDLEtBQUssQ0FBQyxnQkFBZ0IsV0FBVyxxQ0FBcUMsQ0FBQyxDQUFDO1FBRHZELGdCQUFXLEdBQVgsV0FBVyxDQUFRO0lBRXRDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxVQUFVO0lBQ2hFLFlBQW1CLFdBQW1CO1FBQ3BDLEtBQUssQ0FBQyx5REFBeUQsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUQ5RCxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtJQUV0QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUGF5R29FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvck5vUGF5R29Qcm9vZiBleHRlbmRzIFBheUdvRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3V0cHV0SW5kZXg6IG51bWJlcikge1xuICAgIHN1cGVyKGBUaGVyZSBpcyBubyBwYXlnbyBhZGRyZXNzIHByb29mIGVuY29kZWQgaW4gdGhlIFBTQlQgYXQgb3V0cHV0ICR7b3V0cHV0SW5kZXh9LmApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvck11bHRpcGxlUGF5R29Qcm9vZiBleHRlbmRzIFBheUdvRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignVGhlcmUgYXJlIG11bHRpcGxlIHBheWdvIGFkZHJlc3MgcHJvb2ZzIGVuY29kZWQgaW4gdGhlIFBTQlQuIFNvbWV0aGluZyB3ZW50IHdyb25nLicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvclBheUdvQWRkcmVzc1Byb29mRmFpbGVkVmVyaWZpY2F0aW9uIGV4dGVuZHMgUGF5R29FcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdDYW5ub3QgdmVyaWZ5IHRoZSBwYXlnbyBhZGRyZXNzIHNpZ25hdHVyZSB3aXRoIHRoZSBwcm92aWRlZCBwdWJrZXkuJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yT3V0cHV0SW5kZXhPdXRPZkJvdW5kcyBleHRlbmRzIFBheUdvRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3V0cHV0SW5kZXg6IG51bWJlcikge1xuICAgIHN1cGVyKGBPdXRwdXQgaW5kZXggJHtvdXRwdXRJbmRleH0gaXMgb3V0IG9mIGJvdW5kcyBmb3IgUFNCVCBvdXRwdXRzLmApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvck11bHRpcGxlUGF5R29Qcm9vZkF0UHNidEluZGV4IGV4dGVuZHMgUGF5R29FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvdXRwdXRJbmRleDogbnVtYmVyKSB7XG4gICAgc3VwZXIoYFRoZXJlIGFyZSBtdWx0aXBsZSBQYXlHbyBhZGRyZXNzZXMgaW4gdGhlIFBTQlQgb3V0cHV0ICR7b3V0cHV0SW5kZXh9LmApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './payGoAddressProof';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/paygo/psbt/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './payGoAddressProof';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGF5Z28vcHNidC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wYXlHb0FkZHJlc3NQcm9vZic7XG4iXX0=
@@ -0,0 +1,29 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ /** This function adds the entropy and signature into the PSBT output unknown key vals.
3
+ * We store the entropy so that we reconstruct the message <ENTROPY><ADDRESS><UUID>
4
+ * to later verify.
5
+ *
6
+ * @param psbt - PSBT that we need to encode our paygo address into
7
+ * @param outputIndex - the index of the address in our output
8
+ * @param sig - the signature that we want to encode
9
+ * @param entropy - the arbitrary entropy bytes from our vasp proof
10
+ */
11
+ export declare function addPayGoAddressProof(psbt: utxolib.bitgo.UtxoPsbt, outputIndex: number, sig: Buffer, entropy: Buffer): void;
12
+ /** Verify the paygo address signature is valid using verification pub key.
13
+ *
14
+ * @param psbt - PSBT we want to verify that the paygo address is in
15
+ * @param outputIndex - we have the output index that address is in
16
+ * @param verificationPubkey - the pubkey signed by the HSM to verify our message
17
+ * @returns
18
+ */
19
+ export declare function verifyPayGoAddressProof(psbt: utxolib.bitgo.UtxoPsbt, outputIndex: number, verificationPubkey: Buffer): void;
20
+ /** Get the output index of the paygo output if there is one. It does this by
21
+ * checking if the metadata is on one of the outputs of the PSBT. If there is
22
+ * no paygo output, return undefined
23
+ *
24
+ * @param psbt
25
+ * @returns number - the index of the output address
26
+ */
27
+ export declare function getPayGoAddressProofOutputIndex(psbt: utxolib.bitgo.UtxoPsbt): number | undefined;
28
+ export declare function psbtOutputIncludesPaygoAddressProof(psbt: utxolib.bitgo.UtxoPsbt): boolean;
29
+ //# sourceMappingURL=payGoAddressProof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payGoAddressProof.d.ts","sourceRoot":"","sources":["../../../../src/paygo/psbt/payGoAddressProof.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAchD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,IAAI,CASN;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,GACzB,IAAI,CAiCN;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,CAehG;AAED,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAEzF"}
@@ -0,0 +1,85 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import { checkForOutput } from 'bip174/src/lib/utils';
3
+ import { verifyMessage } from '../../bip32utils';
4
+ import { createPayGoAttestationBuffer } from '../attestation';
5
+ import { ErrorMultiplePayGoProof, ErrorMultiplePayGoProofAtPsbtIndex, ErrorNoPayGoProof, ErrorOutputIndexOutOfBounds, ErrorPayGoAddressProofFailedVerification, } from './Errors';
6
+ /** This function adds the entropy and signature into the PSBT output unknown key vals.
7
+ * We store the entropy so that we reconstruct the message <ENTROPY><ADDRESS><UUID>
8
+ * to later verify.
9
+ *
10
+ * @param psbt - PSBT that we need to encode our paygo address into
11
+ * @param outputIndex - the index of the address in our output
12
+ * @param sig - the signature that we want to encode
13
+ * @param entropy - the arbitrary entropy bytes from our vasp proof
14
+ */
15
+ export function addPayGoAddressProof(psbt, outputIndex, sig, entropy) {
16
+ utxolib.bitgo.addProprietaryKeyValuesFromUnknownKeyValues(psbt, 'output', outputIndex, {
17
+ key: {
18
+ identifier: utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER,
19
+ subtype: utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF,
20
+ keydata: entropy,
21
+ },
22
+ value: sig,
23
+ });
24
+ }
25
+ /** Verify the paygo address signature is valid using verification pub key.
26
+ *
27
+ * @param psbt - PSBT we want to verify that the paygo address is in
28
+ * @param outputIndex - we have the output index that address is in
29
+ * @param verificationPubkey - the pubkey signed by the HSM to verify our message
30
+ * @returns
31
+ */
32
+ export function verifyPayGoAddressProof(psbt, outputIndex, verificationPubkey) {
33
+ const psbtOutputs = checkForOutput(psbt.data.outputs, outputIndex);
34
+ const stored = utxolib.bitgo.getProprietaryKeyValuesFromUnknownKeyValues(psbtOutputs, {
35
+ identifier: utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER,
36
+ subtype: utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF,
37
+ });
38
+ // assert stored length is 0 or 1
39
+ if (stored.length === 0) {
40
+ throw new ErrorNoPayGoProof(outputIndex);
41
+ }
42
+ else if (stored.length > 1) {
43
+ throw new ErrorMultiplePayGoProof();
44
+ }
45
+ // We get the signature and entropy from our PSBT unknown key vals
46
+ const signature = stored[0].value;
47
+ const entropy = stored[0].key.keydata;
48
+ // Get the the PayGo address from the txOutputs
49
+ const txOutputs = psbt.txOutputs;
50
+ if (outputIndex >= txOutputs.length) {
51
+ throw new ErrorOutputIndexOutOfBounds(outputIndex);
52
+ }
53
+ const output = txOutputs[outputIndex];
54
+ const addressFromOutput = utxolib.address.fromOutputScript(output.script, psbt.network);
55
+ // We construct our message <ENTROPY><ADDRESS><UUID>
56
+ const message = createPayGoAttestationBuffer(addressFromOutput, entropy, psbt.network);
57
+ // bip32utils.verifyMessage now takes in message as a Buffer
58
+ if (!verifyMessage(message, verificationPubkey, signature, utxolib.networks.bitcoin)) {
59
+ throw new ErrorPayGoAddressProofFailedVerification();
60
+ }
61
+ }
62
+ /** Get the output index of the paygo output if there is one. It does this by
63
+ * checking if the metadata is on one of the outputs of the PSBT. If there is
64
+ * no paygo output, return undefined
65
+ *
66
+ * @param psbt
67
+ * @returns number - the index of the output address
68
+ */
69
+ export function getPayGoAddressProofOutputIndex(psbt) {
70
+ const res = psbt.data.outputs.flatMap((output, outputIndex) => {
71
+ const proprietaryKeyVals = utxolib.bitgo.getPsbtOutputProprietaryKeyVals(output, {
72
+ identifier: utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER,
73
+ subtype: utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF,
74
+ });
75
+ if (proprietaryKeyVals.length > 1) {
76
+ throw new ErrorMultiplePayGoProofAtPsbtIndex(outputIndex);
77
+ }
78
+ return proprietaryKeyVals.length === 0 ? [] : [outputIndex];
79
+ });
80
+ return res.length === 0 ? undefined : res[0];
81
+ }
82
+ export function psbtOutputIncludesPaygoAddressProof(psbt) {
83
+ return getPayGoAddressProofOutputIndex(psbt) !== undefined;
84
+ }
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5R29BZGRyZXNzUHJvb2YuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGF5Z28vcHNidC9wYXlHb0FkZHJlc3NQcm9vZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixrQ0FBa0MsRUFDbEMsaUJBQWlCLEVBQ2pCLDJCQUEyQixFQUMzQix3Q0FBd0MsR0FDekMsTUFBTSxVQUFVLENBQUM7QUFFbEI7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLElBQTRCLEVBQzVCLFdBQW1CLEVBQ25CLEdBQVcsRUFDWCxPQUFlO0lBRWYsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtRQUNyRixHQUFHLEVBQUU7WUFDSCxVQUFVLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkI7WUFDckQsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsK0JBQStCO1lBQzVFLE9BQU8sRUFBRSxPQUFPO1NBQ2pCO1FBQ0QsS0FBSyxFQUFFLEdBQUc7S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxJQUE0QixFQUM1QixXQUFtQixFQUNuQixrQkFBMEI7SUFFMUIsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ25F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Y2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IGNoZWNrRm9yT3V0cHV0IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvdXRpbHMnO1xuXG5pbXBvcnQgeyB2ZXJpZnlNZXNzYWdlIH0gZnJvbSAnLi4vLi4vYmlwMzJ1dGlscyc7XG5pbXBvcnQgeyBjcmVhdGVQYXlHb0F0dGVzdGF0aW9uQnVmZmVyIH0gZnJvbSAnLi4vYXR0ZXN0YXRpb24nO1xuXG5pbXBvcnQge1xuICBFcnJvck11bHRpcGxlUGF5R29Qcm9vZixcbiAgRXJyb3JNdWx0aXBsZVBheUdvUHJvb2ZBdFBzYnRJbmRleCxcbiAgRXJyb3JOb1BheUdvUHJvb2YsXG4gIEVycm9yT3V0cHV0SW5kZXhPdXRPZkJvdW5kcyxcbiAgRXJyb3JQYXlHb0FkZHJlc3NQcm9vZkZhaWxlZFZlcmlmaWNhdGlvbixcbn0gZnJvbSAnLi9FcnJvcnMnO1xuXG4vKiogVGhpcyBmdW5jdGlvbiBhZGRzIHRoZSBlbnRyb3B5IGFuZCBzaWduYXR1cmUgaW50byB0aGUgUFNCVCBvdXRwdXQgdW5rbm93biBrZXkgdmFscy5cbiAqIFdlIHN0b3JlIHRoZSBlbnRyb3B5IHNvIHRoYXQgd2UgcmVjb25zdHJ1Y3QgdGhlIG1lc3NhZ2UgPEVOVFJPUFk+PEFERFJFU1M+PFVVSUQ+XG4gKiB0byBsYXRlciB2ZXJpZnkuXG4gKlxuICogQHBhcmFtIHBzYnQgLSBQU0JUIHRoYXQgd2UgbmVlZCB0byBlbmNvZGUgb3VyIHBheWdvIGFkZHJlc3MgaW50b1xuICogQHBhcmFtIG91dHB1dEluZGV4IC0gdGhlIGluZGV4IG9mIHRoZSBhZGRyZXNzIGluIG91ciBvdXRwdXRcbiAqIEBwYXJhbSBzaWcgLSB0aGUgc2lnbmF0dXJlIHRoYXQgd2Ugd2FudCB0byBlbmNvZGVcbiAqIEBwYXJhbSBlbnRyb3B5IC0gdGhlIGFyYml0cmFyeSBlbnRyb3B5IGJ5dGVzIGZyb20gb3VyIHZhc3AgcHJvb2ZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFBheUdvQWRkcmVzc1Byb29mKFxuICBwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0LFxuICBvdXRwdXRJbmRleDogbnVtYmVyLFxuICBzaWc6IEJ1ZmZlcixcbiAgZW50cm9weTogQnVmZmVyXG4pOiB2b2lkIHtcbiAgdXR4b2xpYi5iaXRnby5hZGRQcm9wcmlldGFyeUtleVZhbHVlc0Zyb21Vbmtub3duS2V5VmFsdWVzKHBzYnQsICdvdXRwdXQnLCBvdXRwdXRJbmRleCwge1xuICAgIGtleToge1xuICAgICAgaWRlbnRpZmllcjogdXR4b2xpYi5iaXRnby5QU0JUX1BST1BSSUVUQVJZX0lERU5USUZJRVIsXG4gICAgICBzdWJ0eXBlOiB1dHhvbGliLmJpdGdvLlByb3ByaWV0YXJ5S2V5U3VidHlwZS5QQVlHT19BRERSRVNTX0FUVEVTVEFUSU9OX1BST09GLFxuICAgICAga2V5ZGF0YTogZW50cm9weSxcbiAgICB9LFxuICAgIHZhbHVlOiBzaWcsXG4gIH0pO1xufVxuXG4vKiogVmVyaWZ5IHRoZSBwYXlnbyBhZGRyZXNzIHNpZ25hdHVyZSBpcyB2YWxpZCB1c2luZyB2ZXJpZmljYXRpb24gcHViIGtleS5cbiAqXG4gKiBAcGFyYW0gcHNidCAtIFBTQlQgd2Ugd2FudCB0byB2ZXJpZnkgdGhhdCB0aGUgcGF5Z28gYWRkcmVzcyBpcyBpblxuICogQHBhcmFtIG91dHB1dEluZGV4IC0gd2UgaGF2ZSB0aGUgb3V0cHV0IGluZGV4IHRoYXQgYWRkcmVzcyBpcyBpblxuICogQHBhcmFtIHZlcmlmaWNhdGlvblB1YmtleSAtIHRoZSBwdWJrZXkgc2lnbmVkIGJ5IHRoZSBIU00gdG8gdmVyaWZ5IG91ciBtZXNzYWdlXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5UGF5R29BZGRyZXNzUHJvb2YoXG4gIHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsXG4gIG91dHB1dEluZGV4OiBudW1iZXIsXG4gIHZlcmlmaWNhdGlvblB1YmtleTogQnVmZmVyXG4pOiB2b2lkIHtcbiAgY29uc3QgcHNidE91dHB1dHMgPSBjaGVja0Zvck91dHB1dChwc2J0LmRhdGEub3V0cHV0cywgb3V0cHV0SW5kZXgpO1xuICBjb25zdCBzdG9yZWQgPSB1dHhvbGliLmJpdGdvLmdldFByb3ByaWV0YXJ5S2V5VmFsdWVzRnJvbVVua25vd25LZXlWYWx1ZXMocHNidE91dHB1dHMsIHtcbiAgICBpZGVudGlmaWVyOiB1dHhvbGliLmJpdGdvLlBTQlRfUFJPUFJJRVRBUllfSURFTlRJRklFUixcbiAgICBzdWJ0eXBlOiB1dHhvbGliLmJpdGdvLlByb3ByaWV0YXJ5S2V5U3VidHlwZS5QQVlHT19BRERSRVNTX0FUVEVTVEFUSU9OX1BST09GLFxuICB9KTtcblxuICAvLyBhc3NlcnQgc3RvcmVkIGxlbmd0aCBpcyAwIG9yIDFcbiAgaWYgKHN0b3JlZC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3JOb1BheUdvUHJvb2Yob3V0cHV0SW5kZXgpO1xuICB9IGVsc2UgaWYgKHN0b3JlZC5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yTXVsdGlwbGVQYXlHb1Byb29mKCk7XG4gIH1cblxuICAvLyBXZSBnZXQgdGhlIHNpZ25hdHVyZSBhbmQgZW50cm9weSBmcm9tIG91ciBQU0JUIHVua25vd24ga2V5IHZhbHNcbiAgY29uc3Qgc2lnbmF0dXJlID0gc3RvcmVkWzBdLnZhbHVlO1xuICBjb25zdCBlbnRyb3B5ID0gc3RvcmVkWzBdLmtleS5rZXlkYXRhO1xuXG4gIC8vIEdldCB0aGUgdGhlIFBheUdvIGFkZHJlc3MgZnJvbSB0aGUgdHhPdXRwdXRzXG4gIGNvbnN0IHR4T3V0cHV0cyA9IHBzYnQudHhPdXRwdXRzO1xuICBpZiAob3V0cHV0SW5kZXggPj0gdHhPdXRwdXRzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvck91dHB1dEluZGV4T3V0T2ZCb3VuZHMob3V0cHV0SW5kZXgpO1xuICB9XG4gIGNvbnN0IG91dHB1dCA9IHR4T3V0cHV0c1tvdXRwdXRJbmRleF07XG4gIGNvbnN0IGFkZHJlc3NGcm9tT3V0cHV0ID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQob3V0cHV0LnNjcmlwdCwgcHNidC5uZXR3b3JrKTtcblxuICAvLyBXZSBjb25zdHJ1Y3Qgb3VyIG1lc3NhZ2UgPEVOVFJPUFk+PEFERFJFU1M+PFVVSUQ+XG4gIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVQYXlHb0F0dGVzdGF0aW9uQnVmZmVyKGFkZHJlc3NGcm9tT3V0cHV0LCBlbnRyb3B5LCBwc2J0Lm5ldHdvcmspO1xuXG4gIC8vIGJpcDMydXRpbHMudmVyaWZ5TWVzc2FnZSBub3cgdGFrZXMgaW4gbWVzc2FnZSBhcyBhIEJ1ZmZlclxuICBpZiAoIXZlcmlmeU1lc3NhZ2UobWVzc2FnZSwgdmVyaWZpY2F0aW9uUHVia2V5LCBzaWduYXR1cmUsIHV0eG9saWIubmV0d29ya3MuYml0Y29pbikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3JQYXlHb0FkZHJlc3NQcm9vZkZhaWxlZFZlcmlmaWNhdGlvbigpO1xuICB9XG59XG5cbi8qKiBHZXQgdGhlIG91dHB1dCBpbmRleCBvZiB0aGUgcGF5Z28gb3V0cHV0IGlmIHRoZXJlIGlzIG9uZS4gSXQgZG9lcyB0aGlzIGJ5XG4gKiBjaGVja2luZyBpZiB0aGUgbWV0YWRhdGEgaXMgb24gb25lIG9mIHRoZSBvdXRwdXRzIG9mIHRoZSBQU0JULiBJZiB0aGVyZSBpc1xuICogbm8gcGF5Z28gb3V0cHV0LCByZXR1cm4gdW5kZWZpbmVkXG4gKlxuICogQHBhcmFtIHBzYnRcbiAqIEByZXR1cm5zIG51bWJlciAtIHRoZSBpbmRleCBvZiB0aGUgb3V0cHV0IGFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBheUdvQWRkcmVzc1Byb29mT3V0cHV0SW5kZXgocHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlcyA9IHBzYnQuZGF0YS5vdXRwdXRzLmZsYXRNYXAoKG91dHB1dCwgb3V0cHV0SW5kZXgpID0+IHtcbiAgICBjb25zdCBwcm9wcmlldGFyeUtleVZhbHMgPSB1dHhvbGliLmJpdGdvLmdldFBzYnRPdXRwdXRQcm9wcmlldGFyeUtleVZhbHMob3V0cHV0LCB7XG4gICAgICBpZGVudGlmaWVyOiB1dHhvbGliLmJpdGdvLlBTQlRfUFJPUFJJRVRBUllfSURFTlRJRklFUixcbiAgICAgIHN1YnR5cGU6IHV0eG9saWIuYml0Z28uUHJvcHJpZXRhcnlLZXlTdWJ0eXBlLlBBWUdPX0FERFJFU1NfQVRURVNUQVRJT05fUFJPT0YsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHJpZXRhcnlLZXlWYWxzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvck11bHRpcGxlUGF5R29Qcm9vZkF0UHNidEluZGV4KG91dHB1dEluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHJpZXRhcnlLZXlWYWxzLmxlbmd0aCA9PT0gMCA/IFtdIDogW291dHB1dEluZGV4XTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlcy5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiByZXNbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwc2J0T3V0cHV0SW5jbHVkZXNQYXlnb0FkZHJlc3NQcm9vZihwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0KTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRQYXlHb0FkZHJlc3NQcm9vZk91dHB1dEluZGV4KHBzYnQpICE9PSB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -0,0 +1,13 @@
1
+ import { BIP32Interface } from '@bitgo-beta/secp256k1';
2
+ import { Miniscript, Descriptor, ast } from '@bitgo/wasm-utxo';
3
+ import { DescriptorMap, PsbtParams } from '../../descriptor';
4
+ import { Triple, KeyTriple } from '../key.utils';
5
+ export declare function getDefaultXPubs(seed?: string): Triple<string>;
6
+ export declare function getUnspendableKey(): string;
7
+ export type DescriptorTemplate = 'Wsh2Of3' | 'Tr1Of3-NoKeyPath-Tree' | 'Tr1Of3-NoKeyPath-Tree-Plain' | 'Tr2Of3-NoKeyPath' | 'Wsh2Of2' | 'Wsh2Of3CltvDrop';
8
+ export declare function getPsbtParams(t: DescriptorTemplate): Partial<PsbtParams>;
9
+ export declare function containsKey(script: Miniscript | ast.MiniscriptNode, key: BIP32Interface | string): boolean;
10
+ export declare function getTapLeafScripts(d: Descriptor): string[];
11
+ export declare function getDescriptor(template: DescriptorTemplate, keys?: KeyTriple | string[], path?: string): Descriptor;
12
+ export declare function getDescriptorMap(template: DescriptorTemplate, keys?: KeyTriple | string[]): DescriptorMap;
13
+ //# sourceMappingURL=descriptors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"descriptors.d.ts","sourceRoot":"","sources":["../../../../src/testutil/descriptor/descriptors.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAgB,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/D,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAE7D;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAsB1C;AAMD,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,uBAAuB,GAEvB,6BAA6B,GAC7B,kBAAkB,GAClB,SAAS,GAMT,iBAAiB,CAAC;AAkCtB,wBAAgB,aAAa,CAAC,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAOxE;AAuED,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,GAAG,CAAC,cAAc,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM,GAAG,OAAO,CAQ1G;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,CAIzD;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE,SAAS,GAAG,MAAM,EAAsB,EAC9C,IAAI,SAAQ,GACX,UAAU,CAEZ;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE,SAAS,GAAG,MAAM,EAAsB,GAC7C,aAAa,CAKf"}
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVzdHV0aWwvZGVzY3JpcHRvci9kZXNjcmlwdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLEtBQUssRUFBa0IsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUcvRCxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLGNBQWMsQ0FBQztBQUUvRCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQWE7SUFDM0MsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQW1CLENBQUM7QUFDbEYsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUI7SUFDL0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFtQkU7SUFDRixPQUFPLGtFQUFrRSxDQUFDO0FBQzVFLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxDQUF5QjtJQUNoRCxPQUFPLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hHLENBQUM7QUFnQkQsU0FBUyxNQUFNLENBQUMsQ0FBMEIsRUFBRSxJQUFZO0lBQ3RELElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUIsT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFH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QUFLO0lBRVosT0FBTyxVQUFVLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixRQUE0QixFQUM1QixPQUE2QixlQUFlLEVBQUU7SUFFOUMsT0FBTyxlQUFlLENBQUM7UUFDckIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRTtRQUN6RCxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFO0tBQzFELENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IGJpcDMyLCBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBNaW5pc2NyaXB0LCBEZXNjcmlwdG9yLCBhc3QgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgRGVzY3JpcHRvck1hcCwgUHNidFBhcmFtcyB9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZ2V0S2V5VHJpcGxlLCBUcmlwbGUsIEtleVRyaXBsZSB9IGZyb20gJy4uL2tleS51dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0WFB1YnMoc2VlZD86IHN0cmluZyk6IFRyaXBsZTxzdHJpbmc+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