@bitgo-beta/utxo-core 1.8.1-beta.61 → 1.8.1-beta.610

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/dist/cjs/src/Output.d.ts.map +1 -0
  2. package/dist/cjs/src/Output.js +60 -0
  3. package/dist/cjs/src/bip322/index.d.ts +5 -0
  4. package/dist/cjs/src/bip322/index.d.ts.map +1 -0
  5. package/dist/cjs/src/bip322/index.js +21 -0
  6. package/dist/cjs/src/bip322/toSign.d.ts +25 -0
  7. package/dist/cjs/src/bip322/toSign.d.ts.map +1 -0
  8. package/dist/cjs/src/bip322/toSign.js +126 -0
  9. package/dist/cjs/src/bip322/toSpend.d.ts +22 -0
  10. package/dist/cjs/src/bip322/toSpend.d.ts.map +1 -0
  11. package/dist/cjs/src/bip322/toSpend.js +72 -0
  12. package/dist/cjs/src/bip322/utils.d.ts +18 -0
  13. package/dist/cjs/src/bip322/utils.d.ts.map +1 -0
  14. package/dist/cjs/src/bip322/utils.js +115 -0
  15. package/dist/cjs/src/bip322/verify.d.ts +12 -0
  16. package/dist/cjs/src/bip322/verify.d.ts.map +1 -0
  17. package/dist/cjs/src/bip322/verify.js +115 -0
  18. package/dist/cjs/src/bip32utils.d.ts +16 -0
  19. package/dist/cjs/src/bip32utils.d.ts.map +1 -0
  20. package/dist/cjs/src/bip32utils.js +71 -0
  21. package/dist/cjs/src/bip65/index.d.ts.map +1 -0
  22. package/dist/{src → cjs/src}/bip65/index.js +1 -1
  23. package/dist/cjs/src/bip65/locktime.d.ts.map +1 -0
  24. package/dist/cjs/src/bip65/locktime.js +37 -0
  25. package/dist/{src → cjs/src}/descriptor/DescriptorMap.d.ts +1 -1
  26. package/dist/cjs/src/descriptor/DescriptorMap.d.ts.map +1 -0
  27. package/dist/cjs/src/descriptor/DescriptorMap.js +9 -0
  28. package/dist/{src → cjs/src}/descriptor/Output.d.ts +1 -1
  29. package/dist/cjs/src/descriptor/Output.d.ts.map +1 -0
  30. package/dist/cjs/src/descriptor/Output.js +41 -0
  31. package/dist/{src → cjs/src}/descriptor/VirtualSize.d.ts +1 -1
  32. package/dist/cjs/src/descriptor/VirtualSize.d.ts.map +1 -0
  33. package/dist/cjs/src/descriptor/VirtualSize.js +100 -0
  34. package/dist/{src → cjs/src}/descriptor/address.d.ts +1 -1
  35. package/dist/cjs/src/descriptor/address.d.ts.map +1 -0
  36. package/dist/{src → cjs/src}/descriptor/address.js +1 -1
  37. package/dist/{src → cjs/src}/descriptor/derive.d.ts +1 -1
  38. package/dist/cjs/src/descriptor/derive.d.ts.map +1 -0
  39. package/dist/cjs/src/descriptor/derive.js +45 -0
  40. package/dist/{src → cjs/src}/descriptor/fromFixedScriptWallet.d.ts +1 -1
  41. package/dist/cjs/src/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  42. package/dist/cjs/src/descriptor/fromFixedScriptWallet.js +88 -0
  43. package/dist/{src → cjs/src}/descriptor/index.d.ts +1 -0
  44. package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
  45. package/dist/{src → cjs/src}/descriptor/index.js +2 -1
  46. package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts +14 -0
  47. package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  48. package/dist/cjs/src/descriptor/parse/PatternMatcher.js +60 -0
  49. package/dist/{src → cjs/src}/descriptor/psbt/assertSatisfiable.d.ts +1 -1
  50. package/dist/cjs/src/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  51. package/dist/cjs/src/descriptor/psbt/assertSatisfiable.js +74 -0
  52. package/dist/{src → cjs/src}/descriptor/psbt/createPsbt.d.ts +4 -0
  53. package/dist/cjs/src/descriptor/psbt/createPsbt.d.ts.map +1 -0
  54. package/dist/cjs/src/descriptor/psbt/createPsbt.js +107 -0
  55. package/dist/{src → cjs/src}/descriptor/psbt/findDescriptors.d.ts +1 -1
  56. package/dist/cjs/src/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  57. package/dist/cjs/src/descriptor/psbt/findDescriptors.js +98 -0
  58. package/dist/cjs/src/descriptor/psbt/index.d.ts.map +1 -0
  59. package/dist/{src → cjs/src}/descriptor/psbt/index.js +1 -1
  60. package/dist/{src → cjs/src}/descriptor/psbt/parse.d.ts +1 -1
  61. package/dist/cjs/src/descriptor/psbt/parse.d.ts.map +1 -0
  62. package/dist/cjs/src/descriptor/psbt/parse.js +87 -0
  63. package/dist/{src → cjs/src}/descriptor/psbt/sign.d.ts +4 -4
  64. package/dist/cjs/src/descriptor/psbt/sign.d.ts.map +1 -0
  65. package/dist/cjs/src/descriptor/psbt/sign.js +42 -0
  66. package/dist/{src → cjs/src}/descriptor/psbt/wrap.d.ts +1 -1
  67. package/dist/cjs/src/descriptor/psbt/wrap.d.ts.map +1 -0
  68. package/dist/cjs/src/descriptor/psbt/wrap.js +76 -0
  69. package/dist/cjs/src/dustThreshold.d.ts.map +1 -0
  70. package/dist/cjs/src/dustThreshold.js +134 -0
  71. package/dist/{src → cjs/src}/index.d.ts +1 -0
  72. package/dist/cjs/src/index.d.ts.map +1 -0
  73. package/dist/{src → cjs/src}/index.js +3 -2
  74. package/dist/cjs/src/paygo/attestation.d.ts +11 -0
  75. package/dist/cjs/src/paygo/attestation.d.ts.map +1 -0
  76. package/dist/cjs/src/paygo/attestation.js +58 -0
  77. package/dist/cjs/src/paygo/index.d.ts +3 -0
  78. package/dist/cjs/src/paygo/index.d.ts.map +1 -0
  79. package/dist/cjs/src/paygo/index.js +19 -0
  80. package/dist/{src/paygo/ExtractAddressPayGoAttestation.d.ts → cjs/src/paygo/parsePayGoAttestation.d.ts} +8 -3
  81. package/dist/cjs/src/paygo/parsePayGoAttestation.d.ts.map +1 -0
  82. package/dist/cjs/src/paygo/parsePayGoAttestation.js +50 -0
  83. package/dist/cjs/src/paygo/psbt/Errors.d.ts +22 -0
  84. package/dist/cjs/src/paygo/psbt/Errors.d.ts.map +1 -0
  85. package/dist/cjs/src/paygo/psbt/Errors.js +44 -0
  86. package/dist/cjs/src/paygo/psbt/index.d.ts +2 -0
  87. package/dist/cjs/src/paygo/psbt/index.d.ts.map +1 -0
  88. package/dist/{src/paygo → cjs/src/paygo/psbt}/index.js +2 -2
  89. package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts +29 -0
  90. package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  91. package/dist/cjs/src/paygo/psbt/payGoAddressProof.js +124 -0
  92. package/dist/{src → cjs/src}/testutil/descriptor/descriptors.d.ts +4 -1
  93. package/dist/cjs/src/testutil/descriptor/descriptors.d.ts.map +1 -0
  94. package/dist/cjs/src/testutil/descriptor/descriptors.js +162 -0
  95. package/dist/cjs/src/testutil/descriptor/index.d.ts.map +1 -0
  96. package/dist/{src → cjs/src}/testutil/descriptor/index.js +1 -1
  97. package/dist/{src → cjs/src}/testutil/descriptor/mock.utils.d.ts +3 -1
  98. package/dist/cjs/src/testutil/descriptor/mock.utils.d.ts.map +1 -0
  99. package/dist/cjs/src/testutil/descriptor/mock.utils.js +92 -0
  100. package/dist/cjs/src/testutil/descriptor/psbt.utils.d.ts.map +1 -0
  101. package/dist/cjs/src/testutil/descriptor/psbt.utils.js +21 -0
  102. package/dist/cjs/src/testutil/fixtures.utils.d.ts.map +1 -0
  103. package/dist/cjs/src/testutil/fixtures.utils.js +127 -0
  104. package/dist/{src → cjs/src}/testutil/generatePayGoAttestationProof.utils.d.ts +1 -1
  105. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  106. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.js +38 -0
  107. package/dist/{src → cjs/src}/testutil/index.d.ts +1 -0
  108. package/dist/cjs/src/testutil/index.d.ts.map +1 -0
  109. package/dist/{src → cjs/src}/testutil/index.js +2 -1
  110. package/dist/{src → cjs/src}/testutil/key.utils.d.ts +1 -1
  111. package/dist/cjs/src/testutil/key.utils.d.ts.map +1 -0
  112. package/dist/cjs/src/testutil/key.utils.js +60 -0
  113. package/dist/cjs/src/testutil/toPlainObject.utils.d.ts.map +1 -0
  114. package/dist/cjs/src/testutil/toPlainObject.utils.js +89 -0
  115. package/dist/cjs/src/testutil/trimMessagePrefix.d.ts +11 -0
  116. package/dist/cjs/src/testutil/trimMessagePrefix.d.ts.map +1 -0
  117. package/dist/cjs/src/testutil/trimMessagePrefix.js +60 -0
  118. package/dist/cjs/src/xOnlyPubkey.d.ts.map +1 -0
  119. package/dist/cjs/src/xOnlyPubkey.js +18 -0
  120. package/dist/cjs/test/Output.d.ts +2 -0
  121. package/dist/cjs/test/Output.d.ts.map +1 -0
  122. package/dist/cjs/test/Output.js +70 -0
  123. package/dist/cjs/test/bip322/bip322.utils.d.ts +7 -0
  124. package/dist/cjs/test/bip322/bip322.utils.d.ts.map +1 -0
  125. package/dist/cjs/test/bip322/bip322.utils.js +16 -0
  126. package/dist/cjs/test/bip322/toSign.d.ts +2 -0
  127. package/dist/cjs/test/bip322/toSign.d.ts.map +1 -0
  128. package/dist/cjs/test/bip322/toSign.js +133 -0
  129. package/dist/cjs/test/bip322/toSpend.d.ts +2 -0
  130. package/dist/cjs/test/bip322/toSpend.d.ts.map +1 -0
  131. package/dist/cjs/test/bip322/toSpend.js +70 -0
  132. package/dist/cjs/test/bip322/utils.d.ts +2 -0
  133. package/dist/cjs/test/bip322/utils.d.ts.map +1 -0
  134. package/dist/cjs/test/bip322/utils.js +79 -0
  135. package/dist/cjs/test/bip322/verify.d.ts +2 -0
  136. package/dist/cjs/test/bip322/verify.d.ts.map +1 -0
  137. package/dist/cjs/test/bip322/verify.js +293 -0
  138. package/dist/cjs/test/bip32utils.d.ts +2 -0
  139. package/dist/cjs/test/bip32utils.d.ts.map +1 -0
  140. package/dist/cjs/test/bip32utils.js +62 -0
  141. package/dist/cjs/test/bip65/locktime.d.ts +2 -0
  142. package/dist/cjs/test/bip65/locktime.d.ts.map +1 -0
  143. package/dist/cjs/test/bip65/locktime.js +22 -0
  144. package/dist/cjs/test/descriptor/Output.d.ts +2 -0
  145. package/dist/cjs/test/descriptor/Output.d.ts.map +1 -0
  146. package/dist/cjs/test/descriptor/Output.js +44 -0
  147. package/dist/cjs/test/descriptor/derive.d.ts +2 -0
  148. package/dist/cjs/test/descriptor/derive.d.ts.map +1 -0
  149. package/dist/cjs/test/descriptor/derive.js +27 -0
  150. package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts +2 -0
  151. package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  152. package/dist/cjs/test/descriptor/fromFixedScriptWallet.js +145 -0
  153. package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts +2 -0
  154. package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  155. package/dist/cjs/test/descriptor/parse/PatternMatcher.js +120 -0
  156. package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts +2 -0
  157. package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts.map +1 -0
  158. package/dist/cjs/test/descriptor/psbt/VirtualSize.js +71 -0
  159. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts +2 -0
  160. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  161. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.js +56 -0
  162. package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts +2 -0
  163. package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  164. package/dist/cjs/test/descriptor/psbt/findDescriptors.js +70 -0
  165. package/dist/cjs/test/descriptor/psbt/psbt.d.ts +2 -0
  166. package/dist/cjs/test/descriptor/psbt/psbt.d.ts.map +1 -0
  167. package/dist/cjs/test/descriptor/psbt/psbt.js +211 -0
  168. package/dist/cjs/test/dustThreshold.d.ts +2 -0
  169. package/dist/cjs/test/dustThreshold.d.ts.map +1 -0
  170. package/dist/cjs/test/dustThreshold.js +110 -0
  171. package/dist/cjs/test/paygo/attestation.d.ts +2 -0
  172. package/dist/cjs/test/paygo/attestation.d.ts.map +1 -0
  173. package/dist/cjs/test/paygo/attestation.js +23 -0
  174. package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts +2 -0
  175. package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts.map +1 -0
  176. package/dist/cjs/test/paygo/parsePayGoAttestation.js +75 -0
  177. package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts +9 -0
  178. package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  179. package/dist/cjs/test/paygo/psbt/payGoAddressProof.js +163 -0
  180. package/dist/cjs/test/xOnlyPubkey.d.ts +2 -0
  181. package/dist/cjs/test/xOnlyPubkey.d.ts.map +1 -0
  182. package/dist/cjs/test/xOnlyPubkey.js +18 -0
  183. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  184. package/dist/esm/Output.d.ts +43 -0
  185. package/dist/esm/Output.js +53 -0
  186. package/dist/esm/bip322/index.d.ts +5 -0
  187. package/dist/esm/bip322/index.d.ts.map +1 -0
  188. package/dist/esm/bip322/index.js +5 -0
  189. package/dist/esm/bip322/toSign.d.ts +25 -0
  190. package/dist/esm/bip322/toSign.d.ts.map +1 -0
  191. package/dist/esm/bip322/toSign.js +120 -0
  192. package/dist/esm/bip322/toSpend.d.ts +22 -0
  193. package/dist/esm/bip322/toSpend.d.ts.map +1 -0
  194. package/dist/esm/bip322/toSpend.js +66 -0
  195. package/dist/esm/bip322/utils.d.ts +18 -0
  196. package/dist/esm/bip322/utils.d.ts.map +1 -0
  197. package/dist/esm/bip322/utils.js +77 -0
  198. package/dist/esm/bip322/verify.d.ts +12 -0
  199. package/dist/esm/bip322/verify.d.ts.map +1 -0
  200. package/dist/esm/bip322/verify.js +76 -0
  201. package/dist/esm/bip32utils.d.ts +16 -0
  202. package/dist/esm/bip32utils.d.ts.map +1 -0
  203. package/dist/esm/bip32utils.js +34 -0
  204. package/dist/esm/bip65/index.d.ts +2 -0
  205. package/dist/esm/bip65/index.js +2 -0
  206. package/dist/esm/bip65/locktime.d.ts +8 -0
  207. package/dist/esm/bip65/locktime.js +34 -0
  208. package/dist/esm/descriptor/DescriptorMap.d.ts +9 -0
  209. package/dist/{src → esm}/descriptor/DescriptorMap.d.ts.map +1 -1
  210. package/dist/esm/descriptor/DescriptorMap.js +6 -0
  211. package/dist/esm/descriptor/Output.d.ts +23 -0
  212. package/dist/{src → esm}/descriptor/Output.d.ts.map +1 -1
  213. package/dist/esm/descriptor/Output.js +32 -0
  214. package/dist/esm/descriptor/VirtualSize.d.ts +23 -0
  215. package/dist/{src → esm}/descriptor/VirtualSize.d.ts.map +1 -1
  216. package/dist/esm/descriptor/VirtualSize.js +94 -0
  217. package/dist/esm/descriptor/address.d.ts +5 -0
  218. package/dist/{src → esm}/descriptor/address.d.ts.map +1 -1
  219. package/dist/esm/descriptor/address.js +11 -0
  220. package/dist/esm/descriptor/derive.d.ts +13 -0
  221. package/dist/{src → esm}/descriptor/derive.d.ts.map +1 -1
  222. package/dist/esm/descriptor/derive.js +38 -0
  223. package/dist/esm/descriptor/fromFixedScriptWallet.d.ts +16 -0
  224. package/dist/{src → esm}/descriptor/fromFixedScriptWallet.d.ts.map +1 -1
  225. package/dist/esm/descriptor/fromFixedScriptWallet.js +51 -0
  226. package/dist/esm/descriptor/index.d.ts +11 -0
  227. package/dist/{src → esm}/descriptor/index.d.ts.map +1 -1
  228. package/dist/esm/descriptor/index.js +11 -0
  229. package/dist/esm/descriptor/parse/PatternMatcher.d.ts +14 -0
  230. package/dist/esm/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  231. package/dist/esm/descriptor/parse/PatternMatcher.js +56 -0
  232. package/dist/esm/descriptor/psbt/assertSatisfiable.d.ts +20 -0
  233. package/dist/{src → esm}/descriptor/psbt/assertSatisfiable.d.ts.map +1 -1
  234. package/dist/esm/descriptor/psbt/assertSatisfiable.js +69 -0
  235. package/dist/esm/descriptor/psbt/createPsbt.d.ts +23 -0
  236. package/dist/esm/descriptor/psbt/createPsbt.d.ts.map +1 -0
  237. package/dist/esm/descriptor/psbt/createPsbt.js +69 -0
  238. package/dist/esm/descriptor/psbt/findDescriptors.d.ts +26 -0
  239. package/dist/{src → esm}/descriptor/psbt/findDescriptors.d.ts.map +1 -1
  240. package/dist/esm/descriptor/psbt/findDescriptors.js +94 -0
  241. package/dist/esm/descriptor/psbt/index.d.ts +7 -0
  242. package/dist/esm/descriptor/psbt/index.js +7 -0
  243. package/dist/esm/descriptor/psbt/parse.d.ts +27 -0
  244. package/dist/{src → esm}/descriptor/psbt/parse.d.ts.map +1 -1
  245. package/dist/esm/descriptor/psbt/parse.js +51 -0
  246. package/dist/esm/descriptor/psbt/sign.d.ts +26 -0
  247. package/dist/esm/descriptor/psbt/sign.d.ts.map +1 -0
  248. package/dist/esm/descriptor/psbt/sign.js +34 -0
  249. package/dist/esm/descriptor/psbt/wrap.d.ts +12 -0
  250. package/dist/{src → esm}/descriptor/psbt/wrap.d.ts.map +1 -1
  251. package/dist/esm/descriptor/psbt/wrap.js +38 -0
  252. package/dist/esm/dustThreshold.d.ts +4 -0
  253. package/dist/esm/dustThreshold.js +97 -0
  254. package/dist/esm/index.d.ts +10 -0
  255. package/dist/{src → esm}/index.d.ts.map +1 -1
  256. package/dist/esm/index.js +10 -0
  257. package/dist/esm/paygo/attestation.d.ts +11 -0
  258. package/dist/esm/paygo/attestation.d.ts.map +1 -0
  259. package/dist/esm/paygo/attestation.js +18 -0
  260. package/dist/esm/paygo/index.d.ts +3 -0
  261. package/dist/esm/paygo/index.d.ts.map +1 -0
  262. package/dist/esm/paygo/index.js +3 -0
  263. package/dist/esm/paygo/parsePayGoAttestation.d.ts +16 -0
  264. package/dist/esm/paygo/parsePayGoAttestation.d.ts.map +1 -0
  265. package/dist/esm/paygo/parsePayGoAttestation.js +43 -0
  266. package/dist/esm/paygo/psbt/Errors.d.ts +22 -0
  267. package/dist/esm/paygo/psbt/Errors.d.ts.map +1 -0
  268. package/dist/esm/paygo/psbt/Errors.js +35 -0
  269. package/dist/esm/paygo/psbt/index.d.ts +2 -0
  270. package/dist/esm/paygo/psbt/index.d.ts.map +1 -0
  271. package/dist/esm/paygo/psbt/index.js +2 -0
  272. package/dist/esm/paygo/psbt/payGoAddressProof.d.ts +29 -0
  273. package/dist/esm/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  274. package/dist/esm/paygo/psbt/payGoAddressProof.js +85 -0
  275. package/dist/esm/testutil/descriptor/descriptors.d.ts +13 -0
  276. package/dist/esm/testutil/descriptor/descriptors.d.ts.map +1 -0
  277. package/dist/esm/testutil/descriptor/descriptors.js +150 -0
  278. package/dist/esm/testutil/descriptor/index.d.ts +4 -0
  279. package/dist/esm/testutil/descriptor/index.js +4 -0
  280. package/dist/esm/testutil/descriptor/mock.utils.d.ts +36 -0
  281. package/dist/esm/testutil/descriptor/mock.utils.d.ts.map +1 -0
  282. package/dist/esm/testutil/descriptor/mock.utils.js +53 -0
  283. package/dist/esm/testutil/descriptor/psbt.utils.d.ts +4 -0
  284. package/dist/{src → esm}/testutil/descriptor/psbt.utils.d.ts.map +1 -1
  285. package/dist/esm/testutil/descriptor/psbt.utils.js +17 -0
  286. package/dist/esm/testutil/fixtures.utils.d.ts +15 -0
  287. package/dist/{src → esm}/testutil/fixtures.utils.js +5 -42
  288. package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
  289. package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  290. package/dist/esm/testutil/generatePayGoAttestationProof.utils.js +32 -0
  291. package/dist/esm/testutil/index.d.ts +6 -0
  292. package/dist/{src → esm}/testutil/index.d.ts.map +1 -1
  293. package/dist/esm/testutil/index.js +6 -0
  294. package/dist/esm/testutil/key.utils.d.ts +16 -0
  295. package/dist/{src → esm}/testutil/key.utils.d.ts.map +1 -1
  296. package/dist/esm/testutil/key.utils.js +22 -0
  297. package/dist/esm/testutil/toPlainObject.utils.d.ts +11 -0
  298. package/dist/{src → esm}/testutil/toPlainObject.utils.d.ts.map +1 -1
  299. package/dist/esm/testutil/toPlainObject.utils.js +85 -0
  300. package/dist/esm/testutil/trimMessagePrefix.d.ts +11 -0
  301. package/dist/esm/testutil/trimMessagePrefix.d.ts.map +1 -0
  302. package/dist/esm/testutil/trimMessagePrefix.js +24 -0
  303. package/dist/esm/xOnlyPubkey.d.ts +2 -0
  304. package/dist/esm/xOnlyPubkey.js +15 -0
  305. package/package.json +50 -25
  306. package/dist/src/Output.js +0 -60
  307. package/dist/src/bip32utils.d.ts +0 -16
  308. package/dist/src/bip32utils.d.ts.map +0 -1
  309. package/dist/src/bip32utils.js +0 -72
  310. package/dist/src/bip65/locktime.js +0 -37
  311. package/dist/src/descriptor/DescriptorMap.js +0 -9
  312. package/dist/src/descriptor/Output.js +0 -41
  313. package/dist/src/descriptor/VirtualSize.js +0 -100
  314. package/dist/src/descriptor/derive.js +0 -45
  315. package/dist/src/descriptor/fromFixedScriptWallet.js +0 -88
  316. package/dist/src/descriptor/psbt/assertSatisfiable.js +0 -74
  317. package/dist/src/descriptor/psbt/createPsbt.d.ts.map +0 -1
  318. package/dist/src/descriptor/psbt/createPsbt.js +0 -82
  319. package/dist/src/descriptor/psbt/findDescriptors.js +0 -98
  320. package/dist/src/descriptor/psbt/parse.js +0 -87
  321. package/dist/src/descriptor/psbt/sign.d.ts.map +0 -1
  322. package/dist/src/descriptor/psbt/sign.js +0 -42
  323. package/dist/src/descriptor/psbt/wrap.js +0 -76
  324. package/dist/src/dustThreshold.js +0 -134
  325. package/dist/src/paygo/ExtractAddressPayGoAttestation.d.ts.map +0 -1
  326. package/dist/src/paygo/ExtractAddressPayGoAttestation.js +0 -44
  327. package/dist/src/paygo/index.d.ts +0 -2
  328. package/dist/src/paygo/index.d.ts.map +0 -1
  329. package/dist/src/testutil/descriptor/descriptors.d.ts.map +0 -1
  330. package/dist/src/testutil/descriptor/descriptors.js +0 -125
  331. package/dist/src/testutil/descriptor/mock.utils.d.ts.map +0 -1
  332. package/dist/src/testutil/descriptor/mock.utils.js +0 -91
  333. package/dist/src/testutil/descriptor/psbt.utils.js +0 -20
  334. package/dist/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +0 -1
  335. package/dist/src/testutil/generatePayGoAttestationProof.utils.js +0 -43
  336. package/dist/src/testutil/key.utils.js +0 -59
  337. package/dist/src/testutil/toPlainObject.utils.js +0 -75
  338. package/dist/src/xOnlyPubkey.js +0 -18
  339. /package/dist/{src → cjs/src}/Output.d.ts +0 -0
  340. /package/dist/{src → cjs/src}/bip65/index.d.ts +0 -0
  341. /package/dist/{src → cjs/src}/bip65/locktime.d.ts +0 -0
  342. /package/dist/{src → cjs/src}/descriptor/psbt/index.d.ts +0 -0
  343. /package/dist/{src → cjs/src}/dustThreshold.d.ts +0 -0
  344. /package/dist/{src → cjs/src}/testutil/descriptor/index.d.ts +0 -0
  345. /package/dist/{src → cjs/src}/testutil/descriptor/psbt.utils.d.ts +0 -0
  346. /package/dist/{src → cjs/src}/testutil/fixtures.utils.d.ts +0 -0
  347. /package/dist/{src → cjs/src}/testutil/toPlainObject.utils.d.ts +0 -0
  348. /package/dist/{src → cjs/src}/xOnlyPubkey.d.ts +0 -0
  349. /package/dist/{src → esm}/Output.d.ts.map +0 -0
  350. /package/dist/{src → esm}/bip65/index.d.ts.map +0 -0
  351. /package/dist/{src → esm}/bip65/locktime.d.ts.map +0 -0
  352. /package/dist/{src → esm}/descriptor/psbt/index.d.ts.map +0 -0
  353. /package/dist/{src → esm}/dustThreshold.d.ts.map +0 -0
  354. /package/dist/{src → esm}/testutil/descriptor/index.d.ts.map +0 -0
  355. /package/dist/{src → esm}/testutil/fixtures.utils.d.ts.map +0 -0
  356. /package/dist/{src → esm}/xOnlyPubkey.d.ts.map +0 -0
@@ -0,0 +1,12 @@
1
+ import { Psbt as WasmPsbt } from '@bitgo/wasm-utxo';
2
+ import * as utxolib from '@bitgo-beta/utxo-lib';
3
+ export declare function toWrappedPsbt(psbt: utxolib.bitgo.UtxoPsbt | utxolib.Psbt | Buffer | Uint8Array): WasmPsbt;
4
+ export declare function toUtxoPsbt(psbt: WasmPsbt | Buffer | Uint8Array, network: utxolib.Network): utxolib.bitgo.UtxoPsbt;
5
+ /**
6
+ * Use `wasm-miniscript` to finalize a PSBT.
7
+ * Miniscript based finalization is more powerful than bitcoinjs-lib's / utxo-lib's finalization
8
+ * and can finalize more complex scripts (e.g. miniscript descriptors).
9
+ * @param psbt
10
+ */
11
+ export declare function finalizePsbt(psbt: utxolib.bitgo.UtxoPsbt): void;
12
+ //# sourceMappingURL=wrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/psbt/wrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAQzG;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAQjH;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAU/D"}
1
+ {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/psbt/wrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAQzG;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAQjH;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAU/D"}
@@ -0,0 +1,38 @@
1
+ import { Psbt as WasmPsbt } from '@bitgo/wasm-utxo';
2
+ import * as utxolib from '@bitgo-beta/utxo-lib';
3
+ export function toWrappedPsbt(psbt) {
4
+ if (psbt instanceof utxolib.bitgo.UtxoPsbt || psbt instanceof utxolib.Psbt) {
5
+ psbt = psbt.toBuffer();
6
+ }
7
+ if (psbt instanceof Buffer || psbt instanceof Uint8Array) {
8
+ return WasmPsbt.deserialize(psbt);
9
+ }
10
+ throw new Error('Invalid input');
11
+ }
12
+ export function toUtxoPsbt(psbt, network) {
13
+ if (psbt instanceof WasmPsbt) {
14
+ psbt = psbt.serialize();
15
+ }
16
+ if (psbt instanceof Buffer || psbt instanceof Uint8Array) {
17
+ return utxolib.bitgo.UtxoPsbt.fromBuffer(Buffer.from(psbt), { network });
18
+ }
19
+ throw new Error('Invalid input');
20
+ }
21
+ /**
22
+ * Use `wasm-miniscript` to finalize a PSBT.
23
+ * Miniscript based finalization is more powerful than bitcoinjs-lib's / utxo-lib's finalization
24
+ * and can finalize more complex scripts (e.g. miniscript descriptors).
25
+ * @param psbt
26
+ */
27
+ export function finalizePsbt(psbt) {
28
+ if (utxolib.getMainnet(psbt.network) !== utxolib.networks.bitcoin) {
29
+ throw new Error('only bitcoin and testnet are supported');
30
+ }
31
+ const wrappedPsbt = toWrappedPsbt(psbt);
32
+ wrappedPsbt.finalize();
33
+ const unwrappedPsbt = toUtxoPsbt(wrappedPsbt, psbt.network);
34
+ for (let i = 0; i < psbt.data.inputs.length; i++) {
35
+ psbt.data.inputs[i] = unwrappedPsbt.data.inputs[i];
36
+ }
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL3BzYnQvd3JhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxJQUFJLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFFaEQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFpRTtJQUM3RixJQUFJLElBQUksWUFBWSxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLFlBQVksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNFLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksSUFBSSxZQUFZLE1BQU0sSUFBSSxJQUFJLFlBQVksVUFBVSxFQUFFLENBQUM7UUFDekQsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQW9DLEVBQUUsT0FBd0I7SUFDdkYsSUFBSSxJQUFJLFlBQVksUUFBUSxFQUFFLENBQUM7UUFDN0IsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxJQUFJLFlBQVksTUFBTSxJQUFJLElBQUksWUFBWSxVQUFVLEVBQUUsQ0FBQztRQUN6RCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQTRCO0lBQ3ZELElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsRSxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkIsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHNidCBhcyBXYXNtUHNidCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1dyYXBwZWRQc2J0KHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQgfCB1dHhvbGliLlBzYnQgfCBCdWZmZXIgfCBVaW50OEFycmF5KTogV2FzbVBzYnQge1xuICBpZiAocHNidCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQgfHwgcHNidCBpbnN0YW5jZW9mIHV0eG9saWIuUHNidCkge1xuICAgIHBzYnQgPSBwc2J0LnRvQnVmZmVyKCk7XG4gIH1cbiAgaWYgKHBzYnQgaW5zdGFuY2VvZiBCdWZmZXIgfHwgcHNidCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICByZXR1cm4gV2FzbVBzYnQuZGVzZXJpYWxpemUocHNidCk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGlucHV0Jyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1V0eG9Qc2J0KHBzYnQ6IFdhc21Qc2J0IHwgQnVmZmVyIHwgVWludDhBcnJheSwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogdXR4b2xpYi5iaXRnby5VdHhvUHNidCB7XG4gIGlmIChwc2J0IGluc3RhbmNlb2YgV2FzbVBzYnQpIHtcbiAgICBwc2J0ID0gcHNidC5zZXJpYWxpemUoKTtcbiAgfVxuICBpZiAocHNidCBpbnN0YW5jZW9mIEJ1ZmZlciB8fCBwc2J0IGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgIHJldHVybiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0LmZyb21CdWZmZXIoQnVmZmVyLmZyb20ocHNidCksIHsgbmV0d29yayB9KTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaW5wdXQnKTtcbn1cblxuLyoqXG4gKiBVc2UgYHdhc20tbWluaXNjcmlwdGAgdG8gZmluYWxpemUgYSBQU0JULlxuICogTWluaXNjcmlwdCBiYXNlZCBmaW5hbGl6YXRpb24gaXMgbW9yZSBwb3dlcmZ1bCB0aGFuIGJpdGNvaW5qcy1saWIncyAvIHV0eG8tbGliJ3MgZmluYWxpemF0aW9uXG4gKiBhbmQgY2FuIGZpbmFsaXplIG1vcmUgY29tcGxleCBzY3JpcHRzIChlLmcuIG1pbmlzY3JpcHQgZGVzY3JpcHRvcnMpLlxuICogQHBhcmFtIHBzYnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmFsaXplUHNidChwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0KTogdm9pZCB7XG4gIGlmICh1dHhvbGliLmdldE1haW5uZXQocHNidC5uZXR3b3JrKSAhPT0gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdvbmx5IGJpdGNvaW4gYW5kIHRlc3RuZXQgYXJlIHN1cHBvcnRlZCcpO1xuICB9XG4gIGNvbnN0IHdyYXBwZWRQc2J0ID0gdG9XcmFwcGVkUHNidChwc2J0KTtcbiAgd3JhcHBlZFBzYnQuZmluYWxpemUoKTtcbiAgY29uc3QgdW53cmFwcGVkUHNidCA9IHRvVXR4b1BzYnQod3JhcHBlZFBzYnQsIHBzYnQubmV0d29yayk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcHNidC5kYXRhLmlucHV0cy5sZW5ndGg7IGkrKykge1xuICAgIHBzYnQuZGF0YS5pbnB1dHNbaV0gPSB1bndyYXBwZWRQc2J0LmRhdGEuaW5wdXRzW2ldO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ export declare function getDustThresholdSat(network: utxolib.Network, outputSize: number, isWitness: boolean): number;
3
+ export declare function getDustThresholdSatForOutputScript(network: utxolib.Network, script: Buffer): number;
4
+ //# sourceMappingURL=dustThreshold.d.ts.map
@@ -0,0 +1,97 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ /**
3
+ * Checks if the output script is a witness script or not
4
+ * @param script
5
+ * @returns true if the script is a witness script
6
+ */
7
+ function isWitnessOutputScript(script) {
8
+ /**
9
+ * Source: https://github.com/bitcoin/bitcoin/blob/v28.1/src/script/script.cpp#L241-L257
10
+ * A witness program is any valid CScript that consists of a 1-byte push opcode
11
+ * followed by a data push between 2 and 40 bytes.
12
+ */
13
+ if (script.length < 4 || script.length > 42) {
14
+ return false;
15
+ }
16
+ if (script[0] !== utxolib.opcodes.OP_0 && (script[0] < utxolib.opcodes.OP_1 || script[0] > utxolib.opcodes.OP_16)) {
17
+ return false;
18
+ }
19
+ return script[1] + 2 === script.length;
20
+ }
21
+ function getDustRelayLimit(network) {
22
+ network = utxolib.getMainnet(network);
23
+ switch (network) {
24
+ case utxolib.networks.bitcoin:
25
+ case utxolib.networks.bitcoingold:
26
+ case utxolib.networks.dash:
27
+ // btc: https://github.com/bitcoin/bitcoin/blob/v28.0/src/policy/policy.h#L50-L55
28
+ // btg: https://github.com/BTCGPU/BTCGPU/blob/v0.17.3/src/policy/policy.h#L48
29
+ // dash: https://github.com/dashpay/dash/blob/v22.0.0-beta.1/src/policy/policy.h#L41-L46
30
+ return { feeRateSatKB: 3000 };
31
+ case utxolib.networks.bitcoincash:
32
+ // https://github.com/bitcoin-cash-node/bitcoin-cash-node/blob/v27.1.0/src/policy/policy.h#L76-L83
33
+ // I actually haven't looked at BSV and am depressed that I still need to handle the case here
34
+ return { feeRateSatKB: 1000 };
35
+ case utxolib.networks.dogecoin:
36
+ // https://github.com/dogecoin/dogecoin/blob/v1.14.8/src/policy/policy.h#L65-L81
37
+ // (COIN / 100) / 10;
38
+ return { satAmount: 1000000 };
39
+ case utxolib.networks.litecoin:
40
+ // https://github.com/litecoin-project/litecoin/blob/master/src/policy/policy.h#L47-L52
41
+ return { feeRateSatKB: 30000 };
42
+ case utxolib.networks.zcash:
43
+ // https://github.com/zcash/zcash/blob/master/src/primitives/transaction.h#L396-L399
44
+ // https://github.com/zcash/zcash/blob/v6.0.0/src/policy/policy.h#L43-L89 (I don't quite get it)
45
+ return { satAmount: 300 };
46
+ case utxolib.networks.bitcoinsv:
47
+ throw new Error('deprecated coin');
48
+ default:
49
+ throw new Error('unsupported network');
50
+ }
51
+ }
52
+ function getSpendSize(network, outputSize, isWitness) {
53
+ network = utxolib.getMainnet(network);
54
+ switch (network) {
55
+ case utxolib.networks.bitcoin:
56
+ case utxolib.networks.bitcoincash:
57
+ case utxolib.networks.bitcoingold:
58
+ case utxolib.networks.litecoin:
59
+ /*
60
+ btc: https://github.com/bitcoin/bitcoin/blob/v28.0/src/policy/policy.cpp#L26-L68
61
+ bch: https://github.com/bitcoin-cash-node/bitcoin-cash-node/blob/v27.1.0/src/policy/policy.cpp#L18-L36 (btc-ish)
62
+ btg: https://github.com/BTCGPU/BTCGPU/blob/v0.17.3/src/policy/policy.cpp#L18-L50 (btc-ish)
63
+ ltc: https://github.com/litecoin-project/litecoin/blob/v0.21.4/src/policy/policy.cpp#L15-L47 (btc-ish)
64
+
65
+ The fixed component here is 69.75 for isWitness=true and 150 for isWitness=false.
66
+ */
67
+ return outputSize + 32 + 4 + 1 + 107 / (isWitness ? 4 : 1) + 4;
68
+ case utxolib.networks.dash:
69
+ // dash: https://github.com/dashpay/dash/blob/v21.1.1/src/policy/policy.cpp#L14-L30 (btc-ish)
70
+ // how did they end up with 148? I don't know
71
+ return outputSize + 148;
72
+ case utxolib.networks.dogecoin:
73
+ case utxolib.networks.zcash:
74
+ // doge: https://github.com/dogecoin/dogecoin/blob/v1.14.8/src/policy/policy.h#L65-L81 (hardcoded)
75
+ // zec: https://github.com/zcash/zcash/blob/v6.0.0/src/policy/policy.h#L43-L89 (some weird other thing, doge-ish)
76
+ throw new Error('dust limit is size-independent');
77
+ case utxolib.networks.bitcoinsv:
78
+ throw new Error('deprecated coin');
79
+ default:
80
+ throw new Error('unsupported network');
81
+ }
82
+ }
83
+ export function getDustThresholdSat(network, outputSize, isWitness) {
84
+ const dustLimit = getDustRelayLimit(network);
85
+ if ('satAmount' in dustLimit) {
86
+ return dustLimit.satAmount;
87
+ }
88
+ if ('feeRateSatKB' in dustLimit) {
89
+ const spendSize = getSpendSize(network, outputSize, isWitness);
90
+ return Math.ceil((dustLimit.feeRateSatKB * spendSize) / 1000);
91
+ }
92
+ throw new Error('unexpected dustLimit');
93
+ }
94
+ export function getDustThresholdSatForOutputScript(network, script) {
95
+ return getDustThresholdSat(network, script.length, isWitnessOutputScript(script));
96
+ }
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVzdFRocmVzaG9sZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kdXN0VGhyZXNob2xkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFFaEQ7Ozs7R0FJRztBQUNILFNBQVMscUJBQXFCLENBQUMsTUFBYztJQUMzQzs7OztPQUlHO0lBQ0gsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQzVDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEgsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDekMsQ0FBQztBQTBERCxTQUFTLGlCQUFpQixDQUFDLE9BQXdCO0lBQ2pELE9BQU8sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxFQUFFLENBQUM7UUFDaEIsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUM5QixLQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ2xDLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQ3hCLGtGQUFrRjtZQUNsRiw4RUFBOEU7WUFDOUUsd0ZBQXdGO1lBQ3hGLE9BQU8sRUFBRSxZQUFZLEVB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QUFDO0FBQzFDLENBQUM7QUFFRCxNQUFNLFVBQVUsa0NBQWtDLENBQUMsT0FBd0IsRUFBRSxNQUFjO0lBQ3pGLE9BQU8sbUJBQW1CLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNwRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBvdXRwdXQgc2NyaXB0IGlzIGEgd2l0bmVzcyBzY3JpcHQgb3Igbm90XG4gKiBAcGFyYW0gc2NyaXB0XG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBzY3JpcHQgaXMgYSB3aXRuZXNzIHNjcmlwdFxuICovXG5mdW5jdGlvbiBpc1dpdG5lc3NPdXRwdXRTY3JpcHQoc2NyaXB0OiBCdWZmZXIpOiBib29sZWFuIHtcbiAgLyoqXG4gICAqIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYml0Y29pbi9ibG9iL3YyOC4xL3NyYy9zY3JpcHQvc2NyaXB0LmNwcCNMMjQxLUwyNTdcbiAgICogQSB3aXRuZXNzIHByb2dyYW0gaXMgYW55IHZhbGlkIENTY3JpcHQgdGhhdCBjb25zaXN0cyBvZiBhIDEtYnl0ZSBwdXNoIG9wY29kZVxuICAgKiBmb2xsb3dlZCBieSBhIGRhdGEgcHVzaCBiZXR3ZWVuIDIgYW5kIDQwIGJ5dGVzLlxuICAgKi9cbiAgaWYgKHNjcmlwdC5sZW5ndGggPCA0IHx8IHNjcmlwdC5sZW5ndGggPiA0Mikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoc2NyaXB0WzBdICE9PSB1dHhvbGliLm9wY29kZXMuT1BfMCAmJiAoc2NyaXB0WzBdIDwgdXR4b2xpYi5vcGNvZGVzLk9QXzEgfHwgc2NyaXB0WzBdID4gdXR4b2xpYi5vcGNvZGVzLk9QXzE2KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gc2NyaXB0WzFdICsgMiA9PT0gc2NyaXB0Lmxlbmd0aDtcbn1cblxuLypcblxuVGhlIGR1c3QgdGhyZXNob2xkIGZvciBtb3N0IFVUWE8gY29pbnMgaXMgZGVwZW5kZW50IG9uIG11bHRpcGxlIGZhY3RvcnM6XG5cbigxKSBzcGVuZGFiaWxpdHkgb2YgdGhlIG91dHB1dCAoT1BfUkVUVVJOcyBhcmUgYWxsb3dlZCB0byBiZSAwIHNpemVkKVxuKDIpIHdoZXRoZXIgaXQgaXMgYSB3aXRuZXNzIG9yIG5vbi13aXRuZXNzIG91dHB1dFxuKDMpIGEgcGFydGljdWxhciBmZWUgcmF0ZSAoR2V0RGlzY2FyZFJhdGUoKSlcblxuSSB3aWxsIGRvIHRoZSBhbmFseXNpcyBtb3N0bHkgZm9yIGJpdGNvaW4gaGVyZSBhbmQgdGhlbiBnZW5lcmFsaXplLlxuXG5PbiB0aGUgaW5kZXhlciB3ZSB1c2UgYHNlbmRyYXd0cmFuc2FjdGlvbmAsIHdoaWNoIGNhbGxzIGBJc1N0YW5kYXJkVHhgIGxpa2UgdGhpc1xuXG5odHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXRjb2luL2Jsb2IvdjI4LjAvc3JjL2tlcm5lbC9tZW1wb29sX29wdGlvbnMuaCNMNDdcblxuYGBgXG5pZiAoXG4gIG1fcG9vbC5tX29wdHMucmVxdWlyZV9zdGFuZGFyZCAmJlxuICAgIUlzU3RhbmRhcmRUeCh0eCxcbiAgIG1fcG9vbC5tX29wdHMubWF4X2RhdGFjYXJyaWVyX2J5dGVzLFxuICAgbV9wb29sLm1fb3B0cy5wZXJtaXRfYmFyZV9tdWx0aXNpZyxcbiAgIG1fcG9vbC5tX29wdHMuZHVzdF9yZWxheV9mZWVyYXRlLCByZWFzb24pKVxuYGBgXG5cblRoZSBgZHVzdF9yZWxheV9mZWVyYXRlYCBpbiB0aGlzIGNvbnRleHQgaXMgYSBoYXJkY29kZWQgY29uc3RhbnQ6XG5odHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXRjb2luL2Jsb2IvdjI4LjAvc3JjL3BvbGljeS9wb2xpY3kuaCNMNTAtTDU1XG5cbih0aGF0IGNhbiBhY3R1YWxseSBiZSBvdmVycmlkZGVuIHdpdGggYSBoaWRkZW4gY29tbWFuZFxubGluZSBwYXJhbWV0ZXI6IGh0dHBzOi8vYml0Y29pbi5zdGFja2V4Y2hhbmdlLmNvbS9hLzQxMDgyLzEzNzYwMSlcblxuVGhlcmUgd2UgY2FsbCBgSXNEdXN0YFxuXG5odHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXRjb2luL2Jsb2IvdjI4LjAvc3JjL3BvbGljeS9wb2xpY3kuY3BwI0wxNDQtTDE0NlxuXG5gYGBcbmlmIChJc0R1c3QodHhvdXQsIGR1c3RfcmVsYXlfZmVlKSkge1xuICAgIHJlYXNvbiA9IFwiZHVzdFwiO1xuICAgIHJldHVybiBmYWxzZTtcbn1cbmBgYFxuXG5XaGljaCBjYWxscyBgR2V0RHVzdFRocmVzaG9sZGAsXG5cbmh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpdGNvaW4vYmxvYi92MjguMC9zcmMvcG9saWN5L3BvbGljeS5jcHAjTDY3XG5cblRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgR2V0RHVzdFRocmVzaG9sZGAgY29tcHV0ZXMgdGhlIG1pbmltYWwgdHJhbnNhY3Rpb24gc2l6ZSB0aGF0IGNhbiBzcGVuZCB0aGUgb3V0cHV0LCBhbmQgY29tcHV0ZXNcbmEgbWluaW11bSBmZWUgZm9yIHRoYXQgdHJhbnNhY3Rpb24gc2l6ZSBiYXNlZCBvbiB0aGUgYGR1c3RfcmVsYXlfZmVlYCAoRmVlUmF0ZSkgcGFyYW1ldGVyLlxuXG5UaGUgZGlmZmVyZW50IHV0eG8gaW1wbGVtZW50YXRpb25zIGRpZmZlciBpbiB0aGVzZSB3YXlzOlxuXG4tIHNvbWUgaGF2ZSBhIGZpeGVkLCBzYXRvc2hpIGFtb3VudCBkdXN0IGxpbWl0IChkb2dlLCB6ZWMpXG4tIHNvbWUgaGF2ZSBhIGRpZmZlcmVudCBkdXN0X3JlbGF5X2ZlZVxuXG4qL1xuXG50eXBlIER1c3RMaW1pdCA9IHsgZmVlUmF0ZVNhdEtCOiBudW1iZXIgfSB8IHsgc2F0QW1vdW50OiBudW1iZXIgfTtcblxuZnVuY3Rpb24gZ2V0RHVzdFJlbGF5TGltaXQobmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogRHVzdExpbWl0IHtcbiAgbmV0d29yayA9IHV0eG9saWIuZ2V0TWFpbm5ldChuZXR3b3JrKTtcbiAgc3dpdGNoIChuZXR3b3JrKSB7XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW46XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5nb2xkOlxuICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy5kYXNoOlxuICAgICAgLy8gYnRjOiAgaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYml0Y29pbi9ibG9iL3YyOC4wL3NyYy9wb2xpY3kvcG9saWN5LmgjTDUwLUw1NVxuICAgICAgLy8gYnRnOiAgaHR0cHM6Ly9naXRodWIuY29tL0JUQ0dQVS9CVENHUFUvYmxvYi92MC4xNy4zL3NyYy9wb2xpY3kvcG9saWN5LmgjTDQ4XG4gICAgICAvLyBkYXNoOiBodHRwczovL2dpdGh1Yi5jb20vZGFzaHBheS9kYXNoL2Jsb2IvdjIyLjAuMC1iZXRhLjEvc3JjL3BvbGljeS9wb2xpY3kuaCNMNDEtTDQ2XG4gICAgICByZXR1cm4geyBmZWVSYXRlU2F0S0I6IDMwMDAgfTtcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi1jYXNoLW5vZGUvYml0Y29pbi1jYXNoLW5vZGUvYmxvYi92MjcuMS4wL3NyYy9wb2xpY3kvcG9saWN5LmgjTDc2LUw4M1xuICAgICAgLy8gSSBhY3R1YWxseSBoYXZlbid0IGxvb2tlZCBhdCBCU1YgYW5kIGFtIGRlcHJlc3NlZCB0aGF0IEkgc3RpbGwgbmVlZCB0byBoYW5kbGUgdGhlIGNhc2UgaGVyZVxuICAgICAgcmV0dXJuIHsgZmVlUmF0ZVNhdEtCOiAxMDAwIH07XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmRvZ2Vjb2luOlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RvZ2Vjb2luL2RvZ2Vjb2luL2Jsb2IvdjEuMTQuOC9zcmMvcG9saWN5L3BvbGljeS5oI0w2NS1MODFcbiAgICAgIC8vIChDT0lOIC8gMTAwKSAvIDEwO1xuICAgICAgcmV0dXJuIHsgc2F0QW1vdW50OiAxXzAwMF8wMDAgfTtcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MubGl0ZWNvaW46XG4gICAgICAvLyAgaHR0cHM6Ly9naXRodWIuY29tL2xpdGVjb2luLXByb2plY3QvbGl0ZWNvaW4vYmxvYi9tYXN0ZXIvc3JjL3BvbGljeS9wb2xpY3kuaCNMNDctTDUyXG4gICAgICByZXR1cm4geyBmZWVSYXRlU2F0S0I6IDMwXzAwMCB9O1xuICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy56Y2FzaDpcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL21hc3Rlci9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0wzOTYtTDM5OVxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjYuMC4wL3NyYy9wb2xpY3kvcG9saWN5LmgjTDQzLUw4OSAoSSBkb24ndCBxdWl0ZSBnZXQgaXQpXG4gICAgICByZXR1cm4geyBzYXRBbW91bnQ6IDMwMCB9O1xuICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlcHJlY2F0ZWQgY29pbicpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIG5ldHdvcmsnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTcGVuZFNpemUobmV0d29yazogdXR4b2xpYi5OZXR3b3JrLCBvdXRwdXRTaXplOiBudW1iZXIsIGlzV2l0bmVzczogYm9vbGVhbik6IG51bWJlciB7XG4gIG5ldHdvcmsgPSB1dHhvbGliLmdldE1haW5uZXQobmV0d29yayk7XG4gIHN3aXRjaCAobmV0d29yaykge1xuICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luOlxuICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luY2FzaDpcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MuYml0Y29pbmdvbGQ6XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmxpdGVjb2luOlxuICAgICAgLypcbiAgICAgICAgYnRjOiAgaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYml0Y29pbi9ibG9iL3YyOC4wL3NyYy9wb2xpY3kvcG9saWN5LmNwcCNMMjYtTDY4XG4gICAgICAgIGJjaDogIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luLWNhc2gtbm9kZS9iaXRjb2luLWNhc2gtbm9kZS9ibG9iL3YyNy4xLjAvc3JjL3BvbGljeS9wb2xpY3kuY3BwI0wxOC1MMzYgKGJ0Yy1pc2gpXG4gICAgICAgIGJ0ZzogIGh0dHBzOi8vZ2l0aHViLmNvbS9CVENHUFUvQlRDR1BVL2Jsb2IvdjAuMTcuMy9zcmMvcG9saWN5L3BvbGljeS5jcHAjTDE4LUw1MCAoYnRjLWlzaClcbiAgICAgICAgbHRjOiAgaHR0cHM6Ly9naXRodWIuY29tL2xpdGVjb2luLXByb2plY3QvbGl0ZWNvaW4vYmxvYi92MC4yMS40L3NyYy9wb2xpY3kvcG9saWN5LmNwcCNMMTUtTDQ3IChidGMtaXNoKVxuXG4gICAgICAgIFRoZSBmaXhlZCBjb21wb25lbnQgaGVyZSBpcyA2OS43NSBmb3IgaXNXaXRuZXNzPXRydWUgYW5kIDE1MCBmb3IgaXNXaXRuZXNzPWZhbHNlLlxuICAgICAgICovXG4gICAgICByZXR1cm4gb3V0cHV0U2l6ZSArIDMyICsgNCArIDEgKyAxMDcgLyAoaXNXaXRuZXNzID8gNCA6IDEpICsgNDtcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MuZGFzaDpcbiAgICAgIC8vIGRhc2g6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXNocGF5L2Rhc2gvYmxvYi92MjEuMS4xL3NyYy9wb2xpY3kvcG9saWN5LmNwcCNMMTQtTDMwIChidGMtaXNoKVxuICAgICAgLy8gaG93IGRpZCB0aGV5IGVuZCB1cCB3aXRoIDE0OD8gSSBkb24ndCBrbm93XG4gICAgICByZXR1cm4gb3V0cHV0U2l6ZSArIDE0ODtcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MuZG9nZWNvaW46XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLnpjYXNoOlxuICAgICAgLy8gZG9nZTogaHR0cHM6Ly9naXRodWIuY29tL2RvZ2Vjb2luL2RvZ2Vjb2luL2Jsb2IvdjEuMTQuOC9zcmMvcG9saWN5L3BvbGljeS5oI0w2NS1MODEgKGhhcmRjb2RlZClcbiAgICAgIC8vIHplYzogIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y2LjAuMC9zcmMvcG9saWN5L3BvbGljeS5oI0w0My1MODkgKHNvbWUgd2VpcmQgb3RoZXIgdGhpbmcsIGRvZ2UtaXNoKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkdXN0IGxpbWl0IGlzIHNpemUtaW5kZXBlbmRlbnQnKTtcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MuYml0Y29pbnN2OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkZXByZWNhdGVkIGNvaW4nKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCBuZXR3b3JrJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldER1c3RUaHJlc2hvbGRTYXQobmV0d29yazogdXR4b2xpYi5OZXR3b3JrLCBvdXRwdXRTaXplOiBudW1iZXIsIGlzV2l0bmVzczogYm9vbGVhbik6IG51bWJlciB7XG4gIGNvbnN0IGR1c3RMaW1pdCA9IGdldER1c3RSZWxheUxpbWl0KG5ldHdvcmspO1xuICBpZiAoJ3NhdEFtb3VudCcgaW4gZHVzdExpbWl0KSB7XG4gICAgcmV0dXJuIGR1c3RMaW1pdC5zYXRBbW91bnQ7XG4gIH1cbiAgaWYgKCdmZWVSYXRlU2F0S0InIGluIGR1c3RMaW1pdCkge1xuICAgIGNvbnN0IHNwZW5kU2l6ZSA9IGdldFNwZW5kU2l6ZShuZXR3b3JrLCBvdXRwdXRTaXplLCBpc1dpdG5lc3MpO1xuICAgIHJldHVybiBNYXRoLmNlaWwoKGR1c3RMaW1pdC5mZWVSYXRlU2F0S0IgKiBzcGVuZFNpemUpIC8gMTAwMCk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIGR1c3RMaW1pdCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHVzdFRocmVzaG9sZFNhdEZvck91dHB1dFNjcmlwdChuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmssIHNjcmlwdDogQnVmZmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGdldER1c3RUaHJlc2hvbGRTYXQobmV0d29yaywgc2NyaXB0Lmxlbmd0aCwgaXNXaXRuZXNzT3V0cHV0U2NyaXB0KHNjcmlwdCkpO1xufVxuIl19
@@ -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
@@ -1 +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,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5R29BZGRyZXNzUHJvb2YuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGF5Z28vcHNidC9wYXlHb0FkZHJlc3NQcm9vZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixrQ0FBa0MsRUFDbEMsaUJBQWlCLEVBQ2pCLDJCQUEyQixFQUMzQix3Q0FBd0MsR0FDekMsTUFBTSxVQUFVLENBQUM7QUFFbEI7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLElBQTRCLEVBQzVCLFdBQW1CLEVBQ25CLEdBQVcsRUFDWCxPQUFlO0lBRWYsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtRQUNyRixHQUFHLEVBQUU7WUFDSCxVQUFVLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkI7WUFDckQsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsK0JBQStCO1lBQzVFLE9BQU8sRUFBRSxPQUFPO1NBQ2pCO1FBQ0QsS0FBSyxFQUFFLEdBQUc7S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxJQUE0QixFQUM1QixXQUFtQixFQUNuQixrQkFBMEI7SUFFMUIsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsV0FBVyxFQUFFO1FBQ3BGLFVBQVUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQjtRQUNyRCxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQywrQkFBK0I7S0FDN0UsQ0FBQyxDQUFDO0lBRUgsaUNBQWlDO0lBQ2pDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUksaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQztTQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsa0VBQWtFO0lBQ2xFLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDbEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFFdEMsK0NBQStDO0lBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDakMsSUFBSSxXQUFXLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSwyQkFBMkIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV4RixvREFBb0Q7SUFDcEQsTUFBTSxPQUFPLEdBQUcsNEJBQTRCLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV2Riw0REFBNEQ7SUFDNUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNyRixNQUFNLElBQUksd0NBQXdDLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxJQUE0QjtJQUMxRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUU7UUFDNUQsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLE1BQU0sRUFBRTtZQUMvRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkI7WUFDckQsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsK0JBQStCO1NBQzdFLENBQUMsQ0FBQztRQUVILElBQUksa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxrQ0FBa0MsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsTUFBTSxVQUFVLG1DQUFtQyxDQUFDLElBQTRCO0lBQzlFLE9BQU8sK0JBQStCLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDO0FBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IGNoZWNrRm9yT3V0cHV0IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvdXRpbHMnO1xuXG5pbXBvcnQgeyB2ZXJpZnlNZXNzYWdlIH0gZnJvbSAnLi4vLi4vYmlwMzJ1dGlscyc7XG5pbXBvcnQgeyBjcmVhdGVQYXlHb0F0dGVzdGF0aW9uQnVmZmVyIH0gZnJvbSAnLi4vYXR0ZXN0YXRpb24nO1xuXG5pbXBvcnQge1xuICBFcnJvck11bHRpcGxlUGF5R29Qcm9vZixcbiAgRXJyb3JNdWx0aXBsZVBheUdvUHJvb2ZBdFBzYnRJbmRleCxcbiAgRXJyb3JOb1BheUdvUHJvb2YsXG4gIEVycm9yT3V0cHV0SW5kZXhPdXRPZkJvdW5kcyxcbiAgRXJyb3JQYXlHb0FkZHJlc3NQcm9vZkZhaWxlZFZlcmlmaWNhdGlvbixcbn0gZnJvbSAnLi9FcnJvcnMnO1xuXG4vKiogVGhpcyBmdW5jdGlvbiBhZGRzIHRoZSBlbnRyb3B5IGFuZCBzaWduYXR1cmUgaW50byB0aGUgUFNCVCBvdXRwdXQgdW5rbm93biBrZXkgdmFscy5cbiAqIFdlIHN0b3JlIHRoZSBlbnRyb3B5IHNvIHRoYXQgd2UgcmVjb25zdHJ1Y3QgdGhlIG1lc3NhZ2UgPEVOVFJPUFk+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"}