@bitgo-beta/abstract-utxo 1.1.1-beta.232 → 1.1.1-beta.2321

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 (928) hide show
  1. package/README.md +76 -0
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts +466 -0
  3. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -0
  4. package/dist/cjs/src/abstractUtxoCoin.js +644 -0
  5. package/dist/cjs/src/address/fixedScript.d.ts +44 -0
  6. package/dist/cjs/src/address/fixedScript.d.ts.map +1 -0
  7. package/dist/cjs/src/address/fixedScript.js +109 -0
  8. package/dist/cjs/src/address/index.d.ts +2 -0
  9. package/dist/cjs/src/address/index.d.ts.map +1 -0
  10. package/dist/cjs/src/address/index.js +8 -0
  11. package/dist/cjs/src/config.d.ts.map +1 -0
  12. package/dist/cjs/src/config.js +14 -0
  13. package/dist/cjs/src/deriveKeyWithSeed.d.ts +12 -0
  14. package/dist/cjs/src/deriveKeyWithSeed.d.ts.map +1 -0
  15. package/dist/cjs/src/deriveKeyWithSeed.js +17 -0
  16. package/dist/cjs/src/descriptor/NamedDescriptor.d.ts +19 -0
  17. package/dist/cjs/src/descriptor/NamedDescriptor.d.ts.map +1 -0
  18. package/dist/cjs/src/descriptor/NamedDescriptor.js +77 -0
  19. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
  20. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
  21. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.js +32 -0
  22. package/dist/cjs/src/descriptor/builder/builder.d.ts +17 -0
  23. package/dist/cjs/src/descriptor/builder/builder.d.ts.map +1 -0
  24. package/dist/cjs/src/descriptor/builder/builder.js +54 -0
  25. package/dist/cjs/src/descriptor/builder/index.d.ts +3 -0
  26. package/dist/cjs/src/descriptor/builder/index.d.ts.map +1 -0
  27. package/dist/cjs/src/descriptor/builder/index.js +8 -0
  28. package/dist/cjs/src/descriptor/builder/parse.d.ts +5 -0
  29. package/dist/cjs/src/descriptor/builder/parse.d.ts.map +1 -0
  30. package/dist/cjs/src/descriptor/builder/parse.js +148 -0
  31. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
  32. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
  33. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.js +41 -0
  34. package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts +12 -0
  35. package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  36. package/dist/cjs/src/descriptor/createWallet/createDescriptors.js +33 -0
  37. package/dist/cjs/src/descriptor/createWallet/index.d.ts +3 -0
  38. package/dist/cjs/src/descriptor/createWallet/index.d.ts.map +1 -0
  39. package/dist/cjs/src/descriptor/createWallet/index.js +19 -0
  40. package/dist/cjs/src/descriptor/descriptorWallet.d.ts +19 -0
  41. package/dist/cjs/src/descriptor/descriptorWallet.d.ts.map +1 -0
  42. package/dist/cjs/src/descriptor/descriptorWallet.js +54 -0
  43. package/dist/cjs/src/descriptor/index.d.ts +9 -0
  44. package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
  45. package/dist/cjs/src/descriptor/index.js +53 -0
  46. package/dist/cjs/src/descriptor/validatePolicy.d.ts +22 -0
  47. package/dist/cjs/src/descriptor/validatePolicy.d.ts.map +1 -0
  48. package/dist/cjs/src/descriptor/validatePolicy.js +94 -0
  49. package/dist/cjs/src/impl/bch/bch.d.ts +36 -0
  50. package/dist/cjs/src/impl/bch/bch.d.ts.map +1 -0
  51. package/dist/cjs/src/impl/bch/bch.js +67 -0
  52. package/dist/cjs/src/impl/bch/index.d.ts +3 -0
  53. package/dist/cjs/src/impl/bch/index.d.ts.map +1 -0
  54. package/dist/cjs/src/impl/bch/index.js +19 -0
  55. package/dist/cjs/src/impl/bch/tbch.d.ts +12 -0
  56. package/dist/cjs/src/impl/bch/tbch.d.ts.map +1 -0
  57. package/dist/cjs/src/impl/bch/tbch.js +15 -0
  58. package/dist/cjs/src/impl/bcha/bcha.d.ts +9 -0
  59. package/dist/cjs/src/impl/bcha/bcha.d.ts.map +1 -0
  60. package/dist/cjs/src/impl/bcha/bcha.js +15 -0
  61. package/dist/cjs/src/impl/bcha/index.d.ts +3 -0
  62. package/dist/cjs/src/impl/bcha/index.d.ts.map +1 -0
  63. package/dist/cjs/src/impl/bcha/index.js +19 -0
  64. package/dist/cjs/src/impl/bcha/tbcha.d.ts +12 -0
  65. package/dist/cjs/src/impl/bcha/tbcha.d.ts.map +1 -0
  66. package/dist/cjs/src/impl/bcha/tbcha.js +15 -0
  67. package/dist/cjs/src/impl/bsv/bsv.d.ts +9 -0
  68. package/dist/cjs/src/impl/bsv/bsv.d.ts.map +1 -0
  69. package/dist/cjs/src/impl/bsv/bsv.js +15 -0
  70. package/dist/cjs/src/impl/bsv/index.d.ts +3 -0
  71. package/dist/cjs/src/impl/bsv/index.d.ts.map +1 -0
  72. package/dist/cjs/src/impl/bsv/index.js +19 -0
  73. package/dist/cjs/src/impl/bsv/tbsv.d.ts +12 -0
  74. package/dist/cjs/src/impl/bsv/tbsv.d.ts.map +1 -0
  75. package/dist/cjs/src/impl/bsv/tbsv.js +15 -0
  76. package/dist/cjs/src/impl/btc/btc.d.ts +15 -0
  77. package/dist/cjs/src/impl/btc/btc.d.ts.map +1 -0
  78. package/dist/cjs/src/impl/btc/btc.js +22 -0
  79. package/dist/cjs/src/impl/btc/index.d.ts +10 -0
  80. package/dist/cjs/src/impl/btc/index.d.ts.map +1 -0
  81. package/dist/cjs/src/impl/btc/index.js +26 -0
  82. package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts +61 -0
  83. package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts.map +1 -0
  84. package/dist/cjs/src/impl/btc/inscriptionBuilder.js +170 -0
  85. package/dist/cjs/src/impl/btc/tbtc.d.ts +12 -0
  86. package/dist/cjs/src/impl/btc/tbtc.d.ts.map +1 -0
  87. package/dist/cjs/src/impl/btc/tbtc.js +15 -0
  88. package/dist/cjs/src/impl/btc/tbtc4.d.ts +12 -0
  89. package/dist/cjs/src/impl/btc/tbtc4.d.ts.map +1 -0
  90. package/dist/cjs/src/impl/btc/tbtc4.js +15 -0
  91. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts +12 -0
  92. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts.map +1 -0
  93. package/dist/cjs/src/impl/btc/tbtcbgsig.js +15 -0
  94. package/dist/cjs/src/impl/btc/tbtcsig.d.ts +12 -0
  95. package/dist/cjs/src/impl/btc/tbtcsig.d.ts.map +1 -0
  96. package/dist/cjs/src/impl/btc/tbtcsig.js +15 -0
  97. package/dist/cjs/src/impl/btc/tbtcstx.d.ts +10 -0
  98. package/dist/cjs/src/impl/btc/tbtcstx.d.ts.map +1 -0
  99. package/dist/cjs/src/impl/btc/tbtcstx.js +18 -0
  100. package/dist/cjs/src/impl/btc/tbtcstxprivate1.d.ts +9 -0
  101. package/dist/cjs/src/impl/btc/tbtcstxprivate1.d.ts.map +1 -0
  102. package/dist/cjs/src/impl/btc/tbtcstxprivate1.js +15 -0
  103. package/dist/cjs/src/impl/btc/tbtcstxsignet.d.ts +10 -0
  104. package/dist/cjs/src/impl/btc/tbtcstxsignet.d.ts.map +1 -0
  105. package/dist/cjs/src/impl/btc/tbtcstxsignet.js +18 -0
  106. package/dist/cjs/src/impl/btg/btg.d.ts +9 -0
  107. package/dist/cjs/src/impl/btg/btg.d.ts.map +1 -0
  108. package/dist/cjs/src/impl/btg/btg.js +15 -0
  109. package/dist/cjs/src/impl/btg/index.d.ts +2 -0
  110. package/dist/cjs/src/impl/btg/index.d.ts.map +1 -0
  111. package/dist/cjs/src/impl/btg/index.js +18 -0
  112. package/dist/cjs/src/impl/dash/dash.d.ts +9 -0
  113. package/dist/cjs/src/impl/dash/dash.d.ts.map +1 -0
  114. package/dist/cjs/src/impl/dash/dash.js +15 -0
  115. package/dist/cjs/src/impl/dash/index.d.ts +3 -0
  116. package/dist/cjs/src/impl/dash/index.d.ts.map +1 -0
  117. package/dist/cjs/src/impl/dash/index.js +19 -0
  118. package/dist/cjs/src/impl/dash/tdash.d.ts +12 -0
  119. package/dist/cjs/src/impl/dash/tdash.d.ts.map +1 -0
  120. package/dist/cjs/src/impl/dash/tdash.js +15 -0
  121. package/dist/cjs/src/impl/doge/doge.d.ts +33 -0
  122. package/dist/cjs/src/impl/doge/doge.d.ts.map +1 -0
  123. package/dist/cjs/src/impl/doge/doge.js +76 -0
  124. package/dist/cjs/src/impl/doge/index.d.ts +3 -0
  125. package/dist/cjs/src/impl/doge/index.d.ts.map +1 -0
  126. package/dist/cjs/src/impl/doge/index.js +19 -0
  127. package/dist/cjs/src/impl/doge/tdoge.d.ts +12 -0
  128. package/dist/cjs/src/impl/doge/tdoge.d.ts.map +1 -0
  129. package/dist/cjs/src/impl/doge/tdoge.js +15 -0
  130. package/dist/cjs/src/impl/index.d.ts +11 -0
  131. package/dist/cjs/src/impl/index.d.ts.map +1 -0
  132. package/dist/cjs/src/impl/index.js +47 -0
  133. package/dist/cjs/src/impl/ltc/index.d.ts +3 -0
  134. package/dist/cjs/src/impl/ltc/index.d.ts.map +1 -0
  135. package/dist/cjs/src/impl/ltc/index.js +19 -0
  136. package/dist/cjs/src/impl/ltc/ltc.d.ts +8 -0
  137. package/dist/cjs/src/impl/ltc/ltc.d.ts.map +1 -0
  138. package/dist/cjs/src/impl/ltc/ltc.js +15 -0
  139. package/dist/cjs/src/impl/ltc/tltc.d.ts +8 -0
  140. package/dist/cjs/src/impl/ltc/tltc.d.ts.map +1 -0
  141. package/dist/cjs/src/impl/ltc/tltc.js +15 -0
  142. package/dist/cjs/src/impl/pearl/index.d.ts +3 -0
  143. package/dist/cjs/src/impl/pearl/index.d.ts.map +1 -0
  144. package/dist/cjs/src/impl/pearl/index.js +19 -0
  145. package/dist/cjs/src/impl/pearl/pearl.d.ts +17 -0
  146. package/dist/cjs/src/impl/pearl/pearl.d.ts.map +1 -0
  147. package/dist/cjs/src/impl/pearl/pearl.js +24 -0
  148. package/dist/cjs/src/impl/pearl/tpearl.d.ts +8 -0
  149. package/dist/cjs/src/impl/pearl/tpearl.d.ts.map +1 -0
  150. package/dist/cjs/src/impl/pearl/tpearl.js +15 -0
  151. package/dist/cjs/src/impl/zec/address.d.ts +79 -0
  152. package/dist/cjs/src/impl/zec/address.d.ts.map +1 -0
  153. package/dist/cjs/src/impl/zec/address.js +157 -0
  154. package/dist/cjs/src/impl/zec/index.d.ts +7 -0
  155. package/dist/cjs/src/impl/zec/index.d.ts.map +1 -0
  156. package/dist/cjs/src/impl/zec/index.js +23 -0
  157. package/dist/cjs/src/impl/zec/recipients.d.ts +86 -0
  158. package/dist/cjs/src/impl/zec/recipients.d.ts.map +1 -0
  159. package/dist/cjs/src/impl/zec/recipients.js +98 -0
  160. package/dist/cjs/src/impl/zec/shieldedAddress.d.ts +36 -0
  161. package/dist/cjs/src/impl/zec/shieldedAddress.d.ts.map +1 -0
  162. package/dist/cjs/src/impl/zec/shieldedAddress.js +51 -0
  163. package/dist/cjs/src/impl/zec/signIronwoodTransaction.d.ts +29 -0
  164. package/dist/cjs/src/impl/zec/signIronwoodTransaction.d.ts.map +1 -0
  165. package/dist/cjs/src/impl/zec/signIronwoodTransaction.js +57 -0
  166. package/dist/cjs/src/impl/zec/types.d.ts +8 -0
  167. package/dist/cjs/src/impl/zec/types.d.ts.map +1 -0
  168. package/dist/cjs/src/impl/zec/types.js +3 -0
  169. package/dist/cjs/src/impl/zec/tzec.d.ts +9 -0
  170. package/dist/cjs/src/impl/zec/tzec.d.ts.map +1 -0
  171. package/dist/cjs/src/impl/zec/tzec.js +15 -0
  172. package/dist/cjs/src/impl/zec/zec.d.ts +58 -0
  173. package/dist/cjs/src/impl/zec/zec.d.ts.map +1 -0
  174. package/dist/cjs/src/impl/zec/zec.js +124 -0
  175. package/dist/cjs/src/index.d.ts +23 -0
  176. package/dist/cjs/src/index.d.ts.map +1 -0
  177. package/dist/cjs/src/index.js +62 -0
  178. package/dist/cjs/src/keychains.d.ts +55 -0
  179. package/dist/cjs/src/keychains.d.ts.map +1 -0
  180. package/dist/cjs/src/keychains.js +143 -0
  181. package/dist/cjs/src/names.d.ts +16 -0
  182. package/dist/cjs/src/names.d.ts.map +1 -0
  183. package/dist/cjs/src/names.js +119 -0
  184. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts +9 -0
  185. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
  186. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.js +22 -0
  187. package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts +46 -0
  188. package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
  189. package/dist/cjs/src/offlineVault/OfflineVaultSignable.js +55 -0
  190. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts +16 -0
  191. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts.map +1 -0
  192. package/dist/cjs/src/offlineVault/TransactionExplanation.js +15 -0
  193. package/dist/cjs/src/offlineVault/descriptor/index.d.ts +2 -0
  194. package/dist/cjs/src/offlineVault/descriptor/index.d.ts.map +1 -0
  195. package/dist/cjs/src/offlineVault/descriptor/index.js +18 -0
  196. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts +39 -0
  197. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts.map +1 -0
  198. package/dist/cjs/src/offlineVault/descriptor/transaction.js +80 -0
  199. package/dist/cjs/src/offlineVault/index.d.ts +6 -0
  200. package/dist/cjs/src/offlineVault/index.d.ts.map +1 -0
  201. package/dist/cjs/src/offlineVault/index.js +44 -0
  202. package/dist/{src → cjs/src}/recovery/RecoveryProvider.d.ts +1 -3
  203. package/dist/cjs/src/recovery/RecoveryProvider.d.ts.map +1 -0
  204. package/dist/cjs/src/recovery/RecoveryProvider.js +22 -0
  205. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts +176 -0
  206. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -0
  207. package/dist/cjs/src/recovery/backupKeyRecovery.js +417 -0
  208. package/dist/{src → cjs/src}/recovery/baseApi.d.ts +3 -6
  209. package/dist/cjs/src/recovery/baseApi.d.ts.map +1 -0
  210. package/dist/cjs/src/recovery/baseApi.js +73 -0
  211. package/dist/{src → cjs/src}/recovery/coingeckoApi.d.ts +0 -3
  212. package/dist/cjs/src/recovery/coingeckoApi.d.ts.map +1 -0
  213. package/dist/cjs/src/recovery/coingeckoApi.js +44 -0
  214. package/dist/{src → cjs/src}/recovery/crossChainRecovery.d.ts +21 -9
  215. package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -0
  216. package/dist/cjs/src/recovery/crossChainRecovery.js +302 -0
  217. package/dist/{src → cjs/src}/recovery/index.d.ts +0 -1
  218. package/dist/cjs/src/recovery/index.d.ts.map +1 -0
  219. package/dist/{src → cjs/src}/recovery/index.js +6 -3
  220. package/dist/cjs/src/recovery/mempoolApi.d.ts.map +1 -0
  221. package/dist/cjs/src/recovery/mempoolApi.js +36 -0
  222. package/dist/cjs/src/recovery/psbt.d.ts +68 -0
  223. package/dist/cjs/src/recovery/psbt.d.ts.map +1 -0
  224. package/dist/cjs/src/recovery/psbt.js +160 -0
  225. package/dist/cjs/src/tnumber.d.ts +4 -0
  226. package/dist/cjs/src/tnumber.d.ts.map +1 -0
  227. package/dist/cjs/src/tnumber.js +12 -0
  228. package/dist/cjs/src/transaction/bip322.d.ts +27 -0
  229. package/dist/cjs/src/transaction/bip322.d.ts.map +1 -0
  230. package/dist/cjs/src/transaction/bip322.js +139 -0
  231. package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts +2 -0
  232. package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
  233. package/dist/cjs/src/transaction/common/verifyPayGoAmount.js +3 -0
  234. package/dist/cjs/src/transaction/decode.d.ts +21 -0
  235. package/dist/cjs/src/transaction/decode.d.ts.map +1 -0
  236. package/dist/cjs/src/transaction/decode.js +46 -0
  237. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts +5 -0
  238. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  239. package/dist/cjs/src/transaction/descriptor/explainPsbt.js +48 -0
  240. package/dist/cjs/src/transaction/descriptor/index.d.ts +7 -0
  241. package/dist/cjs/src/transaction/descriptor/index.d.ts.map +1 -0
  242. package/dist/cjs/src/transaction/descriptor/index.js +14 -0
  243. package/dist/cjs/src/transaction/descriptor/parse.d.ts +18 -0
  244. package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -0
  245. package/dist/cjs/src/transaction/descriptor/parse.js +85 -0
  246. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts +15 -0
  247. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
  248. package/dist/cjs/src/transaction/descriptor/parseToAmountType.js +60 -0
  249. package/dist/cjs/src/transaction/descriptor/recipient.d.ts +5 -0
  250. package/dist/cjs/src/transaction/descriptor/recipient.d.ts.map +1 -0
  251. package/dist/cjs/src/transaction/descriptor/recipient.js +3 -0
  252. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts +25 -0
  253. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts.map +1 -0
  254. package/dist/cjs/src/transaction/descriptor/signPsbt.js +44 -0
  255. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts +36 -0
  256. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
  257. package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +90 -0
  258. package/dist/cjs/src/transaction/explainTransaction.d.ts +19 -0
  259. package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -0
  260. package/dist/cjs/src/transaction/explainTransaction.js +85 -0
  261. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts +24 -0
  262. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts.map +1 -0
  263. package/dist/cjs/src/transaction/fixedScript/SigningError.js +32 -0
  264. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts +47 -0
  265. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  266. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.js +152 -0
  267. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +47 -0
  268. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  269. package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +3 -0
  270. package/dist/cjs/src/transaction/fixedScript/index.d.ts +8 -0
  271. package/dist/cjs/src/transaction/fixedScript/index.d.ts.map +1 -0
  272. package/dist/cjs/src/transaction/fixedScript/index.js +30 -0
  273. package/dist/cjs/src/transaction/fixedScript/musig2.d.ts +4 -0
  274. package/dist/cjs/src/transaction/fixedScript/musig2.d.ts.map +1 -0
  275. package/dist/cjs/src/transaction/fixedScript/musig2.js +3 -0
  276. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts +30 -0
  277. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  278. package/dist/cjs/src/transaction/fixedScript/parseOutput.js +217 -0
  279. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts +9 -0
  280. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  281. package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +234 -0
  282. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts +10 -0
  283. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  284. package/dist/cjs/src/transaction/fixedScript/replayProtection.js +44 -0
  285. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts +27 -0
  286. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
  287. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.js +130 -0
  288. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +31 -0
  289. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -0
  290. package/dist/cjs/src/transaction/fixedScript/signTransaction.js +55 -0
  291. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts +21 -0
  292. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  293. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.js +182 -0
  294. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts +9 -0
  295. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
  296. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.js +20 -0
  297. package/dist/cjs/src/transaction/index.d.ts +9 -0
  298. package/dist/cjs/src/transaction/index.d.ts.map +1 -0
  299. package/dist/cjs/src/transaction/index.js +52 -0
  300. package/dist/cjs/src/transaction/outputDifference.d.ts +44 -0
  301. package/dist/cjs/src/transaction/outputDifference.d.ts.map +1 -0
  302. package/dist/cjs/src/transaction/outputDifference.js +51 -0
  303. package/dist/cjs/src/transaction/parseTransaction.d.ts +5 -0
  304. package/dist/cjs/src/transaction/parseTransaction.d.ts.map +1 -0
  305. package/dist/cjs/src/transaction/parseTransaction.js +48 -0
  306. package/dist/cjs/src/transaction/recipient.d.ts +76 -0
  307. package/dist/cjs/src/transaction/recipient.d.ts.map +1 -0
  308. package/dist/cjs/src/transaction/recipient.js +130 -0
  309. package/dist/cjs/src/transaction/signTransaction.d.ts +18 -0
  310. package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -0
  311. package/dist/cjs/src/transaction/signTransaction.js +114 -0
  312. package/dist/cjs/src/transaction/types.d.ts +47 -0
  313. package/dist/cjs/src/transaction/types.d.ts.map +1 -0
  314. package/dist/cjs/src/transaction/types.js +3 -0
  315. package/dist/cjs/src/transaction/verifyTransaction.d.ts +5 -0
  316. package/dist/cjs/src/transaction/verifyTransaction.d.ts.map +1 -0
  317. package/dist/cjs/src/transaction/verifyTransaction.js +50 -0
  318. package/dist/cjs/src/unspent.d.ts +59 -0
  319. package/dist/cjs/src/unspent.d.ts.map +1 -0
  320. package/dist/cjs/src/unspent.js +20 -0
  321. package/dist/cjs/src/verifyKey.d.ts +22 -0
  322. package/dist/cjs/src/verifyKey.d.ts.map +1 -0
  323. package/dist/cjs/src/verifyKey.js +110 -0
  324. package/dist/cjs/src/wallet.d.ts +15 -0
  325. package/dist/cjs/src/wallet.d.ts.map +1 -0
  326. package/dist/cjs/src/wallet.js +8 -0
  327. package/dist/cjs/test/integration/impl/bch/bch.d.ts +2 -0
  328. package/dist/cjs/test/integration/impl/bch/bch.d.ts.map +1 -0
  329. package/dist/cjs/test/integration/impl/bch/bch.js +76 -0
  330. package/dist/cjs/test/unit/address.d.ts +2 -0
  331. package/dist/cjs/test/unit/address.d.ts.map +1 -0
  332. package/dist/cjs/test/unit/address.js +201 -0
  333. package/dist/cjs/test/unit/bip322.d.ts +2 -0
  334. package/dist/cjs/test/unit/bip322.d.ts.map +1 -0
  335. package/dist/cjs/test/unit/bip322.js +491 -0
  336. package/dist/cjs/test/unit/buildSignSendLegacyFormat.d.ts +2 -0
  337. package/dist/cjs/test/unit/buildSignSendLegacyFormat.d.ts.map +1 -0
  338. package/dist/cjs/test/unit/buildSignSendLegacyFormat.js +102 -0
  339. package/dist/cjs/test/unit/coins.d.ts +2 -0
  340. package/dist/cjs/test/unit/coins.d.ts.map +1 -0
  341. package/dist/cjs/test/unit/coins.js +161 -0
  342. package/dist/cjs/test/unit/customChangeWallet.d.ts +2 -0
  343. package/dist/cjs/test/unit/customChangeWallet.d.ts.map +1 -0
  344. package/dist/cjs/test/unit/customChangeWallet.js +206 -0
  345. package/dist/cjs/test/unit/customChangeWalletFixtures.d.ts +2 -0
  346. package/dist/cjs/test/unit/customChangeWalletFixtures.d.ts.map +1 -0
  347. package/dist/cjs/test/unit/customChangeWalletFixtures.js +53 -0
  348. package/dist/cjs/test/unit/customSigner.d.ts +2 -0
  349. package/dist/cjs/test/unit/customSigner.d.ts.map +1 -0
  350. package/dist/cjs/test/unit/customSigner.js +99 -0
  351. package/dist/cjs/test/unit/deriveKeyWithSeed.d.ts +2 -0
  352. package/dist/cjs/test/unit/deriveKeyWithSeed.d.ts.map +1 -0
  353. package/dist/cjs/test/unit/deriveKeyWithSeed.js +56 -0
  354. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts +2 -0
  355. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts.map +1 -0
  356. package/dist/cjs/test/unit/descriptor/NamedDescriptor.js +51 -0
  357. package/dist/cjs/test/unit/descriptor/builder.d.ts +2 -0
  358. package/dist/cjs/test/unit/descriptor/builder.d.ts.map +1 -0
  359. package/dist/cjs/test/unit/descriptor/builder.js +92 -0
  360. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts +2 -0
  361. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  362. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.js +53 -0
  363. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts +2 -0
  364. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts.map +1 -0
  365. package/dist/cjs/test/unit/descriptor/descriptorWallet.js +62 -0
  366. package/dist/cjs/test/unit/descriptorAddress.d.ts +3 -0
  367. package/dist/cjs/test/unit/descriptorAddress.d.ts.map +1 -0
  368. package/dist/cjs/test/unit/descriptorAddress.js +123 -0
  369. package/dist/cjs/test/unit/explainTransaction.d.ts +2 -0
  370. package/dist/cjs/test/unit/explainTransaction.d.ts.map +1 -0
  371. package/dist/cjs/test/unit/explainTransaction.js +37 -0
  372. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts +4 -0
  373. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts.map +1 -0
  374. package/dist/cjs/test/unit/fixtures/psbtHexProof.js +9 -0
  375. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts +2 -0
  376. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts.map +1 -0
  377. package/dist/cjs/test/unit/impl/bch/unit/bch.js +79 -0
  378. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts +2 -0
  379. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts.map +1 -0
  380. package/dist/cjs/test/unit/impl/bcha/unit/index.js +41 -0
  381. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts +2 -0
  382. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts.map +1 -0
  383. package/dist/cjs/test/unit/impl/bsv/unit/index.js +34 -0
  384. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts +2 -0
  385. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts.map +1 -0
  386. package/dist/cjs/test/unit/impl/btg/unit/index.js +33 -0
  387. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts +2 -0
  388. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts.map +1 -0
  389. package/dist/cjs/test/unit/impl/dash/unit/index.js +34 -0
  390. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts +2 -0
  391. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts.map +1 -0
  392. package/dist/cjs/test/unit/impl/doge/unit/index.js +34 -0
  393. package/dist/cjs/test/unit/impl/pearl/unit/index.d.ts +2 -0
  394. package/dist/cjs/test/unit/impl/pearl/unit/index.d.ts.map +1 -0
  395. package/dist/cjs/test/unit/impl/pearl/unit/index.js +111 -0
  396. package/dist/cjs/test/unit/impl/zec/psbtDecode.d.ts +2 -0
  397. package/dist/cjs/test/unit/impl/zec/psbtDecode.d.ts.map +1 -0
  398. package/dist/cjs/test/unit/impl/zec/psbtDecode.js +69 -0
  399. package/dist/cjs/test/unit/impl/zec/shieldedPrebuildAndSign.d.ts +2 -0
  400. package/dist/cjs/test/unit/impl/zec/shieldedPrebuildAndSign.d.ts.map +1 -0
  401. package/dist/cjs/test/unit/impl/zec/shieldedPrebuildAndSign.js +470 -0
  402. package/dist/cjs/test/unit/impl/zec/unit/address.d.ts +2 -0
  403. package/dist/cjs/test/unit/impl/zec/unit/address.d.ts.map +1 -0
  404. package/dist/cjs/test/unit/impl/zec/unit/address.js +227 -0
  405. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts +2 -0
  406. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts.map +1 -0
  407. package/dist/cjs/test/unit/impl/zec/unit/index.js +30 -0
  408. package/dist/cjs/test/unit/impl/zec/unit/resolvePsbtRecipients.d.ts +2 -0
  409. package/dist/cjs/test/unit/impl/zec/unit/resolvePsbtRecipients.d.ts.map +1 -0
  410. package/dist/cjs/test/unit/impl/zec/unit/resolvePsbtRecipients.js +91 -0
  411. package/dist/cjs/test/unit/impl/zec/unit/shieldedAddress.d.ts +2 -0
  412. package/dist/cjs/test/unit/impl/zec/unit/shieldedAddress.d.ts.map +1 -0
  413. package/dist/cjs/test/unit/impl/zec/unit/shieldedAddress.js +57 -0
  414. package/dist/cjs/test/unit/impl/zec/unit/unifiedRecipientPreference.d.ts +2 -0
  415. package/dist/cjs/test/unit/impl/zec/unit/unifiedRecipientPreference.d.ts.map +1 -0
  416. package/dist/cjs/test/unit/impl/zec/unit/unifiedRecipientPreference.js +57 -0
  417. package/dist/cjs/test/unit/keySignatures.d.ts +2 -0
  418. package/dist/cjs/test/unit/keySignatures.d.ts.map +1 -0
  419. package/dist/cjs/test/unit/keySignatures.js +54 -0
  420. package/dist/cjs/test/unit/keychains.d.ts +2 -0
  421. package/dist/cjs/test/unit/keychains.d.ts.map +1 -0
  422. package/dist/cjs/test/unit/keychains.js +87 -0
  423. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts +2 -0
  424. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts.map +1 -0
  425. package/dist/cjs/test/unit/offlineVault/halfSigned.js +124 -0
  426. package/dist/cjs/test/unit/parseTransaction.d.ts +2 -0
  427. package/dist/cjs/test/unit/parseTransaction.d.ts.map +1 -0
  428. package/dist/cjs/test/unit/parseTransaction.js +155 -0
  429. package/dist/cjs/test/unit/pendingApprovalTxHexPsbt.d.ts +2 -0
  430. package/dist/cjs/test/unit/pendingApprovalTxHexPsbt.d.ts.map +1 -0
  431. package/dist/cjs/test/unit/pendingApprovalTxHexPsbt.js +99 -0
  432. package/dist/cjs/test/unit/postProcessPrebuild.d.ts +2 -0
  433. package/dist/cjs/test/unit/postProcessPrebuild.d.ts.map +1 -0
  434. package/dist/cjs/test/unit/postProcessPrebuild.js +65 -0
  435. package/dist/cjs/test/unit/prebuildAndSign.d.ts +2 -0
  436. package/dist/cjs/test/unit/prebuildAndSign.d.ts.map +1 -0
  437. package/dist/cjs/test/unit/prebuildAndSign.js +218 -0
  438. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts +2 -0
  439. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts.map +1 -0
  440. package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +149 -0
  441. package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.d.ts +2 -0
  442. package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.d.ts.map +1 -0
  443. package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.js +147 -0
  444. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts +2 -0
  445. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts.map +1 -0
  446. package/dist/cjs/test/unit/recovery/crossChainRecovery.js +352 -0
  447. package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.d.ts +2 -0
  448. package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.d.ts.map +1 -0
  449. package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.js +189 -0
  450. package/dist/cjs/test/unit/recovery/mock.d.ts +37 -0
  451. package/dist/cjs/test/unit/recovery/mock.d.ts.map +1 -0
  452. package/dist/cjs/test/unit/recovery/mock.js +113 -0
  453. package/dist/cjs/test/unit/signTransaction.d.ts +2 -0
  454. package/dist/cjs/test/unit/signTransaction.d.ts.map +1 -0
  455. package/dist/cjs/test/unit/signTransaction.js +223 -0
  456. package/dist/cjs/test/unit/tbtcstx.d.ts +2 -0
  457. package/dist/cjs/test/unit/tbtcstx.d.ts.map +1 -0
  458. package/dist/cjs/test/unit/tbtcstx.js +60 -0
  459. package/dist/cjs/test/unit/tbtcstxprivate1.d.ts +2 -0
  460. package/dist/cjs/test/unit/tbtcstxprivate1.d.ts.map +1 -0
  461. package/dist/cjs/test/unit/tbtcstxprivate1.js +61 -0
  462. package/dist/cjs/test/unit/tbtcstxsignet.d.ts +2 -0
  463. package/dist/cjs/test/unit/tbtcstxsignet.d.ts.map +1 -0
  464. package/dist/cjs/test/unit/tbtcstxsignet.js +61 -0
  465. package/dist/cjs/test/unit/testSpoofTransaction.d.ts +2 -0
  466. package/dist/cjs/test/unit/testSpoofTransaction.d.ts.map +1 -0
  467. package/dist/cjs/test/unit/testSpoofTransaction.js +114 -0
  468. package/dist/cjs/test/unit/transaction/addressCodec.d.ts +2 -0
  469. package/dist/cjs/test/unit/transaction/addressCodec.d.ts.map +1 -0
  470. package/dist/cjs/test/unit/transaction/addressCodec.js +30 -0
  471. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts +2 -0
  472. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  473. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.js +64 -0
  474. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts +6 -0
  475. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts.map +1 -0
  476. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.js +51 -0
  477. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts +2 -0
  478. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts.map +1 -0
  479. package/dist/cjs/test/unit/transaction/descriptor/parse.js +140 -0
  480. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts +2 -0
  481. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts.map +1 -0
  482. package/dist/cjs/test/unit/transaction/descriptor/sign.js +76 -0
  483. package/dist/cjs/test/unit/transaction/descriptor/signTransactionE2E.d.ts +2 -0
  484. package/dist/cjs/test/unit/transaction/descriptor/signTransactionE2E.d.ts.map +1 -0
  485. package/dist/cjs/test/unit/transaction/descriptor/signTransactionE2E.js +100 -0
  486. package/dist/cjs/test/unit/transaction/descriptor/signTransactionGuard.d.ts +2 -0
  487. package/dist/cjs/test/unit/transaction/descriptor/signTransactionGuard.d.ts.map +1 -0
  488. package/dist/cjs/test/unit/transaction/descriptor/signTransactionGuard.js +84 -0
  489. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts +2 -0
  490. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts.map +1 -0
  491. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.js +81 -0
  492. package/dist/cjs/test/unit/transaction/descriptor/verifyTransactionQr.d.ts +2 -0
  493. package/dist/cjs/test/unit/transaction/descriptor/verifyTransactionQr.d.ts.map +1 -0
  494. package/dist/cjs/test/unit/transaction/descriptor/verifyTransactionQr.js +103 -0
  495. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts +2 -0
  496. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts.map +1 -0
  497. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.js +179 -0
  498. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.d.ts +2 -0
  499. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.d.ts.map +1 -0
  500. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.js +223 -0
  501. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts +2 -0
  502. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  503. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.js +60 -0
  504. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.d.ts +2 -0
  505. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.d.ts.map +1 -0
  506. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.js +98 -0
  507. package/dist/cjs/test/unit/transaction/outputDifference.d.ts +2 -0
  508. package/dist/cjs/test/unit/transaction/outputDifference.d.ts.map +1 -0
  509. package/dist/cjs/test/unit/transaction/outputDifference.js +117 -0
  510. package/dist/cjs/test/unit/transaction/recipient.d.ts +2 -0
  511. package/dist/cjs/test/unit/transaction/recipient.d.ts.map +1 -0
  512. package/dist/cjs/test/unit/transaction/recipient.js +52 -0
  513. package/dist/cjs/test/unit/transaction.d.ts +2 -0
  514. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  515. package/dist/cjs/test/unit/transaction.js +301 -0
  516. package/dist/cjs/test/unit/txFormat.d.ts +30 -0
  517. package/dist/cjs/test/unit/txFormat.d.ts.map +1 -0
  518. package/dist/cjs/test/unit/txFormat.js +161 -0
  519. package/dist/cjs/test/unit/util/address.d.ts +14 -0
  520. package/dist/cjs/test/unit/util/address.d.ts.map +1 -0
  521. package/dist/cjs/test/unit/util/address.js +16 -0
  522. package/dist/cjs/test/unit/util/assert.d.ts +3 -0
  523. package/dist/cjs/test/unit/util/assert.d.ts.map +1 -0
  524. package/dist/cjs/test/unit/util/assert.js +24 -0
  525. package/dist/cjs/test/unit/util/fixtures.d.ts +13 -0
  526. package/dist/cjs/test/unit/util/fixtures.d.ts.map +1 -0
  527. package/dist/cjs/test/unit/util/fixtures.js +105 -0
  528. package/dist/cjs/test/unit/util/index.d.ts +11 -0
  529. package/dist/cjs/test/unit/util/index.d.ts.map +1 -0
  530. package/dist/cjs/test/unit/util/index.js +27 -0
  531. package/dist/cjs/test/unit/util/keychains.d.ts +55 -0
  532. package/dist/cjs/test/unit/util/keychains.d.ts.map +1 -0
  533. package/dist/cjs/test/unit/util/keychains.js +122 -0
  534. package/dist/cjs/test/unit/util/nockBitGo.d.ts +10 -0
  535. package/dist/cjs/test/unit/util/nockBitGo.d.ts.map +1 -0
  536. package/dist/cjs/test/unit/util/nockBitGo.js +27 -0
  537. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts +8 -0
  538. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts.map +1 -0
  539. package/dist/cjs/test/unit/util/nockIndexerAPI.js +22 -0
  540. package/dist/cjs/test/unit/util/psbt.d.ts +19 -0
  541. package/dist/cjs/test/unit/util/psbt.d.ts.map +1 -0
  542. package/dist/cjs/test/unit/util/psbt.js +21 -0
  543. package/dist/cjs/test/unit/util/transaction.d.ts +28 -0
  544. package/dist/cjs/test/unit/util/transaction.d.ts.map +1 -0
  545. package/dist/cjs/test/unit/util/transaction.js +132 -0
  546. package/dist/cjs/test/unit/util/unspents.d.ts +71 -0
  547. package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -0
  548. package/dist/cjs/test/unit/util/unspents.js +224 -0
  549. package/dist/cjs/test/unit/util/utxoCoins.d.ts +30 -0
  550. package/dist/cjs/test/unit/util/utxoCoins.d.ts.map +1 -0
  551. package/dist/cjs/test/unit/util/utxoCoins.js +159 -0
  552. package/dist/cjs/test/unit/util/wallet.d.ts +4 -0
  553. package/dist/cjs/test/unit/util/wallet.d.ts.map +1 -0
  554. package/dist/cjs/test/unit/util/wallet.js +9 -0
  555. package/dist/cjs/test/unit/verifyTransaction.d.ts +2 -0
  556. package/dist/cjs/test/unit/verifyTransaction.d.ts.map +1 -0
  557. package/dist/cjs/test/unit/verifyTransaction.js +539 -0
  558. package/dist/cjs/test/unit/wallet.d.ts +2 -0
  559. package/dist/cjs/test/unit/wallet.d.ts.map +1 -0
  560. package/dist/cjs/test/unit/wallet.js +251 -0
  561. package/dist/cjs/test/unit/webauthn.d.ts +2 -0
  562. package/dist/cjs/test/unit/webauthn.d.ts.map +1 -0
  563. package/dist/cjs/test/unit/webauthn.js +77 -0
  564. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  565. package/dist/esm/abstractUtxoCoin.d.ts +466 -0
  566. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -0
  567. package/dist/esm/abstractUtxoCoin.js +636 -0
  568. package/dist/esm/address/fixedScript.d.ts +44 -0
  569. package/dist/esm/address/fixedScript.d.ts.map +1 -0
  570. package/dist/esm/address/fixedScript.js +101 -0
  571. package/dist/esm/address/index.d.ts +2 -0
  572. package/dist/esm/address/index.d.ts.map +1 -0
  573. package/dist/esm/address/index.js +2 -0
  574. package/dist/esm/config.d.ts +9 -0
  575. package/dist/esm/config.js +11 -0
  576. package/dist/esm/deriveKeyWithSeed.d.ts +12 -0
  577. package/dist/esm/deriveKeyWithSeed.d.ts.map +1 -0
  578. package/dist/esm/deriveKeyWithSeed.js +14 -0
  579. package/dist/esm/descriptor/NamedDescriptor.d.ts +19 -0
  580. package/dist/esm/descriptor/NamedDescriptor.d.ts.map +1 -0
  581. package/dist/esm/descriptor/NamedDescriptor.js +37 -0
  582. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
  583. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
  584. package/dist/esm/descriptor/assertDescriptorWalletAddress.js +26 -0
  585. package/dist/esm/descriptor/builder/builder.d.ts +17 -0
  586. package/dist/esm/descriptor/builder/builder.d.ts.map +1 -0
  587. package/dist/esm/descriptor/builder/builder.js +51 -0
  588. package/dist/esm/descriptor/builder/index.d.ts +3 -0
  589. package/dist/esm/descriptor/builder/index.d.ts.map +1 -0
  590. package/dist/esm/descriptor/builder/index.js +3 -0
  591. package/dist/esm/descriptor/builder/parse.d.ts +5 -0
  592. package/dist/esm/descriptor/builder/parse.d.ts.map +1 -0
  593. package/dist/esm/descriptor/builder/parse.js +144 -0
  594. package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
  595. package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
  596. package/dist/esm/descriptor/createWallet/createDescriptorWallet.js +37 -0
  597. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts +12 -0
  598. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  599. package/dist/esm/descriptor/createWallet/createDescriptors.js +29 -0
  600. package/dist/esm/descriptor/createWallet/index.d.ts +3 -0
  601. package/dist/esm/descriptor/createWallet/index.d.ts.map +1 -0
  602. package/dist/esm/descriptor/createWallet/index.js +3 -0
  603. package/dist/esm/descriptor/descriptorWallet.d.ts +19 -0
  604. package/dist/esm/descriptor/descriptorWallet.d.ts.map +1 -0
  605. package/dist/esm/descriptor/descriptorWallet.js +16 -0
  606. package/dist/esm/descriptor/index.d.ts +9 -0
  607. package/dist/esm/descriptor/index.d.ts.map +1 -0
  608. package/dist/esm/descriptor/index.js +7 -0
  609. package/dist/esm/descriptor/validatePolicy.d.ts +22 -0
  610. package/dist/esm/descriptor/validatePolicy.d.ts.map +1 -0
  611. package/dist/esm/descriptor/validatePolicy.js +82 -0
  612. package/dist/esm/impl/bch/bch.d.ts +36 -0
  613. package/dist/esm/impl/bch/bch.d.ts.map +1 -0
  614. package/dist/esm/impl/bch/bch.js +63 -0
  615. package/dist/esm/impl/bch/index.d.ts +3 -0
  616. package/dist/esm/impl/bch/index.d.ts.map +1 -0
  617. package/dist/esm/impl/bch/index.js +3 -0
  618. package/dist/esm/impl/bch/tbch.d.ts +12 -0
  619. package/dist/esm/impl/bch/tbch.d.ts.map +1 -0
  620. package/dist/esm/impl/bch/tbch.js +11 -0
  621. package/dist/esm/impl/bcha/bcha.d.ts +9 -0
  622. package/dist/esm/impl/bcha/bcha.d.ts.map +1 -0
  623. package/dist/esm/impl/bcha/bcha.js +11 -0
  624. package/dist/esm/impl/bcha/index.d.ts +3 -0
  625. package/dist/esm/impl/bcha/index.d.ts.map +1 -0
  626. package/dist/esm/impl/bcha/index.js +3 -0
  627. package/dist/esm/impl/bcha/tbcha.d.ts +12 -0
  628. package/dist/esm/impl/bcha/tbcha.d.ts.map +1 -0
  629. package/dist/esm/impl/bcha/tbcha.js +11 -0
  630. package/dist/esm/impl/bsv/bsv.d.ts +9 -0
  631. package/dist/esm/impl/bsv/bsv.d.ts.map +1 -0
  632. package/dist/esm/impl/bsv/bsv.js +11 -0
  633. package/dist/esm/impl/bsv/index.d.ts +3 -0
  634. package/dist/esm/impl/bsv/index.d.ts.map +1 -0
  635. package/dist/esm/impl/bsv/index.js +3 -0
  636. package/dist/esm/impl/bsv/tbsv.d.ts +12 -0
  637. package/dist/esm/impl/bsv/tbsv.d.ts.map +1 -0
  638. package/dist/esm/impl/bsv/tbsv.js +11 -0
  639. package/dist/esm/impl/btc/btc.d.ts +15 -0
  640. package/dist/esm/impl/btc/btc.d.ts.map +1 -0
  641. package/dist/esm/impl/btc/btc.js +18 -0
  642. package/dist/esm/impl/btc/index.d.ts +10 -0
  643. package/dist/esm/impl/btc/index.d.ts.map +1 -0
  644. package/dist/esm/impl/btc/index.js +10 -0
  645. package/dist/esm/impl/btc/inscriptionBuilder.d.ts +61 -0
  646. package/dist/esm/impl/btc/inscriptionBuilder.d.ts.map +1 -0
  647. package/dist/esm/impl/btc/inscriptionBuilder.js +163 -0
  648. package/dist/esm/impl/btc/tbtc.d.ts +12 -0
  649. package/dist/esm/impl/btc/tbtc.d.ts.map +1 -0
  650. package/dist/esm/impl/btc/tbtc.js +11 -0
  651. package/dist/esm/impl/btc/tbtc4.d.ts +12 -0
  652. package/dist/esm/impl/btc/tbtc4.d.ts.map +1 -0
  653. package/dist/esm/impl/btc/tbtc4.js +11 -0
  654. package/dist/esm/impl/btc/tbtcbgsig.d.ts +12 -0
  655. package/dist/esm/impl/btc/tbtcbgsig.d.ts.map +1 -0
  656. package/dist/esm/impl/btc/tbtcbgsig.js +11 -0
  657. package/dist/esm/impl/btc/tbtcsig.d.ts +12 -0
  658. package/dist/esm/impl/btc/tbtcsig.d.ts.map +1 -0
  659. package/dist/esm/impl/btc/tbtcsig.js +11 -0
  660. package/dist/esm/impl/btc/tbtcstx.d.ts +10 -0
  661. package/dist/esm/impl/btc/tbtcstx.d.ts.map +1 -0
  662. package/dist/esm/impl/btc/tbtcstx.js +14 -0
  663. package/dist/esm/impl/btc/tbtcstxprivate1.d.ts +9 -0
  664. package/dist/esm/impl/btc/tbtcstxprivate1.d.ts.map +1 -0
  665. package/dist/esm/impl/btc/tbtcstxprivate1.js +11 -0
  666. package/dist/esm/impl/btc/tbtcstxsignet.d.ts +10 -0
  667. package/dist/esm/impl/btc/tbtcstxsignet.d.ts.map +1 -0
  668. package/dist/esm/impl/btc/tbtcstxsignet.js +14 -0
  669. package/dist/esm/impl/btg/btg.d.ts +9 -0
  670. package/dist/esm/impl/btg/btg.d.ts.map +1 -0
  671. package/dist/esm/impl/btg/btg.js +11 -0
  672. package/dist/esm/impl/btg/index.d.ts +2 -0
  673. package/dist/esm/impl/btg/index.d.ts.map +1 -0
  674. package/dist/esm/impl/btg/index.js +2 -0
  675. package/dist/esm/impl/dash/dash.d.ts +9 -0
  676. package/dist/esm/impl/dash/dash.d.ts.map +1 -0
  677. package/dist/esm/impl/dash/dash.js +11 -0
  678. package/dist/esm/impl/dash/index.d.ts +3 -0
  679. package/dist/esm/impl/dash/index.d.ts.map +1 -0
  680. package/dist/esm/impl/dash/index.js +3 -0
  681. package/dist/esm/impl/dash/tdash.d.ts +12 -0
  682. package/dist/esm/impl/dash/tdash.d.ts.map +1 -0
  683. package/dist/esm/impl/dash/tdash.js +11 -0
  684. package/dist/esm/impl/doge/doge.d.ts +33 -0
  685. package/dist/esm/impl/doge/doge.d.ts.map +1 -0
  686. package/dist/esm/impl/doge/doge.js +72 -0
  687. package/dist/esm/impl/doge/index.d.ts +3 -0
  688. package/dist/esm/impl/doge/index.d.ts.map +1 -0
  689. package/dist/esm/impl/doge/index.js +3 -0
  690. package/dist/esm/impl/doge/tdoge.d.ts +12 -0
  691. package/dist/esm/impl/doge/tdoge.d.ts.map +1 -0
  692. package/dist/esm/impl/doge/tdoge.js +11 -0
  693. package/dist/esm/impl/index.d.ts +11 -0
  694. package/dist/esm/impl/index.d.ts.map +1 -0
  695. package/dist/esm/impl/index.js +11 -0
  696. package/dist/esm/impl/ltc/index.d.ts +3 -0
  697. package/dist/esm/impl/ltc/index.d.ts.map +1 -0
  698. package/dist/esm/impl/ltc/index.js +3 -0
  699. package/dist/esm/impl/ltc/ltc.d.ts +8 -0
  700. package/dist/esm/impl/ltc/ltc.d.ts.map +1 -0
  701. package/dist/esm/impl/ltc/ltc.js +11 -0
  702. package/dist/esm/impl/ltc/tltc.d.ts +8 -0
  703. package/dist/esm/impl/ltc/tltc.d.ts.map +1 -0
  704. package/dist/esm/impl/ltc/tltc.js +11 -0
  705. package/dist/esm/impl/pearl/index.d.ts +3 -0
  706. package/dist/esm/impl/pearl/index.d.ts.map +1 -0
  707. package/dist/esm/impl/pearl/index.js +3 -0
  708. package/dist/esm/impl/pearl/pearl.d.ts +17 -0
  709. package/dist/esm/impl/pearl/pearl.d.ts.map +1 -0
  710. package/dist/esm/impl/pearl/pearl.js +20 -0
  711. package/dist/esm/impl/pearl/tpearl.d.ts +8 -0
  712. package/dist/esm/impl/pearl/tpearl.d.ts.map +1 -0
  713. package/dist/esm/impl/pearl/tpearl.js +11 -0
  714. package/dist/esm/impl/zec/address.d.ts +79 -0
  715. package/dist/esm/impl/zec/address.d.ts.map +1 -0
  716. package/dist/esm/impl/zec/address.js +150 -0
  717. package/dist/esm/impl/zec/index.d.ts +7 -0
  718. package/dist/esm/impl/zec/index.d.ts.map +1 -0
  719. package/dist/esm/impl/zec/index.js +7 -0
  720. package/dist/esm/impl/zec/recipients.d.ts +86 -0
  721. package/dist/esm/impl/zec/recipients.d.ts.map +1 -0
  722. package/dist/esm/impl/zec/recipients.js +94 -0
  723. package/dist/esm/impl/zec/shieldedAddress.d.ts +36 -0
  724. package/dist/esm/impl/zec/shieldedAddress.d.ts.map +1 -0
  725. package/dist/esm/impl/zec/shieldedAddress.js +48 -0
  726. package/dist/esm/impl/zec/signIronwoodTransaction.d.ts +29 -0
  727. package/dist/esm/impl/zec/signIronwoodTransaction.d.ts.map +1 -0
  728. package/dist/esm/impl/zec/signIronwoodTransaction.js +50 -0
  729. package/dist/esm/impl/zec/types.d.ts +8 -0
  730. package/dist/esm/impl/zec/types.d.ts.map +1 -0
  731. package/dist/esm/impl/zec/types.js +2 -0
  732. package/dist/esm/impl/zec/tzec.d.ts +9 -0
  733. package/dist/esm/impl/zec/tzec.d.ts.map +1 -0
  734. package/dist/esm/impl/zec/tzec.js +11 -0
  735. package/dist/esm/impl/zec/zec.d.ts +58 -0
  736. package/dist/esm/impl/zec/zec.d.ts.map +1 -0
  737. package/dist/esm/impl/zec/zec.js +117 -0
  738. package/dist/esm/index.d.ts +23 -0
  739. package/dist/esm/index.d.ts.map +1 -0
  740. package/dist/esm/index.js +23 -0
  741. package/dist/esm/keychains.d.ts +55 -0
  742. package/dist/esm/keychains.d.ts.map +1 -0
  743. package/dist/esm/keychains.js +98 -0
  744. package/dist/esm/names.d.ts +16 -0
  745. package/dist/esm/names.d.ts.map +1 -0
  746. package/dist/esm/names.js +108 -0
  747. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts +9 -0
  748. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
  749. package/dist/esm/offlineVault/OfflineVaultHalfSigned.js +19 -0
  750. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts +46 -0
  751. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
  752. package/dist/esm/offlineVault/OfflineVaultSignable.js +18 -0
  753. package/dist/esm/offlineVault/TransactionExplanation.d.ts +16 -0
  754. package/dist/esm/offlineVault/TransactionExplanation.d.ts.map +1 -0
  755. package/dist/esm/offlineVault/TransactionExplanation.js +12 -0
  756. package/dist/esm/offlineVault/descriptor/index.d.ts +2 -0
  757. package/dist/esm/offlineVault/descriptor/index.d.ts.map +1 -0
  758. package/dist/esm/offlineVault/descriptor/index.js +2 -0
  759. package/dist/esm/offlineVault/descriptor/transaction.d.ts +39 -0
  760. package/dist/esm/offlineVault/descriptor/transaction.d.ts.map +1 -0
  761. package/dist/esm/offlineVault/descriptor/transaction.js +41 -0
  762. package/dist/esm/offlineVault/index.d.ts +6 -0
  763. package/dist/esm/offlineVault/index.d.ts.map +1 -0
  764. package/dist/esm/offlineVault/index.js +4 -0
  765. package/dist/esm/recovery/RecoveryProvider.d.ts +20 -0
  766. package/dist/esm/recovery/RecoveryProvider.d.ts.map +1 -0
  767. package/dist/esm/recovery/RecoveryProvider.js +19 -0
  768. package/dist/esm/recovery/backupKeyRecovery.d.ts +176 -0
  769. package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -0
  770. package/dist/esm/recovery/backupKeyRecovery.js +406 -0
  771. package/dist/esm/recovery/baseApi.d.ts +24 -0
  772. package/dist/esm/recovery/baseApi.d.ts.map +1 -0
  773. package/dist/esm/recovery/baseApi.js +64 -0
  774. package/dist/esm/recovery/coingeckoApi.d.ts +6 -0
  775. package/dist/esm/recovery/coingeckoApi.d.ts.map +1 -0
  776. package/dist/esm/recovery/coingeckoApi.js +40 -0
  777. package/dist/esm/recovery/crossChainRecovery.d.ts +97 -0
  778. package/dist/esm/recovery/crossChainRecovery.d.ts.map +1 -0
  779. package/dist/esm/recovery/crossChainRecovery.js +295 -0
  780. package/dist/esm/recovery/index.d.ts +7 -0
  781. package/dist/{src → esm}/recovery/index.d.ts.map +1 -1
  782. package/dist/esm/recovery/index.js +7 -0
  783. package/dist/esm/recovery/mempoolApi.d.ts +7 -0
  784. package/dist/{src → esm}/recovery/mempoolApi.d.ts.map +1 -1
  785. package/dist/esm/recovery/mempoolApi.js +29 -0
  786. package/dist/esm/recovery/psbt.d.ts +68 -0
  787. package/dist/esm/recovery/psbt.d.ts.map +1 -0
  788. package/dist/esm/recovery/psbt.js +152 -0
  789. package/dist/esm/tnumber.d.ts +4 -0
  790. package/dist/esm/tnumber.d.ts.map +1 -0
  791. package/dist/esm/tnumber.js +9 -0
  792. package/dist/esm/transaction/bip322.d.ts +27 -0
  793. package/dist/esm/transaction/bip322.d.ts.map +1 -0
  794. package/dist/esm/transaction/bip322.js +100 -0
  795. package/dist/esm/transaction/common/verifyPayGoAmount.d.ts +1 -0
  796. package/dist/esm/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
  797. package/dist/esm/transaction/common/verifyPayGoAmount.js +1 -0
  798. package/dist/esm/transaction/decode.d.ts +21 -0
  799. package/dist/esm/transaction/decode.d.ts.map +1 -0
  800. package/dist/esm/transaction/decode.js +40 -0
  801. package/dist/esm/transaction/descriptor/explainPsbt.d.ts +5 -0
  802. package/dist/esm/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  803. package/dist/esm/transaction/descriptor/explainPsbt.js +45 -0
  804. package/dist/esm/transaction/descriptor/index.d.ts +7 -0
  805. package/dist/esm/transaction/descriptor/index.d.ts.map +1 -0
  806. package/dist/esm/transaction/descriptor/index.js +6 -0
  807. package/dist/esm/transaction/descriptor/parse.d.ts +18 -0
  808. package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -0
  809. package/dist/esm/transaction/descriptor/parse.js +81 -0
  810. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts +15 -0
  811. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
  812. package/dist/esm/transaction/descriptor/parseToAmountType.js +55 -0
  813. package/dist/esm/transaction/descriptor/recipient.d.ts +5 -0
  814. package/dist/esm/transaction/descriptor/recipient.d.ts.map +1 -0
  815. package/dist/esm/transaction/descriptor/recipient.js +2 -0
  816. package/dist/esm/transaction/descriptor/signPsbt.d.ts +25 -0
  817. package/dist/esm/transaction/descriptor/signPsbt.d.ts.map +1 -0
  818. package/dist/esm/transaction/descriptor/signPsbt.js +39 -0
  819. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +36 -0
  820. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
  821. package/dist/esm/transaction/descriptor/verifyTransaction.js +80 -0
  822. package/dist/esm/transaction/explainTransaction.d.ts +19 -0
  823. package/dist/esm/transaction/explainTransaction.d.ts.map +1 -0
  824. package/dist/esm/transaction/explainTransaction.js +49 -0
  825. package/dist/esm/transaction/fixedScript/SigningError.d.ts +24 -0
  826. package/dist/esm/transaction/fixedScript/SigningError.d.ts.map +1 -0
  827. package/dist/esm/transaction/fixedScript/SigningError.js +26 -0
  828. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts +47 -0
  829. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  830. package/dist/esm/transaction/fixedScript/explainPsbtWasm.js +147 -0
  831. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +47 -0
  832. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  833. package/dist/esm/transaction/fixedScript/explainTransaction.js +2 -0
  834. package/dist/esm/transaction/fixedScript/index.d.ts +8 -0
  835. package/dist/esm/transaction/fixedScript/index.d.ts.map +1 -0
  836. package/dist/esm/transaction/fixedScript/index.js +7 -0
  837. package/dist/esm/transaction/fixedScript/musig2.d.ts +4 -0
  838. package/dist/esm/transaction/fixedScript/musig2.d.ts.map +1 -0
  839. package/dist/esm/transaction/fixedScript/musig2.js +2 -0
  840. package/dist/esm/transaction/fixedScript/parseOutput.d.ts +30 -0
  841. package/dist/esm/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  842. package/dist/esm/transaction/fixedScript/parseOutput.js +210 -0
  843. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts +9 -0
  844. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  845. package/dist/esm/transaction/fixedScript/parseTransaction.js +228 -0
  846. package/dist/esm/transaction/fixedScript/replayProtection.d.ts +10 -0
  847. package/dist/esm/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  848. package/dist/esm/transaction/fixedScript/replayProtection.js +38 -0
  849. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts +27 -0
  850. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
  851. package/dist/esm/transaction/fixedScript/signPsbtWasm.js +121 -0
  852. package/dist/esm/transaction/fixedScript/signTransaction.d.ts +31 -0
  853. package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -0
  854. package/dist/esm/transaction/fixedScript/signTransaction.js +47 -0
  855. package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts +21 -0
  856. package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  857. package/dist/esm/transaction/fixedScript/verifyTransaction.js +176 -0
  858. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts +9 -0
  859. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
  860. package/dist/esm/transaction/getPayGoVerificationPubkey.js +17 -0
  861. package/dist/esm/transaction/index.d.ts +9 -0
  862. package/dist/esm/transaction/index.d.ts.map +1 -0
  863. package/dist/esm/transaction/index.js +9 -0
  864. package/dist/esm/transaction/outputDifference.d.ts +44 -0
  865. package/dist/esm/transaction/outputDifference.d.ts.map +1 -0
  866. package/dist/esm/transaction/outputDifference.js +45 -0
  867. package/dist/esm/transaction/parseTransaction.d.ts +5 -0
  868. package/dist/esm/transaction/parseTransaction.d.ts.map +1 -0
  869. package/dist/esm/transaction/parseTransaction.js +12 -0
  870. package/dist/esm/transaction/recipient.d.ts +76 -0
  871. package/dist/esm/transaction/recipient.d.ts.map +1 -0
  872. package/dist/esm/transaction/recipient.js +120 -0
  873. package/dist/esm/transaction/signTransaction.d.ts +18 -0
  874. package/dist/esm/transaction/signTransaction.d.ts.map +1 -0
  875. package/dist/esm/transaction/signTransaction.js +73 -0
  876. package/dist/esm/transaction/types.d.ts +47 -0
  877. package/dist/esm/transaction/types.d.ts.map +1 -0
  878. package/dist/esm/transaction/types.js +2 -0
  879. package/dist/esm/transaction/verifyTransaction.d.ts +5 -0
  880. package/dist/esm/transaction/verifyTransaction.d.ts.map +1 -0
  881. package/dist/esm/transaction/verifyTransaction.js +14 -0
  882. package/dist/esm/unspent.d.ts +59 -0
  883. package/dist/esm/unspent.d.ts.map +1 -0
  884. package/dist/esm/unspent.js +15 -0
  885. package/dist/esm/verifyKey.d.ts +22 -0
  886. package/dist/esm/verifyKey.d.ts.map +1 -0
  887. package/dist/esm/verifyKey.js +102 -0
  888. package/dist/esm/wallet.d.ts +15 -0
  889. package/dist/esm/wallet.d.ts.map +1 -0
  890. package/dist/esm/wallet.js +5 -0
  891. package/package.json +49 -20
  892. package/.eslintignore +0 -5
  893. package/CHANGELOG.md +0 -253
  894. package/dist/src/abstractUtxoCoin.d.ts +0 -392
  895. package/dist/src/abstractUtxoCoin.d.ts.map +0 -1
  896. package/dist/src/abstractUtxoCoin.js +0 -931
  897. package/dist/src/config.js +0 -14
  898. package/dist/src/index.d.ts +0 -6
  899. package/dist/src/index.d.ts.map +0 -1
  900. package/dist/src/index.js +0 -18
  901. package/dist/src/parseOutput.d.ts +0 -22
  902. package/dist/src/parseOutput.d.ts.map +0 -1
  903. package/dist/src/parseOutput.js +0 -181
  904. package/dist/src/recovery/RecoveryProvider.d.ts.map +0 -1
  905. package/dist/src/recovery/RecoveryProvider.js +0 -24
  906. package/dist/src/recovery/backupKeyRecovery.d.ts +0 -62
  907. package/dist/src/recovery/backupKeyRecovery.d.ts.map +0 -1
  908. package/dist/src/recovery/backupKeyRecovery.js +0 -293
  909. package/dist/src/recovery/baseApi.d.ts.map +0 -1
  910. package/dist/src/recovery/baseApi.js +0 -73
  911. package/dist/src/recovery/coingeckoApi.d.ts.map +0 -1
  912. package/dist/src/recovery/coingeckoApi.js +0 -47
  913. package/dist/src/recovery/crossChainRecovery.d.ts.map +0 -1
  914. package/dist/src/recovery/crossChainRecovery.js +0 -294
  915. package/dist/src/recovery/mempoolApi.js +0 -33
  916. package/dist/src/recovery/smartbitApi.d.ts +0 -11
  917. package/dist/src/recovery/smartbitApi.d.ts.map +0 -1
  918. package/dist/src/recovery/smartbitApi.js +0 -36
  919. package/dist/src/replayProtection.d.ts +0 -4
  920. package/dist/src/replayProtection.d.ts.map +0 -1
  921. package/dist/src/replayProtection.js +0 -21
  922. package/dist/src/sign.d.ts +0 -31
  923. package/dist/src/sign.d.ts.map +0 -1
  924. package/dist/src/sign.js +0 -104
  925. package/dist/tsconfig.tsbuildinfo +0 -8213
  926. /package/dist/{src → cjs/src}/config.d.ts +0 -0
  927. /package/dist/{src → cjs/src}/recovery/mempoolApi.d.ts +0 -0
  928. /package/dist/{src → esm}/config.d.ts.map +0 -0
@@ -0,0 +1,79 @@
1
+ import { fixedScriptWallet } from '@bitgo/wasm-utxo';
2
+ import type { UnifiedRecipientPreference } from '@bitgo-beta/sdk-core';
3
+ import { AddressCodec } from '../../transaction/recipient';
4
+ import { UtxoCoinName, WasmUtxoCoinName } from '../../names';
5
+ import type { ZecAddressCodecOutput } from './types';
6
+ export type ZcashAddressKind = 'transparent' | 'shielded';
7
+ /**
8
+ * Address codec for Zcash coins ('zec'/'tzec') that understands ZIP-316
9
+ * Unified Addresses in addition to ordinary transparent addresses.
10
+ *
11
+ * - `decode` resolves the bytes a recipient pays to (see its doc): by default
12
+ * the transparent scriptPubKey; with `unifiedRecipientPreference: 'shielded'`
13
+ * the raw Orchard/Ironwood receiver of a Unified Address.
14
+ * - `encode`/`toExtendedAddressFormat` are unchanged: scripts can only be
15
+ * written back out as transparent addresses.
16
+ * - `isValidAddress` accepts transparent addresses and Unified Addresses with
17
+ * a transparent or Orchard receiver.
18
+ */
19
+ export declare class ZecAddressCodec extends AddressCodec {
20
+ /** The Zcash network name for wasm calls — 'zec' or 'tzec'. */
21
+ private readonly zcashNetworkName;
22
+ /** How Unified Address recipients resolve when this codec decodes them. */
23
+ private readonly unifiedRecipientPreference;
24
+ constructor(coinName: UtxoCoinName, wasmName: WasmUtxoCoinName, unifiedRecipientPreference?: UnifiedRecipientPreference);
25
+ /**
26
+ * Whether `address` is a valid Zcash address for this coin's network.
27
+ *
28
+ * Mirrors the pre-codec `Zec.isValidAddress` logic exactly: the address is
29
+ * valid iff it has a usable transparent receiver (an ordinary transparent
30
+ * address, or a UA carrying a transparent receiver) or an Orchard receiver
31
+ * (a UA carrying one).
32
+ */
33
+ isValidAddress(address: string): boolean;
34
+ /**
35
+ * Resolve `address` to the bytes this codec's unified-recipient preference pays to.
36
+ *
37
+ * - `'transparent'` (default) resolves the scriptPubKey: an ordinary
38
+ * transparent address decodes to its own script, and a UA with a
39
+ * transparent receiver decodes to that receiver's script. A UA without a
40
+ * transparent receiver (e.g. Orchard-only) throws, since a shielded
41
+ * output has no script.
42
+ * - `'shielded'` resolves the raw Orchard (Ironwood) receiver — the
43
+ * 43-byte diversifier + `pk_d` — of a UA carrying one. Any other address
44
+ * (plain transparent, transparent-only UA, malformed, wrong network)
45
+ * throws, since it has no Orchard receiver to resolve.
46
+ */
47
+ decode(address: string): Uint8Array;
48
+ /** Change addresses are always transparent wallet addresses. */
49
+ decodeChangeAddress(address: string): Uint8Array;
50
+ isMatchingScript(output: ZecAddressCodecOutput): boolean;
51
+ /** Preserve a shielded output's original UA only after validating it against the raw script. */
52
+ toExtendedAddressFormat(script: Buffer, address?: string): string;
53
+ }
54
+ /**
55
+ * Whether `address` is a well-formed ZIP-316 Unified Address for `network`
56
+ * with an Orchard receiver. BitGo only supports Orchard, so a UA without one
57
+ * (e.g. Sapling- or transparent-only) is not considered valid here.
58
+ */
59
+ export declare function isShieldedZcashAddress(address: string, network: fixedScriptWallet.ZcashNetworkName): boolean;
60
+ /**
61
+ * Classify a Zcash address string as transparent or shielded, validating it in
62
+ * the process. Returns undefined if the address is neither a valid transparent
63
+ * address nor a well-formed ZIP-316 Unified Address for `network`.
64
+ */
65
+ export declare function getZcashAddressKind(address: string, network: fixedScriptWallet.ZcashNetworkName): ZcashAddressKind | undefined;
66
+ /**
67
+ * Standalone counterpart to `Zec.isValidAddress`, parameterized by `network`
68
+ * instead of requiring a coin instance. Accepts transparent addresses and
69
+ * shielded ZIP-316 Unified Addresses.
70
+ *
71
+ * Not structurally identical to `Zec.isValidAddress`: the base class also
72
+ * round-trips the parsed script through each known encoding format (see
73
+ * `AbstractUtxoCoin.isValidAddress`), whereas this only calls
74
+ * `toOutputScriptWithCoin` once via `getZcashAddressKind`. They agree in
75
+ * practice since zec/tzec have no alternate transparent-address encoding to
76
+ * round-trip against, but that's not guaranteed to remain true.
77
+ */
78
+ export declare function isValidZcashAddress(address: string, network: fixedScriptWallet.ZcashNetworkName): boolean;
79
+ //# sourceMappingURL=address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../../../../src/impl/zec/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,iBAAiB,EAA4B,MAAM,kBAAkB,CAAC;AACvG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,UAAU,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqC;IACtE,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAA6B;gBAGtE,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,gBAAgB,EAC1B,0BAA0B,GAAE,0BAA0C;IAOxE;;;;;;;OAOG;IACM,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOjD;;;;;;;;;;;;OAYG;IACM,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAkB5C,gEAAgE;IACvD,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAGhD,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO;IA6BjE,gGAAgG;IACvF,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;CAM3E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,gBAAgB,GAAG,OAAO,CAM5G;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,CAAC,gBAAgB,GAC1C,gBAAgB,GAAG,SAAS,CAa9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,gBAAgB,GAAG,OAAO,CAEzG"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZecAddressCodec = void 0;
4
+ exports.isShieldedZcashAddress = isShieldedZcashAddress;
5
+ exports.getZcashAddressKind = getZcashAddressKind;
6
+ exports.isValidZcashAddress = isValidZcashAddress;
7
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
8
+ const recipient_1 = require("../../transaction/recipient");
9
+ /**
10
+ * Address codec for Zcash coins ('zec'/'tzec') that understands ZIP-316
11
+ * Unified Addresses in addition to ordinary transparent addresses.
12
+ *
13
+ * - `decode` resolves the bytes a recipient pays to (see its doc): by default
14
+ * the transparent scriptPubKey; with `unifiedRecipientPreference: 'shielded'`
15
+ * the raw Orchard/Ironwood receiver of a Unified Address.
16
+ * - `encode`/`toExtendedAddressFormat` are unchanged: scripts can only be
17
+ * written back out as transparent addresses.
18
+ * - `isValidAddress` accepts transparent addresses and Unified Addresses with
19
+ * a transparent or Orchard receiver.
20
+ */
21
+ class ZecAddressCodec extends recipient_1.AddressCodec {
22
+ constructor(coinName, wasmName, unifiedRecipientPreference = 'transparent') {
23
+ super(coinName, wasmName);
24
+ this.zcashNetworkName = wasmName;
25
+ this.unifiedRecipientPreference = unifiedRecipientPreference;
26
+ }
27
+ /**
28
+ * Whether `address` is a valid Zcash address for this coin's network.
29
+ *
30
+ * Mirrors the pre-codec `Zec.isValidAddress` logic exactly: the address is
31
+ * valid iff it has a usable transparent receiver (an ordinary transparent
32
+ * address, or a UA carrying a transparent receiver) or an Orchard receiver
33
+ * (a UA carrying one).
34
+ */
35
+ isValidAddress(address) {
36
+ return (wasm_utxo_1.zcashAddress.hasTransparentReceiver(address, this.wasmName) ||
37
+ wasm_utxo_1.zcashAddress.hasOrchardReceiver(address, this.wasmName));
38
+ }
39
+ /**
40
+ * Resolve `address` to the bytes this codec's unified-recipient preference pays to.
41
+ *
42
+ * - `'transparent'` (default) resolves the scriptPubKey: an ordinary
43
+ * transparent address decodes to its own script, and a UA with a
44
+ * transparent receiver decodes to that receiver's script. A UA without a
45
+ * transparent receiver (e.g. Orchard-only) throws, since a shielded
46
+ * output has no script.
47
+ * - `'shielded'` resolves the raw Orchard (Ironwood) receiver — the
48
+ * 43-byte diversifier + `pk_d` — of a UA carrying one. Any other address
49
+ * (plain transparent, transparent-only UA, malformed, wrong network)
50
+ * throws, since it has no Orchard receiver to resolve.
51
+ */
52
+ decode(address) {
53
+ if (this.unifiedRecipientPreference !== 'shielded') {
54
+ return wasm_utxo_1.zcashAddress.toTransparentReceiverWithCoin(address, this.wasmName);
55
+ }
56
+ // The raw Orchard receiver exists only for a Unified Address carrying one; anything else
57
+ // (plain transparent address, transparent-only UA, malformed, wrong network) throws.
58
+ let unified;
59
+ try {
60
+ unified = wasm_utxo_1.fixedScriptWallet.ZcashUnifiedAddress.parse(address, this.zcashNetworkName);
61
+ }
62
+ catch {
63
+ throw new Error(`address ${address} is not a valid address for network ${this.zcashNetworkName}`);
64
+ }
65
+ if (!unified?.hasOrchardReceiver) {
66
+ throw new Error(`address ${address} has no Orchard receiver to resolve as shielded`);
67
+ }
68
+ return wasm_utxo_1.zcashAddress.toShieldedReceiverWithCoin(address, this.wasmName);
69
+ }
70
+ /** Change addresses are always transparent wallet addresses. */
71
+ decodeChangeAddress(address) {
72
+ return wasm_utxo_1.zcashAddress.toTransparentReceiverWithCoin(address, this.wasmName);
73
+ }
74
+ isMatchingScript(output) {
75
+ const address = output.address;
76
+ if (address === undefined || address === null) {
77
+ return true;
78
+ }
79
+ if (recipient_1.AddressCodec.isScriptRecipient(address)) {
80
+ return super.isMatchingScript(output);
81
+ }
82
+ const matchesOutput = (decode) => {
83
+ try {
84
+ return Buffer.from(decode()).equals(Buffer.from(output.script));
85
+ }
86
+ catch {
87
+ return false;
88
+ }
89
+ };
90
+ const isShielded = output.isShielded;
91
+ if (isShielded === true) {
92
+ return matchesOutput(() => wasm_utxo_1.zcashAddress.toShieldedReceiverWithCoin(address, this.wasmName));
93
+ }
94
+ if (isShielded === false) {
95
+ return matchesOutput(() => wasm_utxo_1.zcashAddress.toTransparentReceiverWithCoin(address, this.wasmName));
96
+ }
97
+ return (matchesOutput(() => wasm_utxo_1.zcashAddress.toTransparentReceiverWithCoin(address, this.wasmName)) ||
98
+ matchesOutput(() => wasm_utxo_1.zcashAddress.toShieldedReceiverWithCoin(address, this.wasmName)));
99
+ }
100
+ /** Preserve a shielded output's original UA only after validating it against the raw script. */
101
+ toExtendedAddressFormat(script, address) {
102
+ if (address !== undefined && !this.isMatchingScript({ address, script })) {
103
+ throw new Error(`address ${address} does not match the output script`);
104
+ }
105
+ return address ?? super.toExtendedAddressFormat(script);
106
+ }
107
+ }
108
+ exports.ZecAddressCodec = ZecAddressCodec;
109
+ /**
110
+ * Whether `address` is a well-formed ZIP-316 Unified Address for `network`
111
+ * with an Orchard receiver. BitGo only supports Orchard, so a UA without one
112
+ * (e.g. Sapling- or transparent-only) is not considered valid here.
113
+ */
114
+ function isShieldedZcashAddress(address, network) {
115
+ try {
116
+ return wasm_utxo_1.fixedScriptWallet.ZcashUnifiedAddress.parse(address, network).hasOrchardReceiver;
117
+ }
118
+ catch {
119
+ return false;
120
+ }
121
+ }
122
+ /**
123
+ * Classify a Zcash address string as transparent or shielded, validating it in
124
+ * the process. Returns undefined if the address is neither a valid transparent
125
+ * address nor a well-formed ZIP-316 Unified Address for `network`.
126
+ */
127
+ function getZcashAddressKind(address, network) {
128
+ // ZcashNetworkName also permits 'zcash'/'zcashTest', which toOutputScriptWithCoin
129
+ // doesn't accept (it takes a CoinName, i.e. 'zec'/'tzec'). Skip straight to the
130
+ // shielded check for those rather than relying on an unsafe cast + caught throw.
131
+ if ((0, wasm_utxo_1.isCoinName)(network)) {
132
+ try {
133
+ wasm_utxo_1.address.toOutputScriptWithCoin(address, network);
134
+ return 'transparent';
135
+ }
136
+ catch {
137
+ // not a valid transparent address; fall through to shielded check
138
+ }
139
+ }
140
+ return isShieldedZcashAddress(address, network) ? 'shielded' : undefined;
141
+ }
142
+ /**
143
+ * Standalone counterpart to `Zec.isValidAddress`, parameterized by `network`
144
+ * instead of requiring a coin instance. Accepts transparent addresses and
145
+ * shielded ZIP-316 Unified Addresses.
146
+ *
147
+ * Not structurally identical to `Zec.isValidAddress`: the base class also
148
+ * round-trips the parsed script through each known encoding format (see
149
+ * `AbstractUtxoCoin.isValidAddress`), whereas this only calls
150
+ * `toOutputScriptWithCoin` once via `getZcashAddressKind`. They agree in
151
+ * practice since zec/tzec have no alternate transparent-address encoding to
152
+ * round-trip against, but that's not guaranteed to remain true.
153
+ */
154
+ function isValidZcashAddress(address, network) {
155
+ return getZcashAddressKind(address, network) !== undefined;
156
+ }
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsL3plYy9hZGRyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW1JQSx3REFNQztBQU9ELGtEQWdCQztBQWNELGtEQUVDO0FBaExELGdEQUF1RztBQUd2RywyREFBMkQ7QUFPM0Q7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFhLGVBQWdCLFNBQVEsd0JBQVk7SUFNL0MsWUFDRSxRQUFzQixFQUN0QixRQUEwQixFQUMxQiw2QkFBeUQsYUFBYTtRQUV0RSxLQUFLLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUE4QyxDQUFDO1FBQ3ZFLElBQUksQ0FBQywwQkFBMEIsR0FBRywwQkFBMEIsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNNLGNBQWMsQ0FBQyxPQUFlO1FBQ3JDLE9BQU8sQ0FDTCx3QkFBWSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzNELHdCQUFZLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDeEQsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDTSxNQUFNLENBQUMsT0FBZTtRQUM3QixJQUFJLElBQUksQ0FBQywwQkFBMEIsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNuRCxPQUFPLHdCQUFZLENBQUMsNkJBQTZCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QseUZBQXlGO1FBQ3pGLHFGQUFxRjtRQUNyRixJQUFJLE9BQTBELENBQUM7UUFDL0QsSUFBSSxDQUFDO1lBQ0gsT0FBTyxHQUFHLDZCQUFpQixDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxPQUFPLHVDQUF1QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3BHLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLE9BQU8saURBQWlELENBQUMsQ0FBQztRQUN2RixDQUFDO1FBQ0QsT0FBTyx3QkFBWSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELGdFQUFnRTtJQUN2RCxtQkFBbUIsQ0FBQyxPQUFlO1FBQzFDLE9BQU8sd0JBQVksQ0FBQyw2QkFBNkIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFDUSxnQkFBZ0IsQ0FBQyxNQUE2QjtRQUNyRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQy9CLElBQUksT0FBTyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDOUMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSx3QkFBWSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBd0IsRUFBVyxFQUFFO1lBQzFELElBQUksQ0FBQztnQkFDSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNsRSxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUMsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDeEIsT0FBTyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQVksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDOUYsQ0FBQztRQUNELElBQUksVUFBVSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE9BQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUFZLENBQUMsNkJBQTZCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2pHLENBQUM7UUFDRCxPQUFPLENBQ0wsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUFZLENBQUMsNkJBQTZCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2RixhQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQVksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQ3JGLENBQUM7SUFDSixDQUFDO0lBRUQsZ0dBQWdHO0lBQ3ZGLHVCQUF1QixDQUFDLE1BQWMsRUFBRSxPQUFnQjtRQUMvRCxJQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3pFLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxPQUFPLG1DQUFtQyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELE9BQU8sT0FBTyxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0Y7QUF0R0QsMENBc0dDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHNCQUFzQixDQUFDLE9BQWUsRUFBRSxPQUEyQztJQUNqRyxJQUFJLENBQUM7UUFDSCxPQUFPLDZCQUFpQixDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUM7SUFDMUYsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQ2pDLE9BQWUsRUFDZixPQUEyQztJQUUzQyxrRkFBa0Y7SUFDbEYsZ0ZBQWdGO0lBQ2hGLGlGQUFpRjtJQUNqRixJQUFJLElBQUEsc0JBQVUsRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQztZQUNILG1CQUFXLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3JELE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxrRUFBa0U7UUFDcEUsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDM0UsQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsT0FBZSxFQUFFLE9BQTJDO0lBQzlGLE9BQU8sbUJBQW1CLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLFNBQVMsQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRkcmVzcyBhcyB3YXNtQWRkcmVzcywgZml4ZWRTY3JpcHRXYWxsZXQsIGlzQ29pbk5hbWUsIHpjYXNoQWRkcmVzcyB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuaW1wb3J0IHR5cGUgeyBVbmlmaWVkUmVjaXBpZW50UHJlZmVyZW5jZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgQWRkcmVzc0NvZGVjIH0gZnJvbSAnLi4vLi4vdHJhbnNhY3Rpb24vcmVjaXBpZW50JztcbmltcG9ydCB7IFV0eG9Db2luTmFtZSwgV2FzbVV0eG9Db2luTmFtZSB9IGZyb20gJy4uLy4uL25hbWVzJztcblxuaW1wb3J0IHR5cGUgeyBaZWNBZGRyZXNzQ29kZWNPdXRwdXQgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgWmNhc2hBZGRyZXNzS2luZCA9ICd0cmFuc3BhcmVudCcgfCAnc2hpZWxkZWQnO1xuXG4vKipcbiAqIEFkZHJlc3MgY29kZWMgZm9yIFpjYXNoIGNvaW5zICgnemVjJy8ndHplYycpIHRoYXQgdW5kZXJzdGFuZHMgWklQLTMxNlxuICogVW5pZmllZCBBZGRyZXNzZXMgaW4gYWRkaXRpb24gdG8gb3JkaW5hcnkgdHJhbnNwYXJlbnQgYWRkcmVzc2VzLlxuICpcbiAqIC0gYGRlY29kZWAgcmVzb2x2ZXMgdGhlIGJ5dGVzIGEgcmVjaXBpZW50IHBheXMgdG8gKHNlZSBpdHMgZG9jKTogYnkgZGVmYXVsdFxuICogICB0aGUgdHJhbnNwYXJlbnQgc2NyaXB0UHViS2V5OyB3aXRoIGB1bmlmaWVkUmVjaXBpZW50UHJlZmVyZW5jZTogJ3NoaWVsZGVkJ2BcbiAqICAgdGhlIHJhdyBPcmNoYXJkL0lyb253b29kIHJlY2VpdmVyIG9mIGEgVW5pZmllZCBBZGRyZXNzLlxuICogLSBgZW5jb2RlYC9gdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXRgIGFyZSB1bmNoYW5nZWQ6IHNjcmlwdHMgY2FuIG9ubHkgYmVcbiAqICAgd3JpdHRlbiBiYWNrIG91dCBhcyB0cmFuc3BhcmVudCBhZGRyZXNzZXMuXG4gKiAtIGBpc1ZhbGlkQWRkcmVzc2AgYWNjZXB0cyB0cmFuc3BhcmVudCBhZGRyZXNzZXMgYW5kIFVuaWZpZWQgQWRkcmVzc2VzIHdpdGhcbiAqICAgYSB0cmFuc3BhcmVudCBvciBPcmNoYXJkIHJlY2VpdmVyLlxuICovXG5leHBvcnQgY2xhc3MgWmVjQWRkcmVzc0NvZGVjIGV4dGVuZHMgQWRkcmVzc0NvZGVjIHtcbiAgLyoqIFRoZSBaY2FzaCBuZXR3b3JrIG5hbWUgZm9yIHdhc20gY2FsbHMg4oCUICd6ZWMnIG9yICd0emVjJy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSB6Y2FzaE5ldHdvcmtOYW1lOiBmaXhlZFNjcmlwdFdhbGxldC5aY2FzaE5ldHdvcmtOYW1lO1xuICAvKiogSG93IFVuaWZpZWQgQWRkcmVzcyByZWNpcGllbnRzIHJlc29sdmUgd2hlbiB0aGlzIGNvZGVjIGRlY29kZXMgdGhlbS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSB1bmlmaWVkUmVjaXBpZW50UHJlZmVyZW5jZTogVW5pZmllZFJlY2lwaWVudFByZWZlcmVuY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29pbk5hbWU6IFV0eG9Db2luTmFtZSxcbiAgICB3YXNtTmFtZTogV2FzbVV0eG9Db2luTmFtZSxcbiAgICB1bmlmaWVkUmVjaXBpZW50UHJlZmVyZW5jZTogVW5pZmllZFJlY2lwaWVudFByZWZlcmVuY2UgPSAndHJhbnNwYXJlbnQnXG4gICkge1xuICAgIHN1cGVyKGNvaW5OYW1lLCB3YXNtTmFtZSk7XG4gICAgdGhpcy56Y2FzaE5ldHdvcmtOYW1lID0gd2FzbU5hbWUgYXMgZml4ZWRTY3JpcHRXYWxsZXQuWmNhc2hOZXR3b3JrTmFtZTtcbiAgICB0aGlzLnVuaWZpZWRSZWNpcGllbnRQcmVmZXJlbmNlID0gdW5pZmllZFJlY2lwaWVudFByZWZlcmVuY2U7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBgYWRkcmVzc2AgaXMgYSB2YWxpZCBaY2FzaCBhZGRyZXNzIGZvciB0aGlzIGNvaW4ncyBuZXR3b3JrLlxuICAgKlxuICAgKiBNaXJyb3JzIHRoZSBwcmUtY29kZWMgYFplYy5pc1ZhbGlkQWRkcmVzc2AgbG9naWMgZXhhY3RseTogdGhlIGFkZHJlc3MgaXNcbiAgICogdmFsaWQgaWZmIGl0IGhhcyBhIHVzYWJsZSB0cmFuc3BhcmVudCByZWNlaXZlciAoYW4gb3JkaW5hcnkgdHJhbnNwYXJlbnRcbiAgICogYWRkcmVzcywgb3IgYSBVQSBjYXJyeWluZyBhIHRyYW5zcGFyZW50IHJlY2VpdmVyKSBvciBhbiBPcmNoYXJkIHJlY2VpdmVyXG4gICAqIChhIFVBIGNhcnJ5aW5nIG9uZSkuXG4gICAqL1xuICBvdmVycmlkZSBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgemNhc2hBZGRyZXNzLmhhc1RyYW5zcGFyZW50UmVjZWl2ZXIoYWRkcmVzcywgdGhpcy53YXNtTmFtZSkgfHxcbiAgICAgIHpjYXNoQWRkcmVzcy5oYXNPcmNoYXJkUmVjZWl2ZXIoYWRkcmVzcywgdGhpcy53YXNtTmFtZSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYGFkZHJlc3NgIHRvIHRoZSBieXRlcyB0aGlzIGNvZGVjJ3MgdW5pZmllZC1yZWNpcGllbnQgcHJlZmVyZW5jZSBwYXlzIHRvLlxuICAgKlxuICAgKiAtIGAndHJhbnNwYXJlbnQnYCAoZGVmYXVsdCkgcmVzb2x2ZXMgdGhlIHNjcmlwdFB1YktleTogYW4gb3JkaW5hcnlcbiAgICogICB0cmFuc3BhcmVudCBhZGRyZXNzIGRlY29kZXMgdG8gaXRzIG93biBzY3JpcHQsIGFuZCBhIFVBIHdpdGggYVxuICAgKiAgIHRyYW5zcGFyZW50IHJlY2VpdmVyIGRlY29kZXMgdG8gdGhhdCByZWNlaXZlcidzIHNjcmlwdC4gQSBVQSB3aXRob3V0IGFcbiAgICogICB0cmFuc3BhcmVudCByZWNlaXZlciAoZS5nLiBPcmNoYXJkLW9ubHkpIHRocm93cywgc2luY2UgYSBzaGllbGRlZFxuICAgKiAgIG91dHB1dCBoYXMgbm8gc2NyaXB0LlxuICAgKiAtIGAnc2hpZWxkZWQnYCByZXNvbHZlcyB0aGUgcmF3IE9yY2hhcmQgKElyb253b29kKSByZWNlaXZlciDigJQgdGhlXG4gICAqICAgNDMtYnl0ZSBkaXZlcnNpZmllciArIGBwa19kYCDigJQgb2YgYSBVQSBjYXJyeWluZyBvbmUuIEFueSBvdGhlciBhZGRyZXNzXG4gICAqICAgKHBsYWluIHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudC1vbmx5IFVBLCBtYWxmb3JtZWQsIHdyb25nIG5ldHdvcmspXG4gICAqICAgdGhyb3dzLCBzaW5jZSBpdCBoYXMgbm8gT3JjaGFyZCByZWNlaXZlciB0byByZXNvbHZlLlxuICAgKi9cbiAgb3ZlcnJpZGUgZGVjb2RlKGFkZHJlc3M6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICAgIGlmICh0aGlzLnVuaWZpZWRSZWNpcGllbnRQcmVmZXJlbmNlICE9PSAnc2hpZWxkZWQnKSB7XG4gICAgICByZXR1cm4gemNhc2hBZGRyZXNzLnRvVHJhbnNwYXJlbnRSZWNlaXZlcldpdGhDb2luKGFkZHJlc3MsIHRoaXMud2FzbU5hbWUpO1xuICAgIH1cbiAgICAvLyBUaGUgcmF3IE9yY2hhcmQgcmVjZWl2ZXIgZXhpc3RzIG9ubHkgZm9yIGEgVW5pZmllZCBBZGRyZXNzIGNhcnJ5aW5nIG9uZTsgYW55dGhpbmcgZWxzZVxuICAgIC8vIChwbGFpbiB0cmFuc3BhcmVudCBhZGRyZXNzLCB0cmFuc3BhcmVudC1vbmx5IFVBLCBtYWxmb3JtZWQsIHdyb25nIG5ldHdvcmspIHRocm93cy5cbiAgICBsZXQgdW5pZmllZDogZml4ZWRTY3JpcHRXYWxsZXQuWmNhc2hVbmlmaWVkQWRkcmVzcyB8IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgdW5pZmllZCA9IGZpeGVkU2NyaXB0V2FsbGV0LlpjYXNoVW5pZmllZEFkZHJlc3MucGFyc2UoYWRkcmVzcywgdGhpcy56Y2FzaE5ldHdvcmtOYW1lKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgYWRkcmVzcyAke2FkZHJlc3N9IGlzIG5vdCBhIHZhbGlkIGFkZHJlc3MgZm9yIG5ldHdvcmsgJHt0aGlzLnpjYXNoTmV0d29ya05hbWV9YCk7XG4gICAgfVxuICAgIGlmICghdW5pZmllZD8uaGFzT3JjaGFyZFJlY2VpdmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGFkZHJlc3MgJHthZGRyZXNzfSBoYXMgbm8gT3JjaGFyZCByZWNlaXZlciB0byByZXNvbHZlIGFzIHNoaWVsZGVkYCk7XG4gICAgfVxuICAgIHJldHVybiB6Y2FzaEFkZHJlc3MudG9TaGllbGRlZFJlY2VpdmVyV2l0aENvaW4oYWRkcmVzcywgdGhpcy53YXNtTmFtZSk7XG4gIH1cblxuICAvKiogQ2hhbmdlIGFkZHJlc3NlcyBhcmUgYWx3YXlzIHRyYW5zcGFyZW50IHdhbGxldCBhZGRyZXNzZXMuICovXG4gIG92ZXJyaWRlIGRlY29kZUNoYW5nZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIHpjYXNoQWRkcmVzcy50b1RyYW5zcGFyZW50UmVjZWl2ZXJXaXRoQ29pbihhZGRyZXNzLCB0aGlzLndhc21OYW1lKTtcbiAgfVxuICBvdmVycmlkZSBpc01hdGNoaW5nU2NyaXB0KG91dHB1dDogWmVjQWRkcmVzc0NvZGVjT3V0cHV0KTogYm9vbGVhbiB7XG4gICAgY29uc3QgYWRkcmVzcyA9IG91dHB1dC5hZGRyZXNzO1xuICAgIGlmIChhZGRyZXNzID09PSB1bmRlZmluZWQgfHwgYWRkcmVzcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChBZGRyZXNzQ29kZWMuaXNTY3JpcHRSZWNpcGllbnQoYWRkcmVzcykpIHtcbiAgICAgIHJldHVybiBzdXBlci5pc01hdGNoaW5nU2NyaXB0KG91dHB1dCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hlc091dHB1dCA9IChkZWNvZGU6ICgpID0+IFVpbnQ4QXJyYXkpOiBib29sZWFuID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShkZWNvZGUoKSkuZXF1YWxzKEJ1ZmZlci5mcm9tKG91dHB1dC5zY3JpcHQpKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBpc1NoaWVsZGVkID0gb3V0cHV0LmlzU2hpZWxkZWQ7XG4gICAgaWYgKGlzU2hpZWxkZWQgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiBtYXRjaGVzT3V0cHV0KCgpID0+IHpjYXNoQWRkcmVzcy50b1NoaWVsZGVkUmVjZWl2ZXJXaXRoQ29pbihhZGRyZXNzLCB0aGlzLndhc21OYW1lKSk7XG4gICAgfVxuICAgIGlmIChpc1NoaWVsZGVkID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIG1hdGNoZXNPdXRwdXQoKCkgPT4gemNhc2hBZGRyZXNzLnRvVHJhbnNwYXJlbnRSZWNlaXZlcldpdGhDb2luKGFkZHJlc3MsIHRoaXMud2FzbU5hbWUpKTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIG1hdGNoZXNPdXRwdXQoKCkgPT4gemNhc2hBZGRyZXNzLnRvVHJhbnNwYXJlbnRSZWNlaXZlcldpdGhDb2luKGFkZHJlc3MsIHRoaXMud2FzbU5hbWUpKSB8fFxuICAgICAgbWF0Y2hlc091dHB1dCgoKSA9PiB6Y2FzaEFkZHJlc3MudG9TaGllbGRlZFJlY2VpdmVyV2l0aENvaW4oYWRkcmVzcywgdGhpcy53YXNtTmFtZSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBQcmVzZXJ2ZSBhIHNoaWVsZGVkIG91dHB1dCdzIG9yaWdpbmFsIFVBIG9ubHkgYWZ0ZXIgdmFsaWRhdGluZyBpdCBhZ2FpbnN0IHRoZSByYXcgc2NyaXB0LiAqL1xuICBvdmVycmlkZSB0b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdChzY3JpcHQ6IEJ1ZmZlciwgYWRkcmVzcz86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKGFkZHJlc3MgIT09IHVuZGVmaW5lZCAmJiAhdGhpcy5pc01hdGNoaW5nU2NyaXB0KHsgYWRkcmVzcywgc2NyaXB0IH0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGFkZHJlc3MgJHthZGRyZXNzfSBkb2VzIG5vdCBtYXRjaCB0aGUgb3V0cHV0IHNjcmlwdGApO1xuICAgIH1cbiAgICByZXR1cm4gYWRkcmVzcyA/PyBzdXBlci50b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdChzY3JpcHQpO1xuICB9XG59XG5cbi8qKlxuICogV2hldGhlciBgYWRkcmVzc2AgaXMgYSB3ZWxsLWZvcm1lZCBaSVAtMzE2IFVuaWZpZWQgQWRkcmVzcyBmb3IgYG5ldHdvcmtgXG4gKiB3aXRoIGFuIE9yY2hhcmQgcmVjZWl2ZXIuIEJpdEdvIG9ubHkgc3VwcG9ydHMgT3JjaGFyZCwgc28gYSBVQSB3aXRob3V0IG9uZVxuICogKGUuZy4gU2FwbGluZy0gb3IgdHJhbnNwYXJlbnQtb25seSkgaXMgbm90IGNvbnNpZGVyZWQgdmFsaWQgaGVyZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2hpZWxkZWRaY2FzaEFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBuZXR3b3JrOiBmaXhlZFNjcmlwdFdhbGxldC5aY2FzaE5ldHdvcmtOYW1lKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZpeGVkU2NyaXB0V2FsbGV0LlpjYXNoVW5pZmllZEFkZHJlc3MucGFyc2UoYWRkcmVzcywgbmV0d29yaykuaGFzT3JjaGFyZFJlY2VpdmVyO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBDbGFzc2lmeSBhIFpjYXNoIGFkZHJlc3Mgc3RyaW5nIGFzIHRyYW5zcGFyZW50IG9yIHNoaWVsZGVkLCB2YWxpZGF0aW5nIGl0IGluXG4gKiB0aGUgcHJvY2Vzcy4gUmV0dXJucyB1bmRlZmluZWQgaWYgdGhlIGFkZHJlc3MgaXMgbmVpdGhlciBhIHZhbGlkIHRyYW5zcGFyZW50XG4gKiBhZGRyZXNzIG5vciBhIHdlbGwtZm9ybWVkIFpJUC0zMTYgVW5pZmllZCBBZGRyZXNzIGZvciBgbmV0d29ya2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRaY2FzaEFkZHJlc3NLaW5kKFxuICBhZGRyZXNzOiBzdHJpbmcsXG4gIG5ldHdvcms6IGZpeGVkU2NyaXB0V2FsbGV0LlpjYXNoTmV0d29ya05hbWVcbik6IFpjYXNoQWRkcmVzc0tpbmQgfCB1bmRlZmluZWQge1xuICAvLyBaY2FzaE5ldHdvcmtOYW1lIGFsc28gcGVybWl0cyAnemNhc2gnLyd6Y2FzaFRlc3QnLCB3aGljaCB0b091dHB1dFNjcmlwdFdpdGhDb2luXG4gIC8vIGRvZXNuJ3QgYWNjZXB0IChpdCB0YWtlcyBhIENvaW5OYW1lLCBpLmUuICd6ZWMnLyd0emVjJykuIFNraXAgc3RyYWlnaHQgdG8gdGhlXG4gIC8vIHNoaWVsZGVkIGNoZWNrIGZvciB0aG9zZSByYXRoZXIgdGhhbiByZWx5aW5nIG9uIGFuIHVuc2FmZSBjYXN0ICsgY2F1Z2h0IHRocm93LlxuICBpZiAoaXNDb2luTmFtZShuZXR3b3JrKSkge1xuICAgIHRyeSB7XG4gICAgICB3YXNtQWRkcmVzcy50b091dHB1dFNjcmlwdFdpdGhDb2luKGFkZHJlc3MsIG5ldHdvcmspO1xuICAgICAgcmV0dXJuICd0cmFuc3BhcmVudCc7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBub3QgYSB2YWxpZCB0cmFuc3BhcmVudCBhZGRyZXNzOyBmYWxsIHRocm91Z2ggdG8gc2hpZWxkZWQgY2hlY2tcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGlzU2hpZWxkZWRaY2FzaEFkZHJlc3MoYWRkcmVzcywgbmV0d29yaykgPyAnc2hpZWxkZWQnIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFN0YW5kYWxvbmUgY291bnRlcnBhcnQgdG8gYFplYy5pc1ZhbGlkQWRkcmVzc2AsIHBhcmFtZXRlcml6ZWQgYnkgYG5ldHdvcmtgXG4gKiBpbnN0ZWFkIG9mIHJlcXVpcmluZyBhIGNvaW4gaW5zdGFuY2UuIEFjY2VwdHMgdHJhbnNwYXJlbnQgYWRkcmVzc2VzIGFuZFxuICogc2hpZWxkZWQgWklQLTMxNiBVbmlmaWVkIEFkZHJlc3Nlcy5cbiAqXG4gKiBOb3Qgc3RydWN0dXJhbGx5IGlkZW50aWNhbCB0byBgWmVjLmlzVmFsaWRBZGRyZXNzYDogdGhlIGJhc2UgY2xhc3MgYWxzb1xuICogcm91bmQtdHJpcHMgdGhlIHBhcnNlZCBzY3JpcHQgdGhyb3VnaCBlYWNoIGtub3duIGVuY29kaW5nIGZvcm1hdCAoc2VlXG4gKiBgQWJzdHJhY3RVdHhvQ29pbi5pc1ZhbGlkQWRkcmVzc2ApLCB3aGVyZWFzIHRoaXMgb25seSBjYWxsc1xuICogYHRvT3V0cHV0U2NyaXB0V2l0aENvaW5gIG9uY2UgdmlhIGBnZXRaY2FzaEFkZHJlc3NLaW5kYC4gVGhleSBhZ3JlZSBpblxuICogcHJhY3RpY2Ugc2luY2UgemVjL3R6ZWMgaGF2ZSBubyBhbHRlcm5hdGUgdHJhbnNwYXJlbnQtYWRkcmVzcyBlbmNvZGluZyB0b1xuICogcm91bmQtdHJpcCBhZ2FpbnN0LCBidXQgdGhhdCdzIG5vdCBndWFyYW50ZWVkIHRvIHJlbWFpbiB0cnVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFpjYXNoQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcsIG5ldHdvcms6IGZpeGVkU2NyaXB0V2FsbGV0LlpjYXNoTmV0d29ya05hbWUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldFpjYXNoQWRkcmVzc0tpbmQoYWRkcmVzcywgbmV0d29yaykgIT09IHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export * from './zec';
2
+ export * from './tzec';
3
+ export * from './shieldedAddress';
4
+ export * from './address';
5
+ export * from './recipients';
6
+ export * from './types';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/impl/zec/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./zec"), exports);
18
+ __exportStar(require("./tzec"), exports);
19
+ __exportStar(require("./shieldedAddress"), exports);
20
+ __exportStar(require("./address"), exports);
21
+ __exportStar(require("./recipients"), exports);
22
+ __exportStar(require("./types"), exports);
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaW1wbC96ZWMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQjtBQUN0Qix5Q0FBdUI7QUFDdkIsb0RBQWtDO0FBQ2xDLDRDQUEwQjtBQUMxQiwrQ0FBNkI7QUFDN0IsMENBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi96ZWMnO1xuZXhwb3J0ICogZnJvbSAnLi90emVjJztcbmV4cG9ydCAqIGZyb20gJy4vc2hpZWxkZWRBZGRyZXNzJztcbmV4cG9ydCAqIGZyb20gJy4vYWRkcmVzcyc7XG5leHBvcnQgKiBmcm9tICcuL3JlY2lwaWVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG4iXX0=
@@ -0,0 +1,86 @@
1
+ import { fixedScriptWallet } from '@bitgo/wasm-utxo';
2
+ import type { UnifiedRecipientPreference } from '@bitgo-beta/sdk-core';
3
+ import type { AddressCodec } from '../../transaction/recipient';
4
+ import { ZcashCoinName } from './types';
5
+ /**
6
+ * How a recipient parsed from a Zcash PSBT is spent.
7
+ *
8
+ * The decode-side counterpart of utxo-core's `buildTransaction/zcash.ts` `ZcashDestination` on
9
+ * the build side: a shielded recipient is an Orchard/Ironwood output stored in the v6 (Ironwood)
10
+ * PSBT's orchard PCZT, and everything else is an ordinary transparent output. A transparent
11
+ * output resolved from a Unified Address carries that original UA (`zcashUnifiedTransparent`), a
12
+ * plain address does not.
13
+ */
14
+ export type PsbtRecipientDestination = {
15
+ kind: 'zcashShielded';
16
+ /**
17
+ * The Unified Address the output was addressed to — the original multi-receiver UA the
18
+ * client passed when the PSBT stores one verbatim, otherwise a re-encoded single-receiver
19
+ * Orchard UA.
20
+ */
21
+ unifiedAddress: string;
22
+ } | {
23
+ kind: 'zcashUnifiedTransparent';
24
+ /** The original Unified Address the transparent receiver was resolved from. */
25
+ unifiedAddress: string;
26
+ } | {
27
+ kind: 'transparent';
28
+ };
29
+ /** A recipient resolved from a decoded Zcash PSBT's external outputs. */
30
+ export interface PsbtRecipient {
31
+ /** Amount in satoshis. */
32
+ amount: bigint;
33
+ /**
34
+ * The recipient address. For a shielded output this is the Unified Address the output was
35
+ * addressed to — the original multi-receiver UA when the PSBT stores one verbatim, otherwise a
36
+ * re-encoded single-receiver Orchard UA. For a transparent output it is the original Unified
37
+ * Address when one was stored, else the decoded transparent address.
38
+ */
39
+ address: string;
40
+ /**
41
+ * Raw receiver bytes: the 43-byte Orchard/Ironwood receiver for a shielded output, the
42
+ * scriptPubKey for a transparent one.
43
+ */
44
+ script: Uint8Array;
45
+ /**
46
+ * The original Unified Address the client supplied for this recipient, when the PSBT stores
47
+ * one: the v6 (Ironwood) PCZT for a shielded output, the transparent-output proprietary
48
+ * key-value map for a v4 transparent output. `undefined` when the recipient was built from a
49
+ * plain address.
50
+ */
51
+ unifiedAddress?: string;
52
+ destination: PsbtRecipientDestination;
53
+ }
54
+ /**
55
+ * Resolve the recipient list of a decoded Zcash PSBT (v4 Sapling-shaped or v6 Ironwood).
56
+ *
57
+ * Mirrors the recipient resolution of wallet-platform's utxo-core `buildTransaction` in the
58
+ * decode direction: every non-wallet output with a resolvable address is a recipient. A
59
+ * shielded output parses with `isShielded: true`, its `script` being the raw 43-byte receiver;
60
+ * when the build stored the client's original Unified Address (the v6 PCZT for shielded
61
+ * outputs, the transparent-output proprietary key-value map for v4), both the parsed address
62
+ * and `unifiedAddress` report it verbatim. Opaque outputs with no address (e.g. OP_RETURN) are
63
+ * skipped, as they carry no recipient.
64
+ */
65
+ export declare function resolvePsbtRecipients(psbt: fixedScriptWallet.ZcashBitGoPsbt, walletKeys: fixedScriptWallet.RootWalletKeys, addressCodec: AddressCodec): PsbtRecipient[];
66
+ /**
67
+ * Infer the Unified-Address recipient preference for a Zcash transaction when the caller did
68
+ * not pass one — the counterpart of wallet-platform's utxo-core `buildTransaction`
69
+ * `classifyRecipientShieldedness`.
70
+ *
71
+ * A recipient that resolves to a transparent output — an ordinary transparent address, or a
72
+ * Unified Address carrying a transparent receiver — is classified `'transparent'`; a Unified
73
+ * Address carrying only an Orchard/Ironwood receiver is classified `'shielded'`. A mix of
74
+ * shielded and transparent recipients is rejected. An address that is neither a transparent
75
+ * address nor a Unified Address propagates the Unified-Address parse error — it is not
76
+ * silently defaulted to `'transparent'`.
77
+ *
78
+ * @returns `'shielded'` when every recipient resolves shielded, `undefined` when every
79
+ * recipient resolves transparent (the build's default). The `'transparent'` arm of the
80
+ * return type exists so callers can pass the explicit preference through unchanged; this
81
+ * function itself never returns `'transparent'`.
82
+ */
83
+ export declare function getUnifiedRecipientPreference(name: ZcashCoinName, recipients: {
84
+ address: string | undefined;
85
+ }[]): UnifiedRecipientPreference | undefined;
86
+ //# sourceMappingURL=recipients.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipients.d.ts","sourceRoot":"","sources":["../../../../../src/impl/zec/recipients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAgB,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;;;;;;;GAQG;AACH,MAAM,MAAM,wBAAwB,GAChC;IACE,IAAI,EAAE,eAAe,CAAC;IACtB;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;CACxB,GACD;IACE,IAAI,EAAE,yBAAyB,CAAC;IAChC,+EAA+E;IAC/E,cAAc,EAAE,MAAM,CAAC;CACxB,GACD;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAE5B,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,EAAE,UAAU,CAAC;IACnB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,wBAAwB,CAAC;CACvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,iBAAiB,CAAC,cAAc,EACtC,UAAU,EAAE,iBAAiB,CAAC,cAAc,EAC5C,YAAY,EAAE,YAAY,GACzB,aAAa,EAAE,CAoCjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE;IAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAAE,GAC5C,0BAA0B,GAAG,SAAS,CA0BxC"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolvePsbtRecipients = resolvePsbtRecipients;
4
+ exports.getUnifiedRecipientPreference = getUnifiedRecipientPreference;
5
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
6
+ const replayProtection_1 = require("../../transaction/fixedScript/replayProtection");
7
+ /**
8
+ * Resolve the recipient list of a decoded Zcash PSBT (v4 Sapling-shaped or v6 Ironwood).
9
+ *
10
+ * Mirrors the recipient resolution of wallet-platform's utxo-core `buildTransaction` in the
11
+ * decode direction: every non-wallet output with a resolvable address is a recipient. A
12
+ * shielded output parses with `isShielded: true`, its `script` being the raw 43-byte receiver;
13
+ * when the build stored the client's original Unified Address (the v6 PCZT for shielded
14
+ * outputs, the transparent-output proprietary key-value map for v4), both the parsed address
15
+ * and `unifiedAddress` report it verbatim. Opaque outputs with no address (e.g. OP_RETURN) are
16
+ * skipped, as they carry no recipient.
17
+ */
18
+ function resolvePsbtRecipients(psbt, walletKeys, addressCodec) {
19
+ const parsed = psbt.parseTransactionWithWalletKeys(walletKeys, {
20
+ replayProtection: { publicKeys: (0, replayProtection_1.getReplayProtectionPubkeys)('zec') },
21
+ });
22
+ const recipients = [];
23
+ parsed.outputs.forEach((output, i) => {
24
+ // Wallet-owned (change) outputs.
25
+ if (output.scriptId !== null) {
26
+ return;
27
+ }
28
+ // Opaque outputs (e.g. OP_RETURN) carry no recipient address.
29
+ if (output.address === null) {
30
+ return;
31
+ }
32
+ // The raw parsed receiver/script is authoritative; proprietary Unified Address metadata
33
+ // must match it before it is exposed to callers.
34
+ if (!addressCodec.isMatchingScript(output)) {
35
+ throw new Error(`Output ${i} address ${output.address} does not match its raw recipient`);
36
+ }
37
+ // The original client-passed Unified Address, stored verbatim in the PSBT's key-value
38
+ // transparent-output proprietary map for a v4 transparent output.
39
+ const unifiedAddress = output.isShielded ? output.address : psbt.transparentOutputUnifiedAddress(i) ?? undefined;
40
+ recipients.push({
41
+ amount: output.value,
42
+ address: output.address,
43
+ script: output.script,
44
+ unifiedAddress,
45
+ destination: output.isShielded
46
+ ? { kind: 'zcashShielded', unifiedAddress: output.address }
47
+ : unifiedAddress
48
+ ? { kind: 'zcashUnifiedTransparent', unifiedAddress }
49
+ : { kind: 'transparent' },
50
+ });
51
+ });
52
+ return recipients;
53
+ }
54
+ /**
55
+ * Infer the Unified-Address recipient preference for a Zcash transaction when the caller did
56
+ * not pass one — the counterpart of wallet-platform's utxo-core `buildTransaction`
57
+ * `classifyRecipientShieldedness`.
58
+ *
59
+ * A recipient that resolves to a transparent output — an ordinary transparent address, or a
60
+ * Unified Address carrying a transparent receiver — is classified `'transparent'`; a Unified
61
+ * Address carrying only an Orchard/Ironwood receiver is classified `'shielded'`. A mix of
62
+ * shielded and transparent recipients is rejected. An address that is neither a transparent
63
+ * address nor a Unified Address propagates the Unified-Address parse error — it is not
64
+ * silently defaulted to `'transparent'`.
65
+ *
66
+ * @returns `'shielded'` when every recipient resolves shielded, `undefined` when every
67
+ * recipient resolves transparent (the build's default). The `'transparent'` arm of the
68
+ * return type exists so callers can pass the explicit preference through unchanged; this
69
+ * function itself never returns `'transparent'`.
70
+ */
71
+ function getUnifiedRecipientPreference(name, recipients) {
72
+ const shieldedness = recipients.map((recipient) => {
73
+ if (recipient.address === undefined) {
74
+ // Raw script inherently transparent.
75
+ return 'transparent';
76
+ }
77
+ // Ordinary transparent address, or a Unified Address carrying a transparent receiver:
78
+ // resolves transparently either way (the build's default when no preference is given).
79
+ if (wasm_utxo_1.zcashAddress.hasTransparentReceiver(recipient.address, name)) {
80
+ return 'transparent';
81
+ }
82
+ // A shielded (Orchard/Ironwood-only) Unified Address is the only remaining resolvable
83
+ // form. An address that is none of the above propagates the parse error instead of
84
+ // assuming a default.
85
+ const unified = wasm_utxo_1.fixedScriptWallet.ZcashUnifiedAddress.parse(recipient.address, name);
86
+ if (unified.hasOrchardReceiver) {
87
+ return 'shielded';
88
+ }
89
+ throw new Error(`address ${recipient.address} carries no transparent or Orchard receiver`);
90
+ });
91
+ const hasShielded = shieldedness.includes('shielded');
92
+ const hasTransparent = shieldedness.includes('transparent');
93
+ if (hasShielded && hasTransparent) {
94
+ throw new Error('Mixed shielded and transparent recipients are not supported');
95
+ }
96
+ return hasShielded ? 'shielded' : undefined;
97
+ }
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsL3plYy9yZWNpcGllbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBdUVBLHNEQXdDQztBQW1CRCxzRUE2QkM7QUEvSkQsZ0RBQW1FO0FBR25FLHFGQUE0RjtBQXlENUY7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLHFCQUFxQixDQUNuQyxJQUFzQyxFQUN0QyxVQUE0QyxFQUM1QyxZQUEwQjtJQUUxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsVUFBVSxFQUFFO1FBQzdELGdCQUFnQixFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUEsNkNBQTBCLEVBQUMsS0FBSyxDQUFDLEVBQUU7S0FDcEUsQ0FBQyxDQUFDO0lBRUgsTUFBTSxVQUFVLEdBQW9CLEVBQUUsQ0FBQztJQUN2QyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNuQyxpQ0FBaUM7UUFDakMsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDVCxDQUFDO1FBQ0QsOERBQThEO1FBQzlELElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM1QixPQUFPO1FBQ1QsQ0FBQztRQUNELHdGQUF3RjtRQUN4RixpREFBaUQ7UUFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLFlBQVksTUFBTSxDQUFDLE9BQU8sbUNBQW1DLENBQUMsQ0FBQztRQUM1RixDQUFDO1FBQ0Qsc0ZBQXNGO1FBQ3RGLGtFQUFrRTtRQUNsRSxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDO1FBQ2pILFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDZCxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDcEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1lBQ3ZCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUNyQixjQUFjO1lBQ2QsV0FBVyxFQUFFLE1BQU0sQ0FBQyxVQUFVO2dCQUM1QixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUMzRCxDQUFDLENBQUMsY0FBYztvQkFDaEIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRTtvQkFDckQsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTtTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILFNBQWdCLDZCQUE2QixDQUMzQyxJQUFtQixFQUNuQixVQUE2QztJQUU3QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7UUFDaEQsSUFBSSxTQUFTLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BDLHFDQUFxQztZQUNyQyxPQUFPLGFBQXNCLENBQUM7UUFDaEMsQ0FBQztRQUNELHNGQUFzRjtRQUN0Rix1RkFBdUY7UUFDdkYsSUFBSSx3QkFBWSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNqRSxPQUFPLGFBQXNCLENBQUM7UUFDaEMsQ0FBQztRQUNELHNGQUFzRjtRQUN0RixtRkFBbUY7UUFDbkYsc0JBQXNCO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLDZCQUFpQixDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JGLElBQUksT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDL0IsT0FBTyxVQUFtQixDQUFDO1FBQzdCLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsU0FBUyxDQUFDLE9BQU8sNkNBQTZDLENBQUMsQ0FBQztJQUM3RixDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEQsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1RCxJQUFJLFdBQVcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUNELE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZml4ZWRTY3JpcHRXYWxsZXQsIHpjYXNoQWRkcmVzcyB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuaW1wb3J0IHR5cGUgeyBVbmlmaWVkUmVjaXBpZW50UHJlZmVyZW5jZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgZ2V0UmVwbGF5UHJvdGVjdGlvblB1YmtleXMgfSBmcm9tICcuLi8uLi90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9yZXBsYXlQcm90ZWN0aW9uJztcbmltcG9ydCB0eXBlIHsgQWRkcmVzc0NvZGVjIH0gZnJvbSAnLi4vLi4vdHJhbnNhY3Rpb24vcmVjaXBpZW50JztcblxuaW1wb3J0IHsgWmNhc2hDb2luTmFtZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEhvdyBhIHJlY2lwaWVudCBwYXJzZWQgZnJvbSBhIFpjYXNoIFBTQlQgaXMgc3BlbnQuXG4gKlxuICogVGhlIGRlY29kZS1zaWRlIGNvdW50ZXJwYXJ0IG9mIHV0eG8tY29yZSdzIGBidWlsZFRyYW5zYWN0aW9uL3pjYXNoLnRzYCBgWmNhc2hEZXN0aW5hdGlvbmAgb25cbiAqIHRoZSBidWlsZCBzaWRlOiBhIHNoaWVsZGVkIHJlY2lwaWVudCBpcyBhbiBPcmNoYXJkL0lyb253b29kIG91dHB1dCBzdG9yZWQgaW4gdGhlIHY2IChJcm9ud29vZClcbiAqIFBTQlQncyBvcmNoYXJkIFBDWlQsIGFuZCBldmVyeXRoaW5nIGVsc2UgaXMgYW4gb3JkaW5hcnkgdHJhbnNwYXJlbnQgb3V0cHV0LiBBIHRyYW5zcGFyZW50XG4gKiBvdXRwdXQgcmVzb2x2ZWQgZnJvbSBhIFVuaWZpZWQgQWRkcmVzcyBjYXJyaWVzIHRoYXQgb3JpZ2luYWwgVUEgKGB6Y2FzaFVuaWZpZWRUcmFuc3BhcmVudGApLCBhXG4gKiBwbGFpbiBhZGRyZXNzIGRvZXMgbm90LlxuICovXG5leHBvcnQgdHlwZSBQc2J0UmVjaXBpZW50RGVzdGluYXRpb24gPVxuICB8IHtcbiAgICAgIGtpbmQ6ICd6Y2FzaFNoaWVsZGVkJztcbiAgICAgIC8qKlxuICAgICAgICogVGhlIFVuaWZpZWQgQWRkcmVzcyB0aGUgb3V0cHV0IHdhcyBhZGRyZXNzZWQgdG8g4oCUIHRoZSBvcmlnaW5hbCBtdWx0aS1yZWNlaXZlciBVQSB0aGVcbiAgICAgICAqIGNsaWVudCBwYXNzZWQgd2hlbiB0aGUgUFNCVCBzdG9yZXMgb25lIHZlcmJhdGltLCBvdGhlcndpc2UgYSByZS1lbmNvZGVkIHNpbmdsZS1yZWNlaXZlclxuICAgICAgICogT3JjaGFyZCBVQS5cbiAgICAgICAqL1xuICAgICAgdW5pZmllZEFkZHJlc3M6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAga2luZDogJ3pjYXNoVW5pZmllZFRyYW5zcGFyZW50JztcbiAgICAgIC8qKiBUaGUgb3JpZ2luYWwgVW5pZmllZCBBZGRyZXNzIHRoZSB0cmFuc3BhcmVudCByZWNlaXZlciB3YXMgcmVzb2x2ZWQgZnJvbS4gKi9cbiAgICAgIHVuaWZpZWRBZGRyZXNzOiBzdHJpbmc7XG4gICAgfVxuICB8IHsga2luZDogJ3RyYW5zcGFyZW50JyB9O1xuXG4vKiogQSByZWNpcGllbnQgcmVzb2x2ZWQgZnJvbSBhIGRlY29kZWQgWmNhc2ggUFNCVCdzIGV4dGVybmFsIG91dHB1dHMuICovXG5leHBvcnQgaW50ZXJmYWNlIFBzYnRSZWNpcGllbnQge1xuICAvKiogQW1vdW50IGluIHNhdG9zaGlzLiAqL1xuICBhbW91bnQ6IGJpZ2ludDtcbiAgLyoqXG4gICAqIFRoZSByZWNpcGllbnQgYWRkcmVzcy4gRm9yIGEgc2hpZWxkZWQgb3V0cHV0IHRoaXMgaXMgdGhlIFVuaWZpZWQgQWRkcmVzcyB0aGUgb3V0cHV0IHdhc1xuICAgKiBhZGRyZXNzZWQgdG8g4oCUIHRoZSBvcmlnaW5hbCBtdWx0aS1yZWNlaXZlciBVQSB3aGVuIHRoZSBQU0JUIHN0b3JlcyBvbmUgdmVyYmF0aW0sIG90aGVyd2lzZSBhXG4gICAqIHJlLWVuY29kZWQgc2luZ2xlLXJlY2VpdmVyIE9yY2hhcmQgVUEuIEZvciBhIHRyYW5zcGFyZW50IG91dHB1dCBpdCBpcyB0aGUgb3JpZ2luYWwgVW5pZmllZFxuICAgKiBBZGRyZXNzIHdoZW4gb25lIHdhcyBzdG9yZWQsIGVsc2UgdGhlIGRlY29kZWQgdHJhbnNwYXJlbnQgYWRkcmVzcy5cbiAgICovXG4gIGFkZHJlc3M6IHN0cmluZztcbiAgLyoqXG4gICAqIFJhdyByZWNlaXZlciBieXRlczogdGhlIDQzLWJ5dGUgT3JjaGFyZC9Jcm9ud29vZCByZWNlaXZlciBmb3IgYSBzaGllbGRlZCBvdXRwdXQsIHRoZVxuICAgKiBzY3JpcHRQdWJLZXkgZm9yIGEgdHJhbnNwYXJlbnQgb25lLlxuICAgKi9cbiAgc2NyaXB0OiBVaW50OEFycmF5O1xuICAvKipcbiAgICogVGhlIG9yaWdpbmFsIFVuaWZpZWQgQWRkcmVzcyB0aGUgY2xpZW50IHN1cHBsaWVkIGZvciB0aGlzIHJlY2lwaWVudCwgd2hlbiB0aGUgUFNCVCBzdG9yZXNcbiAgICogb25lOiB0aGUgdjYgKElyb253b29kKSBQQ1pUIGZvciBhIHNoaWVsZGVkIG91dHB1dCwgdGhlIHRyYW5zcGFyZW50LW91dHB1dCBwcm9wcmlldGFyeVxuICAgKiBrZXktdmFsdWUgbWFwIGZvciBhIHY0IHRyYW5zcGFyZW50IG91dHB1dC4gYHVuZGVmaW5lZGAgd2hlbiB0aGUgcmVjaXBpZW50IHdhcyBidWlsdCBmcm9tIGFcbiAgICogcGxhaW4gYWRkcmVzcy5cbiAgICovXG4gIHVuaWZpZWRBZGRyZXNzPzogc3RyaW5nO1xuICBkZXN0aW5hdGlvbjogUHNidFJlY2lwaWVudERlc3RpbmF0aW9uO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIHJlY2lwaWVudCBsaXN0IG9mIGEgZGVjb2RlZCBaY2FzaCBQU0JUICh2NCBTYXBsaW5nLXNoYXBlZCBvciB2NiBJcm9ud29vZCkuXG4gKlxuICogTWlycm9ycyB0aGUgcmVjaXBpZW50IHJlc29sdXRpb24gb2Ygd2FsbGV0LXBsYXRmb3JtJ3MgdXR4by1jb3JlIGBidWlsZFRyYW5zYWN0aW9uYCBpbiB0aGVcbiAqIGRlY29kZSBkaXJlY3Rpb246IGV2ZXJ5IG5vbi13YWxsZXQgb3V0cHV0IHdpdGggYSByZXNvbHZhYmxlIGFkZHJlc3MgaXMgYSByZWNpcGllbnQuIEFcbiAqIHNoaWVsZGVkIG91dHB1dCBwYXJzZXMgd2l0aCBgaXNTaGllbGRlZDogdHJ1ZWAsIGl0cyBgc2NyaXB0YCBiZWluZyB0aGUgcmF3IDQzLWJ5dGUgcmVjZWl2ZXI7XG4gKiB3aGVuIHRoZSBidWlsZCBzdG9yZWQgdGhlIGNsaWVudCdzIG9yaWdpbmFsIFVuaWZpZWQgQWRkcmVzcyAodGhlIHY2IFBDWlQgZm9yIHNoaWVsZGVkXG4gKiBvdXRwdXRzLCB0aGUgdHJhbnNwYXJlbnQtb3V0cHV0IHByb3ByaWV0YXJ5IGtleS12YWx1ZSBtYXAgZm9yIHY0KSwgYm90aCB0aGUgcGFyc2VkIGFkZHJlc3NcbiAqIGFuZCBgdW5pZmllZEFkZHJlc3NgIHJlcG9ydCBpdCB2ZXJiYXRpbS4gT3BhcXVlIG91dHB1dHMgd2l0aCBubyBhZGRyZXNzIChlLmcuIE9QX1JFVFVSTikgYXJlXG4gKiBza2lwcGVkLCBhcyB0aGV5IGNhcnJ5IG5vIHJlY2lwaWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQc2J0UmVjaXBpZW50cyhcbiAgcHNidDogZml4ZWRTY3JpcHRXYWxsZXQuWmNhc2hCaXRHb1BzYnQsXG4gIHdhbGxldEtleXM6IGZpeGVkU2NyaXB0V2FsbGV0LlJvb3RXYWxsZXRLZXlzLFxuICBhZGRyZXNzQ29kZWM6IEFkZHJlc3NDb2RlY1xuKTogUHNidFJlY2lwaWVudFtdIHtcbiAgY29uc3QgcGFyc2VkID0gcHNidC5wYXJzZVRyYW5zYWN0aW9uV2l0aFdhbGxldEtleXMod2FsbGV0S2V5cywge1xuICAgIHJlcGxheVByb3RlY3Rpb246IHsgcHVibGljS2V5czogZ2V0UmVwbGF5UHJvdGVjdGlvblB1YmtleXMoJ3plYycpIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHJlY2lwaWVudHM6IFBzYnRSZWNpcGllbnRbXSA9IFtdO1xuICBwYXJzZWQub3V0cHV0cy5mb3JFYWNoKChvdXRwdXQsIGkpID0+IHtcbiAgICAvLyBXYWxsZXQtb3duZWQgKGNoYW5nZSkgb3V0cHV0cy5cbiAgICBpZiAob3V0cHV0LnNjcmlwdElkICE9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIE9wYXF1ZSBvdXRwdXRzIChlLmcuIE9QX1JFVFVSTikgY2Fycnkgbm8gcmVjaXBpZW50IGFkZHJlc3MuXG4gICAgaWYgKG91dHB1dC5hZGRyZXNzID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFRoZSByYXcgcGFyc2VkIHJlY2VpdmVyL3NjcmlwdCBpcyBhdXRob3JpdGF0aXZlOyBwcm9wcmlldGFyeSBVbmlmaWVkIEFkZHJlc3MgbWV0YWRhdGFcbiAgICAvLyBtdXN0IG1hdGNoIGl0IGJlZm9yZSBpdCBpcyBleHBvc2VkIHRvIGNhbGxlcnMuXG4gICAgaWYgKCFhZGRyZXNzQ29kZWMuaXNNYXRjaGluZ1NjcmlwdChvdXRwdXQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE91dHB1dCAke2l9IGFkZHJlc3MgJHtvdXRwdXQuYWRkcmVzc30gZG9lcyBub3QgbWF0Y2ggaXRzIHJhdyByZWNpcGllbnRgKTtcbiAgICB9XG4gICAgLy8gVGhlIG9yaWdpbmFsIGNsaWVudC1wYXNzZWQgVW5pZmllZCBBZGRyZXNzLCBzdG9yZWQgdmVyYmF0aW0gaW4gdGhlIFBTQlQncyBrZXktdmFsdWVcbiAgICAvLyB0cmFuc3BhcmVudC1vdXRwdXQgcHJvcHJpZXRhcnkgbWFwIGZvciBhIHY0IHRyYW5zcGFyZW50IG91dHB1dC5cbiAgICBjb25zdCB1bmlmaWVkQWRkcmVzcyA9IG91dHB1dC5pc1NoaWVsZGVkID8gb3V0cHV0LmFkZHJlc3MgOiBwc2J0LnRyYW5zcGFyZW50T3V0cHV0VW5pZmllZEFkZHJlc3MoaSkgPz8gdW5kZWZpbmVkO1xuICAgIHJlY2lwaWVudHMucHVzaCh7XG4gICAgICBhbW91bnQ6IG91dHB1dC52YWx1ZSxcbiAgICAgIGFkZHJlc3M6IG91dHB1dC5hZGRyZXNzLFxuICAgICAgc2NyaXB0OiBvdXRwdXQuc2NyaXB0LFxuICAgICAgdW5pZmllZEFkZHJlc3MsXG4gICAgICBkZXN0aW5hdGlvbjogb3V0cHV0LmlzU2hpZWxkZWRcbiAgICAgICAgPyB7IGtpbmQ6ICd6Y2FzaFNoaWVsZGVkJywgdW5pZmllZEFkZHJlc3M6IG91dHB1dC5hZGRyZXNzIH1cbiAgICAgICAgOiB1bmlmaWVkQWRkcmVzc1xuICAgICAgICA/IHsga2luZDogJ3pjYXNoVW5pZmllZFRyYW5zcGFyZW50JywgdW5pZmllZEFkZHJlc3MgfVxuICAgICAgICA6IHsga2luZDogJ3RyYW5zcGFyZW50JyB9LFxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHJlY2lwaWVudHM7XG59XG5cbi8qKlxuICogSW5mZXIgdGhlIFVuaWZpZWQtQWRkcmVzcyByZWNpcGllbnQgcHJlZmVyZW5jZSBmb3IgYSBaY2FzaCB0cmFuc2FjdGlvbiB3aGVuIHRoZSBjYWxsZXIgZGlkXG4gKiBub3QgcGFzcyBvbmUg4oCUIHRoZSBjb3VudGVycGFydCBvZiB3YWxsZXQtcGxhdGZvcm0ncyB1dHhvLWNvcmUgYGJ1aWxkVHJhbnNhY3Rpb25gXG4gKiBgY2xhc3NpZnlSZWNpcGllbnRTaGllbGRlZG5lc3NgLlxuICpcbiAqIEEgcmVjaXBpZW50IHRoYXQgcmVzb2x2ZXMgdG8gYSB0cmFuc3BhcmVudCBvdXRwdXQg4oCUIGFuIG9yZGluYXJ5IHRyYW5zcGFyZW50IGFkZHJlc3MsIG9yIGFcbiAqIFVuaWZpZWQgQWRkcmVzcyBjYXJyeWluZyBhIHRyYW5zcGFyZW50IHJlY2VpdmVyIOKAlCBpcyBjbGFzc2lmaWVkIGAndHJhbnNwYXJlbnQnYDsgYSBVbmlmaWVkXG4gKiBBZGRyZXNzIGNhcnJ5aW5nIG9ubHkgYW4gT3JjaGFyZC9Jcm9ud29vZCByZWNlaXZlciBpcyBjbGFzc2lmaWVkIGAnc2hpZWxkZWQnYC4gQSBtaXggb2ZcbiAqIHNoaWVsZGVkIGFuZCB0cmFuc3BhcmVudCByZWNpcGllbnRzIGlzIHJlamVjdGVkLiBBbiBhZGRyZXNzIHRoYXQgaXMgbmVpdGhlciBhIHRyYW5zcGFyZW50XG4gKiBhZGRyZXNzIG5vciBhIFVuaWZpZWQgQWRkcmVzcyBwcm9wYWdhdGVzIHRoZSBVbmlmaWVkLUFkZHJlc3MgcGFyc2UgZXJyb3Ig4oCUIGl0IGlzIG5vdFxuICogc2lsZW50bHkgZGVmYXVsdGVkIHRvIGAndHJhbnNwYXJlbnQnYC5cbiAqXG4gKiBAcmV0dXJucyBgJ3NoaWVsZGVkJ2Agd2hlbiBldmVyeSByZWNpcGllbnQgcmVzb2x2ZXMgc2hpZWxkZWQsIGB1bmRlZmluZWRgIHdoZW4gZXZlcnlcbiAqICAgcmVjaXBpZW50IHJlc29sdmVzIHRyYW5zcGFyZW50ICh0aGUgYnVpbGQncyBkZWZhdWx0KS4gVGhlIGAndHJhbnNwYXJlbnQnYCBhcm0gb2YgdGhlXG4gKiAgIHJldHVybiB0eXBlIGV4aXN0cyBzbyBjYWxsZXJzIGNhbiBwYXNzIHRoZSBleHBsaWNpdCBwcmVmZXJlbmNlIHRocm91Z2ggdW5jaGFuZ2VkOyB0aGlzXG4gKiAgIGZ1bmN0aW9uIGl0c2VsZiBuZXZlciByZXR1cm5zIGAndHJhbnNwYXJlbnQnYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFVuaWZpZWRSZWNpcGllbnRQcmVmZXJlbmNlKFxuICBuYW1lOiBaY2FzaENvaW5OYW1lLFxuICByZWNpcGllbnRzOiB7IGFkZHJlc3M6IHN0cmluZyB8IHVuZGVmaW5lZCB9W11cbik6IFVuaWZpZWRSZWNpcGllbnRQcmVmZXJlbmNlIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc2hpZWxkZWRuZXNzID0gcmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCkgPT4ge1xuICAgIGlmIChyZWNpcGllbnQuYWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBSYXcgc2NyaXB0IGluaGVyZW50bHkgdHJhbnNwYXJlbnQuXG4gICAgICByZXR1cm4gJ3RyYW5zcGFyZW50JyBhcyBjb25zdDtcbiAgICB9XG4gICAgLy8gT3JkaW5hcnkgdHJhbnNwYXJlbnQgYWRkcmVzcywgb3IgYSBVbmlmaWVkIEFkZHJlc3MgY2FycnlpbmcgYSB0cmFuc3BhcmVudCByZWNlaXZlcjpcbiAgICAvLyByZXNvbHZlcyB0cmFuc3BhcmVudGx5IGVpdGhlciB3YXkgKHRoZSBidWlsZCdzIGRlZmF1bHQgd2hlbiBubyBwcmVmZXJlbmNlIGlzIGdpdmVuKS5cbiAgICBpZiAoemNhc2hBZGRyZXNzLmhhc1RyYW5zcGFyZW50UmVjZWl2ZXIocmVjaXBpZW50LmFkZHJlc3MsIG5hbWUpKSB7XG4gICAgICByZXR1cm4gJ3RyYW5zcGFyZW50JyBhcyBjb25zdDtcbiAgICB9XG4gICAgLy8gQSBzaGllbGRlZCAoT3JjaGFyZC9Jcm9ud29vZC1vbmx5KSBVbmlmaWVkIEFkZHJlc3MgaXMgdGhlIG9ubHkgcmVtYWluaW5nIHJlc29sdmFibGVcbiAgICAvLyBmb3JtLiBBbiBhZGRyZXNzIHRoYXQgaXMgbm9uZSBvZiB0aGUgYWJvdmUgcHJvcGFnYXRlcyB0aGUgcGFyc2UgZXJyb3IgaW5zdGVhZCBvZlxuICAgIC8vIGFzc3VtaW5nIGEgZGVmYXVsdC5cbiAgICBjb25zdCB1bmlmaWVkID0gZml4ZWRTY3JpcHRXYWxsZXQuWmNhc2hVbmlmaWVkQWRkcmVzcy5wYXJzZShyZWNpcGllbnQuYWRkcmVzcywgbmFtZSk7XG4gICAgaWYgKHVuaWZpZWQuaGFzT3JjaGFyZFJlY2VpdmVyKSB7XG4gICAgICByZXR1cm4gJ3NoaWVsZGVkJyBhcyBjb25zdDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBhZGRyZXNzICR7cmVjaXBpZW50LmFkZHJlc3N9IGNhcnJpZXMgbm8gdHJhbnNwYXJlbnQgb3IgT3JjaGFyZCByZWNlaXZlcmApO1xuICB9KTtcbiAgY29uc3QgaGFzU2hpZWxkZWQgPSBzaGllbGRlZG5lc3MuaW5jbHVkZXMoJ3NoaWVsZGVkJyk7XG4gIGNvbnN0IGhhc1RyYW5zcGFyZW50ID0gc2hpZWxkZWRuZXNzLmluY2x1ZGVzKCd0cmFuc3BhcmVudCcpO1xuICBpZiAoaGFzU2hpZWxkZWQgJiYgaGFzVHJhbnNwYXJlbnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01peGVkIHNoaWVsZGVkIGFuZCB0cmFuc3BhcmVudCByZWNpcGllbnRzIGFyZSBub3Qgc3VwcG9ydGVkJyk7XG4gIH1cbiAgcmV0dXJuIGhhc1NoaWVsZGVkID8gJ3NoaWVsZGVkJyA6IHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -0,0 +1,36 @@
1
+ import type { UtxoCoinName } from '../../names';
2
+ /**
3
+ * Platform-reported shielded address details (wallet-platform
4
+ * `coinSpecific.shielded` for Zcash Orchard/Ironwood addresses).
5
+ */
6
+ export interface ShieldedAddressDetails {
7
+ /** Receiver type, e.g. 'ironwood'. */
8
+ type?: string;
9
+ /** 11-byte hex diversifier. */
10
+ diversifier?: string;
11
+ /** 32-byte hex `pk_d`. */
12
+ pkD?: string;
13
+ /** Wallet address index the diversifier was derived from. */
14
+ diversifierIndex?: number;
15
+ }
16
+ /**
17
+ * Verify a Zcash shielded (Orchard/Ironwood) wallet address returned by the platform.
18
+ *
19
+ * Shielded custodial wallets use RedPallas threshold keys whose keychains carry no
20
+ * secp256k1 xpubs, so the address cannot be locally rederived the way fixed-script
21
+ * (transparent) addresses are (`assertFixedScriptWalletAddress` would throw reading
22
+ * `pub`). Instead, this checks the address is a well-formed Orchard Unified Address
23
+ * whose 43-byte receiver matches the diversifier and `pk_d` the platform reports in
24
+ * `coinSpecific.shielded` — i.e. the UA really encodes the reported shielded receiver.
25
+ *
26
+ * @throws {UnexpectedAddressError} if the address is not a valid Orchard UA, the
27
+ * platform-reported data is missing/malformed, or the UA's Orchard receiver does
28
+ * not match the reported diversifier/`pk_d`
29
+ */
30
+ export declare function assertShieldedWalletAddress(coinName: UtxoCoinName, params: {
31
+ address: string;
32
+ coinSpecific?: {
33
+ shielded?: ShieldedAddressDetails;
34
+ };
35
+ }): void;
36
+ //# sourceMappingURL=shieldedAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shieldedAddress.d.ts","sourceRoot":"","sources":["../../../../../src/impl/zec/shieldedAddress.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE;IACN,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,sBAAsB,CAAA;KAAE,CAAC;CACtD,GACA,IAAI,CAoCN"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertShieldedWalletAddress = assertShieldedWalletAddress;
4
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
5
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
6
+ /**
7
+ * Verify a Zcash shielded (Orchard/Ironwood) wallet address returned by the platform.
8
+ *
9
+ * Shielded custodial wallets use RedPallas threshold keys whose keychains carry no
10
+ * secp256k1 xpubs, so the address cannot be locally rederived the way fixed-script
11
+ * (transparent) addresses are (`assertFixedScriptWalletAddress` would throw reading
12
+ * `pub`). Instead, this checks the address is a well-formed Orchard Unified Address
13
+ * whose 43-byte receiver matches the diversifier and `pk_d` the platform reports in
14
+ * `coinSpecific.shielded` — i.e. the UA really encodes the reported shielded receiver.
15
+ *
16
+ * @throws {UnexpectedAddressError} if the address is not a valid Orchard UA, the
17
+ * platform-reported data is missing/malformed, or the UA's Orchard receiver does
18
+ * not match the reported diversifier/`pk_d`
19
+ */
20
+ function assertShieldedWalletAddress(coinName, params) {
21
+ const shielded = params.coinSpecific?.shielded;
22
+ if (!shielded?.diversifier || !shielded.pkD) {
23
+ throw new sdk_core_1.UnexpectedAddressError('address validation failure: shielded address missing diversifier or pkD');
24
+ }
25
+ const diversifier = Buffer.from(shielded.diversifier, 'hex');
26
+ const pkD = Buffer.from(shielded.pkD, 'hex');
27
+ if (diversifier.length !== 11) {
28
+ throw new sdk_core_1.UnexpectedAddressError(`address validation failure: invalid diversifier length ${diversifier.length}`);
29
+ }
30
+ if (pkD.length !== 32) {
31
+ throw new sdk_core_1.UnexpectedAddressError(`address validation failure: invalid pkD length ${pkD.length}`);
32
+ }
33
+ // Only zec/tzec produce shielded addresses, so the name is always a valid ZcashNetworkName.
34
+ const network = coinName;
35
+ let ua;
36
+ try {
37
+ ua = wasm_utxo_1.fixedScriptWallet.ZcashUnifiedAddress.parse(params.address, network);
38
+ }
39
+ catch (e) {
40
+ throw new sdk_core_1.UnexpectedAddressError(`address validation failure: not a valid unified address: ${params.address}`);
41
+ }
42
+ const orchard = ua.orchardReceiver;
43
+ if (!orchard || orchard.length !== 43) {
44
+ throw new sdk_core_1.UnexpectedAddressError('address validation failure: unified address carries no Orchard receiver');
45
+ }
46
+ const expectedReceiver = Buffer.concat([diversifier, pkD]);
47
+ if (!Buffer.from(orchard).equals(expectedReceiver)) {
48
+ throw new sdk_core_1.UnexpectedAddressError('address validation failure: unified address Orchard receiver does not match shielded coinSpecific');
49
+ }
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpZWxkZWRBZGRyZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2ltcGwvemVjL3NoaWVsZGVkQWRkcmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWtDQSxrRUEwQ0M7QUE1RUQsZ0RBQXFEO0FBQ3JELG1EQUE4RDtBQW1COUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILFNBQWdCLDJCQUEyQixDQUN6QyxRQUFzQixFQUN0QixNQUdDO0lBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUM7SUFDL0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDNUMsTUFBTSxJQUFJLGlDQUFzQixDQUFDLHlFQUF5RSxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3RCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0MsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxpQ0FBc0IsQ0FBQywwREFBMEQsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbkgsQ0FBQztJQUNELElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksaUNBQXNCLENBQUMsa0RBQWtELEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFRCw0RkFBNEY7SUFDNUYsTUFBTSxPQUFPLEdBQUcsUUFBOEMsQ0FBQztJQUUvRCxJQUFJLEVBQXlDLENBQUM7SUFDOUMsSUFBSSxDQUFDO1FBQ0gsRUFBRSxHQUFHLDZCQUFpQixDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLGlDQUFzQixDQUFDLDREQUE0RCxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztJQUNuQyxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLGlDQUFzQixDQUFDLHlFQUF5RSxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDbkQsTUFBTSxJQUFJLGlDQUFzQixDQUM5QixtR0FBbUcsQ0FDcEcsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZml4ZWRTY3JpcHRXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcbmltcG9ydCB7IFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmltcG9ydCB0eXBlIHsgVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vLi4vbmFtZXMnO1xuXG4vKipcbiAqIFBsYXRmb3JtLXJlcG9ydGVkIHNoaWVsZGVkIGFkZHJlc3MgZGV0YWlscyAod2FsbGV0LXBsYXRmb3JtXG4gKiBgY29pblNwZWNpZmljLnNoaWVsZGVkYCBmb3IgWmNhc2ggT3JjaGFyZC9Jcm9ud29vZCBhZGRyZXNzZXMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNoaWVsZGVkQWRkcmVzc0RldGFpbHMge1xuICAvKiogUmVjZWl2ZXIgdHlwZSwgZS5nLiAnaXJvbndvb2QnLiAqL1xuICB0eXBlPzogc3RyaW5nO1xuICAvKiogMTEtYnl0ZSBoZXggZGl2ZXJzaWZpZXIuICovXG4gIGRpdmVyc2lmaWVyPzogc3RyaW5nO1xuICAvKiogMzItYnl0ZSBoZXggYHBrX2RgLiAqL1xuICBwa0Q/OiBzdHJpbmc7XG4gIC8qKiBXYWxsZXQgYWRkcmVzcyBpbmRleCB0aGUgZGl2ZXJzaWZpZXIgd2FzIGRlcml2ZWQgZnJvbS4gKi9cbiAgZGl2ZXJzaWZpZXJJbmRleD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBWZXJpZnkgYSBaY2FzaCBzaGllbGRlZCAoT3JjaGFyZC9Jcm9ud29vZCkgd2FsbGV0IGFkZHJlc3MgcmV0dXJuZWQgYnkgdGhlIHBsYXRmb3JtLlxuICpcbiAqIFNoaWVsZGVkIGN1c3RvZGlhbCB3YWxsZXRzIHVzZSBSZWRQYWxsYXMgdGhyZXNob2xkIGtleXMgd2hvc2Uga2V5Y2hhaW5zIGNhcnJ5IG5vXG4gKiBzZWNwMjU2azEgeHB1YnMsIHNvIHRoZSBhZGRyZXNzIGNhbm5vdCBiZSBsb2NhbGx5IHJlZGVyaXZlZCB0aGUgd2F5IGZpeGVkLXNjcmlwdFxuICogKHRyYW5zcGFyZW50KSBhZGRyZXNzZXMgYXJlIChgYXNzZXJ0Rml4ZWRTY3JpcHRXYWxsZXRBZGRyZXNzYCB3b3VsZCB0aHJvdyByZWFkaW5nXG4gKiBgcHViYCkuIEluc3RlYWQsIHRoaXMgY2hlY2tzIHRoZSBhZGRyZXNzIGlzIGEgd2VsbC1mb3JtZWQgT3JjaGFyZCBVbmlmaWVkIEFkZHJlc3NcbiAqIHdob3NlIDQzLWJ5dGUgcmVjZWl2ZXIgbWF0Y2hlcyB0aGUgZGl2ZXJzaWZpZXIgYW5kIGBwa19kYCB0aGUgcGxhdGZvcm0gcmVwb3J0cyBpblxuICogYGNvaW5TcGVjaWZpYy5zaGllbGRlZGAg4oCUIGkuZS4gdGhlIFVBIHJlYWxseSBlbmNvZGVzIHRoZSByZXBvcnRlZCBzaGllbGRlZCByZWNlaXZlci5cbiAqXG4gKiBAdGhyb3dzIHtVbmV4cGVjdGVkQWRkcmVzc0Vycm9yfSBpZiB0aGUgYWRkcmVzcyBpcyBub3QgYSB2YWxpZCBPcmNoYXJkIFVBLCB0aGVcbiAqICAgcGxhdGZvcm0tcmVwb3J0ZWQgZGF0YSBpcyBtaXNzaW5nL21hbGZvcm1lZCwgb3IgdGhlIFVBJ3MgT3JjaGFyZCByZWNlaXZlciBkb2VzXG4gKiAgIG5vdCBtYXRjaCB0aGUgcmVwb3J0ZWQgZGl2ZXJzaWZpZXIvYHBrX2RgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRTaGllbGRlZFdhbGxldEFkZHJlc3MoXG4gIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUsXG4gIHBhcmFtczoge1xuICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICBjb2luU3BlY2lmaWM/OiB7IHNoaWVsZGVkPzogU2hpZWxkZWRBZGRyZXNzRGV0YWlscyB9O1xuICB9XG4pOiB2b2lkIHtcbiAgY29uc3Qgc2hpZWxkZWQgPSBwYXJhbXMuY29pblNwZWNpZmljPy5zaGllbGRlZDtcbiAgaWYgKCFzaGllbGRlZD8uZGl2ZXJzaWZpZXIgfHwgIXNoaWVsZGVkLnBrRCkge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKCdhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogc2hpZWxkZWQgYWRkcmVzcyBtaXNzaW5nIGRpdmVyc2lmaWVyIG9yIHBrRCcpO1xuICB9XG5cbiAgY29uc3QgZGl2ZXJzaWZpZXIgPSBCdWZmZXIuZnJvbShzaGllbGRlZC5kaXZlcnNpZmllciwgJ2hleCcpO1xuICBjb25zdCBwa0QgPSBCdWZmZXIuZnJvbShzaGllbGRlZC5wa0QsICdoZXgnKTtcbiAgaWYgKGRpdmVyc2lmaWVyLmxlbmd0aCAhPT0gMTEpIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEFkZHJlc3NFcnJvcihgYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmU6IGludmFsaWQgZGl2ZXJzaWZpZXIgbGVuZ3RoICR7ZGl2ZXJzaWZpZXIubGVuZ3RofWApO1xuICB9XG4gIGlmIChwa0QubGVuZ3RoICE9PSAzMikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogaW52YWxpZCBwa0QgbGVuZ3RoICR7cGtELmxlbmd0aH1gKTtcbiAgfVxuXG4gIC8vIE9ubHkgemVjL3R6ZWMgcHJvZHVjZSBzaGllbGRlZCBhZGRyZXNzZXMsIHNvIHRoZSBuYW1lIGlzIGFsd2F5cyBhIHZhbGlkIFpjYXNoTmV0d29ya05hbWUuXG4gIGNvbnN0IG5ldHdvcmsgPSBjb2luTmFtZSBhcyBmaXhlZFNjcmlwdFdhbGxldC5aY2FzaE5ldHdvcmtOYW1lO1xuXG4gIGxldCB1YTogZml4ZWRTY3JpcHRXYWxsZXQuWmNhc2hVbmlmaWVkQWRkcmVzcztcbiAgdHJ5IHtcbiAgICB1YSA9IGZpeGVkU2NyaXB0V2FsbGV0LlpjYXNoVW5pZmllZEFkZHJlc3MucGFyc2UocGFyYW1zLmFkZHJlc3MsIG5ldHdvcmspO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IoYGFkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlOiBub3QgYSB2YWxpZCB1bmlmaWVkIGFkZHJlc3M6ICR7cGFyYW1zLmFkZHJlc3N9YCk7XG4gIH1cblxuICBjb25zdCBvcmNoYXJkID0gdWEub3JjaGFyZFJlY2VpdmVyO1xuICBpZiAoIW9yY2hhcmQgfHwgb3JjaGFyZC5sZW5ndGggIT09IDQzKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IoJ2FkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlOiB1bmlmaWVkIGFkZHJlc3MgY2FycmllcyBubyBPcmNoYXJkIHJlY2VpdmVyJyk7XG4gIH1cblxuICBjb25zdCBleHBlY3RlZFJlY2VpdmVyID0gQnVmZmVyLmNvbmNhdChbZGl2ZXJzaWZpZXIsIHBrRF0pO1xuICBpZiAoIUJ1ZmZlci5mcm9tKG9yY2hhcmQpLmVxdWFscyhleHBlY3RlZFJlY2VpdmVyKSkge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKFxuICAgICAgJ2FkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlOiB1bmlmaWVkIGFkZHJlc3MgT3JjaGFyZCByZWNlaXZlciBkb2VzIG5vdCBtYXRjaCBzaGllbGRlZCBjb2luU3BlY2lmaWMnXG4gICAgKTtcbiAgfVxufVxuIl19