@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,71 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const assert_1 = __importDefault(require("assert"));
7
+ const VirtualSize_1 = require("../../../src/descriptor/VirtualSize");
8
+ const descriptor_1 = require("../../../src/testutil/descriptor");
9
+ const testutil_1 = require("../../../src/testutil");
10
+ const descriptor_2 = require("../../../src/descriptor");
11
+ describe('VirtualSize', function () {
12
+ describe('getInputVSizesForDescriptorWallet', function () {
13
+ it('returns the input virtual sizes for a descriptor wallet', function () {
14
+ assert_1.default.deepStrictEqual((0, VirtualSize_1.getInputVSizesForDescriptors)(new Map([
15
+ ['foo', (0, descriptor_1.getDescriptor)('Wsh2Of2')],
16
+ ['bar', (0, descriptor_1.getDescriptor)('Wsh2Of2')],
17
+ ])), {
18
+ foo: 96,
19
+ bar: 96,
20
+ });
21
+ assert_1.default.deepStrictEqual((0, VirtualSize_1.getInputVSizesForDescriptors)((0, descriptor_1.getDescriptorMap)('Wsh2Of3')), {
22
+ external: 105,
23
+ internal: 105,
24
+ });
25
+ });
26
+ });
27
+ describe('getChangeOutputVSizesForDescriptor', function () {
28
+ it('returns the output virtual sizes for a descriptor', function () {
29
+ assert_1.default.deepStrictEqual((0, VirtualSize_1.getChangeOutputVSizesForDescriptor)((0, descriptor_1.getDescriptor)('Wsh2Of2')), {
30
+ inputVSize: 96,
31
+ outputVSize: 34,
32
+ });
33
+ });
34
+ });
35
+ function describeWithTemplate(t, inputSize, outputSize) {
36
+ describe(`getVirtualSize ${t}`, function () {
37
+ it('returns expected virtual size', function () {
38
+ assert_1.default.deepStrictEqual((0, VirtualSize_1.getVirtualSize)({
39
+ inputs: [{ descriptorName: 'internal' }],
40
+ outputs: [{ script: Buffer.alloc(34) }],
41
+ }, (0, descriptor_1.getDescriptorMap)(t)), inputSize + outputSize + 11);
42
+ const descriptor = (0, descriptor_1.getDescriptor)(t);
43
+ const nInputs = 10000;
44
+ assert_1.default.deepStrictEqual((0, VirtualSize_1.getVirtualSize)({
45
+ /* as proof we can pass 10_000 inputs */
46
+ inputs: Array.from({ length: nInputs }).map(() => descriptor),
47
+ outputs: [],
48
+ }), inputSize * nInputs + 11);
49
+ });
50
+ });
51
+ describe(`getVirtualSizeForPsbt ${t}`, function () {
52
+ const keys = (0, testutil_1.getKeyTriple)('a');
53
+ const descriptorSelf = (0, descriptor_1.getDescriptor)(t, keys.map((k) => k.neutered().toBase58()));
54
+ const descriptorOther = (0, descriptor_1.getDescriptor)(t, (0, descriptor_1.getDefaultXPubs)('b'));
55
+ it('returns expected virtual size', function () {
56
+ const psbt = (0, descriptor_1.mockPsbtDefault)({ descriptorSelf, descriptorOther });
57
+ const descriptorMap = new Map([['internal', descriptorSelf]]);
58
+ const expectedVirtualSize = inputSize * 2 + outputSize * 2 + 11;
59
+ assert_1.default.deepStrictEqual((0, VirtualSize_1.getVirtualSizeEstimateForPsbt)(psbt, descriptorMap), expectedVirtualSize);
60
+ psbt.signAllInputsHD(keys[0]);
61
+ psbt.signAllInputsHD(keys[1]);
62
+ (0, descriptor_2.finalizePsbt)(psbt);
63
+ // TODO(BTC-1797): figure out why we overestimate by 1
64
+ assert_1.default.strictEqual(psbt.extractTransaction().virtualSize(), expectedVirtualSize - 1);
65
+ });
66
+ });
67
+ }
68
+ describeWithTemplate('Wsh2Of3', 105, 43);
69
+ describeWithTemplate('Tr2Of3-NoKeyPath', 109, 43);
70
+ });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlydHVhbFNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L2Rlc2NyaXB0b3IvcHNidC9WaXJ0dWFsU2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUU1QixxRUFLNkM7QUFDN0MsaUVBTTBDO0FBQzFDLG9EQUFxRDtBQUNyRCx3REFBdUQ7QUFFdkQsUUFBUSxDQUFDLGFBQWEsRUFBRTtJQUN0QixRQUFRLENBQUMsbUNBQW1DLEVBQUU7UUFDNUMsRUFBRSxDQUFDLHlEQUF5RCxFQUFFO1lBQzVELGdCQUFNLENBQUMsZUFBZSxDQUNwQixJQUFBLDBDQUE0QixFQUMxQixJQUFJLEdBQUcsQ0FBQztnQkFDTixDQUFDLEtBQUssRUFBRSxJQUFBLDBCQUFhLEVBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2pDLENBQUMsS0FBSyxFQUFFLElBQUEsMEJBQWEsRUFBQyxTQUFTLENBQUMsQ0FBQzthQUNsQyxDQUFDLENBQ0gsRUFDRDtnQkFDRSxHQUFHLEVBQUUsRUFBRTtnQkFDUCxHQUFHLEVBQUUsRUFBRTthQUNSLENBQ0YsQ0FBQztZQUNGLGdCQUFNLENBQUMsZUFBZSxDQUFDLElBQUEsMENBQTRCLEVBQUMsSUFBQSw2QkFBZ0IsRUFBQyxTQUFTLENBQUMsQ0FBQyxFQUFFO2dCQUNoRixRQUFRLEVBQUUsR0FBRztnQkFDYixRQUFRLEVBQUUsR0FBRzthQUNkLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsb0NBQW9DLEVBQUU7UUFDN0MsRUFBRSxDQUFDLG1EQUFtRCxFQUFFO1lBQ3RELGdCQUFNLENBQUMsZUFBZSxDQUFDLElBQUEsZ0RBQWtDLEVBQUMsSUFBQSwwQkFBYSxFQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25GLFVBQVUsRUFBRSxFQUFFO2dCQUNkLFdBQVcsRUFBRSxFQUFFO2FBQ2hCLENB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LENBQUMsQ0FBQztJQUN6QyxvQkFBb0IsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7XG4gIGdldENoYW5nZU91dHB1dFZTaXplc0ZvckRlc2NyaXB0b3IsXG4gIGdldElucHV0VlNpemVzRm9yRGVzY3JpcHRvcnMsXG4gIGdldFZpcnR1YWxTaXplLFxuICBnZXRWaXJ0dWFsU2l6ZUVzdGltYXRlRm9yUHNidCxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvVmlydHVhbFNpemUnO1xuaW1wb3J0IHtcbiAgRGVzY3JpcHRvclRlbXBsYXRlLFxuICBnZXREZWZhdWx0WFB1YnMsXG4gIGdldERlc2NyaXB0b3IsXG4gIGdldERlc2NyaXB0b3JNYXAsXG4gIG1vY2tQc2J0RGVmYXVsdCxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZ2V0S2V5VHJpcGxlIH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsJztcbmltcG9ydCB7IGZpbmFsaXplUHNidCB9IGZyb20gJy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yJztcblxuZGVzY3JpYmUoJ1ZpcnR1YWxTaXplJywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnZ2V0SW5wdXRWU2l6ZXNGb3JEZXNjcmlwdG9yV2FsbGV0JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdyZXR1cm5zIHRoZSBpbnB1dCB2aXJ0dWFsIHNpemVzIGZvciBhIGRlc2NyaXB0b3Igd2FsbGV0JywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChcbiAgICAgICAgZ2V0SW5wdXRWU2l6ZXNGb3JEZXNjcmlwdG9ycyhcbiAgICAgICAgICBuZXcgTWFwKFtcbiAgICAgICAgICAgIFsnZm9vJywgZ2V0RGVzY3JpcHRvcignV3NoMk9mMicpXSxcbiAgICAgICAgICAgIFsnYmFyJywgZ2V0RGVzY3JpcHRvcignV3NoMk9mMicpXSxcbiAgICAgICAgICBdKVxuICAgICAgICApLFxuICAgICAgICB7XG4gICAgICAgICAgZm9vOiA5NixcbiAgICAgICAgICBiYXI6IDk2LFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChnZXRJbnB1dFZTaXplc0ZvckRlc2NyaXB0b3JzKGdldERlc2NyaXB0b3JNYXAoJ1dzaDJPZjMnKSksIHtcbiAgICAgICAgZXh0ZXJuYWw6IDEwNSxcbiAgICAgICAgaW50ZXJuYWw6IDEwNSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0Q2hhbmdlT3V0cHV0VlNpemVzRm9yRGVzY3JpcHRvcicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgncmV0dXJucyB0aGUgb3V0cHV0IHZpcnR1YWwgc2l6ZXMgZm9yIGEgZGVzY3JpcHRvcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZ2V0Q2hhbmdlT3V0cHV0VlNpemVzRm9yRGVzY3JpcHRvcihnZXREZXNjcmlwdG9yKCdXc2gyT2YyJykpLCB7XG4gICAgICAgIGlucHV0VlNpemU6IDk2LFxuICAgICAgICBvdXRwdXRWU2l6ZTogMzQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gZGVzY3JpYmVXaXRoVGVtcGxhdGUodDogRGVzY3JpcHRvclRlbXBsYXRlLCBpbnB1dFNpemU6IG51bWJlciwgb3V0cHV0U2l6ZTogbnVtYmVyKSB7XG4gICAgZGVzY3JpYmUoYGdldFZpcnR1YWxTaXplICR7dH1gLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgncmV0dXJucyBleHBlY3RlZCB2aXJ0dWFsIHNpemUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoXG4gICAgICAgICAgZ2V0VmlydHVhbFNpemUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlucHV0czogW3sgZGVzY3JpcHRvck5hbWU6ICdpbnRlcm5hbCcgfV0sXG4gICAgICAgICAgICAgIG91dHB1dHM6IFt7IHNjcmlwdDogQnVmZmVyLmFsbG9jKDM0KSB9XSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXREZXNjcmlwdG9yTWFwKHQpXG4gICAgICAgICAgKSxcbiAgICAgICAgICBpbnB1dFNpemUgKyBvdXRwdXRTaXplICsgMTFcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gZ2V0RGVzY3JpcHRvcih0KTtcblxuICAgICAgICBjb25zdCBuSW5wdXRzID0gMTBfMDAwO1xuICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKFxuICAgICAgICAgIGdldFZpcnR1YWxTaXplKHtcbiAgICAgICAgICAgIC8qIGFzIHByb29mIHdlIGNhbiBwYXNzIDEwXzAwMCBpbnB1dHMgKi9cbiAgICAgICAgICAgIGlucHV0czogQXJyYXkuZnJvbSh7IGxlbmd0aDogbklucHV0cyB9KS5tYXAoKCkgPT4gZGVzY3JpcHRvciksXG4gICAgICAgICAgICBvdXRwdXRzOiBbXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBpbnB1dFNpemUgKiBuSW5wdXRzICsgMTFcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoYGdldFZpcnR1YWxTaXplRm9yUHNidCAke3R9YCwgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qga2V5cyA9IGdldEtleVRyaXBsZSgnYScpO1xuICAgICAgY29uc3QgZGVzY3JpcHRvclNlbGYgPSBnZXREZXNjcmlwdG9yKFxuICAgICAgICB0LFxuICAgICAgICBrZXlzLm1hcCgoaykgPT4gay5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkpXG4gICAgICApO1xuICAgICAgY29uc3QgZGVzY3JpcHRvck90aGVyID0gZ2V0RGVzY3JpcHRvcih0LCBnZXREZWZhdWx0WFB1YnMoJ2InKSk7XG4gICAgICBpdCgncmV0dXJucyBleHBlY3RlZCB2aXJ0dWFsIHNpemUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHBzYnQgPSBtb2NrUHNidERlZmF1bHQoeyBkZXNjcmlwdG9yU2VsZiwgZGVzY3JpcHRvck90aGVyIH0pO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yTWFwID0gbmV3IE1hcChbWydpbnRlcm5hbCcsIGRlc2NyaXB0b3JTZWxmXV0pO1xuICAgICAgICBjb25zdCBleHBlY3RlZFZpcnR1YWxTaXplID0gaW5wdXRTaXplICogMiArIG91dHB1dFNpemUgKiAyICsgMTE7XG4gICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZ2V0VmlydHVhbFNpemVFc3RpbWF0ZUZvclBzYnQocHNidCwgZGVzY3JpcHRvck1hcCksIGV4cGVjdGVkVmlydHVhbFNpemUpO1xuICAgICAgICBwc2J0LnNpZ25BbGxJbnB1dHNIRChrZXlzWzBdKTtcbiAgICAgICAgcHNidC5zaWduQWxsSW5wdXRzSEQoa2V5c1sxXSk7XG4gICAgICAgIGZpbmFsaXplUHNidChwc2J0KTtcbiAgICAgICAgLy8gVE9ETyhCVEMtMTc5Nyk6IGZpZ3VyZSBvdXQgd2h5IHdlIG92ZXJlc3RpbWF0ZSBieSAxXG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwc2J0LmV4dHJhY3RUcmFuc2FjdGlvbigpLnZpcnR1YWxTaXplKCksIGV4cGVjdGVkVmlydHVhbFNpemUgLSAxKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZGVzY3JpYmVXaXRoVGVtcGxhdGUoJ1dzaDJPZjMnLCAxMDUsIDQzKTtcbiAgZGVzY3JpYmVXaXRoVGVtcGxhdGUoJ1RyMk9mMy1Ob0tleVBhdGgnLCAxMDksIDQzKTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=assertSatisfiable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertSatisfiable.d.ts","sourceRoot":"","sources":["../../../../../test/descriptor/psbt/assertSatisfiable.ts"],"names":[],"mappings":""}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const assert = __importStar(require("assert"));
37
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
38
+ const descriptor_1 = require("../../../src/testutil/descriptor");
39
+ const descriptor_2 = require("../../../src/descriptor");
40
+ function d(s) {
41
+ return wasm_utxo_1.Descriptor.fromString(s, 'derivable');
42
+ }
43
+ describe('assertSatisfiable', function () {
44
+ describe('getRequiredLocktime', function () {
45
+ const xpubs = (0, descriptor_1.getDefaultXPubs)();
46
+ it('has expected result', function () {
47
+ // OP_DROP
48
+ assert.strictEqual((0, descriptor_2.getRequiredLocktime)(d(`wsh(and_v(r:after(100),pk(${xpubs[0]})))`)), 100);
49
+ // OP_VERIFY
50
+ assert.strictEqual((0, descriptor_2.getRequiredLocktime)(d(`wsh(and_v(v:after(100),pk(${xpubs[0]})))`)), 100);
51
+ // no locktime at all
52
+ assert.strictEqual((0, descriptor_2.getRequiredLocktime)(d(`wsh(pk(${xpubs[0]}))`)), undefined);
53
+ });
54
+ });
55
+ });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0U2F0aXNmaWFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L2Rlc2NyaXB0b3IvcHNidC9hc3NlcnRTYXRpc2ZpYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUVqQyxnREFBOEM7QUFFOUMsaUVBQW1FO0FBQ25FLHdEQUE4RDtBQUU5RCxTQUFTLENBQUMsQ0FBQyxDQUFTO0lBQ2xCLE9BQU8sc0JBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxRQUFRLENBQUMsbUJBQW1CLEVBQUU7SUFDNUIsUUFBUSxDQUFDLHFCQUFxQixFQUFFO1FBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUEsNEJBQWUsR0FBRSxDQUFDO1FBQ2hDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRTtZQUN4QixVQUFVO1lBQ1YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLGdDQUFtQixFQUFDLENBQUMsQ0FBQyw2QkFBNkIsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVGLFlBQVk7WUFDWixNQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsZ0NBQW1CLEVBQUMsQ0FBQyxDQUFDLDZCQUE2QixLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUYscUJBQXFCO1lBQ3JCLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBQSxnQ0FBbUIsRUFBQyxDQUFDLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgZ2V0RGVmYXVsdFhQdWJzIH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZ2V0UmVxdWlyZWRMb2NrdGltZSB9IGZyb20gJy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yJztcblxuZnVuY3Rpb24gZChzOiBzdHJpbmcpOiBEZXNjcmlwdG9yIHtcbiAgcmV0dXJuIERlc2NyaXB0b3IuZnJvbVN0cmluZyhzLCAnZGVyaXZhYmxlJyk7XG59XG5cbmRlc2NyaWJlKCdhc3NlcnRTYXRpc2ZpYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ2dldFJlcXVpcmVkTG9ja3RpbWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgeHB1YnMgPSBnZXREZWZhdWx0WFB1YnMoKTtcbiAgICBpdCgnaGFzIGV4cGVjdGVkIHJlc3VsdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIE9QX0RST1BcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRSZXF1aXJlZExvY2t0aW1lKGQoYHdzaChhbmRfdihyOmFmdGVyKDEwMCkscGsoJHt4cHVic1swXX0pKSlgKSksIDEwMCk7XG4gICAgICAvLyBPUF9WRVJJRllcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRSZXF1aXJlZExvY2t0aW1lKGQoYHdzaChhbmRfdih2OmFmdGVyKDEwMCkscGsoJHt4cHVic1swXX0pKSlgKSksIDEwMCk7XG4gICAgICAvLyBubyBsb2NrdGltZSBhdCBhbGxcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRSZXF1aXJlZExvY2t0aW1lKGQoYHdzaChwaygke3hwdWJzWzBdfSkpYCkpLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=findDescriptors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findDescriptors.d.ts","sourceRoot":"","sources":["../../../../../test/descriptor/psbt/findDescriptors.ts"],"names":[],"mappings":""}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const assert = __importStar(require("assert"));
37
+ const descriptor_1 = require("../../../src/testutil/descriptor");
38
+ const descriptor_2 = require("../../../src/descriptor");
39
+ function describeWithTemplates(templateSelf, templateOther) {
40
+ describe(`parsePsbt [${templateSelf},${templateOther}]`, function () {
41
+ const descriptorA = (0, descriptor_1.getDescriptor)(templateSelf, (0, descriptor_1.getDefaultXPubs)('a'));
42
+ const descriptorB = (0, descriptor_1.getDescriptor)(templateOther, (0, descriptor_1.getDefaultXPubs)('b'));
43
+ const descriptorMap = new Map([
44
+ ['a', descriptorA],
45
+ ['b', descriptorB],
46
+ ]);
47
+ it('finds descriptors for PSBT inputs/outputs', function () {
48
+ const psbt = (0, descriptor_1.mockPsbt)([
49
+ { descriptor: descriptorA, index: 0 },
50
+ { descriptor: descriptorB, index: 1, id: { vout: 1 } },
51
+ ], [{ descriptor: descriptorA, index: 2, value: BigInt(1e6) }]);
52
+ assert.deepStrictEqual((0, descriptor_2.findDescriptorForInput)(psbt.data.inputs[0], descriptorMap), {
53
+ descriptor: descriptorA,
54
+ index: 0,
55
+ });
56
+ assert.deepStrictEqual((0, descriptor_2.findDescriptorForInput)(psbt.data.inputs[1], descriptorMap), {
57
+ descriptor: descriptorB,
58
+ index: 1,
59
+ });
60
+ assert.deepStrictEqual((0, descriptor_2.findDescriptorForOutput)(psbt.txOutputs[0].script, psbt.data.outputs[0], descriptorMap), {
61
+ descriptor: descriptorA,
62
+ index: 2,
63
+ });
64
+ });
65
+ });
66
+ }
67
+ describeWithTemplates('Wsh2Of3', 'Wsh2Of3');
68
+ describeWithTemplates('Wsh2Of3', 'Tr2Of3-NoKeyPath');
69
+ describeWithTemplates('Tr2Of3-NoKeyPath', 'Tr2Of3-NoKeyPath');
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZERlc2NyaXB0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC9kZXNjcmlwdG9yL3BzYnQvZmluZERlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBRWpDLGlFQUFnSDtBQUNoSCx3REFBMEY7QUFFMUYsU0FBUyxxQkFBcUIsQ0FBQyxZQUFnQyxFQUFFLGFBQWlDO0lBQ2hHLFFBQVEsQ0FBQyxjQUFjLFlBQVksSUFBSSxhQUFhLEdBQUcsRUFBRTtRQUN2RCxNQUFNLFdBQVcsR0FBRyxJQUFBLDBCQUFhLEVBQUMsWUFBWSxFQUFFLElBQUEsNEJBQWUsRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sV0FBVyxHQUFHLElBQUEsMEJBQWEsRUFBQyxhQUFhLEVBQUUsSUFBQSw0QkFBZSxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkUsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUM7WUFDNUIsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDO1lBQ2xCLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQztTQUNuQixDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkNBQTJDLEVBQUU7WUFDOUMsTUFBTSxJQUFJLEdBQUcsSUFBQSxxQkFBUSxFQUNuQjtnQkFDRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtnQkFDckMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO2FBQ3ZELEVBQ0QsQ0FBQyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FDNUQsQ0FBQztZQUVGLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBQSxtQ0FBc0IsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsRUFBRTtnQkFDakYsVUFBVSxFQUFFLFdBQVc7Z0JBQ3ZCLEtBQUssRUFBRSxDQUFDO2FBQ1QsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFBLG1DQUFzQixFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxFQUFFO2dCQUNqRixVQUFVLEVBQUUsV0FBVztnQkFDdkIsS0FBSyxFQUFFLENBQUM7YUFDVCxDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUEsb0NBQXVCLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQUU7Z0JBQzdHLFVBQVUsRUFBRSxXQUFXO2dCQUN2QixLQUFLLEVBQUUsQ0FBQzthQUNULENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQscUJBQXFCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzVDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3JELHFCQUFxQixDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgRGVzY3JpcHRvclRlbXBsYXRlLCBnZXREZWZhdWx0WFB1YnMsIGdldERlc2NyaXB0b3IsIG1vY2tQc2J0IH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZmluZERlc2NyaXB0b3JGb3JJbnB1dCwgZmluZERlc2NyaXB0b3JGb3JPdXRwdXQgfSBmcm9tICcuLi8uLi8uLi9zcmMvZGVzY3JpcHRvcic7XG5cbmZ1bmN0aW9uIGRlc2NyaWJlV2l0aFRlbXBsYXRlcyh0ZW1wbGF0ZVNlbGY6IERlc2NyaXB0b3JUZW1wbGF0ZSwgdGVtcGxhdGVPdGhlcjogRGVzY3JpcHRvclRlbXBsYXRlKSB7XG4gIGRlc2NyaWJlKGBwYXJzZVBzYnQgWyR7dGVtcGxhdGVTZWxmfSwke3RlbXBsYXRlT3RoZXJ9XWAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkZXNjcmlwdG9yQSA9IGdldERlc2NyaXB0b3IodGVtcGxhdGVTZWxmLCBnZXREZWZhdWx0WFB1YnMoJ2EnKSk7XG4gICAgY29uc3QgZGVzY3JpcHRvckIgPSBnZXREZXNjcmlwdG9yKHRlbXBsYXRlT3RoZXIsIGdldERlZmF1bHRYUHVicygnYicpKTtcbiAgICBjb25zdCBkZXNjcmlwdG9yTWFwID0gbmV3IE1hcChbXG4gICAgICBbJ2EnLCBkZXNjcmlwdG9yQV0sXG4gICAgICBbJ2InLCBkZXNjcmlwdG9yQl0sXG4gICAgXSk7XG5cbiAgICBpdCgnZmluZHMgZGVzY3JpcHRvcnMgZm9yIFBTQlQgaW5wdXRzL291dHB1dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwc2J0ID0gbW9ja1BzYnQoXG4gICAgICAgIFtcbiAgICAgICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JBLCBpbmRleDogMCB9LFxuICAgICAgICAgIHsgZGVzY3JpcHRvcjogZGVzY3JpcHRvckIsIGluZGV4OiAxLCBpZDogeyB2b3V0OiAxIH0gfSxcbiAgICAgICAgXSxcbiAgICAgICAgW3sgZGVzY3JpcHRvcjogZGVzY3JpcHRvckEsIGluZGV4OiAyLCB2YWx1ZTogQmlnSW50KDFlNikgfV1cbiAgICAgICk7XG5cbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZmluZERlc2NyaXB0b3JGb3JJbnB1dChwc2J0LmRhdGEuaW5wdXRzWzBdLCBkZXNjcmlwdG9yTWFwKSwge1xuICAgICAgICBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yQSxcbiAgICAgICAgaW5kZXg6IDAsXG4gICAgICB9KTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZmluZERlc2NyaXB0b3JGb3JJbnB1dChwc2J0LmRhdGEuaW5wdXRzWzFdLCBkZXNjcmlwdG9yTWFwKSwge1xuICAgICAgICBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yQixcbiAgICAgICAgaW5kZXg6IDEsXG4gICAgICB9KTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZmluZERlc2NyaXB0b3JGb3JPdXRwdXQocHNidC50eE91dHB1dHNbMF0uc2NyaXB0LCBwc2J0LmRhdGEub3V0cHV0c1swXSwgZGVzY3JpcHRvck1hcCksIHtcbiAgICAgICAgZGVzY3JpcHRvcjogZGVzY3JpcHRvckEsXG4gICAgICAgIGluZGV4OiAyLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5kZXNjcmliZVdpdGhUZW1wbGF0ZXMoJ1dzaDJPZjMnLCAnV3NoMk9mMycpO1xuZGVzY3JpYmVXaXRoVGVtcGxhdGVzKCdXc2gyT2YzJywgJ1RyMk9mMy1Ob0tleVBhdGgnKTtcbmRlc2NyaWJlV2l0aFRlbXBsYXRlcygnVHIyT2YzLU5vS2V5UGF0aCcsICdUcjJPZjMtTm9LZXlQYXRoJyk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=psbt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"psbt.d.ts","sourceRoot":"","sources":["../../../../../test/descriptor/psbt/psbt.ts"],"names":[],"mappings":""}
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const assert_1 = __importDefault(require("assert"));
40
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
41
+ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
42
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
43
+ const descriptor_1 = require("../../../src/descriptor");
44
+ const testutil_1 = require("../../../src/testutil");
45
+ const descriptor_2 = require("../../../src/testutil/descriptor");
46
+ const sign_1 = require("../../../src/descriptor/psbt/sign");
47
+ function normalize(v) {
48
+ if (typeof v === 'bigint') {
49
+ return v.toString();
50
+ }
51
+ if (v instanceof wasm_utxo_1.Descriptor) {
52
+ return v.toString();
53
+ }
54
+ if (v instanceof Buffer) {
55
+ return v.toString('hex');
56
+ }
57
+ if (v instanceof utxolib.Psbt) {
58
+ return (0, descriptor_2.toPlainObjectFromPsbt)(v);
59
+ }
60
+ if (v instanceof utxolib.Transaction) {
61
+ return (0, descriptor_2.toPlainObjectFromTx)(v);
62
+ }
63
+ if (Array.isArray(v)) {
64
+ return v.map(normalize);
65
+ }
66
+ if (typeof v === 'object' && v !== null) {
67
+ return Object.fromEntries(Object.entries(v).flatMap(([k, v]) => (v === undefined ? [] : [[k, normalize(v)]])));
68
+ }
69
+ return v;
70
+ }
71
+ async function assertEqualsFixture(t, filename, value) {
72
+ filename = __dirname + '/../../descriptor/psbt/fixtures/' + t + '.' + filename;
73
+ const nv = normalize(value);
74
+ assert_1.default.deepStrictEqual(nv, await (0, testutil_1.getFixture)(filename, nv));
75
+ }
76
+ const selfKeys = (0, testutil_1.getKeyTriple)('a');
77
+ const otherKeys = (0, testutil_1.getKeyTriple)('b');
78
+ function toPlain(k) {
79
+ assert_1.default.ok(k.privateKey);
80
+ return utxo_lib_1.ECPair.fromPrivateKey(k.privateKey);
81
+ }
82
+ function getStages(psbt, parsed, stages) {
83
+ return Object.fromEntries(stages.map((stage) => {
84
+ const psbtStageWrapped = (0, descriptor_1.toWrappedPsbt)(psbt);
85
+ for (const key of stage.keys) {
86
+ (0, assert_1.default)((0, sign_1.getNewSignatureCount)((0, sign_1.signWithKey)(psbtStageWrapped, key)) > 0, 'No new signatures were created');
87
+ }
88
+ const psbtStage = (0, descriptor_1.toUtxoPsbt)(psbtStageWrapped, utxolib.networks.bitcoin);
89
+ let psbtFinal;
90
+ let networkTx;
91
+ let networkTxBuffer;
92
+ if (stage.final) {
93
+ psbtStageWrapped.finalize();
94
+ psbtFinal = (0, descriptor_1.toUtxoPsbt)(psbtStageWrapped, utxolib.networks.bitcoin);
95
+ networkTx = psbtFinal.extractTransaction();
96
+ networkTxBuffer = networkTx.toBuffer();
97
+ }
98
+ return [
99
+ stage.name,
100
+ {
101
+ psbt: psbtStage,
102
+ parsed,
103
+ psbtFinal,
104
+ networkTx,
105
+ networkTxBuffer,
106
+ },
107
+ ];
108
+ }));
109
+ }
110
+ function describeCreatePsbt(name, testParams) {
111
+ describe(`createPsbt ${name}`, function () {
112
+ it('creates psbt with expected properties', async function () {
113
+ const psbtUnsigned = 'psbt' in testParams
114
+ ? testParams.psbt
115
+ : (0, descriptor_2.mockPsbtDefault)({
116
+ descriptorSelf: testParams.descriptorSelf,
117
+ descriptorOther: (0, descriptor_2.getDescriptor)('Wsh2Of3', otherKeys),
118
+ params: testParams.psbtParams,
119
+ });
120
+ const descriptorMap = new Map([['self', testParams.descriptorSelf]]);
121
+ const parsed = (0, descriptor_1.parse)(psbtUnsigned, descriptorMap, utxolib.networks.bitcoin);
122
+ assert_1.default.strictEqual(parsed.spendAmount, psbtUnsigned.txOutputs[1].value);
123
+ await assertEqualsFixture(name, 'psbtStages.json', getStages(psbtUnsigned, parsed, testParams.stages));
124
+ });
125
+ });
126
+ }
127
+ const defaultStagesCombinedAB = [
128
+ { name: 'unsigned', keys: [] },
129
+ { name: 'signedA', keys: selfKeys.slice(0, 1) },
130
+ { name: 'signedAB', keys: selfKeys.slice(0, 2), final: true },
131
+ ];
132
+ function getDefaultStagesSeparateAB({ plain = false } = {}) {
133
+ const keys = plain ? selfKeys.map(toPlain) : selfKeys;
134
+ return [
135
+ { name: 'unsigned', keys: [] },
136
+ { name: 'signedA', keys: keys.slice(0, 1) },
137
+ { name: 'signedB', keys: keys.slice(1, 2), final: true },
138
+ ];
139
+ }
140
+ function describeCreatePsbt2Of3(t) {
141
+ describeCreatePsbt(t, {
142
+ descriptorSelf: (0, descriptor_2.getDescriptor)(t, selfKeys),
143
+ psbtParams: (0, descriptor_2.getPsbtParams)(t),
144
+ stages: defaultStagesCombinedAB,
145
+ });
146
+ }
147
+ function describeCreatePsbtSelectTapLeafScript(t, selfDescriptor, selectTapLeafScript, tapLeafName) {
148
+ const otherDescriptor = (0, descriptor_2.getDescriptor)('Wsh2Of3', otherKeys);
149
+ const signKeys = selfKeys.filter((k) => (0, descriptor_2.containsKey)(selectTapLeafScript, k)).map((k) => toPlain(k));
150
+ (0, assert_1.default)(signKeys.length === 1);
151
+ describeCreatePsbt(`${t}-${tapLeafName}`, {
152
+ descriptorSelf: selfDescriptor,
153
+ psbt: (0, descriptor_2.mockPsbt)([
154
+ { descriptor: selfDescriptor, index: 0, selectTapLeafScript },
155
+ { descriptor: selfDescriptor, index: 1, id: { vout: 1 }, selectTapLeafScript },
156
+ ], [
157
+ {
158
+ descriptor: otherDescriptor,
159
+ index: 0,
160
+ value: BigInt(4e5),
161
+ external: true,
162
+ },
163
+ { descriptor: selfDescriptor, index: 0, value: BigInt(4e5) },
164
+ ]),
165
+ stages: [
166
+ { name: 'unsigned', keys: [] },
167
+ { name: 'signed', keys: signKeys },
168
+ ],
169
+ });
170
+ }
171
+ describeCreatePsbt2Of3('Wsh2Of3');
172
+ describeCreatePsbt2Of3('Wsh2Of3CltvDrop');
173
+ describeCreatePsbt2Of3('Tr2Of3-NoKeyPath');
174
+ describeCreatePsbt('Tr1Of3-NoKeyPath-Tree', {
175
+ descriptorSelf: (0, descriptor_2.getDescriptor)('Tr1Of3-NoKeyPath-Tree', selfKeys),
176
+ psbtParams: {},
177
+ stages: getDefaultStagesSeparateAB(),
178
+ });
179
+ {
180
+ const t = 'Tr1Of3-NoKeyPath-Tree-Plain';
181
+ const selfDescriptor = (0, descriptor_2.getDescriptor)(t, selfKeys);
182
+ (0, descriptor_2.getTapLeafScripts)(selfDescriptor).forEach((selectTapLeafScript, i) => {
183
+ describeCreatePsbtSelectTapLeafScript(t, selfDescriptor, wasm_utxo_1.Miniscript.fromString(selectTapLeafScript, 'tap'), `TapLeafScript${i}`);
184
+ });
185
+ }
186
+ describeCreatePsbt('Tr1Of3-NoKeyPath-Tree-PlainKeys', {
187
+ descriptorSelf: (0, descriptor_2.getDescriptor)('Tr1Of3-NoKeyPath-Tree-Plain', selfKeys),
188
+ psbtParams: {},
189
+ stages: getDefaultStagesSeparateAB({ plain: true }),
190
+ });
191
+ {
192
+ const descriptorSelf = (0, descriptor_2.getDescriptor)('Wsh2Of3', selfKeys);
193
+ const descriptorOther = (0, descriptor_2.getDescriptor)('Wsh2Of3', otherKeys);
194
+ describeCreatePsbt('Wsh2Of3-CustomInputSequence', {
195
+ descriptorSelf,
196
+ psbt: (0, descriptor_2.mockPsbt)([
197
+ { descriptor: descriptorSelf, index: 0 },
198
+ { descriptor: descriptorSelf, index: 1, id: { vout: 1 }, sequence: 123 },
199
+ ], [
200
+ {
201
+ descriptor: descriptorOther,
202
+ index: 0,
203
+ value: BigInt(4e5),
204
+ external: true,
205
+ },
206
+ { descriptor: descriptorSelf, index: 0, value: BigInt(4e5) },
207
+ ]),
208
+ stages: defaultStagesCombinedAB,
209
+ });
210
+ }
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvZGVzY3JpcHRvci9wc2J0L3BzYnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsOERBQWdEO0FBQ2hELG1EQUErRTtBQUMvRSxnREFBMEQ7QUFFMUQsd0RBQW9IO0FBQ3BILG9EQUFpRTtBQUNqRSxpRUFVMEM7QUFDMUMsNERBQXNGO0FBRXRGLFNBQVMsU0FBUyxDQUFDLENBQVU7SUFDM0IsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMxQixPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxDQUFDLFlBQVksc0JBQVUsRUFBRSxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFJLENBQUMsWUFBWSxNQUFNLEVBQUUsQ0FBQztRQUN4QixPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksQ0FBQyxZQUFZLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUEsa0NBQXFCLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksQ0FBQyxZQUFZLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxPQUFPLElBQUEsZ0NBQW1CLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FB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QUFDLEVBQUU7WUFDeEMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7U0FDekUsRUFDRDtZQUNFO2dCQUNFLFVBQVUsRUFBRSxlQUFlO2dCQUMzQixLQUFLLEVBQUUsQ0FBQztnQkFDUixLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDbEIsUUFBUSxFQUFFLElBQUk7YUFDZjtZQUNELEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7U0FDN0QsQ0FDRjtRQUNELE1BQU0sRUFBRSx1QkFBdUI7S0FDaEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSwgRUNQYWlyLCBFQ1BhaXJJbnRlcmZhY2UgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yLCBNaW5pc2NyaXB0IH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbmltcG9ydCB7IFBzYnRQYXJhbXMsIHBhcnNlLCB0b1V0eG9Qc2J0LCB0b1dyYXBwZWRQc2J0LCBQYXJzZWREZXNjcmlwdG9yVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zcmMvZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBnZXRGaXh0dXJlLCBnZXRLZXlUcmlwbGUgfSBmcm9tICcuLi8uLi8uLi9zcmMvdGVzdHV0aWwnO1xuaW1wb3J0IHtcbiAgY29udGFpbnNLZXksXG4gIERlc2NyaXB0b3JUZW1wbGF0ZSxcbiAgZ2V0RGVzY3JpcHRvcixcbiAgZ2V0UHNidFBhcmFtcyxcbiAgZ2V0VGFwTGVhZlNjcmlwdHMsXG4gIG1vY2tQc2J0LFxuICBtb2NrUHNidERlZmF1bHQsXG4gIHRvUGxhaW5PYmplY3RGcm9tUHNidCxcbiAgdG9QbGFpbk9iamVjdEZyb21UeCxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZ2V0TmV3U2lnbmF0dXJlQ291bnQsIHNpZ25XaXRoS2V5IH0gZnJvbSAnLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvcHNidC9zaWduJztcblxuZnVuY3Rpb24gbm9ybWFsaXplKHY6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKHR5cGVvZiB2ID09PSAnYmlnaW50Jykge1xuICAgIHJldHVybiB2LnRvU3RyaW5nKCk7XG4gIH1cbiAgaWYgKHYgaW5zdGFuY2VvZiBEZXNjcmlwdG9yKSB7XG4gICAgcmV0dXJuIHYudG9TdHJpbmcoKTtcbiAgfVxuICBpZiAodiBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgIHJldHVybiB2LnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuICBpZiAodiBpbnN0YW5jZW9mIHV0eG9saWIuUHNidCkge1xuICAgIHJldHVybiB0b1BsYWluT2JqZWN0RnJvbVBzYnQodik7XG4gIH1cbiAgaWYgKHYgaW5zdGFuY2VvZiB1dHhvbGliLlRyYW5zYWN0aW9uKSB7XG4gICAgcmV0dXJuIHRvUGxhaW5PYmplY3RGcm9tVHgodik7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICByZXR1cm4gdi5tYXAobm9ybWFsaXplKTtcbiAgfVxuICBpZiAodHlwZW9mIHYgPT09ICdvYmplY3QnICYmIHYgIT09IG51bGwpIHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHYpLmZsYXRNYXAoKFtrLCB2XSkgPT4gKHYgPT09IHVuZGVmaW5lZCA/IFtdIDogW1trLCBub3JtYWxpemUodildXSkpKTtcbiAgfVxuICByZXR1cm4gdjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXNzZXJ0RXF1YWxzRml4dHVyZSh0OiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSB7XG4gIGZpbGVuYW1lID0gX19kaXJuYW1lICsgJy8uLi8uLi9kZXNjcmlwdG9yL3BzYnQvZml4dHVyZXMvJyArIHQgKyAnLicgKyBmaWxlbmFtZTtcbiAgY29uc3QgbnYgPSBub3JtYWxpemUodmFsdWUpO1xuICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKG52LCBhd2FpdCBnZXRGaXh0dXJlKGZpbGVuYW1lLCBudikpO1xufVxuXG5jb25zdCBzZWxmS2V5cyA9IGdldEtleVRyaXBsZSgnYScpO1xuY29uc3Qgb3RoZXJLZXlzID0gZ2V0S2V5VHJpcGxlKCdiJyk7XG5cbmZ1bmN0aW9uIHRvUGxhaW4oazogQklQMzJJbnRlcmZhY2UpOiBFQ1BhaXJJbnRlcmZhY2Uge1xuICBhc3NlcnQub2soay5wcml2YXRlS2V5KTtcbiAgcmV0dXJuIEVDUGFpci5mcm9tUHJpdmF0ZUtleShrLnByaXZhdGVLZXkpO1xufVxuXG50eXBlIFBzYnRTdGFnZSA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBrZXlzOiAoQklQMzJJbnRlcmZhY2UgfCBFQ1BhaXJJbnRlcmZhY2UpW107XG4gIGZpbmFsPzogYm9vbGVhbjtcbn07XG5cbnR5cGUgRml4dHVyZVN0YWdlID0ge1xuICBwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0O1xuICBuZXR3b3JrVHg/OiB1dHhvbGliLlRyYW5zYWN0aW9uPGJpZ2ludD47XG4gIG5ldHdvcmtUeEJ1ZmZlcj86IEJ1ZmZlcjtcbn07XG5cbmZ1bmN0aW9uIGdldFN0YWdlcyhcbiAgcHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCxcbiAgcGFyc2VkOiBQYXJzZWREZXNjcmlwdG9yVHJhbnNhY3Rpb24sXG4gIHN0YWdlczogUHNidFN0YWdlW11cbik6IFJlY29yZDxzdHJpbmcsIEZpeHR1cmVTdGFnZT4ge1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIHN0YWdlcy5tYXAoKHN0YWdlKSA9PiB7XG4gICAgICBjb25zdCBwc2J0U3RhZ2VXcmFwcGVkID0gdG9XcmFwcGVkUHNidChwc2J0KTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIHN0YWdlLmtleXMpIHtcbiAgICAgICAgYXNzZXJ0KGdldE5ld1NpZ25hdHVyZUNvdW50KHNpZ25XaXRoS2V5KHBzYnRTdGFnZVdyYXBwZWQsIGtleSkpID4gMCwgJ05vIG5ldyBzaWduYXR1cmVzIHdlcmUgY3JlYXRlZCcpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHNidFN0YWdlID0gdG9VdHhvUHNidChwc2J0U3RhZ2VXcmFwcGVkLCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pO1xuICAgICAgbGV0IHBzYnRGaW5hbDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCB8IHVuZGVmaW5lZDtcbiAgICAgIGxldCBuZXR3b3JrVHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPGJpZ2ludD4gfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgbmV0d29ya1R4QnVmZmVyOiBCdWZmZXIgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoc3RhZ2UuZmluYWwpIHtcbiAgICAgICAgcHNidFN0YWdlV3JhcHBlZC5maW5hbGl6ZSgpO1xuICAgICAgICBwc2J0RmluYWwgPSB0b1V0eG9Qc2J0KHBzYnRTdGFnZVdyYXBwZWQsIHV0eG9saWIubmV0d29ya3MuYml0Y29pbik7XG4gICAgICAgIG5ldHdvcmtUeCA9IHBzYnRGaW5hbC5leHRyYWN0VHJhbnNhY3Rpb24oKTtcbiAgICAgICAgbmV0d29ya1R4QnVmZmVyID0gbmV0d29ya1R4LnRvQnVmZmVyKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW1xuICAgICAgICBzdGFnZS5uYW1lLFxuICAgICAgICB7XG4gICAgICAgICAgcHNidDogcHNidFN0YWdlLFxuICAgICAgICAgIHBhcnNlZCxcbiAgICAgICAgICBwc2J0RmluYWwsXG4gICAgICAgICAgbmV0d29ya1R4LFxuICAgICAgICAgIG5ldHdvcmtUeEJ1ZmZlcixcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfSlcbiAgKTtcbn1cblxudHlwZSBUZXN0UGFyYW1zID0ge1xuICBkZXNjcmlwdG9yU2VsZjogRGVzY3JpcHRvcjtcbiAgc3RhZ2VzOiBQc2J0U3RhZ2VbXTtcbn0gJiAoXG4gIHwge1xuICAgICAgcHNidFBhcmFtczogUGFydGlhbDxQc2J0UGFyYW1zPjtcbiAgICB9XG4gIHwge1xuICAgICAgcHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidDtcbiAgICB9XG4pO1xuXG5mdW5jdGlvbiBkZXNjcmliZUNyZWF0ZVBzYnQobmFtZTogc3RyaW5nLCB0ZXN0UGFyYW1zOiBUZXN0UGFyYW1zKSB7XG4gIGRlc2NyaWJlKGBjcmVhdGVQc2J0ICR7bmFtZX1gLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2NyZWF0ZXMgcHNidCB3aXRoIGV4cGVjdGVkIHByb3BlcnRpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwc2J0VW5zaWduZWQgPVxuICAgICAgICAncHNidCcgaW4gdGVzdFBhcmFtc1xuICAgICAgICAgID8gdGVzdFBhcmFtcy5wc2J0XG4gICAgICAgICAgOiBtb2NrUHNidERlZmF1bHQoe1xuICAgICAgICAgICAgICBkZXNjcmlwdG9yU2VsZjogdGVzdFBhcmFtcy5kZXNjcmlwdG9yU2VsZixcbiAgICAgICAgICAgICAgZGVzY3JpcHRvck90aGVyOiBnZXREZXNjcmlwdG9yKCdXc2gyT2YzJywgb3RoZXJLZXlzKSxcbiAgICAgICAgICAgICAgcGFyYW1zOiB0ZXN0UGFyYW1zLnBzYnRQYXJhbXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3JNYXAgPSBuZXcgTWFwKFtbJ3NlbGYnLCB0ZXN0UGFyYW1zLmRlc2NyaXB0b3JTZWxmXV0pO1xuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2UocHNidFVuc2lnbmVkLCBkZXNjcmlwdG9yTWFwLCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlZC5zcGVuZEFtb3VudCwgcHNidFVuc2lnbmVkLnR4T3V0cHV0c1sxXS52YWx1ZSk7XG4gICAgICBhd2FpdCBhc3NlcnRFcXVhbHNGaXh0dXJlKG5hbWUsICdwc2J0U3RhZ2VzLmpzb24nLCBnZXRTdGFnZXMocHNidFVuc2lnbmVkLCBwYXJzZWQsIHRlc3RQYXJhbXMuc3RhZ2VzKSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5jb25zdCBkZWZhdWx0U3RhZ2VzQ29tYmluZWRBQjogUHNidFN0YWdlW10gPSBbXG4gIHsgbmFtZTogJ3Vuc2lnbmVkJywga2V5czogW10gfSxcbiAgeyBuYW1lOiAnc2lnbmVkQScsIGtleXM6IHNlbGZLZXlzLnNsaWNlKDAsIDEpIH0sXG4gIHsgbmFtZTogJ3NpZ25lZEFCJywga2V5czogc2VsZktleXMuc2xpY2UoMCwgMiksIGZpbmFsOiB0cnVlIH0sXG5dO1xuXG5mdW5jdGlvbiBnZXREZWZhdWx0U3RhZ2VzU2VwYXJhdGVBQih7IHBsYWluID0gZmFsc2UgfSA9IHt9KTogUHNidFN0YWdlW10ge1xuICBjb25zdCBrZXlzID0gcGxhaW4gPyBzZWxmS2V5cy5tYXAodG9QbGFpbikgOiBzZWxmS2V5cztcbiAgcmV0dXJuIFtcbiAgICB7IG5hbWU6ICd1bnNpZ25lZCcsIGtleXM6IFtdIH0sXG4gICAgeyBuYW1lOiAnc2lnbmVkQScsIGtleXM6IGtleXMuc2xpY2UoMCwgMSkgfSxcbiAgICB7IG5hbWU6ICdzaWduZWRCJywga2V5czoga2V5cy5zbGljZSgxLCAyKSwgZmluYWw6IHRydWUgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVDcmVhdGVQc2J0Mk9mMyh0OiBEZXNjcmlwdG9yVGVtcGxhdGUpIHtcbiAgZGVzY3JpYmVDcmVhdGVQc2J0KHQsIHtcbiAgICBkZXNjcmlwdG9yU2VsZjogZ2V0RGVzY3JpcHRvcih0LCBzZWxmS2V5cyksXG4gICAgcHNidFBhcmFtczogZ2V0UHNidFBhcmFtcyh0KSxcbiAgICBzdGFnZXM6IGRlZmF1bHRTdGFnZXNDb21iaW5lZEFCLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVDcmVhdGVQc2J0U2VsZWN0VGFwTGVhZlNjcmlwdChcbiAgdDogRGVzY3JpcHRvclRlbXBsYXRlLFxuICBzZWxmRGVzY3JpcHRvcjogRGVzY3JpcHRvcixcbiAgc2VsZWN0VGFwTGVhZlNjcmlwdDogTWluaXNjcmlwdCxcbiAgdGFwTGVhZk5hbWU6IHN0cmluZ1xuKSB7XG4gIGNvbnN0IG90aGVyRGVzY3JpcHRvciA9IGdldERlc2NyaXB0b3IoJ1dzaDJPZjMnLCBvdGhlcktleXMpO1xuICBjb25zdCBzaWduS2V5cyA9IHNlbGZLZXlzLmZpbHRlcigoaykgPT4gY29udGFpbnNLZXkoc2VsZWN0VGFwTGVhZlNjcmlwdCwgaykpLm1hcCgoaykgPT4gdG9QbGFpbihrKSk7XG4gIGFzc2VydChzaWduS2V5cy5sZW5ndGggPT09IDEpO1xuICBkZXNjcmliZUNyZWF0ZVBzYnQoYCR7dH0tJHt0YXBMZWFmTmFtZX1gLCB7XG4gICAgZGVzY3JpcHRvclNlbGY6IHNlbGZEZXNjcmlwdG9yLFxuICAgIHBzYnQ6IG1vY2tQc2J0KFxuICAgICAgW1xuICAgICAgICB7IGRlc2NyaXB0b3I6IHNlbGZEZXNjcmlwdG9yLCBpbmRleDogMCwgc2VsZWN0VGFwTGVhZlNjcmlwdCB9LFxuICAgICAgICB7IGRlc2NyaXB0b3I6IHNlbGZEZXNjcmlwdG9yLCBpbmRleDogMSwgaWQ6IHsgdm91dDogMSB9LCBzZWxlY3RUYXBMZWFmU2NyaXB0IH0sXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgZGVzY3JpcHRvcjogb3RoZXJEZXNjcmlwdG9yLFxuICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgIHZhbHVlOiBCaWdJbnQoNGU1KSxcbiAgICAgICAgICBleHRlcm5hbDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBkZXNjcmlwdG9yOiBzZWxmRGVzY3JpcHRvciwgaW5kZXg6IDAsIHZhbHVlOiBCaWdJbnQoNGU1KSB9LFxuICAgICAgXVxuICAgICksXG4gICAgc3RhZ2VzOiBbXG4gICAgICB7IG5hbWU6ICd1bnNpZ25lZCcsIGtleXM6IFtdIH0sXG4gICAgICB7IG5hbWU6ICdzaWduZWQnLCBrZXlzOiBzaWduS2V5cyB9LFxuICAgIF0sXG4gIH0pO1xufVxuXG5kZXNjcmliZUNyZWF0ZVBzYnQyT2YzKCdXc2gyT2YzJyk7XG5kZXNjcmliZUNyZWF0ZVBzYnQyT2YzKCdXc2gyT2YzQ2x0dkRyb3AnKTtcbmRlc2NyaWJlQ3JlYXRlUHNidDJPZjMoJ1RyMk9mMy1Ob0tleVBhdGgnKTtcbmRlc2NyaWJlQ3JlYXRlUHNidCgnVHIxT2YzLU5vS2V5UGF0aC1UcmVlJywge1xuICBkZXNjcmlwdG9yU2VsZjogZ2V0RGVzY3JpcHRvcignVHIxT2YzLU5vS2V5UGF0aC1UcmVlJywgc2VsZktleXMpLFxuICBwc2J0UGFyYW1zOiB7fSxcbiAgc3RhZ2VzOiBnZXREZWZhdWx0U3RhZ2VzU2VwYXJhdGVBQigpLFxufSk7XG5cbntcbiAgY29uc3QgdDogRGVzY3JpcHRvclRlbXBsYXRlID0gJ1RyMU9mMy1Ob0tleVBhdGgtVHJlZS1QbGFpbic7XG4gIGNvbnN0IHNlbGZEZXNjcmlwdG9yID0gZ2V0RGVzY3JpcHRvcih0LCBzZWxmS2V5cyk7XG4gIGdldFRhcExlYWZTY3JpcHRzKHNlbGZEZXNjcmlwdG9yKS5mb3JFYWNoKChzZWxlY3RUYXBMZWFmU2NyaXB0LCBpKSA9PiB7XG4gICAgZGVzY3JpYmVDcmVhdGVQc2J0U2VsZWN0VGFwTGVhZlNjcmlwdChcbiAgICAgIHQsXG4gICAgICBzZWxmRGVzY3JpcHRvcixcbiAgICAgIE1pbmlzY3JpcHQuZnJvbVN0cmluZyhzZWxlY3RUYXBMZWFmU2NyaXB0LCAndGFwJyksXG4gICAgICBgVGFwTGVhZlNjcmlwdCR7aX1gXG4gICAgKTtcbiAgfSk7XG59XG5cbmRlc2NyaWJlQ3JlYXRlUHNidCgnVHIxT2YzLU5vS2V5UGF0aC1UcmVlLVBsYWluS2V5cycsIHtcbiAgZGVzY3JpcHRvclNlbGY6IGdldERlc2NyaXB0b3IoJ1RyMU9mMy1Ob0tleVBhdGgtVHJlZS1QbGFpbicsIHNlbGZLZXlzKSxcbiAgcHNidFBhcmFtczoge30sXG4gIHN0YWdlczogZ2V0RGVmYXVsdFN0YWdlc1NlcGFyYXRlQUIoeyBwbGFpbjogdHJ1ZSB9KSxcbn0pO1xuXG57XG4gIGNvbnN0IGRlc2NyaXB0b3JTZWxmID0gZ2V0RGVzY3JpcHRvcignV3NoMk9mMycsIHNlbGZLZXlzKTtcbiAgY29uc3QgZGVzY3JpcHRvck90aGVyID0gZ2V0RGVzY3JpcHRvcignV3NoMk9mMycsIG90aGVyS2V5cyk7XG4gIGRlc2NyaWJlQ3JlYXRlUHNidCgnV3NoMk9mMy1DdXN0b21JbnB1dFNlcXVlbmNlJywge1xuICAgIGRlc2NyaXB0b3JTZWxmLFxuICAgIHBzYnQ6IG1vY2tQc2J0KFxuICAgICAgW1xuICAgICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JTZWxmLCBpbmRleDogMCB9LFxuICAgICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JTZWxmLCBpbmRleDogMSwgaWQ6IHsgdm91dDogMSB9LCBzZXF1ZW5jZTogMTIzIH0sXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgZGVzY3JpcHRvcjogZGVzY3JpcHRvck90aGVyLFxuICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgIHZhbHVlOiBCaWdJbnQoNGU1KSxcbiAgICAgICAgICBleHRlcm5hbDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yU2VsZiwgaW5kZXg6IDAsIHZhbHVlOiBCaWdJbnQoNGU1KSB9LFxuICAgICAgXVxuICAgICksXG4gICAgc3RhZ2VzOiBkZWZhdWx0U3RhZ2VzQ29tYmluZWRBQixcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dustThreshold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dustThreshold.d.ts","sourceRoot":"","sources":["../../../test/dustThreshold.ts"],"names":[],"mappings":""}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const assert_1 = __importDefault(require("assert"));
40
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
41
+ const dustThreshold_1 = require("../src/dustThreshold");
42
+ describe('getDustThresholdSat', function () {
43
+ it('has expected values', function () {
44
+ assert_1.default.deepStrictEqual(utxolib.getNetworkList().flatMap((n) => {
45
+ if (n === utxolib.networks.bitcoin) {
46
+ return [
47
+ ['bitcoin', (0, dustThreshold_1.getDustThresholdSat)(n, 34, false)],
48
+ ['bitcoin (segwit)', (0, dustThreshold_1.getDustThresholdSat)(n, 31, true)],
49
+ ];
50
+ }
51
+ try {
52
+ return [[utxolib.getNetworkName(n), (0, dustThreshold_1.getDustThresholdSat)(n, 34, false)]];
53
+ }
54
+ catch (e) {
55
+ (0, assert_1.default)(e instanceof Error);
56
+ return [[utxolib.getNetworkName(n), e.message]];
57
+ }
58
+ }), [
59
+ /*
60
+
61
+ https://github.com/bitcoin/bitcoin/blob/v28.0/src/policy/policy.cpp#L28
62
+
63
+ >> "Dust" is defined in terms of dustRelayFee,
64
+ >> which has units satoshis-per-kilobyte.
65
+ >> If you'd pay more in fees than the value of the output
66
+ >> to spend something, then we consider it dust.
67
+ >> A typical spendable non-segwit txout is 34 bytes big, and will
68
+ >> need a CTxIn of at least 148 bytes to spend:
69
+ >> so dust is a spendable txout less than
70
+ >> 182*dustRelayFee/1000 (in satoshis).
71
+ >> 546 satoshis at the default rate of 3000 sat/kvB.
72
+
73
+ */
74
+ ['bitcoin', 546],
75
+ /*
76
+
77
+ >> A typical spendable segwit P2WPKH txout is 31 bytes big, and will
78
+ >> need a CTxIn of at least 67 bytes to spend:
79
+ >> so dust is a spendable txout less than
80
+ >> 98*dustRelayFee/1000 (in satoshis).
81
+ >> 294 satoshis at the default rate of 3000 sat/kvB.
82
+
83
+ for us it is 297 because we round up
84
+
85
+ */
86
+ ['bitcoin (segwit)', 297],
87
+ ['testnet', 546],
88
+ ['bitcoinPublicSignet', 546],
89
+ ['bitcoinTestnet4', 546],
90
+ ['bitcoinBitGoSignet', 546],
91
+ ['bitcoincash', 182],
92
+ ['bitcoincashTestnet', 182],
93
+ ['bitcoingold', 546],
94
+ ['bitcoingoldTestnet', 546],
95
+ ['bitcoinsv', 'deprecated coin'],
96
+ ['bitcoinsvTestnet', 'deprecated coin'],
97
+ ['dash', 546],
98
+ ['dashTest', 546],
99
+ ['dogecoin', 1000000],
100
+ ['dogecoinTest', 1000000],
101
+ ['ecash', 'unsupported network'],
102
+ ['ecashTest', 'unsupported network'],
103
+ ['litecoin', 5460],
104
+ ['litecoinTest', 5460],
105
+ ['zcash', 300],
106
+ ['zcashTest', 300],
107
+ ]);
108
+ });
109
+ });
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVzdFRocmVzaG9sZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvZHVzdFRocmVzaG9sZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUU1Qiw4REFBZ0Q7QUFFaEQsd0RBQTJEO0FBRTNELFFBQVEsQ0FBQyxxQkFBcUIsRUFBRTtJQUM5QixFQUFFLENBQUMscUJBQXFCLEVBQUU7UUFDeEIsZ0JBQU0sQ0FBQyxlQUFlLENBQ3BCLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQXdCLEVBQUU7WUFDM0QsSUFBSSxDQUFDLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkMsT0FBTztvQkFDTCxDQUFDLFNBQVMsRUFBRSxJQUFBLG1DQUFtQixFQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzlDLENBQUMsa0JBQWtCLEVBQUUsSUFBQSxtQ0FBbUIsRUFBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUN2RCxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksQ0FBQztnQkFDSCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUEsbUNBQW1CLEVBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUUsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsSUFBQSxnQkFBTSxFQUFDLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQztnQkFDM0IsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNsRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLEVBQ0Y7WUFDRTs7Ozs7Ozs7Ozs7Ozs7ZUFjRztZQUNILENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQztZQUNoQjs7Ozs7Ozs7OztlQVVHO1lBQ0gsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUM7WUFDekIsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO1lBQ2hCLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDO1lBQzVCLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDO1lBQ3hCLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDO1lBQzNCLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQztZQUNwQixDQUFDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQztZQUMzQixDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUM7WUFDcEIsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUM7WUFDM0IsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLENBQUM7WUFDaEMsQ0FBQyxrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQztZQUN2QyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7WUFDYixDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUM7WUFDakIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDO1lBQ3JCLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQztZQUN6QixDQUFDLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQztZQUNoQyxDQUFDLFdBQVcsRUFBRSxxQkFBcUIsQ0FBQztZQUNwQyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7WUFDbEIsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDO1lBQ3RCLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQztZQUNkLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQztTQUNuQixDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgZ2V0RHVzdFRocmVzaG9sZFNhdCB9IGZyb20gJy4uL3NyYy9kdXN0VGhyZXNob2xkJztcblxuZGVzY3JpYmUoJ2dldER1c3RUaHJlc2hvbGRTYXQnLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdoYXMgZXhwZWN0ZWQgdmFsdWVzJywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoXG4gICAgICB1dHhvbGliLmdldE5ldHdvcmtMaXN0KCkuZmxhdE1hcCgobik6IFt1bmtub3duLCB1bmtub3duXVtdID0+IHtcbiAgICAgICAgaWYgKG4gPT09IHV0eG9saWIubmV0d29ya3MuYml0Y29pbikge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBbJ2JpdGNvaW4nLCBnZXREdXN0VGhyZXNob2xkU2F0KG4sIDM0LCBmYWxzZSldLFxuICAgICAgICAgICAgWydiaXRjb2luIChzZWd3aXQpJywgZ2V0RHVzdFRocmVzaG9sZFNhdChuLCAzMSwgdHJ1ZSldLFxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gW1t1dHhvbGliLmdldE5ldHdvcmtOYW1lKG4pLCBnZXREdXN0VGhyZXNob2xkU2F0KG4sIDM0LCBmYWxzZSldXTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgRXJyb3IpO1xuICAgICAgICAgIHJldHVybiBbW3V0eG9saWIuZ2V0TmV0d29ya05hbWUobiksIGUubWVzc2FnZV1dO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIFtcbiAgICAgICAgLypcblxuICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXRjb2luL2Jsb2IvdjI4LjAvc3JjL3BvbGljeS9wb2xpY3kuY3BwI0wyOFxuXG4gICAgICAgID4+IFwiRHVzdFwiIGlzIGRlZmluZWQgaW4gdGVybXMgb2YgZHVzdFJlbGF5RmVlLFxuICAgICAgICA+PiB3aGljaCBoYXMgdW5pdHMgc2F0b3NoaXMtcGVyLWtpbG9ieXRlLlxuICAgICAgICA+PiBJZiB5b3UnZCBwYXkgbW9yZSBpbiBmZWVzIHRoYW4gdGhlIHZhbHVlIG9mIHRoZSBvdXRwdXRcbiAgICAgICAgPj4gdG8gc3BlbmQgc29tZXRoaW5nLCB0aGVuIHdlIGNvbnNpZGVyIGl0IGR1c3QuXG4gICAgICAgID4+IEEgdHlwaWNhbCBzcGVuZGFibGUgbm9uLXNlZ3dpdCB0eG91dCBpcyAzNCBieXRlcyBiaWcsIGFuZCB3aWxsXG4gICAgICAgID4+IG5lZWQgYSBDVHhJbiBvZiBhdCBsZWFzdCAxNDggYnl0ZXMgdG8gc3BlbmQ6XG4gICAgICAgID4+IHNvIGR1c3QgaXMgYSBzcGVuZGFibGUgdHhvdXQgbGVzcyB0aGFuXG4gICAgICAgID4+IDE4MipkdXN0UmVsYXlGZWUvMTAwMCAoaW4gc2F0b3NoaXMpLlxuICAgICAgICA+PiA1NDYgc2F0b3NoaXMgYXQgdGhlIGRlZmF1bHQgcmF0ZSBvZiAzMDAwIHNhdC9rdkIuXG5cbiAgICAgICAgICovXG4gICAgICAgIFsnYml0Y29pbicsIDU0Nl0sXG4gICAgICAgIC8qXG5cbiAgICAgICAgPj4gQSB0eXBpY2FsIHNwZW5kYWJsZSBzZWd3aXQgUDJXUEtIIHR4b3V0IGlzIDMxIGJ5dGVzIGJpZywgYW5kIHdpbGxcbiAgICAgICAgPj4gbmVlZCBhIENUeEluIG9mIGF0IGxlYXN0IDY3IGJ5dGVzIHRvIHNwZW5kOlxuICAgICAgICA+PiBzbyBkdXN0IGlzIGEgc3BlbmRhYmxlIHR4b3V0IGxlc3MgdGhhblxuICAgICAgICA+PiA5OCpkdXN0UmVsYXlGZWUvMTAwMCAoaW4gc2F0b3NoaXMpLlxuICAgICAgICA+PiAyOTQgc2F0b3NoaXMgYXQgdGhlIGRlZmF1bHQgcmF0ZSBvZiAzMDAwIHNhdC9rdkIuXG5cbiAgICAgICAgZm9yIHVzIGl0IGlzIDI5NyBiZWNhdXNlIHdlIHJvdW5kIHVwXG5cbiAgICAgICAgICovXG4gICAgICAgIFsnYml0Y29pbiAoc2Vnd2l0KScsIDI5N10sXG4gICAgICAgIFsndGVzdG5ldCcsIDU0Nl0sXG4gICAgICAgIFsnYml0Y29pblB1YmxpY1NpZ25ldCcsIDU0Nl0sXG4gICAgICAgIFsnYml0Y29pblRlc3RuZXQ0JywgNTQ2XSxcbiAgICAgICAgWydiaXRjb2luQml0R29TaWduZXQnLCA1NDZdLFxuICAgICAgICBbJ2JpdGNvaW5jYXNoJywgMTgyXSxcbiAgICAgICAgWydiaXRjb2luY2FzaFRlc3RuZXQnLCAxODJdLFxuICAgICAgICBbJ2JpdGNvaW5nb2xkJywgNTQ2XSxcbiAgICAgICAgWydiaXRjb2luZ29sZFRlc3RuZXQnLCA1NDZdLFxuICAgICAgICBbJ2JpdGNvaW5zdicsICdkZXByZWNhdGVkIGNvaW4nXSxcbiAgICAgICAgWydiaXRjb2luc3ZUZXN0bmV0JywgJ2RlcHJlY2F0ZWQgY29pbiddLFxuICAgICAgICBbJ2Rhc2gnLCA1NDZdLFxuICAgICAgICBbJ2Rhc2hUZXN0JywgNTQ2XSxcbiAgICAgICAgWydkb2dlY29pbicsIDEwMDAwMDBdLFxuICAgICAgICBbJ2RvZ2Vjb2luVGVzdCcsIDEwMDAwMDBdLFxuICAgICAgICBbJ2VjYXNoJywgJ3Vuc3VwcG9ydGVkIG5ldHdvcmsnXSxcbiAgICAgICAgWydlY2FzaFRlc3QnLCAndW5zdXBwb3J0ZWQgbmV0d29yayddLFxuICAgICAgICBbJ2xpdGVjb2luJywgNTQ2MF0sXG4gICAgICAgIFsnbGl0ZWNvaW5UZXN0JywgNTQ2MF0sXG4gICAgICAgIFsnemNhc2gnLCAzMDBdLFxuICAgICAgICBbJ3pjYXNoVGVzdCcsIDMwMF0sXG4gICAgICBdXG4gICAgKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=attestation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../../../../test/paygo/attestation.ts"],"names":[],"mappings":""}