@bitgo-beta/abstract-utxo 1.6.1-alpha.43 → 1.6.1-alpha.430

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 (788) hide show
  1. package/README.md +76 -0
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts +435 -0
  3. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -0
  4. package/dist/cjs/src/abstractUtxoCoin.js +657 -0
  5. package/dist/cjs/src/address/fixedScript.d.ts +49 -0
  6. package/dist/cjs/src/address/fixedScript.d.ts.map +1 -0
  7. package/dist/cjs/src/address/fixedScript.js +155 -0
  8. package/dist/cjs/src/address/index.d.ts +2 -0
  9. package/dist/cjs/src/address/index.d.ts.map +1 -0
  10. package/dist/cjs/src/address/index.js +8 -0
  11. package/dist/cjs/src/config.d.ts.map +1 -0
  12. package/dist/cjs/src/config.js +14 -0
  13. package/dist/cjs/src/descriptor/NamedDescriptor.d.ts +20 -0
  14. package/dist/cjs/src/descriptor/NamedDescriptor.d.ts.map +1 -0
  15. package/dist/cjs/src/descriptor/NamedDescriptor.js +79 -0
  16. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
  17. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
  18. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.js +66 -0
  19. package/dist/cjs/src/descriptor/builder/builder.d.ts +13 -0
  20. package/dist/cjs/src/descriptor/builder/builder.d.ts.map +1 -0
  21. package/dist/cjs/src/descriptor/builder/builder.js +37 -0
  22. package/dist/cjs/src/descriptor/builder/index.d.ts +3 -0
  23. package/dist/cjs/src/descriptor/builder/index.d.ts.map +1 -0
  24. package/dist/cjs/src/descriptor/builder/index.js +8 -0
  25. package/dist/cjs/src/descriptor/builder/parse.d.ts +5 -0
  26. package/dist/cjs/src/descriptor/builder/parse.d.ts.map +1 -0
  27. package/dist/cjs/src/descriptor/builder/parse.js +116 -0
  28. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
  29. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
  30. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.js +41 -0
  31. package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts +12 -0
  32. package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  33. package/dist/cjs/src/descriptor/createWallet/createDescriptors.js +33 -0
  34. package/dist/cjs/src/descriptor/createWallet/index.d.ts +3 -0
  35. package/dist/cjs/src/descriptor/createWallet/index.d.ts.map +1 -0
  36. package/dist/cjs/src/descriptor/createWallet/index.js +19 -0
  37. package/dist/cjs/src/descriptor/descriptorWallet.d.ts +19 -0
  38. package/dist/cjs/src/descriptor/descriptorWallet.d.ts.map +1 -0
  39. package/dist/cjs/src/descriptor/descriptorWallet.js +54 -0
  40. package/dist/cjs/src/descriptor/index.d.ts +8 -0
  41. package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
  42. package/dist/cjs/src/descriptor/index.js +53 -0
  43. package/dist/cjs/src/descriptor/validatePolicy.d.ts +22 -0
  44. package/dist/cjs/src/descriptor/validatePolicy.d.ts.map +1 -0
  45. package/dist/cjs/src/descriptor/validatePolicy.js +92 -0
  46. package/dist/cjs/src/impl/bch/bch.d.ts +20 -0
  47. package/dist/cjs/src/impl/bch/bch.d.ts.map +1 -0
  48. package/dist/cjs/src/impl/bch/bch.js +74 -0
  49. package/dist/cjs/src/impl/bch/index.d.ts +3 -0
  50. package/dist/cjs/src/impl/bch/index.d.ts.map +1 -0
  51. package/dist/cjs/src/impl/bch/index.js +19 -0
  52. package/dist/cjs/src/impl/bch/tbch.d.ts +10 -0
  53. package/dist/cjs/src/impl/bch/tbch.d.ts.map +1 -0
  54. package/dist/cjs/src/impl/bch/tbch.js +48 -0
  55. package/dist/cjs/src/impl/bcha/bcha.d.ts +8 -0
  56. package/dist/cjs/src/impl/bcha/bcha.d.ts.map +1 -0
  57. package/dist/cjs/src/impl/bcha/bcha.js +48 -0
  58. package/dist/cjs/src/impl/bcha/index.d.ts +3 -0
  59. package/dist/cjs/src/impl/bcha/index.d.ts.map +1 -0
  60. package/dist/cjs/src/impl/bcha/index.js +19 -0
  61. package/dist/cjs/src/impl/bcha/tbcha.d.ts +10 -0
  62. package/dist/cjs/src/impl/bcha/tbcha.d.ts.map +1 -0
  63. package/dist/cjs/src/impl/bcha/tbcha.js +48 -0
  64. package/dist/cjs/src/impl/bsv/bsv.d.ts +8 -0
  65. package/dist/cjs/src/impl/bsv/bsv.d.ts.map +1 -0
  66. package/dist/cjs/src/impl/bsv/bsv.js +48 -0
  67. package/dist/cjs/src/impl/bsv/index.d.ts +3 -0
  68. package/dist/cjs/src/impl/bsv/index.d.ts.map +1 -0
  69. package/dist/cjs/src/impl/bsv/index.js +19 -0
  70. package/dist/cjs/src/impl/bsv/tbsv.d.ts +10 -0
  71. package/dist/cjs/src/impl/bsv/tbsv.d.ts.map +1 -0
  72. package/dist/cjs/src/impl/bsv/tbsv.js +48 -0
  73. package/dist/cjs/src/impl/btc/btc.d.ts +13 -0
  74. package/dist/cjs/src/impl/btc/btc.d.ts.map +1 -0
  75. package/dist/cjs/src/impl/btc/btc.js +55 -0
  76. package/dist/cjs/src/impl/btc/index.d.ts +7 -0
  77. package/dist/cjs/src/impl/btc/index.d.ts.map +1 -0
  78. package/dist/cjs/src/impl/btc/index.js +23 -0
  79. package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts +51 -0
  80. package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts.map +1 -0
  81. package/dist/cjs/src/impl/btc/inscriptionBuilder.js +183 -0
  82. package/dist/cjs/src/impl/btc/tbtc.d.ts +10 -0
  83. package/dist/cjs/src/impl/btc/tbtc.d.ts.map +1 -0
  84. package/dist/cjs/src/impl/btc/tbtc.js +48 -0
  85. package/dist/cjs/src/impl/btc/tbtc4.d.ts +10 -0
  86. package/dist/cjs/src/impl/btc/tbtc4.d.ts.map +1 -0
  87. package/dist/cjs/src/impl/btc/tbtc4.js +48 -0
  88. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts +10 -0
  89. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts.map +1 -0
  90. package/dist/cjs/src/impl/btc/tbtcbgsig.js +48 -0
  91. package/dist/cjs/src/impl/btc/tbtcsig.d.ts +10 -0
  92. package/dist/cjs/src/impl/btc/tbtcsig.d.ts.map +1 -0
  93. package/dist/cjs/src/impl/btc/tbtcsig.js +48 -0
  94. package/dist/cjs/src/impl/btg/btg.d.ts +7 -0
  95. package/dist/cjs/src/impl/btg/btg.d.ts.map +1 -0
  96. package/dist/cjs/src/impl/btg/btg.js +48 -0
  97. package/dist/cjs/src/impl/btg/index.d.ts +2 -0
  98. package/dist/cjs/src/impl/btg/index.d.ts.map +1 -0
  99. package/dist/cjs/src/impl/btg/index.js +18 -0
  100. package/dist/cjs/src/impl/dash/dash.d.ts +7 -0
  101. package/dist/cjs/src/impl/dash/dash.d.ts.map +1 -0
  102. package/dist/cjs/src/impl/dash/dash.js +48 -0
  103. package/dist/cjs/src/impl/dash/index.d.ts +3 -0
  104. package/dist/cjs/src/impl/dash/index.d.ts.map +1 -0
  105. package/dist/cjs/src/impl/dash/index.js +19 -0
  106. package/dist/cjs/src/impl/dash/tdash.d.ts +10 -0
  107. package/dist/cjs/src/impl/dash/tdash.d.ts.map +1 -0
  108. package/dist/cjs/src/impl/dash/tdash.js +48 -0
  109. package/dist/cjs/src/impl/doge/doge.d.ts +32 -0
  110. package/dist/cjs/src/impl/doge/doge.d.ts.map +1 -0
  111. package/dist/cjs/src/impl/doge/doge.js +79 -0
  112. package/dist/cjs/src/impl/doge/index.d.ts +3 -0
  113. package/dist/cjs/src/impl/doge/index.d.ts.map +1 -0
  114. package/dist/cjs/src/impl/doge/index.js +19 -0
  115. package/dist/cjs/src/impl/doge/tdoge.d.ts +10 -0
  116. package/dist/cjs/src/impl/doge/tdoge.d.ts.map +1 -0
  117. package/dist/cjs/src/impl/doge/tdoge.js +48 -0
  118. package/dist/cjs/src/impl/index.d.ts +10 -0
  119. package/dist/cjs/src/impl/index.d.ts.map +1 -0
  120. package/dist/cjs/src/impl/index.js +46 -0
  121. package/dist/cjs/src/impl/ltc/index.d.ts +3 -0
  122. package/dist/cjs/src/impl/ltc/index.d.ts.map +1 -0
  123. package/dist/cjs/src/impl/ltc/index.js +19 -0
  124. package/dist/cjs/src/impl/ltc/ltc.d.ts +7 -0
  125. package/dist/cjs/src/impl/ltc/ltc.d.ts.map +1 -0
  126. package/dist/cjs/src/impl/ltc/ltc.js +52 -0
  127. package/dist/cjs/src/impl/ltc/tltc.d.ts +7 -0
  128. package/dist/cjs/src/impl/ltc/tltc.d.ts.map +1 -0
  129. package/dist/cjs/src/impl/ltc/tltc.js +51 -0
  130. package/dist/cjs/src/impl/zec/index.d.ts +3 -0
  131. package/dist/cjs/src/impl/zec/index.d.ts.map +1 -0
  132. package/dist/cjs/src/impl/zec/index.js +19 -0
  133. package/dist/cjs/src/impl/zec/tzec.d.ts +7 -0
  134. package/dist/cjs/src/impl/zec/tzec.d.ts.map +1 -0
  135. package/dist/cjs/src/impl/zec/tzec.js +48 -0
  136. package/dist/cjs/src/impl/zec/zec.d.ts +10 -0
  137. package/dist/cjs/src/impl/zec/zec.d.ts.map +1 -0
  138. package/dist/cjs/src/impl/zec/zec.js +48 -0
  139. package/dist/cjs/src/index.d.ts +21 -0
  140. package/dist/cjs/src/index.d.ts.map +1 -0
  141. package/dist/cjs/src/index.js +60 -0
  142. package/dist/cjs/src/keychains.d.ts +52 -0
  143. package/dist/cjs/src/keychains.d.ts.map +1 -0
  144. package/dist/cjs/src/keychains.js +136 -0
  145. package/dist/cjs/src/names.d.ts +26 -0
  146. package/dist/cjs/src/names.d.ts.map +1 -0
  147. package/dist/cjs/src/names.js +214 -0
  148. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts +8 -0
  149. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
  150. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.js +26 -0
  151. package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts +46 -0
  152. package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
  153. package/dist/cjs/src/offlineVault/OfflineVaultSignable.js +55 -0
  154. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts +15 -0
  155. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts.map +1 -0
  156. package/dist/cjs/src/offlineVault/TransactionExplanation.js +16 -0
  157. package/dist/cjs/src/offlineVault/descriptor/index.d.ts +2 -0
  158. package/dist/cjs/src/offlineVault/descriptor/index.d.ts.map +1 -0
  159. package/dist/cjs/src/offlineVault/descriptor/index.js +18 -0
  160. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts +38 -0
  161. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts.map +1 -0
  162. package/dist/cjs/src/offlineVault/descriptor/transaction.js +80 -0
  163. package/dist/cjs/src/offlineVault/index.d.ts +6 -0
  164. package/dist/cjs/src/offlineVault/index.d.ts.map +1 -0
  165. package/dist/cjs/src/offlineVault/index.js +44 -0
  166. package/dist/{src → cjs/src}/recovery/RecoveryProvider.d.ts +1 -1
  167. package/dist/cjs/src/recovery/RecoveryProvider.d.ts.map +1 -0
  168. package/dist/cjs/src/recovery/RecoveryProvider.js +22 -0
  169. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts +88 -0
  170. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -0
  171. package/dist/cjs/src/recovery/backupKeyRecovery.js +377 -0
  172. package/dist/{src → cjs/src}/recovery/baseApi.d.ts +3 -6
  173. package/dist/cjs/src/recovery/baseApi.d.ts.map +1 -0
  174. package/dist/cjs/src/recovery/baseApi.js +73 -0
  175. package/dist/{src → cjs/src}/recovery/coingeckoApi.d.ts +0 -3
  176. package/dist/cjs/src/recovery/coingeckoApi.d.ts.map +1 -0
  177. package/dist/cjs/src/recovery/coingeckoApi.js +44 -0
  178. package/dist/{src → cjs/src}/recovery/crossChainRecovery.d.ts +15 -4
  179. package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -0
  180. package/dist/cjs/src/recovery/crossChainRecovery.js +408 -0
  181. package/dist/{src → cjs/src}/recovery/index.d.ts +0 -1
  182. package/dist/cjs/src/recovery/index.d.ts.map +1 -0
  183. package/dist/{src → cjs/src}/recovery/index.js +6 -3
  184. package/dist/cjs/src/recovery/mempoolApi.d.ts.map +1 -0
  185. package/dist/cjs/src/recovery/mempoolApi.js +36 -0
  186. package/dist/cjs/src/transaction/bip322.d.ts +27 -0
  187. package/dist/cjs/src/transaction/bip322.d.ts.map +1 -0
  188. package/dist/cjs/src/transaction/bip322.js +125 -0
  189. package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts +2 -0
  190. package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
  191. package/dist/cjs/src/transaction/common/verifyPayGoAmount.js +3 -0
  192. package/dist/cjs/src/transaction/decode.d.ts +11 -0
  193. package/dist/cjs/src/transaction/decode.d.ts.map +1 -0
  194. package/dist/cjs/src/transaction/decode.js +81 -0
  195. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts +5 -0
  196. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  197. package/dist/cjs/src/transaction/descriptor/explainPsbt.js +80 -0
  198. package/dist/cjs/src/transaction/descriptor/index.d.ts +7 -0
  199. package/dist/cjs/src/transaction/descriptor/index.d.ts.map +1 -0
  200. package/dist/cjs/src/transaction/descriptor/index.js +14 -0
  201. package/dist/cjs/src/transaction/descriptor/parse.d.ts +16 -0
  202. package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -0
  203. package/dist/cjs/src/transaction/descriptor/parse.js +116 -0
  204. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts +14 -0
  205. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
  206. package/dist/cjs/src/transaction/descriptor/parseToAmountType.js +60 -0
  207. package/dist/cjs/src/transaction/descriptor/recipient.d.ts +5 -0
  208. package/dist/cjs/src/transaction/descriptor/recipient.d.ts.map +1 -0
  209. package/dist/cjs/src/transaction/descriptor/recipient.js +3 -0
  210. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts +25 -0
  211. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts.map +1 -0
  212. package/dist/cjs/src/transaction/descriptor/signPsbt.js +43 -0
  213. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts +36 -0
  214. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
  215. package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +109 -0
  216. package/dist/cjs/src/transaction/explainTransaction.d.ts +18 -0
  217. package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -0
  218. package/dist/cjs/src/transaction/explainTransaction.js +88 -0
  219. package/dist/cjs/src/transaction/fetchInputs.d.ts +26 -0
  220. package/dist/cjs/src/transaction/fetchInputs.d.ts.map +1 -0
  221. package/dist/cjs/src/transaction/fetchInputs.js +109 -0
  222. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts +24 -0
  223. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts.map +1 -0
  224. package/dist/cjs/src/transaction/fixedScript/SigningError.js +26 -0
  225. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts +11 -0
  226. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  227. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.js +67 -0
  228. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +73 -0
  229. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  230. package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +344 -0
  231. package/dist/cjs/src/transaction/fixedScript/index.d.ts +10 -0
  232. package/dist/cjs/src/transaction/fixedScript/index.d.ts.map +1 -0
  233. package/dist/cjs/src/transaction/fixedScript/index.js +32 -0
  234. package/dist/cjs/src/transaction/fixedScript/musig2.d.ts +4 -0
  235. package/dist/cjs/src/transaction/fixedScript/musig2.d.ts.map +1 -0
  236. package/dist/cjs/src/transaction/fixedScript/musig2.js +3 -0
  237. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts +28 -0
  238. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  239. package/dist/cjs/src/transaction/fixedScript/parseOutput.js +220 -0
  240. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts +8 -0
  241. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  242. package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +215 -0
  243. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts +7 -0
  244. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  245. package/dist/cjs/src/transaction/fixedScript/replayProtection.js +78 -0
  246. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts +30 -0
  247. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -0
  248. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.js +152 -0
  249. package/dist/cjs/src/transaction/fixedScript/signPsbt.d.ts +30 -0
  250. package/dist/cjs/src/transaction/fixedScript/signPsbt.d.ts.map +1 -0
  251. package/dist/cjs/src/transaction/fixedScript/signPsbt.js +174 -0
  252. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts +22 -0
  253. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
  254. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.js +129 -0
  255. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +17 -0
  256. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -0
  257. package/dist/cjs/src/transaction/fixedScript/signTransaction.js +50 -0
  258. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts +21 -0
  259. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  260. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.js +199 -0
  261. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts +9 -0
  262. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
  263. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.js +53 -0
  264. package/dist/cjs/src/transaction/index.d.ts +8 -0
  265. package/dist/cjs/src/transaction/index.d.ts.map +1 -0
  266. package/dist/cjs/src/transaction/index.js +50 -0
  267. package/dist/cjs/src/transaction/outputDifference.d.ts +40 -0
  268. package/dist/cjs/src/transaction/outputDifference.d.ts.map +1 -0
  269. package/dist/cjs/src/transaction/outputDifference.js +47 -0
  270. package/dist/cjs/src/transaction/parseTransaction.d.ts +4 -0
  271. package/dist/cjs/src/transaction/parseTransaction.d.ts.map +1 -0
  272. package/dist/cjs/src/transaction/parseTransaction.js +48 -0
  273. package/dist/cjs/src/transaction/recipient.d.ts +29 -0
  274. package/dist/cjs/src/transaction/recipient.d.ts.map +1 -0
  275. package/dist/cjs/src/transaction/recipient.js +88 -0
  276. package/dist/cjs/src/transaction/signTransaction.d.ts +6 -0
  277. package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -0
  278. package/dist/cjs/src/transaction/signTransaction.js +105 -0
  279. package/dist/cjs/src/transaction/types.d.ts +49 -0
  280. package/dist/cjs/src/transaction/types.d.ts.map +1 -0
  281. package/dist/cjs/src/transaction/types.js +7 -0
  282. package/dist/cjs/src/transaction/verifyTransaction.d.ts +4 -0
  283. package/dist/cjs/src/transaction/verifyTransaction.d.ts.map +1 -0
  284. package/dist/cjs/src/transaction/verifyTransaction.js +50 -0
  285. package/dist/cjs/src/verifyKey.d.ts +29 -0
  286. package/dist/cjs/src/verifyKey.d.ts.map +1 -0
  287. package/dist/cjs/src/verifyKey.js +164 -0
  288. package/dist/cjs/src/wallet.d.ts +15 -0
  289. package/dist/cjs/src/wallet.d.ts.map +1 -0
  290. package/dist/cjs/src/wallet.js +8 -0
  291. package/dist/cjs/test/integration/impl/bch/bch.d.ts +2 -0
  292. package/dist/cjs/test/integration/impl/bch/bch.d.ts.map +1 -0
  293. package/dist/cjs/test/integration/impl/bch/bch.js +74 -0
  294. package/dist/cjs/test/unit/address.d.ts +2 -0
  295. package/dist/cjs/test/unit/address.d.ts.map +1 -0
  296. package/dist/cjs/test/unit/address.js +182 -0
  297. package/dist/cjs/test/unit/bip322.d.ts +2 -0
  298. package/dist/cjs/test/unit/bip322.d.ts.map +1 -0
  299. package/dist/cjs/test/unit/bip322.js +45 -0
  300. package/dist/cjs/test/unit/coins.d.ts +2 -0
  301. package/dist/cjs/test/unit/coins.d.ts.map +1 -0
  302. package/dist/cjs/test/unit/coins.js +97 -0
  303. package/dist/cjs/test/unit/customChangeWallet.d.ts +2 -0
  304. package/dist/cjs/test/unit/customChangeWallet.d.ts.map +1 -0
  305. package/dist/cjs/test/unit/customChangeWallet.js +154 -0
  306. package/dist/cjs/test/unit/customSigner.d.ts +3 -0
  307. package/dist/cjs/test/unit/customSigner.d.ts.map +1 -0
  308. package/dist/cjs/test/unit/customSigner.js +108 -0
  309. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts +2 -0
  310. package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts.map +1 -0
  311. package/dist/cjs/test/unit/descriptor/NamedDescriptor.js +18 -0
  312. package/dist/cjs/test/unit/descriptor/builder.d.ts +2 -0
  313. package/dist/cjs/test/unit/descriptor/builder.d.ts.map +1 -0
  314. package/dist/cjs/test/unit/descriptor/builder.js +72 -0
  315. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts +2 -0
  316. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  317. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.js +20 -0
  318. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts +2 -0
  319. package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts.map +1 -0
  320. package/dist/cjs/test/unit/descriptor/descriptorWallet.js +28 -0
  321. package/dist/cjs/test/unit/descriptorAddress.d.ts +3 -0
  322. package/dist/cjs/test/unit/descriptorAddress.d.ts.map +1 -0
  323. package/dist/cjs/test/unit/descriptorAddress.js +102 -0
  324. package/dist/cjs/test/unit/explainTransaction.d.ts +2 -0
  325. package/dist/cjs/test/unit/explainTransaction.d.ts.map +1 -0
  326. package/dist/cjs/test/unit/explainTransaction.js +74 -0
  327. package/dist/cjs/test/unit/fixtures/bip322/fixtures.d.ts +15 -0
  328. package/dist/cjs/test/unit/fixtures/bip322/fixtures.d.ts.map +1 -0
  329. package/dist/cjs/test/unit/fixtures/bip322/fixtures.js +51 -0
  330. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts +4 -0
  331. package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts.map +1 -0
  332. package/dist/cjs/test/unit/fixtures/psbtHexProof.js +9 -0
  333. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts +2 -0
  334. package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts.map +1 -0
  335. package/dist/cjs/test/unit/impl/bch/unit/bch.js +138 -0
  336. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts +2 -0
  337. package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts.map +1 -0
  338. package/dist/cjs/test/unit/impl/bcha/unit/index.js +47 -0
  339. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts +2 -0
  340. package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts.map +1 -0
  341. package/dist/cjs/test/unit/impl/bsv/unit/index.js +32 -0
  342. package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts +2 -0
  343. package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts.map +1 -0
  344. package/dist/cjs/test/unit/impl/btc/unit/btc.js +220 -0
  345. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts +4 -0
  346. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts.map +1 -0
  347. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.js +10 -0
  348. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts +2 -0
  349. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts.map +1 -0
  350. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.js +18 -0
  351. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts +2 -0
  352. package/dist/cjs/test/unit/impl/btg/unit/index.d.ts.map +1 -0
  353. package/dist/cjs/test/unit/impl/btg/unit/index.js +29 -0
  354. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts +2 -0
  355. package/dist/cjs/test/unit/impl/dash/unit/index.d.ts.map +1 -0
  356. package/dist/cjs/test/unit/impl/dash/unit/index.js +32 -0
  357. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts +2 -0
  358. package/dist/cjs/test/unit/impl/doge/unit/index.d.ts.map +1 -0
  359. package/dist/cjs/test/unit/impl/doge/unit/index.js +32 -0
  360. package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts +2 -0
  361. package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts.map +1 -0
  362. package/dist/cjs/test/unit/impl/ltc/unit/index.js +39 -0
  363. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts +2 -0
  364. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts.map +1 -0
  365. package/dist/cjs/test/unit/impl/zec/unit/index.js +29 -0
  366. package/dist/cjs/test/unit/keySignatures.d.ts +2 -0
  367. package/dist/cjs/test/unit/keySignatures.d.ts.map +1 -0
  368. package/dist/cjs/test/unit/keySignatures.js +54 -0
  369. package/dist/cjs/test/unit/keychains.d.ts +2 -0
  370. package/dist/cjs/test/unit/keychains.d.ts.map +1 -0
  371. package/dist/cjs/test/unit/keychains.js +49 -0
  372. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts +2 -0
  373. package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts.map +1 -0
  374. package/dist/cjs/test/unit/offlineVault/halfSigned.js +124 -0
  375. package/dist/cjs/test/unit/parseTransaction.d.ts +2 -0
  376. package/dist/cjs/test/unit/parseTransaction.d.ts.map +1 -0
  377. package/dist/cjs/test/unit/parseTransaction.js +125 -0
  378. package/dist/cjs/test/unit/prebuildAndSign.d.ts +6 -0
  379. package/dist/cjs/test/unit/prebuildAndSign.d.ts.map +1 -0
  380. package/dist/cjs/test/unit/prebuildAndSign.js +270 -0
  381. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts +2 -0
  382. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts.map +1 -0
  383. package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +286 -0
  384. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts +2 -0
  385. package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts.map +1 -0
  386. package/dist/cjs/test/unit/recovery/crossChainRecovery.js +306 -0
  387. package/dist/cjs/test/unit/recovery/mock.d.ts +30 -0
  388. package/dist/cjs/test/unit/recovery/mock.d.ts.map +1 -0
  389. package/dist/cjs/test/unit/recovery/mock.js +138 -0
  390. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts +2 -0
  391. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  392. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.js +30 -0
  393. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts +6 -0
  394. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts.map +1 -0
  395. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.js +17 -0
  396. package/dist/cjs/test/unit/transaction/descriptor/outputDifference.d.ts +2 -0
  397. package/dist/cjs/test/unit/transaction/descriptor/outputDifference.d.ts.map +1 -0
  398. package/dist/cjs/test/unit/transaction/descriptor/outputDifference.js +76 -0
  399. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts +2 -0
  400. package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts.map +1 -0
  401. package/dist/cjs/test/unit/transaction/descriptor/parse.js +135 -0
  402. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts +2 -0
  403. package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts.map +1 -0
  404. package/dist/cjs/test/unit/transaction/descriptor/sign.js +32 -0
  405. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts +2 -0
  406. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts.map +1 -0
  407. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.js +48 -0
  408. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts +2 -0
  409. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts.map +1 -0
  410. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.js +132 -0
  411. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.d.ts +2 -0
  412. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.d.ts.map +1 -0
  413. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.js +288 -0
  414. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts +2 -0
  415. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  416. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.js +59 -0
  417. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.d.ts +2 -0
  418. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.d.ts.map +1 -0
  419. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.js +157 -0
  420. package/dist/cjs/test/unit/transaction/fixedScript/util.d.ts +3 -0
  421. package/dist/cjs/test/unit/transaction/fixedScript/util.d.ts.map +1 -0
  422. package/dist/cjs/test/unit/transaction/fixedScript/util.js +47 -0
  423. package/dist/cjs/test/unit/transaction.d.ts +2 -0
  424. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  425. package/dist/cjs/test/unit/transaction.js +524 -0
  426. package/dist/cjs/test/unit/txFormat.d.ts +30 -0
  427. package/dist/cjs/test/unit/txFormat.d.ts.map +1 -0
  428. package/dist/cjs/test/unit/txFormat.js +174 -0
  429. package/dist/cjs/test/unit/util/fixtures.d.ts +14 -0
  430. package/dist/cjs/test/unit/util/fixtures.d.ts.map +1 -0
  431. package/dist/cjs/test/unit/util/fixtures.js +102 -0
  432. package/dist/cjs/test/unit/util/index.d.ts +7 -0
  433. package/dist/cjs/test/unit/util/index.d.ts.map +1 -0
  434. package/dist/cjs/test/unit/util/index.js +23 -0
  435. package/dist/cjs/test/unit/util/keychains.d.ts +26 -0
  436. package/dist/cjs/test/unit/util/keychains.d.ts.map +1 -0
  437. package/dist/cjs/test/unit/util/keychains.js +72 -0
  438. package/dist/cjs/test/unit/util/nockBitGo.d.ts +3 -0
  439. package/dist/cjs/test/unit/util/nockBitGo.d.ts.map +1 -0
  440. package/dist/cjs/test/unit/util/nockBitGo.js +11 -0
  441. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts +8 -0
  442. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts.map +1 -0
  443. package/dist/cjs/test/unit/util/nockIndexerAPI.js +56 -0
  444. package/dist/cjs/test/unit/util/transaction.d.ts +24 -0
  445. package/dist/cjs/test/unit/util/transaction.d.ts.map +1 -0
  446. package/dist/cjs/test/unit/util/transaction.js +107 -0
  447. package/dist/cjs/test/unit/util/unspents.d.ts +13 -0
  448. package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -0
  449. package/dist/cjs/test/unit/util/unspents.js +106 -0
  450. package/dist/cjs/test/unit/util/utxoCoins.d.ts +8 -0
  451. package/dist/cjs/test/unit/util/utxoCoins.d.ts.map +1 -0
  452. package/dist/cjs/test/unit/util/utxoCoins.js +95 -0
  453. package/dist/cjs/test/unit/util/wallet.d.ts +4 -0
  454. package/dist/cjs/test/unit/util/wallet.d.ts.map +1 -0
  455. package/dist/cjs/test/unit/util/wallet.js +9 -0
  456. package/dist/cjs/test/unit/verifyTransaction.d.ts +2 -0
  457. package/dist/cjs/test/unit/verifyTransaction.d.ts.map +1 -0
  458. package/dist/cjs/test/unit/verifyTransaction.js +327 -0
  459. package/dist/cjs/test/unit/wallet.d.ts +2 -0
  460. package/dist/cjs/test/unit/wallet.d.ts.map +1 -0
  461. package/dist/cjs/test/unit/wallet.js +248 -0
  462. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  463. package/dist/esm/abstractUtxoCoin.d.ts +435 -0
  464. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -0
  465. package/dist/esm/abstractUtxoCoin.js +616 -0
  466. package/dist/esm/address/fixedScript.d.ts +49 -0
  467. package/dist/esm/address/fixedScript.d.ts.map +1 -0
  468. package/dist/esm/address/fixedScript.js +114 -0
  469. package/dist/esm/address/index.d.ts +2 -0
  470. package/dist/esm/address/index.d.ts.map +1 -0
  471. package/dist/esm/address/index.js +2 -0
  472. package/dist/esm/config.d.ts +9 -0
  473. package/dist/esm/config.js +11 -0
  474. package/dist/esm/descriptor/NamedDescriptor.d.ts +20 -0
  475. package/dist/esm/descriptor/NamedDescriptor.d.ts.map +1 -0
  476. package/dist/esm/descriptor/NamedDescriptor.js +39 -0
  477. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
  478. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
  479. package/dist/esm/descriptor/assertDescriptorWalletAddress.js +27 -0
  480. package/dist/esm/descriptor/builder/builder.d.ts +13 -0
  481. package/dist/esm/descriptor/builder/builder.d.ts.map +1 -0
  482. package/dist/esm/descriptor/builder/builder.js +34 -0
  483. package/dist/esm/descriptor/builder/index.d.ts +3 -0
  484. package/dist/esm/descriptor/builder/index.d.ts.map +1 -0
  485. package/dist/esm/descriptor/builder/index.js +3 -0
  486. package/dist/esm/descriptor/builder/parse.d.ts +5 -0
  487. package/dist/esm/descriptor/builder/parse.d.ts.map +1 -0
  488. package/dist/esm/descriptor/builder/parse.js +112 -0
  489. package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
  490. package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
  491. package/dist/esm/descriptor/createWallet/createDescriptorWallet.js +37 -0
  492. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts +12 -0
  493. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  494. package/dist/esm/descriptor/createWallet/createDescriptors.js +29 -0
  495. package/dist/esm/descriptor/createWallet/index.d.ts +3 -0
  496. package/dist/esm/descriptor/createWallet/index.d.ts.map +1 -0
  497. package/dist/esm/descriptor/createWallet/index.js +3 -0
  498. package/dist/esm/descriptor/descriptorWallet.d.ts +19 -0
  499. package/dist/esm/descriptor/descriptorWallet.d.ts.map +1 -0
  500. package/dist/esm/descriptor/descriptorWallet.js +16 -0
  501. package/dist/esm/descriptor/index.d.ts +8 -0
  502. package/dist/esm/descriptor/index.d.ts.map +1 -0
  503. package/dist/esm/descriptor/index.js +7 -0
  504. package/dist/esm/descriptor/validatePolicy.d.ts +22 -0
  505. package/dist/esm/descriptor/validatePolicy.d.ts.map +1 -0
  506. package/dist/esm/descriptor/validatePolicy.js +80 -0
  507. package/dist/esm/impl/bch/bch.d.ts +20 -0
  508. package/dist/esm/impl/bch/bch.d.ts.map +1 -0
  509. package/dist/esm/impl/bch/bch.js +37 -0
  510. package/dist/esm/impl/bch/index.d.ts +3 -0
  511. package/dist/esm/impl/bch/index.d.ts.map +1 -0
  512. package/dist/esm/impl/bch/index.js +3 -0
  513. package/dist/esm/impl/bch/tbch.d.ts +10 -0
  514. package/dist/esm/impl/bch/tbch.d.ts.map +1 -0
  515. package/dist/esm/impl/bch/tbch.js +11 -0
  516. package/dist/esm/impl/bcha/bcha.d.ts +8 -0
  517. package/dist/esm/impl/bcha/bcha.d.ts.map +1 -0
  518. package/dist/esm/impl/bcha/bcha.js +11 -0
  519. package/dist/esm/impl/bcha/index.d.ts +3 -0
  520. package/dist/esm/impl/bcha/index.d.ts.map +1 -0
  521. package/dist/esm/impl/bcha/index.js +3 -0
  522. package/dist/esm/impl/bcha/tbcha.d.ts +10 -0
  523. package/dist/esm/impl/bcha/tbcha.d.ts.map +1 -0
  524. package/dist/esm/impl/bcha/tbcha.js +11 -0
  525. package/dist/esm/impl/bsv/bsv.d.ts +8 -0
  526. package/dist/esm/impl/bsv/bsv.d.ts.map +1 -0
  527. package/dist/esm/impl/bsv/bsv.js +11 -0
  528. package/dist/esm/impl/bsv/index.d.ts +3 -0
  529. package/dist/esm/impl/bsv/index.d.ts.map +1 -0
  530. package/dist/esm/impl/bsv/index.js +3 -0
  531. package/dist/esm/impl/bsv/tbsv.d.ts +10 -0
  532. package/dist/esm/impl/bsv/tbsv.d.ts.map +1 -0
  533. package/dist/esm/impl/bsv/tbsv.js +11 -0
  534. package/dist/esm/impl/btc/btc.d.ts +13 -0
  535. package/dist/esm/impl/btc/btc.d.ts.map +1 -0
  536. package/dist/esm/impl/btc/btc.js +18 -0
  537. package/dist/esm/impl/btc/index.d.ts +7 -0
  538. package/dist/esm/impl/btc/index.d.ts.map +1 -0
  539. package/dist/esm/impl/btc/index.js +7 -0
  540. package/dist/esm/impl/btc/inscriptionBuilder.d.ts +51 -0
  541. package/dist/esm/impl/btc/inscriptionBuilder.d.ts.map +1 -0
  542. package/dist/esm/impl/btc/inscriptionBuilder.js +143 -0
  543. package/dist/esm/impl/btc/tbtc.d.ts +10 -0
  544. package/dist/esm/impl/btc/tbtc.d.ts.map +1 -0
  545. package/dist/esm/impl/btc/tbtc.js +11 -0
  546. package/dist/esm/impl/btc/tbtc4.d.ts +10 -0
  547. package/dist/esm/impl/btc/tbtc4.d.ts.map +1 -0
  548. package/dist/esm/impl/btc/tbtc4.js +11 -0
  549. package/dist/esm/impl/btc/tbtcbgsig.d.ts +10 -0
  550. package/dist/esm/impl/btc/tbtcbgsig.d.ts.map +1 -0
  551. package/dist/esm/impl/btc/tbtcbgsig.js +11 -0
  552. package/dist/esm/impl/btc/tbtcsig.d.ts +10 -0
  553. package/dist/esm/impl/btc/tbtcsig.d.ts.map +1 -0
  554. package/dist/esm/impl/btc/tbtcsig.js +11 -0
  555. package/dist/esm/impl/btg/btg.d.ts +7 -0
  556. package/dist/esm/impl/btg/btg.d.ts.map +1 -0
  557. package/dist/esm/impl/btg/btg.js +11 -0
  558. package/dist/esm/impl/btg/index.d.ts +2 -0
  559. package/dist/esm/impl/btg/index.d.ts.map +1 -0
  560. package/dist/esm/impl/btg/index.js +2 -0
  561. package/dist/esm/impl/dash/dash.d.ts +7 -0
  562. package/dist/esm/impl/dash/dash.d.ts.map +1 -0
  563. package/dist/esm/impl/dash/dash.js +11 -0
  564. package/dist/esm/impl/dash/index.d.ts +3 -0
  565. package/dist/esm/impl/dash/index.d.ts.map +1 -0
  566. package/dist/esm/impl/dash/index.js +3 -0
  567. package/dist/esm/impl/dash/tdash.d.ts +10 -0
  568. package/dist/esm/impl/dash/tdash.d.ts.map +1 -0
  569. package/dist/esm/impl/dash/tdash.js +11 -0
  570. package/dist/esm/impl/doge/doge.d.ts +32 -0
  571. package/dist/esm/impl/doge/doge.d.ts.map +1 -0
  572. package/dist/esm/impl/doge/doge.js +75 -0
  573. package/dist/esm/impl/doge/index.d.ts +3 -0
  574. package/dist/esm/impl/doge/index.d.ts.map +1 -0
  575. package/dist/esm/impl/doge/index.js +3 -0
  576. package/dist/esm/impl/doge/tdoge.d.ts +10 -0
  577. package/dist/esm/impl/doge/tdoge.d.ts.map +1 -0
  578. package/dist/esm/impl/doge/tdoge.js +11 -0
  579. package/dist/esm/impl/index.d.ts +10 -0
  580. package/dist/esm/impl/index.d.ts.map +1 -0
  581. package/dist/esm/impl/index.js +10 -0
  582. package/dist/esm/impl/ltc/index.d.ts +3 -0
  583. package/dist/esm/impl/ltc/index.d.ts.map +1 -0
  584. package/dist/esm/impl/ltc/index.js +3 -0
  585. package/dist/esm/impl/ltc/ltc.d.ts +7 -0
  586. package/dist/esm/impl/ltc/ltc.d.ts.map +1 -0
  587. package/dist/esm/impl/ltc/ltc.js +15 -0
  588. package/dist/esm/impl/ltc/tltc.d.ts +7 -0
  589. package/dist/esm/impl/ltc/tltc.d.ts.map +1 -0
  590. package/dist/esm/impl/ltc/tltc.js +14 -0
  591. package/dist/esm/impl/zec/index.d.ts +3 -0
  592. package/dist/esm/impl/zec/index.d.ts.map +1 -0
  593. package/dist/esm/impl/zec/index.js +3 -0
  594. package/dist/esm/impl/zec/tzec.d.ts +7 -0
  595. package/dist/esm/impl/zec/tzec.d.ts.map +1 -0
  596. package/dist/esm/impl/zec/tzec.js +11 -0
  597. package/dist/esm/impl/zec/zec.d.ts +10 -0
  598. package/dist/esm/impl/zec/zec.d.ts.map +1 -0
  599. package/dist/esm/impl/zec/zec.js +11 -0
  600. package/dist/esm/index.d.ts +21 -0
  601. package/dist/esm/index.d.ts.map +1 -0
  602. package/dist/esm/index.js +21 -0
  603. package/dist/esm/keychains.d.ts +52 -0
  604. package/dist/esm/keychains.d.ts.map +1 -0
  605. package/dist/esm/keychains.js +92 -0
  606. package/dist/esm/names.d.ts +26 -0
  607. package/dist/esm/names.d.ts.map +1 -0
  608. package/dist/esm/names.js +171 -0
  609. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts +8 -0
  610. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
  611. package/dist/esm/offlineVault/OfflineVaultHalfSigned.js +23 -0
  612. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts +46 -0
  613. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
  614. package/dist/esm/offlineVault/OfflineVaultSignable.js +18 -0
  615. package/dist/esm/offlineVault/TransactionExplanation.d.ts +15 -0
  616. package/dist/esm/offlineVault/TransactionExplanation.d.ts.map +1 -0
  617. package/dist/esm/offlineVault/TransactionExplanation.js +13 -0
  618. package/dist/esm/offlineVault/descriptor/index.d.ts +2 -0
  619. package/dist/esm/offlineVault/descriptor/index.d.ts.map +1 -0
  620. package/dist/esm/offlineVault/descriptor/index.js +2 -0
  621. package/dist/esm/offlineVault/descriptor/transaction.d.ts +38 -0
  622. package/dist/esm/offlineVault/descriptor/transaction.d.ts.map +1 -0
  623. package/dist/esm/offlineVault/descriptor/transaction.js +41 -0
  624. package/dist/esm/offlineVault/index.d.ts +6 -0
  625. package/dist/esm/offlineVault/index.d.ts.map +1 -0
  626. package/dist/esm/offlineVault/index.js +4 -0
  627. package/dist/esm/recovery/RecoveryProvider.d.ts +22 -0
  628. package/dist/{src → esm}/recovery/RecoveryProvider.d.ts.map +1 -1
  629. package/dist/esm/recovery/RecoveryProvider.js +19 -0
  630. package/dist/esm/recovery/backupKeyRecovery.d.ts +88 -0
  631. package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -0
  632. package/dist/esm/recovery/backupKeyRecovery.js +336 -0
  633. package/dist/esm/recovery/baseApi.d.ts +24 -0
  634. package/dist/esm/recovery/baseApi.d.ts.map +1 -0
  635. package/dist/esm/recovery/baseApi.js +64 -0
  636. package/dist/esm/recovery/coingeckoApi.d.ts +6 -0
  637. package/dist/esm/recovery/coingeckoApi.d.ts.map +1 -0
  638. package/dist/esm/recovery/coingeckoApi.js +40 -0
  639. package/dist/esm/recovery/crossChainRecovery.d.ts +96 -0
  640. package/dist/{src → esm}/recovery/crossChainRecovery.d.ts.map +1 -1
  641. package/dist/esm/recovery/crossChainRecovery.js +368 -0
  642. package/dist/esm/recovery/index.d.ts +7 -0
  643. package/dist/{src → esm}/recovery/index.d.ts.map +1 -1
  644. package/dist/esm/recovery/index.js +7 -0
  645. package/dist/esm/recovery/mempoolApi.d.ts +7 -0
  646. package/dist/{src → esm}/recovery/mempoolApi.d.ts.map +1 -1
  647. package/dist/esm/recovery/mempoolApi.js +29 -0
  648. package/dist/esm/transaction/bip322.d.ts +27 -0
  649. package/dist/esm/transaction/bip322.d.ts.map +1 -0
  650. package/dist/esm/transaction/bip322.js +86 -0
  651. package/dist/esm/transaction/common/verifyPayGoAmount.d.ts +1 -0
  652. package/dist/esm/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
  653. package/dist/esm/transaction/common/verifyPayGoAmount.js +1 -0
  654. package/dist/esm/transaction/decode.d.ts +11 -0
  655. package/dist/esm/transaction/decode.d.ts.map +1 -0
  656. package/dist/esm/transaction/decode.js +43 -0
  657. package/dist/esm/transaction/descriptor/explainPsbt.d.ts +5 -0
  658. package/dist/esm/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  659. package/dist/esm/transaction/descriptor/explainPsbt.js +44 -0
  660. package/dist/esm/transaction/descriptor/index.d.ts +7 -0
  661. package/dist/esm/transaction/descriptor/index.d.ts.map +1 -0
  662. package/dist/esm/transaction/descriptor/index.js +6 -0
  663. package/dist/esm/transaction/descriptor/parse.d.ts +16 -0
  664. package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -0
  665. package/dist/esm/transaction/descriptor/parse.js +79 -0
  666. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts +14 -0
  667. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
  668. package/dist/esm/transaction/descriptor/parseToAmountType.js +55 -0
  669. package/dist/esm/transaction/descriptor/recipient.d.ts +5 -0
  670. package/dist/esm/transaction/descriptor/recipient.d.ts.map +1 -0
  671. package/dist/esm/transaction/descriptor/recipient.js +2 -0
  672. package/dist/esm/transaction/descriptor/signPsbt.d.ts +25 -0
  673. package/dist/esm/transaction/descriptor/signPsbt.d.ts.map +1 -0
  674. package/dist/esm/transaction/descriptor/signPsbt.js +38 -0
  675. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +36 -0
  676. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
  677. package/dist/esm/transaction/descriptor/verifyTransaction.js +66 -0
  678. package/dist/esm/transaction/explainTransaction.d.ts +18 -0
  679. package/dist/esm/transaction/explainTransaction.d.ts.map +1 -0
  680. package/dist/esm/transaction/explainTransaction.js +52 -0
  681. package/dist/esm/transaction/fetchInputs.d.ts +26 -0
  682. package/dist/esm/transaction/fetchInputs.d.ts.map +1 -0
  683. package/dist/esm/transaction/fetchInputs.js +72 -0
  684. package/dist/esm/transaction/fixedScript/SigningError.d.ts +24 -0
  685. package/dist/esm/transaction/fixedScript/SigningError.d.ts.map +1 -0
  686. package/dist/esm/transaction/fixedScript/SigningError.js +21 -0
  687. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts +11 -0
  688. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
  689. package/dist/esm/transaction/fixedScript/explainPsbtWasm.js +64 -0
  690. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +73 -0
  691. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  692. package/dist/esm/transaction/fixedScript/explainTransaction.js +307 -0
  693. package/dist/esm/transaction/fixedScript/index.d.ts +10 -0
  694. package/dist/esm/transaction/fixedScript/index.d.ts.map +1 -0
  695. package/dist/esm/transaction/fixedScript/index.js +9 -0
  696. package/dist/esm/transaction/fixedScript/musig2.d.ts +4 -0
  697. package/dist/esm/transaction/fixedScript/musig2.d.ts.map +1 -0
  698. package/dist/esm/transaction/fixedScript/musig2.js +2 -0
  699. package/dist/esm/transaction/fixedScript/parseOutput.d.ts +28 -0
  700. package/dist/esm/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  701. package/dist/esm/transaction/fixedScript/parseOutput.js +213 -0
  702. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts +8 -0
  703. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  704. package/dist/esm/transaction/fixedScript/parseTransaction.js +176 -0
  705. package/dist/esm/transaction/fixedScript/replayProtection.d.ts +7 -0
  706. package/dist/esm/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  707. package/dist/esm/transaction/fixedScript/replayProtection.js +39 -0
  708. package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts +30 -0
  709. package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -0
  710. package/dist/esm/transaction/fixedScript/signLegacyTransaction.js +112 -0
  711. package/dist/esm/transaction/fixedScript/signPsbt.d.ts +30 -0
  712. package/dist/esm/transaction/fixedScript/signPsbt.d.ts.map +1 -0
  713. package/dist/esm/transaction/fixedScript/signPsbt.js +134 -0
  714. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts +22 -0
  715. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
  716. package/dist/esm/transaction/fixedScript/signPsbtWasm.js +122 -0
  717. package/dist/esm/transaction/fixedScript/signTransaction.d.ts +17 -0
  718. package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -0
  719. package/dist/esm/transaction/fixedScript/signTransaction.js +44 -0
  720. package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts +21 -0
  721. package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  722. package/dist/esm/transaction/fixedScript/verifyTransaction.js +160 -0
  723. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts +9 -0
  724. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
  725. package/dist/esm/transaction/getPayGoVerificationPubkey.js +17 -0
  726. package/dist/esm/transaction/index.d.ts +8 -0
  727. package/dist/esm/transaction/index.d.ts.map +1 -0
  728. package/dist/esm/transaction/index.js +8 -0
  729. package/dist/esm/transaction/outputDifference.d.ts +40 -0
  730. package/dist/esm/transaction/outputDifference.d.ts.map +1 -0
  731. package/dist/esm/transaction/outputDifference.js +42 -0
  732. package/dist/esm/transaction/parseTransaction.d.ts +4 -0
  733. package/dist/esm/transaction/parseTransaction.d.ts.map +1 -0
  734. package/dist/esm/transaction/parseTransaction.js +12 -0
  735. package/dist/esm/transaction/recipient.d.ts +29 -0
  736. package/dist/esm/transaction/recipient.d.ts.map +1 -0
  737. package/dist/esm/transaction/recipient.js +48 -0
  738. package/dist/esm/transaction/signTransaction.d.ts +6 -0
  739. package/dist/esm/transaction/signTransaction.d.ts.map +1 -0
  740. package/dist/esm/transaction/signTransaction.js +66 -0
  741. package/dist/esm/transaction/types.d.ts +49 -0
  742. package/dist/esm/transaction/types.d.ts.map +1 -0
  743. package/dist/esm/transaction/types.js +4 -0
  744. package/dist/esm/transaction/verifyTransaction.d.ts +4 -0
  745. package/dist/esm/transaction/verifyTransaction.d.ts.map +1 -0
  746. package/dist/esm/transaction/verifyTransaction.js +14 -0
  747. package/dist/esm/verifyKey.d.ts +29 -0
  748. package/dist/esm/verifyKey.d.ts.map +1 -0
  749. package/dist/esm/verifyKey.js +123 -0
  750. package/dist/esm/wallet.d.ts +15 -0
  751. package/dist/esm/wallet.d.ts.map +1 -0
  752. package/dist/esm/wallet.js +5 -0
  753. package/package.json +48 -18
  754. package/.eslintignore +0 -5
  755. package/CHANGELOG.md +0 -253
  756. package/dist/src/abstractUtxoCoin.d.ts +0 -392
  757. package/dist/src/abstractUtxoCoin.d.ts.map +0 -1
  758. package/dist/src/abstractUtxoCoin.js +0 -931
  759. package/dist/src/config.js +0 -14
  760. package/dist/src/index.d.ts +0 -6
  761. package/dist/src/index.d.ts.map +0 -1
  762. package/dist/src/index.js +0 -18
  763. package/dist/src/parseOutput.d.ts +0 -22
  764. package/dist/src/parseOutput.d.ts.map +0 -1
  765. package/dist/src/parseOutput.js +0 -181
  766. package/dist/src/recovery/RecoveryProvider.js +0 -24
  767. package/dist/src/recovery/backupKeyRecovery.d.ts +0 -62
  768. package/dist/src/recovery/backupKeyRecovery.d.ts.map +0 -1
  769. package/dist/src/recovery/backupKeyRecovery.js +0 -293
  770. package/dist/src/recovery/baseApi.d.ts.map +0 -1
  771. package/dist/src/recovery/baseApi.js +0 -73
  772. package/dist/src/recovery/coingeckoApi.d.ts.map +0 -1
  773. package/dist/src/recovery/coingeckoApi.js +0 -47
  774. package/dist/src/recovery/crossChainRecovery.js +0 -294
  775. package/dist/src/recovery/mempoolApi.js +0 -33
  776. package/dist/src/recovery/smartbitApi.d.ts +0 -11
  777. package/dist/src/recovery/smartbitApi.d.ts.map +0 -1
  778. package/dist/src/recovery/smartbitApi.js +0 -36
  779. package/dist/src/replayProtection.d.ts +0 -4
  780. package/dist/src/replayProtection.d.ts.map +0 -1
  781. package/dist/src/replayProtection.js +0 -21
  782. package/dist/src/sign.d.ts +0 -31
  783. package/dist/src/sign.d.ts.map +0 -1
  784. package/dist/src/sign.js +0 -104
  785. package/dist/tsconfig.tsbuildinfo +0 -8179
  786. /package/dist/{src → cjs/src}/config.d.ts +0 -0
  787. /package/dist/{src → cjs/src}/recovery/mempoolApi.d.ts +0 -0
  788. /package/dist/{src → esm}/config.d.ts.map +0 -0
@@ -0,0 +1,215 @@
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
+ exports.parseTransaction = parseTransaction;
40
+ const assert_1 = __importDefault(require("assert"));
41
+ const lodash_1 = __importDefault(require("lodash"));
42
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
43
+ const keychains_1 = require("../../keychains");
44
+ const outputDifference_1 = require("../outputDifference");
45
+ const recipient_1 = require("../recipient");
46
+ const parseOutput_1 = require("./parseOutput");
47
+ async function parseRbfTransaction(coin, params) {
48
+ const { txParams, wallet } = params;
49
+ (0, assert_1.default)(txParams.rbfTxIds);
50
+ (0, assert_1.default)(txParams.rbfTxIds.length === 1);
51
+ const txToBeReplaced = await wallet.getTransaction({ txHash: txParams.rbfTxIds[0], includeRbf: true });
52
+ const recipients = txToBeReplaced.outputs.flatMap((output) => {
53
+ // For self-sends, the walletId will be the same as the wallet's id
54
+ if (output.wallet === wallet.id()) {
55
+ return [];
56
+ }
57
+ return [coin.toCanonicalTransactionRecipient(output)];
58
+ });
59
+ // Recurse into parseTransaction with the derived recipients and without rbfTxIds
60
+ return parseTransaction(coin, {
61
+ ...params,
62
+ txParams: {
63
+ ...txParams,
64
+ recipients,
65
+ rbfTxIds: undefined,
66
+ },
67
+ });
68
+ }
69
+ function toExpectedOutputs(coin, txParams) {
70
+ // verify that each recipient from txParams has their own output
71
+ const expectedOutputs = (txParams.recipients ?? []).flatMap((output) => {
72
+ if (output.address === undefined) {
73
+ if (output.amount.toString() !== '0') {
74
+ throw new Error(`Only zero amounts allowed for non-encodeable scriptPubkeys: ${output}`);
75
+ }
76
+ return [output];
77
+ }
78
+ return [{ ...output, address: coin.canonicalAddress(output.address) }];
79
+ });
80
+ if (txParams.allowExternalChangeAddress && txParams.changeAddress) {
81
+ // when an external change address is explicitly specified, count all outputs going towards that
82
+ // address in the expected outputs (regardless of the output amount)
83
+ expectedOutputs.push({ address: coin.canonicalAddress(txParams.changeAddress), amount: 'max' });
84
+ }
85
+ return expectedOutputs;
86
+ }
87
+ async function parseTransaction(coin, params) {
88
+ const { txParams, txPrebuild, wallet, verification = {}, reqId } = params;
89
+ // Branch off early for RBF transactions
90
+ if (txParams.rbfTxIds) {
91
+ return parseRbfTransaction(coin, params);
92
+ }
93
+ if (!lodash_1.default.isUndefined(verification.disableNetworking) && !lodash_1.default.isBoolean(verification.disableNetworking)) {
94
+ throw new Error('verification.disableNetworking must be a boolean');
95
+ }
96
+ const disableNetworking = verification.disableNetworking;
97
+ // obtain the keychains and key signatures
98
+ let keychains = verification.keychains;
99
+ if (!keychains) {
100
+ if (disableNetworking) {
101
+ throw new Error('cannot fetch keychains without networking');
102
+ }
103
+ keychains = await (0, keychains_1.fetchKeychains)(coin, wallet, reqId);
104
+ }
105
+ if (!keychains_1.UtxoNamedKeychains.is(keychains)) {
106
+ throw new Error('invalid keychains');
107
+ }
108
+ const keychainArray = (0, keychains_1.toKeychainTriple)(keychains);
109
+ if (lodash_1.default.isUndefined(txPrebuild.txHex)) {
110
+ throw new Error('missing required txPrebuild property txHex');
111
+ }
112
+ const expectedOutputs = toExpectedOutputs(coin, txParams);
113
+ // get the keychains from the custom change wallet if needed
114
+ let customChange;
115
+ const { customChangeWalletId = undefined } = wallet.coinSpecific() || {};
116
+ if (customChangeWalletId) {
117
+ // fetch keychains from custom change wallet for deriving addresses.
118
+ // These keychains should be signed and this should be verified in verifyTransaction
119
+ const customChangeKeySignatures = wallet._wallet.customChangeKeySignatures;
120
+ const customChangeWallet = await coin.wallets().get({ id: customChangeWalletId });
121
+ const customChangeKeys = await (0, keychains_1.fetchKeychains)(coin, customChangeWallet, reqId);
122
+ if (!customChangeKeys) {
123
+ throw new Error('failed to fetch keychains for custom change wallet');
124
+ }
125
+ if (customChangeKeys.user && customChangeKeys.backup && customChangeKeys.bitgo && customChangeWallet) {
126
+ const customChangeKeychains = [
127
+ customChangeKeys.user,
128
+ customChangeKeys.backup,
129
+ customChangeKeys.bitgo,
130
+ ];
131
+ customChange = {
132
+ keys: customChangeKeychains,
133
+ signatures: [customChangeKeySignatures.user, customChangeKeySignatures.backup, customChangeKeySignatures.bitgo],
134
+ };
135
+ }
136
+ }
137
+ // obtain all outputs
138
+ const explanation = await coin.explainTransaction({
139
+ txHex: txPrebuild.txHex,
140
+ txInfo: txPrebuild.txInfo,
141
+ pubs: keychainArray.map((k) => k.pub),
142
+ });
143
+ const allOutputs = [...explanation.outputs, ...explanation.changeOutputs];
144
+ /**
145
+ * Loop through all the outputs and classify each of them as either internal spends
146
+ * or external spends by setting the "external" property to true or false on the output object.
147
+ */
148
+ const allOutputDetails = await Promise.all(allOutputs.map((currentOutput) => {
149
+ return (0, parseOutput_1.parseOutput)({
150
+ currentOutput,
151
+ coin,
152
+ txPrebuild,
153
+ verification,
154
+ keychainArray: (0, keychains_1.toKeychainTriple)(keychains),
155
+ wallet,
156
+ txParams: {
157
+ recipients: expectedOutputs,
158
+ changeAddress: txParams.changeAddress,
159
+ },
160
+ customChange,
161
+ reqId,
162
+ });
163
+ }));
164
+ const needsCustomChangeKeySignatureVerification = allOutputDetails.some((output) => output?.needsCustomChangeKeySignatureVerification);
165
+ const changeOutputs = lodash_1.default.filter(allOutputDetails, { external: false });
166
+ function toComparableOutputsWithExternal(outputs) {
167
+ return outputs.map((output) => ({
168
+ script: (0, recipient_1.fromExtendedAddressFormatToScript)(output.address, coin.network),
169
+ value: output.amount === 'max' ? 'max' : BigInt(output.amount),
170
+ external: output.external,
171
+ }));
172
+ }
173
+ const missingOutputs = (0, outputDifference_1.outputDifference)(toComparableOutputsWithExternal(expectedOutputs), toComparableOutputsWithExternal(allOutputs));
174
+ const implicitOutputs = (0, outputDifference_1.outputDifference)(toComparableOutputsWithExternal(allOutputDetails), toComparableOutputsWithExternal(expectedOutputs));
175
+ const explicitOutputs = (0, outputDifference_1.outputDifference)(toComparableOutputsWithExternal(allOutputDetails), implicitOutputs);
176
+ // these are all the non-wallet outputs that had been originally explicitly specified in recipients
177
+ const explicitExternalOutputs = explicitOutputs.filter((output) => output.external);
178
+ // this is the sum of all the originally explicitly specified non-wallet output values
179
+ const explicitExternalSpendAmount = utxolib.bitgo.toTNumber(explicitExternalOutputs.reduce((sum, o) => sum + BigInt(o.value), BigInt(0)), coin.amountType);
180
+ /**
181
+ * The calculation of the implicit external spend amount pertains to verifying the pay-as-you-go-fee BitGo
182
+ * automatically applied to transactions sending money out of the wallet. The logic is fairly straightforward
183
+ * in that we compare the external spend amount that was specified explicitly by the user to the portion
184
+ * that was specified implicitly. To protect customers from people tampering with the transaction outputs, we
185
+ * define a threshold for the maximum percentage of the implicit external spend in relation to the explicit
186
+ * external spend.
187
+ *
188
+ * This has become obsolete with the intoduction of `utxocore.paygo.verifyPayGoAddressProof()`.
189
+ */
190
+ // make sure that all the extra addresses are change addresses
191
+ // get all the additional external outputs the server added and calculate their values
192
+ const implicitExternalOutputs = implicitOutputs.filter((output) => output.external);
193
+ const implicitExternalSpendAmount = utxolib.bitgo.toTNumber(implicitExternalOutputs.reduce((sum, o) => sum + BigInt(o.value), BigInt(0)), coin.amountType);
194
+ function toOutputs(outputs) {
195
+ return outputs.map((output) => ({
196
+ address: (0, recipient_1.toExtendedAddressFormat)(output.script, coin.network),
197
+ amount: output.value.toString(),
198
+ external: output.external,
199
+ }));
200
+ }
201
+ return {
202
+ keychains,
203
+ keySignatures: (0, keychains_1.getKeySignatures)(wallet) ?? {},
204
+ outputs: allOutputDetails,
205
+ missingOutputs: toOutputs(missingOutputs),
206
+ explicitExternalOutputs: toOutputs(explicitExternalOutputs),
207
+ implicitExternalOutputs: toOutputs(implicitExternalOutputs),
208
+ changeOutputs,
209
+ explicitExternalSpendAmount,
210
+ implicitExternalSpendAmount,
211
+ needsCustomChangeKeySignatureVerification,
212
+ customChange,
213
+ };
214
+ }
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9wYXJzZVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEVBLDRDQTBLQztBQXRQRCxvREFBNEI7QUFFNUIsb0RBQXVCO0FBRXZCLDhEQUFnRDtBQUloRCwrQ0FBdUg7QUFDdkgsMERBQXlFO0FBQ3pFLDRDQUEwRjtBQUcxRiwrQ0FBaUU7QUFNakUsS0FBSyxVQUFVLG1CQUFtQixDQUNoQyxJQUFzQixFQUN0QixNQUF3QztJQUV4QyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVwQyxJQUFBLGdCQUFNLEVBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLElBQUEsZ0JBQU0sRUFBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztJQUV2QyxNQUFNLGNBQWMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RyxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FDL0MsQ0FBQyxNQUFrRSxFQUFFLEVBQUU7UUFDckUsbUVBQW1FO1FBQ25FLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUNGLENBQUM7SUFFRixp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QUEyQjtRQUMzQiwyQkFBMkI7UUFDM0IseUNBQXlDO1FBQ3pDLFlBQVk7S0FDYixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IElUcmFuc2FjdGlvblJlY2lwaWVudCwgVHJpcGxlLCBWZXJpZmljYXRpb25PcHRpb25zLCBXYWxsZXQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdFV0eG9Db2luLCBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyB9IGZyb20gJy4uLy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuaW1wb3J0IHR5cGUgeyBGaXhlZFNjcmlwdFdhbGxldE91dHB1dCwgT3V0cHV0LCBQYXJzZWRUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGZldGNoS2V5Y2hhaW5zLCBnZXRLZXlTaWduYXR1cmVzLCB0b0tleWNoYWluVHJpcGxlLCBVdHhvS2V5Y2hhaW4sIFV0eG9OYW1lZEtleWNoYWlucyB9IGZyb20gJy4uLy4uL2tleWNoYWlucyc7XG5pbXBvcnQgeyBDb21wYXJhYmxlT3V0cHV0LCBvdXRwdXREaWZmZXJlbmNlIH0gZnJvbSAnLi4vb3V0cHV0RGlmZmVyZW5jZSc7XG5pbXBvcnQgeyBmcm9tRXh0ZW5kZWRBZGRyZXNzRm9ybWF0VG9TY3JpcHQsIHRvRXh0ZW5kZWRBZGRyZXNzRm9ybWF0IH0gZnJvbSAnLi4vcmVjaXBpZW50JztcblxuaW1wb3J0IHR5cGUgeyBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIH0gZnJvbSAnLi9leHBsYWluVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQ3VzdG9tQ2hhbmdlT3B0aW9ucywgcGFyc2VPdXRwdXQgfSBmcm9tICcuL3BhcnNlT3V0cHV0JztcblxuZXhwb3J0IHR5cGUgQ29tcGFyYWJsZU91dHB1dFdpdGhFeHRlcm5hbDxUVmFsdWU+ID0gQ29tcGFyYWJsZU91dHB1dDxUVmFsdWU+ICYge1xuICBleHRlcm5hbDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIHBhcnNlUmJmVHJhbnNhY3Rpb248VE51bWJlciBleHRlbmRzIGJpZ2ludCB8IG51bWJlcj4oXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnM8VE51bWJlcj5cbik6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb248VE51bWJlcj4+IHtcbiAgY29uc3QgeyB0eFBhcmFtcywgd2FsbGV0IH0gPSBwYXJhbXM7XG5cbiAgYXNzZXJ0KHR4UGFyYW1zLnJiZlR4SWRzKTtcbiAgYXNzZXJ0KHR4UGFyYW1zLnJiZlR4SWRzLmxlbmd0aCA9PT0gMSk7XG5cbiAgY29uc3QgdHhUb0JlUmVwbGFjZWQgPSBhd2FpdCB3YWxsZXQuZ2V0VHJhbnNhY3Rpb24oeyB0eEhhc2g6IHR4UGFyYW1zLnJiZlR4SWRzWzBdLCBpbmNsdWRlUmJmOiB0cnVlIH0pO1xuICBjb25zdCByZWNpcGllbnRzID0gdHhUb0JlUmVwbGFjZWQub3V0cHV0cy5mbGF0TWFwKFxuICAgIChvdXRwdXQ6IHsgdmFsdWVTdHJpbmc6IHN0cmluZzsgYWRkcmVzcz86IHN0cmluZzsgd2FsbGV0Pzogc3RyaW5nIH0pID0+IHtcbiAgICAgIC8vIEZvciBzZWxmLXNlbmRzLCB0aGUgd2FsbGV0SWQgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgd2FsbGV0J3MgaWRcbiAgICAgIGlmIChvdXRwdXQud2FsbGV0ID09PSB3YWxsZXQuaWQoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICByZXR1cm4gW2NvaW4udG9DYW5vbmljYWxUcmFuc2FjdGlvblJlY2lwaWVudChvdXRwdXQpXTtcbiAgICB9XG4gICk7XG5cbiAgLy8gUmVjdXJzZSBpbnRvIHBhcnNlVHJhbnNhY3Rpb24gd2l0aCB0aGUgZGVyaXZlZCByZWNpcGllbnRzIGFuZCB3aXRob3V0IHJiZlR4SWRzXG4gIHJldHVybiBwYXJzZVRyYW5zYWN0aW9uKGNvaW4sIHtcbiAgICAuLi5wYXJhbXMsXG4gICAgdHhQYXJhbXM6IHtcbiAgICAgIC4uLnR4UGFyYW1zLFxuICAgICAgcmVjaXBpZW50cyxcbiAgICAgIHJiZlR4SWRzOiB1bmRlZmluZWQsXG4gICAgfSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHRvRXhwZWN0ZWRPdXRwdXRzKFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICB0eFBhcmFtczoge1xuICAgIHJlY2lwaWVudHM/OiBJVHJhbnNhY3Rpb25SZWNpcGllbnRbXTtcbiAgICBhbGxvd0V4dGVybmFsQ2hhbmdlQWRkcmVzcz86IGJvb2xlYW47XG4gICAgY2hhbmdlQWRkcmVzcz86IHN0cmluZztcbiAgfVxuKTogT3V0cHV0W10ge1xuICAvLyB2ZXJpZnkgdGhhdCBlYWNoIHJlY2lwaWVudCBmcm9tIHR4UGFyYW1zIGhhcyB0aGVpciBvd24gb3V0cHV0XG4gIGNvbnN0IGV4cGVjdGVkT3V0cHV0cyA9ICh0eFBhcmFtcy5yZWNpcGllbnRzID8/IFtdKS5mbGF0TWFwKChvdXRwdXQpID0+IHtcbiAgICBpZiAob3V0cHV0LmFkZHJlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKG91dHB1dC5hbW91bnQudG9TdHJpbmcoKSAhPT0gJzAnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgT25seSB6ZXJvIGFtb3VudHMgYWxsb3dlZCBmb3Igbm9uLWVuY29kZWFibGUgc2NyaXB0UHVia2V5czogJHtvdXRwdXR9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW291dHB1dF07XG4gICAgfVxuICAgIHJldHVybiBbeyAuLi5vdXRwdXQsIGFkZHJlc3M6IGNvaW4uY2Fub25pY2FsQWRkcmVzcyhvdXRwdXQuYWRkcmVzcykgfV07XG4gIH0pO1xuICBpZiAodHhQYXJhbXMuYWxsb3dFeHRlcm5hbENoYW5nZUFkZHJlc3MgJiYgdHhQYXJhbXMuY2hhbmdlQWRkcmVzcykge1xuICAgIC8vIHdoZW4gYW4gZXh0ZXJuYWwgY2hhbmdlIGFkZHJlc3MgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQsIGNvdW50IGFsbCBvdXRwdXRzIGdvaW5nIHRvd2FyZHMgdGhhdFxuICAgIC8vIGFkZHJlc3MgaW4gdGhlIGV4cGVjdGVkIG91dHB1dHMgKHJlZ2FyZGxlc3Mgb2YgdGhlIG91dHB1dCBhbW91bnQpXG4gICAgZXhwZWN0ZWRPdXRwdXRzLnB1c2goeyBhZGRyZXNzOiBjb2luLmNhbm9uaWNhbEFkZHJlc3ModHhQYXJhbXMuY2hhbmdlQWRkcmVzcyksIGFtb3VudDogJ21heCcgfSk7XG4gIH1cbiAgcmV0dXJuIGV4cGVjdGVkT3V0cHV0cztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlVHJhbnNhY3Rpb248VE51bWJlciBleHRlbmRzIGJpZ2ludCB8IG51bWJlcj4oXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnM8VE51bWJlcj5cbik6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb248VE51bWJlcj4+IHtcbiAgY29uc3QgeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgd2FsbGV0LCB2ZXJpZmljYXRpb24gPSB7fSwgcmVxSWQgfSA9IHBhcmFtcztcblxuICAvLyBCcmFuY2ggb2ZmIGVhcmx5IGZvciBSQkYgdHJhbnNhY3Rpb25zXG4gIGlmICh0eFBhcmFtcy5yYmZUeElkcykge1xuICAgIHJldHVybiBwYXJzZVJiZlRyYW5zYWN0aW9uKGNvaW4sIHBhcmFtcyk7XG4gIH1cblxuICBpZiAoIV8uaXNVbmRlZmluZWQodmVyaWZpY2F0aW9uLmRpc2FibGVOZXR3b3JraW5nKSAmJiAhXy5pc0Jvb2xlYW4odmVyaWZpY2F0aW9uLmRpc2FibGVOZXR3b3JraW5nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndmVyaWZpY2F0aW9uLmRpc2FibGVOZXR3b3JraW5nIG11c3QgYmUgYSBib29sZWFuJyk7XG4gIH1cbiAgY29uc3QgZGlzYWJsZU5ldHdvcmtpbmcgPSB2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmc7XG5cbiAgLy8gb2J0YWluIHRoZSBrZXljaGFpbnMgYW5kIGtleSBzaWduYXR1cmVzXG4gIGxldCBrZXljaGFpbnM6IFV0eG9OYW1lZEtleWNoYWlucyB8IFZlcmlmaWNhdGlvbk9wdGlvbnNbJ2tleWNoYWlucyddIHwgdW5kZWZpbmVkID0gdmVyaWZpY2F0aW9uLmtleWNoYWlucztcbiAgaWYgKCFrZXljaGFpbnMpIHtcbiAgICBpZiAoZGlzYWJsZU5ldHdvcmtpbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IGZldGNoIGtleWNoYWlucyB3aXRob3V0IG5ldHdvcmtpbmcnKTtcbiAgICB9XG4gICAga2V5Y2hhaW5zID0gYXdhaXQgZmV0Y2hLZXljaGFpbnMoY29pbiwgd2FsbGV0LCByZXFJZCk7XG4gIH1cblxuICBpZiAoIVV0eG9OYW1lZEtleWNoYWlucy5pcyhrZXljaGFpbnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGtleWNoYWlucycpO1xuICB9XG5cbiAgY29uc3Qga2V5Y2hhaW5BcnJheTogVHJpcGxlPFV0eG9LZXljaGFpbj4gPSB0b0tleWNoYWluVHJpcGxlKGtleWNoYWlucyk7XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQodHhQcmVidWlsZC50eEhleCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgdHhQcmVidWlsZCBwcm9wZXJ0eSB0eEhleCcpO1xuICB9XG5cbiAgY29uc3QgZXhwZWN0ZWRPdXRwdXRzID0gdG9FeHBlY3RlZE91dHB1dHMoY29pbiwgdHhQYXJhbXMpO1xuXG4gIC8vIGdldCB0aGUga2V5Y2hhaW5zIGZyb20gdGhlIGN1c3RvbSBjaGFuZ2Ugd2FsbGV0IGlmIG5lZWRlZFxuICBsZXQgY3VzdG9tQ2hhbmdlOiBDdXN0b21DaGFuZ2VPcHRpb25zIHwgdW5kZWZpbmVkO1xuICBjb25zdCB7IGN1c3RvbUNoYW5nZVdhbGxldElkID0gdW5kZWZpbmVkIH0gPSB3YWxsZXQuY29pblNwZWNpZmljKCkgfHwge307XG4gIGlmIChjdXN0b21DaGFuZ2VXYWxsZXRJZCkge1xuICAgIC8vIGZldGNoIGtleWNoYWlucyBmcm9tIGN1c3RvbSBjaGFuZ2Ugd2FsbGV0IGZvciBkZXJpdmluZyBhZGRyZXNzZXMuXG4gICAgLy8gVGhlc2Uga2V5Y2hhaW5zIHNob3VsZCBiZSBzaWduZWQgYW5kIHRoaXMgc2hvdWxkIGJlIHZlcmlmaWVkIGluIHZlcmlmeVRyYW5zYWN0aW9uXG4gICAgY29uc3QgY3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlcyA9IHdhbGxldC5fd2FsbGV0LmN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXM7XG4gICAgY29uc3QgY3VzdG9tQ2hhbmdlV2FsbGV0OiBXYWxsZXQgPSBhd2FpdCBjb2luLndhbGxldHMoKS5nZXQoeyBpZDogY3VzdG9tQ2hhbmdlV2FsbGV0SWQgfSk7XG4gICAgY29uc3QgY3VzdG9tQ2hhbmdlS2V5cyA9IGF3YWl0IGZldGNoS2V5Y2hhaW5zKGNvaW4sIGN1c3RvbUNoYW5nZVdhbGxldCwgcmVxSWQpO1xuXG4gICAgaWYgKCFjdXN0b21DaGFuZ2VLZXlzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZhaWxlZCB0byBmZXRjaCBrZXljaGFpbnMgZm9yIGN1c3RvbSBjaGFuZ2Ugd2FsbGV0Jyk7XG4gICAgfVxuXG4gICAgaWYgKGN1c3RvbUNoYW5nZUtleXMudXNlciAmJiBjdXN0b21DaGFuZ2VLZXlzLmJhY2t1cCAmJiBjdXN0b21DaGFuZ2VLZXlzLmJpdGdvICYmIGN1c3RvbUNoYW5nZVdhbGxldCkge1xuICAgICAgY29uc3QgY3VzdG9tQ2hhbmdlS2V5Y2hhaW5zOiBUcmlwbGU8VXR4b0tleWNoYWluPiA9IFtcbiAgICAgICAgY3VzdG9tQ2hhbmdlS2V5cy51c2VyLFxuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzLmJhY2t1cCxcbiAgICAgICAgY3VzdG9tQ2hhbmdlS2V5cy5iaXRnbyxcbiAgICAgIF07XG5cbiAgICAgIGN1c3RvbUNoYW5nZSA9IHtcbiAgICAgICAga2V5czogY3VzdG9tQ2hhbmdlS2V5Y2hhaW5zLFxuICAgICAgICBzaWduYXR1cmVzOiBbY3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlcy51c2VyLCBjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzLmJhY2t1cCwgY3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlcy5iaXRnb10sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8vIG9idGFpbiBhbGwgb3V0cHV0c1xuICBjb25zdCBleHBsYW5hdGlvbjogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IGF3YWl0IGNvaW4uZXhwbGFpblRyYW5zYWN0aW9uPFROdW1iZXI+KHtcbiAgICB0eEhleDogdHhQcmVidWlsZC50eEhleCxcbiAgICB0eEluZm86IHR4UHJlYnVpbGQudHhJbmZvLFxuICAgIHB1YnM6IGtleWNoYWluQXJyYXkubWFwKChrKSA9PiBrLnB1YikgYXMgVHJpcGxlPHN0cmluZz4sXG4gIH0pO1xuXG4gIGNvbnN0IGFsbE91dHB1dHMgPSBbLi4uZXhwbGFuYXRpb24ub3V0cHV0cywgLi4uZXhwbGFuYXRpb24uY2hhbmdlT3V0cHV0c107XG5cbiAgLyoqXG4gICAqIExvb3AgdGhyb3VnaCBhbGwgdGhlIG91dHB1dHMgYW5kIGNsYXNzaWZ5IGVhY2ggb2YgdGhlbSBhcyBlaXRoZXIgaW50ZXJuYWwgc3BlbmRzXG4gICAqIG9yIGV4dGVybmFsIHNwZW5kcyBieSBzZXR0aW5nIHRoZSBcImV4dGVybmFsXCIgcHJvcGVydHkgdG8gdHJ1ZSBvciBmYWxzZSBvbiB0aGUgb3V0cHV0IG9iamVjdC5cbiAgICovXG4gIGNvbnN0IGFsbE91dHB1dERldGFpbHM6IE91dHB1dFtdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgYWxsT3V0cHV0cy5tYXAoKGN1cnJlbnRPdXRwdXQpID0+IHtcbiAgICAgIHJldHVybiBwYXJzZU91dHB1dCh7XG4gICAgICAgIGN1cnJlbnRPdXRwdXQsXG4gICAgICAgIGNvaW4sXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgICAga2V5Y2hhaW5BcnJheTogdG9LZXljaGFpblRyaXBsZShrZXljaGFpbnMpLFxuICAgICAgICB3YWxsZXQsXG4gICAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgICAgcmVjaXBpZW50czogZXhwZWN0ZWRPdXRwdXRzLFxuICAgICAgICAgIGNoYW5nZUFkZHJlc3M6IHR4UGFyYW1zLmNoYW5nZUFkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICAgIGN1c3RvbUNoYW5nZSxcbiAgICAgICAgcmVxSWQsXG4gICAgICB9KTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0IG5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uID0gYWxsT3V0cHV0RGV0YWlscy5zb21lKFxuICAgIChvdXRwdXQpID0+IChvdXRwdXQgYXMgRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQpPy5uZWVkc0N1c3RvbUNoYW5nZUtleVNpZ25hdHVyZVZlcmlmaWNhdGlvblxuICApO1xuXG4gIGNvbnN0IGNoYW5nZU91dHB1dHMgPSBfLmZpbHRlcihhbGxPdXRwdXREZXRhaWxzLCB7IGV4dGVybmFsOiBmYWxzZSB9KTtcblxuICBmdW5jdGlvbiB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKG91dHB1dHM6IE91dHB1dFtdKTogQ29tcGFyYWJsZU91dHB1dFdpdGhFeHRlcm5hbDxiaWdpbnQgfCAnbWF4Jz5bXSB7XG4gICAgcmV0dXJuIG91dHB1dHMubWFwKChvdXRwdXQpID0+ICh7XG4gICAgICBzY3JpcHQ6IGZyb21FeHRlbmRlZEFkZHJlc3NGb3JtYXRUb1NjcmlwdChvdXRwdXQuYWRkcmVzcywgY29pbi5uZXR3b3JrKSxcbiAgICAgIHZhbHVlOiBvdXRwdXQuYW1vdW50ID09PSAnbWF4JyA/ICdtYXgnIDogKEJpZ0ludChvdXRwdXQuYW1vdW50KSBhcyBiaWdpbnQgfCAnbWF4JyksXG4gICAgICBleHRlcm5hbDogb3V0cHV0LmV4dGVybmFsLFxuICAgIH0pKTtcbiAgfVxuXG4gIGNvbnN0IG1pc3NpbmdPdXRwdXRzID0gb3V0cHV0RGlmZmVyZW5jZShcbiAgICB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGV4cGVjdGVkT3V0cHV0cyksXG4gICAgdG9Db21wYXJhYmxlT3V0cHV0c1dpdGhFeHRlcm5hbChhbGxPdXRwdXRzKVxuICApO1xuXG4gIGNvbnN0IGltcGxpY2l0T3V0cHV0cyA9IG91dHB1dERpZmZlcmVuY2UoXG4gICAgdG9Db21wYXJhYmxlT3V0cHV0c1dpdGhFeHRlcm5hbChhbGxPdXRwdXREZXRhaWxzKSxcbiAgICB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGV4cGVjdGVkT3V0cHV0cylcbiAgKTtcbiAgY29uc3QgZXhwbGljaXRPdXRwdXRzID0gb3V0cHV0RGlmZmVyZW5jZSh0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGFsbE91dHB1dERldGFpbHMpLCBpbXBsaWNpdE91dHB1dHMpO1xuXG4gIC8vIHRoZXNlIGFyZSBhbGwgdGhlIG5vbi13YWxsZXQgb3V0cHV0cyB0aGF0IGhhZCBiZWVuIG9yaWdpbmFsbHkgZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gcmVjaXBpZW50c1xuICBjb25zdCBleHBsaWNpdEV4dGVybmFsT3V0cHV0cyA9IGV4cGxpY2l0T3V0cHV0cy5maWx0ZXIoKG91dHB1dCkgPT4gb3V0cHV0LmV4dGVybmFsKTtcbiAgLy8gdGhpcyBpcyB0aGUgc3VtIG9mIGFsbCB0aGUgb3JpZ2luYWxseSBleHBsaWNpdGx5IHNwZWNpZmllZCBub24td2FsbGV0IG91dHB1dCB2YWx1ZXNcbiAgY29uc3QgZXhwbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50ID0gdXR4b2xpYi5iaXRnby50b1ROdW1iZXI8VE51bWJlcj4oXG4gICAgZXhwbGljaXRFeHRlcm5hbE91dHB1dHMucmVkdWNlKChzdW06IGJpZ2ludCwgbykgPT4gc3VtICsgQmlnSW50KG8udmFsdWUpLCBCaWdJbnQoMCkpIGFzIGJpZ2ludCxcbiAgICBjb2luLmFtb3VudFR5cGVcbiAgKTtcblxuICAvKipcbiAgICogVGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBpbXBsaWNpdCBleHRlcm5hbCBzcGVuZCBhbW91bnQgcGVydGFpbnMgdG8gdmVyaWZ5aW5nIHRoZSBwYXktYXMteW91LWdvLWZlZSBCaXRHb1xuICAgKiBhdXRvbWF0aWNhbGx5IGFwcGxpZWQgdG8gdHJhbnNhY3Rpb25zIHNlbmRpbmcgbW9uZXkgb3V0IG9mIHRoZSB3YWxsZXQuIFRoZSBsb2dpYyBpcyBmYWlybHkgc3RyYWlnaHRmb3J3YXJkXG4gICAqIGluIHRoYXQgd2UgY29tcGFyZSB0aGUgZXh0ZXJuYWwgc3BlbmQgYW1vdW50IHRoYXQgd2FzIHNwZWNpZmllZCBleHBsaWNpdGx5IGJ5IHRoZSB1c2VyIHRvIHRoZSBwb3J0aW9uXG4gICAqIHRoYXQgd2FzIHNwZWNpZmllZCBpbXBsaWNpdGx5LiBUbyBwcm90ZWN0IGN1c3RvbWVycyBmcm9tIHBlb3BsZSB0YW1wZXJpbmcgd2l0aCB0aGUgdHJhbnNhY3Rpb24gb3V0cHV0cywgd2VcbiAgICogZGVmaW5lIGEgdGhyZXNob2xkIGZvciB0aGUgbWF4aW11bSBwZXJjZW50YWdlIG9mIHRoZSBpbXBsaWNpdCBleHRlcm5hbCBzcGVuZCBpbiByZWxhdGlvbiB0byB0aGUgZXhwbGljaXRcbiAgICogZXh0ZXJuYWwgc3BlbmQuXG4gICAqXG4gICAqIFRoaXMgaGFzIGJlY29tZSBvYnNvbGV0ZSB3aXRoIHRoZSBpbnRvZHVjdGlvbiBvZiBgdXR4b2NvcmUucGF5Z28udmVyaWZ5UGF5R29BZGRyZXNzUHJvb2YoKWAuXG4gICAqL1xuXG4gIC8vIG1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgZXh0cmEgYWRkcmVzc2VzIGFyZSBjaGFuZ2UgYWRkcmVzc2VzXG4gIC8vIGdldCBhbGwgdGhlIGFkZGl0aW9uYWwgZXh0ZXJuYWwgb3V0cHV0cyB0aGUgc2VydmVyIGFkZGVkIGFuZCBjYWxjdWxhdGUgdGhlaXIgdmFsdWVzXG4gIGNvbnN0IGltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzID0gaW1wbGljaXRPdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQuZXh0ZXJuYWwpO1xuICBjb25zdCBpbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQgPSB1dHhvbGliLmJpdGdvLnRvVE51bWJlcjxUTnVtYmVyPihcbiAgICBpbXBsaWNpdEV4dGVybmFsT3V0cHV0cy5yZWR1Y2UoKHN1bTogYmlnaW50LCBvKSA9PiBzdW0gKyBCaWdJbnQoby52YWx1ZSksIEJpZ0ludCgwKSkgYXMgYmlnaW50LFxuICAgIGNvaW4uYW1vdW50VHlwZVxuICApO1xuXG4gIGZ1bmN0aW9uIHRvT3V0cHV0cyhvdXRwdXRzOiBDb21wYXJhYmxlT3V0cHV0V2l0aEV4dGVybmFsPGJpZ2ludCB8ICdtYXgnPltdKTogT3V0cHV0W10ge1xuICAgIHJldHVybiBvdXRwdXRzLm1hcCgob3V0cHV0KSA9PiAoe1xuICAgICAgYWRkcmVzczogdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQob3V0cHV0LnNjcmlwdCwgY29pbi5uZXR3b3JrKSxcbiAgICAgIGFtb3VudDogb3V0cHV0LnZhbHVlLnRvU3RyaW5nKCksXG4gICAgICBleHRlcm5hbDogb3V0cHV0LmV4dGVybmFsLFxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAga2V5Y2hhaW5zLFxuICAgIGtleVNpZ25hdHVyZXM6IGdldEtleVNpZ25hdHVyZXMod2FsbGV0KSA/PyB7fSxcbiAgICBvdXRwdXRzOiBhbGxPdXRwdXREZXRhaWxzLFxuICAgIG1pc3NpbmdPdXRwdXRzOiB0b091dHB1dHMobWlzc2luZ091dHB1dHMpLFxuICAgIGV4cGxpY2l0RXh0ZXJuYWxPdXRwdXRzOiB0b091dHB1dHMoZXhwbGljaXRFeHRlcm5hbE91dHB1dHMpLFxuICAgIGltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzOiB0b091dHB1dHMoaW1wbGljaXRFeHRlcm5hbE91dHB1dHMpLFxuICAgIGNoYW5nZU91dHB1dHMsXG4gICAgZXhwbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50LFxuICAgIGltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCxcbiAgICBuZWVkc0N1c3RvbUNoYW5nZUtleVNpZ25hdHVyZVZlcmlmaWNhdGlvbixcbiAgICBjdXN0b21DaGFuZ2UsXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ export declare const pubkeyProd: Buffer<ArrayBuffer>;
3
+ export declare const pubkeyTestnet: Buffer<ArrayBuffer>;
4
+ export declare function getReplayProtectionPubkeys(network: utxolib.Network): Buffer[];
5
+ export declare function getReplayProtectionAddresses(network: utxolib.Network, format?: 'default' | 'cashaddr'): string[];
6
+ export declare function isReplayProtectionUnspent<TNumber extends number | bigint>(u: utxolib.bitgo.Unspent<TNumber>, network: utxolib.Network): boolean;
7
+ //# sourceMappingURL=replayProtection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replayProtection.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/replayProtection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAGhD,eAAO,MAAM,UAAU,qBAA2F,CAAC;AAEnH,eAAO,MAAM,aAAa,qBAA2F,CAAC;AAEtH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,EAAE,CAU7E;AAWD,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,MAAM,GAAE,SAAS,GAAG,UAAsB,GACzC,MAAM,EAAE,CAWV;AAED,wBAAgB,yBAAyB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACvE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EACjC,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,OAAO,CAET"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.pubkeyTestnet = exports.pubkeyProd = void 0;
37
+ exports.getReplayProtectionPubkeys = getReplayProtectionPubkeys;
38
+ exports.getReplayProtectionAddresses = getReplayProtectionAddresses;
39
+ exports.isReplayProtectionUnspent = isReplayProtectionUnspent;
40
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
41
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
42
+ exports.pubkeyProd = Buffer.from('0255b9f71ac2c78fffd83e3e37b9e17ae70d5437b7f56d0ed2e93b7de08015aa59', 'hex');
43
+ exports.pubkeyTestnet = Buffer.from('0219da48412c2268865fe8c126327d1b12eee350a3b69eb09e3323cc9a11828945', 'hex');
44
+ function getReplayProtectionPubkeys(network) {
45
+ switch (network) {
46
+ case utxolib.networks.bitcoincash:
47
+ case utxolib.networks.bitcoinsv:
48
+ return [exports.pubkeyProd];
49
+ case utxolib.networks.bitcoinsvTestnet:
50
+ case utxolib.networks.bitcoincashTestnet:
51
+ return [exports.pubkeyTestnet];
52
+ }
53
+ return [];
54
+ }
55
+ // sh(pk(pubkeyProd))
56
+ // 33p1q7mTGyeM5UnZERGiMcVUkY12SCsatA
57
+ // bitcoincash:pqt5x9w0m6z0f3znjkkx79wl3l7ywrszesemp8xgpf
58
+ const replayProtectionScriptsProd = [Buffer.from('a914174315cfde84f4c45395ac6f15df8ffc470e02cc87', 'hex')];
59
+ // sh(pk(pubkeyTestnet))
60
+ // 2MuMnPoSDgWEpNWH28X2nLtYMXQJCyT61eY
61
+ // bchtest:pqtjmnzwqffkrk2349g3cecfwwjwxusvnq87n07cal
62
+ const replayProtectionScriptsTestnet = [Buffer.from('a914172dcc4e025361d951a9511c670973a4e3720c9887', 'hex')];
63
+ function getReplayProtectionAddresses(network, format = 'default') {
64
+ switch (network) {
65
+ case utxolib.networks.bitcoincash:
66
+ case utxolib.networks.bitcoinsv:
67
+ return replayProtectionScriptsProd.map((script) => wasm_utxo_1.utxolibCompat.fromOutputScript(script, network, format));
68
+ case utxolib.networks.bitcoinsvTestnet:
69
+ case utxolib.networks.bitcoincashTestnet:
70
+ return replayProtectionScriptsTestnet.map((script) => wasm_utxo_1.utxolibCompat.fromOutputScript(script, network, format));
71
+ default:
72
+ return [];
73
+ }
74
+ }
75
+ function isReplayProtectionUnspent(u, network) {
76
+ return getReplayProtectionAddresses(network).includes(u.address);
77
+ }
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGF5UHJvdGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9yZXBsYXlQcm90ZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLGdFQVVDO0FBV0Qsb0VBY0M7QUFFRCw4REFLQztBQWpERCw4REFBZ0Q7QUFDaEQsZ0RBQWlEO0FBRXBDLFFBQUEsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0VBQW9FLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFdEcsUUFBQSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxvRUFBb0UsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUV0SCxTQUFnQiwwQkFBMEIsQ0FBQyxPQUF3QjtJQUNqRSxRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDbEMsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVM7WUFDN0IsT0FBTyxDQUFDLGtCQUFVLENBQUMsQ0FBQztRQUN0QixLQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7UUFDdkMsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQjtZQUN0QyxPQUFPLENBQUMscUJBQWEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxxQkFBcUI7QUFDckIscUNBQXFDO0FBQ3JDLHlEQUF5RDtBQUN6RCxNQUFNLDJCQUEyQixHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnREFBZ0QsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNHLHdCQUF3QjtBQUN4QixzQ0FBc0M7QUFDdEMscURBQXFEO0FBQ3JELE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFOUcsU0FBZ0IsNEJBQTRCLENBQzFDLE9BQXdCLEVBQ3hCLFNBQWlDLFNBQVM7SUFFMUMsUUFBUSxPQUFPLEVBQUUsQ0FBQztRQUNoQixLQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ2xDLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO1lBQzdCLE9BQU8sMkJBQTJCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyx5QkFBYSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM5RyxLQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7UUFDdkMsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQjtZQUN0QyxPQUFPLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMseUJBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDakg7WUFDRSxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IseUJBQXlCLENBQ3ZDLENBQWlDLEVBQ2pDLE9BQXdCO0lBRXhCLE9BQU8sNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyB1dHhvbGliQ29tcGF0IH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbmV4cG9ydCBjb25zdCBwdWJrZXlQcm9kID0gQnVmZmVyLmZyb20oJzAyNTViOWY3MWFjMmM3OGZmZmQ4M2UzZTM3YjllMTdhZTcwZDU0MzdiN2Y1NmQwZWQyZTkzYjdkZTA4MDE1YWE1OScsICdoZXgnKTtcblxuZXhwb3J0IGNvbnN0IHB1YmtleVRlc3RuZXQgPSBCdWZmZXIuZnJvbSgnMDIxOWRhNDg0MTJjMjI2ODg2NWZlOGMxMjYzMjdkMWIxMmVlZTM1MGEzYjY5ZWIwOWUzMzIzY2M5YTExODI4OTQ1JywgJ2hleCcpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVwbGF5UHJvdGVjdGlvblB1YmtleXMobmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogQnVmZmVyW10ge1xuICBzd2l0Y2ggKG5ldHdvcmspIHtcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5zdjpcbiAgICAgIHJldHVybiBbcHVia2V5UHJvZF07XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5zdlRlc3RuZXQ6XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5jYXNoVGVzdG5ldDpcbiAgICAgIHJldHVybiBbcHVia2V5VGVzdG5ldF07XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG4vLyBzaChwayhwdWJrZXlQcm9kKSlcbi8vIDMzcDFxN21UR3llTTVVblpFUkdpTWNWVWtZMTJTQ3NhdEFcbi8vIGJpdGNvaW5jYXNoOnBxdDV4OXcwbTZ6MGYzem5qa2t4Nzl3bDNsN3l3cnN6ZXNlbXA4eGdwZlxuY29uc3QgcmVwbGF5UHJvdGVjdGlvblNjcmlwdHNQcm9kID0gW0J1ZmZlci5mcm9tKCdhOTE0MTc0MzE1Y2ZkZTg0ZjRjNDUzOTVhYzZmMTVkZjhmZmM0NzBlMDJjYzg3JywgJ2hleCcpXTtcbi8vIHNoKHBrKHB1YmtleVRlc3RuZXQpKVxuLy8gMk11TW5Qb1NEZ1dFcE5XSDI4WDJuTHRZTVhRSkN5VDYxZVlcbi8vIGJjaHRlc3Q6cHF0am1uendxZmZrcmsyMzQ5ZzNjZWNmd3dqd3h1c3ZucTg3bjA3Y2FsXG5jb25zdCByZXBsYXlQcm90ZWN0aW9uU2NyaXB0c1Rlc3RuZXQgPSBbQnVmZmVyLmZyb20oJ2E5MTQxNzJkY2M0ZTAyNTM2MWQ5NTFhOTUxMWM2NzA5NzNhNGUzNzIwYzk4ODcnLCAnaGV4JyldO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyhcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrLFxuICBmb3JtYXQ6ICdkZWZhdWx0JyB8ICdjYXNoYWRkcicgPSAnZGVmYXVsdCdcbik6IHN0cmluZ1tdIHtcbiAgc3dpdGNoIChuZXR3b3JrKSB7XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgICByZXR1cm4gcmVwbGF5UHJvdGVjdGlvblNjcmlwdHNQcm9kLm1hcCgoc2NyaXB0KSA9PiB1dHhvbGliQ29tcGF0LmZyb21PdXRwdXRTY3JpcHQoc2NyaXB0LCBuZXR3b3JrLCBmb3JtYXQpKTtcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MuYml0Y29pbnN2VGVzdG5ldDpcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MuYml0Y29pbmNhc2hUZXN0bmV0OlxuICAgICAgcmV0dXJuIHJlcGxheVByb3RlY3Rpb25TY3JpcHRzVGVzdG5ldC5tYXAoKHNjcmlwdCkgPT4gdXR4b2xpYkNvbXBhdC5mcm9tT3V0cHV0U2NyaXB0KHNjcmlwdCwgbmV0d29yaywgZm9ybWF0KSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZXBsYXlQcm90ZWN0aW9uVW5zcGVudDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdTogdXR4b2xpYi5iaXRnby5VbnNwZW50PFROdW1iZXI+LFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmtcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0UmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyhuZXR3b3JrKS5pbmNsdWRlcyh1LmFkZHJlc3MpO1xufVxuIl19
@@ -0,0 +1,30 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import { BIP32Interface } from '@bitgo-beta/secp256k1';
3
+ type Unspent<TNumber extends number | bigint = number> = utxolib.bitgo.Unspent<TNumber>;
4
+ type RootWalletKeys = utxolib.bitgo.RootWalletKeys;
5
+ /**
6
+ * Sign all inputs of a wallet transaction and verify signatures after signing.
7
+ * Collects and logs signing errors and verification errors, throws error in the end if any of them
8
+ * failed.
9
+ *
10
+ * @param transaction - wallet transaction (builder) to be signed
11
+ * @param unspents - transaction unspents
12
+ * @param walletSigner - signing parameters
13
+ * @param isLastSignature - Returns full-signed transaction when true. Builds half-signed when false.
14
+ * @param replayProtectionAddresses - List of replay protection addresses to skip signing
15
+ */
16
+ export declare function signAndVerifyWalletTransaction<TNumber extends number | bigint>(transaction: utxolib.bitgo.UtxoTransaction<TNumber> | utxolib.bitgo.UtxoTransactionBuilder<TNumber>, unspents: Unspent<TNumber>[], walletSigner: utxolib.bitgo.WalletUnspentSigner<RootWalletKeys>, { isLastSignature, replayProtectionAddresses, }: {
17
+ isLastSignature: boolean;
18
+ replayProtectionAddresses?: string[];
19
+ }): utxolib.bitgo.UtxoTransaction<TNumber>;
20
+ export declare function signLegacyTransaction<TNumber extends number | bigint>(tx: utxolib.bitgo.UtxoTransaction<TNumber>, signerKeychain: BIP32Interface | undefined, params: {
21
+ isLastSignature: boolean;
22
+ signingStep: 'signerNonce' | 'cosignerNonce' | 'signerSignature' | undefined;
23
+ txInfo: {
24
+ unspents?: utxolib.bitgo.Unspent<TNumber>[];
25
+ } | undefined;
26
+ pubs: string[] | undefined;
27
+ cosignerPub: string | undefined;
28
+ }): utxolib.bitgo.UtxoTransaction<TNumber>;
29
+ export {};
30
+ //# sourceMappingURL=signLegacyTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signLegacyTransaction.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/signLegacyTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAS,MAAM,uBAAuB,CAAC;AAY9D,KAAK,OAAO,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAExF,KAAK,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;AAEnD;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC5E,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,OAAO,CAAC,EACnG,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAC5B,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAC/D,EACE,eAAe,EACf,yBAAyB,GAC1B,EAAE;IACD,eAAe,EAAE,OAAO,CAAC;IACzB,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;CACtC,GACA,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAwExC;AAED,wBAAgB,qBAAqB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACnE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,EAC1C,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,MAAM,EAAE;IACN,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,aAAa,GAAG,eAAe,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAC7E,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IACpE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,GACA,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CA4BxC"}
@@ -0,0 +1,152 @@
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
+ exports.signAndVerifyWalletTransaction = signAndVerifyWalletTransaction;
40
+ exports.signLegacyTransaction = signLegacyTransaction;
41
+ const assert_1 = __importDefault(require("assert"));
42
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
43
+ const secp256k1_1 = require("@bitgo-beta/secp256k1");
44
+ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
45
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
46
+ const debug_1 = __importDefault(require("debug"));
47
+ const replayProtection_1 = require("./replayProtection");
48
+ const SigningError_1 = require("./SigningError");
49
+ const debug = (0, debug_1.default)('bitgo:v2:utxo');
50
+ const { isWalletUnspent, signInputWithUnspent, toOutput } = utxolib.bitgo;
51
+ /**
52
+ * Sign all inputs of a wallet transaction and verify signatures after signing.
53
+ * Collects and logs signing errors and verification errors, throws error in the end if any of them
54
+ * failed.
55
+ *
56
+ * @param transaction - wallet transaction (builder) to be signed
57
+ * @param unspents - transaction unspents
58
+ * @param walletSigner - signing parameters
59
+ * @param isLastSignature - Returns full-signed transaction when true. Builds half-signed when false.
60
+ * @param replayProtectionAddresses - List of replay protection addresses to skip signing
61
+ */
62
+ function signAndVerifyWalletTransaction(transaction, unspents, walletSigner, { isLastSignature, replayProtectionAddresses, }) {
63
+ const network = transaction.network;
64
+ if (replayProtectionAddresses === undefined) {
65
+ replayProtectionAddresses = (0, replayProtection_1.getReplayProtectionAddresses)(network);
66
+ }
67
+ const prevOutputs = unspents.map((u) => toOutput(u, network));
68
+ let txBuilder;
69
+ if (transaction instanceof utxolib.bitgo.UtxoTransaction) {
70
+ txBuilder = utxolib.bitgo.createTransactionBuilderFromTransaction(transaction, prevOutputs);
71
+ if (transaction.ins.length !== unspents.length) {
72
+ throw new Error(`transaction inputs must match unspents`);
73
+ }
74
+ }
75
+ else if (transaction instanceof utxolib.bitgo.UtxoTransactionBuilder) {
76
+ txBuilder = transaction;
77
+ }
78
+ else {
79
+ throw new Error(`must pass UtxoTransaction or UtxoTransactionBuilder`);
80
+ }
81
+ const signErrors = unspents
82
+ .map((unspent, inputIndex) => {
83
+ if (replayProtectionAddresses.includes(unspent.address)) {
84
+ debug('Skipping signature for input %d of %d (RP input?)', inputIndex + 1, unspents.length);
85
+ return;
86
+ }
87
+ if (!isWalletUnspent(unspent)) {
88
+ return SigningError_1.InputSigningError.expectedWalletUnspent(inputIndex, null, unspent);
89
+ }
90
+ try {
91
+ signInputWithUnspent(txBuilder, inputIndex, unspent, walletSigner);
92
+ debug('Successfully signed input %d of %d', inputIndex + 1, unspents.length);
93
+ }
94
+ catch (e) {
95
+ return new SigningError_1.InputSigningError(inputIndex, null, unspent, e);
96
+ }
97
+ })
98
+ .filter((e) => e !== undefined);
99
+ const signedTransaction = isLastSignature ? txBuilder.build() : txBuilder.buildIncomplete();
100
+ const verifyErrors = signedTransaction.ins
101
+ .map((input, inputIndex) => {
102
+ const unspent = unspents[inputIndex];
103
+ if (replayProtectionAddresses.includes(unspent.address)) {
104
+ debug('Skipping input signature %d of %d (unspent from replay protection address which is platform signed only)', inputIndex + 1, unspents.length);
105
+ return;
106
+ }
107
+ if (!isWalletUnspent(unspent)) {
108
+ return SigningError_1.InputSigningError.expectedWalletUnspent(inputIndex, null, unspent);
109
+ }
110
+ try {
111
+ const publicKey = walletSigner.deriveForChainAndIndex(unspent.chain, unspent.index).signer.publicKey;
112
+ if (!utxolib.bitgo.verifySignatureWithPublicKey(signedTransaction, inputIndex, prevOutputs, publicKey)) {
113
+ return new SigningError_1.InputSigningError(inputIndex, null, unspent, new Error(`invalid signature`));
114
+ }
115
+ }
116
+ catch (e) {
117
+ debug('Invalid signature');
118
+ return new SigningError_1.InputSigningError(inputIndex, null, unspent, e);
119
+ }
120
+ })
121
+ .filter((e) => e !== undefined);
122
+ if (signErrors.length || verifyErrors.length) {
123
+ throw new SigningError_1.TransactionSigningError(signErrors, verifyErrors);
124
+ }
125
+ return signedTransaction;
126
+ }
127
+ function signLegacyTransaction(tx, signerKeychain, params) {
128
+ switch (params.signingStep) {
129
+ case 'signerNonce':
130
+ case 'cosignerNonce':
131
+ /**
132
+ * In certain cases, the caller of this method may not know whether the txHex contains a psbt with taproot key path spend input(s).
133
+ * Instead of throwing error, no-op and return the txHex. So that the caller can call this method in the same sequence.
134
+ */
135
+ return tx;
136
+ }
137
+ if (tx.ins.length !== params.txInfo?.unspents?.length) {
138
+ throw new Error('length of unspents array should equal to the number of transaction inputs');
139
+ }
140
+ if (!params.pubs || !(0, sdk_core_1.isTriple)(params.pubs)) {
141
+ throw new Error(`must provide xpub array`);
142
+ }
143
+ const keychains = params.pubs.map((pub) => secp256k1_1.bip32.fromBase58(pub));
144
+ const cosignerPub = params.cosignerPub ?? params.pubs[2];
145
+ const cosignerKeychain = secp256k1_1.bip32.fromBase58(cosignerPub);
146
+ (0, assert_1.default)(signerKeychain);
147
+ const walletSigner = new utxo_lib_1.bitgo.WalletUnspentSigner(keychains, signerKeychain, cosignerKeychain);
148
+ return signAndVerifyWalletTransaction(tx, params.txInfo.unspents, walletSigner, {
149
+ isLastSignature: params.isLastSignature,
150
+ });
151
+ }
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbkxlZ2FjeVRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L3NpZ25MZWdhY3lUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThCQSx3RUFtRkM7QUFFRCxzREFzQ0M7QUF6SkQsb0RBQTRCO0FBRTVCLDhEQUFnRDtBQUNoRCxxREFBOEQ7QUFDOUQsbURBQTZDO0FBQzdDLG1EQUF3RDtBQUN4RCxrREFBNkI7QUFFN0IseURBQWtFO0FBQ2xFLGlEQUE0RTtBQUU1RSxNQUFNLEtBQUssR0FBRyxJQUFBLGVBQVEsRUFBQyxlQUFlLENBQUMsQ0FBQztBQUV4QyxNQUFNLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFNMUU7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLDhCQUE4QixDQUM1QyxXQUFtRyxFQUNuRyxRQUE0QixFQUM1QixZQUErRCxFQUMvRCxFQUNFLGVBQWUsRUFDZix5QkFBeUIsR0FJMUI7SUFFRCxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBMEIsQ0FBQztJQUN2RCxJQUFJLHlCQUF5QixLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzVDLHlCQUF5QixHQUFHLElBQUEsK0NBQTRCLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUU5RCxJQUFJLFNBQXdELENBQUM7SUFDN0QsSUFBSSxXQUFXLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6RCxTQUFT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QUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGlCQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUEyQixDQUFDO0lBQzVGLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxNQUFNLGdCQUFnQixHQUFHLGlCQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXZELElBQUEsZ0JBQU0sRUFBQyxjQUFjLENBQUMsQ0FBQztJQUN2QixNQUFNLFlBQVksR0FBRyxJQUFJLGdCQUFLLENBQUMsbUJBQW1CLENBQWlCLFNBQVMsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUNoSCxPQUFPLDhCQUE4QixDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUU7UUFDOUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQTJDLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSwgYmlwMzIgfSBmcm9tICdAYml0Z28tYmV0YS9zZWNwMjU2azEnO1xuaW1wb3J0IHsgYml0Z28gfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBpc1RyaXBsZSwgVHJpcGxlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IGRlYnVnTGliIGZyb20gJ2RlYnVnJztcblxuaW1wb3J0IHsgZ2V0UmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyB9IGZyb20gJy4vcmVwbGF5UHJvdGVjdGlvbic7XG5pbXBvcnQgeyBJbnB1dFNpZ25pbmdFcnJvciwgVHJhbnNhY3Rpb25TaWduaW5nRXJyb3IgfSBmcm9tICcuL1NpZ25pbmdFcnJvcic7XG5cbmNvbnN0IGRlYnVnID0gZGVidWdMaWIoJ2JpdGdvOnYyOnV0eG8nKTtcblxuY29uc3QgeyBpc1dhbGxldFVuc3BlbnQsIHNpZ25JbnB1dFdpdGhVbnNwZW50LCB0b091dHB1dCB9ID0gdXR4b2xpYi5iaXRnbztcblxudHlwZSBVbnNwZW50PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+ID0gdXR4b2xpYi5iaXRnby5VbnNwZW50PFROdW1iZXI+O1xuXG50eXBlIFJvb3RXYWxsZXRLZXlzID0gdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cztcblxuLyoqXG4gKiBTaWduIGFsbCBpbnB1dHMgb2YgYSB3YWxsZXQgdHJhbnNhY3Rpb24gYW5kIHZlcmlmeSBzaWduYXR1cmVzIGFmdGVyIHNpZ25pbmcuXG4gKiBDb2xsZWN0cyBhbmQgbG9ncyBzaWduaW5nIGVycm9ycyBhbmQgdmVyaWZpY2F0aW9uIGVycm9ycywgdGhyb3dzIGVycm9yIGluIHRoZSBlbmQgaWYgYW55IG9mIHRoZW1cbiAqIGZhaWxlZC5cbiAqXG4gKiBAcGFyYW0gdHJhbnNhY3Rpb24gLSB3YWxsZXQgdHJhbnNhY3Rpb24gKGJ1aWxkZXIpIHRvIGJlIHNpZ25lZFxuICogQHBhcmFtIHVuc3BlbnRzIC0gdHJhbnNhY3Rpb24gdW5zcGVudHNcbiAqIEBwYXJhbSB3YWxsZXRTaWduZXIgLSBzaWduaW5nIHBhcmFtZXRlcnNcbiAqIEBwYXJhbSBpc0xhc3RTaWduYXR1cmUgLSBSZXR1cm5zIGZ1bGwtc2lnbmVkIHRyYW5zYWN0aW9uIHdoZW4gdHJ1ZS4gQnVpbGRzIGhhbGYtc2lnbmVkIHdoZW4gZmFsc2UuXG4gKiBAcGFyYW0gcmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyAtIExpc3Qgb2YgcmVwbGF5IHByb3RlY3Rpb24gYWRkcmVzc2VzIHRvIHNraXAgc2lnbmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnbkFuZFZlcmlmeVdhbGxldFRyYW5zYWN0aW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0cmFuc2FjdGlvbjogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4gfCB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8VE51bWJlcj4sXG4gIHVuc3BlbnRzOiBVbnNwZW50PFROdW1iZXI+W10sXG4gIHdhbGxldFNpZ25lcjogdXR4b2xpYi5iaXRnby5XYWxsZXRVbnNwZW50U2lnbmVyPFJvb3RXYWxsZXRLZXlzPixcbiAge1xuICAgIGlzTGFzdFNpZ25hdHVyZSxcbiAgICByZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzLFxuICB9OiB7XG4gICAgaXNMYXN0U2lnbmF0dXJlOiBib29sZWFuO1xuICAgIHJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXM/OiBzdHJpbmdbXTtcbiAgfVxuKTogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICBjb25zdCBuZXR3b3JrID0gdHJhbnNhY3Rpb24ubmV0d29yayBhcyB1dHhvbGliLk5ldHdvcms7XG4gIGlmIChyZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzID0gZ2V0UmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyhuZXR3b3JrKTtcbiAgfVxuICBjb25zdCBwcmV2T3V0cHV0cyA9IHVuc3BlbnRzLm1hcCgodSkgPT4gdG9PdXRwdXQodSwgbmV0d29yaykpO1xuXG4gIGxldCB0eEJ1aWxkZXI6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyPjtcbiAgaWYgKHRyYW5zYWN0aW9uIGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24pIHtcbiAgICB0eEJ1aWxkZXIgPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVRyYW5zYWN0aW9uQnVpbGRlckZyb21UcmFuc2FjdGlvbjxUTnVtYmVyPih0cmFuc2FjdGlvbiwgcHJldk91dHB1dHMpO1xuICAgIGlmICh0cmFuc2FjdGlvbi5pbnMubGVuZ3RoICE9PSB1bnNwZW50cy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdHJhbnNhY3Rpb24gaW5wdXRzIG11c3QgbWF0Y2ggdW5zcGVudHNgKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHJhbnNhY3Rpb24gaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIpIHtcbiAgICB0eEJ1aWxkZXIgPSB0cmFuc2FjdGlvbjtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG11c3QgcGFzcyBVdHhvVHJhbnNhY3Rpb24gb3IgVXR4b1RyYW5zYWN0aW9uQnVpbGRlcmApO1xuICB9XG5cbiAgY29uc3Qgc2lnbkVycm9yczogSW5wdXRTaWduaW5nRXJyb3I8VE51bWJlcj5bXSA9IHVuc3BlbnRzXG4gICAgLm1hcCgodW5zcGVudDogVW5zcGVudDxUTnVtYmVyPiwgaW5wdXRJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAocmVwbGF5UHJvdGVjdGlvbkFkZHJlc3Nlcy5pbmNsdWRlcyh1bnNwZW50LmFkZHJlc3MpKSB7XG4gICAgICAgIGRlYnVnKCdTa2lwcGluZyBzaWduYXR1cmUgZm9yIGlucHV0ICVkIG9mICVkIChSUCBpbnB1dD8pJywgaW5wdXRJbmRleCArIDEsIHVuc3BlbnRzLmxlbmd0aCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghaXNXYWxsZXRVbnNwZW50PFROdW1iZXI+KHVuc3BlbnQpKSB7XG4gICAgICAgIHJldHVybiBJbnB1dFNpZ25pbmdFcnJvci5leHBlY3RlZFdhbGxldFVuc3BlbnQ8VE51bWJlcj4oaW5wdXRJbmRleCwgbnVsbCwgdW5zcGVudCk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBzaWduSW5wdXRXaXRoVW5zcGVudDxUTnVtYmVyPih0eEJ1aWxkZXIsIGlucHV0SW5kZXgsIHVuc3BlbnQsIHdhbGxldFNpZ25lcik7XG4gICAgICAgIGRlYnVnKCdTdWNjZXNzZnVsbHkgc2lnbmVkIGlucHV0ICVkIG9mICVkJywgaW5wdXRJbmRleCArIDEsIHVuc3BlbnRzLmxlbmd0aCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBuZXcgSW5wdXRTaWduaW5nRXJyb3I8VE51bWJlcj4oaW5wdXRJbmRleCwgbnVsbCwgdW5zcGVudCwgZSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuZmlsdGVyKChlKTogZSBpcyBJbnB1dFNpZ25pbmdFcnJvcjxUTnVtYmVyPiA9PiBlICE9PSB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IHNpZ25lZFRyYW5zYWN0aW9uID0gaXNMYXN0U2lnbmF0dXJlID8gdHhCdWlsZGVyLmJ1aWxkKCkgOiB0eEJ1aWxkZXIuYnVpbGRJbmNvbXBsZXRlKCk7XG5cbiAgY29uc3QgdmVyaWZ5RXJyb3JzOiBJbnB1dFNpZ25pbmdFcnJvcjxUTnVtYmVyPltdID0gc2lnbmVkVHJhbnNhY3Rpb24uaW5zXG4gICAgLm1hcCgoaW5wdXQsIGlucHV0SW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHVuc3BlbnQgPSB1bnNwZW50c1tpbnB1dEluZGV4XSBhcyBVbnNwZW50PFROdW1iZXI+O1xuICAgICAgaWYgKHJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMuaW5jbHVkZXModW5zcGVudC5hZGRyZXNzKSkge1xuICAgICAgICBkZWJ1ZyhcbiAgICAgICAgICAnU2tpcHBpbmcgaW5wdXQgc2lnbmF0dXJlICVkIG9mICVkICh1bnNwZW50IGZyb20gcmVwbGF5IHByb3RlY3Rpb24gYWRkcmVzcyB3aGljaCBpcyBwbGF0Zm9ybSBzaWduZWQgb25seSknLFxuICAgICAgICAgIGlucHV0SW5kZXggKyAxLFxuICAgICAgICAgIHVuc3BlbnRzLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIWlzV2FsbGV0VW5zcGVudDxUTnVtYmVyPih1bnNwZW50KSkge1xuICAgICAgICByZXR1cm4gSW5wdXRTaWduaW5nRXJyb3IuZXhwZWN0ZWRXYWxsZXRVbnNwZW50PFROdW1iZXI+KGlucHV0SW5kZXgsIG51bGwsIHVuc3BlbnQpO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcHVibGljS2V5ID0gd2FsbGV0U2lnbmVyLmRlcml2ZUZvckNoYWluQW5kSW5kZXgodW5zcGVudC5jaGFpbiwgdW5zcGVudC5pbmRleCkuc2lnbmVyLnB1YmxpY0tleTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICF1dHhvbGliLmJpdGdvLnZlcmlmeVNpZ25hdHVyZVdpdGhQdWJsaWNLZXk8VE51bWJlcj4oc2lnbmVkVHJhbnNhY3Rpb24sIGlucHV0SW5kZXgsIHByZXZPdXRwdXRzLCBwdWJsaWNLZXkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBuZXcgSW5wdXRTaWduaW5nRXJyb3IoaW5wdXRJbmRleCwgbnVsbCwgdW5zcGVudCwgbmV3IEVycm9yKGBpbnZhbGlkIHNpZ25hdHVyZWApKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBkZWJ1ZygnSW52YWxpZCBzaWduYXR1cmUnKTtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnB1dFNpZ25pbmdFcnJvcjxUTnVtYmVyPihpbnB1dEluZGV4LCBudWxsLCB1bnNwZW50LCBlKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5maWx0ZXIoKGUpOiBlIGlzIElucHV0U2lnbmluZ0Vycm9yPFROdW1iZXI+ID0+IGUgIT09IHVuZGVmaW5lZCk7XG5cbiAgaWYgKHNpZ25FcnJvcnMubGVuZ3RoIHx8IHZlcmlmeUVycm9ycy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHJhbnNhY3Rpb25TaWduaW5nRXJyb3Ioc2lnbkVycm9ycywgdmVyaWZ5RXJyb3JzKTtcbiAgfVxuXG4gIHJldHVybiBzaWduZWRUcmFuc2FjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25MZWdhY3lUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBzaWduZXJLZXljaGFpbjogQklQMzJJbnRlcmZhY2UgfCB1bmRlZmluZWQsXG4gIHBhcmFtczoge1xuICAgIGlzTGFzdFNpZ25hdHVyZTogYm9vbGVhbjtcbiAgICBzaWduaW5nU3RlcDogJ3NpZ25lck5vbmNlJyB8ICdjb3NpZ25lck5vbmNlJyB8ICdzaWduZXJTaWduYXR1cmUnIHwgdW5kZWZpbmVkO1xuICAgIHR4SW5mbzogeyB1bnNwZW50cz86IHV0eG9saWIuYml0Z28uVW5zcGVudDxUTnVtYmVyPltdIH0gfCB1bmRlZmluZWQ7XG4gICAgcHViczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgY29zaWduZXJQdWI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgfVxuKTogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICBzd2l0Y2ggKHBhcmFtcy5zaWduaW5nU3RlcCkge1xuICAgIGNhc2UgJ3NpZ25lck5vbmNlJzpcbiAgICBjYXNlICdjb3NpZ25lck5vbmNlJzpcbiAgICAgIC8qKlxuICAgICAgICogSW4gY2VydGFpbiBjYXNlcywgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCBtYXkgbm90IGtub3cgd2hldGhlciB0aGUgdHhIZXggY29udGFpbnMgYSBwc2J0IHdpdGggdGFwcm9vdCBrZXkgcGF0aCBzcGVuZCBpbnB1dChzKS5cbiAgICAgICAqIEluc3RlYWQgb2YgdGhyb3dpbmcgZXJyb3IsIG5vLW9wIGFuZCByZXR1cm4gdGhlIHR4SGV4LiBTbyB0aGF0IHRoZSBjYWxsZXIgY2FuIGNhbGwgdGhpcyBtZXRob2QgaW4gdGhlIHNhbWUgc2VxdWVuY2UuXG4gICAgICAgKi9cbiAgICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIGlmICh0eC5pbnMubGVuZ3RoICE9PSBwYXJhbXMudHhJbmZvPy51bnNwZW50cz8ubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdsZW5ndGggb2YgdW5zcGVudHMgYXJyYXkgc2hvdWxkIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgdHJhbnNhY3Rpb24gaW5wdXRzJyk7XG4gIH1cblxuICBpZiAoIXBhcmFtcy5wdWJzIHx8ICFpc1RyaXBsZShwYXJhbXMucHVicykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG11c3QgcHJvdmlkZSB4cHViIGFycmF5YCk7XG4gIH1cblxuICBjb25zdCBrZXljaGFpbnMgPSBwYXJhbXMucHVicy5tYXAoKHB1YikgPT4gYmlwMzIuZnJvbUJhc2U1OChwdWIpKSBhcyBUcmlwbGU8QklQMzJJbnRlcmZhY2U+O1xuICBjb25zdCBjb3NpZ25lclB1YiA9IHBhcmFtcy5jb3NpZ25lclB1YiA/PyBwYXJhbXMucHVic1syXTtcbiAgY29uc3QgY29zaWduZXJLZXljaGFpbiA9IGJpcDMyLmZyb21CYXNlNTgoY29zaWduZXJQdWIpO1xuXG4gIGFzc2VydChzaWduZXJLZXljaGFpbik7XG4gIGNvbnN0IHdhbGxldFNpZ25lciA9IG5ldyBiaXRnby5XYWxsZXRVbnNwZW50U2lnbmVyPFJvb3RXYWxsZXRLZXlzPihrZXljaGFpbnMsIHNpZ25lcktleWNoYWluLCBjb3NpZ25lcktleWNoYWluKTtcbiAgcmV0dXJuIHNpZ25BbmRWZXJpZnlXYWxsZXRUcmFuc2FjdGlvbih0eCwgcGFyYW1zLnR4SW5mby51bnNwZW50cywgd2FsbGV0U2lnbmVyLCB7XG4gICAgaXNMYXN0U2lnbmF0dXJlOiBwYXJhbXMuaXNMYXN0U2lnbmF0dXJlLFxuICB9KSBhcyB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPjtcbn1cbiJdfQ==
@@ -0,0 +1,30 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import { BIP32Interface } from '@bitgo-beta/secp256k1';
3
+ import { Musig2Participant } from './musig2';
4
+ export type PsbtParsedScriptType = 'p2sh' | 'p2wsh' | 'p2shP2wsh' | 'p2shP2pk' | 'taprootKeyPathSpend' | 'taprootScriptPathSpend' | 'p2trLegacy' | 'p2trMusig2ScriptPath' | 'p2trMusig2KeyPath';
5
+ /**
6
+ * Sign all inputs of a psbt and verify signatures after signing.
7
+ * Collects and logs signing errors and verification errors, throws error in the end if any of them
8
+ * failed.
9
+ *
10
+ * If it is the last signature, finalize and extract the transaction from the psbt.
11
+ *
12
+ * This function mirrors signAndVerifyWalletTransaction, but is used for signing PSBTs instead of
13
+ * using TransactionBuilder
14
+ *
15
+ * @param psbt
16
+ * @param signerKeychain
17
+ * @param isLastSignature
18
+ */
19
+ export declare function signAndVerifyPsbt(psbt: utxolib.bitgo.UtxoPsbt, signerKeychain: utxolib.BIP32Interface, { isLastSignature,
20
+ /** deprecated */
21
+ allowNonSegwitSigningWithoutPrevTx, }: {
22
+ isLastSignature: boolean;
23
+ allowNonSegwitSigningWithoutPrevTx?: boolean;
24
+ }): utxolib.bitgo.UtxoPsbt | utxolib.bitgo.UtxoTransaction<bigint>;
25
+ export declare function signPsbtWithMusig2Participant(coin: Musig2Participant<utxolib.bitgo.UtxoPsbt>, tx: utxolib.bitgo.UtxoPsbt, signerKeychain: BIP32Interface | undefined, params: {
26
+ isLastSignature: boolean;
27
+ signingStep: 'signerNonce' | 'cosignerNonce' | 'signerSignature' | undefined;
28
+ walletId: string | undefined;
29
+ }): Promise<utxolib.bitgo.UtxoPsbt | utxolib.bitgo.UtxoTransaction<bigint>>;
30
+ //# sourceMappingURL=signPsbt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signPsbt.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/signPsbt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAI7C,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,OAAO,GACP,WAAW,GACX,UAAU,GACV,qBAAqB,GACrB,wBAAwB,GAExB,YAAY,GACZ,sBAAsB,GACtB,mBAAmB,CAAC;AAExB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC5B,cAAc,EAAE,OAAO,CAAC,cAAc,EACtC,EACE,eAAe;AACf,iBAAiB;AACjB,kCAAkC,GACnC,EAAE;IAAE,eAAe,EAAE,OAAO,CAAC;IAAC,kCAAkC,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5E,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CA6DhE;AAYD,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC/C,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC1B,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,MAAM,EAAE;IACN,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,aAAa,GAAG,eAAe,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAC7E,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,GACA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAsDzE"}