@bitgo-beta/abstract-utxo 1.1.1-beta.182 → 1.1.1-beta.1821

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 (814) hide show
  1. package/README.md +76 -0
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts +438 -0
  3. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -0
  4. package/dist/cjs/src/abstractUtxoCoin.js +658 -0
  5. package/dist/cjs/src/address/fixedScript.d.ts +44 -0
  6. package/dist/cjs/src/address/fixedScript.d.ts.map +1 -0
  7. package/dist/cjs/src/address/fixedScript.js +105 -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 +33 -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 +22 -0
  47. package/dist/cjs/src/impl/bch/bch.d.ts.map +1 -0
  48. package/dist/cjs/src/impl/bch/bch.js +75 -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 +12 -0
  53. package/dist/cjs/src/impl/bch/tbch.d.ts.map +1 -0
  54. package/dist/cjs/src/impl/bch/tbch.js +15 -0
  55. package/dist/cjs/src/impl/bcha/bcha.d.ts +9 -0
  56. package/dist/cjs/src/impl/bcha/bcha.d.ts.map +1 -0
  57. package/dist/cjs/src/impl/bcha/bcha.js +15 -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 +12 -0
  62. package/dist/cjs/src/impl/bcha/tbcha.d.ts.map +1 -0
  63. package/dist/cjs/src/impl/bcha/tbcha.js +15 -0
  64. package/dist/cjs/src/impl/bsv/bsv.d.ts +9 -0
  65. package/dist/cjs/src/impl/bsv/bsv.d.ts.map +1 -0
  66. package/dist/cjs/src/impl/bsv/bsv.js +15 -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 +12 -0
  71. package/dist/cjs/src/impl/bsv/tbsv.d.ts.map +1 -0
  72. package/dist/cjs/src/impl/bsv/tbsv.js +15 -0
  73. package/dist/cjs/src/impl/btc/btc.d.ts +15 -0
  74. package/dist/cjs/src/impl/btc/btc.d.ts.map +1 -0
  75. package/dist/cjs/src/impl/btc/btc.js +22 -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 +61 -0
  80. package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts.map +1 -0
  81. package/dist/cjs/src/impl/btc/inscriptionBuilder.js +171 -0
  82. package/dist/cjs/src/impl/btc/tbtc.d.ts +12 -0
  83. package/dist/cjs/src/impl/btc/tbtc.d.ts.map +1 -0
  84. package/dist/cjs/src/impl/btc/tbtc.js +15 -0
  85. package/dist/cjs/src/impl/btc/tbtc4.d.ts +12 -0
  86. package/dist/cjs/src/impl/btc/tbtc4.d.ts.map +1 -0
  87. package/dist/cjs/src/impl/btc/tbtc4.js +15 -0
  88. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts +12 -0
  89. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts.map +1 -0
  90. package/dist/cjs/src/impl/btc/tbtcbgsig.js +15 -0
  91. package/dist/cjs/src/impl/btc/tbtcsig.d.ts +12 -0
  92. package/dist/cjs/src/impl/btc/tbtcsig.d.ts.map +1 -0
  93. package/dist/cjs/src/impl/btc/tbtcsig.js +15 -0
  94. package/dist/cjs/src/impl/btg/btg.d.ts +9 -0
  95. package/dist/cjs/src/impl/btg/btg.d.ts.map +1 -0
  96. package/dist/cjs/src/impl/btg/btg.js +15 -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 +9 -0
  101. package/dist/cjs/src/impl/dash/dash.d.ts.map +1 -0
  102. package/dist/cjs/src/impl/dash/dash.js +15 -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 +12 -0
  107. package/dist/cjs/src/impl/dash/tdash.d.ts.map +1 -0
  108. package/dist/cjs/src/impl/dash/tdash.js +15 -0
  109. package/dist/cjs/src/impl/doge/doge.d.ts +35 -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 +12 -0
  116. package/dist/cjs/src/impl/doge/tdoge.d.ts.map +1 -0
  117. package/dist/cjs/src/impl/doge/tdoge.js +15 -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 +9 -0
  125. package/dist/cjs/src/impl/ltc/ltc.d.ts.map +1 -0
  126. package/dist/cjs/src/impl/ltc/ltc.js +53 -0
  127. package/dist/cjs/src/impl/ltc/tltc.d.ts +9 -0
  128. package/dist/cjs/src/impl/ltc/tltc.d.ts.map +1 -0
  129. package/dist/cjs/src/impl/ltc/tltc.js +52 -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 +9 -0
  134. package/dist/cjs/src/impl/zec/tzec.d.ts.map +1 -0
  135. package/dist/cjs/src/impl/zec/tzec.js +15 -0
  136. package/dist/cjs/src/impl/zec/zec.d.ts +12 -0
  137. package/dist/cjs/src/impl/zec/zec.d.ts.map +1 -0
  138. package/dist/cjs/src/impl/zec/zec.js +15 -0
  139. package/dist/cjs/src/index.d.ts +23 -0
  140. package/dist/cjs/src/index.d.ts.map +1 -0
  141. package/dist/cjs/src/index.js +62 -0
  142. package/dist/cjs/src/keychains.d.ts +57 -0
  143. package/dist/cjs/src/keychains.d.ts.map +1 -0
  144. package/dist/cjs/src/keychains.js +145 -0
  145. package/dist/cjs/src/names.d.ts +36 -0
  146. package/dist/cjs/src/names.d.ts.map +1 -0
  147. package/dist/cjs/src/names.js +231 -0
  148. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts +9 -0
  149. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
  150. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.js +24 -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 +16 -0
  155. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts.map +1 -0
  156. package/dist/cjs/src/offlineVault/TransactionExplanation.js +15 -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 +40 -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 -3
  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 +90 -0
  170. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -0
  171. package/dist/cjs/src/recovery/backupKeyRecovery.js +339 -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 +21 -9
  179. package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -0
  180. package/dist/cjs/src/recovery/crossChainRecovery.js +300 -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 +62 -0
  187. package/dist/cjs/src/recovery/psbt.d.ts.map +1 -0
  188. package/dist/cjs/src/recovery/psbt.js +153 -0
  189. package/dist/cjs/src/tnumber.d.ts +4 -0
  190. package/dist/cjs/src/tnumber.d.ts.map +1 -0
  191. package/dist/cjs/src/tnumber.js +12 -0
  192. package/dist/cjs/src/transaction/bip322.d.ts +27 -0
  193. package/dist/cjs/src/transaction/bip322.d.ts.map +1 -0
  194. package/dist/cjs/src/transaction/bip322.js +140 -0
  195. package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts +2 -0
  196. package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
  197. package/dist/cjs/src/transaction/common/verifyPayGoAmount.js +3 -0
  198. package/dist/cjs/src/transaction/decode.d.ts +12 -0
  199. package/dist/cjs/src/transaction/decode.d.ts.map +1 -0
  200. package/dist/cjs/src/transaction/decode.js +84 -0
  201. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts +5 -0
  202. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  203. package/dist/cjs/src/transaction/descriptor/explainPsbt.js +45 -0
  204. package/dist/cjs/src/transaction/descriptor/index.d.ts +7 -0
  205. package/dist/cjs/src/transaction/descriptor/index.d.ts.map +1 -0
  206. package/dist/cjs/src/transaction/descriptor/index.js +14 -0
  207. package/dist/cjs/src/transaction/descriptor/parse.d.ts +19 -0
  208. package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -0
  209. package/dist/cjs/src/transaction/descriptor/parse.js +90 -0
  210. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts +14 -0
  211. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
  212. package/dist/cjs/src/transaction/descriptor/parseToAmountType.js +60 -0
  213. package/dist/cjs/src/transaction/descriptor/recipient.d.ts +5 -0
  214. package/dist/cjs/src/transaction/descriptor/recipient.d.ts.map +1 -0
  215. package/dist/cjs/src/transaction/descriptor/recipient.js +3 -0
  216. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts +24 -0
  217. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts.map +1 -0
  218. package/dist/cjs/src/transaction/descriptor/signPsbt.js +44 -0
  219. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts +37 -0
  220. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
  221. package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +81 -0
  222. package/dist/cjs/src/transaction/explainTransaction.d.ts +20 -0
  223. package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -0
  224. package/dist/cjs/src/transaction/explainTransaction.js +89 -0
  225. package/dist/cjs/src/transaction/fetchInputs.d.ts +27 -0
  226. package/dist/cjs/src/transaction/fetchInputs.d.ts.map +1 -0
  227. package/dist/cjs/src/transaction/fetchInputs.js +111 -0
  228. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts +26 -0
  229. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts.map +1 -0
  230. package/dist/cjs/src/transaction/fixedScript/SigningError.js +34 -0
  231. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts +11 -0
  232. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  233. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.js +67 -0
  234. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +74 -0
  235. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  236. package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +342 -0
  237. package/dist/cjs/src/transaction/fixedScript/index.d.ts +10 -0
  238. package/dist/cjs/src/transaction/fixedScript/index.d.ts.map +1 -0
  239. package/dist/cjs/src/transaction/fixedScript/index.js +32 -0
  240. package/dist/cjs/src/transaction/fixedScript/musig2.d.ts +4 -0
  241. package/dist/cjs/src/transaction/fixedScript/musig2.d.ts.map +1 -0
  242. package/dist/cjs/src/transaction/fixedScript/musig2.js +3 -0
  243. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts +28 -0
  244. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  245. package/dist/cjs/src/transaction/fixedScript/parseOutput.js +216 -0
  246. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts +8 -0
  247. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  248. package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +240 -0
  249. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts +9 -0
  250. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  251. package/dist/cjs/src/transaction/fixedScript/replayProtection.js +46 -0
  252. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts +32 -0
  253. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -0
  254. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.js +155 -0
  255. package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.d.ts +21 -0
  256. package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.d.ts.map +1 -0
  257. package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.js +157 -0
  258. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts +18 -0
  259. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
  260. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.js +105 -0
  261. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +26 -0
  262. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -0
  263. package/dist/cjs/src/transaction/fixedScript/signTransaction.js +104 -0
  264. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts +21 -0
  265. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  266. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.js +199 -0
  267. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts +9 -0
  268. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
  269. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.js +20 -0
  270. package/dist/cjs/src/transaction/index.d.ts +8 -0
  271. package/dist/cjs/src/transaction/index.d.ts.map +1 -0
  272. package/dist/cjs/src/transaction/index.js +50 -0
  273. package/dist/cjs/src/transaction/outputDifference.d.ts +44 -0
  274. package/dist/cjs/src/transaction/outputDifference.d.ts.map +1 -0
  275. package/dist/cjs/src/transaction/outputDifference.js +51 -0
  276. package/dist/cjs/src/transaction/parseTransaction.d.ts +4 -0
  277. package/dist/cjs/src/transaction/parseTransaction.d.ts.map +1 -0
  278. package/dist/cjs/src/transaction/parseTransaction.js +48 -0
  279. package/dist/cjs/src/transaction/recipient.d.ts +34 -0
  280. package/dist/cjs/src/transaction/recipient.d.ts.map +1 -0
  281. package/dist/cjs/src/transaction/recipient.js +104 -0
  282. package/dist/cjs/src/transaction/signTransaction.d.ts +6 -0
  283. package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -0
  284. package/dist/cjs/src/transaction/signTransaction.js +105 -0
  285. package/dist/cjs/src/transaction/types.d.ts +49 -0
  286. package/dist/cjs/src/transaction/types.d.ts.map +1 -0
  287. package/dist/cjs/src/transaction/types.js +7 -0
  288. package/dist/cjs/src/transaction/verifyTransaction.d.ts +4 -0
  289. package/dist/cjs/src/transaction/verifyTransaction.d.ts.map +1 -0
  290. package/dist/cjs/src/transaction/verifyTransaction.js +50 -0
  291. package/dist/cjs/src/unspent.d.ts +55 -0
  292. package/dist/cjs/src/unspent.d.ts.map +1 -0
  293. package/dist/cjs/src/unspent.js +12 -0
  294. package/dist/cjs/src/verifyKey.d.ts +29 -0
  295. package/dist/cjs/src/verifyKey.d.ts.map +1 -0
  296. package/dist/cjs/src/verifyKey.js +164 -0
  297. package/dist/cjs/src/wallet.d.ts +15 -0
  298. package/dist/cjs/src/wallet.d.ts.map +1 -0
  299. package/dist/cjs/src/wallet.js +8 -0
  300. package/dist/cjs/src/wasmUtil.d.ts +29 -0
  301. package/dist/cjs/src/wasmUtil.d.ts.map +1 -0
  302. package/dist/cjs/src/wasmUtil.js +87 -0
  303. package/dist/cjs/test/integration/impl/bch/bch.d.ts +2 -0
  304. package/dist/cjs/test/integration/impl/bch/bch.d.ts.map +1 -0
  305. package/dist/cjs/test/integration/impl/bch/bch.js +74 -0
  306. package/dist/cjs/test/unit/address.d.ts +2 -0
  307. package/dist/cjs/test/unit/address.d.ts.map +1 -0
  308. package/dist/cjs/test/unit/address.js +182 -0
  309. package/dist/cjs/test/unit/bip322.d.ts +2 -0
  310. package/dist/cjs/test/unit/bip322.d.ts.map +1 -0
  311. package/dist/cjs/test/unit/bip322.js +361 -0
  312. package/dist/cjs/test/unit/coins.d.ts +2 -0
  313. package/dist/cjs/test/unit/coins.d.ts.map +1 -0
  314. package/dist/cjs/test/unit/coins.js +119 -0
  315. package/dist/cjs/test/unit/customChangeWallet.d.ts +2 -0
  316. package/dist/cjs/test/unit/customChangeWallet.d.ts.map +1 -0
  317. package/dist/cjs/test/unit/customChangeWallet.js +154 -0
  318. package/dist/cjs/test/unit/customSigner.d.ts +3 -0
  319. package/dist/cjs/test/unit/customSigner.d.ts.map +1 -0
  320. package/dist/cjs/test/unit/customSigner.js +108 -0
  321. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts +2 -0
  322. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts.map +1 -0
  323. package/dist/cjs/test/unit/descriptor/NamedDescriptor.js +18 -0
  324. package/dist/cjs/test/unit/descriptor/builder.d.ts +2 -0
  325. package/dist/cjs/test/unit/descriptor/builder.d.ts.map +1 -0
  326. package/dist/cjs/test/unit/descriptor/builder.js +72 -0
  327. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts +2 -0
  328. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  329. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.js +20 -0
  330. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts +2 -0
  331. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts.map +1 -0
  332. package/dist/cjs/test/unit/descriptor/descriptorWallet.js +28 -0
  333. package/dist/cjs/test/unit/descriptorAddress.d.ts +3 -0
  334. package/dist/cjs/test/unit/descriptorAddress.d.ts.map +1 -0
  335. package/dist/cjs/test/unit/descriptorAddress.js +103 -0
  336. package/dist/cjs/test/unit/explainTransaction.d.ts +2 -0
  337. package/dist/cjs/test/unit/explainTransaction.d.ts.map +1 -0
  338. package/dist/cjs/test/unit/explainTransaction.js +74 -0
  339. package/dist/cjs/test/unit/fixtures/bip322/fixtures.d.ts +15 -0
  340. package/dist/cjs/test/unit/fixtures/bip322/fixtures.d.ts.map +1 -0
  341. package/dist/cjs/test/unit/fixtures/bip322/fixtures.js +51 -0
  342. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts +4 -0
  343. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts.map +1 -0
  344. package/dist/cjs/test/unit/fixtures/psbtHexProof.js +9 -0
  345. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts +2 -0
  346. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts.map +1 -0
  347. package/dist/cjs/test/unit/impl/bch/unit/bch.js +138 -0
  348. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts +2 -0
  349. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts.map +1 -0
  350. package/dist/cjs/test/unit/impl/bcha/unit/index.js +47 -0
  351. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts +2 -0
  352. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts.map +1 -0
  353. package/dist/cjs/test/unit/impl/bsv/unit/index.js +32 -0
  354. package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts +2 -0
  355. package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts.map +1 -0
  356. package/dist/cjs/test/unit/impl/btc/unit/btc.js +220 -0
  357. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts +4 -0
  358. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts.map +1 -0
  359. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.js +10 -0
  360. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts +2 -0
  361. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts.map +1 -0
  362. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.js +18 -0
  363. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts +2 -0
  364. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts.map +1 -0
  365. package/dist/cjs/test/unit/impl/btg/unit/index.js +29 -0
  366. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts +2 -0
  367. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts.map +1 -0
  368. package/dist/cjs/test/unit/impl/dash/unit/index.js +32 -0
  369. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts +2 -0
  370. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts.map +1 -0
  371. package/dist/cjs/test/unit/impl/doge/unit/index.js +32 -0
  372. package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts +2 -0
  373. package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts.map +1 -0
  374. package/dist/cjs/test/unit/impl/ltc/unit/index.js +39 -0
  375. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts +2 -0
  376. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts.map +1 -0
  377. package/dist/cjs/test/unit/impl/zec/unit/index.js +29 -0
  378. package/dist/cjs/test/unit/keySignatures.d.ts +2 -0
  379. package/dist/cjs/test/unit/keySignatures.d.ts.map +1 -0
  380. package/dist/cjs/test/unit/keySignatures.js +54 -0
  381. package/dist/cjs/test/unit/keychains.d.ts +2 -0
  382. package/dist/cjs/test/unit/keychains.d.ts.map +1 -0
  383. package/dist/cjs/test/unit/keychains.js +49 -0
  384. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts +2 -0
  385. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts.map +1 -0
  386. package/dist/cjs/test/unit/offlineVault/halfSigned.js +124 -0
  387. package/dist/cjs/test/unit/parseTransaction.d.ts +2 -0
  388. package/dist/cjs/test/unit/parseTransaction.d.ts.map +1 -0
  389. package/dist/cjs/test/unit/parseTransaction.js +125 -0
  390. package/dist/cjs/test/unit/prebuildAndSign.d.ts +2 -0
  391. package/dist/cjs/test/unit/prebuildAndSign.d.ts.map +1 -0
  392. package/dist/cjs/test/unit/prebuildAndSign.js +251 -0
  393. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts +2 -0
  394. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts.map +1 -0
  395. package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +313 -0
  396. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts +2 -0
  397. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts.map +1 -0
  398. package/dist/cjs/test/unit/recovery/crossChainRecovery.js +304 -0
  399. package/dist/cjs/test/unit/recovery/mock.d.ts +28 -0
  400. package/dist/cjs/test/unit/recovery/mock.d.ts.map +1 -0
  401. package/dist/cjs/test/unit/recovery/mock.js +139 -0
  402. package/dist/cjs/test/unit/signTransaction.d.ts +2 -0
  403. package/dist/cjs/test/unit/signTransaction.d.ts.map +1 -0
  404. package/dist/cjs/test/unit/signTransaction.js +244 -0
  405. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts +2 -0
  406. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  407. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.js +32 -0
  408. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts +6 -0
  409. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts.map +1 -0
  410. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.js +17 -0
  411. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts +2 -0
  412. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts.map +1 -0
  413. package/dist/cjs/test/unit/transaction/descriptor/parse.js +101 -0
  414. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts +2 -0
  415. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts.map +1 -0
  416. package/dist/cjs/test/unit/transaction/descriptor/sign.js +44 -0
  417. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts +2 -0
  418. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts.map +1 -0
  419. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.js +48 -0
  420. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts +2 -0
  421. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts.map +1 -0
  422. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.js +129 -0
  423. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.d.ts +2 -0
  424. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.d.ts.map +1 -0
  425. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.js +287 -0
  426. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts +2 -0
  427. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  428. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.js +60 -0
  429. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.d.ts +2 -0
  430. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.d.ts.map +1 -0
  431. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.js +154 -0
  432. package/dist/cjs/test/unit/transaction/outputDifference.d.ts +2 -0
  433. package/dist/cjs/test/unit/transaction/outputDifference.d.ts.map +1 -0
  434. package/dist/cjs/test/unit/transaction/outputDifference.js +117 -0
  435. package/dist/cjs/test/unit/transaction.d.ts +2 -0
  436. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  437. package/dist/cjs/test/unit/transaction.js +309 -0
  438. package/dist/cjs/test/unit/txFormat.d.ts +30 -0
  439. package/dist/cjs/test/unit/txFormat.d.ts.map +1 -0
  440. package/dist/cjs/test/unit/txFormat.js +174 -0
  441. package/dist/cjs/test/unit/util/fixtures.d.ts +14 -0
  442. package/dist/cjs/test/unit/util/fixtures.d.ts.map +1 -0
  443. package/dist/cjs/test/unit/util/fixtures.js +102 -0
  444. package/dist/cjs/test/unit/util/index.d.ts +7 -0
  445. package/dist/cjs/test/unit/util/index.d.ts.map +1 -0
  446. package/dist/cjs/test/unit/util/index.js +23 -0
  447. package/dist/cjs/test/unit/util/keychains.d.ts +26 -0
  448. package/dist/cjs/test/unit/util/keychains.d.ts.map +1 -0
  449. package/dist/cjs/test/unit/util/keychains.js +72 -0
  450. package/dist/cjs/test/unit/util/nockBitGo.d.ts +3 -0
  451. package/dist/cjs/test/unit/util/nockBitGo.d.ts.map +1 -0
  452. package/dist/cjs/test/unit/util/nockBitGo.js +11 -0
  453. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts +8 -0
  454. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts.map +1 -0
  455. package/dist/cjs/test/unit/util/nockIndexerAPI.js +23 -0
  456. package/dist/cjs/test/unit/util/transaction.d.ts +27 -0
  457. package/dist/cjs/test/unit/util/transaction.d.ts.map +1 -0
  458. package/dist/cjs/test/unit/util/transaction.js +127 -0
  459. package/dist/cjs/test/unit/util/unspents.d.ts +12 -0
  460. package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -0
  461. package/dist/cjs/test/unit/util/unspents.js +108 -0
  462. package/dist/cjs/test/unit/util/utxoCoins.d.ts +21 -0
  463. package/dist/cjs/test/unit/util/utxoCoins.d.ts.map +1 -0
  464. package/dist/cjs/test/unit/util/utxoCoins.js +126 -0
  465. package/dist/cjs/test/unit/util/wallet.d.ts +4 -0
  466. package/dist/cjs/test/unit/util/wallet.d.ts.map +1 -0
  467. package/dist/cjs/test/unit/util/wallet.js +9 -0
  468. package/dist/cjs/test/unit/verifyTransaction.d.ts +2 -0
  469. package/dist/cjs/test/unit/verifyTransaction.d.ts.map +1 -0
  470. package/dist/cjs/test/unit/verifyTransaction.js +327 -0
  471. package/dist/cjs/test/unit/wallet.d.ts +2 -0
  472. package/dist/cjs/test/unit/wallet.d.ts.map +1 -0
  473. package/dist/cjs/test/unit/wallet.js +248 -0
  474. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  475. package/dist/esm/abstractUtxoCoin.d.ts +438 -0
  476. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -0
  477. package/dist/esm/abstractUtxoCoin.js +617 -0
  478. package/dist/esm/address/fixedScript.d.ts +44 -0
  479. package/dist/esm/address/fixedScript.d.ts.map +1 -0
  480. package/dist/esm/address/fixedScript.js +97 -0
  481. package/dist/esm/address/index.d.ts +2 -0
  482. package/dist/esm/address/index.d.ts.map +1 -0
  483. package/dist/esm/address/index.js +2 -0
  484. package/dist/esm/config.d.ts +9 -0
  485. package/dist/esm/config.js +11 -0
  486. package/dist/esm/descriptor/NamedDescriptor.d.ts +20 -0
  487. package/dist/esm/descriptor/NamedDescriptor.d.ts.map +1 -0
  488. package/dist/esm/descriptor/NamedDescriptor.js +39 -0
  489. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
  490. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
  491. package/dist/esm/descriptor/assertDescriptorWalletAddress.js +27 -0
  492. package/dist/esm/descriptor/builder/builder.d.ts +13 -0
  493. package/dist/esm/descriptor/builder/builder.d.ts.map +1 -0
  494. package/dist/esm/descriptor/builder/builder.js +34 -0
  495. package/dist/esm/descriptor/builder/index.d.ts +3 -0
  496. package/dist/esm/descriptor/builder/index.d.ts.map +1 -0
  497. package/dist/esm/descriptor/builder/index.js +3 -0
  498. package/dist/esm/descriptor/builder/parse.d.ts +5 -0
  499. package/dist/esm/descriptor/builder/parse.d.ts.map +1 -0
  500. package/dist/esm/descriptor/builder/parse.js +112 -0
  501. package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
  502. package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
  503. package/dist/esm/descriptor/createWallet/createDescriptorWallet.js +37 -0
  504. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts +12 -0
  505. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  506. package/dist/esm/descriptor/createWallet/createDescriptors.js +29 -0
  507. package/dist/esm/descriptor/createWallet/index.d.ts +3 -0
  508. package/dist/esm/descriptor/createWallet/index.d.ts.map +1 -0
  509. package/dist/esm/descriptor/createWallet/index.js +3 -0
  510. package/dist/esm/descriptor/descriptorWallet.d.ts +19 -0
  511. package/dist/esm/descriptor/descriptorWallet.d.ts.map +1 -0
  512. package/dist/esm/descriptor/descriptorWallet.js +16 -0
  513. package/dist/esm/descriptor/index.d.ts +8 -0
  514. package/dist/esm/descriptor/index.d.ts.map +1 -0
  515. package/dist/esm/descriptor/index.js +7 -0
  516. package/dist/esm/descriptor/validatePolicy.d.ts +22 -0
  517. package/dist/esm/descriptor/validatePolicy.d.ts.map +1 -0
  518. package/dist/esm/descriptor/validatePolicy.js +80 -0
  519. package/dist/esm/impl/bch/bch.d.ts +22 -0
  520. package/dist/esm/impl/bch/bch.d.ts.map +1 -0
  521. package/dist/esm/impl/bch/bch.js +38 -0
  522. package/dist/esm/impl/bch/index.d.ts +3 -0
  523. package/dist/esm/impl/bch/index.d.ts.map +1 -0
  524. package/dist/esm/impl/bch/index.js +3 -0
  525. package/dist/esm/impl/bch/tbch.d.ts +12 -0
  526. package/dist/esm/impl/bch/tbch.d.ts.map +1 -0
  527. package/dist/esm/impl/bch/tbch.js +11 -0
  528. package/dist/esm/impl/bcha/bcha.d.ts +9 -0
  529. package/dist/esm/impl/bcha/bcha.d.ts.map +1 -0
  530. package/dist/esm/impl/bcha/bcha.js +11 -0
  531. package/dist/esm/impl/bcha/index.d.ts +3 -0
  532. package/dist/esm/impl/bcha/index.d.ts.map +1 -0
  533. package/dist/esm/impl/bcha/index.js +3 -0
  534. package/dist/esm/impl/bcha/tbcha.d.ts +12 -0
  535. package/dist/esm/impl/bcha/tbcha.d.ts.map +1 -0
  536. package/dist/esm/impl/bcha/tbcha.js +11 -0
  537. package/dist/esm/impl/bsv/bsv.d.ts +9 -0
  538. package/dist/esm/impl/bsv/bsv.d.ts.map +1 -0
  539. package/dist/esm/impl/bsv/bsv.js +11 -0
  540. package/dist/esm/impl/bsv/index.d.ts +3 -0
  541. package/dist/esm/impl/bsv/index.d.ts.map +1 -0
  542. package/dist/esm/impl/bsv/index.js +3 -0
  543. package/dist/esm/impl/bsv/tbsv.d.ts +12 -0
  544. package/dist/esm/impl/bsv/tbsv.d.ts.map +1 -0
  545. package/dist/esm/impl/bsv/tbsv.js +11 -0
  546. package/dist/esm/impl/btc/btc.d.ts +15 -0
  547. package/dist/esm/impl/btc/btc.d.ts.map +1 -0
  548. package/dist/esm/impl/btc/btc.js +18 -0
  549. package/dist/esm/impl/btc/index.d.ts +7 -0
  550. package/dist/esm/impl/btc/index.d.ts.map +1 -0
  551. package/dist/esm/impl/btc/index.js +7 -0
  552. package/dist/esm/impl/btc/inscriptionBuilder.d.ts +61 -0
  553. package/dist/esm/impl/btc/inscriptionBuilder.d.ts.map +1 -0
  554. package/dist/esm/impl/btc/inscriptionBuilder.js +164 -0
  555. package/dist/esm/impl/btc/tbtc.d.ts +12 -0
  556. package/dist/esm/impl/btc/tbtc.d.ts.map +1 -0
  557. package/dist/esm/impl/btc/tbtc.js +11 -0
  558. package/dist/esm/impl/btc/tbtc4.d.ts +12 -0
  559. package/dist/esm/impl/btc/tbtc4.d.ts.map +1 -0
  560. package/dist/esm/impl/btc/tbtc4.js +11 -0
  561. package/dist/esm/impl/btc/tbtcbgsig.d.ts +12 -0
  562. package/dist/esm/impl/btc/tbtcbgsig.d.ts.map +1 -0
  563. package/dist/esm/impl/btc/tbtcbgsig.js +11 -0
  564. package/dist/esm/impl/btc/tbtcsig.d.ts +12 -0
  565. package/dist/esm/impl/btc/tbtcsig.d.ts.map +1 -0
  566. package/dist/esm/impl/btc/tbtcsig.js +11 -0
  567. package/dist/esm/impl/btg/btg.d.ts +9 -0
  568. package/dist/esm/impl/btg/btg.d.ts.map +1 -0
  569. package/dist/esm/impl/btg/btg.js +11 -0
  570. package/dist/esm/impl/btg/index.d.ts +2 -0
  571. package/dist/esm/impl/btg/index.d.ts.map +1 -0
  572. package/dist/esm/impl/btg/index.js +2 -0
  573. package/dist/esm/impl/dash/dash.d.ts +9 -0
  574. package/dist/esm/impl/dash/dash.d.ts.map +1 -0
  575. package/dist/esm/impl/dash/dash.js +11 -0
  576. package/dist/esm/impl/dash/index.d.ts +3 -0
  577. package/dist/esm/impl/dash/index.d.ts.map +1 -0
  578. package/dist/esm/impl/dash/index.js +3 -0
  579. package/dist/esm/impl/dash/tdash.d.ts +12 -0
  580. package/dist/esm/impl/dash/tdash.d.ts.map +1 -0
  581. package/dist/esm/impl/dash/tdash.js +11 -0
  582. package/dist/esm/impl/doge/doge.d.ts +35 -0
  583. package/dist/esm/impl/doge/doge.d.ts.map +1 -0
  584. package/dist/esm/impl/doge/doge.js +75 -0
  585. package/dist/esm/impl/doge/index.d.ts +3 -0
  586. package/dist/esm/impl/doge/index.d.ts.map +1 -0
  587. package/dist/esm/impl/doge/index.js +3 -0
  588. package/dist/esm/impl/doge/tdoge.d.ts +12 -0
  589. package/dist/esm/impl/doge/tdoge.d.ts.map +1 -0
  590. package/dist/esm/impl/doge/tdoge.js +11 -0
  591. package/dist/esm/impl/index.d.ts +10 -0
  592. package/dist/esm/impl/index.d.ts.map +1 -0
  593. package/dist/esm/impl/index.js +10 -0
  594. package/dist/esm/impl/ltc/index.d.ts +3 -0
  595. package/dist/esm/impl/ltc/index.d.ts.map +1 -0
  596. package/dist/esm/impl/ltc/index.js +3 -0
  597. package/dist/esm/impl/ltc/ltc.d.ts +9 -0
  598. package/dist/esm/impl/ltc/ltc.d.ts.map +1 -0
  599. package/dist/esm/impl/ltc/ltc.js +16 -0
  600. package/dist/esm/impl/ltc/tltc.d.ts +9 -0
  601. package/dist/esm/impl/ltc/tltc.d.ts.map +1 -0
  602. package/dist/esm/impl/ltc/tltc.js +15 -0
  603. package/dist/esm/impl/zec/index.d.ts +3 -0
  604. package/dist/esm/impl/zec/index.d.ts.map +1 -0
  605. package/dist/esm/impl/zec/index.js +3 -0
  606. package/dist/esm/impl/zec/tzec.d.ts +9 -0
  607. package/dist/esm/impl/zec/tzec.d.ts.map +1 -0
  608. package/dist/esm/impl/zec/tzec.js +11 -0
  609. package/dist/esm/impl/zec/zec.d.ts +12 -0
  610. package/dist/esm/impl/zec/zec.d.ts.map +1 -0
  611. package/dist/esm/impl/zec/zec.js +11 -0
  612. package/dist/esm/index.d.ts +23 -0
  613. package/dist/esm/index.d.ts.map +1 -0
  614. package/dist/esm/index.js +23 -0
  615. package/dist/esm/keychains.d.ts +57 -0
  616. package/dist/esm/keychains.d.ts.map +1 -0
  617. package/dist/esm/keychains.js +100 -0
  618. package/dist/esm/names.d.ts +36 -0
  619. package/dist/esm/names.d.ts.map +1 -0
  620. package/dist/esm/names.js +184 -0
  621. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts +9 -0
  622. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
  623. package/dist/esm/offlineVault/OfflineVaultHalfSigned.js +21 -0
  624. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts +46 -0
  625. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
  626. package/dist/esm/offlineVault/OfflineVaultSignable.js +18 -0
  627. package/dist/esm/offlineVault/TransactionExplanation.d.ts +16 -0
  628. package/dist/esm/offlineVault/TransactionExplanation.d.ts.map +1 -0
  629. package/dist/esm/offlineVault/TransactionExplanation.js +12 -0
  630. package/dist/esm/offlineVault/descriptor/index.d.ts +2 -0
  631. package/dist/esm/offlineVault/descriptor/index.d.ts.map +1 -0
  632. package/dist/esm/offlineVault/descriptor/index.js +2 -0
  633. package/dist/esm/offlineVault/descriptor/transaction.d.ts +40 -0
  634. package/dist/esm/offlineVault/descriptor/transaction.d.ts.map +1 -0
  635. package/dist/esm/offlineVault/descriptor/transaction.js +41 -0
  636. package/dist/esm/offlineVault/index.d.ts +6 -0
  637. package/dist/esm/offlineVault/index.d.ts.map +1 -0
  638. package/dist/esm/offlineVault/index.js +4 -0
  639. package/dist/esm/recovery/RecoveryProvider.d.ts +20 -0
  640. package/dist/esm/recovery/RecoveryProvider.d.ts.map +1 -0
  641. package/dist/esm/recovery/RecoveryProvider.js +19 -0
  642. package/dist/esm/recovery/backupKeyRecovery.d.ts +90 -0
  643. package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -0
  644. package/dist/esm/recovery/backupKeyRecovery.js +330 -0
  645. package/dist/esm/recovery/baseApi.d.ts +24 -0
  646. package/dist/esm/recovery/baseApi.d.ts.map +1 -0
  647. package/dist/esm/recovery/baseApi.js +64 -0
  648. package/dist/esm/recovery/coingeckoApi.d.ts +6 -0
  649. package/dist/esm/recovery/coingeckoApi.d.ts.map +1 -0
  650. package/dist/esm/recovery/coingeckoApi.js +40 -0
  651. package/dist/esm/recovery/crossChainRecovery.d.ts +97 -0
  652. package/dist/esm/recovery/crossChainRecovery.d.ts.map +1 -0
  653. package/dist/esm/recovery/crossChainRecovery.js +293 -0
  654. package/dist/esm/recovery/index.d.ts +7 -0
  655. package/dist/{src → esm}/recovery/index.d.ts.map +1 -1
  656. package/dist/esm/recovery/index.js +7 -0
  657. package/dist/esm/recovery/mempoolApi.d.ts +7 -0
  658. package/dist/{src → esm}/recovery/mempoolApi.d.ts.map +1 -1
  659. package/dist/esm/recovery/mempoolApi.js +29 -0
  660. package/dist/esm/recovery/psbt.d.ts +62 -0
  661. package/dist/esm/recovery/psbt.d.ts.map +1 -0
  662. package/dist/esm/recovery/psbt.js +145 -0
  663. package/dist/esm/tnumber.d.ts +4 -0
  664. package/dist/esm/tnumber.d.ts.map +1 -0
  665. package/dist/esm/tnumber.js +9 -0
  666. package/dist/esm/transaction/bip322.d.ts +27 -0
  667. package/dist/esm/transaction/bip322.d.ts.map +1 -0
  668. package/dist/esm/transaction/bip322.js +101 -0
  669. package/dist/esm/transaction/common/verifyPayGoAmount.d.ts +1 -0
  670. package/dist/esm/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
  671. package/dist/esm/transaction/common/verifyPayGoAmount.js +1 -0
  672. package/dist/esm/transaction/decode.d.ts +12 -0
  673. package/dist/esm/transaction/decode.d.ts.map +1 -0
  674. package/dist/esm/transaction/decode.js +46 -0
  675. package/dist/esm/transaction/descriptor/explainPsbt.d.ts +5 -0
  676. package/dist/esm/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  677. package/dist/esm/transaction/descriptor/explainPsbt.js +42 -0
  678. package/dist/esm/transaction/descriptor/index.d.ts +7 -0
  679. package/dist/esm/transaction/descriptor/index.d.ts.map +1 -0
  680. package/dist/esm/transaction/descriptor/index.js +6 -0
  681. package/dist/esm/transaction/descriptor/parse.d.ts +19 -0
  682. package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -0
  683. package/dist/esm/transaction/descriptor/parse.js +86 -0
  684. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts +14 -0
  685. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
  686. package/dist/esm/transaction/descriptor/parseToAmountType.js +55 -0
  687. package/dist/esm/transaction/descriptor/recipient.d.ts +5 -0
  688. package/dist/esm/transaction/descriptor/recipient.d.ts.map +1 -0
  689. package/dist/esm/transaction/descriptor/recipient.js +2 -0
  690. package/dist/esm/transaction/descriptor/signPsbt.d.ts +24 -0
  691. package/dist/esm/transaction/descriptor/signPsbt.d.ts.map +1 -0
  692. package/dist/esm/transaction/descriptor/signPsbt.js +39 -0
  693. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +37 -0
  694. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
  695. package/dist/esm/transaction/descriptor/verifyTransaction.js +71 -0
  696. package/dist/esm/transaction/explainTransaction.d.ts +20 -0
  697. package/dist/esm/transaction/explainTransaction.d.ts.map +1 -0
  698. package/dist/esm/transaction/explainTransaction.js +53 -0
  699. package/dist/esm/transaction/fetchInputs.d.ts +27 -0
  700. package/dist/esm/transaction/fetchInputs.d.ts.map +1 -0
  701. package/dist/esm/transaction/fetchInputs.js +74 -0
  702. package/dist/esm/transaction/fixedScript/SigningError.d.ts +26 -0
  703. package/dist/esm/transaction/fixedScript/SigningError.d.ts.map +1 -0
  704. package/dist/esm/transaction/fixedScript/SigningError.js +28 -0
  705. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts +11 -0
  706. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  707. package/dist/esm/transaction/fixedScript/explainPsbtWasm.js +64 -0
  708. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +74 -0
  709. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  710. package/dist/esm/transaction/fixedScript/explainTransaction.js +305 -0
  711. package/dist/esm/transaction/fixedScript/index.d.ts +10 -0
  712. package/dist/esm/transaction/fixedScript/index.d.ts.map +1 -0
  713. package/dist/esm/transaction/fixedScript/index.js +9 -0
  714. package/dist/esm/transaction/fixedScript/musig2.d.ts +4 -0
  715. package/dist/esm/transaction/fixedScript/musig2.d.ts.map +1 -0
  716. package/dist/esm/transaction/fixedScript/musig2.js +2 -0
  717. package/dist/esm/transaction/fixedScript/parseOutput.d.ts +28 -0
  718. package/dist/esm/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  719. package/dist/esm/transaction/fixedScript/parseOutput.js +209 -0
  720. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts +8 -0
  721. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  722. package/dist/esm/transaction/fixedScript/parseTransaction.js +201 -0
  723. package/dist/esm/transaction/fixedScript/replayProtection.d.ts +9 -0
  724. package/dist/esm/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  725. package/dist/esm/transaction/fixedScript/replayProtection.js +40 -0
  726. package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts +32 -0
  727. package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -0
  728. package/dist/esm/transaction/fixedScript/signLegacyTransaction.js +115 -0
  729. package/dist/esm/transaction/fixedScript/signPsbtUtxolib.d.ts +21 -0
  730. package/dist/esm/transaction/fixedScript/signPsbtUtxolib.d.ts.map +1 -0
  731. package/dist/esm/transaction/fixedScript/signPsbtUtxolib.js +117 -0
  732. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts +18 -0
  733. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
  734. package/dist/esm/transaction/fixedScript/signPsbtWasm.js +98 -0
  735. package/dist/esm/transaction/fixedScript/signTransaction.d.ts +26 -0
  736. package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -0
  737. package/dist/esm/transaction/fixedScript/signTransaction.js +64 -0
  738. package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts +21 -0
  739. package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  740. package/dist/esm/transaction/fixedScript/verifyTransaction.js +160 -0
  741. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts +9 -0
  742. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
  743. package/dist/esm/transaction/getPayGoVerificationPubkey.js +17 -0
  744. package/dist/esm/transaction/index.d.ts +8 -0
  745. package/dist/esm/transaction/index.d.ts.map +1 -0
  746. package/dist/esm/transaction/index.js +8 -0
  747. package/dist/esm/transaction/outputDifference.d.ts +44 -0
  748. package/dist/esm/transaction/outputDifference.d.ts.map +1 -0
  749. package/dist/esm/transaction/outputDifference.js +45 -0
  750. package/dist/esm/transaction/parseTransaction.d.ts +4 -0
  751. package/dist/esm/transaction/parseTransaction.d.ts.map +1 -0
  752. package/dist/esm/transaction/parseTransaction.js +12 -0
  753. package/dist/esm/transaction/recipient.d.ts +34 -0
  754. package/dist/esm/transaction/recipient.d.ts.map +1 -0
  755. package/dist/esm/transaction/recipient.js +63 -0
  756. package/dist/esm/transaction/signTransaction.d.ts +6 -0
  757. package/dist/esm/transaction/signTransaction.d.ts.map +1 -0
  758. package/dist/esm/transaction/signTransaction.js +66 -0
  759. package/dist/esm/transaction/types.d.ts +49 -0
  760. package/dist/esm/transaction/types.d.ts.map +1 -0
  761. package/dist/esm/transaction/types.js +4 -0
  762. package/dist/esm/transaction/verifyTransaction.d.ts +4 -0
  763. package/dist/esm/transaction/verifyTransaction.d.ts.map +1 -0
  764. package/dist/esm/transaction/verifyTransaction.js +14 -0
  765. package/dist/esm/unspent.d.ts +55 -0
  766. package/dist/esm/unspent.d.ts.map +1 -0
  767. package/dist/esm/unspent.js +8 -0
  768. package/dist/esm/verifyKey.d.ts +29 -0
  769. package/dist/esm/verifyKey.d.ts.map +1 -0
  770. package/dist/esm/verifyKey.js +123 -0
  771. package/dist/esm/wallet.d.ts +15 -0
  772. package/dist/esm/wallet.d.ts.map +1 -0
  773. package/dist/esm/wallet.js +5 -0
  774. package/dist/esm/wasmUtil.d.ts +29 -0
  775. package/dist/esm/wasmUtil.d.ts.map +1 -0
  776. package/dist/esm/wasmUtil.js +47 -0
  777. package/package.json +47 -18
  778. package/.eslintignore +0 -5
  779. package/CHANGELOG.md +0 -235
  780. package/dist/src/abstractUtxoCoin.d.ts +0 -392
  781. package/dist/src/abstractUtxoCoin.d.ts.map +0 -1
  782. package/dist/src/abstractUtxoCoin.js +0 -931
  783. package/dist/src/config.js +0 -14
  784. package/dist/src/index.d.ts +0 -6
  785. package/dist/src/index.d.ts.map +0 -1
  786. package/dist/src/index.js +0 -18
  787. package/dist/src/parseOutput.d.ts +0 -22
  788. package/dist/src/parseOutput.d.ts.map +0 -1
  789. package/dist/src/parseOutput.js +0 -170
  790. package/dist/src/recovery/RecoveryProvider.d.ts.map +0 -1
  791. package/dist/src/recovery/RecoveryProvider.js +0 -24
  792. package/dist/src/recovery/backupKeyRecovery.d.ts +0 -62
  793. package/dist/src/recovery/backupKeyRecovery.d.ts.map +0 -1
  794. package/dist/src/recovery/backupKeyRecovery.js +0 -293
  795. package/dist/src/recovery/baseApi.d.ts.map +0 -1
  796. package/dist/src/recovery/baseApi.js +0 -73
  797. package/dist/src/recovery/coingeckoApi.d.ts.map +0 -1
  798. package/dist/src/recovery/coingeckoApi.js +0 -47
  799. package/dist/src/recovery/crossChainRecovery.d.ts.map +0 -1
  800. package/dist/src/recovery/crossChainRecovery.js +0 -294
  801. package/dist/src/recovery/mempoolApi.js +0 -33
  802. package/dist/src/recovery/smartbitApi.d.ts +0 -11
  803. package/dist/src/recovery/smartbitApi.d.ts.map +0 -1
  804. package/dist/src/recovery/smartbitApi.js +0 -36
  805. package/dist/src/replayProtection.d.ts +0 -4
  806. package/dist/src/replayProtection.d.ts.map +0 -1
  807. package/dist/src/replayProtection.js +0 -21
  808. package/dist/src/sign.d.ts +0 -31
  809. package/dist/src/sign.d.ts.map +0 -1
  810. package/dist/src/sign.js +0 -104
  811. package/dist/tsconfig.tsbuildinfo +0 -8015
  812. /package/dist/{src → cjs/src}/config.d.ts +0 -0
  813. /package/dist/{src → cjs/src}/recovery/mempoolApi.d.ts +0 -0
  814. /package/dist/{src → esm}/config.d.ts.map +0 -0
@@ -0,0 +1,44 @@
1
+ import { CreateAddressFormat, Triple } from '@bitgo-beta/sdk-core';
2
+ import { fixedScriptWallet } from '@bitgo/wasm-utxo';
3
+ import { UtxoCoinName } from '../names';
4
+ type ChainCode = fixedScriptWallet.ChainCode;
5
+ export interface FixedScriptAddressCoinSpecific {
6
+ outputScript?: string;
7
+ }
8
+ export interface GenerateAddressOptions {
9
+ chain?: number;
10
+ index?: number;
11
+ segwit?: boolean;
12
+ bech32?: boolean;
13
+ }
14
+ interface GenerateFixedScriptAddressOptions extends GenerateAddressOptions {
15
+ format?: CreateAddressFormat;
16
+ keychains: {
17
+ pub: string;
18
+ }[];
19
+ }
20
+ export declare function generateAddressWithChainAndIndex(coinName: UtxoCoinName, keychains: fixedScriptWallet.WalletKeysArg | Triple<string>, chain: ChainCode, index: number, format: CreateAddressFormat | undefined): string;
21
+ /**
22
+ * Generate an address for a wallet based on a set of configurations
23
+ * @param params.keychains {[object]} Array of objects with xpubs
24
+ * @param params.threshold {number} Minimum number of signatures
25
+ * @param params.chain {number} Derivation chain (see https://github.com/BitGo/unspents/blob/master/src/codes.ts for
26
+ * the corresponding address type of a given chain code)
27
+ * @param params.index {number} Derivation index
28
+ * @param params.segwit {boolean} Deprecated
29
+ * @param params.bech32 {boolean} Deprecated
30
+ * @returns {string} The generated address
31
+ */
32
+ export declare function generateAddress(coinName: UtxoCoinName, params: GenerateFixedScriptAddressOptions): string;
33
+ type Keychain = {
34
+ pub: string;
35
+ };
36
+ export declare function assertFixedScriptWalletAddress(coinName: UtxoCoinName, { chain, index, keychains, format, address, }: {
37
+ chain: number | undefined;
38
+ index: number;
39
+ keychains: Keychain[];
40
+ format: CreateAddressFormat;
41
+ address: string;
42
+ }): void;
43
+ export {};
44
+ //# sourceMappingURL=fixedScript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixedScript.d.ts","sourceRoot":"","sources":["../../../../src/address/fixedScript.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,mBAAmB,EASnB,MAAM,EACP,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,KAAK,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC;AAE7C,MAAM,WAAW,8BAA8B;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,iCAAkC,SAAQ,sBAAsB;IACxE,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,SAAS,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC9B;AAaD,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,iBAAiB,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAC3D,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,mBAAmB,GAAG,SAAS,GACtC,MAAM,CAKR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,iCAAiC,GAAG,MAAM,CA6DzG;AAED,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,YAAY,EACtB,EACE,KAAK,EACL,KAAK,EACL,SAAS,EACT,MAAM,EACN,OAAO,GACR,EAAE;IACD,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB,GACA,IAAI,CAqBN"}
@@ -0,0 +1,105 @@
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.generateAddressWithChainAndIndex = generateAddressWithChainAndIndex;
7
+ exports.generateAddress = generateAddress;
8
+ exports.assertFixedScriptWalletAddress = assertFixedScriptWalletAddress;
9
+ const lodash_1 = __importDefault(require("lodash"));
10
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
11
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
12
+ function supportsAddressType(coinName, addressType) {
13
+ return wasm_utxo_1.fixedScriptWallet.supportsScriptType(coinName, addressType);
14
+ }
15
+ /**
16
+ * Normalize script type aliases. "p2tr" is an alias for "p2trLegacy".
17
+ */
18
+ function normalizeScriptType(scriptType) {
19
+ return scriptType === 'p2tr' ? 'p2trLegacy' : scriptType;
20
+ }
21
+ function generateAddressWithChainAndIndex(coinName, keychains, chain, index, format) {
22
+ // Convert CreateAddressFormat to AddressFormat for wasm-utxo
23
+ // 'base58' -> 'default', 'cashaddr' -> 'cashaddr'
24
+ const wasmFormat = format === 'base58' ? 'default' : format;
25
+ return wasm_utxo_1.fixedScriptWallet.address(keychains, chain, index, coinName, wasmFormat);
26
+ }
27
+ /**
28
+ * Generate an address for a wallet based on a set of configurations
29
+ * @param params.keychains {[object]} Array of objects with xpubs
30
+ * @param params.threshold {number} Minimum number of signatures
31
+ * @param params.chain {number} Derivation chain (see https://github.com/BitGo/unspents/blob/master/src/codes.ts for
32
+ * the corresponding address type of a given chain code)
33
+ * @param params.index {number} Derivation index
34
+ * @param params.segwit {boolean} Deprecated
35
+ * @param params.bech32 {boolean} Deprecated
36
+ * @returns {string} The generated address
37
+ */
38
+ function generateAddress(coinName, params) {
39
+ let derivationIndex = 0;
40
+ if (lodash_1.default.isInteger(params.index) && params.index > 0) {
41
+ derivationIndex = params.index;
42
+ }
43
+ const { keychains, chain, segwit = false, bech32 = false } = params;
44
+ let derivationChain = wasm_utxo_1.fixedScriptWallet.ChainCode.value('p2sh', 'external');
45
+ if (lodash_1.default.isNumber(chain) && lodash_1.default.isInteger(chain) && wasm_utxo_1.fixedScriptWallet.ChainCode.is(chain)) {
46
+ derivationChain = chain;
47
+ }
48
+ function convertFlagsToAddressType() {
49
+ if (wasm_utxo_1.fixedScriptWallet.ChainCode.is(chain)) {
50
+ return wasm_utxo_1.fixedScriptWallet.ChainCode.scriptType(chain);
51
+ }
52
+ if (lodash_1.default.isBoolean(segwit) && segwit) {
53
+ return 'p2shP2wsh';
54
+ }
55
+ else if (lodash_1.default.isBoolean(bech32) && bech32) {
56
+ return 'p2wsh';
57
+ }
58
+ else {
59
+ return 'p2sh';
60
+ }
61
+ }
62
+ const addressType = normalizeScriptType(convertFlagsToAddressType());
63
+ if (addressType !== wasm_utxo_1.fixedScriptWallet.ChainCode.scriptType(derivationChain)) {
64
+ throw new sdk_core_1.AddressTypeChainMismatchError(addressType, derivationChain);
65
+ }
66
+ if (!supportsAddressType(coinName, addressType)) {
67
+ switch (addressType) {
68
+ case 'p2sh':
69
+ throw new Error(`internal error: p2sh should always be supported`);
70
+ case 'p2shP2wsh':
71
+ throw new sdk_core_1.P2shP2wshUnsupportedError();
72
+ case 'p2wsh':
73
+ throw new sdk_core_1.P2wshUnsupportedError();
74
+ case 'p2tr':
75
+ case 'p2trLegacy':
76
+ throw new sdk_core_1.P2trUnsupportedError();
77
+ case 'p2trMusig2':
78
+ throw new sdk_core_1.P2trMusig2UnsupportedError();
79
+ default:
80
+ throw new sdk_core_1.UnsupportedAddressTypeError();
81
+ }
82
+ }
83
+ if (!(0, sdk_core_1.isTriple)(keychains)) {
84
+ throw new Error('keychains must be a triple');
85
+ }
86
+ return generateAddressWithChainAndIndex(coinName, keychains.map((k) => k.pub), derivationChain, derivationIndex, params.format);
87
+ }
88
+ function assertFixedScriptWalletAddress(coinName, { chain, index, keychains, format, address, }) {
89
+ if ((lodash_1.default.isUndefined(chain) && lodash_1.default.isUndefined(index)) || !(lodash_1.default.isFinite(chain) && lodash_1.default.isFinite(index))) {
90
+ throw new sdk_core_1.InvalidAddressDerivationPropertyError(`address validation failure: invalid chain (${chain}) or index (${index})`);
91
+ }
92
+ if (!keychains) {
93
+ throw new Error('missing required param keychains');
94
+ }
95
+ const expectedAddress = generateAddress(coinName, {
96
+ format,
97
+ keychains,
98
+ chain,
99
+ index,
100
+ });
101
+ if (expectedAddress !== address) {
102
+ throw new sdk_core_1.UnexpectedAddressError(`address validation failure: expected ${expectedAddress} but got ${address}`);
103
+ }
104
+ }
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWRTY3JpcHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRkcmVzcy9maXhlZFNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWdEQSw0RUFXQztBQWFELDBDQTZEQztBQU1ELHdFQW9DQztBQS9LRCxvREFBdUI7QUFDdkIsbURBWThCO0FBQzlCLGdEQUFxRDtBQXVCckQsU0FBUyxtQkFBbUIsQ0FBQyxRQUFzQixFQUFFLFdBQTJCO0lBQzlFLE9BQU8sNkJBQWlCLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsbUJBQW1CLENBQUMsVUFBbUM7SUFDOUQsT0FBTyxVQUFVLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUMzRCxDQUFDO0FBRUQsU0FBZ0IsZ0NBQWdDLENBQzlDLFFBQXNCLEVBQ3RCLFNBQTJELEVBQzNELEtBQWdCLEVBQ2hCLEtBQWEsRUFDYixNQUF1QztJQUV2Qyw2REFBNkQ7SUFDN0Qsa0RBQWtEO0lBQ2xELE1BQU0sVUFBVSxHQUFHLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzVELE9BQU8sNkJBQWlCLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNsRixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxRQUFzQixFQUFFLE1BQXlDO0lBQy9GLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztJQUN4QixJQUFJLGdCQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSyxNQUFNLENBQUMsS0FBZ0IsR0FBRyxDQUFDLEVBQUUs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LENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLGdCQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRyxNQUFNLElBQUksZ0RBQXFDLENBQzdDLDhDQUE4QyxLQUFLLGVBQWUsS0FBSyxHQUFHLENBQzNFLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsUUFBUSxFQUFFO1FBQ2hELE1BQU07UUFDTixTQUFTO1FBQ1QsS0FBSztRQUNMLEtBQUs7S0FDTixDQUFDLENBQUM7SUFFSCxJQUFJLGVBQWUsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksaUNBQXNCLENBQUMsd0NBQXdDLGVBQWUsWUFBWSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2pILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIEFkZHJlc3NUeXBlQ2hhaW5NaXNtYXRjaEVycm9yLFxuICBDcmVhdGVBZGRyZXNzRm9ybWF0LFxuICBJbnZhbGlkQWRkcmVzc0Rlcml2YXRpb25Qcm9wZXJ0eUVycm9yLFxuICBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yLFxuICBQMnNoUDJ3c2hVbnN1cHBvcnRlZEVycm9yLFxuICBQMnRyTXVzaWcyVW5zdXBwb3J0ZWRFcnJvcixcbiAgUDJ0clVuc3VwcG9ydGVkRXJyb3IsXG4gIFAyd3NoVW5zdXBwb3J0ZWRFcnJvcixcbiAgVW5zdXBwb3J0ZWRBZGRyZXNzVHlwZUVycm9yLFxuICBpc1RyaXBsZSxcbiAgVHJpcGxlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBmaXhlZFNjcmlwdFdhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBVdHhvQ29pbk5hbWUgfSBmcm9tICcuLi9uYW1lcyc7XG5cbnR5cGUgU2NyaXB0VHlwZTJPZjMgPSBmaXhlZFNjcmlwdFdhbGxldC5PdXRwdXRTY3JpcHRUeXBlO1xudHlwZSBDaGFpbkNvZGUgPSBmaXhlZFNjcmlwdFdhbGxldC5DaGFpbkNvZGU7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRml4ZWRTY3JpcHRBZGRyZXNzQ29pblNwZWNpZmljIHtcbiAgb3V0cHV0U2NyaXB0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlQWRkcmVzc09wdGlvbnMge1xuICBjaGFpbj86IG51bWJlcjtcbiAgaW5kZXg/OiBudW1iZXI7XG4gIHNlZ3dpdD86IGJvb2xlYW47XG4gIGJlY2gzMj86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBHZW5lcmF0ZUZpeGVkU2NyaXB0QWRkcmVzc09wdGlvbnMgZXh0ZW5kcyBHZW5lcmF0ZUFkZHJlc3NPcHRpb25zIHtcbiAgZm9ybWF0PzogQ3JlYXRlQWRkcmVzc0Zvcm1hdDtcbiAga2V5Y2hhaW5zOiB7IHB1Yjogc3RyaW5nIH1bXTtcbn1cblxuZnVuY3Rpb24gc3VwcG9ydHNBZGRyZXNzVHlwZShjb2luTmFtZTogVXR4b0NvaW5OYW1lLCBhZGRyZXNzVHlwZTogU2NyaXB0VHlwZTJPZjMpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZpeGVkU2NyaXB0V2FsbGV0LnN1cHBvcnRzU2NyaXB0VHlwZShjb2luTmFtZSwgYWRkcmVzc1R5cGUpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBzY3JpcHQgdHlwZSBhbGlhc2VzLiBcInAydHJcIiBpcyBhbiBhbGlhcyBmb3IgXCJwMnRyTGVnYWN5XCIuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNjcmlwdFR5cGUoc2NyaXB0VHlwZTogU2NyaXB0VHlwZTJPZjMgfCAncDJ0cicpOiBTY3JpcHRUeXBlMk9mMyB7XG4gIHJldHVybiBzY3JpcHRUeXBlID09PSAncDJ0cicgPyAncDJ0ckxlZ2FjeScgOiBzY3JpcHRUeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBZGRyZXNzV2l0aENoYWluQW5kSW5kZXgoXG4gIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUsXG4gIGtleWNoYWluczogZml4ZWRTY3JpcHRXYWxsZXQuV2FsbGV0S2V5c0FyZyB8IFRyaXBsZTxzdHJpbmc+LFxuICBjaGFpbjogQ2hhaW5Db2RlLFxuICBpbmRleDogbnVtYmVyLFxuICBmb3JtYXQ6IENyZWF0ZUFkZHJlc3NGb3JtYXQgfCB1bmRlZmluZWRcbik6IHN0cmluZyB7XG4gIC8vIENvbnZlcnQgQ3JlYXRlQWRkcmVzc0Zvcm1hdCB0byBBZGRyZXNzRm9ybWF0IGZvciB3YXNtLXV0eG9cbiAgLy8gJ2Jhc2U1OCcgLT4gJ2RlZmF1bHQnLCAnY2FzaGFkZHInIC0+ICdjYXNoYWRkcidcbiAgY29uc3Qgd2FzbUZvcm1hdCA9IGZvcm1hdCA9PT0gJ2Jhc2U1OCcgPyAnZGVmYXVsdCcgOiBmb3JtYXQ7XG4gIHJldHVybiBmaXhlZFNjcmlwdFdhbGxldC5hZGRyZXNzKGtleWNoYWlucywgY2hhaW4sIGluZGV4LCBjb2luTmFtZSwgd2FzbUZvcm1hdCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYW4gYWRkcmVzcyBmb3IgYSB3YWxsZXQgYmFzZWQgb24gYSBzZXQgb2YgY29uZmlndXJhdGlvbnNcbiAqIEBwYXJhbSBwYXJhbXMua2V5Y2hhaW5zICAge1tvYmplY3RdfSBBcnJheSBvZiBvYmplY3RzIHdpdGggeHB1YnNcbiAqIEBwYXJhbSBwYXJhbXMudGhyZXNob2xkICAge251bWJlcn0gICBNaW5pbXVtIG51bWJlciBvZiBzaWduYXR1cmVzXG4gKiBAcGFyYW0gcGFyYW1zLmNoYWluICAgICAgIHtudW1iZXJ9ICAgRGVyaXZhdGlvbiBjaGFpbiAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9CaXRHby91bnNwZW50cy9ibG9iL21hc3Rlci9zcmMvY29kZXMudHMgZm9yXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29ycmVzcG9uZGluZyBhZGRyZXNzIHR5cGUgb2YgYSBnaXZlbiBjaGFpbiBjb2RlKVxuICogQHBhcmFtIHBhcmFtcy5pbmRleCAgICAgICB7bnVtYmVyfSAgIERlcml2YXRpb24gaW5kZXhcbiAqIEBwYXJhbSBwYXJhbXMuc2Vnd2l0ICAgICAge2Jvb2xlYW59ICBEZXByZWNhdGVkXG4gKiBAcGFyYW0gcGFyYW1zLmJlY2gzMiAgICAgIHtib29sZWFufSAgRGVwcmVjYXRlZFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGdlbmVyYXRlZCBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUFkZHJlc3MoY29pbk5hbWU6IFV0eG9Db2luTmFtZSwgcGFyYW1zOiBHZW5lcmF0ZUZpeGVkU2NyaXB0QWRkcmVzc09wdGlvbnMpOiBzdHJpbmcge1xuICBsZXQgZGVyaXZhdGlvbkluZGV4ID0gMDtcbiAgaWYgKF8uaXNJbnRlZ2VyKHBhcmFtcy5pbmRleCkgJiYgKHBhcmFtcy5pbmRleCBhcyBudW1iZXIpID4gMCkge1xuICAgIGRlcml2YXRpb25JbmRleCA9IHBhcmFtcy5pbmRleCBhcyBudW1iZXI7XG4gIH1cblxuICBjb25zdCB7IGtleWNoYWlucywgY2hhaW4sIHNlZ3dpdCA9IGZhbHNlLCBiZWNoMzIgPSBmYWxzZSB9ID0gcGFyYW1zIGFzIEdlbmVyYXRlRml4ZWRTY3JpcHRBZGRyZXNzT3B0aW9ucztcblxuICBsZXQgZGVyaXZhdGlvbkNoYWluOiBDaGFpbkNvZGUgPSBmaXhlZFNjcmlwdFdhbGxldC5DaGFpbkNvZGUudmFsdWUoJ3Ayc2gnLCAnZXh0ZXJuYWwnKTtcbiAgaWYgKF8uaXNOdW1iZXIoY2hhaW4pICYmIF8uaXNJbnRlZ2VyKGNoYWluKSAmJiBmaXhlZFNjcmlwdFdhbGxldC5DaGFpbkNvZGUuaXMoY2hhaW4pKSB7XG4gICAgZGVyaXZhdGlvbkNoYWluID0gY2hhaW47XG4gIH1cblxuICBmdW5jdGlvbiBjb252ZXJ0RmxhZ3NUb0FkZHJlc3NUeXBlKCk6IFNjcmlwdFR5cGUyT2YzIHtcbiAgICBpZiAoZml4ZWRTY3JpcHRXYWxsZXQuQ2hhaW5Db2RlLmlzKGNoYWluKSkge1xuICAgICAgcmV0dXJuIGZpeGVkU2NyaXB0V2FsbGV0LkNoYWluQ29kZS5zY3JpcHRUeXBlKGNoYWluKTtcbiAgICB9XG4gICAgaWYgKF8uaXNCb29sZWFuKHNlZ3dpdCkgJiYgc2Vnd2l0KSB7XG4gICAgICByZXR1cm4gJ3Ayc2hQMndzaCc7XG4gICAgfSBlbHNlIGlmIChfLmlzQm9vbGVhbihiZWNoMzIpICYmIGJlY2gzMikge1xuICAgICAgcmV0dXJuICdwMndzaCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAncDJzaCc7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYWRkcmVzc1R5cGUgPSBub3JtYWxpemVTY3JpcHRUeXBlKGNvbnZlcnRGbGFnc1RvQWRkcmVzc1R5cGUoKSk7XG5cbiAgaWYgKGFkZHJlc3NUeXBlICE9PSBmaXhlZFNjcmlwdFdhbGxldC5DaGFpbkNvZGUuc2NyaXB0VHlwZShkZXJpdmF0aW9uQ2hhaW4pKSB7XG4gICAgdGhyb3cgbmV3IEFkZHJlc3NUeXBlQ2hhaW5NaXNtYXRjaEVycm9yKGFkZHJlc3NUeXBlLCBkZXJpdmF0aW9uQ2hhaW4pO1xuICB9XG5cbiAgaWYgKCFzdXBwb3J0c0FkZHJlc3NUeXBlKGNvaW5OYW1lLCBhZGRyZXNzVHlwZSkpIHtcbiAgICBzd2l0Y2ggKGFkZHJlc3NUeXBlKSB7XG4gICAgICBjYXNlICdwMnNoJzpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnRlcm5hbCBlcnJvcjogcDJzaCBzaG91bGQgYWx3YXlzIGJlIHN1cHBvcnRlZGApO1xuICAgICAgY2FzZSAncDJzaFAyd3NoJzpcbiAgICAgICAgdGhyb3cgbmV3IFAyc2hQMndzaFVuc3VwcG9ydGVkRXJyb3IoKTtcbiAgICAgIGNhc2UgJ3Ayd3NoJzpcbiAgICAgICAgdGhyb3cgbmV3IFAyd3NoVW5zdXBwb3J0ZWRFcnJvcigpO1xuICAgICAgY2FzZSAncDJ0cic6XG4gICAgICBjYXNlICdwMnRyTGVnYWN5JzpcbiAgICAgICAgdGhyb3cgbmV3IFAydHJVbnN1cHBvcnRlZEVycm9yKCk7XG4gICAgICBjYXNlICdwMnRyTXVzaWcyJzpcbiAgICAgICAgdGhyb3cgbmV3IFAydHJNdXNpZzJVbnN1cHBvcnRlZEVycm9yKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRBZGRyZXNzVHlwZUVycm9yKCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFpc1RyaXBsZShrZXljaGFpbnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdrZXljaGFpbnMgbXVzdCBiZSBhIHRyaXBsZScpO1xuICB9XG5cbiAgcmV0dXJuIGdlbmVyYXRlQWRkcmVzc1dpdGhDaGFpbkFuZEluZGV4KFxuICAgIGNvaW5OYW1lLFxuICAgIGtleWNoYWlucy5tYXAoKGspID0+IGsucHViKSBhcyBUcmlwbGU8c3RyaW5nPixcbiAgICBkZXJpdmF0aW9uQ2hhaW4sXG4gICAgZGVyaXZhdGlvbkluZGV4LFxuICAgIHBhcmFtcy5mb3JtYXRcbiAgKTtcbn1cblxudHlwZSBLZXljaGFpbiA9IHtcbiAgcHViOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0Rml4ZWRTY3JpcHRXYWxsZXRBZGRyZXNzKFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lLFxuICB7XG4gICAgY2hhaW4sXG4gICAgaW5kZXgsXG4gICAga2V5Y2hhaW5zLFxuICAgIGZvcm1hdCxcbiAgICBhZGRyZXNzLFxuICB9OiB7XG4gICAgY2hhaW46IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIGtleWNoYWluczogS2V5Y2hhaW5bXTtcbiAgICBmb3JtYXQ6IENyZWF0ZUFkZHJlc3NGb3JtYXQ7XG4gICAgYWRkcmVzczogc3RyaW5nO1xuICB9XG4pOiB2b2lkIHtcbiAgaWYgKChfLmlzVW5kZWZpbmVkKGNoYWluKSAmJiBfLmlzVW5kZWZpbmVkKGluZGV4KSkgfHwgIShfLmlzRmluaXRlKGNoYWluKSAmJiBfLmlzRmluaXRlKGluZGV4KSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvcihcbiAgICAgIGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogaW52YWxpZCBjaGFpbiAoJHtjaGFpbn0pIG9yIGluZGV4ICgke2luZGV4fSlgXG4gICAgKTtcbiAgfVxuXG4gIGlmICgha2V5Y2hhaW5zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHBhcmFtIGtleWNoYWlucycpO1xuICB9XG5cbiAgY29uc3QgZXhwZWN0ZWRBZGRyZXNzID0gZ2VuZXJhdGVBZGRyZXNzKGNvaW5OYW1lLCB7XG4gICAgZm9ybWF0LFxuICAgIGtleWNoYWlucyxcbiAgICBjaGFpbixcbiAgICBpbmRleCxcbiAgfSk7XG5cbiAgaWYgKGV4cGVjdGVkQWRkcmVzcyAhPT0gYWRkcmVzcykge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogZXhwZWN0ZWQgJHtleHBlY3RlZEFkZHJlc3N9IGJ1dCBnb3QgJHthZGRyZXNzfWApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export { generateAddress, generateAddressWithChainAndIndex, assertFixedScriptWalletAddress, FixedScriptAddressCoinSpecific, } from './fixedScript';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/address/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,gCAAgC,EAChC,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,eAAe,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertFixedScriptWalletAddress = exports.generateAddressWithChainAndIndex = exports.generateAddress = void 0;
4
+ var fixedScript_1 = require("./fixedScript");
5
+ Object.defineProperty(exports, "generateAddress", { enumerable: true, get: function () { return fixedScript_1.generateAddress; } });
6
+ Object.defineProperty(exports, "generateAddressWithChainAndIndex", { enumerable: true, get: function () { return fixedScript_1.generateAddressWithChainAndIndex; } });
7
+ Object.defineProperty(exports, "assertFixedScriptWalletAddress", { enumerable: true, get: function () { return fixedScript_1.assertFixedScriptWalletAddress; } });
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRkcmVzcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FLdUI7QUFKckIsOEdBQUEsZUFBZSxPQUFBO0FBQ2YsK0hBQUEsZ0NBQWdDLE9BQUE7QUFDaEMsNkhBQUEsOEJBQThCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBnZW5lcmF0ZUFkZHJlc3MsXG4gIGdlbmVyYXRlQWRkcmVzc1dpdGhDaGFpbkFuZEluZGV4LFxuICBhc3NlcnRGaXhlZFNjcmlwdFdhbGxldEFkZHJlc3MsXG4gIEZpeGVkU2NyaXB0QWRkcmVzc0NvaW5TcGVjaWZpYyxcbn0gZnJvbSAnLi9maXhlZFNjcmlwdCc7XG4iXX0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,6BAA6B;;;;;;;CAOzC,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.supportedCrossChainRecoveries = void 0;
4
+ // Supported cross-chain recovery routes. The object index is the coin to be recovered, and the value is
5
+ // an array of valid coins for recipient wallets of the original accidental/unintentional deposit.
6
+ exports.supportedCrossChainRecoveries = {
7
+ btc: ['bch', 'ltc', 'bsv', 'doge'],
8
+ bch: ['btc', 'ltc', 'bsv', 'doge'],
9
+ ltc: ['btc', 'bch', 'bsv', 'doge'],
10
+ bsv: ['btc', 'ltc', 'bch', 'doge'],
11
+ doge: ['btc', 'bch', 'ltc', 'bsv'],
12
+ bcha: ['btc', 'bch'],
13
+ };
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx3R0FBd0c7QUFDeEcsa0dBQWtHO0FBQ3JGLFFBQUEsNkJBQTZCLEdBQUc7SUFDM0MsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDO0lBQ2xDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNsQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUM7SUFDbEMsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO0NBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTdXBwb3J0ZWQgY3Jvc3MtY2hhaW4gcmVjb3Zlcnkgcm91dGVzLiBUaGUgb2JqZWN0IGluZGV4IGlzIHRoZSBjb2luIHRvIGJlIHJlY292ZXJlZCwgYW5kIHRoZSB2YWx1ZSBpc1xuLy8gYW4gYXJyYXkgb2YgdmFsaWQgY29pbnMgZm9yIHJlY2lwaWVudCB3YWxsZXRzIG9mIHRoZSBvcmlnaW5hbCBhY2NpZGVudGFsL3VuaW50ZW50aW9uYWwgZGVwb3NpdC5cbmV4cG9ydCBjb25zdCBzdXBwb3J0ZWRDcm9zc0NoYWluUmVjb3ZlcmllcyA9IHtcbiAgYnRjOiBbJ2JjaCcsICdsdGMnLCAnYnN2JywgJ2RvZ2UnXSxcbiAgYmNoOiBbJ2J0YycsICdsdGMnLCAnYnN2JywgJ2RvZ2UnXSxcbiAgbHRjOiBbJ2J0YycsICdiY2gnLCAnYnN2JywgJ2RvZ2UnXSxcbiAgYnN2OiBbJ2J0YycsICdsdGMnLCAnYmNoJywgJ2RvZ2UnXSxcbiAgZG9nZTogWydidGMnLCAnYmNoJywgJ2x0YycsICdic3YnXSxcbiAgYmNoYTogWydidGMnLCAnYmNoJ10sXG59O1xuIl19
@@ -0,0 +1,20 @@
1
+ import * as t from 'io-ts';
2
+ import { Descriptor, DescriptorPkType } from '@bitgo/wasm-utxo';
3
+ import { BIP32Interface } from '@bitgo-beta/utxo-lib';
4
+ export declare const NamedDescriptor: t.IntersectionC<[t.TypeC<{
5
+ name: t.StringC;
6
+ value: t.StringC;
7
+ }>, t.PartialC<{
8
+ signatures: t.UnionC<[t.ArrayC<t.StringC>, t.UndefinedC]>;
9
+ }>]>;
10
+ export type NamedDescriptor<T = string> = {
11
+ name: string;
12
+ value: T;
13
+ signatures?: string[];
14
+ };
15
+ export type NamedDescriptorNative = NamedDescriptor<Descriptor>;
16
+ export declare function createNamedDescriptorWithSignature(name: string, descriptor: string | Descriptor, signingKey: BIP32Interface): NamedDescriptor;
17
+ export declare function toNamedDescriptorNative(e: NamedDescriptor, pkType: DescriptorPkType): NamedDescriptorNative;
18
+ export declare function hasValidSignature(descriptor: string | Descriptor, key: BIP32Interface, signatures: string[]): boolean;
19
+ export declare function assertHasValidSignature(namedDescriptor: NamedDescriptor, key: BIP32Interface): void;
20
+ //# sourceMappingURL=NamedDescriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NamedDescriptor.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/NamedDescriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAY,MAAM,sBAAsB,CAAC;AAGhE,eAAO,MAAM,eAAe;;;;;IAW3B,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,MAAM,IAAI;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;IACT,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AAEhE,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GAAG,UAAU,EAC/B,UAAU,EAAE,cAAc,GACzB,eAAe,CAOjB;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,GAAG,qBAAqB,CAE3G;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CASrH;AAED,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAInG"}
@@ -0,0 +1,79 @@
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.NamedDescriptor = void 0;
37
+ exports.createNamedDescriptorWithSignature = createNamedDescriptorWithSignature;
38
+ exports.toNamedDescriptorNative = toNamedDescriptorNative;
39
+ exports.hasValidSignature = hasValidSignature;
40
+ exports.assertHasValidSignature = assertHasValidSignature;
41
+ const t = __importStar(require("io-ts"));
42
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
43
+ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
44
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
45
+ exports.NamedDescriptor = t.intersection([
46
+ t.type({
47
+ name: t.string,
48
+ value: t.string,
49
+ }),
50
+ t.partial({
51
+ signatures: t.union([t.array(t.string), t.undefined]),
52
+ }),
53
+ ], 'NamedDescriptor');
54
+ function createNamedDescriptorWithSignature(name, descriptor, signingKey) {
55
+ if (typeof descriptor === 'string') {
56
+ descriptor = wasm_utxo_1.Descriptor.fromString(descriptor, 'derivable');
57
+ }
58
+ const value = descriptor.toString();
59
+ const signature = (0, sdk_core_1.signMessage)(value, signingKey, utxo_lib_1.networks.bitcoin).toString('hex');
60
+ return { name, value, signatures: [signature] };
61
+ }
62
+ function toNamedDescriptorNative(e, pkType) {
63
+ return { ...e, value: wasm_utxo_1.Descriptor.fromString(e.value, pkType) };
64
+ }
65
+ function hasValidSignature(descriptor, key, signatures) {
66
+ if (typeof descriptor === 'string') {
67
+ descriptor = wasm_utxo_1.Descriptor.fromString(descriptor, 'derivable');
68
+ }
69
+ const message = descriptor.toString();
70
+ return signatures.some((signature) => {
71
+ return (0, sdk_core_1.verifyMessage)(message, key, Buffer.from(signature, 'hex'), utxo_lib_1.networks.bitcoin);
72
+ });
73
+ }
74
+ function assertHasValidSignature(namedDescriptor, key) {
75
+ if (!hasValidSignature(namedDescriptor.value, key, namedDescriptor.signatures ?? [])) {
76
+ throw new Error(`Descriptor ${namedDescriptor.name} does not have a valid signature (key=${key.toBase58()})`);
77
+ }
78
+ }
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmFtZWREZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvTmFtZWREZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBCQSxnRkFXQztBQUVELDBEQUVDO0FBRUQsOENBU0M7QUFFRCwwREFJQztBQTFERCx5Q0FBMkI7QUFDM0IsZ0RBQWdFO0FBQ2hFLG1EQUFnRTtBQUNoRSxtREFBa0U7QUFFckQsUUFBQSxlQUFlLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FDM0M7SUFDRSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ0wsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNO1FBQ2QsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNO0tBQ2hCLENBQUM7SUFDRixDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ1IsVUFBVSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDdEQsQ0FBQztDQUNILEVBQ0QsaUJBQWlCLENBQ2xCLENBQUM7QUFVRixTQUFnQixrQ0FBa0MsQ0FDaEQsSUFBWSxFQUNaLFVBQStCLEVBQy9CLFVBQTBCO0lBRTFCLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsVUFBVSxHQUFHLHNCQUFVLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLE1BQU0sU0FBUyxHQUFHLElBQUEsc0JBQVcsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLG1CQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25GLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7QUFDbEQsQ0FBQztBQUVELFNBQWdCLHVCQUF1QixDQUFDLENBQWtCLEVBQUUsTUFBd0I7SUFDbEYsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxzQkFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDakUsQ0FBQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLFVBQStCLEVBQUUsR0FBbUIsRUFBRSxVQUFvQjtJQUMxRyxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLFVBQVUsR0FBRyxzQkFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUNuQyxPQUFPLElBQUEsd0JBQWEsRUFBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLG1CQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEYsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBZ0IsdUJBQXVCLENBQUMsZUFBZ0MsRUFBRSxHQUFtQjtJQUMzRixJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsZUFBZSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3JGLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxlQUFlLENBQUMsSUFBSSx5Q0FBeUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuaW1wb3J0IHsgRGVzY3JpcHRvciwgRGVzY3JpcHRvclBrVHlwZSB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UsIG5ldHdvcmtzIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgc2lnbk1lc3NhZ2UsIHZlcmlmeU1lc3NhZ2UgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmV4cG9ydCBjb25zdCBOYW1lZERlc2NyaXB0b3IgPSB0LmludGVyc2VjdGlvbihcbiAgW1xuICAgIHQudHlwZSh7XG4gICAgICBuYW1lOiB0LnN0cmluZyxcbiAgICAgIHZhbHVlOiB0LnN0cmluZyxcbiAgICB9KSxcbiAgICB0LnBhcnRpYWwoe1xuICAgICAgc2lnbmF0dXJlczogdC51bmlvbihbdC5hcnJheSh0LnN0cmluZyksIHQudW5kZWZpbmVkXSksXG4gICAgfSksXG4gIF0sXG4gICdOYW1lZERlc2NyaXB0b3InXG4pO1xuXG5leHBvcnQgdHlwZSBOYW1lZERlc2NyaXB0b3I8VCA9IHN0cmluZz4gPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IFQ7XG4gIHNpZ25hdHVyZXM/OiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIE5hbWVkRGVzY3JpcHRvck5hdGl2ZSA9IE5hbWVkRGVzY3JpcHRvcjxEZXNjcmlwdG9yPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5hbWVkRGVzY3JpcHRvcldpdGhTaWduYXR1cmUoXG4gIG5hbWU6IHN0cmluZyxcbiAgZGVzY3JpcHRvcjogc3RyaW5nIHwgRGVzY3JpcHRvcixcbiAgc2lnbmluZ0tleTogQklQMzJJbnRlcmZhY2Vcbik6IE5hbWVkRGVzY3JpcHRvciB7XG4gIGlmICh0eXBlb2YgZGVzY3JpcHRvciA9PT0gJ3N0cmluZycpIHtcbiAgICBkZXNjcmlwdG9yID0gRGVzY3JpcHRvci5mcm9tU3RyaW5nKGRlc2NyaXB0b3IsICdkZXJpdmFibGUnKTtcbiAgfVxuICBjb25zdCB2YWx1ZSA9IGRlc2NyaXB0b3IudG9TdHJpbmcoKTtcbiAgY29uc3Qgc2lnbmF0dXJlID0gc2lnbk1lc3NhZ2UodmFsdWUsIHNpZ25pbmdLZXksIG5ldHdvcmtzLmJpdGNvaW4pLnRvU3RyaW5nKCdoZXgnKTtcbiAgcmV0dXJuIHsgbmFtZSwgdmFsdWUsIHNpZ25hdHVyZXM6IFtzaWduYXR1cmVdIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b05hbWVkRGVzY3JpcHRvck5hdGl2ZShlOiBOYW1lZERlc2NyaXB0b3IsIHBrVHlwZTogRGVzY3JpcHRvclBrVHlwZSk6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZSB7XG4gIHJldHVybiB7IC4uLmUsIHZhbHVlOiBEZXNjcmlwdG9yLmZyb21TdHJpbmcoZS52YWx1ZSwgcGtUeXBlKSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzVmFsaWRTaWduYXR1cmUoZGVzY3JpcHRvcjogc3RyaW5nIHwgRGVzY3JpcHRvciwga2V5OiBCSVAzMkludGVyZmFjZSwgc2lnbmF0dXJlczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBkZXNjcmlwdG9yID09PSAnc3RyaW5nJykge1xuICAgIGRlc2NyaXB0b3IgPSBEZXNjcmlwdG9yLmZyb21TdHJpbmcoZGVzY3JpcHRvciwgJ2Rlcml2YWJsZScpO1xuICB9XG5cbiAgY29uc3QgbWVzc2FnZSA9IGRlc2NyaXB0b3IudG9TdHJpbmcoKTtcbiAgcmV0dXJuIHNpZ25hdHVyZXMuc29tZSgoc2lnbmF0dXJlKSA9PiB7XG4gICAgcmV0dXJuIHZlcmlmeU1lc3NhZ2UobWVzc2FnZSwga2V5LCBCdWZmZXIuZnJvbShzaWduYXR1cmUsICdoZXgnKSwgbmV0d29ya3MuYml0Y29pbik7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SGFzVmFsaWRTaWduYXR1cmUobmFtZWREZXNjcmlwdG9yOiBOYW1lZERlc2NyaXB0b3IsIGtleTogQklQMzJJbnRlcmZhY2UpOiB2b2lkIHtcbiAgaWYgKCFoYXNWYWxpZFNpZ25hdHVyZShuYW1lZERlc2NyaXB0b3IudmFsdWUsIGtleSwgbmFtZWREZXNjcmlwdG9yLnNpZ25hdHVyZXMgPz8gW10pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEZXNjcmlwdG9yICR7bmFtZWREZXNjcmlwdG9yLm5hbWV9IGRvZXMgbm90IGhhdmUgYSB2YWxpZCBzaWduYXR1cmUgKGtleT0ke2tleS50b0Jhc2U1OCgpfSlgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ import { descriptorWallet } from '@bitgo/wasm-utxo';
2
+ import { UtxoCoinSpecific, VerifyAddressOptions } from '../abstractUtxoCoin';
3
+ import { UtxoCoinName } from '../names';
4
+ export declare function assertDescriptorWalletAddress(coinName: UtxoCoinName, params: VerifyAddressOptions<UtxoCoinSpecific>, descriptors: descriptorWallet.DescriptorMap): void;
5
+ //# sourceMappingURL=assertDescriptorWalletAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertDescriptorWalletAddress.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/assertDescriptorWalletAddress.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAUxC,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,EAC9C,WAAW,EAAE,gBAAgB,CAAC,aAAa,GAC1C,IAAI,CAoBN"}
@@ -0,0 +1,33 @@
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.assertDescriptorWalletAddress = assertDescriptorWalletAddress;
7
+ const assert_1 = __importDefault(require("assert"));
8
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
9
+ class DescriptorAddressMismatchError extends Error {
10
+ constructor(descriptor, index, derivedAddress, expectedAddress) {
11
+ super(`Address mismatch for descriptor ${descriptor.toString()} at index ${index}: ${derivedAddress} !== ${expectedAddress}`);
12
+ }
13
+ }
14
+ function assertDescriptorWalletAddress(coinName, params, descriptors) {
15
+ (0, assert_1.default)(params.coinSpecific);
16
+ (0, assert_1.default)('descriptorName' in params.coinSpecific);
17
+ (0, assert_1.default)('descriptorChecksum' in params.coinSpecific);
18
+ const { descriptorName, descriptorChecksum } = params.coinSpecific;
19
+ const descriptor = descriptors.get(params.coinSpecific.descriptorName);
20
+ if (!descriptor) {
21
+ throw new Error(`Descriptor ${descriptorName} not found`);
22
+ }
23
+ const checksum = descriptor.toString().slice(-8);
24
+ if (checksum !== descriptorChecksum) {
25
+ throw new Error(`Descriptor checksum mismatch for descriptor name=${descriptorName}: ${checksum} !== ${descriptorChecksum}`);
26
+ }
27
+ const derivedScript = Buffer.from(descriptor.atDerivationIndex(params.index).scriptPubkey());
28
+ const derivedAddress = wasm_utxo_1.address.fromOutputScriptWithCoin(derivedScript, coinName);
29
+ if (params.address !== derivedAddress) {
30
+ throw new DescriptorAddressMismatchError(descriptor, params.index, derivedAddress, params.address);
31
+ }
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0RGVzY3JpcHRvcldhbGxldEFkZHJlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9hc3NlcnREZXNjcmlwdG9yV2FsbGV0QWRkcmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWVBLHNFQXdCQztBQXZDRCxvREFBNEI7QUFFNUIsZ0RBQXlFO0FBS3pFLE1BQU0sOEJBQStCLFNBQVEsS0FBSztJQUNoRCxZQUFZLFVBQXNCLEVBQUUsS0FBYSxFQUFFLGNBQXNCLEVBQUUsZUFBdUI7UUFDaEcsS0FBSyxDQUNILG1DQUFtQyxVQUFVLENBQUMsUUFBUSxFQUFFLGFBQWEsS0FBSyxLQUFLLGNBQWMsUUFBUSxlQUFlLEVBQUUsQ0FDdkgsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELFNBQWdCLDZCQUE2QixDQUMzQyxRQUFzQixFQUN0QixNQUE4QyxFQUM5QyxXQUEyQztJQUUzQyxJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzVCLElBQUEsZ0JBQU0sRUFBQyxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEQsSUFBQSxnQkFBTSxFQUFDLG9CQUFvQixJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwRCxNQUFNLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUNuRSxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxjQUFjLFlBQVksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsSUFBSSxRQUFRLEtBQUssa0JBQWtCLEVBQUUsQ0FBQztRQUNwQyxNQUFNLElBQUksS0FBSyxDQUNiLG9EQUFvRCxjQUFjLEtBQUssUUFBUSxRQUFRLGtCQUFrQixFQUFFLENBQzVHLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDN0YsTUFBTSxjQUFjLEdBQUcsbUJBQU8sQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDakYsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLGNBQWMsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSw4QkFBOEIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JHLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBEZXNjcmlwdG9yLCBhZGRyZXNzLCBkZXNjcmlwdG9yV2FsbGV0IH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbmltcG9ydCB7IFV0eG9Db2luU3BlY2lmaWMsIFZlcmlmeUFkZHJlc3NPcHRpb25zIH0gZnJvbSAnLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgeyBVdHhvQ29pbk5hbWUgfSBmcm9tICcuLi9uYW1lcyc7XG5cbmNsYXNzIERlc2NyaXB0b3JBZGRyZXNzTWlzbWF0Y2hFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoZGVzY3JpcHRvcjogRGVzY3JpcHRvciwgaW5kZXg6IG51bWJlciwgZGVyaXZlZEFkZHJlc3M6IHN0cmluZywgZXhwZWN0ZWRBZGRyZXNzOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBBZGRyZXNzIG1pc21hdGNoIGZvciBkZXNjcmlwdG9yICR7ZGVzY3JpcHRvci50b1N0cmluZygpfSBhdCBpbmRleCAke2luZGV4fTogJHtkZXJpdmVkQWRkcmVzc30gIT09ICR7ZXhwZWN0ZWRBZGRyZXNzfWBcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnREZXNjcmlwdG9yV2FsbGV0QWRkcmVzcyhcbiAgY29pbk5hbWU6IFV0eG9Db2luTmFtZSxcbiAgcGFyYW1zOiBWZXJpZnlBZGRyZXNzT3B0aW9uczxVdHhvQ29pblNwZWNpZmljPixcbiAgZGVzY3JpcHRvcnM6IGRlc2NyaXB0b3JXYWxsZXQuRGVzY3JpcHRvck1hcFxuKTogdm9pZCB7XG4gIGFzc2VydChwYXJhbXMuY29pblNwZWNpZmljKTtcbiAgYXNzZXJ0KCdkZXNjcmlwdG9yTmFtZScgaW4gcGFyYW1zLmNvaW5TcGVjaWZpYyk7XG4gIGFzc2VydCgnZGVzY3JpcHRvckNoZWNrc3VtJyBpbiBwYXJhbXMuY29pblNwZWNpZmljKTtcbiAgY29uc3QgeyBkZXNjcmlwdG9yTmFtZSwgZGVzY3JpcHRvckNoZWNrc3VtIH0gPSBwYXJhbXMuY29pblNwZWNpZmljO1xuICBjb25zdCBkZXNjcmlwdG9yID0gZGVzY3JpcHRvcnMuZ2V0KHBhcmFtcy5jb2luU3BlY2lmaWMuZGVzY3JpcHRvck5hbWUpO1xuICBpZiAoIWRlc2NyaXB0b3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYERlc2NyaXB0b3IgJHtkZXNjcmlwdG9yTmFtZX0gbm90IGZvdW5kYCk7XG4gIH1cbiAgY29uc3QgY2hlY2tzdW0gPSBkZXNjcmlwdG9yLnRvU3RyaW5nKCkuc2xpY2UoLTgpO1xuICBpZiAoY2hlY2tzdW0gIT09IGRlc2NyaXB0b3JDaGVja3N1bSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBEZXNjcmlwdG9yIGNoZWNrc3VtIG1pc21hdGNoIGZvciBkZXNjcmlwdG9yIG5hbWU9JHtkZXNjcmlwdG9yTmFtZX06ICR7Y2hlY2tzdW19ICE9PSAke2Rlc2NyaXB0b3JDaGVja3N1bX1gXG4gICAgKTtcbiAgfVxuICBjb25zdCBkZXJpdmVkU2NyaXB0ID0gQnVmZmVyLmZyb20oZGVzY3JpcHRvci5hdERlcml2YXRpb25JbmRleChwYXJhbXMuaW5kZXgpLnNjcmlwdFB1YmtleSgpKTtcbiAgY29uc3QgZGVyaXZlZEFkZHJlc3MgPSBhZGRyZXNzLmZyb21PdXRwdXRTY3JpcHRXaXRoQ29pbihkZXJpdmVkU2NyaXB0LCBjb2luTmFtZSk7XG4gIGlmIChwYXJhbXMuYWRkcmVzcyAhPT0gZGVyaXZlZEFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgRGVzY3JpcHRvckFkZHJlc3NNaXNtYXRjaEVycm9yKGRlc2NyaXB0b3IsIHBhcmFtcy5pbmRleCwgZGVyaXZlZEFkZHJlc3MsIHBhcmFtcy5hZGRyZXNzKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,13 @@
1
+ import { BIP32Interface } from '@bitgo-beta/utxo-lib';
2
+ import { Descriptor } from '@bitgo/wasm-utxo';
3
+ type DescriptorWithKeys<TName extends string> = {
4
+ name: TName;
5
+ keys: BIP32Interface[];
6
+ path: string;
7
+ };
8
+ export type DescriptorBuilder = DescriptorWithKeys<'Wsh2Of2'> | DescriptorWithKeys<'Wsh2Of3'> | (DescriptorWithKeys<'ShWsh2Of3CltvDrop' | 'Wsh2Of3CltvDrop'> & {
9
+ locktime: number;
10
+ });
11
+ export declare function getDescriptorFromBuilder(builder: DescriptorBuilder): Descriptor;
12
+ export {};
13
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../../../src/descriptor/builder/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,KAAK,kBAAkB,CAAC,KAAK,SAAS,MAAM,IAAI;IAC9C,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB,kBAAkB,CAAC,SAAS,CAAC,GAC7B,kBAAkB,CAAC,SAAS,CAAC,GAM7B,CAAC,kBAAkB,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAkCzF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAE/E"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDescriptorFromBuilder = getDescriptorFromBuilder;
4
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
5
+ function toXPub(k) {
6
+ if (typeof k === 'string') {
7
+ return k;
8
+ }
9
+ return k.neutered().toBase58();
10
+ }
11
+ function multi(m, n, keys, path) {
12
+ if (n < m) {
13
+ throw new Error(`Cannot create ${m} of ${n} multisig`);
14
+ }
15
+ if (keys.length < n) {
16
+ throw new Error(`Not enough keys for ${m} of ${n} multisig: keys.length=${keys.length}`);
17
+ }
18
+ keys = keys.slice(0, n);
19
+ return `multi(${m},${keys.map((k) => `${toXPub(k)}/${path}`).join(',')})`;
20
+ }
21
+ function getDescriptorString(builder) {
22
+ switch (builder.name) {
23
+ case 'Wsh2Of3':
24
+ return `wsh(${multi(2, 3, builder.keys, builder.path)})`;
25
+ case 'Wsh2Of2':
26
+ return `wsh(${multi(2, 2, builder.keys, builder.path)})`;
27
+ case 'Wsh2Of3CltvDrop':
28
+ return `wsh(and_v(r:after(${builder.locktime}),${multi(2, 3, builder.keys, builder.path)}))`;
29
+ case 'ShWsh2Of3CltvDrop':
30
+ return `sh(${getDescriptorString({ ...builder, name: 'Wsh2Of3CltvDrop' })})`;
31
+ }
32
+ throw new Error(`Unknown descriptor template: ${builder}`);
33
+ }
34
+ function getDescriptorFromBuilder(builder) {
35
+ return wasm_utxo_1.Descriptor.fromString(getDescriptorString(builder), 'derivable');
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL2J1aWxkZXIvYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQW1EQSw0REFFQztBQXBERCxnREFBOEM7QUFrQjlDLFNBQVMsTUFBTSxDQUFDLENBQTBCO0lBQ3hDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDakMsQ0FBQztBQUVELFNBQVMsS0FBSyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsSUFBaUMsRUFBRSxJQUFZO0lBQ2xGLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQywwQkFBMEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUNELElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QixPQUFPLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDNUUsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsT0FBMEI7SUFDckQsUUFBUSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsS0FBSyxTQUFTO1lBQ1osT0FBTyxPQUFPLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDM0QsS0FBSyxTQUFTO1lBQ1osT0FBTyxPQUFPLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDM0QsS0FBSyxpQkFBaUI7WUFDcEIsT0FBTyxxQkFBcUIsT0FBTyxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQy9GLEtBQUssbUJBQW1CO1lBQ3RCLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNqRixDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsT0FBMEI7SUFDakUsT0FBTyxzQkFBVSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUMxRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbnR5cGUgRGVzY3JpcHRvcldpdGhLZXlzPFROYW1lIGV4dGVuZHMgc3RyaW5nPiA9IHtcbiAgbmFtZTogVE5hbWU7XG4gIGtleXM6IEJJUDMySW50ZXJmYWNlW107XG4gIHBhdGg6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERlc2NyaXB0b3JCdWlsZGVyID1cbiAgfCBEZXNjcmlwdG9yV2l0aEtleXM8J1dzaDJPZjInPlxuICB8IERlc2NyaXB0b3JXaXRoS2V5czwnV3NoMk9mMyc+XG4gIC8qXG4gICAqIFRoaXMgaXMgYSBzZWd3aXQgKHdyYXBwZWQgb3IgbmF0aXZlKSAyb2YzIG11bHRpc2lnIHRoYXQgYWxzbyB1c2VzIGFcbiAgICogcmVsYXRpdmUgbG9ja3RpbWUgd2l0aCBhbiBPUF9EUk9QIChyZXF1aXJpbmcgYSBtaW5pc2NyaXB0IGV4dGVuc2lvbikuXG4gICAqIEl0IGlzIGJhc2ljYWxseSB3aGF0IGlzIHVzZWQgaW4gQ29yZURhbyBzdGFraW5nIHRyYW5zYWN0aW9ucy5cbiAgICovXG4gIHwgKERlc2NyaXB0b3JXaXRoS2V5czwnU2hXc2gyT2YzQ2x0dkRyb3AnIHwgJ1dzaDJPZjNDbHR2RHJvcCc+ICYgeyBsb2NrdGltZTogbnVtYmVyIH0pO1xuXG5mdW5jdGlvbiB0b1hQdWIoazogQklQMzJJbnRlcmZhY2UgfCBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGsgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGs7XG4gIH1cbiAgcmV0dXJuIGsubmV1dGVyZWQoKS50b0Jhc2U1OCgpO1xufVxuXG5mdW5jdGlvbiBtdWx0aShtOiBudW1iZXIsIG46IG51bWJlciwga2V5czogQklQMzJJbnRlcmZhY2VbXSB8IHN0cmluZ1tdLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAobiA8IG0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjcmVhdGUgJHttfSBvZiAke259IG11bHRpc2lnYCk7XG4gIH1cbiAgaWYgKGtleXMubGVuZ3RoIDwgbikge1xuICAgIHRocm93IG5ldyBFcnJvcihgTm90IGVub3VnaCBrZXlzIGZvciAke219IG9mICR7bn0gbXVsdGlzaWc6IGtleXMubGVuZ3RoPSR7a2V5cy5sZW5ndGh9YCk7XG4gIH1cbiAga2V5cyA9IGtleXMuc2xpY2UoMCwgbik7XG4gIHJldHVybiBgbXVsdGkoJHttfSwke2tleXMubWFwKChrKSA9PiBgJHt0b1hQdWIoayl9LyR7cGF0aH1gKS5qb2luKCcsJyl9KWA7XG59XG5cbmZ1bmN0aW9uIGdldERlc2NyaXB0b3JTdHJpbmcoYnVpbGRlcjogRGVzY3JpcHRvckJ1aWxkZXIpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGJ1aWxkZXIubmFtZSkge1xuICAgIGNhc2UgJ1dzaDJPZjMnOlxuICAgICAgcmV0dXJuIGB3c2goJHttdWx0aSgyLCAzLCBidWlsZGVyLmtleXMsIGJ1aWxkZXIucGF0aCl9KWA7XG4gICAgY2FzZSAnV3NoMk9mMic6XG4gICAgICByZXR1cm4gYHdzaCgke211bHRpKDIsIDIsIGJ1aWxkZXIua2V5cywgYnVpbGRlci5wYXRoKX0pYDtcbiAgICBjYXNlICdXc2gyT2YzQ2x0dkRyb3AnOlxuICAgICAgcmV0dXJuIGB3c2goYW5kX3YocjphZnRlcigke2J1aWxkZXIubG9ja3RpbWV9KSwke211bHRpKDIsIDMsIGJ1aWxkZXIua2V5cywgYnVpbGRlci5wYXRoKX0pKWA7XG4gICAgY2FzZSAnU2hXc2gyT2YzQ2x0dkRyb3AnOlxuICAgICAgcmV0dXJuIGBzaCgke2dldERlc2NyaXB0b3JTdHJpbmcoeyAuLi5idWlsZGVyLCBuYW1lOiAnV3NoMk9mM0NsdHZEcm9wJyB9KX0pYDtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZGVzY3JpcHRvciB0ZW1wbGF0ZTogJHtidWlsZGVyfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVzY3JpcHRvckZyb21CdWlsZGVyKGJ1aWxkZXI6IERlc2NyaXB0b3JCdWlsZGVyKTogRGVzY3JpcHRvciB7XG4gIHJldHVybiBEZXNjcmlwdG9yLmZyb21TdHJpbmcoZ2V0RGVzY3JpcHRvclN0cmluZyhidWlsZGVyKSwgJ2Rlcml2YWJsZScpO1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ export { getDescriptorFromBuilder, DescriptorBuilder } from './builder';
2
+ export { parseDescriptor } from './parse';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/descriptor/builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseDescriptor = exports.getDescriptorFromBuilder = void 0;
4
+ var builder_1 = require("./builder");
5
+ Object.defineProperty(exports, "getDescriptorFromBuilder", { enumerable: true, get: function () { return builder_1.getDescriptorFromBuilder; } });
6
+ var parse_1 = require("./parse");
7
+ Object.defineProperty(exports, "parseDescriptor", { enumerable: true, get: function () { return parse_1.parseDescriptor; } });
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9idWlsZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUF3RTtBQUEvRCxtSEFBQSx3QkFBd0IsT0FBQTtBQUNqQyxpQ0FBMEM7QUFBakMsd0dBQUEsZUFBZSxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZ2V0RGVzY3JpcHRvckZyb21CdWlsZGVyLCBEZXNjcmlwdG9yQnVpbGRlciB9IGZyb20gJy4vYnVpbGRlcic7XG5leHBvcnQgeyBwYXJzZURlc2NyaXB0b3IgfSBmcm9tICcuL3BhcnNlJztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ import { Descriptor } from '@bitgo/wasm-utxo';
2
+ import { DescriptorBuilder } from './builder';
3
+ export declare function parseDescriptorNode(node: unknown): DescriptorBuilder;
4
+ export declare function parseDescriptor(descriptor: Descriptor): DescriptorBuilder;
5
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../../src/descriptor/builder/parse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAA4B,MAAM,WAAW,CAAC;AA4GxE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,CASpE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,iBAAiB,CAMzE"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseDescriptorNode = parseDescriptorNode;
4
+ exports.parseDescriptor = parseDescriptor;
5
+ const secp256k1_1 = require("@bitgo-beta/secp256k1");
6
+ const builder_1 = require("./builder");
7
+ function isUnaryNode(node, key) {
8
+ if (typeof node !== 'object' || node === null) {
9
+ return false;
10
+ }
11
+ const keys = Object.keys(node);
12
+ return keys.length === 1 && keys[0] === key;
13
+ }
14
+ function unwrapNode(node, path) {
15
+ let current = node;
16
+ for (const key of path) {
17
+ if (!isUnaryNode(current, key)) {
18
+ return undefined;
19
+ }
20
+ current = current[key];
21
+ }
22
+ return current;
23
+ }
24
+ function parseMulti(node) {
25
+ if (!Array.isArray(node)) {
26
+ throw new Error('Unexpected node');
27
+ }
28
+ const [threshold, ...keyNodes] = node;
29
+ if (typeof threshold !== 'number') {
30
+ throw new Error('Expected threshold number');
31
+ }
32
+ const keyWithPath = keyNodes.map((keyNode) => {
33
+ if (!isUnaryNode(keyNode, 'XPub')) {
34
+ throw new Error('Expected XPub node');
35
+ }
36
+ if (typeof keyNode.XPub !== 'string') {
37
+ throw new Error('Expected XPub string');
38
+ }
39
+ const parts = keyNode.XPub.split('/');
40
+ return { xpub: parts[0], path: parts.slice(1).join('/') };
41
+ });
42
+ const paths = keyWithPath.map((k) => k.path);
43
+ paths.forEach((path, i) => {
44
+ if (path !== paths[0]) {
45
+ throw new Error(`Expected all paths to be the same: ${path} !== ${paths[0]}`);
46
+ }
47
+ });
48
+ return {
49
+ threshold,
50
+ keys: keyWithPath.map((k) => secp256k1_1.bip32.fromBase58(k.xpub)),
51
+ path: paths[0],
52
+ };
53
+ }
54
+ function parseWshMulti(node) {
55
+ const wshMsMulti = unwrapNode(node, ['Wsh', 'Ms', 'Multi']);
56
+ if (wshMsMulti) {
57
+ const { threshold, keys, path } = parseMulti(wshMsMulti);
58
+ let name;
59
+ if (threshold === 2 && keys.length === 2) {
60
+ name = 'Wsh2Of2';
61
+ }
62
+ else if (threshold === 2 && keys.length === 3) {
63
+ name = 'Wsh2Of3';
64
+ }
65
+ else {
66
+ throw new Error('Unexpected multisig');
67
+ }
68
+ return {
69
+ name,
70
+ keys,
71
+ path,
72
+ };
73
+ }
74
+ }
75
+ function parseCltvDrop(node, name, wrapping) {
76
+ const unwrapped = unwrapNode(node, wrapping);
77
+ if (!unwrapped) {
78
+ return;
79
+ }
80
+ if (Array.isArray(unwrapped) && unwrapped.length === 2) {
81
+ const [a, b] = unwrapped;
82
+ const dropAfterAbsLocktime = unwrapNode(a, ['Drop', 'After', 'absLockTime']);
83
+ if (typeof dropAfterAbsLocktime !== 'number') {
84
+ throw new Error('Expected absLockTime number');
85
+ }
86
+ if (!isUnaryNode(b, 'Multi')) {
87
+ throw new Error('Expected Multi node');
88
+ }
89
+ const multi = parseMulti(b.Multi);
90
+ if (multi.threshold === 2 && multi.keys.length === 3) {
91
+ return {
92
+ name,
93
+ locktime: dropAfterAbsLocktime,
94
+ keys: multi.keys,
95
+ path: multi.path,
96
+ };
97
+ }
98
+ }
99
+ }
100
+ function parseDescriptorNode(node) {
101
+ const parsed = parseWshMulti(node) ??
102
+ parseCltvDrop(node, 'ShWsh2Of3CltvDrop', ['Sh', 'Wsh', 'Ms', 'AndV']) ??
103
+ parseCltvDrop(node, 'Wsh2Of3CltvDrop', ['Wsh', 'Ms', 'AndV']);
104
+ if (!parsed) {
105
+ throw new Error('Failed to parse descriptor node');
106
+ }
107
+ return parsed;
108
+ }
109
+ function parseDescriptor(descriptor) {
110
+ const builder = parseDescriptorNode(descriptor.node());
111
+ if ((0, builder_1.getDescriptorFromBuilder)(builder).toString() !== descriptor.toString()) {
112
+ throw new Error('Failed to parse descriptor');
113
+ }
114
+ return builder;
115
+ }
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9idWlsZGVyL3BhcnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBK0dBLGtEQVNDO0FBRUQsMENBTUM7QUFoSUQscURBQThEO0FBRzlELHVDQUF3RTtBQUl4RSxTQUFTLFdBQVcsQ0FBc0IsSUFBYSxFQUFFLEdBQVM7SUFDaEUsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDO0FBQzlDLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFhLEVBQUUsSUFBYztJQUMvQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDbkIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBYTtJQUsvQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsTUFBTSxDQUFDLFNBQVMsRUFBRSxHQUFHLFFBQVEs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QUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFnQixlQUFlLENBQUMsVUFBc0I7SUFDcEQsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkQsSUFBSSxJQUFBLGtDQUF3QixFQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBQzNFLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJJUDMySW50ZXJmYWNlLCBiaXAzMiB9IGZyb20gJ0BiaXRnby1iZXRhL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbmltcG9ydCB7IERlc2NyaXB0b3JCdWlsZGVyLCBnZXREZXNjcmlwdG9yRnJvbUJ1aWxkZXIgfSBmcm9tICcuL2J1aWxkZXInO1xuXG50eXBlIE5vZGVVbmFyeTxLZXkgZXh0ZW5kcyBzdHJpbmc+ID0geyBbayBpbiBLZXldOiB1bmtub3duIH07XG5cbmZ1bmN0aW9uIGlzVW5hcnlOb2RlPFRLZXkgZXh0ZW5kcyBzdHJpbmc+KG5vZGU6IHVua25vd24sIGtleTogVEtleSk6IG5vZGUgaXMgTm9kZVVuYXJ5PFRLZXk+IHtcbiAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0JyB8fCBub2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhub2RlKTtcbiAgcmV0dXJuIGtleXMubGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09IGtleTtcbn1cblxuZnVuY3Rpb24gdW53cmFwTm9kZShub2RlOiB1bmtub3duLCBwYXRoOiBzdHJpbmdbXSk6IHVua25vd24ge1xuICBsZXQgY3VycmVudCA9IG5vZGU7XG4gIGZvciAoY29uc3Qga2V5IG9mIHBhdGgpIHtcbiAgICBpZiAoIWlzVW5hcnlOb2RlKGN1cnJlbnQsIGtleSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gIH1cbiAgcmV0dXJuIGN1cnJlbnQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlTXVsdGkobm9kZTogdW5rbm93bik6IHtcbiAgdGhyZXNob2xkOiBudW1iZXI7XG4gIGtleXM6IEJJUDMySW50ZXJmYWNlW107XG4gIHBhdGg6IHN0cmluZztcbn0ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgbm9kZScpO1xuICB9XG4gIGNvbnN0IFt0aHJlc2hvbGQsIC4uLmtleU5vZGVzXSA9IG5vZGU7XG4gIGlmICh0eXBlb2YgdGhyZXNob2xkICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgdGhyZXNob2xkIG51bWJlcicpO1xuICB9XG4gIGNvbnN0IGtleVdpdGhQYXRoID0ga2V5Tm9kZXMubWFwKChrZXlOb2RlKSA9PiB7XG4gICAgaWYgKCFpc1VuYXJ5Tm9kZShrZXlOb2RlLCAnWFB1YicpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIFhQdWIgbm9kZScpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGtleU5vZGUuWFB1YiAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgWFB1YiBzdHJpbmcnKTtcbiAgICB9XG4gICAgY29uc3QgcGFydHMgPSBrZXlOb2RlLlhQdWIuc3BsaXQoJy8nKTtcbiAgICByZXR1cm4geyB4cHViOiBwYXJ0c1swXSwgcGF0aDogcGFydHMuc2xpY2UoMSkuam9pbignLycpIH07XG4gIH0pO1xuICBjb25zdCBwYXRocyA9IGtleVdpdGhQYXRoLm1hcCgoaykgPT4gay5wYXRoKTtcbiAgcGF0aHMuZm9yRWFjaCgocGF0aCwgaSkgPT4ge1xuICAgIGlmIChwYXRoICE9PSBwYXRoc1swXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhbGwgcGF0aHMgdG8gYmUgdGhlIHNhbWU6ICR7cGF0aH0gIT09ICR7cGF0aHNbMF19YCk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICB0aHJlc2hvbGQsXG4gICAga2V5czoga2V5V2l0aFBhdGgubWFwKChrKSA9PiBiaXAzMi5mcm9tQmFzZTU4KGsueHB1YikpLFxuICAgIHBhdGg6IHBhdGhzWzBdLFxuICB9O1xufVxuXG5mdW5jdGlvbiBwYXJzZVdzaE11bHRpKG5vZGU6IHVua25vd24pOiBEZXNjcmlwdG9yQnVpbGRlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHdzaE1zTXVsdGkgPSB1bndyYXBOb2RlKG5vZGUsIFsnV3NoJywgJ01zJywgJ011bHRpJ10pO1xuICBpZiAod3NoTXNNdWx0aSkge1xuICAgIGNvbnN0IHsgdGhyZXNob2xkLCBrZXlzLCBwYXRoIH0gPSBwYXJzZU11bHRpKHdzaE1zTXVsdGkpO1xuICAgIGxldCBuYW1lO1xuICAgIGlmICh0aHJlc2hvbGQgPT09IDIgJiYga2V5cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIG5hbWUgPSAnV3NoMk9mMic7XG4gICAgfSBlbHNlIGlmICh0aHJlc2hvbGQgPT09IDIgJiYga2V5cy5sZW5ndGggPT09IDMpIHtcbiAgICAgIG5hbWUgPSAnV3NoMk9mMyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBtdWx0aXNpZycpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZSxcbiAgICAgIGtleXMsXG4gICAgICBwYXRoLFxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VDbHR2RHJvcChcbiAgbm9kZTogdW5rbm93bixcbiAgbmFtZTogJ1dzaDJPZjNDbHR2RHJvcCcgfCAnU2hXc2gyT2YzQ2x0dkRyb3AnLFxuICB3cmFwcGluZzogc3RyaW5nW11cbik6IERlc2NyaXB0b3JCdWlsZGVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdW53cmFwcGVkID0gdW53cmFwTm9kZShub2RlLCB3cmFwcGluZyk7XG4gIGlmICghdW53cmFwcGVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KHVud3JhcHBlZCkgJiYgdW53cmFwcGVkLmxlbmd0aCA9PT0gMikge1xuICAgIGNvbnN0IFthLCBiXSA9IHVud3JhcHBlZDtcbiAgICBjb25zdCBkcm9wQWZ0ZXJBYnNMb2NrdGltZSA9IHVud3JhcE5vZGUoYSwgWydEcm9wJywgJ0FmdGVyJywgJ2Fic0xvY2tUaW1lJ10pO1xuICAgIGlmICh0eXBlb2YgZHJvcEFmdGVyQWJzTG9ja3RpbWUgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGFic0xvY2tUaW1lIG51bWJlcicpO1xuICAgIH1cbiAgICBpZiAoIWlzVW5hcnlOb2RlKGIsICdNdWx0aScpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIE11bHRpIG5vZGUnKTtcbiAgICB9XG4gICAgY29uc3QgbXVsdGkgPSBwYXJzZU11bHRpKGIuTXVsdGkpO1xuICAgIGlmIChtdWx0aS50aHJlc2hvbGQgPT09IDIgJiYgbXVsdGkua2V5cy5sZW5ndGggPT09IDMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIGxvY2t0aW1lOiBkcm9wQWZ0ZXJBYnNMb2NrdGltZSxcbiAgICAgICAga2V5czogbXVsdGkua2V5cyxcbiAgICAgICAgcGF0aDogbXVsdGkucGF0aCxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURlc2NyaXB0b3JOb2RlKG5vZGU6IHVua25vd24pOiBEZXNjcmlwdG9yQnVpbGRlciB7XG4gIGNvbnN0IHBhcnNlZCA9XG4gICAgcGFyc2VXc2hNdWx0aShub2RlKSA/P1xuICAgIHBhcnNlQ2x0dkRyb3Aobm9kZSwgJ1NoV3NoMk9mM0NsdHZEcm9wJywgWydTaCcsICdXc2gnLCAnTXMnLCAnQW5kViddKSA/P1xuICAgIHBhcnNlQ2x0dkRyb3Aobm9kZSwgJ1dzaDJPZjNDbHR2RHJvcCcsIFsnV3NoJywgJ01zJywgJ0FuZFYnXSk7XG4gIGlmICghcGFyc2VkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gcGFyc2UgZGVzY3JpcHRvciBub2RlJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBEZXNjcmlwdG9yKTogRGVzY3JpcHRvckJ1aWxkZXIge1xuICBjb25zdCBidWlsZGVyID0gcGFyc2VEZXNjcmlwdG9yTm9kZShkZXNjcmlwdG9yLm5vZGUoKSk7XG4gIGlmIChnZXREZXNjcmlwdG9yRnJvbUJ1aWxkZXIoYnVpbGRlcikudG9TdHJpbmcoKSAhPT0gZGVzY3JpcHRvci50b1N0cmluZygpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gcGFyc2UgZGVzY3JpcHRvcicpO1xuICB9XG4gIHJldHVybiBidWlsZGVyO1xufVxuIl19