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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (761) hide show
  1. package/dist/{src → cjs/src}/abstractUtxoCoin.d.ts +12 -23
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -0
  3. package/dist/cjs/src/abstractUtxoCoin.js +639 -0
  4. package/dist/cjs/src/address/fixedScript.d.ts.map +1 -0
  5. package/dist/cjs/src/address/fixedScript.js +150 -0
  6. package/dist/cjs/src/address/index.d.ts.map +1 -0
  7. package/dist/{src → cjs/src}/address/index.js +1 -1
  8. package/dist/cjs/src/config.d.ts.map +1 -0
  9. package/dist/cjs/src/config.js +14 -0
  10. package/dist/cjs/src/descriptor/NamedDescriptor.d.ts.map +1 -0
  11. package/dist/cjs/src/descriptor/NamedDescriptor.js +79 -0
  12. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
  13. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.js +66 -0
  14. package/dist/cjs/src/descriptor/builder/builder.d.ts.map +1 -0
  15. package/dist/cjs/src/descriptor/builder/builder.js +37 -0
  16. package/dist/cjs/src/descriptor/builder/index.d.ts.map +1 -0
  17. package/dist/{src → cjs/src}/descriptor/builder/index.js +1 -1
  18. package/dist/cjs/src/descriptor/builder/parse.d.ts.map +1 -0
  19. package/dist/cjs/src/descriptor/builder/parse.js +116 -0
  20. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
  21. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.js +41 -0
  22. package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  23. package/dist/cjs/src/descriptor/createWallet/createDescriptors.js +33 -0
  24. package/dist/cjs/src/descriptor/createWallet/index.d.ts.map +1 -0
  25. package/dist/{src → cjs/src}/descriptor/createWallet/index.js +1 -1
  26. package/dist/cjs/src/descriptor/descriptorWallet.d.ts.map +1 -0
  27. package/dist/cjs/src/descriptor/descriptorWallet.js +54 -0
  28. package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
  29. package/dist/{src → cjs/src}/descriptor/index.js +1 -1
  30. package/dist/cjs/src/descriptor/validatePolicy.d.ts.map +1 -0
  31. package/dist/cjs/src/descriptor/validatePolicy.js +92 -0
  32. package/dist/cjs/src/impl/bch/bch.d.ts.map +1 -0
  33. package/dist/cjs/src/impl/bch/bch.js +70 -0
  34. package/dist/cjs/src/impl/bch/index.d.ts.map +1 -0
  35. package/dist/{src → cjs/src}/impl/bch/index.js +1 -1
  36. package/dist/cjs/src/impl/bch/tbch.d.ts.map +1 -0
  37. package/dist/{src → cjs/src}/impl/bch/tbch.js +1 -1
  38. package/dist/cjs/src/impl/bcha/bcha.d.ts.map +1 -0
  39. package/dist/{src → cjs/src}/impl/bcha/bcha.js +1 -1
  40. package/dist/cjs/src/impl/bcha/index.d.ts.map +1 -0
  41. package/dist/{src → cjs/src}/impl/bcha/index.js +1 -1
  42. package/dist/cjs/src/impl/bcha/tbcha.d.ts.map +1 -0
  43. package/dist/{src → cjs/src}/impl/bcha/tbcha.js +1 -1
  44. package/dist/cjs/src/impl/bsv/bsv.d.ts.map +1 -0
  45. package/dist/{src → cjs/src}/impl/bsv/bsv.js +1 -1
  46. package/dist/cjs/src/impl/bsv/index.d.ts.map +1 -0
  47. package/dist/{src → cjs/src}/impl/bsv/index.js +1 -1
  48. package/dist/cjs/src/impl/bsv/tbsv.d.ts.map +1 -0
  49. package/dist/{src → cjs/src}/impl/bsv/tbsv.js +1 -1
  50. package/dist/cjs/src/impl/btc/btc.d.ts.map +1 -0
  51. package/dist/{src → cjs/src}/impl/btc/btc.js +1 -1
  52. package/dist/cjs/src/impl/btc/index.d.ts.map +1 -0
  53. package/dist/{src → cjs/src}/impl/btc/index.js +1 -1
  54. package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts.map +1 -0
  55. package/dist/cjs/src/impl/btc/inscriptionBuilder.js +183 -0
  56. package/dist/cjs/src/impl/btc/tbtc.d.ts.map +1 -0
  57. package/dist/{src → cjs/src}/impl/btc/tbtc.js +1 -1
  58. package/dist/cjs/src/impl/btc/tbtc4.d.ts.map +1 -0
  59. package/dist/{src → cjs/src}/impl/btc/tbtc4.js +1 -1
  60. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts.map +1 -0
  61. package/dist/{src → cjs/src}/impl/btc/tbtcbgsig.js +1 -1
  62. package/dist/cjs/src/impl/btc/tbtcsig.d.ts.map +1 -0
  63. package/dist/{src → cjs/src}/impl/btc/tbtcsig.js +1 -1
  64. package/dist/cjs/src/impl/btg/btg.d.ts.map +1 -0
  65. package/dist/{src/impl/dash/dash.js → cjs/src/impl/btg/btg.js} +6 -6
  66. package/dist/cjs/src/impl/btg/index.d.ts.map +1 -0
  67. package/dist/{src → cjs/src}/impl/btg/index.js +1 -1
  68. package/dist/cjs/src/impl/dash/dash.d.ts.map +1 -0
  69. package/dist/cjs/src/impl/dash/dash.js +48 -0
  70. package/dist/cjs/src/impl/dash/index.d.ts.map +1 -0
  71. package/dist/{src → cjs/src}/impl/dash/index.js +1 -1
  72. package/dist/cjs/src/impl/dash/tdash.d.ts.map +1 -0
  73. package/dist/{src → cjs/src}/impl/dash/tdash.js +1 -1
  74. package/dist/{src → cjs/src}/impl/doge/doge.d.ts +3 -2
  75. package/dist/cjs/src/impl/doge/doge.d.ts.map +1 -0
  76. package/dist/cjs/src/impl/doge/doge.js +79 -0
  77. package/dist/cjs/src/impl/doge/index.d.ts.map +1 -0
  78. package/dist/{src → cjs/src}/impl/doge/index.js +1 -1
  79. package/dist/cjs/src/impl/doge/tdoge.d.ts.map +1 -0
  80. package/dist/{src → cjs/src}/impl/doge/tdoge.js +1 -1
  81. package/dist/cjs/src/impl/index.d.ts.map +1 -0
  82. package/dist/{src → cjs/src}/impl/index.js +1 -1
  83. package/dist/cjs/src/impl/ltc/index.d.ts.map +1 -0
  84. package/dist/{src → cjs/src}/impl/ltc/index.js +1 -1
  85. package/dist/cjs/src/impl/ltc/ltc.d.ts.map +1 -0
  86. package/dist/{src → cjs/src}/impl/ltc/ltc.js +1 -1
  87. package/dist/cjs/src/impl/ltc/tltc.d.ts.map +1 -0
  88. package/dist/{src → cjs/src}/impl/ltc/tltc.js +1 -1
  89. package/dist/cjs/src/impl/zec/index.d.ts.map +1 -0
  90. package/dist/{src → cjs/src}/impl/zec/index.js +1 -1
  91. package/dist/cjs/src/impl/zec/tzec.d.ts.map +1 -0
  92. package/dist/{src → cjs/src}/impl/zec/tzec.js +1 -1
  93. package/dist/cjs/src/impl/zec/zec.d.ts.map +1 -0
  94. package/dist/{src → cjs/src}/impl/zec/zec.js +1 -1
  95. package/dist/cjs/src/index.d.ts.map +1 -0
  96. package/dist/{src → cjs/src}/index.js +1 -1
  97. package/dist/cjs/src/keychains.d.ts.map +1 -0
  98. package/dist/cjs/src/keychains.js +104 -0
  99. package/dist/cjs/src/names.d.ts.map +1 -0
  100. package/dist/cjs/src/names.js +214 -0
  101. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
  102. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.js +26 -0
  103. package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
  104. package/dist/cjs/src/offlineVault/OfflineVaultSignable.js +55 -0
  105. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts.map +1 -0
  106. package/dist/cjs/src/offlineVault/TransactionExplanation.js +16 -0
  107. package/dist/cjs/src/offlineVault/descriptor/index.d.ts.map +1 -0
  108. package/dist/{src → cjs/src}/offlineVault/descriptor/index.js +1 -1
  109. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts.map +1 -0
  110. package/dist/cjs/src/offlineVault/descriptor/transaction.js +80 -0
  111. package/dist/cjs/src/offlineVault/index.d.ts.map +1 -0
  112. package/dist/{src → cjs/src}/offlineVault/index.js +1 -1
  113. package/dist/cjs/src/recovery/RecoveryProvider.d.ts.map +1 -0
  114. package/dist/cjs/src/recovery/RecoveryProvider.js +22 -0
  115. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -0
  116. package/dist/cjs/src/recovery/backupKeyRecovery.js +370 -0
  117. package/dist/cjs/src/recovery/baseApi.d.ts.map +1 -0
  118. package/dist/cjs/src/recovery/baseApi.js +73 -0
  119. package/dist/cjs/src/recovery/coingeckoApi.d.ts.map +1 -0
  120. package/dist/cjs/src/recovery/coingeckoApi.js +44 -0
  121. package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -0
  122. package/dist/cjs/src/recovery/crossChainRecovery.js +364 -0
  123. package/dist/cjs/src/recovery/index.d.ts.map +1 -0
  124. package/dist/{src → cjs/src}/recovery/index.js +1 -1
  125. package/dist/cjs/src/recovery/mempoolApi.d.ts.map +1 -0
  126. package/dist/cjs/src/recovery/mempoolApi.js +36 -0
  127. package/dist/{src → cjs/src}/replayProtection.d.ts +1 -0
  128. package/dist/cjs/src/replayProtection.d.ts.map +1 -0
  129. package/dist/cjs/src/replayProtection.js +58 -0
  130. package/dist/cjs/src/sign.d.ts.map +1 -0
  131. package/dist/cjs/src/sign.js +205 -0
  132. package/dist/cjs/src/transaction/bip322.d.ts.map +1 -0
  133. package/dist/cjs/src/transaction/bip322.js +125 -0
  134. package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
  135. package/dist/cjs/src/transaction/common/verifyPayGoAmount.js +3 -0
  136. package/dist/{src → cjs/src}/transaction/descriptor/explainPsbt.d.ts +2 -2
  137. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  138. package/dist/cjs/src/transaction/descriptor/explainPsbt.js +80 -0
  139. package/dist/cjs/src/transaction/descriptor/index.d.ts.map +1 -0
  140. package/dist/{src → cjs/src}/transaction/descriptor/index.js +1 -1
  141. package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -0
  142. package/dist/cjs/src/transaction/descriptor/parse.js +116 -0
  143. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
  144. package/dist/cjs/src/transaction/descriptor/parseToAmountType.js +60 -0
  145. package/dist/cjs/src/transaction/descriptor/recipient.d.ts.map +1 -0
  146. package/dist/cjs/src/transaction/descriptor/recipient.js +3 -0
  147. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts.map +1 -0
  148. package/dist/cjs/src/transaction/descriptor/signPsbt.js +43 -0
  149. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
  150. package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +108 -0
  151. package/dist/{src → cjs/src}/transaction/explainTransaction.d.ts +4 -3
  152. package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -0
  153. package/dist/cjs/src/transaction/explainTransaction.js +88 -0
  154. package/dist/cjs/src/transaction/fetchInputs.d.ts.map +1 -0
  155. package/dist/cjs/src/transaction/fetchInputs.js +109 -0
  156. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts +10 -0
  157. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  158. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.js +43 -0
  159. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +63 -0
  160. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  161. package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +321 -0
  162. package/dist/{src → cjs/src}/transaction/fixedScript/index.d.ts +1 -0
  163. package/dist/cjs/src/transaction/fixedScript/index.d.ts.map +1 -0
  164. package/dist/{src → cjs/src}/transaction/fixedScript/index.js +4 -2
  165. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  166. package/dist/cjs/src/transaction/fixedScript/parseOutput.js +213 -0
  167. package/dist/{src → cjs/src}/transaction/fixedScript/parseTransaction.d.ts +1 -1
  168. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  169. package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +203 -0
  170. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -0
  171. package/dist/cjs/src/transaction/fixedScript/signTransaction.js +101 -0
  172. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  173. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.js +198 -0
  174. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
  175. package/dist/{src → cjs/src}/transaction/getPayGoVerificationPubkey.js +1 -1
  176. package/dist/cjs/src/transaction/index.d.ts.map +1 -0
  177. package/dist/{src → cjs/src}/transaction/index.js +1 -1
  178. package/dist/cjs/src/transaction/outputDifference.d.ts.map +1 -0
  179. package/dist/cjs/src/transaction/outputDifference.js +47 -0
  180. package/dist/cjs/src/transaction/parseTransaction.d.ts.map +1 -0
  181. package/dist/{src → cjs/src}/transaction/parseTransaction.js +1 -1
  182. package/dist/cjs/src/transaction/recipient.d.ts.map +1 -0
  183. package/dist/cjs/src/transaction/recipient.js +88 -0
  184. package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -0
  185. package/dist/cjs/src/transaction/signTransaction.js +102 -0
  186. package/dist/cjs/src/transaction/verifyTransaction.d.ts.map +1 -0
  187. package/dist/{src → cjs/src}/transaction/verifyTransaction.js +1 -1
  188. package/dist/cjs/src/verifyKey.d.ts.map +1 -0
  189. package/dist/cjs/src/verifyKey.js +164 -0
  190. package/dist/cjs/src/wallet.d.ts.map +1 -0
  191. package/dist/cjs/src/wallet.js +8 -0
  192. package/dist/cjs/test/integration/impl/bch/bch.d.ts +2 -0
  193. package/dist/cjs/test/integration/impl/bch/bch.d.ts.map +1 -0
  194. package/dist/cjs/test/integration/impl/bch/bch.js +74 -0
  195. package/dist/cjs/test/unit/address.d.ts +2 -0
  196. package/dist/cjs/test/unit/address.d.ts.map +1 -0
  197. package/dist/cjs/test/unit/address.js +182 -0
  198. package/dist/cjs/test/unit/bip322.d.ts +2 -0
  199. package/dist/cjs/test/unit/bip322.d.ts.map +1 -0
  200. package/dist/cjs/test/unit/bip322.js +45 -0
  201. package/dist/cjs/test/unit/coins.d.ts +2 -0
  202. package/dist/cjs/test/unit/coins.d.ts.map +1 -0
  203. package/dist/cjs/test/unit/coins.js +97 -0
  204. package/dist/cjs/test/unit/customChangeWallet.d.ts +2 -0
  205. package/dist/cjs/test/unit/customChangeWallet.d.ts.map +1 -0
  206. package/dist/cjs/test/unit/customChangeWallet.js +154 -0
  207. package/dist/cjs/test/unit/customSigner.d.ts +3 -0
  208. package/dist/cjs/test/unit/customSigner.d.ts.map +1 -0
  209. package/dist/cjs/test/unit/customSigner.js +108 -0
  210. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts +2 -0
  211. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts.map +1 -0
  212. package/dist/cjs/test/unit/descriptor/NamedDescriptor.js +18 -0
  213. package/dist/cjs/test/unit/descriptor/builder.d.ts +2 -0
  214. package/dist/cjs/test/unit/descriptor/builder.d.ts.map +1 -0
  215. package/dist/cjs/test/unit/descriptor/builder.js +72 -0
  216. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts +2 -0
  217. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  218. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.js +20 -0
  219. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts +2 -0
  220. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts.map +1 -0
  221. package/dist/cjs/test/unit/descriptor/descriptorWallet.js +28 -0
  222. package/dist/cjs/test/unit/descriptorAddress.d.ts +3 -0
  223. package/dist/cjs/test/unit/descriptorAddress.d.ts.map +1 -0
  224. package/dist/cjs/test/unit/descriptorAddress.js +102 -0
  225. package/dist/cjs/test/unit/explainTransaction.d.ts +2 -0
  226. package/dist/cjs/test/unit/explainTransaction.d.ts.map +1 -0
  227. package/dist/cjs/test/unit/explainTransaction.js +74 -0
  228. package/dist/cjs/test/unit/fixtures/bip322/fixtures.d.ts +15 -0
  229. package/dist/cjs/test/unit/fixtures/bip322/fixtures.d.ts.map +1 -0
  230. package/dist/cjs/test/unit/fixtures/bip322/fixtures.js +51 -0
  231. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts +4 -0
  232. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts.map +1 -0
  233. package/dist/cjs/test/unit/fixtures/psbtHexProof.js +9 -0
  234. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts +2 -0
  235. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts.map +1 -0
  236. package/dist/cjs/test/unit/impl/bch/unit/bch.js +138 -0
  237. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts +2 -0
  238. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts.map +1 -0
  239. package/dist/cjs/test/unit/impl/bcha/unit/index.js +47 -0
  240. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts +2 -0
  241. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts.map +1 -0
  242. package/dist/cjs/test/unit/impl/bsv/unit/index.js +32 -0
  243. package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts +2 -0
  244. package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts.map +1 -0
  245. package/dist/cjs/test/unit/impl/btc/unit/btc.js +220 -0
  246. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts +4 -0
  247. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts.map +1 -0
  248. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.js +10 -0
  249. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts +2 -0
  250. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts.map +1 -0
  251. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.js +18 -0
  252. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts +2 -0
  253. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts.map +1 -0
  254. package/dist/cjs/test/unit/impl/btg/unit/index.js +29 -0
  255. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts +2 -0
  256. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts.map +1 -0
  257. package/dist/cjs/test/unit/impl/dash/unit/index.js +32 -0
  258. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts +2 -0
  259. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts.map +1 -0
  260. package/dist/cjs/test/unit/impl/doge/unit/index.js +32 -0
  261. package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts +2 -0
  262. package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts.map +1 -0
  263. package/dist/cjs/test/unit/impl/ltc/unit/index.js +39 -0
  264. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts +2 -0
  265. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts.map +1 -0
  266. package/dist/cjs/test/unit/impl/zec/unit/index.js +29 -0
  267. package/dist/cjs/test/unit/keySignatures.d.ts +2 -0
  268. package/dist/cjs/test/unit/keySignatures.d.ts.map +1 -0
  269. package/dist/cjs/test/unit/keySignatures.js +54 -0
  270. package/dist/cjs/test/unit/keychains.d.ts +2 -0
  271. package/dist/cjs/test/unit/keychains.d.ts.map +1 -0
  272. package/dist/cjs/test/unit/keychains.js +49 -0
  273. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts +2 -0
  274. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts.map +1 -0
  275. package/dist/cjs/test/unit/offlineVault/halfSigned.js +124 -0
  276. package/dist/cjs/test/unit/parseTransaction.d.ts +2 -0
  277. package/dist/cjs/test/unit/parseTransaction.d.ts.map +1 -0
  278. package/dist/cjs/test/unit/parseTransaction.js +125 -0
  279. package/dist/cjs/test/unit/prebuildAndSign.d.ts +6 -0
  280. package/dist/cjs/test/unit/prebuildAndSign.d.ts.map +1 -0
  281. package/dist/cjs/test/unit/prebuildAndSign.js +270 -0
  282. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts +2 -0
  283. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts.map +1 -0
  284. package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +285 -0
  285. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts +2 -0
  286. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts.map +1 -0
  287. package/dist/cjs/test/unit/recovery/crossChainRecovery.js +283 -0
  288. package/dist/cjs/test/unit/recovery/mock.d.ts +30 -0
  289. package/dist/cjs/test/unit/recovery/mock.d.ts.map +1 -0
  290. package/dist/cjs/test/unit/recovery/mock.js +138 -0
  291. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts +2 -0
  292. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  293. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.js +30 -0
  294. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts +6 -0
  295. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts.map +1 -0
  296. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.js +17 -0
  297. package/dist/cjs/test/unit/transaction/descriptor/outputDifference.d.ts +2 -0
  298. package/dist/cjs/test/unit/transaction/descriptor/outputDifference.d.ts.map +1 -0
  299. package/dist/cjs/test/unit/transaction/descriptor/outputDifference.js +76 -0
  300. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts +2 -0
  301. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts.map +1 -0
  302. package/dist/cjs/test/unit/transaction/descriptor/parse.js +135 -0
  303. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts +2 -0
  304. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts.map +1 -0
  305. package/dist/cjs/test/unit/transaction/descriptor/sign.js +32 -0
  306. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts +2 -0
  307. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts.map +1 -0
  308. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.js +48 -0
  309. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts +2 -0
  310. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts.map +1 -0
  311. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.js +108 -0
  312. package/dist/cjs/test/unit/transaction.d.ts +2 -0
  313. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  314. package/dist/cjs/test/unit/transaction.js +501 -0
  315. package/dist/cjs/test/unit/txFormat.d.ts +30 -0
  316. package/dist/cjs/test/unit/txFormat.d.ts.map +1 -0
  317. package/dist/cjs/test/unit/txFormat.js +162 -0
  318. package/dist/cjs/test/unit/util/fixtures.d.ts +14 -0
  319. package/dist/cjs/test/unit/util/fixtures.d.ts.map +1 -0
  320. package/dist/cjs/test/unit/util/fixtures.js +102 -0
  321. package/dist/cjs/test/unit/util/index.d.ts +7 -0
  322. package/dist/cjs/test/unit/util/index.d.ts.map +1 -0
  323. package/dist/cjs/test/unit/util/index.js +23 -0
  324. package/dist/cjs/test/unit/util/keychains.d.ts +26 -0
  325. package/dist/cjs/test/unit/util/keychains.d.ts.map +1 -0
  326. package/dist/cjs/test/unit/util/keychains.js +72 -0
  327. package/dist/cjs/test/unit/util/nockBitGo.d.ts +3 -0
  328. package/dist/cjs/test/unit/util/nockBitGo.d.ts.map +1 -0
  329. package/dist/cjs/test/unit/util/nockBitGo.js +11 -0
  330. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts +8 -0
  331. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts.map +1 -0
  332. package/dist/cjs/test/unit/util/nockIndexerAPI.js +56 -0
  333. package/dist/cjs/test/unit/util/transaction.d.ts +24 -0
  334. package/dist/cjs/test/unit/util/transaction.d.ts.map +1 -0
  335. package/dist/cjs/test/unit/util/transaction.js +107 -0
  336. package/dist/cjs/test/unit/util/unspents.d.ts +13 -0
  337. package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -0
  338. package/dist/cjs/test/unit/util/unspents.js +106 -0
  339. package/dist/cjs/test/unit/util/utxoCoins.d.ts +8 -0
  340. package/dist/cjs/test/unit/util/utxoCoins.d.ts.map +1 -0
  341. package/dist/cjs/test/unit/util/utxoCoins.js +95 -0
  342. package/dist/cjs/test/unit/util/wallet.d.ts +4 -0
  343. package/dist/cjs/test/unit/util/wallet.d.ts.map +1 -0
  344. package/dist/cjs/test/unit/util/wallet.js +9 -0
  345. package/dist/cjs/test/unit/verifyTransaction.d.ts +2 -0
  346. package/dist/cjs/test/unit/verifyTransaction.d.ts.map +1 -0
  347. package/dist/cjs/test/unit/verifyTransaction.js +327 -0
  348. package/dist/cjs/test/unit/wallet.d.ts +2 -0
  349. package/dist/cjs/test/unit/wallet.d.ts.map +1 -0
  350. package/dist/cjs/test/unit/wallet.js +248 -0
  351. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  352. package/dist/esm/abstractUtxoCoin.d.ts +464 -0
  353. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -0
  354. package/dist/esm/abstractUtxoCoin.js +598 -0
  355. package/dist/esm/address/fixedScript.d.ts +51 -0
  356. package/dist/esm/address/fixedScript.js +109 -0
  357. package/dist/esm/address/index.d.ts +2 -0
  358. package/dist/esm/address/index.js +2 -0
  359. package/dist/esm/config.d.ts +9 -0
  360. package/dist/esm/config.js +11 -0
  361. package/dist/esm/descriptor/NamedDescriptor.d.ts +20 -0
  362. package/dist/esm/descriptor/NamedDescriptor.js +39 -0
  363. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
  364. package/dist/esm/descriptor/assertDescriptorWalletAddress.js +27 -0
  365. package/dist/esm/descriptor/builder/builder.d.ts +13 -0
  366. package/dist/esm/descriptor/builder/builder.js +34 -0
  367. package/dist/esm/descriptor/builder/index.d.ts +3 -0
  368. package/dist/esm/descriptor/builder/index.js +3 -0
  369. package/dist/esm/descriptor/builder/parse.d.ts +5 -0
  370. package/dist/esm/descriptor/builder/parse.js +112 -0
  371. package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
  372. package/dist/esm/descriptor/createWallet/createDescriptorWallet.js +37 -0
  373. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts +12 -0
  374. package/dist/esm/descriptor/createWallet/createDescriptors.js +29 -0
  375. package/dist/esm/descriptor/createWallet/index.d.ts +3 -0
  376. package/dist/esm/descriptor/createWallet/index.js +3 -0
  377. package/dist/esm/descriptor/descriptorWallet.d.ts +19 -0
  378. package/dist/esm/descriptor/descriptorWallet.js +16 -0
  379. package/dist/esm/descriptor/index.d.ts +8 -0
  380. package/dist/esm/descriptor/index.js +7 -0
  381. package/dist/esm/descriptor/validatePolicy.d.ts +22 -0
  382. package/dist/esm/descriptor/validatePolicy.js +80 -0
  383. package/dist/esm/impl/bch/bch.d.ts +20 -0
  384. package/dist/esm/impl/bch/bch.js +33 -0
  385. package/dist/esm/impl/bch/index.d.ts +3 -0
  386. package/dist/esm/impl/bch/index.js +3 -0
  387. package/dist/esm/impl/bch/tbch.d.ts +10 -0
  388. package/dist/esm/impl/bch/tbch.js +11 -0
  389. package/dist/esm/impl/bcha/bcha.d.ts +9 -0
  390. package/dist/esm/impl/bcha/bcha.js +21 -0
  391. package/dist/esm/impl/bcha/index.d.ts +3 -0
  392. package/dist/esm/impl/bcha/index.js +3 -0
  393. package/dist/esm/impl/bcha/tbcha.d.ts +10 -0
  394. package/dist/esm/impl/bcha/tbcha.js +11 -0
  395. package/dist/esm/impl/bsv/bsv.d.ts +8 -0
  396. package/dist/esm/impl/bsv/bsv.js +11 -0
  397. package/dist/esm/impl/bsv/index.d.ts +3 -0
  398. package/dist/esm/impl/bsv/index.js +3 -0
  399. package/dist/esm/impl/bsv/tbsv.d.ts +10 -0
  400. package/dist/esm/impl/bsv/tbsv.js +11 -0
  401. package/dist/esm/impl/btc/btc.d.ts +13 -0
  402. package/dist/esm/impl/btc/btc.js +18 -0
  403. package/dist/esm/impl/btc/index.d.ts +7 -0
  404. package/dist/esm/impl/btc/index.js +7 -0
  405. package/dist/esm/impl/btc/inscriptionBuilder.d.ts +51 -0
  406. package/dist/esm/impl/btc/inscriptionBuilder.js +143 -0
  407. package/dist/esm/impl/btc/tbtc.d.ts +10 -0
  408. package/dist/esm/impl/btc/tbtc.js +11 -0
  409. package/dist/esm/impl/btc/tbtc4.d.ts +10 -0
  410. package/dist/esm/impl/btc/tbtc4.js +11 -0
  411. package/dist/esm/impl/btc/tbtcbgsig.d.ts +10 -0
  412. package/dist/esm/impl/btc/tbtcbgsig.js +11 -0
  413. package/dist/esm/impl/btc/tbtcsig.d.ts +10 -0
  414. package/dist/esm/impl/btc/tbtcsig.js +11 -0
  415. package/dist/esm/impl/btg/btg.d.ts +7 -0
  416. package/dist/esm/impl/btg/btg.js +11 -0
  417. package/dist/esm/impl/btg/index.d.ts +2 -0
  418. package/dist/esm/impl/btg/index.js +2 -0
  419. package/dist/esm/impl/dash/dash.d.ts +7 -0
  420. package/dist/esm/impl/dash/dash.js +11 -0
  421. package/dist/esm/impl/dash/index.d.ts +3 -0
  422. package/dist/esm/impl/dash/index.js +3 -0
  423. package/dist/esm/impl/dash/tdash.d.ts +10 -0
  424. package/dist/esm/impl/dash/tdash.js +11 -0
  425. package/dist/esm/impl/doge/doge.d.ts +31 -0
  426. package/dist/esm/impl/doge/doge.d.ts.map +1 -0
  427. package/dist/esm/impl/doge/doge.js +75 -0
  428. package/dist/esm/impl/doge/index.d.ts +3 -0
  429. package/dist/esm/impl/doge/index.js +3 -0
  430. package/dist/esm/impl/doge/tdoge.d.ts +10 -0
  431. package/dist/esm/impl/doge/tdoge.js +11 -0
  432. package/dist/esm/impl/index.d.ts +10 -0
  433. package/dist/esm/impl/index.js +10 -0
  434. package/dist/esm/impl/ltc/index.d.ts +3 -0
  435. package/dist/esm/impl/ltc/index.js +3 -0
  436. package/dist/esm/impl/ltc/ltc.d.ts +7 -0
  437. package/dist/esm/impl/ltc/ltc.js +15 -0
  438. package/dist/esm/impl/ltc/tltc.d.ts +7 -0
  439. package/dist/esm/impl/ltc/tltc.js +14 -0
  440. package/dist/esm/impl/zec/index.d.ts +3 -0
  441. package/dist/esm/impl/zec/index.js +3 -0
  442. package/dist/esm/impl/zec/tzec.d.ts +7 -0
  443. package/dist/esm/impl/zec/tzec.js +11 -0
  444. package/dist/esm/impl/zec/zec.d.ts +10 -0
  445. package/dist/esm/impl/zec/zec.js +11 -0
  446. package/dist/esm/index.d.ts +21 -0
  447. package/dist/esm/index.js +21 -0
  448. package/dist/esm/keychains.d.ts +48 -0
  449. package/dist/esm/keychains.js +61 -0
  450. package/dist/esm/names.d.ts +26 -0
  451. package/dist/esm/names.js +171 -0
  452. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts +8 -0
  453. package/dist/esm/offlineVault/OfflineVaultHalfSigned.js +23 -0
  454. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts +46 -0
  455. package/dist/esm/offlineVault/OfflineVaultSignable.js +18 -0
  456. package/dist/esm/offlineVault/TransactionExplanation.d.ts +15 -0
  457. package/dist/esm/offlineVault/TransactionExplanation.js +13 -0
  458. package/dist/esm/offlineVault/descriptor/index.d.ts +2 -0
  459. package/dist/esm/offlineVault/descriptor/index.js +2 -0
  460. package/dist/esm/offlineVault/descriptor/transaction.d.ts +38 -0
  461. package/dist/esm/offlineVault/descriptor/transaction.js +41 -0
  462. package/dist/esm/offlineVault/index.d.ts +6 -0
  463. package/dist/esm/offlineVault/index.js +4 -0
  464. package/dist/esm/recovery/RecoveryProvider.d.ts +22 -0
  465. package/dist/{src → esm}/recovery/RecoveryProvider.js +6 -9
  466. package/dist/esm/recovery/backupKeyRecovery.d.ts +88 -0
  467. package/dist/esm/recovery/backupKeyRecovery.js +329 -0
  468. package/dist/esm/recovery/baseApi.d.ts +24 -0
  469. package/dist/esm/recovery/baseApi.js +64 -0
  470. package/dist/esm/recovery/coingeckoApi.d.ts +6 -0
  471. package/dist/esm/recovery/coingeckoApi.js +40 -0
  472. package/dist/esm/recovery/crossChainRecovery.d.ts +86 -0
  473. package/dist/esm/recovery/crossChainRecovery.js +325 -0
  474. package/dist/esm/recovery/index.d.ts +7 -0
  475. package/dist/esm/recovery/index.js +7 -0
  476. package/dist/esm/recovery/mempoolApi.d.ts +7 -0
  477. package/dist/esm/recovery/mempoolApi.js +29 -0
  478. package/dist/esm/replayProtection.d.ts +5 -0
  479. package/dist/esm/replayProtection.d.ts.map +1 -0
  480. package/dist/esm/replayProtection.js +20 -0
  481. package/dist/esm/sign.d.ts +54 -0
  482. package/dist/esm/sign.js +162 -0
  483. package/dist/esm/transaction/bip322.d.ts +27 -0
  484. package/dist/esm/transaction/bip322.js +86 -0
  485. package/dist/esm/transaction/common/verifyPayGoAmount.d.ts +1 -0
  486. package/dist/{src → esm}/transaction/common/verifyPayGoAmount.js +0 -2
  487. package/dist/esm/transaction/descriptor/explainPsbt.d.ts +5 -0
  488. package/dist/esm/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  489. package/dist/esm/transaction/descriptor/explainPsbt.js +44 -0
  490. package/dist/esm/transaction/descriptor/index.d.ts +7 -0
  491. package/dist/esm/transaction/descriptor/index.js +6 -0
  492. package/dist/esm/transaction/descriptor/parse.d.ts +15 -0
  493. package/dist/esm/transaction/descriptor/parse.js +79 -0
  494. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts +13 -0
  495. package/dist/esm/transaction/descriptor/parseToAmountType.js +55 -0
  496. package/dist/esm/transaction/descriptor/recipient.d.ts +5 -0
  497. package/dist/{src → esm}/transaction/descriptor/recipient.js +1 -2
  498. package/dist/esm/transaction/descriptor/signPsbt.d.ts +25 -0
  499. package/dist/esm/transaction/descriptor/signPsbt.js +38 -0
  500. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +35 -0
  501. package/dist/esm/transaction/descriptor/verifyTransaction.js +65 -0
  502. package/dist/esm/transaction/explainTransaction.d.ts +18 -0
  503. package/dist/esm/transaction/explainTransaction.d.ts.map +1 -0
  504. package/dist/esm/transaction/explainTransaction.js +52 -0
  505. package/dist/esm/transaction/fetchInputs.d.ts +26 -0
  506. package/dist/esm/transaction/fetchInputs.js +72 -0
  507. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts +10 -0
  508. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  509. package/dist/esm/transaction/fixedScript/explainPsbtWasm.js +40 -0
  510. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +63 -0
  511. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  512. package/dist/esm/transaction/fixedScript/explainTransaction.js +284 -0
  513. package/dist/esm/transaction/fixedScript/index.d.ts +7 -0
  514. package/dist/esm/transaction/fixedScript/index.d.ts.map +1 -0
  515. package/dist/esm/transaction/fixedScript/index.js +6 -0
  516. package/dist/esm/transaction/fixedScript/parseOutput.d.ts +26 -0
  517. package/dist/{src → esm}/transaction/fixedScript/parseOutput.js +22 -28
  518. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts +7 -0
  519. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  520. package/dist/esm/transaction/fixedScript/parseTransaction.js +164 -0
  521. package/dist/esm/transaction/fixedScript/signTransaction.d.ts +18 -0
  522. package/dist/esm/transaction/fixedScript/signTransaction.js +95 -0
  523. package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts +21 -0
  524. package/dist/esm/transaction/fixedScript/verifyTransaction.js +159 -0
  525. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts +9 -0
  526. package/dist/esm/transaction/getPayGoVerificationPubkey.js +17 -0
  527. package/dist/esm/transaction/index.d.ts +7 -0
  528. package/dist/esm/transaction/index.js +7 -0
  529. package/dist/esm/transaction/outputDifference.d.ts +40 -0
  530. package/dist/esm/transaction/outputDifference.js +42 -0
  531. package/dist/esm/transaction/parseTransaction.d.ts +3 -0
  532. package/dist/esm/transaction/parseTransaction.js +12 -0
  533. package/dist/esm/transaction/recipient.d.ts +29 -0
  534. package/dist/esm/transaction/recipient.js +48 -0
  535. package/dist/esm/transaction/signTransaction.d.ts +6 -0
  536. package/dist/esm/transaction/signTransaction.js +63 -0
  537. package/dist/esm/transaction/verifyTransaction.d.ts +4 -0
  538. package/dist/esm/transaction/verifyTransaction.js +14 -0
  539. package/dist/esm/verifyKey.d.ts +28 -0
  540. package/dist/esm/verifyKey.js +123 -0
  541. package/dist/esm/wallet.d.ts +15 -0
  542. package/dist/esm/wallet.js +5 -0
  543. package/package.json +32 -15
  544. package/dist/src/abstractUtxoCoin.d.ts.map +0 -1
  545. package/dist/src/abstractUtxoCoin.js +0 -634
  546. package/dist/src/address/fixedScript.js +0 -150
  547. package/dist/src/config.js +0 -14
  548. package/dist/src/descriptor/NamedDescriptor.js +0 -79
  549. package/dist/src/descriptor/assertDescriptorWalletAddress.js +0 -66
  550. package/dist/src/descriptor/builder/builder.js +0 -37
  551. package/dist/src/descriptor/builder/parse.js +0 -116
  552. package/dist/src/descriptor/createWallet/createDescriptorWallet.js +0 -41
  553. package/dist/src/descriptor/createWallet/createDescriptors.js +0 -33
  554. package/dist/src/descriptor/descriptorWallet.js +0 -54
  555. package/dist/src/descriptor/validatePolicy.js +0 -92
  556. package/dist/src/impl/bch/bch.js +0 -70
  557. package/dist/src/impl/btc/inscriptionBuilder.js +0 -183
  558. package/dist/src/impl/btg/btg.js +0 -48
  559. package/dist/src/impl/doge/doge.d.ts.map +0 -1
  560. package/dist/src/impl/doge/doge.js +0 -79
  561. package/dist/src/keychains.js +0 -104
  562. package/dist/src/names.js +0 -214
  563. package/dist/src/offlineVault/OfflineVaultHalfSigned.js +0 -26
  564. package/dist/src/offlineVault/OfflineVaultSignable.js +0 -55
  565. package/dist/src/offlineVault/TransactionExplanation.js +0 -16
  566. package/dist/src/offlineVault/descriptor/transaction.js +0 -80
  567. package/dist/src/recovery/backupKeyRecovery.js +0 -370
  568. package/dist/src/recovery/baseApi.js +0 -73
  569. package/dist/src/recovery/coingeckoApi.js +0 -44
  570. package/dist/src/recovery/crossChainRecovery.js +0 -364
  571. package/dist/src/recovery/mempoolApi.js +0 -36
  572. package/dist/src/replayProtection.d.ts.map +0 -1
  573. package/dist/src/replayProtection.js +0 -53
  574. package/dist/src/sign.js +0 -205
  575. package/dist/src/transaction/bip322.js +0 -125
  576. package/dist/src/transaction/descriptor/explainPsbt.d.ts.map +0 -1
  577. package/dist/src/transaction/descriptor/explainPsbt.js +0 -80
  578. package/dist/src/transaction/descriptor/parse.js +0 -116
  579. package/dist/src/transaction/descriptor/parseToAmountType.js +0 -60
  580. package/dist/src/transaction/descriptor/signPsbt.js +0 -43
  581. package/dist/src/transaction/descriptor/verifyTransaction.js +0 -108
  582. package/dist/src/transaction/explainTransaction.d.ts.map +0 -1
  583. package/dist/src/transaction/explainTransaction.js +0 -67
  584. package/dist/src/transaction/fetchInputs.js +0 -109
  585. package/dist/src/transaction/fixedScript/explainTransaction.d.ts +0 -29
  586. package/dist/src/transaction/fixedScript/explainTransaction.d.ts.map +0 -1
  587. package/dist/src/transaction/fixedScript/explainTransaction.js +0 -321
  588. package/dist/src/transaction/fixedScript/index.d.ts.map +0 -1
  589. package/dist/src/transaction/fixedScript/parseTransaction.d.ts.map +0 -1
  590. package/dist/src/transaction/fixedScript/parseTransaction.js +0 -203
  591. package/dist/src/transaction/fixedScript/signTransaction.js +0 -101
  592. package/dist/src/transaction/fixedScript/verifyTransaction.js +0 -198
  593. package/dist/src/transaction/outputDifference.js +0 -47
  594. package/dist/src/transaction/recipient.js +0 -88
  595. package/dist/src/transaction/signTransaction.js +0 -102
  596. package/dist/src/verifyKey.js +0 -164
  597. package/dist/src/wallet.js +0 -8
  598. /package/dist/{src → cjs/src}/address/fixedScript.d.ts +0 -0
  599. /package/dist/{src → cjs/src}/address/index.d.ts +0 -0
  600. /package/dist/{src → cjs/src}/config.d.ts +0 -0
  601. /package/dist/{src → cjs/src}/descriptor/NamedDescriptor.d.ts +0 -0
  602. /package/dist/{src → cjs/src}/descriptor/assertDescriptorWalletAddress.d.ts +0 -0
  603. /package/dist/{src → cjs/src}/descriptor/builder/builder.d.ts +0 -0
  604. /package/dist/{src → cjs/src}/descriptor/builder/index.d.ts +0 -0
  605. /package/dist/{src → cjs/src}/descriptor/builder/parse.d.ts +0 -0
  606. /package/dist/{src → cjs/src}/descriptor/createWallet/createDescriptorWallet.d.ts +0 -0
  607. /package/dist/{src → cjs/src}/descriptor/createWallet/createDescriptors.d.ts +0 -0
  608. /package/dist/{src → cjs/src}/descriptor/createWallet/index.d.ts +0 -0
  609. /package/dist/{src → cjs/src}/descriptor/descriptorWallet.d.ts +0 -0
  610. /package/dist/{src → cjs/src}/descriptor/index.d.ts +0 -0
  611. /package/dist/{src → cjs/src}/descriptor/validatePolicy.d.ts +0 -0
  612. /package/dist/{src → cjs/src}/impl/bch/bch.d.ts +0 -0
  613. /package/dist/{src → cjs/src}/impl/bch/index.d.ts +0 -0
  614. /package/dist/{src → cjs/src}/impl/bch/tbch.d.ts +0 -0
  615. /package/dist/{src → cjs/src}/impl/bcha/bcha.d.ts +0 -0
  616. /package/dist/{src → cjs/src}/impl/bcha/index.d.ts +0 -0
  617. /package/dist/{src → cjs/src}/impl/bcha/tbcha.d.ts +0 -0
  618. /package/dist/{src → cjs/src}/impl/bsv/bsv.d.ts +0 -0
  619. /package/dist/{src → cjs/src}/impl/bsv/index.d.ts +0 -0
  620. /package/dist/{src → cjs/src}/impl/bsv/tbsv.d.ts +0 -0
  621. /package/dist/{src → cjs/src}/impl/btc/btc.d.ts +0 -0
  622. /package/dist/{src → cjs/src}/impl/btc/index.d.ts +0 -0
  623. /package/dist/{src → cjs/src}/impl/btc/inscriptionBuilder.d.ts +0 -0
  624. /package/dist/{src → cjs/src}/impl/btc/tbtc.d.ts +0 -0
  625. /package/dist/{src → cjs/src}/impl/btc/tbtc4.d.ts +0 -0
  626. /package/dist/{src → cjs/src}/impl/btc/tbtcbgsig.d.ts +0 -0
  627. /package/dist/{src → cjs/src}/impl/btc/tbtcsig.d.ts +0 -0
  628. /package/dist/{src → cjs/src}/impl/btg/btg.d.ts +0 -0
  629. /package/dist/{src → cjs/src}/impl/btg/index.d.ts +0 -0
  630. /package/dist/{src → cjs/src}/impl/dash/dash.d.ts +0 -0
  631. /package/dist/{src → cjs/src}/impl/dash/index.d.ts +0 -0
  632. /package/dist/{src → cjs/src}/impl/dash/tdash.d.ts +0 -0
  633. /package/dist/{src → cjs/src}/impl/doge/index.d.ts +0 -0
  634. /package/dist/{src → cjs/src}/impl/doge/tdoge.d.ts +0 -0
  635. /package/dist/{src → cjs/src}/impl/index.d.ts +0 -0
  636. /package/dist/{src → cjs/src}/impl/ltc/index.d.ts +0 -0
  637. /package/dist/{src → cjs/src}/impl/ltc/ltc.d.ts +0 -0
  638. /package/dist/{src → cjs/src}/impl/ltc/tltc.d.ts +0 -0
  639. /package/dist/{src → cjs/src}/impl/zec/index.d.ts +0 -0
  640. /package/dist/{src → cjs/src}/impl/zec/tzec.d.ts +0 -0
  641. /package/dist/{src → cjs/src}/impl/zec/zec.d.ts +0 -0
  642. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  643. /package/dist/{src → cjs/src}/keychains.d.ts +0 -0
  644. /package/dist/{src → cjs/src}/names.d.ts +0 -0
  645. /package/dist/{src → cjs/src}/offlineVault/OfflineVaultHalfSigned.d.ts +0 -0
  646. /package/dist/{src → cjs/src}/offlineVault/OfflineVaultSignable.d.ts +0 -0
  647. /package/dist/{src → cjs/src}/offlineVault/TransactionExplanation.d.ts +0 -0
  648. /package/dist/{src → cjs/src}/offlineVault/descriptor/index.d.ts +0 -0
  649. /package/dist/{src → cjs/src}/offlineVault/descriptor/transaction.d.ts +0 -0
  650. /package/dist/{src → cjs/src}/offlineVault/index.d.ts +0 -0
  651. /package/dist/{src → cjs/src}/recovery/RecoveryProvider.d.ts +0 -0
  652. /package/dist/{src → cjs/src}/recovery/backupKeyRecovery.d.ts +0 -0
  653. /package/dist/{src → cjs/src}/recovery/baseApi.d.ts +0 -0
  654. /package/dist/{src → cjs/src}/recovery/coingeckoApi.d.ts +0 -0
  655. /package/dist/{src → cjs/src}/recovery/crossChainRecovery.d.ts +0 -0
  656. /package/dist/{src → cjs/src}/recovery/index.d.ts +0 -0
  657. /package/dist/{src → cjs/src}/recovery/mempoolApi.d.ts +0 -0
  658. /package/dist/{src → cjs/src}/sign.d.ts +0 -0
  659. /package/dist/{src → cjs/src}/transaction/bip322.d.ts +0 -0
  660. /package/dist/{src → cjs/src}/transaction/common/verifyPayGoAmount.d.ts +0 -0
  661. /package/dist/{src → cjs/src}/transaction/descriptor/index.d.ts +0 -0
  662. /package/dist/{src → cjs/src}/transaction/descriptor/parse.d.ts +0 -0
  663. /package/dist/{src → cjs/src}/transaction/descriptor/parseToAmountType.d.ts +0 -0
  664. /package/dist/{src → cjs/src}/transaction/descriptor/recipient.d.ts +0 -0
  665. /package/dist/{src → cjs/src}/transaction/descriptor/signPsbt.d.ts +0 -0
  666. /package/dist/{src → cjs/src}/transaction/descriptor/verifyTransaction.d.ts +0 -0
  667. /package/dist/{src → cjs/src}/transaction/fetchInputs.d.ts +0 -0
  668. /package/dist/{src → cjs/src}/transaction/fixedScript/parseOutput.d.ts +0 -0
  669. /package/dist/{src → cjs/src}/transaction/fixedScript/signTransaction.d.ts +0 -0
  670. /package/dist/{src → cjs/src}/transaction/fixedScript/verifyTransaction.d.ts +0 -0
  671. /package/dist/{src → cjs/src}/transaction/getPayGoVerificationPubkey.d.ts +0 -0
  672. /package/dist/{src → cjs/src}/transaction/index.d.ts +0 -0
  673. /package/dist/{src → cjs/src}/transaction/outputDifference.d.ts +0 -0
  674. /package/dist/{src → cjs/src}/transaction/parseTransaction.d.ts +0 -0
  675. /package/dist/{src → cjs/src}/transaction/recipient.d.ts +0 -0
  676. /package/dist/{src → cjs/src}/transaction/signTransaction.d.ts +0 -0
  677. /package/dist/{src → cjs/src}/transaction/verifyTransaction.d.ts +0 -0
  678. /package/dist/{src → cjs/src}/verifyKey.d.ts +0 -0
  679. /package/dist/{src → cjs/src}/wallet.d.ts +0 -0
  680. /package/dist/{src → esm}/address/fixedScript.d.ts.map +0 -0
  681. /package/dist/{src → esm}/address/index.d.ts.map +0 -0
  682. /package/dist/{src → esm}/config.d.ts.map +0 -0
  683. /package/dist/{src → esm}/descriptor/NamedDescriptor.d.ts.map +0 -0
  684. /package/dist/{src → esm}/descriptor/assertDescriptorWalletAddress.d.ts.map +0 -0
  685. /package/dist/{src → esm}/descriptor/builder/builder.d.ts.map +0 -0
  686. /package/dist/{src → esm}/descriptor/builder/index.d.ts.map +0 -0
  687. /package/dist/{src → esm}/descriptor/builder/parse.d.ts.map +0 -0
  688. /package/dist/{src → esm}/descriptor/createWallet/createDescriptorWallet.d.ts.map +0 -0
  689. /package/dist/{src → esm}/descriptor/createWallet/createDescriptors.d.ts.map +0 -0
  690. /package/dist/{src → esm}/descriptor/createWallet/index.d.ts.map +0 -0
  691. /package/dist/{src → esm}/descriptor/descriptorWallet.d.ts.map +0 -0
  692. /package/dist/{src → esm}/descriptor/index.d.ts.map +0 -0
  693. /package/dist/{src → esm}/descriptor/validatePolicy.d.ts.map +0 -0
  694. /package/dist/{src → esm}/impl/bch/bch.d.ts.map +0 -0
  695. /package/dist/{src → esm}/impl/bch/index.d.ts.map +0 -0
  696. /package/dist/{src → esm}/impl/bch/tbch.d.ts.map +0 -0
  697. /package/dist/{src → esm}/impl/bcha/bcha.d.ts.map +0 -0
  698. /package/dist/{src → esm}/impl/bcha/index.d.ts.map +0 -0
  699. /package/dist/{src → esm}/impl/bcha/tbcha.d.ts.map +0 -0
  700. /package/dist/{src → esm}/impl/bsv/bsv.d.ts.map +0 -0
  701. /package/dist/{src → esm}/impl/bsv/index.d.ts.map +0 -0
  702. /package/dist/{src → esm}/impl/bsv/tbsv.d.ts.map +0 -0
  703. /package/dist/{src → esm}/impl/btc/btc.d.ts.map +0 -0
  704. /package/dist/{src → esm}/impl/btc/index.d.ts.map +0 -0
  705. /package/dist/{src → esm}/impl/btc/inscriptionBuilder.d.ts.map +0 -0
  706. /package/dist/{src → esm}/impl/btc/tbtc.d.ts.map +0 -0
  707. /package/dist/{src → esm}/impl/btc/tbtc4.d.ts.map +0 -0
  708. /package/dist/{src → esm}/impl/btc/tbtcbgsig.d.ts.map +0 -0
  709. /package/dist/{src → esm}/impl/btc/tbtcsig.d.ts.map +0 -0
  710. /package/dist/{src → esm}/impl/btg/btg.d.ts.map +0 -0
  711. /package/dist/{src → esm}/impl/btg/index.d.ts.map +0 -0
  712. /package/dist/{src → esm}/impl/dash/dash.d.ts.map +0 -0
  713. /package/dist/{src → esm}/impl/dash/index.d.ts.map +0 -0
  714. /package/dist/{src → esm}/impl/dash/tdash.d.ts.map +0 -0
  715. /package/dist/{src → esm}/impl/doge/index.d.ts.map +0 -0
  716. /package/dist/{src → esm}/impl/doge/tdoge.d.ts.map +0 -0
  717. /package/dist/{src → esm}/impl/index.d.ts.map +0 -0
  718. /package/dist/{src → esm}/impl/ltc/index.d.ts.map +0 -0
  719. /package/dist/{src → esm}/impl/ltc/ltc.d.ts.map +0 -0
  720. /package/dist/{src → esm}/impl/ltc/tltc.d.ts.map +0 -0
  721. /package/dist/{src → esm}/impl/zec/index.d.ts.map +0 -0
  722. /package/dist/{src → esm}/impl/zec/tzec.d.ts.map +0 -0
  723. /package/dist/{src → esm}/impl/zec/zec.d.ts.map +0 -0
  724. /package/dist/{src → esm}/index.d.ts.map +0 -0
  725. /package/dist/{src → esm}/keychains.d.ts.map +0 -0
  726. /package/dist/{src → esm}/names.d.ts.map +0 -0
  727. /package/dist/{src → esm}/offlineVault/OfflineVaultHalfSigned.d.ts.map +0 -0
  728. /package/dist/{src → esm}/offlineVault/OfflineVaultSignable.d.ts.map +0 -0
  729. /package/dist/{src → esm}/offlineVault/TransactionExplanation.d.ts.map +0 -0
  730. /package/dist/{src → esm}/offlineVault/descriptor/index.d.ts.map +0 -0
  731. /package/dist/{src → esm}/offlineVault/descriptor/transaction.d.ts.map +0 -0
  732. /package/dist/{src → esm}/offlineVault/index.d.ts.map +0 -0
  733. /package/dist/{src → esm}/recovery/RecoveryProvider.d.ts.map +0 -0
  734. /package/dist/{src → esm}/recovery/backupKeyRecovery.d.ts.map +0 -0
  735. /package/dist/{src → esm}/recovery/baseApi.d.ts.map +0 -0
  736. /package/dist/{src → esm}/recovery/coingeckoApi.d.ts.map +0 -0
  737. /package/dist/{src → esm}/recovery/crossChainRecovery.d.ts.map +0 -0
  738. /package/dist/{src → esm}/recovery/index.d.ts.map +0 -0
  739. /package/dist/{src → esm}/recovery/mempoolApi.d.ts.map +0 -0
  740. /package/dist/{src → esm}/sign.d.ts.map +0 -0
  741. /package/dist/{src → esm}/transaction/bip322.d.ts.map +0 -0
  742. /package/dist/{src → esm}/transaction/common/verifyPayGoAmount.d.ts.map +0 -0
  743. /package/dist/{src → esm}/transaction/descriptor/index.d.ts.map +0 -0
  744. /package/dist/{src → esm}/transaction/descriptor/parse.d.ts.map +0 -0
  745. /package/dist/{src → esm}/transaction/descriptor/parseToAmountType.d.ts.map +0 -0
  746. /package/dist/{src → esm}/transaction/descriptor/recipient.d.ts.map +0 -0
  747. /package/dist/{src → esm}/transaction/descriptor/signPsbt.d.ts.map +0 -0
  748. /package/dist/{src → esm}/transaction/descriptor/verifyTransaction.d.ts.map +0 -0
  749. /package/dist/{src → esm}/transaction/fetchInputs.d.ts.map +0 -0
  750. /package/dist/{src → esm}/transaction/fixedScript/parseOutput.d.ts.map +0 -0
  751. /package/dist/{src → esm}/transaction/fixedScript/signTransaction.d.ts.map +0 -0
  752. /package/dist/{src → esm}/transaction/fixedScript/verifyTransaction.d.ts.map +0 -0
  753. /package/dist/{src → esm}/transaction/getPayGoVerificationPubkey.d.ts.map +0 -0
  754. /package/dist/{src → esm}/transaction/index.d.ts.map +0 -0
  755. /package/dist/{src → esm}/transaction/outputDifference.d.ts.map +0 -0
  756. /package/dist/{src → esm}/transaction/parseTransaction.d.ts.map +0 -0
  757. /package/dist/{src → esm}/transaction/recipient.d.ts.map +0 -0
  758. /package/dist/{src → esm}/transaction/signTransaction.d.ts.map +0 -0
  759. /package/dist/{src → esm}/transaction/verifyTransaction.d.ts.map +0 -0
  760. /package/dist/{src → esm}/verifyKey.d.ts.map +0 -0
  761. /package/dist/{src → esm}/wallet.d.ts.map +0 -0
@@ -0,0 +1,51 @@
1
+ import { CreateAddressFormat } from '@bitgo-beta/sdk-core';
2
+ import * as utxolib from '@bitgo-beta/utxo-lib';
3
+ import { bitgo } from '@bitgo-beta/utxo-lib';
4
+ type ScriptType2Of3 = bitgo.outputScripts.ScriptType2Of3;
5
+ export interface FixedScriptAddressCoinSpecific {
6
+ outputScript?: string;
7
+ redeemScript?: string;
8
+ witnessScript?: string;
9
+ }
10
+ export interface GenerateAddressOptions {
11
+ addressType?: ScriptType2Of3;
12
+ chain?: number;
13
+ index?: number;
14
+ segwit?: boolean;
15
+ bech32?: boolean;
16
+ }
17
+ interface GenerateFixedScriptAddressOptions extends GenerateAddressOptions {
18
+ format?: CreateAddressFormat;
19
+ keychains: {
20
+ pub: string;
21
+ }[];
22
+ }
23
+ export declare function generateAddressWithChainAndIndex(network: utxolib.Network, keychains: {
24
+ pub: string;
25
+ }[], chain: bitgo.ChainCode, index: number, format: CreateAddressFormat | undefined): string;
26
+ /**
27
+ * Generate an address for a wallet based on a set of configurations
28
+ * @param params.addressType {string} Deprecated
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
+ export declare function generateAddress(network: utxolib.Network, params: GenerateFixedScriptAddressOptions): string;
39
+ type Keychain = {
40
+ pub: string;
41
+ };
42
+ export declare function assertFixedScriptWalletAddress(network: utxolib.Network, { chain, index, keychains, format, addressType, address, }: {
43
+ chain: number | undefined;
44
+ index: number;
45
+ keychains: Keychain[];
46
+ format: CreateAddressFormat;
47
+ addressType: string | undefined;
48
+ address: string;
49
+ }): void;
50
+ export {};
51
+ //# sourceMappingURL=fixedScript.d.ts.map
@@ -0,0 +1,109 @@
1
+ import _ from 'lodash';
2
+ import { AddressTypeChainMismatchError, InvalidAddressDerivationPropertyError, UnexpectedAddressError, P2shP2wshUnsupportedError, P2trMusig2UnsupportedError, P2trUnsupportedError, P2wshUnsupportedError, UnsupportedAddressTypeError, sanitizeLegacyPath, } from '@bitgo-beta/sdk-core';
3
+ import * as utxolib from '@bitgo-beta/utxo-lib';
4
+ import { bitgo } from '@bitgo-beta/utxo-lib';
5
+ import { bip32 } from '@bitgo-beta/secp256k1';
6
+ import * as wasmUtxo from '@bitgo/wasm-utxo';
7
+ function canonicalAddress(network, address, format) {
8
+ if (format === 'cashaddr') {
9
+ const script = utxolib.addressFormat.toOutputScriptTryFormats(address, network);
10
+ return utxolib.addressFormat.fromOutputScriptWithFormat(script, format, network);
11
+ }
12
+ // Default to canonical format (base58 for most coins)
13
+ return utxolib.addressFormat.toCanonicalFormat(address, network);
14
+ }
15
+ function supportsAddressType(network, addressType) {
16
+ return utxolib.bitgo.outputScripts.isSupportedScriptType(network, addressType);
17
+ }
18
+ export function generateAddressWithChainAndIndex(network, keychains, chain, index, format) {
19
+ if (utxolib.isTestnet(network)) {
20
+ // Convert CreateAddressFormat to AddressFormat for wasm-utxo
21
+ // 'base58' -> 'default', 'cashaddr' -> 'cashaddr'
22
+ const wasmFormat = format === 'base58' ? 'default' : format;
23
+ return wasmUtxo.fixedScriptWallet.address(keychains.map((k) => k.pub), chain, index, network, wasmFormat);
24
+ }
25
+ const path = '0/0/' + chain + '/' + index;
26
+ const hdNodes = keychains.map(({ pub }) => bip32.fromBase58(pub));
27
+ const derivedKeys = hdNodes.map((hdNode) => hdNode.derivePath(sanitizeLegacyPath(path)).publicKey);
28
+ const addressType = bitgo.scriptTypeForChain(chain);
29
+ const { scriptPubKey: outputScript } = utxolib.bitgo.outputScripts.createOutputScript2of3(derivedKeys, addressType);
30
+ const address = utxolib.address.fromOutputScript(outputScript, network);
31
+ return canonicalAddress(network, address, format);
32
+ }
33
+ /**
34
+ * Generate an address for a wallet based on a set of configurations
35
+ * @param params.addressType {string} Deprecated
36
+ * @param params.keychains {[object]} Array of objects with xpubs
37
+ * @param params.threshold {number} Minimum number of signatures
38
+ * @param params.chain {number} Derivation chain (see https://github.com/BitGo/unspents/blob/master/src/codes.ts for
39
+ * the corresponding address type of a given chain code)
40
+ * @param params.index {number} Derivation index
41
+ * @param params.segwit {boolean} Deprecated
42
+ * @param params.bech32 {boolean} Deprecated
43
+ * @returns {string} The generated address
44
+ */
45
+ export function generateAddress(network, params) {
46
+ let derivationIndex = 0;
47
+ if (_.isInteger(params.index) && params.index > 0) {
48
+ derivationIndex = params.index;
49
+ }
50
+ const { keychains, chain, segwit = false, bech32 = false } = params;
51
+ let derivationChain = bitgo.getExternalChainCode('p2sh');
52
+ if (_.isNumber(chain) && _.isInteger(chain) && bitgo.isChainCode(chain)) {
53
+ derivationChain = chain;
54
+ }
55
+ function convertFlagsToAddressType() {
56
+ if (bitgo.isChainCode(chain)) {
57
+ return bitgo.scriptTypeForChain(chain);
58
+ }
59
+ if (_.isBoolean(segwit) && segwit) {
60
+ return 'p2shP2wsh';
61
+ }
62
+ else if (_.isBoolean(bech32) && bech32) {
63
+ return 'p2wsh';
64
+ }
65
+ else {
66
+ return 'p2sh';
67
+ }
68
+ }
69
+ const addressType = params.addressType || convertFlagsToAddressType();
70
+ if (addressType !== utxolib.bitgo.scriptTypeForChain(derivationChain)) {
71
+ throw new AddressTypeChainMismatchError(addressType, derivationChain);
72
+ }
73
+ if (!supportsAddressType(network, addressType)) {
74
+ switch (addressType) {
75
+ case 'p2sh':
76
+ throw new Error(`internal error: p2sh should always be supported`);
77
+ case 'p2shP2wsh':
78
+ throw new P2shP2wshUnsupportedError();
79
+ case 'p2wsh':
80
+ throw new P2wshUnsupportedError();
81
+ case 'p2tr':
82
+ throw new P2trUnsupportedError();
83
+ case 'p2trMusig2':
84
+ throw new P2trMusig2UnsupportedError();
85
+ default:
86
+ throw new UnsupportedAddressTypeError();
87
+ }
88
+ }
89
+ return generateAddressWithChainAndIndex(network, keychains, derivationChain, derivationIndex, params.format);
90
+ }
91
+ export function assertFixedScriptWalletAddress(network, { chain, index, keychains, format, addressType, address, }) {
92
+ if ((_.isUndefined(chain) && _.isUndefined(index)) || !(_.isFinite(chain) && _.isFinite(index))) {
93
+ throw new InvalidAddressDerivationPropertyError(`address validation failure: invalid chain (${chain}) or index (${index})`);
94
+ }
95
+ if (!keychains) {
96
+ throw new Error('missing required param keychains');
97
+ }
98
+ const expectedAddress = generateAddress(network, {
99
+ format,
100
+ addressType: addressType,
101
+ keychains,
102
+ chain,
103
+ index,
104
+ });
105
+ if (expectedAddress !== address) {
106
+ throw new UnexpectedAddressError(`address validation failure: expected ${expectedAddress} but got ${address}`);
107
+ }
108
+ }
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWRTY3JpcHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRkcmVzcy9maXhlZFNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxFQUNMLDZCQUE2QixFQUU3QixxQ0FBcUMsRUFDckMsc0JBQXNCLEVBQ3RCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQiwyQkFBMkIsRUFDM0Isa0JBQWtCLEdBQ25CLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlDLE9BQU8sS0FBSyxRQUFRLE1BQU0sa0JBQWtCLENBQUM7QUF1QjdDLFNBQVMsZ0JBQWdCLENBQUMsT0FBd0IsRUFBRSxPQUFlLEVBQUUsTUFBNEI7SUFDL0YsSUFBSSxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDMUIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEYsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUNELHNEQUFzRDtJQUN0RCxPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLE9BQXdCLEVBQUUsV0FBMkI7SUFDaEYsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIs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eEIsRUFDRSxLQUFLLEVBQ0wsS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sV0FBVyxFQUNYLE9BQU8sR0FRUjtJQUVELElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRyxNQUFNLElBQUkscUNBQXFDLENBQzdDLDhDQUE4QyxLQUFLLGVBQWUsS0FBSyxHQUFHLENBQzNFLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsT0FBTyxFQUFFO1FBQy9DLE1BQU07UUFDTixXQUFXLEVBQUUsV0FBNkI7UUFDMUMsU0FBUztRQUNULEtBQUs7UUFDTCxLQUFLO0tBQ04sQ0FBQyxDQUFDO0lBRUgsSUFBSSxlQUFlLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLHNCQUFzQixDQUFDLHdDQUF3QyxlQUFlLFlBQVksT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNqSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBBZGRyZXNzVHlwZUNoYWluTWlzbWF0Y2hFcnJvcixcbiAgQ3JlYXRlQWRkcmVzc0Zvcm1hdCxcbiAgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvcixcbiAgVW5leHBlY3RlZEFkZHJlc3NFcnJvcixcbiAgUDJzaFAyd3NoVW5zdXBwb3J0ZWRFcnJvcixcbiAgUDJ0ck11c2lnMlVuc3VwcG9ydGVkRXJyb3IsXG4gIFAydHJVbnN1cHBvcnRlZEVycm9yLFxuICBQMndzaFVuc3VwcG9ydGVkRXJyb3IsXG4gIFVuc3VwcG9ydGVkQWRkcmVzc1R5cGVFcnJvcixcbiAgc2FuaXRpemVMZWdhY3lQYXRoLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IGJpdGdvIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgYmlwMzIgfSBmcm9tICdAYml0Z28tYmV0YS9zZWNwMjU2azEnO1xuaW1wb3J0ICogYXMgd2FzbVV0eG8gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbnR5cGUgU2NyaXB0VHlwZTJPZjMgPSBiaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGUyT2YzO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpeGVkU2NyaXB0QWRkcmVzc0NvaW5TcGVjaWZpYyB7XG4gIG91dHB1dFNjcmlwdD86IHN0cmluZztcbiAgcmVkZWVtU2NyaXB0Pzogc3RyaW5nO1xuICB3aXRuZXNzU2NyaXB0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlQWRkcmVzc09wdGlvbnMge1xuICBhZGRyZXNzVHlwZT86IFNjcmlwdFR5cGUyT2YzO1xuICBjaGFpbj86IG51bWJlcjtcbiAgaW5kZXg/OiBudW1iZXI7XG4gIHNlZ3dpdD86IGJvb2xlYW47XG4gIGJlY2gzMj86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBHZW5lcmF0ZUZpeGVkU2NyaXB0QWRkcmVzc09wdGlvbnMgZXh0ZW5kcyBHZW5lcmF0ZUFkZHJlc3NPcHRpb25zIHtcbiAgZm9ybWF0PzogQ3JlYXRlQWRkcmVzc0Zvcm1hdDtcbiAga2V5Y2hhaW5zOiB7IHB1Yjogc3RyaW5nIH1bXTtcbn1cblxuZnVuY3Rpb24gY2Fub25pY2FsQWRkcmVzcyhuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmssIGFkZHJlc3M6IHN0cmluZywgZm9ybWF0PzogQ3JlYXRlQWRkcmVzc0Zvcm1hdCk6IHN0cmluZyB7XG4gIGlmIChmb3JtYXQgPT09ICdjYXNoYWRkcicpIHtcbiAgICBjb25zdCBzY3JpcHQgPSB1dHhvbGliLmFkZHJlc3NGb3JtYXQudG9PdXRwdXRTY3JpcHRUcnlGb3JtYXRzKGFkZHJlc3MsIG5ldHdvcmspO1xuICAgIHJldHVybiB1dHhvbGliLmFkZHJlc3NGb3JtYXQuZnJvbU91dHB1dFNjcmlwdFdpdGhGb3JtYXQoc2NyaXB0LCBmb3JtYXQsIG5ldHdvcmspO1xuICB9XG4gIC8vIERlZmF1bHQgdG8gY2Fub25pY2FsIGZvcm1hdCAoYmFzZTU4IGZvciBtb3N0IGNvaW5zKVxuICByZXR1cm4gdXR4b2xpYi5hZGRyZXNzRm9ybWF0LnRvQ2Fub25pY2FsRm9ybWF0KGFkZHJlc3MsIG5ldHdvcmspO1xufVxuXG5mdW5jdGlvbiBzdXBwb3J0c0FkZHJlc3NUeXBlKG5ldHdvcms6IHV0eG9saWIuTmV0d29yaywgYWRkcmVzc1R5cGU6IFNjcmlwdFR5cGUyT2YzKTogYm9vbGVhbiB7XG4gIHJldHVybiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuaXNTdXBwb3J0ZWRTY3JpcHRUeXBlKG5ldHdvcmssIGFkZHJlc3NUeXBlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQWRkcmVzc1dpdGhDaGFpbkFuZEluZGV4KFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmssXG4gIGtleWNoYWluczogeyBwdWI6IHN0cmluZyB9W10sXG4gIGNoYWluOiBiaXRnby5DaGFpbkNvZGUsXG4gIGluZGV4OiBudW1iZXIsXG4gIGZvcm1hdDogQ3JlYXRlQWRkcmVzc0Zvcm1hdCB8IHVuZGVmaW5lZFxuKTogc3RyaW5nIHtcbiAgaWYgKHV0eG9saWIuaXNUZXN0bmV0KG5ldHdvcmspKSB7XG4gICAgLy8gQ29udmVydCBDcmVhdGVBZGRyZXNzRm9ybWF0IHRvIEFkZHJlc3NGb3JtYXQgZm9yIHdhc20tdXR4b1xuICAgIC8vICdiYXNlNTgnIC0+ICdkZWZhdWx0JywgJ2Nhc2hhZGRyJyAtPiAnY2FzaGFkZHInXG4gICAgY29uc3Qgd2FzbUZvcm1hdCA9IGZvcm1hdCA9PT0gJ2Jhc2U1OCcgPyAnZGVmYXVsdCcgOiBmb3JtYXQ7XG4gICAgcmV0dXJuIHdhc21VdHhvLmZpeGVkU2NyaXB0V2FsbGV0LmFkZHJlc3MoXG4gICAgICBrZXljaGFpbnMubWFwKChrKSA9PiBrLnB1YikgYXMgW3N0cmluZywgc3RyaW5nLCBzdHJpbmddLFxuICAgICAgY2hhaW4sXG4gICAgICBpbmRleCxcbiAgICAgIG5ldHdvcmssXG4gICAgICB3YXNtRm9ybWF0XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSAnMC8wLycgKyBjaGFpbiArICcvJyArIGluZGV4O1xuICBjb25zdCBoZE5vZGVzID0ga2V5Y2hhaW5zLm1hcCgoeyBwdWIgfSkgPT4gYmlwMzIuZnJvbUJhc2U1OChwdWIpKTtcbiAgY29uc3QgZGVyaXZlZEtleXMgPSBoZE5vZGVzLm1hcCgoaGROb2RlKSA9PiBoZE5vZGUuZGVyaXZlUGF0aChzYW5pdGl6ZUxlZ2FjeVBhdGgocGF0aCkpLnB1YmxpY0tleSk7XG4gIGNvbnN0IGFkZHJlc3NUeXBlID0gYml0Z28uc2NyaXB0VHlwZUZvckNoYWluKGNoYWluKTtcblxuICBjb25zdCB7IHNjcmlwdFB1YktleTogb3V0cHV0U2NyaXB0IH0gPSB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyhkZXJpdmVkS2V5cywgYWRkcmVzc1R5cGUpO1xuXG4gIGNvbnN0IGFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChvdXRwdXRTY3JpcHQsIG5ldHdvcmspO1xuXG4gIHJldHVybiBjYW5vbmljYWxBZGRyZXNzKG5ldHdvcmssIGFkZHJlc3MsIGZvcm1hdCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYW4gYWRkcmVzcyBmb3IgYSB3YWxsZXQgYmFzZWQgb24gYSBzZXQgb2YgY29uZmlndXJhdGlvbnNcbiAqIEBwYXJhbSBwYXJhbXMuYWRkcmVzc1R5cGUge3N0cmluZ30gICBEZXByZWNhdGVkXG4gKiBAcGFyYW0gcGFyYW1zLmtleWNoYWlucyAgIHtbb2JqZWN0XX0gQXJyYXkgb2Ygb2JqZWN0cyB3aXRoIHhwdWJzXG4gKiBAcGFyYW0gcGFyYW1zLnRocmVzaG9sZCAgIHtudW1iZXJ9ICAgTWluaW11bSBudW1iZXIgb2Ygc2lnbmF0dXJlc1xuICogQHBhcmFtIHBhcmFtcy5jaGFpbiAgICAgICB7bnVtYmVyfSAgIERlcml2YXRpb24gY2hhaW4gKHNlZSBodHRwczovL2dpdGh1Yi5jb20vQml0R28vdW5zcGVudHMvYmxvYi9tYXN0ZXIvc3JjL2NvZGVzLnRzIGZvclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgYWRkcmVzcyB0eXBlIG9mIGEgZ2l2ZW4gY2hhaW4gY29kZSlcbiAqIEBwYXJhbSBwYXJhbXMuaW5kZXggICAgICAge251bWJlcn0gICBEZXJpdmF0aW9uIGluZGV4XG4gKiBAcGFyYW0gcGFyYW1zLnNlZ3dpdCAgICAgIHtib29sZWFufSAgRGVwcmVjYXRlZFxuICogQHBhcmFtIHBhcmFtcy5iZWNoMzIgICAgICB7Ym9vbGVhbn0gIERlcHJlY2F0ZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBnZW5lcmF0ZWQgYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBZGRyZXNzKG5ldHdvcms6IHV0eG9saWIuTmV0d29yaywgcGFyYW1zOiBHZW5lcmF0ZUZpeGVkU2NyaXB0QWRkcmVzc09wdGlvbnMpOiBzdHJpbmcge1xuICBsZXQgZGVyaXZhdGlvbkluZGV4ID0gMDtcbiAgaWYgKF8uaXNJbnRlZ2VyKHBhcmFtcy5pbmRleCkgJiYgKHBhcmFtcy5pbmRleCBhcyBudW1iZXIpID4gMCkge1xuICAgIGRlcml2YXRpb25JbmRleCA9IHBhcmFtcy5pbmRleCBhcyBudW1iZXI7XG4gIH1cblxuICBjb25zdCB7IGtleWNoYWlucywgY2hhaW4sIHNlZ3dpdCA9IGZhbHNlLCBiZWNoMzIgPSBmYWxzZSB9ID0gcGFyYW1zIGFzIEdlbmVyYXRlRml4ZWRTY3JpcHRBZGRyZXNzT3B0aW9ucztcblxuICBsZXQgZGVyaXZhdGlvbkNoYWluID0gYml0Z28uZ2V0RXh0ZXJuYWxDaGFpbkNvZGUoJ3Ayc2gnKTtcbiAgaWYgKF8uaXNOdW1iZXIoY2hhaW4pICYmIF8uaXNJbnRlZ2VyKGNoYWluKSAmJiBiaXRnby5pc0NoYWluQ29kZShjaGFpbikpIHtcbiAgICBkZXJpdmF0aW9uQ2hhaW4gPSBjaGFpbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbnZlcnRGbGFnc1RvQWRkcmVzc1R5cGUoKTogU2NyaXB0VHlwZTJPZjMge1xuICAgIGlmIChiaXRnby5pc0NoYWluQ29kZShjaGFpbikpIHtcbiAgICAgIHJldHVybiBiaXRnby5zY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pO1xuICAgIH1cbiAgICBpZiAoXy5pc0Jvb2xlYW4oc2Vnd2l0KSAmJiBzZWd3aXQpIHtcbiAgICAgIHJldHVybiAncDJzaFAyd3NoJztcbiAgICB9IGVsc2UgaWYgKF8uaXNCb29sZWFuKGJlY2gzMikgJiYgYmVjaDMyKSB7XG4gICAgICByZXR1cm4gJ3Ayd3NoJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdwMnNoJztcbiAgICB9XG4gIH1cblxuICBjb25zdCBhZGRyZXNzVHlwZSA9IHBhcmFtcy5hZGRyZXNzVHlwZSB8fCBjb252ZXJ0RmxhZ3NUb0FkZHJlc3NUeXBlKCk7XG5cbiAgaWYgKGFkZHJlc3NUeXBlICE9PSB1dHhvbGliLmJpdGdvLnNjcmlwdFR5cGVGb3JDaGFpbihkZXJpdmF0aW9uQ2hhaW4pKSB7XG4gICAgdGhyb3cgbmV3IEFkZHJlc3NUeXBlQ2hhaW5NaXNtYXRjaEVycm9yKGFkZHJlc3NUeXBlLCBkZXJpdmF0aW9uQ2hhaW4pO1xuICB9XG5cbiAgaWYgKCFzdXBwb3J0c0FkZHJlc3NUeXBlKG5ldHdvcmssIGFkZHJlc3NUeXBlKSkge1xuICAgIHN3aXRjaCAoYWRkcmVzc1R5cGUpIHtcbiAgICAgIGNhc2UgJ3Ayc2gnOlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludGVybmFsIGVycm9yOiBwMnNoIHNob3VsZCBhbHdheXMgYmUgc3VwcG9ydGVkYCk7XG4gICAgICBjYXNlICdwMnNoUDJ3c2gnOlxuICAgICAgICB0aHJvdyBuZXcgUDJzaFAyd3NoVW5zdXBwb3J0ZWRFcnJvcigpO1xuICAgICAgY2FzZSAncDJ3c2gnOlxuICAgICAgICB0aHJvdyBuZXcgUDJ3c2hVbnN1cHBvcnRlZEVycm9yKCk7XG4gICAgICBjYXNlICdwMnRyJzpcbiAgICAgICAgdGhyb3cgbmV3IFAydHJVbnN1cHBvcnRlZEVycm9yKCk7XG4gICAgICBjYXNlICdwMnRyTXVzaWcyJzpcbiAgICAgICAgdGhyb3cgbmV3IFAydHJNdXNpZzJVbnN1cHBvcnRlZEVycm9yKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRBZGRyZXNzVHlwZUVycm9yKCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGdlbmVyYXRlQWRkcmVzc1dpdGhDaGFpbkFuZEluZGV4KG5ldHdvcmssIGtleWNoYWlucywgZGVyaXZhdGlvbkNoYWluLCBkZXJpdmF0aW9uSW5kZXgsIHBhcmFtcy5mb3JtYXQpO1xufVxuXG50eXBlIEtleWNoYWluID0ge1xuICBwdWI6IHN0cmluZztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRGaXhlZFNjcmlwdFdhbGxldEFkZHJlc3MoXG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayxcbiAge1xuICAgIGNoYWluLFxuICAgIGluZGV4LFxuICAgIGtleWNoYWlucyxcbiAgICBmb3JtYXQsXG4gICAgYWRkcmVzc1R5cGUsXG4gICAgYWRkcmVzcyxcbiAgfToge1xuICAgIGNoYWluOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgICBrZXljaGFpbnM6IEtleWNoYWluW107XG4gICAgZm9ybWF0OiBDcmVhdGVBZGRyZXNzRm9ybWF0O1xuICAgIGFkZHJlc3NUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgYWRkcmVzczogc3RyaW5nO1xuICB9XG4pOiB2b2lkIHtcbiAgaWYgKChfLmlzVW5kZWZpbmVkKGNoYWluKSAmJiBfLmlzVW5kZWZpbmVkKGluZGV4KSkgfHwgIShfLmlzRmluaXRlKGNoYWluKSAmJiBfLmlzRmluaXRlKGluZGV4KSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvcihcbiAgICAgIGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogaW52YWxpZCBjaGFpbiAoJHtjaGFpbn0pIG9yIGluZGV4ICgke2luZGV4fSlgXG4gICAgKTtcbiAgfVxuXG4gIGlmICgha2V5Y2hhaW5zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHBhcmFtIGtleWNoYWlucycpO1xuICB9XG5cbiAgY29uc3QgZXhwZWN0ZWRBZGRyZXNzID0gZ2VuZXJhdGVBZGRyZXNzKG5ldHdvcmssIHtcbiAgICBmb3JtYXQsXG4gICAgYWRkcmVzc1R5cGU6IGFkZHJlc3NUeXBlIGFzIFNjcmlwdFR5cGUyT2YzLFxuICAgIGtleWNoYWlucyxcbiAgICBjaGFpbixcbiAgICBpbmRleCxcbiAgfSk7XG5cbiAgaWYgKGV4cGVjdGVkQWRkcmVzcyAhPT0gYWRkcmVzcykge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogZXhwZWN0ZWQgJHtleHBlY3RlZEFkZHJlc3N9IGJ1dCBnb3QgJHthZGRyZXNzfWApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export { generateAddress, generateAddressWithChainAndIndex, assertFixedScriptWalletAddress, FixedScriptAddressCoinSpecific, } from './fixedScript';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { generateAddress, generateAddressWithChainAndIndex, assertFixedScriptWalletAddress, } from './fixedScript';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRkcmVzcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGdDQUFnQyxFQUNoQyw4QkFBOEIsR0FFL0IsTUFBTSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBnZW5lcmF0ZUFkZHJlc3MsXG4gIGdlbmVyYXRlQWRkcmVzc1dpdGhDaGFpbkFuZEluZGV4LFxuICBhc3NlcnRGaXhlZFNjcmlwdFdhbGxldEFkZHJlc3MsXG4gIEZpeGVkU2NyaXB0QWRkcmVzc0NvaW5TcGVjaWZpYyxcbn0gZnJvbSAnLi9maXhlZFNjcmlwdCc7XG4iXX0=
@@ -0,0 +1,9 @@
1
+ export declare const supportedCrossChainRecoveries: {
2
+ btc: string[];
3
+ bch: string[];
4
+ ltc: string[];
5
+ bsv: string[];
6
+ doge: string[];
7
+ bcha: string[];
8
+ };
9
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1,11 @@
1
+ // Supported cross-chain recovery routes. The object index is the coin to be recovered, and the value is
2
+ // an array of valid coins for recipient wallets of the original accidental/unintentional deposit.
3
+ export const supportedCrossChainRecoveries = {
4
+ btc: ['bch', 'ltc', 'bsv', 'doge'],
5
+ bch: ['btc', 'ltc', 'bsv', 'doge'],
6
+ ltc: ['btc', 'bch', 'bsv', 'doge'],
7
+ bsv: ['btc', 'ltc', 'bch', 'doge'],
8
+ doge: ['btc', 'bch', 'ltc', 'bsv'],
9
+ bcha: ['btc', 'bch'],
10
+ };
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3R0FBd0c7QUFDeEcsa0dBQWtHO0FBQ2xHLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHO0lBQzNDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNsQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUM7SUFDbEMsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDO0lBQ2xDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztDQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU3VwcG9ydGVkIGNyb3NzLWNoYWluIHJlY292ZXJ5IHJvdXRlcy4gVGhlIG9iamVjdCBpbmRleCBpcyB0aGUgY29pbiB0byBiZSByZWNvdmVyZWQsIGFuZCB0aGUgdmFsdWUgaXNcbi8vIGFuIGFycmF5IG9mIHZhbGlkIGNvaW5zIGZvciByZWNpcGllbnQgd2FsbGV0cyBvZiB0aGUgb3JpZ2luYWwgYWNjaWRlbnRhbC91bmludGVudGlvbmFsIGRlcG9zaXQuXG5leHBvcnQgY29uc3Qgc3VwcG9ydGVkQ3Jvc3NDaGFpblJlY292ZXJpZXMgPSB7XG4gIGJ0YzogWydiY2gnLCAnbHRjJywgJ2JzdicsICdkb2dlJ10sXG4gIGJjaDogWydidGMnLCAnbHRjJywgJ2JzdicsICdkb2dlJ10sXG4gIGx0YzogWydidGMnLCAnYmNoJywgJ2JzdicsICdkb2dlJ10sXG4gIGJzdjogWydidGMnLCAnbHRjJywgJ2JjaCcsICdkb2dlJ10sXG4gIGRvZ2U6IFsnYnRjJywgJ2JjaCcsICdsdGMnLCAnYnN2J10sXG4gIGJjaGE6IFsnYnRjJywgJ2JjaCddLFxufTtcbiJdfQ==
@@ -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,39 @@
1
+ import * as t from 'io-ts';
2
+ import { Descriptor } from '@bitgo/wasm-utxo';
3
+ import { networks } from '@bitgo-beta/utxo-lib';
4
+ import { signMessage, verifyMessage } from '@bitgo-beta/sdk-core';
5
+ export const NamedDescriptor = t.intersection([
6
+ t.type({
7
+ name: t.string,
8
+ value: t.string,
9
+ }),
10
+ t.partial({
11
+ signatures: t.union([t.array(t.string), t.undefined]),
12
+ }),
13
+ ], 'NamedDescriptor');
14
+ export function createNamedDescriptorWithSignature(name, descriptor, signingKey) {
15
+ if (typeof descriptor === 'string') {
16
+ descriptor = Descriptor.fromString(descriptor, 'derivable');
17
+ }
18
+ const value = descriptor.toString();
19
+ const signature = signMessage(value, signingKey, networks.bitcoin).toString('hex');
20
+ return { name, value, signatures: [signature] };
21
+ }
22
+ export function toNamedDescriptorNative(e, pkType) {
23
+ return { ...e, value: Descriptor.fromString(e.value, pkType) };
24
+ }
25
+ export function hasValidSignature(descriptor, key, signatures) {
26
+ if (typeof descriptor === 'string') {
27
+ descriptor = Descriptor.fromString(descriptor, 'derivable');
28
+ }
29
+ const message = descriptor.toString();
30
+ return signatures.some((signature) => {
31
+ return verifyMessage(message, key, Buffer.from(signature, 'hex'), networks.bitcoin);
32
+ });
33
+ }
34
+ export function assertHasValidSignature(namedDescriptor, key) {
35
+ if (!hasValidSignature(namedDescriptor.value, key, namedDescriptor.signatures ?? [])) {
36
+ throw new Error(`Descriptor ${namedDescriptor.name} does not have a valid signature (key=${key.toBase58()})`);
37
+ }
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmFtZWREZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvTmFtZWREZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxDQUFDLE1BQU0sT0FBTyxDQUFDO0FBQzNCLE9BQU8sRUFBRSxVQUFVLEVBQW9CLE1BQU0sa0JBQWtCLENBQUM7QUFDaEUsT0FBTyxFQUFrQixRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUMzQztJQUNFLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDTCxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU07UUFDZCxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU07S0FDaEIsQ0FBQztJQUNGLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDUixVQUFVLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUN0RCxDQUFDO0NBQ0gsRUFDRCxpQkFBaUIsQ0FDbEIsQ0FBQztBQVVGLE1BQU0sVUFBVSxrQ0FBa0MsQ0FDaEQsSUFBWSxFQUNaLFVBQStCLEVBQy9CLFVBQTBCO0lBRTFCLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRixPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0FBQ2xELENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsQ0FBa0IsRUFBRSxNQUF3QjtJQUNsRixPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQ2pFLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsVUFBK0IsRUFBRSxHQUFtQixFQUFFLFVBQW9CO0lBQzFHLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7UUFDbkMsT0FBTyxhQUFhLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEYsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLGVBQWdDLEVBQUUsR0FBbUI7SUFDM0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLGVBQWUsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNyRixNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsZUFBZSxDQUFDLElBQUkseUNBQXlDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEgsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcbmltcG9ydCB7IERlc2NyaXB0b3IsIERlc2NyaXB0b3JQa1R5cGUgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcbmltcG9ydCB7IEJJUDMySW50ZXJmYWNlLCBuZXR3b3JrcyB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IHNpZ25NZXNzYWdlLCB2ZXJpZnlNZXNzYWdlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5leHBvcnQgY29uc3QgTmFtZWREZXNjcmlwdG9yID0gdC5pbnRlcnNlY3Rpb24oXG4gIFtcbiAgICB0LnR5cGUoe1xuICAgICAgbmFtZTogdC5zdHJpbmcsXG4gICAgICB2YWx1ZTogdC5zdHJpbmcsXG4gICAgfSksXG4gICAgdC5wYXJ0aWFsKHtcbiAgICAgIHNpZ25hdHVyZXM6IHQudW5pb24oW3QuYXJyYXkodC5zdHJpbmcpLCB0LnVuZGVmaW5lZF0pLFxuICAgIH0pLFxuICBdLFxuICAnTmFtZWREZXNjcmlwdG9yJ1xuKTtcblxuZXhwb3J0IHR5cGUgTmFtZWREZXNjcmlwdG9yPFQgPSBzdHJpbmc+ID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBUO1xuICBzaWduYXR1cmVzPzogc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBOYW1lZERlc2NyaXB0b3JOYXRpdmUgPSBOYW1lZERlc2NyaXB0b3I8RGVzY3JpcHRvcj47XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOYW1lZERlc2NyaXB0b3JXaXRoU2lnbmF0dXJlKFxuICBuYW1lOiBzdHJpbmcsXG4gIGRlc2NyaXB0b3I6IHN0cmluZyB8IERlc2NyaXB0b3IsXG4gIHNpZ25pbmdLZXk6IEJJUDMySW50ZXJmYWNlXG4pOiBOYW1lZERlc2NyaXB0b3Ige1xuICBpZiAodHlwZW9mIGRlc2NyaXB0b3IgPT09ICdzdHJpbmcnKSB7XG4gICAgZGVzY3JpcHRvciA9IERlc2NyaXB0b3IuZnJvbVN0cmluZyhkZXNjcmlwdG9yLCAnZGVyaXZhYmxlJyk7XG4gIH1cbiAgY29uc3QgdmFsdWUgPSBkZXNjcmlwdG9yLnRvU3RyaW5nKCk7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IHNpZ25NZXNzYWdlKHZhbHVlLCBzaWduaW5nS2V5LCBuZXR3b3Jrcy5iaXRjb2luKS50b1N0cmluZygnaGV4Jyk7XG4gIHJldHVybiB7IG5hbWUsIHZhbHVlLCBzaWduYXR1cmVzOiBbc2lnbmF0dXJlXSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9OYW1lZERlc2NyaXB0b3JOYXRpdmUoZTogTmFtZWREZXNjcmlwdG9yLCBwa1R5cGU6IERlc2NyaXB0b3JQa1R5cGUpOiBOYW1lZERlc2NyaXB0b3JOYXRpdmUge1xuICByZXR1cm4geyAuLi5lLCB2YWx1ZTogRGVzY3JpcHRvci5mcm9tU3RyaW5nKGUudmFsdWUsIHBrVHlwZSkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1ZhbGlkU2lnbmF0dXJlKGRlc2NyaXB0b3I6IHN0cmluZyB8IERlc2NyaXB0b3IsIGtleTogQklQMzJJbnRlcmZhY2UsIHNpZ25hdHVyZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgZGVzY3JpcHRvciA9PT0gJ3N0cmluZycpIHtcbiAgICBkZXNjcmlwdG9yID0gRGVzY3JpcHRvci5mcm9tU3RyaW5nKGRlc2NyaXB0b3IsICdkZXJpdmFibGUnKTtcbiAgfVxuXG4gIGNvbnN0IG1lc3NhZ2UgPSBkZXNjcmlwdG9yLnRvU3RyaW5nKCk7XG4gIHJldHVybiBzaWduYXR1cmVzLnNvbWUoKHNpZ25hdHVyZSkgPT4ge1xuICAgIHJldHVybiB2ZXJpZnlNZXNzYWdlKG1lc3NhZ2UsIGtleSwgQnVmZmVyLmZyb20oc2lnbmF0dXJlLCAnaGV4JyksIG5ldHdvcmtzLmJpdGNvaW4pO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEhhc1ZhbGlkU2lnbmF0dXJlKG5hbWVkRGVzY3JpcHRvcjogTmFtZWREZXNjcmlwdG9yLCBrZXk6IEJJUDMySW50ZXJmYWNlKTogdm9pZCB7XG4gIGlmICghaGFzVmFsaWRTaWduYXR1cmUobmFtZWREZXNjcmlwdG9yLnZhbHVlLCBrZXksIG5hbWVkRGVzY3JpcHRvci5zaWduYXR1cmVzID8/IFtdKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGVzY3JpcHRvciAke25hbWVkRGVzY3JpcHRvci5uYW1lfSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgc2lnbmF0dXJlIChrZXk9JHtrZXkudG9CYXNlNTgoKX0pYCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import { DescriptorMap } from '@bitgo-beta/utxo-core/descriptor';
3
+ import { UtxoCoinSpecific, VerifyAddressOptions } from '../abstractUtxoCoin';
4
+ export declare function assertDescriptorWalletAddress(network: utxolib.Network, params: VerifyAddressOptions<UtxoCoinSpecific>, descriptors: DescriptorMap): void;
5
+ //# sourceMappingURL=assertDescriptorWalletAddress.d.ts.map
@@ -0,0 +1,27 @@
1
+ import assert from 'assert';
2
+ import * as utxolib from '@bitgo-beta/utxo-lib';
3
+ class DescriptorAddressMismatchError extends Error {
4
+ constructor(descriptor, index, derivedAddress, expectedAddress) {
5
+ super(`Address mismatch for descriptor ${descriptor.toString()} at index ${index}: ${derivedAddress} !== ${expectedAddress}`);
6
+ }
7
+ }
8
+ export function assertDescriptorWalletAddress(network, params, descriptors) {
9
+ assert(params.coinSpecific);
10
+ assert('descriptorName' in params.coinSpecific);
11
+ assert('descriptorChecksum' in params.coinSpecific);
12
+ const { descriptorName, descriptorChecksum } = params.coinSpecific;
13
+ const descriptor = descriptors.get(params.coinSpecific.descriptorName);
14
+ if (!descriptor) {
15
+ throw new Error(`Descriptor ${descriptorName} not found`);
16
+ }
17
+ const checksum = descriptor.toString().slice(-8);
18
+ if (checksum !== descriptorChecksum) {
19
+ throw new Error(`Descriptor checksum mismatch for descriptor name=${descriptorName}: ${checksum} !== ${descriptorChecksum}`);
20
+ }
21
+ const derivedScript = Buffer.from(descriptor.atDerivationIndex(params.index).scriptPubkey());
22
+ const derivedAddress = utxolib.address.fromOutputScript(derivedScript, network);
23
+ if (params.address !== derivedAddress) {
24
+ throw new DescriptorAddressMismatchError(descriptor, params.index, derivedAddress, params.address);
25
+ }
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0RGVzY3JpcHRvcldhbGxldEFkZHJlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9hc3NlcnREZXNjcmlwdG9yV2FsbGV0QWRkcmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQU1oRCxNQUFNLDhCQUErQixTQUFRLEtBQUs7SUFDaEQsWUFBWSxVQUFzQixFQUFFLEtBQWEsRUFBRSxjQUFzQixFQUFFLGVBQXVCO1FBQ2hHLEtBQUssQ0FDSCxtQ0FBbUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxhQUFhLEtBQUssS0FBSyxjQUFjLFFBQVEsZUFBZSxFQUFFLENBQ3ZILENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsNkJBQTZCLENBQzNDLE9BQXdCLEVBQ3hCLE1BQThDLEVBQzlDLFdBQTBCO0lBRTFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUIsTUFBTSxDQUFDLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoRCxNQUFNLENBQUMsb0JBQW9CLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3BELE1BQU0sRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO0lBQ25FLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2RSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLGNBQWMsWUFBWSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxJQUFJLFFBQVEsS0FBSyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQ2Isb0RBQW9ELGNBQWMsS0FBSyxRQUFRLFFBQVEsa0JBQWtCLEVBQUUsQ0FDNUcsQ0FBQztJQUNKLENBQUM7SUFDRCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUM3RixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssY0FBYyxFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLDhCQUE4QixDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckcsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgRGVzY3JpcHRvciB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuaW1wb3J0IHsgRGVzY3JpcHRvck1hcCB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tY29yZS9kZXNjcmlwdG9yJztcblxuaW1wb3J0IHsgVXR4b0NvaW5TcGVjaWZpYywgVmVyaWZ5QWRkcmVzc09wdGlvbnMgfSBmcm9tICcuLi9hYnN0cmFjdFV0eG9Db2luJztcblxuY2xhc3MgRGVzY3JpcHRvckFkZHJlc3NNaXNtYXRjaEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihkZXNjcmlwdG9yOiBEZXNjcmlwdG9yLCBpbmRleDogbnVtYmVyLCBkZXJpdmVkQWRkcmVzczogc3RyaW5nLCBleHBlY3RlZEFkZHJlc3M6IHN0cmluZykge1xuICAgIHN1cGVyKFxuICAgICAgYEFkZHJlc3MgbWlzbWF0Y2ggZm9yIGRlc2NyaXB0b3IgJHtkZXNjcmlwdG9yLnRvU3RyaW5nKCl9IGF0IGluZGV4ICR7aW5kZXh9OiAke2Rlcml2ZWRBZGRyZXNzfSAhPT0gJHtleHBlY3RlZEFkZHJlc3N9YFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydERlc2NyaXB0b3JXYWxsZXRBZGRyZXNzKFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmssXG4gIHBhcmFtczogVmVyaWZ5QWRkcmVzc09wdGlvbnM8VXR4b0NvaW5TcGVjaWZpYz4sXG4gIGRlc2NyaXB0b3JzOiBEZXNjcmlwdG9yTWFwXG4pOiB2b2lkIHtcbiAgYXNzZXJ0KHBhcmFtcy5jb2luU3BlY2lmaWMpO1xuICBhc3NlcnQoJ2Rlc2NyaXB0b3JOYW1lJyBpbiBwYXJhbXMuY29pblNwZWNpZmljKTtcbiAgYXNzZXJ0KCdkZXNjcmlwdG9yQ2hlY2tzdW0nIGluIHBhcmFtcy5jb2luU3BlY2lmaWMpO1xuICBjb25zdCB7IGRlc2NyaXB0b3JOYW1lLCBkZXNjcmlwdG9yQ2hlY2tzdW0gfSA9IHBhcmFtcy5jb2luU3BlY2lmaWM7XG4gIGNvbnN0IGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9ycy5nZXQocGFyYW1zLmNvaW5TcGVjaWZpYy5kZXNjcmlwdG9yTmFtZSk7XG4gIGlmICghZGVzY3JpcHRvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGVzY3JpcHRvciAke2Rlc2NyaXB0b3JOYW1lfSBub3QgZm91bmRgKTtcbiAgfVxuICBjb25zdCBjaGVja3N1bSA9IGRlc2NyaXB0b3IudG9TdHJpbmcoKS5zbGljZSgtOCk7XG4gIGlmIChjaGVja3N1bSAhPT0gZGVzY3JpcHRvckNoZWNrc3VtKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYERlc2NyaXB0b3IgY2hlY2tzdW0gbWlzbWF0Y2ggZm9yIGRlc2NyaXB0b3IgbmFtZT0ke2Rlc2NyaXB0b3JOYW1lfTogJHtjaGVja3N1bX0gIT09ICR7ZGVzY3JpcHRvckNoZWNrc3VtfWBcbiAgICApO1xuICB9XG4gIGNvbnN0IGRlcml2ZWRTY3JpcHQgPSBCdWZmZXIuZnJvbShkZXNjcmlwdG9yLmF0RGVyaXZhdGlvbkluZGV4KHBhcmFtcy5pbmRleCkuc2NyaXB0UHVia2V5KCkpO1xuICBjb25zdCBkZXJpdmVkQWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KGRlcml2ZWRTY3JpcHQsIG5ldHdvcmspO1xuICBpZiAocGFyYW1zLmFkZHJlc3MgIT09IGRlcml2ZWRBZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IERlc2NyaXB0b3JBZGRyZXNzTWlzbWF0Y2hFcnJvcihkZXNjcmlwdG9yLCBwYXJhbXMuaW5kZXgsIGRlcml2ZWRBZGRyZXNzLCBwYXJhbXMuYWRkcmVzcyk7XG4gIH1cbn1cbiJdfQ==
@@ -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,34 @@
1
+ import { Descriptor } from '@bitgo/wasm-utxo';
2
+ function toXPub(k) {
3
+ if (typeof k === 'string') {
4
+ return k;
5
+ }
6
+ return k.neutered().toBase58();
7
+ }
8
+ function multi(m, n, keys, path) {
9
+ if (n < m) {
10
+ throw new Error(`Cannot create ${m} of ${n} multisig`);
11
+ }
12
+ if (keys.length < n) {
13
+ throw new Error(`Not enough keys for ${m} of ${n} multisig: keys.length=${keys.length}`);
14
+ }
15
+ keys = keys.slice(0, n);
16
+ return `multi(${m},${keys.map((k) => `${toXPub(k)}/${path}`).join(',')})`;
17
+ }
18
+ function getDescriptorString(builder) {
19
+ switch (builder.name) {
20
+ case 'Wsh2Of3':
21
+ return `wsh(${multi(2, 3, builder.keys, builder.path)})`;
22
+ case 'Wsh2Of2':
23
+ return `wsh(${multi(2, 2, builder.keys, builder.path)})`;
24
+ case 'Wsh2Of3CltvDrop':
25
+ return `wsh(and_v(r:after(${builder.locktime}),${multi(2, 3, builder.keys, builder.path)}))`;
26
+ case 'ShWsh2Of3CltvDrop':
27
+ return `sh(${getDescriptorString({ ...builder, name: 'Wsh2Of3CltvDrop' })})`;
28
+ }
29
+ throw new Error(`Unknown descriptor template: ${builder}`);
30
+ }
31
+ export function getDescriptorFromBuilder(builder) {
32
+ return Descriptor.fromString(getDescriptorString(builder), 'derivable');
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL2J1aWxkZXIvYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFrQjlDLFNBQVMsTUFBTSxDQUFDLENBQTBCO0lBQ3hDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDakMsQ0FBQztBQUVELFNBQVMsS0FBSyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsSUFBaUMsRUFBRSxJQUFZO0lBQ2xGLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQywwQkFBMEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUNELElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QixPQUFPLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDNUUsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsT0FBMEI7SUFDckQsUUFBUSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsS0FBSyxTQUFTO1lBQ1osT0FBTyxPQUFPLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDM0QsS0FBSyxTQUFTO1lBQ1osT0FBTyxPQUFPLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDM0QsS0FBSyxpQkFBaUI7WUFDcEIsT0FBTyxxQkFBcUIsT0FBTyxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQy9GLEtBQUssbUJBQW1CO1lBQ3RCLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNqRixDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLE9BQTBCO0lBQ2pFLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUMxRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbnR5cGUgRGVzY3JpcHRvcldpdGhLZXlzPFROYW1lIGV4dGVuZHMgc3RyaW5nPiA9IHtcbiAgbmFtZTogVE5hbWU7XG4gIGtleXM6IEJJUDMySW50ZXJmYWNlW107XG4gIHBhdGg6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERlc2NyaXB0b3JCdWlsZGVyID1cbiAgfCBEZXNjcmlwdG9yV2l0aEtleXM8J1dzaDJPZjInPlxuICB8IERlc2NyaXB0b3JXaXRoS2V5czwnV3NoMk9mMyc+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,3 @@
1
+ export { getDescriptorFromBuilder } from './builder';
2
+ export { parseDescriptor } from './parse';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9idWlsZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBcUIsTUFBTSxXQUFXLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGdldERlc2NyaXB0b3JGcm9tQnVpbGRlciwgRGVzY3JpcHRvckJ1aWxkZXIgfSBmcm9tICcuL2J1aWxkZXInO1xuZXhwb3J0IHsgcGFyc2VEZXNjcmlwdG9yIH0gZnJvbSAnLi9wYXJzZSc7XG4iXX0=
@@ -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,112 @@
1
+ import { bip32 } from '@bitgo-beta/secp256k1';
2
+ import { getDescriptorFromBuilder } from './builder';
3
+ function isUnaryNode(node, key) {
4
+ if (typeof node !== 'object' || node === null) {
5
+ return false;
6
+ }
7
+ const keys = Object.keys(node);
8
+ return keys.length === 1 && keys[0] === key;
9
+ }
10
+ function unwrapNode(node, path) {
11
+ let current = node;
12
+ for (const key of path) {
13
+ if (!isUnaryNode(current, key)) {
14
+ return undefined;
15
+ }
16
+ current = current[key];
17
+ }
18
+ return current;
19
+ }
20
+ function parseMulti(node) {
21
+ if (!Array.isArray(node)) {
22
+ throw new Error('Unexpected node');
23
+ }
24
+ const [threshold, ...keyNodes] = node;
25
+ if (typeof threshold !== 'number') {
26
+ throw new Error('Expected threshold number');
27
+ }
28
+ const keyWithPath = keyNodes.map((keyNode) => {
29
+ if (!isUnaryNode(keyNode, 'XPub')) {
30
+ throw new Error('Expected XPub node');
31
+ }
32
+ if (typeof keyNode.XPub !== 'string') {
33
+ throw new Error('Expected XPub string');
34
+ }
35
+ const parts = keyNode.XPub.split('/');
36
+ return { xpub: parts[0], path: parts.slice(1).join('/') };
37
+ });
38
+ const paths = keyWithPath.map((k) => k.path);
39
+ paths.forEach((path, i) => {
40
+ if (path !== paths[0]) {
41
+ throw new Error(`Expected all paths to be the same: ${path} !== ${paths[0]}`);
42
+ }
43
+ });
44
+ return {
45
+ threshold,
46
+ keys: keyWithPath.map((k) => bip32.fromBase58(k.xpub)),
47
+ path: paths[0],
48
+ };
49
+ }
50
+ function parseWshMulti(node) {
51
+ const wshMsMulti = unwrapNode(node, ['Wsh', 'Ms', 'Multi']);
52
+ if (wshMsMulti) {
53
+ const { threshold, keys, path } = parseMulti(wshMsMulti);
54
+ let name;
55
+ if (threshold === 2 && keys.length === 2) {
56
+ name = 'Wsh2Of2';
57
+ }
58
+ else if (threshold === 2 && keys.length === 3) {
59
+ name = 'Wsh2Of3';
60
+ }
61
+ else {
62
+ throw new Error('Unexpected multisig');
63
+ }
64
+ return {
65
+ name,
66
+ keys,
67
+ path,
68
+ };
69
+ }
70
+ }
71
+ function parseCltvDrop(node, name, wrapping) {
72
+ const unwrapped = unwrapNode(node, wrapping);
73
+ if (!unwrapped) {
74
+ return;
75
+ }
76
+ if (Array.isArray(unwrapped) && unwrapped.length === 2) {
77
+ const [a, b] = unwrapped;
78
+ const dropAfterAbsLocktime = unwrapNode(a, ['Drop', 'After', 'absLockTime']);
79
+ if (typeof dropAfterAbsLocktime !== 'number') {
80
+ throw new Error('Expected absLockTime number');
81
+ }
82
+ if (!isUnaryNode(b, 'Multi')) {
83
+ throw new Error('Expected Multi node');
84
+ }
85
+ const multi = parseMulti(b.Multi);
86
+ if (multi.threshold === 2 && multi.keys.length === 3) {
87
+ return {
88
+ name,
89
+ locktime: dropAfterAbsLocktime,
90
+ keys: multi.keys,
91
+ path: multi.path,
92
+ };
93
+ }
94
+ }
95
+ }
96
+ export function parseDescriptorNode(node) {
97
+ const parsed = parseWshMulti(node) ??
98
+ parseCltvDrop(node, 'ShWsh2Of3CltvDrop', ['Sh', 'Wsh', 'Ms', 'AndV']) ??
99
+ parseCltvDrop(node, 'Wsh2Of3CltvDrop', ['Wsh', 'Ms', 'AndV']);
100
+ if (!parsed) {
101
+ throw new Error('Failed to parse descriptor node');
102
+ }
103
+ return parsed;
104
+ }
105
+ export function parseDescriptor(descriptor) {
106
+ const builder = parseDescriptorNode(descriptor.node());
107
+ if (getDescriptorFromBuilder(builder).toString() !== descriptor.toString()) {
108
+ throw new Error('Failed to parse descriptor');
109
+ }
110
+ return builder;
111
+ }
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9idWlsZGVyL3BhcnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHOUQsT0FBTyxFQUFxQix3QkFBd0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUl4RSxTQUFTLFdBQVcsQ0FBc0IsSUFBYSxFQUFFLEdBQVM7SUFDaEUsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDO0FBQzlDLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFhLEVBQUUsSUFBYztJQUMvQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDbkIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBYTtJQUsvQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lB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QUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckUsYUFBYSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFVBQXNCO0lBQ3BELE1BQU0sT0FBTyxHQUFHLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELElBQUksd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssVUFBVSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7UUFDM0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UsIGJpcDMyIH0gZnJvbSAnQGJpdGdvLWJldGEvc2VjcDI1NmsxJztcbmltcG9ydCB7IERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgRGVzY3JpcHRvckJ1aWxkZXIsIGdldERlc2NyaXB0b3JGcm9tQnVpbGRlciB9IGZyb20gJy4vYnVpbGRlcic7XG5cbnR5cGUgTm9kZVVuYXJ5PEtleSBleHRlbmRzIHN0cmluZz4gPSB7IFtrIGluIEtleV06IHVua25vd24gfTtcblxuZnVuY3Rpb24gaXNVbmFyeU5vZGU8VEtleSBleHRlbmRzIHN0cmluZz4obm9kZTogdW5rbm93biwga2V5OiBUS2V5KTogbm9kZSBpcyBOb2RlVW5hcnk8VEtleT4ge1xuICBpZiAodHlwZW9mIG5vZGUgIT09ICdvYmplY3QnIHx8IG5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG5vZGUpO1xuICByZXR1cm4ga2V5cy5sZW5ndGggPT09IDEgJiYga2V5c1swXSA9PT0ga2V5O1xufVxuXG5mdW5jdGlvbiB1bndyYXBOb2RlKG5vZGU6IHVua25vd24sIHBhdGg6IHN0cmluZ1tdKTogdW5rbm93biB7XG4gIGxldCBjdXJyZW50ID0gbm9kZTtcbiAgZm9yIChjb25zdCBrZXkgb2YgcGF0aCkge1xuICAgIGlmICghaXNVbmFyeU5vZGUoY3VycmVudCwga2V5KSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY3VycmVudCA9IGN1cnJlbnRba2V5XTtcbiAgfVxuICByZXR1cm4gY3VycmVudDtcbn1cblxuZnVuY3Rpb24gcGFyc2VNdWx0aShub2RlOiB1bmtub3duKToge1xuICB0aHJlc2hvbGQ6IG51bWJlcjtcbiAga2V5czogQklQMzJJbnRlcmZhY2VbXTtcbiAgcGF0aDogc3RyaW5nO1xufSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBub2RlJyk7XG4gIH1cbiAgY29uc3QgW3RocmVzaG9sZCwgLi4ua2V5Tm9kZXNdID0gbm9kZTtcbiAgaWYgKHR5cGVvZiB0aHJlc2hvbGQgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB0aHJlc2hvbGQgbnVtYmVyJyk7XG4gIH1cbiAgY29uc3Qga2V5V2l0aFBhdGggPSBrZXlOb2Rlcy5tYXAoKGtleU5vZGUpID0+IHtcbiAgICBpZiAoIWlzVW5hcnlOb2RlKGtleU5vZGUsICdYUHViJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgWFB1YiBub2RlJyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2Yga2V5Tm9kZS5YUHViICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBYUHViIHN0cmluZycpO1xuICAgIH1cbiAgICBjb25zdCBwYXJ0cyA9IGtleU5vZGUuWFB1Yi5zcGxpdCgnLycpO1xuICAgIHJldHVybiB7IHhwdWI6IHBhcnRzWzBdLCBwYXRoOiBwYXJ0cy5zbGljZSgxKS5qb2luKCcvJykgfTtcbiAgfSk7XG4gIGNvbnN0IHBhdGhzID0ga2V5V2l0aFBhdGgubWFwKChrKSA9PiBrLnBhdGgpO1xuICBwYXRocy5mb3JFYWNoKChwYXRoLCBpKSA9PiB7XG4gICAgaWYgKHBhdGggIT09IHBhdGhzWzBdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGFsbCBwYXRocyB0byBiZSB0aGUgc2FtZTogJHtwYXRofSAhPT0gJHtwYXRoc1swXX1gKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHRocmVzaG9sZCxcbiAgICBrZXlzOiBrZXlXaXRoUGF0aC5tYXAoKGspID0+IGJpcDMyLmZyb21CYXNlNTgoay54cHViKSksXG4gICAgcGF0aDogcGF0aHNbMF0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlV3NoTXVsdGkobm9kZTogdW5rbm93bik6IERlc2NyaXB0b3JCdWlsZGVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgd3NoTXNNdWx0aSA9IHVud3JhcE5vZGUobm9kZSwgWydXc2gnLCAnTXMnLCAnTXVsdGknXSk7XG4gIGlmICh3c2hNc011bHRpKSB7XG4gICAgY29uc3QgeyB0aHJlc2hvbGQsIGtleXMsIHBhdGggfSA9IHBhcnNlTXVsdGkod3NoTXNNdWx0aSk7XG4gICAgbGV0IG5hbWU7XG4gICAgaWYgKHRocmVzaG9sZCA9PT0gMiAmJiBrZXlzLmxlbmd0aCA9PT0gMikge1xuICAgICAgbmFtZSA9ICdXc2gyT2YyJztcbiAgICB9IGVsc2UgaWYgKHRocmVzaG9sZCA9PT0gMiAmJiBrZXlzLmxlbmd0aCA9PT0gMykge1xuICAgICAgbmFtZSA9ICdXc2gyT2YzJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIG11bHRpc2lnJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBuYW1lLFxuICAgICAga2V5cyxcbiAgICAgIHBhdGgsXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUNsdHZEcm9wKFxuICBub2RlOiB1bmtub3duLFxuICBuYW1lOiAnV3NoMk9mM0NsdHZEcm9wJyB8ICdTaFdzaDJPZjNDbHR2RHJvcCcsXG4gIHdyYXBwaW5nOiBzdHJpbmdbXVxuKTogRGVzY3JpcHRvckJ1aWxkZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCB1bndyYXBwZWQgPSB1bndyYXBOb2RlKG5vZGUsIHdyYXBwaW5nKTtcbiAgaWYgKCF1bndyYXBwZWQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodW53cmFwcGVkKSAmJiB1bndyYXBwZWQubGVuZ3RoID09PSAyKSB7XG4gICAgY29uc3QgW2EsIGJdID0gdW53cmFwcGVkO1xuICAgIGNvbnN0IGRyb3BBZnRlckFic0xvY2t0aW1lID0gdW53cmFwTm9kZShhLCBbJ0Ryb3AnLCAnQWZ0ZXInLCAnYWJzTG9ja1RpbWUnXSk7XG4gICAgaWYgKHR5cGVvZiBkcm9wQWZ0ZXJBYnNMb2NrdGltZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgYWJzTG9ja1RpbWUgbnVtYmVyJyk7XG4gICAgfVxuICAgIGlmICghaXNVbmFyeU5vZGUoYiwgJ011bHRpJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgTXVsdGkgbm9kZScpO1xuICAgIH1cbiAgICBjb25zdCBtdWx0aSA9IHBhcnNlTXVsdGkoYi5NdWx0aSk7XG4gICAgaWYgKG11bHRpLnRocmVzaG9sZCA9PT0gMiAmJiBtdWx0aS5rZXlzLmxlbmd0aCA9PT0gMykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgbG9ja3RpbWU6IGRyb3BBZnRlckFic0xvY2t0aW1lLFxuICAgICAgICBrZXlzOiBtdWx0aS5rZXlzLFxuICAgICAgICBwYXRoOiBtdWx0aS5wYXRoLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGVzY3JpcHRvck5vZGUobm9kZTogdW5rbm93bik6IERlc2NyaXB0b3JCdWlsZGVyIHtcbiAgY29uc3QgcGFyc2VkID1cbiAgICBwYXJzZVdzaE11bHRpKG5vZGUpID8/XG4gICAgcGFyc2VDbHR2RHJvcChub2RlLCAnU2hXc2gyT2YzQ2x0dkRyb3AnLCBbJ1NoJywgJ1dzaCcsICdNcycsICdBbmRWJ10pID8/XG4gICAgcGFyc2VDbHR2RHJvcChub2RlLCAnV3NoMk9mM0NsdHZEcm9wJywgWydXc2gnLCAnTXMnLCAnQW5kViddKTtcbiAgaWYgKCFwYXJzZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSBkZXNjcmlwdG9yIG5vZGUnKTtcbiAgfVxuICByZXR1cm4gcGFyc2VkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IERlc2NyaXB0b3IpOiBEZXNjcmlwdG9yQnVpbGRlciB7XG4gIGNvbnN0IGJ1aWxkZXIgPSBwYXJzZURlc2NyaXB0b3JOb2RlKGRlc2NyaXB0b3Iubm9kZSgpKTtcbiAgaWYgKGdldERlc2NyaXB0b3JGcm9tQnVpbGRlcihidWlsZGVyKS50b1N0cmluZygpICE9PSBkZXNjcmlwdG9yLnRvU3RyaW5nKCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSBkZXNjcmlwdG9yJyk7XG4gIH1cbiAgcmV0dXJuIGJ1aWxkZXI7XG59XG4iXX0=
@@ -0,0 +1,20 @@
1
+ import { BitGoAPI } from '@bitgo-beta/sdk-api';
2
+ import { AbstractUtxoCoin } from '../../abstractUtxoCoin';
3
+ import { IDescriptorWallet } from '../descriptorWallet';
4
+ import { NamedDescriptor } from '../NamedDescriptor';
5
+ import { DescriptorFromKeys } from './createDescriptors';
6
+ export declare function createDescriptorWallet(bitgo: BitGoAPI, coin: AbstractUtxoCoin, { descriptors, ...params }: {
7
+ type: 'hot';
8
+ label: string;
9
+ enterprise: string;
10
+ keys: string[];
11
+ descriptors: NamedDescriptor[];
12
+ }): Promise<IDescriptorWallet>;
13
+ export declare function createDescriptorWalletWithWalletPassphrase(bitgo: BitGoAPI, coin: AbstractUtxoCoin, { enterprise, walletPassphrase, descriptorsFromKeys, ...params }: {
14
+ label: string;
15
+ enterprise: string;
16
+ walletPassphrase: string;
17
+ descriptorsFromKeys: DescriptorFromKeys;
18
+ [key: string]: unknown;
19
+ }): Promise<IDescriptorWallet>;
20
+ //# sourceMappingURL=createDescriptorWallet.d.ts.map
@@ -0,0 +1,37 @@
1
+ import { bip32 } from '@bitgo-beta/secp256k1';
2
+ import { Wallet } from '@bitgo-beta/sdk-core';
3
+ export async function createDescriptorWallet(bitgo, coin, { descriptors, ...params }) {
4
+ // We don't use `coin.wallets().add` here because it does a bunch of validation that does not make sense
5
+ // for descriptor wallets.
6
+ const newWallet = await bitgo
7
+ .post(coin.url('/wallet/add'))
8
+ .send({
9
+ ...params,
10
+ coinSpecific: { descriptors },
11
+ })
12
+ .result();
13
+ return new Wallet(bitgo, coin, newWallet);
14
+ }
15
+ export async function createDescriptorWalletWithWalletPassphrase(bitgo, coin, { enterprise, walletPassphrase, descriptorsFromKeys, ...params }) {
16
+ const userKeychain = await coin.keychains().createUserKeychain(walletPassphrase);
17
+ const backupKeychain = await coin.keychains().createBackup();
18
+ const bitgoKeychain = await coin.keychains().createBitGo({ enterprise });
19
+ if (!userKeychain.prv) {
20
+ throw new Error('Missing private key');
21
+ }
22
+ const userKey = bip32.fromBase58(userKeychain.prv);
23
+ const cosigners = [backupKeychain, bitgoKeychain].map((keychain) => {
24
+ if (!keychain.pub) {
25
+ throw new Error('Missing public key');
26
+ }
27
+ return bip32.fromBase58(keychain.pub);
28
+ });
29
+ return createDescriptorWallet(bitgo, coin, {
30
+ ...params,
31
+ type: 'hot',
32
+ enterprise,
33
+ keys: [userKeychain.id, backupKeychain.id, bitgoKeychain.id],
34
+ descriptors: descriptorsFromKeys(userKey, cosigners),
35
+ });
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlRGVzY3JpcHRvcldhbGxldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL2NyZWF0ZVdhbGxldC9jcmVhdGVEZXNjcmlwdG9yV2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFROUMsTUFBTSxDQUFDLEtBQUssVUFBVSxzQkFBc0IsQ0FDMUMsS0FBZSxFQUNmLElBQXNCLEVBQ3RCLEVBQ0UsV0FBVyxFQUNYLEdBQUcsTUFBTSxFQU9WO0lBRUQsd0dBQXdHO0lBQ3hHLDBCQUEwQjtJQUMxQixNQUFNLFNBQVMsR0FBRyxNQUFNLEtBQUs7U0FDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDN0IsSUFBSSxDQUFDO1FBQ0osR0FBRyxNQUFNO1FBQ1QsWUFBWSxFQUFFLEVBQUUsV0FBVyxFQUFFO0tBQzlCLENBQUM7U0FDRCxNQUFNLEVBQUUsQ0FBQztJQUNaLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLENBQXNCLENBQUM7QUFDakUsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsMENBQTBDLENBQzlELEtBQWUsRUFDZixJQUFzQixFQUN0QixFQUNFLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLEdBQUcsTUFBTSxFQU9WO0lBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNqRixNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3RCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRCxNQUFNLFNBQVMsR0FBRyxDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNqRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sc0JBQXNCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRTtRQUN6QyxHQUFHLE1BQU07UUFDVCxJQUFJLEVBQUUsS0FBSztRQUNYLFVBQVU7UUFDVixJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUM1RCxXQUFXLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztLQUNyRCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcbmltcG9ydCB7IGJpcDMyIH0gZnJvbSAnQGJpdGdvLWJldGEvc2VjcDI1NmsxJztcbmltcG9ydCB7IFdhbGxldCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiB9IGZyb20gJy4uLy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuaW1wb3J0IHsgSURlc2NyaXB0b3JXYWxsZXQgfSBmcm9tICcuLi9kZXNjcmlwdG9yV2FsbGV0JztcbmltcG9ydCB7IE5hbWVkRGVzY3JpcHRvciB9IGZyb20gJy4uL05hbWVkRGVzY3JpcHRvcic7XG5cbmltcG9ydCB7IERlc2NyaXB0b3JGcm9tS2V5cyB9IGZyb20gJy4vY3JlYXRlRGVzY3JpcHRvcnMnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGVzY3JpcHRvcldhbGxldChcbiAgYml0Z286IEJpdEdvQVBJLFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICB7XG4gICAgZGVzY3JpcHRvcnMsXG4gICAgLi4ucGFyYW1zXG4gIH06IHtcbiAgICB0eXBlOiAnaG90JztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGVudGVycHJpc2U6IHN0cmluZztcbiAgICBrZXlzOiBzdHJpbmdbXTtcbiAgICBkZXNjcmlwdG9yczogTmFtZWREZXNjcmlwdG9yW107XG4gIH1cbik6IFByb21pc2U8SURlc2NyaXB0b3JXYWxsZXQ+IHtcbiAgLy8gV2UgZG9uJ3QgdXNlIGBjb2luLndhbGxldHMoKS5hZGRgIGhlcmUgYmVjYXVzZSBpdCBkb2VzIGEgYnVuY2ggb2YgdmFsaWRhdGlvbiB0aGF0IGRvZXMgbm90IG1ha2Ugc2Vuc2VcbiAgLy8gZm9yIGRlc2NyaXB0b3Igd2FsbGV0cy5cbiAgY29uc3QgbmV3V2FsbGV0ID0gYXdhaXQgYml0Z29cbiAgICAucG9zdChjb2luLnVybCgnL3dhbGxldC9hZGQnKSlcbiAgICAuc2VuZCh7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBjb2luU3BlY2lmaWM6IHsgZGVzY3JpcHRvcnMgfSxcbiAgICB9KVxuICAgIC5yZXN1bHQoKTtcbiAgcmV0dXJuIG5ldyBXYWxsZXQoYml0Z28sIGNvaW4sIG5ld1dhbGxldCkgYXMgSURlc2NyaXB0b3JXYWxsZXQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVEZXNjcmlwdG9yV2FsbGV0V2l0aFdhbGxldFBhc3NwaHJhc2UoXG4gIGJpdGdvOiBCaXRHb0FQSSxcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAge1xuICAgIGVudGVycHJpc2UsXG4gICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICBkZXNjcmlwdG9yc0Zyb21LZXlzLFxuICAgIC4uLnBhcmFtc1xuICB9OiB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBlbnRlcnByaXNlOiBzdHJpbmc7XG4gICAgd2FsbGV0UGFzc3BocmFzZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0b3JzRnJvbUtleXM6IERlc2NyaXB0b3JGcm9tS2V5cztcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICB9XG4pOiBQcm9taXNlPElEZXNjcmlwdG9yV2FsbGV0PiB7XG4gIGNvbnN0IHVzZXJLZXljaGFpbiA9IGF3YWl0IGNvaW4ua2V5Y2hhaW5zKCkuY3JlYXRlVXNlcktleWNoYWluKHdhbGxldFBhc3NwaHJhc2UpO1xuICBjb25zdCBiYWNrdXBLZXljaGFpbiA9IGF3YWl0IGNvaW4ua2V5Y2hhaW5zKCkuY3JlYXRlQmFja3VwKCk7XG4gIGNvbnN0IGJpdGdvS2V5Y2hhaW4gPSBhd2FpdCBjb2luLmtleWNoYWlucygpLmNyZWF0ZUJpdEdvKHsgZW50ZXJwcmlzZSB9KTtcbiAgaWYgKCF1c2VyS2V5Y2hhaW4ucHJ2KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gIH1cbiAgY29uc3QgdXNlcktleSA9IGJpcDMyLmZyb21CYXNlNTgodXNlcktleWNoYWluLnBydik7XG4gIGNvbnN0IGNvc2lnbmVycyA9IFtiYWNrdXBLZXljaGFpbiwgYml0Z29LZXljaGFpbl0ubWFwKChrZXljaGFpbikgPT4ge1xuICAgIGlmICgha2V5Y2hhaW4ucHViKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHVibGljIGtleScpO1xuICAgIH1cbiAgICByZXR1cm4gYmlwMzIuZnJvbUJhc2U1OChrZXljaGFpbi5wdWIpO1xuICB9KTtcbiAgcmV0dXJuIGNyZWF0ZURlc2NyaXB0b3JXYWxsZXQoYml0Z28sIGNvaW4sIHtcbiAgICAuLi5wYXJhbXMsXG4gICAgdHlwZTogJ2hvdCcsXG4gICAgZW50ZXJwcmlzZSxcbiAgICBrZXlzOiBbdXNlcktleWNoYWluLmlkLCBiYWNrdXBLZXljaGFpbi5pZCwgYml0Z29LZXljaGFpbi5pZF0sXG4gICAgZGVzY3JpcHRvcnM6IGRlc2NyaXB0b3JzRnJvbUtleXModXNlcktleSwgY29zaWduZXJzKSxcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,12 @@
1
+ import { BIP32Interface } from '@bitgo-beta/utxo-lib';
2
+ import { NamedDescriptor } from '../NamedDescriptor';
3
+ export type DescriptorFromKeys = (userKey: BIP32Interface, cosigners: BIP32Interface[]) => NamedDescriptor[];
4
+ /**
5
+ * Create a pair of external and internal descriptors for a 2-of-3 multisig wallet.
6
+ *
7
+ * @param userKey
8
+ * @param cosigners
9
+ * @constructor
10
+ */
11
+ export declare const DefaultWsh2Of3: DescriptorFromKeys;
12
+ //# sourceMappingURL=createDescriptors.d.ts.map