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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (814) hide show
  1. package/README.md +76 -0
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts +438 -0
  3. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -0
  4. package/dist/cjs/src/abstractUtxoCoin.js +658 -0
  5. package/dist/cjs/src/address/fixedScript.d.ts +44 -0
  6. package/dist/cjs/src/address/fixedScript.d.ts.map +1 -0
  7. package/dist/cjs/src/address/fixedScript.js +105 -0
  8. package/dist/cjs/src/address/index.d.ts +2 -0
  9. package/dist/cjs/src/address/index.d.ts.map +1 -0
  10. package/dist/cjs/src/address/index.js +8 -0
  11. package/dist/cjs/src/config.d.ts.map +1 -0
  12. package/dist/cjs/src/config.js +14 -0
  13. package/dist/cjs/src/descriptor/NamedDescriptor.d.ts +20 -0
  14. package/dist/cjs/src/descriptor/NamedDescriptor.d.ts.map +1 -0
  15. package/dist/cjs/src/descriptor/NamedDescriptor.js +79 -0
  16. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
  17. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
  18. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.js +33 -0
  19. package/dist/cjs/src/descriptor/builder/builder.d.ts +13 -0
  20. package/dist/cjs/src/descriptor/builder/builder.d.ts.map +1 -0
  21. package/dist/cjs/src/descriptor/builder/builder.js +37 -0
  22. package/dist/cjs/src/descriptor/builder/index.d.ts +3 -0
  23. package/dist/cjs/src/descriptor/builder/index.d.ts.map +1 -0
  24. package/dist/cjs/src/descriptor/builder/index.js +8 -0
  25. package/dist/cjs/src/descriptor/builder/parse.d.ts +5 -0
  26. package/dist/cjs/src/descriptor/builder/parse.d.ts.map +1 -0
  27. package/dist/cjs/src/descriptor/builder/parse.js +116 -0
  28. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
  29. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
  30. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.js +41 -0
  31. package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts +12 -0
  32. package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  33. package/dist/cjs/src/descriptor/createWallet/createDescriptors.js +33 -0
  34. package/dist/cjs/src/descriptor/createWallet/index.d.ts +3 -0
  35. package/dist/cjs/src/descriptor/createWallet/index.d.ts.map +1 -0
  36. package/dist/cjs/src/descriptor/createWallet/index.js +19 -0
  37. package/dist/cjs/src/descriptor/descriptorWallet.d.ts +19 -0
  38. package/dist/cjs/src/descriptor/descriptorWallet.d.ts.map +1 -0
  39. package/dist/cjs/src/descriptor/descriptorWallet.js +54 -0
  40. package/dist/cjs/src/descriptor/index.d.ts +8 -0
  41. package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
  42. package/dist/cjs/src/descriptor/index.js +53 -0
  43. package/dist/cjs/src/descriptor/validatePolicy.d.ts +22 -0
  44. package/dist/cjs/src/descriptor/validatePolicy.d.ts.map +1 -0
  45. package/dist/cjs/src/descriptor/validatePolicy.js +92 -0
  46. package/dist/cjs/src/impl/bch/bch.d.ts +22 -0
  47. package/dist/cjs/src/impl/bch/bch.d.ts.map +1 -0
  48. package/dist/cjs/src/impl/bch/bch.js +75 -0
  49. package/dist/cjs/src/impl/bch/index.d.ts +3 -0
  50. package/dist/cjs/src/impl/bch/index.d.ts.map +1 -0
  51. package/dist/cjs/src/impl/bch/index.js +19 -0
  52. package/dist/cjs/src/impl/bch/tbch.d.ts +12 -0
  53. package/dist/cjs/src/impl/bch/tbch.d.ts.map +1 -0
  54. package/dist/cjs/src/impl/bch/tbch.js +15 -0
  55. package/dist/cjs/src/impl/bcha/bcha.d.ts +9 -0
  56. package/dist/cjs/src/impl/bcha/bcha.d.ts.map +1 -0
  57. package/dist/cjs/src/impl/bcha/bcha.js +15 -0
  58. package/dist/cjs/src/impl/bcha/index.d.ts +3 -0
  59. package/dist/cjs/src/impl/bcha/index.d.ts.map +1 -0
  60. package/dist/cjs/src/impl/bcha/index.js +19 -0
  61. package/dist/cjs/src/impl/bcha/tbcha.d.ts +12 -0
  62. package/dist/cjs/src/impl/bcha/tbcha.d.ts.map +1 -0
  63. package/dist/cjs/src/impl/bcha/tbcha.js +15 -0
  64. package/dist/cjs/src/impl/bsv/bsv.d.ts +9 -0
  65. package/dist/cjs/src/impl/bsv/bsv.d.ts.map +1 -0
  66. package/dist/cjs/src/impl/bsv/bsv.js +15 -0
  67. package/dist/cjs/src/impl/bsv/index.d.ts +3 -0
  68. package/dist/cjs/src/impl/bsv/index.d.ts.map +1 -0
  69. package/dist/cjs/src/impl/bsv/index.js +19 -0
  70. package/dist/cjs/src/impl/bsv/tbsv.d.ts +12 -0
  71. package/dist/cjs/src/impl/bsv/tbsv.d.ts.map +1 -0
  72. package/dist/cjs/src/impl/bsv/tbsv.js +15 -0
  73. package/dist/cjs/src/impl/btc/btc.d.ts +15 -0
  74. package/dist/cjs/src/impl/btc/btc.d.ts.map +1 -0
  75. package/dist/cjs/src/impl/btc/btc.js +22 -0
  76. package/dist/cjs/src/impl/btc/index.d.ts +7 -0
  77. package/dist/cjs/src/impl/btc/index.d.ts.map +1 -0
  78. package/dist/cjs/src/impl/btc/index.js +23 -0
  79. package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts +61 -0
  80. package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts.map +1 -0
  81. package/dist/cjs/src/impl/btc/inscriptionBuilder.js +171 -0
  82. package/dist/cjs/src/impl/btc/tbtc.d.ts +12 -0
  83. package/dist/cjs/src/impl/btc/tbtc.d.ts.map +1 -0
  84. package/dist/cjs/src/impl/btc/tbtc.js +15 -0
  85. package/dist/cjs/src/impl/btc/tbtc4.d.ts +12 -0
  86. package/dist/cjs/src/impl/btc/tbtc4.d.ts.map +1 -0
  87. package/dist/cjs/src/impl/btc/tbtc4.js +15 -0
  88. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts +12 -0
  89. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts.map +1 -0
  90. package/dist/cjs/src/impl/btc/tbtcbgsig.js +15 -0
  91. package/dist/cjs/src/impl/btc/tbtcsig.d.ts +12 -0
  92. package/dist/cjs/src/impl/btc/tbtcsig.d.ts.map +1 -0
  93. package/dist/cjs/src/impl/btc/tbtcsig.js +15 -0
  94. package/dist/cjs/src/impl/btg/btg.d.ts +9 -0
  95. package/dist/cjs/src/impl/btg/btg.d.ts.map +1 -0
  96. package/dist/cjs/src/impl/btg/btg.js +15 -0
  97. package/dist/cjs/src/impl/btg/index.d.ts +2 -0
  98. package/dist/cjs/src/impl/btg/index.d.ts.map +1 -0
  99. package/dist/cjs/src/impl/btg/index.js +18 -0
  100. package/dist/cjs/src/impl/dash/dash.d.ts +9 -0
  101. package/dist/cjs/src/impl/dash/dash.d.ts.map +1 -0
  102. package/dist/cjs/src/impl/dash/dash.js +15 -0
  103. package/dist/cjs/src/impl/dash/index.d.ts +3 -0
  104. package/dist/cjs/src/impl/dash/index.d.ts.map +1 -0
  105. package/dist/cjs/src/impl/dash/index.js +19 -0
  106. package/dist/cjs/src/impl/dash/tdash.d.ts +12 -0
  107. package/dist/cjs/src/impl/dash/tdash.d.ts.map +1 -0
  108. package/dist/cjs/src/impl/dash/tdash.js +15 -0
  109. package/dist/cjs/src/impl/doge/doge.d.ts +35 -0
  110. package/dist/cjs/src/impl/doge/doge.d.ts.map +1 -0
  111. package/dist/cjs/src/impl/doge/doge.js +79 -0
  112. package/dist/cjs/src/impl/doge/index.d.ts +3 -0
  113. package/dist/cjs/src/impl/doge/index.d.ts.map +1 -0
  114. package/dist/cjs/src/impl/doge/index.js +19 -0
  115. package/dist/cjs/src/impl/doge/tdoge.d.ts +12 -0
  116. package/dist/cjs/src/impl/doge/tdoge.d.ts.map +1 -0
  117. package/dist/cjs/src/impl/doge/tdoge.js +15 -0
  118. package/dist/cjs/src/impl/index.d.ts +10 -0
  119. package/dist/cjs/src/impl/index.d.ts.map +1 -0
  120. package/dist/cjs/src/impl/index.js +46 -0
  121. package/dist/cjs/src/impl/ltc/index.d.ts +3 -0
  122. package/dist/cjs/src/impl/ltc/index.d.ts.map +1 -0
  123. package/dist/cjs/src/impl/ltc/index.js +19 -0
  124. package/dist/cjs/src/impl/ltc/ltc.d.ts +9 -0
  125. package/dist/cjs/src/impl/ltc/ltc.d.ts.map +1 -0
  126. package/dist/cjs/src/impl/ltc/ltc.js +53 -0
  127. package/dist/cjs/src/impl/ltc/tltc.d.ts +9 -0
  128. package/dist/cjs/src/impl/ltc/tltc.d.ts.map +1 -0
  129. package/dist/cjs/src/impl/ltc/tltc.js +52 -0
  130. package/dist/cjs/src/impl/zec/index.d.ts +3 -0
  131. package/dist/cjs/src/impl/zec/index.d.ts.map +1 -0
  132. package/dist/cjs/src/impl/zec/index.js +19 -0
  133. package/dist/cjs/src/impl/zec/tzec.d.ts +9 -0
  134. package/dist/cjs/src/impl/zec/tzec.d.ts.map +1 -0
  135. package/dist/cjs/src/impl/zec/tzec.js +15 -0
  136. package/dist/cjs/src/impl/zec/zec.d.ts +12 -0
  137. package/dist/cjs/src/impl/zec/zec.d.ts.map +1 -0
  138. package/dist/cjs/src/impl/zec/zec.js +15 -0
  139. package/dist/cjs/src/index.d.ts +23 -0
  140. package/dist/cjs/src/index.d.ts.map +1 -0
  141. package/dist/cjs/src/index.js +62 -0
  142. package/dist/cjs/src/keychains.d.ts +57 -0
  143. package/dist/cjs/src/keychains.d.ts.map +1 -0
  144. package/dist/cjs/src/keychains.js +145 -0
  145. package/dist/cjs/src/names.d.ts +36 -0
  146. package/dist/cjs/src/names.d.ts.map +1 -0
  147. package/dist/cjs/src/names.js +231 -0
  148. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts +9 -0
  149. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
  150. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.js +24 -0
  151. package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts +46 -0
  152. package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
  153. package/dist/cjs/src/offlineVault/OfflineVaultSignable.js +55 -0
  154. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts +16 -0
  155. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts.map +1 -0
  156. package/dist/cjs/src/offlineVault/TransactionExplanation.js +15 -0
  157. package/dist/cjs/src/offlineVault/descriptor/index.d.ts +2 -0
  158. package/dist/cjs/src/offlineVault/descriptor/index.d.ts.map +1 -0
  159. package/dist/cjs/src/offlineVault/descriptor/index.js +18 -0
  160. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts +40 -0
  161. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts.map +1 -0
  162. package/dist/cjs/src/offlineVault/descriptor/transaction.js +80 -0
  163. package/dist/cjs/src/offlineVault/index.d.ts +6 -0
  164. package/dist/cjs/src/offlineVault/index.d.ts.map +1 -0
  165. package/dist/cjs/src/offlineVault/index.js +44 -0
  166. package/dist/{src → cjs/src}/recovery/RecoveryProvider.d.ts +1 -3
  167. package/dist/cjs/src/recovery/RecoveryProvider.d.ts.map +1 -0
  168. package/dist/cjs/src/recovery/RecoveryProvider.js +22 -0
  169. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts +90 -0
  170. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -0
  171. package/dist/cjs/src/recovery/backupKeyRecovery.js +339 -0
  172. package/dist/{src → cjs/src}/recovery/baseApi.d.ts +3 -6
  173. package/dist/cjs/src/recovery/baseApi.d.ts.map +1 -0
  174. package/dist/cjs/src/recovery/baseApi.js +73 -0
  175. package/dist/{src → cjs/src}/recovery/coingeckoApi.d.ts +0 -3
  176. package/dist/cjs/src/recovery/coingeckoApi.d.ts.map +1 -0
  177. package/dist/cjs/src/recovery/coingeckoApi.js +44 -0
  178. package/dist/{src → cjs/src}/recovery/crossChainRecovery.d.ts +21 -9
  179. package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -0
  180. package/dist/cjs/src/recovery/crossChainRecovery.js +300 -0
  181. package/dist/{src → cjs/src}/recovery/index.d.ts +0 -1
  182. package/dist/cjs/src/recovery/index.d.ts.map +1 -0
  183. package/dist/{src → cjs/src}/recovery/index.js +6 -3
  184. package/dist/cjs/src/recovery/mempoolApi.d.ts.map +1 -0
  185. package/dist/cjs/src/recovery/mempoolApi.js +36 -0
  186. package/dist/cjs/src/recovery/psbt.d.ts +62 -0
  187. package/dist/cjs/src/recovery/psbt.d.ts.map +1 -0
  188. package/dist/cjs/src/recovery/psbt.js +153 -0
  189. package/dist/cjs/src/tnumber.d.ts +4 -0
  190. package/dist/cjs/src/tnumber.d.ts.map +1 -0
  191. package/dist/cjs/src/tnumber.js +12 -0
  192. package/dist/cjs/src/transaction/bip322.d.ts +27 -0
  193. package/dist/cjs/src/transaction/bip322.d.ts.map +1 -0
  194. package/dist/cjs/src/transaction/bip322.js +140 -0
  195. package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts +2 -0
  196. package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
  197. package/dist/cjs/src/transaction/common/verifyPayGoAmount.js +3 -0
  198. package/dist/cjs/src/transaction/decode.d.ts +12 -0
  199. package/dist/cjs/src/transaction/decode.d.ts.map +1 -0
  200. package/dist/cjs/src/transaction/decode.js +84 -0
  201. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts +5 -0
  202. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  203. package/dist/cjs/src/transaction/descriptor/explainPsbt.js +45 -0
  204. package/dist/cjs/src/transaction/descriptor/index.d.ts +7 -0
  205. package/dist/cjs/src/transaction/descriptor/index.d.ts.map +1 -0
  206. package/dist/cjs/src/transaction/descriptor/index.js +14 -0
  207. package/dist/cjs/src/transaction/descriptor/parse.d.ts +19 -0
  208. package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -0
  209. package/dist/cjs/src/transaction/descriptor/parse.js +90 -0
  210. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts +14 -0
  211. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
  212. package/dist/cjs/src/transaction/descriptor/parseToAmountType.js +60 -0
  213. package/dist/cjs/src/transaction/descriptor/recipient.d.ts +5 -0
  214. package/dist/cjs/src/transaction/descriptor/recipient.d.ts.map +1 -0
  215. package/dist/cjs/src/transaction/descriptor/recipient.js +3 -0
  216. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts +24 -0
  217. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts.map +1 -0
  218. package/dist/cjs/src/transaction/descriptor/signPsbt.js +44 -0
  219. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts +37 -0
  220. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
  221. package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +81 -0
  222. package/dist/cjs/src/transaction/explainTransaction.d.ts +20 -0
  223. package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -0
  224. package/dist/cjs/src/transaction/explainTransaction.js +89 -0
  225. package/dist/cjs/src/transaction/fetchInputs.d.ts +27 -0
  226. package/dist/cjs/src/transaction/fetchInputs.d.ts.map +1 -0
  227. package/dist/cjs/src/transaction/fetchInputs.js +111 -0
  228. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts +26 -0
  229. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts.map +1 -0
  230. package/dist/cjs/src/transaction/fixedScript/SigningError.js +34 -0
  231. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts +11 -0
  232. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  233. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.js +67 -0
  234. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +74 -0
  235. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  236. package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +342 -0
  237. package/dist/cjs/src/transaction/fixedScript/index.d.ts +10 -0
  238. package/dist/cjs/src/transaction/fixedScript/index.d.ts.map +1 -0
  239. package/dist/cjs/src/transaction/fixedScript/index.js +32 -0
  240. package/dist/cjs/src/transaction/fixedScript/musig2.d.ts +4 -0
  241. package/dist/cjs/src/transaction/fixedScript/musig2.d.ts.map +1 -0
  242. package/dist/cjs/src/transaction/fixedScript/musig2.js +3 -0
  243. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts +28 -0
  244. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  245. package/dist/cjs/src/transaction/fixedScript/parseOutput.js +216 -0
  246. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts +8 -0
  247. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  248. package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +240 -0
  249. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts +9 -0
  250. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  251. package/dist/cjs/src/transaction/fixedScript/replayProtection.js +46 -0
  252. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts +32 -0
  253. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -0
  254. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.js +155 -0
  255. package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.d.ts +21 -0
  256. package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.d.ts.map +1 -0
  257. package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.js +157 -0
  258. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts +18 -0
  259. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
  260. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.js +105 -0
  261. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +26 -0
  262. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -0
  263. package/dist/cjs/src/transaction/fixedScript/signTransaction.js +104 -0
  264. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts +21 -0
  265. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  266. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.js +199 -0
  267. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts +9 -0
  268. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
  269. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.js +20 -0
  270. package/dist/cjs/src/transaction/index.d.ts +8 -0
  271. package/dist/cjs/src/transaction/index.d.ts.map +1 -0
  272. package/dist/cjs/src/transaction/index.js +50 -0
  273. package/dist/cjs/src/transaction/outputDifference.d.ts +44 -0
  274. package/dist/cjs/src/transaction/outputDifference.d.ts.map +1 -0
  275. package/dist/cjs/src/transaction/outputDifference.js +51 -0
  276. package/dist/cjs/src/transaction/parseTransaction.d.ts +4 -0
  277. package/dist/cjs/src/transaction/parseTransaction.d.ts.map +1 -0
  278. package/dist/cjs/src/transaction/parseTransaction.js +48 -0
  279. package/dist/cjs/src/transaction/recipient.d.ts +34 -0
  280. package/dist/cjs/src/transaction/recipient.d.ts.map +1 -0
  281. package/dist/cjs/src/transaction/recipient.js +104 -0
  282. package/dist/cjs/src/transaction/signTransaction.d.ts +6 -0
  283. package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -0
  284. package/dist/cjs/src/transaction/signTransaction.js +105 -0
  285. package/dist/cjs/src/transaction/types.d.ts +49 -0
  286. package/dist/cjs/src/transaction/types.d.ts.map +1 -0
  287. package/dist/cjs/src/transaction/types.js +7 -0
  288. package/dist/cjs/src/transaction/verifyTransaction.d.ts +4 -0
  289. package/dist/cjs/src/transaction/verifyTransaction.d.ts.map +1 -0
  290. package/dist/cjs/src/transaction/verifyTransaction.js +50 -0
  291. package/dist/cjs/src/unspent.d.ts +55 -0
  292. package/dist/cjs/src/unspent.d.ts.map +1 -0
  293. package/dist/cjs/src/unspent.js +12 -0
  294. package/dist/cjs/src/verifyKey.d.ts +29 -0
  295. package/dist/cjs/src/verifyKey.d.ts.map +1 -0
  296. package/dist/cjs/src/verifyKey.js +164 -0
  297. package/dist/cjs/src/wallet.d.ts +15 -0
  298. package/dist/cjs/src/wallet.d.ts.map +1 -0
  299. package/dist/cjs/src/wallet.js +8 -0
  300. package/dist/cjs/src/wasmUtil.d.ts +29 -0
  301. package/dist/cjs/src/wasmUtil.d.ts.map +1 -0
  302. package/dist/cjs/src/wasmUtil.js +87 -0
  303. package/dist/cjs/test/integration/impl/bch/bch.d.ts +2 -0
  304. package/dist/cjs/test/integration/impl/bch/bch.d.ts.map +1 -0
  305. package/dist/cjs/test/integration/impl/bch/bch.js +74 -0
  306. package/dist/cjs/test/unit/address.d.ts +2 -0
  307. package/dist/cjs/test/unit/address.d.ts.map +1 -0
  308. package/dist/cjs/test/unit/address.js +182 -0
  309. package/dist/cjs/test/unit/bip322.d.ts +2 -0
  310. package/dist/cjs/test/unit/bip322.d.ts.map +1 -0
  311. package/dist/cjs/test/unit/bip322.js +361 -0
  312. package/dist/cjs/test/unit/coins.d.ts +2 -0
  313. package/dist/cjs/test/unit/coins.d.ts.map +1 -0
  314. package/dist/cjs/test/unit/coins.js +119 -0
  315. package/dist/cjs/test/unit/customChangeWallet.d.ts +2 -0
  316. package/dist/cjs/test/unit/customChangeWallet.d.ts.map +1 -0
  317. package/dist/cjs/test/unit/customChangeWallet.js +154 -0
  318. package/dist/cjs/test/unit/customSigner.d.ts +3 -0
  319. package/dist/cjs/test/unit/customSigner.d.ts.map +1 -0
  320. package/dist/cjs/test/unit/customSigner.js +108 -0
  321. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts +2 -0
  322. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts.map +1 -0
  323. package/dist/cjs/test/unit/descriptor/NamedDescriptor.js +18 -0
  324. package/dist/cjs/test/unit/descriptor/builder.d.ts +2 -0
  325. package/dist/cjs/test/unit/descriptor/builder.d.ts.map +1 -0
  326. package/dist/cjs/test/unit/descriptor/builder.js +72 -0
  327. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts +2 -0
  328. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  329. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.js +20 -0
  330. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts +2 -0
  331. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts.map +1 -0
  332. package/dist/cjs/test/unit/descriptor/descriptorWallet.js +28 -0
  333. package/dist/cjs/test/unit/descriptorAddress.d.ts +3 -0
  334. package/dist/cjs/test/unit/descriptorAddress.d.ts.map +1 -0
  335. package/dist/cjs/test/unit/descriptorAddress.js +103 -0
  336. package/dist/cjs/test/unit/explainTransaction.d.ts +2 -0
  337. package/dist/cjs/test/unit/explainTransaction.d.ts.map +1 -0
  338. package/dist/cjs/test/unit/explainTransaction.js +74 -0
  339. package/dist/cjs/test/unit/fixtures/bip322/fixtures.d.ts +15 -0
  340. package/dist/cjs/test/unit/fixtures/bip322/fixtures.d.ts.map +1 -0
  341. package/dist/cjs/test/unit/fixtures/bip322/fixtures.js +51 -0
  342. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts +4 -0
  343. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts.map +1 -0
  344. package/dist/cjs/test/unit/fixtures/psbtHexProof.js +9 -0
  345. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts +2 -0
  346. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts.map +1 -0
  347. package/dist/cjs/test/unit/impl/bch/unit/bch.js +138 -0
  348. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts +2 -0
  349. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts.map +1 -0
  350. package/dist/cjs/test/unit/impl/bcha/unit/index.js +47 -0
  351. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts +2 -0
  352. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts.map +1 -0
  353. package/dist/cjs/test/unit/impl/bsv/unit/index.js +32 -0
  354. package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts +2 -0
  355. package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts.map +1 -0
  356. package/dist/cjs/test/unit/impl/btc/unit/btc.js +220 -0
  357. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts +4 -0
  358. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts.map +1 -0
  359. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.js +10 -0
  360. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts +2 -0
  361. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts.map +1 -0
  362. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.js +18 -0
  363. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts +2 -0
  364. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts.map +1 -0
  365. package/dist/cjs/test/unit/impl/btg/unit/index.js +29 -0
  366. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts +2 -0
  367. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts.map +1 -0
  368. package/dist/cjs/test/unit/impl/dash/unit/index.js +32 -0
  369. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts +2 -0
  370. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts.map +1 -0
  371. package/dist/cjs/test/unit/impl/doge/unit/index.js +32 -0
  372. package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts +2 -0
  373. package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts.map +1 -0
  374. package/dist/cjs/test/unit/impl/ltc/unit/index.js +39 -0
  375. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts +2 -0
  376. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts.map +1 -0
  377. package/dist/cjs/test/unit/impl/zec/unit/index.js +29 -0
  378. package/dist/cjs/test/unit/keySignatures.d.ts +2 -0
  379. package/dist/cjs/test/unit/keySignatures.d.ts.map +1 -0
  380. package/dist/cjs/test/unit/keySignatures.js +54 -0
  381. package/dist/cjs/test/unit/keychains.d.ts +2 -0
  382. package/dist/cjs/test/unit/keychains.d.ts.map +1 -0
  383. package/dist/cjs/test/unit/keychains.js +49 -0
  384. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts +2 -0
  385. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts.map +1 -0
  386. package/dist/cjs/test/unit/offlineVault/halfSigned.js +124 -0
  387. package/dist/cjs/test/unit/parseTransaction.d.ts +2 -0
  388. package/dist/cjs/test/unit/parseTransaction.d.ts.map +1 -0
  389. package/dist/cjs/test/unit/parseTransaction.js +125 -0
  390. package/dist/cjs/test/unit/prebuildAndSign.d.ts +2 -0
  391. package/dist/cjs/test/unit/prebuildAndSign.d.ts.map +1 -0
  392. package/dist/cjs/test/unit/prebuildAndSign.js +251 -0
  393. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts +2 -0
  394. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts.map +1 -0
  395. package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +313 -0
  396. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts +2 -0
  397. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts.map +1 -0
  398. package/dist/cjs/test/unit/recovery/crossChainRecovery.js +304 -0
  399. package/dist/cjs/test/unit/recovery/mock.d.ts +28 -0
  400. package/dist/cjs/test/unit/recovery/mock.d.ts.map +1 -0
  401. package/dist/cjs/test/unit/recovery/mock.js +139 -0
  402. package/dist/cjs/test/unit/signTransaction.d.ts +2 -0
  403. package/dist/cjs/test/unit/signTransaction.d.ts.map +1 -0
  404. package/dist/cjs/test/unit/signTransaction.js +244 -0
  405. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts +2 -0
  406. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  407. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.js +32 -0
  408. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts +6 -0
  409. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts.map +1 -0
  410. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.js +17 -0
  411. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts +2 -0
  412. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts.map +1 -0
  413. package/dist/cjs/test/unit/transaction/descriptor/parse.js +101 -0
  414. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts +2 -0
  415. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts.map +1 -0
  416. package/dist/cjs/test/unit/transaction/descriptor/sign.js +44 -0
  417. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts +2 -0
  418. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts.map +1 -0
  419. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.js +48 -0
  420. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts +2 -0
  421. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts.map +1 -0
  422. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.js +129 -0
  423. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.d.ts +2 -0
  424. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.d.ts.map +1 -0
  425. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.js +287 -0
  426. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts +2 -0
  427. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  428. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.js +60 -0
  429. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.d.ts +2 -0
  430. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.d.ts.map +1 -0
  431. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.js +154 -0
  432. package/dist/cjs/test/unit/transaction/outputDifference.d.ts +2 -0
  433. package/dist/cjs/test/unit/transaction/outputDifference.d.ts.map +1 -0
  434. package/dist/cjs/test/unit/transaction/outputDifference.js +117 -0
  435. package/dist/cjs/test/unit/transaction.d.ts +2 -0
  436. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  437. package/dist/cjs/test/unit/transaction.js +309 -0
  438. package/dist/cjs/test/unit/txFormat.d.ts +30 -0
  439. package/dist/cjs/test/unit/txFormat.d.ts.map +1 -0
  440. package/dist/cjs/test/unit/txFormat.js +174 -0
  441. package/dist/cjs/test/unit/util/fixtures.d.ts +14 -0
  442. package/dist/cjs/test/unit/util/fixtures.d.ts.map +1 -0
  443. package/dist/cjs/test/unit/util/fixtures.js +102 -0
  444. package/dist/cjs/test/unit/util/index.d.ts +7 -0
  445. package/dist/cjs/test/unit/util/index.d.ts.map +1 -0
  446. package/dist/cjs/test/unit/util/index.js +23 -0
  447. package/dist/cjs/test/unit/util/keychains.d.ts +26 -0
  448. package/dist/cjs/test/unit/util/keychains.d.ts.map +1 -0
  449. package/dist/cjs/test/unit/util/keychains.js +72 -0
  450. package/dist/cjs/test/unit/util/nockBitGo.d.ts +3 -0
  451. package/dist/cjs/test/unit/util/nockBitGo.d.ts.map +1 -0
  452. package/dist/cjs/test/unit/util/nockBitGo.js +11 -0
  453. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts +8 -0
  454. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts.map +1 -0
  455. package/dist/cjs/test/unit/util/nockIndexerAPI.js +23 -0
  456. package/dist/cjs/test/unit/util/transaction.d.ts +27 -0
  457. package/dist/cjs/test/unit/util/transaction.d.ts.map +1 -0
  458. package/dist/cjs/test/unit/util/transaction.js +127 -0
  459. package/dist/cjs/test/unit/util/unspents.d.ts +12 -0
  460. package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -0
  461. package/dist/cjs/test/unit/util/unspents.js +108 -0
  462. package/dist/cjs/test/unit/util/utxoCoins.d.ts +21 -0
  463. package/dist/cjs/test/unit/util/utxoCoins.d.ts.map +1 -0
  464. package/dist/cjs/test/unit/util/utxoCoins.js +126 -0
  465. package/dist/cjs/test/unit/util/wallet.d.ts +4 -0
  466. package/dist/cjs/test/unit/util/wallet.d.ts.map +1 -0
  467. package/dist/cjs/test/unit/util/wallet.js +9 -0
  468. package/dist/cjs/test/unit/verifyTransaction.d.ts +2 -0
  469. package/dist/cjs/test/unit/verifyTransaction.d.ts.map +1 -0
  470. package/dist/cjs/test/unit/verifyTransaction.js +327 -0
  471. package/dist/cjs/test/unit/wallet.d.ts +2 -0
  472. package/dist/cjs/test/unit/wallet.d.ts.map +1 -0
  473. package/dist/cjs/test/unit/wallet.js +248 -0
  474. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  475. package/dist/esm/abstractUtxoCoin.d.ts +438 -0
  476. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -0
  477. package/dist/esm/abstractUtxoCoin.js +617 -0
  478. package/dist/esm/address/fixedScript.d.ts +44 -0
  479. package/dist/esm/address/fixedScript.d.ts.map +1 -0
  480. package/dist/esm/address/fixedScript.js +97 -0
  481. package/dist/esm/address/index.d.ts +2 -0
  482. package/dist/esm/address/index.d.ts.map +1 -0
  483. package/dist/esm/address/index.js +2 -0
  484. package/dist/esm/config.d.ts +9 -0
  485. package/dist/esm/config.js +11 -0
  486. package/dist/esm/descriptor/NamedDescriptor.d.ts +20 -0
  487. package/dist/esm/descriptor/NamedDescriptor.d.ts.map +1 -0
  488. package/dist/esm/descriptor/NamedDescriptor.js +39 -0
  489. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
  490. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
  491. package/dist/esm/descriptor/assertDescriptorWalletAddress.js +27 -0
  492. package/dist/esm/descriptor/builder/builder.d.ts +13 -0
  493. package/dist/esm/descriptor/builder/builder.d.ts.map +1 -0
  494. package/dist/esm/descriptor/builder/builder.js +34 -0
  495. package/dist/esm/descriptor/builder/index.d.ts +3 -0
  496. package/dist/esm/descriptor/builder/index.d.ts.map +1 -0
  497. package/dist/esm/descriptor/builder/index.js +3 -0
  498. package/dist/esm/descriptor/builder/parse.d.ts +5 -0
  499. package/dist/esm/descriptor/builder/parse.d.ts.map +1 -0
  500. package/dist/esm/descriptor/builder/parse.js +112 -0
  501. package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
  502. package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
  503. package/dist/esm/descriptor/createWallet/createDescriptorWallet.js +37 -0
  504. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts +12 -0
  505. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  506. package/dist/esm/descriptor/createWallet/createDescriptors.js +29 -0
  507. package/dist/esm/descriptor/createWallet/index.d.ts +3 -0
  508. package/dist/esm/descriptor/createWallet/index.d.ts.map +1 -0
  509. package/dist/esm/descriptor/createWallet/index.js +3 -0
  510. package/dist/esm/descriptor/descriptorWallet.d.ts +19 -0
  511. package/dist/esm/descriptor/descriptorWallet.d.ts.map +1 -0
  512. package/dist/esm/descriptor/descriptorWallet.js +16 -0
  513. package/dist/esm/descriptor/index.d.ts +8 -0
  514. package/dist/esm/descriptor/index.d.ts.map +1 -0
  515. package/dist/esm/descriptor/index.js +7 -0
  516. package/dist/esm/descriptor/validatePolicy.d.ts +22 -0
  517. package/dist/esm/descriptor/validatePolicy.d.ts.map +1 -0
  518. package/dist/esm/descriptor/validatePolicy.js +80 -0
  519. package/dist/esm/impl/bch/bch.d.ts +22 -0
  520. package/dist/esm/impl/bch/bch.d.ts.map +1 -0
  521. package/dist/esm/impl/bch/bch.js +38 -0
  522. package/dist/esm/impl/bch/index.d.ts +3 -0
  523. package/dist/esm/impl/bch/index.d.ts.map +1 -0
  524. package/dist/esm/impl/bch/index.js +3 -0
  525. package/dist/esm/impl/bch/tbch.d.ts +12 -0
  526. package/dist/esm/impl/bch/tbch.d.ts.map +1 -0
  527. package/dist/esm/impl/bch/tbch.js +11 -0
  528. package/dist/esm/impl/bcha/bcha.d.ts +9 -0
  529. package/dist/esm/impl/bcha/bcha.d.ts.map +1 -0
  530. package/dist/esm/impl/bcha/bcha.js +11 -0
  531. package/dist/esm/impl/bcha/index.d.ts +3 -0
  532. package/dist/esm/impl/bcha/index.d.ts.map +1 -0
  533. package/dist/esm/impl/bcha/index.js +3 -0
  534. package/dist/esm/impl/bcha/tbcha.d.ts +12 -0
  535. package/dist/esm/impl/bcha/tbcha.d.ts.map +1 -0
  536. package/dist/esm/impl/bcha/tbcha.js +11 -0
  537. package/dist/esm/impl/bsv/bsv.d.ts +9 -0
  538. package/dist/esm/impl/bsv/bsv.d.ts.map +1 -0
  539. package/dist/esm/impl/bsv/bsv.js +11 -0
  540. package/dist/esm/impl/bsv/index.d.ts +3 -0
  541. package/dist/esm/impl/bsv/index.d.ts.map +1 -0
  542. package/dist/esm/impl/bsv/index.js +3 -0
  543. package/dist/esm/impl/bsv/tbsv.d.ts +12 -0
  544. package/dist/esm/impl/bsv/tbsv.d.ts.map +1 -0
  545. package/dist/esm/impl/bsv/tbsv.js +11 -0
  546. package/dist/esm/impl/btc/btc.d.ts +15 -0
  547. package/dist/esm/impl/btc/btc.d.ts.map +1 -0
  548. package/dist/esm/impl/btc/btc.js +18 -0
  549. package/dist/esm/impl/btc/index.d.ts +7 -0
  550. package/dist/esm/impl/btc/index.d.ts.map +1 -0
  551. package/dist/esm/impl/btc/index.js +7 -0
  552. package/dist/esm/impl/btc/inscriptionBuilder.d.ts +61 -0
  553. package/dist/esm/impl/btc/inscriptionBuilder.d.ts.map +1 -0
  554. package/dist/esm/impl/btc/inscriptionBuilder.js +164 -0
  555. package/dist/esm/impl/btc/tbtc.d.ts +12 -0
  556. package/dist/esm/impl/btc/tbtc.d.ts.map +1 -0
  557. package/dist/esm/impl/btc/tbtc.js +11 -0
  558. package/dist/esm/impl/btc/tbtc4.d.ts +12 -0
  559. package/dist/esm/impl/btc/tbtc4.d.ts.map +1 -0
  560. package/dist/esm/impl/btc/tbtc4.js +11 -0
  561. package/dist/esm/impl/btc/tbtcbgsig.d.ts +12 -0
  562. package/dist/esm/impl/btc/tbtcbgsig.d.ts.map +1 -0
  563. package/dist/esm/impl/btc/tbtcbgsig.js +11 -0
  564. package/dist/esm/impl/btc/tbtcsig.d.ts +12 -0
  565. package/dist/esm/impl/btc/tbtcsig.d.ts.map +1 -0
  566. package/dist/esm/impl/btc/tbtcsig.js +11 -0
  567. package/dist/esm/impl/btg/btg.d.ts +9 -0
  568. package/dist/esm/impl/btg/btg.d.ts.map +1 -0
  569. package/dist/esm/impl/btg/btg.js +11 -0
  570. package/dist/esm/impl/btg/index.d.ts +2 -0
  571. package/dist/esm/impl/btg/index.d.ts.map +1 -0
  572. package/dist/esm/impl/btg/index.js +2 -0
  573. package/dist/esm/impl/dash/dash.d.ts +9 -0
  574. package/dist/esm/impl/dash/dash.d.ts.map +1 -0
  575. package/dist/esm/impl/dash/dash.js +11 -0
  576. package/dist/esm/impl/dash/index.d.ts +3 -0
  577. package/dist/esm/impl/dash/index.d.ts.map +1 -0
  578. package/dist/esm/impl/dash/index.js +3 -0
  579. package/dist/esm/impl/dash/tdash.d.ts +12 -0
  580. package/dist/esm/impl/dash/tdash.d.ts.map +1 -0
  581. package/dist/esm/impl/dash/tdash.js +11 -0
  582. package/dist/esm/impl/doge/doge.d.ts +35 -0
  583. package/dist/esm/impl/doge/doge.d.ts.map +1 -0
  584. package/dist/esm/impl/doge/doge.js +75 -0
  585. package/dist/esm/impl/doge/index.d.ts +3 -0
  586. package/dist/esm/impl/doge/index.d.ts.map +1 -0
  587. package/dist/esm/impl/doge/index.js +3 -0
  588. package/dist/esm/impl/doge/tdoge.d.ts +12 -0
  589. package/dist/esm/impl/doge/tdoge.d.ts.map +1 -0
  590. package/dist/esm/impl/doge/tdoge.js +11 -0
  591. package/dist/esm/impl/index.d.ts +10 -0
  592. package/dist/esm/impl/index.d.ts.map +1 -0
  593. package/dist/esm/impl/index.js +10 -0
  594. package/dist/esm/impl/ltc/index.d.ts +3 -0
  595. package/dist/esm/impl/ltc/index.d.ts.map +1 -0
  596. package/dist/esm/impl/ltc/index.js +3 -0
  597. package/dist/esm/impl/ltc/ltc.d.ts +9 -0
  598. package/dist/esm/impl/ltc/ltc.d.ts.map +1 -0
  599. package/dist/esm/impl/ltc/ltc.js +16 -0
  600. package/dist/esm/impl/ltc/tltc.d.ts +9 -0
  601. package/dist/esm/impl/ltc/tltc.d.ts.map +1 -0
  602. package/dist/esm/impl/ltc/tltc.js +15 -0
  603. package/dist/esm/impl/zec/index.d.ts +3 -0
  604. package/dist/esm/impl/zec/index.d.ts.map +1 -0
  605. package/dist/esm/impl/zec/index.js +3 -0
  606. package/dist/esm/impl/zec/tzec.d.ts +9 -0
  607. package/dist/esm/impl/zec/tzec.d.ts.map +1 -0
  608. package/dist/esm/impl/zec/tzec.js +11 -0
  609. package/dist/esm/impl/zec/zec.d.ts +12 -0
  610. package/dist/esm/impl/zec/zec.d.ts.map +1 -0
  611. package/dist/esm/impl/zec/zec.js +11 -0
  612. package/dist/esm/index.d.ts +23 -0
  613. package/dist/esm/index.d.ts.map +1 -0
  614. package/dist/esm/index.js +23 -0
  615. package/dist/esm/keychains.d.ts +57 -0
  616. package/dist/esm/keychains.d.ts.map +1 -0
  617. package/dist/esm/keychains.js +100 -0
  618. package/dist/esm/names.d.ts +36 -0
  619. package/dist/esm/names.d.ts.map +1 -0
  620. package/dist/esm/names.js +184 -0
  621. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts +9 -0
  622. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
  623. package/dist/esm/offlineVault/OfflineVaultHalfSigned.js +21 -0
  624. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts +46 -0
  625. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
  626. package/dist/esm/offlineVault/OfflineVaultSignable.js +18 -0
  627. package/dist/esm/offlineVault/TransactionExplanation.d.ts +16 -0
  628. package/dist/esm/offlineVault/TransactionExplanation.d.ts.map +1 -0
  629. package/dist/esm/offlineVault/TransactionExplanation.js +12 -0
  630. package/dist/esm/offlineVault/descriptor/index.d.ts +2 -0
  631. package/dist/esm/offlineVault/descriptor/index.d.ts.map +1 -0
  632. package/dist/esm/offlineVault/descriptor/index.js +2 -0
  633. package/dist/esm/offlineVault/descriptor/transaction.d.ts +40 -0
  634. package/dist/esm/offlineVault/descriptor/transaction.d.ts.map +1 -0
  635. package/dist/esm/offlineVault/descriptor/transaction.js +41 -0
  636. package/dist/esm/offlineVault/index.d.ts +6 -0
  637. package/dist/esm/offlineVault/index.d.ts.map +1 -0
  638. package/dist/esm/offlineVault/index.js +4 -0
  639. package/dist/esm/recovery/RecoveryProvider.d.ts +20 -0
  640. package/dist/esm/recovery/RecoveryProvider.d.ts.map +1 -0
  641. package/dist/esm/recovery/RecoveryProvider.js +19 -0
  642. package/dist/esm/recovery/backupKeyRecovery.d.ts +90 -0
  643. package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -0
  644. package/dist/esm/recovery/backupKeyRecovery.js +330 -0
  645. package/dist/esm/recovery/baseApi.d.ts +24 -0
  646. package/dist/esm/recovery/baseApi.d.ts.map +1 -0
  647. package/dist/esm/recovery/baseApi.js +64 -0
  648. package/dist/esm/recovery/coingeckoApi.d.ts +6 -0
  649. package/dist/esm/recovery/coingeckoApi.d.ts.map +1 -0
  650. package/dist/esm/recovery/coingeckoApi.js +40 -0
  651. package/dist/esm/recovery/crossChainRecovery.d.ts +97 -0
  652. package/dist/esm/recovery/crossChainRecovery.d.ts.map +1 -0
  653. package/dist/esm/recovery/crossChainRecovery.js +293 -0
  654. package/dist/esm/recovery/index.d.ts +7 -0
  655. package/dist/{src → esm}/recovery/index.d.ts.map +1 -1
  656. package/dist/esm/recovery/index.js +7 -0
  657. package/dist/esm/recovery/mempoolApi.d.ts +7 -0
  658. package/dist/{src → esm}/recovery/mempoolApi.d.ts.map +1 -1
  659. package/dist/esm/recovery/mempoolApi.js +29 -0
  660. package/dist/esm/recovery/psbt.d.ts +62 -0
  661. package/dist/esm/recovery/psbt.d.ts.map +1 -0
  662. package/dist/esm/recovery/psbt.js +145 -0
  663. package/dist/esm/tnumber.d.ts +4 -0
  664. package/dist/esm/tnumber.d.ts.map +1 -0
  665. package/dist/esm/tnumber.js +9 -0
  666. package/dist/esm/transaction/bip322.d.ts +27 -0
  667. package/dist/esm/transaction/bip322.d.ts.map +1 -0
  668. package/dist/esm/transaction/bip322.js +101 -0
  669. package/dist/esm/transaction/common/verifyPayGoAmount.d.ts +1 -0
  670. package/dist/esm/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
  671. package/dist/esm/transaction/common/verifyPayGoAmount.js +1 -0
  672. package/dist/esm/transaction/decode.d.ts +12 -0
  673. package/dist/esm/transaction/decode.d.ts.map +1 -0
  674. package/dist/esm/transaction/decode.js +46 -0
  675. package/dist/esm/transaction/descriptor/explainPsbt.d.ts +5 -0
  676. package/dist/esm/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  677. package/dist/esm/transaction/descriptor/explainPsbt.js +42 -0
  678. package/dist/esm/transaction/descriptor/index.d.ts +7 -0
  679. package/dist/esm/transaction/descriptor/index.d.ts.map +1 -0
  680. package/dist/esm/transaction/descriptor/index.js +6 -0
  681. package/dist/esm/transaction/descriptor/parse.d.ts +19 -0
  682. package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -0
  683. package/dist/esm/transaction/descriptor/parse.js +86 -0
  684. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts +14 -0
  685. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
  686. package/dist/esm/transaction/descriptor/parseToAmountType.js +55 -0
  687. package/dist/esm/transaction/descriptor/recipient.d.ts +5 -0
  688. package/dist/esm/transaction/descriptor/recipient.d.ts.map +1 -0
  689. package/dist/esm/transaction/descriptor/recipient.js +2 -0
  690. package/dist/esm/transaction/descriptor/signPsbt.d.ts +24 -0
  691. package/dist/esm/transaction/descriptor/signPsbt.d.ts.map +1 -0
  692. package/dist/esm/transaction/descriptor/signPsbt.js +39 -0
  693. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +37 -0
  694. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
  695. package/dist/esm/transaction/descriptor/verifyTransaction.js +71 -0
  696. package/dist/esm/transaction/explainTransaction.d.ts +20 -0
  697. package/dist/esm/transaction/explainTransaction.d.ts.map +1 -0
  698. package/dist/esm/transaction/explainTransaction.js +53 -0
  699. package/dist/esm/transaction/fetchInputs.d.ts +27 -0
  700. package/dist/esm/transaction/fetchInputs.d.ts.map +1 -0
  701. package/dist/esm/transaction/fetchInputs.js +74 -0
  702. package/dist/esm/transaction/fixedScript/SigningError.d.ts +26 -0
  703. package/dist/esm/transaction/fixedScript/SigningError.d.ts.map +1 -0
  704. package/dist/esm/transaction/fixedScript/SigningError.js +28 -0
  705. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts +11 -0
  706. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  707. package/dist/esm/transaction/fixedScript/explainPsbtWasm.js +64 -0
  708. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +74 -0
  709. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  710. package/dist/esm/transaction/fixedScript/explainTransaction.js +305 -0
  711. package/dist/esm/transaction/fixedScript/index.d.ts +10 -0
  712. package/dist/esm/transaction/fixedScript/index.d.ts.map +1 -0
  713. package/dist/esm/transaction/fixedScript/index.js +9 -0
  714. package/dist/esm/transaction/fixedScript/musig2.d.ts +4 -0
  715. package/dist/esm/transaction/fixedScript/musig2.d.ts.map +1 -0
  716. package/dist/esm/transaction/fixedScript/musig2.js +2 -0
  717. package/dist/esm/transaction/fixedScript/parseOutput.d.ts +28 -0
  718. package/dist/esm/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  719. package/dist/esm/transaction/fixedScript/parseOutput.js +209 -0
  720. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts +8 -0
  721. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  722. package/dist/esm/transaction/fixedScript/parseTransaction.js +201 -0
  723. package/dist/esm/transaction/fixedScript/replayProtection.d.ts +9 -0
  724. package/dist/esm/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  725. package/dist/esm/transaction/fixedScript/replayProtection.js +40 -0
  726. package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts +32 -0
  727. package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -0
  728. package/dist/esm/transaction/fixedScript/signLegacyTransaction.js +115 -0
  729. package/dist/esm/transaction/fixedScript/signPsbtUtxolib.d.ts +21 -0
  730. package/dist/esm/transaction/fixedScript/signPsbtUtxolib.d.ts.map +1 -0
  731. package/dist/esm/transaction/fixedScript/signPsbtUtxolib.js +117 -0
  732. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts +18 -0
  733. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
  734. package/dist/esm/transaction/fixedScript/signPsbtWasm.js +98 -0
  735. package/dist/esm/transaction/fixedScript/signTransaction.d.ts +26 -0
  736. package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -0
  737. package/dist/esm/transaction/fixedScript/signTransaction.js +64 -0
  738. package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts +21 -0
  739. package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  740. package/dist/esm/transaction/fixedScript/verifyTransaction.js +160 -0
  741. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts +9 -0
  742. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
  743. package/dist/esm/transaction/getPayGoVerificationPubkey.js +17 -0
  744. package/dist/esm/transaction/index.d.ts +8 -0
  745. package/dist/esm/transaction/index.d.ts.map +1 -0
  746. package/dist/esm/transaction/index.js +8 -0
  747. package/dist/esm/transaction/outputDifference.d.ts +44 -0
  748. package/dist/esm/transaction/outputDifference.d.ts.map +1 -0
  749. package/dist/esm/transaction/outputDifference.js +45 -0
  750. package/dist/esm/transaction/parseTransaction.d.ts +4 -0
  751. package/dist/esm/transaction/parseTransaction.d.ts.map +1 -0
  752. package/dist/esm/transaction/parseTransaction.js +12 -0
  753. package/dist/esm/transaction/recipient.d.ts +34 -0
  754. package/dist/esm/transaction/recipient.d.ts.map +1 -0
  755. package/dist/esm/transaction/recipient.js +63 -0
  756. package/dist/esm/transaction/signTransaction.d.ts +6 -0
  757. package/dist/esm/transaction/signTransaction.d.ts.map +1 -0
  758. package/dist/esm/transaction/signTransaction.js +66 -0
  759. package/dist/esm/transaction/types.d.ts +49 -0
  760. package/dist/esm/transaction/types.d.ts.map +1 -0
  761. package/dist/esm/transaction/types.js +4 -0
  762. package/dist/esm/transaction/verifyTransaction.d.ts +4 -0
  763. package/dist/esm/transaction/verifyTransaction.d.ts.map +1 -0
  764. package/dist/esm/transaction/verifyTransaction.js +14 -0
  765. package/dist/esm/unspent.d.ts +55 -0
  766. package/dist/esm/unspent.d.ts.map +1 -0
  767. package/dist/esm/unspent.js +8 -0
  768. package/dist/esm/verifyKey.d.ts +29 -0
  769. package/dist/esm/verifyKey.d.ts.map +1 -0
  770. package/dist/esm/verifyKey.js +123 -0
  771. package/dist/esm/wallet.d.ts +15 -0
  772. package/dist/esm/wallet.d.ts.map +1 -0
  773. package/dist/esm/wallet.js +5 -0
  774. package/dist/esm/wasmUtil.d.ts +29 -0
  775. package/dist/esm/wasmUtil.d.ts.map +1 -0
  776. package/dist/esm/wasmUtil.js +47 -0
  777. package/package.json +47 -18
  778. package/.eslintignore +0 -5
  779. package/CHANGELOG.md +0 -235
  780. package/dist/src/abstractUtxoCoin.d.ts +0 -392
  781. package/dist/src/abstractUtxoCoin.d.ts.map +0 -1
  782. package/dist/src/abstractUtxoCoin.js +0 -931
  783. package/dist/src/config.js +0 -14
  784. package/dist/src/index.d.ts +0 -6
  785. package/dist/src/index.d.ts.map +0 -1
  786. package/dist/src/index.js +0 -18
  787. package/dist/src/parseOutput.d.ts +0 -22
  788. package/dist/src/parseOutput.d.ts.map +0 -1
  789. package/dist/src/parseOutput.js +0 -170
  790. package/dist/src/recovery/RecoveryProvider.d.ts.map +0 -1
  791. package/dist/src/recovery/RecoveryProvider.js +0 -24
  792. package/dist/src/recovery/backupKeyRecovery.d.ts +0 -62
  793. package/dist/src/recovery/backupKeyRecovery.d.ts.map +0 -1
  794. package/dist/src/recovery/backupKeyRecovery.js +0 -293
  795. package/dist/src/recovery/baseApi.d.ts.map +0 -1
  796. package/dist/src/recovery/baseApi.js +0 -73
  797. package/dist/src/recovery/coingeckoApi.d.ts.map +0 -1
  798. package/dist/src/recovery/coingeckoApi.js +0 -47
  799. package/dist/src/recovery/crossChainRecovery.d.ts.map +0 -1
  800. package/dist/src/recovery/crossChainRecovery.js +0 -294
  801. package/dist/src/recovery/mempoolApi.js +0 -33
  802. package/dist/src/recovery/smartbitApi.d.ts +0 -11
  803. package/dist/src/recovery/smartbitApi.d.ts.map +0 -1
  804. package/dist/src/recovery/smartbitApi.js +0 -36
  805. package/dist/src/replayProtection.d.ts +0 -4
  806. package/dist/src/replayProtection.d.ts.map +0 -1
  807. package/dist/src/replayProtection.js +0 -21
  808. package/dist/src/sign.d.ts +0 -31
  809. package/dist/src/sign.d.ts.map +0 -1
  810. package/dist/src/sign.js +0 -104
  811. package/dist/tsconfig.tsbuildinfo +0 -8015
  812. /package/dist/{src → cjs/src}/config.d.ts +0 -0
  813. /package/dist/{src → cjs/src}/recovery/mempoolApi.d.ts +0 -0
  814. /package/dist/{src → esm}/config.d.ts.map +0 -0
@@ -0,0 +1,342 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.explainPsbt = explainPsbt;
37
+ exports.explainLegacyTx = explainLegacyTx;
38
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
39
+ const utxo_core_1 = require("@bitgo-beta/utxo-core");
40
+ const secp256k1_1 = require("@bitgo-beta/secp256k1");
41
+ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
42
+ const utxocore = __importStar(require("@bitgo-beta/utxo-core"));
43
+ const recipient_1 = require("../recipient");
44
+ const getPayGoVerificationPubkey_1 = require("../getPayGoVerificationPubkey");
45
+ const keychains_1 = require("../../keychains");
46
+ const names_1 = require("../../names");
47
+ function toChangeOutput(txOutput, coinName, changeInfo) {
48
+ if (!changeInfo) {
49
+ return undefined;
50
+ }
51
+ const address = (0, recipient_1.toExtendedAddressFormat)(txOutput.script, coinName);
52
+ const change = changeInfo.find((change) => change.address === address);
53
+ if (!change) {
54
+ return undefined;
55
+ }
56
+ return {
57
+ address,
58
+ amount: txOutput.value.toString(),
59
+ chain: change.chain,
60
+ index: change.index,
61
+ external: false,
62
+ };
63
+ }
64
+ function outputSum(outputs) {
65
+ return outputs.reduce((sum, output) => sum + BigInt(output.amount), BigInt(0));
66
+ }
67
+ function explainCommon(tx, params, coinName) {
68
+ const displayOrder = ['id', 'outputAmount', 'changeAmount', 'outputs', 'changeOutputs'];
69
+ const changeOutputs = [];
70
+ const customChangeOutputs = [];
71
+ const externalOutputs = [];
72
+ const { changeInfo, customChangeInfo } = params;
73
+ tx.outs.forEach((currentOutput) => {
74
+ // Try to encode the script pubkey with an address. If it fails, try to parse it as an OP_RETURN output with the prefix.
75
+ // If that fails, then it is an unrecognized scriptPubkey and should fail
76
+ const currentAddress = (0, recipient_1.toExtendedAddressFormat)(currentOutput.script, coinName);
77
+ const currentAmount = BigInt(currentOutput.value);
78
+ const changeOutput = toChangeOutput(currentOutput, coinName, changeInfo);
79
+ if (changeOutput) {
80
+ changeOutputs.push(changeOutput);
81
+ return;
82
+ }
83
+ const customChangeOutput = toChangeOutput(currentOutput, coinName, customChangeInfo);
84
+ if (customChangeOutput) {
85
+ customChangeOutputs.push(customChangeOutput);
86
+ return;
87
+ }
88
+ externalOutputs.push({
89
+ address: currentAddress,
90
+ amount: currentAmount.toString(),
91
+ // If changeInfo has a length greater than or equal to zero, it means that the change information
92
+ // was provided to the function but the output was not identified as change. In this case,
93
+ // the output is external, and we can set it as so. If changeInfo is undefined, it means we were
94
+ // given no information about change outputs, so we can't determine anything about the output,
95
+ // so we leave it undefined.
96
+ external: changeInfo ? true : undefined,
97
+ });
98
+ });
99
+ const outputDetails = {
100
+ outputs: externalOutputs,
101
+ outputAmount: outputSum(externalOutputs).toString(),
102
+ changeOutputs,
103
+ changeAmount: outputSum(changeOutputs).toString(),
104
+ customChangeAmount: outputSum(customChangeOutputs).toString(),
105
+ customChangeOutputs,
106
+ };
107
+ let fee;
108
+ let locktime;
109
+ if (params.feeInfo) {
110
+ displayOrder.push('fee');
111
+ fee = params.feeInfo;
112
+ }
113
+ if (Number.isInteger(tx.locktime) && tx.locktime > 0) {
114
+ displayOrder.push('locktime');
115
+ locktime = tx.locktime;
116
+ }
117
+ return { displayOrder, id: tx.getId(), ...outputDetails, fee, locktime };
118
+ }
119
+ function getRootWalletKeys(params) {
120
+ if (params.pubs instanceof utxo_lib_1.bitgo.RootWalletKeys) {
121
+ return params.pubs;
122
+ }
123
+ const keys = params.pubs?.map((xpub) => secp256k1_1.bip32.fromBase58(xpub));
124
+ return keys && keys.length === 3 ? new utxo_lib_1.bitgo.RootWalletKeys(keys) : undefined;
125
+ }
126
+ function getPsbtInputSignaturesCount(psbt, params) {
127
+ const rootWalletKeys = getRootWalletKeys(params);
128
+ return rootWalletKeys
129
+ ? utxo_lib_1.bitgo.getSignatureValidationArrayPsbt(psbt, rootWalletKeys).map((sv) => sv[1].filter((v) => v).length)
130
+ : Array(psbt.data.inputs.length).fill(0);
131
+ }
132
+ function getTxInputSignaturesCount(tx, params, coinName) {
133
+ const network = (0, names_1.getNetworkFromCoinName)(coinName);
134
+ const prevOutputs = params.txInfo?.unspents?.map((u) => utxo_lib_1.bitgo.toOutput(u, network));
135
+ const rootWalletKeys = getRootWalletKeys(params);
136
+ const { unspents = [] } = params.txInfo ?? {};
137
+ // get the number of signatures per input
138
+ return tx.ins.map((input, idx) => {
139
+ if (unspents.length !== tx.ins.length) {
140
+ return 0;
141
+ }
142
+ if (!prevOutputs) {
143
+ throw new Error(`invalid state`);
144
+ }
145
+ if (!rootWalletKeys) {
146
+ // no pub keys or incorrect number of pub keys
147
+ return 0;
148
+ }
149
+ try {
150
+ return utxo_lib_1.bitgo.verifySignatureWithUnspent(tx, idx, unspents, rootWalletKeys).filter((v) => v).length;
151
+ }
152
+ catch (e) {
153
+ // some other error occurred and we can't validate the signatures
154
+ return 0;
155
+ }
156
+ });
157
+ }
158
+ function getChainAndIndexFromBip32Derivations(output) {
159
+ const derivations = output.bip32Derivation ?? output.tapBip32Derivation ?? undefined;
160
+ if (!derivations) {
161
+ return undefined;
162
+ }
163
+ const paths = derivations.map((d) => d.path);
164
+ if (!paths || paths.length !== 3) {
165
+ throw new Error('expected 3 paths in bip32Derivation or tapBip32Derivation');
166
+ }
167
+ if (!paths.every((p) => paths[0] === p)) {
168
+ throw new Error('expected all paths to be the same');
169
+ }
170
+ paths.forEach((path) => {
171
+ if (paths[0] !== path) {
172
+ throw new Error('Unable to get a single chain and index on the output because there are different paths for different keys');
173
+ }
174
+ });
175
+ return utxolib.bitgo.getChainAndIndexFromPath(paths[0]);
176
+ }
177
+ function getChangeInfo(psbt, walletKeys) {
178
+ try {
179
+ walletKeys = walletKeys ?? utxolib.bitgo.getSortedRootNodes(psbt);
180
+ }
181
+ catch (e) {
182
+ if (e instanceof utxolib.bitgo.ErrorNoMultiSigInputFound) {
183
+ return undefined;
184
+ }
185
+ throw e;
186
+ }
187
+ return utxolib.bitgo.findWalletOutputIndices(psbt, walletKeys).map((i) => {
188
+ const derivationInformation = getChainAndIndexFromBip32Derivations(psbt.data.outputs[i]);
189
+ if (!derivationInformation) {
190
+ throw new Error('could not find derivation information on bip32Derivation or tapBip32Derivation');
191
+ }
192
+ return {
193
+ address: utxolib.address.fromOutputScript(psbt.txOutputs[i].script, psbt.network),
194
+ external: false,
195
+ ...derivationInformation,
196
+ };
197
+ });
198
+ }
199
+ /**
200
+ * Extract PayGo address proof information from the PSBT if present
201
+ * @returns Information about the PayGo proof, including the output index and address
202
+ */
203
+ function getPayGoVerificationInfo(psbt, coinName) {
204
+ let outputIndex = undefined;
205
+ let address = undefined;
206
+ // Check if this PSBT has any PayGo address proofs
207
+ if (!utxocore.paygo.psbtOutputIncludesPaygoAddressProof(psbt)) {
208
+ return undefined;
209
+ }
210
+ // This pulls the pubkey depending on given network
211
+ const verificationPubkey = (0, getPayGoVerificationPubkey_1.getPayGoVerificationPubkey)(coinName);
212
+ // find which output index that contains the PayGo proof
213
+ outputIndex = utxocore.paygo.getPayGoAddressProofOutputIndex(psbt);
214
+ if (outputIndex === undefined || !verificationPubkey) {
215
+ return undefined;
216
+ }
217
+ const network = (0, names_1.getNetworkFromCoinName)(coinName);
218
+ const output = psbt.txOutputs[outputIndex];
219
+ address = utxolib.address.fromOutputScript(output.script, network);
220
+ if (!address) {
221
+ throw new Error(`Can not derive address ${address} Pay Go Attestation.`);
222
+ }
223
+ return { outputIndex, verificationPubkey };
224
+ }
225
+ /**
226
+ * Extract the BIP322 messages and addresses from the PSBT inputs and perform
227
+ * verification on the transaction to ensure that it meets the BIP322 requirements.
228
+ * @returns An array of objects containing the message and address for each input,
229
+ * or undefined if no BIP322 messages are found.
230
+ */
231
+ function getBip322MessageInfoAndVerify(psbt, coinName) {
232
+ const network = (0, names_1.getNetworkFromCoinName)(coinName);
233
+ const bip322Messages = [];
234
+ for (let i = 0; i < psbt.data.inputs.length; i++) {
235
+ const message = utxo_core_1.bip322.getBip322ProofMessageAtIndex(psbt, i);
236
+ if (message) {
237
+ const input = psbt.data.inputs[i];
238
+ if (!input.witnessUtxo) {
239
+ throw new Error(`Missing witnessUtxo for input index ${i}`);
240
+ }
241
+ const scriptPubKey = input.witnessUtxo.script;
242
+ // Verify that the toSpend transaction can be recreated in the PSBT and is encoded correctly in the nonWitnessUtxo
243
+ const toSpend = utxo_core_1.bip322.buildToSpendTransaction(scriptPubKey, message);
244
+ // Verify that the toSpend transaction ID matches the input's referenced transaction ID
245
+ if (toSpend.getId() !== utxolib.bitgo.getOutputIdForInput(psbt.txInputs[i]).txid) {
246
+ throw new Error(`ToSpend transaction ID does not match the input at index ${i}`);
247
+ }
248
+ // Verify the input specifics
249
+ if (psbt.txInputs[i].sequence !== 0) {
250
+ throw new Error(`Unexpected sequence number at input index ${i}: ${psbt.txInputs[i].sequence}. Expected 0.`);
251
+ }
252
+ if (psbt.txInputs[i].index !== 0) {
253
+ throw new Error(`Unexpected input index at position ${i}: ${psbt.txInputs[i].index}. Expected 0.`);
254
+ }
255
+ bip322Messages.push({
256
+ message: message.toString('utf8'),
257
+ address: utxolib.address.fromOutputScript(scriptPubKey, network),
258
+ });
259
+ }
260
+ }
261
+ if (bip322Messages.length > 0) {
262
+ // If there is a BIP322 message in any input, all inputs must have one.
263
+ if (bip322Messages.length !== psbt.data.inputs.length) {
264
+ throw new Error('Inconsistent BIP322 messages across inputs.');
265
+ }
266
+ // Verify the transaction specifics for BIP322
267
+ if (psbt.version !== 0 && psbt.version !== 2) {
268
+ throw new Error(`Unsupported PSBT version for BIP322: ${psbt.version}. Expected 0 `);
269
+ }
270
+ if (psbt.data.outputs.length !== 1 ||
271
+ psbt.txOutputs[0].script.toString('hex') !== '6a' ||
272
+ psbt.txOutputs[0].value !== 0n) {
273
+ throw new Error(`Invalid PSBT outputs for BIP322. Expected exactly one OP_RETURN output with zero value.`);
274
+ }
275
+ return bip322Messages;
276
+ }
277
+ return undefined;
278
+ }
279
+ /**
280
+ * Decompose a raw psbt into useful information, such as the total amounts,
281
+ * change amounts, and transaction outputs.
282
+ *
283
+ * @param psbt {bitgo.UtxoPsbt} The PSBT to explain
284
+ * @param pubs {bitgo.RootWalletKeys | string[]} The public keys to use for the explanation
285
+ * @param coinName {UtxoCoinName} The coin name to use for the explanation
286
+ * @param strict {boolean} Whether to throw an error if the PayGo address proof is invalid
287
+ */
288
+ function explainPsbt(psbt, params, coinName, { strict = true } = {}) {
289
+ const network = (0, names_1.getNetworkFromCoinName)(coinName);
290
+ const payGoVerificationInfo = getPayGoVerificationInfo(psbt, coinName);
291
+ if (payGoVerificationInfo) {
292
+ try {
293
+ utxocore.paygo.verifyPayGoAddressProof(psbt, payGoVerificationInfo.outputIndex, secp256k1_1.bip32.fromBase58(payGoVerificationInfo.verificationPubkey, utxolib.networks.bitcoin).publicKey);
294
+ }
295
+ catch (e) {
296
+ if (strict) {
297
+ throw e;
298
+ }
299
+ console.error(e);
300
+ }
301
+ }
302
+ const messages = getBip322MessageInfoAndVerify(psbt, coinName);
303
+ const changeInfo = getChangeInfo(psbt);
304
+ const customChangeInfo = params.customChangePubs
305
+ ? getChangeInfo(psbt, (0, keychains_1.toBip32Triple)(params.customChangePubs))
306
+ : undefined;
307
+ const tx = psbt.getUnsignedTx();
308
+ const common = explainCommon(tx, { ...params, changeInfo, customChangeInfo }, coinName);
309
+ const inputSignaturesCount = getPsbtInputSignaturesCount(psbt, params);
310
+ // Set fee from subtracting inputs from outputs
311
+ const outputAmount = psbt.txOutputs.reduce((cumulative, curr) => cumulative + BigInt(curr.value), BigInt(0));
312
+ const inputAmount = psbt.txInputs.reduce((cumulative, txInput, i) => {
313
+ const data = psbt.data.inputs[i];
314
+ if (data.witnessUtxo) {
315
+ return cumulative + BigInt(data.witnessUtxo.value);
316
+ }
317
+ else if (data.nonWitnessUtxo) {
318
+ const tx = utxo_lib_1.bitgo.createTransactionFromBuffer(data.nonWitnessUtxo, network, { amountType: 'bigint' });
319
+ return cumulative + BigInt(tx.outs[txInput.index].value);
320
+ }
321
+ else {
322
+ throw new Error('could not find value on input');
323
+ }
324
+ }, BigInt(0));
325
+ return {
326
+ ...common,
327
+ fee: (inputAmount - outputAmount).toString(),
328
+ inputSignatures: inputSignaturesCount,
329
+ signatures: inputSignaturesCount.reduce((prev, curr) => (curr > prev ? curr : prev), 0),
330
+ messages,
331
+ };
332
+ }
333
+ function explainLegacyTx(tx, params, coinName) {
334
+ const common = explainCommon(tx, params, coinName);
335
+ const inputSignaturesCount = getTxInputSignaturesCount(tx, params, coinName);
336
+ return {
337
+ ...common,
338
+ inputSignatures: inputSignaturesCount,
339
+ signatures: inputSignaturesCount.reduce((prev, curr) => (curr > prev ? curr : prev), 0),
340
+ };
341
+ }
342
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpblRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L2V4cGxhaW5UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBYQSxrQ0F3REM7QUFFRCwwQ0FnQkM7QUFwY0QsOERBQWdEO0FBQ2hELHFEQUErQztBQUMvQyxxREFBOEQ7QUFDOUQsbURBQTZDO0FBRTdDLGdFQUFrRDtBQUtsRCw0Q0FBdUQ7QUFDdkQsOEVBQTJFO0FBQzNFLCtDQUFnRDtBQUNoRCx1Q0FBbUU7QUE0RG5FLFNBQVMsY0FBYyxDQUNyQixRQUEyQyxFQUMzQyxRQUFzQixFQUN0QixVQUEyQztJQUUzQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLElBQUEsbUNBQXVCLEVBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxPQUFPO1FBQ0wsT0FBTztRQUNQLE1BQU0sRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtRQUNqQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7UUFDbkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1FBQ25CLFFBQVEsRUFBRSxLQUFLO0tBQ2hCLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsT0FBc0M7SUFDdkQsT0FBTyxPQUFP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LFFBQVEsRUFBRTtRQUM1QyxlQUFlLEVBQUUsb0JBQW9CO1FBQ3JDLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLFFBQVE7S0FDVCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGVBQWUsQ0FDN0IsRUFBa0MsRUFDbEMsTUFJQyxFQUNELFFBQXNCO0lBRXRCLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sb0JBQW9CLEdBQUcseUJBQXlCLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RSxPQUFPO1FBQ0wsR0FBRyxNQUFNO1FBQ1QsZUFBZSxFQUFFLG9CQUFvQjtRQUNyQyxVQUFVLEVBQUUsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUN4RixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgYmlwMzIyIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1jb3JlJztcbmltcG9ydCB7IEJJUDMySW50ZXJmYWNlLCBiaXAzMiB9IGZyb20gJ0BiaXRnby1iZXRhL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBiaXRnbyB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IElUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBUcmlwbGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyB1dHhvY29yZSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWNvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IEJpcDMyMk1lc3NhZ2UgfSBmcm9tICcuLi8uLi9hYnN0cmFjdFV0eG9Db2luJztcbmltcG9ydCB0eXBlIHsgT3V0cHV0LCBGaXhlZFNjcmlwdFdhbGxldE91dHB1dCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB0eXBlIHsgVW5zcGVudCB9IGZyb20gJy4uLy4uL3Vuc3BlbnQnO1xuaW1wb3J0IHsgdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuLi9yZWNpcGllbnQnO1xuaW1wb3J0IHsgZ2V0UGF5R29WZXJpZmljYXRpb25QdWJrZXkgfSBmcm9tICcuLi9nZXRQYXlHb1ZlcmlmaWNhdGlvblB1YmtleSc7XG5pbXBvcnQgeyB0b0JpcDMyVHJpcGxlIH0gZnJvbSAnLi4vLi4va2V5Y2hhaW5zJztcbmltcG9ydCB7IGdldE5ldHdvcmtGcm9tQ29pbk5hbWUsIFV0eG9Db2luTmFtZSB9IGZyb20gJy4uLy4uL25hbWVzJztcblxuLy8gPT09PT0gVHJhbnNhY3Rpb24gRXhwbGFuYXRpb24gVHlwZSBEZWZpbml0aW9ucyA9PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0VXR4b1RyYW5zYWN0aW9uRXhwbGFuYXRpb248VEZlZSA9IHN0cmluZywgVENoYW5nZU91dHB1dCBleHRlbmRzIE91dHB1dCA9IE91dHB1dD5cbiAgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxURmVlLCBzdHJpbmc+IHtcbiAgLyoqIE5PVEU6IHRoaXMgYWN0dWFsbHkgb25seSBjYXB0dXJlcyBleHRlcm5hbCBvdXRwdXRzICovXG4gIG91dHB1dHM6IE91dHB1dFtdO1xuICBjaGFuZ2VPdXRwdXRzOiBUQ2hhbmdlT3V0cHV0W107XG4gIGN1c3RvbUNoYW5nZU91dHB1dHM/OiBUQ2hhbmdlT3V0cHV0W107XG4gIGN1c3RvbUNoYW5nZUFtb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogQklQMzIyIG1lc3NhZ2VzIGV4dHJhY3RlZCBmcm9tIHRoZSB0cmFuc2FjdGlvbiBpbnB1dHMuXG4gICAqIFRoZXNlIG1lc3NhZ2VzIGFyZSB1c2VkIGZvciB2ZXJpZnlpbmcgdGhlIHRyYW5zYWN0aW9uIGFnYWluc3QgdGhlIEJJUDMyMiBzdGFuZGFyZC5cbiAgICovXG4gIG1lc3NhZ2VzPzogQmlwMzIyTWVzc2FnZVtdO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgLSB0aGUgc2lnbmF0dXJlIGZpZWxkcyBhcmUgbm90IHZlcnkgdXNlZnVsICovXG5pbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbldpdGhTaWduYXR1cmVzPFRGZWUgPSBzdHJpbmcsIFRDaGFuZ2VPdXRwdXQgZXh0ZW5kcyBPdXRwdXQgPSBPdXRwdXQ+XG4gIGV4dGVuZHMgQWJzdHJhY3RVdHhvVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxURmVlLCBUQ2hhbmdlT3V0cHV0PiB7XG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVudXNlZCBvdXRzaWRlIG9mIHRlc3RzICovXG4gIGxvY2t0aW1lPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgaW5wdXQgc2lnbmF0dXJlcyBwZXIgaW5wdXQuXG4gICAqIEBkZXByZWNhdGVkIC0gdGhpcyBpcyBub3QgdmVyeSB1c2VmdWwgd2l0aG91dCBrbm93aW5nIHdobyBzaWduZWQgZWFjaCBpbnB1dC5cbiAgICovXG4gIGlucHV0U2lnbmF0dXJlczogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIEhpZ2hlc3QgaW5wdXQgc2lnbmF0dXJlIGNvdW50IGZvciB0aGUgdHJhbnNhY3Rpb25cbiAgICogQGRlcHJlY2F0ZWQgLSB0aGlzIGlzIG5vdCB2ZXJ5IHVzZWZ1bCB3aXRob3V0IGtub3dpbmcgd2hvIHNpZ25lZCBlYWNoIGlucHV0LlxuICAgKi9cbiAgc2lnbmF0dXJlczogbnVtYmVyO1xufVxuXG4vKiogRm9yIG91ciB3YXNtIGJhY2tlbmQsIHdlIGRvIG5vdCByZXR1cm4gdGhlIGRlcHJlY2F0ZWQgZmllbGRzLiBXZSBzZXQgVEZlZSB0byBzdHJpbmcgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiAqL1xuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbldhc20gPSBBYnN0cmFjdFV0eG9UcmFuc2FjdGlvbkV4cGxhbmF0aW9uPHN0cmluZywgRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQ+O1xuXG4vKiogV2hlbiBwYXJzaW5nIHRoZSBsZWdhY3kgdHJhbnNhY3Rpb24gZm9ybWF0LCB3ZSBjYW5ub3QgYWx3YXlzIGluZmVyIHRoZSBmZWUgc28gd2Ugc2V0IGl0IHRvIHN0cmluZyB8IHVuZGVmaW5lZCAqL1xuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25FeHBsYW5hdGlvblV0eG9saWJMZWdhY3kgPSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uV2l0aFNpZ25hdHVyZXM8c3RyaW5nIHwgdW5kZWZpbmVkPjtcblxuLyoqIFdoZW4gcGFyc2luZyBhIFBTQlQsIHdlIGNhbiBpbmZlciB0aGUgZmVlIHNvIHdlIHNldCBURmVlIHRvIHN0cmluZy4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb25VdHhvbGliUHNidCA9IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25XaXRoU2lnbmF0dXJlczxzdHJpbmc+O1xuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uRGVzY3JpcHRvciA9IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25XaXRoU2lnbmF0dXJlczxzdHJpbmcsIE91dHB1dD47XG5cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPVxuICB8IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25VdHhvbGliTGVnYWN5XG4gIHwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvblV0eG9saWJQc2J0XG4gIHwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbldhc207XG5cbmV4cG9ydCB0eXBlIENoYW5nZUFkZHJlc3NJbmZvID0ge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIGNoYWluOiBudW1iZXI7XG4gIGluZGV4OiBudW1iZXI7XG59O1xuXG5mdW5jdGlvbiB0b0NoYW5nZU91dHB1dChcbiAgdHhPdXRwdXQ6IHV0eG9saWIuVHhPdXRwdXQ8bnVtYmVyIHwgYmlnaW50PixcbiAgY29pbk5hbWU6IFV0eG9Db2luTmFtZSxcbiAgY2hhbmdlSW5mbzogQ2hhbmdlQWRkcmVzc0luZm9bXSB8IHVuZGVmaW5lZFxuKTogRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQgfCB1bmRlZmluZWQge1xuICBpZiAoIWNoYW5nZUluZm8pIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IGFkZHJlc3MgPSB0b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdCh0eE91dHB1dC5zY3JpcHQsIGNvaW5OYW1lKTtcbiAgY29uc3QgY2hhbmdlID0gY2hhbmdlSW5mby5maW5kKChjaGFuZ2UpID0+IGNoYW5nZS5hZGRyZXNzID09PSBhZGRyZXNzKTtcbiAgaWYgKCFjaGFuZ2UpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB7XG4gICAgYWRkcmVzcyxcbiAgICBhbW91bnQ6IHR4T3V0cHV0LnZhbHVlLnRvU3RyaW5nKCksXG4gICAgY2hhaW46IGNoYW5nZS5jaGFpbixcbiAgICBpbmRleDogY2hhbmdlLmluZGV4LFxuICAgIGV4dGVybmFsOiBmYWxzZSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gb3V0cHV0U3VtKG91dHB1dHM6IHsgYW1vdW50OiBzdHJpbmcgfCBudW1iZXIgfVtdKTogYmlnaW50IHtcbiAgcmV0dXJuIG91dHB1dHMucmVkdWNlKChzdW0sIG91dHB1dCkgPT4gc3VtICsgQmlnSW50KG91dHB1dC5hbW91bnQpLCBCaWdJbnQoMCkpO1xufVxuXG5mdW5jdGlvbiBleHBsYWluQ29tbW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eDogYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBwYXJhbXM6IHtcbiAgICBjaGFuZ2VJbmZvPzogQ2hhbmdlQWRkcmVzc0luZm9bXTtcbiAgICBjdXN0b21DaGFuZ2VJbmZvPzogQ2hhbmdlQWRkcmVzc0luZm9bXTtcbiAgICBmZWVJbmZvPzogc3RyaW5nO1xuICB9LFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lXG4pIHtcbiAgY29uc3QgZGlzcGxheU9yZGVyID0gWydpZCcsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cyddO1xuICBjb25zdCBjaGFuZ2VPdXRwdXRzOiBGaXhlZFNjcmlwdFdhbGxldE91dHB1dFtdID0gW107XG4gIGNvbnN0IGN1c3RvbUNoYW5nZU91dHB1dHM6IEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0W10gPSBbXTtcbiAgY29uc3QgZXh0ZXJuYWxPdXRwdXRzOiBPdXRwdXRbXSA9IFtdO1xuXG4gIGNvbnN0IHsgY2hhbmdlSW5mbywgY3VzdG9tQ2hhbmdlSW5mbyB9ID0gcGFyYW1zO1xuXG4gIHR4Lm91dHMuZm9yRWFjaCgoY3VycmVudE91dHB1dCkgPT4ge1xuICAgIC8vIFRyeSB0byBlbmNvZGUgdGhlIHNjcmlwdCBwdWJrZXkgd2l0aCBhbiBhZGRyZXNzLiBJZiBpdCBmYWlscywgdHJ5IHRvIHBhcnNlIGl0IGFzIGFuIE9QX1JFVFVSTiBvdXRwdXQgd2l0aCB0aGUgcHJlZml4LlxuICAgIC8vIElmIHRoYXQgZmFpbHMsIHRoZW4gaXQgaXMgYW4gdW5yZWNvZ25pemVkIHNjcmlwdFB1YmtleSBhbmQgc2hvdWxkIGZhaWxcbiAgICBjb25zdCBjdXJyZW50QWRkcmVzcyA9IHRvRXh0ZW5kZWRBZGRyZXNzRm9ybWF0KGN1cnJlbnRPdXRwdXQuc2NyaXB0LCBjb2luTmFtZSk7XG4gICAgY29uc3QgY3VycmVudEFtb3VudCA9IEJpZ0ludChjdXJyZW50T3V0cHV0LnZhbHVlKTtcblxuICAgIGNvbnN0IGNoYW5nZU91dHB1dCA9IHRvQ2hhbmdlT3V0cHV0KGN1cnJlbnRPdXRwdXQsIGNvaW5OYW1lLCBjaGFuZ2VJbmZvKTtcbiAgICBpZiAoY2hhbmdlT3V0cHV0KSB7XG4gICAgICBjaGFuZ2VPdXRwdXRzLnB1c2goY2hhbmdlT3V0cHV0KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXN0b21DaGFuZ2VPdXRwdXQgPSB0b0NoYW5nZU91dHB1dChjdXJyZW50T3V0cHV0LCBjb2luTmFtZSwgY3VzdG9tQ2hhbmdlSW5mbyk7XG4gICAgaWYgKGN1c3RvbUNoYW5nZU91dHB1dCkge1xuICAgICAgY3VzdG9tQ2hhbmdlT3V0cHV0cy5wdXNoKGN1c3RvbUNoYW5nZU91dHB1dCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXh0ZXJuYWxPdXRwdXRzLnB1c2goe1xuICAgICAgYWRkcmVzczogY3VycmVudEFkZHJlc3MsXG4gICAgICBhbW91bnQ6IGN1cnJlbnRBbW91bnQudG9TdHJpbmcoKSxcbiAgICAgIC8vIElmIGNoYW5nZUluZm8gaGFzIGEgbGVuZ3RoIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvLCBpdCBtZWFucyB0aGF0IHRoZSBjaGFuZ2UgaW5mb3JtYXRpb25cbiAgICAgIC8vIHdhcyBwcm92aWRlZCB0byB0aGUgZnVuY3Rpb24gYnV0IHRoZSBvdXRwdXQgd2FzIG5vdCBpZGVudGlmaWVkIGFzIGNoYW5nZS4gSW4gdGhpcyBjYXNlLFxuICAgICAgLy8gdGhlIG91dHB1dCBpcyBleHRlcm5hbCwgYW5kIHdlIGNhbiBzZXQgaXQgYXMgc28uIElmIGNoYW5nZUluZm8gaXMgdW5kZWZpbmVkLCBpdCBtZWFucyB3ZSB3ZXJlXG4gICAgICAvLyBnaXZlbiBubyBpbmZvcm1hdGlvbiBhYm91dCBjaGFuZ2Ugb3V0cHV0cywgc28gd2UgY2FuJ3QgZGV0ZXJtaW5lIGFueXRoaW5nIGFib3V0IHRoZSBvdXRwdXQsXG4gICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1bmRlZmluZWQuXG4gICAgICBleHRlcm5hbDogY2hhbmdlSW5mbyA/IHRydWUgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IG91dHB1dERldGFpbHMgPSB7XG4gICAgb3V0cHV0czogZXh0ZXJuYWxPdXRwdXRzLFxuICAgIG91dHB1dEFtb3VudDogb3V0cHV0U3VtKGV4dGVybmFsT3V0cHV0cykudG9TdHJpbmcoKSxcblxuICAgIGNoYW5nZU91dHB1dHMsXG4gICAgY2hhbmdlQW1vdW50OiBvdXRwdXRTdW0oY2hhbmdlT3V0cHV0cykudG9TdHJpbmcoKSxcblxuICAgIGN1c3RvbUNoYW5nZUFtb3VudDogb3V0cHV0U3VtKGN1c3RvbUNoYW5nZU91dHB1dHMpLnRvU3RyaW5nKCksXG4gICAgY3VzdG9tQ2hhbmdlT3V0cHV0cyxcbiAgfTtcblxuICBsZXQgZmVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBsb2NrdGltZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChwYXJhbXMuZmVlSW5mbykge1xuICAgIGRpc3BsYXlPcmRlci5wdXNoKCdmZWUnKTtcbiAgICBmZWUgPSBwYXJhbXMuZmVlSW5mbztcbiAgfVxuXG4gIGlmIChOdW1iZXIuaXNJbnRlZ2VyKHR4LmxvY2t0aW1lKSAmJiB0eC5sb2NrdGltZSA+IDApIHtcbiAgICBkaXNwbGF5T3JkZXIucHVzaCgnbG9ja3RpbWUnKTtcbiAgICBsb2NrdGltZSA9IHR4LmxvY2t0aW1lO1xuICB9XG5cbiAgcmV0dXJuIHsgZGlzcGxheU9yZGVyLCBpZDogdHguZ2V0SWQoKSwgLi4ub3V0cHV0RGV0YWlscywgZmVlLCBsb2NrdGltZSB9O1xufVxuXG5mdW5jdGlvbiBnZXRSb290V2FsbGV0S2V5cyhwYXJhbXM6IHsgcHVicz86IGJpdGdvLlJvb3RXYWxsZXRLZXlzIHwgc3RyaW5nW10gfSk6IGJpdGdvLlJvb3RXYWxsZXRLZXlzIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHBhcmFtcy5wdWJzIGluc3RhbmNlb2YgYml0Z28uUm9vdFdhbGxldEtleXMpIHtcbiAgICByZXR1cm4gcGFyYW1zLnB1YnM7XG4gIH1cbiAgY29uc3Qga2V5cyA9IHBhcmFtcy5wdWJzPy5tYXAoKHhwdWIpID0+IGJpcDMyLmZyb21CYXNlNTgoeHB1YikpO1xuICByZXR1cm4ga2V5cyAmJiBrZXlzLmxlbmd0aCA9PT0gMyA/IG5ldyBiaXRnby5Sb290V2FsbGV0S2V5cyhrZXlzIGFzIFRyaXBsZTxCSVAzMkludGVyZmFjZT4pIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRQc2J0SW5wdXRTaWduYXR1cmVzQ291bnQoXG4gIHBzYnQ6IGJpdGdvLlV0eG9Qc2J0LFxuICBwYXJhbXM6IHtcbiAgICBwdWJzPzogYml0Z28uUm9vdFdhbGxldEtleXMgfCBzdHJpbmdbXTtcbiAgfVxuKSB7XG4gIGNvbnN0IHJvb3RXYWxsZXRLZXlzID0gZ2V0Um9vdFdhbGxldEtleXMocGFyYW1zKTtcbiAgcmV0dXJuIHJvb3RXYWxsZXRLZXlzXG4gICAgPyBiaXRnby5nZXRTaWduYXR1cmVWYWxpZGF0aW9uQXJyYXlQc2J0KHBzYnQsIHJvb3RXYWxsZXRLZXlzKS5tYXAoKHN2KSA9PiBzdlsxXS5maWx0ZXIoKHYpID0+IHYpLmxlbmd0aClcbiAgICA6IChBcnJheShwc2J0LmRhdGEuaW5wdXRzLmxlbmd0aCkgYXMgbnVtYmVyW10pLmZpbGwoMCk7XG59XG5cbmZ1bmN0aW9uIGdldFR4SW5wdXRTaWduYXR1cmVzQ291bnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHR4OiBiaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIHBhcmFtczoge1xuICAgIHR4SW5mbz86IHsgdW5zcGVudHM/OiBVbnNwZW50PFROdW1iZXI+W10gfTtcbiAgICBwdWJzPzogYml0Z28uUm9vdFdhbGxldEtleXMgfCBzdHJpbmdbXTtcbiAgfSxcbiAgY29pbk5hbWU6IFV0eG9Db2luTmFtZVxuKSB7XG4gIGNvbnN0IG5ldHdvcmsgPSBnZXROZXR3b3JrRnJvbUNvaW5OYW1lKGNvaW5OYW1lKTtcbiAgY29uc3QgcHJldk91dHB1dHMgPSBwYXJhbXMudHhJbmZvPy51bnNwZW50cz8ubWFwKCh1KSA9PiBiaXRnby50b091dHB1dDxUTnVtYmVyPih1LCBuZXR3b3JrKSk7XG4gIGNvbnN0IHJvb3RXYWxsZXRLZXlzID0gZ2V0Um9vdFdhbGxldEtleXMocGFyYW1zKTtcbiAgY29uc3QgeyB1bnNwZW50cyA9IFtdIH0gPSBwYXJhbXMudHhJbmZvID8/IHt9O1xuXG4gIC8vIGdldCB0aGUgbnVtYmVyIG9mIHNpZ25hdHVyZXMgcGVyIGlucHV0XG4gIHJldHVybiB0eC5pbnMubWFwKChpbnB1dCwgaWR4KTogbnVtYmVyID0+IHtcbiAgICBpZiAodW5zcGVudHMubGVuZ3RoICE9PSB0eC5pbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKCFwcmV2T3V0cHV0cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHN0YXRlYCk7XG4gICAgfVxuICAgIGlmICghcm9vdFdhbGxldEtleXMpIHtcbiAgICAgIC8vIG5vIHB1YiBrZXlzIG9yIGluY29ycmVjdCBudW1iZXIgb2YgcHViIGtleXNcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGJpdGdvLnZlcmlmeVNpZ25hdHVyZVdpdGhVbnNwZW50PFROdW1iZXI+KHR4LCBpZHgsIHVuc3BlbnRzLCByb290V2FsbGV0S2V5cykuZmlsdGVyKCh2KSA9PiB2KS5sZW5ndGg7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gc29tZSBvdGhlciBlcnJvciBvY2N1cnJlZCBhbmQgd2UgY2FuJ3QgdmFsaWRhdGUgdGhlIHNpZ25hdHVyZXNcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldENoYWluQW5kSW5kZXhGcm9tQmlwMzJEZXJpdmF0aW9ucyhvdXRwdXQ6IGJpdGdvLlBzYnRPdXRwdXQpIHtcbiAgY29uc3QgZGVyaXZhdGlvbnMgPSBvdXRwdXQuYmlwMzJEZXJpdmF0aW9uID8/IG91dHB1dC50YXBCaXAzMkRlcml2YXRpb24gPz8gdW5kZWZpbmVkO1xuICBpZiAoIWRlcml2YXRpb25zKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBwYXRocyA9IGRlcml2YXRpb25zLm1hcCgoZCkgPT4gZC5wYXRoKTtcbiAgaWYgKCFwYXRocyB8fCBwYXRocy5sZW5ndGggIT09IDMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4cGVjdGVkIDMgcGF0aHMgaW4gYmlwMzJEZXJpdmF0aW9uIG9yIHRhcEJpcDMyRGVyaXZhdGlvbicpO1xuICB9XG4gIGlmICghcGF0aHMuZXZlcnkoKHApID0+IHBhdGhzWzBdID09PSBwKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgYWxsIHBhdGhzIHRvIGJlIHRoZSBzYW1lJyk7XG4gIH1cblxuICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgaWYgKHBhdGhzWzBdICE9PSBwYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmFibGUgdG8gZ2V0IGEgc2luZ2xlIGNoYWluIGFuZCBpbmRleCBvbiB0aGUgb3V0cHV0IGJlY2F1c2UgdGhlcmUgYXJlIGRpZmZlcmVudCBwYXRocyBmb3IgZGlmZmVyZW50IGtleXMnXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB1dHhvbGliLmJpdGdvLmdldENoYWluQW5kSW5kZXhGcm9tUGF0aChwYXRoc1swXSk7XG59XG5cbmZ1bmN0aW9uIGdldENoYW5nZUluZm8ocHNidDogYml0Z28uVXR4b1BzYnQsIHdhbGxldEtleXM/OiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+KTogQ2hhbmdlQWRkcmVzc0luZm9bXSB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgd2FsbGV0S2V5cyA9IHdhbGxldEtleXMgPz8gdXR4b2xpYi5iaXRnby5nZXRTb3J0ZWRSb290Tm9kZXMocHNidCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uRXJyb3JOb011bHRpU2lnSW5wdXRGb3VuZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuXG4gIHJldHVybiB1dHhvbGliLmJpdGdvLmZpbmRXYWxsZXRPdXRwdXRJbmRpY2VzKHBzYnQsIHdhbGxldEtleXMpLm1hcCgoaSkgPT4ge1xuICAgIGNvbnN0IGRlcml2YXRpb25JbmZvcm1hdGlvbiA9IGdldENoYWluQW5kSW5kZXhGcm9tQmlwMzJEZXJpdmF0aW9ucyhwc2J0LmRhdGEub3V0cHV0c1tpXSk7XG4gICAgaWYgKCFkZXJpdmF0aW9uSW5mb3JtYXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IGZpbmQgZGVyaXZhdGlvbiBpbmZvcm1hdGlvbiBvbiBiaXAzMkRlcml2YXRpb24gb3IgdGFwQmlwMzJEZXJpdmF0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBhZGRyZXNzOiB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChwc2J0LnR4T3V0cHV0c1tpXS5zY3JpcHQsIHBzYnQubmV0d29yayksXG4gICAgICBleHRlcm5hbDogZmFsc2UsXG4gICAgICAuLi5kZXJpdmF0aW9uSW5mb3JtYXRpb24sXG4gICAgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogRXh0cmFjdCBQYXlHbyBhZGRyZXNzIHByb29mIGluZm9ybWF0aW9uIGZyb20gdGhlIFBTQlQgaWYgcHJlc2VudFxuICogQHJldHVybnMgSW5mb3JtYXRpb24gYWJvdXQgdGhlIFBheUdvIHByb29mLCBpbmNsdWRpbmcgdGhlIG91dHB1dCBpbmRleCBhbmQgYWRkcmVzc1xuICovXG5mdW5jdGlvbiBnZXRQYXlHb1ZlcmlmaWNhdGlvbkluZm8oXG4gIHBzYnQ6IGJpdGdvLlV0eG9Qc2J0LFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lXG4pOiB7IG91dHB1dEluZGV4OiBudW1iZXI7IHZlcmlmaWNhdGlvblB1YmtleTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICBsZXQgb3V0cHV0SW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgbGV0IGFkZHJlc3M6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgLy8gQ2hlY2sgaWYgdGhpcyBQU0JUIGhhcyBhbnkgUGF5R28gYWRkcmVzcyBwcm9vZnNcbiAgaWYgKCF1dHhvY29yZS5wYXlnby5wc2J0T3V0cHV0SW5jbHVkZXNQYXlnb0FkZHJlc3NQcm9vZihwc2J0KSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBUaGlzIHB1bGxzIHRoZSBwdWJrZXkgZGVwZW5kaW5nIG9uIGdpdmVuIG5ldHdvcmtcbiAgY29uc3QgdmVyaWZpY2F0aW9uUHVia2V5ID0gZ2V0UGF5R29WZXJpZmljYXRpb25QdWJrZXkoY29pbk5hbWUpO1xuICAvLyBmaW5kIHdoaWNoIG91dHB1dCBpbmRleCB0aGF0IGNvbnRhaW5zIHRoZSBQYXlHbyBwcm9vZlxuICBvdXRwdXRJbmRleCA9IHV0eG9jb3JlLnBheWdvLmdldFBheUdvQWRkcmVzc1Byb29mT3V0cHV0SW5kZXgocHNidCk7XG4gIGlmIChvdXRwdXRJbmRleCA9PT0gdW5kZWZpbmVkIHx8ICF2ZXJpZmljYXRpb25QdWJrZXkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IG5ldHdvcmsgPSBnZXROZXR3b3JrRnJvbUNvaW5OYW1lKGNvaW5OYW1lKTtcbiAgY29uc3Qgb3V0cHV0ID0gcHNidC50eE91dHB1dHNbb3V0cHV0SW5kZXhdO1xuICBhZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQob3V0cHV0LnNjcmlwdCwgbmV0d29yayk7XG4gIGlmICghYWRkcmVzcykge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2FuIG5vdCBkZXJpdmUgYWRkcmVzcyAke2FkZHJlc3N9IFBheSBHbyBBdHRlc3RhdGlvbi5gKTtcbiAgfVxuXG4gIHJldHVybiB7IG91dHB1dEluZGV4LCB2ZXJpZmljYXRpb25QdWJrZXkgfTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHRoZSBCSVAzMjIgbWVzc2FnZXMgYW5kIGFkZHJlc3NlcyBmcm9tIHRoZSBQU0JUIGlucHV0cyBhbmQgcGVyZm9ybVxuICogdmVyaWZpY2F0aW9uIG9uIHRoZSB0cmFuc2FjdGlvbiB0byBlbnN1cmUgdGhhdCBpdCBtZWV0cyB0aGUgQklQMzIyIHJlcXVpcmVtZW50cy5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIG9iamVjdHMgY29udGFpbmluZyB0aGUgbWVzc2FnZSBhbmQgYWRkcmVzcyBmb3IgZWFjaCBpbnB1dCxcbiAqICAgICAgICAgIG9yIHVuZGVmaW5lZCBpZiBubyBCSVAzMjIgbWVzc2FnZXMgYXJlIGZvdW5kLlxuICovXG5mdW5jdGlvbiBnZXRCaXAzMjJNZXNzYWdlSW5mb0FuZFZlcmlmeShwc2J0OiBiaXRnby5VdHhvUHNidCwgY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IEJpcDMyMk1lc3NhZ2VbXSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG5ldHdvcmsgPSBnZXROZXR3b3JrRnJvbUNvaW5OYW1lKGNvaW5OYW1lKTtcbiAgY29uc3QgYmlwMzIyTWVzc2FnZXM6IHsgbWVzc2FnZTogc3RyaW5nOyBhZGRyZXNzOiBzdHJpbmcgfVtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcHNidC5kYXRhLmlucHV0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBiaXAzMjIuZ2V0QmlwMzIyUHJvb2ZNZXNzYWdlQXRJbmRleChwc2J0LCBpKTtcbiAgICBpZiAobWVzc2FnZSkge1xuICAgICAgY29uc3QgaW5wdXQgPSBwc2J0LmRhdGEuaW5wdXRzW2ldO1xuICAgICAgaWYgKCFpbnB1dC53aXRuZXNzVXR4bykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3Npbmcgd2l0bmVzc1V0eG8gZm9yIGlucHV0IGluZGV4ICR7aX1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjcmlwdFB1YktleSA9IGlucHV0LndpdG5lc3NVdHhvLnNjcmlwdDtcblxuICAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHRvU3BlbmQgdHJhbnNhY3Rpb24gY2FuIGJlIHJlY3JlYXRlZCBpbiB0aGUgUFNCVCBhbmQgaXMgZW5jb2RlZCBjb3JyZWN0bHkgaW4gdGhlIG5vbldpdG5lc3NVdHhvXG4gICAgICBjb25zdCB0b1NwZW5kID0gYmlwMzIyLmJ1aWxkVG9TcGVuZFRyYW5zYWN0aW9uKHNjcmlwdFB1YktleSwgbWVzc2FnZSk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGF0IHRoZSB0b1NwZW5kIHRyYW5zYWN0aW9uIElEIG1hdGNoZXMgdGhlIGlucHV0J3MgcmVmZXJlbmNlZCB0cmFuc2FjdGlvbiBJRFxuICAgICAgaWYgKHRvU3BlbmQuZ2V0SWQoKSAhPT0gdXR4b2xpYi5iaXRnby5nZXRPdXRwdXRJZEZvcklucHV0KHBzYnQudHhJbnB1dHNbaV0pLnR4aWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUb1NwZW5kIHRyYW5zYWN0aW9uIElEIGRvZXMgbm90IG1hdGNoIHRoZSBpbnB1dCBhdCBpbmRleCAke2l9YCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgaW5wdXQgc3BlY2lmaWNzXG4gICAgICBpZiAocHNidC50eElucHV0c1tpXS5zZXF1ZW5jZSAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgc2VxdWVuY2UgbnVtYmVyIGF0IGlucHV0IGluZGV4ICR7aX06ICR7cHNidC50eElucHV0c1tpXS5zZXF1ZW5jZX0uIEV4cGVjdGVkIDAuYCk7XG4gICAgICB9XG4gICAgICBpZiAocHNidC50eElucHV0c1tpXS5pbmRleCAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgaW5wdXQgaW5kZXggYXQgcG9zaXRpb24gJHtpfTogJHtwc2J0LnR4SW5wdXRzW2ldLmluZGV4fS4gRXhwZWN0ZWQgMC5gKTtcbiAgICAgIH1cblxuICAgICAgYmlwMzIyTWVzc2FnZXMucHVzaCh7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UudG9TdHJpbmcoJ3V0ZjgnKSxcbiAgICAgICAgYWRkcmVzczogdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoc2NyaXB0UHViS2V5LCBuZXR3b3JrKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChiaXAzMjJNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gSWYgdGhlcmUgaXMgYSBCSVAzMjIgbWVzc2FnZSBpbiBhbnkgaW5wdXQsIGFsbCBpbnB1dHMgbXVzdCBoYXZlIG9uZS5cbiAgICBpZiAoYmlwMzIyTWVzc2FnZXMubGVuZ3RoICE9PSBwc2J0LmRhdGEuaW5wdXRzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbmNvbnNpc3RlbnQgQklQMzIyIG1lc3NhZ2VzIGFjcm9zcyBpbnB1dHMuJyk7XG4gICAgfVxuXG4gICAgLy8gVmVyaWZ5IHRoZSB0cmFuc2FjdGlvbiBzcGVjaWZpY3MgZm9yIEJJUDMyMlxuICAgIGlmIChwc2J0LnZlcnNpb24gIT09IDAgJiYgcHNidC52ZXJzaW9uICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIFBTQlQgdmVyc2lvbiBmb3IgQklQMzIyOiAke3BzYnQudmVyc2lvbn0uIEV4cGVjdGVkIDAgYCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHBzYnQuZGF0YS5vdXRwdXRzLmxlbmd0aCAhPT0gMSB8fFxuICAgICAgcHNidC50eE91dHB1dHNbMF0uc2NyaXB0LnRvU3RyaW5nKCdoZXgnKSAhPT0gJzZhJyB8fFxuICAgICAgcHNidC50eE91dHB1dHNbMF0udmFsdWUgIT09IDBuXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgUFNCVCBvdXRwdXRzIGZvciBCSVAzMjIuIEV4cGVjdGVkIGV4YWN0bHkgb25lIE9QX1JFVFVSTiBvdXRwdXQgd2l0aCB6ZXJvIHZhbHVlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBiaXAzMjJNZXNzYWdlcztcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRGVjb21wb3NlIGEgcmF3IHBzYnQgaW50byB1c2VmdWwgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIHRvdGFsIGFtb3VudHMsXG4gKiBjaGFuZ2UgYW1vdW50cywgYW5kIHRyYW5zYWN0aW9uIG91dHB1dHMuXG4gKlxuICogQHBhcmFtIHBzYnQge2JpdGdvLlV0eG9Qc2J0fSBUaGUgUFNCVCB0byBleHBsYWluXG4gKiBAcGFyYW0gcHVicyB7Yml0Z28uUm9vdFdhbGxldEtleXMgfCBzdHJpbmdbXX0gVGhlIHB1YmxpYyBrZXlzIHRvIHVzZSBmb3IgdGhlIGV4cGxhbmF0aW9uXG4gKiBAcGFyYW0gY29pbk5hbWUge1V0eG9Db2luTmFtZX0gVGhlIGNvaW4gbmFtZSB0byB1c2UgZm9yIHRoZSBleHBsYW5hdGlvblxuICogQHBhcmFtIHN0cmljdCB7Ym9vbGVhbn0gV2hldGhlciB0byB0aHJvdyBhbiBlcnJvciBpZiB0aGUgUGF5R28gYWRkcmVzcyBwcm9vZiBpcyBpbnZhbGlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBsYWluUHNidChcbiAgcHNidDogYml0Z28uVXR4b1BzYnQsXG4gIHBhcmFtczoge1xuICAgIHB1YnM/OiBiaXRnby5Sb290V2FsbGV0S2V5cyB8IHN0cmluZ1tdO1xuICAgIGN1c3RvbUNoYW5nZVB1YnM/OiBiaXRnby5Sb290V2FsbGV0S2V5cyB8IHN0cmluZ1tdO1xuICB9LFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lLFxuICB7IHN0cmljdCA9IHRydWUgfTogeyBzdHJpY3Q/OiBib29sZWFuIH0gPSB7fVxuKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvblV0eG9saWJQc2J0IHtcbiAgY29uc3QgbmV0d29yayA9IGdldE5ldHdvcmtGcm9tQ29pbk5hbWUoY29pbk5hbWUpO1xuICBjb25zdCBwYXlHb1ZlcmlmaWNhdGlvbkluZm8gPSBnZXRQYXlHb1ZlcmlmaWNhdGlvbkluZm8ocHNidCwgY29pbk5hbWUpO1xuICBpZiAocGF5R29WZXJpZmljYXRpb25JbmZvKSB7XG4gICAgdHJ5IHtcbiAgICAgIHV0eG9jb3JlLnBheWdvLnZlcmlmeVBheUdvQWRkcmVzc1Byb29mKFxuICAgICAgICBwc2J0LFxuICAgICAgICBwYXlHb1ZlcmlmaWNhdGlvbkluZm8ub3V0cHV0SW5kZXgsXG4gICAgICAgIGJpcDMyLmZyb21CYXNlNTgocGF5R29WZXJpZmljYXRpb25JbmZvLnZlcmlmaWNhdGlvblB1YmtleSwgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luKS5wdWJsaWNLZXlcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBtZXNzYWdlcyA9IGdldEJpcDMyMk1lc3NhZ2VJbmZvQW5kVmVyaWZ5KHBzYnQsIGNvaW5OYW1lKTtcbiAgY29uc3QgY2hhbmdlSW5mbyA9IGdldENoYW5nZUluZm8ocHNidCk7XG4gIGNvbnN0IGN1c3RvbUNoYW5nZUluZm8gPSBwYXJhbXMuY3VzdG9tQ2hhbmdlUHVic1xuICAgID8gZ2V0Q2hhbmdlSW5mbyhwc2J0LCB0b0JpcDMyVHJpcGxlKHBhcmFtcy5jdXN0b21DaGFuZ2VQdWJzKSlcbiAgICA6IHVuZGVmaW5lZDtcbiAgY29uc3QgdHggPSBwc2J0LmdldFVuc2lnbmVkVHgoKTtcbiAgY29uc3QgY29tbW9uID0gZXhwbGFpbkNvbW1vbih0eCwgeyAuLi5wYXJhbXMsIGNoYW5nZUluZm8sIGN1c3RvbUNoYW5nZUluZm8gfSwgY29pbk5hbWUpO1xuICBjb25zdCBpbnB1dFNpZ25hdHVyZXNDb3VudCA9IGdldFBzYnRJbnB1dFNpZ25hdHVyZXNDb3VudChwc2J0LCBwYXJhbXMpO1xuXG4gIC8vIFNldCBmZWUgZnJvbSBzdWJ0cmFjdGluZyBpbnB1dHMgZnJvbSBvdXRwdXRzXG4gIGNvbnN0IG91dHB1dEFtb3VudCA9IHBzYnQudHhPdXRwdXRzLnJlZHVjZSgoY3VtdWxhdGl2ZSwgY3VycikgPT4gY3VtdWxhdGl2ZSArIEJpZ0ludChjdXJyLnZhbHVlKSwgQmlnSW50KDApKTtcbiAgY29uc3QgaW5wdXRBbW91bnQgPSBwc2J0LnR4SW5wdXRzLnJlZHVjZSgoY3VtdWxhdGl2ZSwgdHhJbnB1dCwgaSkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBwc2J0LmRhdGEuaW5wdXRzW2ldO1xuICAgIGlmIChkYXRhLndpdG5lc3NVdHhvKSB7XG4gICAgICByZXR1cm4gY3VtdWxhdGl2ZSArIEJpZ0ludChkYXRhLndpdG5lc3NVdHhvLnZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubm9uV2l0bmVzc1V0eG8pIHtcbiAgICAgIGNvbnN0IHR4ID0gYml0Z28uY3JlYXRlVHJhbnNhY3Rpb25Gcm9tQnVmZmVyPGJpZ2ludD4oZGF0YS5ub25XaXRuZXNzVXR4bywgbmV0d29yaywgeyBhbW91bnRUeXBlOiAnYmlnaW50JyB9KTtcbiAgICAgIHJldHVybiBjdW11bGF0aXZlICsgQmlnSW50KHR4Lm91dHNbdHhJbnB1dC5pbmRleF0udmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCBmaW5kIHZhbHVlIG9uIGlucHV0Jyk7XG4gICAgfVxuICB9LCBCaWdJbnQoMCkpO1xuXG4gIHJldHVybiB7XG4gICAgLi4uY29tbW9uLFxuICAgIGZlZTogKGlucHV0QW1vdW50IC0gb3V0cHV0QW1vdW50KS50b1N0cmluZygpLFxuICAgIGlucHV0U2lnbmF0dXJlczogaW5wdXRTaWduYXR1cmVzQ291bnQsXG4gICAgc2lnbmF0dXJlczogaW5wdXRTaWduYXR1cmVzQ291bnQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoY3VyciA+IHByZXYgPyBjdXJyIDogcHJldiksIDApLFxuICAgIG1lc3NhZ2VzLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwbGFpbkxlZ2FjeVR4PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eDogYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBwYXJhbXM6IHtcbiAgICBwdWJzPzogc3RyaW5nW107XG4gICAgdHhJbmZvPzogeyB1bnNwZW50cz86IFVuc3BlbnQ8VE51bWJlcj5bXSB9O1xuICAgIGNoYW5nZUluZm8/OiB7IGFkZHJlc3M6IHN0cmluZzsgY2hhaW46IG51bWJlcjsgaW5kZXg6IG51bWJlciB9W107XG4gIH0sXG4gIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWVcbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25VdHhvbGliTGVnYWN5IHtcbiAgY29uc3QgY29tbW9uID0gZXhwbGFpbkNvbW1vbih0eCwgcGFyYW1zLCBjb2luTmFtZSk7XG4gIGNvbnN0IGlucHV0U2lnbmF0dXJlc0NvdW50ID0gZ2V0VHhJbnB1dFNpZ25hdHVyZXNDb3VudCh0eCwgcGFyYW1zLCBjb2luTmFtZSk7XG4gIHJldHVybiB7XG4gICAgLi4uY29tbW9uLFxuICAgIGlucHV0U2lnbmF0dXJlczogaW5wdXRTaWduYXR1cmVzQ291bnQsXG4gICAgc2lnbmF0dXJlczogaW5wdXRTaWduYXR1cmVzQ291bnQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoY3VyciA+IHByZXYgPyBjdXJyIDogcHJldiksIDApLFxuICB9O1xufVxuIl19
@@ -0,0 +1,10 @@
1
+ export { explainPsbt, explainLegacyTx, ChangeAddressInfo } from './explainTransaction';
2
+ export { explainPsbtWasm } from './explainPsbtWasm';
3
+ export { parseTransaction } from './parseTransaction';
4
+ export { CustomChangeOptions } from './parseOutput';
5
+ export { verifyTransaction } from './verifyTransaction';
6
+ export { signTransaction } from './signTransaction';
7
+ export * from './signLegacyTransaction';
8
+ export * from './SigningError';
9
+ export * from './replayProtection';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.signTransaction = exports.verifyTransaction = exports.parseTransaction = exports.explainPsbtWasm = exports.explainLegacyTx = exports.explainPsbt = void 0;
18
+ var explainTransaction_1 = require("./explainTransaction");
19
+ Object.defineProperty(exports, "explainPsbt", { enumerable: true, get: function () { return explainTransaction_1.explainPsbt; } });
20
+ Object.defineProperty(exports, "explainLegacyTx", { enumerable: true, get: function () { return explainTransaction_1.explainLegacyTx; } });
21
+ var explainPsbtWasm_1 = require("./explainPsbtWasm");
22
+ Object.defineProperty(exports, "explainPsbtWasm", { enumerable: true, get: function () { return explainPsbtWasm_1.explainPsbtWasm; } });
23
+ var parseTransaction_1 = require("./parseTransaction");
24
+ Object.defineProperty(exports, "parseTransaction", { enumerable: true, get: function () { return parseTransaction_1.parseTransaction; } });
25
+ var verifyTransaction_1 = require("./verifyTransaction");
26
+ Object.defineProperty(exports, "verifyTransaction", { enumerable: true, get: function () { return verifyTransaction_1.verifyTransaction; } });
27
+ var signTransaction_1 = require("./signTransaction");
28
+ Object.defineProperty(exports, "signTransaction", { enumerable: true, get: function () { return signTransaction_1.signTransaction; } });
29
+ __exportStar(require("./signLegacyTransaction"), exports);
30
+ __exportStar(require("./SigningError"), exports);
31
+ __exportStar(require("./replayProtection"), exports);
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyREFBdUY7QUFBOUUsaUhBQUEsV0FBVyxPQUFBO0FBQUUscUhBQUEsZUFBZSxPQUFBO0FBQ3JDLHFEQUFvRDtBQUEzQyxrSEFBQSxlQUFlLE9BQUE7QUFDeEIsdURBQXNEO0FBQTdDLG9IQUFBLGdCQUFnQixPQUFBO0FBRXpCLHlEQUF3RDtBQUEvQyxzSEFBQSxpQkFBaUIsT0FBQTtBQUMxQixxREFBb0Q7QUFBM0Msa0hBQUEsZUFBZSxPQUFBO0FBQ3hCLDBEQUF3QztBQUN4QyxpREFBK0I7QUFDL0IscURBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZXhwbGFpblBzYnQsIGV4cGxhaW5MZWdhY3lUeCwgQ2hhbmdlQWRkcmVzc0luZm8gfSBmcm9tICcuL2V4cGxhaW5UcmFuc2FjdGlvbic7XG5leHBvcnQgeyBleHBsYWluUHNidFdhc20gfSBmcm9tICcuL2V4cGxhaW5Qc2J0V2FzbSc7XG5leHBvcnQgeyBwYXJzZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi9wYXJzZVRyYW5zYWN0aW9uJztcbmV4cG9ydCB7IEN1c3RvbUNoYW5nZU9wdGlvbnMgfSBmcm9tICcuL3BhcnNlT3V0cHV0JztcbmV4cG9ydCB7IHZlcmlmeVRyYW5zYWN0aW9uIH0gZnJvbSAnLi92ZXJpZnlUcmFuc2FjdGlvbic7XG5leHBvcnQgeyBzaWduVHJhbnNhY3Rpb24gfSBmcm9tICcuL3NpZ25UcmFuc2FjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3NpZ25MZWdhY3lUcmFuc2FjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL1NpZ25pbmdFcnJvcic7XG5leHBvcnQgKiBmcm9tICcuL3JlcGxheVByb3RlY3Rpb24nO1xuIl19
@@ -0,0 +1,4 @@
1
+ export interface Musig2Participant<T> {
2
+ getMusig2Nonces(psbt: T, walletId: string): Promise<T>;
3
+ }
4
+ //# sourceMappingURL=musig2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"musig2.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/musig2.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACxD"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVzaWcyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L211c2lnMi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBNdXNpZzJQYXJ0aWNpcGFudDxUPiB7XG4gIGdldE11c2lnMk5vbmNlcyhwc2J0OiBULCB3YWxsZXRJZDogc3RyaW5nKTogUHJvbWlzZTxUPjtcbn1cbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { IRequestTracer, IWallet, TransactionPrebuild, VerificationOptions, ITransactionRecipient, Triple } from '@bitgo-beta/sdk-core';
2
+ import { AbstractUtxoCoin } from '../../abstractUtxoCoin';
3
+ import { Output, FixedScriptWalletOutput } from '../types';
4
+ export declare function isWalletOutput(output: Output): output is FixedScriptWalletOutput;
5
+ export interface CustomChangeOptions {
6
+ keys: Triple<{
7
+ pub: string;
8
+ }>;
9
+ signatures: Triple<string>;
10
+ }
11
+ export interface ParseOutputOptions {
12
+ currentOutput: Output;
13
+ coin: AbstractUtxoCoin;
14
+ txPrebuild: TransactionPrebuild;
15
+ verification: VerificationOptions;
16
+ keychainArray: Triple<{
17
+ pub: string;
18
+ }>;
19
+ wallet: IWallet;
20
+ txParams: {
21
+ recipients: ITransactionRecipient[];
22
+ changeAddress?: string;
23
+ };
24
+ customChange?: CustomChangeOptions;
25
+ reqId?: IRequestTracer;
26
+ }
27
+ export declare function parseOutput({ currentOutput, coin, txPrebuild, verification, keychainArray, wallet, txParams, customChange, reqId, }: ParseOutputOptions): Promise<Output>;
28
+ //# sourceMappingURL=parseOutput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseOutput.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/parseOutput.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,cAAc,EAEd,OAAO,EACP,mBAAmB,EAEnB,mBAAmB,EACnB,qBAAqB,EACrB,MAAM,EACP,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAK3D,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,uBAAuB,CAIhF;AAqKD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,mBAAmB,CAAC;IAChC,YAAY,EAAE,mBAAmB,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE;QACR,UAAU,EAAE,qBAAqB,EAAE,CAAC;QACpC,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,wBAAsB,WAAW,CAAC,EAChC,aAAa,EACb,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,KAAK,GACN,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgHtC"}