@bitgo-beta/abstract-utxo 1.1.1-beta.222 → 1.1.1-beta.2221
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 +458 -0
- package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -0
- package/dist/cjs/src/abstractUtxoCoin.js +652 -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 +33 -0
- package/dist/cjs/src/impl/doge/doge.d.ts.map +1 -0
- package/dist/cjs/src/impl/doge/doge.js +76 -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 +11 -0
- package/dist/cjs/src/impl/index.d.ts.map +1 -0
- package/dist/cjs/src/impl/index.js +47 -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/pearl/index.d.ts +3 -0
- package/dist/cjs/src/impl/pearl/index.d.ts.map +1 -0
- package/dist/cjs/src/impl/pearl/index.js +19 -0
- package/dist/cjs/src/impl/pearl/pearl.d.ts +17 -0
- package/dist/cjs/src/impl/pearl/pearl.d.ts.map +1 -0
- package/dist/cjs/src/impl/pearl/pearl.js +24 -0
- package/dist/cjs/src/impl/pearl/tpearl.d.ts +8 -0
- package/dist/cjs/src/impl/pearl/tpearl.d.ts.map +1 -0
- package/dist/cjs/src/impl/pearl/tpearl.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 +55 -0
- package/dist/cjs/src/keychains.d.ts.map +1 -0
- package/dist/cjs/src/keychains.js +143 -0
- package/dist/cjs/src/names.d.ts +13 -0
- package/dist/cjs/src/names.d.ts.map +1 -0
- package/dist/cjs/src/names.js +96 -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 +172 -0
- package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -0
- package/dist/cjs/src/recovery/backupKeyRecovery.js +415 -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 +302 -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 +68 -0
- package/dist/cjs/src/recovery/psbt.d.ts.map +1 -0
- package/dist/cjs/src/recovery/psbt.js +160 -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 +21 -0
- package/dist/cjs/src/transaction/decode.d.ts.map +1 -0
- package/dist/cjs/src/transaction/decode.js +45 -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 +90 -0
- package/dist/cjs/src/transaction/explainTransaction.d.ts +18 -0
- package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/explainTransaction.js +84 -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 +47 -0
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +3 -0
- package/dist/cjs/src/transaction/fixedScript/index.d.ts +8 -0
- package/dist/cjs/src/transaction/fixedScript/index.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/index.js +30 -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 +227 -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/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 +22 -0
- package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/signTransaction.js +46 -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 +182 -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 +9 -0
- package/dist/cjs/src/transaction/index.d.ts.map +1 -0
- package/dist/cjs/src/transaction/index.js +52 -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 +105 -0
- package/dist/cjs/src/transaction/types.d.ts +47 -0
- package/dist/cjs/src/transaction/types.d.ts.map +1 -0
- package/dist/cjs/src/transaction/types.js +3 -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 +22 -0
- package/dist/cjs/src/verifyKey.d.ts.map +1 -0
- package/dist/cjs/src/verifyKey.js +110 -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/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 +201 -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 +102 -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/pearl/unit/index.d.ts +2 -0
- package/dist/cjs/test/unit/impl/pearl/unit/index.d.ts.map +1 -0
- package/dist/cjs/test/unit/impl/pearl/unit/index.js +111 -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 +147 -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 +352 -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/descriptor/verifyTransactionQr.d.ts +2 -0
- package/dist/cjs/test/unit/transaction/descriptor/verifyTransactionQr.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/descriptor/verifyTransactionQr.js +102 -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 +171 -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 +222 -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 +539 -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 +77 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/abstractUtxoCoin.d.ts +458 -0
- package/dist/esm/abstractUtxoCoin.d.ts.map +1 -0
- package/dist/esm/abstractUtxoCoin.js +644 -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 +33 -0
- package/dist/esm/impl/doge/doge.d.ts.map +1 -0
- package/dist/esm/impl/doge/doge.js +72 -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 +11 -0
- package/dist/esm/impl/index.d.ts.map +1 -0
- package/dist/esm/impl/index.js +11 -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/pearl/index.d.ts +3 -0
- package/dist/esm/impl/pearl/index.d.ts.map +1 -0
- package/dist/esm/impl/pearl/index.js +3 -0
- package/dist/esm/impl/pearl/pearl.d.ts +17 -0
- package/dist/esm/impl/pearl/pearl.d.ts.map +1 -0
- package/dist/esm/impl/pearl/pearl.js +20 -0
- package/dist/esm/impl/pearl/tpearl.d.ts +8 -0
- package/dist/esm/impl/pearl/tpearl.d.ts.map +1 -0
- package/dist/esm/impl/pearl/tpearl.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 +55 -0
- package/dist/esm/keychains.d.ts.map +1 -0
- package/dist/esm/keychains.js +98 -0
- package/dist/esm/names.d.ts +13 -0
- package/dist/esm/names.d.ts.map +1 -0
- package/dist/esm/names.js +86 -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 +172 -0
- package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -0
- package/dist/esm/recovery/backupKeyRecovery.js +404 -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 +295 -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 +68 -0
- package/dist/esm/recovery/psbt.d.ts.map +1 -0
- package/dist/esm/recovery/psbt.js +152 -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 +21 -0
- package/dist/esm/transaction/decode.d.ts.map +1 -0
- package/dist/esm/transaction/decode.js +39 -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 +80 -0
- package/dist/esm/transaction/explainTransaction.d.ts +18 -0
- package/dist/esm/transaction/explainTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/explainTransaction.js +48 -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 +47 -0
- package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/explainTransaction.js +2 -0
- package/dist/esm/transaction/fixedScript/index.d.ts +8 -0
- package/dist/esm/transaction/fixedScript/index.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/index.js +7 -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 +221 -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/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 +22 -0
- package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/signTransaction.js +39 -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 +176 -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 +9 -0
- package/dist/esm/transaction/index.d.ts.map +1 -0
- package/dist/esm/transaction/index.js +9 -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 +66 -0
- package/dist/esm/transaction/types.d.ts +47 -0
- package/dist/esm/transaction/types.d.ts.map +1 -0
- package/dist/esm/transaction/types.js +2 -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 +22 -0
- package/dist/esm/verifyKey.d.ts.map +1 -0
- package/dist/esm/verifyKey.js +102 -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/package.json +48 -20
- package/.eslintignore +0 -5
- package/CHANGELOG.md +0 -253
- 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 -8179
- /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,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toBaseParsedTransactionOutputsFromPsbt = toBaseParsedTransactionOutputsFromPsbt;
|
|
4
|
+
exports.parse = parse;
|
|
5
|
+
const wasm_utxo_1 = require("@bitgo/wasm-utxo");
|
|
6
|
+
const keychains_1 = require("../../keychains");
|
|
7
|
+
const descriptor_1 = require("../../descriptor");
|
|
8
|
+
const recipient_1 = require("../recipient");
|
|
9
|
+
const outputDifference_1 = require("../outputDifference");
|
|
10
|
+
const decode_1 = require("../decode");
|
|
11
|
+
function sumValues(arr) {
|
|
12
|
+
return arr.reduce((sum, e) => sum + e.value, 0n);
|
|
13
|
+
}
|
|
14
|
+
function toRecipientOutput(recipient, coinName) {
|
|
15
|
+
return {
|
|
16
|
+
address: recipient.address,
|
|
17
|
+
value: recipient.amount === 'max' ? 'max' : BigInt(recipient.amount),
|
|
18
|
+
script: (0, recipient_1.fromExtendedAddressFormatToScript)(recipient.address, coinName),
|
|
19
|
+
scriptId: undefined, // Recipients are external outputs
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function parseOutputsWithPsbt(psbt, descriptorMap, recipientOutputs, coinName) {
|
|
23
|
+
const parsed = wasm_utxo_1.descriptorWallet.parse(psbt, descriptorMap, coinName);
|
|
24
|
+
const outputs = parsed.outputs.map((output) => ({
|
|
25
|
+
...output,
|
|
26
|
+
script: Buffer.from(output.script),
|
|
27
|
+
}));
|
|
28
|
+
const changeOutputs = outputs.filter((o) => o.scriptId !== undefined);
|
|
29
|
+
const outputDiffs = (0, outputDifference_1.outputDifferencesWithExpected)(outputs, recipientOutputs);
|
|
30
|
+
return {
|
|
31
|
+
outputs,
|
|
32
|
+
changeOutputs,
|
|
33
|
+
...outputDiffs,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function toBaseOutputs(outputs, coinName) {
|
|
37
|
+
return outputs.map((o) => ({
|
|
38
|
+
address: (0, recipient_1.toExtendedAddressFormat)(o.script, coinName),
|
|
39
|
+
amount: o.value === 'max' ? 'max' : BigInt(o.value),
|
|
40
|
+
external: o.scriptId === undefined,
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
function toBaseParsedTransactionOutputs({ outputs, changeOutputs, explicitOutputs, implicitOutputs, missingOutputs }, coinName) {
|
|
44
|
+
const explicitExternalOutputs = explicitOutputs.filter((o) => o.scriptId === undefined);
|
|
45
|
+
const implicitExternalOutputs = implicitOutputs.filter((o) => o.scriptId === undefined);
|
|
46
|
+
return {
|
|
47
|
+
outputs: toBaseOutputs(outputs, coinName),
|
|
48
|
+
changeOutputs: toBaseOutputs(changeOutputs, coinName),
|
|
49
|
+
explicitExternalOutputs: toBaseOutputs(explicitExternalOutputs, coinName),
|
|
50
|
+
explicitExternalSpendAmount: sumValues(explicitExternalOutputs),
|
|
51
|
+
implicitExternalOutputs: toBaseOutputs(implicitExternalOutputs, coinName),
|
|
52
|
+
implicitExternalSpendAmount: sumValues(implicitExternalOutputs),
|
|
53
|
+
missingOutputs: toBaseOutputs(missingOutputs, coinName),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function toBaseParsedTransactionOutputsFromPsbt(psbt, descriptorMap, recipients, coinName) {
|
|
57
|
+
const wasmPsbt = psbt instanceof wasm_utxo_1.Psbt ? psbt : wasm_utxo_1.Psbt.deserialize(psbt);
|
|
58
|
+
return toBaseParsedTransactionOutputs(parseOutputsWithPsbt(wasmPsbt, descriptorMap, recipients.map((r) => toRecipientOutput(r, coinName)), coinName), coinName);
|
|
59
|
+
}
|
|
60
|
+
function parse(coin, wallet, params) {
|
|
61
|
+
if (params.txParams.allowExternalChangeAddress) {
|
|
62
|
+
throw new Error('allowExternalChangeAddress is not supported for descriptor wallets');
|
|
63
|
+
}
|
|
64
|
+
if (params.txParams.changeAddress) {
|
|
65
|
+
throw new Error('changeAddress is not supported for descriptor wallets');
|
|
66
|
+
}
|
|
67
|
+
const keychains = params.verification?.keychains;
|
|
68
|
+
if (!keychains || !keychains_1.UtxoNamedKeychains.is(keychains)) {
|
|
69
|
+
throw new Error('keychain is required for descriptor wallets');
|
|
70
|
+
}
|
|
71
|
+
const { recipients } = params.txParams;
|
|
72
|
+
if (!recipients) {
|
|
73
|
+
throw new Error('recipients is required');
|
|
74
|
+
}
|
|
75
|
+
const wasmPsbt = (0, decode_1.decodeDescriptorPsbt)(params.txPrebuild);
|
|
76
|
+
const walletKeys = (0, keychains_1.toBip32Triple)(keychains);
|
|
77
|
+
const descriptorMap = (0, descriptor_1.getDescriptorMapFromWallet)(wallet, walletKeys, (0, descriptor_1.getPolicyForEnv)(params.wallet.bitgo.env));
|
|
78
|
+
return {
|
|
79
|
+
...toBaseParsedTransactionOutputsFromPsbt(wasmPsbt, descriptorMap, recipients, coin.name),
|
|
80
|
+
keychains,
|
|
81
|
+
keySignatures: (0, keychains_1.getKeySignatures)(wallet) ?? {},
|
|
82
|
+
customChange: undefined,
|
|
83
|
+
needsCustomChangeKeySignatureVerification: false,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9wYXJzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTRGQSx3RkFnQkM7QUFPRCxzQkE2QkM7QUEvSUQsZ0RBQTBEO0FBSTFELCtDQUFzRjtBQUN0RixpREFBK0U7QUFFL0UsNENBQTBGO0FBQzFGLDBEQUFrRztBQUVsRyxzQ0FBaUQ7QUFFakQsU0FBUyxTQUFTLENBQUMsR0FBd0I7SUFDekMsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQVFELFNBQVMsaUJBQWlCLENBQUMsU0FBZ0MsRUFBRSxRQUFzQjtJQUNqRixPQUFPO1FBQ0wsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO1FBQzFCLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUNwRSxNQUFNLEVBQUUsSUFBQSw2Q0FBaUMsRUFBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQztRQUN0RSxRQUFRLEVBQUUsU0FBUyxFQUFFLGtDQUFrQztLQUN4RCxDQUFDO0FBQ0osQ0FBQztBQVFELFNBQVMsb0JBQW9CLENBQzNCLElBQVUsRUFDVixhQUE2QyxFQUM3QyxnQkFBbUMsRUFDbkMsUUFBc0I7SUFFdEIsTUFBTSxNQUFNLEdBQUcsNEJBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckUsTUFBTSxPQUFPLEdBQW1CLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFF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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVRyYW5zYWN0aW9uUmVjaXBpZW50IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgUHNidCwgZGVzY3JpcHRvcldhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBBYnN0cmFjdFV0eG9Db2luLCBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyB9IGZyb20gJy4uLy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuaW1wb3J0IHsgQmFzZU91dHB1dCwgQmFzZVBhcnNlZFRyYW5zYWN0aW9uLCBCYXNlUGFyc2VkVHJhbnNhY3Rpb25PdXRwdXRzIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0S2V5U2lnbmF0dXJlcywgdG9CaXAzMlRyaXBsZSwgVXR4b05hbWVkS2V5Y2hhaW5zIH0gZnJvbSAnLi4vLi4va2V5Y2hhaW5zJztcbmltcG9ydCB7IGdldERlc2NyaXB0b3JNYXBGcm9tV2FsbGV0LCBnZXRQb2xpY3lGb3JFbnYgfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9yJztcbmltcG9ydCB7IElEZXNjcmlwdG9yV2FsbGV0IH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvci9kZXNjcmlwdG9yV2FsbGV0JztcbmltcG9ydCB7IGZyb21FeHRlbmRlZEFkZHJlc3NGb3JtYXRUb1NjcmlwdCwgdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuLi9yZWNpcGllbnQnO1xuaW1wb3J0IHsgb3V0cHV0RGlmZmVyZW5jZXNXaXRoRXhwZWN0ZWQsIE91dHB1dERpZmZlcmVuY2VXaXRoRXhwZWN0ZWQgfSBmcm9tICcuLi9vdXRwdXREaWZmZXJlbmNlJztcbmltcG9ydCB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uLy4uL25hbWVzJztcbmltcG9ydCB7IGRlY29kZURlc2NyaXB0b3JQc2J0IH0gZnJvbSAnLi4vZGVjb2RlJztcblxuZnVuY3Rpb24gc3VtVmFsdWVzKGFycjogeyB2YWx1ZTogYmlnaW50IH1bXSk6IGJpZ2ludCB7XG4gIHJldHVybiBhcnIucmVkdWNlKChzdW0sIGUpID0+IHN1bSArIGUudmFsdWUsIDBuKTtcbn1cblxudHlwZSBQYXJzZWRPdXRwdXQgPSBPbWl0PGRlc2NyaXB0b3JXYWxsZXQuUGFyc2VkT3V0cHV0LCAnc2NyaXB0Jz4gJiB7IHNjcmlwdDogQnVmZmVyIH07XG5cbmV4cG9ydCB0eXBlIFJlY2lwaWVudE91dHB1dCA9IE9taXQ8UGFyc2VkT3V0cHV0LCAndmFsdWUnPiAmIHtcbiAgdmFsdWU6IGJpZ2ludCB8ICdtYXgnO1xufTtcblxuZnVuY3Rpb24gdG9SZWNpcGllbnRPdXRwdXQocmVjaXBpZW50OiBJVHJhbnNhY3Rpb25SZWNpcGllbnQsIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUpOiBSZWNpcGllbnRPdXRwdXQge1xuICByZXR1cm4ge1xuICAgIGFkZHJlc3M6IHJlY2lwaWVudC5hZGRyZXNzLFxuICAgIHZhbHVlOiByZWNpcGllbnQuYW1vdW50ID09PSAnbWF4JyA/ICdtYXgnIDogQmlnSW50KHJlY2lwaWVudC5hbW91bnQpLFxuICAgIHNjcmlwdDogZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdFRvU2NyaXB0KHJlY2lwaWVudC5hZGRyZXNzLCBjb2luTmFtZSksXG4gICAgc2NyaXB0SWQ6IHVuZGVmaW5lZCwgLy8gUmVjaXBpZW50cyBhcmUgZXh0ZXJuYWwgb3V0cHV0c1xuICB9O1xufVxuXG4vLyBUT0RPKEJUQy0xNjk3KTogYWxsb3cgb3V0cHV0cyB3aXRoIGB2YWx1ZTogJ21heCdgIGhlcmVcbnR5cGUgUGFyc2VkT3V0cHV0cyA9IE91dHB1dERpZmZlcmVuY2VXaXRoRXhwZWN0ZWQ8UGFyc2VkT3V0cHV0LCBSZWNpcGllbnRPdXRwdXQ+ICYge1xuICBvdXRwdXRzOiBQYXJzZWRPdXRwdXRbXTtcbiAgY2hhbmdlT3V0cHV0czogUGFyc2VkT3V0cHV0W107XG59O1xuXG5mdW5jdGlvbiBwYXJzZU91dHB1dHNXaXRoUHNidChcbiAgcHNidDogUHNidCxcbiAgZGVzY3JpcHRvck1hcDogZGVzY3JpcHRvcldhbGxldC5EZXNjcmlwdG9yTWFwLFxuICByZWNpcGllbnRPdXRwdXRzOiBSZWNpcGllbnRPdXRwdXRbXSxcbiAgY29pbk5hbWU6IFV0eG9Db2luTmFtZVxuKTogUGFyc2VkT3V0cHV0cyB7XG4gIGNvbnN0IHBhcnNlZCA9IGRlc2NyaXB0b3JXYWxsZXQucGFyc2UocHNidCwgZGVzY3JpcHRvck1hcCwgY29pbk5hbWUpO1xuICBjb25zdCBvdXRwdXRzOiBQYXJzZWRPdXRwdXRbXSA9IHBhcnNlZC5vdXRwdXRzLm1hcCgob3V0cHV0KSA9PiAoe1xuICAgIC4uLm91dHB1dCxcbiAgICBzY3JpcHQ6IEJ1ZmZlci5mcm9tKG91dHB1dC5zY3JpcHQpLFxuICB9KSk7XG4gIGNvbnN0IGNoYW5nZU91dHB1dHMgPSBvdXRwdXRzLmZpbHRlcigobykgPT4gby5zY3JpcHRJZCAhPT0gdW5kZWZpbmVkKTtcbiAgY29uc3Qgb3V0cHV0RGlmZnMgPSBvdXRwdXREaWZmZXJlbmNlc1dpdGhFeHBlY3RlZChvdXRwdXRzLCByZWNpcGllbnRPdXRwdXRzKTtcbiAgcmV0dXJuIHtcbiAgICBvdXRwdXRzLFxuICAgIGNoYW5nZU91dHB1dHMsXG4gICAgLi4ub3V0cHV0RGlmZnMsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHRvQmFzZU91dHB1dHMob3V0cHV0czogUGFyc2VkT3V0cHV0W10sIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUpOiBCYXNlT3V0cHV0PGJpZ2ludD5bXTtcbmZ1bmN0aW9uIHRvQmFzZU91dHB1dHMob3V0cHV0czogUmVjaXBpZW50T3V0cHV0W10sIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUpOiBCYXNlT3V0cHV0PGJpZ2ludCB8ICdtYXgnPltdO1xuZnVuY3Rpb24gdG9CYXNlT3V0cHV0cyhcbiAgb3V0cHV0czogKFBhcnNlZE91dHB1dCB8IFJlY2lwaWVudE91dHB1dClbXSxcbiAgY29pbk5hbWU6IFV0eG9Db2luTmFtZVxuKTogQmFzZU91dHB1dDxiaWdpbnQgfCAnbWF4Jz5bXSB7XG4gIHJldHVybiBvdXRwdXRzLm1hcChcbiAgICAobyk6IEJhc2VPdXRwdXQ8YmlnaW50IHwgJ21heCc+ID0+ICh7XG4gICAgICBhZGRyZXNzOiB0b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdChvLnNjcmlwdCwgY29pbk5hbWUpLFxuICAgICAgYW1vdW50OiBvLnZhbHVlID09PSAnbWF4JyA/ICdtYXgnIDogQmlnSW50KG8udmFsdWUpLFxuICAgICAgZXh0ZXJuYWw6IG8uc2NyaXB0SWQgPT09IHVuZGVmaW5lZCxcbiAgICB9KVxuICApO1xufVxuXG5leHBvcnQgdHlwZSBQYXJzZWRPdXRwdXRzQmlnSW50ID0gQmFzZVBhcnNlZFRyYW5zYWN0aW9uT3V0cHV0czxiaWdpbnQsIEJhc2VPdXRwdXQ8YmlnaW50IHwgJ21heCc+PjtcblxuZnVuY3Rpb24gdG9CYXNlUGFyc2VkVHJhbnNhY3Rpb25PdXRwdXRzKFxuICB7IG91dHB1dHMsIGNoYW5nZU91dHB1dHMsIGV4cGxpY2l0T3V0cHV0cywgaW1wbGljaXRPdXRwdXRzLCBtaXNzaW5nT3V0cHV0cyB9OiBQYXJzZWRPdXRwdXRzLFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lXG4pOiBQYXJzZWRPdXRwdXRzQmlnSW50IHtcbiAgY29uc3QgZXhwbGljaXRFeHRlcm5hbE91dHB1dHMgPSBleHBsaWNpdE91dHB1dHMuZmlsdGVyKChvKSA9PiBvLnNjcmlwdElkID09PSB1bmRlZmluZWQpO1xuICBjb25zdCBpbXBsaWNpdEV4dGVybmFsT3V0cHV0cyA9IGltcGxpY2l0T3V0cHV0cy5maWx0ZXIoKG8pID0+IG8uc2NyaXB0SWQgPT09IHVuZGVmaW5lZCk7XG4gIHJldHVybiB7XG4gICAgb3V0cHV0czogdG9CYXNlT3V0cHV0cyhvdXRwdXRzLCBjb2luTmFtZSksXG4gICAgY2hhbmdlT3V0cHV0czogdG9CYXNlT3V0cHV0cyhjaGFuZ2VPdXRwdXRzLCBjb2luTmFtZSksXG4gICAgZXhwbGljaXRFeHRlcm5hbE91dHB1dHM6IHRvQmFzZU91dHB1dHMoZXhwbGljaXRFeHRlcm5hbE91dHB1dHMsIGNvaW5OYW1lKSxcbiAgICBleHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQ6IHN1bVZhbHVlcyhleHBsaWNpdEV4dGVybmFsT3V0cHV0cyksXG4gICAgaW1wbGljaXRFeHRlcm5hbE91dHB1dHM6IHRvQmFzZU91dHB1dHMoaW1wbGljaXRFeHRlcm5hbE91dHB1dHMsIGNvaW5OYW1lKSxcbiAgICBpbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQ6IHN1bVZhbHVlcyhpbXBsaWNpdEV4dGVybmFsT3V0cHV0cyksXG4gICAgbWlzc2luZ091dHB1dHM6IHRvQmFzZU91dHB1dHMobWlzc2luZ091dHB1dHMsIGNvaW5OYW1lKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQmFzZVBhcnNlZFRyYW5zYWN0aW9uT3V0cHV0c0Zyb21Qc2J0KFxuICBwc2J0OiBQc2J0IHwgVWludDhBcnJheSxcbiAgZGVzY3JpcHRvck1hcDogZGVzY3JpcHRvcldhbGxldC5EZXNjcmlwdG9yTWFwLFxuICByZWNpcGllbnRzOiBJVHJhbnNhY3Rpb25SZWNpcGllbnRbXSxcbiAgY29pbk5hbWU6IFV0eG9Db2luTmFtZVxuKTogUGFyc2VkT3V0cHV0c0JpZ0ludCB7XG4gIGNvbnN0IHdhc21Qc2J0ID0gcHNidCBpbnN0YW5jZW9mIFBzYnQgPyBwc2J0IDogUHNidC5kZXNlcmlhbGl6ZShwc2J0KTtcbiAgcmV0dXJuIHRvQmFzZVBhcnNlZFRyYW5zYWN0aW9uT3V0cHV0cyhcbiAgICBwYXJzZU91dHB1dHNXaXRoUHNidChcbiAgICAgIHdhc21Qc2J0LFxuICAgICAgZGVzY3JpcHRvck1hcCxcbiAgICAgIHJlY2lwaWVudHMubWFwKChyKSA9PiB0b1JlY2lwaWVudE91dHB1dChyLCBjb2luTmFtZSkpLFxuICAgICAgY29pbk5hbWVcbiAgICApLFxuICAgIGNvaW5OYW1lXG4gICk7XG59XG5cbmV4cG9ydCB0eXBlIFBhcnNlZERlc2NyaXB0b3JUcmFuc2FjdGlvbjxUQW1vdW50IGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PiA9IEJhc2VQYXJzZWRUcmFuc2FjdGlvbjxcbiAgVEFtb3VudCxcbiAgQmFzZU91dHB1dDxUQW1vdW50IHwgJ21heCc+XG4+O1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UoXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHdhbGxldDogSURlc2NyaXB0b3JXYWxsZXQsXG4gIHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnM8bnVtYmVyIHwgYmlnaW50PlxuKTogUGFyc2VkRGVzY3JpcHRvclRyYW5zYWN0aW9uPGJpZ2ludD4ge1xuICBpZiAocGFyYW1zLnR4UGFyYW1zLmFsbG93RXh0ZXJuYWxDaGFuZ2VBZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdhbGxvd0V4dGVybmFsQ2hhbmdlQWRkcmVzcyBpcyBub3Qgc3VwcG9ydGVkIGZvciBkZXNjcmlwdG9yIHdhbGxldHMnKTtcbiAgfVxuICBpZiAocGFyYW1zLnR4UGFyYW1zLmNoYW5nZUFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NoYW5nZUFkZHJlc3MgaXMgbm90IHN1cHBvcnRlZCBmb3IgZGVzY3JpcHRvciB3YWxsZXRzJyk7XG4gIH1cbiAgY29uc3Qga2V5Y2hhaW5zID0gcGFyYW1zLnZlcmlmaWNhdGlvbj8ua2V5Y2hhaW5zO1xuICBpZiAoIWtleWNoYWlucyB8fCAhVXR4b05hbWVkS2V5Y2hhaW5zLmlzKGtleWNoYWlucykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2tleWNoYWluIGlzIHJlcXVpcmVkIGZvciBkZXNjcmlwdG9yIHdhbGxldHMnKTtcbiAgfVxuICBjb25zdCB7IHJlY2lwaWVudHMgfSA9IHBhcmFtcy50eFBhcmFtcztcbiAgaWYgKCFyZWNpcGllbnRzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdyZWNpcGllbnRzIGlzIHJlcXVpcmVkJyk7XG4gIH1cbiAgY29uc3Qgd2FzbVBzYnQgPSBkZWNvZGVEZXNjcmlwdG9yUHNidChwYXJhbXMudHhQcmVidWlsZCk7XG4gIGNvbnN0IHdhbGxldEtleXMgPSB0b0JpcDMyVHJpcGxlKGtleWNoYWlucyk7XG4gIGNvbnN0IGRlc2NyaXB0b3JNYXAgPSBnZXREZXNjcmlwdG9yTWFwRnJvbVdhbGxldCh3YWxsZXQsIHdhbGxldEtleXMsIGdldFBvbGljeUZvckVudihwYXJhbXMud2FsbGV0LmJpdGdvLmVudikpO1xuICByZXR1cm4ge1xuICAgIC4uLnRvQmFzZVBhcnNlZFRyYW5zYWN0aW9uT3V0cHV0c0Zyb21Qc2J0KHdhc21Qc2J0LCBkZXNjcmlwdG9yTWFwLCByZWNpcGllbnRzLCBjb2luLm5hbWUpLFxuICAgIGtleWNoYWlucyxcbiAgICBrZXlTaWduYXR1cmVzOiBnZXRLZXlTaWduYXR1cmVzKHdhbGxldCkgPz8ge30sXG4gICAgY3VzdG9tQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgbmVlZHNDdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVWZXJpZmljYXRpb246IGZhbHNlLFxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AbstractUtxoCoin, ParseTransactionOptions } from '../../abstractUtxoCoin';
|
|
2
|
+
import { BaseOutput, BaseParsedTransaction } from '../types';
|
|
3
|
+
import { IDescriptorWallet } from '../../descriptor/descriptorWallet';
|
|
4
|
+
import { ParsedDescriptorTransaction } from './parse';
|
|
5
|
+
type AmountType = 'number' | 'bigint' | 'string';
|
|
6
|
+
export declare function toAmountType(v: number | bigint | string, t: AmountType): number | bigint | string;
|
|
7
|
+
type AmountTypeOptions = {
|
|
8
|
+
amountTypeBaseOutput: AmountType;
|
|
9
|
+
amountTypeAggregate: AmountType;
|
|
10
|
+
};
|
|
11
|
+
export declare function parsedDescriptorTransactionToTNumber<TAmount extends number | bigint, TOutput>(obj: ParsedDescriptorTransaction<bigint>, params: AmountTypeOptions): BaseParsedTransaction<TAmount, TOutput>;
|
|
12
|
+
export declare function parseToAmountType<TAmount extends number | bigint>(coin: AbstractUtxoCoin, wallet: IDescriptorWallet, params: ParseTransactionOptions<TAmount>): BaseParsedTransaction<TAmount, BaseOutput<string>>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=parseToAmountType.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseToAmountType.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/descriptor/parseToAmountType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAS,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAE7D,KAAK,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAYjG;AAED,KAAK,iBAAiB,GAAG;IACvB,oBAAoB,EAAE,UAAU,CAAC;IACjC,mBAAmB,EAAE,UAAU,CAAC;CACjC,CAAC;AAyCF,wBAAgB,oCAAoC,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,OAAO,EAC3F,GAAG,EAAE,2BAA2B,CAAC,MAAM,CAAC,EACxC,MAAM,EAAE,iBAAiB,GACxB,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAIzC;AAED,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/D,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,uBAAuB,CAAC,OAAO,CAAC,GACvC,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAKpD"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toAmountType = toAmountType;
|
|
4
|
+
exports.parsedDescriptorTransactionToTNumber = parsedDescriptorTransactionToTNumber;
|
|
5
|
+
exports.parseToAmountType = parseToAmountType;
|
|
6
|
+
const parse_1 = require("./parse");
|
|
7
|
+
function toAmountType(v, t) {
|
|
8
|
+
if (v === 'max') {
|
|
9
|
+
return v;
|
|
10
|
+
}
|
|
11
|
+
switch (t) {
|
|
12
|
+
case 'number':
|
|
13
|
+
return Number(v);
|
|
14
|
+
case 'bigint':
|
|
15
|
+
return BigInt(v);
|
|
16
|
+
case 'string':
|
|
17
|
+
return String(v);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function baseOutputToTNumber(output, amountType) {
|
|
21
|
+
return {
|
|
22
|
+
address: output.address,
|
|
23
|
+
amount: toAmountType(output.amount, amountType),
|
|
24
|
+
external: output.external,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function entryToTNumber(k, v, params) {
|
|
28
|
+
switch (k) {
|
|
29
|
+
case 'outputs':
|
|
30
|
+
case 'changeOutputs':
|
|
31
|
+
case 'explicitExternalOutputs':
|
|
32
|
+
case 'implicitExternalOutputs':
|
|
33
|
+
case 'missingOutputs':
|
|
34
|
+
if (v === undefined) {
|
|
35
|
+
return [k, v];
|
|
36
|
+
}
|
|
37
|
+
if (Array.isArray(v)) {
|
|
38
|
+
return [k, v.map((o) => baseOutputToTNumber(o, params.amountTypeBaseOutput))];
|
|
39
|
+
}
|
|
40
|
+
throw new Error('expected array');
|
|
41
|
+
case 'explicitExternalSpendAmount':
|
|
42
|
+
case 'implicitExternalSpendAmount':
|
|
43
|
+
if (typeof v !== 'bigint') {
|
|
44
|
+
throw new Error('expected bigint');
|
|
45
|
+
}
|
|
46
|
+
return [k, toAmountType(v, params.amountTypeAggregate)];
|
|
47
|
+
default:
|
|
48
|
+
return [k, v];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function parsedDescriptorTransactionToTNumber(obj, params) {
|
|
52
|
+
return Object.fromEntries(Object.entries(obj).map(([k, v]) => entryToTNumber(k, v, params)));
|
|
53
|
+
}
|
|
54
|
+
function parseToAmountType(coin, wallet, params) {
|
|
55
|
+
return parsedDescriptorTransactionToTNumber((0, parse_1.parse)(coin, wallet, params), {
|
|
56
|
+
amountTypeAggregate: coin.amountType,
|
|
57
|
+
amountTypeBaseOutput: 'string',
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUb0Ftb3VudFR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9wYXJzZVRvQW1vdW50VHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVFBLG9DQVlDO0FBOENELG9GQU9DO0FBRUQsOENBU0M7QUFoRkQsbUNBQTZEO0FBSTdELFNBQWdCLFlBQVksQ0FBQyxDQUEyQixFQUFFLENBQWE7SUFDckUsSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNWLEtBQUssUUFBUTtZQUNYLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25CLEtBQUssUUFBUTtZQUNYLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25CLEtBQUssUUFBUTtZQUNYLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7QUFDSCxDQUFDO0FBT0QsU0FBUyxtQkFBbUIsQ0FDMUIsTUFBa0MsRUFDbEMsVUFBc0I7SUFFdEIsT0FBTztRQUNMLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztRQUN2QixNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFZO1FBQzFELFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtLQUMxQixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsY0FBYyxDQUdyQixDQUFJLEVBQUUsQ0FBSSxFQUFFLE1BQXlCO0lBQ3JDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDVixLQUFLLFNBQVMsQ0FBQztRQUNmLEtBQUssZUFBZSxDQUFDO1FBQ3JCLEtBQUsseUJBQXlCLENBQUM7UUFDL0IsS0FBSyx5QkFBeUIsQ0FBQztRQUMvQixLQUFLLGdCQUFnQjtZQUNuQixJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDcEIsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoQixDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFNLENBQUMsQ0FBQztZQUNyRixDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BDLEtBQUssNkJBQTZCLENBQUM7UUFDbkMsS0FBSyw2QkFBNkI7WUFDaEMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixDQUFNLENBQUMsQ0FBQztRQUMvRDtZQUNFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFnQixvQ0FBb0MsQ0FDbEQsR0FBd0MsRUFDeEMsTUFBeUI7SUFFekIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUN2QixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBOEMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FDcEUsQ0FBQztBQUMvQyxDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQy9CLElBQXNCLEVBQ3RCLE1BQXlCLEVBQ3pCLE1BQXdDO0lBRXhDLE9BQU8sb0NBQW9DLENBQThCLElBQUEsYUFBSyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUU7UUFDcEcsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFVBQVU7UUFDcEMsb0JBQW9CLEVBQUUsUUFBUTtLQUMvQixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiwgUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMgfSBmcm9tICcuLi8uLi9hYnN0cmFjdFV0eG9Db2luJztcbmltcG9ydCB7IEJhc2VPdXRwdXQsIEJhc2VQYXJzZWRUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IElEZXNjcmlwdG9yV2FsbGV0IH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvci9kZXNjcmlwdG9yV2FsbGV0JztcblxuaW1wb3J0IHsgcGFyc2UsIFBhcnNlZERlc2NyaXB0b3JUcmFuc2FjdGlvbiB9IGZyb20gJy4vcGFyc2UnO1xuXG50eXBlIEFtb3VudFR5cGUgPSAnbnVtYmVyJyB8ICdiaWdpbnQnIHwgJ3N0cmluZyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0Ftb3VudFR5cGUodjogbnVtYmVyIHwgYmlnaW50IHwgc3RyaW5nLCB0OiBBbW91bnRUeXBlKTogbnVtYmVyIHwgYmlnaW50IHwgc3RyaW5nIHtcbiAgaWYgKHYgPT09ICdtYXgnKSB7XG4gICAgcmV0dXJuIHY7XG4gIH1cbiAgc3dpdGNoICh0KSB7XG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIHJldHVybiBOdW1iZXIodik7XG4gICAgY2FzZSAnYmlnaW50JzpcbiAgICAgIHJldHVybiBCaWdJbnQodik7XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiBTdHJpbmcodik7XG4gIH1cbn1cblxudHlwZSBBbW91bnRUeXBlT3B0aW9ucyA9IHtcbiAgYW1vdW50VHlwZUJhc2VPdXRwdXQ6IEFtb3VudFR5cGU7XG4gIGFtb3VudFR5cGVBZ2dyZWdhdGU6IEFtb3VudFR5cGU7XG59O1xuXG5mdW5jdGlvbiBiYXNlT3V0cHV0VG9UTnVtYmVyPFRBbW91bnQgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICBvdXRwdXQ6IEJhc2VPdXRwdXQ8YmlnaW50IHwgJ21heCc+LFxuICBhbW91bnRUeXBlOiBBbW91bnRUeXBlXG4pOiBCYXNlT3V0cHV0PFRBbW91bnQ+IHtcbiAgcmV0dXJuIHtcbiAgICBhZGRyZXNzOiBvdXRwdXQuYWRkcmVzcyxcbiAgICBhbW91bnQ6IHRvQW1vdW50VHlwZShvdXRwdXQuYW1vdW50LCBhbW91bnRUeXBlKSBhcyBUQW1vdW50LFxuICAgIGV4dGVybmFsOiBvdXRwdXQuZXh0ZXJuYWwsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGVudHJ5VG9UTnVtYmVyPFxuICBLIGV4dGVuZHMga2V5b2YgUGFyc2VkRGVzY3JpcHRvclRyYW5zYWN0aW9uPGJpZ2ludD4sXG4gIFYgZXh0ZW5kcyBQYXJzZWREZXNjcmlwdG9yVHJhbnNhY3Rpb248YmlnaW50PltLXVxuPihrOiBLLCB2OiBWLCBwYXJhbXM6IEFtb3VudFR5cGVPcHRpb25zKTogW0ssIFZdIHtcbiAgc3dpdGNoIChrKSB7XG4gICAgY2FzZSAnb3V0cHV0cyc6XG4gICAgY2FzZSAnY2hhbmdlT3V0cHV0cyc6XG4gICAgY2FzZSAnZXhwbGljaXRFeHRlcm5hbE91dHB1dHMnOlxuICAgIGNhc2UgJ2ltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzJzpcbiAgICBjYXNlICdtaXNzaW5nT3V0cHV0cyc6XG4gICAgICBpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBbaywgdl07XG4gICAgICB9XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSkge1xuICAgICAgICByZXR1cm4gW2ssIHYubWFwKChvKSA9PiBiYXNlT3V0cHV0VG9UTnVtYmVyKG8sIHBhcmFtcy5hbW91bnRUeXBlQmFzZU91dHB1dCkpIGFzIFZdO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBhcnJheScpO1xuICAgIGNhc2UgJ2V4cGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCc6XG4gICAgY2FzZSAnaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50JzpcbiAgICAgIGlmICh0eXBlb2YgdiAhPT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBiaWdpbnQnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbaywgdG9BbW91bnRUeXBlKHYsIHBhcmFtcy5hbW91bnRUeXBlQWdncmVnYXRlKSBhcyBWXTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFtrLCB2XTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VkRGVzY3JpcHRvclRyYW5zYWN0aW9uVG9UTnVtYmVyPFRBbW91bnQgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQsIFRPdXRwdXQ+KFxuICBvYmo6IFBhcnNlZERlc2NyaXB0b3JUcmFuc2FjdGlvbjxiaWdpbnQ+LFxuICBwYXJhbXM6IEFtb3VudFR5cGVPcHRpb25zXG4pOiBCYXNlUGFyc2VkVHJhbnNhY3Rpb248VEFtb3VudCwgVE91dHB1dD4ge1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKG9iaikubWFwKChbaywgdl0pID0+IGVudHJ5VG9UTnVtYmVyKGsgYXMga2V5b2YgUGFyc2VkRGVzY3JpcHRvclRyYW5zYWN0aW9uPGJpZ2ludD4sIHYsIHBhcmFtcykpXG4gICkgYXMgQmFzZVBhcnNlZFRyYW5zYWN0aW9uPFRBbW91bnQsIFRPdXRwdXQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUb0Ftb3VudFR5cGU8VEFtb3VudCBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHdhbGxldDogSURlc2NyaXB0b3JXYWxsZXQsXG4gIHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnM8VEFtb3VudD5cbik6IEJhc2VQYXJzZWRUcmFuc2FjdGlvbjxUQW1vdW50LCBCYXNlT3V0cHV0PHN0cmluZz4+IHtcbiAgcmV0dXJuIHBhcnNlZERlc2NyaXB0b3JUcmFuc2FjdGlvblRvVE51bWJlcjxUQW1vdW50LCBCYXNlT3V0cHV0PHN0cmluZz4+KHBhcnNlKGNvaW4sIHdhbGxldCwgcGFyYW1zKSwge1xuICAgIGFtb3VudFR5cGVBZ2dyZWdhdGU6IGNvaW4uYW1vdW50VHlwZSxcbiAgICBhbW91bnRUeXBlQmFzZU91dHB1dDogJ3N0cmluZycsXG4gIH0pO1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipient.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/descriptor/recipient.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2Rlc2NyaXB0b3IvcmVjaXBpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBSZWNpcGllbnQgPSB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYW1vdW50OiBiaWdpbnQ7XG59O1xuIl19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Psbt, descriptorWallet } from '@bitgo/wasm-utxo';
|
|
2
|
+
type SignerKey = Parameters<typeof descriptorWallet.signWithKey>[1];
|
|
3
|
+
export declare class ErrorUnknownInput extends Error {
|
|
4
|
+
vin: number;
|
|
5
|
+
constructor(vin: number);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Sign a PSBT with the given keychain.
|
|
9
|
+
*
|
|
10
|
+
* Checks the descriptor map for each input in the PSBT. If the input is not
|
|
11
|
+
* found in the descriptor map, the behavior is determined by the `onUnknownInput`
|
|
12
|
+
* parameter.
|
|
13
|
+
*
|
|
14
|
+
* @param psbt - psbt to sign
|
|
15
|
+
* @param descriptorMap - map of descriptor name to descriptor
|
|
16
|
+
* @param signerKey - key to sign with (BIP32 or ECPair)
|
|
17
|
+
* @param params - onUnknownInput: 'throw' | 'skip' | 'sign'.
|
|
18
|
+
* Determines what to do when an input is not found in the
|
|
19
|
+
* descriptor map.
|
|
20
|
+
*/
|
|
21
|
+
export declare function signPsbt(psbt: Psbt, descriptorMap: descriptorWallet.DescriptorMap, signerKey: SignerKey, params: {
|
|
22
|
+
onUnknownInput: 'throw' | 'skip' | 'sign';
|
|
23
|
+
}): void;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=signPsbt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signPsbt.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/descriptor/signPsbt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpE,qBAAa,iBAAkB,SAAQ,KAAK;IACvB,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;CAG/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,gBAAgB,CAAC,aAAa,EAC7C,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE;IACN,cAAc,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CAC3C,GACA,IAAI,CAiBN"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ErrorUnknownInput = void 0;
|
|
4
|
+
exports.signPsbt = signPsbt;
|
|
5
|
+
const wasm_utxo_1 = require("@bitgo/wasm-utxo");
|
|
6
|
+
class ErrorUnknownInput extends Error {
|
|
7
|
+
constructor(vin) {
|
|
8
|
+
super(`missing descriptor for input ${vin}`);
|
|
9
|
+
this.vin = vin;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.ErrorUnknownInput = ErrorUnknownInput;
|
|
13
|
+
/**
|
|
14
|
+
* Sign a PSBT with the given keychain.
|
|
15
|
+
*
|
|
16
|
+
* Checks the descriptor map for each input in the PSBT. If the input is not
|
|
17
|
+
* found in the descriptor map, the behavior is determined by the `onUnknownInput`
|
|
18
|
+
* parameter.
|
|
19
|
+
*
|
|
20
|
+
* @param psbt - psbt to sign
|
|
21
|
+
* @param descriptorMap - map of descriptor name to descriptor
|
|
22
|
+
* @param signerKey - key to sign with (BIP32 or ECPair)
|
|
23
|
+
* @param params - onUnknownInput: 'throw' | 'skip' | 'sign'.
|
|
24
|
+
* Determines what to do when an input is not found in the
|
|
25
|
+
* descriptor map.
|
|
26
|
+
*/
|
|
27
|
+
function signPsbt(psbt, descriptorMap, signerKey, params) {
|
|
28
|
+
const inputs = psbt.getInputs();
|
|
29
|
+
const unknownInputs = inputs
|
|
30
|
+
.map((input, vin) => ({ input, vin }))
|
|
31
|
+
.filter(({ input }) => !wasm_utxo_1.descriptorWallet.findDescriptorForInput(input, descriptorMap));
|
|
32
|
+
if (unknownInputs.length > 0) {
|
|
33
|
+
switch (params.onUnknownInput) {
|
|
34
|
+
case 'skip':
|
|
35
|
+
return;
|
|
36
|
+
case 'throw':
|
|
37
|
+
throw new ErrorUnknownInput(unknownInputs[0].vin);
|
|
38
|
+
case 'sign':
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
wasm_utxo_1.descriptorWallet.signWithKey(psbt, signerKey);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblBzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9zaWduUHNidC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF3QkEsNEJBd0JDO0FBaERELGdEQUEwRDtBQUkxRCxNQUFhLGlCQUFrQixTQUFRLEtBQUs7SUFDMUMsWUFBbUIsR0FBVztRQUM1QixLQUFLLENBQUMsZ0NBQWdDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFENUIsUUFBRyxHQUFILEdBQUcsQ0FBUTtJQUU5QixDQUFDO0NBQ0Y7QUFKRCw4Q0FJQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxTQUFnQixRQUFRLENBQ3RCLElBQVUsRUFDVixhQUE2QyxFQUM3QyxTQUFvQixFQUNwQixNQUVDO0lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sYUFBYSxHQUFHLE1BQU07U0FDekIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQ3JDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsNEJBQWdCLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFekYsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdCLFFBQVEsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzlCLEtBQUssTUFBTTtnQkFDVCxPQUFPO1lBQ1QsS0FBSyxPQUFPO2dCQUNWLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEQsS0FBSyxNQUFNO2dCQUNULE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUNELDRCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBzYnQsIGRlc2NyaXB0b3JXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxudHlwZSBTaWduZXJLZXkgPSBQYXJhbWV0ZXJzPHR5cGVvZiBkZXNjcmlwdG9yV2FsbGV0LnNpZ25XaXRoS2V5PlsxXTtcblxuZXhwb3J0IGNsYXNzIEVycm9yVW5rbm93bklucHV0IGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmluOiBudW1iZXIpIHtcbiAgICBzdXBlcihgbWlzc2luZyBkZXNjcmlwdG9yIGZvciBpbnB1dCAke3Zpbn1gKTtcbiAgfVxufVxuXG4vKipcbiAqIFNpZ24gYSBQU0JUIHdpdGggdGhlIGdpdmVuIGtleWNoYWluLlxuICpcbiAqIENoZWNrcyB0aGUgZGVzY3JpcHRvciBtYXAgZm9yIGVhY2ggaW5wdXQgaW4gdGhlIFBTQlQuIElmIHRoZSBpbnB1dCBpcyBub3RcbiAqIGZvdW5kIGluIHRoZSBkZXNjcmlwdG9yIG1hcCwgdGhlIGJlaGF2aW9yIGlzIGRldGVybWluZWQgYnkgdGhlIGBvblVua25vd25JbnB1dGBcbiAqIHBhcmFtZXRlci5cbiAqXG4gKiBAcGFyYW0gcHNidCAtIHBzYnQgdG8gc2lnblxuICogQHBhcmFtIGRlc2NyaXB0b3JNYXAgLSBtYXAgb2YgZGVzY3JpcHRvciBuYW1lIHRvIGRlc2NyaXB0b3JcbiAqIEBwYXJhbSBzaWduZXJLZXkgLSBrZXkgdG8gc2lnbiB3aXRoIChCSVAzMiBvciBFQ1BhaXIpXG4gKiBAcGFyYW0gcGFyYW1zIC0gb25Vbmtub3duSW5wdXQ6ICd0aHJvdycgfCAnc2tpcCcgfCAnc2lnbicuXG4gKiAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lcyB3aGF0IHRvIGRvIHdoZW4gYW4gaW5wdXQgaXMgbm90IGZvdW5kIGluIHRoZVxuICogICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IgbWFwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnblBzYnQoXG4gIHBzYnQ6IFBzYnQsXG4gIGRlc2NyaXB0b3JNYXA6IGRlc2NyaXB0b3JXYWxsZXQuRGVzY3JpcHRvck1hcCxcbiAgc2lnbmVyS2V5OiBTaWduZXJLZXksXG4gIHBhcmFtczoge1xuICAgIG9uVW5rbm93bklucHV0OiAndGhyb3cnIHwgJ3NraXAnIHwgJ3NpZ24nO1xuICB9XG4pOiB2b2lkIHtcbiAgY29uc3QgaW5wdXRzID0gcHNidC5nZXRJbnB1dHMoKTtcbiAgY29uc3QgdW5rbm93bklucHV0cyA9IGlucHV0c1xuICAgIC5tYXAoKGlucHV0LCB2aW4pID0+ICh7IGlucHV0LCB2aW4gfSkpXG4gICAgLmZpbHRlcigoeyBpbnB1dCB9KSA9PiAhZGVzY3JpcHRvcldhbGxldC5maW5kRGVzY3JpcHRvckZvcklucHV0KGlucHV0LCBkZXNjcmlwdG9yTWFwKSk7XG5cbiAgaWYgKHVua25vd25JbnB1dHMubGVuZ3RoID4gMCkge1xuICAgIHN3aXRjaCAocGFyYW1zLm9uVW5rbm93bklucHV0KSB7XG4gICAgICBjYXNlICdza2lwJzpcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAndGhyb3cnOlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3JVbmtub3duSW5wdXQodW5rbm93bklucHV0c1swXS52aW4pO1xuICAgICAgY2FzZSAnc2lnbic6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBkZXNjcmlwdG9yV2FsbGV0LnNpZ25XaXRoS2V5KHBzYnQsIHNpZ25lcktleSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ITransactionRecipient } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import type { Psbt, descriptorWallet } from '@bitgo/wasm-utxo';
|
|
3
|
+
import { AbstractUtxoCoin, VerifyTransactionOptions } from '../../abstractUtxoCoin';
|
|
4
|
+
import { BaseOutput, BaseParsedTransactionOutputs } from '../types';
|
|
5
|
+
import { UtxoCoinName } from '../../names';
|
|
6
|
+
export declare class ValidationError extends Error {
|
|
7
|
+
constructor(message: string);
|
|
8
|
+
}
|
|
9
|
+
export declare class ErrorMissingOutputs extends ValidationError {
|
|
10
|
+
missingOutputs: BaseOutput<bigint | 'max'>[];
|
|
11
|
+
constructor(missingOutputs: BaseOutput<bigint | 'max'>[]);
|
|
12
|
+
}
|
|
13
|
+
export declare class ErrorImplicitExternalOutputs extends ValidationError {
|
|
14
|
+
implicitExternalOutputs: BaseOutput<bigint | 'max'>[];
|
|
15
|
+
constructor(implicitExternalOutputs: BaseOutput<bigint | 'max'>[]);
|
|
16
|
+
}
|
|
17
|
+
export declare class AggregateValidationError extends ValidationError {
|
|
18
|
+
errors: ValidationError[];
|
|
19
|
+
constructor(errors: ValidationError[]);
|
|
20
|
+
}
|
|
21
|
+
export declare function assertExpectedOutputDifference(parsedOutputs: BaseParsedTransactionOutputs<bigint, BaseOutput<bigint | 'max'>>): void;
|
|
22
|
+
export declare function assertValidTransaction(psbt: Psbt | Uint8Array, descriptors: descriptorWallet.DescriptorMap, recipients: ITransactionRecipient[], coinName: UtxoCoinName): void;
|
|
23
|
+
/**
|
|
24
|
+
* Wrapper around assertValidTransaction that returns a boolean instead of throwing.
|
|
25
|
+
*
|
|
26
|
+
* We follow the AbstractUtxoCoin interface here which is a bit confused - the return value is a boolean but we
|
|
27
|
+
* also throw errors (because we actually want to know what went wrong).
|
|
28
|
+
*
|
|
29
|
+
* @param coin
|
|
30
|
+
* @param params
|
|
31
|
+
* @param descriptorMap
|
|
32
|
+
* @returns {boolean} True if verification passes
|
|
33
|
+
* @throws {TxIntentMismatchError} if transaction validation fails
|
|
34
|
+
*/
|
|
35
|
+
export declare function verifyTransaction<TNumber extends number | bigint>(coin: AbstractUtxoCoin, params: VerifyTransactionOptions<TNumber>, descriptorMap: descriptorWallet.DescriptorMap): Promise<boolean>;
|
|
36
|
+
//# sourceMappingURL=verifyTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifyTransaction.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/descriptor/verifyTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAoC,MAAM,sBAAsB,CAAC;AAC/F,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK3C,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,mBAAoB,SAAQ,eAAe;IACnC,cAAc,EAAE,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE;gBAA5C,cAAc,EAAE,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE;CAGhE;AAED,qBAAa,4BAA6B,SAAQ,eAAe;IAC5C,uBAAuB,EAAE,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE;gBAArD,uBAAuB,EAAE,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE;CAGzE;AAED,qBAAa,wBAAyB,SAAQ,eAAe;IACxC,MAAM,EAAE,eAAe,EAAE;gBAAzB,MAAM,EAAE,eAAe,EAAE;CAG7C;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,4BAA4B,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,GAC9E,IAAI,CAcN;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,IAAI,GAAG,UAAU,EACvB,WAAW,EAAE,gBAAgB,CAAC,aAAa,EAC3C,UAAU,EAAE,qBAAqB,EAAE,EACnC,QAAQ,EAAE,YAAY,GACrB,IAAI,CAEN;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACrE,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,wBAAwB,CAAC,OAAO,CAAC,EACzC,aAAa,EAAE,gBAAgB,CAAC,aAAa,GAC5C,OAAO,CAAC,OAAO,CAAC,CAiDlB"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AggregateValidationError = exports.ErrorImplicitExternalOutputs = exports.ErrorMissingOutputs = exports.ValidationError = void 0;
|
|
4
|
+
exports.assertExpectedOutputDifference = assertExpectedOutputDifference;
|
|
5
|
+
exports.assertValidTransaction = assertValidTransaction;
|
|
6
|
+
exports.verifyTransaction = verifyTransaction;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const decode_1 = require("../decode");
|
|
9
|
+
const parse_1 = require("./parse");
|
|
10
|
+
class ValidationError extends Error {
|
|
11
|
+
constructor(message) {
|
|
12
|
+
super(message);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.ValidationError = ValidationError;
|
|
16
|
+
class ErrorMissingOutputs extends ValidationError {
|
|
17
|
+
constructor(missingOutputs) {
|
|
18
|
+
super(`missing outputs (count=${missingOutputs.length})`);
|
|
19
|
+
this.missingOutputs = missingOutputs;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.ErrorMissingOutputs = ErrorMissingOutputs;
|
|
23
|
+
class ErrorImplicitExternalOutputs extends ValidationError {
|
|
24
|
+
constructor(implicitExternalOutputs) {
|
|
25
|
+
super(`unexpected implicit external outputs (count=${implicitExternalOutputs.length})`);
|
|
26
|
+
this.implicitExternalOutputs = implicitExternalOutputs;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.ErrorImplicitExternalOutputs = ErrorImplicitExternalOutputs;
|
|
30
|
+
class AggregateValidationError extends ValidationError {
|
|
31
|
+
constructor(errors) {
|
|
32
|
+
super(`aggregate validation error (count=${errors.length})`);
|
|
33
|
+
this.errors = errors;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.AggregateValidationError = AggregateValidationError;
|
|
37
|
+
function assertExpectedOutputDifference(parsedOutputs) {
|
|
38
|
+
const errors = [];
|
|
39
|
+
if (parsedOutputs.missingOutputs.length > 0) {
|
|
40
|
+
errors.push(new ErrorMissingOutputs(parsedOutputs.missingOutputs));
|
|
41
|
+
}
|
|
42
|
+
if (parsedOutputs.implicitExternalOutputs.length > 0) {
|
|
43
|
+
// FIXME: for paygo we need to relax this a little bit
|
|
44
|
+
errors.push(new ErrorImplicitExternalOutputs(parsedOutputs.implicitExternalOutputs));
|
|
45
|
+
}
|
|
46
|
+
if (errors.length > 0) {
|
|
47
|
+
// FIXME(BTC-1688): enable ES2021
|
|
48
|
+
// throw new AggregateError(errors);
|
|
49
|
+
throw new AggregateValidationError(errors);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function assertValidTransaction(psbt, descriptors, recipients, coinName) {
|
|
53
|
+
assertExpectedOutputDifference((0, parse_1.toBaseParsedTransactionOutputsFromPsbt)(psbt, descriptors, recipients, coinName));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Wrapper around assertValidTransaction that returns a boolean instead of throwing.
|
|
57
|
+
*
|
|
58
|
+
* We follow the AbstractUtxoCoin interface here which is a bit confused - the return value is a boolean but we
|
|
59
|
+
* also throw errors (because we actually want to know what went wrong).
|
|
60
|
+
*
|
|
61
|
+
* @param coin
|
|
62
|
+
* @param params
|
|
63
|
+
* @param descriptorMap
|
|
64
|
+
* @returns {boolean} True if verification passes
|
|
65
|
+
* @throws {TxIntentMismatchError} if transaction validation fails
|
|
66
|
+
*/
|
|
67
|
+
async function verifyTransaction(coin, params, descriptorMap) {
|
|
68
|
+
let psbt;
|
|
69
|
+
try {
|
|
70
|
+
psbt = (0, decode_1.decodeDescriptorPsbt)(params.txPrebuild);
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
const txExplanation = await sdk_core_1.TxIntentMismatchError.tryGetTxExplanation(coin, params.txPrebuild);
|
|
74
|
+
const errorDetail = e instanceof Error ? e.message : String(e);
|
|
75
|
+
throw new sdk_core_1.TxIntentMismatchError(`unexpected transaction type: ${errorDetail}`, params.reqId, [params.txParams], params.txPrebuild.txHex, txExplanation);
|
|
76
|
+
}
|
|
77
|
+
assertValidTransaction(psbt, descriptorMap, params.txParams.recipients ?? [], coin.name);
|
|
78
|
+
const parsedOutputs = (0, parse_1.toBaseParsedTransactionOutputsFromPsbt)(psbt, descriptorMap, params.txParams.recipients ?? [], coin.name);
|
|
79
|
+
if (params.txParams.qr) {
|
|
80
|
+
const allExternalOutputs = [...parsedOutputs.explicitExternalOutputs, ...parsedOutputs.implicitExternalOutputs];
|
|
81
|
+
if (allExternalOutputs.length > 0) {
|
|
82
|
+
const txExplanation = await sdk_core_1.TxIntentMismatchError.tryGetTxExplanation(coin, params.txPrebuild);
|
|
83
|
+
throw new sdk_core_1.TxIntentMismatchError('quantum-resistant sweep transactions must only contain wallet-internal outputs', params.reqId, [params.txParams], params.txPrebuild.txHex, txExplanation);
|
|
84
|
+
}
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
assertExpectedOutputDifference(parsedOutputs);
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5VHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci92ZXJpZnlUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFrQ0Esd0VBZ0JDO0FBRUQsd0RBT0M7QUFjRCw4Q0FxREM7QUE5SEQsbURBQStGO0FBTS9GLHNDQUFpRDtBQUVqRCxtQ0FBaUU7QUFFakUsTUFBYSxlQUFnQixTQUFRLEtBQUs7SUFDeEMsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFKRCwwQ0FJQztBQUVELE1BQWEsbUJBQW9CLFNBQVEsZUFBZTtJQUN0RCxZQUFtQixjQUE0QztRQUM3RCxLQUFLLENBQUMsMEJBQTBCLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRHpDLG1CQUFjLEdBQWQsY0FBYyxDQUE4QjtJQUUvRCxDQUFDO0NBQ0Y7QUFKRCxrREFJQztBQUVELE1BQWEsNEJBQTZCLFNBQVEsZUFBZTtJQUMvRCxZQUFtQix1QkFBcUQ7UUFDdEUsS0FBSyxDQUFDLCtDQUErQyx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRHZFLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBOEI7SUFFeEUsQ0FBQztDQUNGO0FBSkQsb0VBSUM7QUFFRCxNQUFhLHdCQUF5QixTQUFRLGVBQWU7SUFDM0QsWUFBbUIsTUFBeUI7UUFDMUMsS0FBSyxDQUFDLHFDQUFxQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUQ1QyxXQUFNLEdBQU4sTUFBTSxDQUFtQjtJQUU1QyxDQUFDO0NBQ0Y7QUFKRCw0REFJQztBQUVELFNBQWdCLDhCQUE4QixDQUM1QyxhQUErRTtJQUUvRSxNQUFNLE1BQU0sR0FBc0IsRUFBRSxDQUFDO0lBQ3JDLElBQUksYUFBYSxDQUFDLGNBQWMsQ0FBQyxNQUFN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OEIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUU5QyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJVHJhbnNhY3Rpb25SZWNpcGllbnQsIFR4SW50ZW50TWlzbWF0Y2hFcnJvciwgSUJhc2VDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBQc2J0LCBkZXNjcmlwdG9yV2FsbGV0IH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbmltcG9ydCB7IEFic3RyYWN0VXR4b0NvaW4sIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyB9IGZyb20gJy4uLy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuaW1wb3J0IHsgQmFzZU91dHB1dCwgQmFzZVBhcnNlZFRyYW5zYWN0aW9uT3V0cHV0cyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uLy4uL25hbWVzJztcbmltcG9ydCB7IGRlY29kZURlc2NyaXB0b3JQc2J0IH0gZnJvbSAnLi4vZGVjb2RlJztcblxuaW1wb3J0IHsgdG9CYXNlUGFyc2VkVHJhbnNhY3Rpb25PdXRwdXRzRnJvbVBzYnQgfSBmcm9tICcuL3BhcnNlJztcblxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yTWlzc2luZ091dHB1dHMgZXh0ZW5kcyBWYWxpZGF0aW9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbWlzc2luZ091dHB1dHM6IEJhc2VPdXRwdXQ8YmlnaW50IHwgJ21heCc+W10pIHtcbiAgICBzdXBlcihgbWlzc2luZyBvdXRwdXRzIChjb3VudD0ke21pc3NpbmdPdXRwdXRzLmxlbmd0aH0pYCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVycm9ySW1wbGljaXRFeHRlcm5hbE91dHB1dHMgZXh0ZW5kcyBWYWxpZGF0aW9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgaW1wbGljaXRFeHRlcm5hbE91dHB1dHM6IEJhc2VPdXRwdXQ8YmlnaW50IHwgJ21heCc+W10pIHtcbiAgICBzdXBlcihgdW5leHBlY3RlZCBpbXBsaWNpdCBleHRlcm5hbCBvdXRwdXRzIChjb3VudD0ke2ltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzLmxlbmd0aH0pYCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvciBleHRlbmRzIFZhbGlkYXRpb25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlcnJvcnM6IFZhbGlkYXRpb25FcnJvcltdKSB7XG4gICAgc3VwZXIoYGFnZ3JlZ2F0ZSB2YWxpZGF0aW9uIGVycm9yIChjb3VudD0ke2Vycm9ycy5sZW5ndGh9KWApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFeHBlY3RlZE91dHB1dERpZmZlcmVuY2UoXG4gIHBhcnNlZE91dHB1dHM6IEJhc2VQYXJzZWRUcmFuc2FjdGlvbk91dHB1dHM8YmlnaW50LCBCYXNlT3V0cHV0PGJpZ2ludCB8ICdtYXgnPj5cbik6IHZvaWQge1xuICBjb25zdCBlcnJvcnM6IFZhbGlkYXRpb25FcnJvcltdID0gW107XG4gIGlmIChwYXJzZWRPdXRwdXRzLm1pc3NpbmdPdXRwdXRzLmxlbmd0aCA+IDApIHtcbiAgICBlcnJvcnMucHVzaChuZXcgRXJyb3JNaXNzaW5nT3V0cHV0cyhwYXJzZWRPdXRwdXRzLm1pc3NpbmdPdXRwdXRzKSk7XG4gIH1cbiAgaWYgKHBhcnNlZE91dHB1dHMuaW1wbGljaXRFeHRlcm5hbE91dHB1dHMubGVuZ3RoID4gMCkge1xuICAgIC8vIEZJWE1FOiBmb3IgcGF5Z28gd2UgbmVlZCB0byByZWxheCB0aGlzIGEgbGl0dGxlIGJpdFxuICAgIGVycm9ycy5wdXNoKG5ldyBFcnJvckltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzKHBhcnNlZE91dHB1dHMuaW1wbGljaXRFeHRlcm5hbE91dHB1dHMpKTtcbiAgfVxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAvLyBGSVhNRShCVEMtMTY4OCk6IGVuYWJsZSBFUzIwMjFcbiAgICAvLyB0aHJvdyBuZXcgQWdncmVnYXRlRXJyb3IoZXJyb3JzKTtcbiAgICB0aHJvdyBuZXcgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKGVycm9ycyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFZhbGlkVHJhbnNhY3Rpb24oXG4gIHBzYnQ6IFBzYnQgfCBVaW50OEFycmF5LFxuICBkZXNjcmlwdG9yczogZGVzY3JpcHRvcldhbGxldC5EZXNjcmlwdG9yTWFwLFxuICByZWNpcGllbnRzOiBJVHJhbnNhY3Rpb25SZWNpcGllbnRbXSxcbiAgY29pbk5hbWU6IFV0eG9Db2luTmFtZVxuKTogdm9pZCB7XG4gIGFzc2VydEV4cGVjdGVkT3V0cHV0RGlmZmVyZW5jZSh0b0Jhc2VQYXJzZWRUcmFuc2FjdGlvbk91dHB1dHNGcm9tUHNidChwc2J0LCBkZXNjcmlwdG9ycywgcmVjaXBpZW50cywgY29pbk5hbWUpKTtcbn1cblxuLyoqXG4gKiBXcmFwcGVyIGFyb3VuZCBhc3NlcnRWYWxpZFRyYW5zYWN0aW9uIHRoYXQgcmV0dXJucyBhIGJvb2xlYW4gaW5zdGVhZCBvZiB0aHJvd2luZy5cbiAqXG4gKiBXZSBmb2xsb3cgdGhlIEFic3RyYWN0VXR4b0NvaW4gaW50ZXJmYWNlIGhlcmUgd2hpY2ggaXMgYSBiaXQgY29uZnVzZWQgLSB0aGUgcmV0dXJuIHZhbHVlIGlzIGEgYm9vbGVhbiBidXQgd2VcbiAqIGFsc28gdGhyb3cgZXJyb3JzIChiZWNhdXNlIHdlIGFjdHVhbGx5IHdhbnQgdG8ga25vdyB3aGF0IHdlbnQgd3JvbmcpLlxuICpcbiAqIEBwYXJhbSBjb2luXG4gKiBAcGFyYW0gcGFyYW1zXG4gKiBAcGFyYW0gZGVzY3JpcHRvck1hcFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmVyaWZpY2F0aW9uIHBhc3Nlc1xuICogQHRocm93cyB7VHhJbnRlbnRNaXNtYXRjaEVycm9yfSBpZiB0cmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgcGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnM8VE51bWJlcj4sXG4gIGRlc2NyaXB0b3JNYXA6IGRlc2NyaXB0b3JXYWxsZXQuRGVzY3JpcHRvck1hcFxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGxldCBwc2J0OiBQc2J0O1xuICB0cnkge1xuICAgIHBzYnQgPSBkZWNvZGVEZXNjcmlwdG9yUHNidChwYXJhbXMudHhQcmVidWlsZCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zdCB0eEV4cGxhbmF0aW9uID0gYXdhaXQgVHhJbnRlbnRNaXNtYXRjaEVycm9yLnRyeUdldFR4RXhwbGFuYXRpb24oXG4gICAgICBjb2luIGFzIHVua25vd24gYXMgSUJhc2VDb2luLFxuICAgICAgcGFyYW1zLnR4UHJlYnVpbGRcbiAgICApO1xuICAgIGNvbnN0IGVycm9yRGV0YWlsID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpO1xuICAgIHRocm93IG5ldyBUeEludGVudE1pc21hdGNoRXJyb3IoXG4gICAgICBgdW5leHBlY3RlZCB0cmFuc2FjdGlvbiB0eXBlOiAke2Vycm9yRGV0YWlsfWAsXG4gICAgICBwYXJhbXMucmVxSWQsXG4gICAgICBbcGFyYW1zLnR4UGFyYW1zXSxcbiAgICAgIHBhcmFtcy50eFByZWJ1aWxkLnR4SGV4LFxuICAgICAgdHhFeHBsYW5hdGlvblxuICAgICk7XG4gIH1cblxuICBhc3NlcnRWYWxpZFRyYW5zYWN0aW9uKHBzYnQsIGRlc2NyaXB0b3JNYXAsIHBhcmFtcy50eFBhcmFtcy5yZWNpcGllbnRzID8/IFtdLCBjb2luLm5hbWUpO1xuXG4gIGNvbnN0IHBhcnNlZE91dHB1dHMgPSB0b0Jhc2VQYXJzZWRUcmFuc2FjdGlvbk91dHB1dHNGcm9tUHNidChcbiAgICBwc2J0LFxuICAgIGRlc2NyaXB0b3JNYXAsXG4gICAgcGFyYW1zLnR4UGFyYW1zLnJlY2lwaWVudHMgPz8gW10sXG4gICAgY29pbi5uYW1lXG4gICk7XG5cbiAgaWYgKHBhcmFtcy50eFBhcmFtcy5xcikge1xuICAgIGNvbnN0IGFsbEV4dGVybmFsT3V0cHV0cyA9IFsuLi5wYXJzZWRPdXRwdXRzLmV4cGxpY2l0RXh0ZXJuYWxPdXRwdXRzLCAuLi5wYXJzZWRPdXRwdXRzLmltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzXTtcbiAgICBpZiAoYWxsRXh0ZXJuYWxPdXRwdXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHR4RXhwbGFuYXRpb24gPSBhd2FpdCBUeEludGVudE1pc21hdGNoRXJyb3IudHJ5R2V0VHhFeHBsYW5hdGlvbihcbiAgICAgICAgY29pbiBhcyB1bmtub3duIGFzIElCYXNlQ29pbixcbiAgICAgICAgcGFyYW1zLnR4UHJlYnVpbGRcbiAgICAgICk7XG4gICAgICB0aHJvdyBuZXcgVHhJbnRlbnRNaXNtYXRjaEVycm9yKFxuICAgICAgICAncXVhbnR1bS1yZXNpc3RhbnQgc3dlZXAgdHJhbnNhY3Rpb25zIG11c3Qgb25seSBjb250YWluIHdhbGxldC1pbnRlcm5hbCBvdXRwdXRzJyxcbiAgICAgICAgcGFyYW1zLnJlcUlkLFxuICAgICAgICBbcGFyYW1zLnR4UGFyYW1zXSxcbiAgICAgICAgcGFyYW1zLnR4UHJlYnVpbGQudHhIZXgsXG4gICAgICAgIHR4RXhwbGFuYXRpb25cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXNzZXJ0RXhwZWN0ZWRPdXRwdXREaWZmZXJlbmNlKHBhcnNlZE91dHB1dHMpO1xuXG4gIHJldHVybiB0cnVlO1xufVxuIl19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { fixedScriptWallet, Psbt as WasmPsbt } from '@bitgo/wasm-utxo';
|
|
2
|
+
import { IWallet, Triple } from '@bitgo-beta/sdk-core';
|
|
3
|
+
import { UtxoCoinName } from '../names';
|
|
4
|
+
import type { Unspent } from '../unspent';
|
|
5
|
+
import type { TransactionExplanationUtxolibPsbt, TransactionExplanationWasm } from './fixedScript/explainTransaction';
|
|
6
|
+
/**
|
|
7
|
+
* Decompose a raw transaction into useful information, such as the total amounts,
|
|
8
|
+
* change amounts, and transaction outputs.
|
|
9
|
+
*/
|
|
10
|
+
export declare function explainTx<TNumber extends number | bigint>(tx: fixedScriptWallet.BitGoPsbt | WasmPsbt, params: {
|
|
11
|
+
wallet?: IWallet;
|
|
12
|
+
pubs?: string[];
|
|
13
|
+
customChangeXpubs?: Triple<string>;
|
|
14
|
+
txInfo?: {
|
|
15
|
+
unspents?: Unspent<TNumber>[];
|
|
16
|
+
};
|
|
17
|
+
}, coinName: UtxoCoinName): TransactionExplanationUtxolibPsbt | TransactionExplanationWasm;
|
|
18
|
+
//# sourceMappingURL=explainTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explainTransaction.d.ts","sourceRoot":"","sources":["../../../../src/transaction/explainTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAY,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAKjE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,KAAK,EAAE,iCAAiC,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAItH;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACvD,EAAE,EAAE,iBAAiB,CAAC,SAAS,GAAG,QAAQ,EAC1C,MAAM,EAAE;IACN,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAA;KAAE,CAAC;CAC5C,EACD,QAAQ,EAAE,YAAY,GACrB,iCAAiC,GAAG,0BAA0B,CAgChE"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.explainTx = explainTx;
|
|
37
|
+
const wasm_utxo_1 = require("@bitgo/wasm-utxo");
|
|
38
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
39
|
+
const descriptor_1 = require("../descriptor");
|
|
40
|
+
const keychains_1 = require("../keychains");
|
|
41
|
+
const validatePolicy_1 = require("../descriptor/validatePolicy");
|
|
42
|
+
const replayProtection_1 = require("./fixedScript/replayProtection");
|
|
43
|
+
const fixedScript = __importStar(require("./fixedScript"));
|
|
44
|
+
const descriptor = __importStar(require("./descriptor"));
|
|
45
|
+
/**
|
|
46
|
+
* Decompose a raw transaction into useful information, such as the total amounts,
|
|
47
|
+
* change amounts, and transaction outputs.
|
|
48
|
+
*/
|
|
49
|
+
function explainTx(tx, params, coinName) {
|
|
50
|
+
if (params.wallet && (0, descriptor_1.isDescriptorWallet)(params.wallet)) {
|
|
51
|
+
if (!(tx instanceof wasm_utxo_1.Psbt)) {
|
|
52
|
+
throw new Error('descriptor wallets require PSBT format transactions');
|
|
53
|
+
}
|
|
54
|
+
if (!params.pubs || !(0, sdk_core_1.isTriple)(params.pubs)) {
|
|
55
|
+
throw new Error('pub triple is required for descriptor wallets');
|
|
56
|
+
}
|
|
57
|
+
const walletKeys = (0, keychains_1.toBip32Triple)(params.pubs);
|
|
58
|
+
const descriptors = (0, descriptor_1.getDescriptorMapFromWallet)(params.wallet, walletKeys, (0, validatePolicy_1.getPolicyForEnv)(params.wallet.bitgo.env));
|
|
59
|
+
return descriptor.explainPsbt(tx, descriptors, coinName);
|
|
60
|
+
}
|
|
61
|
+
if (tx instanceof wasm_utxo_1.fixedScriptWallet.BitGoPsbt) {
|
|
62
|
+
const pubs = params.pubs;
|
|
63
|
+
if (!pubs) {
|
|
64
|
+
throw new Error('pub triple is required');
|
|
65
|
+
}
|
|
66
|
+
const walletXpubs = (0, sdk_core_1.isTriple)(pubs) ? pubs : undefined;
|
|
67
|
+
if (!walletXpubs) {
|
|
68
|
+
throw new Error('pub triple must be valid triple or RootWalletKeys');
|
|
69
|
+
}
|
|
70
|
+
return fixedScript.explainPsbtWasm(tx, walletXpubs, {
|
|
71
|
+
replayProtection: {
|
|
72
|
+
publicKeys: (0, replayProtection_1.getReplayProtectionPubkeys)(coinName),
|
|
73
|
+
},
|
|
74
|
+
customChangeWalletXpubs: params.customChangeXpubs,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
else if (tx instanceof wasm_utxo_1.Psbt) {
|
|
78
|
+
throw new Error('descriptor Psbt is only supported for descriptor wallets');
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
throw new Error('unsupported transaction type');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpblRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2V4cGxhaW5UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSw4QkF5Q0M7QUEzREQsZ0RBQXVFO0FBQ3ZFLG1EQUFpRTtBQUVqRSw4Q0FBK0U7QUFDL0UsNENBQTZDO0FBQzdDLGlFQUErRDtBQUkvRCxxRUFBNEU7QUFFNUUsMkRBQTZDO0FBQzdDLHlEQUEyQztBQUUzQzs7O0dBR0c7QUFDSCxTQUFnQixTQUFTLENBQ3ZCLEVBQTBDLEVBQzFDLE1BS0MsRUFDRCxRQUFzQjtJQUV0QixJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBQSwrQkFBa0IsRUFBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsQ0FBQyxFQUFFLFlBQVksZ0JBQVEsQ0FBQyxFQUFFLENBQUM7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUEsbUJBQVEsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLElBQUEseUJBQWEsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsTUFBTSxXQUFXLEdBQUcsSUFBQSx1Q0FBMEIsRUFBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFBLGdDQUFlLEVBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwSCxPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ0QsSUFBSSxFQUFFLFlBQVksNkJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUErQixJQUFBLG1CQUFRLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFFLElBQXVCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN0RyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRTtZQUNsRCxnQkFBZ0IsRUFBRTtnQkFDaEIsVUFBVSxFQUFFLElBQUEsNkNBQTBCLEVBQUMsUUFBUSxDQUFDO2FBQ2pEO1lBQ0QsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQjtTQUNsRCxDQUFDLENBQUM7SUFDTCxDQUFDO1NBQU0sSUFBSSxFQUFFLFlBQVksZ0JBQVEsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztJQUM5RSxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpeGVkU2NyaXB0V2FsbGV0LCBQc2J0IGFzIFdhc21Qc2J0IH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5pbXBvcnQgeyBpc1RyaXBsZSwgSVdhbGxldCwgVHJpcGxlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBnZXREZXNjcmlwdG9yTWFwRnJvbVdhbGxldCwgaXNEZXNjcmlwdG9yV2FsbGV0IH0gZnJvbSAnLi4vZGVzY3JpcHRvcic7XG5pbXBvcnQgeyB0b0JpcDMyVHJpcGxlIH0gZnJvbSAnLi4va2V5Y2hhaW5zJztcbmltcG9ydCB7IGdldFBvbGljeUZvckVudiB9IGZyb20gJy4uL2Rlc2NyaXB0b3IvdmFsaWRhdGVQb2xpY3knO1xuaW1wb3J0IHsgVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vbmFtZXMnO1xuaW1wb3J0IHR5cGUgeyBVbnNwZW50IH0gZnJvbSAnLi4vdW5zcGVudCc7XG5cbmltcG9ydCB7IGdldFJlcGxheVByb3RlY3Rpb25QdWJrZXlzIH0gZnJvbSAnLi9maXhlZFNjcmlwdC9yZXBsYXlQcm90ZWN0aW9uJztcbmltcG9ydCB0eXBlIHsgVHJhbnNhY3Rpb25FeHBsYW5hdGlvblV0eG9saWJQc2J0LCBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uV2FzbSB9IGZyb20gJy4vZml4ZWRTY3JpcHQvZXhwbGFpblRyYW5zYWN0aW9uJztcbmltcG9ydCAqIGFzIGZpeGVkU2NyaXB0IGZyb20gJy4vZml4ZWRTY3JpcHQnO1xuaW1wb3J0ICogYXMgZGVzY3JpcHRvciBmcm9tICcuL2Rlc2NyaXB0b3InO1xuXG4vKipcbiAqIERlY29tcG9zZSBhIHJhdyB0cmFuc2FjdGlvbiBpbnRvIHVzZWZ1bCBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgdG90YWwgYW1vdW50cyxcbiAqIGNoYW5nZSBhbW91bnRzLCBhbmQgdHJhbnNhY3Rpb24gb3V0cHV0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cGxhaW5UeDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHg6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCB8IFdhc21Qc2J0LFxuICBwYXJhbXM6IHtcbiAgICB3YWxsZXQ/OiBJV2FsbGV0O1xuICAgIHB1YnM/OiBzdHJpbmdbXTtcbiAgICBjdXN0b21DaGFuZ2VYcHVicz86IFRyaXBsZTxzdHJpbmc+O1xuICAgIHR4SW5mbz86IHsgdW5zcGVudHM/OiBVbnNwZW50PFROdW1iZXI+W10gfTtcbiAgfSxcbiAgY29pbk5hbWU6IFV0eG9Db2luTmFtZVxuKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvblV0eG9saWJQc2J0IHwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbldhc20ge1xuICBpZiAocGFyYW1zLndhbGxldCAmJiBpc0Rlc2NyaXB0b3JXYWxsZXQocGFyYW1zLndhbGxldCkpIHtcbiAgICBpZiAoISh0eCBpbnN0YW5jZW9mIFdhc21Qc2J0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkZXNjcmlwdG9yIHdhbGxldHMgcmVxdWlyZSBQU0JUIGZvcm1hdCB0cmFuc2FjdGlvbnMnKTtcbiAgICB9XG4gICAgaWYgKCFwYXJhbXMucHVicyB8fCAhaXNUcmlwbGUocGFyYW1zLnB1YnMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3B1YiB0cmlwbGUgaXMgcmVxdWlyZWQgZm9yIGRlc2NyaXB0b3Igd2FsbGV0cycpO1xuICAgIH1cbiAgICBjb25zdCB3YWxsZXRLZXlzID0gdG9CaXAzMlRyaXBsZShwYXJhbXMucHVicyk7XG4gICAgY29uc3QgZGVzY3JpcHRvcnMgPSBnZXREZXNjcmlwdG9yTWFwRnJvbVdhbGxldChwYXJhbXMud2FsbGV0LCB3YWxsZXRLZXlzLCBnZXRQb2xpY3lGb3JFbnYocGFyYW1zLndhbGxldC5iaXRnby5lbnYpKTtcbiAgICByZXR1cm4gZGVzY3JpcHRvci5leHBsYWluUHNidCh0eCwgZGVzY3JpcHRvcnMsIGNvaW5OYW1lKTtcbiAgfVxuICBpZiAodHggaW5zdGFuY2VvZiBmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQpIHtcbiAgICBjb25zdCBwdWJzID0gcGFyYW1zLnB1YnM7XG4gICAgaWYgKCFwdWJzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3B1YiB0cmlwbGUgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgY29uc3Qgd2FsbGV0WHB1YnM6IFRyaXBsZTxzdHJpbmc+IHwgdW5kZWZpbmVkID0gaXNUcmlwbGUocHVicykgPyAocHVicyBhcyBUcmlwbGU8c3RyaW5nPikgOiB1bmRlZmluZWQ7XG4gICAgaWYgKCF3YWxsZXRYcHVicykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwdWIgdHJpcGxlIG11c3QgYmUgdmFsaWQgdHJpcGxlIG9yIFJvb3RXYWxsZXRLZXlzJyk7XG4gICAgfVxuICAgIHJldHVybiBmaXhlZFNjcmlwdC5leHBsYWluUHNidFdhc20odHgsIHdhbGxldFhwdWJzLCB7XG4gICAgICByZXBsYXlQcm90ZWN0aW9uOiB7XG4gICAgICAgIHB1YmxpY0tleXM6IGdldFJlcGxheVByb3RlY3Rpb25QdWJrZXlzKGNvaW5OYW1lKSxcbiAgICAgIH0sXG4gICAgICBjdXN0b21DaGFuZ2VXYWxsZXRYcHViczogcGFyYW1zLmN1c3RvbUNoYW5nZVhwdWJzLFxuICAgIH0pO1xuICB9IGVsc2UgaWYgKHR4IGluc3RhbmNlb2YgV2FzbVBzYnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Rlc2NyaXB0b3IgUHNidCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgZGVzY3JpcHRvciB3YWxsZXRzJyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Unspent } from '../../unspent';
|
|
2
|
+
export type PsbtParsedScriptType = 'p2sh' | 'p2wsh' | 'p2shP2wsh' | 'p2shP2pk' | 'taprootKeyPathSpend' | 'taprootScriptPathSpend' | 'p2trLegacy' | 'p2trMusig2ScriptPath' | 'p2trMusig2KeyPath';
|
|
3
|
+
export declare class InputSigningError<TNumber extends number | bigint = number> extends Error {
|
|
4
|
+
inputIndex: number;
|
|
5
|
+
inputType: PsbtParsedScriptType | null;
|
|
6
|
+
unspent: Unspent<TNumber> | {
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
9
|
+
reason: Error | string;
|
|
10
|
+
static expectedWalletUnspent<TNumber extends number | bigint>(inputIndex: number, inputType: PsbtParsedScriptType | null, unspent: Unspent<TNumber> | {
|
|
11
|
+
id: string;
|
|
12
|
+
}): InputSigningError<TNumber>;
|
|
13
|
+
constructor(inputIndex: number, inputType: PsbtParsedScriptType | null, unspent: Unspent<TNumber> | {
|
|
14
|
+
id: string;
|
|
15
|
+
}, reason: Error | string);
|
|
16
|
+
}
|
|
17
|
+
export declare class BulkSigningError extends Error {
|
|
18
|
+
reason: Error | string;
|
|
19
|
+
constructor(reason: Error | string);
|
|
20
|
+
}
|
|
21
|
+
export declare class TransactionSigningError<TNumber extends number | bigint = number> extends Error {
|
|
22
|
+
constructor(signErrors: InputSigningError<TNumber>[], verifyError: InputSigningError<TNumber>[]);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=SigningError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SigningError.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/SigningError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,OAAO,GACP,WAAW,GACX,UAAU,GACV,qBAAqB,GACrB,wBAAwB,GACxB,YAAY,GACZ,sBAAsB,GACtB,mBAAmB,CAAC;AAExB,qBAAa,iBAAiB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,CAAE,SAAQ,KAAK;IAe3E,UAAU,EAAE,MAAM;IAClB,SAAS,EAAE,oBAAoB,GAAG,IAAI;IACtC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;IAC1C,MAAM,EAAE,KAAK,GAAG,MAAM;IAjB/B,MAAM,CAAC,qBAAqB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC1D,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,oBAAoB,GAAG,IAAI,EACtC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GACzC,iBAAiB,CAAC,OAAO,CAAC;gBAUpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,oBAAoB,GAAG,IAAI,EACtC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAC1C,MAAM,EAAE,KAAK,GAAG,MAAM;CAIhC;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACtB,MAAM,EAAE,KAAK,GAAG,MAAM;gBAAtB,MAAM,EAAE,KAAK,GAAG,MAAM;CAI1C;AAED,qBAAa,uBAAuB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,CAAE,SAAQ,KAAK;gBAC9E,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE;CAMhG"}
|