@bitgo-beta/abstract-utxo 1.1.1-beta.202 → 1.1.1-beta.2021
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.
- package/README.md +76 -0
- package/dist/cjs/src/abstractUtxoCoin.d.ts +475 -0
- package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -0
- package/dist/cjs/src/abstractUtxoCoin.js +718 -0
- package/dist/cjs/src/address/fixedScript.d.ts +44 -0
- package/dist/cjs/src/address/fixedScript.d.ts.map +1 -0
- package/dist/cjs/src/address/fixedScript.js +108 -0
- package/dist/cjs/src/address/index.d.ts +2 -0
- package/dist/cjs/src/address/index.d.ts.map +1 -0
- package/dist/cjs/src/address/index.js +8 -0
- package/dist/cjs/src/config.d.ts.map +1 -0
- package/dist/cjs/src/config.js +14 -0
- package/dist/cjs/src/deriveKeyWithSeed.d.ts +12 -0
- package/dist/cjs/src/deriveKeyWithSeed.d.ts.map +1 -0
- package/dist/cjs/src/deriveKeyWithSeed.js +17 -0
- package/dist/cjs/src/descriptor/NamedDescriptor.d.ts +19 -0
- package/dist/cjs/src/descriptor/NamedDescriptor.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/NamedDescriptor.js +77 -0
- package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
- package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.js +33 -0
- package/dist/cjs/src/descriptor/builder/builder.d.ts +17 -0
- package/dist/cjs/src/descriptor/builder/builder.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/builder/builder.js +54 -0
- package/dist/cjs/src/descriptor/builder/index.d.ts +3 -0
- package/dist/cjs/src/descriptor/builder/index.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/builder/index.js +8 -0
- package/dist/cjs/src/descriptor/builder/parse.d.ts +5 -0
- package/dist/cjs/src/descriptor/builder/parse.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/builder/parse.js +148 -0
- package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
- package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.js +41 -0
- package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts +12 -0
- package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/createWallet/createDescriptors.js +33 -0
- package/dist/cjs/src/descriptor/createWallet/index.d.ts +3 -0
- package/dist/cjs/src/descriptor/createWallet/index.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/createWallet/index.js +19 -0
- package/dist/cjs/src/descriptor/descriptorWallet.d.ts +19 -0
- package/dist/cjs/src/descriptor/descriptorWallet.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/descriptorWallet.js +54 -0
- package/dist/cjs/src/descriptor/index.d.ts +9 -0
- package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/index.js +53 -0
- package/dist/cjs/src/descriptor/validatePolicy.d.ts +22 -0
- package/dist/cjs/src/descriptor/validatePolicy.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/validatePolicy.js +94 -0
- package/dist/cjs/src/impl/bch/bch.d.ts +22 -0
- package/dist/cjs/src/impl/bch/bch.d.ts.map +1 -0
- package/dist/cjs/src/impl/bch/bch.js +43 -0
- package/dist/cjs/src/impl/bch/index.d.ts +3 -0
- package/dist/cjs/src/impl/bch/index.d.ts.map +1 -0
- package/dist/cjs/src/impl/bch/index.js +19 -0
- package/dist/cjs/src/impl/bch/tbch.d.ts +12 -0
- package/dist/cjs/src/impl/bch/tbch.d.ts.map +1 -0
- package/dist/cjs/src/impl/bch/tbch.js +15 -0
- package/dist/cjs/src/impl/bcha/bcha.d.ts +9 -0
- package/dist/cjs/src/impl/bcha/bcha.d.ts.map +1 -0
- package/dist/cjs/src/impl/bcha/bcha.js +15 -0
- package/dist/cjs/src/impl/bcha/index.d.ts +3 -0
- package/dist/cjs/src/impl/bcha/index.d.ts.map +1 -0
- package/dist/cjs/src/impl/bcha/index.js +19 -0
- package/dist/cjs/src/impl/bcha/tbcha.d.ts +12 -0
- package/dist/cjs/src/impl/bcha/tbcha.d.ts.map +1 -0
- package/dist/cjs/src/impl/bcha/tbcha.js +15 -0
- package/dist/cjs/src/impl/bsv/bsv.d.ts +9 -0
- package/dist/cjs/src/impl/bsv/bsv.d.ts.map +1 -0
- package/dist/cjs/src/impl/bsv/bsv.js +15 -0
- package/dist/cjs/src/impl/bsv/index.d.ts +3 -0
- package/dist/cjs/src/impl/bsv/index.d.ts.map +1 -0
- package/dist/cjs/src/impl/bsv/index.js +19 -0
- package/dist/cjs/src/impl/bsv/tbsv.d.ts +12 -0
- package/dist/cjs/src/impl/bsv/tbsv.d.ts.map +1 -0
- package/dist/cjs/src/impl/bsv/tbsv.js +15 -0
- package/dist/cjs/src/impl/btc/btc.d.ts +15 -0
- package/dist/cjs/src/impl/btc/btc.d.ts.map +1 -0
- package/dist/cjs/src/impl/btc/btc.js +22 -0
- package/dist/cjs/src/impl/btc/index.d.ts +7 -0
- package/dist/cjs/src/impl/btc/index.d.ts.map +1 -0
- package/dist/cjs/src/impl/btc/index.js +23 -0
- package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts +61 -0
- package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/impl/btc/inscriptionBuilder.js +170 -0
- package/dist/cjs/src/impl/btc/tbtc.d.ts +12 -0
- package/dist/cjs/src/impl/btc/tbtc.d.ts.map +1 -0
- package/dist/cjs/src/impl/btc/tbtc.js +15 -0
- package/dist/cjs/src/impl/btc/tbtc4.d.ts +12 -0
- package/dist/cjs/src/impl/btc/tbtc4.d.ts.map +1 -0
- package/dist/cjs/src/impl/btc/tbtc4.js +15 -0
- package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts +12 -0
- package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts.map +1 -0
- package/dist/cjs/src/impl/btc/tbtcbgsig.js +15 -0
- package/dist/cjs/src/impl/btc/tbtcsig.d.ts +12 -0
- package/dist/cjs/src/impl/btc/tbtcsig.d.ts.map +1 -0
- package/dist/cjs/src/impl/btc/tbtcsig.js +15 -0
- package/dist/cjs/src/impl/btg/btg.d.ts +9 -0
- package/dist/cjs/src/impl/btg/btg.d.ts.map +1 -0
- package/dist/cjs/src/impl/btg/btg.js +15 -0
- package/dist/cjs/src/impl/btg/index.d.ts +2 -0
- package/dist/cjs/src/impl/btg/index.d.ts.map +1 -0
- package/dist/cjs/src/impl/btg/index.js +18 -0
- package/dist/cjs/src/impl/dash/dash.d.ts +9 -0
- package/dist/cjs/src/impl/dash/dash.d.ts.map +1 -0
- package/dist/cjs/src/impl/dash/dash.js +15 -0
- package/dist/cjs/src/impl/dash/index.d.ts +3 -0
- package/dist/cjs/src/impl/dash/index.d.ts.map +1 -0
- package/dist/cjs/src/impl/dash/index.js +19 -0
- package/dist/cjs/src/impl/dash/tdash.d.ts +12 -0
- package/dist/cjs/src/impl/dash/tdash.d.ts.map +1 -0
- package/dist/cjs/src/impl/dash/tdash.js +15 -0
- package/dist/cjs/src/impl/doge/doge.d.ts +35 -0
- package/dist/cjs/src/impl/doge/doge.d.ts.map +1 -0
- package/dist/cjs/src/impl/doge/doge.js +79 -0
- package/dist/cjs/src/impl/doge/index.d.ts +3 -0
- package/dist/cjs/src/impl/doge/index.d.ts.map +1 -0
- package/dist/cjs/src/impl/doge/index.js +19 -0
- package/dist/cjs/src/impl/doge/tdoge.d.ts +12 -0
- package/dist/cjs/src/impl/doge/tdoge.d.ts.map +1 -0
- package/dist/cjs/src/impl/doge/tdoge.js +15 -0
- package/dist/cjs/src/impl/index.d.ts +10 -0
- package/dist/cjs/src/impl/index.d.ts.map +1 -0
- package/dist/cjs/src/impl/index.js +46 -0
- package/dist/cjs/src/impl/ltc/index.d.ts +3 -0
- package/dist/cjs/src/impl/ltc/index.d.ts.map +1 -0
- package/dist/cjs/src/impl/ltc/index.js +19 -0
- package/dist/cjs/src/impl/ltc/ltc.d.ts +8 -0
- package/dist/cjs/src/impl/ltc/ltc.d.ts.map +1 -0
- package/dist/cjs/src/impl/ltc/ltc.js +15 -0
- package/dist/cjs/src/impl/ltc/tltc.d.ts +8 -0
- package/dist/cjs/src/impl/ltc/tltc.d.ts.map +1 -0
- package/dist/cjs/src/impl/ltc/tltc.js +15 -0
- package/dist/cjs/src/impl/zec/index.d.ts +3 -0
- package/dist/cjs/src/impl/zec/index.d.ts.map +1 -0
- package/dist/cjs/src/impl/zec/index.js +19 -0
- package/dist/cjs/src/impl/zec/tzec.d.ts +9 -0
- package/dist/cjs/src/impl/zec/tzec.d.ts.map +1 -0
- package/dist/cjs/src/impl/zec/tzec.js +15 -0
- package/dist/cjs/src/impl/zec/zec.d.ts +12 -0
- package/dist/cjs/src/impl/zec/zec.d.ts.map +1 -0
- package/dist/cjs/src/impl/zec/zec.js +15 -0
- package/dist/cjs/src/index.d.ts +23 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/cjs/src/index.js +62 -0
- package/dist/cjs/src/keychains.d.ts +56 -0
- package/dist/cjs/src/keychains.d.ts.map +1 -0
- package/dist/cjs/src/keychains.js +144 -0
- package/dist/cjs/src/names.d.ts +36 -0
- package/dist/cjs/src/names.d.ts.map +1 -0
- package/dist/cjs/src/names.js +231 -0
- package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts +9 -0
- package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
- package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.js +22 -0
- package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts +46 -0
- package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
- package/dist/cjs/src/offlineVault/OfflineVaultSignable.js +55 -0
- package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts +16 -0
- package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts.map +1 -0
- package/dist/cjs/src/offlineVault/TransactionExplanation.js +15 -0
- package/dist/cjs/src/offlineVault/descriptor/index.d.ts +2 -0
- package/dist/cjs/src/offlineVault/descriptor/index.d.ts.map +1 -0
- package/dist/cjs/src/offlineVault/descriptor/index.js +18 -0
- package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts +39 -0
- package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts.map +1 -0
- package/dist/cjs/src/offlineVault/descriptor/transaction.js +80 -0
- package/dist/cjs/src/offlineVault/index.d.ts +6 -0
- package/dist/cjs/src/offlineVault/index.d.ts.map +1 -0
- package/dist/cjs/src/offlineVault/index.js +44 -0
- package/dist/{src → cjs/src}/recovery/RecoveryProvider.d.ts +1 -3
- package/dist/cjs/src/recovery/RecoveryProvider.d.ts.map +1 -0
- package/dist/cjs/src/recovery/RecoveryProvider.js +22 -0
- package/dist/cjs/src/recovery/backupKeyRecovery.d.ts +158 -0
- package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -0
- package/dist/cjs/src/recovery/backupKeyRecovery.js +411 -0
- package/dist/{src → cjs/src}/recovery/baseApi.d.ts +3 -6
- package/dist/cjs/src/recovery/baseApi.d.ts.map +1 -0
- package/dist/cjs/src/recovery/baseApi.js +73 -0
- package/dist/{src → cjs/src}/recovery/coingeckoApi.d.ts +0 -3
- package/dist/cjs/src/recovery/coingeckoApi.d.ts.map +1 -0
- package/dist/cjs/src/recovery/coingeckoApi.js +44 -0
- package/dist/{src → cjs/src}/recovery/crossChainRecovery.d.ts +21 -9
- package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -0
- package/dist/cjs/src/recovery/crossChainRecovery.js +299 -0
- package/dist/{src → cjs/src}/recovery/index.d.ts +0 -1
- package/dist/cjs/src/recovery/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/recovery/index.js +6 -3
- package/dist/cjs/src/recovery/mempoolApi.d.ts.map +1 -0
- package/dist/cjs/src/recovery/mempoolApi.js +36 -0
- package/dist/cjs/src/recovery/psbt.d.ts +62 -0
- package/dist/cjs/src/recovery/psbt.d.ts.map +1 -0
- package/dist/cjs/src/recovery/psbt.js +153 -0
- package/dist/cjs/src/tnumber.d.ts +4 -0
- package/dist/cjs/src/tnumber.d.ts.map +1 -0
- package/dist/cjs/src/tnumber.js +12 -0
- package/dist/cjs/src/transaction/bip322.d.ts +27 -0
- package/dist/cjs/src/transaction/bip322.d.ts.map +1 -0
- package/dist/cjs/src/transaction/bip322.js +139 -0
- package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts +2 -0
- package/dist/cjs/src/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
- package/dist/cjs/src/transaction/common/verifyPayGoAmount.js +3 -0
- package/dist/cjs/src/transaction/decode.d.ts +25 -0
- package/dist/cjs/src/transaction/decode.d.ts.map +1 -0
- package/dist/cjs/src/transaction/decode.js +106 -0
- package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts +5 -0
- package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts.map +1 -0
- package/dist/cjs/src/transaction/descriptor/explainPsbt.js +47 -0
- package/dist/cjs/src/transaction/descriptor/index.d.ts +7 -0
- package/dist/cjs/src/transaction/descriptor/index.d.ts.map +1 -0
- package/dist/cjs/src/transaction/descriptor/index.js +14 -0
- package/dist/cjs/src/transaction/descriptor/parse.d.ts +18 -0
- package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -0
- package/dist/cjs/src/transaction/descriptor/parse.js +86 -0
- package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts +14 -0
- package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
- package/dist/cjs/src/transaction/descriptor/parseToAmountType.js +60 -0
- package/dist/cjs/src/transaction/descriptor/recipient.d.ts +5 -0
- package/dist/cjs/src/transaction/descriptor/recipient.d.ts.map +1 -0
- package/dist/cjs/src/transaction/descriptor/recipient.js +3 -0
- package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts +25 -0
- package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts.map +1 -0
- package/dist/cjs/src/transaction/descriptor/signPsbt.js +44 -0
- package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts +36 -0
- package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +80 -0
- package/dist/cjs/src/transaction/explainTransaction.d.ts +21 -0
- package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/explainTransaction.js +92 -0
- package/dist/cjs/src/transaction/fetchInputs.d.ts +27 -0
- package/dist/cjs/src/transaction/fetchInputs.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fetchInputs.js +111 -0
- package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts +24 -0
- package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/SigningError.js +32 -0
- package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts +45 -0
- package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.js +149 -0
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +83 -0
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +346 -0
- package/dist/cjs/src/transaction/fixedScript/index.d.ts +10 -0
- package/dist/cjs/src/transaction/fixedScript/index.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/index.js +34 -0
- package/dist/cjs/src/transaction/fixedScript/musig2.d.ts +4 -0
- package/dist/cjs/src/transaction/fixedScript/musig2.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/musig2.js +3 -0
- package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts +28 -0
- package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/parseOutput.js +216 -0
- package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts +8 -0
- package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +228 -0
- package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts +10 -0
- package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/replayProtection.js +44 -0
- package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts +32 -0
- package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.js +163 -0
- package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.d.ts +20 -0
- package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.js +157 -0
- package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts +20 -0
- package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.js +118 -0
- package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +34 -0
- package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/signTransaction.js +78 -0
- package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts +21 -0
- package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/verifyTransaction.js +219 -0
- package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts +9 -0
- package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
- package/dist/cjs/src/transaction/getPayGoVerificationPubkey.js +20 -0
- package/dist/cjs/src/transaction/index.d.ts +10 -0
- package/dist/cjs/src/transaction/index.d.ts.map +1 -0
- package/dist/cjs/src/transaction/index.js +54 -0
- package/dist/cjs/src/transaction/outputDifference.d.ts +44 -0
- package/dist/cjs/src/transaction/outputDifference.d.ts.map +1 -0
- package/dist/cjs/src/transaction/outputDifference.js +51 -0
- package/dist/cjs/src/transaction/parseTransaction.d.ts +4 -0
- package/dist/cjs/src/transaction/parseTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/parseTransaction.js +48 -0
- package/dist/cjs/src/transaction/recipient.d.ts +34 -0
- package/dist/cjs/src/transaction/recipient.d.ts.map +1 -0
- package/dist/cjs/src/transaction/recipient.js +69 -0
- package/dist/cjs/src/transaction/signTransaction.d.ts +6 -0
- package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/signTransaction.js +112 -0
- package/dist/cjs/src/transaction/types.d.ts +50 -0
- package/dist/cjs/src/transaction/types.d.ts.map +1 -0
- package/dist/cjs/src/transaction/types.js +7 -0
- package/dist/cjs/src/transaction/verifyTransaction.d.ts +4 -0
- package/dist/cjs/src/transaction/verifyTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/verifyTransaction.js +50 -0
- package/dist/cjs/src/unspent.d.ts +59 -0
- package/dist/cjs/src/unspent.d.ts.map +1 -0
- package/dist/cjs/src/unspent.js +20 -0
- package/dist/cjs/src/verifyKey.d.ts +21 -0
- package/dist/cjs/src/verifyKey.d.ts.map +1 -0
- package/dist/cjs/src/verifyKey.js +108 -0
- package/dist/cjs/src/wallet.d.ts +15 -0
- package/dist/cjs/src/wallet.d.ts.map +1 -0
- package/dist/cjs/src/wallet.js +8 -0
- package/dist/cjs/src/wasmUtil.d.ts +34 -0
- package/dist/cjs/src/wasmUtil.d.ts.map +1 -0
- package/dist/cjs/src/wasmUtil.js +95 -0
- package/dist/cjs/test/integration/impl/bch/bch.d.ts +2 -0
- package/dist/cjs/test/integration/impl/bch/bch.d.ts.map +1 -0
- package/dist/cjs/test/integration/impl/bch/bch.js +76 -0
- package/dist/cjs/test/unit/address.d.ts +2 -0
- package/dist/cjs/test/unit/address.d.ts.map +1 -0
- package/dist/cjs/test/unit/address.js +178 -0
- package/dist/cjs/test/unit/bip322.d.ts +2 -0
- package/dist/cjs/test/unit/bip322.d.ts.map +1 -0
- package/dist/cjs/test/unit/bip322.js +481 -0
- package/dist/cjs/test/unit/buildSignSendLegacyFormat.d.ts +2 -0
- package/dist/cjs/test/unit/buildSignSendLegacyFormat.d.ts.map +1 -0
- package/dist/cjs/test/unit/buildSignSendLegacyFormat.js +99 -0
- package/dist/cjs/test/unit/coins.d.ts +2 -0
- package/dist/cjs/test/unit/coins.d.ts.map +1 -0
- package/dist/cjs/test/unit/coins.js +161 -0
- package/dist/cjs/test/unit/customChangeWallet.d.ts +2 -0
- package/dist/cjs/test/unit/customChangeWallet.d.ts.map +1 -0
- package/dist/cjs/test/unit/customChangeWallet.js +204 -0
- package/dist/cjs/test/unit/customChangeWalletFixtures.d.ts +2 -0
- package/dist/cjs/test/unit/customChangeWalletFixtures.d.ts.map +1 -0
- package/dist/cjs/test/unit/customChangeWalletFixtures.js +53 -0
- package/dist/cjs/test/unit/customSigner.d.ts +2 -0
- package/dist/cjs/test/unit/customSigner.d.ts.map +1 -0
- package/dist/cjs/test/unit/customSigner.js +99 -0
- package/dist/cjs/test/unit/deriveKeyWithSeed.d.ts +2 -0
- package/dist/cjs/test/unit/deriveKeyWithSeed.d.ts.map +1 -0
- package/dist/cjs/test/unit/deriveKeyWithSeed.js +56 -0
- package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts +2 -0
- package/dist/cjs/test/unit/descriptor/NamedDescriptor.d.ts.map +1 -0
- package/dist/cjs/test/unit/descriptor/NamedDescriptor.js +51 -0
- package/dist/cjs/test/unit/descriptor/builder.d.ts +2 -0
- package/dist/cjs/test/unit/descriptor/builder.d.ts.map +1 -0
- package/dist/cjs/test/unit/descriptor/builder.js +92 -0
- package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts +2 -0
- package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
- package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.js +53 -0
- package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts +2 -0
- package/dist/cjs/test/unit/descriptor/descriptorWallet.d.ts.map +1 -0
- package/dist/cjs/test/unit/descriptor/descriptorWallet.js +62 -0
- package/dist/cjs/test/unit/descriptorAddress.d.ts +3 -0
- package/dist/cjs/test/unit/descriptorAddress.d.ts.map +1 -0
- package/dist/cjs/test/unit/descriptorAddress.js +103 -0
- package/dist/cjs/test/unit/explainTransaction.d.ts +2 -0
- package/dist/cjs/test/unit/explainTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/explainTransaction.js +37 -0
- package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts +4 -0
- package/dist/cjs/test/unit/fixtures/psbtHexProof.d.ts.map +1 -0
- package/dist/cjs/test/unit/fixtures/psbtHexProof.js +9 -0
- package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts +2 -0
- package/dist/cjs/test/unit/impl/bch/unit/bch.d.ts.map +1 -0
- package/dist/cjs/test/unit/impl/bch/unit/bch.js +71 -0
- package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts +2 -0
- package/dist/cjs/test/unit/impl/bcha/unit/index.d.ts.map +1 -0
- package/dist/cjs/test/unit/impl/bcha/unit/index.js +41 -0
- package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts +2 -0
- package/dist/cjs/test/unit/impl/bsv/unit/index.d.ts.map +1 -0
- package/dist/cjs/test/unit/impl/bsv/unit/index.js +34 -0
- package/dist/cjs/test/unit/impl/btg/unit/index.d.ts +2 -0
- package/dist/cjs/test/unit/impl/btg/unit/index.d.ts.map +1 -0
- package/dist/cjs/test/unit/impl/btg/unit/index.js +33 -0
- package/dist/cjs/test/unit/impl/dash/unit/index.d.ts +2 -0
- package/dist/cjs/test/unit/impl/dash/unit/index.d.ts.map +1 -0
- package/dist/cjs/test/unit/impl/dash/unit/index.js +34 -0
- package/dist/cjs/test/unit/impl/doge/unit/index.d.ts +2 -0
- package/dist/cjs/test/unit/impl/doge/unit/index.d.ts.map +1 -0
- package/dist/cjs/test/unit/impl/doge/unit/index.js +34 -0
- package/dist/cjs/test/unit/impl/zec/unit/index.d.ts +2 -0
- package/dist/cjs/test/unit/impl/zec/unit/index.d.ts.map +1 -0
- package/dist/cjs/test/unit/impl/zec/unit/index.js +30 -0
- package/dist/cjs/test/unit/keySignatures.d.ts +2 -0
- package/dist/cjs/test/unit/keySignatures.d.ts.map +1 -0
- package/dist/cjs/test/unit/keySignatures.js +54 -0
- package/dist/cjs/test/unit/keychains.d.ts +2 -0
- package/dist/cjs/test/unit/keychains.d.ts.map +1 -0
- package/dist/cjs/test/unit/keychains.js +87 -0
- package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts +2 -0
- package/dist/cjs/test/unit/offlineVault/halfSigned.d.ts.map +1 -0
- package/dist/cjs/test/unit/offlineVault/halfSigned.js +124 -0
- package/dist/cjs/test/unit/parseTransaction.d.ts +2 -0
- package/dist/cjs/test/unit/parseTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/parseTransaction.js +155 -0
- package/dist/cjs/test/unit/pendingApprovalTxHexPsbt.d.ts +2 -0
- package/dist/cjs/test/unit/pendingApprovalTxHexPsbt.d.ts.map +1 -0
- package/dist/cjs/test/unit/pendingApprovalTxHexPsbt.js +99 -0
- package/dist/cjs/test/unit/postProcessPrebuild.d.ts +2 -0
- package/dist/cjs/test/unit/postProcessPrebuild.d.ts.map +1 -0
- package/dist/cjs/test/unit/postProcessPrebuild.js +65 -0
- package/dist/cjs/test/unit/prebuildAndSign.d.ts +2 -0
- package/dist/cjs/test/unit/prebuildAndSign.d.ts.map +1 -0
- package/dist/cjs/test/unit/prebuildAndSign.js +218 -0
- package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts +2 -0
- package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts.map +1 -0
- package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +136 -0
- package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.d.ts +2 -0
- package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.d.ts.map +1 -0
- package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.js +144 -0
- package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts +2 -0
- package/dist/cjs/test/unit/recovery/crossChainRecovery.d.ts.map +1 -0
- package/dist/cjs/test/unit/recovery/crossChainRecovery.js +297 -0
- package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.d.ts +2 -0
- package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.d.ts.map +1 -0
- package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.js +189 -0
- package/dist/cjs/test/unit/recovery/mock.d.ts +37 -0
- package/dist/cjs/test/unit/recovery/mock.d.ts.map +1 -0
- package/dist/cjs/test/unit/recovery/mock.js +111 -0
- package/dist/cjs/test/unit/signTransaction.d.ts +2 -0
- package/dist/cjs/test/unit/signTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/signTransaction.js +223 -0
- package/dist/cjs/test/unit/testSpoofTransaction.d.ts +2 -0
- package/dist/cjs/test/unit/testSpoofTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/testSpoofTransaction.js +114 -0
- package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts +2 -0
- package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.js +64 -0
- package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts +6 -0
- package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.js +51 -0
- package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts +2 -0
- package/dist/cjs/test/unit/transaction/descriptor/parse.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/descriptor/parse.js +138 -0
- package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts +2 -0
- package/dist/cjs/test/unit/transaction/descriptor/sign.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/descriptor/sign.js +76 -0
- package/dist/cjs/test/unit/transaction/descriptor/signTransactionE2E.d.ts +2 -0
- package/dist/cjs/test/unit/transaction/descriptor/signTransactionE2E.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/descriptor/signTransactionE2E.js +100 -0
- package/dist/cjs/test/unit/transaction/descriptor/signTransactionGuard.d.ts +2 -0
- package/dist/cjs/test/unit/transaction/descriptor/signTransactionGuard.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/descriptor/signTransactionGuard.js +84 -0
- package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts +2 -0
- package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.js +81 -0
- package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts +2 -0
- package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.js +193 -0
- package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.d.ts +2 -0
- package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.js +287 -0
- package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts +2 -0
- package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.js +60 -0
- package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.d.ts +2 -0
- package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.js +98 -0
- package/dist/cjs/test/unit/transaction/outputDifference.d.ts +2 -0
- package/dist/cjs/test/unit/transaction/outputDifference.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/outputDifference.js +117 -0
- package/dist/cjs/test/unit/transaction/recipient.d.ts +2 -0
- package/dist/cjs/test/unit/transaction/recipient.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/recipient.js +52 -0
- package/dist/cjs/test/unit/transaction.d.ts +2 -0
- package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction.js +301 -0
- package/dist/cjs/test/unit/txFormat.d.ts +30 -0
- package/dist/cjs/test/unit/txFormat.d.ts.map +1 -0
- package/dist/cjs/test/unit/txFormat.js +161 -0
- package/dist/cjs/test/unit/util/address.d.ts +13 -0
- package/dist/cjs/test/unit/util/address.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/address.js +15 -0
- package/dist/cjs/test/unit/util/assert.d.ts +3 -0
- package/dist/cjs/test/unit/util/assert.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/assert.js +24 -0
- package/dist/cjs/test/unit/util/fixtures.d.ts +13 -0
- package/dist/cjs/test/unit/util/fixtures.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/fixtures.js +105 -0
- package/dist/cjs/test/unit/util/index.d.ts +11 -0
- package/dist/cjs/test/unit/util/index.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/index.js +27 -0
- package/dist/cjs/test/unit/util/keychains.d.ts +55 -0
- package/dist/cjs/test/unit/util/keychains.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/keychains.js +122 -0
- package/dist/cjs/test/unit/util/nockBitGo.d.ts +10 -0
- package/dist/cjs/test/unit/util/nockBitGo.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/nockBitGo.js +27 -0
- package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts +8 -0
- package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/nockIndexerAPI.js +23 -0
- package/dist/cjs/test/unit/util/psbt.d.ts +19 -0
- package/dist/cjs/test/unit/util/psbt.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/psbt.js +21 -0
- package/dist/cjs/test/unit/util/transaction.d.ts +28 -0
- package/dist/cjs/test/unit/util/transaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/transaction.js +131 -0
- package/dist/cjs/test/unit/util/unspents.d.ts +71 -0
- package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/unspents.js +224 -0
- package/dist/cjs/test/unit/util/utxoCoins.d.ts +30 -0
- package/dist/cjs/test/unit/util/utxoCoins.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/utxoCoins.js +175 -0
- package/dist/cjs/test/unit/util/wallet.d.ts +4 -0
- package/dist/cjs/test/unit/util/wallet.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/wallet.js +9 -0
- package/dist/cjs/test/unit/verifyTransaction.d.ts +2 -0
- package/dist/cjs/test/unit/verifyTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/verifyTransaction.js +464 -0
- package/dist/cjs/test/unit/wallet.d.ts +2 -0
- package/dist/cjs/test/unit/wallet.d.ts.map +1 -0
- package/dist/cjs/test/unit/wallet.js +251 -0
- package/dist/cjs/test/unit/webauthn.d.ts +2 -0
- package/dist/cjs/test/unit/webauthn.d.ts.map +1 -0
- package/dist/cjs/test/unit/webauthn.js +73 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/abstractUtxoCoin.d.ts +475 -0
- package/dist/esm/abstractUtxoCoin.d.ts.map +1 -0
- package/dist/esm/abstractUtxoCoin.js +677 -0
- package/dist/esm/address/fixedScript.d.ts +44 -0
- package/dist/esm/address/fixedScript.d.ts.map +1 -0
- package/dist/esm/address/fixedScript.js +100 -0
- package/dist/esm/address/index.d.ts +2 -0
- package/dist/esm/address/index.d.ts.map +1 -0
- package/dist/esm/address/index.js +2 -0
- package/dist/esm/config.d.ts +9 -0
- package/dist/esm/config.js +11 -0
- package/dist/esm/deriveKeyWithSeed.d.ts +12 -0
- package/dist/esm/deriveKeyWithSeed.d.ts.map +1 -0
- package/dist/esm/deriveKeyWithSeed.js +14 -0
- package/dist/esm/descriptor/NamedDescriptor.d.ts +19 -0
- package/dist/esm/descriptor/NamedDescriptor.d.ts.map +1 -0
- package/dist/esm/descriptor/NamedDescriptor.js +37 -0
- package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
- package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
- package/dist/esm/descriptor/assertDescriptorWalletAddress.js +27 -0
- package/dist/esm/descriptor/builder/builder.d.ts +17 -0
- package/dist/esm/descriptor/builder/builder.d.ts.map +1 -0
- package/dist/esm/descriptor/builder/builder.js +51 -0
- package/dist/esm/descriptor/builder/index.d.ts +3 -0
- package/dist/esm/descriptor/builder/index.d.ts.map +1 -0
- package/dist/esm/descriptor/builder/index.js +3 -0
- package/dist/esm/descriptor/builder/parse.d.ts +5 -0
- package/dist/esm/descriptor/builder/parse.d.ts.map +1 -0
- package/dist/esm/descriptor/builder/parse.js +144 -0
- package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
- package/dist/esm/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
- package/dist/esm/descriptor/createWallet/createDescriptorWallet.js +37 -0
- package/dist/esm/descriptor/createWallet/createDescriptors.d.ts +12 -0
- package/dist/esm/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
- package/dist/esm/descriptor/createWallet/createDescriptors.js +29 -0
- package/dist/esm/descriptor/createWallet/index.d.ts +3 -0
- package/dist/esm/descriptor/createWallet/index.d.ts.map +1 -0
- package/dist/esm/descriptor/createWallet/index.js +3 -0
- package/dist/esm/descriptor/descriptorWallet.d.ts +19 -0
- package/dist/esm/descriptor/descriptorWallet.d.ts.map +1 -0
- package/dist/esm/descriptor/descriptorWallet.js +16 -0
- package/dist/esm/descriptor/index.d.ts +9 -0
- package/dist/esm/descriptor/index.d.ts.map +1 -0
- package/dist/esm/descriptor/index.js +7 -0
- package/dist/esm/descriptor/validatePolicy.d.ts +22 -0
- package/dist/esm/descriptor/validatePolicy.d.ts.map +1 -0
- package/dist/esm/descriptor/validatePolicy.js +82 -0
- package/dist/esm/impl/bch/bch.d.ts +22 -0
- package/dist/esm/impl/bch/bch.d.ts.map +1 -0
- package/dist/esm/impl/bch/bch.js +39 -0
- package/dist/esm/impl/bch/index.d.ts +3 -0
- package/dist/esm/impl/bch/index.d.ts.map +1 -0
- package/dist/esm/impl/bch/index.js +3 -0
- package/dist/esm/impl/bch/tbch.d.ts +12 -0
- package/dist/esm/impl/bch/tbch.d.ts.map +1 -0
- package/dist/esm/impl/bch/tbch.js +11 -0
- package/dist/esm/impl/bcha/bcha.d.ts +9 -0
- package/dist/esm/impl/bcha/bcha.d.ts.map +1 -0
- package/dist/esm/impl/bcha/bcha.js +11 -0
- package/dist/esm/impl/bcha/index.d.ts +3 -0
- package/dist/esm/impl/bcha/index.d.ts.map +1 -0
- package/dist/esm/impl/bcha/index.js +3 -0
- package/dist/esm/impl/bcha/tbcha.d.ts +12 -0
- package/dist/esm/impl/bcha/tbcha.d.ts.map +1 -0
- package/dist/esm/impl/bcha/tbcha.js +11 -0
- package/dist/esm/impl/bsv/bsv.d.ts +9 -0
- package/dist/esm/impl/bsv/bsv.d.ts.map +1 -0
- package/dist/esm/impl/bsv/bsv.js +11 -0
- package/dist/esm/impl/bsv/index.d.ts +3 -0
- package/dist/esm/impl/bsv/index.d.ts.map +1 -0
- package/dist/esm/impl/bsv/index.js +3 -0
- package/dist/esm/impl/bsv/tbsv.d.ts +12 -0
- package/dist/esm/impl/bsv/tbsv.d.ts.map +1 -0
- package/dist/esm/impl/bsv/tbsv.js +11 -0
- package/dist/esm/impl/btc/btc.d.ts +15 -0
- package/dist/esm/impl/btc/btc.d.ts.map +1 -0
- package/dist/esm/impl/btc/btc.js +18 -0
- package/dist/esm/impl/btc/index.d.ts +7 -0
- package/dist/esm/impl/btc/index.d.ts.map +1 -0
- package/dist/esm/impl/btc/index.js +7 -0
- package/dist/esm/impl/btc/inscriptionBuilder.d.ts +61 -0
- package/dist/esm/impl/btc/inscriptionBuilder.d.ts.map +1 -0
- package/dist/esm/impl/btc/inscriptionBuilder.js +163 -0
- package/dist/esm/impl/btc/tbtc.d.ts +12 -0
- package/dist/esm/impl/btc/tbtc.d.ts.map +1 -0
- package/dist/esm/impl/btc/tbtc.js +11 -0
- package/dist/esm/impl/btc/tbtc4.d.ts +12 -0
- package/dist/esm/impl/btc/tbtc4.d.ts.map +1 -0
- package/dist/esm/impl/btc/tbtc4.js +11 -0
- package/dist/esm/impl/btc/tbtcbgsig.d.ts +12 -0
- package/dist/esm/impl/btc/tbtcbgsig.d.ts.map +1 -0
- package/dist/esm/impl/btc/tbtcbgsig.js +11 -0
- package/dist/esm/impl/btc/tbtcsig.d.ts +12 -0
- package/dist/esm/impl/btc/tbtcsig.d.ts.map +1 -0
- package/dist/esm/impl/btc/tbtcsig.js +11 -0
- package/dist/esm/impl/btg/btg.d.ts +9 -0
- package/dist/esm/impl/btg/btg.d.ts.map +1 -0
- package/dist/esm/impl/btg/btg.js +11 -0
- package/dist/esm/impl/btg/index.d.ts +2 -0
- package/dist/esm/impl/btg/index.d.ts.map +1 -0
- package/dist/esm/impl/btg/index.js +2 -0
- package/dist/esm/impl/dash/dash.d.ts +9 -0
- package/dist/esm/impl/dash/dash.d.ts.map +1 -0
- package/dist/esm/impl/dash/dash.js +11 -0
- package/dist/esm/impl/dash/index.d.ts +3 -0
- package/dist/esm/impl/dash/index.d.ts.map +1 -0
- package/dist/esm/impl/dash/index.js +3 -0
- package/dist/esm/impl/dash/tdash.d.ts +12 -0
- package/dist/esm/impl/dash/tdash.d.ts.map +1 -0
- package/dist/esm/impl/dash/tdash.js +11 -0
- package/dist/esm/impl/doge/doge.d.ts +35 -0
- package/dist/esm/impl/doge/doge.d.ts.map +1 -0
- package/dist/esm/impl/doge/doge.js +75 -0
- package/dist/esm/impl/doge/index.d.ts +3 -0
- package/dist/esm/impl/doge/index.d.ts.map +1 -0
- package/dist/esm/impl/doge/index.js +3 -0
- package/dist/esm/impl/doge/tdoge.d.ts +12 -0
- package/dist/esm/impl/doge/tdoge.d.ts.map +1 -0
- package/dist/esm/impl/doge/tdoge.js +11 -0
- package/dist/esm/impl/index.d.ts +10 -0
- package/dist/esm/impl/index.d.ts.map +1 -0
- package/dist/esm/impl/index.js +10 -0
- package/dist/esm/impl/ltc/index.d.ts +3 -0
- package/dist/esm/impl/ltc/index.d.ts.map +1 -0
- package/dist/esm/impl/ltc/index.js +3 -0
- package/dist/esm/impl/ltc/ltc.d.ts +8 -0
- package/dist/esm/impl/ltc/ltc.d.ts.map +1 -0
- package/dist/esm/impl/ltc/ltc.js +11 -0
- package/dist/esm/impl/ltc/tltc.d.ts +8 -0
- package/dist/esm/impl/ltc/tltc.d.ts.map +1 -0
- package/dist/esm/impl/ltc/tltc.js +11 -0
- package/dist/esm/impl/zec/index.d.ts +3 -0
- package/dist/esm/impl/zec/index.d.ts.map +1 -0
- package/dist/esm/impl/zec/index.js +3 -0
- package/dist/esm/impl/zec/tzec.d.ts +9 -0
- package/dist/esm/impl/zec/tzec.d.ts.map +1 -0
- package/dist/esm/impl/zec/tzec.js +11 -0
- package/dist/esm/impl/zec/zec.d.ts +12 -0
- package/dist/esm/impl/zec/zec.d.ts.map +1 -0
- package/dist/esm/impl/zec/zec.js +11 -0
- package/dist/esm/index.d.ts +23 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +23 -0
- package/dist/esm/keychains.d.ts +56 -0
- package/dist/esm/keychains.d.ts.map +1 -0
- package/dist/esm/keychains.js +99 -0
- package/dist/esm/names.d.ts +36 -0
- package/dist/esm/names.d.ts.map +1 -0
- package/dist/esm/names.js +184 -0
- package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts +9 -0
- package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
- package/dist/esm/offlineVault/OfflineVaultHalfSigned.js +19 -0
- package/dist/esm/offlineVault/OfflineVaultSignable.d.ts +46 -0
- package/dist/esm/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
- package/dist/esm/offlineVault/OfflineVaultSignable.js +18 -0
- package/dist/esm/offlineVault/TransactionExplanation.d.ts +16 -0
- package/dist/esm/offlineVault/TransactionExplanation.d.ts.map +1 -0
- package/dist/esm/offlineVault/TransactionExplanation.js +12 -0
- package/dist/esm/offlineVault/descriptor/index.d.ts +2 -0
- package/dist/esm/offlineVault/descriptor/index.d.ts.map +1 -0
- package/dist/esm/offlineVault/descriptor/index.js +2 -0
- package/dist/esm/offlineVault/descriptor/transaction.d.ts +39 -0
- package/dist/esm/offlineVault/descriptor/transaction.d.ts.map +1 -0
- package/dist/esm/offlineVault/descriptor/transaction.js +41 -0
- package/dist/esm/offlineVault/index.d.ts +6 -0
- package/dist/esm/offlineVault/index.d.ts.map +1 -0
- package/dist/esm/offlineVault/index.js +4 -0
- package/dist/esm/recovery/RecoveryProvider.d.ts +20 -0
- package/dist/esm/recovery/RecoveryProvider.d.ts.map +1 -0
- package/dist/esm/recovery/RecoveryProvider.js +19 -0
- package/dist/esm/recovery/backupKeyRecovery.d.ts +158 -0
- package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -0
- package/dist/esm/recovery/backupKeyRecovery.js +400 -0
- package/dist/esm/recovery/baseApi.d.ts +24 -0
- package/dist/esm/recovery/baseApi.d.ts.map +1 -0
- package/dist/esm/recovery/baseApi.js +64 -0
- package/dist/esm/recovery/coingeckoApi.d.ts +6 -0
- package/dist/esm/recovery/coingeckoApi.d.ts.map +1 -0
- package/dist/esm/recovery/coingeckoApi.js +40 -0
- package/dist/esm/recovery/crossChainRecovery.d.ts +97 -0
- package/dist/esm/recovery/crossChainRecovery.d.ts.map +1 -0
- package/dist/esm/recovery/crossChainRecovery.js +292 -0
- package/dist/esm/recovery/index.d.ts +7 -0
- package/dist/{src → esm}/recovery/index.d.ts.map +1 -1
- package/dist/esm/recovery/index.js +7 -0
- package/dist/esm/recovery/mempoolApi.d.ts +7 -0
- package/dist/{src → esm}/recovery/mempoolApi.d.ts.map +1 -1
- package/dist/esm/recovery/mempoolApi.js +29 -0
- package/dist/esm/recovery/psbt.d.ts +62 -0
- package/dist/esm/recovery/psbt.d.ts.map +1 -0
- package/dist/esm/recovery/psbt.js +145 -0
- package/dist/esm/tnumber.d.ts +4 -0
- package/dist/esm/tnumber.d.ts.map +1 -0
- package/dist/esm/tnumber.js +9 -0
- package/dist/esm/transaction/bip322.d.ts +27 -0
- package/dist/esm/transaction/bip322.d.ts.map +1 -0
- package/dist/esm/transaction/bip322.js +100 -0
- package/dist/esm/transaction/common/verifyPayGoAmount.d.ts +1 -0
- package/dist/esm/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
- package/dist/esm/transaction/common/verifyPayGoAmount.js +1 -0
- package/dist/esm/transaction/decode.d.ts +25 -0
- package/dist/esm/transaction/decode.d.ts.map +1 -0
- package/dist/esm/transaction/decode.js +66 -0
- package/dist/esm/transaction/descriptor/explainPsbt.d.ts +5 -0
- package/dist/esm/transaction/descriptor/explainPsbt.d.ts.map +1 -0
- package/dist/esm/transaction/descriptor/explainPsbt.js +44 -0
- package/dist/esm/transaction/descriptor/index.d.ts +7 -0
- package/dist/esm/transaction/descriptor/index.d.ts.map +1 -0
- package/dist/esm/transaction/descriptor/index.js +6 -0
- package/dist/esm/transaction/descriptor/parse.d.ts +18 -0
- package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -0
- package/dist/esm/transaction/descriptor/parse.js +82 -0
- package/dist/esm/transaction/descriptor/parseToAmountType.d.ts +14 -0
- package/dist/esm/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
- package/dist/esm/transaction/descriptor/parseToAmountType.js +55 -0
- package/dist/esm/transaction/descriptor/recipient.d.ts +5 -0
- package/dist/esm/transaction/descriptor/recipient.d.ts.map +1 -0
- package/dist/esm/transaction/descriptor/recipient.js +2 -0
- package/dist/esm/transaction/descriptor/signPsbt.d.ts +25 -0
- package/dist/esm/transaction/descriptor/signPsbt.d.ts.map +1 -0
- package/dist/esm/transaction/descriptor/signPsbt.js +39 -0
- package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +36 -0
- package/dist/esm/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/descriptor/verifyTransaction.js +70 -0
- package/dist/esm/transaction/explainTransaction.d.ts +21 -0
- package/dist/esm/transaction/explainTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/explainTransaction.js +56 -0
- package/dist/esm/transaction/fetchInputs.d.ts +27 -0
- package/dist/esm/transaction/fetchInputs.d.ts.map +1 -0
- package/dist/esm/transaction/fetchInputs.js +74 -0
- package/dist/esm/transaction/fixedScript/SigningError.d.ts +24 -0
- package/dist/esm/transaction/fixedScript/SigningError.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/SigningError.js +26 -0
- package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts +45 -0
- package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/explainPsbtWasm.js +144 -0
- package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +83 -0
- package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/explainTransaction.js +309 -0
- package/dist/esm/transaction/fixedScript/index.d.ts +10 -0
- package/dist/esm/transaction/fixedScript/index.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/index.js +9 -0
- package/dist/esm/transaction/fixedScript/musig2.d.ts +4 -0
- package/dist/esm/transaction/fixedScript/musig2.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/musig2.js +2 -0
- package/dist/esm/transaction/fixedScript/parseOutput.d.ts +28 -0
- package/dist/esm/transaction/fixedScript/parseOutput.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/parseOutput.js +209 -0
- package/dist/esm/transaction/fixedScript/parseTransaction.d.ts +8 -0
- package/dist/esm/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/parseTransaction.js +222 -0
- package/dist/esm/transaction/fixedScript/replayProtection.d.ts +10 -0
- package/dist/esm/transaction/fixedScript/replayProtection.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/replayProtection.js +38 -0
- package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts +32 -0
- package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/signLegacyTransaction.js +123 -0
- package/dist/esm/transaction/fixedScript/signPsbtUtxolib.d.ts +20 -0
- package/dist/esm/transaction/fixedScript/signPsbtUtxolib.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/signPsbtUtxolib.js +117 -0
- package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts +20 -0
- package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/signPsbtWasm.js +111 -0
- package/dist/esm/transaction/fixedScript/signTransaction.d.ts +34 -0
- package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/signTransaction.js +71 -0
- package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts +21 -0
- package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/verifyTransaction.js +180 -0
- package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts +9 -0
- package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
- package/dist/esm/transaction/getPayGoVerificationPubkey.js +17 -0
- package/dist/esm/transaction/index.d.ts +10 -0
- package/dist/esm/transaction/index.d.ts.map +1 -0
- package/dist/esm/transaction/index.js +10 -0
- package/dist/esm/transaction/outputDifference.d.ts +44 -0
- package/dist/esm/transaction/outputDifference.d.ts.map +1 -0
- package/dist/esm/transaction/outputDifference.js +45 -0
- package/dist/esm/transaction/parseTransaction.d.ts +4 -0
- package/dist/esm/transaction/parseTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/parseTransaction.js +12 -0
- package/dist/esm/transaction/recipient.d.ts +34 -0
- package/dist/esm/transaction/recipient.d.ts.map +1 -0
- package/dist/esm/transaction/recipient.js +61 -0
- package/dist/esm/transaction/signTransaction.d.ts +6 -0
- package/dist/esm/transaction/signTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/signTransaction.js +73 -0
- package/dist/esm/transaction/types.d.ts +50 -0
- package/dist/esm/transaction/types.d.ts.map +1 -0
- package/dist/esm/transaction/types.js +4 -0
- package/dist/esm/transaction/verifyTransaction.d.ts +4 -0
- package/dist/esm/transaction/verifyTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/verifyTransaction.js +14 -0
- package/dist/esm/unspent.d.ts +59 -0
- package/dist/esm/unspent.d.ts.map +1 -0
- package/dist/esm/unspent.js +15 -0
- package/dist/esm/verifyKey.d.ts +21 -0
- package/dist/esm/verifyKey.d.ts.map +1 -0
- package/dist/esm/verifyKey.js +100 -0
- package/dist/esm/wallet.d.ts +15 -0
- package/dist/esm/wallet.d.ts.map +1 -0
- package/dist/esm/wallet.js +5 -0
- package/dist/esm/wasmUtil.d.ts +34 -0
- package/dist/esm/wasmUtil.d.ts.map +1 -0
- package/dist/esm/wasmUtil.js +54 -0
- package/package.json +48 -20
- package/.eslintignore +0 -5
- package/CHANGELOG.md +0 -235
- package/dist/src/abstractUtxoCoin.d.ts +0 -392
- package/dist/src/abstractUtxoCoin.d.ts.map +0 -1
- package/dist/src/abstractUtxoCoin.js +0 -931
- package/dist/src/config.js +0 -14
- package/dist/src/index.d.ts +0 -6
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -18
- package/dist/src/parseOutput.d.ts +0 -22
- package/dist/src/parseOutput.d.ts.map +0 -1
- package/dist/src/parseOutput.js +0 -181
- package/dist/src/recovery/RecoveryProvider.d.ts.map +0 -1
- package/dist/src/recovery/RecoveryProvider.js +0 -24
- package/dist/src/recovery/backupKeyRecovery.d.ts +0 -62
- package/dist/src/recovery/backupKeyRecovery.d.ts.map +0 -1
- package/dist/src/recovery/backupKeyRecovery.js +0 -293
- package/dist/src/recovery/baseApi.d.ts.map +0 -1
- package/dist/src/recovery/baseApi.js +0 -73
- package/dist/src/recovery/coingeckoApi.d.ts.map +0 -1
- package/dist/src/recovery/coingeckoApi.js +0 -47
- package/dist/src/recovery/crossChainRecovery.d.ts.map +0 -1
- package/dist/src/recovery/crossChainRecovery.js +0 -294
- package/dist/src/recovery/mempoolApi.js +0 -33
- package/dist/src/recovery/smartbitApi.d.ts +0 -11
- package/dist/src/recovery/smartbitApi.d.ts.map +0 -1
- package/dist/src/recovery/smartbitApi.js +0 -36
- package/dist/src/replayProtection.d.ts +0 -4
- package/dist/src/replayProtection.d.ts.map +0 -1
- package/dist/src/replayProtection.js +0 -21
- package/dist/src/sign.d.ts +0 -31
- package/dist/src/sign.d.ts.map +0 -1
- package/dist/src/sign.js +0 -104
- package/dist/tsconfig.tsbuildinfo +0 -8021
- /package/dist/{src → cjs/src}/config.d.ts +0 -0
- /package/dist/{src → cjs/src}/recovery/mempoolApi.d.ts +0 -0
- /package/dist/{src → esm}/config.d.ts.map +0 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
|
+
import { bip322 } from '@bitgo-beta/utxo-core';
|
|
3
|
+
import { bitgo } from '@bitgo-beta/utxo-lib';
|
|
4
|
+
import { BIP32 } from '@bitgo/wasm-utxo';
|
|
5
|
+
import * as utxocore from '@bitgo-beta/utxo-core';
|
|
6
|
+
import { toExtendedAddressFormat } from '../recipient';
|
|
7
|
+
import { getPayGoVerificationPubkey } from '../getPayGoVerificationPubkey';
|
|
8
|
+
import { toBip32Triple } from '../../keychains';
|
|
9
|
+
import { toUtxolibBIP32 } from '../../wasmUtil';
|
|
10
|
+
import { getNetworkFromCoinName } from '../../names';
|
|
11
|
+
function toChangeOutput(txOutput, coinName, changeInfo) {
|
|
12
|
+
if (!changeInfo) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
const address = toExtendedAddressFormat(txOutput.script, coinName);
|
|
16
|
+
const change = changeInfo.find((change) => change.address === address);
|
|
17
|
+
if (!change) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
address,
|
|
22
|
+
amount: txOutput.value.toString(),
|
|
23
|
+
chain: change.chain,
|
|
24
|
+
index: change.index,
|
|
25
|
+
external: false,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function outputSum(outputs) {
|
|
29
|
+
return outputs.reduce((sum, output) => sum + BigInt(output.amount), BigInt(0));
|
|
30
|
+
}
|
|
31
|
+
function explainCommon(tx, params, coinName) {
|
|
32
|
+
const displayOrder = ['id', 'outputAmount', 'changeAmount', 'outputs', 'changeOutputs'];
|
|
33
|
+
const changeOutputs = [];
|
|
34
|
+
const customChangeOutputs = [];
|
|
35
|
+
const externalOutputs = [];
|
|
36
|
+
const { changeInfo, customChangeInfo } = params;
|
|
37
|
+
tx.outs.forEach((currentOutput) => {
|
|
38
|
+
// Try to encode the script pubkey with an address. If it fails, try to parse it as an OP_RETURN output with the prefix.
|
|
39
|
+
// If that fails, then it is an unrecognized scriptPubkey and should fail
|
|
40
|
+
const currentAddress = toExtendedAddressFormat(currentOutput.script, coinName);
|
|
41
|
+
const currentAmount = BigInt(currentOutput.value);
|
|
42
|
+
const changeOutput = toChangeOutput(currentOutput, coinName, changeInfo);
|
|
43
|
+
if (changeOutput) {
|
|
44
|
+
changeOutputs.push(changeOutput);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const customChangeOutput = toChangeOutput(currentOutput, coinName, customChangeInfo);
|
|
48
|
+
if (customChangeOutput) {
|
|
49
|
+
customChangeOutputs.push(customChangeOutput);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
externalOutputs.push({
|
|
53
|
+
address: currentAddress,
|
|
54
|
+
amount: currentAmount.toString(),
|
|
55
|
+
// If changeInfo has a length greater than or equal to zero, it means that the change information
|
|
56
|
+
// was provided to the function but the output was not identified as change. In this case,
|
|
57
|
+
// the output is external, and we can set it as so. If changeInfo is undefined, it means we were
|
|
58
|
+
// given no information about change outputs, so we can't determine anything about the output,
|
|
59
|
+
// so we leave it undefined.
|
|
60
|
+
external: changeInfo ? true : undefined,
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
const outputDetails = {
|
|
64
|
+
outputs: externalOutputs,
|
|
65
|
+
outputAmount: outputSum(externalOutputs).toString(),
|
|
66
|
+
changeOutputs,
|
|
67
|
+
changeAmount: outputSum(changeOutputs).toString(),
|
|
68
|
+
customChangeAmount: outputSum(customChangeOutputs).toString(),
|
|
69
|
+
customChangeOutputs,
|
|
70
|
+
};
|
|
71
|
+
let fee;
|
|
72
|
+
let locktime;
|
|
73
|
+
if (params.feeInfo) {
|
|
74
|
+
displayOrder.push('fee');
|
|
75
|
+
fee = params.feeInfo;
|
|
76
|
+
}
|
|
77
|
+
if (Number.isInteger(tx.locktime) && tx.locktime > 0) {
|
|
78
|
+
displayOrder.push('locktime');
|
|
79
|
+
locktime = tx.locktime;
|
|
80
|
+
}
|
|
81
|
+
return { displayOrder, id: tx.getId(), ...outputDetails, fee, locktime };
|
|
82
|
+
}
|
|
83
|
+
function getRootWalletKeys(params) {
|
|
84
|
+
if (params.pubs instanceof bitgo.RootWalletKeys) {
|
|
85
|
+
return params.pubs;
|
|
86
|
+
}
|
|
87
|
+
const keys = params.pubs?.map((xpub) => toUtxolibBIP32(BIP32.fromBase58(xpub)));
|
|
88
|
+
return keys && keys.length === 3 ? new bitgo.RootWalletKeys(keys) : undefined;
|
|
89
|
+
}
|
|
90
|
+
function getPsbtInputSignaturesCount(psbt, params) {
|
|
91
|
+
const rootWalletKeys = getRootWalletKeys(params);
|
|
92
|
+
return rootWalletKeys
|
|
93
|
+
? bitgo.getSignatureValidationArrayPsbt(psbt, rootWalletKeys).map((sv) => sv[1].filter((v) => v).length)
|
|
94
|
+
: Array(psbt.data.inputs.length).fill(0);
|
|
95
|
+
}
|
|
96
|
+
function getTxInputSignaturesCount(tx, params, coinName) {
|
|
97
|
+
const network = getNetworkFromCoinName(coinName);
|
|
98
|
+
const prevOutputs = params.txInfo?.unspents?.map((u) => bitgo.toOutput(u, network));
|
|
99
|
+
const rootWalletKeys = getRootWalletKeys(params);
|
|
100
|
+
const { unspents = [] } = params.txInfo ?? {};
|
|
101
|
+
// get the number of signatures per input
|
|
102
|
+
return tx.ins.map((input, idx) => {
|
|
103
|
+
if (unspents.length !== tx.ins.length) {
|
|
104
|
+
return 0;
|
|
105
|
+
}
|
|
106
|
+
if (!prevOutputs) {
|
|
107
|
+
throw new Error(`invalid state`);
|
|
108
|
+
}
|
|
109
|
+
if (!rootWalletKeys) {
|
|
110
|
+
// no pub keys or incorrect number of pub keys
|
|
111
|
+
return 0;
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
return bitgo.verifySignatureWithUnspent(tx, idx, unspents, rootWalletKeys).filter((v) => v).length;
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
// some other error occurred and we can't validate the signatures
|
|
118
|
+
return 0;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
function getChainAndIndexFromBip32Derivations(output) {
|
|
123
|
+
const derivations = output.bip32Derivation ?? output.tapBip32Derivation ?? undefined;
|
|
124
|
+
if (!derivations) {
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
const paths = derivations.map((d) => d.path);
|
|
128
|
+
if (!paths || paths.length !== 3) {
|
|
129
|
+
throw new Error('expected 3 paths in bip32Derivation or tapBip32Derivation');
|
|
130
|
+
}
|
|
131
|
+
if (!paths.every((p) => paths[0] === p)) {
|
|
132
|
+
throw new Error('expected all paths to be the same');
|
|
133
|
+
}
|
|
134
|
+
paths.forEach((path) => {
|
|
135
|
+
if (paths[0] !== path) {
|
|
136
|
+
throw new Error('Unable to get a single chain and index on the output because there are different paths for different keys');
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
return utxolib.bitgo.getChainAndIndexFromPath(paths[0]);
|
|
140
|
+
}
|
|
141
|
+
function getChangeInfo(psbt, walletKeys) {
|
|
142
|
+
let utxolibKeys;
|
|
143
|
+
try {
|
|
144
|
+
utxolibKeys = walletKeys
|
|
145
|
+
? walletKeys.map((k) => toUtxolibBIP32(k))
|
|
146
|
+
: utxolib.bitgo.getSortedRootNodes(psbt);
|
|
147
|
+
}
|
|
148
|
+
catch (e) {
|
|
149
|
+
if (e instanceof utxolib.bitgo.ErrorNoMultiSigInputFound) {
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
throw e;
|
|
153
|
+
}
|
|
154
|
+
return utxolib.bitgo.findWalletOutputIndices(psbt, utxolibKeys).map((i) => {
|
|
155
|
+
const derivationInformation = getChainAndIndexFromBip32Derivations(psbt.data.outputs[i]);
|
|
156
|
+
if (!derivationInformation) {
|
|
157
|
+
throw new Error('could not find derivation information on bip32Derivation or tapBip32Derivation');
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
address: utxolib.address.fromOutputScript(psbt.txOutputs[i].script, psbt.network),
|
|
161
|
+
external: false,
|
|
162
|
+
...derivationInformation,
|
|
163
|
+
};
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Extract PayGo address proof information from the PSBT if present
|
|
168
|
+
* @returns Information about the PayGo proof, including the output index and address
|
|
169
|
+
*/
|
|
170
|
+
function getPayGoVerificationInfo(psbt, coinName) {
|
|
171
|
+
let outputIndex = undefined;
|
|
172
|
+
let address = undefined;
|
|
173
|
+
// Check if this PSBT has any PayGo address proofs
|
|
174
|
+
if (!utxocore.paygo.psbtOutputIncludesPaygoAddressProof(psbt)) {
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
// This pulls the pubkey depending on given network
|
|
178
|
+
const verificationPubkey = getPayGoVerificationPubkey(coinName);
|
|
179
|
+
// find which output index that contains the PayGo proof
|
|
180
|
+
outputIndex = utxocore.paygo.getPayGoAddressProofOutputIndex(psbt);
|
|
181
|
+
if (outputIndex === undefined || !verificationPubkey) {
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
184
|
+
const network = getNetworkFromCoinName(coinName);
|
|
185
|
+
const output = psbt.txOutputs[outputIndex];
|
|
186
|
+
address = utxolib.address.fromOutputScript(output.script, network);
|
|
187
|
+
if (!address) {
|
|
188
|
+
throw new Error(`Can not derive address ${address} Pay Go Attestation.`);
|
|
189
|
+
}
|
|
190
|
+
return { outputIndex, verificationPubkey };
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Extract the BIP322 messages and addresses from the PSBT inputs and perform
|
|
194
|
+
* verification on the transaction to ensure that it meets the BIP322 requirements.
|
|
195
|
+
* @returns An array of objects containing the message and address for each input,
|
|
196
|
+
* or undefined if no BIP322 messages are found.
|
|
197
|
+
*/
|
|
198
|
+
function getBip322MessageInfoAndVerify(psbt, coinName) {
|
|
199
|
+
const network = getNetworkFromCoinName(coinName);
|
|
200
|
+
const bip322Messages = [];
|
|
201
|
+
for (let i = 0; i < psbt.data.inputs.length; i++) {
|
|
202
|
+
const message = bip322.getBip322ProofMessageAtIndex(psbt, i);
|
|
203
|
+
if (message) {
|
|
204
|
+
const input = psbt.data.inputs[i];
|
|
205
|
+
if (!input.witnessUtxo) {
|
|
206
|
+
throw new Error(`Missing witnessUtxo for input index ${i}`);
|
|
207
|
+
}
|
|
208
|
+
const scriptPubKey = input.witnessUtxo.script;
|
|
209
|
+
// Verify that the toSpend transaction can be recreated in the PSBT and is encoded correctly in the nonWitnessUtxo
|
|
210
|
+
const toSpend = bip322.buildToSpendTransaction(scriptPubKey, message);
|
|
211
|
+
// Verify that the toSpend transaction ID matches the input's referenced transaction ID
|
|
212
|
+
if (toSpend.getId() !== utxolib.bitgo.getOutputIdForInput(psbt.txInputs[i]).txid) {
|
|
213
|
+
throw new Error(`ToSpend transaction ID does not match the input at index ${i}`);
|
|
214
|
+
}
|
|
215
|
+
// Verify the input specifics
|
|
216
|
+
if (psbt.txInputs[i].sequence !== 0) {
|
|
217
|
+
throw new Error(`Unexpected sequence number at input index ${i}: ${psbt.txInputs[i].sequence}. Expected 0.`);
|
|
218
|
+
}
|
|
219
|
+
if (psbt.txInputs[i].index !== 0) {
|
|
220
|
+
throw new Error(`Unexpected input index at position ${i}: ${psbt.txInputs[i].index}. Expected 0.`);
|
|
221
|
+
}
|
|
222
|
+
bip322Messages.push({
|
|
223
|
+
message: message.toString('utf8'),
|
|
224
|
+
address: utxolib.address.fromOutputScript(scriptPubKey, network),
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
if (bip322Messages.length > 0) {
|
|
229
|
+
// If there is a BIP322 message in any input, all inputs must have one.
|
|
230
|
+
if (bip322Messages.length !== psbt.data.inputs.length) {
|
|
231
|
+
throw new Error('Inconsistent BIP322 messages across inputs.');
|
|
232
|
+
}
|
|
233
|
+
// Verify the transaction specifics for BIP322
|
|
234
|
+
if (psbt.version !== 0 && psbt.version !== 2) {
|
|
235
|
+
throw new Error(`Unsupported PSBT version for BIP322: ${psbt.version}. Expected 0 `);
|
|
236
|
+
}
|
|
237
|
+
if (psbt.data.outputs.length !== 1 ||
|
|
238
|
+
psbt.txOutputs[0].script.toString('hex') !== '6a' ||
|
|
239
|
+
psbt.txOutputs[0].value !== 0n) {
|
|
240
|
+
throw new Error(`Invalid PSBT outputs for BIP322. Expected exactly one OP_RETURN output with zero value.`);
|
|
241
|
+
}
|
|
242
|
+
return bip322Messages;
|
|
243
|
+
}
|
|
244
|
+
return undefined;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Decompose a raw psbt into useful information, such as the total amounts,
|
|
248
|
+
* change amounts, and transaction outputs.
|
|
249
|
+
*
|
|
250
|
+
* @param psbt {bitgo.UtxoPsbt} The PSBT to explain
|
|
251
|
+
* @param pubs {bitgo.RootWalletKeys | string[]} The public keys to use for the explanation
|
|
252
|
+
* @param coinName {UtxoCoinName} The coin name to use for the explanation
|
|
253
|
+
* @param strict {boolean} Whether to throw an error if the PayGo address proof is invalid
|
|
254
|
+
*/
|
|
255
|
+
export function explainPsbt(psbt, params, coinName, { strict = true } = {}) {
|
|
256
|
+
const network = getNetworkFromCoinName(coinName);
|
|
257
|
+
const payGoVerificationInfo = getPayGoVerificationInfo(psbt, coinName);
|
|
258
|
+
if (payGoVerificationInfo) {
|
|
259
|
+
try {
|
|
260
|
+
utxocore.paygo.verifyPayGoAddressProof(psbt, payGoVerificationInfo.outputIndex, Buffer.from(BIP32.fromBase58(payGoVerificationInfo.verificationPubkey).publicKey));
|
|
261
|
+
}
|
|
262
|
+
catch (e) {
|
|
263
|
+
if (strict) {
|
|
264
|
+
throw e;
|
|
265
|
+
}
|
|
266
|
+
console.error(e);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
const messages = getBip322MessageInfoAndVerify(psbt, coinName);
|
|
270
|
+
const changeInfo = getChangeInfo(psbt);
|
|
271
|
+
const customChangeInfo = params.customChangePubs
|
|
272
|
+
? getChangeInfo(psbt, toBip32Triple(params.customChangePubs))
|
|
273
|
+
: undefined;
|
|
274
|
+
const tx = psbt.getUnsignedTx();
|
|
275
|
+
const common = explainCommon(tx, { ...params, changeInfo, customChangeInfo }, coinName);
|
|
276
|
+
const inputSignaturesCount = getPsbtInputSignaturesCount(psbt, params);
|
|
277
|
+
// Set fee from subtracting inputs from outputs
|
|
278
|
+
const outputAmount = psbt.txOutputs.reduce((cumulative, curr) => cumulative + BigInt(curr.value), BigInt(0));
|
|
279
|
+
const inputAmount = psbt.txInputs.reduce((cumulative, txInput, i) => {
|
|
280
|
+
const data = psbt.data.inputs[i];
|
|
281
|
+
if (data.witnessUtxo) {
|
|
282
|
+
return cumulative + BigInt(data.witnessUtxo.value);
|
|
283
|
+
}
|
|
284
|
+
else if (data.nonWitnessUtxo) {
|
|
285
|
+
const tx = bitgo.createTransactionFromBuffer(data.nonWitnessUtxo, network, { amountType: 'bigint' });
|
|
286
|
+
return cumulative + BigInt(tx.outs[txInput.index].value);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
throw new Error('could not find value on input');
|
|
290
|
+
}
|
|
291
|
+
}, BigInt(0));
|
|
292
|
+
return {
|
|
293
|
+
...common,
|
|
294
|
+
fee: (inputAmount - outputAmount).toString(),
|
|
295
|
+
inputSignatures: inputSignaturesCount,
|
|
296
|
+
signatures: inputSignaturesCount.reduce((prev, curr) => (curr > prev ? curr : prev), 0),
|
|
297
|
+
messages,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
export function explainLegacyTx(tx, params, coinName) {
|
|
301
|
+
const common = explainCommon(tx, params, coinName);
|
|
302
|
+
const inputSignaturesCount = getTxInputSignaturesCount(tx, params, coinName);
|
|
303
|
+
return {
|
|
304
|
+
...common,
|
|
305
|
+
inputSignatures: inputSignaturesCount,
|
|
306
|
+
signatures: inputSignaturesCount.reduce((prev, curr) => (curr > prev ? curr : prev), 0),
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpblRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L2V4cGxhaW5UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFN0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxRQUFRLE1BQU0sdUJBQXVCLENBQUM7QUFLbEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHNCQUFzQixFQUFnQixNQUFNLGFBQWEsQ0FBQztBQStEbkUsU0FBUyxjQUFjLENBQ3JCLFFBQTJDLEVBQzNDLFFBQXNCLEVBQ3RCLFVBQTJDO0lBRTNDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNa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LENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDeEYsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IGJpcDMyMiB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tY29yZSc7XG5pbXBvcnQgeyBiaXRnbyB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IElUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBUcmlwbGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCSVAzMiB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuaW1wb3J0ICogYXMgdXR4b2NvcmUgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1jb3JlJztcblxuaW1wb3J0IHR5cGUgeyBCaXAzMjJNZXNzYWdlIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgdHlwZSB7IE91dHB1dCwgRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFVuc3BlbnQgfSBmcm9tICcuLi8uLi91bnNwZW50JztcbmltcG9ydCB7IHRvRXh0ZW5kZWRBZGRyZXNzRm9ybWF0IH0gZnJvbSAnLi4vcmVjaXBpZW50JztcbmltcG9ydCB7IGdldFBheUdvVmVyaWZpY2F0aW9uUHVia2V5IH0gZnJvbSAnLi4vZ2V0UGF5R29WZXJpZmljYXRpb25QdWJrZXknO1xuaW1wb3J0IHsgdG9CaXAzMlRyaXBsZSB9IGZyb20gJy4uLy4uL2tleWNoYWlucyc7XG5pbXBvcnQgeyB0b1V0eG9saWJCSVAzMiB9IGZyb20gJy4uLy4uL3dhc21VdGlsJztcbmltcG9ydCB7IGdldE5ldHdvcmtGcm9tQ29pbk5hbWUsIFV0eG9Db2luTmFtZSB9IGZyb20gJy4uLy4uL25hbWVzJztcblxuLy8gPT09PT0gVHJhbnNhY3Rpb24gRXhwbGFuYXRpb24gVHlwZSBEZWZpbml0aW9ucyA9PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0VXR4b1RyYW5zYWN0aW9uRXhwbGFuYXRpb248VEZlZSA9IHN0cmluZywgVENoYW5nZU91dHB1dCBleHRlbmRzIE91dHB1dCA9IE91dHB1dD5cbiAgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxURmVlLCBzdHJpbmc+IHtcbiAgLyoqIE5PVEU6IHRoaXMgYWN0dWFsbHkgb25seSBjYXB0dXJlcyBleHRlcm5hbCBvdXRwdXRzICovXG4gIG91dHB1dHM6IE91dHB1dFtdO1xuICBjaGFuZ2VPdXRwdXRzOiBUQ2hhbmdlT3V0cHV0W107XG4gIGN1c3RvbUNoYW5nZU91dHB1dHM/OiBUQ2hhbmdlT3V0cHV0W107XG4gIGN1c3RvbUNoYW5nZUFtb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogQklQMzIyIG1lc3NhZ2VzIGV4dHJhY3RlZCBmcm9tIHRoZSB0cmFuc2FjdGlvbiBpbnB1dHMuXG4gICAqIFRoZXNlIG1lc3NhZ2VzIGFyZSB1c2VkIGZvciB2ZXJpZnlpbmcgdGhlIHRyYW5zYWN0aW9uIGFnYWluc3QgdGhlIEJJUDMyMiBzdGFuZGFyZC5cbiAgICovXG4gIG1lc3NhZ2VzPzogQmlwMzIyTWVzc2FnZVtdO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgLSB0aGUgc2lnbmF0dXJlIGZpZWxkcyBhcmUgbm90IHZlcnkgdXNlZnVsICovXG5pbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbldpdGhTaWduYXR1cmVzPFRGZWUgPSBzdHJpbmcsIFRDaGFuZ2VPdXRwdXQgZXh0ZW5kcyBPdXRwdXQgPSBPdXRwdXQ+XG4gIGV4dGVuZHMgQWJzdHJhY3RVdHhvVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxURmVlLCBUQ2hhbmdlT3V0cHV0PiB7XG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVudXNlZCBvdXRzaWRlIG9mIHRlc3RzICovXG4gIGxvY2t0aW1lPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgaW5wdXQgc2lnbmF0dXJlcyBwZXIgaW5wdXQuXG4gICAqIEBkZXByZWNhdGVkIC0gdGhpcyBpcyBub3QgdmVyeSB1c2VmdWwgd2l0aG91dCBrbm93aW5nIHdobyBzaWduZWQgZWFjaCBpbnB1dC5cbiAgICovXG4gIGlucHV0U2lnbmF0dXJlczogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIEhpZ2hlc3QgaW5wdXQgc2lnbmF0dXJlIGNvdW50IGZvciB0aGUgdHJhbnNhY3Rpb25cbiAgICogQGRlcHJlY2F0ZWQgLSB0aGlzIGlzIG5vdCB2ZXJ5IHVzZWZ1bCB3aXRob3V0IGtub3dpbmcgd2hvIHNpZ25lZCBlYWNoIGlucHV0LlxuICAgKi9cbiAgc2lnbmF0dXJlczogbnVtYmVyO1xufVxuXG4vKiogRm9yIG91ciB3YXNtIGJhY2tlbmQsIHdlIGRvIG5vdCByZXR1cm4gdGhlIGRlcHJlY2F0ZWQgZmllbGRzLiBXZSBzZXQgVEZlZSB0byBzdHJpbmcgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiAqL1xuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbldhc20gPSBBYnN0cmFjdFV0eG9UcmFuc2FjdGlvbkV4cGxhbmF0aW9uPHN0cmluZywgRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQ+ICYge1xuICBpbnB1dHM6IEFycmF5PHsgYWRkcmVzczogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyBzaWduZWRCeTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfT47XG4gIGlucHV0QW1vdW50OiBzdHJpbmc7XG59O1xuXG4vKiogV2hlbiBwYXJzaW5nIHRoZSBsZWdhY3kgdHJhbnNhY3Rpb24gZm9ybWF0LCB3ZSBjYW5ub3QgYWx3YXlzIGluZmVyIHRoZSBmZWUgc28gd2Ugc2V0IGl0IHRvIHN0cmluZyB8IHVuZGVmaW5lZCAqL1xuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25FeHBsYW5hdGlvblV0eG9saWJMZWdhY3kgPSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uV2l0aFNpZ25hdHVyZXM8c3RyaW5nIHwgdW5kZWZpbmVkPjtcblxuLyoqIFdoZW4gcGFyc2luZyBhIFBTQlQsIHdlIGNhbiBpbmZlciB0aGUgZmVlIHNvIHdlIHNldCBURmVlIHRvIHN0cmluZy4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb25VdHhvbGliUHNidCA9IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25XaXRoU2lnbmF0dXJlczxzdHJpbmc+O1xuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uRGVzY3JpcHRvciA9IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25XaXRoU2lnbmF0dXJlczxzdHJpbmcsIE91dHB1dD47XG5cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPVxuICB8IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25VdHhvbGliTGVnYWN5XG4gIHwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvblV0eG9saWJQc2J0XG4gIHwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbldhc207XG5cbmV4cG9ydCB0eXBlIENoYW5nZUFkZHJlc3NJbmZvID0ge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIGNoYWluOiBudW1iZXI7XG4gIGluZGV4OiBudW1iZXI7XG59O1xuXG5mdW5jdGlvbiB0b0NoYW5nZU91dHB1dChcbiAgdHhPdXRwdXQ6IHV0eG9saWIuVHhPdXRwdXQ8bnVtYmVyIHwgYmlnaW50PixcbiAgY29pbk5hbWU6IFV0eG9Db2luTmFtZSxcbiAgY2hhbmdlSW5mbzogQ2hhbmdlQWRkcmVzc0luZm9bXSB8IHVuZGVmaW5lZFxuKTogRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQgfCB1bmRlZmluZWQge1xuICBpZiAoIWNoYW5nZUluZm8pIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IGFkZHJlc3MgPSB0b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdCh0eE91dHB1dC5zY3JpcHQsIGNvaW5OYW1lKTtcbiAgY29uc3QgY2hhbmdlID0gY2hhbmdlSW5mby5maW5kKChjaGFuZ2UpID0+IGNoYW5nZS5hZGRyZXNzID09PSBhZGRyZXNzKTtcbiAgaWYgKCFjaGFuZ2UpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB7XG4gICAgYWRkcmVzcyxcbiAgICBhbW91bnQ6IHR4T3V0cHV0LnZhbHVlLnRvU3RyaW5nKCksXG4gICAgY2hhaW46IGNoYW5nZS5jaGFpbixcbiAgICBpbmRleDogY2hhbmdlLmluZGV4LFxuICAgIGV4dGVybmFsOiBmYWxzZSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gb3V0cHV0U3VtKG91dHB1dHM6IHsgYW1vdW50OiBzdHJpbmcgfCBudW1iZXIgfVtdKTogYmlnaW50IHtcbiAgcmV0dXJuIG91dHB1dHMucmVkdWNlKChzdW0sIG91dHB1dCkgPT4gc3VtICsgQmlnSW50KG91dHB1dC5hbW91bnQpLCBCaWdJbnQoMCkpO1xufVxuXG5mdW5jdGlvbiBleHBsYWluQ29tbW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eDogYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBwYXJhbXM6IHtcbiAgICBjaGFuZ2VJbmZvPzogQ2hhbmdlQWRkcmVzc0luZm9bXTtcbiAgICBjdXN0b21DaGFuZ2VJbmZvPzogQ2hhbmdlQWRkcmVzc0luZm9bXTtcbiAgICBmZWVJbmZvPzogc3RyaW5nO1xuICB9LFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lXG4pIHtcbiAgY29uc3QgZGlzcGxheU9yZGVyID0gWydpZCcsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cyddO1xuICBjb25zdCBjaGFuZ2VPdXRwdXRzOiBGaXhlZFNjcmlwdFdhbGxldE91dHB1dFtdID0gW107XG4gIGNvbnN0IGN1c3RvbUNoYW5nZU91dHB1dHM6IEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0W10gPSBbXTtcbiAgY29uc3QgZXh0ZXJuYWxPdXRwdXRzOiBPdXRwdXRbXSA9IFtdO1xuXG4gIGNvbnN0IHsgY2hhbmdlSW5mbywgY3VzdG9tQ2hhbmdlSW5mbyB9ID0gcGFyYW1zO1xuXG4gIHR4Lm91dHMuZm9yRWFjaCgoY3VycmVudE91dHB1dCkgPT4ge1xuICAgIC8vIFRyeSB0byBlbmNvZGUgdGhlIHNjcmlwdCBwdWJrZXkgd2l0aCBhbiBhZGRyZXNzLiBJZiBpdCBmYWlscywgdHJ5IHRvIHBhcnNlIGl0IGFzIGFuIE9QX1JFVFVSTiBvdXRwdXQgd2l0aCB0aGUgcHJlZml4LlxuICAgIC8vIElmIHRoYXQgZmFpbHMsIHRoZW4gaXQgaXMgYW4gdW5yZWNvZ25pemVkIHNjcmlwdFB1YmtleSBhbmQgc2hvdWxkIGZhaWxcbiAgICBjb25zdCBjdXJyZW50QWRkcmVzcyA9IHRvRXh0ZW5kZWRBZGRyZXNzRm9ybWF0KGN1cnJlbnRPdXRwdXQuc2NyaXB0LCBjb2luTmFtZSk7XG4gICAgY29uc3QgY3VycmVudEFtb3VudCA9IEJpZ0ludChjdXJyZW50T3V0cHV0LnZhbHVlKTtcblxuICAgIGNvbnN0IGNoYW5nZU91dHB1dCA9IHRvQ2hhbmdlT3V0cHV0KGN1cnJlbnRPdXRwdXQsIGNvaW5OYW1lLCBjaGFuZ2VJbmZvKTtcbiAgICBpZiAoY2hhbmdlT3V0cHV0KSB7XG4gICAgICBjaGFuZ2VPdXRwdXRzLnB1c2goY2hhbmdlT3V0cHV0KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXN0b21DaGFuZ2VPdXRwdXQgPSB0b0NoYW5nZU91dHB1dChjdXJyZW50T3V0cHV0LCBjb2luTmFtZSwgY3VzdG9tQ2hhbmdlSW5mbyk7XG4gICAgaWYgKGN1c3RvbUNoYW5nZU91dHB1dCkge1xuICAgICAgY3VzdG9tQ2hhbmdlT3V0cHV0cy5wdXNoKGN1c3RvbUNoYW5nZU91dHB1dCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXh0ZXJuYWxPdXRwdXRzLnB1c2goe1xuICAgICAgYWRkcmVzczogY3VycmVudEFkZHJlc3MsXG4gICAgICBhbW91bnQ6IGN1cnJlbnRBbW91bnQudG9TdHJpbmcoKSxcbiAgICAgIC8vIElmIGNoYW5nZUluZm8gaGFzIGEgbGVuZ3RoIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvLCBpdCBtZWFucyB0aGF0IHRoZSBjaGFuZ2UgaW5mb3JtYXRpb25cbiAgICAgIC8vIHdhcyBwcm92aWRlZCB0byB0aGUgZnVuY3Rpb24gYnV0IHRoZSBvdXRwdXQgd2FzIG5vdCBpZGVudGlmaWVkIGFzIGNoYW5nZS4gSW4gdGhpcyBjYXNlLFxuICAgICAgLy8gdGhlIG91dHB1dCBpcyBleHRlcm5hbCwgYW5kIHdlIGNhbiBzZXQgaXQgYXMgc28uIElmIGNoYW5nZUluZm8gaXMgdW5kZWZpbmVkLCBpdCBtZWFucyB3ZSB3ZXJlXG4gICAgICAvLyBnaXZlbiBubyBpbmZvcm1hdGlvbiBhYm91dCBjaGFuZ2Ugb3V0cHV0cywgc28gd2UgY2FuJ3QgZGV0ZXJtaW5lIGFueXRoaW5nIGFib3V0IHRoZSBvdXRwdXQsXG4gICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1bmRlZmluZWQuXG4gICAgICBleHRlcm5hbDogY2hhbmdlSW5mbyA/IHRydWUgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IG91dHB1dERldGFpbHMgPSB7XG4gICAgb3V0cHV0czogZXh0ZXJuYWxPdXRwdXRzLFxuICAgIG91dHB1dEFtb3VudDogb3V0cHV0U3VtKGV4dGVybmFsT3V0cHV0cykudG9TdHJpbmcoKSxcblxuICAgIGNoYW5nZU91dHB1dHMsXG4gICAgY2hhbmdlQW1vdW50OiBvdXRwdXRTdW0oY2hhbmdlT3V0cHV0cykudG9TdHJpbmcoKSxcblxuICAgIGN1c3RvbUNoYW5nZUFtb3VudDogb3V0cHV0U3VtKGN1c3RvbUNoYW5nZU91dHB1dHMpLnRvU3RyaW5nKCksXG4gICAgY3VzdG9tQ2hhbmdlT3V0cHV0cyxcbiAgfTtcblxuICBsZXQgZmVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBsb2NrdGltZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChwYXJhbXMuZmVlSW5mbykge1xuICAgIGRpc3BsYXlPcmRlci5wdXNoKCdmZWUnKTtcbiAgICBmZWUgPSBwYXJhbXMuZmVlSW5mbztcbiAgfVxuXG4gIGlmIChOdW1iZXIuaXNJbnRlZ2VyKHR4LmxvY2t0aW1lKSAmJiB0eC5sb2NrdGltZSA+IDApIHtcbiAgICBkaXNwbGF5T3JkZXIucHVzaCgnbG9ja3RpbWUnKTtcbiAgICBsb2NrdGltZSA9IHR4LmxvY2t0aW1lO1xuICB9XG5cbiAgcmV0dXJuIHsgZGlzcGxheU9yZGVyLCBpZDogdHguZ2V0SWQoKSwgLi4ub3V0cHV0RGV0YWlscywgZmVlLCBsb2NrdGltZSB9O1xufVxuXG5mdW5jdGlvbiBnZXRSb290V2FsbGV0S2V5cyhwYXJhbXM6IHsgcHVicz86IGJpdGdvLlJvb3RXYWxsZXRLZXlzIHwgc3RyaW5nW10gfSk6IGJpdGdvLlJvb3RXYWxsZXRLZXlzIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHBhcmFtcy5wdWJzIGluc3RhbmNlb2YgYml0Z28uUm9vdFdhbGxldEtleXMpIHtcbiAgICByZXR1cm4gcGFyYW1zLnB1YnM7XG4gIH1cbiAgY29uc3Qga2V5cyA9IHBhcmFtcy5wdWJzPy5tYXAoKHhwdWIpID0+IHRvVXR4b2xpYkJJUDMyKEJJUDMyLmZyb21CYXNlNTgoeHB1YikpKTtcbiAgcmV0dXJuIGtleXMgJiYga2V5cy5sZW5ndGggPT09IDMgPyBuZXcgYml0Z28uUm9vdFdhbGxldEtleXMoa2V5cyBhcyBUcmlwbGU8dXR4b2xpYi5CSVAzMkludGVyZmFjZT4pIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRQc2J0SW5wdXRTaWduYXR1cmVzQ291bnQoXG4gIHBzYnQ6IGJpdGdvLlV0eG9Qc2J0LFxuICBwYXJhbXM6IHtcbiAgICBwdWJzPzogYml0Z28uUm9vdFdhbGxldEtleXMgfCBzdHJpbmdbXTtcbiAgfVxuKSB7XG4gIGNvbnN0IHJvb3RXYWxsZXRLZXlzID0gZ2V0Um9vdFdhbGxldEtleXMocGFyYW1zKTtcbiAgcmV0dXJuIHJvb3RXYWxsZXRLZXlzXG4gICAgPyBiaXRnby5nZXRTaWduYXR1cmVWYWxpZGF0aW9uQXJyYXlQc2J0KHBzYnQsIHJvb3RXYWxsZXRLZXlzKS5tYXAoKHN2KSA9PiBzdlsxXS5maWx0ZXIoKHYpID0+IHYpLmxlbmd0aClcbiAgICA6IChBcnJheShwc2J0LmRhdGEuaW5wdXRzLmxlbmd0aCkgYXMgbnVtYmVyW10pLmZpbGwoMCk7XG59XG5cbmZ1bmN0aW9uIGdldFR4SW5wdXRTaWduYXR1cmVzQ291bnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHR4OiBiaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIHBhcmFtczoge1xuICAgIHR4SW5mbz86IHsgdW5zcGVudHM/OiBVbnNwZW50PFROdW1iZXI+W10gfTtcbiAgICBwdWJzPzogYml0Z28uUm9vdFdhbGxldEtleXMgfCBzdHJpbmdbXTtcbiAgfSxcbiAgY29pbk5hbWU6IFV0eG9Db2luTmFtZVxuKSB7XG4gIGNvbnN0IG5ldHdvcmsgPSBnZXROZXR3b3JrRnJvbUNvaW5OYW1lKGNvaW5OYW1lKTtcbiAgY29uc3QgcHJldk91dHB1dHMgPSBwYXJhbXMudHhJbmZvPy51bnNwZW50cz8ubWFwKCh1KSA9PiBiaXRnby50b091dHB1dDxUTnVtYmVyPih1LCBuZXR3b3JrKSk7XG4gIGNvbnN0IHJvb3RXYWxsZXRLZXlzID0gZ2V0Um9vdFdhbGxldEtleXMocGFyYW1zKTtcbiAgY29uc3QgeyB1bnNwZW50cyA9IFtdIH0gPSBwYXJhbXMudHhJbmZvID8/IHt9O1xuXG4gIC8vIGdldCB0aGUgbnVtYmVyIG9mIHNpZ25hdHVyZXMgcGVyIGlucHV0XG4gIHJldHVybiB0eC5pbnMubWFwKChpbnB1dCwgaWR4KTogbnVtYmVyID0+IHtcbiAgICBpZiAodW5zcGVudHMubGVuZ3RoICE9PSB0eC5pbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKCFwcmV2T3V0cHV0cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHN0YXRlYCk7XG4gICAgfVxuICAgIGlmICghcm9vdFdhbGxldEtleXMpIHtcbiAgICAgIC8vIG5vIHB1YiBrZXlzIG9yIGluY29ycmVjdCBudW1iZXIgb2YgcHViIGtleXNcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGJpdGdvLnZlcmlmeVNpZ25hdHVyZVdpdGhVbnNwZW50PFROdW1iZXI+KHR4LCBpZHgsIHVuc3BlbnRzLCByb290V2FsbGV0S2V5cykuZmlsdGVyKCh2KSA9PiB2KS5sZW5ndGg7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gc29tZSBvdGhlciBlcnJvciBvY2N1cnJlZCBhbmQgd2UgY2FuJ3QgdmFsaWRhdGUgdGhlIHNpZ25hdHVyZXNcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldENoYWluQW5kSW5kZXhGcm9tQmlwMzJEZXJpdmF0aW9ucyhvdXRwdXQ6IGJpdGdvLlBzYnRPdXRwdXQpIHtcbiAgY29uc3QgZGVyaXZhdGlvbnMgPSBvdXRwdXQuYmlwMzJEZXJpdmF0aW9uID8/IG91dHB1dC50YXBCaXAzMkRlcml2YXRpb24gPz8gdW5kZWZpbmVkO1xuICBpZiAoIWRlcml2YXRpb25zKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBwYXRocyA9IGRlcml2YXRpb25zLm1hcCgoZCkgPT4gZC5wYXRoKTtcbiAgaWYgKCFwYXRocyB8fCBwYXRocy5sZW5ndGggIT09IDMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4cGVjdGVkIDMgcGF0aHMgaW4gYmlwMzJEZXJpdmF0aW9uIG9yIHRhcEJpcDMyRGVyaXZhdGlvbicpO1xuICB9XG4gIGlmICghcGF0aHMuZXZlcnkoKHApID0+IHBhdGhzWzBdID09PSBwKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgYWxsIHBhdGhzIHRvIGJlIHRoZSBzYW1lJyk7XG4gIH1cblxuICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgaWYgKHBhdGhzWzBdICE9PSBwYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmFibGUgdG8gZ2V0IGEgc2luZ2xlIGNoYWluIGFuZCBpbmRleCBvbiB0aGUgb3V0cHV0IGJlY2F1c2UgdGhlcmUgYXJlIGRpZmZlcmVudCBwYXRocyBmb3IgZGlmZmVyZW50IGtleXMnXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB1dHhvbGliLmJpdGdvLmdldENoYWluQW5kSW5kZXhGcm9tUGF0aChwYXRoc1swXSk7XG59XG5cbmZ1bmN0aW9uIGdldENoYW5nZUluZm8oXG4gIHBzYnQ6IGJpdGdvLlV0eG9Qc2J0LFxuICB3YWxsZXRLZXlzPzogVHJpcGxlPEJJUDMyPiB8IFRyaXBsZTx1dHhvbGliLkJJUDMySW50ZXJmYWNlPlxuKTogQ2hhbmdlQWRkcmVzc0luZm9bXSB8IHVuZGVmaW5lZCB7XG4gIGxldCB1dHhvbGliS2V5czogVHJpcGxlPHV0eG9saWIuQklQMzJJbnRlcmZhY2U+O1xuICB0cnkge1xuICAgIHV0eG9saWJLZXlzID0gd2FsbGV0S2V5c1xuICAgICAgPyAod2FsbGV0S2V5cy5tYXAoKGspID0+IHRvVXR4b2xpYkJJUDMyKGspKSBhcyBUcmlwbGU8dXR4b2xpYi5CSVAzMkludGVyZmFjZT4pXG4gICAgICA6IHV0eG9saWIuYml0Z28uZ2V0U29ydGVkUm9vdE5vZGVzKHBzYnQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLkVycm9yTm9NdWx0aVNpZ0lucHV0Rm91bmQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cblxuICByZXR1cm4gdXR4b2xpYi5iaXRnby5maW5kV2FsbGV0T3V0cHV0SW5kaWNlcyhwc2J0LCB1dHhvbGliS2V5cykubWFwKChpKSA9PiB7XG4gICAgY29uc3QgZGVyaXZhdGlvbkluZm9ybWF0aW9uID0gZ2V0Q2hhaW5BbmRJbmRleEZyb21CaXAzMkRlcml2YXRpb25zKHBzYnQuZGF0YS5vdXRwdXRzW2ldKTtcbiAgICBpZiAoIWRlcml2YXRpb25JbmZvcm1hdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgZmluZCBkZXJpdmF0aW9uIGluZm9ybWF0aW9uIG9uIGJpcDMyRGVyaXZhdGlvbiBvciB0YXBCaXAzMkRlcml2YXRpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZHJlc3M6IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KHBzYnQudHhPdXRwdXRzW2ldLnNjcmlwdCwgcHNidC5uZXR3b3JrKSxcbiAgICAgIGV4dGVybmFsOiBmYWxzZSxcbiAgICAgIC4uLmRlcml2YXRpb25JbmZvcm1hdGlvbixcbiAgICB9O1xuICB9KTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IFBheUdvIGFkZHJlc3MgcHJvb2YgaW5mb3JtYXRpb24gZnJvbSB0aGUgUFNCVCBpZiBwcmVzZW50XG4gKiBAcmV0dXJucyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgUGF5R28gcHJvb2YsIGluY2x1ZGluZyB0aGUgb3V0cHV0IGluZGV4IGFuZCBhZGRyZXNzXG4gKi9cbmZ1bmN0aW9uIGdldFBheUdvVmVyaWZpY2F0aW9uSW5mbyhcbiAgcHNidDogYml0Z28uVXR4b1BzYnQsXG4gIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWVcbik6IHsgb3V0cHV0SW5kZXg6IG51bWJlcjsgdmVyaWZpY2F0aW9uUHVia2V5OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB7XG4gIGxldCBvdXRwdXRJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBsZXQgYWRkcmVzczogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAvLyBDaGVjayBpZiB0aGlzIFBTQlQgaGFzIGFueSBQYXlHbyBhZGRyZXNzIHByb29mc1xuICBpZiAoIXV0eG9jb3JlLnBheWdvLnBzYnRPdXRwdXRJbmNsdWRlc1BheWdvQWRkcmVzc1Byb29mKHBzYnQpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIFRoaXMgcHVsbHMgdGhlIHB1YmtleSBkZXBlbmRpbmcgb24gZ2l2ZW4gbmV0d29ya1xuICBjb25zdCB2ZXJpZmljYXRpb25QdWJrZXkgPSBnZXRQYXlHb1ZlcmlmaWNhdGlvblB1YmtleShjb2luTmFtZSk7XG4gIC8vIGZpbmQgd2hpY2ggb3V0cHV0IGluZGV4IHRoYXQgY29udGFpbnMgdGhlIFBheUdvIHByb29mXG4gIG91dHB1dEluZGV4ID0gdXR4b2NvcmUucGF5Z28uZ2V0UGF5R29BZGRyZXNzUHJvb2ZPdXRwdXRJbmRleChwc2J0KTtcbiAgaWYgKG91dHB1dEluZGV4ID09PSB1bmRlZmluZWQgfHwgIXZlcmlmaWNhdGlvblB1YmtleSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgbmV0d29yayA9IGdldE5ldHdvcmtGcm9tQ29pbk5hbWUoY29pbk5hbWUpO1xuICBjb25zdCBvdXRwdXQgPSBwc2J0LnR4T3V0cHV0c1tvdXRwdXRJbmRleF07XG4gIGFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChvdXRwdXQuc2NyaXB0LCBuZXR3b3JrKTtcbiAgaWYgKCFhZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW4gbm90IGRlcml2ZSBhZGRyZXNzICR7YWRkcmVzc30gUGF5IEdvIEF0dGVzdGF0aW9uLmApO1xuICB9XG5cbiAgcmV0dXJuIHsgb3V0cHV0SW5kZXgsIHZlcmlmaWNhdGlvblB1YmtleSB9O1xufVxuXG4vKipcbiAqIEV4dHJhY3QgdGhlIEJJUDMyMiBtZXNzYWdlcyBhbmQgYWRkcmVzc2VzIGZyb20gdGhlIFBTQlQgaW5wdXRzIGFuZCBwZXJmb3JtXG4gKiB2ZXJpZmljYXRpb24gb24gdGhlIHRyYW5zYWN0aW9uIHRvIGVuc3VyZSB0aGF0IGl0IG1lZXRzIHRoZSBCSVAzMjIgcmVxdWlyZW1lbnRzLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2Ygb2JqZWN0cyBjb250YWluaW5nIHRoZSBtZXNzYWdlIGFuZCBhZGRyZXNzIGZvciBlYWNoIGlucHV0LFxuICogICAgICAgICAgb3IgdW5kZWZpbmVkIGlmIG5vIEJJUDMyMiBtZXNzYWdlcyBhcmUgZm91bmQuXG4gKi9cbmZ1bmN0aW9uIGdldEJpcDMyMk1lc3NhZ2VJbmZvQW5kVmVyaWZ5KHBzYnQ6IGJpdGdvLlV0eG9Qc2J0LCBjb2luTmFtZTogVXR4b0NvaW5OYW1lKTogQmlwMzIyTWVzc2FnZVtdIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbmV0d29yayA9IGdldE5ldHdvcmtGcm9tQ29pbk5hbWUoY29pbk5hbWUpO1xuICBjb25zdCBiaXAzMjJNZXNzYWdlczogeyBtZXNzYWdlOiBzdHJpbmc7IGFkZHJlc3M6IHN0cmluZyB9W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwc2J0LmRhdGEuaW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGJpcDMyMi5nZXRCaXAzMjJQcm9vZk1lc3NhZ2VBdEluZGV4KHBzYnQsIGkpO1xuICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICBjb25zdCBpbnB1dCA9IHBzYnQuZGF0YS5pbnB1dHNbaV07XG4gICAgICBpZiAoIWlucHV0LndpdG5lc3NVdHhvKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyB3aXRuZXNzVXR4byBmb3IgaW5wdXQgaW5kZXggJHtpfWApO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2NyaXB0UHViS2V5ID0gaW5wdXQud2l0bmVzc1V0eG8uc2NyaXB0O1xuXG4gICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgdG9TcGVuZCB0cmFuc2FjdGlvbiBjYW4gYmUgcmVjcmVhdGVkIGluIHRoZSBQU0JUIGFuZCBpcyBlbmNvZGVkIGNvcnJlY3RseSBpbiB0aGUgbm9uV2l0bmVzc1V0eG9cbiAgICAgIGNvbnN0IHRvU3BlbmQgPSBiaXAzMjIuYnVpbGRUb1NwZW5kVHJhbnNhY3Rpb24oc2NyaXB0UHViS2V5LCBtZXNzYWdlKTtcblxuICAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHRvU3BlbmQgdHJhbnNhY3Rpb24gSUQgbWF0Y2hlcyB0aGUgaW5wdXQncyByZWZlcmVuY2VkIHRyYW5zYWN0aW9uIElEXG4gICAgICBpZiAodG9TcGVuZC5nZXRJZCgpICE9PSB1dHhvbGliLmJpdGdvLmdldE91dHB1dElkRm9ySW5wdXQocHNidC50eElucHV0c1tpXSkudHhpZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRvU3BlbmQgdHJhbnNhY3Rpb24gSUQgZG9lcyBub3QgbWF0Y2ggdGhlIGlucHV0IGF0IGluZGV4ICR7aX1gKTtcbiAgICAgIH1cblxuICAgICAgLy8gVmVyaWZ5IHRoZSBpbnB1dCBzcGVjaWZpY3NcbiAgICAgIGlmIChwc2J0LnR4SW5wdXRzW2ldLnNlcXVlbmNlICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBzZXF1ZW5jZSBudW1iZXIgYXQgaW5wdXQgaW5kZXggJHtpfTogJHtwc2J0LnR4SW5wdXRzW2ldLnNlcXVlbmNlfS4gRXhwZWN0ZWQgMC5gKTtcbiAgICAgIH1cbiAgICAgIGlmIChwc2J0LnR4SW5wdXRzW2ldLmluZGV4ICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBpbnB1dCBpbmRleCBhdCBwb3NpdGlvbiAke2l9OiAke3BzYnQudHhJbnB1dHNbaV0uaW5kZXh9LiBFeHBlY3RlZCAwLmApO1xuICAgICAgfVxuXG4gICAgICBiaXAzMjJNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZS50b1N0cmluZygndXRmOCcpLFxuICAgICAgICBhZGRyZXNzOiB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChzY3JpcHRQdWJLZXksIG5ldHdvcmspLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGJpcDMyMk1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAvLyBJZiB0aGVyZSBpcyBhIEJJUDMyMiBtZXNzYWdlIGluIGFueSBpbnB1dCwgYWxsIGlucHV0cyBtdXN0IGhhdmUgb25lLlxuICAgIGlmIChiaXAzMjJNZXNzYWdlcy5sZW5ndGggIT09IHBzYnQuZGF0YS5pbnB1dHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luY29uc2lzdGVudCBCSVAzMjIgbWVzc2FnZXMgYWNyb3NzIGlucHV0cy4nKTtcbiAgICB9XG5cbiAgICAvLyBWZXJpZnkgdGhlIHRyYW5zYWN0aW9uIHNwZWNpZmljcyBmb3IgQklQMzIyXG4gICAgaWYgKHBzYnQudmVyc2lvbiAhPT0gMCAmJiBwc2J0LnZlcnNpb24gIT09IDIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgUFNCVCB2ZXJzaW9uIGZvciBCSVAzMjI6ICR7cHNidC52ZXJzaW9ufS4gRXhwZWN0ZWQgMCBgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcHNidC5kYXRhLm91dHB1dHMubGVuZ3RoICE9PSAxIHx8XG4gICAgICBwc2J0LnR4T3V0cHV0c1swXS5zY3JpcHQudG9TdHJpbmcoJ2hleCcpICE9PSAnNmEnIHx8XG4gICAgICBwc2J0LnR4T3V0cHV0c1swXS52YWx1ZSAhPT0gMG5cbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBQU0JUIG91dHB1dHMgZm9yIEJJUDMyMi4gRXhwZWN0ZWQgZXhhY3RseSBvbmUgT1BfUkVUVVJOIG91dHB1dCB3aXRoIHplcm8gdmFsdWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpcDMyMk1lc3NhZ2VzO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBEZWNvbXBvc2UgYSByYXcgcHNidCBpbnRvIHVzZWZ1bCBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgdG90YWwgYW1vdW50cyxcbiAqIGNoYW5nZSBhbW91bnRzLCBhbmQgdHJhbnNhY3Rpb24gb3V0cHV0cy5cbiAqXG4gKiBAcGFyYW0gcHNidCB7Yml0Z28uVXR4b1BzYnR9IFRoZSBQU0JUIHRvIGV4cGxhaW5cbiAqIEBwYXJhbSBwdWJzIHtiaXRnby5Sb290V2FsbGV0S2V5cyB8IHN0cmluZ1tdfSBUaGUgcHVibGljIGtleXMgdG8gdXNlIGZvciB0aGUgZXhwbGFuYXRpb25cbiAqIEBwYXJhbSBjb2luTmFtZSB7VXR4b0NvaW5OYW1lfSBUaGUgY29pbiBuYW1lIHRvIHVzZSBmb3IgdGhlIGV4cGxhbmF0aW9uXG4gKiBAcGFyYW0gc3RyaWN0IHtib29sZWFufSBXaGV0aGVyIHRvIHRocm93IGFuIGVycm9yIGlmIHRoZSBQYXlHbyBhZGRyZXNzIHByb29mIGlzIGludmFsaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cGxhaW5Qc2J0KFxuICBwc2J0OiBiaXRnby5VdHhvUHNidCxcbiAgcGFyYW1zOiB7XG4gICAgcHVicz86IGJpdGdvLlJvb3RXYWxsZXRLZXlzIHwgc3RyaW5nW107XG4gICAgY3VzdG9tQ2hhbmdlUHVicz86IGJpdGdvLlJvb3RXYWxsZXRLZXlzIHwgc3RyaW5nW107XG4gIH0sXG4gIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUsXG4gIHsgc3RyaWN0ID0gdHJ1ZSB9OiB7IHN0cmljdD86IGJvb2xlYW4gfSA9IHt9XG4pOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uVXR4b2xpYlBzYnQge1xuICBjb25zdCBuZXR3b3JrID0gZ2V0TmV0d29ya0Zyb21Db2luTmFtZShjb2luTmFtZSk7XG4gIGNvbnN0IHBheUdvVmVyaWZpY2F0aW9uSW5mbyA9IGdldFBheUdvVmVyaWZpY2F0aW9uSW5mbyhwc2J0LCBjb2luTmFtZSk7XG4gIGlmIChwYXlHb1ZlcmlmaWNhdGlvbkluZm8pIHtcbiAgICB0cnkge1xuICAgICAgdXR4b2NvcmUucGF5Z28udmVyaWZ5UGF5R29BZGRyZXNzUHJvb2YoXG4gICAgICAgIHBzYnQsXG4gICAgICAgIHBheUdvVmVyaWZpY2F0aW9uSW5mby5vdXRwdXRJbmRleCxcbiAgICAgICAgQnVmZmVyLmZyb20oQklQMzIuZnJvbUJhc2U1OChwYXlHb1ZlcmlmaWNhdGlvbkluZm8udmVyaWZpY2F0aW9uUHVia2V5KS5wdWJsaWNLZXkpXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRCaXAzMjJNZXNzYWdlSW5mb0FuZFZlcmlmeShwc2J0LCBjb2luTmFtZSk7XG4gIGNvbnN0IGNoYW5nZUluZm8gPSBnZXRDaGFuZ2VJbmZvKHBzYnQpO1xuICBjb25zdCBjdXN0b21DaGFuZ2VJbmZvID0gcGFyYW1zLmN1c3RvbUNoYW5nZVB1YnNcbiAgICA/IGdldENoYW5nZUluZm8ocHNidCwgdG9CaXAzMlRyaXBsZShwYXJhbXMuY3VzdG9tQ2hhbmdlUHVicykpXG4gICAgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHR4ID0gcHNidC5nZXRVbnNpZ25lZFR4KCk7XG4gIGNvbnN0IGNvbW1vbiA9IGV4cGxhaW5Db21tb24odHgsIHsgLi4ucGFyYW1zLCBjaGFuZ2VJbmZvLCBjdXN0b21DaGFuZ2VJbmZvIH0sIGNvaW5OYW1lKTtcbiAgY29uc3QgaW5wdXRTaWduYXR1cmVzQ291bnQgPSBnZXRQc2J0SW5wdXRTaWduYXR1cmVzQ291bnQocHNidCwgcGFyYW1zKTtcblxuICAvLyBTZXQgZmVlIGZyb20gc3VidHJhY3RpbmcgaW5wdXRzIGZyb20gb3V0cHV0c1xuICBjb25zdCBvdXRwdXRBbW91bnQgPSBwc2J0LnR4T3V0cHV0cy5yZWR1Y2UoKGN1bXVsYXRpdmUsIGN1cnIpID0+IGN1bXVsYXRpdmUgKyBCaWdJbnQoY3Vyci52YWx1ZSksIEJpZ0ludCgwKSk7XG4gIGNvbnN0IGlucHV0QW1vdW50ID0gcHNidC50eElucHV0cy5yZWR1Y2UoKGN1bXVsYXRpdmUsIHR4SW5wdXQsIGkpID0+IHtcbiAgICBjb25zdCBkYXRhID0gcHNidC5kYXRhLmlucHV0c1tpXTtcbiAgICBpZiAoZGF0YS53aXRuZXNzVXR4bykge1xuICAgICAgcmV0dXJuIGN1bXVsYXRpdmUgKyBCaWdJbnQoZGF0YS53aXRuZXNzVXR4by52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChkYXRhLm5vbldpdG5lc3NVdHhvKSB7XG4gICAgICBjb25zdCB0eCA9IGJpdGdvLmNyZWF0ZVRyYW5zYWN0aW9uRnJvbUJ1ZmZlcjxiaWdpbnQ+KGRhdGEubm9uV2l0bmVzc1V0eG8sIG5ldHdvcmssIHsgYW1vdW50VHlwZTogJ2JpZ2ludCcgfSk7XG4gICAgICByZXR1cm4gY3VtdWxhdGl2ZSArIEJpZ0ludCh0eC5vdXRzW3R4SW5wdXQuaW5kZXhdLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgZmluZCB2YWx1ZSBvbiBpbnB1dCcpO1xuICAgIH1cbiAgfSwgQmlnSW50KDApKTtcblxuICByZXR1cm4ge1xuICAgIC4uLmNvbW1vbixcbiAgICBmZWU6IChpbnB1dEFtb3VudCAtIG91dHB1dEFtb3VudCkudG9TdHJpbmcoKSxcbiAgICBpbnB1dFNpZ25hdHVyZXM6IGlucHV0U2lnbmF0dXJlc0NvdW50LFxuICAgIHNpZ25hdHVyZXM6IGlucHV0U2lnbmF0dXJlc0NvdW50LnJlZHVjZSgocHJldiwgY3VycikgPT4gKGN1cnIgPiBwcmV2ID8gY3VyciA6IHByZXYpLCAwKSxcbiAgICBtZXNzYWdlcyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cGxhaW5MZWdhY3lUeDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHg6IGJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPixcbiAgcGFyYW1zOiB7XG4gICAgcHVicz86IHN0cmluZ1tdO1xuICAgIHR4SW5mbz86IHsgdW5zcGVudHM/OiBVbnNwZW50PFROdW1iZXI+W10gfTtcbiAgICBjaGFuZ2VJbmZvPzogeyBhZGRyZXNzOiBzdHJpbmc7IGNoYWluOiBudW1iZXI7IGluZGV4OiBudW1iZXIgfVtdO1xuICB9LFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lXG4pOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uVXR4b2xpYkxlZ2FjeSB7XG4gIGNvbnN0IGNvbW1vbiA9IGV4cGxhaW5Db21tb24odHgsIHBhcmFtcywgY29pbk5hbWUpO1xuICBjb25zdCBpbnB1dFNpZ25hdHVyZXNDb3VudCA9IGdldFR4SW5wdXRTaWduYXR1cmVzQ291bnQodHgsIHBhcmFtcywgY29pbk5hbWUpO1xuICByZXR1cm4ge1xuICAgIC4uLmNvbW1vbixcbiAgICBpbnB1dFNpZ25hdHVyZXM6IGlucHV0U2lnbmF0dXJlc0NvdW50LFxuICAgIHNpZ25hdHVyZXM6IGlucHV0U2lnbmF0dXJlc0NvdW50LnJlZHVjZSgocHJldiwgY3VycikgPT4gKGN1cnIgPiBwcmV2ID8gY3VyciA6IHByZXYpLCAwKSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { explainPsbt, explainLegacyTx, ChangeAddressInfo } from './explainTransaction';
|
|
2
|
+
export { explainPsbtWasm, explainPsbtWasmBigInt, aggregateTransactionExplanations, type ExplainedInput, type TransactionExplanationBigInt, type AggregatedTransactionExplanation, } from './explainPsbtWasm';
|
|
3
|
+
export { parseTransaction } from './parseTransaction';
|
|
4
|
+
export { CustomChangeOptions } from './parseOutput';
|
|
5
|
+
export { verifyTransaction } from './verifyTransaction';
|
|
6
|
+
export { signTransaction } from './signTransaction';
|
|
7
|
+
export * from './signLegacyTransaction';
|
|
8
|
+
export * from './SigningError';
|
|
9
|
+
export * from './replayProtection';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,gCAAgC,EAChC,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,KAAK,gCAAgC,GACtC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { explainPsbt, explainLegacyTx } from './explainTransaction';
|
|
2
|
+
export { explainPsbtWasm, explainPsbtWasmBigInt, aggregateTransactionExplanations, } from './explainPsbtWasm';
|
|
3
|
+
export { parseTransaction } from './parseTransaction';
|
|
4
|
+
export { verifyTransaction } from './verifyTransaction';
|
|
5
|
+
export { signTransaction } from './signTransaction';
|
|
6
|
+
export * from './signLegacyTransaction';
|
|
7
|
+
export * from './SigningError';
|
|
8
|
+
export * from './replayProtection';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDdkYsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsZ0NBQWdDLEdBSWpDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZXhwbGFpblBzYnQsIGV4cGxhaW5MZWdhY3lUeCwgQ2hhbmdlQWRkcmVzc0luZm8gfSBmcm9tICcuL2V4cGxhaW5UcmFuc2FjdGlvbic7XG5leHBvcnQge1xuICBleHBsYWluUHNidFdhc20sXG4gIGV4cGxhaW5Qc2J0V2FzbUJpZ0ludCxcbiAgYWdncmVnYXRlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbnMsXG4gIHR5cGUgRXhwbGFpbmVkSW5wdXQsXG4gIHR5cGUgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbkJpZ0ludCxcbiAgdHlwZSBBZ2dyZWdhdGVkVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbn0gZnJvbSAnLi9leHBsYWluUHNidFdhc20nO1xuZXhwb3J0IHsgcGFyc2VUcmFuc2FjdGlvbiB9IGZyb20gJy4vcGFyc2VUcmFuc2FjdGlvbic7XG5leHBvcnQgeyBDdXN0b21DaGFuZ2VPcHRpb25zIH0gZnJvbSAnLi9wYXJzZU91dHB1dCc7XG5leHBvcnQgeyB2ZXJpZnlUcmFuc2FjdGlvbiB9IGZyb20gJy4vdmVyaWZ5VHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgc2lnblRyYW5zYWN0aW9uIH0gZnJvbSAnLi9zaWduVHJhbnNhY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zaWduTGVnYWN5VHJhbnNhY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9TaWduaW5nRXJyb3InO1xuZXhwb3J0ICogZnJvbSAnLi9yZXBsYXlQcm90ZWN0aW9uJztcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"musig2.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/musig2.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACxD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVzaWcyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L211c2lnMi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBNdXNpZzJQYXJ0aWNpcGFudDxUPiB7XG4gIGdldE11c2lnMk5vbmNlcyhwc2J0OiBULCB3YWxsZXRJZDogc3RyaW5nKTogUHJvbWlzZTxUPjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { IRequestTracer, IWallet, TransactionPrebuild, VerificationOptions, ITransactionRecipient, Triple } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { AbstractUtxoCoin } from '../../abstractUtxoCoin';
|
|
3
|
+
import { Output, FixedScriptWalletOutput } from '../types';
|
|
4
|
+
export declare function isWalletOutput(output: Output): output is FixedScriptWalletOutput;
|
|
5
|
+
export interface CustomChangeOptions {
|
|
6
|
+
keys: Triple<{
|
|
7
|
+
pub: string;
|
|
8
|
+
}>;
|
|
9
|
+
signatures: Triple<string>;
|
|
10
|
+
}
|
|
11
|
+
export interface ParseOutputOptions {
|
|
12
|
+
currentOutput: Output;
|
|
13
|
+
coin: AbstractUtxoCoin;
|
|
14
|
+
txPrebuild: TransactionPrebuild;
|
|
15
|
+
verification: VerificationOptions;
|
|
16
|
+
keychainArray: Triple<{
|
|
17
|
+
pub: string;
|
|
18
|
+
}>;
|
|
19
|
+
wallet: IWallet;
|
|
20
|
+
txParams: {
|
|
21
|
+
recipients: ITransactionRecipient[];
|
|
22
|
+
changeAddress?: string;
|
|
23
|
+
};
|
|
24
|
+
customChange?: CustomChangeOptions;
|
|
25
|
+
reqId?: IRequestTracer;
|
|
26
|
+
}
|
|
27
|
+
export declare function parseOutput({ currentOutput, coin, txPrebuild, verification, keychainArray, wallet, txParams, customChange, reqId, }: ParseOutputOptions): Promise<Output>;
|
|
28
|
+
//# sourceMappingURL=parseOutput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseOutput.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/parseOutput.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,cAAc,EAEd,OAAO,EACP,mBAAmB,EAEnB,mBAAmB,EACnB,qBAAqB,EACrB,MAAM,EACP,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAK3D,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,uBAAuB,CAIhF;AAqKD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,mBAAmB,CAAC;IAChC,YAAY,EAAE,mBAAmB,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE;QACR,UAAU,EAAE,qBAAqB,EAAE,CAAC;QACpC,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,wBAAsB,WAAW,CAAC,EAChC,aAAa,EACb,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,KAAK,GACN,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgHtC"}
|