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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (928) hide show
  1. package/README.md +76 -0
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts +466 -0
  3. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -0
  4. package/dist/cjs/src/abstractUtxoCoin.js +644 -0
  5. package/dist/cjs/src/address/fixedScript.d.ts +44 -0
  6. package/dist/cjs/src/address/fixedScript.d.ts.map +1 -0
  7. package/dist/cjs/src/address/fixedScript.js +109 -0
  8. package/dist/cjs/src/address/index.d.ts +2 -0
  9. package/dist/cjs/src/address/index.d.ts.map +1 -0
  10. package/dist/cjs/src/address/index.js +8 -0
  11. package/dist/cjs/src/config.d.ts.map +1 -0
  12. package/dist/cjs/src/config.js +14 -0
  13. package/dist/cjs/src/deriveKeyWithSeed.d.ts +12 -0
  14. package/dist/cjs/src/deriveKeyWithSeed.d.ts.map +1 -0
  15. package/dist/cjs/src/deriveKeyWithSeed.js +17 -0
  16. package/dist/cjs/src/descriptor/NamedDescriptor.d.ts +19 -0
  17. package/dist/cjs/src/descriptor/NamedDescriptor.d.ts.map +1 -0
  18. package/dist/cjs/src/descriptor/NamedDescriptor.js +77 -0
  19. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
  20. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
  21. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.js +32 -0
  22. package/dist/cjs/src/descriptor/builder/builder.d.ts +17 -0
  23. package/dist/cjs/src/descriptor/builder/builder.d.ts.map +1 -0
  24. package/dist/cjs/src/descriptor/builder/builder.js +54 -0
  25. package/dist/cjs/src/descriptor/builder/index.d.ts +3 -0
  26. package/dist/cjs/src/descriptor/builder/index.d.ts.map +1 -0
  27. package/dist/cjs/src/descriptor/builder/index.js +8 -0
  28. package/dist/cjs/src/descriptor/builder/parse.d.ts +5 -0
  29. package/dist/cjs/src/descriptor/builder/parse.d.ts.map +1 -0
  30. package/dist/cjs/src/descriptor/builder/parse.js +148 -0
  31. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
  32. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
  33. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.js +41 -0
  34. package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts +12 -0
  35. package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  36. package/dist/cjs/src/descriptor/createWallet/createDescriptors.js +33 -0
  37. package/dist/cjs/src/descriptor/createWallet/index.d.ts +3 -0
  38. package/dist/cjs/src/descriptor/createWallet/index.d.ts.map +1 -0
  39. package/dist/cjs/src/descriptor/createWallet/index.js +19 -0
  40. package/dist/cjs/src/descriptor/descriptorWallet.d.ts +19 -0
  41. package/dist/cjs/src/descriptor/descriptorWallet.d.ts.map +1 -0
  42. package/dist/cjs/src/descriptor/descriptorWallet.js +54 -0
  43. package/dist/cjs/src/descriptor/index.d.ts +9 -0
  44. package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
  45. package/dist/cjs/src/descriptor/index.js +53 -0
  46. package/dist/cjs/src/descriptor/validatePolicy.d.ts +22 -0
  47. package/dist/cjs/src/descriptor/validatePolicy.d.ts.map +1 -0
  48. package/dist/cjs/src/descriptor/validatePolicy.js +94 -0
  49. package/dist/cjs/src/impl/bch/bch.d.ts +36 -0
  50. package/dist/cjs/src/impl/bch/bch.d.ts.map +1 -0
  51. package/dist/cjs/src/impl/bch/bch.js +67 -0
  52. package/dist/cjs/src/impl/bch/index.d.ts +3 -0
  53. package/dist/cjs/src/impl/bch/index.d.ts.map +1 -0
  54. package/dist/cjs/src/impl/bch/index.js +19 -0
  55. package/dist/cjs/src/impl/bch/tbch.d.ts +12 -0
  56. package/dist/cjs/src/impl/bch/tbch.d.ts.map +1 -0
  57. package/dist/cjs/src/impl/bch/tbch.js +15 -0
  58. package/dist/cjs/src/impl/bcha/bcha.d.ts +9 -0
  59. package/dist/cjs/src/impl/bcha/bcha.d.ts.map +1 -0
  60. package/dist/cjs/src/impl/bcha/bcha.js +15 -0
  61. package/dist/cjs/src/impl/bcha/index.d.ts +3 -0
  62. package/dist/cjs/src/impl/bcha/index.d.ts.map +1 -0
  63. package/dist/cjs/src/impl/bcha/index.js +19 -0
  64. package/dist/cjs/src/impl/bcha/tbcha.d.ts +12 -0
  65. package/dist/cjs/src/impl/bcha/tbcha.d.ts.map +1 -0
  66. package/dist/cjs/src/impl/bcha/tbcha.js +15 -0
  67. package/dist/cjs/src/impl/bsv/bsv.d.ts +9 -0
  68. package/dist/cjs/src/impl/bsv/bsv.d.ts.map +1 -0
  69. package/dist/cjs/src/impl/bsv/bsv.js +15 -0
  70. package/dist/cjs/src/impl/bsv/index.d.ts +3 -0
  71. package/dist/cjs/src/impl/bsv/index.d.ts.map +1 -0
  72. package/dist/cjs/src/impl/bsv/index.js +19 -0
  73. package/dist/cjs/src/impl/bsv/tbsv.d.ts +12 -0
  74. package/dist/cjs/src/impl/bsv/tbsv.d.ts.map +1 -0
  75. package/dist/cjs/src/impl/bsv/tbsv.js +15 -0
  76. package/dist/cjs/src/impl/btc/btc.d.ts +15 -0
  77. package/dist/cjs/src/impl/btc/btc.d.ts.map +1 -0
  78. package/dist/cjs/src/impl/btc/btc.js +22 -0
  79. package/dist/cjs/src/impl/btc/index.d.ts +10 -0
  80. package/dist/cjs/src/impl/btc/index.d.ts.map +1 -0
  81. package/dist/cjs/src/impl/btc/index.js +26 -0
  82. package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts +61 -0
  83. package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts.map +1 -0
  84. package/dist/cjs/src/impl/btc/inscriptionBuilder.js +170 -0
  85. package/dist/cjs/src/impl/btc/tbtc.d.ts +12 -0
  86. package/dist/cjs/src/impl/btc/tbtc.d.ts.map +1 -0
  87. package/dist/cjs/src/impl/btc/tbtc.js +15 -0
  88. package/dist/cjs/src/impl/btc/tbtc4.d.ts +12 -0
  89. package/dist/cjs/src/impl/btc/tbtc4.d.ts.map +1 -0
  90. package/dist/cjs/src/impl/btc/tbtc4.js +15 -0
  91. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts +12 -0
  92. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts.map +1 -0
  93. package/dist/cjs/src/impl/btc/tbtcbgsig.js +15 -0
  94. package/dist/cjs/src/impl/btc/tbtcsig.d.ts +12 -0
  95. package/dist/cjs/src/impl/btc/tbtcsig.d.ts.map +1 -0
  96. package/dist/cjs/src/impl/btc/tbtcsig.js +15 -0
  97. package/dist/cjs/src/impl/btc/tbtcstx.d.ts +10 -0
  98. package/dist/cjs/src/impl/btc/tbtcstx.d.ts.map +1 -0
  99. package/dist/cjs/src/impl/btc/tbtcstx.js +18 -0
  100. package/dist/cjs/src/impl/btc/tbtcstxprivate1.d.ts +9 -0
  101. package/dist/cjs/src/impl/btc/tbtcstxprivate1.d.ts.map +1 -0
  102. package/dist/cjs/src/impl/btc/tbtcstxprivate1.js +15 -0
  103. package/dist/cjs/src/impl/btc/tbtcstxsignet.d.ts +10 -0
  104. package/dist/cjs/src/impl/btc/tbtcstxsignet.d.ts.map +1 -0
  105. package/dist/cjs/src/impl/btc/tbtcstxsignet.js +18 -0
  106. package/dist/cjs/src/impl/btg/btg.d.ts +9 -0
  107. package/dist/cjs/src/impl/btg/btg.d.ts.map +1 -0
  108. package/dist/cjs/src/impl/btg/btg.js +15 -0
  109. package/dist/cjs/src/impl/btg/index.d.ts +2 -0
  110. package/dist/cjs/src/impl/btg/index.d.ts.map +1 -0
  111. package/dist/cjs/src/impl/btg/index.js +18 -0
  112. package/dist/cjs/src/impl/dash/dash.d.ts +9 -0
  113. package/dist/cjs/src/impl/dash/dash.d.ts.map +1 -0
  114. package/dist/cjs/src/impl/dash/dash.js +15 -0
  115. package/dist/cjs/src/impl/dash/index.d.ts +3 -0
  116. package/dist/cjs/src/impl/dash/index.d.ts.map +1 -0
  117. package/dist/cjs/src/impl/dash/index.js +19 -0
  118. package/dist/cjs/src/impl/dash/tdash.d.ts +12 -0
  119. package/dist/cjs/src/impl/dash/tdash.d.ts.map +1 -0
  120. package/dist/cjs/src/impl/dash/tdash.js +15 -0
  121. package/dist/cjs/src/impl/doge/doge.d.ts +33 -0
  122. package/dist/cjs/src/impl/doge/doge.d.ts.map +1 -0
  123. package/dist/cjs/src/impl/doge/doge.js +76 -0
  124. package/dist/cjs/src/impl/doge/index.d.ts +3 -0
  125. package/dist/cjs/src/impl/doge/index.d.ts.map +1 -0
  126. package/dist/cjs/src/impl/doge/index.js +19 -0
  127. package/dist/cjs/src/impl/doge/tdoge.d.ts +12 -0
  128. package/dist/cjs/src/impl/doge/tdoge.d.ts.map +1 -0
  129. package/dist/cjs/src/impl/doge/tdoge.js +15 -0
  130. package/dist/cjs/src/impl/index.d.ts +11 -0
  131. package/dist/cjs/src/impl/index.d.ts.map +1 -0
  132. package/dist/cjs/src/impl/index.js +47 -0
  133. package/dist/cjs/src/impl/ltc/index.d.ts +3 -0
  134. package/dist/cjs/src/impl/ltc/index.d.ts.map +1 -0
  135. package/dist/cjs/src/impl/ltc/index.js +19 -0
  136. package/dist/cjs/src/impl/ltc/ltc.d.ts +8 -0
  137. package/dist/cjs/src/impl/ltc/ltc.d.ts.map +1 -0
  138. package/dist/cjs/src/impl/ltc/ltc.js +15 -0
  139. package/dist/cjs/src/impl/ltc/tltc.d.ts +8 -0
  140. package/dist/cjs/src/impl/ltc/tltc.d.ts.map +1 -0
  141. package/dist/cjs/src/impl/ltc/tltc.js +15 -0
  142. package/dist/cjs/src/impl/pearl/index.d.ts +3 -0
  143. package/dist/cjs/src/impl/pearl/index.d.ts.map +1 -0
  144. package/dist/cjs/src/impl/pearl/index.js +19 -0
  145. package/dist/cjs/src/impl/pearl/pearl.d.ts +17 -0
  146. package/dist/cjs/src/impl/pearl/pearl.d.ts.map +1 -0
  147. package/dist/cjs/src/impl/pearl/pearl.js +24 -0
  148. package/dist/cjs/src/impl/pearl/tpearl.d.ts +8 -0
  149. package/dist/cjs/src/impl/pearl/tpearl.d.ts.map +1 -0
  150. package/dist/cjs/src/impl/pearl/tpearl.js +15 -0
  151. package/dist/cjs/src/impl/zec/address.d.ts +79 -0
  152. package/dist/cjs/src/impl/zec/address.d.ts.map +1 -0
  153. package/dist/cjs/src/impl/zec/address.js +157 -0
  154. package/dist/cjs/src/impl/zec/index.d.ts +7 -0
  155. package/dist/cjs/src/impl/zec/index.d.ts.map +1 -0
  156. package/dist/cjs/src/impl/zec/index.js +23 -0
  157. package/dist/cjs/src/impl/zec/recipients.d.ts +86 -0
  158. package/dist/cjs/src/impl/zec/recipients.d.ts.map +1 -0
  159. package/dist/cjs/src/impl/zec/recipients.js +98 -0
  160. package/dist/cjs/src/impl/zec/shieldedAddress.d.ts +36 -0
  161. package/dist/cjs/src/impl/zec/shieldedAddress.d.ts.map +1 -0
  162. package/dist/cjs/src/impl/zec/shieldedAddress.js +51 -0
  163. package/dist/cjs/src/impl/zec/signIronwoodTransaction.d.ts +29 -0
  164. package/dist/cjs/src/impl/zec/signIronwoodTransaction.d.ts.map +1 -0
  165. package/dist/cjs/src/impl/zec/signIronwoodTransaction.js +57 -0
  166. package/dist/cjs/src/impl/zec/types.d.ts +8 -0
  167. package/dist/cjs/src/impl/zec/types.d.ts.map +1 -0
  168. package/dist/cjs/src/impl/zec/types.js +3 -0
  169. package/dist/cjs/src/impl/zec/tzec.d.ts +9 -0
  170. package/dist/cjs/src/impl/zec/tzec.d.ts.map +1 -0
  171. package/dist/cjs/src/impl/zec/tzec.js +15 -0
  172. package/dist/cjs/src/impl/zec/zec.d.ts +58 -0
  173. package/dist/cjs/src/impl/zec/zec.d.ts.map +1 -0
  174. package/dist/cjs/src/impl/zec/zec.js +124 -0
  175. package/dist/cjs/src/index.d.ts +23 -0
  176. package/dist/cjs/src/index.d.ts.map +1 -0
  177. package/dist/cjs/src/index.js +62 -0
  178. package/dist/cjs/src/keychains.d.ts +55 -0
  179. package/dist/cjs/src/keychains.d.ts.map +1 -0
  180. package/dist/cjs/src/keychains.js +143 -0
  181. package/dist/cjs/src/names.d.ts +16 -0
  182. package/dist/cjs/src/names.d.ts.map +1 -0
  183. package/dist/cjs/src/names.js +119 -0
  184. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts +9 -0
  185. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
  186. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.js +22 -0
  187. package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts +46 -0
  188. package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
  189. package/dist/cjs/src/offlineVault/OfflineVaultSignable.js +55 -0
  190. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts +16 -0
  191. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts.map +1 -0
  192. package/dist/cjs/src/offlineVault/TransactionExplanation.js +15 -0
  193. package/dist/cjs/src/offlineVault/descriptor/index.d.ts +2 -0
  194. package/dist/cjs/src/offlineVault/descriptor/index.d.ts.map +1 -0
  195. package/dist/cjs/src/offlineVault/descriptor/index.js +18 -0
  196. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts +39 -0
  197. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts.map +1 -0
  198. package/dist/cjs/src/offlineVault/descriptor/transaction.js +80 -0
  199. package/dist/cjs/src/offlineVault/index.d.ts +6 -0
  200. package/dist/cjs/src/offlineVault/index.d.ts.map +1 -0
  201. package/dist/cjs/src/offlineVault/index.js +44 -0
  202. package/dist/{src → cjs/src}/recovery/RecoveryProvider.d.ts +1 -3
  203. package/dist/cjs/src/recovery/RecoveryProvider.d.ts.map +1 -0
  204. package/dist/cjs/src/recovery/RecoveryProvider.js +22 -0
  205. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts +176 -0
  206. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -0
  207. package/dist/cjs/src/recovery/backupKeyRecovery.js +417 -0
  208. package/dist/{src → cjs/src}/recovery/baseApi.d.ts +3 -6
  209. package/dist/cjs/src/recovery/baseApi.d.ts.map +1 -0
  210. package/dist/cjs/src/recovery/baseApi.js +73 -0
  211. package/dist/{src → cjs/src}/recovery/coingeckoApi.d.ts +0 -3
  212. package/dist/cjs/src/recovery/coingeckoApi.d.ts.map +1 -0
  213. package/dist/cjs/src/recovery/coingeckoApi.js +44 -0
  214. package/dist/{src → cjs/src}/recovery/crossChainRecovery.d.ts +21 -9
  215. package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -0
  216. package/dist/cjs/src/recovery/crossChainRecovery.js +302 -0
  217. package/dist/{src → cjs/src}/recovery/index.d.ts +0 -1
  218. package/dist/cjs/src/recovery/index.d.ts.map +1 -0
  219. package/dist/{src → cjs/src}/recovery/index.js +6 -3
  220. package/dist/cjs/src/recovery/mempoolApi.d.ts.map +1 -0
  221. package/dist/cjs/src/recovery/mempoolApi.js +36 -0
  222. package/dist/cjs/src/recovery/psbt.d.ts +68 -0
  223. package/dist/cjs/src/recovery/psbt.d.ts.map +1 -0
  224. package/dist/cjs/src/recovery/psbt.js +160 -0
  225. package/dist/cjs/src/tnumber.d.ts +4 -0
  226. package/dist/cjs/src/tnumber.d.ts.map +1 -0
  227. package/dist/cjs/src/tnumber.js +12 -0
  228. package/dist/cjs/src/transaction/bip322.d.ts +27 -0
  229. package/dist/cjs/src/transaction/bip322.d.ts.map +1 -0
  230. package/dist/cjs/src/transaction/bip322.js +139 -0
  231. package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts +2 -0
  232. package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
  233. package/dist/cjs/src/transaction/common/verifyPayGoAmount.js +3 -0
  234. package/dist/cjs/src/transaction/decode.d.ts +21 -0
  235. package/dist/cjs/src/transaction/decode.d.ts.map +1 -0
  236. package/dist/cjs/src/transaction/decode.js +46 -0
  237. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts +5 -0
  238. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  239. package/dist/cjs/src/transaction/descriptor/explainPsbt.js +48 -0
  240. package/dist/cjs/src/transaction/descriptor/index.d.ts +7 -0
  241. package/dist/cjs/src/transaction/descriptor/index.d.ts.map +1 -0
  242. package/dist/cjs/src/transaction/descriptor/index.js +14 -0
  243. package/dist/cjs/src/transaction/descriptor/parse.d.ts +18 -0
  244. package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -0
  245. package/dist/cjs/src/transaction/descriptor/parse.js +85 -0
  246. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts +15 -0
  247. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
  248. package/dist/cjs/src/transaction/descriptor/parseToAmountType.js +60 -0
  249. package/dist/cjs/src/transaction/descriptor/recipient.d.ts +5 -0
  250. package/dist/cjs/src/transaction/descriptor/recipient.d.ts.map +1 -0
  251. package/dist/cjs/src/transaction/descriptor/recipient.js +3 -0
  252. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts +25 -0
  253. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts.map +1 -0
  254. package/dist/cjs/src/transaction/descriptor/signPsbt.js +44 -0
  255. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts +36 -0
  256. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
  257. package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +90 -0
  258. package/dist/cjs/src/transaction/explainTransaction.d.ts +19 -0
  259. package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -0
  260. package/dist/cjs/src/transaction/explainTransaction.js +85 -0
  261. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts +24 -0
  262. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts.map +1 -0
  263. package/dist/cjs/src/transaction/fixedScript/SigningError.js +32 -0
  264. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts +47 -0
  265. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  266. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.js +152 -0
  267. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +47 -0
  268. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  269. package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +3 -0
  270. package/dist/cjs/src/transaction/fixedScript/index.d.ts +8 -0
  271. package/dist/cjs/src/transaction/fixedScript/index.d.ts.map +1 -0
  272. package/dist/cjs/src/transaction/fixedScript/index.js +30 -0
  273. package/dist/cjs/src/transaction/fixedScript/musig2.d.ts +4 -0
  274. package/dist/cjs/src/transaction/fixedScript/musig2.d.ts.map +1 -0
  275. package/dist/cjs/src/transaction/fixedScript/musig2.js +3 -0
  276. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts +30 -0
  277. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  278. package/dist/cjs/src/transaction/fixedScript/parseOutput.js +217 -0
  279. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts +9 -0
  280. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  281. package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +234 -0
  282. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts +10 -0
  283. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  284. package/dist/cjs/src/transaction/fixedScript/replayProtection.js +44 -0
  285. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts +27 -0
  286. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
  287. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.js +130 -0
  288. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +31 -0
  289. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -0
  290. package/dist/cjs/src/transaction/fixedScript/signTransaction.js +55 -0
  291. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts +21 -0
  292. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  293. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.js +182 -0
  294. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts +9 -0
  295. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
  296. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.js +20 -0
  297. package/dist/cjs/src/transaction/index.d.ts +9 -0
  298. package/dist/cjs/src/transaction/index.d.ts.map +1 -0
  299. package/dist/cjs/src/transaction/index.js +52 -0
  300. package/dist/cjs/src/transaction/outputDifference.d.ts +44 -0
  301. package/dist/cjs/src/transaction/outputDifference.d.ts.map +1 -0
  302. package/dist/cjs/src/transaction/outputDifference.js +51 -0
  303. package/dist/cjs/src/transaction/parseTransaction.d.ts +5 -0
  304. package/dist/cjs/src/transaction/parseTransaction.d.ts.map +1 -0
  305. package/dist/cjs/src/transaction/parseTransaction.js +48 -0
  306. package/dist/cjs/src/transaction/recipient.d.ts +76 -0
  307. package/dist/cjs/src/transaction/recipient.d.ts.map +1 -0
  308. package/dist/cjs/src/transaction/recipient.js +130 -0
  309. package/dist/cjs/src/transaction/signTransaction.d.ts +18 -0
  310. package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -0
  311. package/dist/cjs/src/transaction/signTransaction.js +114 -0
  312. package/dist/cjs/src/transaction/types.d.ts +47 -0
  313. package/dist/cjs/src/transaction/types.d.ts.map +1 -0
  314. package/dist/cjs/src/transaction/types.js +3 -0
  315. package/dist/cjs/src/transaction/verifyTransaction.d.ts +5 -0
  316. package/dist/cjs/src/transaction/verifyTransaction.d.ts.map +1 -0
  317. package/dist/cjs/src/transaction/verifyTransaction.js +50 -0
  318. package/dist/cjs/src/unspent.d.ts +59 -0
  319. package/dist/cjs/src/unspent.d.ts.map +1 -0
  320. package/dist/cjs/src/unspent.js +20 -0
  321. package/dist/cjs/src/verifyKey.d.ts +22 -0
  322. package/dist/cjs/src/verifyKey.d.ts.map +1 -0
  323. package/dist/cjs/src/verifyKey.js +110 -0
  324. package/dist/cjs/src/wallet.d.ts +15 -0
  325. package/dist/cjs/src/wallet.d.ts.map +1 -0
  326. package/dist/cjs/src/wallet.js +8 -0
  327. package/dist/cjs/test/integration/impl/bch/bch.d.ts +2 -0
  328. package/dist/cjs/test/integration/impl/bch/bch.d.ts.map +1 -0
  329. package/dist/cjs/test/integration/impl/bch/bch.js +76 -0
  330. package/dist/cjs/test/unit/address.d.ts +2 -0
  331. package/dist/cjs/test/unit/address.d.ts.map +1 -0
  332. package/dist/cjs/test/unit/address.js +201 -0
  333. package/dist/cjs/test/unit/bip322.d.ts +2 -0
  334. package/dist/cjs/test/unit/bip322.d.ts.map +1 -0
  335. package/dist/cjs/test/unit/bip322.js +491 -0
  336. package/dist/cjs/test/unit/buildSignSendLegacyFormat.d.ts +2 -0
  337. package/dist/cjs/test/unit/buildSignSendLegacyFormat.d.ts.map +1 -0
  338. package/dist/cjs/test/unit/buildSignSendLegacyFormat.js +102 -0
  339. package/dist/cjs/test/unit/coins.d.ts +2 -0
  340. package/dist/cjs/test/unit/coins.d.ts.map +1 -0
  341. package/dist/cjs/test/unit/coins.js +161 -0
  342. package/dist/cjs/test/unit/customChangeWallet.d.ts +2 -0
  343. package/dist/cjs/test/unit/customChangeWallet.d.ts.map +1 -0
  344. package/dist/cjs/test/unit/customChangeWallet.js +206 -0
  345. package/dist/cjs/test/unit/customChangeWalletFixtures.d.ts +2 -0
  346. package/dist/cjs/test/unit/customChangeWalletFixtures.d.ts.map +1 -0
  347. package/dist/cjs/test/unit/customChangeWalletFixtures.js +53 -0
  348. package/dist/cjs/test/unit/customSigner.d.ts +2 -0
  349. package/dist/cjs/test/unit/customSigner.d.ts.map +1 -0
  350. package/dist/cjs/test/unit/customSigner.js +99 -0
  351. package/dist/cjs/test/unit/deriveKeyWithSeed.d.ts +2 -0
  352. package/dist/cjs/test/unit/deriveKeyWithSeed.d.ts.map +1 -0
  353. package/dist/cjs/test/unit/deriveKeyWithSeed.js +56 -0
  354. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts +2 -0
  355. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts.map +1 -0
  356. package/dist/cjs/test/unit/descriptor/NamedDescriptor.js +51 -0
  357. package/dist/cjs/test/unit/descriptor/builder.d.ts +2 -0
  358. package/dist/cjs/test/unit/descriptor/builder.d.ts.map +1 -0
  359. package/dist/cjs/test/unit/descriptor/builder.js +92 -0
  360. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts +2 -0
  361. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  362. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.js +53 -0
  363. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts +2 -0
  364. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts.map +1 -0
  365. package/dist/cjs/test/unit/descriptor/descriptorWallet.js +62 -0
  366. package/dist/cjs/test/unit/descriptorAddress.d.ts +3 -0
  367. package/dist/cjs/test/unit/descriptorAddress.d.ts.map +1 -0
  368. package/dist/cjs/test/unit/descriptorAddress.js +123 -0
  369. package/dist/cjs/test/unit/explainTransaction.d.ts +2 -0
  370. package/dist/cjs/test/unit/explainTransaction.d.ts.map +1 -0
  371. package/dist/cjs/test/unit/explainTransaction.js +37 -0
  372. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts +4 -0
  373. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts.map +1 -0
  374. package/dist/cjs/test/unit/fixtures/psbtHexProof.js +9 -0
  375. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts +2 -0
  376. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts.map +1 -0
  377. package/dist/cjs/test/unit/impl/bch/unit/bch.js +79 -0
  378. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts +2 -0
  379. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts.map +1 -0
  380. package/dist/cjs/test/unit/impl/bcha/unit/index.js +41 -0
  381. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts +2 -0
  382. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts.map +1 -0
  383. package/dist/cjs/test/unit/impl/bsv/unit/index.js +34 -0
  384. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts +2 -0
  385. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts.map +1 -0
  386. package/dist/cjs/test/unit/impl/btg/unit/index.js +33 -0
  387. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts +2 -0
  388. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts.map +1 -0
  389. package/dist/cjs/test/unit/impl/dash/unit/index.js +34 -0
  390. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts +2 -0
  391. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts.map +1 -0
  392. package/dist/cjs/test/unit/impl/doge/unit/index.js +34 -0
  393. package/dist/cjs/test/unit/impl/pearl/unit/index.d.ts +2 -0
  394. package/dist/cjs/test/unit/impl/pearl/unit/index.d.ts.map +1 -0
  395. package/dist/cjs/test/unit/impl/pearl/unit/index.js +111 -0
  396. package/dist/cjs/test/unit/impl/zec/psbtDecode.d.ts +2 -0
  397. package/dist/cjs/test/unit/impl/zec/psbtDecode.d.ts.map +1 -0
  398. package/dist/cjs/test/unit/impl/zec/psbtDecode.js +69 -0
  399. package/dist/cjs/test/unit/impl/zec/shieldedPrebuildAndSign.d.ts +2 -0
  400. package/dist/cjs/test/unit/impl/zec/shieldedPrebuildAndSign.d.ts.map +1 -0
  401. package/dist/cjs/test/unit/impl/zec/shieldedPrebuildAndSign.js +470 -0
  402. package/dist/cjs/test/unit/impl/zec/unit/address.d.ts +2 -0
  403. package/dist/cjs/test/unit/impl/zec/unit/address.d.ts.map +1 -0
  404. package/dist/cjs/test/unit/impl/zec/unit/address.js +227 -0
  405. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts +2 -0
  406. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts.map +1 -0
  407. package/dist/cjs/test/unit/impl/zec/unit/index.js +30 -0
  408. package/dist/cjs/test/unit/impl/zec/unit/resolvePsbtRecipients.d.ts +2 -0
  409. package/dist/cjs/test/unit/impl/zec/unit/resolvePsbtRecipients.d.ts.map +1 -0
  410. package/dist/cjs/test/unit/impl/zec/unit/resolvePsbtRecipients.js +91 -0
  411. package/dist/cjs/test/unit/impl/zec/unit/shieldedAddress.d.ts +2 -0
  412. package/dist/cjs/test/unit/impl/zec/unit/shieldedAddress.d.ts.map +1 -0
  413. package/dist/cjs/test/unit/impl/zec/unit/shieldedAddress.js +57 -0
  414. package/dist/cjs/test/unit/impl/zec/unit/unifiedRecipientPreference.d.ts +2 -0
  415. package/dist/cjs/test/unit/impl/zec/unit/unifiedRecipientPreference.d.ts.map +1 -0
  416. package/dist/cjs/test/unit/impl/zec/unit/unifiedRecipientPreference.js +57 -0
  417. package/dist/cjs/test/unit/keySignatures.d.ts +2 -0
  418. package/dist/cjs/test/unit/keySignatures.d.ts.map +1 -0
  419. package/dist/cjs/test/unit/keySignatures.js +54 -0
  420. package/dist/cjs/test/unit/keychains.d.ts +2 -0
  421. package/dist/cjs/test/unit/keychains.d.ts.map +1 -0
  422. package/dist/cjs/test/unit/keychains.js +87 -0
  423. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts +2 -0
  424. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts.map +1 -0
  425. package/dist/cjs/test/unit/offlineVault/halfSigned.js +124 -0
  426. package/dist/cjs/test/unit/parseTransaction.d.ts +2 -0
  427. package/dist/cjs/test/unit/parseTransaction.d.ts.map +1 -0
  428. package/dist/cjs/test/unit/parseTransaction.js +155 -0
  429. package/dist/cjs/test/unit/pendingApprovalTxHexPsbt.d.ts +2 -0
  430. package/dist/cjs/test/unit/pendingApprovalTxHexPsbt.d.ts.map +1 -0
  431. package/dist/cjs/test/unit/pendingApprovalTxHexPsbt.js +99 -0
  432. package/dist/cjs/test/unit/postProcessPrebuild.d.ts +2 -0
  433. package/dist/cjs/test/unit/postProcessPrebuild.d.ts.map +1 -0
  434. package/dist/cjs/test/unit/postProcessPrebuild.js +65 -0
  435. package/dist/cjs/test/unit/prebuildAndSign.d.ts +2 -0
  436. package/dist/cjs/test/unit/prebuildAndSign.d.ts.map +1 -0
  437. package/dist/cjs/test/unit/prebuildAndSign.js +218 -0
  438. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts +2 -0
  439. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts.map +1 -0
  440. package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +149 -0
  441. package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.d.ts +2 -0
  442. package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.d.ts.map +1 -0
  443. package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.js +147 -0
  444. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts +2 -0
  445. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts.map +1 -0
  446. package/dist/cjs/test/unit/recovery/crossChainRecovery.js +352 -0
  447. package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.d.ts +2 -0
  448. package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.d.ts.map +1 -0
  449. package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.js +189 -0
  450. package/dist/cjs/test/unit/recovery/mock.d.ts +37 -0
  451. package/dist/cjs/test/unit/recovery/mock.d.ts.map +1 -0
  452. package/dist/cjs/test/unit/recovery/mock.js +113 -0
  453. package/dist/cjs/test/unit/signTransaction.d.ts +2 -0
  454. package/dist/cjs/test/unit/signTransaction.d.ts.map +1 -0
  455. package/dist/cjs/test/unit/signTransaction.js +223 -0
  456. package/dist/cjs/test/unit/tbtcstx.d.ts +2 -0
  457. package/dist/cjs/test/unit/tbtcstx.d.ts.map +1 -0
  458. package/dist/cjs/test/unit/tbtcstx.js +60 -0
  459. package/dist/cjs/test/unit/tbtcstxprivate1.d.ts +2 -0
  460. package/dist/cjs/test/unit/tbtcstxprivate1.d.ts.map +1 -0
  461. package/dist/cjs/test/unit/tbtcstxprivate1.js +61 -0
  462. package/dist/cjs/test/unit/tbtcstxsignet.d.ts +2 -0
  463. package/dist/cjs/test/unit/tbtcstxsignet.d.ts.map +1 -0
  464. package/dist/cjs/test/unit/tbtcstxsignet.js +61 -0
  465. package/dist/cjs/test/unit/testSpoofTransaction.d.ts +2 -0
  466. package/dist/cjs/test/unit/testSpoofTransaction.d.ts.map +1 -0
  467. package/dist/cjs/test/unit/testSpoofTransaction.js +114 -0
  468. package/dist/cjs/test/unit/transaction/addressCodec.d.ts +2 -0
  469. package/dist/cjs/test/unit/transaction/addressCodec.d.ts.map +1 -0
  470. package/dist/cjs/test/unit/transaction/addressCodec.js +30 -0
  471. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts +2 -0
  472. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  473. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.js +64 -0
  474. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts +6 -0
  475. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts.map +1 -0
  476. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.js +51 -0
  477. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts +2 -0
  478. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts.map +1 -0
  479. package/dist/cjs/test/unit/transaction/descriptor/parse.js +140 -0
  480. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts +2 -0
  481. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts.map +1 -0
  482. package/dist/cjs/test/unit/transaction/descriptor/sign.js +76 -0
  483. package/dist/cjs/test/unit/transaction/descriptor/signTransactionE2E.d.ts +2 -0
  484. package/dist/cjs/test/unit/transaction/descriptor/signTransactionE2E.d.ts.map +1 -0
  485. package/dist/cjs/test/unit/transaction/descriptor/signTransactionE2E.js +100 -0
  486. package/dist/cjs/test/unit/transaction/descriptor/signTransactionGuard.d.ts +2 -0
  487. package/dist/cjs/test/unit/transaction/descriptor/signTransactionGuard.d.ts.map +1 -0
  488. package/dist/cjs/test/unit/transaction/descriptor/signTransactionGuard.js +84 -0
  489. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts +2 -0
  490. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts.map +1 -0
  491. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.js +81 -0
  492. package/dist/cjs/test/unit/transaction/descriptor/verifyTransactionQr.d.ts +2 -0
  493. package/dist/cjs/test/unit/transaction/descriptor/verifyTransactionQr.d.ts.map +1 -0
  494. package/dist/cjs/test/unit/transaction/descriptor/verifyTransactionQr.js +103 -0
  495. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts +2 -0
  496. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts.map +1 -0
  497. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.js +179 -0
  498. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.d.ts +2 -0
  499. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.d.ts.map +1 -0
  500. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.js +223 -0
  501. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts +2 -0
  502. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  503. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.js +60 -0
  504. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.d.ts +2 -0
  505. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.d.ts.map +1 -0
  506. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.js +98 -0
  507. package/dist/cjs/test/unit/transaction/outputDifference.d.ts +2 -0
  508. package/dist/cjs/test/unit/transaction/outputDifference.d.ts.map +1 -0
  509. package/dist/cjs/test/unit/transaction/outputDifference.js +117 -0
  510. package/dist/cjs/test/unit/transaction/recipient.d.ts +2 -0
  511. package/dist/cjs/test/unit/transaction/recipient.d.ts.map +1 -0
  512. package/dist/cjs/test/unit/transaction/recipient.js +52 -0
  513. package/dist/cjs/test/unit/transaction.d.ts +2 -0
  514. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  515. package/dist/cjs/test/unit/transaction.js +301 -0
  516. package/dist/cjs/test/unit/txFormat.d.ts +30 -0
  517. package/dist/cjs/test/unit/txFormat.d.ts.map +1 -0
  518. package/dist/cjs/test/unit/txFormat.js +161 -0
  519. package/dist/cjs/test/unit/util/address.d.ts +14 -0
  520. package/dist/cjs/test/unit/util/address.d.ts.map +1 -0
  521. package/dist/cjs/test/unit/util/address.js +16 -0
  522. package/dist/cjs/test/unit/util/assert.d.ts +3 -0
  523. package/dist/cjs/test/unit/util/assert.d.ts.map +1 -0
  524. package/dist/cjs/test/unit/util/assert.js +24 -0
  525. package/dist/cjs/test/unit/util/fixtures.d.ts +13 -0
  526. package/dist/cjs/test/unit/util/fixtures.d.ts.map +1 -0
  527. package/dist/cjs/test/unit/util/fixtures.js +105 -0
  528. package/dist/cjs/test/unit/util/index.d.ts +11 -0
  529. package/dist/cjs/test/unit/util/index.d.ts.map +1 -0
  530. package/dist/cjs/test/unit/util/index.js +27 -0
  531. package/dist/cjs/test/unit/util/keychains.d.ts +55 -0
  532. package/dist/cjs/test/unit/util/keychains.d.ts.map +1 -0
  533. package/dist/cjs/test/unit/util/keychains.js +122 -0
  534. package/dist/cjs/test/unit/util/nockBitGo.d.ts +10 -0
  535. package/dist/cjs/test/unit/util/nockBitGo.d.ts.map +1 -0
  536. package/dist/cjs/test/unit/util/nockBitGo.js +27 -0
  537. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts +8 -0
  538. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts.map +1 -0
  539. package/dist/cjs/test/unit/util/nockIndexerAPI.js +22 -0
  540. package/dist/cjs/test/unit/util/psbt.d.ts +19 -0
  541. package/dist/cjs/test/unit/util/psbt.d.ts.map +1 -0
  542. package/dist/cjs/test/unit/util/psbt.js +21 -0
  543. package/dist/cjs/test/unit/util/transaction.d.ts +28 -0
  544. package/dist/cjs/test/unit/util/transaction.d.ts.map +1 -0
  545. package/dist/cjs/test/unit/util/transaction.js +132 -0
  546. package/dist/cjs/test/unit/util/unspents.d.ts +71 -0
  547. package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -0
  548. package/dist/cjs/test/unit/util/unspents.js +224 -0
  549. package/dist/cjs/test/unit/util/utxoCoins.d.ts +30 -0
  550. package/dist/cjs/test/unit/util/utxoCoins.d.ts.map +1 -0
  551. package/dist/cjs/test/unit/util/utxoCoins.js +159 -0
  552. package/dist/cjs/test/unit/util/wallet.d.ts +4 -0
  553. package/dist/cjs/test/unit/util/wallet.d.ts.map +1 -0
  554. package/dist/cjs/test/unit/util/wallet.js +9 -0
  555. package/dist/cjs/test/unit/verifyTransaction.d.ts +2 -0
  556. package/dist/cjs/test/unit/verifyTransaction.d.ts.map +1 -0
  557. package/dist/cjs/test/unit/verifyTransaction.js +539 -0
  558. package/dist/cjs/test/unit/wallet.d.ts +2 -0
  559. package/dist/cjs/test/unit/wallet.d.ts.map +1 -0
  560. package/dist/cjs/test/unit/wallet.js +251 -0
  561. package/dist/cjs/test/unit/webauthn.d.ts +2 -0
  562. package/dist/cjs/test/unit/webauthn.d.ts.map +1 -0
  563. package/dist/cjs/test/unit/webauthn.js +77 -0
  564. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  565. package/dist/esm/abstractUtxoCoin.d.ts +466 -0
  566. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -0
  567. package/dist/esm/abstractUtxoCoin.js +636 -0
  568. package/dist/esm/address/fixedScript.d.ts +44 -0
  569. package/dist/esm/address/fixedScript.d.ts.map +1 -0
  570. package/dist/esm/address/fixedScript.js +101 -0
  571. package/dist/esm/address/index.d.ts +2 -0
  572. package/dist/esm/address/index.d.ts.map +1 -0
  573. package/dist/esm/address/index.js +2 -0
  574. package/dist/esm/config.d.ts +9 -0
  575. package/dist/esm/config.js +11 -0
  576. package/dist/esm/deriveKeyWithSeed.d.ts +12 -0
  577. package/dist/esm/deriveKeyWithSeed.d.ts.map +1 -0
  578. package/dist/esm/deriveKeyWithSeed.js +14 -0
  579. package/dist/esm/descriptor/NamedDescriptor.d.ts +19 -0
  580. package/dist/esm/descriptor/NamedDescriptor.d.ts.map +1 -0
  581. package/dist/esm/descriptor/NamedDescriptor.js +37 -0
  582. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
  583. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
  584. package/dist/esm/descriptor/assertDescriptorWalletAddress.js +26 -0
  585. package/dist/esm/descriptor/builder/builder.d.ts +17 -0
  586. package/dist/esm/descriptor/builder/builder.d.ts.map +1 -0
  587. package/dist/esm/descriptor/builder/builder.js +51 -0
  588. package/dist/esm/descriptor/builder/index.d.ts +3 -0
  589. package/dist/esm/descriptor/builder/index.d.ts.map +1 -0
  590. package/dist/esm/descriptor/builder/index.js +3 -0
  591. package/dist/esm/descriptor/builder/parse.d.ts +5 -0
  592. package/dist/esm/descriptor/builder/parse.d.ts.map +1 -0
  593. package/dist/esm/descriptor/builder/parse.js +144 -0
  594. package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
  595. package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
  596. package/dist/esm/descriptor/createWallet/createDescriptorWallet.js +37 -0
  597. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts +12 -0
  598. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  599. package/dist/esm/descriptor/createWallet/createDescriptors.js +29 -0
  600. package/dist/esm/descriptor/createWallet/index.d.ts +3 -0
  601. package/dist/esm/descriptor/createWallet/index.d.ts.map +1 -0
  602. package/dist/esm/descriptor/createWallet/index.js +3 -0
  603. package/dist/esm/descriptor/descriptorWallet.d.ts +19 -0
  604. package/dist/esm/descriptor/descriptorWallet.d.ts.map +1 -0
  605. package/dist/esm/descriptor/descriptorWallet.js +16 -0
  606. package/dist/esm/descriptor/index.d.ts +9 -0
  607. package/dist/esm/descriptor/index.d.ts.map +1 -0
  608. package/dist/esm/descriptor/index.js +7 -0
  609. package/dist/esm/descriptor/validatePolicy.d.ts +22 -0
  610. package/dist/esm/descriptor/validatePolicy.d.ts.map +1 -0
  611. package/dist/esm/descriptor/validatePolicy.js +82 -0
  612. package/dist/esm/impl/bch/bch.d.ts +36 -0
  613. package/dist/esm/impl/bch/bch.d.ts.map +1 -0
  614. package/dist/esm/impl/bch/bch.js +63 -0
  615. package/dist/esm/impl/bch/index.d.ts +3 -0
  616. package/dist/esm/impl/bch/index.d.ts.map +1 -0
  617. package/dist/esm/impl/bch/index.js +3 -0
  618. package/dist/esm/impl/bch/tbch.d.ts +12 -0
  619. package/dist/esm/impl/bch/tbch.d.ts.map +1 -0
  620. package/dist/esm/impl/bch/tbch.js +11 -0
  621. package/dist/esm/impl/bcha/bcha.d.ts +9 -0
  622. package/dist/esm/impl/bcha/bcha.d.ts.map +1 -0
  623. package/dist/esm/impl/bcha/bcha.js +11 -0
  624. package/dist/esm/impl/bcha/index.d.ts +3 -0
  625. package/dist/esm/impl/bcha/index.d.ts.map +1 -0
  626. package/dist/esm/impl/bcha/index.js +3 -0
  627. package/dist/esm/impl/bcha/tbcha.d.ts +12 -0
  628. package/dist/esm/impl/bcha/tbcha.d.ts.map +1 -0
  629. package/dist/esm/impl/bcha/tbcha.js +11 -0
  630. package/dist/esm/impl/bsv/bsv.d.ts +9 -0
  631. package/dist/esm/impl/bsv/bsv.d.ts.map +1 -0
  632. package/dist/esm/impl/bsv/bsv.js +11 -0
  633. package/dist/esm/impl/bsv/index.d.ts +3 -0
  634. package/dist/esm/impl/bsv/index.d.ts.map +1 -0
  635. package/dist/esm/impl/bsv/index.js +3 -0
  636. package/dist/esm/impl/bsv/tbsv.d.ts +12 -0
  637. package/dist/esm/impl/bsv/tbsv.d.ts.map +1 -0
  638. package/dist/esm/impl/bsv/tbsv.js +11 -0
  639. package/dist/esm/impl/btc/btc.d.ts +15 -0
  640. package/dist/esm/impl/btc/btc.d.ts.map +1 -0
  641. package/dist/esm/impl/btc/btc.js +18 -0
  642. package/dist/esm/impl/btc/index.d.ts +10 -0
  643. package/dist/esm/impl/btc/index.d.ts.map +1 -0
  644. package/dist/esm/impl/btc/index.js +10 -0
  645. package/dist/esm/impl/btc/inscriptionBuilder.d.ts +61 -0
  646. package/dist/esm/impl/btc/inscriptionBuilder.d.ts.map +1 -0
  647. package/dist/esm/impl/btc/inscriptionBuilder.js +163 -0
  648. package/dist/esm/impl/btc/tbtc.d.ts +12 -0
  649. package/dist/esm/impl/btc/tbtc.d.ts.map +1 -0
  650. package/dist/esm/impl/btc/tbtc.js +11 -0
  651. package/dist/esm/impl/btc/tbtc4.d.ts +12 -0
  652. package/dist/esm/impl/btc/tbtc4.d.ts.map +1 -0
  653. package/dist/esm/impl/btc/tbtc4.js +11 -0
  654. package/dist/esm/impl/btc/tbtcbgsig.d.ts +12 -0
  655. package/dist/esm/impl/btc/tbtcbgsig.d.ts.map +1 -0
  656. package/dist/esm/impl/btc/tbtcbgsig.js +11 -0
  657. package/dist/esm/impl/btc/tbtcsig.d.ts +12 -0
  658. package/dist/esm/impl/btc/tbtcsig.d.ts.map +1 -0
  659. package/dist/esm/impl/btc/tbtcsig.js +11 -0
  660. package/dist/esm/impl/btc/tbtcstx.d.ts +10 -0
  661. package/dist/esm/impl/btc/tbtcstx.d.ts.map +1 -0
  662. package/dist/esm/impl/btc/tbtcstx.js +14 -0
  663. package/dist/esm/impl/btc/tbtcstxprivate1.d.ts +9 -0
  664. package/dist/esm/impl/btc/tbtcstxprivate1.d.ts.map +1 -0
  665. package/dist/esm/impl/btc/tbtcstxprivate1.js +11 -0
  666. package/dist/esm/impl/btc/tbtcstxsignet.d.ts +10 -0
  667. package/dist/esm/impl/btc/tbtcstxsignet.d.ts.map +1 -0
  668. package/dist/esm/impl/btc/tbtcstxsignet.js +14 -0
  669. package/dist/esm/impl/btg/btg.d.ts +9 -0
  670. package/dist/esm/impl/btg/btg.d.ts.map +1 -0
  671. package/dist/esm/impl/btg/btg.js +11 -0
  672. package/dist/esm/impl/btg/index.d.ts +2 -0
  673. package/dist/esm/impl/btg/index.d.ts.map +1 -0
  674. package/dist/esm/impl/btg/index.js +2 -0
  675. package/dist/esm/impl/dash/dash.d.ts +9 -0
  676. package/dist/esm/impl/dash/dash.d.ts.map +1 -0
  677. package/dist/esm/impl/dash/dash.js +11 -0
  678. package/dist/esm/impl/dash/index.d.ts +3 -0
  679. package/dist/esm/impl/dash/index.d.ts.map +1 -0
  680. package/dist/esm/impl/dash/index.js +3 -0
  681. package/dist/esm/impl/dash/tdash.d.ts +12 -0
  682. package/dist/esm/impl/dash/tdash.d.ts.map +1 -0
  683. package/dist/esm/impl/dash/tdash.js +11 -0
  684. package/dist/esm/impl/doge/doge.d.ts +33 -0
  685. package/dist/esm/impl/doge/doge.d.ts.map +1 -0
  686. package/dist/esm/impl/doge/doge.js +72 -0
  687. package/dist/esm/impl/doge/index.d.ts +3 -0
  688. package/dist/esm/impl/doge/index.d.ts.map +1 -0
  689. package/dist/esm/impl/doge/index.js +3 -0
  690. package/dist/esm/impl/doge/tdoge.d.ts +12 -0
  691. package/dist/esm/impl/doge/tdoge.d.ts.map +1 -0
  692. package/dist/esm/impl/doge/tdoge.js +11 -0
  693. package/dist/esm/impl/index.d.ts +11 -0
  694. package/dist/esm/impl/index.d.ts.map +1 -0
  695. package/dist/esm/impl/index.js +11 -0
  696. package/dist/esm/impl/ltc/index.d.ts +3 -0
  697. package/dist/esm/impl/ltc/index.d.ts.map +1 -0
  698. package/dist/esm/impl/ltc/index.js +3 -0
  699. package/dist/esm/impl/ltc/ltc.d.ts +8 -0
  700. package/dist/esm/impl/ltc/ltc.d.ts.map +1 -0
  701. package/dist/esm/impl/ltc/ltc.js +11 -0
  702. package/dist/esm/impl/ltc/tltc.d.ts +8 -0
  703. package/dist/esm/impl/ltc/tltc.d.ts.map +1 -0
  704. package/dist/esm/impl/ltc/tltc.js +11 -0
  705. package/dist/esm/impl/pearl/index.d.ts +3 -0
  706. package/dist/esm/impl/pearl/index.d.ts.map +1 -0
  707. package/dist/esm/impl/pearl/index.js +3 -0
  708. package/dist/esm/impl/pearl/pearl.d.ts +17 -0
  709. package/dist/esm/impl/pearl/pearl.d.ts.map +1 -0
  710. package/dist/esm/impl/pearl/pearl.js +20 -0
  711. package/dist/esm/impl/pearl/tpearl.d.ts +8 -0
  712. package/dist/esm/impl/pearl/tpearl.d.ts.map +1 -0
  713. package/dist/esm/impl/pearl/tpearl.js +11 -0
  714. package/dist/esm/impl/zec/address.d.ts +79 -0
  715. package/dist/esm/impl/zec/address.d.ts.map +1 -0
  716. package/dist/esm/impl/zec/address.js +150 -0
  717. package/dist/esm/impl/zec/index.d.ts +7 -0
  718. package/dist/esm/impl/zec/index.d.ts.map +1 -0
  719. package/dist/esm/impl/zec/index.js +7 -0
  720. package/dist/esm/impl/zec/recipients.d.ts +86 -0
  721. package/dist/esm/impl/zec/recipients.d.ts.map +1 -0
  722. package/dist/esm/impl/zec/recipients.js +94 -0
  723. package/dist/esm/impl/zec/shieldedAddress.d.ts +36 -0
  724. package/dist/esm/impl/zec/shieldedAddress.d.ts.map +1 -0
  725. package/dist/esm/impl/zec/shieldedAddress.js +48 -0
  726. package/dist/esm/impl/zec/signIronwoodTransaction.d.ts +29 -0
  727. package/dist/esm/impl/zec/signIronwoodTransaction.d.ts.map +1 -0
  728. package/dist/esm/impl/zec/signIronwoodTransaction.js +50 -0
  729. package/dist/esm/impl/zec/types.d.ts +8 -0
  730. package/dist/esm/impl/zec/types.d.ts.map +1 -0
  731. package/dist/esm/impl/zec/types.js +2 -0
  732. package/dist/esm/impl/zec/tzec.d.ts +9 -0
  733. package/dist/esm/impl/zec/tzec.d.ts.map +1 -0
  734. package/dist/esm/impl/zec/tzec.js +11 -0
  735. package/dist/esm/impl/zec/zec.d.ts +58 -0
  736. package/dist/esm/impl/zec/zec.d.ts.map +1 -0
  737. package/dist/esm/impl/zec/zec.js +117 -0
  738. package/dist/esm/index.d.ts +23 -0
  739. package/dist/esm/index.d.ts.map +1 -0
  740. package/dist/esm/index.js +23 -0
  741. package/dist/esm/keychains.d.ts +55 -0
  742. package/dist/esm/keychains.d.ts.map +1 -0
  743. package/dist/esm/keychains.js +98 -0
  744. package/dist/esm/names.d.ts +16 -0
  745. package/dist/esm/names.d.ts.map +1 -0
  746. package/dist/esm/names.js +108 -0
  747. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts +9 -0
  748. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
  749. package/dist/esm/offlineVault/OfflineVaultHalfSigned.js +19 -0
  750. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts +46 -0
  751. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
  752. package/dist/esm/offlineVault/OfflineVaultSignable.js +18 -0
  753. package/dist/esm/offlineVault/TransactionExplanation.d.ts +16 -0
  754. package/dist/esm/offlineVault/TransactionExplanation.d.ts.map +1 -0
  755. package/dist/esm/offlineVault/TransactionExplanation.js +12 -0
  756. package/dist/esm/offlineVault/descriptor/index.d.ts +2 -0
  757. package/dist/esm/offlineVault/descriptor/index.d.ts.map +1 -0
  758. package/dist/esm/offlineVault/descriptor/index.js +2 -0
  759. package/dist/esm/offlineVault/descriptor/transaction.d.ts +39 -0
  760. package/dist/esm/offlineVault/descriptor/transaction.d.ts.map +1 -0
  761. package/dist/esm/offlineVault/descriptor/transaction.js +41 -0
  762. package/dist/esm/offlineVault/index.d.ts +6 -0
  763. package/dist/esm/offlineVault/index.d.ts.map +1 -0
  764. package/dist/esm/offlineVault/index.js +4 -0
  765. package/dist/esm/recovery/RecoveryProvider.d.ts +20 -0
  766. package/dist/esm/recovery/RecoveryProvider.d.ts.map +1 -0
  767. package/dist/esm/recovery/RecoveryProvider.js +19 -0
  768. package/dist/esm/recovery/backupKeyRecovery.d.ts +176 -0
  769. package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -0
  770. package/dist/esm/recovery/backupKeyRecovery.js +406 -0
  771. package/dist/esm/recovery/baseApi.d.ts +24 -0
  772. package/dist/esm/recovery/baseApi.d.ts.map +1 -0
  773. package/dist/esm/recovery/baseApi.js +64 -0
  774. package/dist/esm/recovery/coingeckoApi.d.ts +6 -0
  775. package/dist/esm/recovery/coingeckoApi.d.ts.map +1 -0
  776. package/dist/esm/recovery/coingeckoApi.js +40 -0
  777. package/dist/esm/recovery/crossChainRecovery.d.ts +97 -0
  778. package/dist/esm/recovery/crossChainRecovery.d.ts.map +1 -0
  779. package/dist/esm/recovery/crossChainRecovery.js +295 -0
  780. package/dist/esm/recovery/index.d.ts +7 -0
  781. package/dist/{src → esm}/recovery/index.d.ts.map +1 -1
  782. package/dist/esm/recovery/index.js +7 -0
  783. package/dist/esm/recovery/mempoolApi.d.ts +7 -0
  784. package/dist/{src → esm}/recovery/mempoolApi.d.ts.map +1 -1
  785. package/dist/esm/recovery/mempoolApi.js +29 -0
  786. package/dist/esm/recovery/psbt.d.ts +68 -0
  787. package/dist/esm/recovery/psbt.d.ts.map +1 -0
  788. package/dist/esm/recovery/psbt.js +152 -0
  789. package/dist/esm/tnumber.d.ts +4 -0
  790. package/dist/esm/tnumber.d.ts.map +1 -0
  791. package/dist/esm/tnumber.js +9 -0
  792. package/dist/esm/transaction/bip322.d.ts +27 -0
  793. package/dist/esm/transaction/bip322.d.ts.map +1 -0
  794. package/dist/esm/transaction/bip322.js +100 -0
  795. package/dist/esm/transaction/common/verifyPayGoAmount.d.ts +1 -0
  796. package/dist/esm/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
  797. package/dist/esm/transaction/common/verifyPayGoAmount.js +1 -0
  798. package/dist/esm/transaction/decode.d.ts +21 -0
  799. package/dist/esm/transaction/decode.d.ts.map +1 -0
  800. package/dist/esm/transaction/decode.js +40 -0
  801. package/dist/esm/transaction/descriptor/explainPsbt.d.ts +5 -0
  802. package/dist/esm/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  803. package/dist/esm/transaction/descriptor/explainPsbt.js +45 -0
  804. package/dist/esm/transaction/descriptor/index.d.ts +7 -0
  805. package/dist/esm/transaction/descriptor/index.d.ts.map +1 -0
  806. package/dist/esm/transaction/descriptor/index.js +6 -0
  807. package/dist/esm/transaction/descriptor/parse.d.ts +18 -0
  808. package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -0
  809. package/dist/esm/transaction/descriptor/parse.js +81 -0
  810. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts +15 -0
  811. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
  812. package/dist/esm/transaction/descriptor/parseToAmountType.js +55 -0
  813. package/dist/esm/transaction/descriptor/recipient.d.ts +5 -0
  814. package/dist/esm/transaction/descriptor/recipient.d.ts.map +1 -0
  815. package/dist/esm/transaction/descriptor/recipient.js +2 -0
  816. package/dist/esm/transaction/descriptor/signPsbt.d.ts +25 -0
  817. package/dist/esm/transaction/descriptor/signPsbt.d.ts.map +1 -0
  818. package/dist/esm/transaction/descriptor/signPsbt.js +39 -0
  819. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +36 -0
  820. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
  821. package/dist/esm/transaction/descriptor/verifyTransaction.js +80 -0
  822. package/dist/esm/transaction/explainTransaction.d.ts +19 -0
  823. package/dist/esm/transaction/explainTransaction.d.ts.map +1 -0
  824. package/dist/esm/transaction/explainTransaction.js +49 -0
  825. package/dist/esm/transaction/fixedScript/SigningError.d.ts +24 -0
  826. package/dist/esm/transaction/fixedScript/SigningError.d.ts.map +1 -0
  827. package/dist/esm/transaction/fixedScript/SigningError.js +26 -0
  828. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts +47 -0
  829. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  830. package/dist/esm/transaction/fixedScript/explainPsbtWasm.js +147 -0
  831. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +47 -0
  832. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  833. package/dist/esm/transaction/fixedScript/explainTransaction.js +2 -0
  834. package/dist/esm/transaction/fixedScript/index.d.ts +8 -0
  835. package/dist/esm/transaction/fixedScript/index.d.ts.map +1 -0
  836. package/dist/esm/transaction/fixedScript/index.js +7 -0
  837. package/dist/esm/transaction/fixedScript/musig2.d.ts +4 -0
  838. package/dist/esm/transaction/fixedScript/musig2.d.ts.map +1 -0
  839. package/dist/esm/transaction/fixedScript/musig2.js +2 -0
  840. package/dist/esm/transaction/fixedScript/parseOutput.d.ts +30 -0
  841. package/dist/esm/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  842. package/dist/esm/transaction/fixedScript/parseOutput.js +210 -0
  843. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts +9 -0
  844. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  845. package/dist/esm/transaction/fixedScript/parseTransaction.js +228 -0
  846. package/dist/esm/transaction/fixedScript/replayProtection.d.ts +10 -0
  847. package/dist/esm/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  848. package/dist/esm/transaction/fixedScript/replayProtection.js +38 -0
  849. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts +27 -0
  850. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
  851. package/dist/esm/transaction/fixedScript/signPsbtWasm.js +121 -0
  852. package/dist/esm/transaction/fixedScript/signTransaction.d.ts +31 -0
  853. package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -0
  854. package/dist/esm/transaction/fixedScript/signTransaction.js +47 -0
  855. package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts +21 -0
  856. package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  857. package/dist/esm/transaction/fixedScript/verifyTransaction.js +176 -0
  858. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts +9 -0
  859. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
  860. package/dist/esm/transaction/getPayGoVerificationPubkey.js +17 -0
  861. package/dist/esm/transaction/index.d.ts +9 -0
  862. package/dist/esm/transaction/index.d.ts.map +1 -0
  863. package/dist/esm/transaction/index.js +9 -0
  864. package/dist/esm/transaction/outputDifference.d.ts +44 -0
  865. package/dist/esm/transaction/outputDifference.d.ts.map +1 -0
  866. package/dist/esm/transaction/outputDifference.js +45 -0
  867. package/dist/esm/transaction/parseTransaction.d.ts +5 -0
  868. package/dist/esm/transaction/parseTransaction.d.ts.map +1 -0
  869. package/dist/esm/transaction/parseTransaction.js +12 -0
  870. package/dist/esm/transaction/recipient.d.ts +76 -0
  871. package/dist/esm/transaction/recipient.d.ts.map +1 -0
  872. package/dist/esm/transaction/recipient.js +120 -0
  873. package/dist/esm/transaction/signTransaction.d.ts +18 -0
  874. package/dist/esm/transaction/signTransaction.d.ts.map +1 -0
  875. package/dist/esm/transaction/signTransaction.js +73 -0
  876. package/dist/esm/transaction/types.d.ts +47 -0
  877. package/dist/esm/transaction/types.d.ts.map +1 -0
  878. package/dist/esm/transaction/types.js +2 -0
  879. package/dist/esm/transaction/verifyTransaction.d.ts +5 -0
  880. package/dist/esm/transaction/verifyTransaction.d.ts.map +1 -0
  881. package/dist/esm/transaction/verifyTransaction.js +14 -0
  882. package/dist/esm/unspent.d.ts +59 -0
  883. package/dist/esm/unspent.d.ts.map +1 -0
  884. package/dist/esm/unspent.js +15 -0
  885. package/dist/esm/verifyKey.d.ts +22 -0
  886. package/dist/esm/verifyKey.d.ts.map +1 -0
  887. package/dist/esm/verifyKey.js +102 -0
  888. package/dist/esm/wallet.d.ts +15 -0
  889. package/dist/esm/wallet.d.ts.map +1 -0
  890. package/dist/esm/wallet.js +5 -0
  891. package/package.json +49 -20
  892. package/.eslintignore +0 -5
  893. package/CHANGELOG.md +0 -253
  894. package/dist/src/abstractUtxoCoin.d.ts +0 -392
  895. package/dist/src/abstractUtxoCoin.d.ts.map +0 -1
  896. package/dist/src/abstractUtxoCoin.js +0 -931
  897. package/dist/src/config.js +0 -14
  898. package/dist/src/index.d.ts +0 -6
  899. package/dist/src/index.d.ts.map +0 -1
  900. package/dist/src/index.js +0 -18
  901. package/dist/src/parseOutput.d.ts +0 -22
  902. package/dist/src/parseOutput.d.ts.map +0 -1
  903. package/dist/src/parseOutput.js +0 -181
  904. package/dist/src/recovery/RecoveryProvider.d.ts.map +0 -1
  905. package/dist/src/recovery/RecoveryProvider.js +0 -24
  906. package/dist/src/recovery/backupKeyRecovery.d.ts +0 -62
  907. package/dist/src/recovery/backupKeyRecovery.d.ts.map +0 -1
  908. package/dist/src/recovery/backupKeyRecovery.js +0 -293
  909. package/dist/src/recovery/baseApi.d.ts.map +0 -1
  910. package/dist/src/recovery/baseApi.js +0 -73
  911. package/dist/src/recovery/coingeckoApi.d.ts.map +0 -1
  912. package/dist/src/recovery/coingeckoApi.js +0 -47
  913. package/dist/src/recovery/crossChainRecovery.d.ts.map +0 -1
  914. package/dist/src/recovery/crossChainRecovery.js +0 -294
  915. package/dist/src/recovery/mempoolApi.js +0 -33
  916. package/dist/src/recovery/smartbitApi.d.ts +0 -11
  917. package/dist/src/recovery/smartbitApi.d.ts.map +0 -1
  918. package/dist/src/recovery/smartbitApi.js +0 -36
  919. package/dist/src/replayProtection.d.ts +0 -4
  920. package/dist/src/replayProtection.d.ts.map +0 -1
  921. package/dist/src/replayProtection.js +0 -21
  922. package/dist/src/sign.d.ts +0 -31
  923. package/dist/src/sign.d.ts.map +0 -1
  924. package/dist/src/sign.js +0 -104
  925. package/dist/tsconfig.tsbuildinfo +0 -8213
  926. /package/dist/{src → cjs/src}/config.d.ts +0 -0
  927. /package/dist/{src → cjs/src}/recovery/mempoolApi.d.ts +0 -0
  928. /package/dist/{src → esm}/config.d.ts.map +0 -0
@@ -0,0 +1,179 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const strict_1 = __importDefault(require("node:assert/strict"));
40
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
41
+ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
42
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
43
+ const fixedScript_1 = require("../../../../src/transaction/fixedScript");
44
+ const recipient_1 = require("../../../../src/transaction/recipient");
45
+ const util_1 = require("../../util");
46
+ function describeTransactionWith(acidTest) {
47
+ describe(`${acidTest.name}`, function () {
48
+ const addressCodec = new recipient_1.AddressCodec((0, util_1.getCoinNameForNetwork)(acidTest.network));
49
+ let walletXpubs;
50
+ let customChangeWalletXpubs;
51
+ let wasmPsbt;
52
+ before('prepare', function () {
53
+ const psbt = acidTest.createPsbt();
54
+ const psbtBytes = psbt.toBuffer();
55
+ const networkName = utxolib.getNetworkName(acidTest.network);
56
+ (0, strict_1.default)(networkName);
57
+ walletXpubs = wasm_utxo_1.fixedScriptWallet.RootWalletKeys.from(acidTest.rootWalletKeys);
58
+ customChangeWalletXpubs = wasm_utxo_1.fixedScriptWallet.RootWalletKeys.from(acidTest.otherWalletKeys);
59
+ wasmPsbt = wasm_utxo_1.fixedScriptWallet.BitGoPsbt.fromBytes(psbtBytes, networkName);
60
+ });
61
+ it('should return expected outputs from explainPsbtWasm', function () {
62
+ const wasmExplanation = (0, fixedScript_1.explainPsbtWasm)(wasmPsbt, walletXpubs, {
63
+ addressCodec,
64
+ replayProtection: {
65
+ publicKeys: [acidTest.getReplayProtectionPublicKey()],
66
+ },
67
+ });
68
+ strict_1.default.strictEqual(wasmExplanation.outputs.length, 3);
69
+ strict_1.default.strictEqual(wasmExplanation.changeOutputs.length, acidTest.outputs.length - 3);
70
+ strict_1.default.strictEqual(wasmExplanation.outputAmount, '1800');
71
+ wasmExplanation.changeOutputs.forEach((change) => {
72
+ strict_1.default.strictEqual(change.amount, '900');
73
+ strict_1.default.strictEqual(typeof change.address, 'string');
74
+ });
75
+ // verify new fields are present and stringified
76
+ strict_1.default.strictEqual(typeof wasmExplanation.inputAmount, 'string');
77
+ strict_1.default.ok(Array.isArray(wasmExplanation.inputs));
78
+ strict_1.default.ok(wasmExplanation.inputs.length > 0);
79
+ for (const input of wasmExplanation.inputs) {
80
+ strict_1.default.strictEqual(typeof input.address, 'string');
81
+ strict_1.default.strictEqual(typeof input.value, 'string');
82
+ }
83
+ });
84
+ if (acidTest.network !== utxolib.networks.bitcoin) {
85
+ return;
86
+ }
87
+ it('explainPsbtWasmBigInt returns bigint amounts and inputs array', function () {
88
+ const result = (0, fixedScript_1.explainPsbtWasmBigInt)(wasmPsbt, walletXpubs, {
89
+ addressCodec,
90
+ replayProtection: { publicKeys: [acidTest.getReplayProtectionPublicKey()] },
91
+ });
92
+ strict_1.default.strictEqual(typeof result.fee, 'bigint');
93
+ strict_1.default.strictEqual(typeof result.outputAmount, 'bigint');
94
+ strict_1.default.strictEqual(typeof result.changeAmount, 'bigint');
95
+ strict_1.default.strictEqual(typeof result.inputAmount, 'bigint');
96
+ strict_1.default.ok(result.inputs.length > 0);
97
+ for (const input of result.inputs) {
98
+ strict_1.default.strictEqual(typeof input.address, 'string');
99
+ strict_1.default.strictEqual(typeof input.value, 'bigint');
100
+ }
101
+ const sumInputs = result.inputs.reduce((s, i) => s + i.value, 0n);
102
+ strict_1.default.strictEqual(result.inputAmount, sumInputs);
103
+ strict_1.default.strictEqual(result.fee, result.inputAmount - result.outputAmount - result.changeAmount - result.customChangeAmount);
104
+ });
105
+ // extended test suite for bitcoin
106
+ it('returns custom change outputs when parameter is set', function () {
107
+ const wasmExplanation = (0, fixedScript_1.explainPsbtWasm)(wasmPsbt, walletXpubs, {
108
+ addressCodec,
109
+ replayProtection: {
110
+ publicKeys: [acidTest.getReplayProtectionPublicKey()],
111
+ },
112
+ customChangeWalletXpubs,
113
+ });
114
+ strict_1.default.ok(wasmExplanation.customChangeOutputs);
115
+ strict_1.default.deepStrictEqual(wasmExplanation.outputs.length, 2);
116
+ strict_1.default.deepStrictEqual(wasmExplanation.customChangeOutputs.length, 1);
117
+ strict_1.default.deepStrictEqual(wasmExplanation.customChangeOutputs[0].amount, '900');
118
+ });
119
+ });
120
+ }
121
+ describe('explainPsbt(Wasm)', function () {
122
+ utxo_lib_1.testutil.AcidTest.suite().forEach((test) => describeTransactionWith(test));
123
+ it('explainPsbtWasmBigInt throws when total output value exceeds total input value', function () {
124
+ const network = utxolib.networks.bitcoin;
125
+ const rootWalletKeys = utxo_lib_1.testutil.getDefaultWalletKeys();
126
+ // Valid PSBT: one p2wsh input (5000 sat), one internal p2wsh output (3000 sat), fee = 2000
127
+ const psbt = utxo_lib_1.testutil.constructPsbt([{ scriptType: 'p2wsh', value: 5000n }], [{ scriptType: 'p2wsh', value: 3000n, isInternalAddress: true }], network, rootWalletKeys, 'unsigned');
128
+ // Tamper: reduce the witnessUtxo.value so that inputs (1000) < outputs (3000).
129
+ // Direct mutation avoids bip174's "duplicate data" guard on updateInput.
130
+ psbt.data.inputs[0].witnessUtxo.value = 1000n;
131
+ const wasmPsbt = wasm_utxo_1.fixedScriptWallet.BitGoPsbt.fromBytes(psbt.toBuffer(), 'bitcoin');
132
+ const walletXpubs = wasm_utxo_1.fixedScriptWallet.RootWalletKeys.from(rootWalletKeys);
133
+ strict_1.default.throws(() => (0, fixedScript_1.explainPsbtWasmBigInt)(wasmPsbt, walletXpubs, {
134
+ addressCodec: new recipient_1.AddressCodec('btc'),
135
+ replayProtection: { publicKeys: [] },
136
+ }), /Fee calculation error: outputs exceed inputs/);
137
+ });
138
+ });
139
+ describe('aggregateTransactionExplanations', function () {
140
+ utxo_lib_1.testutil.AcidTest.suite()
141
+ .filter((t) => t.network === utxolib.networks.bitcoin)
142
+ .forEach((acidTest) => {
143
+ describe(acidTest.name, function () {
144
+ let exp;
145
+ before('prepare', function () {
146
+ const psbtBytes = acidTest.createPsbt().toBuffer();
147
+ const networkName = utxolib.getNetworkName(acidTest.network);
148
+ (0, strict_1.default)(networkName);
149
+ const wasmPsbt = wasm_utxo_1.fixedScriptWallet.BitGoPsbt.fromBytes(psbtBytes, networkName);
150
+ const walletXpubs = wasm_utxo_1.fixedScriptWallet.RootWalletKeys.from(acidTest.rootWalletKeys);
151
+ exp = (0, fixedScript_1.explainPsbtWasmBigInt)(wasmPsbt, walletXpubs, {
152
+ addressCodec: new recipient_1.AddressCodec('btc'),
153
+ replayProtection: { publicKeys: [acidTest.getReplayProtectionPublicKey()] },
154
+ });
155
+ });
156
+ it('aggregating a single explanation is identity', function () {
157
+ const agg = (0, fixedScript_1.aggregateTransactionExplanations)([exp]);
158
+ strict_1.default.strictEqual(agg.inputCount, exp.inputs.length);
159
+ strict_1.default.strictEqual(agg.outputCount, exp.outputs.length);
160
+ strict_1.default.strictEqual(agg.changeOutputCount, exp.changeOutputs.length);
161
+ strict_1.default.strictEqual(agg.inputAmount, exp.inputAmount);
162
+ strict_1.default.strictEqual(agg.outputAmount, exp.outputAmount);
163
+ strict_1.default.strictEqual(agg.changeAmount, exp.changeAmount);
164
+ strict_1.default.strictEqual(agg.fee, exp.fee);
165
+ });
166
+ it('aggregating two identical explanations doubles all counts and amounts', function () {
167
+ const agg = (0, fixedScript_1.aggregateTransactionExplanations)([exp, exp]);
168
+ strict_1.default.strictEqual(agg.inputCount, exp.inputs.length * 2);
169
+ strict_1.default.strictEqual(agg.outputCount, exp.outputs.length * 2);
170
+ strict_1.default.strictEqual(agg.changeOutputCount, exp.changeOutputs.length * 2);
171
+ strict_1.default.strictEqual(agg.inputAmount, exp.inputAmount * 2n);
172
+ strict_1.default.strictEqual(agg.outputAmount, exp.outputAmount * 2n);
173
+ strict_1.default.strictEqual(agg.changeAmount, exp.changeAmount * 2n);
174
+ strict_1.default.strictEqual(agg.fee, exp.fee * 2n);
175
+ });
176
+ });
177
+ });
178
+ });
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpblBzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvZXhwbGFpblBzYnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBd0M7QUFFeEMsOERBQWdEO0FBQ2hELG1EQUFnRDtBQUNoRCxnREFBcUQ7QUFFckQseUVBS2lEO0FBQ2pELHFFQUFxRTtBQUNyRSxxQ0FBbUQ7QUFDbkQsU0FBUyx1QkFBdUIsQ0FBQyxRQUEyQjtJQUMxRCxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDM0IsTUFBTSxZQUFZLEdBQUcsSUFBSSx3QkFBWSxDQUFDLElBQUEsNEJBQXFCLEVBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDL0UsSUFBSSxXQUE2QyxDQUFDO1FBQ2xELElBQUksdUJBQXFFLENBQUM7UUFDMUUsSUFBSSxRQUFxQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ25DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3RCxJQUFBLGdCQUFNLEVBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEIsV0FBVyxHQUFHLDZCQUFpQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzdFLHVCQUF1QixHQUFHLDZCQUFpQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzFGLFFBQVEsR0FBRyw2QkFB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QUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELGdCQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzFELGdCQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELGdCQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEUsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQzVELGdCQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDNUQsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdub2RlOmFzc2VydC9zdHJpY3QnO1xuXG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IHRlc3R1dGlsIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgZml4ZWRTY3JpcHRXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHtcbiAgZXhwbGFpblBzYnRXYXNtLFxuICBleHBsYWluUHNidFdhc21CaWdJbnQsXG4gIGFnZ3JlZ2F0ZVRyYW5zYWN0aW9uRXhwbGFuYXRpb25zLFxuICB0eXBlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb25CaWdJbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdCc7XG5pbXBvcnQgeyBBZGRyZXNzQ29kZWMgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vcmVjaXBpZW50JztcbmltcG9ydCB7IGdldENvaW5OYW1lRm9yTmV0d29yayB9IGZyb20gJy4uLy4uL3V0aWwnO1xuZnVuY3Rpb24gZGVzY3JpYmVUcmFuc2FjdGlvbldpdGgoYWNpZFRlc3Q6IHRlc3R1dGlsLkFjaWRUZXN0KSB7XG4gIGRlc2NyaWJlKGAke2FjaWRUZXN0Lm5hbWV9YCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGFkZHJlc3NDb2RlYyA9IG5ldyBBZGRyZXNzQ29kZWMoZ2V0Q29pbk5hbWVGb3JOZXR3b3JrKGFjaWRUZXN0Lm5ldHdvcmspKTtcbiAgICBsZXQgd2FsbGV0WHB1YnM6IGZpeGVkU2NyaXB0V2FsbGV0LlJvb3RXYWxsZXRLZXlzO1xuICAgIGxldCBjdXN0b21DaGFuZ2VXYWxsZXRYcHViczogZml4ZWRTY3JpcHRXYWxsZXQuUm9vdFdhbGxldEtleXMgfCB1bmRlZmluZWQ7XG4gICAgbGV0IHdhc21Qc2J0OiBmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQ7XG4gICAgYmVmb3JlKCdwcmVwYXJlJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcHNidCA9IGFjaWRUZXN0LmNyZWF0ZVBzYnQoKTtcbiAgICAgIGNvbnN0IHBzYnRCeXRlcyA9IHBzYnQudG9CdWZmZXIoKTtcbiAgICAgIGNvbnN0IG5ldHdvcmtOYW1lID0gdXR4b2xpYi5nZXROZXR3b3JrTmFtZShhY2lkVGVzdC5uZXR3b3JrKTtcbiAgICAgIGFzc2VydChuZXR3b3JrTmFtZSk7XG4gICAgICB3YWxsZXRYcHVicyA9IGZpeGVkU2NyaXB0V2FsbGV0LlJvb3RXYWxsZXRLZXlzLmZyb20oYWNpZFRlc3Qucm9vdFdhbGxldEtleXMpO1xuICAgICAgY3VzdG9tQ2hhbmdlV2FsbGV0WHB1YnMgPSBmaXhlZFNjcmlwdFdhbGxldC5Sb290V2FsbGV0S2V5cy5mcm9tKGFjaWRUZXN0Lm90aGVyV2FsbGV0S2V5cyk7XG4gICAgICB3YXNtUHNidCA9IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidC5mcm9tQnl0ZXMocHNidEJ5dGVzLCBuZXR3b3JrTmFtZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBleHBlY3RlZCBvdXRwdXRzIGZyb20gZXhwbGFpblBzYnRXYXNtJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd2FzbUV4cGxhbmF0aW9uID0gZXhwbGFpblBzYnRXYXNtKHdhc21Qc2J0LCB3YWxsZXRYcHVicywge1xuICAgICAgICBhZGRyZXNzQ29kZWMsXG4gICAgICAgIHJlcGxheVByb3RlY3Rpb246IHtcbiAgICAgICAgICBwdWJsaWNLZXlzOiBbYWNpZFRlc3QuZ2V0UmVwbGF5UHJvdGVjdGlvblB1YmxpY0tleSgpXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHdhc21FeHBsYW5hdGlvbi5vdXRwdXRzLmxlbmd0aCwgMyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwod2FzbUV4cGxhbmF0aW9uLmNoYW5nZU91dHB1dHMubGVuZ3RoLCBhY2lkVGVzdC5vdXRwdXRzLmxlbmd0aCAtIDMpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHdhc21FeHBsYW5hdGlvbi5vdXRwdXRBbW91bnQsICcxODAwJyk7XG4gICAgICB3YXNtRXhwbGFuYXRpb24uY2hhbmdlT3V0cHV0cy5mb3JFYWNoKChjaGFuZ2UpID0+IHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNoYW5nZS5hbW91bnQsICc5MDAnKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiBjaGFuZ2UuYWRkcmVzcywgJ3N0cmluZycpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIHZlcmlmeSBuZXcgZmllbGRzIGFyZSBwcmVzZW50IGFuZCBzdHJpbmdpZmllZFxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiB3YXNtRXhwbGFuYXRpb24uaW5wdXRBbW91bnQsICdzdHJpbmcnKTtcbiAgICAgIGFzc2VydC5vayhBcnJheS5pc0FycmF5KHdhc21FeHBsYW5hdGlvbi5pbnB1dHMpKTtcbiAgICAgIGFzc2VydC5vayh3YXNtRXhwbGFuYXRpb24uaW5wdXRzLmxlbmd0aCA+IDApO1xuICAgICAgZm9yIChjb25zdCBpbnB1dCBvZiB3YXNtRXhwbGFuYXRpb24uaW5wdXRzKSB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0eXBlb2YgaW5wdXQuYWRkcmVzcywgJ3N0cmluZycpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIGlucHV0LnZhbHVlLCAnc3RyaW5nJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoYWNpZFRlc3QubmV0d29yayAhPT0gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaXQoJ2V4cGxhaW5Qc2J0V2FzbUJpZ0ludCByZXR1cm5zIGJpZ2ludCBhbW91bnRzIGFuZCBpbnB1dHMgYXJyYXknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBleHBsYWluUHNidFdhc21CaWdJbnQod2FzbVBzYnQsIHdhbGxldFhwdWJzLCB7XG4gICAgICAgIGFkZHJlc3NDb2RlYyxcbiAgICAgICAgcmVwbGF5UHJvdGVjdGlvbjogeyBwdWJsaWNLZXlzOiBbYWNpZFRlc3QuZ2V0UmVwbGF5UHJvdGVjdGlvblB1YmxpY0tleSgpXSB9LFxuICAgICAgfSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIHJlc3VsdC5mZWUsICdiaWdpbnQnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0eXBlb2YgcmVzdWx0Lm91dHB1dEFtb3VudCwgJ2JpZ2ludCcpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiByZXN1bHQuY2hhbmdlQW1vdW50LCAnYmlnaW50Jyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIHJlc3VsdC5pbnB1dEFtb3VudCwgJ2JpZ2ludCcpO1xuICAgICAgYXNzZXJ0Lm9rKHJlc3VsdC5pbnB1dHMubGVuZ3RoID4gMCk7XG4gICAgICBmb3IgKGNvbnN0IGlucHV0IG9mIHJlc3VsdC5pbnB1dHMpIHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiBpbnB1dC5hZGRyZXNzLCAnc3RyaW5nJyk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0eXBlb2YgaW5wdXQudmFsdWUsICdiaWdpbnQnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN1bUlucHV0cyA9IHJlc3VsdC5pbnB1dHMucmVkdWNlKChzLCBpKSA9PiBzICsgaS52YWx1ZSwgMG4pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5pbnB1dEFtb3VudCwgc3VtSW5wdXRzKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgICAgcmVzdWx0LmZlZSxcbiAgICAgICAgcmVzdWx0LmlucHV0QW1vdW50IC0gcmVzdWx0Lm91dHB1dEFtb3VudCAtIHJlc3VsdC5jaGFuZ2VBbW91bnQgLSByZXN1bHQuY3VzdG9tQ2hhbmdlQW1vdW50XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgLy8gZXh0ZW5kZWQgdGVzdCBzdWl0ZSBmb3IgYml0Y29pblxuXG4gICAgaXQoJ3JldHVybnMgY3VzdG9tIGNoYW5nZSBvdXRwdXRzIHdoZW4gcGFyYW1ldGVyIGlzIHNldCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdhc21FeHBsYW5hdGlvbiA9IGV4cGxhaW5Qc2J0V2FzbSh3YXNtUHNidCwgd2FsbGV0WHB1YnMsIHtcbiAgICAgICAgYWRkcmVzc0NvZGVjLFxuICAgICAgICByZXBsYXlQcm90ZWN0aW9uOiB7XG4gICAgICAgICAgcHVibGljS2V5czogW2FjaWRUZXN0LmdldFJlcGxheVByb3RlY3Rpb25QdWJsaWNLZXkoKV0sXG4gICAgICAgIH0sXG4gICAgICAgIGN1c3RvbUNoYW5nZVdhbGxldFhwdWJzLFxuICAgICAgfSk7XG4gICAgICBhc3NlcnQub2sod2FzbUV4cGxhbmF0aW9uLmN1c3RvbUNoYW5nZU91dHB1dHMpO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh3YXNtRXhwbGFuYXRpb24ub3V0cHV0cy5sZW5ndGgsIDIpO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh3YXNtRXhwbGFuYXRpb24uY3VzdG9tQ2hhbmdlT3V0cHV0cy5sZW5ndGgsIDEpO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh3YXNtRXhwbGFuYXRpb24uY3VzdG9tQ2hhbmdlT3V0cHV0c1swXS5hbW91bnQsICc5MDAnKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmRlc2NyaWJlKCdleHBsYWluUHNidChXYXNtKScsIGZ1bmN0aW9uICgpIHtcbiAgdGVzdHV0aWwuQWNpZFRlc3Quc3VpdGUoKS5mb3JFYWNoKCh0ZXN0KSA9PiBkZXNjcmliZVRyYW5zYWN0aW9uV2l0aCh0ZXN0KSk7XG5cbiAgaXQoJ2V4cGxhaW5Qc2J0V2FzbUJpZ0ludCB0aHJvd3Mgd2hlbiB0b3RhbCBvdXRwdXQgdmFsdWUgZXhjZWVkcyB0b3RhbCBpbnB1dCB2YWx1ZScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBuZXR3b3JrID0gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luO1xuICAgIGNvbnN0IHJvb3RXYWxsZXRLZXlzID0gdGVzdHV0aWwuZ2V0RGVmYXVsdFdhbGxldEtleXMoKTtcbiAgICAvLyBWYWxpZCBQU0JUOiBvbmUgcDJ3c2ggaW5wdXQgKDUwMDAgc2F0KSwgb25lIGludGVybmFsIHAyd3NoIG91dHB1dCAoMzAwMCBzYXQpLCBmZWUgPSAyMDAwXG4gICAgY29uc3QgcHNidCA9IHRlc3R1dGlsLmNvbnN0cnVjdFBzYnQoXG4gICAgICBbeyBzY3JpcHRUeXBlOiAncDJ3c2gnLCB2YWx1ZTogNTAwMG4gfV0sXG4gICAgICBbeyBzY3JpcHRUeXBlOiAncDJ3c2gnLCB2YWx1ZTogMzAwMG4sIGlzSW50ZXJuYWxBZGRyZXNzOiB0cnVlIH1dLFxuICAgICAgbmV0d29yayxcbiAgICAgIHJvb3RXYWxsZXRLZXlzLFxuICAgICAgJ3Vuc2lnbmVkJ1xuICAgICk7XG4gICAgLy8gVGFtcGVyOiByZWR1Y2UgdGhlIHdpdG5lc3NVdHhvLnZhbHVlIHNvIHRoYXQgaW5wdXRzICgxMDAwKSA8IG91dHB1dHMgKDMwMDApLlxuICAgIC8vIERpcmVjdCBtdXRhdGlvbiBhdm9pZHMgYmlwMTc0J3MgXCJkdXBsaWNhdGUgZGF0YVwiIGd1YXJkIG9uIHVwZGF0ZUlucHV0LlxuICAgIHBzYnQuZGF0YS5pbnB1dHNbMF0ud2l0bmVzc1V0eG8hLnZhbHVlID0gMTAwMG47XG5cbiAgICBjb25zdCB3YXNtUHNidCA9IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidC5mcm9tQnl0ZXMocHNidC50b0J1ZmZlcigpLCAnYml0Y29pbicpO1xuICAgIGNvbnN0IHdhbGxldFhwdWJzID0gZml4ZWRTY3JpcHRXYWxsZXQuUm9vdFdhbGxldEtleXMuZnJvbShyb290V2FsbGV0S2V5cyk7XG5cbiAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgKCkgPT5cbiAgICAgICAgZXhwbGFpblBzYnRXYXNtQmlnSW50KHdhc21Qc2J0LCB3YWxsZXRYcHVicywge1xuICAgICAgICAgIGFkZHJlc3NDb2RlYzogbmV3IEFkZHJlc3NDb2RlYygnYnRjJyksXG4gICAgICAgICAgcmVwbGF5UHJvdGVjdGlvbjogeyBwdWJsaWNLZXlzOiBbXSB9LFxuICAgICAgICB9KSxcbiAgICAgIC9GZWUgY2FsY3VsYXRpb24gZXJyb3I6IG91dHB1dHMgZXhjZWVkIGlucHV0cy9cbiAgICApO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnYWdncmVnYXRlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbnMnLCBmdW5jdGlvbiAoKSB7XG4gIHRlc3R1dGlsLkFjaWRUZXN0LnN1aXRlKClcbiAgICAuZmlsdGVyKCh0KSA9PiB0Lm5ldHdvcmsgPT09IHV0eG9saWIubmV0d29ya3MuYml0Y29pbilcbiAgICAuZm9yRWFjaCgoYWNpZFRlc3QpID0+IHtcbiAgICAgIGRlc2NyaWJlKGFjaWRUZXN0Lm5hbWUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IGV4cDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbkJpZ0ludDtcblxuICAgICAgICBiZWZvcmUoJ3ByZXBhcmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgcHNidEJ5dGVzID0gYWNpZFRlc3QuY3JlYXRlUHNidCgpLnRvQnVmZmVyKCk7XG4gICAgICAgICAgY29uc3QgbmV0d29ya05hbWUgPSB1dHhvbGliLmdldE5ldHdvcmtOYW1lKGFjaWRUZXN0Lm5ldHdvcmspO1xuICAgICAgICAgIGFzc2VydChuZXR3b3JrTmFtZSk7XG4gICAgICAgICAgY29uc3Qgd2FzbVBzYnQgPSBmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQuZnJvbUJ5dGVzKHBzYnRCeXRlcywgbmV0d29ya05hbWUpO1xuICAgICAgICAgIGNvbnN0IHdhbGxldFhwdWJzID0gZml4ZWRTY3JpcHRXYWxsZXQuUm9vdFdhbGxldEtleXMuZnJvbShhY2lkVGVzdC5yb290V2FsbGV0S2V5cyk7XG4gICAgICAgICAgZXhwID0gZXhwbGFpblBzYnRXYXNtQmlnSW50KHdhc21Qc2J0LCB3YWxsZXRYcHVicywge1xuICAgICAgICAgICAgYWRkcmVzc0NvZGVjOiBuZXcgQWRkcmVzc0NvZGVjKCdidGMnKSxcbiAgICAgICAgICAgIHJlcGxheVByb3RlY3Rpb246IHsgcHVibGljS2V5czogW2FjaWRUZXN0LmdldFJlcGxheVByb3RlY3Rpb25QdWJsaWNLZXkoKV0gfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ2FnZ3JlZ2F0aW5nIGEgc2luZ2xlIGV4cGxhbmF0aW9uIGlzIGlkZW50aXR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGFnZyA9IGFnZ3JlZ2F0ZVRyYW5zYWN0aW9uRXhwbGFuYXRpb25zKFtleHBdKTtcbiAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWdnLmlucHV0Q291bnQsIGV4cC5pbnB1dHMubGVuZ3RoKTtcbiAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWdnLm91dHB1dENvdW50LCBleHAub3V0cHV0cy5sZW5ndGgpO1xuICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhZ2cuY2hhbmdlT3V0cHV0Q291bnQsIGV4cC5jaGFuZ2VPdXRwdXRzLmxlbmd0aCk7XG4gICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFnZy5pbnB1dEFtb3VudCwgZXhwLmlucHV0QW1vdW50KTtcbiAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWdnLm91dHB1dEFtb3VudCwgZXhwLm91dHB1dEFtb3VudCk7XG4gICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFnZy5jaGFuZ2VBbW91bnQsIGV4cC5jaGFuZ2VBbW91bnQpO1xuICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhZ2cuZmVlLCBleHAuZmVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ2FnZ3JlZ2F0aW5nIHR3byBpZGVudGljYWwgZXhwbGFuYXRpb25zIGRvdWJsZXMgYWxsIGNvdW50cyBhbmQgYW1vdW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBhZ2cgPSBhZ2dyZWdhdGVUcmFuc2FjdGlvbkV4cGxhbmF0aW9ucyhbZXhwLCBleHBdKTtcbiAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWdnLmlucHV0Q291bnQsIGV4cC5pbnB1dHMubGVuZ3RoICogMik7XG4gICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFnZy5vdXRwdXRDb3VudCwgZXhwLm91dHB1dHMubGVuZ3RoICogMik7XG4gICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFnZy5jaGFuZ2VPdXRwdXRDb3VudCwgZXhwLmNoYW5nZU91dHB1dHMubGVuZ3RoICogMik7XG4gICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFnZy5pbnB1dEFtb3VudCwgZXhwLmlucHV0QW1vdW50ICogMm4pO1xuICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhZ2cub3V0cHV0QW1vdW50LCBleHAub3V0cHV0QW1vdW50ICogMm4pO1xuICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhZ2cuY2hhbmdlQW1vdW50LCBleHAuY2hhbmdlQW1vdW50ICogMm4pO1xuICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhZ2cuZmVlLCBleHAuZmVlICogMm4pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parsePsbt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsePsbt.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/transaction/fixedScript/parsePsbt.ts"],"names":[],"mappings":""}
@@ -0,0 +1,223 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const strict_1 = __importDefault(require("node:assert/strict"));
40
+ const sinon = __importStar(require("sinon"));
41
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
42
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
43
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
44
+ const parseTransaction_1 = require("../../../../src/transaction/fixedScript/parseTransaction");
45
+ const util_1 = require("../../util");
46
+ const fixedScript_1 = require("../../../../src/transaction/fixedScript");
47
+ function getTxParamsFromExplanation(explanation, { externalCustomChangeAddress }) {
48
+ // The external outputs are the ones that are in outputs but not in changeOutputs
49
+ const changeAddresses = new Set(explanation.changeOutputs.map((o) => o.address));
50
+ let externalOutputs = explanation.outputs.filter((o) => o.address && !changeAddresses.has(o.address));
51
+ let changeAddress;
52
+ if (externalCustomChangeAddress) {
53
+ // convert an external output to a change output
54
+ //
55
+ // in combination with allowExternalChangeAddress, this allows an external
56
+ // output on the transaction without a size constraint
57
+ const externalOutput = externalOutputs[0];
58
+ if (!externalOutput) {
59
+ throw new Error('no external output found');
60
+ }
61
+ changeAddress = externalOutput.address;
62
+ externalOutputs = externalOutputs.slice(1);
63
+ }
64
+ return {
65
+ recipients: externalOutputs.map((output) => ({
66
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
67
+ address: output.address,
68
+ amount: output.amount,
69
+ })),
70
+ changeAddress,
71
+ };
72
+ }
73
+ function describeParseTransactionWith(acidTest, label, { txParams, externalCustomChangeAddress = false, expectedExplicitExternalSpendAmount, expectedImplicitExternalSpendAmount, }) {
74
+ describe(`${acidTest.name}/${label}`, function () {
75
+ let refParsedTransaction;
76
+ let coin;
77
+ let mockWallet;
78
+ let stubExplainTransaction;
79
+ before('prepare', async function () {
80
+ const coinName = (0, util_1.getCoinNameForNetwork)(acidTest.network);
81
+ coin = (0, util_1.getUtxoCoin)(coinName);
82
+ // Create PSBT and explanation
83
+ const psbt = acidTest.createPsbt();
84
+ const tx = psbt.getUnsignedTx();
85
+ const txHash = tx.getId();
86
+ const wasmPsbt = wasm_utxo_1.fixedScriptWallet.BitGoPsbt.fromBytes(psbt.toBuffer(), utxolib.getNetworkName(acidTest.network));
87
+ const explanation = (0, fixedScript_1.explainPsbtWasm)(wasmPsbt, acidTest.rootWalletKeys.triple.map((k) => k.neutered().toBase58()), {
88
+ addressCodec: coin.addressCodec,
89
+ replayProtection: {
90
+ publicKeys: [acidTest.getReplayProtectionPublicKey()],
91
+ },
92
+ });
93
+ // Determine txParams
94
+ let resolvedTxParams;
95
+ if (txParams === 'inferFromExplanation' || txParams === undefined) {
96
+ resolvedTxParams = getTxParamsFromExplanation(explanation, { externalCustomChangeAddress });
97
+ }
98
+ else if ('rbfTxIds' in txParams) {
99
+ // Replace placeholder txHash with actual computed txHash
100
+ resolvedTxParams = {
101
+ rbfTxIds: txParams.rbfTxIds.map((hash) => (hash === 'PLACEHOLDER' ? txHash : hash)),
102
+ };
103
+ }
104
+ else {
105
+ resolvedTxParams = txParams;
106
+ }
107
+ if (externalCustomChangeAddress) {
108
+ resolvedTxParams.allowExternalChangeAddress = true;
109
+ }
110
+ // Create mock wallet
111
+ mockWallet = sinon.createStubInstance(sdk_core_1.Wallet);
112
+ mockWallet.id.returns('test-wallet-id');
113
+ mockWallet.coin.returns(coin.getChain());
114
+ mockWallet.coinSpecific.returns(undefined);
115
+ // Mock getTransaction for RBF case
116
+ if ('rbfTxIds' in resolvedTxParams) {
117
+ const rbfTxParams = getTxParamsFromExplanation(explanation, { externalCustomChangeAddress: false });
118
+ mockWallet.getTransaction.resolves({
119
+ outputs: rbfTxParams.recipients.map((r) => ({
120
+ valueString: typeof r.amount === 'string' ? r.amount : r.amount.toString(),
121
+ address: r.address,
122
+ // wallet field is undefined for external outputs (not self-sends)
123
+ })),
124
+ });
125
+ }
126
+ // Mock verification options with keychains to disable networking
127
+ // Use the same keychains that were used to create the PSBT
128
+ const pubs = acidTest.rootWalletKeys.triple.map((k) => k.neutered().toBase58());
129
+ const verification = {
130
+ disableNetworking: true,
131
+ keychains: {
132
+ user: { id: '0', pub: pubs[0], type: 'independent' },
133
+ backup: { id: '1', pub: pubs[1], type: 'independent' },
134
+ bitgo: { id: '2', pub: pubs[2], type: 'independent' },
135
+ },
136
+ };
137
+ // Stub explainTransaction to return the explanation without making network calls
138
+ stubExplainTransaction = sinon.stub(coin, 'explainTransaction').resolves(explanation);
139
+ const txPrebuild = {
140
+ txHex: psbt.toHex(),
141
+ };
142
+ refParsedTransaction = await (0, parseTransaction_1.parseTransaction)(coin, {
143
+ wallet: mockWallet,
144
+ txParams: resolvedTxParams,
145
+ txPrebuild,
146
+ verification,
147
+ });
148
+ });
149
+ after('cleanup', function () {
150
+ if (stubExplainTransaction) {
151
+ stubExplainTransaction.restore();
152
+ }
153
+ });
154
+ it('should parse transaction without network calls', function () {
155
+ strict_1.default.ok(refParsedTransaction);
156
+ strict_1.default.ok(refParsedTransaction.keychains);
157
+ strict_1.default.ok(refParsedTransaction.outputs);
158
+ });
159
+ it('should have valid keychains', function () {
160
+ strict_1.default.ok(refParsedTransaction.keychains.user);
161
+ strict_1.default.ok(refParsedTransaction.keychains.backup);
162
+ strict_1.default.ok(refParsedTransaction.keychains.bitgo);
163
+ const pubs = acidTest.rootWalletKeys.triple.map((k) => k.neutered().toBase58());
164
+ strict_1.default.strictEqual(refParsedTransaction.keychains.user.pub, pubs[0]);
165
+ strict_1.default.strictEqual(refParsedTransaction.keychains.backup.pub, pubs[1]);
166
+ strict_1.default.strictEqual(refParsedTransaction.keychains.bitgo.pub, pubs[2]);
167
+ });
168
+ it('should have outputs classified as internal or external', function () {
169
+ // Since we didn't specify any recipients, outputs will be classified based on whether they can be
170
+ // verified as wallet addresses. Some may be external if address verification fails without a proper wallet setup.
171
+ const totalOutputs = refParsedTransaction.outputs.length;
172
+ const changeOutputs = refParsedTransaction.changeOutputs.length;
173
+ const externalOutputs = refParsedTransaction.outputs.filter((o) => o.external === true).length;
174
+ strict_1.default.strictEqual(externalOutputs, 3);
175
+ strict_1.default.ok(totalOutputs > 0, 'should have at least one output');
176
+ strict_1.default.strictEqual(changeOutputs + externalOutputs, totalOutputs, 'all outputs should be classified');
177
+ });
178
+ it('should have expected explicit and implicit external spend amounts', function () {
179
+ strict_1.default.strictEqual(BigInt(refParsedTransaction.explicitExternalSpendAmount), expectedExplicitExternalSpendAmount);
180
+ strict_1.default.strictEqual(BigInt(refParsedTransaction.implicitExternalSpendAmount), expectedImplicitExternalSpendAmount);
181
+ });
182
+ });
183
+ }
184
+ function describeTransaction(filter = () => true) {
185
+ describe(`parseTransaction`, function () {
186
+ utxolib.testutil.AcidTest.suite()
187
+ .filter(filter)
188
+ .forEach((test) => {
189
+ // Default case: psbt format, infer recipients from explanation
190
+ describeParseTransactionWith(test, 'default', {
191
+ txParams: 'inferFromExplanation',
192
+ expectedExplicitExternalSpendAmount: 1800n,
193
+ expectedImplicitExternalSpendAmount: 0n,
194
+ });
195
+ if (test.network !== utxolib.networks.bitcoin) {
196
+ return;
197
+ }
198
+ // extended test suite for bitcoin
199
+ describeParseTransactionWith(test, 'empty recipients', {
200
+ txParams: {
201
+ recipients: [],
202
+ },
203
+ expectedExplicitExternalSpendAmount: 0n,
204
+ expectedImplicitExternalSpendAmount: 1800n,
205
+ });
206
+ describeParseTransactionWith(test, 'rbf', {
207
+ txParams: {
208
+ rbfTxIds: ['PLACEHOLDER'],
209
+ },
210
+ expectedExplicitExternalSpendAmount: 1800n,
211
+ expectedImplicitExternalSpendAmount: 0n,
212
+ });
213
+ describeParseTransactionWith(test, 'allowExternalChangeAddress', {
214
+ txParams: 'inferFromExplanation',
215
+ externalCustomChangeAddress: true,
216
+ expectedExplicitExternalSpendAmount: 1800n,
217
+ expectedImplicitExternalSpendAmount: 0n,
218
+ });
219
+ });
220
+ });
221
+ }
222
+ describeTransaction();
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VQc2J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L3BhcnNlUHNidC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdFQUF3QztBQUV4Qyw2Q0FBK0I7QUFDL0IsOERBQWdEO0FBQ2hELG1EQUFrRztBQUNsRyxnREFBcUQ7QUFFckQsK0ZBQTRGO0FBRzVGLHFDQUFnRTtBQUNoRSx5RUFBMEU7QUFJMUUsU0FBUywwQkFBMEIsQ0FDakMsV0FBbUMsRUFDbkMsRUFBRSwyQkFBMkIsRUFBNEM7SUFLekUsaUZBQWlGO0lBQ2pGLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNqRixJQUFJLGVBQWUsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFdEcsSUFBSSxhQUFpQyxDQUFDO0lBQ3RDLElBQUksMkJBQTJCLEVBQUUsQ0FBQztRQUNoQyxnREFBZ0Q7UUFDaEQsRUFBRTtRQUNGLDBFQUEwRTtRQUMxRSxzREFBc0Q7UUFDdEQsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELGFBQWEsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDO1FB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O2dCQUM5QyxPQUFPO1lBQ1QsQ0FBQztZQUNELGtDQUFrQztZQUVsQyw0QkFBNEIsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7Z0JBQ3JELFFBQVEsRUFBRTtvQkFDUixVQUFVLEVBQUUsRUFBRTtpQkFDZjtnQkFDRCxtQ0FBbUMsRUFBRSxFQUFFO2dCQUN2QyxtQ0FBbUMsRUFBRSxLQUFLO2FBQzNDLENBQUMsQ0FBQztZQUVILDRCQUE0QixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7Z0JBQ3hDLFFBQVEsRUFBRTtvQkFDUixRQUFRLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQzFCO2dCQUNELG1DQUFtQyxFQUFFLEtBQUs7Z0JBQzFDLG1DQUFtQyxFQUFFLEVBQUU7YUFDeEMsQ0FBQyxDQUFDO1lBRUgsNEJBQTRCLENBQUMsSUFBSSxFQUFFLDRCQUE0QixFQUFFO2dCQUMvRCxRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQywyQkFBMkIsRUFBRSxJQUFJO2dCQUNqQyxtQ0FBbUMsRUFBRSxLQUFLO2dCQUMxQyxtQ0FBbUMsRUFBRSxFQUFFO2FBQ3hDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsbUJBQW1CLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnbm9kZTphc3NlcnQvc3RyaWN0JztcblxuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBXYWxsZXQsIFZlcmlmaWNhdGlvbk9wdGlvbnMsIElUcmFuc2FjdGlvblJlY2lwaWVudCwgVHJpcGxlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgZml4ZWRTY3JpcHRXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgcGFyc2VUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9wYXJzZVRyYW5zYWN0aW9uJztcbmltcG9ydCB7IFBhcnNlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL3R5cGVzJztcbmltcG9ydCB7IFV0eG9XYWxsZXQgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvd2FsbGV0JztcbmltcG9ydCB7IGdldENvaW5OYW1lRm9yTmV0d29yaywgZ2V0VXR4b0NvaW4gfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IGV4cGxhaW5Qc2J0V2FzbSB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdCc7XG5pbXBvcnQgdHlwZSB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvZXhwbGFpblRyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUHJlYnVpbGQgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvYWJzdHJhY3RVdHhvQ29pbic7XG5cbmZ1bmN0aW9uIGdldFR4UGFyYW1zRnJvbUV4cGxhbmF0aW9uKFxuICBleHBsYW5hdGlvbjogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgeyBleHRlcm5hbEN1c3RvbUNoYW5nZUFkZHJlc3MgfTogeyBleHRlcm5hbEN1c3RvbUNoYW5nZUFkZHJlc3M6IGJvb2xlYW4gfVxuKToge1xuICByZWNpcGllbnRzOiBJVHJhbnNhY3Rpb25SZWNpcGllbnRbXTtcbiAgY2hhbmdlQWRkcmVzcz86IHN0cmluZztcbn0ge1xuICAvLyBUaGUgZXh0ZXJuYWwgb3V0cHV0cyBhcmUgdGhlIG9uZXMgdGhhdCBhcmUgaW4gb3V0cHV0cyBidXQgbm90IGluIGNoYW5nZU91dHB1dHNcbiAgY29uc3QgY2hhbmdlQWRkcmVzc2VzID0gbmV3IFNldChleHBsYW5hdGlvbi5jaGFuZ2VPdXRwdXRzLm1hcCgobykgPT4gby5hZGRyZXNzKSk7XG4gIGxldCBleHRlcm5hbE91dHB1dHMgPSBleHBsYW5hdGlvbi5vdXRwdXRzLmZpbHRlcigobykgPT4gby5hZGRyZXNzICYmICFjaGFuZ2VBZGRyZXNzZXMuaGFzKG8uYWRkcmVzcykpO1xuXG4gIGxldCBjaGFuZ2VBZGRyZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmIChleHRlcm5hbEN1c3RvbUNoYW5nZUFkZHJlc3MpIHtcbiAgICAvLyBjb252ZXJ0IGFuIGV4dGVybmFsIG91dHB1dCB0byBhIGNoYW5nZSBvdXRwdXRcbiAgICAvL1xuICAgIC8vIGluIGNvbWJpbmF0aW9uIHdpdGggYWxsb3dFeHRlcm5hbENoYW5nZUFkZHJlc3MsIHRoaXMgYWxsb3dzIGFuIGV4dGVybmFsXG4gICAgLy8gb3V0cHV0IG9uIHRoZSB0cmFuc2FjdGlvbiB3aXRob3V0IGEgc2l6ZSBjb25zdHJhaW50XG4gICAgY29uc3QgZXh0ZXJuYWxPdXRwdXQgPSBleHRlcm5hbE91dHB1dHNbMF07XG4gICAgaWYgKCFleHRlcm5hbE91dHB1dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBleHRlcm5hbCBvdXRwdXQgZm91bmQnKTtcbiAgICB9XG4gICAgY2hhbmdlQWRkcmVzcyA9IGV4dGVybmFsT3V0cHV0LmFkZHJlc3M7XG4gICAgZXh0ZXJuYWxPdXRwdXRzID0gZXh0ZXJuYWxPdXRwdXRzLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByZWNpcGllbnRzOiBleHRlcm5hbE91dHB1dHMubWFwKChvdXRwdXQpID0+ICh7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgYWRkcmVzczogb3V0cHV0LmFkZHJlc3MhLFxuICAgICAgYW1vdW50OiBvdXRwdXQuYW1vdW50LFxuICAgIH0pKSxcbiAgICBjaGFuZ2VBZGRyZXNzLFxuICB9O1xufVxuXG5mdW5jdGlvbiBkZXNjcmliZVBhcnNlVHJhbnNhY3Rpb25XaXRoKFxuICBhY2lkVGVzdDogdXR4b2xpYi50ZXN0dXRpbC5BY2lkVGVzdCxcbiAgbGFiZWw6IHN0cmluZyxcbiAge1xuICAgIHR4UGFyYW1zLFxuICAgIGV4dGVybmFsQ3VzdG9tQ2hhbmdlQWRkcmVzcyA9IGZhbHNlLFxuICAgIGV4cGVjdGVkRXhwbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50LFxuICAgIGV4cGVjdGVkSW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50LFxuICB9OiB7XG4gICAgdHhQYXJhbXM6XG4gICAgICB8IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBJVHJhbnNhY3Rpb25SZWNpcGllbnRbXTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgcmJmVHhJZHM6IHN0cmluZ1tdO1xuICAgICAgICB9XG4gICAgICB8ICdpbmZlckZyb21FeHBsYW5hdGlvbic7XG4gICAgZXh0ZXJuYWxDdXN0b21DaGFuZ2VBZGRyZXNzPzogYm9vbGVhbjtcbiAgICBleHBlY3RlZEV4cGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudDogYmlnaW50O1xuICAgIGV4cGVjdGVkSW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50OiBiaWdpbnQ7XG4gIH1cbikge1xuICBkZXNjcmliZShgJHthY2lkVGVzdC5uYW1lfS8ke2xhYmVsfWAsIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgcmVmUGFyc2VkVHJhbnNhY3Rpb246IFBhcnNlZFRyYW5zYWN0aW9uPGJpZ2ludD47XG4gICAgbGV0IGNvaW46IFJldHVyblR5cGU8dHlwZW9mIGdldFV0eG9Db2luPjtcbiAgICBsZXQgbW9ja1dhbGxldDogc2lub24uU2lub25TdHViYmVkSW5zdGFuY2U8V2FsbGV0PjtcbiAgICBsZXQgc3R1YkV4cGxhaW5UcmFuc2FjdGlvbjogc2lub24uU2lub25TdHViO1xuXG4gICAgYmVmb3JlKCdwcmVwYXJlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY29pbk5hbWUgPSBnZXRDb2luTmFtZUZvck5ldHdvcmsoYWNpZFRlc3QubmV0d29yayk7XG4gICAgICBjb2luID0gZ2V0VXR4b0NvaW4oY29pbk5hbWUpO1xuXG4gICAgICAvLyBDcmVhdGUgUFNCVCBhbmQgZXhwbGFuYXRpb25cbiAgICAgIGNvbnN0IHBzYnQgPSBhY2lkVGVzdC5jcmVhdGVQc2J0KCk7XG4gICAgICBjb25zdCB0eCA9IHBzYnQuZ2V0VW5zaWduZWRUeCgpO1xuICAgICAgY29uc3QgdHhIYXNoID0gdHguZ2V0SWQoKTtcblxuICAgICAgY29uc3Qgd2FzbVBzYnQgPSBmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQuZnJvbUJ5dGVzKFxuICAgICAgICBwc2J0LnRvQnVmZmVyKCksXG4gICAgICAgIHV0eG9saWIuZ2V0TmV0d29ya05hbWUoYWNpZFRlc3QubmV0d29yaykhXG4gICAgICApO1xuICAgICAgY29uc3QgZXhwbGFuYXRpb246IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSBleHBsYWluUHNidFdhc20oXG4gICAgICAgIHdhc21Qc2J0LFxuICAgICAgICBhY2lkVGVzdC5yb290V2FsbGV0S2V5cy50cmlwbGUubWFwKChrKSA9PiBrLm5ldXRlcmVkKCkudG9CYXNlNTgoKSkgYXMgVHJpcGxlPHN0cmluZz4sXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzQ29kZWM6IGNvaW4uYWRkcmVzc0NvZGVjLFxuICAgICAgICAgIHJlcGxheVByb3RlY3Rpb246IHtcbiAgICAgICAgICAgIHB1YmxpY0tleXM6IFthY2lkVGVzdC5nZXRSZXBsYXlQcm90ZWN0aW9uUHVibGljS2V5KCldLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIC8vIERldGVybWluZSB0eFBhcmFtc1xuICAgICAgbGV0IHJlc29sdmVkVHhQYXJhbXM7XG4gICAgICBpZiAodHhQYXJhbXMgPT09ICdpbmZlckZyb21FeHBsYW5hdGlvbicgfHwgdHhQYXJhbXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXNvbHZlZFR4UGFyYW1zID0gZ2V0VHhQYXJhbXNGcm9tRXhwbGFuYXRpb24oZXhwbGFuYXRpb24sIHsgZXh0ZXJuYWxDdXN0b21DaGFuZ2VBZGRyZXNzIH0pO1xuICAgICAgfSBlbHNlIGlmICgncmJmVHhJZHMnIGluIHR4UGFyYW1zKSB7XG4gICAgICAgIC8vIFJlcGxhY2UgcGxhY2Vob2xkZXIgdHhIYXNoIHdpdGggYWN0dWFsIGNvbXB1dGVkIHR4SGFzaFxuICAgICAgICByZXNvbHZlZFR4UGFyYW1zID0ge1xuICAgICAgICAgIHJiZlR4SWRzOiB0eFBhcmFtcy5yYmZUeElkcy5tYXAoKGhhc2gpID0+IChoYXNoID09PSAnUExBQ0VIT0xERVInID8gdHhIYXNoIDogaGFzaCkpLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZWRUeFBhcmFtcyA9IHR4UGFyYW1zO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXh0ZXJuYWxDdXN0b21DaGFuZ2VBZGRyZXNzKSB7XG4gICAgICAgIHJlc29sdmVkVHhQYXJhbXMuYWxsb3dFeHRlcm5hbENoYW5nZUFkZHJlc3MgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgbW9jayB3YWxsZXRcbiAgICAgIG1vY2tXYWxsZXQgPSBzaW5vbi5jcmVhdGVTdHViSW5zdGFuY2UoV2FsbGV0KTtcbiAgICAgIG1vY2tXYWxsZXQuaWQucmV0dXJucygndGVzdC13YWxsZXQtaWQnKTtcbiAgICAgIG1vY2tXYWxsZXQuY29pbi5yZXR1cm5zKGNvaW4uZ2V0Q2hhaW4oKSk7XG4gICAgICBtb2NrV2FsbGV0LmNvaW5TcGVjaWZpYy5yZXR1cm5zKHVuZGVmaW5lZCk7XG5cbiAgICAgIC8vIE1vY2sgZ2V0VHJhbnNhY3Rpb24gZm9yIFJCRiBjYXNlXG4gICAgICBpZiAoJ3JiZlR4SWRzJyBpbiByZXNvbHZlZFR4UGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IHJiZlR4UGFyYW1zID0gZ2V0VHhQYXJhbXNGcm9tRXhwbGFuYXRpb24oZXhwbGFuYXRpb24sIHsgZXh0ZXJuYWxDdXN0b21DaGFuZ2VBZGRyZXNzOiBmYWxzZSB9KTtcbiAgICAgICAgbW9ja1dhbGxldC5nZXRUcmFuc2FjdGlvbi5yZXNvbHZlcyh7XG4gICAgICAgICAgb3V0cHV0czogcmJmVHhQYXJhbXMucmVjaXBpZW50cy5tYXAoKHIpID0+ICh7XG4gICAgICAgICAgICB2YWx1ZVN0cmluZzogdHlwZW9mIHIuYW1vdW50ID09PSAnc3RyaW5nJyA/IHIuYW1vdW50IDogci5hbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGFkZHJlc3M6IHIuYWRkcmVzcyxcbiAgICAgICAgICAgIC8vIHdhbGxldCBmaWVsZCBpcyB1bmRlZmluZWQgZm9yIGV4dGVybmFsIG91dHB1dHMgKG5vdCBzZWxmLXNlbmRzKVxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIE1vY2sgdmVyaWZpY2F0aW9uIG9wdGlvbnMgd2l0aCBrZXljaGFpbnMgdG8gZGlzYWJsZSBuZXR3b3JraW5nXG4gICAgICAvLyBVc2UgdGhlIHNhbWUga2V5Y2hhaW5zIHRoYXQgd2VyZSB1c2VkIHRvIGNyZWF0ZSB0aGUgUFNCVFxuICAgICAgY29uc3QgcHVicyA9IGFjaWRUZXN0LnJvb3RXYWxsZXRLZXlzLnRyaXBsZS5tYXAoKGspID0+IGsubmV1dGVyZWQoKS50b0Jhc2U1OCgpKTtcbiAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbjogVmVyaWZpY2F0aW9uT3B0aW9ucyA9IHtcbiAgICAgICAgZGlzYWJsZU5ldHdvcmtpbmc6IHRydWUsXG4gICAgICAgIGtleWNoYWluczoge1xuICAgICAgICAgIHVzZXI6IHsgaWQ6ICcwJywgcHViOiBwdWJzWzBdLCB0eXBlOiAnaW5kZXBlbmRlbnQnIH0sXG4gICAgICAgICAgYmFja3VwOiB7IGlkOiAnMScsIHB1YjogcHVic1sxXSwgdHlwZTogJ2luZGVwZW5kZW50JyB9LFxuICAgICAgICAgIGJpdGdvOiB7IGlkOiAnMicsIHB1YjogcHVic1syXSwgdHlwZTogJ2luZGVwZW5kZW50JyB9LFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgLy8gU3R1YiBleHBsYWluVHJhbnNhY3Rpb24gdG8gcmV0dXJuIHRoZSBleHBsYW5hdGlvbiB3aXRob3V0IG1ha2luZyBuZXR3b3JrIGNhbGxzXG4gICAgICBzdHViRXhwbGFpblRyYW5zYWN0aW9uID0gc2lub24uc3R1Yihjb2luLCAnZXhwbGFpblRyYW5zYWN0aW9uJykucmVzb2x2ZXMoZXhwbGFuYXRpb24pO1xuXG4gICAgICBjb25zdCB0eFByZWJ1aWxkOiBUcmFuc2FjdGlvblByZWJ1aWxkPGJpZ2ludD4gPSB7XG4gICAgICAgIHR4SGV4OiBwc2J0LnRvSGV4KCksXG4gICAgICB9O1xuXG4gICAgICByZWZQYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IHBhcnNlVHJhbnNhY3Rpb24oY29pbiwge1xuICAgICAgICB3YWxsZXQ6IG1vY2tXYWxsZXQgYXMgdW5rbm93biBhcyBVdHhvV2FsbGV0LFxuICAgICAgICB0eFBhcmFtczogcmVzb2x2ZWRUeFBhcmFtcyxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBhZnRlcignY2xlYW51cCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChzdHViRXhwbGFpblRyYW5zYWN0aW9uKSB7XG4gICAgICAgIHN0dWJFeHBsYWluVHJhbnNhY3Rpb24ucmVzdG9yZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSB0cmFuc2FjdGlvbiB3aXRob3V0IG5ldHdvcmsgY2FsbHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQub2socmVmUGFyc2VkVHJhbnNhY3Rpb24pO1xuICAgICAgYXNzZXJ0Lm9rKHJlZlBhcnNlZFRyYW5zYWN0aW9uLmtleWNoYWlucyk7XG4gICAgICBhc3NlcnQub2socmVmUGFyc2VkVHJhbnNhY3Rpb24ub3V0cHV0cyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhdmUgdmFsaWQga2V5Y2hhaW5zJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0Lm9rKHJlZlBhcnNlZFRyYW5zYWN0aW9uLmtleWNoYWlucy51c2VyKTtcbiAgICAgIGFzc2VydC5vayhyZWZQYXJzZWRUcmFuc2FjdGlvbi5rZXljaGFpbnMuYmFja3VwKTtcbiAgICAgIGFzc2VydC5vayhyZWZQYXJzZWRUcmFuc2FjdGlvbi5rZXljaGFpbnMuYml0Z28pO1xuICAgICAgY29uc3QgcHVicyA9IGFjaWRUZXN0LnJvb3RXYWxsZXRLZXlzLnRyaXBsZS5tYXAoKGspID0+IGsubmV1dGVyZWQoKS50b0Jhc2U1OCgpKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWZQYXJzZWRUcmFuc2FjdGlvbi5rZXljaGFpbnMudXNlci5wdWIsIHB1YnNbMF0pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlZlBhcnNlZFRyYW5zYWN0aW9uLmtleWNoYWlucy5iYWNrdXAucHViLCBwdWJzWzFdKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWZQYXJzZWRUcmFuc2FjdGlvbi5rZXljaGFpbnMuYml0Z28ucHViLCBwdWJzWzJdKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGF2ZSBvdXRwdXRzIGNsYXNzaWZpZWQgYXMgaW50ZXJuYWwgb3IgZXh0ZXJuYWwnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBTaW5jZSB3ZSBkaWRuJ3Qgc3BlY2lmeSBhbnkgcmVjaXBpZW50cywgb3V0cHV0cyB3aWxsIGJlIGNsYXNzaWZpZWQgYmFzZWQgb24gd2hldGhlciB0aGV5IGNhbiBiZVxuICAgICAgLy8gdmVyaWZpZWQgYXMgd2FsbGV0IGFkZHJlc3Nlcy4gU29tZSBtYXkgYmUgZXh0ZXJuYWwgaWYgYWRkcmVzcyB2ZXJpZmljYXRpb24gZmFpbHMgd2l0aG91dCBhIHByb3BlciB3YWxsZXQgc2V0dXAuXG4gICAgICBjb25zdCB0b3RhbE91dHB1dHMgPSByZWZQYXJzZWRUcmFuc2FjdGlvbi5vdXRwdXRzLmxlbmd0aDtcbiAgICAgIGNvbnN0IGNoYW5nZU91dHB1dHMgPSByZWZQYXJzZWRUcmFuc2FjdGlvbi5jaGFuZ2VPdXRwdXRzLmxlbmd0aDtcbiAgICAgIGNvbnN0IGV4dGVybmFsT3V0cHV0cyA9IHJlZlBhcnNlZFRyYW5zYWN0aW9uLm91dHB1dHMuZmlsdGVyKChvKSA9PiBvLmV4dGVybmFsID09PSB0cnVlKS5sZW5ndGg7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZXh0ZXJuYWxPdXRwdXRzLCAzKTtcblxuICAgICAgYXNzZXJ0Lm9rKHRvdGFsT3V0cHV0cyA+IDAsICdzaG91bGQgaGF2ZSBhdCBsZWFzdCBvbmUgb3V0cHV0Jyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY2hhbmdlT3V0cHV0cyArIGV4dGVybmFsT3V0cHV0cywgdG90YWxPdXRwdXRzLCAnYWxsIG91dHB1dHMgc2hvdWxkIGJlIGNsYXNzaWZpZWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGF2ZSBleHBlY3RlZCBleHBsaWNpdCBhbmQgaW1wbGljaXQgZXh0ZXJuYWwgc3BlbmQgYW1vdW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChCaWdJbnQocmVmUGFyc2VkVHJhbnNhY3Rpb24uZXhwbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50KSwgZXhwZWN0ZWRFeHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKEJpZ0ludChyZWZQYXJzZWRUcmFuc2FjdGlvbi5pbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQpLCBleHBlY3RlZEltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBkZXNjcmliZVRyYW5zYWN0aW9uKGZpbHRlcjogKHRlc3Q6IHV0eG9saWIudGVzdHV0aWwuQWNpZFRlc3QpID0+IGJvb2xlYW4gPSAoKSA9PiB0cnVlKSB7XG4gIGRlc2NyaWJlKGBwYXJzZVRyYW5zYWN0aW9uYCwgZnVuY3Rpb24gKCkge1xuICAgIHV0eG9saWIudGVzdHV0aWwuQWNpZFRlc3Quc3VpdGUoKVxuICAgICAgLmZpbHRlcihmaWx0ZXIpXG4gICAgICAuZm9yRWFjaCgodGVzdCkgPT4ge1xuICAgICAgICAvLyBEZWZhdWx0IGNhc2U6IHBzYnQgZm9ybWF0LCBpbmZlciByZWNpcGllbnRzIGZyb20gZXhwbGFuYXRpb25cbiAgICAgICAgZGVzY3JpYmVQYXJzZVRyYW5zYWN0aW9uV2l0aCh0ZXN0LCAnZGVmYXVsdCcsIHtcbiAgICAgICAgICB0eFBhcmFtczogJ2luZmVyRnJvbUV4cGxhbmF0aW9uJyxcbiAgICAgICAgICBleHBlY3RlZEV4cGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudDogMTgwMG4sXG4gICAgICAgICAgZXhwZWN0ZWRJbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQ6IDBuLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGVzdC5uZXR3b3JrICE9PSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXh0ZW5kZWQgdGVzdCBzdWl0ZSBmb3IgYml0Y29pblxuXG4gICAgICAgIGRlc2NyaWJlUGFyc2VUcmFuc2FjdGlvbldpdGgodGVzdCwgJ2VtcHR5IHJlY2lwaWVudHMnLCB7XG4gICAgICAgICAgdHhQYXJhbXM6IHtcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFtdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhwZWN0ZWRFeHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQ6IDBuLFxuICAgICAgICAgIGV4cGVjdGVkSW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50OiAxODAwbixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGVzY3JpYmVQYXJzZVRyYW5zYWN0aW9uV2l0aCh0ZXN0LCAncmJmJywge1xuICAgICAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgICAgICByYmZUeElkczogWydQTEFDRUhPTERFUiddLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhwZWN0ZWRFeHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQ6IDE4MDBuLFxuICAgICAgICAgIGV4cGVjdGVkSW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50OiAwbixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGVzY3JpYmVQYXJzZVRyYW5zYWN0aW9uV2l0aCh0ZXN0LCAnYWxsb3dFeHRlcm5hbENoYW5nZUFkZHJlc3MnLCB7XG4gICAgICAgICAgdHhQYXJhbXM6ICdpbmZlckZyb21FeHBsYW5hdGlvbicsXG4gICAgICAgICAgZXh0ZXJuYWxDdXN0b21DaGFuZ2VBZGRyZXNzOiB0cnVlLFxuICAgICAgICAgIGV4cGVjdGVkRXhwbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50OiAxODAwbixcbiAgICAgICAgICBleHBlY3RlZEltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudDogMG4sXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH0pO1xufVxuXG5kZXNjcmliZVRyYW5zYWN0aW9uKCk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=replayProtection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replayProtection.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/transaction/fixedScript/replayProtection.ts"],"names":[],"mappings":""}
@@ -0,0 +1,60 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const strict_1 = __importDefault(require("node:assert/strict"));
40
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
41
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
42
+ const replayProtection_1 = require("../../../../src/transaction/fixedScript/replayProtection");
43
+ function createReplayProtectionOutputScript(pubkey) {
44
+ const descriptor = wasm_utxo_1.Descriptor.fromString(`sh(pk(${pubkey.toString('hex')}))`, 'definite');
45
+ return Buffer.from(descriptor.scriptPubkey());
46
+ }
47
+ describe('replayProtection', function () {
48
+ it('should have scriptPubKeys that match descriptor computation', function () {
49
+ for (const pubkey of [replayProtection_1.pubkeyProd, replayProtection_1.pubkeyTestnet]) {
50
+ const coinName = pubkey === replayProtection_1.pubkeyProd ? 'bch' : 'tbch';
51
+ const network = pubkey === replayProtection_1.pubkeyProd ? utxolib.networks.bitcoincash : utxolib.networks.bitcoincashTestnet;
52
+ const expectedScript = createReplayProtectionOutputScript(pubkey);
53
+ const actualAddresses = (0, replayProtection_1.getReplayProtectionAddresses)(coinName);
54
+ strict_1.default.equal(actualAddresses.length, 1);
55
+ const actualScript = Buffer.from(wasm_utxo_1.utxolibCompat.toOutputScript(actualAddresses[0], network));
56
+ strict_1.default.deepStrictEqual(actualScript, expectedScript);
57
+ }
58
+ });
59
+ });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGF5UHJvdGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9yZXBsYXlQcm90ZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0VBQXdDO0FBRXhDLDhEQUFnRDtBQUNoRCxnREFBNkQ7QUFFN0QsK0ZBSWtFO0FBR2xFLFNBQVMsa0NBQWtDLENBQUMsTUFBYztJQUN4RCxNQUFNLFVBQVUsR0FBRyxzQkFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMxRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVELFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtJQUMzQixFQUFFLENBQUMsNkRBQTZELEVBQUU7UUFDaEUsS0FBSyxNQUFNLE1BQU0sSUFBSSxDQUFDLDZCQUFVLEVBQUUsZ0NBQWEsQ0FBQyxFQUFFLENBQUM7WUFDakQsTUFBTSxRQUFRLEdBQWlCLE1BQU0sS0FBSyw2QkFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUN0RSxNQUFNLE9BQU8sR0FBRyxNQUFNLEtBQUssNkJBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUM7WUFDM0csTUFBTSxjQUFjLEdBQUcsa0NBQWtDLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEUsTUFBTSxlQUFlLEdBQUcsSUFBQSwrQ0FBNEIsRUFBQyxRQUFRLENBQUMsQ0FBQztZQUMvRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMseUJBQWEsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDNUYsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdub2RlOmFzc2VydC9zdHJpY3QnO1xuXG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IERlc2NyaXB0b3IsIHV0eG9saWJDb21wYXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHtcbiAgZ2V0UmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyxcbiAgcHVia2V5UHJvZCxcbiAgcHVia2V5VGVzdG5ldCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L3JlcGxheVByb3RlY3Rpb24nO1xuaW1wb3J0IHsgVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL25hbWVzJztcblxuZnVuY3Rpb24gY3JlYXRlUmVwbGF5UHJvdGVjdGlvbk91dHB1dFNjcmlwdChwdWJrZXk6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gIGNvbnN0IGRlc2NyaXB0b3IgPSBEZXNjcmlwdG9yLmZyb21TdHJpbmcoYHNoKHBrKCR7cHVia2V5LnRvU3RyaW5nKCdoZXgnKX0pKWAsICdkZWZpbml0ZScpO1xuICByZXR1cm4gQnVmZmVyLmZyb20oZGVzY3JpcHRvci5zY3JpcHRQdWJrZXkoKSk7XG59XG5cbmRlc2NyaWJlKCdyZXBsYXlQcm90ZWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICBpdCgnc2hvdWxkIGhhdmUgc2NyaXB0UHViS2V5cyB0aGF0IG1hdGNoIGRlc2NyaXB0b3IgY29tcHV0YXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgZm9yIChjb25zdCBwdWJrZXkgb2YgW3B1YmtleVByb2QsIHB1YmtleVRlc3RuZXRdKSB7XG4gICAgICBjb25zdCBjb2luTmFtZTogVXR4b0NvaW5OYW1lID0gcHVia2V5ID09PSBwdWJrZXlQcm9kID8gJ2JjaCcgOiAndGJjaCc7XG4gICAgICBjb25zdCBuZXR3b3JrID0gcHVia2V5ID09PSBwdWJrZXlQcm9kID8gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luY2FzaCA6IHV0eG9saWIubmV0d29ya3MuYml0Y29pbmNhc2hUZXN0bmV0O1xuICAgICAgY29uc3QgZXhwZWN0ZWRTY3JpcHQgPSBjcmVhdGVSZXBsYXlQcm90ZWN0aW9uT3V0cHV0U2NyaXB0KHB1YmtleSk7XG4gICAgICBjb25zdCBhY3R1YWxBZGRyZXNzZXMgPSBnZXRSZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzKGNvaW5OYW1lKTtcbiAgICAgIGFzc2VydC5lcXVhbChhY3R1YWxBZGRyZXNzZXMubGVuZ3RoLCAxKTtcbiAgICAgIGNvbnN0IGFjdHVhbFNjcmlwdCA9IEJ1ZmZlci5mcm9tKHV0eG9saWJDb21wYXQudG9PdXRwdXRTY3JpcHQoYWN0dWFsQWRkcmVzc2VzWzBdLCBuZXR3b3JrKSk7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGFjdHVhbFNjcmlwdCwgZXhwZWN0ZWRTY3JpcHQpO1xuICAgIH1cbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=signPsbt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signPsbt.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/transaction/fixedScript/signPsbt.ts"],"names":[],"mappings":""}