@bitgo-beta/abstract-utxo 1.6.1-alpha.44 → 1.6.1-alpha.441

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 (795) hide show
  1. package/README.md +76 -0
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts +435 -0
  3. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -0
  4. package/dist/cjs/src/abstractUtxoCoin.js +657 -0
  5. package/dist/cjs/src/address/fixedScript.d.ts +49 -0
  6. package/dist/cjs/src/address/fixedScript.d.ts.map +1 -0
  7. package/dist/cjs/src/address/fixedScript.js +155 -0
  8. package/dist/cjs/src/address/index.d.ts +2 -0
  9. package/dist/cjs/src/address/index.d.ts.map +1 -0
  10. package/dist/cjs/src/address/index.js +8 -0
  11. package/dist/cjs/src/config.d.ts.map +1 -0
  12. package/dist/cjs/src/config.js +14 -0
  13. package/dist/cjs/src/descriptor/NamedDescriptor.d.ts +20 -0
  14. package/dist/cjs/src/descriptor/NamedDescriptor.d.ts.map +1 -0
  15. package/dist/cjs/src/descriptor/NamedDescriptor.js +79 -0
  16. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
  17. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
  18. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.js +66 -0
  19. package/dist/cjs/src/descriptor/builder/builder.d.ts +13 -0
  20. package/dist/cjs/src/descriptor/builder/builder.d.ts.map +1 -0
  21. package/dist/cjs/src/descriptor/builder/builder.js +37 -0
  22. package/dist/cjs/src/descriptor/builder/index.d.ts +3 -0
  23. package/dist/cjs/src/descriptor/builder/index.d.ts.map +1 -0
  24. package/dist/cjs/src/descriptor/builder/index.js +8 -0
  25. package/dist/cjs/src/descriptor/builder/parse.d.ts +5 -0
  26. package/dist/cjs/src/descriptor/builder/parse.d.ts.map +1 -0
  27. package/dist/cjs/src/descriptor/builder/parse.js +116 -0
  28. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
  29. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
  30. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.js +41 -0
  31. package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts +12 -0
  32. package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  33. package/dist/cjs/src/descriptor/createWallet/createDescriptors.js +33 -0
  34. package/dist/cjs/src/descriptor/createWallet/index.d.ts +3 -0
  35. package/dist/cjs/src/descriptor/createWallet/index.d.ts.map +1 -0
  36. package/dist/cjs/src/descriptor/createWallet/index.js +19 -0
  37. package/dist/cjs/src/descriptor/descriptorWallet.d.ts +19 -0
  38. package/dist/cjs/src/descriptor/descriptorWallet.d.ts.map +1 -0
  39. package/dist/cjs/src/descriptor/descriptorWallet.js +54 -0
  40. package/dist/cjs/src/descriptor/index.d.ts +8 -0
  41. package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
  42. package/dist/cjs/src/descriptor/index.js +53 -0
  43. package/dist/cjs/src/descriptor/validatePolicy.d.ts +22 -0
  44. package/dist/cjs/src/descriptor/validatePolicy.d.ts.map +1 -0
  45. package/dist/cjs/src/descriptor/validatePolicy.js +92 -0
  46. package/dist/cjs/src/impl/bch/bch.d.ts +20 -0
  47. package/dist/cjs/src/impl/bch/bch.d.ts.map +1 -0
  48. package/dist/cjs/src/impl/bch/bch.js +74 -0
  49. package/dist/cjs/src/impl/bch/index.d.ts +3 -0
  50. package/dist/cjs/src/impl/bch/index.d.ts.map +1 -0
  51. package/dist/cjs/src/impl/bch/index.js +19 -0
  52. package/dist/cjs/src/impl/bch/tbch.d.ts +10 -0
  53. package/dist/cjs/src/impl/bch/tbch.d.ts.map +1 -0
  54. package/dist/cjs/src/impl/bch/tbch.js +48 -0
  55. package/dist/cjs/src/impl/bcha/bcha.d.ts +8 -0
  56. package/dist/cjs/src/impl/bcha/bcha.d.ts.map +1 -0
  57. package/dist/cjs/src/impl/bcha/bcha.js +48 -0
  58. package/dist/cjs/src/impl/bcha/index.d.ts +3 -0
  59. package/dist/cjs/src/impl/bcha/index.d.ts.map +1 -0
  60. package/dist/cjs/src/impl/bcha/index.js +19 -0
  61. package/dist/cjs/src/impl/bcha/tbcha.d.ts +10 -0
  62. package/dist/cjs/src/impl/bcha/tbcha.d.ts.map +1 -0
  63. package/dist/cjs/src/impl/bcha/tbcha.js +48 -0
  64. package/dist/cjs/src/impl/bsv/bsv.d.ts +8 -0
  65. package/dist/cjs/src/impl/bsv/bsv.d.ts.map +1 -0
  66. package/dist/cjs/src/impl/bsv/bsv.js +48 -0
  67. package/dist/cjs/src/impl/bsv/index.d.ts +3 -0
  68. package/dist/cjs/src/impl/bsv/index.d.ts.map +1 -0
  69. package/dist/cjs/src/impl/bsv/index.js +19 -0
  70. package/dist/cjs/src/impl/bsv/tbsv.d.ts +10 -0
  71. package/dist/cjs/src/impl/bsv/tbsv.d.ts.map +1 -0
  72. package/dist/cjs/src/impl/bsv/tbsv.js +48 -0
  73. package/dist/cjs/src/impl/btc/btc.d.ts +13 -0
  74. package/dist/cjs/src/impl/btc/btc.d.ts.map +1 -0
  75. package/dist/cjs/src/impl/btc/btc.js +55 -0
  76. package/dist/cjs/src/impl/btc/index.d.ts +7 -0
  77. package/dist/cjs/src/impl/btc/index.d.ts.map +1 -0
  78. package/dist/cjs/src/impl/btc/index.js +23 -0
  79. package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts +51 -0
  80. package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts.map +1 -0
  81. package/dist/cjs/src/impl/btc/inscriptionBuilder.js +183 -0
  82. package/dist/cjs/src/impl/btc/tbtc.d.ts +10 -0
  83. package/dist/cjs/src/impl/btc/tbtc.d.ts.map +1 -0
  84. package/dist/cjs/src/impl/btc/tbtc.js +48 -0
  85. package/dist/cjs/src/impl/btc/tbtc4.d.ts +10 -0
  86. package/dist/cjs/src/impl/btc/tbtc4.d.ts.map +1 -0
  87. package/dist/cjs/src/impl/btc/tbtc4.js +48 -0
  88. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts +10 -0
  89. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts.map +1 -0
  90. package/dist/cjs/src/impl/btc/tbtcbgsig.js +48 -0
  91. package/dist/cjs/src/impl/btc/tbtcsig.d.ts +10 -0
  92. package/dist/cjs/src/impl/btc/tbtcsig.d.ts.map +1 -0
  93. package/dist/cjs/src/impl/btc/tbtcsig.js +48 -0
  94. package/dist/cjs/src/impl/btg/btg.d.ts +7 -0
  95. package/dist/cjs/src/impl/btg/btg.d.ts.map +1 -0
  96. package/dist/cjs/src/impl/btg/btg.js +48 -0
  97. package/dist/cjs/src/impl/btg/index.d.ts +2 -0
  98. package/dist/cjs/src/impl/btg/index.d.ts.map +1 -0
  99. package/dist/cjs/src/impl/btg/index.js +18 -0
  100. package/dist/cjs/src/impl/dash/dash.d.ts +7 -0
  101. package/dist/cjs/src/impl/dash/dash.d.ts.map +1 -0
  102. package/dist/cjs/src/impl/dash/dash.js +48 -0
  103. package/dist/cjs/src/impl/dash/index.d.ts +3 -0
  104. package/dist/cjs/src/impl/dash/index.d.ts.map +1 -0
  105. package/dist/cjs/src/impl/dash/index.js +19 -0
  106. package/dist/cjs/src/impl/dash/tdash.d.ts +10 -0
  107. package/dist/cjs/src/impl/dash/tdash.d.ts.map +1 -0
  108. package/dist/cjs/src/impl/dash/tdash.js +48 -0
  109. package/dist/cjs/src/impl/doge/doge.d.ts +32 -0
  110. package/dist/cjs/src/impl/doge/doge.d.ts.map +1 -0
  111. package/dist/cjs/src/impl/doge/doge.js +79 -0
  112. package/dist/cjs/src/impl/doge/index.d.ts +3 -0
  113. package/dist/cjs/src/impl/doge/index.d.ts.map +1 -0
  114. package/dist/cjs/src/impl/doge/index.js +19 -0
  115. package/dist/cjs/src/impl/doge/tdoge.d.ts +10 -0
  116. package/dist/cjs/src/impl/doge/tdoge.d.ts.map +1 -0
  117. package/dist/cjs/src/impl/doge/tdoge.js +48 -0
  118. package/dist/cjs/src/impl/index.d.ts +10 -0
  119. package/dist/cjs/src/impl/index.d.ts.map +1 -0
  120. package/dist/cjs/src/impl/index.js +46 -0
  121. package/dist/cjs/src/impl/ltc/index.d.ts +3 -0
  122. package/dist/cjs/src/impl/ltc/index.d.ts.map +1 -0
  123. package/dist/cjs/src/impl/ltc/index.js +19 -0
  124. package/dist/cjs/src/impl/ltc/ltc.d.ts +7 -0
  125. package/dist/cjs/src/impl/ltc/ltc.d.ts.map +1 -0
  126. package/dist/cjs/src/impl/ltc/ltc.js +52 -0
  127. package/dist/cjs/src/impl/ltc/tltc.d.ts +7 -0
  128. package/dist/cjs/src/impl/ltc/tltc.d.ts.map +1 -0
  129. package/dist/cjs/src/impl/ltc/tltc.js +51 -0
  130. package/dist/cjs/src/impl/zec/index.d.ts +3 -0
  131. package/dist/cjs/src/impl/zec/index.d.ts.map +1 -0
  132. package/dist/cjs/src/impl/zec/index.js +19 -0
  133. package/dist/cjs/src/impl/zec/tzec.d.ts +7 -0
  134. package/dist/cjs/src/impl/zec/tzec.d.ts.map +1 -0
  135. package/dist/cjs/src/impl/zec/tzec.js +48 -0
  136. package/dist/cjs/src/impl/zec/zec.d.ts +10 -0
  137. package/dist/cjs/src/impl/zec/zec.d.ts.map +1 -0
  138. package/dist/cjs/src/impl/zec/zec.js +48 -0
  139. package/dist/cjs/src/index.d.ts +21 -0
  140. package/dist/cjs/src/index.d.ts.map +1 -0
  141. package/dist/cjs/src/index.js +60 -0
  142. package/dist/cjs/src/keychains.d.ts +52 -0
  143. package/dist/cjs/src/keychains.d.ts.map +1 -0
  144. package/dist/cjs/src/keychains.js +136 -0
  145. package/dist/cjs/src/names.d.ts +26 -0
  146. package/dist/cjs/src/names.d.ts.map +1 -0
  147. package/dist/cjs/src/names.js +214 -0
  148. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts +8 -0
  149. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
  150. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.js +26 -0
  151. package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts +46 -0
  152. package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
  153. package/dist/cjs/src/offlineVault/OfflineVaultSignable.js +55 -0
  154. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts +15 -0
  155. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts.map +1 -0
  156. package/dist/cjs/src/offlineVault/TransactionExplanation.js +16 -0
  157. package/dist/cjs/src/offlineVault/descriptor/index.d.ts +2 -0
  158. package/dist/cjs/src/offlineVault/descriptor/index.d.ts.map +1 -0
  159. package/dist/cjs/src/offlineVault/descriptor/index.js +18 -0
  160. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts +38 -0
  161. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts.map +1 -0
  162. package/dist/cjs/src/offlineVault/descriptor/transaction.js +80 -0
  163. package/dist/cjs/src/offlineVault/index.d.ts +6 -0
  164. package/dist/cjs/src/offlineVault/index.d.ts.map +1 -0
  165. package/dist/cjs/src/offlineVault/index.js +44 -0
  166. package/dist/{src → cjs/src}/recovery/RecoveryProvider.d.ts +1 -1
  167. package/dist/cjs/src/recovery/RecoveryProvider.d.ts.map +1 -0
  168. package/dist/cjs/src/recovery/RecoveryProvider.js +22 -0
  169. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts +89 -0
  170. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -0
  171. package/dist/cjs/src/recovery/backupKeyRecovery.js +359 -0
  172. package/dist/{src → cjs/src}/recovery/baseApi.d.ts +3 -6
  173. package/dist/cjs/src/recovery/baseApi.d.ts.map +1 -0
  174. package/dist/cjs/src/recovery/baseApi.js +73 -0
  175. package/dist/{src → cjs/src}/recovery/coingeckoApi.d.ts +0 -3
  176. package/dist/cjs/src/recovery/coingeckoApi.d.ts.map +1 -0
  177. package/dist/cjs/src/recovery/coingeckoApi.js +44 -0
  178. package/dist/{src → cjs/src}/recovery/crossChainRecovery.d.ts +18 -7
  179. package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -0
  180. package/dist/cjs/src/recovery/crossChainRecovery.js +343 -0
  181. package/dist/{src → cjs/src}/recovery/index.d.ts +0 -1
  182. package/dist/cjs/src/recovery/index.d.ts.map +1 -0
  183. package/dist/{src → cjs/src}/recovery/index.js +6 -3
  184. package/dist/cjs/src/recovery/mempoolApi.d.ts.map +1 -0
  185. package/dist/cjs/src/recovery/mempoolApi.js +36 -0
  186. package/dist/cjs/src/recovery/psbt.d.ts +30 -0
  187. package/dist/cjs/src/recovery/psbt.d.ts.map +1 -0
  188. package/dist/cjs/src/recovery/psbt.js +204 -0
  189. package/dist/cjs/src/transaction/bip322.d.ts +27 -0
  190. package/dist/cjs/src/transaction/bip322.d.ts.map +1 -0
  191. package/dist/cjs/src/transaction/bip322.js +125 -0
  192. package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts +2 -0
  193. package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
  194. package/dist/cjs/src/transaction/common/verifyPayGoAmount.js +3 -0
  195. package/dist/cjs/src/transaction/decode.d.ts +11 -0
  196. package/dist/cjs/src/transaction/decode.d.ts.map +1 -0
  197. package/dist/cjs/src/transaction/decode.js +81 -0
  198. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts +5 -0
  199. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  200. package/dist/cjs/src/transaction/descriptor/explainPsbt.js +80 -0
  201. package/dist/cjs/src/transaction/descriptor/index.d.ts +7 -0
  202. package/dist/cjs/src/transaction/descriptor/index.d.ts.map +1 -0
  203. package/dist/cjs/src/transaction/descriptor/index.js +14 -0
  204. package/dist/cjs/src/transaction/descriptor/parse.d.ts +16 -0
  205. package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -0
  206. package/dist/cjs/src/transaction/descriptor/parse.js +116 -0
  207. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts +14 -0
  208. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
  209. package/dist/cjs/src/transaction/descriptor/parseToAmountType.js +60 -0
  210. package/dist/cjs/src/transaction/descriptor/recipient.d.ts +5 -0
  211. package/dist/cjs/src/transaction/descriptor/recipient.d.ts.map +1 -0
  212. package/dist/cjs/src/transaction/descriptor/recipient.js +3 -0
  213. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts +25 -0
  214. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts.map +1 -0
  215. package/dist/cjs/src/transaction/descriptor/signPsbt.js +43 -0
  216. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts +36 -0
  217. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
  218. package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +109 -0
  219. package/dist/cjs/src/transaction/explainTransaction.d.ts +18 -0
  220. package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -0
  221. package/dist/cjs/src/transaction/explainTransaction.js +88 -0
  222. package/dist/cjs/src/transaction/fetchInputs.d.ts +26 -0
  223. package/dist/cjs/src/transaction/fetchInputs.d.ts.map +1 -0
  224. package/dist/cjs/src/transaction/fetchInputs.js +109 -0
  225. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts +24 -0
  226. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts.map +1 -0
  227. package/dist/cjs/src/transaction/fixedScript/SigningError.js +26 -0
  228. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts +11 -0
  229. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  230. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.js +67 -0
  231. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +73 -0
  232. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  233. package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +344 -0
  234. package/dist/cjs/src/transaction/fixedScript/index.d.ts +10 -0
  235. package/dist/cjs/src/transaction/fixedScript/index.d.ts.map +1 -0
  236. package/dist/cjs/src/transaction/fixedScript/index.js +32 -0
  237. package/dist/cjs/src/transaction/fixedScript/musig2.d.ts +4 -0
  238. package/dist/cjs/src/transaction/fixedScript/musig2.d.ts.map +1 -0
  239. package/dist/cjs/src/transaction/fixedScript/musig2.js +3 -0
  240. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts +28 -0
  241. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  242. package/dist/cjs/src/transaction/fixedScript/parseOutput.js +220 -0
  243. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts +8 -0
  244. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  245. package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +215 -0
  246. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts +7 -0
  247. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  248. package/dist/cjs/src/transaction/fixedScript/replayProtection.js +78 -0
  249. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts +30 -0
  250. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -0
  251. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.js +152 -0
  252. package/dist/cjs/src/transaction/fixedScript/signPsbt.d.ts +30 -0
  253. package/dist/cjs/src/transaction/fixedScript/signPsbt.d.ts.map +1 -0
  254. package/dist/cjs/src/transaction/fixedScript/signPsbt.js +174 -0
  255. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts +22 -0
  256. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
  257. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.js +129 -0
  258. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +17 -0
  259. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -0
  260. package/dist/cjs/src/transaction/fixedScript/signTransaction.js +50 -0
  261. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts +21 -0
  262. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  263. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.js +199 -0
  264. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts +9 -0
  265. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
  266. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.js +53 -0
  267. package/dist/cjs/src/transaction/index.d.ts +8 -0
  268. package/dist/cjs/src/transaction/index.d.ts.map +1 -0
  269. package/dist/cjs/src/transaction/index.js +50 -0
  270. package/dist/cjs/src/transaction/outputDifference.d.ts +40 -0
  271. package/dist/cjs/src/transaction/outputDifference.d.ts.map +1 -0
  272. package/dist/cjs/src/transaction/outputDifference.js +47 -0
  273. package/dist/cjs/src/transaction/parseTransaction.d.ts +4 -0
  274. package/dist/cjs/src/transaction/parseTransaction.d.ts.map +1 -0
  275. package/dist/cjs/src/transaction/parseTransaction.js +48 -0
  276. package/dist/cjs/src/transaction/recipient.d.ts +29 -0
  277. package/dist/cjs/src/transaction/recipient.d.ts.map +1 -0
  278. package/dist/cjs/src/transaction/recipient.js +88 -0
  279. package/dist/cjs/src/transaction/signTransaction.d.ts +6 -0
  280. package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -0
  281. package/dist/cjs/src/transaction/signTransaction.js +105 -0
  282. package/dist/cjs/src/transaction/types.d.ts +49 -0
  283. package/dist/cjs/src/transaction/types.d.ts.map +1 -0
  284. package/dist/cjs/src/transaction/types.js +7 -0
  285. package/dist/cjs/src/transaction/verifyTransaction.d.ts +4 -0
  286. package/dist/cjs/src/transaction/verifyTransaction.d.ts.map +1 -0
  287. package/dist/cjs/src/transaction/verifyTransaction.js +50 -0
  288. package/dist/cjs/src/verifyKey.d.ts +29 -0
  289. package/dist/cjs/src/verifyKey.d.ts.map +1 -0
  290. package/dist/cjs/src/verifyKey.js +164 -0
  291. package/dist/cjs/src/wallet.d.ts +15 -0
  292. package/dist/cjs/src/wallet.d.ts.map +1 -0
  293. package/dist/cjs/src/wallet.js +8 -0
  294. package/dist/cjs/test/integration/impl/bch/bch.d.ts +2 -0
  295. package/dist/cjs/test/integration/impl/bch/bch.d.ts.map +1 -0
  296. package/dist/cjs/test/integration/impl/bch/bch.js +74 -0
  297. package/dist/cjs/test/unit/address.d.ts +2 -0
  298. package/dist/cjs/test/unit/address.d.ts.map +1 -0
  299. package/dist/cjs/test/unit/address.js +182 -0
  300. package/dist/cjs/test/unit/bip322.d.ts +2 -0
  301. package/dist/cjs/test/unit/bip322.d.ts.map +1 -0
  302. package/dist/cjs/test/unit/bip322.js +45 -0
  303. package/dist/cjs/test/unit/coins.d.ts +2 -0
  304. package/dist/cjs/test/unit/coins.d.ts.map +1 -0
  305. package/dist/cjs/test/unit/coins.js +97 -0
  306. package/dist/cjs/test/unit/customChangeWallet.d.ts +2 -0
  307. package/dist/cjs/test/unit/customChangeWallet.d.ts.map +1 -0
  308. package/dist/cjs/test/unit/customChangeWallet.js +154 -0
  309. package/dist/cjs/test/unit/customSigner.d.ts +3 -0
  310. package/dist/cjs/test/unit/customSigner.d.ts.map +1 -0
  311. package/dist/cjs/test/unit/customSigner.js +108 -0
  312. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts +2 -0
  313. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts.map +1 -0
  314. package/dist/cjs/test/unit/descriptor/NamedDescriptor.js +18 -0
  315. package/dist/cjs/test/unit/descriptor/builder.d.ts +2 -0
  316. package/dist/cjs/test/unit/descriptor/builder.d.ts.map +1 -0
  317. package/dist/cjs/test/unit/descriptor/builder.js +72 -0
  318. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts +2 -0
  319. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  320. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.js +20 -0
  321. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts +2 -0
  322. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts.map +1 -0
  323. package/dist/cjs/test/unit/descriptor/descriptorWallet.js +28 -0
  324. package/dist/cjs/test/unit/descriptorAddress.d.ts +3 -0
  325. package/dist/cjs/test/unit/descriptorAddress.d.ts.map +1 -0
  326. package/dist/cjs/test/unit/descriptorAddress.js +102 -0
  327. package/dist/cjs/test/unit/explainTransaction.d.ts +2 -0
  328. package/dist/cjs/test/unit/explainTransaction.d.ts.map +1 -0
  329. package/dist/cjs/test/unit/explainTransaction.js +74 -0
  330. package/dist/cjs/test/unit/fixtures/bip322/fixtures.d.ts +15 -0
  331. package/dist/cjs/test/unit/fixtures/bip322/fixtures.d.ts.map +1 -0
  332. package/dist/cjs/test/unit/fixtures/bip322/fixtures.js +51 -0
  333. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts +4 -0
  334. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts.map +1 -0
  335. package/dist/cjs/test/unit/fixtures/psbtHexProof.js +9 -0
  336. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts +2 -0
  337. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts.map +1 -0
  338. package/dist/cjs/test/unit/impl/bch/unit/bch.js +138 -0
  339. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts +2 -0
  340. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts.map +1 -0
  341. package/dist/cjs/test/unit/impl/bcha/unit/index.js +47 -0
  342. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts +2 -0
  343. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts.map +1 -0
  344. package/dist/cjs/test/unit/impl/bsv/unit/index.js +32 -0
  345. package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts +2 -0
  346. package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts.map +1 -0
  347. package/dist/cjs/test/unit/impl/btc/unit/btc.js +220 -0
  348. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts +4 -0
  349. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts.map +1 -0
  350. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.js +10 -0
  351. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts +2 -0
  352. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts.map +1 -0
  353. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.js +18 -0
  354. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts +2 -0
  355. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts.map +1 -0
  356. package/dist/cjs/test/unit/impl/btg/unit/index.js +29 -0
  357. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts +2 -0
  358. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts.map +1 -0
  359. package/dist/cjs/test/unit/impl/dash/unit/index.js +32 -0
  360. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts +2 -0
  361. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts.map +1 -0
  362. package/dist/cjs/test/unit/impl/doge/unit/index.js +32 -0
  363. package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts +2 -0
  364. package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts.map +1 -0
  365. package/dist/cjs/test/unit/impl/ltc/unit/index.js +39 -0
  366. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts +2 -0
  367. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts.map +1 -0
  368. package/dist/cjs/test/unit/impl/zec/unit/index.js +29 -0
  369. package/dist/cjs/test/unit/keySignatures.d.ts +2 -0
  370. package/dist/cjs/test/unit/keySignatures.d.ts.map +1 -0
  371. package/dist/cjs/test/unit/keySignatures.js +54 -0
  372. package/dist/cjs/test/unit/keychains.d.ts +2 -0
  373. package/dist/cjs/test/unit/keychains.d.ts.map +1 -0
  374. package/dist/cjs/test/unit/keychains.js +49 -0
  375. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts +2 -0
  376. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts.map +1 -0
  377. package/dist/cjs/test/unit/offlineVault/halfSigned.js +124 -0
  378. package/dist/cjs/test/unit/parseTransaction.d.ts +2 -0
  379. package/dist/cjs/test/unit/parseTransaction.d.ts.map +1 -0
  380. package/dist/cjs/test/unit/parseTransaction.js +125 -0
  381. package/dist/cjs/test/unit/prebuildAndSign.d.ts +6 -0
  382. package/dist/cjs/test/unit/prebuildAndSign.d.ts.map +1 -0
  383. package/dist/cjs/test/unit/prebuildAndSign.js +270 -0
  384. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts +2 -0
  385. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts.map +1 -0
  386. package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +296 -0
  387. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts +2 -0
  388. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts.map +1 -0
  389. package/dist/cjs/test/unit/recovery/crossChainRecovery.js +295 -0
  390. package/dist/cjs/test/unit/recovery/mock.d.ts +30 -0
  391. package/dist/cjs/test/unit/recovery/mock.d.ts.map +1 -0
  392. package/dist/cjs/test/unit/recovery/mock.js +138 -0
  393. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts +2 -0
  394. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  395. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.js +30 -0
  396. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts +6 -0
  397. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts.map +1 -0
  398. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.js +17 -0
  399. package/dist/cjs/test/unit/transaction/descriptor/outputDifference.d.ts +2 -0
  400. package/dist/cjs/test/unit/transaction/descriptor/outputDifference.d.ts.map +1 -0
  401. package/dist/cjs/test/unit/transaction/descriptor/outputDifference.js +76 -0
  402. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts +2 -0
  403. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts.map +1 -0
  404. package/dist/cjs/test/unit/transaction/descriptor/parse.js +135 -0
  405. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts +2 -0
  406. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts.map +1 -0
  407. package/dist/cjs/test/unit/transaction/descriptor/sign.js +32 -0
  408. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts +2 -0
  409. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts.map +1 -0
  410. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.js +48 -0
  411. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts +2 -0
  412. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts.map +1 -0
  413. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.js +132 -0
  414. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.d.ts +2 -0
  415. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.d.ts.map +1 -0
  416. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.js +288 -0
  417. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts +2 -0
  418. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  419. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.js +59 -0
  420. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.d.ts +2 -0
  421. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.d.ts.map +1 -0
  422. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.js +157 -0
  423. package/dist/cjs/test/unit/transaction/fixedScript/util.d.ts +3 -0
  424. package/dist/cjs/test/unit/transaction/fixedScript/util.d.ts.map +1 -0
  425. package/dist/cjs/test/unit/transaction/fixedScript/util.js +41 -0
  426. package/dist/cjs/test/unit/transaction.d.ts +2 -0
  427. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  428. package/dist/cjs/test/unit/transaction.js +528 -0
  429. package/dist/cjs/test/unit/txFormat.d.ts +30 -0
  430. package/dist/cjs/test/unit/txFormat.d.ts.map +1 -0
  431. package/dist/cjs/test/unit/txFormat.js +174 -0
  432. package/dist/cjs/test/unit/util/fixtures.d.ts +14 -0
  433. package/dist/cjs/test/unit/util/fixtures.d.ts.map +1 -0
  434. package/dist/cjs/test/unit/util/fixtures.js +102 -0
  435. package/dist/cjs/test/unit/util/index.d.ts +7 -0
  436. package/dist/cjs/test/unit/util/index.d.ts.map +1 -0
  437. package/dist/cjs/test/unit/util/index.js +23 -0
  438. package/dist/cjs/test/unit/util/keychains.d.ts +26 -0
  439. package/dist/cjs/test/unit/util/keychains.d.ts.map +1 -0
  440. package/dist/cjs/test/unit/util/keychains.js +72 -0
  441. package/dist/cjs/test/unit/util/nockBitGo.d.ts +3 -0
  442. package/dist/cjs/test/unit/util/nockBitGo.d.ts.map +1 -0
  443. package/dist/cjs/test/unit/util/nockBitGo.js +11 -0
  444. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts +8 -0
  445. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts.map +1 -0
  446. package/dist/cjs/test/unit/util/nockIndexerAPI.js +56 -0
  447. package/dist/cjs/test/unit/util/transaction.d.ts +24 -0
  448. package/dist/cjs/test/unit/util/transaction.d.ts.map +1 -0
  449. package/dist/cjs/test/unit/util/transaction.js +107 -0
  450. package/dist/cjs/test/unit/util/unspents.d.ts +13 -0
  451. package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -0
  452. package/dist/cjs/test/unit/util/unspents.js +106 -0
  453. package/dist/cjs/test/unit/util/utxoCoins.d.ts +8 -0
  454. package/dist/cjs/test/unit/util/utxoCoins.d.ts.map +1 -0
  455. package/dist/cjs/test/unit/util/utxoCoins.js +95 -0
  456. package/dist/cjs/test/unit/util/wallet.d.ts +4 -0
  457. package/dist/cjs/test/unit/util/wallet.d.ts.map +1 -0
  458. package/dist/cjs/test/unit/util/wallet.js +9 -0
  459. package/dist/cjs/test/unit/verifyTransaction.d.ts +2 -0
  460. package/dist/cjs/test/unit/verifyTransaction.d.ts.map +1 -0
  461. package/dist/cjs/test/unit/verifyTransaction.js +327 -0
  462. package/dist/cjs/test/unit/wallet.d.ts +2 -0
  463. package/dist/cjs/test/unit/wallet.d.ts.map +1 -0
  464. package/dist/cjs/test/unit/wallet.js +248 -0
  465. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  466. package/dist/esm/abstractUtxoCoin.d.ts +435 -0
  467. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -0
  468. package/dist/esm/abstractUtxoCoin.js +616 -0
  469. package/dist/esm/address/fixedScript.d.ts +49 -0
  470. package/dist/esm/address/fixedScript.d.ts.map +1 -0
  471. package/dist/esm/address/fixedScript.js +114 -0
  472. package/dist/esm/address/index.d.ts +2 -0
  473. package/dist/esm/address/index.d.ts.map +1 -0
  474. package/dist/esm/address/index.js +2 -0
  475. package/dist/esm/config.d.ts +9 -0
  476. package/dist/esm/config.js +11 -0
  477. package/dist/esm/descriptor/NamedDescriptor.d.ts +20 -0
  478. package/dist/esm/descriptor/NamedDescriptor.d.ts.map +1 -0
  479. package/dist/esm/descriptor/NamedDescriptor.js +39 -0
  480. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
  481. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
  482. package/dist/esm/descriptor/assertDescriptorWalletAddress.js +27 -0
  483. package/dist/esm/descriptor/builder/builder.d.ts +13 -0
  484. package/dist/esm/descriptor/builder/builder.d.ts.map +1 -0
  485. package/dist/esm/descriptor/builder/builder.js +34 -0
  486. package/dist/esm/descriptor/builder/index.d.ts +3 -0
  487. package/dist/esm/descriptor/builder/index.d.ts.map +1 -0
  488. package/dist/esm/descriptor/builder/index.js +3 -0
  489. package/dist/esm/descriptor/builder/parse.d.ts +5 -0
  490. package/dist/esm/descriptor/builder/parse.d.ts.map +1 -0
  491. package/dist/esm/descriptor/builder/parse.js +112 -0
  492. package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
  493. package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
  494. package/dist/esm/descriptor/createWallet/createDescriptorWallet.js +37 -0
  495. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts +12 -0
  496. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  497. package/dist/esm/descriptor/createWallet/createDescriptors.js +29 -0
  498. package/dist/esm/descriptor/createWallet/index.d.ts +3 -0
  499. package/dist/esm/descriptor/createWallet/index.d.ts.map +1 -0
  500. package/dist/esm/descriptor/createWallet/index.js +3 -0
  501. package/dist/esm/descriptor/descriptorWallet.d.ts +19 -0
  502. package/dist/esm/descriptor/descriptorWallet.d.ts.map +1 -0
  503. package/dist/esm/descriptor/descriptorWallet.js +16 -0
  504. package/dist/esm/descriptor/index.d.ts +8 -0
  505. package/dist/esm/descriptor/index.d.ts.map +1 -0
  506. package/dist/esm/descriptor/index.js +7 -0
  507. package/dist/esm/descriptor/validatePolicy.d.ts +22 -0
  508. package/dist/esm/descriptor/validatePolicy.d.ts.map +1 -0
  509. package/dist/esm/descriptor/validatePolicy.js +80 -0
  510. package/dist/esm/impl/bch/bch.d.ts +20 -0
  511. package/dist/esm/impl/bch/bch.d.ts.map +1 -0
  512. package/dist/esm/impl/bch/bch.js +37 -0
  513. package/dist/esm/impl/bch/index.d.ts +3 -0
  514. package/dist/esm/impl/bch/index.d.ts.map +1 -0
  515. package/dist/esm/impl/bch/index.js +3 -0
  516. package/dist/esm/impl/bch/tbch.d.ts +10 -0
  517. package/dist/esm/impl/bch/tbch.d.ts.map +1 -0
  518. package/dist/esm/impl/bch/tbch.js +11 -0
  519. package/dist/esm/impl/bcha/bcha.d.ts +8 -0
  520. package/dist/esm/impl/bcha/bcha.d.ts.map +1 -0
  521. package/dist/esm/impl/bcha/bcha.js +11 -0
  522. package/dist/esm/impl/bcha/index.d.ts +3 -0
  523. package/dist/esm/impl/bcha/index.d.ts.map +1 -0
  524. package/dist/esm/impl/bcha/index.js +3 -0
  525. package/dist/esm/impl/bcha/tbcha.d.ts +10 -0
  526. package/dist/esm/impl/bcha/tbcha.d.ts.map +1 -0
  527. package/dist/esm/impl/bcha/tbcha.js +11 -0
  528. package/dist/esm/impl/bsv/bsv.d.ts +8 -0
  529. package/dist/esm/impl/bsv/bsv.d.ts.map +1 -0
  530. package/dist/esm/impl/bsv/bsv.js +11 -0
  531. package/dist/esm/impl/bsv/index.d.ts +3 -0
  532. package/dist/esm/impl/bsv/index.d.ts.map +1 -0
  533. package/dist/esm/impl/bsv/index.js +3 -0
  534. package/dist/esm/impl/bsv/tbsv.d.ts +10 -0
  535. package/dist/esm/impl/bsv/tbsv.d.ts.map +1 -0
  536. package/dist/esm/impl/bsv/tbsv.js +11 -0
  537. package/dist/esm/impl/btc/btc.d.ts +13 -0
  538. package/dist/esm/impl/btc/btc.d.ts.map +1 -0
  539. package/dist/esm/impl/btc/btc.js +18 -0
  540. package/dist/esm/impl/btc/index.d.ts +7 -0
  541. package/dist/esm/impl/btc/index.d.ts.map +1 -0
  542. package/dist/esm/impl/btc/index.js +7 -0
  543. package/dist/esm/impl/btc/inscriptionBuilder.d.ts +51 -0
  544. package/dist/esm/impl/btc/inscriptionBuilder.d.ts.map +1 -0
  545. package/dist/esm/impl/btc/inscriptionBuilder.js +143 -0
  546. package/dist/esm/impl/btc/tbtc.d.ts +10 -0
  547. package/dist/esm/impl/btc/tbtc.d.ts.map +1 -0
  548. package/dist/esm/impl/btc/tbtc.js +11 -0
  549. package/dist/esm/impl/btc/tbtc4.d.ts +10 -0
  550. package/dist/esm/impl/btc/tbtc4.d.ts.map +1 -0
  551. package/dist/esm/impl/btc/tbtc4.js +11 -0
  552. package/dist/esm/impl/btc/tbtcbgsig.d.ts +10 -0
  553. package/dist/esm/impl/btc/tbtcbgsig.d.ts.map +1 -0
  554. package/dist/esm/impl/btc/tbtcbgsig.js +11 -0
  555. package/dist/esm/impl/btc/tbtcsig.d.ts +10 -0
  556. package/dist/esm/impl/btc/tbtcsig.d.ts.map +1 -0
  557. package/dist/esm/impl/btc/tbtcsig.js +11 -0
  558. package/dist/esm/impl/btg/btg.d.ts +7 -0
  559. package/dist/esm/impl/btg/btg.d.ts.map +1 -0
  560. package/dist/esm/impl/btg/btg.js +11 -0
  561. package/dist/esm/impl/btg/index.d.ts +2 -0
  562. package/dist/esm/impl/btg/index.d.ts.map +1 -0
  563. package/dist/esm/impl/btg/index.js +2 -0
  564. package/dist/esm/impl/dash/dash.d.ts +7 -0
  565. package/dist/esm/impl/dash/dash.d.ts.map +1 -0
  566. package/dist/esm/impl/dash/dash.js +11 -0
  567. package/dist/esm/impl/dash/index.d.ts +3 -0
  568. package/dist/esm/impl/dash/index.d.ts.map +1 -0
  569. package/dist/esm/impl/dash/index.js +3 -0
  570. package/dist/esm/impl/dash/tdash.d.ts +10 -0
  571. package/dist/esm/impl/dash/tdash.d.ts.map +1 -0
  572. package/dist/esm/impl/dash/tdash.js +11 -0
  573. package/dist/esm/impl/doge/doge.d.ts +32 -0
  574. package/dist/esm/impl/doge/doge.d.ts.map +1 -0
  575. package/dist/esm/impl/doge/doge.js +75 -0
  576. package/dist/esm/impl/doge/index.d.ts +3 -0
  577. package/dist/esm/impl/doge/index.d.ts.map +1 -0
  578. package/dist/esm/impl/doge/index.js +3 -0
  579. package/dist/esm/impl/doge/tdoge.d.ts +10 -0
  580. package/dist/esm/impl/doge/tdoge.d.ts.map +1 -0
  581. package/dist/esm/impl/doge/tdoge.js +11 -0
  582. package/dist/esm/impl/index.d.ts +10 -0
  583. package/dist/esm/impl/index.d.ts.map +1 -0
  584. package/dist/esm/impl/index.js +10 -0
  585. package/dist/esm/impl/ltc/index.d.ts +3 -0
  586. package/dist/esm/impl/ltc/index.d.ts.map +1 -0
  587. package/dist/esm/impl/ltc/index.js +3 -0
  588. package/dist/esm/impl/ltc/ltc.d.ts +7 -0
  589. package/dist/esm/impl/ltc/ltc.d.ts.map +1 -0
  590. package/dist/esm/impl/ltc/ltc.js +15 -0
  591. package/dist/esm/impl/ltc/tltc.d.ts +7 -0
  592. package/dist/esm/impl/ltc/tltc.d.ts.map +1 -0
  593. package/dist/esm/impl/ltc/tltc.js +14 -0
  594. package/dist/esm/impl/zec/index.d.ts +3 -0
  595. package/dist/esm/impl/zec/index.d.ts.map +1 -0
  596. package/dist/esm/impl/zec/index.js +3 -0
  597. package/dist/esm/impl/zec/tzec.d.ts +7 -0
  598. package/dist/esm/impl/zec/tzec.d.ts.map +1 -0
  599. package/dist/esm/impl/zec/tzec.js +11 -0
  600. package/dist/esm/impl/zec/zec.d.ts +10 -0
  601. package/dist/esm/impl/zec/zec.d.ts.map +1 -0
  602. package/dist/esm/impl/zec/zec.js +11 -0
  603. package/dist/esm/index.d.ts +21 -0
  604. package/dist/esm/index.d.ts.map +1 -0
  605. package/dist/esm/index.js +21 -0
  606. package/dist/esm/keychains.d.ts +52 -0
  607. package/dist/esm/keychains.d.ts.map +1 -0
  608. package/dist/esm/keychains.js +92 -0
  609. package/dist/esm/names.d.ts +26 -0
  610. package/dist/esm/names.d.ts.map +1 -0
  611. package/dist/esm/names.js +171 -0
  612. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts +8 -0
  613. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
  614. package/dist/esm/offlineVault/OfflineVaultHalfSigned.js +23 -0
  615. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts +46 -0
  616. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
  617. package/dist/esm/offlineVault/OfflineVaultSignable.js +18 -0
  618. package/dist/esm/offlineVault/TransactionExplanation.d.ts +15 -0
  619. package/dist/esm/offlineVault/TransactionExplanation.d.ts.map +1 -0
  620. package/dist/esm/offlineVault/TransactionExplanation.js +13 -0
  621. package/dist/esm/offlineVault/descriptor/index.d.ts +2 -0
  622. package/dist/esm/offlineVault/descriptor/index.d.ts.map +1 -0
  623. package/dist/esm/offlineVault/descriptor/index.js +2 -0
  624. package/dist/esm/offlineVault/descriptor/transaction.d.ts +38 -0
  625. package/dist/esm/offlineVault/descriptor/transaction.d.ts.map +1 -0
  626. package/dist/esm/offlineVault/descriptor/transaction.js +41 -0
  627. package/dist/esm/offlineVault/index.d.ts +6 -0
  628. package/dist/esm/offlineVault/index.d.ts.map +1 -0
  629. package/dist/esm/offlineVault/index.js +4 -0
  630. package/dist/esm/recovery/RecoveryProvider.d.ts +22 -0
  631. package/dist/{src → esm}/recovery/RecoveryProvider.d.ts.map +1 -1
  632. package/dist/esm/recovery/RecoveryProvider.js +19 -0
  633. package/dist/esm/recovery/backupKeyRecovery.d.ts +89 -0
  634. package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -0
  635. package/dist/esm/recovery/backupKeyRecovery.js +317 -0
  636. package/dist/esm/recovery/baseApi.d.ts +24 -0
  637. package/dist/esm/recovery/baseApi.d.ts.map +1 -0
  638. package/dist/esm/recovery/baseApi.js +64 -0
  639. package/dist/esm/recovery/coingeckoApi.d.ts +6 -0
  640. package/dist/esm/recovery/coingeckoApi.d.ts.map +1 -0
  641. package/dist/esm/recovery/coingeckoApi.js +40 -0
  642. package/dist/esm/recovery/crossChainRecovery.d.ts +96 -0
  643. package/dist/esm/recovery/crossChainRecovery.d.ts.map +1 -0
  644. package/dist/esm/recovery/crossChainRecovery.js +303 -0
  645. package/dist/esm/recovery/index.d.ts +7 -0
  646. package/dist/{src → esm}/recovery/index.d.ts.map +1 -1
  647. package/dist/esm/recovery/index.js +7 -0
  648. package/dist/esm/recovery/mempoolApi.d.ts +7 -0
  649. package/dist/{src → esm}/recovery/mempoolApi.d.ts.map +1 -1
  650. package/dist/esm/recovery/mempoolApi.js +29 -0
  651. package/dist/esm/recovery/psbt.d.ts +30 -0
  652. package/dist/esm/recovery/psbt.d.ts.map +1 -0
  653. package/dist/esm/recovery/psbt.js +167 -0
  654. package/dist/esm/transaction/bip322.d.ts +27 -0
  655. package/dist/esm/transaction/bip322.d.ts.map +1 -0
  656. package/dist/esm/transaction/bip322.js +86 -0
  657. package/dist/esm/transaction/common/verifyPayGoAmount.d.ts +1 -0
  658. package/dist/esm/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
  659. package/dist/esm/transaction/common/verifyPayGoAmount.js +1 -0
  660. package/dist/esm/transaction/decode.d.ts +11 -0
  661. package/dist/esm/transaction/decode.d.ts.map +1 -0
  662. package/dist/esm/transaction/decode.js +43 -0
  663. package/dist/esm/transaction/descriptor/explainPsbt.d.ts +5 -0
  664. package/dist/esm/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  665. package/dist/esm/transaction/descriptor/explainPsbt.js +44 -0
  666. package/dist/esm/transaction/descriptor/index.d.ts +7 -0
  667. package/dist/esm/transaction/descriptor/index.d.ts.map +1 -0
  668. package/dist/esm/transaction/descriptor/index.js +6 -0
  669. package/dist/esm/transaction/descriptor/parse.d.ts +16 -0
  670. package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -0
  671. package/dist/esm/transaction/descriptor/parse.js +79 -0
  672. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts +14 -0
  673. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
  674. package/dist/esm/transaction/descriptor/parseToAmountType.js +55 -0
  675. package/dist/esm/transaction/descriptor/recipient.d.ts +5 -0
  676. package/dist/esm/transaction/descriptor/recipient.d.ts.map +1 -0
  677. package/dist/esm/transaction/descriptor/recipient.js +2 -0
  678. package/dist/esm/transaction/descriptor/signPsbt.d.ts +25 -0
  679. package/dist/esm/transaction/descriptor/signPsbt.d.ts.map +1 -0
  680. package/dist/esm/transaction/descriptor/signPsbt.js +38 -0
  681. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +36 -0
  682. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
  683. package/dist/esm/transaction/descriptor/verifyTransaction.js +66 -0
  684. package/dist/esm/transaction/explainTransaction.d.ts +18 -0
  685. package/dist/esm/transaction/explainTransaction.d.ts.map +1 -0
  686. package/dist/esm/transaction/explainTransaction.js +52 -0
  687. package/dist/esm/transaction/fetchInputs.d.ts +26 -0
  688. package/dist/esm/transaction/fetchInputs.d.ts.map +1 -0
  689. package/dist/esm/transaction/fetchInputs.js +72 -0
  690. package/dist/esm/transaction/fixedScript/SigningError.d.ts +24 -0
  691. package/dist/esm/transaction/fixedScript/SigningError.d.ts.map +1 -0
  692. package/dist/esm/transaction/fixedScript/SigningError.js +21 -0
  693. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts +11 -0
  694. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  695. package/dist/esm/transaction/fixedScript/explainPsbtWasm.js +64 -0
  696. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +73 -0
  697. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  698. package/dist/esm/transaction/fixedScript/explainTransaction.js +307 -0
  699. package/dist/esm/transaction/fixedScript/index.d.ts +10 -0
  700. package/dist/esm/transaction/fixedScript/index.d.ts.map +1 -0
  701. package/dist/esm/transaction/fixedScript/index.js +9 -0
  702. package/dist/esm/transaction/fixedScript/musig2.d.ts +4 -0
  703. package/dist/esm/transaction/fixedScript/musig2.d.ts.map +1 -0
  704. package/dist/esm/transaction/fixedScript/musig2.js +2 -0
  705. package/dist/esm/transaction/fixedScript/parseOutput.d.ts +28 -0
  706. package/dist/esm/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  707. package/dist/esm/transaction/fixedScript/parseOutput.js +213 -0
  708. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts +8 -0
  709. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  710. package/dist/esm/transaction/fixedScript/parseTransaction.js +176 -0
  711. package/dist/esm/transaction/fixedScript/replayProtection.d.ts +7 -0
  712. package/dist/esm/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  713. package/dist/esm/transaction/fixedScript/replayProtection.js +39 -0
  714. package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts +30 -0
  715. package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -0
  716. package/dist/esm/transaction/fixedScript/signLegacyTransaction.js +112 -0
  717. package/dist/esm/transaction/fixedScript/signPsbt.d.ts +30 -0
  718. package/dist/esm/transaction/fixedScript/signPsbt.d.ts.map +1 -0
  719. package/dist/esm/transaction/fixedScript/signPsbt.js +134 -0
  720. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts +22 -0
  721. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
  722. package/dist/esm/transaction/fixedScript/signPsbtWasm.js +122 -0
  723. package/dist/esm/transaction/fixedScript/signTransaction.d.ts +17 -0
  724. package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -0
  725. package/dist/esm/transaction/fixedScript/signTransaction.js +44 -0
  726. package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts +21 -0
  727. package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  728. package/dist/esm/transaction/fixedScript/verifyTransaction.js +160 -0
  729. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts +9 -0
  730. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
  731. package/dist/esm/transaction/getPayGoVerificationPubkey.js +17 -0
  732. package/dist/esm/transaction/index.d.ts +8 -0
  733. package/dist/esm/transaction/index.d.ts.map +1 -0
  734. package/dist/esm/transaction/index.js +8 -0
  735. package/dist/esm/transaction/outputDifference.d.ts +40 -0
  736. package/dist/esm/transaction/outputDifference.d.ts.map +1 -0
  737. package/dist/esm/transaction/outputDifference.js +42 -0
  738. package/dist/esm/transaction/parseTransaction.d.ts +4 -0
  739. package/dist/esm/transaction/parseTransaction.d.ts.map +1 -0
  740. package/dist/esm/transaction/parseTransaction.js +12 -0
  741. package/dist/esm/transaction/recipient.d.ts +29 -0
  742. package/dist/esm/transaction/recipient.d.ts.map +1 -0
  743. package/dist/esm/transaction/recipient.js +48 -0
  744. package/dist/esm/transaction/signTransaction.d.ts +6 -0
  745. package/dist/esm/transaction/signTransaction.d.ts.map +1 -0
  746. package/dist/esm/transaction/signTransaction.js +66 -0
  747. package/dist/esm/transaction/types.d.ts +49 -0
  748. package/dist/esm/transaction/types.d.ts.map +1 -0
  749. package/dist/esm/transaction/types.js +4 -0
  750. package/dist/esm/transaction/verifyTransaction.d.ts +4 -0
  751. package/dist/esm/transaction/verifyTransaction.d.ts.map +1 -0
  752. package/dist/esm/transaction/verifyTransaction.js +14 -0
  753. package/dist/esm/verifyKey.d.ts +29 -0
  754. package/dist/esm/verifyKey.d.ts.map +1 -0
  755. package/dist/esm/verifyKey.js +123 -0
  756. package/dist/esm/wallet.d.ts +15 -0
  757. package/dist/esm/wallet.d.ts.map +1 -0
  758. package/dist/esm/wallet.js +5 -0
  759. package/package.json +48 -18
  760. package/.eslintignore +0 -5
  761. package/CHANGELOG.md +0 -253
  762. package/dist/src/abstractUtxoCoin.d.ts +0 -392
  763. package/dist/src/abstractUtxoCoin.d.ts.map +0 -1
  764. package/dist/src/abstractUtxoCoin.js +0 -931
  765. package/dist/src/config.js +0 -14
  766. package/dist/src/index.d.ts +0 -6
  767. package/dist/src/index.d.ts.map +0 -1
  768. package/dist/src/index.js +0 -18
  769. package/dist/src/parseOutput.d.ts +0 -22
  770. package/dist/src/parseOutput.d.ts.map +0 -1
  771. package/dist/src/parseOutput.js +0 -181
  772. package/dist/src/recovery/RecoveryProvider.js +0 -24
  773. package/dist/src/recovery/backupKeyRecovery.d.ts +0 -62
  774. package/dist/src/recovery/backupKeyRecovery.d.ts.map +0 -1
  775. package/dist/src/recovery/backupKeyRecovery.js +0 -293
  776. package/dist/src/recovery/baseApi.d.ts.map +0 -1
  777. package/dist/src/recovery/baseApi.js +0 -73
  778. package/dist/src/recovery/coingeckoApi.d.ts.map +0 -1
  779. package/dist/src/recovery/coingeckoApi.js +0 -47
  780. package/dist/src/recovery/crossChainRecovery.d.ts.map +0 -1
  781. package/dist/src/recovery/crossChainRecovery.js +0 -294
  782. package/dist/src/recovery/mempoolApi.js +0 -33
  783. package/dist/src/recovery/smartbitApi.d.ts +0 -11
  784. package/dist/src/recovery/smartbitApi.d.ts.map +0 -1
  785. package/dist/src/recovery/smartbitApi.js +0 -36
  786. package/dist/src/replayProtection.d.ts +0 -4
  787. package/dist/src/replayProtection.d.ts.map +0 -1
  788. package/dist/src/replayProtection.js +0 -21
  789. package/dist/src/sign.d.ts +0 -31
  790. package/dist/src/sign.d.ts.map +0 -1
  791. package/dist/src/sign.js +0 -104
  792. package/dist/tsconfig.tsbuildinfo +0 -8179
  793. /package/dist/{src → cjs/src}/config.d.ts +0 -0
  794. /package/dist/{src → cjs/src}/recovery/mempoolApi.d.ts +0 -0
  795. /package/dist/{src → esm}/config.d.ts.map +0 -0
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const assert = __importStar(require("assert"));
37
+ const should = require("should");
38
+ const nock = require("nock");
39
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
40
+ const sdk_test_1 = require("@bitgo-beta/sdk-test");
41
+ const sinon = __importStar(require("sinon"));
42
+ const src_1 = require("../../../src");
43
+ const util_1 = require("../util");
44
+ const nockBitGo_1 = require("../util/nockBitGo");
45
+ const transaction_1 = require("../util/transaction");
46
+ const keychains_1 = require("../util/keychains");
47
+ const mock_1 = require("./mock");
48
+ function getKeyId(k) {
49
+ return (0, sdk_test_1.getSeed)(k.pub).toString('hex');
50
+ }
51
+ function nockWallet(coin, walletId, walletKeys) {
52
+ return [
53
+ (0, nockBitGo_1.nockBitGo)()
54
+ .get(`/api/v2/${coin.getChain()}/wallet/${walletId}`)
55
+ .reply(200, {
56
+ id: walletId,
57
+ coin: coin.getChain(),
58
+ label: 'crossChainRecovery',
59
+ keys: walletKeys.map((k) => getKeyId(k)),
60
+ })
61
+ .persist(),
62
+ ...walletKeys.map((k) => (0, nockBitGo_1.nockBitGo)()
63
+ .get(`/api/v2/${coin.getChain()}/key/${getKeyId(k)}`)
64
+ .reply(200, k)
65
+ .persist()),
66
+ ];
67
+ }
68
+ function nockWalletAddress(coin, walletId, address) {
69
+ return (0, nockBitGo_1.nockBitGo)()
70
+ .get(`/api/v2/${coin.getChain()}/wallet/${walletId}/address/${address.address}`)
71
+ .reply(200, {
72
+ address: address.address,
73
+ chain: address.chain,
74
+ index: address.index,
75
+ coin: coin.getChain(),
76
+ wallet: walletId,
77
+ })
78
+ .persist();
79
+ }
80
+ /**
81
+ * Setup test for cross-chain recovery.
82
+ *
83
+ * Users can receive deposits on wallet addresses that are on a different chain.
84
+ *
85
+ * For instance, a user can receive litecoin on a bitcoin wallet.
86
+ * This means that the litecoin blockchain has a transaction with outputs that are spendable
87
+ * with keys that were originally created for a BitGo BTC wallet.
88
+ * In this example, LTC is the "source coin" and BTC is the "recovery coin"
89
+ * In cases like these we must use construct a transaction for litecoin network using keys of the
90
+ * bitcoin wallet.
91
+ *
92
+ * @param sourceCoin - the coin to construct the transaction for
93
+ * @param recoveryCoin - the coin the receiving wallet was set up for
94
+ */
95
+ function run(sourceCoin, recoveryCoin) {
96
+ describe(`Cross-Chain Recovery [sourceCoin=${sourceCoin.getChain()} recoveryCoin=${recoveryCoin.getChain()}]`, function () {
97
+ const walletKeys = (0, util_1.getDefaultWalletKeys)();
98
+ const recoveryWalletId = '5abacebe28d72fbd07e0b8cbba0ff39e';
99
+ // the address the accidental deposit went to, in both sourceCoin and addressCoin formats
100
+ const [depositAddressSourceCoin, depositAddressRecoveryCoin] = [sourceCoin, recoveryCoin].map((coin) => ({
101
+ address: (0, src_1.generateAddress)(coin.network, { keychains: util_1.keychainsBase58, chain: 0, index: 0 }),
102
+ chain: 0,
103
+ index: 0,
104
+ }));
105
+ const chain = 0;
106
+ const index = 1;
107
+ // the address where we want to recover our funds to
108
+ const recoveryAddress = (0, src_1.generateAddress)(sourceCoin.network, {
109
+ keychains: util_1.keychainsBase58,
110
+ chain,
111
+ index,
112
+ });
113
+ const nocks = [];
114
+ let depositTx;
115
+ function getDepositUnspents() {
116
+ return [
117
+ (0, util_1.mockUnspent)(sourceCoin.network, walletKeys, 'p2sh', 0, (sourceCoin.amountType === 'bigint' ? BigInt('10999999800000001') : 1e8)),
118
+ ];
119
+ }
120
+ function getDepositTransaction() {
121
+ return (0, transaction_1.createFullSignedTransaction)(sourceCoin.network, getDepositUnspents(), depositAddressSourceCoin.address, (0, keychains_1.getDefaultWalletUnspentSigner)());
122
+ }
123
+ before('prepare deposit tx', function () {
124
+ depositTx = getDepositTransaction();
125
+ });
126
+ function getRecoveryUnspents() {
127
+ return [
128
+ {
129
+ id: depositTx.getId(),
130
+ address: depositAddressSourceCoin.address,
131
+ chain: chain,
132
+ index: index,
133
+ value: depositTx.outs[0].value,
134
+ },
135
+ ];
136
+ }
137
+ before('setup nocks', function () {
138
+ nocks.push(...nockWallet(recoveryCoin, recoveryWalletId, util_1.keychainsBase58));
139
+ nocks.push(nockWalletAddress(recoveryCoin, recoveryWalletId, depositAddressRecoveryCoin));
140
+ });
141
+ after(function () {
142
+ nocks.forEach((n) => n.done());
143
+ });
144
+ after(function () {
145
+ nock.cleanAll();
146
+ });
147
+ afterEach(function () {
148
+ sinon.restore();
149
+ });
150
+ async function matchFixture(name, recovery) {
151
+ let recoveryObj = { ...recovery };
152
+ if (sourceCoin.amountType === 'bigint') {
153
+ recoveryObj = JSON.parse(JSON.stringify(recoveryObj, (k, v) => {
154
+ if (typeof v === 'bigint') {
155
+ return v.toString();
156
+ }
157
+ else {
158
+ return v;
159
+ }
160
+ }));
161
+ }
162
+ (0, util_1.shouldEqualJSON)(recoveryObj, await (0, util_1.getFixture)(sourceCoin, `recovery/crossChainRecovery-${recoveryCoin.getChain()}-${name}`, recoveryObj));
163
+ }
164
+ function checkRecoveryPsbtSignature(psbtHex) {
165
+ const psbt = utxolib.bitgo.createPsbtFromHex(psbtHex, sourceCoin.network);
166
+ const unspents = getRecoveryUnspents();
167
+ should.equal(psbt.data.inputs.length, unspents.length);
168
+ // Verify user key has signed each input (same pattern as backupKeyRecovery test)
169
+ psbt.data.inputs.forEach((input, i) => {
170
+ const userSigned = psbt.validateSignaturesOfInputHD(i, walletKeys.user);
171
+ userSigned.should.eql(true, `Input ${i} should be signed by user key`);
172
+ });
173
+ }
174
+ it('should test signed cross chain recovery', async () => {
175
+ const getRecoveryProviderStub = sinon
176
+ .stub(src_1.AbstractUtxoCoin.prototype, 'getRecoveryProvider')
177
+ .returns(new mock_1.MockCrossChainRecoveryProvider(sourceCoin, getDepositUnspents(), depositTx));
178
+ const params = {
179
+ recoveryCoin,
180
+ txid: depositTx.getId(),
181
+ recoveryAddress,
182
+ wallet: recoveryWalletId,
183
+ };
184
+ const signedRecovery = (await sourceCoin.recoverFromWrongChain({
185
+ ...params,
186
+ xprv: util_1.keychainsBase58[0].prv,
187
+ }));
188
+ should.equal(getRecoveryProviderStub.callCount, 1);
189
+ // Verify fixture match
190
+ await matchFixture('signed', signedRecovery);
191
+ // Verify PSBT has valid signatures (user key signed)
192
+ checkRecoveryPsbtSignature(signedRecovery.txHex);
193
+ });
194
+ it('should test unsigned cross chain recovery', async () => {
195
+ const getRecoveryProviderStub = sinon
196
+ .stub(src_1.AbstractUtxoCoin.prototype, 'getRecoveryProvider')
197
+ .returns(new mock_1.MockCrossChainRecoveryProvider(sourceCoin, getDepositUnspents(), depositTx));
198
+ const params = {
199
+ recoveryCoin,
200
+ txid: depositTx.getId(),
201
+ recoveryAddress,
202
+ wallet: recoveryWalletId,
203
+ };
204
+ const unsignedRecovery = (await sourceCoin.recoverFromWrongChain({
205
+ ...params,
206
+ signed: false,
207
+ }));
208
+ should.equal(getRecoveryProviderStub.callCount, 1);
209
+ // Verify fixture match
210
+ await matchFixture('unsigned', unsignedRecovery);
211
+ // Verify the unsigned PSBT can be signed
212
+ const signedTx = await sourceCoin.signTransaction({
213
+ txPrebuild: unsignedRecovery,
214
+ prv: util_1.keychainsBase58[0].prv,
215
+ pubs: util_1.keychainsBase58.map((k) => k.pub),
216
+ });
217
+ checkRecoveryPsbtSignature(signedTx.txHex);
218
+ });
219
+ });
220
+ }
221
+ function isSupportedCrossChainRecovery(sourceCoin, recoveryCoin) {
222
+ return src_1.supportedCrossChainRecoveries[sourceCoin.getFamily()]?.includes(recoveryCoin.getFamily());
223
+ }
224
+ util_1.utxoCoins.forEach((coin) => {
225
+ util_1.utxoCoins
226
+ .filter((otherCoin) => coin !== otherCoin &&
227
+ isSupportedCrossChainRecovery(coin, otherCoin) &&
228
+ ((utxolib.isMainnet(coin.network) && utxolib.isMainnet(otherCoin.network)) ||
229
+ (utxolib.isTestnet(coin.network) && utxolib.isTestnet(otherCoin.network))))
230
+ .forEach((otherCoin) => {
231
+ if (coin.amountType === 'bigint') {
232
+ run(coin, otherCoin);
233
+ }
234
+ else {
235
+ run(coin, otherCoin);
236
+ }
237
+ });
238
+ });
239
+ describe(`Cross-Chain Recovery getWallet`, async function () {
240
+ const bitgo = util_1.defaultBitGo;
241
+ const recoveryCoin = (0, util_1.getUtxoCoin)('btc');
242
+ const recoveryWalletId = '5abacebe28d72fbd07e0b8cbba0ff39e';
243
+ it('should search v1 wallets if the v2 endpoint responds with a 4xx error', async function () {
244
+ const errorResponses = [400, 404];
245
+ for (const error of errorResponses) {
246
+ const nockV2Wallet = (0, nockBitGo_1.nockBitGo)(bitgo)
247
+ .get(`/api/v2/${recoveryCoin.getChain()}/wallet/${recoveryWalletId}`)
248
+ .reply(error);
249
+ const nockV1Wallet = (0, nockBitGo_1.nockBitGo)(bitgo).get(`/api/v1/wallet/${recoveryWalletId}`).reply(error);
250
+ await assert.rejects(() => (0, src_1.getWallet)(bitgo, recoveryCoin, recoveryWalletId), Error(`could not get wallet ${recoveryWalletId} from v1 or v2: ApiResponseError: ${error}`));
251
+ nockV2Wallet.done();
252
+ nockV1Wallet.done();
253
+ }
254
+ });
255
+ it('should throw an error if the v2 endpoint responds with a 5xx error', async function () {
256
+ const errorResponses = [500];
257
+ for (const error of errorResponses) {
258
+ const nockV2Wallet = (0, nockBitGo_1.nockBitGo)(bitgo)
259
+ .get(`/api/v2/${recoveryCoin.getChain()}/wallet/${recoveryWalletId}`)
260
+ .reply(error);
261
+ await assert.rejects(() => (0, src_1.getWallet)(bitgo, recoveryCoin, recoveryWalletId), {
262
+ name: 'ApiResponseError',
263
+ status: 500,
264
+ result: {},
265
+ invalidToken: false,
266
+ needsOTP: false,
267
+ });
268
+ nockV2Wallet.done();
269
+ }
270
+ });
271
+ });
272
+ describe('convertLtcAddressToLegacyFormat', function () {
273
+ const ltcNetwork = utxolib.networks.litecoin;
274
+ it('should convert M... P2SH address to 3... legacy format', function () {
275
+ // These two addresses represent the same underlying script hash:
276
+ // - MNQ7zkgMsaV67rsjA3JuP59RC5wxRXpwgE is the LTC format (scriptHash 0x32)
277
+ // - 3GBygsGPvTdfKMbq4AKZZRu1sPMWPEsBfd is the BTC format (scriptHash 0x05)
278
+ const ltcAddress = 'MNQ7zkgMsaV67rsjA3JuP59RC5wxRXpwgE';
279
+ const expectedLegacyAddress = '3GBygsGPvTdfKMbq4AKZZRu1sPMWPEsBfd';
280
+ const legacyAddress = (0, src_1.convertLtcAddressToLegacyFormat)(ltcAddress, ltcNetwork);
281
+ assert.strictEqual(legacyAddress, expectedLegacyAddress);
282
+ });
283
+ it('should convert MD68PsdheKxcYsrVLyZRXgoSDLnB1MdVtE to legacy format', function () {
284
+ const address = 'MD68PsdheKxcYsrVLyZRXgoSDLnB1MdVtE';
285
+ const legacyAddress = (0, src_1.convertLtcAddressToLegacyFormat)(address, ltcNetwork);
286
+ // Should start with '3' (legacy BTC P2SH format)
287
+ assert.ok(legacyAddress.startsWith('3'), `Expected address to start with '3', got: ${legacyAddress}`);
288
+ });
289
+ it('should not modify bech32 addresses', function () {
290
+ const bech32Address = 'ltc1qgrl8zpndsklaa9swgd5vevyxmx5x63vcrl7dk4';
291
+ const result = (0, src_1.convertLtcAddressToLegacyFormat)(bech32Address, ltcNetwork);
292
+ assert.strictEqual(result, bech32Address);
293
+ });
294
+ });
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NDaGFpblJlY292ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L3JlY292ZXJ5L2Nyb3NzQ2hhaW5SZWNvdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUVqQyxpQ0FBa0M7QUFDbEMsNkJBQThCO0FBQzlCLDhEQUFnRDtBQUVoRCxtREFBK0M7QUFDL0MsNkNBQStCO0FBRS9CLHNDQVFzQjtBQUN0QixrQ0FVaUI7QUFDakIsaURBQThDO0FBQzlDLHFEQUFrRTtBQUNsRSxpREFBa0U7QUFFbEUsaUNBQXdEO0FBSXhELFNBQVMsUUFBUSxDQUFDLENBQWlCO0lBQ2pDLE9BQU8sSUFBQSxrQkFBTyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQXNCLEVBQUUsUUFBZ0IsRUFBRSxVQUFrQztJQUM5RixPQUFPO1FBQ0wsSUFBQSxxQkFBUyxHQUFFO2FBQ1IsR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLFFBQVEsRUFBRSxDQUFDO2FBQ3BELEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVixFQUFFLEVBQUUsUUFBUTtZQUNaLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3JCLEtBQUssRUFBRSxvQkFBb0I7WUFDM0IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6QyxDQUFDO2FBQ0QsT0FBTyxFQUFFO1FBQ1osR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDdEIsSUFBQSxxQkFBUyxHQUFFO2FBQ1IsR0FBRyxDQUFD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QXdELEVBQUU7UUFDM0QsaUVBQWlFO1FBQ2pFLDJFQUEyRTtRQUMzRSwyRUFBMkU7UUFDM0UsTUFBTSxVQUFVLEdBQUcsb0NBQW9DLENBQUM7UUFDeEQsTUFBTSxxQkFBcUIsR0FBRyxvQ0FBb0MsQ0FBQztRQUVuRSxNQUFNLGFBQWEsR0FBRyxJQUFBLHFDQUErQixFQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM5RSxNQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQzNELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9FQUFvRSxFQUFFO1FBQ3ZFLE1BQU0sT0FBTyxHQUFHLG9DQUFvQyxDQUFDO1FBQ3JELE1BQU0sYUFBYSxHQUFHLElBQUEscUNBQStCLEVBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTNFLGlEQUFpRDtRQUNqRCxNQUFNLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsNENBQTRDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDeEcsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0NBQW9DLEVBQUU7UUFDdkMsTUFBTSxhQUFhLEdBQUcsNkNBQTZDLENBQUM7UUFDcEUsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQ0FBK0IsRUFBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDMUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgc2hvdWxkID0gcmVxdWlyZSgnc2hvdWxkJyk7XG5pbXBvcnQgbm9jayA9IHJlcXVpcmUoJ25vY2snKTtcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgVHJpcGxlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgZ2V0U2VlZCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay10ZXN0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcblxuaW1wb3J0IHtcbiAgQWJzdHJhY3RVdHhvQ29pbixcbiAgQ3Jvc3NDaGFpblJlY292ZXJ5U2lnbmVkLFxuICBDcm9zc0NoYWluUmVjb3ZlcnlVbnNpZ25lZCxcbiAgZ2V0V2FsbGV0LFxuICBzdXBwb3J0ZWRDcm9zc0NoYWluUmVjb3ZlcmllcyxcbiAgZ2VuZXJhdGVBZGRyZXNzLFxuICBjb252ZXJ0THRjQWRkcmVzc1RvTGVnYWN5Rm9ybWF0LFxufSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHtcbiAgZ2V0Rml4dHVyZSxcbiAga2V5Y2hhaW5zQmFzZTU4LFxuICBLZXljaGFpbkJhc2U1OCxcbiAgbW9ja1Vuc3BlbnQsXG4gIHNob3VsZEVxdWFsSlNPTixcbiAgdXR4b0NvaW5zLFxuICBnZXREZWZhdWx0V2FsbGV0S2V5cyxcbiAgZGVmYXVsdEJpdEdvLFxuICBnZXRVdHhvQ29pbixcbn0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgeyBub2NrQml0R28gfSBmcm9tICcuLi91dGlsL25vY2tCaXRHbyc7XG5pbXBvcnQgeyBjcmVhdGVGdWxsU2lnbmVkVHJhbnNhY3Rpb24gfSBmcm9tICcuLi91dGlsL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IGdldERlZmF1bHRXYWxsZXRVbnNwZW50U2lnbmVyIH0gZnJvbSAnLi4vdXRpbC9rZXljaGFpbnMnO1xuXG5pbXBvcnQgeyBNb2NrQ3Jvc3NDaGFpblJlY292ZXJ5UHJvdmlkZXIgfSBmcm9tICcuL21vY2snO1xuXG50eXBlIFdhbGxldFVuc3BlbnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4gPSB1dHhvbGliLmJpdGdvLldhbGxldFVuc3BlbnQ8VE51bWJlcj47XG5cbmZ1bmN0aW9uIGdldEtleUlkKGs6IEtleWNoYWluQmFzZTU4KTogc3RyaW5nIHtcbiAgcmV0dXJuIGdldFNlZWQoay5wdWIpLnRvU3RyaW5nKCdoZXgnKTtcbn1cblxuZnVuY3Rpb24gbm9ja1dhbGxldChjb2luOiBBYnN0cmFjdFV0eG9Db2luLCB3YWxsZXRJZDogc3RyaW5nLCB3YWxsZXRLZXlzOiBUcmlwbGU8S2V5Y2hhaW5CYXNlNTg+KTogbm9jay5TY29wZVtdIHtcbiAgcmV0dXJuIFtcbiAgICBub2NrQml0R28oKVxuICAgICAgLmdldChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0vd2FsbGV0LyR7d2FsbGV0SWR9YClcbiAgICAgIC5yZXBseSgyMDAsIHtcbiAgICAgICAgaWQ6IHdhbGxldElkLFxuICAgICAgICBjb2luOiBjb2luLmdldENoYWluKCksXG4gICAgICAgIGxhYmVsOiAnY3Jvc3NDaGFpblJlY292ZXJ5JyxcbiAgICAgICAga2V5czogd2FsbGV0S2V5cy5tYXAoKGspID0+IGdldEtleUlkKGspKSxcbiAgICAgIH0pXG4gICAgICAucGVyc2lzdCgpLFxuICAgIC4uLndhbGxldEtleXMubWFwKChrKSA9PlxuICAgICAgbm9ja0JpdEdvKClcbiAgICAgICAgLmdldChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0va2V5LyR7Z2V0S2V5SWQoayl9YClcbiAgICAgICAgLnJlcGx5KDIwMCwgaylcbiAgICAgICAgLnBlcnNpc3QoKVxuICAgICksXG4gIF07XG59XG5cbnR5cGUgQWRkcmVzcyA9IHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBjaGFpbjogbnVtYmVyO1xuICBpbmRleDogbnVtYmVyO1xufTtcblxuZnVuY3Rpb24gbm9ja1dhbGxldEFkZHJlc3MoY29pbjogQWJzdHJhY3RVdHhvQ29pbiwgd2FsbGV0SWQ6IHN0cmluZywgYWRkcmVzczogQWRkcmVzcyk6IG5vY2suU2NvcGUge1xuICByZXR1cm4gbm9ja0JpdEdvKClcbiAgICAuZ2V0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS93YWxsZXQvJHt3YWxsZXRJZH0vYWRkcmVzcy8ke2FkZHJlc3MuYWRkcmVzc31gKVxuICAgIC5yZXBseSgyMDAsIHtcbiAgICAgIGFkZHJlc3M6IGFkZHJlc3MuYWRkcmVzcyxcbiAgICAgIGNoYWluOiBhZGRyZXNzLmNoYWluLFxuICAgICAgaW5kZXg6IGFkZHJlc3MuaW5kZXgsXG4gICAgICBjb2luOiBjb2luLmdldENoYWluKCksXG4gICAgICB3YWxsZXQ6IHdhbGxldElkLFxuICAgIH0pXG4gICAgLnBlcnNpc3QoKTtcbn1cblxuLyoqXG4gKiBTZXR1cCB0ZXN0IGZvciBjcm9zcy1jaGFpbiByZWNvdmVyeS5cbiAqXG4gKiBVc2VycyBjYW4gcmVjZWl2ZSBkZXBvc2l0cyBvbiB3YWxsZXQgYWRkcmVzc2VzIHRoYXQgYXJlIG9uIGEgZGlmZmVyZW50IGNoYWluLlxuICpcbiAqIEZvciBpbnN0YW5jZSwgYSB1c2VyIGNhbiByZWNlaXZlIGxpdGVjb2luIG9uIGEgYml0Y29pbiB3YWxsZXQuXG4gKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGxpdGVjb2luIGJsb2NrY2hhaW4gaGFzIGEgdHJhbnNhY3Rpb24gd2l0aCBvdXRwdXRzIHRoYXQgYXJlIHNwZW5kYWJsZVxuICogd2l0aCBrZXlzIHRoYXQgd2VyZSBvcmlnaW5hbGx5IGNyZWF0ZWQgZm9yIGEgQml0R28gQlRDIHdhbGxldC5cbiAqIEluIHRoaXMgZXhhbXBsZSwgTFRDIGlzIHRoZSBcInNvdXJjZSBjb2luXCIgYW5kIEJUQyBpcyB0aGUgXCJyZWNvdmVyeSBjb2luXCJcbiAqIEluIGNhc2VzIGxpa2UgdGhlc2Ugd2UgbXVzdCB1c2UgY29uc3RydWN0IGEgdHJhbnNhY3Rpb24gZm9yIGxpdGVjb2luIG5ldHdvcmsgdXNpbmcga2V5cyBvZiB0aGVcbiAqIGJpdGNvaW4gd2FsbGV0LlxuICpcbiAqIEBwYXJhbSBzb3VyY2VDb2luIC0gdGhlIGNvaW4gdG8gY29uc3RydWN0IHRoZSB0cmFuc2FjdGlvbiBmb3JcbiAqIEBwYXJhbSByZWNvdmVyeUNvaW4gLSB0aGUgY29pbiB0aGUgcmVjZWl2aW5nIHdhbGxldCB3YXMgc2V0IHVwIGZvclxuICovXG5mdW5jdGlvbiBydW48VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4oc291cmNlQ29pbjogQWJzdHJhY3RVdHhvQ29pbiwgcmVjb3ZlcnlDb2luOiBBYnN0cmFjdFV0eG9Db2luKSB7XG4gIGRlc2NyaWJlKGBDcm9zcy1DaGFpbiBSZWNvdmVyeSBbc291cmNlQ29pbj0ke3NvdXJjZUNvaW4uZ2V0Q2hhaW4oKX0gcmVjb3ZlcnlDb2luPSR7cmVjb3ZlcnlDb2luLmdldENoYWluKCl9XWAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB3YWxsZXRLZXlzID0gZ2V0RGVmYXVsdFdhbGxldEtleXMoKTtcbiAgICBjb25zdCByZWNvdmVyeVdhbGxldElkID0gJzVhYmFjZWJlMjhkNzJmYmQwN2UwYjhjYmJhMGZmMzllJztcbiAgICAvLyB0aGUgYWRkcmVzcyB0aGUgYWNjaWRlbnRhbCBkZXBvc2l0IHdlbnQgdG8sIGluIGJvdGggc291cmNlQ29pbiBhbmQgYWRkcmVzc0NvaW4gZm9ybWF0c1xuICAgIGNvbnN0IFtkZXBvc2l0QWRkcmVzc1NvdXJjZUNvaW4sIGRlcG9zaXRBZGRyZXNzUmVjb3ZlcnlDb2luXSA9IFtzb3VyY2VDb2luLCByZWNvdmVyeUNvaW5dLm1hcCgoY29pbikgPT4gKHtcbiAgICAgIGFkZHJlc3M6IGdlbmVyYXRlQWRkcmVzcyhjb2luLm5ldHdvcmssIHsga2V5Y2hhaW5zOiBrZXljaGFpbnNCYXNlNTgsIGNoYWluOiAwLCBpbmRleDogMCB9KSxcbiAgICAgIGNoYWluOiAwLFxuICAgICAgaW5kZXg6IDAsXG4gICAgfSkpO1xuICAgIGNvbnN0IGNoYWluID0gMDtcbiAgICBjb25zdCBpbmRleCA9IDE7XG4gICAgLy8gdGhlIGFkZHJlc3Mgd2hlcmUgd2Ugd2FudCB0byByZWNvdmVyIG91ciBmdW5kcyB0b1xuICAgIGNvbnN0IHJlY292ZXJ5QWRkcmVzcyA9IGdlbmVyYXRlQWRkcmVzcyhzb3VyY2VDb2luLm5ldHdvcmssIHtcbiAgICAgIGtleWNoYWluczoga2V5Y2hhaW5zQmFzZTU4LFxuICAgICAgY2hhaW4sXG4gICAgICBpbmRleCxcbiAgICB9KTtcbiAgICBjb25zdCBub2Nrczogbm9jay5TY29wZVtdID0gW107XG5cbiAgICBsZXQgZGVwb3NpdFR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPjtcblxuICAgIGZ1bmN0aW9uIGdldERlcG9zaXRVbnNwZW50cygpOiB1dHhvbGliLmJpdGdvLlVuc3BlbnQ8VE51bWJlcj5bXSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBtb2NrVW5zcGVudDxUTnVtYmVyPihcbiAgICAgICAgICBzb3VyY2VDb2luLm5ldHdvcmssXG4gICAgICAgICAgd2FsbGV0S2V5cyxcbiAgICAgICAgICAncDJzaCcsXG4gICAgICAgICAgMCxcbiAgICAgICAgICAoc291cmNlQ29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50JyA/IEJpZ0ludCgnMTA5OTk5OTk4MDAwMDAwMDEnKSA6IDFlOCkgYXMgVE51bWJlclxuICAgICAgICApLFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREZXBvc2l0VHJhbnNhY3Rpb24oKTogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICAgICAgcmV0dXJuIGNyZWF0ZUZ1bGxTaWduZWRUcmFuc2FjdGlvbjxUTnVtYmVyPihcbiAgICAgICAgc291cmNlQ29pbi5uZXR3b3JrLFxuICAgICAgICBnZXREZXBvc2l0VW5zcGVudHMoKSxcbiAgICAgICAgZGVwb3NpdEFkZHJlc3NTb3VyY2VDb2luLmFkZHJlc3MsXG4gICAgICAgIGdldERlZmF1bHRXYWxsZXRVbnNwZW50U2lnbmVyKClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYmVmb3JlKCdwcmVwYXJlIGRlcG9zaXQgdHgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZXBvc2l0VHggPSBnZXREZXBvc2l0VHJhbnNhY3Rpb24oKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGdldFJlY292ZXJ5VW5zcGVudHMoKTogV2FsbGV0VW5zcGVudDxUTnVtYmVyPltdIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogZGVwb3NpdFR4LmdldElkKCksXG4gICAgICAgICAgYWRkcmVzczogZGVwb3NpdEFkZHJlc3NTb3VyY2VDb2luLmFkZHJlc3MsXG4gICAgICAgICAgY2hhaW46IGNoYWluLFxuICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICB2YWx1ZTogZGVwb3NpdFR4Lm91dHNbMF0udmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIGJlZm9yZSgnc2V0dXAgbm9ja3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBub2Nrcy5wdXNoKC4uLm5vY2tXYWxsZXQocmVjb3ZlcnlDb2luLCByZWNvdmVyeVdhbGxldElkLCBrZXljaGFpbnNCYXNlNTgpKTtcbiAgICAgIG5vY2tzLnB1c2gobm9ja1dhbGxldEFkZHJlc3MocmVjb3ZlcnlDb2luLCByZWNvdmVyeVdhbGxldElkLCBkZXBvc2l0QWRkcmVzc1JlY292ZXJ5Q29pbikpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgbm9ja3MuZm9yRWFjaCgobikgPT4gbi5kb25lKCkpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgbm9jay5jbGVhbkFsbCgpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIG1hdGNoRml4dHVyZShcbiAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgIHJlY292ZXJ5OiBDcm9zc0NoYWluUmVjb3ZlcnlTaWduZWQ8VE51bWJlcj4gfCBDcm9zc0NoYWluUmVjb3ZlcnlVbnNpZ25lZDxUTnVtYmVyPlxuICAgICkge1xuICAgICAgbGV0IHJlY292ZXJ5T2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHsgLi4ucmVjb3ZlcnkgfTtcbiAgICAgIGlmIChzb3VyY2VDb2luLmFtb3VudFR5cGUgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgIHJlY292ZXJ5T2JqID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShyZWNvdmVyeU9iaiwgKGssIHYpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzaG91bGRFcXVhbEpTT04oXG4gICAgICAgIHJlY292ZXJ5T2JqLFxuICAgICAgICBhd2FpdCBnZXRGaXh0dXJlKHNvdXJjZUNvaW4sIGByZWNvdmVyeS9jcm9zc0NoYWluUmVjb3ZlcnktJHtyZWNvdmVyeUNvaW4uZ2V0Q2hhaW4oKX0tJHtuYW1lfWAsIHJlY292ZXJ5T2JqKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja1JlY292ZXJ5UHNidFNpZ25hdHVyZShwc2J0SGV4OiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHBzYnQgPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVBzYnRGcm9tSGV4KHBzYnRIZXgsIHNvdXJjZUNvaW4ubmV0d29yayk7XG4gICAgICBjb25zdCB1bnNwZW50cyA9IGdldFJlY292ZXJ5VW5zcGVudHMoKTtcbiAgICAgIHNob3VsZC5lcXVhbChwc2J0LmRhdGEuaW5wdXRzLmxlbmd0aCwgdW5zcGVudHMubGVuZ3RoKTtcbiAgICAgIC8vIFZlcmlmeSB1c2VyIGtleSBoYXMgc2lnbmVkIGVhY2ggaW5wdXQgKHNhbWUgcGF0dGVybiBhcyBiYWNrdXBLZXlSZWNvdmVyeSB0ZXN0KVxuICAgICAgcHNidC5kYXRhLmlucHV0cy5mb3JFYWNoKChpbnB1dCwgaSkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyU2lnbmVkID0gcHNidC52YWxpZGF0ZVNpZ25hdHVyZXNPZklucHV0SEQoaSwgd2FsbGV0S2V5cy51c2VyKTtcbiAgICAgICAgdXNlclNpZ25lZC5zaG91bGQuZXFsKHRydWUsIGBJbnB1dCAke2l9IHNob3VsZCBiZSBzaWduZWQgYnkgdXNlciBrZXlgKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGl0KCdzaG91bGQgdGVzdCBzaWduZWQgY3Jvc3MgY2hhaW4gcmVjb3ZlcnknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBnZXRSZWNvdmVyeVByb3ZpZGVyU3R1YiA9IHNpbm9uXG4gICAgICAgIC5zdHViKEFic3RyYWN0VXR4b0NvaW4ucHJvdG90eXBlLCAnZ2V0UmVjb3ZlcnlQcm92aWRlcicpXG4gICAgICAgIC5yZXR1cm5zKG5ldyBNb2NrQ3Jvc3NDaGFpblJlY292ZXJ5UHJvdmlkZXI8VE51bWJlcj4oc291cmNlQ29pbiwgZ2V0RGVwb3NpdFVuc3BlbnRzKCksIGRlcG9zaXRUeCkpO1xuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICByZWNvdmVyeUNvaW4sXG4gICAgICAgIHR4aWQ6IGRlcG9zaXRUeC5nZXRJZCgpLFxuICAgICAgICByZWNvdmVyeUFkZHJlc3MsXG4gICAgICAgIHdhbGxldDogcmVjb3ZlcnlXYWxsZXRJZCxcbiAgICAgIH07XG4gICAgICBjb25zdCBzaWduZWRSZWNvdmVyeSA9IChhd2FpdCBzb3VyY2VDb2luLnJlY292ZXJGcm9tV3JvbmdDaGFpbjxUTnVtYmVyPih7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgeHBydjoga2V5Y2hhaW5zQmFzZTU4WzBdLnBydixcbiAgICAgIH0pKSBhcyBDcm9zc0NoYWluUmVjb3ZlcnlTaWduZWQ8VE51bWJlcj47XG4gICAgICBzaG91bGQuZXF1YWwoZ2V0UmVjb3ZlcnlQcm92aWRlclN0dWIuY2FsbENvdW50LCAxKTtcblxuICAgICAgLy8gVmVyaWZ5IGZpeHR1cmUgbWF0Y2hcbiAgICAgIGF3YWl0IG1hdGNoRml4dHVyZSgnc2lnbmVkJywgc2lnbmVkUmVjb3ZlcnkpO1xuXG4gICAgICAvLyBWZXJpZnkgUFNCVCBoYXMgdmFsaWQgc2lnbmF0dXJlcyAodXNlciBrZXkgc2lnbmVkKVxuICAgICAgY2hlY2tSZWNvdmVyeVBzYnRTaWduYXR1cmUoc2lnbmVkUmVjb3ZlcnkudHhIZXggYXMgc3RyaW5nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGVzdCB1bnNpZ25lZCBjcm9zcyBjaGFpbiByZWNvdmVyeScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGdldFJlY292ZXJ5UHJvdmlkZXJTdHViID0gc2lub25cbiAgICAgICAgLnN0dWIoQWJzdHJhY3RVdHhvQ29pbi5wcm90b3R5cGUsICdnZXRSZWNvdmVyeVByb3ZpZGVyJylcbiAgICAgICAgLnJldHVybnMobmV3IE1vY2tDcm9zc0NoYWluUmVjb3ZlcnlQcm92aWRlcjxUTnVtYmVyPihzb3VyY2VDb2luLCBnZXREZXBvc2l0VW5zcGVudHMoKSwgZGVwb3NpdFR4KSk7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIHJlY292ZXJ5Q29pbixcbiAgICAgICAgdHhpZDogZGVwb3NpdFR4LmdldElkKCksXG4gICAgICAgIHJlY292ZXJ5QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0OiByZWNvdmVyeVdhbGxldElkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHVuc2lnbmVkUmVjb3ZlcnkgPSAoYXdhaXQgc291cmNlQ29pbi5yZWNvdmVyRnJvbVdyb25nQ2hhaW48VE51bWJlcj4oe1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgIHNpZ25lZDogZmFsc2UsXG4gICAgICB9KSkgYXMgQ3Jvc3NDaGFpblJlY292ZXJ5VW5zaWduZWQ8VE51bWJlcj47XG4gICAgICBzaG91bGQuZXF1YWwoZ2V0UmVjb3ZlcnlQcm92aWRlclN0dWIuY2FsbENvdW50LCAxKTtcblxuICAgICAgLy8gVmVyaWZ5IGZpeHR1cmUgbWF0Y2hcbiAgICAgIGF3YWl0IG1hdGNoRml4dHVyZSgndW5zaWduZWQnLCB1bnNpZ25lZFJlY292ZXJ5KTtcblxuICAgICAgLy8gVmVyaWZ5IHRoZSB1bnNpZ25lZCBQU0JUIGNhbiBiZSBzaWduZWRcbiAgICAgIGNvbnN0IHNpZ25lZFR4ID0gYXdhaXQgc291cmNlQ29pbi5zaWduVHJhbnNhY3Rpb248VE51bWJlcj4oe1xuICAgICAgICB0eFByZWJ1aWxkOiB1bnNpZ25lZFJlY292ZXJ5LFxuICAgICAgICBwcnY6IGtleWNoYWluc0Jhc2U1OFswXS5wcnYsXG4gICAgICAgIHB1YnM6IGtleWNoYWluc0Jhc2U1OC5tYXAoKGspID0+IGsucHViKSBhcyBUcmlwbGU8c3RyaW5nPixcbiAgICAgIH0pO1xuICAgICAgY2hlY2tSZWNvdmVyeVBzYnRTaWduYXR1cmUoKHNpZ25lZFR4IGFzIHsgdHhIZXg6IHN0cmluZyB9KS50eEhleCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc1N1cHBvcnRlZENyb3NzQ2hhaW5SZWNvdmVyeShzb3VyY2VDb2luOiBBYnN0cmFjdFV0eG9Db2luLCByZWNvdmVyeUNvaW46IEFic3RyYWN0VXR4b0NvaW4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHN1cHBvcnRlZENyb3NzQ2hhaW5SZWNvdmVyaWVzW3NvdXJjZUNvaW4uZ2V0RmFtaWx5KCldPy5pbmNsdWRlcyhyZWNvdmVyeUNvaW4uZ2V0RmFtaWx5KCkpO1xufVxuXG51dHhvQ29pbnMuZm9yRWFjaCgoY29pbikgPT4ge1xuICB1dHhvQ29pbnNcbiAgICAuZmlsdGVyKFxuICAgICAgKG90aGVyQ29pbikgPT5cbiAgICAgICAgY29pbiAhPT0gb3RoZXJDb2luICYmXG4gICAgICAgIGlzU3VwcG9ydGVkQ3Jvc3NDaGFpblJlY292ZXJ5KGNvaW4sIG90aGVyQ29pbikgJiZcbiAgICAgICAgKCh1dHhvbGliLmlzTWFpbm5ldChjb2luLm5ldHdvcmspICYmIHV0eG9saWIuaXNNYWlubmV0KG90aGVyQ29pbi5uZXR3b3JrKSkgfHxcbiAgICAgICAgICAodXR4b2xpYi5pc1Rlc3RuZXQoY29pbi5uZXR3b3JrKSAmJiB1dHhvbGliLmlzVGVzdG5ldChvdGhlckNvaW4ubmV0d29yaykpKVxuICAgIClcbiAgICAuZm9yRWFjaCgob3RoZXJDb2luKSA9PiB7XG4gICAgICBpZiAoY29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50Jykge1xuICAgICAgICBydW48YmlnaW50Pihjb2luLCBvdGhlckNvaW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcnVuKGNvaW4sIG90aGVyQ29pbik7XG4gICAgICB9XG4gICAgfSk7XG59KTtcblxuZGVzY3JpYmUoYENyb3NzLUNoYWluIFJlY292ZXJ5IGdldFdhbGxldGAsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYml0Z28gPSBkZWZhdWx0Qml0R287XG4gIGNvbnN0IHJlY292ZXJ5Q29pbiA9IGdldFV0eG9Db2luKCdidGMnKTtcbiAgY29uc3QgcmVjb3ZlcnlXYWxsZXRJZCA9ICc1YWJhY2ViZTI4ZDcyZmJkMDdlMGI4Y2JiYTBmZjM5ZSc7XG5cbiAgaXQoJ3Nob3VsZCBzZWFyY2ggdjEgd2FsbGV0cyBpZiB0aGUgdjIgZW5kcG9pbnQgcmVzcG9uZHMgd2l0aCBhIDR4eCBlcnJvcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBlcnJvclJlc3BvbnNlcyA9IFs0MDAsIDQwNF07XG5cbiAgICBmb3IgKGNvbnN0IGVycm9yIG9mIGVycm9yUmVzcG9uc2VzKSB7XG4gICAgICBjb25zdCBub2NrVjJXYWxsZXQgPSBub2NrQml0R28oYml0Z28pXG4gICAgICAgIC5nZXQoYC9hcGkvdjIvJHtyZWNvdmVyeUNvaW4uZ2V0Q2hhaW4oKX0vd2FsbGV0LyR7cmVjb3ZlcnlXYWxsZXRJZH1gKVxuICAgICAgICAucmVwbHkoZXJyb3IpO1xuICAgICAgY29uc3Qgbm9ja1YxV2FsbGV0ID0gbm9ja0JpdEdvKGJpdGdvKS5nZXQoYC9hcGkvdjEvd2FsbGV0LyR7cmVjb3ZlcnlXYWxsZXRJZH1gKS5yZXBseShlcnJvcik7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgKCkgPT4gZ2V0V2FsbGV0KGJpdGdvLCByZWNvdmVyeUNvaW4sIHJlY292ZXJ5V2FsbGV0SWQpLFxuICAgICAgICBFcnJvcihgY291bGQgbm90IGdldCB3YWxsZXQgJHtyZWNvdmVyeVdhbGxldElkfSBmcm9tIHYxIG9yIHYyOiBBcGlSZXNwb25zZUVycm9yOiAke2Vycm9yfWApXG4gICAgICApO1xuICAgICAgbm9ja1YyV2FsbGV0LmRvbmUoKTtcbiAgICAgIG5vY2tWMVdhbGxldC5kb25lKCk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIHRoZSB2MiBlbmRwb2ludCByZXNwb25kcyB3aXRoIGEgNXh4IGVycm9yJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGVycm9yUmVzcG9uc2VzID0gWzUwMF07XG4gICAgZm9yIChjb25zdCBlcnJvciBvZiBlcnJvclJlc3BvbnNlcykge1xuICAgICAgY29uc3Qgbm9ja1YyV2FsbGV0ID0gbm9ja0JpdEdvKGJpdGdvKVxuICAgICAgICAuZ2V0KGAvYXBpL3YyLyR7cmVjb3ZlcnlDb2luLmdldENoYWluKCl9L3dhbGxldC8ke3JlY292ZXJ5V2FsbGV0SWR9YClcbiAgICAgICAgLnJlcGx5KGVycm9yKTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGdldFdhbGxldChiaXRnbywgcmVjb3ZlcnlDb2luLCByZWNvdmVyeVdhbGxldElkKSwge1xuICAgICAgICBuYW1lOiAnQXBpUmVzcG9uc2VFcnJvcicsXG4gICAgICAgIHN0YXR1czogNTAwLFxuICAgICAgICByZXN1bHQ6IHt9LFxuICAgICAgICBpbnZhbGlkVG9rZW46IGZhbHNlLFxuICAgICAgICBuZWVkc09UUDogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIG5vY2tWMldhbGxldC5kb25lKCk7XG4gICAgfVxuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnY29udmVydEx0Y0FkZHJlc3NUb0xlZ2FjeUZvcm1hdCcsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgbHRjTmV0d29yayA9IHV0eG9saWIubmV0d29ya3MubGl0ZWNvaW47XG5cbiAgaXQoJ3Nob3VsZCBjb252ZXJ0IE0uLi4gUDJTSCBhZGRyZXNzIHRvIDMuLi4gbGVnYWN5IGZvcm1hdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAvLyBUaGVzZSB0d28gYWRkcmVzc2VzIHJlcHJlc2VudCB0aGUgc2FtZSB1bmRlcmx5aW5nIHNjcmlwdCBoYXNoOlxuICAgIC8vIC0gTU5RN3prZ01zYVY2N3JzakEzSnVQNTlSQzV3eFJYcHdnRSBpcyB0aGUgTFRDIGZvcm1hdCAoc2NyaXB0SGFzaCAweDMyKVxuICAgIC8vIC0gM0dCeWdzR1B2VGRmS01icTRBS1paUnUxc1BNV1BFc0JmZCBpcyB0aGUgQlRDIGZvcm1hdCAoc2NyaXB0SGFzaCAweDA1KVxuICAgIGNvbnN0IGx0Y0FkZHJlc3MgPSAnTU5RN3prZ01zYVY2N3JzakEzSnVQNTlSQzV3eFJYcHdnRSc7XG4gICAgY29uc3QgZXhwZWN0ZWRMZWdhY3lBZGRyZXNzID0gJzNHQnlnc0dQdlRkZktNYnE0QUtaWlJ1MXNQTVdQRXNCZmQnO1xuXG4gICAgY29uc3QgbGVnYWN5QWRkcmVzcyA9IGNvbnZlcnRMdGNBZGRyZXNzVG9MZWdhY3lGb3JtYXQobHRjQWRkcmVzcywgbHRjTmV0d29yayk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGxlZ2FjeUFkZHJlc3MsIGV4cGVjdGVkTGVnYWN5QWRkcmVzcyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY29udmVydCBNRDY4UHNkaGVLeGNZc3JWTHlaUlhnb1NETG5CMU1kVnRFIHRvIGxlZ2FjeSBmb3JtYXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYWRkcmVzcyA9ICdNRDY4UHNkaGVLeGNZc3JWTHlaUlhnb1NETG5CMU1kVnRFJztcbiAgICBjb25zdCBsZWdhY3lBZGRyZXNzID0gY29udmVydEx0Y0FkZHJlc3NUb0xlZ2FjeUZvcm1hdChhZGRyZXNzLCBsdGNOZXR3b3JrKTtcblxuICAgIC8vIFNob3VsZCBzdGFydCB3aXRoICczJyAobGVnYWN5IEJUQyBQMlNIIGZvcm1hdClcbiAgICBhc3NlcnQub2sobGVnYWN5QWRkcmVzcy5zdGFydHNXaXRoKCczJyksIGBFeHBlY3RlZCBhZGRyZXNzIHRvIHN0YXJ0IHdpdGggJzMnLCBnb3Q6ICR7bGVnYWN5QWRkcmVzc31gKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgbW9kaWZ5IGJlY2gzMiBhZGRyZXNzZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYmVjaDMyQWRkcmVzcyA9ICdsdGMxcWdybDh6cG5kc2tsYWE5c3dnZDV2ZXZ5eG14NXg2M3Zjcmw3ZGs0JztcbiAgICBjb25zdCByZXN1bHQgPSBjb252ZXJ0THRjQWRkcmVzc1RvTGVnYWN5Rm9ybWF0KGJlY2gzMkFkZHJlc3MsIGx0Y05ldHdvcmspO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQsIGJlY2gzMkFkZHJlc3MpO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,30 @@
1
+ import { bitgo } from '@bitgo-beta/utxo-lib';
2
+ import { AddressInfo, TransactionIO } from '@bitgo-beta/blockapis';
3
+ import * as utxolib from '@bitgo-beta/utxo-lib';
4
+ import { AbstractUtxoCoin, RecoveryProvider } from '../../../src';
5
+ type Unspent<TNumber extends number | bigint = number> = bitgo.Unspent<TNumber>;
6
+ export declare class MockRecoveryProvider implements RecoveryProvider {
7
+ unspents: Unspent<bigint>[];
8
+ private prevTxCache;
9
+ constructor(unspents: Unspent<bigint>[]);
10
+ getAddressInfo(address: string): Promise<AddressInfo>;
11
+ getUnspentsForAddresses(addresses: string[]): Promise<Unspent[]>;
12
+ getTransactionHex(txid: string): Promise<string>;
13
+ getTransactionInputs(txid: string): Promise<Unspent[]>;
14
+ getTransactionIO(txid: string): Promise<TransactionIO>;
15
+ }
16
+ export declare class MockCrossChainRecoveryProvider<TNumber extends number | bigint> implements RecoveryProvider {
17
+ coin: AbstractUtxoCoin;
18
+ unspents: Unspent<TNumber>[];
19
+ tx: utxolib.bitgo.UtxoTransaction<TNumber>;
20
+ private addressVersion;
21
+ private addressFormat;
22
+ constructor(coin: AbstractUtxoCoin, unspents: Unspent<TNumber>[], tx: utxolib.bitgo.UtxoTransaction<TNumber>);
23
+ getUnspentsForAddresses(addresses: string[]): Promise<Unspent[]>;
24
+ getTransactionIO(txid: string): Promise<TransactionIO>;
25
+ getAddressInfo(address: string): Promise<AddressInfo>;
26
+ getTransactionHex(txid: string): Promise<string>;
27
+ getTransactionInputs(txid: string): Promise<Unspent<TNumber>[]>;
28
+ }
29
+ export {};
30
+ //# sourceMappingURL=mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../../../test/unit/recovery/mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIlE,KAAK,OAAO,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAChF,qBAAa,oBAAqB,YAAW,gBAAgB;IACpD,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IACnC,OAAO,CAAC,WAAW,CAA8B;gBACrC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;IASjC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQrD,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAUhE,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAItD,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAItD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAGvD;AACD,qBAAa,8BAA8B,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,CAAE,YAAW,gBAAgB;IAI7F,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;IAC5B,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC;IALnD,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,aAAa,CAAsC;gBAElD,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAC5B,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC;IAQ7C,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAehE,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAyBtD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIrD,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAItD,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;CAGhE"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.MockCrossChainRecoveryProvider = exports.MockRecoveryProvider = void 0;
37
+ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
38
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
39
+ const bch_1 = require("../../../src/impl/bch");
40
+ const bsv_1 = require("../../../src/impl/bsv");
41
+ class MockRecoveryProvider {
42
+ constructor(unspents) {
43
+ this.prevTxCache = {};
44
+ this.unspents = unspents;
45
+ this.unspents.forEach((u) => {
46
+ if (utxolib.bitgo.isUnspentWithPrevTx(u)) {
47
+ const { txid } = utxo_lib_1.bitgo.parseOutputId(u.id);
48
+ this.prevTxCache[txid] = u.prevTx.toString('hex');
49
+ }
50
+ });
51
+ }
52
+ async getAddressInfo(address) {
53
+ const u = this.unspents.find((u) => u.address === address);
54
+ return {
55
+ txCount: u ? 1 : 0,
56
+ balance: u ? Number(u.value) : 0,
57
+ };
58
+ }
59
+ async getUnspentsForAddresses(addresses) {
60
+ return this.unspents
61
+ .filter((u) => addresses.includes(u.address))
62
+ .map((u) => ({
63
+ id: u.id,
64
+ address: u.address,
65
+ value: Number(u.value),
66
+ }));
67
+ }
68
+ async getTransactionHex(txid) {
69
+ return this.prevTxCache[txid];
70
+ }
71
+ getTransactionInputs(txid) {
72
+ throw new Error(`not implemented`);
73
+ }
74
+ getTransactionIO(txid) {
75
+ throw new Error(`not implemented`);
76
+ }
77
+ }
78
+ exports.MockRecoveryProvider = MockRecoveryProvider;
79
+ class MockCrossChainRecoveryProvider {
80
+ constructor(coin, unspents, tx) {
81
+ this.coin = coin;
82
+ this.unspents = unspents;
83
+ this.tx = tx;
84
+ // this is how blockchair will return the data, as a cashaddr for BCH like coins
85
+ // BSV supports cashaddr, but at the time of writing the SDK does not support cashaddr for bsv
86
+ this.addressFormat = this.coin instanceof bch_1.Bch && !(this.coin instanceof bsv_1.Bsv) ? 'cashaddr' : 'default';
87
+ this.addressVersion = this.coin instanceof bch_1.Bch && !(this.coin instanceof bsv_1.Bsv) ? 'cashaddr' : 'base58';
88
+ }
89
+ async getUnspentsForAddresses(addresses) {
90
+ return this.tx.outs.map((o, vout) => {
91
+ let address = utxolib.addressFormat.fromOutputScriptWithFormat(o.script, this.addressFormat, this.coin.network);
92
+ if (address.includes(':')) {
93
+ [, address] = address.split(':');
94
+ }
95
+ return {
96
+ id: `${this.tx?.getId()}:${vout}`,
97
+ address,
98
+ value: Number(o.value),
99
+ valueString: this.coin.amountType === 'bigint' ? o.value.toString() : undefined,
100
+ };
101
+ });
102
+ }
103
+ async getTransactionIO(txid) {
104
+ const payload = {
105
+ inputs: this.unspents.map((u) => {
106
+ // imitate how blockchair returns data
107
+ let address = this.coin.canonicalAddress(u.address, this.addressVersion);
108
+ if (address.includes(':')) {
109
+ [, address] = address.split(':');
110
+ }
111
+ return {
112
+ address,
113
+ };
114
+ }),
115
+ outputs: this.tx.outs.map((o) => {
116
+ let address = utxolib.addressFormat.fromOutputScriptWithFormat(o.script, this.addressFormat, this.coin.network);
117
+ if (address.includes(':')) {
118
+ [, address] = address.split(':');
119
+ }
120
+ return {
121
+ address,
122
+ };
123
+ }),
124
+ };
125
+ return payload;
126
+ }
127
+ async getAddressInfo(address) {
128
+ throw new Error(`not implemented`);
129
+ }
130
+ async getTransactionHex(txid) {
131
+ throw new Error(`not implemented`);
132
+ }
133
+ getTransactionInputs(txid) {
134
+ throw new Error(`not implemented`);
135
+ }
136
+ }
137
+ exports.MockCrossChainRecoveryProvider = MockCrossChainRecoveryProvider;
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9yZWNvdmVyeS9tb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUE2QztBQUU3Qyw4REFBZ0Q7QUFHaEQsK0NBQTRDO0FBQzVDLCtDQUE0QztBQUc1QyxNQUFhLG9CQUFvQjtJQUcvQixZQUFZLFFBQTJCO1FBRC9CLGdCQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUUvQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzFCLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsZ0JBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQWU7UUFDbEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDM0QsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQixPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxD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QUFpQixDQUFDLElBQVk7UUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFqRUQsd0VBaUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYml0Z28gfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBBZGRyZXNzSW5mbywgVHJhbnNhY3Rpb25JTyB9IGZyb20gJ0BiaXRnby1iZXRhL2Jsb2NrYXBpcyc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiwgUmVjb3ZlcnlQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBCY2ggfSBmcm9tICcuLi8uLi8uLi9zcmMvaW1wbC9iY2gnO1xuaW1wb3J0IHsgQnN2IH0gZnJvbSAnLi4vLi4vLi4vc3JjL2ltcGwvYnN2JztcblxudHlwZSBVbnNwZW50PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+ID0gYml0Z28uVW5zcGVudDxUTnVtYmVyPjtcbmV4cG9ydCBjbGFzcyBNb2NrUmVjb3ZlcnlQcm92aWRlciBpbXBsZW1lbnRzIFJlY292ZXJ5UHJvdmlkZXIge1xuICBwdWJsaWMgdW5zcGVudHM6IFVuc3BlbnQ8YmlnaW50PltdO1xuICBwcml2YXRlIHByZXZUeENhY2hlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGNvbnN0cnVjdG9yKHVuc3BlbnRzOiBVbnNwZW50PGJpZ2ludD5bXSkge1xuICAgIHRoaXMudW5zcGVudHMgPSB1bnNwZW50cztcbiAgICB0aGlzLnVuc3BlbnRzLmZvckVhY2goKHUpID0+IHtcbiAgICAgIGlmICh1dHhvbGliLmJpdGdvLmlzVW5zcGVudFdpdGhQcmV2VHgodSkpIHtcbiAgICAgICAgY29uc3QgeyB0eGlkIH0gPSBiaXRnby5wYXJzZU91dHB1dElkKHUuaWQpO1xuICAgICAgICB0aGlzLnByZXZUeENhY2hlW3R4aWRdID0gdS5wcmV2VHgudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGFzeW5jIGdldEFkZHJlc3NJbmZvKGFkZHJlc3M6IHN0cmluZyk6IFByb21pc2U8QWRkcmVzc0luZm8+IHtcbiAgICBjb25zdCB1ID0gdGhpcy51bnNwZW50cy5maW5kKCh1KSA9PiB1LmFkZHJlc3MgPT09IGFkZHJlc3MpO1xuICAgIHJldHVybiB7XG4gICAgICB0eENvdW50OiB1ID8gMSA6IDAsXG4gICAgICBiYWxhbmNlOiB1ID8gTnVtYmVyKHUudmFsdWUpIDogMCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZ2V0VW5zcGVudHNGb3JBZGRyZXNzZXMoYWRkcmVzc2VzOiBzdHJpbmdbXSk6IFByb21pc2U8VW5zcGVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMudW5zcGVudHNcbiAgICAgIC5maWx0ZXIoKHUpID0+IGFkZHJlc3Nlcy5pbmNsdWRlcyh1LmFkZHJlc3MpKVxuICAgICAgLm1hcCgodSkgPT4gKHtcbiAgICAgICAgaWQ6IHUuaWQsXG4gICAgICAgIGFkZHJlc3M6IHUuYWRkcmVzcyxcbiAgICAgICAgdmFsdWU6IE51bWJlcih1LnZhbHVlKSxcbiAgICAgIH0pKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRyYW5zYWN0aW9uSGV4KHR4aWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMucHJldlR4Q2FjaGVbdHhpZF07XG4gIH1cblxuICBnZXRUcmFuc2FjdGlvbklucHV0cyh0eGlkOiBzdHJpbmcpOiBQcm9taXNlPFVuc3BlbnRbXT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgbm90IGltcGxlbWVudGVkYCk7XG4gIH1cblxuICBnZXRUcmFuc2FjdGlvbklPKHR4aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JTz4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgbm90IGltcGxlbWVudGVkYCk7XG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBNb2NrQ3Jvc3NDaGFpblJlY292ZXJ5UHJvdmlkZXI8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4gaW1wbGVtZW50cyBSZWNvdmVyeVByb3ZpZGVyIHtcbiAgcHJpdmF0ZSBhZGRyZXNzVmVyc2lvbjogJ2Nhc2hhZGRyJyB8ICdiYXNlNTgnO1xuICBwcml2YXRlIGFkZHJlc3NGb3JtYXQ6IHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5BZGRyZXNzRm9ybWF0O1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgICBwdWJsaWMgdW5zcGVudHM6IFVuc3BlbnQ8VE51bWJlcj5bXSxcbiAgICBwdWJsaWMgdHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+XG4gICkge1xuICAgIC8vIHRoaXMgaXMgaG93IGJsb2NrY2hhaXIgd2lsbCByZXR1cm4gdGhlIGRhdGEsIGFzIGEgY2FzaGFkZHIgZm9yIEJDSCBsaWtlIGNvaW5zXG4gICAgLy8gQlNWIHN1cHBvcnRzIGNhc2hhZGRyLCBidXQgYXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGUgU0RLIGRvZXMgbm90IHN1cHBvcnQgY2FzaGFkZHIgZm9yIGJzdlxuICAgIHRoaXMuYWRkcmVzc0Zvcm1hdCA9IHRoaXMuY29pbiBpbnN0YW5jZW9mIEJjaCAmJiAhKHRoaXMuY29pbiBpbnN0YW5jZW9mIEJzdikgPyAnY2FzaGFkZHInIDogJ2RlZmF1bHQnO1xuICAgIHRoaXMuYWRkcmVzc1ZlcnNpb24gPSB0aGlzLmNvaW4gaW5zdGFuY2VvZiBCY2ggJiYgISh0aGlzLmNvaW4gaW5zdGFuY2VvZiBCc3YpID8gJ2Nhc2hhZGRyJyA6ICdiYXNlNTgnO1xuICB9XG5cbiAgYXN5bmMgZ2V0VW5zcGVudHNGb3JBZGRyZXNzZXMoYWRkcmVzc2VzOiBzdHJpbmdbXSk6IFByb21pc2U8VW5zcGVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMudHgub3V0cy5tYXAoKG8sIHZvdXQ6IG51bWJlcikgPT4ge1xuICAgICAgbGV0IGFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3NGb3JtYXQuZnJvbU91dHB1dFNjcmlwdFdpdGhGb3JtYXQoby5zY3JpcHQsIHRoaXMuYWRkcmVzc0Zvcm1hdCwgdGhpcy5jb2luLm5ldHdvcmspO1xuICAgICAgaWYgKGFkZHJlc3MuaW5jbHVkZXMoJzonKSkge1xuICAgICAgICBbLCBhZGRyZXNzXSA9IGFkZHJlc3Muc3BsaXQoJzonKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBgJHt0aGlzLnR4Py5nZXRJZCgpfToke3ZvdXR9YCxcbiAgICAgICAgYWRkcmVzcyxcbiAgICAgICAgdmFsdWU6IE51bWJlcihvLnZhbHVlKSxcbiAgICAgICAgdmFsdWVTdHJpbmc6IHRoaXMuY29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50JyA/IG8udmFsdWUudG9TdHJpbmcoKSA6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRUcmFuc2FjdGlvbklPKHR4aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JTz4ge1xuICAgIGNvbnN0IHBheWxvYWQ6IFRyYW5zYWN0aW9uSU8gPSB7XG4gICAgICBpbnB1dHM6IHRoaXMudW5zcGVudHMubWFwKCh1KSA9PiB7XG4gICAgICAgIC8vIGltaXRhdGUgaG93IGJsb2NrY2hhaXIgcmV0dXJucyBkYXRhXG4gICAgICAgIGxldCBhZGRyZXNzID0gdGhpcy5jb2luLmNhbm9uaWNhbEFkZHJlc3ModS5hZGRyZXNzLCB0aGlzLmFkZHJlc3NWZXJzaW9uKTtcbiAgICAgICAgaWYgKGFkZHJlc3MuaW5jbHVkZXMoJzonKSkge1xuICAgICAgICAgIFssIGFkZHJlc3NdID0gYWRkcmVzcy5zcGxpdCgnOicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYWRkcmVzcyxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICAgb3V0cHV0czogdGhpcy50eC5vdXRzLm1hcCgobykgPT4ge1xuICAgICAgICBsZXQgYWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5mcm9tT3V0cHV0U2NyaXB0V2l0aEZvcm1hdChvLnNjcmlwdCwgdGhpcy5hZGRyZXNzRm9ybWF0LCB0aGlzLmNvaW4ubmV0d29yayk7XG4gICAgICAgIGlmIChhZGRyZXNzLmluY2x1ZGVzKCc6JykpIHtcbiAgICAgICAgICBbLCBhZGRyZXNzXSA9IGFkZHJlc3Muc3BsaXQoJzonKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGFkZHJlc3MsXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICB9O1xuICAgIHJldHVybiBwYXlsb2FkO1xuICB9XG5cbiAgYXN5bmMgZ2V0QWRkcmVzc0luZm8oYWRkcmVzczogc3RyaW5nKTogUHJvbWlzZTxBZGRyZXNzSW5mbz4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgbm90IGltcGxlbWVudGVkYCk7XG4gIH1cblxuICBhc3luYyBnZXRUcmFuc2FjdGlvbkhleCh0eGlkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgbm90IGltcGxlbWVudGVkYCk7XG4gIH1cblxuICBnZXRUcmFuc2FjdGlvbklucHV0cyh0eGlkOiBzdHJpbmcpOiBQcm9taXNlPFVuc3BlbnQ8VE51bWJlcj5bXT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgbm90IGltcGxlbWVudGVkYCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=explainPsbt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainPsbt.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/transaction/descriptor/explainPsbt.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const assert_1 = __importDefault(require("assert"));
7
+ const testutil_1 = require("@bitgo-beta/utxo-core/testutil");
8
+ const descriptor_1 = require("@bitgo-beta/utxo-core/testutil/descriptor");
9
+ const descriptor_2 = require("../../../../src/transaction/descriptor");
10
+ const fixtures_utils_1 = require("./fixtures.utils");
11
+ const { assertEqualFixture } = (0, fixtures_utils_1.getFixtureRoot)(__dirname + '/fixtures');
12
+ function assertSignatureCount(expl, signatures, inputSignatures) {
13
+ assert_1.default.ok('signatures' in expl);
14
+ assert_1.default.ok('inputSignatures' in expl);
15
+ assert_1.default.deepStrictEqual(expl.signatures, signatures);
16
+ assert_1.default.deepStrictEqual(expl.inputSignatures, inputSignatures);
17
+ }
18
+ describe('explainPsbt', function () {
19
+ it('has expected values', async function () {
20
+ const psbt = (0, descriptor_1.mockPsbtDefaultWithDescriptorTemplate)('Wsh2Of3');
21
+ const keys = (0, testutil_1.getKeyTriple)('a');
22
+ const descriptorMap = (0, descriptor_1.getDescriptorMap)('Wsh2Of3', keys);
23
+ await assertEqualFixture('explainPsbt.a.json', (0, descriptor_2.explainPsbt)(psbt, descriptorMap));
24
+ psbt.signAllInputsHD(keys[0]);
25
+ assertSignatureCount((0, descriptor_2.explainPsbt)(psbt, descriptorMap), 1, [1, 1]);
26
+ psbt.signAllInputsHD(keys[1]);
27
+ assertSignatureCount((0, descriptor_2.explainPsbt)(psbt, descriptorMap), 2, [2, 2]);
28
+ });
29
+ });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpblBzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9leHBsYWluUHNidC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUU1Qiw2REFBOEQ7QUFDOUQsMEVBQW9IO0FBR3BILHVFQUFxRTtBQUVyRSxxREFBa0Q7QUFFbEQsTUFBTSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsSUFBQSwrQkFBYyxFQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQztBQUV2RSxTQUFTLG9CQUFvQixDQUFDLElBQTRCLEVBQUUsVUFBa0IsRUFBRSxlQUF5QjtJQUN2RyxnQkFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLENBQUM7SUFDaEMsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLENBQUM7SUFDckMsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNwRCxnQkFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRCxRQUFRLENBQUMsYUFBYSxFQUFFO0lBQ3RCLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLO1FBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUEsa0RBQXFDLEVBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUQsTUFBTSxJQUFJLEdBQUcsSUFBQSx1QkFBWSxFQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sYUFBYSxHQUFHLElBQUEsNkJBQWdCLEVBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hELE1BQU0sa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsSUFBQSx3QkFBVyxFQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsb0JBQW9CLENBQUMsSUFBQSx3QkFBVyxFQUFDLElBQUksRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLG9CQUFvQixDQUFDLElBQUEsd0JBQVcsRUFBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgZ2V0S2V5VHJpcGxlIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1jb3JlL3Rlc3R1dGlsJztcbmltcG9ydCB7IGdldERlc2NyaXB0b3JNYXAsIG1vY2tQc2J0RGVmYXVsdFdpdGhEZXNjcmlwdG9yVGVtcGxhdGUgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWNvcmUvdGVzdHV0aWwvZGVzY3JpcHRvcic7XG5cbmltcG9ydCB0eXBlIHsgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9leHBsYWluVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgZXhwbGFpblBzYnQgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVzY3JpcHRvcic7XG5cbmltcG9ydCB7IGdldEZpeHR1cmVSb290IH0gZnJvbSAnLi9maXh0dXJlcy51dGlscyc7XG5cbmNvbnN0IHsgYXNzZXJ0RXF1YWxGaXh0dXJlIH0gPSBnZXRGaXh0dXJlUm9vdChfX2Rpcm5hbWUgKyAnL2ZpeHR1cmVzJyk7XG5cbmZ1bmN0aW9uIGFzc2VydFNpZ25hdHVyZUNvdW50KGV4cGw6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sIHNpZ25hdHVyZXM6IG51bWJlciwgaW5wdXRTaWduYXR1cmVzOiBudW1iZXJbXSkge1xuICBhc3NlcnQub2soJ3NpZ25hdHVyZXMnIGluIGV4cGwpO1xuICBhc3NlcnQub2soJ2lucHV0U2lnbmF0dXJlcycgaW4gZXhwbCk7XG4gIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZXhwbC5zaWduYXR1cmVzLCBzaWduYXR1cmVzKTtcbiAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChleHBsLmlucHV0U2lnbmF0dXJlcywgaW5wdXRTaWduYXR1cmVzKTtcbn1cblxuZGVzY3JpYmUoJ2V4cGxhaW5Qc2J0JywgZnVuY3Rpb24gKCkge1xuICBpdCgnaGFzIGV4cGVjdGVkIHZhbHVlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwc2J0ID0gbW9ja1BzYnREZWZhdWx0V2l0aERlc2NyaXB0b3JUZW1wbGF0ZSgnV3NoMk9mMycpO1xuICAgIGNvbnN0IGtleXMgPSBnZXRLZXlUcmlwbGUoJ2EnKTtcbiAgICBjb25zdCBkZXNjcmlwdG9yTWFwID0gZ2V0RGVzY3JpcHRvck1hcCgnV3NoMk9mMycsIGtleXMpO1xuICAgIGF3YWl0IGFzc2VydEVxdWFsRml4dHVyZSgnZXhwbGFpblBzYnQuYS5qc29uJywgZXhwbGFpblBzYnQocHNidCwgZGVzY3JpcHRvck1hcCkpO1xuICAgIHBzYnQuc2lnbkFsbElucHV0c0hEKGtleXNbMF0pO1xuICAgIGFzc2VydFNpZ25hdHVyZUNvdW50KGV4cGxhaW5Qc2J0KHBzYnQsIGRlc2NyaXB0b3JNYXApLCAxLCBbMSwgMV0pO1xuICAgIHBzYnQuc2lnbkFsbElucHV0c0hEKGtleXNbMV0pO1xuICAgIGFzc2VydFNpZ25hdHVyZUNvdW50KGV4cGxhaW5Qc2J0KHBzYnQsIGRlc2NyaXB0b3JNYXApLCAyLCBbMiwgMl0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,6 @@
1
+ interface FixtureRoot {
2
+ assertEqualFixture(name: string, v: unknown): Promise<void>;
3
+ }
4
+ export declare function getFixtureRoot(root: string): FixtureRoot;
5
+ export {};
6
+ //# sourceMappingURL=fixtures.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.utils.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/transaction/descriptor/fixtures.utils.ts"],"names":[],"mappings":"AAKA,UAAU,WAAW;IACnB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAID,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAMxD"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getFixtureRoot = getFixtureRoot;
7
+ const assert_1 = __importDefault(require("assert"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const testutil_1 = require("@bitgo-beta/utxo-core/testutil");
10
+ function getFixtureRoot(root) {
11
+ return {
12
+ async assertEqualFixture(name, v, normalize = testutil_1.jsonNormalize) {
13
+ assert_1.default.deepStrictEqual(normalize(v), await (0, testutil_1.getFixture)(path_1.default.join(root, name), normalize(v)));
14
+ },
15
+ };
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9maXh0dXJlcy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVdBLHdDQU1DO0FBakJELG9EQUE0QjtBQUM1QixnREFBd0I7QUFFeEIsNkRBQTJFO0FBUTNFLFNBQWdCLGNBQWMsQ0FBQyxJQUFZO0lBQ3pDLE9BQU87UUFDTCxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBWSxFQUFFLENBQVUsRUFBRSxZQUF1Qix3QkFBYTtZQUNyRixnQkFBTSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxJQUFBLHFCQUFVLEVBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHsgZ2V0Rml4dHVyZSwganNvbk5vcm1hbGl6ZSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tY29yZS90ZXN0dXRpbCc7XG5cbmludGVyZmFjZSBGaXh0dXJlUm9vdCB7XG4gIGFzc2VydEVxdWFsRml4dHVyZShuYW1lOiBzdHJpbmcsIHY6IHVua25vd24pOiBQcm9taXNlPHZvaWQ+O1xufVxuXG50eXBlIE5vcm1hbGl6ZSA9ICh2OiB1bmtub3duKSA9PiB1bmtub3duO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rml4dHVyZVJvb3Qocm9vdDogc3RyaW5nKTogRml4dHVyZVJvb3Qge1xuICByZXR1cm4ge1xuICAgIGFzeW5jIGFzc2VydEVxdWFsRml4dHVyZShuYW1lOiBzdHJpbmcsIHY6IHVua25vd24sIG5vcm1hbGl6ZTogTm9ybWFsaXplID0ganNvbk5vcm1hbGl6ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChub3JtYWxpemUodiksIGF3YWl0IGdldEZpeHR1cmUocGF0aC5qb2luKHJvb3QsIG5hbWUpLCBub3JtYWxpemUodikpKTtcbiAgICB9LFxuICB9O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=outputDifference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputDifference.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/transaction/descriptor/outputDifference.ts"],"names":[],"mappings":""}