@bitgo-beta/abstract-utxo 1.6.1-alpha.419 → 1.6.1-alpha.420

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 (761) hide show
  1. package/dist/{src → cjs/src}/abstractUtxoCoin.d.ts +12 -23
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -0
  3. package/dist/cjs/src/abstractUtxoCoin.js +639 -0
  4. package/dist/cjs/src/address/fixedScript.d.ts.map +1 -0
  5. package/dist/cjs/src/address/fixedScript.js +150 -0
  6. package/dist/cjs/src/address/index.d.ts.map +1 -0
  7. package/dist/{src → cjs/src}/address/index.js +1 -1
  8. package/dist/cjs/src/config.d.ts.map +1 -0
  9. package/dist/cjs/src/config.js +14 -0
  10. package/dist/cjs/src/descriptor/NamedDescriptor.d.ts.map +1 -0
  11. package/dist/cjs/src/descriptor/NamedDescriptor.js +79 -0
  12. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
  13. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.js +66 -0
  14. package/dist/cjs/src/descriptor/builder/builder.d.ts.map +1 -0
  15. package/dist/cjs/src/descriptor/builder/builder.js +37 -0
  16. package/dist/cjs/src/descriptor/builder/index.d.ts.map +1 -0
  17. package/dist/{src → cjs/src}/descriptor/builder/index.js +1 -1
  18. package/dist/cjs/src/descriptor/builder/parse.d.ts.map +1 -0
  19. package/dist/cjs/src/descriptor/builder/parse.js +116 -0
  20. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
  21. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.js +41 -0
  22. package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  23. package/dist/cjs/src/descriptor/createWallet/createDescriptors.js +33 -0
  24. package/dist/cjs/src/descriptor/createWallet/index.d.ts.map +1 -0
  25. package/dist/{src → cjs/src}/descriptor/createWallet/index.js +1 -1
  26. package/dist/cjs/src/descriptor/descriptorWallet.d.ts.map +1 -0
  27. package/dist/cjs/src/descriptor/descriptorWallet.js +54 -0
  28. package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
  29. package/dist/{src → cjs/src}/descriptor/index.js +1 -1
  30. package/dist/cjs/src/descriptor/validatePolicy.d.ts.map +1 -0
  31. package/dist/cjs/src/descriptor/validatePolicy.js +92 -0
  32. package/dist/cjs/src/impl/bch/bch.d.ts.map +1 -0
  33. package/dist/cjs/src/impl/bch/bch.js +70 -0
  34. package/dist/cjs/src/impl/bch/index.d.ts.map +1 -0
  35. package/dist/{src → cjs/src}/impl/bch/index.js +1 -1
  36. package/dist/cjs/src/impl/bch/tbch.d.ts.map +1 -0
  37. package/dist/{src → cjs/src}/impl/bch/tbch.js +1 -1
  38. package/dist/cjs/src/impl/bcha/bcha.d.ts.map +1 -0
  39. package/dist/{src → cjs/src}/impl/bcha/bcha.js +1 -1
  40. package/dist/cjs/src/impl/bcha/index.d.ts.map +1 -0
  41. package/dist/{src → cjs/src}/impl/bcha/index.js +1 -1
  42. package/dist/cjs/src/impl/bcha/tbcha.d.ts.map +1 -0
  43. package/dist/{src → cjs/src}/impl/bcha/tbcha.js +1 -1
  44. package/dist/cjs/src/impl/bsv/bsv.d.ts.map +1 -0
  45. package/dist/{src → cjs/src}/impl/bsv/bsv.js +1 -1
  46. package/dist/cjs/src/impl/bsv/index.d.ts.map +1 -0
  47. package/dist/{src → cjs/src}/impl/bsv/index.js +1 -1
  48. package/dist/cjs/src/impl/bsv/tbsv.d.ts.map +1 -0
  49. package/dist/{src → cjs/src}/impl/bsv/tbsv.js +1 -1
  50. package/dist/cjs/src/impl/btc/btc.d.ts.map +1 -0
  51. package/dist/{src → cjs/src}/impl/btc/btc.js +1 -1
  52. package/dist/cjs/src/impl/btc/index.d.ts.map +1 -0
  53. package/dist/{src → cjs/src}/impl/btc/index.js +1 -1
  54. package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts.map +1 -0
  55. package/dist/cjs/src/impl/btc/inscriptionBuilder.js +183 -0
  56. package/dist/cjs/src/impl/btc/tbtc.d.ts.map +1 -0
  57. package/dist/{src → cjs/src}/impl/btc/tbtc.js +1 -1
  58. package/dist/cjs/src/impl/btc/tbtc4.d.ts.map +1 -0
  59. package/dist/{src → cjs/src}/impl/btc/tbtc4.js +1 -1
  60. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts.map +1 -0
  61. package/dist/{src → cjs/src}/impl/btc/tbtcbgsig.js +1 -1
  62. package/dist/cjs/src/impl/btc/tbtcsig.d.ts.map +1 -0
  63. package/dist/{src → cjs/src}/impl/btc/tbtcsig.js +1 -1
  64. package/dist/cjs/src/impl/btg/btg.d.ts.map +1 -0
  65. package/dist/{src/impl/dash/dash.js → cjs/src/impl/btg/btg.js} +6 -6
  66. package/dist/cjs/src/impl/btg/index.d.ts.map +1 -0
  67. package/dist/{src → cjs/src}/impl/btg/index.js +1 -1
  68. package/dist/cjs/src/impl/dash/dash.d.ts.map +1 -0
  69. package/dist/cjs/src/impl/dash/dash.js +48 -0
  70. package/dist/cjs/src/impl/dash/index.d.ts.map +1 -0
  71. package/dist/{src → cjs/src}/impl/dash/index.js +1 -1
  72. package/dist/cjs/src/impl/dash/tdash.d.ts.map +1 -0
  73. package/dist/{src → cjs/src}/impl/dash/tdash.js +1 -1
  74. package/dist/{src → cjs/src}/impl/doge/doge.d.ts +3 -2
  75. package/dist/cjs/src/impl/doge/doge.d.ts.map +1 -0
  76. package/dist/cjs/src/impl/doge/doge.js +79 -0
  77. package/dist/cjs/src/impl/doge/index.d.ts.map +1 -0
  78. package/dist/{src → cjs/src}/impl/doge/index.js +1 -1
  79. package/dist/cjs/src/impl/doge/tdoge.d.ts.map +1 -0
  80. package/dist/{src → cjs/src}/impl/doge/tdoge.js +1 -1
  81. package/dist/cjs/src/impl/index.d.ts.map +1 -0
  82. package/dist/{src → cjs/src}/impl/index.js +1 -1
  83. package/dist/cjs/src/impl/ltc/index.d.ts.map +1 -0
  84. package/dist/{src → cjs/src}/impl/ltc/index.js +1 -1
  85. package/dist/cjs/src/impl/ltc/ltc.d.ts.map +1 -0
  86. package/dist/{src → cjs/src}/impl/ltc/ltc.js +1 -1
  87. package/dist/cjs/src/impl/ltc/tltc.d.ts.map +1 -0
  88. package/dist/{src → cjs/src}/impl/ltc/tltc.js +1 -1
  89. package/dist/cjs/src/impl/zec/index.d.ts.map +1 -0
  90. package/dist/{src → cjs/src}/impl/zec/index.js +1 -1
  91. package/dist/cjs/src/impl/zec/tzec.d.ts.map +1 -0
  92. package/dist/{src → cjs/src}/impl/zec/tzec.js +1 -1
  93. package/dist/cjs/src/impl/zec/zec.d.ts.map +1 -0
  94. package/dist/{src → cjs/src}/impl/zec/zec.js +1 -1
  95. package/dist/cjs/src/index.d.ts.map +1 -0
  96. package/dist/{src → cjs/src}/index.js +1 -1
  97. package/dist/cjs/src/keychains.d.ts.map +1 -0
  98. package/dist/cjs/src/keychains.js +104 -0
  99. package/dist/cjs/src/names.d.ts.map +1 -0
  100. package/dist/cjs/src/names.js +214 -0
  101. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
  102. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.js +26 -0
  103. package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
  104. package/dist/cjs/src/offlineVault/OfflineVaultSignable.js +55 -0
  105. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts.map +1 -0
  106. package/dist/cjs/src/offlineVault/TransactionExplanation.js +16 -0
  107. package/dist/cjs/src/offlineVault/descriptor/index.d.ts.map +1 -0
  108. package/dist/{src → cjs/src}/offlineVault/descriptor/index.js +1 -1
  109. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts.map +1 -0
  110. package/dist/cjs/src/offlineVault/descriptor/transaction.js +80 -0
  111. package/dist/cjs/src/offlineVault/index.d.ts.map +1 -0
  112. package/dist/{src → cjs/src}/offlineVault/index.js +1 -1
  113. package/dist/cjs/src/recovery/RecoveryProvider.d.ts.map +1 -0
  114. package/dist/cjs/src/recovery/RecoveryProvider.js +22 -0
  115. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -0
  116. package/dist/cjs/src/recovery/backupKeyRecovery.js +370 -0
  117. package/dist/cjs/src/recovery/baseApi.d.ts.map +1 -0
  118. package/dist/cjs/src/recovery/baseApi.js +73 -0
  119. package/dist/cjs/src/recovery/coingeckoApi.d.ts.map +1 -0
  120. package/dist/cjs/src/recovery/coingeckoApi.js +44 -0
  121. package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -0
  122. package/dist/cjs/src/recovery/crossChainRecovery.js +364 -0
  123. package/dist/cjs/src/recovery/index.d.ts.map +1 -0
  124. package/dist/{src → cjs/src}/recovery/index.js +1 -1
  125. package/dist/cjs/src/recovery/mempoolApi.d.ts.map +1 -0
  126. package/dist/cjs/src/recovery/mempoolApi.js +36 -0
  127. package/dist/{src → cjs/src}/replayProtection.d.ts +1 -0
  128. package/dist/cjs/src/replayProtection.d.ts.map +1 -0
  129. package/dist/cjs/src/replayProtection.js +58 -0
  130. package/dist/cjs/src/sign.d.ts.map +1 -0
  131. package/dist/cjs/src/sign.js +205 -0
  132. package/dist/cjs/src/transaction/bip322.d.ts.map +1 -0
  133. package/dist/cjs/src/transaction/bip322.js +125 -0
  134. package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
  135. package/dist/cjs/src/transaction/common/verifyPayGoAmount.js +3 -0
  136. package/dist/{src → cjs/src}/transaction/descriptor/explainPsbt.d.ts +2 -2
  137. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  138. package/dist/cjs/src/transaction/descriptor/explainPsbt.js +80 -0
  139. package/dist/cjs/src/transaction/descriptor/index.d.ts.map +1 -0
  140. package/dist/{src → cjs/src}/transaction/descriptor/index.js +1 -1
  141. package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -0
  142. package/dist/cjs/src/transaction/descriptor/parse.js +116 -0
  143. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
  144. package/dist/cjs/src/transaction/descriptor/parseToAmountType.js +60 -0
  145. package/dist/cjs/src/transaction/descriptor/recipient.d.ts.map +1 -0
  146. package/dist/cjs/src/transaction/descriptor/recipient.js +3 -0
  147. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts.map +1 -0
  148. package/dist/cjs/src/transaction/descriptor/signPsbt.js +43 -0
  149. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
  150. package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +108 -0
  151. package/dist/{src → cjs/src}/transaction/explainTransaction.d.ts +4 -3
  152. package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -0
  153. package/dist/cjs/src/transaction/explainTransaction.js +88 -0
  154. package/dist/cjs/src/transaction/fetchInputs.d.ts.map +1 -0
  155. package/dist/cjs/src/transaction/fetchInputs.js +109 -0
  156. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts +10 -0
  157. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  158. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.js +43 -0
  159. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +63 -0
  160. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  161. package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +321 -0
  162. package/dist/{src → cjs/src}/transaction/fixedScript/index.d.ts +1 -0
  163. package/dist/cjs/src/transaction/fixedScript/index.d.ts.map +1 -0
  164. package/dist/{src → cjs/src}/transaction/fixedScript/index.js +4 -2
  165. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  166. package/dist/cjs/src/transaction/fixedScript/parseOutput.js +213 -0
  167. package/dist/{src → cjs/src}/transaction/fixedScript/parseTransaction.d.ts +1 -1
  168. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  169. package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +203 -0
  170. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -0
  171. package/dist/cjs/src/transaction/fixedScript/signTransaction.js +101 -0
  172. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  173. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.js +198 -0
  174. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
  175. package/dist/{src → cjs/src}/transaction/getPayGoVerificationPubkey.js +1 -1
  176. package/dist/cjs/src/transaction/index.d.ts.map +1 -0
  177. package/dist/{src → cjs/src}/transaction/index.js +1 -1
  178. package/dist/cjs/src/transaction/outputDifference.d.ts.map +1 -0
  179. package/dist/cjs/src/transaction/outputDifference.js +47 -0
  180. package/dist/cjs/src/transaction/parseTransaction.d.ts.map +1 -0
  181. package/dist/{src → cjs/src}/transaction/parseTransaction.js +1 -1
  182. package/dist/cjs/src/transaction/recipient.d.ts.map +1 -0
  183. package/dist/cjs/src/transaction/recipient.js +88 -0
  184. package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -0
  185. package/dist/cjs/src/transaction/signTransaction.js +102 -0
  186. package/dist/cjs/src/transaction/verifyTransaction.d.ts.map +1 -0
  187. package/dist/{src → cjs/src}/transaction/verifyTransaction.js +1 -1
  188. package/dist/cjs/src/verifyKey.d.ts.map +1 -0
  189. package/dist/cjs/src/verifyKey.js +164 -0
  190. package/dist/cjs/src/wallet.d.ts.map +1 -0
  191. package/dist/cjs/src/wallet.js +8 -0
  192. package/dist/cjs/test/integration/impl/bch/bch.d.ts +2 -0
  193. package/dist/cjs/test/integration/impl/bch/bch.d.ts.map +1 -0
  194. package/dist/cjs/test/integration/impl/bch/bch.js +74 -0
  195. package/dist/cjs/test/unit/address.d.ts +2 -0
  196. package/dist/cjs/test/unit/address.d.ts.map +1 -0
  197. package/dist/cjs/test/unit/address.js +182 -0
  198. package/dist/cjs/test/unit/bip322.d.ts +2 -0
  199. package/dist/cjs/test/unit/bip322.d.ts.map +1 -0
  200. package/dist/cjs/test/unit/bip322.js +45 -0
  201. package/dist/cjs/test/unit/coins.d.ts +2 -0
  202. package/dist/cjs/test/unit/coins.d.ts.map +1 -0
  203. package/dist/cjs/test/unit/coins.js +97 -0
  204. package/dist/cjs/test/unit/customChangeWallet.d.ts +2 -0
  205. package/dist/cjs/test/unit/customChangeWallet.d.ts.map +1 -0
  206. package/dist/cjs/test/unit/customChangeWallet.js +154 -0
  207. package/dist/cjs/test/unit/customSigner.d.ts +3 -0
  208. package/dist/cjs/test/unit/customSigner.d.ts.map +1 -0
  209. package/dist/cjs/test/unit/customSigner.js +108 -0
  210. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts +2 -0
  211. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts.map +1 -0
  212. package/dist/cjs/test/unit/descriptor/NamedDescriptor.js +18 -0
  213. package/dist/cjs/test/unit/descriptor/builder.d.ts +2 -0
  214. package/dist/cjs/test/unit/descriptor/builder.d.ts.map +1 -0
  215. package/dist/cjs/test/unit/descriptor/builder.js +72 -0
  216. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts +2 -0
  217. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  218. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.js +20 -0
  219. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts +2 -0
  220. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts.map +1 -0
  221. package/dist/cjs/test/unit/descriptor/descriptorWallet.js +28 -0
  222. package/dist/cjs/test/unit/descriptorAddress.d.ts +3 -0
  223. package/dist/cjs/test/unit/descriptorAddress.d.ts.map +1 -0
  224. package/dist/cjs/test/unit/descriptorAddress.js +102 -0
  225. package/dist/cjs/test/unit/explainTransaction.d.ts +2 -0
  226. package/dist/cjs/test/unit/explainTransaction.d.ts.map +1 -0
  227. package/dist/cjs/test/unit/explainTransaction.js +74 -0
  228. package/dist/cjs/test/unit/fixtures/bip322/fixtures.d.ts +15 -0
  229. package/dist/cjs/test/unit/fixtures/bip322/fixtures.d.ts.map +1 -0
  230. package/dist/cjs/test/unit/fixtures/bip322/fixtures.js +51 -0
  231. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts +4 -0
  232. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts.map +1 -0
  233. package/dist/cjs/test/unit/fixtures/psbtHexProof.js +9 -0
  234. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts +2 -0
  235. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts.map +1 -0
  236. package/dist/cjs/test/unit/impl/bch/unit/bch.js +138 -0
  237. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts +2 -0
  238. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts.map +1 -0
  239. package/dist/cjs/test/unit/impl/bcha/unit/index.js +47 -0
  240. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts +2 -0
  241. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts.map +1 -0
  242. package/dist/cjs/test/unit/impl/bsv/unit/index.js +32 -0
  243. package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts +2 -0
  244. package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts.map +1 -0
  245. package/dist/cjs/test/unit/impl/btc/unit/btc.js +220 -0
  246. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts +4 -0
  247. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts.map +1 -0
  248. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.js +10 -0
  249. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts +2 -0
  250. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts.map +1 -0
  251. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.js +18 -0
  252. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts +2 -0
  253. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts.map +1 -0
  254. package/dist/cjs/test/unit/impl/btg/unit/index.js +29 -0
  255. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts +2 -0
  256. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts.map +1 -0
  257. package/dist/cjs/test/unit/impl/dash/unit/index.js +32 -0
  258. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts +2 -0
  259. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts.map +1 -0
  260. package/dist/cjs/test/unit/impl/doge/unit/index.js +32 -0
  261. package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts +2 -0
  262. package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts.map +1 -0
  263. package/dist/cjs/test/unit/impl/ltc/unit/index.js +39 -0
  264. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts +2 -0
  265. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts.map +1 -0
  266. package/dist/cjs/test/unit/impl/zec/unit/index.js +29 -0
  267. package/dist/cjs/test/unit/keySignatures.d.ts +2 -0
  268. package/dist/cjs/test/unit/keySignatures.d.ts.map +1 -0
  269. package/dist/cjs/test/unit/keySignatures.js +54 -0
  270. package/dist/cjs/test/unit/keychains.d.ts +2 -0
  271. package/dist/cjs/test/unit/keychains.d.ts.map +1 -0
  272. package/dist/cjs/test/unit/keychains.js +49 -0
  273. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts +2 -0
  274. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts.map +1 -0
  275. package/dist/cjs/test/unit/offlineVault/halfSigned.js +124 -0
  276. package/dist/cjs/test/unit/parseTransaction.d.ts +2 -0
  277. package/dist/cjs/test/unit/parseTransaction.d.ts.map +1 -0
  278. package/dist/cjs/test/unit/parseTransaction.js +125 -0
  279. package/dist/cjs/test/unit/prebuildAndSign.d.ts +6 -0
  280. package/dist/cjs/test/unit/prebuildAndSign.d.ts.map +1 -0
  281. package/dist/cjs/test/unit/prebuildAndSign.js +270 -0
  282. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts +2 -0
  283. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts.map +1 -0
  284. package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +285 -0
  285. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts +2 -0
  286. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts.map +1 -0
  287. package/dist/cjs/test/unit/recovery/crossChainRecovery.js +283 -0
  288. package/dist/cjs/test/unit/recovery/mock.d.ts +30 -0
  289. package/dist/cjs/test/unit/recovery/mock.d.ts.map +1 -0
  290. package/dist/cjs/test/unit/recovery/mock.js +138 -0
  291. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts +2 -0
  292. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  293. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.js +30 -0
  294. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts +6 -0
  295. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts.map +1 -0
  296. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.js +17 -0
  297. package/dist/cjs/test/unit/transaction/descriptor/outputDifference.d.ts +2 -0
  298. package/dist/cjs/test/unit/transaction/descriptor/outputDifference.d.ts.map +1 -0
  299. package/dist/cjs/test/unit/transaction/descriptor/outputDifference.js +76 -0
  300. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts +2 -0
  301. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts.map +1 -0
  302. package/dist/cjs/test/unit/transaction/descriptor/parse.js +135 -0
  303. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts +2 -0
  304. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts.map +1 -0
  305. package/dist/cjs/test/unit/transaction/descriptor/sign.js +32 -0
  306. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts +2 -0
  307. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts.map +1 -0
  308. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.js +48 -0
  309. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts +2 -0
  310. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts.map +1 -0
  311. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.js +108 -0
  312. package/dist/cjs/test/unit/transaction.d.ts +2 -0
  313. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  314. package/dist/cjs/test/unit/transaction.js +501 -0
  315. package/dist/cjs/test/unit/txFormat.d.ts +30 -0
  316. package/dist/cjs/test/unit/txFormat.d.ts.map +1 -0
  317. package/dist/cjs/test/unit/txFormat.js +162 -0
  318. package/dist/cjs/test/unit/util/fixtures.d.ts +14 -0
  319. package/dist/cjs/test/unit/util/fixtures.d.ts.map +1 -0
  320. package/dist/cjs/test/unit/util/fixtures.js +102 -0
  321. package/dist/cjs/test/unit/util/index.d.ts +7 -0
  322. package/dist/cjs/test/unit/util/index.d.ts.map +1 -0
  323. package/dist/cjs/test/unit/util/index.js +23 -0
  324. package/dist/cjs/test/unit/util/keychains.d.ts +26 -0
  325. package/dist/cjs/test/unit/util/keychains.d.ts.map +1 -0
  326. package/dist/cjs/test/unit/util/keychains.js +72 -0
  327. package/dist/cjs/test/unit/util/nockBitGo.d.ts +3 -0
  328. package/dist/cjs/test/unit/util/nockBitGo.d.ts.map +1 -0
  329. package/dist/cjs/test/unit/util/nockBitGo.js +11 -0
  330. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts +8 -0
  331. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts.map +1 -0
  332. package/dist/cjs/test/unit/util/nockIndexerAPI.js +56 -0
  333. package/dist/cjs/test/unit/util/transaction.d.ts +24 -0
  334. package/dist/cjs/test/unit/util/transaction.d.ts.map +1 -0
  335. package/dist/cjs/test/unit/util/transaction.js +107 -0
  336. package/dist/cjs/test/unit/util/unspents.d.ts +13 -0
  337. package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -0
  338. package/dist/cjs/test/unit/util/unspents.js +106 -0
  339. package/dist/cjs/test/unit/util/utxoCoins.d.ts +8 -0
  340. package/dist/cjs/test/unit/util/utxoCoins.d.ts.map +1 -0
  341. package/dist/cjs/test/unit/util/utxoCoins.js +95 -0
  342. package/dist/cjs/test/unit/util/wallet.d.ts +4 -0
  343. package/dist/cjs/test/unit/util/wallet.d.ts.map +1 -0
  344. package/dist/cjs/test/unit/util/wallet.js +9 -0
  345. package/dist/cjs/test/unit/verifyTransaction.d.ts +2 -0
  346. package/dist/cjs/test/unit/verifyTransaction.d.ts.map +1 -0
  347. package/dist/cjs/test/unit/verifyTransaction.js +327 -0
  348. package/dist/cjs/test/unit/wallet.d.ts +2 -0
  349. package/dist/cjs/test/unit/wallet.d.ts.map +1 -0
  350. package/dist/cjs/test/unit/wallet.js +248 -0
  351. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  352. package/dist/esm/abstractUtxoCoin.d.ts +464 -0
  353. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -0
  354. package/dist/esm/abstractUtxoCoin.js +598 -0
  355. package/dist/esm/address/fixedScript.d.ts +51 -0
  356. package/dist/esm/address/fixedScript.js +109 -0
  357. package/dist/esm/address/index.d.ts +2 -0
  358. package/dist/esm/address/index.js +2 -0
  359. package/dist/esm/config.d.ts +9 -0
  360. package/dist/esm/config.js +11 -0
  361. package/dist/esm/descriptor/NamedDescriptor.d.ts +20 -0
  362. package/dist/esm/descriptor/NamedDescriptor.js +39 -0
  363. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
  364. package/dist/esm/descriptor/assertDescriptorWalletAddress.js +27 -0
  365. package/dist/esm/descriptor/builder/builder.d.ts +13 -0
  366. package/dist/esm/descriptor/builder/builder.js +34 -0
  367. package/dist/esm/descriptor/builder/index.d.ts +3 -0
  368. package/dist/esm/descriptor/builder/index.js +3 -0
  369. package/dist/esm/descriptor/builder/parse.d.ts +5 -0
  370. package/dist/esm/descriptor/builder/parse.js +112 -0
  371. package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
  372. package/dist/esm/descriptor/createWallet/createDescriptorWallet.js +37 -0
  373. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts +12 -0
  374. package/dist/esm/descriptor/createWallet/createDescriptors.js +29 -0
  375. package/dist/esm/descriptor/createWallet/index.d.ts +3 -0
  376. package/dist/esm/descriptor/createWallet/index.js +3 -0
  377. package/dist/esm/descriptor/descriptorWallet.d.ts +19 -0
  378. package/dist/esm/descriptor/descriptorWallet.js +16 -0
  379. package/dist/esm/descriptor/index.d.ts +8 -0
  380. package/dist/esm/descriptor/index.js +7 -0
  381. package/dist/esm/descriptor/validatePolicy.d.ts +22 -0
  382. package/dist/esm/descriptor/validatePolicy.js +80 -0
  383. package/dist/esm/impl/bch/bch.d.ts +20 -0
  384. package/dist/esm/impl/bch/bch.js +33 -0
  385. package/dist/esm/impl/bch/index.d.ts +3 -0
  386. package/dist/esm/impl/bch/index.js +3 -0
  387. package/dist/esm/impl/bch/tbch.d.ts +10 -0
  388. package/dist/esm/impl/bch/tbch.js +11 -0
  389. package/dist/esm/impl/bcha/bcha.d.ts +9 -0
  390. package/dist/esm/impl/bcha/bcha.js +21 -0
  391. package/dist/esm/impl/bcha/index.d.ts +3 -0
  392. package/dist/esm/impl/bcha/index.js +3 -0
  393. package/dist/esm/impl/bcha/tbcha.d.ts +10 -0
  394. package/dist/esm/impl/bcha/tbcha.js +11 -0
  395. package/dist/esm/impl/bsv/bsv.d.ts +8 -0
  396. package/dist/esm/impl/bsv/bsv.js +11 -0
  397. package/dist/esm/impl/bsv/index.d.ts +3 -0
  398. package/dist/esm/impl/bsv/index.js +3 -0
  399. package/dist/esm/impl/bsv/tbsv.d.ts +10 -0
  400. package/dist/esm/impl/bsv/tbsv.js +11 -0
  401. package/dist/esm/impl/btc/btc.d.ts +13 -0
  402. package/dist/esm/impl/btc/btc.js +18 -0
  403. package/dist/esm/impl/btc/index.d.ts +7 -0
  404. package/dist/esm/impl/btc/index.js +7 -0
  405. package/dist/esm/impl/btc/inscriptionBuilder.d.ts +51 -0
  406. package/dist/esm/impl/btc/inscriptionBuilder.js +143 -0
  407. package/dist/esm/impl/btc/tbtc.d.ts +10 -0
  408. package/dist/esm/impl/btc/tbtc.js +11 -0
  409. package/dist/esm/impl/btc/tbtc4.d.ts +10 -0
  410. package/dist/esm/impl/btc/tbtc4.js +11 -0
  411. package/dist/esm/impl/btc/tbtcbgsig.d.ts +10 -0
  412. package/dist/esm/impl/btc/tbtcbgsig.js +11 -0
  413. package/dist/esm/impl/btc/tbtcsig.d.ts +10 -0
  414. package/dist/esm/impl/btc/tbtcsig.js +11 -0
  415. package/dist/esm/impl/btg/btg.d.ts +7 -0
  416. package/dist/esm/impl/btg/btg.js +11 -0
  417. package/dist/esm/impl/btg/index.d.ts +2 -0
  418. package/dist/esm/impl/btg/index.js +2 -0
  419. package/dist/esm/impl/dash/dash.d.ts +7 -0
  420. package/dist/esm/impl/dash/dash.js +11 -0
  421. package/dist/esm/impl/dash/index.d.ts +3 -0
  422. package/dist/esm/impl/dash/index.js +3 -0
  423. package/dist/esm/impl/dash/tdash.d.ts +10 -0
  424. package/dist/esm/impl/dash/tdash.js +11 -0
  425. package/dist/esm/impl/doge/doge.d.ts +31 -0
  426. package/dist/esm/impl/doge/doge.d.ts.map +1 -0
  427. package/dist/esm/impl/doge/doge.js +75 -0
  428. package/dist/esm/impl/doge/index.d.ts +3 -0
  429. package/dist/esm/impl/doge/index.js +3 -0
  430. package/dist/esm/impl/doge/tdoge.d.ts +10 -0
  431. package/dist/esm/impl/doge/tdoge.js +11 -0
  432. package/dist/esm/impl/index.d.ts +10 -0
  433. package/dist/esm/impl/index.js +10 -0
  434. package/dist/esm/impl/ltc/index.d.ts +3 -0
  435. package/dist/esm/impl/ltc/index.js +3 -0
  436. package/dist/esm/impl/ltc/ltc.d.ts +7 -0
  437. package/dist/esm/impl/ltc/ltc.js +15 -0
  438. package/dist/esm/impl/ltc/tltc.d.ts +7 -0
  439. package/dist/esm/impl/ltc/tltc.js +14 -0
  440. package/dist/esm/impl/zec/index.d.ts +3 -0
  441. package/dist/esm/impl/zec/index.js +3 -0
  442. package/dist/esm/impl/zec/tzec.d.ts +7 -0
  443. package/dist/esm/impl/zec/tzec.js +11 -0
  444. package/dist/esm/impl/zec/zec.d.ts +10 -0
  445. package/dist/esm/impl/zec/zec.js +11 -0
  446. package/dist/esm/index.d.ts +21 -0
  447. package/dist/esm/index.js +21 -0
  448. package/dist/esm/keychains.d.ts +48 -0
  449. package/dist/esm/keychains.js +61 -0
  450. package/dist/esm/names.d.ts +26 -0
  451. package/dist/esm/names.js +171 -0
  452. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts +8 -0
  453. package/dist/esm/offlineVault/OfflineVaultHalfSigned.js +23 -0
  454. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts +46 -0
  455. package/dist/esm/offlineVault/OfflineVaultSignable.js +18 -0
  456. package/dist/esm/offlineVault/TransactionExplanation.d.ts +15 -0
  457. package/dist/esm/offlineVault/TransactionExplanation.js +13 -0
  458. package/dist/esm/offlineVault/descriptor/index.d.ts +2 -0
  459. package/dist/esm/offlineVault/descriptor/index.js +2 -0
  460. package/dist/esm/offlineVault/descriptor/transaction.d.ts +38 -0
  461. package/dist/esm/offlineVault/descriptor/transaction.js +41 -0
  462. package/dist/esm/offlineVault/index.d.ts +6 -0
  463. package/dist/esm/offlineVault/index.js +4 -0
  464. package/dist/esm/recovery/RecoveryProvider.d.ts +22 -0
  465. package/dist/{src → esm}/recovery/RecoveryProvider.js +6 -9
  466. package/dist/esm/recovery/backupKeyRecovery.d.ts +88 -0
  467. package/dist/esm/recovery/backupKeyRecovery.js +329 -0
  468. package/dist/esm/recovery/baseApi.d.ts +24 -0
  469. package/dist/esm/recovery/baseApi.js +64 -0
  470. package/dist/esm/recovery/coingeckoApi.d.ts +6 -0
  471. package/dist/esm/recovery/coingeckoApi.js +40 -0
  472. package/dist/esm/recovery/crossChainRecovery.d.ts +86 -0
  473. package/dist/esm/recovery/crossChainRecovery.js +325 -0
  474. package/dist/esm/recovery/index.d.ts +7 -0
  475. package/dist/esm/recovery/index.js +7 -0
  476. package/dist/esm/recovery/mempoolApi.d.ts +7 -0
  477. package/dist/esm/recovery/mempoolApi.js +29 -0
  478. package/dist/esm/replayProtection.d.ts +5 -0
  479. package/dist/esm/replayProtection.d.ts.map +1 -0
  480. package/dist/esm/replayProtection.js +20 -0
  481. package/dist/esm/sign.d.ts +54 -0
  482. package/dist/esm/sign.js +162 -0
  483. package/dist/esm/transaction/bip322.d.ts +27 -0
  484. package/dist/esm/transaction/bip322.js +86 -0
  485. package/dist/esm/transaction/common/verifyPayGoAmount.d.ts +1 -0
  486. package/dist/{src → esm}/transaction/common/verifyPayGoAmount.js +0 -2
  487. package/dist/esm/transaction/descriptor/explainPsbt.d.ts +5 -0
  488. package/dist/esm/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  489. package/dist/esm/transaction/descriptor/explainPsbt.js +44 -0
  490. package/dist/esm/transaction/descriptor/index.d.ts +7 -0
  491. package/dist/esm/transaction/descriptor/index.js +6 -0
  492. package/dist/esm/transaction/descriptor/parse.d.ts +15 -0
  493. package/dist/esm/transaction/descriptor/parse.js +79 -0
  494. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts +13 -0
  495. package/dist/esm/transaction/descriptor/parseToAmountType.js +55 -0
  496. package/dist/esm/transaction/descriptor/recipient.d.ts +5 -0
  497. package/dist/{src → esm}/transaction/descriptor/recipient.js +1 -2
  498. package/dist/esm/transaction/descriptor/signPsbt.d.ts +25 -0
  499. package/dist/esm/transaction/descriptor/signPsbt.js +38 -0
  500. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +35 -0
  501. package/dist/esm/transaction/descriptor/verifyTransaction.js +65 -0
  502. package/dist/esm/transaction/explainTransaction.d.ts +18 -0
  503. package/dist/esm/transaction/explainTransaction.d.ts.map +1 -0
  504. package/dist/esm/transaction/explainTransaction.js +52 -0
  505. package/dist/esm/transaction/fetchInputs.d.ts +26 -0
  506. package/dist/esm/transaction/fetchInputs.js +72 -0
  507. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts +10 -0
  508. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  509. package/dist/esm/transaction/fixedScript/explainPsbtWasm.js +40 -0
  510. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +63 -0
  511. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  512. package/dist/esm/transaction/fixedScript/explainTransaction.js +284 -0
  513. package/dist/esm/transaction/fixedScript/index.d.ts +7 -0
  514. package/dist/esm/transaction/fixedScript/index.d.ts.map +1 -0
  515. package/dist/esm/transaction/fixedScript/index.js +6 -0
  516. package/dist/esm/transaction/fixedScript/parseOutput.d.ts +26 -0
  517. package/dist/{src → esm}/transaction/fixedScript/parseOutput.js +22 -28
  518. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts +7 -0
  519. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  520. package/dist/esm/transaction/fixedScript/parseTransaction.js +164 -0
  521. package/dist/esm/transaction/fixedScript/signTransaction.d.ts +18 -0
  522. package/dist/esm/transaction/fixedScript/signTransaction.js +95 -0
  523. package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts +21 -0
  524. package/dist/esm/transaction/fixedScript/verifyTransaction.js +159 -0
  525. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts +9 -0
  526. package/dist/esm/transaction/getPayGoVerificationPubkey.js +17 -0
  527. package/dist/esm/transaction/index.d.ts +7 -0
  528. package/dist/esm/transaction/index.js +7 -0
  529. package/dist/esm/transaction/outputDifference.d.ts +40 -0
  530. package/dist/esm/transaction/outputDifference.js +42 -0
  531. package/dist/esm/transaction/parseTransaction.d.ts +3 -0
  532. package/dist/esm/transaction/parseTransaction.js +12 -0
  533. package/dist/esm/transaction/recipient.d.ts +29 -0
  534. package/dist/esm/transaction/recipient.js +48 -0
  535. package/dist/esm/transaction/signTransaction.d.ts +6 -0
  536. package/dist/esm/transaction/signTransaction.js +63 -0
  537. package/dist/esm/transaction/verifyTransaction.d.ts +4 -0
  538. package/dist/esm/transaction/verifyTransaction.js +14 -0
  539. package/dist/esm/verifyKey.d.ts +28 -0
  540. package/dist/esm/verifyKey.js +123 -0
  541. package/dist/esm/wallet.d.ts +15 -0
  542. package/dist/esm/wallet.js +5 -0
  543. package/package.json +32 -15
  544. package/dist/src/abstractUtxoCoin.d.ts.map +0 -1
  545. package/dist/src/abstractUtxoCoin.js +0 -634
  546. package/dist/src/address/fixedScript.js +0 -150
  547. package/dist/src/config.js +0 -14
  548. package/dist/src/descriptor/NamedDescriptor.js +0 -79
  549. package/dist/src/descriptor/assertDescriptorWalletAddress.js +0 -66
  550. package/dist/src/descriptor/builder/builder.js +0 -37
  551. package/dist/src/descriptor/builder/parse.js +0 -116
  552. package/dist/src/descriptor/createWallet/createDescriptorWallet.js +0 -41
  553. package/dist/src/descriptor/createWallet/createDescriptors.js +0 -33
  554. package/dist/src/descriptor/descriptorWallet.js +0 -54
  555. package/dist/src/descriptor/validatePolicy.js +0 -92
  556. package/dist/src/impl/bch/bch.js +0 -70
  557. package/dist/src/impl/btc/inscriptionBuilder.js +0 -183
  558. package/dist/src/impl/btg/btg.js +0 -48
  559. package/dist/src/impl/doge/doge.d.ts.map +0 -1
  560. package/dist/src/impl/doge/doge.js +0 -79
  561. package/dist/src/keychains.js +0 -104
  562. package/dist/src/names.js +0 -214
  563. package/dist/src/offlineVault/OfflineVaultHalfSigned.js +0 -26
  564. package/dist/src/offlineVault/OfflineVaultSignable.js +0 -55
  565. package/dist/src/offlineVault/TransactionExplanation.js +0 -16
  566. package/dist/src/offlineVault/descriptor/transaction.js +0 -80
  567. package/dist/src/recovery/backupKeyRecovery.js +0 -370
  568. package/dist/src/recovery/baseApi.js +0 -73
  569. package/dist/src/recovery/coingeckoApi.js +0 -44
  570. package/dist/src/recovery/crossChainRecovery.js +0 -364
  571. package/dist/src/recovery/mempoolApi.js +0 -36
  572. package/dist/src/replayProtection.d.ts.map +0 -1
  573. package/dist/src/replayProtection.js +0 -53
  574. package/dist/src/sign.js +0 -205
  575. package/dist/src/transaction/bip322.js +0 -125
  576. package/dist/src/transaction/descriptor/explainPsbt.d.ts.map +0 -1
  577. package/dist/src/transaction/descriptor/explainPsbt.js +0 -80
  578. package/dist/src/transaction/descriptor/parse.js +0 -116
  579. package/dist/src/transaction/descriptor/parseToAmountType.js +0 -60
  580. package/dist/src/transaction/descriptor/signPsbt.js +0 -43
  581. package/dist/src/transaction/descriptor/verifyTransaction.js +0 -108
  582. package/dist/src/transaction/explainTransaction.d.ts.map +0 -1
  583. package/dist/src/transaction/explainTransaction.js +0 -67
  584. package/dist/src/transaction/fetchInputs.js +0 -109
  585. package/dist/src/transaction/fixedScript/explainTransaction.d.ts +0 -29
  586. package/dist/src/transaction/fixedScript/explainTransaction.d.ts.map +0 -1
  587. package/dist/src/transaction/fixedScript/explainTransaction.js +0 -321
  588. package/dist/src/transaction/fixedScript/index.d.ts.map +0 -1
  589. package/dist/src/transaction/fixedScript/parseTransaction.d.ts.map +0 -1
  590. package/dist/src/transaction/fixedScript/parseTransaction.js +0 -203
  591. package/dist/src/transaction/fixedScript/signTransaction.js +0 -101
  592. package/dist/src/transaction/fixedScript/verifyTransaction.js +0 -198
  593. package/dist/src/transaction/outputDifference.js +0 -47
  594. package/dist/src/transaction/recipient.js +0 -88
  595. package/dist/src/transaction/signTransaction.js +0 -102
  596. package/dist/src/verifyKey.js +0 -164
  597. package/dist/src/wallet.js +0 -8
  598. /package/dist/{src → cjs/src}/address/fixedScript.d.ts +0 -0
  599. /package/dist/{src → cjs/src}/address/index.d.ts +0 -0
  600. /package/dist/{src → cjs/src}/config.d.ts +0 -0
  601. /package/dist/{src → cjs/src}/descriptor/NamedDescriptor.d.ts +0 -0
  602. /package/dist/{src → cjs/src}/descriptor/assertDescriptorWalletAddress.d.ts +0 -0
  603. /package/dist/{src → cjs/src}/descriptor/builder/builder.d.ts +0 -0
  604. /package/dist/{src → cjs/src}/descriptor/builder/index.d.ts +0 -0
  605. /package/dist/{src → cjs/src}/descriptor/builder/parse.d.ts +0 -0
  606. /package/dist/{src → cjs/src}/descriptor/createWallet/createDescriptorWallet.d.ts +0 -0
  607. /package/dist/{src → cjs/src}/descriptor/createWallet/createDescriptors.d.ts +0 -0
  608. /package/dist/{src → cjs/src}/descriptor/createWallet/index.d.ts +0 -0
  609. /package/dist/{src → cjs/src}/descriptor/descriptorWallet.d.ts +0 -0
  610. /package/dist/{src → cjs/src}/descriptor/index.d.ts +0 -0
  611. /package/dist/{src → cjs/src}/descriptor/validatePolicy.d.ts +0 -0
  612. /package/dist/{src → cjs/src}/impl/bch/bch.d.ts +0 -0
  613. /package/dist/{src → cjs/src}/impl/bch/index.d.ts +0 -0
  614. /package/dist/{src → cjs/src}/impl/bch/tbch.d.ts +0 -0
  615. /package/dist/{src → cjs/src}/impl/bcha/bcha.d.ts +0 -0
  616. /package/dist/{src → cjs/src}/impl/bcha/index.d.ts +0 -0
  617. /package/dist/{src → cjs/src}/impl/bcha/tbcha.d.ts +0 -0
  618. /package/dist/{src → cjs/src}/impl/bsv/bsv.d.ts +0 -0
  619. /package/dist/{src → cjs/src}/impl/bsv/index.d.ts +0 -0
  620. /package/dist/{src → cjs/src}/impl/bsv/tbsv.d.ts +0 -0
  621. /package/dist/{src → cjs/src}/impl/btc/btc.d.ts +0 -0
  622. /package/dist/{src → cjs/src}/impl/btc/index.d.ts +0 -0
  623. /package/dist/{src → cjs/src}/impl/btc/inscriptionBuilder.d.ts +0 -0
  624. /package/dist/{src → cjs/src}/impl/btc/tbtc.d.ts +0 -0
  625. /package/dist/{src → cjs/src}/impl/btc/tbtc4.d.ts +0 -0
  626. /package/dist/{src → cjs/src}/impl/btc/tbtcbgsig.d.ts +0 -0
  627. /package/dist/{src → cjs/src}/impl/btc/tbtcsig.d.ts +0 -0
  628. /package/dist/{src → cjs/src}/impl/btg/btg.d.ts +0 -0
  629. /package/dist/{src → cjs/src}/impl/btg/index.d.ts +0 -0
  630. /package/dist/{src → cjs/src}/impl/dash/dash.d.ts +0 -0
  631. /package/dist/{src → cjs/src}/impl/dash/index.d.ts +0 -0
  632. /package/dist/{src → cjs/src}/impl/dash/tdash.d.ts +0 -0
  633. /package/dist/{src → cjs/src}/impl/doge/index.d.ts +0 -0
  634. /package/dist/{src → cjs/src}/impl/doge/tdoge.d.ts +0 -0
  635. /package/dist/{src → cjs/src}/impl/index.d.ts +0 -0
  636. /package/dist/{src → cjs/src}/impl/ltc/index.d.ts +0 -0
  637. /package/dist/{src → cjs/src}/impl/ltc/ltc.d.ts +0 -0
  638. /package/dist/{src → cjs/src}/impl/ltc/tltc.d.ts +0 -0
  639. /package/dist/{src → cjs/src}/impl/zec/index.d.ts +0 -0
  640. /package/dist/{src → cjs/src}/impl/zec/tzec.d.ts +0 -0
  641. /package/dist/{src → cjs/src}/impl/zec/zec.d.ts +0 -0
  642. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  643. /package/dist/{src → cjs/src}/keychains.d.ts +0 -0
  644. /package/dist/{src → cjs/src}/names.d.ts +0 -0
  645. /package/dist/{src → cjs/src}/offlineVault/OfflineVaultHalfSigned.d.ts +0 -0
  646. /package/dist/{src → cjs/src}/offlineVault/OfflineVaultSignable.d.ts +0 -0
  647. /package/dist/{src → cjs/src}/offlineVault/TransactionExplanation.d.ts +0 -0
  648. /package/dist/{src → cjs/src}/offlineVault/descriptor/index.d.ts +0 -0
  649. /package/dist/{src → cjs/src}/offlineVault/descriptor/transaction.d.ts +0 -0
  650. /package/dist/{src → cjs/src}/offlineVault/index.d.ts +0 -0
  651. /package/dist/{src → cjs/src}/recovery/RecoveryProvider.d.ts +0 -0
  652. /package/dist/{src → cjs/src}/recovery/backupKeyRecovery.d.ts +0 -0
  653. /package/dist/{src → cjs/src}/recovery/baseApi.d.ts +0 -0
  654. /package/dist/{src → cjs/src}/recovery/coingeckoApi.d.ts +0 -0
  655. /package/dist/{src → cjs/src}/recovery/crossChainRecovery.d.ts +0 -0
  656. /package/dist/{src → cjs/src}/recovery/index.d.ts +0 -0
  657. /package/dist/{src → cjs/src}/recovery/mempoolApi.d.ts +0 -0
  658. /package/dist/{src → cjs/src}/sign.d.ts +0 -0
  659. /package/dist/{src → cjs/src}/transaction/bip322.d.ts +0 -0
  660. /package/dist/{src → cjs/src}/transaction/common/verifyPayGoAmount.d.ts +0 -0
  661. /package/dist/{src → cjs/src}/transaction/descriptor/index.d.ts +0 -0
  662. /package/dist/{src → cjs/src}/transaction/descriptor/parse.d.ts +0 -0
  663. /package/dist/{src → cjs/src}/transaction/descriptor/parseToAmountType.d.ts +0 -0
  664. /package/dist/{src → cjs/src}/transaction/descriptor/recipient.d.ts +0 -0
  665. /package/dist/{src → cjs/src}/transaction/descriptor/signPsbt.d.ts +0 -0
  666. /package/dist/{src → cjs/src}/transaction/descriptor/verifyTransaction.d.ts +0 -0
  667. /package/dist/{src → cjs/src}/transaction/fetchInputs.d.ts +0 -0
  668. /package/dist/{src → cjs/src}/transaction/fixedScript/parseOutput.d.ts +0 -0
  669. /package/dist/{src → cjs/src}/transaction/fixedScript/signTransaction.d.ts +0 -0
  670. /package/dist/{src → cjs/src}/transaction/fixedScript/verifyTransaction.d.ts +0 -0
  671. /package/dist/{src → cjs/src}/transaction/getPayGoVerificationPubkey.d.ts +0 -0
  672. /package/dist/{src → cjs/src}/transaction/index.d.ts +0 -0
  673. /package/dist/{src → cjs/src}/transaction/outputDifference.d.ts +0 -0
  674. /package/dist/{src → cjs/src}/transaction/parseTransaction.d.ts +0 -0
  675. /package/dist/{src → cjs/src}/transaction/recipient.d.ts +0 -0
  676. /package/dist/{src → cjs/src}/transaction/signTransaction.d.ts +0 -0
  677. /package/dist/{src → cjs/src}/transaction/verifyTransaction.d.ts +0 -0
  678. /package/dist/{src → cjs/src}/verifyKey.d.ts +0 -0
  679. /package/dist/{src → cjs/src}/wallet.d.ts +0 -0
  680. /package/dist/{src → esm}/address/fixedScript.d.ts.map +0 -0
  681. /package/dist/{src → esm}/address/index.d.ts.map +0 -0
  682. /package/dist/{src → esm}/config.d.ts.map +0 -0
  683. /package/dist/{src → esm}/descriptor/NamedDescriptor.d.ts.map +0 -0
  684. /package/dist/{src → esm}/descriptor/assertDescriptorWalletAddress.d.ts.map +0 -0
  685. /package/dist/{src → esm}/descriptor/builder/builder.d.ts.map +0 -0
  686. /package/dist/{src → esm}/descriptor/builder/index.d.ts.map +0 -0
  687. /package/dist/{src → esm}/descriptor/builder/parse.d.ts.map +0 -0
  688. /package/dist/{src → esm}/descriptor/createWallet/createDescriptorWallet.d.ts.map +0 -0
  689. /package/dist/{src → esm}/descriptor/createWallet/createDescriptors.d.ts.map +0 -0
  690. /package/dist/{src → esm}/descriptor/createWallet/index.d.ts.map +0 -0
  691. /package/dist/{src → esm}/descriptor/descriptorWallet.d.ts.map +0 -0
  692. /package/dist/{src → esm}/descriptor/index.d.ts.map +0 -0
  693. /package/dist/{src → esm}/descriptor/validatePolicy.d.ts.map +0 -0
  694. /package/dist/{src → esm}/impl/bch/bch.d.ts.map +0 -0
  695. /package/dist/{src → esm}/impl/bch/index.d.ts.map +0 -0
  696. /package/dist/{src → esm}/impl/bch/tbch.d.ts.map +0 -0
  697. /package/dist/{src → esm}/impl/bcha/bcha.d.ts.map +0 -0
  698. /package/dist/{src → esm}/impl/bcha/index.d.ts.map +0 -0
  699. /package/dist/{src → esm}/impl/bcha/tbcha.d.ts.map +0 -0
  700. /package/dist/{src → esm}/impl/bsv/bsv.d.ts.map +0 -0
  701. /package/dist/{src → esm}/impl/bsv/index.d.ts.map +0 -0
  702. /package/dist/{src → esm}/impl/bsv/tbsv.d.ts.map +0 -0
  703. /package/dist/{src → esm}/impl/btc/btc.d.ts.map +0 -0
  704. /package/dist/{src → esm}/impl/btc/index.d.ts.map +0 -0
  705. /package/dist/{src → esm}/impl/btc/inscriptionBuilder.d.ts.map +0 -0
  706. /package/dist/{src → esm}/impl/btc/tbtc.d.ts.map +0 -0
  707. /package/dist/{src → esm}/impl/btc/tbtc4.d.ts.map +0 -0
  708. /package/dist/{src → esm}/impl/btc/tbtcbgsig.d.ts.map +0 -0
  709. /package/dist/{src → esm}/impl/btc/tbtcsig.d.ts.map +0 -0
  710. /package/dist/{src → esm}/impl/btg/btg.d.ts.map +0 -0
  711. /package/dist/{src → esm}/impl/btg/index.d.ts.map +0 -0
  712. /package/dist/{src → esm}/impl/dash/dash.d.ts.map +0 -0
  713. /package/dist/{src → esm}/impl/dash/index.d.ts.map +0 -0
  714. /package/dist/{src → esm}/impl/dash/tdash.d.ts.map +0 -0
  715. /package/dist/{src → esm}/impl/doge/index.d.ts.map +0 -0
  716. /package/dist/{src → esm}/impl/doge/tdoge.d.ts.map +0 -0
  717. /package/dist/{src → esm}/impl/index.d.ts.map +0 -0
  718. /package/dist/{src → esm}/impl/ltc/index.d.ts.map +0 -0
  719. /package/dist/{src → esm}/impl/ltc/ltc.d.ts.map +0 -0
  720. /package/dist/{src → esm}/impl/ltc/tltc.d.ts.map +0 -0
  721. /package/dist/{src → esm}/impl/zec/index.d.ts.map +0 -0
  722. /package/dist/{src → esm}/impl/zec/tzec.d.ts.map +0 -0
  723. /package/dist/{src → esm}/impl/zec/zec.d.ts.map +0 -0
  724. /package/dist/{src → esm}/index.d.ts.map +0 -0
  725. /package/dist/{src → esm}/keychains.d.ts.map +0 -0
  726. /package/dist/{src → esm}/names.d.ts.map +0 -0
  727. /package/dist/{src → esm}/offlineVault/OfflineVaultHalfSigned.d.ts.map +0 -0
  728. /package/dist/{src → esm}/offlineVault/OfflineVaultSignable.d.ts.map +0 -0
  729. /package/dist/{src → esm}/offlineVault/TransactionExplanation.d.ts.map +0 -0
  730. /package/dist/{src → esm}/offlineVault/descriptor/index.d.ts.map +0 -0
  731. /package/dist/{src → esm}/offlineVault/descriptor/transaction.d.ts.map +0 -0
  732. /package/dist/{src → esm}/offlineVault/index.d.ts.map +0 -0
  733. /package/dist/{src → esm}/recovery/RecoveryProvider.d.ts.map +0 -0
  734. /package/dist/{src → esm}/recovery/backupKeyRecovery.d.ts.map +0 -0
  735. /package/dist/{src → esm}/recovery/baseApi.d.ts.map +0 -0
  736. /package/dist/{src → esm}/recovery/coingeckoApi.d.ts.map +0 -0
  737. /package/dist/{src → esm}/recovery/crossChainRecovery.d.ts.map +0 -0
  738. /package/dist/{src → esm}/recovery/index.d.ts.map +0 -0
  739. /package/dist/{src → esm}/recovery/mempoolApi.d.ts.map +0 -0
  740. /package/dist/{src → esm}/sign.d.ts.map +0 -0
  741. /package/dist/{src → esm}/transaction/bip322.d.ts.map +0 -0
  742. /package/dist/{src → esm}/transaction/common/verifyPayGoAmount.d.ts.map +0 -0
  743. /package/dist/{src → esm}/transaction/descriptor/index.d.ts.map +0 -0
  744. /package/dist/{src → esm}/transaction/descriptor/parse.d.ts.map +0 -0
  745. /package/dist/{src → esm}/transaction/descriptor/parseToAmountType.d.ts.map +0 -0
  746. /package/dist/{src → esm}/transaction/descriptor/recipient.d.ts.map +0 -0
  747. /package/dist/{src → esm}/transaction/descriptor/signPsbt.d.ts.map +0 -0
  748. /package/dist/{src → esm}/transaction/descriptor/verifyTransaction.d.ts.map +0 -0
  749. /package/dist/{src → esm}/transaction/fetchInputs.d.ts.map +0 -0
  750. /package/dist/{src → esm}/transaction/fixedScript/parseOutput.d.ts.map +0 -0
  751. /package/dist/{src → esm}/transaction/fixedScript/signTransaction.d.ts.map +0 -0
  752. /package/dist/{src → esm}/transaction/fixedScript/verifyTransaction.d.ts.map +0 -0
  753. /package/dist/{src → esm}/transaction/getPayGoVerificationPubkey.d.ts.map +0 -0
  754. /package/dist/{src → esm}/transaction/index.d.ts.map +0 -0
  755. /package/dist/{src → esm}/transaction/outputDifference.d.ts.map +0 -0
  756. /package/dist/{src → esm}/transaction/parseTransaction.d.ts.map +0 -0
  757. /package/dist/{src → esm}/transaction/recipient.d.ts.map +0 -0
  758. /package/dist/{src → esm}/transaction/signTransaction.d.ts.map +0 -0
  759. /package/dist/{src → esm}/transaction/verifyTransaction.d.ts.map +0 -0
  760. /package/dist/{src → esm}/verifyKey.d.ts.map +0 -0
  761. /package/dist/{src → esm}/wallet.d.ts.map +0 -0
@@ -0,0 +1,285 @@
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
+ require("should");
41
+ const sinon = __importStar(require("sinon"));
42
+ const nock = require("nock");
43
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
44
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
45
+ const src_1 = require("../../../src");
46
+ const util_1 = require("../util");
47
+ const mock_1 = require("./mock");
48
+ const { toOutput } = utxolib.bitgo;
49
+ const config = { krsProviders: sdk_core_1.krsProviders };
50
+ nock.disableNetConnect();
51
+ function configOverride(f) {
52
+ const backup = { ...sdk_core_1.krsProviders };
53
+ before(function () {
54
+ f(config);
55
+ });
56
+ after(function () {
57
+ Object.entries(backup).forEach(([k, v]) => {
58
+ config[k] = v;
59
+ });
60
+ });
61
+ }
62
+ const walletPassphrase = 'lol';
63
+ function getNamedKeys([userKey, backupKey, bitgoKey], password) {
64
+ function encode(k) {
65
+ return k.isNeutered() ? k.toBase58() : (0, util_1.encryptKeychain)(password, (0, util_1.toKeychainBase58)(k));
66
+ }
67
+ return {
68
+ userKey: encode(userKey),
69
+ backupKey: encode(backupKey),
70
+ bitgoKey: encode(bitgoKey),
71
+ };
72
+ }
73
+ function getKeysForUnsignedSweep([userKey, backupKey, bitgoKey], password) {
74
+ return getNamedKeys([userKey.neutered(), backupKey.neutered(), bitgoKey.neutered()], password);
75
+ }
76
+ function getKeysForKeyRecoveryService([userKey, backupKey, bitgoKey], password) {
77
+ return getNamedKeys([userKey, backupKey.neutered(), bitgoKey.neutered()], password);
78
+ }
79
+ function getKeysForFullSignedRecovery([userKey, backupKey, bitgoKey], password) {
80
+ return getNamedKeys([userKey, backupKey, bitgoKey.neutered()], password);
81
+ }
82
+ const walletKeys = (0, util_1.getDefaultWalletKeys)();
83
+ const keysUnsignedSweep = getKeysForUnsignedSweep(walletKeys.triple, walletPassphrase);
84
+ const keysKeyRecoveryService = getKeysForKeyRecoveryService(walletKeys.triple, walletPassphrase);
85
+ const keysFullSignedRecovery = getKeysForFullSignedRecovery(walletKeys.triple, walletPassphrase);
86
+ const exoticUserKeyPath = '99/99';
87
+ const exoticWalletKeys = new utxolib.bitgo.RootWalletKeys(util_1.keychains, [
88
+ exoticUserKeyPath,
89
+ utxolib.bitgo.RootWalletKeys.defaultPrefix,
90
+ utxolib.bitgo.RootWalletKeys.defaultPrefix,
91
+ ]);
92
+ const keysFullSignedRecoveryExotic = getKeysForFullSignedRecovery(exoticWalletKeys.triple, walletPassphrase);
93
+ function run(coin, scriptTypes, walletKeys, params, tags = []) {
94
+ describe(`Backup Key Recovery [${[coin.getChain(), ...tags, params.krsProvider].join(',')}]`, function () {
95
+ const externalWallet = (0, util_1.getWalletKeys)('external');
96
+ const recoveryDestination = (0, util_1.getWalletAddress)(coin.network, externalWallet);
97
+ let keyRecoveryServiceAddress;
98
+ let recovery;
99
+ let recoveryTx;
100
+ // 1e8 * 9e7 < 9.007e15 but 2e8 * 9e7 > 9.007e15 to test both code paths in queryBlockchainUnspentsPath
101
+ const valueMul = coin.amountType === 'bigint' ? BigInt(9e7) : BigInt(1);
102
+ before('mock', function () {
103
+ sinon.stub(src_1.CoingeckoApi.prototype, 'getUSDPrice').resolves(69420);
104
+ });
105
+ configOverride(function (config) {
106
+ const configKrsProviders = { ...config.krsProviders };
107
+ configKrsProviders.dai.supportedCoins = [coin.getFamily()];
108
+ configKrsProviders.keyternal.supportedCoins = [coin.getFamily()];
109
+ keyRecoveryServiceAddress = (0, util_1.getWalletAddress)(coin.network, externalWallet, 0, 100);
110
+ configKrsProviders.keyternal.feeAddresses = { [coin.getChain()]: keyRecoveryServiceAddress };
111
+ config.krsProviders = configKrsProviders;
112
+ });
113
+ after(function () {
114
+ sinon.restore();
115
+ });
116
+ let recoverUnspents;
117
+ let mockedApiUnspents;
118
+ before('create recovery data', async function () {
119
+ recoverUnspents = scriptTypes.flatMap((scriptType, index) => [
120
+ utxolib.testutil.toUnspent({ scriptType, value: BigInt(1e8) * valueMul }, index, coin.network, walletKeys),
121
+ utxolib.testutil.toUnspent({ scriptType, value: BigInt(2e8) * valueMul }, index, coin.network, walletKeys),
122
+ utxolib.testutil.toUnspent({ scriptType, value: BigInt(3e8) * valueMul }, index, coin.network, walletKeys),
123
+ ]);
124
+ // If the coin is bch, convert the mocked unspent address to cashaddr format since that is the format that blockchair
125
+ // returns on the /dashboards/addresses response
126
+ mockedApiUnspents =
127
+ coin.getChain() === 'bch' || coin.getChain() === 'bcha'
128
+ ? recoverUnspents.map((u) => ({ ...u, address: coin.canonicalAddress(u.address, 'cashaddr').split(':')[1] }))
129
+ : recoverUnspents;
130
+ assert_1.default.strictEqual(mockedApiUnspents.length, recoverUnspents.length);
131
+ recovery = await (0, src_1.backupKeyRecovery)(coin, util_1.defaultBitGo, {
132
+ walletPassphrase,
133
+ recoveryDestination,
134
+ scan: 5,
135
+ ignoreAddressTypes: [],
136
+ userKeyPath: params.userKeyPath,
137
+ krsProvider: params.krsProvider,
138
+ ...params.keys,
139
+ recoveryProvider: new mock_1.MockRecoveryProvider(mockedApiUnspents),
140
+ });
141
+ const txHex = recovery.transactionHex ?? recovery.txHex;
142
+ const isPsbt = utxolib.bitgo.isPsbt(txHex);
143
+ recoveryTx = isPsbt
144
+ ? utxolib.bitgo.createPsbtFromHex(txHex, coin.network)
145
+ : utxolib.bitgo.createTransactionFromHex(txHex, coin.network, coin.amountType);
146
+ recovery.txid =
147
+ recoveryTx instanceof utxolib.bitgo.UtxoPsbt ? recoveryTx.getUnsignedTx().getId() : recoveryTx.getId();
148
+ });
149
+ it('has correct recovery provider mocks', async function () {
150
+ const recoveryProvider = new mock_1.MockRecoveryProvider(mockedApiUnspents);
151
+ (await recoveryProvider.getUnspentsForAddresses(mockedApiUnspents.map((u) => u.address))).length.should.eql(mockedApiUnspents.length);
152
+ });
153
+ it('matches fixture', async function () {
154
+ const fixtureCoin = (0, util_1.getNormalTestnetCoin)(coin);
155
+ const fixtureRecovery = { ...recovery };
156
+ if (fixtureRecovery.coin) {
157
+ fixtureRecovery.coin = fixtureCoin.getChain();
158
+ }
159
+ (0, util_1.shouldEqualJSON)(fixtureRecovery, await (0, util_1.getFixture)(fixtureCoin, `recovery/backupKeyRecovery-${(params.krsProvider ? tags.concat([params.krsProvider]) : tags).join('-')}`, recovery));
160
+ });
161
+ it('has expected input count', function () {
162
+ (recoveryTx instanceof utxolib.bitgo.UtxoPsbt ? recoveryTx.data.inputs : recoveryTx.ins).length.should.eql(recoverUnspents.length);
163
+ });
164
+ function checkInputsSignedBy(tx, rootKey, expectCount) {
165
+ if (tx instanceof utxolib.bitgo.UtxoPsbt) {
166
+ function validate(tx, inputIndex) {
167
+ try {
168
+ return tx.validateSignaturesOfInputHD(inputIndex, rootKey);
169
+ }
170
+ catch (e) {
171
+ if (e.message === 'No signatures to validate') {
172
+ return false;
173
+ }
174
+ throw e;
175
+ }
176
+ }
177
+ tx.data.inputs.forEach((input, inputIndex) => {
178
+ validate(tx, inputIndex).should.eql(!!expectCount);
179
+ });
180
+ }
181
+ else {
182
+ const prevOutputs = recoverUnspents
183
+ .map((u) => toOutput(u, coin.network))
184
+ .map((v) => ({ ...v, value: utxolib.bitgo.toTNumber(v.value, coin.amountType) }));
185
+ tx.ins.forEach((input, inputIndex) => {
186
+ const unspent = recoverUnspents[inputIndex];
187
+ const { publicKey } = rootKey.derivePath(walletKeys.getDerivationPath(rootKey, unspent.chain, unspent.index));
188
+ const signatures = utxolib.bitgo
189
+ .getSignatureVerifications(tx, inputIndex, utxolib.bitgo.toTNumber(unspent.value, coin.amountType), { publicKey }, prevOutputs)
190
+ .filter((s) => s.signedBy !== undefined);
191
+ signatures.length.should.eql(expectCount);
192
+ });
193
+ }
194
+ }
195
+ it((params.hasUserSignature ? 'has' : 'has no') + ' user signature', function () {
196
+ checkInputsSignedBy(recoveryTx, walletKeys.user, params.hasUserSignature ? 1 : 0);
197
+ });
198
+ it((params.hasBackupSignature ? 'has' : 'has no') + ' backup signature', function () {
199
+ checkInputsSignedBy(recoveryTx, walletKeys.backup, params.hasBackupSignature ? 1 : 0);
200
+ });
201
+ if (params.hasUserSignature && params.hasBackupSignature) {
202
+ it('has no placeholder signatures', function () {
203
+ if (recoveryTx instanceof utxolib.bitgo.UtxoTransaction) {
204
+ recoveryTx.ins.forEach((input) => {
205
+ const parsed = utxolib.bitgo.parseSignatureScript(input);
206
+ switch (parsed.scriptType) {
207
+ case 'p2sh':
208
+ case 'p2shP2wsh':
209
+ case 'p2wsh':
210
+ case 'taprootScriptPathSpend':
211
+ parsed.signatures.forEach((signature, i) => {
212
+ if (utxolib.bitgo.isPlaceholderSignature(signature)) {
213
+ throw new Error(`placeholder signature at index ${i}`);
214
+ }
215
+ });
216
+ break;
217
+ default:
218
+ throw new Error(`unexpected scriptType ${parsed.scriptType}`);
219
+ }
220
+ });
221
+ }
222
+ else {
223
+ this.skip();
224
+ }
225
+ });
226
+ }
227
+ it((params.hasKrsOutput ? 'has' : 'has no') + ' key recovery service output', function () {
228
+ const outs = recoveryTx instanceof utxolib.bitgo.UtxoPsbt ? recoveryTx.getUnsignedTx().outs : recoveryTx.outs;
229
+ outs.length.should.eql(1);
230
+ const outputAddresses = outs.map((o) => utxolib.address.fromOutputScript(o.script, recoveryTx.network));
231
+ outputAddresses
232
+ .includes(keyRecoveryServiceAddress)
233
+ .should.eql(!!params.hasKrsOutput && params.krsProvider === 'keyternal');
234
+ outputAddresses.includes(recoveryDestination).should.eql(true);
235
+ });
236
+ });
237
+ }
238
+ function runWithScriptTypes(scriptTypes, { runKeyProviderTests = true } = {}) {
239
+ util_1.utxoCoins
240
+ .filter((coin) => scriptTypes.every((type) => coin.supportsAddressType(type)))
241
+ .forEach((coin) => {
242
+ run(coin, scriptTypes, walletKeys, {
243
+ keys: keysUnsignedSweep,
244
+ hasUserSignature: false,
245
+ hasBackupSignature: false,
246
+ }, ['unsignedRecovery', ...scriptTypes]);
247
+ if (runKeyProviderTests) {
248
+ ['dai', 'keyternal'].forEach((krsProvider) => {
249
+ run(coin, scriptTypes, walletKeys, {
250
+ keys: keysKeyRecoveryService,
251
+ krsProvider: krsProvider,
252
+ hasUserSignature: true,
253
+ hasBackupSignature: false,
254
+ hasKrsOutput: false,
255
+ }, ['keyRecoveryService', ...scriptTypes]);
256
+ });
257
+ }
258
+ run(coin, scriptTypes, walletKeys, {
259
+ keys: keysFullSignedRecovery,
260
+ hasUserSignature: true,
261
+ hasBackupSignature: true,
262
+ }, ['fullSignedRecovery', ...scriptTypes]);
263
+ run(coin, scriptTypes, walletKeys, {
264
+ keys: keysFullSignedRecovery,
265
+ hasUserSignature: true,
266
+ hasBackupSignature: true,
267
+ feeRate: 2,
268
+ }, ['fullSignedRecovery', 'fixedFeeRate', ...scriptTypes]);
269
+ run(coin, scriptTypes, exoticWalletKeys, {
270
+ keys: keysFullSignedRecoveryExotic,
271
+ userKeyPath: exoticUserKeyPath,
272
+ hasUserSignature: true,
273
+ hasBackupSignature: true,
274
+ }, ['fullSignedRecovery', 'customUserKeyPath', ...scriptTypes]);
275
+ });
276
+ }
277
+ describe('Backup Key Recovery', function () {
278
+ // compatible with all coins
279
+ runWithScriptTypes(['p2sh']);
280
+ // segwit compatible coins
281
+ runWithScriptTypes(['p2shP2wsh', 'p2wsh']);
282
+ // taproot compatible coins
283
+ runWithScriptTypes(['p2tr', 'p2trMusig2'], { runKeyProviderTests: false });
284
+ });
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3VwS2V5UmVjb3ZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvcmVjb3ZlcnkvYmFja3VwS2V5UmVjb3ZlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsa0JBQWdCO0FBRWhCLDZDQUErQjtBQUMvQiw2QkFBOEI7QUFFOUIsOERBQWdEO0FBQ2hELG1EQUFvRTtBQUVwRSxzQ0FNc0I7QUFDdEIsa0NBWWlCO0FBRWpCLGlDQUE4QztBQUU5QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUtuQyxNQUFNLE1BQU0sR0FBRyxFQUFFLFlBQVksRUFBWix1QkFBWSxFQUFFLENBQUM7QUFFaEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFFekIsU0FBUyxjQUFjLENBQUMsQ0FBMkI7SUFDakQsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLHVCQUFZLEVBQUUsQ0FBQztJQUNuQyxNQUFNLENBQUM7UUFDTCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDWixDQUFDLENBQUMsQ0FBQztJQUNILEtBQUssQ0FBQztRQUNKLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN4QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7QUFRL0IsU0FBUyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBeUIsRUFBRSxRQUFnQjtJQUM1RixTQUFTLE1BQU0sQ0FBQyxD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LElBQUk7WUFDeEIsT0FBTyxFQUFFLENBQUM7U0FDWCxFQUNELENBQUMsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQ3ZELENBQUM7UUFFRixHQUFHLENBQ0QsSUFBSSxFQUNKLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEI7WUFDRSxJQUFJLEVBQUUsNEJBQTRCO1lBQ2xDLFdBQVcsRUFBRSxpQkFBaUI7WUFDOUIsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixrQkFBa0IsRUFBRSxJQUFJO1NBQ3pCLEVBQ0QsQ0FBQyxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUM1RCxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsUUFBUSxDQUFDLHFCQUFxQixFQUFFO0lBQzlCLDRCQUE0QjtJQUM1QixrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFFN0IsMEJBQTBCO0lBQzFCLGtCQUFrQixDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFM0MsMkJBQTJCO0lBQzNCLGtCQUFrQixDQUFDLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUM3RSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0ICogYXMgbW9jaGEgZnJvbSAnbW9jaGEnO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgQ29uZmlnLCBrcnNQcm92aWRlcnMsIFRyaXBsZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuaW1wb3J0IHtcbiAgQWJzdHJhY3RVdHhvQ29pbixcbiAgYmFja3VwS2V5UmVjb3ZlcnksXG4gIEJhY2t1cEtleVJlY292ZXJ5VHJhbnNhbnNhY3Rpb24sXG4gIENvaW5nZWNrb0FwaSxcbiAgRm9ybWF0dGVkT2ZmbGluZVZhdWx0VHhJbmZvLFxufSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHtcbiAgZGVmYXVsdEJpdEdvLFxuICBlbmNyeXB0S2V5Y2hhaW4sXG4gIGdldERlZmF1bHRXYWxsZXRLZXlzLFxuICBnZXRGaXh0dXJlLFxuICBnZXROb3JtYWxUZXN0bmV0Q29pbixcbiAgZ2V0V2FsbGV0QWRkcmVzcyxcbiAgZ2V0V2FsbGV0S2V5cyxcbiAga2V5Y2hhaW5zLFxuICBzaG91bGRFcXVhbEpTT04sXG4gIHRvS2V5Y2hhaW5CYXNlNTgsXG4gIHV0eG9Db2lucyxcbn0gZnJvbSAnLi4vdXRpbCc7XG5cbmltcG9ydCB7IE1vY2tSZWNvdmVyeVByb3ZpZGVyIH0gZnJvbSAnLi9tb2NrJztcblxuY29uc3QgeyB0b091dHB1dCB9ID0gdXR4b2xpYi5iaXRnbztcbnR5cGUgV2FsbGV0VW5zcGVudCA9IHV0eG9saWIuYml0Z28uV2FsbGV0VW5zcGVudDxiaWdpbnQ+O1xudHlwZSBSb290V2FsbGV0S2V5cyA9IHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXM7XG50eXBlIFNjcmlwdFR5cGUyT2YzID0gdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGUyT2YzO1xuXG5jb25zdCBjb25maWcgPSB7IGtyc1Byb3ZpZGVycyB9O1xuXG5ub2NrLmRpc2FibGVOZXRDb25uZWN0KCk7XG5cbmZ1bmN0aW9uIGNvbmZpZ092ZXJyaWRlKGY6IChjb25maWc6IENvbmZpZykgPT4gdm9pZCkge1xuICBjb25zdCBiYWNrdXAgPSB7IC4uLmtyc1Byb3ZpZGVycyB9O1xuICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgIGYoY29uZmlnKTtcbiAgfSk7XG4gIGFmdGVyKGZ1bmN0aW9uICgpIHtcbiAgICBPYmplY3QuZW50cmllcyhiYWNrdXApLmZvckVhY2goKFtrLCB2XSkgPT4ge1xuICAgICAgY29uZmlnW2tdID0gdjtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmNvbnN0IHdhbGxldFBhc3NwaHJhc2UgPSAnbG9sJztcblxudHlwZSBOYW1lZEtleXMgPSB7XG4gIHVzZXJLZXk6IHN0cmluZztcbiAgYmFja3VwS2V5OiBzdHJpbmc7XG4gIGJpdGdvS2V5OiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBnZXROYW1lZEtleXMoW3VzZXJLZXksIGJhY2t1cEtleSwgYml0Z29LZXldOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+LCBwYXNzd29yZDogc3RyaW5nKTogTmFtZWRLZXlzIHtcbiAgZnVuY3Rpb24gZW5jb2RlKGs6IEJJUDMySW50ZXJmYWNlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gay5pc05ldXRlcmVkKCkgPyBrLnRvQmFzZTU4KCkgOiBlbmNyeXB0S2V5Y2hhaW4ocGFzc3dvcmQsIHRvS2V5Y2hhaW5CYXNlNTgoaykpO1xuICB9XG4gIHJldHVybiB7XG4gICAgdXNlcktleTogZW5jb2RlKHVzZXJLZXkpLFxuICAgIGJhY2t1cEtleTogZW5jb2RlKGJhY2t1cEtleSksXG4gICAgYml0Z29LZXk6IGVuY29kZShiaXRnb0tleSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEtleXNGb3JVbnNpZ25lZFN3ZWVwKFt1c2VyS2V5LCBiYWNrdXBLZXksIGJpdGdvS2V5XTogVHJpcGxlPEJJUDMySW50ZXJmYWNlPiwgcGFzc3dvcmQ6IHN0cmluZyk6IE5hbWVkS2V5cyB7XG4gIHJldHVybiBnZXROYW1lZEtleXMoW3VzZXJLZXkubmV1dGVyZWQoKSwgYmFja3VwS2V5Lm5ldXRlcmVkKCksIGJpdGdvS2V5Lm5ldXRlcmVkKCldLCBwYXNzd29yZCk7XG59XG5cbmZ1bmN0aW9uIGdldEtleXNGb3JLZXlSZWNvdmVyeVNlcnZpY2UoXG4gIFt1c2VyS2V5LCBiYWNrdXBLZXksIGJpdGdvS2V5XTogVHJpcGxlPEJJUDMySW50ZXJmYWNlPixcbiAgcGFzc3dvcmQ6IHN0cmluZ1xuKTogTmFtZWRLZXlzIHtcbiAgcmV0dXJuIGdldE5hbWVkS2V5cyhbdXNlcktleSwgYmFja3VwS2V5Lm5ldXRlcmVkKCksIGJpdGdvS2V5Lm5ldXRlcmVkKCldLCBwYXNzd29yZCk7XG59XG5cbmZ1bmN0aW9uIGdldEtleXNGb3JGdWxsU2lnbmVkUmVjb3ZlcnkoXG4gIFt1c2VyS2V5LCBiYWNrdXBLZXksIGJpdGdvS2V5XTogVHJpcGxlPEJJUDMySW50ZXJmYWNlPixcbiAgcGFzc3dvcmQ6IHN0cmluZ1xuKTogTmFtZWRLZXlzIHtcbiAgcmV0dXJuIGdldE5hbWVkS2V5cyhbdXNlcktleSwgYmFja3VwS2V5LCBiaXRnb0tleS5uZXV0ZXJlZCgpXSwgcGFzc3dvcmQpO1xufVxuXG5jb25zdCB3YWxsZXRLZXlzID0gZ2V0RGVmYXVsdFdhbGxldEtleXMoKTtcbmNvbnN0IGtleXNVbnNpZ25lZFN3ZWVwID0gZ2V0S2V5c0ZvclVuc2lnbmVkU3dlZXAod2FsbGV0S2V5cy50cmlwbGUsIHdhbGxldFBhc3NwaHJhc2UpO1xuY29uc3Qga2V5c0tleVJlY292ZXJ5U2VydmljZSA9IGdldEtleXNGb3JLZXlSZWNvdmVyeVNlcnZpY2Uod2FsbGV0S2V5cy50cmlwbGUsIHdhbGxldFBhc3NwaHJhc2UpO1xuY29uc3Qga2V5c0Z1bGxTaWduZWRSZWNvdmVyeSA9IGdldEtleXNGb3JGdWxsU2lnbmVkUmVjb3Zlcnkod2FsbGV0S2V5cy50cmlwbGUsIHdhbGxldFBhc3NwaHJhc2UpO1xuXG5jb25zdCBleG90aWNVc2VyS2V5UGF0aCA9ICc5OS85OSc7XG5jb25zdCBleG90aWNXYWxsZXRLZXlzID0gbmV3IHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXMoa2V5Y2hhaW5zLCBbXG4gIGV4b3RpY1VzZXJLZXlQYXRoLFxuICB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzLmRlZmF1bHRQcmVmaXgsXG4gIHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXMuZGVmYXVsdFByZWZpeCxcbl0pO1xuY29uc3Qga2V5c0Z1bGxTaWduZWRSZWNvdmVyeUV4b3RpYyA9IGdldEtleXNGb3JGdWxsU2lnbmVkUmVjb3ZlcnkoZXhvdGljV2FsbGV0S2V5cy50cmlwbGUsIHdhbGxldFBhc3NwaHJhc2UpO1xuXG5mdW5jdGlvbiBydW4oXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHNjcmlwdFR5cGVzOiBTY3JpcHRUeXBlMk9mM1tdLFxuICB3YWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgcGFyYW1zOiB7XG4gICAga2V5czogTmFtZWRLZXlzO1xuICAgIHVzZXJLZXlQYXRoPzogc3RyaW5nO1xuICAgIGtyc1Byb3ZpZGVyPzogc3RyaW5nO1xuICAgIGhhc1VzZXJTaWduYXR1cmU6IGJvb2xlYW47XG4gICAgaGFzQmFja3VwU2lnbmF0dXJlOiBib29sZWFuO1xuICAgIGhhc0tyc091dHB1dD86IGJvb2xlYW47XG4gICAgZmVlUmF0ZT86IG51bWJlcjtcbiAgfSxcbiAgdGFnczogc3RyaW5nW10gPSBbXVxuKSB7XG4gIGRlc2NyaWJlKGBCYWNrdXAgS2V5IFJlY292ZXJ5IFske1tjb2luLmdldENoYWluKCksIC4uLnRhZ3MsIHBhcmFtcy5rcnNQcm92aWRlcl0uam9pbignLCcpfV1gLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZXh0ZXJuYWxXYWxsZXQgPSBnZXRXYWxsZXRLZXlzKCdleHRlcm5hbCcpO1xuICAgIGNvbnN0IHJlY292ZXJ5RGVzdGluYXRpb24gPSBnZXRXYWxsZXRBZGRyZXNzKGNvaW4ubmV0d29yaywgZXh0ZXJuYWxXYWxsZXQpO1xuXG4gICAgbGV0IGtleVJlY292ZXJ5U2VydmljZUFkZHJlc3M6IHN0cmluZztcbiAgICBsZXQgcmVjb3Zlcnk6IChCYWNrdXBLZXlSZWNvdmVyeVRyYW5zYW5zYWN0aW9uIHwgRm9ybWF0dGVkT2ZmbGluZVZhdWx0VHhJbmZvKSAmIHsgdHhpZD86IHN0cmluZyB9O1xuICAgIGxldCByZWNvdmVyeVR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxudW1iZXIgfCBiaWdpbnQ+IHwgdXR4b2xpYi5iaXRnby5VdHhvUHNidDtcblxuICAgIC8vIDFlOCAqIDllNyA8IDkuMDA3ZTE1IGJ1dCAyZTggKiA5ZTcgPiA5LjAwN2UxNSB0byB0ZXN0IGJvdGggY29kZSBwYXRocyBpbiBxdWVyeUJsb2NrY2hhaW5VbnNwZW50c1BhdGhcbiAgICBjb25zdCB2YWx1ZU11bCA9IGNvaW4uYW1vdW50VHlwZSA9PT0gJ2JpZ2ludCcgPyBCaWdJbnQoOWU3KSA6IEJpZ0ludCgxKTtcbiAgICBiZWZvcmUoJ21vY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzaW5vbi5zdHViKENvaW5nZWNrb0FwaS5wcm90b3R5cGUsICdnZXRVU0RQcmljZScpLnJlc29sdmVzKDY5XzQyMCk7XG4gICAgfSk7XG5cbiAgICBjb25maWdPdmVycmlkZShmdW5jdGlvbiAoY29uZmlnOiBDb25maWcpIHtcbiAgICAgIGNvbnN0IGNvbmZpZ0tyc1Byb3ZpZGVycyA9IHsgLi4uY29uZmlnLmtyc1Byb3ZpZGVycyB9O1xuICAgICAgY29uZmlnS3JzUHJvdmlkZXJzLmRhaS5zdXBwb3J0ZWRDb2lucyA9IFtjb2luLmdldEZhbWlseSgpXTtcbiAgICAgIGNvbmZpZ0tyc1Byb3ZpZGVycy5rZXl0ZXJuYWwuc3VwcG9ydGVkQ29pbnMgPSBbY29pbi5nZXRGYW1pbHkoKV07XG4gICAgICBrZXlSZWNvdmVyeVNlcnZpY2VBZGRyZXNzID0gZ2V0V2FsbGV0QWRkcmVzcyhjb2luLm5ldHdvcmssIGV4dGVybmFsV2FsbGV0LCAwLCAxMDApO1xuICAgICAgY29uZmlnS3JzUHJvdmlkZXJzLmtleXRlcm5hbC5mZWVBZGRyZXNzZXMgPSB7IFtjb2luLmdldENoYWluKCldOiBrZXlSZWNvdmVyeVNlcnZpY2VBZGRyZXNzIH07XG4gICAgICBjb25maWcua3JzUHJvdmlkZXJzID0gY29uZmlnS3JzUHJvdmlkZXJzO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgc2lub24ucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgbGV0IHJlY292ZXJVbnNwZW50czogdXR4b2xpYi5iaXRnby5VbnNwZW50PGJpZ2ludD5bXTtcbiAgICBsZXQgbW9ja2VkQXBpVW5zcGVudHM6IHV0eG9saWIuYml0Z28uVW5zcGVudDxiaWdpbnQ+W107XG5cbiAgICBiZWZvcmUoJ2NyZWF0ZSByZWNvdmVyeSBkYXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgcmVjb3ZlclVuc3BlbnRzID0gc2NyaXB0VHlwZXMuZmxhdE1hcCgoc2NyaXB0VHlwZSwgaW5kZXgpID0+IFtcbiAgICAgICAgdXR4b2xpYi50ZXN0dXRpbC50b1Vuc3BlbnQoeyBzY3JpcHRUeXBlLCB2YWx1ZTogQmlnSW50KDFlOCkgKiB2YWx1ZU11bCB9LCBpbmRleCwgY29pbi5uZXR3b3JrLCB3YWxsZXRLZXlzKSxcbiAgICAgICAgdXR4b2xpYi50ZXN0dXRpbC50b1Vuc3BlbnQoeyBzY3JpcHRUeXBlLCB2YWx1ZTogQmlnSW50KDJlOCkgKiB2YWx1ZU11bCB9LCBpbmRleCwgY29pbi5uZXR3b3JrLCB3YWxsZXRLZXlzKSxcbiAgICAgICAgdXR4b2xpYi50ZXN0dXRpbC50b1Vuc3BlbnQoeyBzY3JpcHRUeXBlLCB2YWx1ZTogQmlnSW50KDNlOCkgKiB2YWx1ZU11bCB9LCBpbmRleCwgY29pbi5uZXR3b3JrLCB3YWxsZXRLZXlzKSxcbiAgICAgIF0pO1xuXG4gICAgICAvLyBJZiB0aGUgY29pbiBpcyBiY2gsIGNvbnZlcnQgdGhlIG1vY2tlZCB1bnNwZW50IGFkZHJlc3MgdG8gY2FzaGFkZHIgZm9ybWF0IHNpbmNlIHRoYXQgaXMgdGhlIGZvcm1hdCB0aGF0IGJsb2NrY2hhaXJcbiAgICAgIC8vIHJldHVybnMgb24gdGhlIC9kYXNoYm9hcmRzL2FkZHJlc3NlcyByZXNwb25zZVxuICAgICAgbW9ja2VkQXBpVW5zcGVudHMgPVxuICAgICAgICBjb2luLmdldENoYWluKCkgPT09ICdiY2gnIHx8IGNvaW4uZ2V0Q2hhaW4oKSA9PT0gJ2JjaGEnXG4gICAgICAgICAgPyByZWNvdmVyVW5zcGVudHMubWFwKCh1KSA9PiAoeyAuLi51LCBhZGRyZXNzOiBjb2luLmNhbm9uaWNhbEFkZHJlc3ModS5hZGRyZXNzLCAnY2FzaGFkZHInKS5zcGxpdCgnOicpWzFdIH0pKVxuICAgICAgICAgIDogcmVjb3ZlclVuc3BlbnRzO1xuXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobW9ja2VkQXBpVW5zcGVudHMubGVuZ3RoLCByZWNvdmVyVW5zcGVudHMubGVuZ3RoKTtcbiAgICAgIHJlY292ZXJ5ID0gYXdhaXQgYmFja3VwS2V5UmVjb3ZlcnkoY29pbiwgZGVmYXVsdEJpdEdvLCB7XG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIHNjYW46IDUsXG4gICAgICAgIGlnbm9yZUFkZHJlc3NUeXBlczogW10sXG4gICAgICAgIHVzZXJLZXlQYXRoOiBwYXJhbXMudXNlcktleVBhdGgsXG4gICAgICAgIGtyc1Byb3ZpZGVyOiBwYXJhbXMua3JzUHJvdmlkZXIsXG4gICAgICAgIC4uLnBhcmFtcy5rZXlzLFxuICAgICAgICByZWNvdmVyeVByb3ZpZGVyOiBuZXcgTW9ja1JlY292ZXJ5UHJvdmlkZXIobW9ja2VkQXBpVW5zcGVudHMpLFxuICAgICAgfSk7XG4gICAgICBjb25zdCB0eEhleCA9XG4gICAgICAgIChyZWNvdmVyeSBhcyBCYWNrdXBLZXlSZWNvdmVyeVRyYW5zYW5zYWN0aW9uKS50cmFuc2FjdGlvbkhleCA/PyAocmVjb3ZlcnkgYXMgRm9ybWF0dGVkT2ZmbGluZVZhdWx0VHhJbmZvKS50eEhleDtcbiAgICAgIGNvbnN0IGlzUHNidCA9IHV0eG9saWIuYml0Z28uaXNQc2J0KHR4SGV4KTtcbiAgICAgIHJlY292ZXJ5VHggPSBpc1BzYnRcbiAgICAgICAgPyB1dHhvbGliLmJpdGdvLmNyZWF0ZVBzYnRGcm9tSGV4KHR4SGV4LCBjb2luLm5ldHdvcmspXG4gICAgICAgIDogdXR4b2xpYi5iaXRnby5jcmVhdGVUcmFuc2FjdGlvbkZyb21IZXgodHhIZXggYXMgc3RyaW5nLCBjb2luLm5ldHdvcmssIGNvaW4uYW1vdW50VHlwZSk7XG4gICAgICByZWNvdmVyeS50eGlkID1cbiAgICAgICAgcmVjb3ZlcnlUeCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQgPyByZWNvdmVyeVR4LmdldFVuc2lnbmVkVHgoKS5nZXRJZCgpIDogcmVjb3ZlcnlUeC5nZXRJZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhcyBjb3JyZWN0IHJlY292ZXJ5IHByb3ZpZGVyIG1vY2tzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVjb3ZlcnlQcm92aWRlciA9IG5ldyBNb2NrUmVjb3ZlcnlQcm92aWRlcihtb2NrZWRBcGlVbnNwZW50cyk7XG4gICAgICAoYXdhaXQgcmVjb3ZlcnlQcm92aWRlci5nZXRVbnNwZW50c0ZvckFkZHJlc3Nlcyhtb2NrZWRBcGlVbnNwZW50cy5tYXAoKHUpID0+IHUuYWRkcmVzcykpKS5sZW5ndGguc2hvdWxkLmVxbChcbiAgICAgICAgbW9ja2VkQXBpVW5zcGVudHMubGVuZ3RoXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ21hdGNoZXMgZml4dHVyZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGZpeHR1cmVDb2luID0gZ2V0Tm9ybWFsVGVzdG5ldENvaW4oY29pbik7XG4gICAgICBjb25zdCBmaXh0dXJlUmVjb3ZlcnkgPSB7IC4uLnJlY292ZXJ5IH07XG4gICAgICBpZiAoZml4dHVyZVJlY292ZXJ5LmNvaW4pIHtcbiAgICAgICAgZml4dHVyZVJlY292ZXJ5LmNvaW4gPSBmaXh0dXJlQ29pbi5nZXRDaGFpbigpO1xuICAgICAgfVxuXG4gICAgICBzaG91bGRFcXVhbEpTT04oXG4gICAgICAgIGZpeHR1cmVSZWNvdmVyeSxcbiAgICAgICAgYXdhaXQgZ2V0Rml4dHVyZShcbiAgICAgICAgICBmaXh0dXJlQ29pbixcbiAgICAgICAgICBgcmVjb3ZlcnkvYmFja3VwS2V5UmVjb3ZlcnktJHsocGFyYW1zLmtyc1Byb3ZpZGVyID8gdGFncy5jb25jYXQoW3BhcmFtcy5rcnNQcm92aWRlcl0pIDogdGFncykuam9pbignLScpfWAsXG4gICAgICAgICAgcmVjb3ZlcnlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYXMgZXhwZWN0ZWQgaW5wdXQgY291bnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAocmVjb3ZlcnlUeCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQgPyByZWNvdmVyeVR4LmRhdGEuaW5wdXRzIDogcmVjb3ZlcnlUeC5pbnMpLmxlbmd0aC5zaG91bGQuZXFsKFxuICAgICAgICByZWNvdmVyVW5zcGVudHMubGVuZ3RoXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gY2hlY2tJbnB1dHNTaWduZWRCeShcbiAgICAgIHR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxudW1iZXIgfCBiaWdpbnQ+IHwgdXR4b2xpYi5iaXRnby5VdHhvUHNidCxcbiAgICAgIHJvb3RLZXk6IEJJUDMySW50ZXJmYWNlLFxuICAgICAgZXhwZWN0Q291bnQ6IG51bWJlclxuICAgICkge1xuICAgICAgaWYgKHR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCkge1xuICAgICAgICBmdW5jdGlvbiB2YWxpZGF0ZSh0eDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCwgaW5wdXRJbmRleDogbnVtYmVyKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0eC52YWxpZGF0ZVNpZ25hdHVyZXNPZklucHV0SEQoaW5wdXRJbmRleCwgcm9vdEtleSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGUubWVzc2FnZSA9PT0gJ05vIHNpZ25hdHVyZXMgdG8gdmFsaWRhdGUnKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHR4LmRhdGEuaW5wdXRzLmZvckVhY2goKGlucHV0LCBpbnB1dEluZGV4KSA9PiB7XG4gICAgICAgICAgdmFsaWRhdGUodHgsIGlucHV0SW5kZXgpLnNob3VsZC5lcWwoISFleHBlY3RDb3VudCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcHJldk91dHB1dHMgPSByZWNvdmVyVW5zcGVudHNcbiAgICAgICAgICAubWFwKCh1KSA9PiB0b091dHB1dCh1LCBjb2luLm5ldHdvcmspKVxuICAgICAgICAgIC5tYXAoKHYpID0+ICh7IC4uLnYsIHZhbHVlOiB1dHhvbGliLmJpdGdvLnRvVE51bWJlcih2LnZhbHVlLCBjb2luLmFtb3VudFR5cGUpIH0pKTtcbiAgICAgICAgdHguaW5zLmZvckVhY2goKGlucHV0LCBpbnB1dEluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgdW5zcGVudCA9IHJlY292ZXJVbnNwZW50c1tpbnB1dEluZGV4XSBhcyBXYWxsZXRVbnNwZW50O1xuICAgICAgICAgIGNvbnN0IHsgcHVibGljS2V5IH0gPSByb290S2V5LmRlcml2ZVBhdGgod2FsbGV0S2V5cy5nZXREZXJpdmF0aW9uUGF0aChyb290S2V5LCB1bnNwZW50LmNoYWluLCB1bnNwZW50LmluZGV4KSk7XG4gICAgICAgICAgY29uc3Qgc2lnbmF0dXJlcyA9IHV0eG9saWIuYml0Z29cbiAgICAgICAgICAgIC5nZXRTaWduYXR1cmVWZXJpZmljYXRpb25zKFxuICAgICAgICAgICAgICB0eCxcbiAgICAgICAgICAgICAgaW5wdXRJbmRleCxcbiAgICAgICAgICAgICAgdXR4b2xpYi5iaXRnby50b1ROdW1iZXIodW5zcGVudC52YWx1ZSwgY29pbi5hbW91bnRUeXBlKSxcbiAgICAgICAgICAgICAgeyBwdWJsaWNLZXkgfSxcbiAgICAgICAgICAgICAgcHJldk91dHB1dHNcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5maWx0ZXIoKHMpID0+IHMuc2lnbmVkQnkgIT09IHVuZGVmaW5lZCk7XG4gICAgICAgICAgc2lnbmF0dXJlcy5sZW5ndGguc2hvdWxkLmVxbChleHBlY3RDb3VudCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGl0KChwYXJhbXMuaGFzVXNlclNpZ25hdHVyZSA/ICdoYXMnIDogJ2hhcyBubycpICsgJyB1c2VyIHNpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNoZWNrSW5wdXRzU2lnbmVkQnkocmVjb3ZlcnlUeCwgd2FsbGV0S2V5cy51c2VyLCBwYXJhbXMuaGFzVXNlclNpZ25hdHVyZSA/IDEgOiAwKTtcbiAgICB9KTtcblxuICAgIGl0KChwYXJhbXMuaGFzQmFja3VwU2lnbmF0dXJlID8gJ2hhcycgOiAnaGFzIG5vJykgKyAnIGJhY2t1cCBzaWduYXR1cmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjaGVja0lucHV0c1NpZ25lZEJ5KHJlY292ZXJ5VHgsIHdhbGxldEtleXMuYmFja3VwLCBwYXJhbXMuaGFzQmFja3VwU2lnbmF0dXJlID8gMSA6IDApO1xuICAgIH0pO1xuXG4gICAgaWYgKHBhcmFtcy5oYXNVc2VyU2lnbmF0dXJlICYmIHBhcmFtcy5oYXNCYWNrdXBTaWduYXR1cmUpIHtcbiAgICAgIGl0KCdoYXMgbm8gcGxhY2Vob2xkZXIgc2lnbmF0dXJlcycsIGZ1bmN0aW9uICh0aGlzOiBtb2NoYS5Db250ZXh0KSB7XG4gICAgICAgIGlmIChyZWNvdmVyeVR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICByZWNvdmVyeVR4Lmlucy5mb3JFYWNoKChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gdXR4b2xpYi5iaXRnby5wYXJzZVNpZ25hdHVyZVNjcmlwdChpbnB1dCk7XG4gICAgICAgICAgICBzd2l0Y2ggKHBhcnNlZC5zY3JpcHRUeXBlKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ3Ayc2gnOlxuICAgICAgICAgICAgICBjYXNlICdwMnNoUDJ3c2gnOlxuICAgICAgICAgICAgICBjYXNlICdwMndzaCc6XG4gICAgICAgICAgICAgIGNhc2UgJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnOlxuICAgICAgICAgICAgICAgIHBhcnNlZC5zaWduYXR1cmVzLmZvckVhY2goKHNpZ25hdHVyZSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHV0eG9saWIuYml0Z28uaXNQbGFjZWhvbGRlclNpZ25hdHVyZShzaWduYXR1cmUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcGxhY2Vob2xkZXIgc2lnbmF0dXJlIGF0IGluZGV4ICR7aX1gKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgc2NyaXB0VHlwZSAke3BhcnNlZC5zY3JpcHRUeXBlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2tpcCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpdCgocGFyYW1zLmhhc0tyc091dHB1dCA/ICdoYXMnIDogJ2hhcyBubycpICsgJyBrZXkgcmVjb3Zlcnkgc2VydmljZSBvdXRwdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBvdXRzID0gcmVjb3ZlcnlUeCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQgPyByZWNvdmVyeVR4LmdldFVuc2lnbmVkVHgoKS5vdXRzIDogcmVjb3ZlcnlUeC5vdXRzO1xuICAgICAgb3V0cy5sZW5ndGguc2hvdWxkLmVxbCgxKTtcbiAgICAgIGNvbnN0IG91dHB1dEFkZHJlc3NlcyA9IG91dHMubWFwKChvKSA9PiB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChvLnNjcmlwdCwgcmVjb3ZlcnlUeC5uZXR3b3JrKSk7XG4gICAgICBvdXRwdXRBZGRyZXNzZXNcbiAgICAgICAgLmluY2x1ZGVzKGtleVJlY292ZXJ5U2VydmljZUFkZHJlc3MpXG4gICAgICAgIC5zaG91bGQuZXFsKCEhcGFyYW1zLmhhc0tyc091dHB1dCAmJiBwYXJhbXMua3JzUHJvdmlkZXIgPT09ICdrZXl0ZXJuYWwnKTtcbiAgICAgIG91dHB1dEFkZHJlc3Nlcy5pbmNsdWRlcyhyZWNvdmVyeURlc3RpbmF0aW9uKS5zaG91bGQuZXFsKHRydWUpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcnVuV2l0aFNjcmlwdFR5cGVzKFxuICBzY3JpcHRUeXBlczogU2NyaXB0VHlwZTJPZjNbXSxcbiAgeyBydW5LZXlQcm92aWRlclRlc3RzID0gdHJ1ZSB9OiB7IHJ1bktleVByb3ZpZGVyVGVzdHM/OiBib29sZWFuIH0gPSB7fVxuKSB7XG4gIHV0eG9Db2luc1xuICAgIC5maWx0ZXIoKGNvaW4pID0+IHNjcmlwdFR5cGVzLmV2ZXJ5KCh0eXBlKSA9PiBjb2luLnN1cHBvcnRzQWRkcmVzc1R5cGUodHlwZSkpKVxuICAgIC5mb3JFYWNoKChjb2luKSA9PiB7XG4gICAgICBydW4oXG4gICAgICAgIGNvaW4sXG4gICAgICAgIHNjcmlwdFR5cGVzLFxuICAgICAgICB3YWxsZXRLZXlzLFxuICAgICAgICB7XG4gICAgICAgICAga2V5czoga2V5c1Vuc2lnbmVkU3dlZXAsXG4gICAgICAgICAgaGFzVXNlclNpZ25hdHVyZTogZmFsc2UsXG4gICAgICAgICAgaGFzQmFja3VwU2lnbmF0dXJlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgWyd1bnNpZ25lZFJlY292ZXJ5JywgLi4uc2NyaXB0VHlwZXNdXG4gICAgICApO1xuXG4gICAgICBpZiAocnVuS2V5UHJvdmlkZXJUZXN0cykge1xuICAgICAgICBbJ2RhaScsICdrZXl0ZXJuYWwnXS5mb3JFYWNoKChrcnNQcm92aWRlcikgPT4ge1xuICAgICAgICAgIHJ1bihcbiAgICAgICAgICAgIGNvaW4sXG4gICAgICAgICAgICBzY3JpcHRUeXBlcyxcbiAgICAgICAgICAgIHdhbGxldEtleXMsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleXM6IGtleXNLZXlSZWNvdmVyeVNlcnZpY2UsXG4gICAgICAgICAgICAgIGtyc1Byb3ZpZGVyOiBrcnNQcm92aWRlcixcbiAgICAgICAgICAgICAgaGFzVXNlclNpZ25hdHVyZTogdHJ1ZSxcbiAgICAgICAgICAgICAgaGFzQmFja3VwU2lnbmF0dXJlOiBmYWxzZSxcbiAgICAgICAgICAgICAgaGFzS3JzT3V0cHV0OiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbJ2tleVJlY292ZXJ5U2VydmljZScsIC4uLnNjcmlwdFR5cGVzXVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBydW4oXG4gICAgICAgIGNvaW4sXG4gICAgICAgIHNjcmlwdFR5cGVzLFxuICAgICAgICB3YWxsZXRLZXlzLFxuICAgICAgICB7XG4gICAgICAgICAga2V5czoga2V5c0Z1bGxTaWduZWRSZWNvdmVyeSxcbiAgICAgICAgICBoYXNVc2VyU2lnbmF0dXJlOiB0cnVlLFxuICAgICAgICAgIGhhc0JhY2t1cFNpZ25hdHVyZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgWydmdWxsU2lnbmVkUmVjb3ZlcnknLCAuLi5zY3JpcHRUeXBlc11cbiAgICAgICk7XG5cbiAgICAgIHJ1bihcbiAgICAgICAgY29pbixcbiAgICAgICAgc2NyaXB0VHlwZXMsXG4gICAgICAgIHdhbGxldEtleXMsXG4gICAgICAgIHtcbiAgICAgICAgICBrZXlzOiBrZXlzRnVsbFNpZ25lZFJlY292ZXJ5LFxuICAgICAgICAgIGhhc1VzZXJTaWduYXR1cmU6IHRydWUsXG4gICAgICAgICAgaGFzQmFja3VwU2lnbmF0dXJlOiB0cnVlLFxuICAgICAgICAgIGZlZVJhdGU6IDIsXG4gICAgICAgIH0sXG4gICAgICAgIFsnZnVsbFNpZ25lZFJlY292ZXJ5JywgJ2ZpeGVkRmVlUmF0ZScsIC4uLnNjcmlwdFR5cGVzXVxuICAgICAgKTtcblxuICAgICAgcnVuKFxuICAgICAgICBjb2luLFxuICAgICAgICBzY3JpcHRUeXBlcyxcbiAgICAgICAgZXhvdGljV2FsbGV0S2V5cyxcbiAgICAgICAge1xuICAgICAgICAgIGtleXM6IGtleXNGdWxsU2lnbmVkUmVjb3ZlcnlFeG90aWMsXG4gICAgICAgICAgdXNlcktleVBhdGg6IGV4b3RpY1VzZXJLZXlQYXRoLFxuICAgICAgICAgIGhhc1VzZXJTaWduYXR1cmU6IHRydWUsXG4gICAgICAgICAgaGFzQmFja3VwU2lnbmF0dXJlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBbJ2Z1bGxTaWduZWRSZWNvdmVyeScsICdjdXN0b21Vc2VyS2V5UGF0aCcsIC4uLnNjcmlwdFR5cGVzXVxuICAgICAgKTtcbiAgICB9KTtcbn1cblxuZGVzY3JpYmUoJ0JhY2t1cCBLZXkgUmVjb3ZlcnknLCBmdW5jdGlvbiAoKSB7XG4gIC8vIGNvbXBhdGlibGUgd2l0aCBhbGwgY29pbnNcbiAgcnVuV2l0aFNjcmlwdFR5cGVzKFsncDJzaCddKTtcblxuICAvLyBzZWd3aXQgY29tcGF0aWJsZSBjb2luc1xuICBydW5XaXRoU2NyaXB0VHlwZXMoWydwMnNoUDJ3c2gnLCAncDJ3c2gnXSk7XG5cbiAgLy8gdGFwcm9vdCBjb21wYXRpYmxlIGNvaW5zXG4gIHJ1bldpdGhTY3JpcHRUeXBlcyhbJ3AydHInLCAncDJ0ck11c2lnMiddLCB7IHJ1bktleVByb3ZpZGVyVGVzdHM6IGZhbHNlIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=crossChainRecovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crossChainRecovery.d.ts","sourceRoot":"","sources":["../../../../../test/unit/recovery/crossChainRecovery.ts"],"names":[],"mappings":""}