@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,11 @@
1
+ import { Ltc } from './ltc';
2
+ export class Tltc extends Ltc {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.name = 'tltc';
6
+ }
7
+ static createInstance(bitgo) {
8
+ return new Tltc(bitgo);
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGx0Yy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBsL2x0Yy90bHRjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFNUIsTUFBTSxPQUFPLElBQUssU0FBUSxHQUFHO0lBQTdCOztRQUNXLFNBQUksR0FBaUIsTUFBTSxDQUFDO0lBS3ZDLENBQUM7SUFIQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCO1FBQ3BDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBVdHhvQ29pbk5hbWUgfSBmcm9tICcuLi8uLi9uYW1lcyc7XG5cbmltcG9ydCB7IEx0YyB9IGZyb20gJy4vbHRjJztcblxuZXhwb3J0IGNsYXNzIFRsdGMgZXh0ZW5kcyBMdGMge1xuICByZWFkb25seSBuYW1lOiBVdHhvQ29pbk5hbWUgPSAndGx0Yyc7XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UpOiBUbHRjIHtcbiAgICByZXR1cm4gbmV3IFRsdGMoYml0Z28pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './pearl';
2
+ export * from './tpearl';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/impl/pearl/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './pearl';
2
+ export * from './tpearl';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW1wbC9wZWFybC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGVhcmwnO1xuZXhwb3J0ICogZnJvbSAnLi90cGVhcmwnO1xuIl19
@@ -0,0 +1,17 @@
1
+ import { BitGoBase } from '@bitgo-beta/sdk-core';
2
+ import { AbstractUtxoCoin } from '../../abstractUtxoCoin';
3
+ import { UtxoCoinName } from '../../names';
4
+ /**
5
+ * Pearl (Duplex) is a taproot-only UTXO chain, a btcd fork using BIP-340 Schnorr
6
+ * signatures and BIP-341 script-path spending with a NUMS internal key.
7
+ *
8
+ * Unlike the other utxo coins, Pearl has no `@bitgo-beta/utxo-lib` network registration -
9
+ * it is served entirely through `@bitgo/wasm-utxo`. No script type override is needed
10
+ * here: `supportsAddressType` delegates to `fixedScriptWallet.supportsScriptType`,
11
+ * which already reports only p2tr and p2trMusig2 for this coin.
12
+ */
13
+ export declare class Pearl extends AbstractUtxoCoin {
14
+ readonly name: UtxoCoinName;
15
+ static createInstance(bitgo: BitGoBase): Pearl;
16
+ }
17
+ //# sourceMappingURL=pearl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pearl.d.ts","sourceRoot":"","sources":["../../../../src/impl/pearl/pearl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;;;GAQG;AACH,qBAAa,KAAM,SAAQ,gBAAgB;IACzC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAW;IAEtC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK;CAG/C"}
@@ -0,0 +1,20 @@
1
+ import { AbstractUtxoCoin } from '../../abstractUtxoCoin';
2
+ /**
3
+ * Pearl (Duplex) is a taproot-only UTXO chain, a btcd fork using BIP-340 Schnorr
4
+ * signatures and BIP-341 script-path spending with a NUMS internal key.
5
+ *
6
+ * Unlike the other utxo coins, Pearl has no `@bitgo-beta/utxo-lib` network registration -
7
+ * it is served entirely through `@bitgo/wasm-utxo`. No script type override is needed
8
+ * here: `supportsAddressType` delegates to `fixedScriptWallet.supportsScriptType`,
9
+ * which already reports only p2tr and p2trMusig2 for this coin.
10
+ */
11
+ export class Pearl extends AbstractUtxoCoin {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.name = 'pearl';
15
+ }
16
+ static createInstance(bitgo) {
17
+ return new Pearl(bitgo);
18
+ }
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVhcmwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW1wbC9wZWFybC9wZWFybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUcxRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxLQUFNLFNBQVEsZ0JBQWdCO0lBQTNDOztRQUNXLFNBQUksR0FBaUIsT0FBTyxDQUFDO0lBS3hDLENBQUM7SUFIQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCO1FBQ3BDLE9BQU8sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdFV0eG9Db2luIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgeyBVdHhvQ29pbk5hbWUgfSBmcm9tICcuLi8uLi9uYW1lcyc7XG5cbi8qKlxuICogUGVhcmwgKER1cGxleCkgaXMgYSB0YXByb290LW9ubHkgVVRYTyBjaGFpbiwgYSBidGNkIGZvcmsgdXNpbmcgQklQLTM0MCBTY2hub3JyXG4gKiBzaWduYXR1cmVzIGFuZCBCSVAtMzQxIHNjcmlwdC1wYXRoIHNwZW5kaW5nIHdpdGggYSBOVU1TIGludGVybmFsIGtleS5cbiAqXG4gKiBVbmxpa2UgdGhlIG90aGVyIHV0eG8gY29pbnMsIFBlYXJsIGhhcyBubyBgQGJpdGdvLWJldGEvdXR4by1saWJgIG5ldHdvcmsgcmVnaXN0cmF0aW9uIC1cbiAqIGl0IGlzIHNlcnZlZCBlbnRpcmVseSB0aHJvdWdoIGBAYml0Z28vd2FzbS11dHhvYC4gTm8gc2NyaXB0IHR5cGUgb3ZlcnJpZGUgaXMgbmVlZGVkXG4gKiBoZXJlOiBgc3VwcG9ydHNBZGRyZXNzVHlwZWAgZGVsZWdhdGVzIHRvIGBmaXhlZFNjcmlwdFdhbGxldC5zdXBwb3J0c1NjcmlwdFR5cGVgLFxuICogd2hpY2ggYWxyZWFkeSByZXBvcnRzIG9ubHkgcDJ0ciBhbmQgcDJ0ck11c2lnMiBmb3IgdGhpcyBjb2luLlxuICovXG5leHBvcnQgY2xhc3MgUGVhcmwgZXh0ZW5kcyBBYnN0cmFjdFV0eG9Db2luIHtcbiAgcmVhZG9ubHkgbmFtZTogVXR4b0NvaW5OYW1lID0gJ3BlYXJsJztcblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSk6IFBlYXJsIHtcbiAgICByZXR1cm4gbmV3IFBlYXJsKGJpdGdvKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,8 @@
1
+ import { BitGoBase } from '@bitgo-beta/sdk-core';
2
+ import { UtxoCoinName } from '../../names';
3
+ import { Pearl } from './pearl';
4
+ export declare class Tpearl extends Pearl {
5
+ readonly name: UtxoCoinName;
6
+ static createInstance(bitgo: BitGoBase): Tpearl;
7
+ }
8
+ //# sourceMappingURL=tpearl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tpearl.d.ts","sourceRoot":"","sources":["../../../../src/impl/pearl/tpearl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBAAa,MAAO,SAAQ,KAAK;IAC/B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAY;IAEvC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;CAGhD"}
@@ -0,0 +1,11 @@
1
+ import { Pearl } from './pearl';
2
+ export class Tpearl extends Pearl {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.name = 'tpearl';
6
+ }
7
+ static createInstance(bitgo) {
8
+ return new Tpearl(bitgo);
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHBlYXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGwvcGVhcmwvdHBlYXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFaEMsTUFBTSxPQUFPLE1BQU8sU0FBUSxLQUFLO0lBQWpDOztRQUNXLFNBQUksR0FBaUIsUUFBUSxDQUFDO0lBS3pDLENBQUM7SUFIQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCO1FBQ3BDLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBVdHhvQ29pbk5hbWUgfSBmcm9tICcuLi8uLi9uYW1lcyc7XG5cbmltcG9ydCB7IFBlYXJsIH0gZnJvbSAnLi9wZWFybCc7XG5cbmV4cG9ydCBjbGFzcyBUcGVhcmwgZXh0ZW5kcyBQZWFybCB7XG4gIHJlYWRvbmx5IG5hbWU6IFV0eG9Db2luTmFtZSA9ICd0cGVhcmwnO1xuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlKTogVHBlYXJsIHtcbiAgICByZXR1cm4gbmV3IFRwZWFybChiaXRnbyk7XG4gIH1cbn1cbiJdfQ==
@@ -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,150 @@
1
+ import { address as wasmAddress, fixedScriptWallet, isCoinName, zcashAddress } from '@bitgo/wasm-utxo';
2
+ import { AddressCodec } from '../../transaction/recipient';
3
+ /**
4
+ * Address codec for Zcash coins ('zec'/'tzec') that understands ZIP-316
5
+ * Unified Addresses in addition to ordinary transparent addresses.
6
+ *
7
+ * - `decode` resolves the bytes a recipient pays to (see its doc): by default
8
+ * the transparent scriptPubKey; with `unifiedRecipientPreference: 'shielded'`
9
+ * the raw Orchard/Ironwood receiver of a Unified Address.
10
+ * - `encode`/`toExtendedAddressFormat` are unchanged: scripts can only be
11
+ * written back out as transparent addresses.
12
+ * - `isValidAddress` accepts transparent addresses and Unified Addresses with
13
+ * a transparent or Orchard receiver.
14
+ */
15
+ export class ZecAddressCodec extends AddressCodec {
16
+ constructor(coinName, wasmName, unifiedRecipientPreference = 'transparent') {
17
+ super(coinName, wasmName);
18
+ this.zcashNetworkName = wasmName;
19
+ this.unifiedRecipientPreference = unifiedRecipientPreference;
20
+ }
21
+ /**
22
+ * Whether `address` is a valid Zcash address for this coin's network.
23
+ *
24
+ * Mirrors the pre-codec `Zec.isValidAddress` logic exactly: the address is
25
+ * valid iff it has a usable transparent receiver (an ordinary transparent
26
+ * address, or a UA carrying a transparent receiver) or an Orchard receiver
27
+ * (a UA carrying one).
28
+ */
29
+ isValidAddress(address) {
30
+ return (zcashAddress.hasTransparentReceiver(address, this.wasmName) ||
31
+ zcashAddress.hasOrchardReceiver(address, this.wasmName));
32
+ }
33
+ /**
34
+ * Resolve `address` to the bytes this codec's unified-recipient preference pays to.
35
+ *
36
+ * - `'transparent'` (default) resolves the scriptPubKey: an ordinary
37
+ * transparent address decodes to its own script, and a UA with a
38
+ * transparent receiver decodes to that receiver's script. A UA without a
39
+ * transparent receiver (e.g. Orchard-only) throws, since a shielded
40
+ * output has no script.
41
+ * - `'shielded'` resolves the raw Orchard (Ironwood) receiver — the
42
+ * 43-byte diversifier + `pk_d` — of a UA carrying one. Any other address
43
+ * (plain transparent, transparent-only UA, malformed, wrong network)
44
+ * throws, since it has no Orchard receiver to resolve.
45
+ */
46
+ decode(address) {
47
+ if (this.unifiedRecipientPreference !== 'shielded') {
48
+ return zcashAddress.toTransparentReceiverWithCoin(address, this.wasmName);
49
+ }
50
+ // The raw Orchard receiver exists only for a Unified Address carrying one; anything else
51
+ // (plain transparent address, transparent-only UA, malformed, wrong network) throws.
52
+ let unified;
53
+ try {
54
+ unified = fixedScriptWallet.ZcashUnifiedAddress.parse(address, this.zcashNetworkName);
55
+ }
56
+ catch {
57
+ throw new Error(`address ${address} is not a valid address for network ${this.zcashNetworkName}`);
58
+ }
59
+ if (!unified?.hasOrchardReceiver) {
60
+ throw new Error(`address ${address} has no Orchard receiver to resolve as shielded`);
61
+ }
62
+ return zcashAddress.toShieldedReceiverWithCoin(address, this.wasmName);
63
+ }
64
+ /** Change addresses are always transparent wallet addresses. */
65
+ decodeChangeAddress(address) {
66
+ return zcashAddress.toTransparentReceiverWithCoin(address, this.wasmName);
67
+ }
68
+ isMatchingScript(output) {
69
+ const address = output.address;
70
+ if (address === undefined || address === null) {
71
+ return true;
72
+ }
73
+ if (AddressCodec.isScriptRecipient(address)) {
74
+ return super.isMatchingScript(output);
75
+ }
76
+ const matchesOutput = (decode) => {
77
+ try {
78
+ return Buffer.from(decode()).equals(Buffer.from(output.script));
79
+ }
80
+ catch {
81
+ return false;
82
+ }
83
+ };
84
+ const isShielded = output.isShielded;
85
+ if (isShielded === true) {
86
+ return matchesOutput(() => zcashAddress.toShieldedReceiverWithCoin(address, this.wasmName));
87
+ }
88
+ if (isShielded === false) {
89
+ return matchesOutput(() => zcashAddress.toTransparentReceiverWithCoin(address, this.wasmName));
90
+ }
91
+ return (matchesOutput(() => zcashAddress.toTransparentReceiverWithCoin(address, this.wasmName)) ||
92
+ matchesOutput(() => zcashAddress.toShieldedReceiverWithCoin(address, this.wasmName)));
93
+ }
94
+ /** Preserve a shielded output's original UA only after validating it against the raw script. */
95
+ toExtendedAddressFormat(script, address) {
96
+ if (address !== undefined && !this.isMatchingScript({ address, script })) {
97
+ throw new Error(`address ${address} does not match the output script`);
98
+ }
99
+ return address ?? super.toExtendedAddressFormat(script);
100
+ }
101
+ }
102
+ /**
103
+ * Whether `address` is a well-formed ZIP-316 Unified Address for `network`
104
+ * with an Orchard receiver. BitGo only supports Orchard, so a UA without one
105
+ * (e.g. Sapling- or transparent-only) is not considered valid here.
106
+ */
107
+ export function isShieldedZcashAddress(address, network) {
108
+ try {
109
+ return fixedScriptWallet.ZcashUnifiedAddress.parse(address, network).hasOrchardReceiver;
110
+ }
111
+ catch {
112
+ return false;
113
+ }
114
+ }
115
+ /**
116
+ * Classify a Zcash address string as transparent or shielded, validating it in
117
+ * the process. Returns undefined if the address is neither a valid transparent
118
+ * address nor a well-formed ZIP-316 Unified Address for `network`.
119
+ */
120
+ export function getZcashAddressKind(address, network) {
121
+ // ZcashNetworkName also permits 'zcash'/'zcashTest', which toOutputScriptWithCoin
122
+ // doesn't accept (it takes a CoinName, i.e. 'zec'/'tzec'). Skip straight to the
123
+ // shielded check for those rather than relying on an unsafe cast + caught throw.
124
+ if (isCoinName(network)) {
125
+ try {
126
+ wasmAddress.toOutputScriptWithCoin(address, network);
127
+ return 'transparent';
128
+ }
129
+ catch {
130
+ // not a valid transparent address; fall through to shielded check
131
+ }
132
+ }
133
+ return isShieldedZcashAddress(address, network) ? 'shielded' : undefined;
134
+ }
135
+ /**
136
+ * Standalone counterpart to `Zec.isValidAddress`, parameterized by `network`
137
+ * instead of requiring a coin instance. Accepts transparent addresses and
138
+ * shielded ZIP-316 Unified Addresses.
139
+ *
140
+ * Not structurally identical to `Zec.isValidAddress`: the base class also
141
+ * round-trips the parsed script through each known encoding format (see
142
+ * `AbstractUtxoCoin.isValidAddress`), whereas this only calls
143
+ * `toOutputScriptWithCoin` once via `getZcashAddressKind`. They agree in
144
+ * practice since zec/tzec have no alternate transparent-address encoding to
145
+ * round-trip against, but that's not guaranteed to remain true.
146
+ */
147
+ export function isValidZcashAddress(address, network) {
148
+ return getZcashAddressKind(address, network) !== undefined;
149
+ }
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBsL3plYy9hZGRyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLElBQUksV0FBVyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUd2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFPM0Q7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxZQUFZO0lBTS9DLFlBQ0UsUUFBc0IsRUFDdEIsUUFBMEIsRUFDMUIsNkJBQXlELGFBQWE7UUFFdEUsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBOEMsQ0FBQztRQUN2RSxJQUFJLENBQUMsMEJBQTBCLEdBQUcsMEJBQTBCLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDTSxjQUFjLENBQUMsT0FBZTtRQUNyQyxPQUFPLENBQ0wsWUFBWSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzNELFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUN4RCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNNLE1BQU0sQ0FBQyxPQUFlO1FBQzdCLElBQUksSUFBSSxDQUFDLDBCQUEwQixLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ25ELE9BQU8sWUFBWSxDQUFDLDZCQUE2QixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUNELHlGQUF5RjtRQUN6RixxRkFBcUY7UUFDckYsSUFBSSxPQUEwRCxDQUFDO1FBQy9ELElBQUksQ0FBQztZQUNILE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsT0FBTyx1Q0FBdUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUNwRyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxPQUFPLGlEQUFpRCxDQUFDLENBQUM7UUFDdkYsQ0FBQztRQUNELE9BQU8sWUFBWSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELGdFQUFnRTtJQUN2RCxtQkFBbUIsQ0FBQyxPQUFlO1FBQzFDLE9BQU8sWUFBWSxDQUFDLDZCQUE2QixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNRLGdCQUFnQixDQUFDLE1BQTZCO1FBQ3JELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxPQUFPLEtBQUssU0FBUyxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM5QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxJQUFJLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVDLE9BQU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQXdCLEVBQVcsRUFBRTtZQUMxRCxJQUFJLENBQUM7Z0JBQ0gsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDbEUsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDLENBQUM7UUFDRixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3JDLElBQUksVUFBVSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3hCLE9BQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDOUYsQ0FBQztRQUNELElBQUksVUFBVSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE9BQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyw2QkFBNkIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDakcsQ0FBQztRQUNELE9BQU8sQ0FDTCxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLDZCQUE2QixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdkYsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQ3JGLENBQUM7SUFDSixDQUFDO0lBRUQsZ0dBQWdHO0lBQ3ZGLHVCQUF1QixDQUFDLE1BQWMsRUFBRSxPQUFnQjtRQUMvRCxJQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3pFLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxPQUFPLG1DQUFtQyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELE9BQU8sT0FBTyxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0Y7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLE9BQWUsRUFBRSxPQUEyQztJQUNqRyxJQUFJLENBQUM7UUFDSCxPQUFPLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUM7SUFDMUYsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxPQUFlLEVBQ2YsT0FBMkM7SUFFM0Msa0ZBQWtGO0lBQ2xGLGdGQUFnRjtJQUNoRixpRkFBaUY7SUFDakYsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUM7WUFDSCxXQUFXLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3JELE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxrRUFBa0U7UUFDcEUsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDM0UsQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE9BQWUsRUFBRSxPQUEyQztJQUM5RixPQUFPLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxTQUFTLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFkZHJlc3MgYXMgd2FzbUFkZHJlc3MsIGZpeGVkU2NyaXB0V2FsbGV0LCBpc0NvaW5OYW1lLCB6Y2FzaEFkZHJlc3MgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcbmltcG9ydCB0eXBlIHsgVW5pZmllZFJlY2lwaWVudFByZWZlcmVuY2UgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmltcG9ydCB7IEFkZHJlc3NDb2RlYyB9IGZyb20gJy4uLy4uL3RyYW5zYWN0aW9uL3JlY2lwaWVudCc7XG5pbXBvcnQgeyBVdHhvQ29pbk5hbWUsIFdhc21VdHhvQ29pbk5hbWUgfSBmcm9tICcuLi8uLi9uYW1lcyc7XG5cbmltcG9ydCB0eXBlIHsgWmVjQWRkcmVzc0NvZGVjT3V0cHV0IH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIFpjYXNoQWRkcmVzc0tpbmQgPSAndHJhbnNwYXJlbnQnIHwgJ3NoaWVsZGVkJztcblxuLyoqXG4gKiBBZGRyZXNzIGNvZGVjIGZvciBaY2FzaCBjb2lucyAoJ3plYycvJ3R6ZWMnKSB0aGF0IHVuZGVyc3RhbmRzIFpJUC0zMTZcbiAqIFVuaWZpZWQgQWRkcmVzc2VzIGluIGFkZGl0aW9uIHRvIG9yZGluYXJ5IHRyYW5zcGFyZW50IGFkZHJlc3Nlcy5cbiAqXG4gKiAtIGBkZWNvZGVgIHJlc29sdmVzIHRoZSBieXRlcyBhIHJlY2lwaWVudCBwYXlzIHRvIChzZWUgaXRzIGRvYyk6IGJ5IGRlZmF1bHRcbiAqICAgdGhlIHRyYW5zcGFyZW50IHNjcmlwdFB1YktleTsgd2l0aCBgdW5pZmllZFJlY2lwaWVudFByZWZlcmVuY2U6ICdzaGllbGRlZCdgXG4gKiAgIHRoZSByYXcgT3JjaGFyZC9Jcm9ud29vZCByZWNlaXZlciBvZiBhIFVuaWZpZWQgQWRkcmVzcy5cbiAqIC0gYGVuY29kZWAvYHRvRXh0ZW5kZWRBZGRyZXNzRm9ybWF0YCBhcmUgdW5jaGFuZ2VkOiBzY3JpcHRzIGNhbiBvbmx5IGJlXG4gKiAgIHdyaXR0ZW4gYmFjayBvdXQgYXMgdHJhbnNwYXJlbnQgYWRkcmVzc2VzLlxuICogLSBgaXNWYWxpZEFkZHJlc3NgIGFjY2VwdHMgdHJhbnNwYXJlbnQgYWRkcmVzc2VzIGFuZCBVbmlmaWVkIEFkZHJlc3NlcyB3aXRoXG4gKiAgIGEgdHJhbnNwYXJlbnQgb3IgT3JjaGFyZCByZWNlaXZlci5cbiAqL1xuZXhwb3J0IGNsYXNzIFplY0FkZHJlc3NDb2RlYyBleHRlbmRzIEFkZHJlc3NDb2RlYyB7XG4gIC8qKiBUaGUgWmNhc2ggbmV0d29yayBuYW1lIGZvciB3YXNtIGNhbGxzIOKAlCAnemVjJyBvciAndHplYycuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgemNhc2hOZXR3b3JrTmFtZTogZml4ZWRTY3JpcHRXYWxsZXQuWmNhc2hOZXR3b3JrTmFtZTtcbiAgLyoqIEhvdyBVbmlmaWVkIEFkZHJlc3MgcmVjaXBpZW50cyByZXNvbHZlIHdoZW4gdGhpcyBjb2RlYyBkZWNvZGVzIHRoZW0uICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdW5pZmllZFJlY2lwaWVudFByZWZlcmVuY2U6IFVuaWZpZWRSZWNpcGllbnRQcmVmZXJlbmNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUsXG4gICAgd2FzbU5hbWU6IFdhc21VdHhvQ29pbk5hbWUsXG4gICAgdW5pZmllZFJlY2lwaWVudFByZWZlcmVuY2U6IFVuaWZpZWRSZWNpcGllbnRQcmVmZXJlbmNlID0gJ3RyYW5zcGFyZW50J1xuICApIHtcbiAgICBzdXBlcihjb2luTmFtZSwgd2FzbU5hbWUpO1xuICAgIHRoaXMuemNhc2hOZXR3b3JrTmFtZSA9IHdhc21OYW1lIGFzIGZpeGVkU2NyaXB0V2FsbGV0LlpjYXNoTmV0d29ya05hbWU7XG4gICAgdGhpcy51bmlmaWVkUmVjaXBpZW50UHJlZmVyZW5jZSA9IHVuaWZpZWRSZWNpcGllbnRQcmVmZXJlbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYGFkZHJlc3NgIGlzIGEgdmFsaWQgWmNhc2ggYWRkcmVzcyBmb3IgdGhpcyBjb2luJ3MgbmV0d29yay5cbiAgICpcbiAgICogTWlycm9ycyB0aGUgcHJlLWNvZGVjIGBaZWMuaXNWYWxpZEFkZHJlc3NgIGxvZ2ljIGV4YWN0bHk6IHRoZSBhZGRyZXNzIGlzXG4gICAqIHZhbGlkIGlmZiBpdCBoYXMgYSB1c2FibGUgdHJhbnNwYXJlbnQgcmVjZWl2ZXIgKGFuIG9yZGluYXJ5IHRyYW5zcGFyZW50XG4gICAqIGFkZHJlc3MsIG9yIGEgVUEgY2FycnlpbmcgYSB0cmFuc3BhcmVudCByZWNlaXZlcikgb3IgYW4gT3JjaGFyZCByZWNlaXZlclxuICAgKiAoYSBVQSBjYXJyeWluZyBvbmUpLlxuICAgKi9cbiAgb3ZlcnJpZGUgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHpjYXNoQWRkcmVzcy5oYXNUcmFuc3BhcmVudFJlY2VpdmVyKGFkZHJlc3MsIHRoaXMud2FzbU5hbWUpIHx8XG4gICAgICB6Y2FzaEFkZHJlc3MuaGFzT3JjaGFyZFJlY2VpdmVyKGFkZHJlc3MsIHRoaXMud2FzbU5hbWUpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIGBhZGRyZXNzYCB0byB0aGUgYnl0ZXMgdGhpcyBjb2RlYydzIHVuaWZpZWQtcmVjaXBpZW50IHByZWZlcmVuY2UgcGF5cyB0by5cbiAgICpcbiAgICogLSBgJ3RyYW5zcGFyZW50J2AgKGRlZmF1bHQpIHJlc29sdmVzIHRoZSBzY3JpcHRQdWJLZXk6IGFuIG9yZGluYXJ5XG4gICAqICAgdHJhbnNwYXJlbnQgYWRkcmVzcyBkZWNvZGVzIHRvIGl0cyBvd24gc2NyaXB0LCBhbmQgYSBVQSB3aXRoIGFcbiAgICogICB0cmFuc3BhcmVudCByZWNlaXZlciBkZWNvZGVzIHRvIHRoYXQgcmVjZWl2ZXIncyBzY3JpcHQuIEEgVUEgd2l0aG91dCBhXG4gICAqICAgdHJhbnNwYXJlbnQgcmVjZWl2ZXIgKGUuZy4gT3JjaGFyZC1vbmx5KSB0aHJvd3MsIHNpbmNlIGEgc2hpZWxkZWRcbiAgICogICBvdXRwdXQgaGFzIG5vIHNjcmlwdC5cbiAgICogLSBgJ3NoaWVsZGVkJ2AgcmVzb2x2ZXMgdGhlIHJhdyBPcmNoYXJkIChJcm9ud29vZCkgcmVjZWl2ZXIg4oCUIHRoZVxuICAgKiAgIDQzLWJ5dGUgZGl2ZXJzaWZpZXIgKyBgcGtfZGAg4oCUIG9mIGEgVUEgY2Fycnlpbmcgb25lLiBBbnkgb3RoZXIgYWRkcmVzc1xuICAgKiAgIChwbGFpbiB0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQtb25seSBVQSwgbWFsZm9ybWVkLCB3cm9uZyBuZXR3b3JrKVxuICAgKiAgIHRocm93cywgc2luY2UgaXQgaGFzIG5vIE9yY2hhcmQgcmVjZWl2ZXIgdG8gcmVzb2x2ZS5cbiAgICovXG4gIG92ZXJyaWRlIGRlY29kZShhZGRyZXNzOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgICBpZiAodGhpcy51bmlmaWVkUmVjaXBpZW50UHJlZmVyZW5jZSAhPT0gJ3NoaWVsZGVkJykge1xuICAgICAgcmV0dXJuIHpjYXNoQWRkcmVzcy50b1RyYW5zcGFyZW50UmVjZWl2ZXJXaXRoQ29pbihhZGRyZXNzLCB0aGlzLndhc21OYW1lKTtcbiAgICB9XG4gICAgLy8gVGhlIHJhdyBPcmNoYXJkIHJlY2VpdmVyIGV4aXN0cyBvbmx5IGZvciBhIFVuaWZpZWQgQWRkcmVzcyBjYXJyeWluZyBvbmU7IGFueXRoaW5nIGVsc2VcbiAgICAvLyAocGxhaW4gdHJhbnNwYXJlbnQgYWRkcmVzcywgdHJhbnNwYXJlbnQtb25seSBVQSwgbWFsZm9ybWVkLCB3cm9uZyBuZXR3b3JrKSB0aHJvd3MuXG4gICAgbGV0IHVuaWZpZWQ6IGZpeGVkU2NyaXB0V2FsbGV0LlpjYXNoVW5pZmllZEFkZHJlc3MgfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIHVuaWZpZWQgPSBmaXhlZFNjcmlwdFdhbGxldC5aY2FzaFVuaWZpZWRBZGRyZXNzLnBhcnNlKGFkZHJlc3MsIHRoaXMuemNhc2hOZXR3b3JrTmFtZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGFkZHJlc3MgJHthZGRyZXNzfSBpcyBub3QgYSB2YWxpZCBhZGRyZXNzIGZvciBuZXR3b3JrICR7dGhpcy56Y2FzaE5ldHdvcmtOYW1lfWApO1xuICAgIH1cbiAgICBpZiAoIXVuaWZpZWQ/Lmhhc09yY2hhcmRSZWNlaXZlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBhZGRyZXNzICR7YWRkcmVzc30gaGFzIG5vIE9yY2hhcmQgcmVjZWl2ZXIgdG8gcmVzb2x2ZSBhcyBzaGllbGRlZGApO1xuICAgIH1cbiAgICByZXR1cm4gemNhc2hBZGRyZXNzLnRvU2hpZWxkZWRSZWNlaXZlcldpdGhDb2luKGFkZHJlc3MsIHRoaXMud2FzbU5hbWUpO1xuICB9XG5cbiAgLyoqIENoYW5nZSBhZGRyZXNzZXMgYXJlIGFsd2F5cyB0cmFuc3BhcmVudCB3YWxsZXQgYWRkcmVzc2VzLiAqL1xuICBvdmVycmlkZSBkZWNvZGVDaGFuZ2VBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiB6Y2FzaEFkZHJlc3MudG9UcmFuc3BhcmVudFJlY2VpdmVyV2l0aENvaW4oYWRkcmVzcywgdGhpcy53YXNtTmFtZSk7XG4gIH1cbiAgb3ZlcnJpZGUgaXNNYXRjaGluZ1NjcmlwdChvdXRwdXQ6IFplY0FkZHJlc3NDb2RlY091dHB1dCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFkZHJlc3MgPSBvdXRwdXQuYWRkcmVzcztcbiAgICBpZiAoYWRkcmVzcyA9PT0gdW5kZWZpbmVkIHx8IGFkZHJlc3MgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoQWRkcmVzc0NvZGVjLmlzU2NyaXB0UmVjaXBpZW50KGFkZHJlc3MpKSB7XG4gICAgICByZXR1cm4gc3VwZXIuaXNNYXRjaGluZ1NjcmlwdChvdXRwdXQpO1xuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoZXNPdXRwdXQgPSAoZGVjb2RlOiAoKSA9PiBVaW50OEFycmF5KTogYm9vbGVhbiA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oZGVjb2RlKCkpLmVxdWFscyhCdWZmZXIuZnJvbShvdXRwdXQuc2NyaXB0KSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgaXNTaGllbGRlZCA9IG91dHB1dC5pc1NoaWVsZGVkO1xuICAgIGlmIChpc1NoaWVsZGVkID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gbWF0Y2hlc091dHB1dCgoKSA9PiB6Y2FzaEFkZHJlc3MudG9TaGllbGRlZFJlY2VpdmVyV2l0aENvaW4oYWRkcmVzcywgdGhpcy53YXNtTmFtZSkpO1xuICAgIH1cbiAgICBpZiAoaXNTaGllbGRlZCA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBtYXRjaGVzT3V0cHV0KCgpID0+IHpjYXNoQWRkcmVzcy50b1RyYW5zcGFyZW50UmVjZWl2ZXJXaXRoQ29pbihhZGRyZXNzLCB0aGlzLndhc21OYW1lKSk7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICBtYXRjaGVzT3V0cHV0KCgpID0+IHpjYXNoQWRkcmVzcy50b1RyYW5zcGFyZW50UmVjZWl2ZXJXaXRoQ29pbihhZGRyZXNzLCB0aGlzLndhc21OYW1lKSkgfHxcbiAgICAgIG1hdGNoZXNPdXRwdXQoKCkgPT4gemNhc2hBZGRyZXNzLnRvU2hpZWxkZWRSZWNlaXZlcldpdGhDb2luKGFkZHJlc3MsIHRoaXMud2FzbU5hbWUpKVxuICAgICk7XG4gIH1cblxuICAvKiogUHJlc2VydmUgYSBzaGllbGRlZCBvdXRwdXQncyBvcmlnaW5hbCBVQSBvbmx5IGFmdGVyIHZhbGlkYXRpbmcgaXQgYWdhaW5zdCB0aGUgcmF3IHNjcmlwdC4gKi9cbiAgb3ZlcnJpZGUgdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQoc2NyaXB0OiBCdWZmZXIsIGFkZHJlc3M/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChhZGRyZXNzICE9PSB1bmRlZmluZWQgJiYgIXRoaXMuaXNNYXRjaGluZ1NjcmlwdCh7IGFkZHJlc3MsIHNjcmlwdCB9KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBhZGRyZXNzICR7YWRkcmVzc30gZG9lcyBub3QgbWF0Y2ggdGhlIG91dHB1dCBzY3JpcHRgKTtcbiAgICB9XG4gICAgcmV0dXJuIGFkZHJlc3MgPz8gc3VwZXIudG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQoc2NyaXB0KTtcbiAgfVxufVxuXG4vKipcbiAqIFdoZXRoZXIgYGFkZHJlc3NgIGlzIGEgd2VsbC1mb3JtZWQgWklQLTMxNiBVbmlmaWVkIEFkZHJlc3MgZm9yIGBuZXR3b3JrYFxuICogd2l0aCBhbiBPcmNoYXJkIHJlY2VpdmVyLiBCaXRHbyBvbmx5IHN1cHBvcnRzIE9yY2hhcmQsIHNvIGEgVUEgd2l0aG91dCBvbmVcbiAqIChlLmcuIFNhcGxpbmctIG9yIHRyYW5zcGFyZW50LW9ubHkpIGlzIG5vdCBjb25zaWRlcmVkIHZhbGlkIGhlcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NoaWVsZGVkWmNhc2hBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgbmV0d29yazogZml4ZWRTY3JpcHRXYWxsZXQuWmNhc2hOZXR3b3JrTmFtZSk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiBmaXhlZFNjcmlwdFdhbGxldC5aY2FzaFVuaWZpZWRBZGRyZXNzLnBhcnNlKGFkZHJlc3MsIG5ldHdvcmspLmhhc09yY2hhcmRSZWNlaXZlcjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQ2xhc3NpZnkgYSBaY2FzaCBhZGRyZXNzIHN0cmluZyBhcyB0cmFuc3BhcmVudCBvciBzaGllbGRlZCwgdmFsaWRhdGluZyBpdCBpblxuICogdGhlIHByb2Nlc3MuIFJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBhZGRyZXNzIGlzIG5laXRoZXIgYSB2YWxpZCB0cmFuc3BhcmVudFxuICogYWRkcmVzcyBub3IgYSB3ZWxsLWZvcm1lZCBaSVAtMzE2IFVuaWZpZWQgQWRkcmVzcyBmb3IgYG5ldHdvcmtgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0WmNhc2hBZGRyZXNzS2luZChcbiAgYWRkcmVzczogc3RyaW5nLFxuICBuZXR3b3JrOiBmaXhlZFNjcmlwdFdhbGxldC5aY2FzaE5ldHdvcmtOYW1lXG4pOiBaY2FzaEFkZHJlc3NLaW5kIHwgdW5kZWZpbmVkIHtcbiAgLy8gWmNhc2hOZXR3b3JrTmFtZSBhbHNvIHBlcm1pdHMgJ3pjYXNoJy8nemNhc2hUZXN0Jywgd2hpY2ggdG9PdXRwdXRTY3JpcHRXaXRoQ29pblxuICAvLyBkb2Vzbid0IGFjY2VwdCAoaXQgdGFrZXMgYSBDb2luTmFtZSwgaS5lLiAnemVjJy8ndHplYycpLiBTa2lwIHN0cmFpZ2h0IHRvIHRoZVxuICAvLyBzaGllbGRlZCBjaGVjayBmb3IgdGhvc2UgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBhbiB1bnNhZmUgY2FzdCArIGNhdWdodCB0aHJvdy5cbiAgaWYgKGlzQ29pbk5hbWUobmV0d29yaykpIHtcbiAgICB0cnkge1xuICAgICAgd2FzbUFkZHJlc3MudG9PdXRwdXRTY3JpcHRXaXRoQ29pbihhZGRyZXNzLCBuZXR3b3JrKTtcbiAgICAgIHJldHVybiAndHJhbnNwYXJlbnQnO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbm90IGEgdmFsaWQgdHJhbnNwYXJlbnQgYWRkcmVzczsgZmFsbCB0aHJvdWdoIHRvIHNoaWVsZGVkIGNoZWNrXG4gICAgfVxuICB9XG4gIHJldHVybiBpc1NoaWVsZGVkWmNhc2hBZGRyZXNzKGFkZHJlc3MsIG5ldHdvcmspID8gJ3NoaWVsZGVkJyA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBTdGFuZGFsb25lIGNvdW50ZXJwYXJ0IHRvIGBaZWMuaXNWYWxpZEFkZHJlc3NgLCBwYXJhbWV0ZXJpemVkIGJ5IGBuZXR3b3JrYFxuICogaW5zdGVhZCBvZiByZXF1aXJpbmcgYSBjb2luIGluc3RhbmNlLiBBY2NlcHRzIHRyYW5zcGFyZW50IGFkZHJlc3NlcyBhbmRcbiAqIHNoaWVsZGVkIFpJUC0zMTYgVW5pZmllZCBBZGRyZXNzZXMuXG4gKlxuICogTm90IHN0cnVjdHVyYWxseSBpZGVudGljYWwgdG8gYFplYy5pc1ZhbGlkQWRkcmVzc2A6IHRoZSBiYXNlIGNsYXNzIGFsc29cbiAqIHJvdW5kLXRyaXBzIHRoZSBwYXJzZWQgc2NyaXB0IHRocm91Z2ggZWFjaCBrbm93biBlbmNvZGluZyBmb3JtYXQgKHNlZVxuICogYEFic3RyYWN0VXR4b0NvaW4uaXNWYWxpZEFkZHJlc3NgKSwgd2hlcmVhcyB0aGlzIG9ubHkgY2FsbHNcbiAqIGB0b091dHB1dFNjcmlwdFdpdGhDb2luYCBvbmNlIHZpYSBgZ2V0WmNhc2hBZGRyZXNzS2luZGAuIFRoZXkgYWdyZWUgaW5cbiAqIHByYWN0aWNlIHNpbmNlIHplYy90emVjIGhhdmUgbm8gYWx0ZXJuYXRlIHRyYW5zcGFyZW50LWFkZHJlc3MgZW5jb2RpbmcgdG9cbiAqIHJvdW5kLXRyaXAgYWdhaW5zdCwgYnV0IHRoYXQncyBub3QgZ3VhcmFudGVlZCB0byByZW1haW4gdHJ1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRaY2FzaEFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBuZXR3b3JrOiBmaXhlZFNjcmlwdFdhbGxldC5aY2FzaE5ldHdvcmtOYW1lKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRaY2FzaEFkZHJlc3NLaW5kKGFkZHJlc3MsIG5ldHdvcmspICE9PSB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -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,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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW1wbC96ZWMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vemVjJztcbmV4cG9ydCAqIGZyb20gJy4vdHplYyc7XG5leHBvcnQgKiBmcm9tICcuL3NoaWVsZGVkQWRkcmVzcyc7XG5leHBvcnQgKiBmcm9tICcuL2FkZHJlc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWNpcGllbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuIl19
@@ -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,94 @@
1
+ import { fixedScriptWallet, zcashAddress } from '@bitgo/wasm-utxo';
2
+ import { getReplayProtectionPubkeys } from '../../transaction/fixedScript/replayProtection';
3
+ /**
4
+ * Resolve the recipient list of a decoded Zcash PSBT (v4 Sapling-shaped or v6 Ironwood).
5
+ *
6
+ * Mirrors the recipient resolution of wallet-platform's utxo-core `buildTransaction` in the
7
+ * decode direction: every non-wallet output with a resolvable address is a recipient. A
8
+ * shielded output parses with `isShielded: true`, its `script` being the raw 43-byte receiver;
9
+ * when the build stored the client's original Unified Address (the v6 PCZT for shielded
10
+ * outputs, the transparent-output proprietary key-value map for v4), both the parsed address
11
+ * and `unifiedAddress` report it verbatim. Opaque outputs with no address (e.g. OP_RETURN) are
12
+ * skipped, as they carry no recipient.
13
+ */
14
+ export function resolvePsbtRecipients(psbt, walletKeys, addressCodec) {
15
+ const parsed = psbt.parseTransactionWithWalletKeys(walletKeys, {
16
+ replayProtection: { publicKeys: getReplayProtectionPubkeys('zec') },
17
+ });
18
+ const recipients = [];
19
+ parsed.outputs.forEach((output, i) => {
20
+ // Wallet-owned (change) outputs.
21
+ if (output.scriptId !== null) {
22
+ return;
23
+ }
24
+ // Opaque outputs (e.g. OP_RETURN) carry no recipient address.
25
+ if (output.address === null) {
26
+ return;
27
+ }
28
+ // The raw parsed receiver/script is authoritative; proprietary Unified Address metadata
29
+ // must match it before it is exposed to callers.
30
+ if (!addressCodec.isMatchingScript(output)) {
31
+ throw new Error(`Output ${i} address ${output.address} does not match its raw recipient`);
32
+ }
33
+ // The original client-passed Unified Address, stored verbatim in the PSBT's key-value
34
+ // transparent-output proprietary map for a v4 transparent output.
35
+ const unifiedAddress = output.isShielded ? output.address : psbt.transparentOutputUnifiedAddress(i) ?? undefined;
36
+ recipients.push({
37
+ amount: output.value,
38
+ address: output.address,
39
+ script: output.script,
40
+ unifiedAddress,
41
+ destination: output.isShielded
42
+ ? { kind: 'zcashShielded', unifiedAddress: output.address }
43
+ : unifiedAddress
44
+ ? { kind: 'zcashUnifiedTransparent', unifiedAddress }
45
+ : { kind: 'transparent' },
46
+ });
47
+ });
48
+ return recipients;
49
+ }
50
+ /**
51
+ * Infer the Unified-Address recipient preference for a Zcash transaction when the caller did
52
+ * not pass one — the counterpart of wallet-platform's utxo-core `buildTransaction`
53
+ * `classifyRecipientShieldedness`.
54
+ *
55
+ * A recipient that resolves to a transparent output — an ordinary transparent address, or a
56
+ * Unified Address carrying a transparent receiver — is classified `'transparent'`; a Unified
57
+ * Address carrying only an Orchard/Ironwood receiver is classified `'shielded'`. A mix of
58
+ * shielded and transparent recipients is rejected. An address that is neither a transparent
59
+ * address nor a Unified Address propagates the Unified-Address parse error — it is not
60
+ * silently defaulted to `'transparent'`.
61
+ *
62
+ * @returns `'shielded'` when every recipient resolves shielded, `undefined` when every
63
+ * recipient resolves transparent (the build's default). The `'transparent'` arm of the
64
+ * return type exists so callers can pass the explicit preference through unchanged; this
65
+ * function itself never returns `'transparent'`.
66
+ */
67
+ export function getUnifiedRecipientPreference(name, recipients) {
68
+ const shieldedness = recipients.map((recipient) => {
69
+ if (recipient.address === undefined) {
70
+ // Raw script inherently transparent.
71
+ return 'transparent';
72
+ }
73
+ // Ordinary transparent address, or a Unified Address carrying a transparent receiver:
74
+ // resolves transparently either way (the build's default when no preference is given).
75
+ if (zcashAddress.hasTransparentReceiver(recipient.address, name)) {
76
+ return 'transparent';
77
+ }
78
+ // A shielded (Orchard/Ironwood-only) Unified Address is the only remaining resolvable
79
+ // form. An address that is none of the above propagates the parse error instead of
80
+ // assuming a default.
81
+ const unified = fixedScriptWallet.ZcashUnifiedAddress.parse(recipient.address, name);
82
+ if (unified.hasOrchardReceiver) {
83
+ return 'shielded';
84
+ }
85
+ throw new Error(`address ${recipient.address} carries no transparent or Orchard receiver`);
86
+ });
87
+ const hasShielded = shieldedness.includes('shielded');
88
+ const hasTransparent = shieldedness.includes('transparent');
89
+ if (hasShielded && hasTransparent) {
90
+ throw new Error('Mixed shielded and transparent recipients are not supported');
91
+ }
92
+ return hasShielded ? 'shielded' : undefined;
93
+ }
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBsL3plYy9yZWNpcGllbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUduRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQXlENUY7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsSUFBc0MsRUFDdEMsVUFBNEMsRUFDNUMsWUFBMEI7SUFFMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFVBQVUsRUFBRTtRQUM3RCxnQkFBZ0IsRUFBRSxFQUFFLFVBQVUsRUFBRSwwQkFBMEIsQ0FBQyxLQUFLLENBQUMsRUFBRTtLQUNwRSxDQUFDLENBQUM7SUFFSCxNQUFNLFVBQVUsR0FBb0IsRUFBRSxDQUFDO0lBQ3ZDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ25DLGlDQUFpQztRQUNqQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDN0IsT0FBTztRQUNULENBQUM7UUFDRCw4REFBOEQ7UUFDOUQsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzVCLE9BQU87UUFDVCxDQUFDO1FBQ0Qsd0ZBQXdGO1FBQ3hGLGlEQUFpRDtRQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsWUFBWSxNQUFNLENBQUMsT0FBTyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQzVGLENBQUM7UUFDRCxzRkFBc0Y7UUFDdEYsa0VBQWtFO1FBQ2xFLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUM7UUFDakgsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNkLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSztZQUNwQixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87WUFDdkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLGNBQWM7WUFDZCxXQUFXLEVBQUUsTUFBTSxDQUFDLFVBQVU7Z0JBQzVCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQzNELENBQUMsQ0FBQyxjQUFjO29CQUNoQixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsY0FBYyxFQUFFO29CQUNyRCxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1NBQzVCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QixDQUMzQyxJQUFtQixFQUNuQixVQUE2QztJQUU3QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7UUFDaEQsSUFBSSxTQUFTLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BDLHFDQUFxQztZQUNyQyxPQUFPLGFBQXNCLENBQUM7UUFDaEMsQ0FBQztRQUNELHNGQUFzRjtRQUN0Rix1RkFBdUY7UUFDdkYsSUFBSSxZQUFZLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2pFLE9BQU8sYUFBc0IsQ0FBQztRQUNoQyxDQUFDO1FBQ0Qsc0ZBQXNGO1FBQ3RGLG1GQUFtRjtRQUNuRixzQkFBc0I7UUFDdEIsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckYsSUFBSSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMvQixPQUFPLFVBQW1CLENBQUM7UUFDN0IsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxTQUFTLENBQUMsT0FBTyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQzdGLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVELElBQUksV0FBVyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztJQUNqRixDQUFDO0lBQ0QsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaXhlZFNjcmlwdFdhbGxldCwgemNhc2hBZGRyZXNzIH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5pbXBvcnQgdHlwZSB7IFVuaWZpZWRSZWNpcGllbnRQcmVmZXJlbmNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBnZXRSZXBsYXlQcm90ZWN0aW9uUHVia2V5cyB9IGZyb20gJy4uLy4uL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L3JlcGxheVByb3RlY3Rpb24nO1xuaW1wb3J0IHR5cGUgeyBBZGRyZXNzQ29kZWMgfSBmcm9tICcuLi8uLi90cmFuc2FjdGlvbi9yZWNpcGllbnQnO1xuXG5pbXBvcnQgeyBaY2FzaENvaW5OYW1lIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogSG93IGEgcmVjaXBpZW50IHBhcnNlZCBmcm9tIGEgWmNhc2ggUFNCVCBpcyBzcGVudC5cbiAqXG4gKiBUaGUgZGVjb2RlLXNpZGUgY291bnRlcnBhcnQgb2YgdXR4by1jb3JlJ3MgYGJ1aWxkVHJhbnNhY3Rpb24vemNhc2gudHNgIGBaY2FzaERlc3RpbmF0aW9uYCBvblxuICogdGhlIGJ1aWxkIHNpZGU6IGEgc2hpZWxkZWQgcmVjaXBpZW50IGlzIGFuIE9yY2hhcmQvSXJvbndvb2Qgb3V0cHV0IHN0b3JlZCBpbiB0aGUgdjYgKElyb253b29kKVxuICogUFNCVCdzIG9yY2hhcmQgUENaVCwgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBpcyBhbiBvcmRpbmFyeSB0cmFuc3BhcmVudCBvdXRwdXQuIEEgdHJhbnNwYXJlbnRcbiAqIG91dHB1dCByZXNvbHZlZCBmcm9tIGEgVW5pZmllZCBBZGRyZXNzIGNhcnJpZXMgdGhhdCBvcmlnaW5hbCBVQSAoYHpjYXNoVW5pZmllZFRyYW5zcGFyZW50YCksIGFcbiAqIHBsYWluIGFkZHJlc3MgZG9lcyBub3QuXG4gKi9cbmV4cG9ydCB0eXBlIFBzYnRSZWNpcGllbnREZXN0aW5hdGlvbiA9XG4gIHwge1xuICAgICAga2luZDogJ3pjYXNoU2hpZWxkZWQnO1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgVW5pZmllZCBBZGRyZXNzIHRoZSBvdXRwdXQgd2FzIGFkZHJlc3NlZCB0byDigJQgdGhlIG9yaWdpbmFsIG11bHRpLXJlY2VpdmVyIFVBIHRoZVxuICAgICAgICogY2xpZW50IHBhc3NlZCB3aGVuIHRoZSBQU0JUIHN0b3JlcyBvbmUgdmVyYmF0aW0sIG90aGVyd2lzZSBhIHJlLWVuY29kZWQgc2luZ2xlLXJlY2VpdmVyXG4gICAgICAgKiBPcmNoYXJkIFVBLlxuICAgICAgICovXG4gICAgICB1bmlmaWVkQWRkcmVzczogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICBraW5kOiAnemNhc2hVbmlmaWVkVHJhbnNwYXJlbnQnO1xuICAgICAgLyoqIFRoZSBvcmlnaW5hbCBVbmlmaWVkIEFkZHJlc3MgdGhlIHRyYW5zcGFyZW50IHJlY2VpdmVyIHdhcyByZXNvbHZlZCBmcm9tLiAqL1xuICAgICAgdW5pZmllZEFkZHJlc3M6IHN0cmluZztcbiAgICB9XG4gIHwgeyBraW5kOiAndHJhbnNwYXJlbnQnIH07XG5cbi8qKiBBIHJlY2lwaWVudCByZXNvbHZlZCBmcm9tIGEgZGVjb2RlZCBaY2FzaCBQU0JUJ3MgZXh0ZXJuYWwgb3V0cHV0cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHNidFJlY2lwaWVudCB7XG4gIC8qKiBBbW91bnQgaW4gc2F0b3NoaXMuICovXG4gIGFtb3VudDogYmlnaW50O1xuICAvKipcbiAgICogVGhlIHJlY2lwaWVudCBhZGRyZXNzLiBGb3IgYSBzaGllbGRlZCBvdXRwdXQgdGhpcyBpcyB0aGUgVW5pZmllZCBBZGRyZXNzIHRoZSBvdXRwdXQgd2FzXG4gICAqIGFkZHJlc3NlZCB0byDigJQgdGhlIG9yaWdpbmFsIG11bHRpLXJlY2VpdmVyIFVBIHdoZW4gdGhlIFBTQlQgc3RvcmVzIG9uZSB2ZXJiYXRpbSwgb3RoZXJ3aXNlIGFcbiAgICogcmUtZW5jb2RlZCBzaW5nbGUtcmVjZWl2ZXIgT3JjaGFyZCBVQS4gRm9yIGEgdHJhbnNwYXJlbnQgb3V0cHV0IGl0IGlzIHRoZSBvcmlnaW5hbCBVbmlmaWVkXG4gICAqIEFkZHJlc3Mgd2hlbiBvbmUgd2FzIHN0b3JlZCwgZWxzZSB0aGUgZGVjb2RlZCB0cmFuc3BhcmVudCBhZGRyZXNzLlxuICAgKi9cbiAgYWRkcmVzczogc3RyaW5nO1xuICAvKipcbiAgICogUmF3IHJlY2VpdmVyIGJ5dGVzOiB0aGUgNDMtYnl0ZSBPcmNoYXJkL0lyb253b29kIHJlY2VpdmVyIGZvciBhIHNoaWVsZGVkIG91dHB1dCwgdGhlXG4gICAqIHNjcmlwdFB1YktleSBmb3IgYSB0cmFuc3BhcmVudCBvbmUuXG4gICAqL1xuICBzY3JpcHQ6IFVpbnQ4QXJyYXk7XG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgVW5pZmllZCBBZGRyZXNzIHRoZSBjbGllbnQgc3VwcGxpZWQgZm9yIHRoaXMgcmVjaXBpZW50LCB3aGVuIHRoZSBQU0JUIHN0b3Jlc1xuICAgKiBvbmU6IHRoZSB2NiAoSXJvbndvb2QpIFBDWlQgZm9yIGEgc2hpZWxkZWQgb3V0cHV0LCB0aGUgdHJhbnNwYXJlbnQtb3V0cHV0IHByb3ByaWV0YXJ5XG4gICAqIGtleS12YWx1ZSBtYXAgZm9yIGEgdjQgdHJhbnNwYXJlbnQgb3V0cHV0LiBgdW5kZWZpbmVkYCB3aGVuIHRoZSByZWNpcGllbnQgd2FzIGJ1aWx0IGZyb20gYVxuICAgKiBwbGFpbiBhZGRyZXNzLlxuICAgKi9cbiAgdW5pZmllZEFkZHJlc3M/OiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uOiBQc2J0UmVjaXBpZW50RGVzdGluYXRpb247XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgcmVjaXBpZW50IGxpc3Qgb2YgYSBkZWNvZGVkIFpjYXNoIFBTQlQgKHY0IFNhcGxpbmctc2hhcGVkIG9yIHY2IElyb253b29kKS5cbiAqXG4gKiBNaXJyb3JzIHRoZSByZWNpcGllbnQgcmVzb2x1dGlvbiBvZiB3YWxsZXQtcGxhdGZvcm0ncyB1dHhvLWNvcmUgYGJ1aWxkVHJhbnNhY3Rpb25gIGluIHRoZVxuICogZGVjb2RlIGRpcmVjdGlvbjogZXZlcnkgbm9uLXdhbGxldCBvdXRwdXQgd2l0aCBhIHJlc29sdmFibGUgYWRkcmVzcyBpcyBhIHJlY2lwaWVudC4gQVxuICogc2hpZWxkZWQgb3V0cHV0IHBhcnNlcyB3aXRoIGBpc1NoaWVsZGVkOiB0cnVlYCwgaXRzIGBzY3JpcHRgIGJlaW5nIHRoZSByYXcgNDMtYnl0ZSByZWNlaXZlcjtcbiAqIHdoZW4gdGhlIGJ1aWxkIHN0b3JlZCB0aGUgY2xpZW50J3Mgb3JpZ2luYWwgVW5pZmllZCBBZGRyZXNzICh0aGUgdjYgUENaVCBmb3Igc2hpZWxkZWRcbiAqIG91dHB1dHMsIHRoZSB0cmFuc3BhcmVudC1vdXRwdXQgcHJvcHJpZXRhcnkga2V5LXZhbHVlIG1hcCBmb3IgdjQpLCBib3RoIHRoZSBwYXJzZWQgYWRkcmVzc1xuICogYW5kIGB1bmlmaWVkQWRkcmVzc2AgcmVwb3J0IGl0IHZlcmJhdGltLiBPcGFxdWUgb3V0cHV0cyB3aXRoIG5vIGFkZHJlc3MgKGUuZy4gT1BfUkVUVVJOKSBhcmVcbiAqIHNraXBwZWQsIGFzIHRoZXkgY2Fycnkgbm8gcmVjaXBpZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBzYnRSZWNpcGllbnRzKFxuICBwc2J0OiBmaXhlZFNjcmlwdFdhbGxldC5aY2FzaEJpdEdvUHNidCxcbiAgd2FsbGV0S2V5czogZml4ZWRTY3JpcHRXYWxsZXQuUm9vdFdhbGxldEtleXMsXG4gIGFkZHJlc3NDb2RlYzogQWRkcmVzc0NvZGVjXG4pOiBQc2J0UmVjaXBpZW50W10ge1xuICBjb25zdCBwYXJzZWQgPSBwc2J0LnBhcnNlVHJhbnNhY3Rpb25XaXRoV2FsbGV0S2V5cyh3YWxsZXRLZXlzLCB7XG4gICAgcmVwbGF5UHJvdGVjdGlvbjogeyBwdWJsaWNLZXlzOiBnZXRSZXBsYXlQcm90ZWN0aW9uUHVia2V5cygnemVjJykgfSxcbiAgfSk7XG5cbiAgY29uc3QgcmVjaXBpZW50czogUHNidFJlY2lwaWVudFtdID0gW107XG4gIHBhcnNlZC5vdXRwdXRzLmZvckVhY2goKG91dHB1dCwgaSkgPT4ge1xuICAgIC8vIFdhbGxldC1vd25lZCAoY2hhbmdlKSBvdXRwdXRzLlxuICAgIGlmIChvdXRwdXQuc2NyaXB0SWQgIT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gT3BhcXVlIG91dHB1dHMgKGUuZy4gT1BfUkVUVVJOKSBjYXJyeSBubyByZWNpcGllbnQgYWRkcmVzcy5cbiAgICBpZiAob3V0cHV0LmFkZHJlc3MgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gVGhlIHJhdyBwYXJzZWQgcmVjZWl2ZXIvc2NyaXB0IGlzIGF1dGhvcml0YXRpdmU7IHByb3ByaWV0YXJ5IFVuaWZpZWQgQWRkcmVzcyBtZXRhZGF0YVxuICAgIC8vIG11c3QgbWF0Y2ggaXQgYmVmb3JlIGl0IGlzIGV4cG9zZWQgdG8gY2FsbGVycy5cbiAgICBpZiAoIWFkZHJlc3NDb2RlYy5pc01hdGNoaW5nU2NyaXB0KG91dHB1dCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgT3V0cHV0ICR7aX0gYWRkcmVzcyAke291dHB1dC5hZGRyZXNzfSBkb2VzIG5vdCBtYXRjaCBpdHMgcmF3IHJlY2lwaWVudGApO1xuICAgIH1cbiAgICAvLyBUaGUgb3JpZ2luYWwgY2xpZW50LXBhc3NlZCBVbmlmaWVkIEFkZHJlc3MsIHN0b3JlZCB2ZXJiYXRpbSBpbiB0aGUgUFNCVCdzIGtleS12YWx1ZVxuICAgIC8vIHRyYW5zcGFyZW50LW91dHB1dCBwcm9wcmlldGFyeSBtYXAgZm9yIGEgdjQgdHJhbnNwYXJlbnQgb3V0cHV0LlxuICAgIGNvbnN0IHVuaWZpZWRBZGRyZXNzID0gb3V0cHV0LmlzU2hpZWxkZWQgPyBvdXRwdXQuYWRkcmVzcyA6IHBzYnQudHJhbnNwYXJlbnRPdXRwdXRVbmlmaWVkQWRkcmVzcyhpKSA/PyB1bmRlZmluZWQ7XG4gICAgcmVjaXBpZW50cy5wdXNoKHtcbiAgICAgIGFtb3VudDogb3V0cHV0LnZhbHVlLFxuICAgICAgYWRkcmVzczogb3V0cHV0LmFkZHJlc3MsXG4gICAgICBzY3JpcHQ6IG91dHB1dC5zY3JpcHQsXG4gICAgICB1bmlmaWVkQWRkcmVzcyxcbiAgICAgIGRlc3RpbmF0aW9uOiBvdXRwdXQuaXNTaGllbGRlZFxuICAgICAgICA/IHsga2luZDogJ3pjYXNoU2hpZWxkZWQnLCB1bmlmaWVkQWRkcmVzczogb3V0cHV0LmFkZHJlc3MgfVxuICAgICAgICA6IHVuaWZpZWRBZGRyZXNzXG4gICAgICAgID8geyBraW5kOiAnemNhc2hVbmlmaWVkVHJhbnNwYXJlbnQnLCB1bmlmaWVkQWRkcmVzcyB9XG4gICAgICAgIDogeyBraW5kOiAndHJhbnNwYXJlbnQnIH0sXG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gcmVjaXBpZW50cztcbn1cblxuLyoqXG4gKiBJbmZlciB0aGUgVW5pZmllZC1BZGRyZXNzIHJlY2lwaWVudCBwcmVmZXJlbmNlIGZvciBhIFpjYXNoIHRyYW5zYWN0aW9uIHdoZW4gdGhlIGNhbGxlciBkaWRcbiAqIG5vdCBwYXNzIG9uZSDigJQgdGhlIGNvdW50ZXJwYXJ0IG9mIHdhbGxldC1wbGF0Zm9ybSdzIHV0eG8tY29yZSBgYnVpbGRUcmFuc2FjdGlvbmBcbiAqIGBjbGFzc2lmeVJlY2lwaWVudFNoaWVsZGVkbmVzc2AuXG4gKlxuICogQSByZWNpcGllbnQgdGhhdCByZXNvbHZlcyB0byBhIHRyYW5zcGFyZW50IG91dHB1dCDigJQgYW4gb3JkaW5hcnkgdHJhbnNwYXJlbnQgYWRkcmVzcywgb3IgYVxuICogVW5pZmllZCBBZGRyZXNzIGNhcnJ5aW5nIGEgdHJhbnNwYXJlbnQgcmVjZWl2ZXIg4oCUIGlzIGNsYXNzaWZpZWQgYCd0cmFuc3BhcmVudCdgOyBhIFVuaWZpZWRcbiAqIEFkZHJlc3MgY2Fycnlpbmcgb25seSBhbiBPcmNoYXJkL0lyb253b29kIHJlY2VpdmVyIGlzIGNsYXNzaWZpZWQgYCdzaGllbGRlZCdgLiBBIG1peCBvZlxuICogc2hpZWxkZWQgYW5kIHRyYW5zcGFyZW50IHJlY2lwaWVudHMgaXMgcmVqZWN0ZWQuIEFuIGFkZHJlc3MgdGhhdCBpcyBuZWl0aGVyIGEgdHJhbnNwYXJlbnRcbiAqIGFkZHJlc3Mgbm9yIGEgVW5pZmllZCBBZGRyZXNzIHByb3BhZ2F0ZXMgdGhlIFVuaWZpZWQtQWRkcmVzcyBwYXJzZSBlcnJvciDigJQgaXQgaXMgbm90XG4gKiBzaWxlbnRseSBkZWZhdWx0ZWQgdG8gYCd0cmFuc3BhcmVudCdgLlxuICpcbiAqIEByZXR1cm5zIGAnc2hpZWxkZWQnYCB3aGVuIGV2ZXJ5IHJlY2lwaWVudCByZXNvbHZlcyBzaGllbGRlZCwgYHVuZGVmaW5lZGAgd2hlbiBldmVyeVxuICogICByZWNpcGllbnQgcmVzb2x2ZXMgdHJhbnNwYXJlbnQgKHRoZSBidWlsZCdzIGRlZmF1bHQpLiBUaGUgYCd0cmFuc3BhcmVudCdgIGFybSBvZiB0aGVcbiAqICAgcmV0dXJuIHR5cGUgZXhpc3RzIHNvIGNhbGxlcnMgY2FuIHBhc3MgdGhlIGV4cGxpY2l0IHByZWZlcmVuY2UgdGhyb3VnaCB1bmNoYW5nZWQ7IHRoaXNcbiAqICAgZnVuY3Rpb24gaXRzZWxmIG5ldmVyIHJldHVybnMgYCd0cmFuc3BhcmVudCdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5pZmllZFJlY2lwaWVudFByZWZlcmVuY2UoXG4gIG5hbWU6IFpjYXNoQ29pbk5hbWUsXG4gIHJlY2lwaWVudHM6IHsgYWRkcmVzczogc3RyaW5nIHwgdW5kZWZpbmVkIH1bXVxuKTogVW5pZmllZFJlY2lwaWVudFByZWZlcmVuY2UgfCB1bmRlZmluZWQge1xuICBjb25zdCBzaGllbGRlZG5lc3MgPSByZWNpcGllbnRzLm1hcCgocmVjaXBpZW50KSA9PiB7XG4gICAgaWYgKHJlY2lwaWVudC5hZGRyZXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFJhdyBzY3JpcHQgaW5oZXJlbnRseSB0cmFuc3BhcmVudC5cbiAgICAgIHJldHVybiAndHJhbnNwYXJlbnQnIGFzIGNvbnN0O1xuICAgIH1cbiAgICAvLyBPcmRpbmFyeSB0cmFuc3BhcmVudCBhZGRyZXNzLCBvciBhIFVuaWZpZWQgQWRkcmVzcyBjYXJyeWluZyBhIHRyYW5zcGFyZW50IHJlY2VpdmVyOlxuICAgIC8vIHJlc29sdmVzIHRyYW5zcGFyZW50bHkgZWl0aGVyIHdheSAodGhlIGJ1aWxkJ3MgZGVmYXVsdCB3aGVuIG5vIHByZWZlcmVuY2UgaXMgZ2l2ZW4pLlxuICAgIGlmICh6Y2FzaEFkZHJlc3MuaGFzVHJhbnNwYXJlbnRSZWNlaXZlcihyZWNpcGllbnQuYWRkcmVzcywgbmFtZSkpIHtcbiAgICAgIHJldHVybiAndHJhbnNwYXJlbnQnIGFzIGNvbnN0O1xuICAgIH1cbiAgICAvLyBBIHNoaWVsZGVkIChPcmNoYXJkL0lyb253b29kLW9ubHkpIFVuaWZpZWQgQWRkcmVzcyBpcyB0aGUgb25seSByZW1haW5pbmcgcmVzb2x2YWJsZVxuICAgIC8vIGZvcm0uIEFuIGFkZHJlc3MgdGhhdCBpcyBub25lIG9mIHRoZSBhYm92ZSBwcm9wYWdhdGVzIHRoZSBwYXJzZSBlcnJvciBpbnN0ZWFkIG9mXG4gICAgLy8gYXNzdW1pbmcgYSBkZWZhdWx0LlxuICAgIGNvbnN0IHVuaWZpZWQgPSBmaXhlZFNjcmlwdFdhbGxldC5aY2FzaFVuaWZpZWRBZGRyZXNzLnBhcnNlKHJlY2lwaWVudC5hZGRyZXNzLCBuYW1lKTtcbiAgICBpZiAodW5pZmllZC5oYXNPcmNoYXJkUmVjZWl2ZXIpIHtcbiAgICAgIHJldHVybiAnc2hpZWxkZWQnIGFzIGNvbnN0O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYGFkZHJlc3MgJHtyZWNpcGllbnQuYWRkcmVzc30gY2FycmllcyBubyB0cmFuc3BhcmVudCBvciBPcmNoYXJkIHJlY2VpdmVyYCk7XG4gIH0pO1xuICBjb25zdCBoYXNTaGllbGRlZCA9IHNoaWVsZGVkbmVzcy5pbmNsdWRlcygnc2hpZWxkZWQnKTtcbiAgY29uc3QgaGFzVHJhbnNwYXJlbnQgPSBzaGllbGRlZG5lc3MuaW5jbHVkZXMoJ3RyYW5zcGFyZW50Jyk7XG4gIGlmIChoYXNTaGllbGRlZCAmJiBoYXNUcmFuc3BhcmVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWl4ZWQgc2hpZWxkZWQgYW5kIHRyYW5zcGFyZW50IHJlY2lwaWVudHMgYXJlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgfVxuICByZXR1cm4gaGFzU2hpZWxkZWQgPyAnc2hpZWxkZWQnIDogdW5kZWZpbmVkO1xufVxuIl19