@bitgo-beta/abstract-utxo 1.6.1-alpha.45 → 1.6.1-alpha.451
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 +435 -0
- package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -0
- package/dist/cjs/src/abstractUtxoCoin.js +657 -0
- package/dist/cjs/src/address/fixedScript.d.ts +49 -0
- package/dist/cjs/src/address/fixedScript.d.ts.map +1 -0
- package/dist/cjs/src/address/fixedScript.js +135 -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/descriptor/NamedDescriptor.d.ts +20 -0
- package/dist/cjs/src/descriptor/NamedDescriptor.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/NamedDescriptor.js +79 -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 +66 -0
- package/dist/cjs/src/descriptor/builder/builder.d.ts +13 -0
- package/dist/cjs/src/descriptor/builder/builder.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/builder/builder.js +37 -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 +116 -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 +8 -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 +92 -0
- package/dist/cjs/src/impl/bch/bch.d.ts +20 -0
- package/dist/cjs/src/impl/bch/bch.d.ts.map +1 -0
- package/dist/cjs/src/impl/bch/bch.js +74 -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 +10 -0
- package/dist/cjs/src/impl/bch/tbch.d.ts.map +1 -0
- package/dist/cjs/src/impl/bch/tbch.js +48 -0
- package/dist/cjs/src/impl/bcha/bcha.d.ts +8 -0
- package/dist/cjs/src/impl/bcha/bcha.d.ts.map +1 -0
- package/dist/cjs/src/impl/bcha/bcha.js +48 -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 +10 -0
- package/dist/cjs/src/impl/bcha/tbcha.d.ts.map +1 -0
- package/dist/cjs/src/impl/bcha/tbcha.js +48 -0
- package/dist/cjs/src/impl/bsv/bsv.d.ts +8 -0
- package/dist/cjs/src/impl/bsv/bsv.d.ts.map +1 -0
- package/dist/cjs/src/impl/bsv/bsv.js +48 -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 +10 -0
- package/dist/cjs/src/impl/bsv/tbsv.d.ts.map +1 -0
- package/dist/cjs/src/impl/bsv/tbsv.js +48 -0
- package/dist/cjs/src/impl/btc/btc.d.ts +13 -0
- package/dist/cjs/src/impl/btc/btc.d.ts.map +1 -0
- package/dist/cjs/src/impl/btc/btc.js +55 -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 +51 -0
- package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/impl/btc/inscriptionBuilder.js +183 -0
- package/dist/cjs/src/impl/btc/tbtc.d.ts +10 -0
- package/dist/cjs/src/impl/btc/tbtc.d.ts.map +1 -0
- package/dist/cjs/src/impl/btc/tbtc.js +48 -0
- package/dist/cjs/src/impl/btc/tbtc4.d.ts +10 -0
- package/dist/cjs/src/impl/btc/tbtc4.d.ts.map +1 -0
- package/dist/cjs/src/impl/btc/tbtc4.js +48 -0
- package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts +10 -0
- package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts.map +1 -0
- package/dist/cjs/src/impl/btc/tbtcbgsig.js +48 -0
- package/dist/cjs/src/impl/btc/tbtcsig.d.ts +10 -0
- package/dist/cjs/src/impl/btc/tbtcsig.d.ts.map +1 -0
- package/dist/cjs/src/impl/btc/tbtcsig.js +48 -0
- package/dist/cjs/src/impl/btg/btg.d.ts +7 -0
- package/dist/cjs/src/impl/btg/btg.d.ts.map +1 -0
- package/dist/cjs/src/impl/btg/btg.js +48 -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 +7 -0
- package/dist/cjs/src/impl/dash/dash.d.ts.map +1 -0
- package/dist/cjs/src/impl/dash/dash.js +48 -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 +10 -0
- package/dist/cjs/src/impl/dash/tdash.d.ts.map +1 -0
- package/dist/cjs/src/impl/dash/tdash.js +48 -0
- package/dist/cjs/src/impl/doge/doge.d.ts +32 -0
- package/dist/cjs/src/impl/doge/doge.d.ts.map +1 -0
- package/dist/cjs/src/impl/doge/doge.js +79 -0
- package/dist/cjs/src/impl/doge/index.d.ts +3 -0
- package/dist/cjs/src/impl/doge/index.d.ts.map +1 -0
- package/dist/cjs/src/impl/doge/index.js +19 -0
- package/dist/cjs/src/impl/doge/tdoge.d.ts +10 -0
- package/dist/cjs/src/impl/doge/tdoge.d.ts.map +1 -0
- package/dist/cjs/src/impl/doge/tdoge.js +48 -0
- package/dist/cjs/src/impl/index.d.ts +10 -0
- package/dist/cjs/src/impl/index.d.ts.map +1 -0
- package/dist/cjs/src/impl/index.js +46 -0
- package/dist/cjs/src/impl/ltc/index.d.ts +3 -0
- package/dist/cjs/src/impl/ltc/index.d.ts.map +1 -0
- package/dist/cjs/src/impl/ltc/index.js +19 -0
- package/dist/cjs/src/impl/ltc/ltc.d.ts +7 -0
- package/dist/cjs/src/impl/ltc/ltc.d.ts.map +1 -0
- package/dist/cjs/src/impl/ltc/ltc.js +52 -0
- package/dist/cjs/src/impl/ltc/tltc.d.ts +7 -0
- package/dist/cjs/src/impl/ltc/tltc.d.ts.map +1 -0
- package/dist/cjs/src/impl/ltc/tltc.js +51 -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 +7 -0
- package/dist/cjs/src/impl/zec/tzec.d.ts.map +1 -0
- package/dist/cjs/src/impl/zec/tzec.js +48 -0
- package/dist/cjs/src/impl/zec/zec.d.ts +10 -0
- package/dist/cjs/src/impl/zec/zec.d.ts.map +1 -0
- package/dist/cjs/src/impl/zec/zec.js +48 -0
- package/dist/cjs/src/index.d.ts +21 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/cjs/src/index.js +60 -0
- package/dist/cjs/src/keychains.d.ts +52 -0
- package/dist/cjs/src/keychains.d.ts.map +1 -0
- package/dist/cjs/src/keychains.js +136 -0
- package/dist/cjs/src/names.d.ts +26 -0
- package/dist/cjs/src/names.d.ts.map +1 -0
- package/dist/cjs/src/names.js +214 -0
- package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts +8 -0
- package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
- package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.js +26 -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 +15 -0
- package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts.map +1 -0
- package/dist/cjs/src/offlineVault/TransactionExplanation.js +16 -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 +38 -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 -1
- 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 +89 -0
- package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -0
- package/dist/cjs/src/recovery/backupKeyRecovery.js +361 -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 +18 -7
- package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -0
- package/dist/cjs/src/recovery/crossChainRecovery.js +391 -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 +84 -0
- package/dist/cjs/src/recovery/psbt.d.ts.map +1 -0
- package/dist/cjs/src/recovery/psbt.js +250 -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 +125 -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 +11 -0
- package/dist/cjs/src/transaction/decode.d.ts.map +1 -0
- package/dist/cjs/src/transaction/decode.js +81 -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 +80 -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 +16 -0
- package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -0
- package/dist/cjs/src/transaction/descriptor/parse.js +116 -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 +43 -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 +109 -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 +88 -0
- package/dist/cjs/src/transaction/fetchInputs.d.ts +26 -0
- package/dist/cjs/src/transaction/fetchInputs.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fetchInputs.js +109 -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 +26 -0
- package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts +11 -0
- package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.js +67 -0
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +73 -0
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +344 -0
- package/dist/cjs/src/transaction/fixedScript/index.d.ts +10 -0
- package/dist/cjs/src/transaction/fixedScript/index.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/index.js +32 -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 +220 -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 +215 -0
- package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts +7 -0
- package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/replayProtection.js +78 -0
- package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts +30 -0
- package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.js +152 -0
- package/dist/cjs/src/transaction/fixedScript/signPsbt.d.ts +30 -0
- package/dist/cjs/src/transaction/fixedScript/signPsbt.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/signPsbt.js +174 -0
- package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts +22 -0
- package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.js +129 -0
- package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +17 -0
- package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/fixedScript/signTransaction.js +50 -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 +199 -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 +53 -0
- package/dist/cjs/src/transaction/index.d.ts +8 -0
- package/dist/cjs/src/transaction/index.d.ts.map +1 -0
- package/dist/cjs/src/transaction/index.js +50 -0
- package/dist/cjs/src/transaction/outputDifference.d.ts +40 -0
- package/dist/cjs/src/transaction/outputDifference.d.ts.map +1 -0
- package/dist/cjs/src/transaction/outputDifference.js +47 -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 +29 -0
- package/dist/cjs/src/transaction/recipient.d.ts.map +1 -0
- package/dist/cjs/src/transaction/recipient.js +88 -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 +49 -0
- package/dist/cjs/src/transaction/types.d.ts.map +1 -0
- package/dist/cjs/src/transaction/types.js +7 -0
- package/dist/cjs/src/transaction/verifyTransaction.d.ts +4 -0
- package/dist/cjs/src/transaction/verifyTransaction.d.ts.map +1 -0
- package/dist/cjs/src/transaction/verifyTransaction.js +50 -0
- package/dist/cjs/src/verifyKey.d.ts +29 -0
- package/dist/cjs/src/verifyKey.d.ts.map +1 -0
- package/dist/cjs/src/verifyKey.js +164 -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 +74 -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 +182 -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 +45 -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 +97 -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 +154 -0
- package/dist/cjs/test/unit/customSigner.d.ts +3 -0
- package/dist/cjs/test/unit/customSigner.d.ts.map +1 -0
- package/dist/cjs/test/unit/customSigner.js +108 -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 +18 -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 +72 -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 +20 -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 +28 -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 +102 -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 +74 -0
- package/dist/cjs/test/unit/fixtures/bip322/fixtures.d.ts +15 -0
- package/dist/cjs/test/unit/fixtures/bip322/fixtures.d.ts.map +1 -0
- package/dist/cjs/test/unit/fixtures/bip322/fixtures.js +51 -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 +138 -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 +47 -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 +32 -0
- package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts +2 -0
- package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts.map +1 -0
- package/dist/cjs/test/unit/impl/btc/unit/btc.js +220 -0
- package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts +4 -0
- package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts.map +1 -0
- package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.js +10 -0
- package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts +2 -0
- package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts.map +1 -0
- package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.js +18 -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 +29 -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 +32 -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 +32 -0
- package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts +2 -0
- package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts.map +1 -0
- package/dist/cjs/test/unit/impl/ltc/unit/index.js +39 -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 +29 -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 +49 -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 +125 -0
- package/dist/cjs/test/unit/prebuildAndSign.d.ts +6 -0
- package/dist/cjs/test/unit/prebuildAndSign.d.ts.map +1 -0
- package/dist/cjs/test/unit/prebuildAndSign.js +270 -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 +309 -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 +295 -0
- package/dist/cjs/test/unit/recovery/mock.d.ts +30 -0
- package/dist/cjs/test/unit/recovery/mock.d.ts.map +1 -0
- package/dist/cjs/test/unit/recovery/mock.js +138 -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 +30 -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 +17 -0
- package/dist/cjs/test/unit/transaction/descriptor/outputDifference.d.ts +2 -0
- package/dist/cjs/test/unit/transaction/descriptor/outputDifference.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/descriptor/outputDifference.js +76 -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 +135 -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 +32 -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 +48 -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 +132 -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 +288 -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 +59 -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 +157 -0
- package/dist/cjs/test/unit/transaction/fixedScript/util.d.ts +3 -0
- package/dist/cjs/test/unit/transaction/fixedScript/util.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction/fixedScript/util.js +41 -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 +528 -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 +174 -0
- package/dist/cjs/test/unit/util/fixtures.d.ts +14 -0
- package/dist/cjs/test/unit/util/fixtures.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/fixtures.js +102 -0
- package/dist/cjs/test/unit/util/index.d.ts +7 -0
- package/dist/cjs/test/unit/util/index.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/index.js +23 -0
- package/dist/cjs/test/unit/util/keychains.d.ts +26 -0
- package/dist/cjs/test/unit/util/keychains.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/keychains.js +72 -0
- package/dist/cjs/test/unit/util/nockBitGo.d.ts +3 -0
- package/dist/cjs/test/unit/util/nockBitGo.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/nockBitGo.js +11 -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 +56 -0
- package/dist/cjs/test/unit/util/transaction.d.ts +24 -0
- package/dist/cjs/test/unit/util/transaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/transaction.js +107 -0
- package/dist/cjs/test/unit/util/unspents.d.ts +13 -0
- package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/unspents.js +106 -0
- package/dist/cjs/test/unit/util/utxoCoins.d.ts +8 -0
- package/dist/cjs/test/unit/util/utxoCoins.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/utxoCoins.js +95 -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 +327 -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 +248 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/abstractUtxoCoin.d.ts +435 -0
- package/dist/esm/abstractUtxoCoin.d.ts.map +1 -0
- package/dist/esm/abstractUtxoCoin.js +616 -0
- package/dist/esm/address/fixedScript.d.ts +49 -0
- package/dist/esm/address/fixedScript.d.ts.map +1 -0
- package/dist/esm/address/fixedScript.js +94 -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/descriptor/NamedDescriptor.d.ts +20 -0
- package/dist/esm/descriptor/NamedDescriptor.d.ts.map +1 -0
- package/dist/esm/descriptor/NamedDescriptor.js +39 -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 +13 -0
- package/dist/esm/descriptor/builder/builder.d.ts.map +1 -0
- package/dist/esm/descriptor/builder/builder.js +34 -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 +112 -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 +8 -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 +80 -0
- package/dist/esm/impl/bch/bch.d.ts +20 -0
- package/dist/esm/impl/bch/bch.d.ts.map +1 -0
- package/dist/esm/impl/bch/bch.js +37 -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 +10 -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 +8 -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 +10 -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 +8 -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 +10 -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 +13 -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 +51 -0
- package/dist/esm/impl/btc/inscriptionBuilder.d.ts.map +1 -0
- package/dist/esm/impl/btc/inscriptionBuilder.js +143 -0
- package/dist/esm/impl/btc/tbtc.d.ts +10 -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 +10 -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 +10 -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 +10 -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 +7 -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 +7 -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 +10 -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 +32 -0
- package/dist/esm/impl/doge/doge.d.ts.map +1 -0
- package/dist/esm/impl/doge/doge.js +75 -0
- package/dist/esm/impl/doge/index.d.ts +3 -0
- package/dist/esm/impl/doge/index.d.ts.map +1 -0
- package/dist/esm/impl/doge/index.js +3 -0
- package/dist/esm/impl/doge/tdoge.d.ts +10 -0
- package/dist/esm/impl/doge/tdoge.d.ts.map +1 -0
- package/dist/esm/impl/doge/tdoge.js +11 -0
- package/dist/esm/impl/index.d.ts +10 -0
- package/dist/esm/impl/index.d.ts.map +1 -0
- package/dist/esm/impl/index.js +10 -0
- package/dist/esm/impl/ltc/index.d.ts +3 -0
- package/dist/esm/impl/ltc/index.d.ts.map +1 -0
- package/dist/esm/impl/ltc/index.js +3 -0
- package/dist/esm/impl/ltc/ltc.d.ts +7 -0
- package/dist/esm/impl/ltc/ltc.d.ts.map +1 -0
- package/dist/esm/impl/ltc/ltc.js +15 -0
- package/dist/esm/impl/ltc/tltc.d.ts +7 -0
- package/dist/esm/impl/ltc/tltc.d.ts.map +1 -0
- package/dist/esm/impl/ltc/tltc.js +14 -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 +7 -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 +10 -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 +21 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +21 -0
- package/dist/esm/keychains.d.ts +52 -0
- package/dist/esm/keychains.d.ts.map +1 -0
- package/dist/esm/keychains.js +92 -0
- package/dist/esm/names.d.ts +26 -0
- package/dist/esm/names.d.ts.map +1 -0
- package/dist/esm/names.js +171 -0
- package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts +8 -0
- package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
- package/dist/esm/offlineVault/OfflineVaultHalfSigned.js +23 -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 +15 -0
- package/dist/esm/offlineVault/TransactionExplanation.d.ts.map +1 -0
- package/dist/esm/offlineVault/TransactionExplanation.js +13 -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 +38 -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 +22 -0
- package/dist/{src → esm}/recovery/RecoveryProvider.d.ts.map +1 -1
- package/dist/esm/recovery/RecoveryProvider.js +19 -0
- package/dist/esm/recovery/backupKeyRecovery.d.ts +89 -0
- package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -0
- package/dist/esm/recovery/backupKeyRecovery.js +319 -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 +96 -0
- package/dist/esm/recovery/crossChainRecovery.d.ts.map +1 -0
- package/dist/esm/recovery/crossChainRecovery.js +351 -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 +84 -0
- package/dist/esm/recovery/psbt.d.ts.map +1 -0
- package/dist/esm/recovery/psbt.js +207 -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 +86 -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 +11 -0
- package/dist/esm/transaction/decode.d.ts.map +1 -0
- package/dist/esm/transaction/decode.js +43 -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 +16 -0
- package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -0
- package/dist/esm/transaction/descriptor/parse.js +79 -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 +38 -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 +66 -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 +52 -0
- package/dist/esm/transaction/fetchInputs.d.ts +26 -0
- package/dist/esm/transaction/fetchInputs.d.ts.map +1 -0
- package/dist/esm/transaction/fetchInputs.js +72 -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 +21 -0
- package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts +11 -0
- package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/explainPsbtWasm.js +64 -0
- package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +73 -0
- package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/explainTransaction.js +307 -0
- package/dist/esm/transaction/fixedScript/index.d.ts +10 -0
- package/dist/esm/transaction/fixedScript/index.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/index.js +9 -0
- package/dist/esm/transaction/fixedScript/musig2.d.ts +4 -0
- package/dist/esm/transaction/fixedScript/musig2.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/musig2.js +2 -0
- package/dist/esm/transaction/fixedScript/parseOutput.d.ts +28 -0
- package/dist/esm/transaction/fixedScript/parseOutput.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/parseOutput.js +213 -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 +176 -0
- package/dist/esm/transaction/fixedScript/replayProtection.d.ts +7 -0
- package/dist/esm/transaction/fixedScript/replayProtection.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/replayProtection.js +39 -0
- package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts +30 -0
- package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/signLegacyTransaction.js +112 -0
- package/dist/esm/transaction/fixedScript/signPsbt.d.ts +30 -0
- package/dist/esm/transaction/fixedScript/signPsbt.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/signPsbt.js +134 -0
- package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts +22 -0
- package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/signPsbtWasm.js +122 -0
- package/dist/esm/transaction/fixedScript/signTransaction.d.ts +17 -0
- package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/fixedScript/signTransaction.js +44 -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 +160 -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 +8 -0
- package/dist/esm/transaction/index.d.ts.map +1 -0
- package/dist/esm/transaction/index.js +8 -0
- package/dist/esm/transaction/outputDifference.d.ts +40 -0
- package/dist/esm/transaction/outputDifference.d.ts.map +1 -0
- package/dist/esm/transaction/outputDifference.js +42 -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 +29 -0
- package/dist/esm/transaction/recipient.d.ts.map +1 -0
- package/dist/esm/transaction/recipient.js +48 -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 +49 -0
- package/dist/esm/transaction/types.d.ts.map +1 -0
- package/dist/esm/transaction/types.js +4 -0
- package/dist/esm/transaction/verifyTransaction.d.ts +4 -0
- package/dist/esm/transaction/verifyTransaction.d.ts.map +1 -0
- package/dist/esm/transaction/verifyTransaction.js +14 -0
- package/dist/esm/verifyKey.d.ts +29 -0
- package/dist/esm/verifyKey.d.ts.map +1 -0
- package/dist/esm/verifyKey.js +123 -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 -18
- 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.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,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const assert_1 = __importDefault(require("assert"));
|
|
40
|
+
const sinon = __importStar(require("sinon"));
|
|
41
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
42
|
+
const util_1 = require("./util");
|
|
43
|
+
describe('Parse Transaction', function () {
|
|
44
|
+
const coin = (0, util_1.getUtxoCoin)('tbtc');
|
|
45
|
+
/*
|
|
46
|
+
* mock objects which get passed into parse transaction.
|
|
47
|
+
* These objects are structured to force parse transaction into a
|
|
48
|
+
* particular execution path for these tests.
|
|
49
|
+
*/
|
|
50
|
+
const verification = {
|
|
51
|
+
disableNetworking: true,
|
|
52
|
+
keychains: {
|
|
53
|
+
user: { id: '0', pub: 'aaa', type: 'independent' },
|
|
54
|
+
backup: { id: '1', pub: 'bbb', type: 'independent' },
|
|
55
|
+
bitgo: { id: '2', pub: 'ccc', type: 'independent' },
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
const wallet = sinon.createStubInstance(sdk_core_1.Wallet, {
|
|
59
|
+
migratedFrom: '2MzJxAENaesCFu3orrCdj22c69tLEsKXQoR',
|
|
60
|
+
});
|
|
61
|
+
const outputAmount = (0.01 * 1e8).toString();
|
|
62
|
+
let stubExplainTransaction;
|
|
63
|
+
let stubVerifyAddress;
|
|
64
|
+
afterEach(() => {
|
|
65
|
+
if (stubExplainTransaction) {
|
|
66
|
+
stubExplainTransaction.restore();
|
|
67
|
+
}
|
|
68
|
+
if (stubVerifyAddress) {
|
|
69
|
+
stubVerifyAddress.restore();
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
async function runClassifyOutputsTest(outputAddress, verification, expectExternal, txParams = {}) {
|
|
73
|
+
stubExplainTransaction = sinon.stub(coin, 'explainTransaction').resolves({
|
|
74
|
+
outputs: [],
|
|
75
|
+
changeOutputs: [
|
|
76
|
+
{
|
|
77
|
+
address: outputAddress,
|
|
78
|
+
amount: outputAmount,
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
});
|
|
82
|
+
if (!txParams.changeAddress) {
|
|
83
|
+
stubVerifyAddress = sinon.stub(coin, 'verifyAddress').throws(new sdk_core_1.UnexpectedAddressError('test error'));
|
|
84
|
+
}
|
|
85
|
+
const parsedTransaction = await coin.parseTransaction({
|
|
86
|
+
txParams,
|
|
87
|
+
txPrebuild: { txHex: '' },
|
|
88
|
+
wallet: wallet,
|
|
89
|
+
verification,
|
|
90
|
+
});
|
|
91
|
+
assert_1.default.ok(parsedTransaction.outputs[0]);
|
|
92
|
+
assert_1.default.deepStrictEqual(parsedTransaction.outputs[0], {
|
|
93
|
+
address: outputAddress,
|
|
94
|
+
amount: outputAmount,
|
|
95
|
+
external: expectExternal,
|
|
96
|
+
});
|
|
97
|
+
const isExplicit = txParams.recipients !== undefined && txParams.recipients.some((recipient) => recipient.address === outputAddress);
|
|
98
|
+
assert_1.default.strictEqual(parsedTransaction.explicitExternalSpendAmount, Number(isExplicit && expectExternal ? outputAmount : 0));
|
|
99
|
+
assert_1.default.strictEqual(parsedTransaction.implicitExternalSpendAmount, Number(!isExplicit && expectExternal ? outputAmount : 0));
|
|
100
|
+
}
|
|
101
|
+
it('should classify outputs which spend change back to a v1 wallet base address as internal', async function () {
|
|
102
|
+
return runClassifyOutputsTest(wallet.migratedFrom(), verification, false);
|
|
103
|
+
});
|
|
104
|
+
it('should classify outputs which spend change back to a v1 wallet base address as external ' +
|
|
105
|
+
'if considerMigratedFromAddressInternal is set and false', async function () {
|
|
106
|
+
return runClassifyOutputsTest(wallet.migratedFrom(), { ...verification, considerMigratedFromAddressInternal: false }, true);
|
|
107
|
+
});
|
|
108
|
+
it('should classify outputs which spend to addresses not on the wallet as external', async function () {
|
|
109
|
+
return runClassifyOutputsTest('2Mxjx4E2EEe4yJuLvdEuAdMUd4id1emPCZs', verification, true);
|
|
110
|
+
});
|
|
111
|
+
it('should accept a custom change address', async function () {
|
|
112
|
+
const changeAddress = '2NAuziD75WnPPHJVwnd4ckgY4SuJaDVVbMD';
|
|
113
|
+
return runClassifyOutputsTest(changeAddress, verification, false, {
|
|
114
|
+
changeAddress,
|
|
115
|
+
recipients: [],
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
it('should classify outputs with external address in recipients as explicit', async function () {
|
|
119
|
+
const externalAddress = '2NAuziD75WnPPHJVwnd4ckgY4SuJaDVVbMD';
|
|
120
|
+
return runClassifyOutputsTest(externalAddress, verification, true, {
|
|
121
|
+
recipients: [{ address: externalAddress, amount: outputAmount }],
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9wYXJzZVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLDZDQUErQjtBQUMvQixtREFBMkY7QUFNM0YsaUNBQXFDO0FBRXJDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtJQUM1QixNQUFNLElBQUksR0FBRyxJQUFBLGtCQUFXLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFFakM7Ozs7T0FJRztJQUNILE1BQU0sWUFBWSxHQUF3QjtRQUN4QyxpQkFBaUIsRUFBRSxJQUFJO1FBQ3ZCLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ2xELE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ3BELEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1NBQ3BEO0tBQ0YsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBTSxFQUFFO1FBQzlDLFlBQVksRUFBRSxxQ0FBcUM7S0FDcEQsQ0FBQyxDQUFDO0lBRUgsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFN0MsSUFBSSxzQkFBdUMsQ0FBQztJQUM1QyxJQUFJLGlCQUE4QyxDQUFDO0lBRW5ELFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixJQUFJLHNCQUFzQixFQUFFLENBQUM7WUFDM0Is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LEdBQUcscUNBQXFDLENBQUM7UUFDNUQsT0FBTyxzQkFBc0IsQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRTtZQUNoRSxhQUFhO1lBQ2IsVUFBVSxFQUFFLEVBQUU7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx5RUFBeUUsRUFBRSxLQUFLO1FBQ2pGLE1BQU0sZUFBZSxHQUFHLHFDQUFxQyxDQUFDO1FBQzlELE9BQU8sc0JBQXNCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUU7WUFDakUsVUFBVSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQztTQUNqRSxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyBXYWxsZXQsIFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IsIFZlcmlmaWNhdGlvbk9wdGlvbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmltcG9ydCB7IFV0eG9XYWxsZXQsIFRyYW5zYWN0aW9uUGFyYW1zIH0gZnJvbSAnLi4vLi4vc3JjJztcbmltcG9ydCB7IE91dHB1dCB9IGZyb20gJy4uLy4uL3NyYy90cmFuc2FjdGlvbi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuLi8uLi9zcmMvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvZXhwbGFpblRyYW5zYWN0aW9uJztcblxuaW1wb3J0IHsgZ2V0VXR4b0NvaW4gfSBmcm9tICcuL3V0aWwnO1xuXG5kZXNjcmliZSgnUGFyc2UgVHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGNvaW4gPSBnZXRVdHhvQ29pbigndGJ0YycpO1xuXG4gIC8qXG4gICAqIG1vY2sgb2JqZWN0cyB3aGljaCBnZXQgcGFzc2VkIGludG8gcGFyc2UgdHJhbnNhY3Rpb24uXG4gICAqIFRoZXNlIG9iamVjdHMgYXJlIHN0cnVjdHVyZWQgdG8gZm9yY2UgcGFyc2UgdHJhbnNhY3Rpb24gaW50byBhXG4gICAqIHBhcnRpY3VsYXIgZXhlY3V0aW9uIHBhdGggZm9yIHRoZXNlIHRlc3RzLlxuICAgKi9cbiAgY29uc3QgdmVyaWZpY2F0aW9uOiBWZXJpZmljYXRpb25PcHRpb25zID0ge1xuICAgIGRpc2FibGVOZXR3b3JraW5nOiB0cnVlLFxuICAgIGtleWNoYWluczoge1xuICAgICAgdXNlcjogeyBpZDogJzAnLCBwdWI6ICdhYWEnLCB0eXBlOiAnaW5kZXBlbmRlbnQnIH0sXG4gICAgICBiYWNrdXA6IHsgaWQ6ICcxJywgcHViOiAnYmJiJywgdHlwZTogJ2luZGVwZW5kZW50JyB9LFxuICAgICAgYml0Z286IHsgaWQ6ICcyJywgcHViOiAnY2NjJywgdHlwZTogJ2luZGVwZW5kZW50JyB9LFxuICAgIH0sXG4gIH07XG5cbiAgY29uc3Qgd2FsbGV0ID0gc2lub24uY3JlYXRlU3R1Ykluc3RhbmNlKFdhbGxldCwge1xuICAgIG1pZ3JhdGVkRnJvbTogJzJNekp4QUVOYWVzQ0Z1M29yckNkajIyYzY5dExFc0tYUW9SJyxcbiAgfSk7XG5cbiAgY29uc3Qgb3V0cHV0QW1vdW50ID0gKDAuMDEgKiAxZTgpLnRvU3RyaW5nKCk7XG5cbiAgbGV0IHN0dWJFeHBsYWluVHJhbnNhY3Rpb246IHNpbm9uLlNpbm9uU3R1YjtcbiAgbGV0IHN0dWJWZXJpZnlBZGRyZXNzOiBzaW5vbi5TaW5vblN0dWIgfCB1bmRlZmluZWQ7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBpZiAoc3R1YkV4cGxhaW5UcmFuc2FjdGlvbikge1xuICAgICAgc3R1YkV4cGxhaW5UcmFuc2FjdGlvbi5yZXN0b3JlKCk7XG4gICAgfVxuICAgIGlmIChzdHViVmVyaWZ5QWRkcmVzcykge1xuICAgICAgc3R1YlZlcmlmeUFkZHJlc3MucmVzdG9yZSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gcnVuQ2xhc3NpZnlPdXRwdXRzVGVzdChcbiAgICBvdXRwdXRBZGRyZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdmVyaWZpY2F0aW9uOiBWZXJpZmljYXRpb25PcHRpb25zLFxuICAgIGV4cGVjdEV4dGVybmFsOiBib29sZWFuLFxuICAgIHR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtcyA9IHt9XG4gICkge1xuICAgIHN0dWJFeHBsYWluVHJhbnNhY3Rpb24gPSBzaW5vbi5zdHViKGNvaW4sICdleHBsYWluVHJhbnNhY3Rpb24nKS5yZXNvbHZlcyh7XG4gICAgICBvdXRwdXRzOiBbXSBhcyBPdXRwdXRbXSxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IG91dHB1dEFkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiBvdXRwdXRBbW91bnQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0gYXMgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbik7XG5cbiAgICBpZiAoIXR4UGFyYW1zLmNoYW5nZUFkZHJlc3MpIHtcbiAgICAgIHN0dWJWZXJpZnlBZGRyZXNzID0gc2lub24uc3R1Yihjb2luLCAndmVyaWZ5QWRkcmVzcycpLnRocm93cyhuZXcgVW5leHBlY3RlZEFkZHJlc3NFcnJvcigndGVzdCBlcnJvcicpKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICB0eFBhcmFtcyxcbiAgICAgIHR4UHJlYnVpbGQ6IHsgdHhIZXg6ICcnIH0sXG4gICAgICB3YWxsZXQ6IHdhbGxldCBhcyB1bmtub3duIGFzIFV0eG9XYWxsZXQsXG4gICAgICB2ZXJpZmljYXRpb24sXG4gICAgfSk7XG5cbiAgICBhc3NlcnQub2socGFyc2VkVHJhbnNhY3Rpb24ub3V0cHV0c1swXSk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZWRUcmFuc2FjdGlvbi5vdXRwdXRzWzBdLCB7XG4gICAgICBhZGRyZXNzOiBvdXRwdXRBZGRyZXNzLFxuICAgICAgYW1vdW50OiBvdXRwdXRBbW91bnQsXG4gICAgICBleHRlcm5hbDogZXhwZWN0RXh0ZXJuYWwsXG4gICAgfSk7XG5cbiAgICBjb25zdCBpc0V4cGxpY2l0ID1cbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgIT09IHVuZGVmaW5lZCAmJiB0eFBhcmFtcy5yZWNpcGllbnRzLnNvbWUoKHJlY2lwaWVudCkgPT4gcmVjaXBpZW50LmFkZHJlc3MgPT09IG91dHB1dEFkZHJlc3MpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLmV4cGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCxcbiAgICAgIE51bWJlcihpc0V4cGxpY2l0ICYmIGV4cGVjdEV4dGVybmFsID8gb3V0cHV0QW1vdW50IDogMClcbiAgICApO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCxcbiAgICAgIE51bWJlcighaXNFeHBsaWNpdCAmJiBleHBlY3RFeHRlcm5hbCA/IG91dHB1dEFtb3VudCA6IDApXG4gICAgKTtcbiAgfVxuXG4gIGl0KCdzaG91bGQgY2xhc3NpZnkgb3V0cHV0cyB3aGljaCBzcGVuZCBjaGFuZ2UgYmFjayB0byBhIHYxIHdhbGxldCBiYXNlIGFkZHJlc3MgYXMgaW50ZXJuYWwnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHJ1bkNsYXNzaWZ5T3V0cHV0c1Rlc3Qod2FsbGV0Lm1pZ3JhdGVkRnJvbSgpLCB2ZXJpZmljYXRpb24sIGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoXG4gICAgJ3Nob3VsZCBjbGFzc2lmeSBvdXRwdXRzIHdoaWNoIHNwZW5kIGNoYW5nZSBiYWNrIHRvIGEgdjEgd2FsbGV0IGJhc2UgYWRkcmVzcyBhcyBleHRlcm5hbCAnICtcbiAgICAgICdpZiBjb25zaWRlck1pZ3JhdGVkRnJvbUFkZHJlc3NJbnRlcm5hbCBpcyBzZXQgYW5kIGZhbHNlJyxcbiAgICBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gcnVuQ2xhc3NpZnlPdXRwdXRzVGVzdChcbiAgICAgICAgd2FsbGV0Lm1pZ3JhdGVkRnJvbSgpLFxuICAgICAgICB7IC4uLnZlcmlmaWNhdGlvbiwgY29uc2lkZXJNaWdyYXRlZEZyb21BZGRyZXNzSW50ZXJuYWw6IGZhbHNlIH0sXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfVxuICApO1xuXG4gIGl0KCdzaG91bGQgY2xhc3NpZnkgb3V0cHV0cyB3aGljaCBzcGVuZCB0byBhZGRyZXNzZXMgbm90IG9uIHRoZSB3YWxsZXQgYXMgZXh0ZXJuYWwnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHJ1bkNsYXNzaWZ5T3V0cHV0c1Rlc3QoJzJNeGp4NEUyRUVlNHlKdUx2ZEV1QWRNVWQ0aWQxZW1QQ1pzJywgdmVyaWZpY2F0aW9uLCB0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY2NlcHQgYSBjdXN0b20gY2hhbmdlIGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgY2hhbmdlQWRkcmVzcyA9ICcyTkF1emlENzVXblBQSEpWd25kNGNrZ1k0U3VKYURWVmJNRCc7XG4gICAgcmV0dXJuIHJ1bkNsYXNzaWZ5T3V0cHV0c1Rlc3QoY2hhbmdlQWRkcmVzcywgdmVyaWZpY2F0aW9uLCBmYWxzZSwge1xuICAgICAgY2hhbmdlQWRkcmVzcyxcbiAgICAgIHJlY2lwaWVudHM6IFtdLFxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNsYXNzaWZ5IG91dHB1dHMgd2l0aCBleHRlcm5hbCBhZGRyZXNzIGluIHJlY2lwaWVudHMgYXMgZXhwbGljaXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZXh0ZXJuYWxBZGRyZXNzID0gJzJOQXV6aUQ3NVduUFBISlZ3bmQ0Y2tnWTRTdUphRFZWYk1EJztcbiAgICByZXR1cm4gcnVuQ2xhc3NpZnlPdXRwdXRzVGVzdChleHRlcm5hbEFkZHJlc3MsIHZlcmlmaWNhdGlvbiwgdHJ1ZSwge1xuICAgICAgcmVjaXBpZW50czogW3sgYWRkcmVzczogZXh0ZXJuYWxBZGRyZXNzLCBhbW91bnQ6IG91dHB1dEFtb3VudCB9XSxcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
declare const txFormats: readonly ["legacy", "psbt"];
|
|
2
|
+
export type TxFormat = (typeof txFormats)[number];
|
|
3
|
+
declare const scriptTypes: readonly ["p2sh", "p2shP2wsh", "p2wsh", "p2tr", "p2trMusig2", "taprootKeyPathSpend", "p2shP2pk"];
|
|
4
|
+
export type ScriptType = (typeof scriptTypes)[number];
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=prebuildAndSign.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prebuildAndSign.d.ts","sourceRoot":"","sources":["../../../../test/unit/prebuildAndSign.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,SAAS,6BAA8B,CAAC;AAC9C,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAalD,QAAA,MAAM,WAAW,kGAA+F,CAAC;AACjH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,270 @@
|
|
|
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
|
+
const assert = __importStar(require("assert"));
|
|
37
|
+
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
38
|
+
const nock = require("nock");
|
|
39
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
40
|
+
const sdk_test_1 = require("@bitgo-beta/sdk-test");
|
|
41
|
+
const src_1 = require("../../src");
|
|
42
|
+
const util_1 = require("./util");
|
|
43
|
+
const txFormats = ['legacy', 'psbt'];
|
|
44
|
+
const walletPassphrase = 'gabagool';
|
|
45
|
+
const webauthnWalletPassPhrase = 'just the gabagool';
|
|
46
|
+
const scriptTypes = [...utxolib.bitgo.outputScripts.scriptTypes2Of3, 'taprootKeyPathSpend', 'p2shP2pk'];
|
|
47
|
+
function assertSignable(psbtHex, inputScripts, network) {
|
|
48
|
+
const psbt = utxolib.bitgo.createPsbtFromHex(psbtHex, network);
|
|
49
|
+
// Make sure that you can sign with bitgo key and extract the transaction
|
|
50
|
+
// No signatures should be present if it's a p2shP2pk input
|
|
51
|
+
if (!inputScripts.includes('p2shP2pk')) {
|
|
52
|
+
const key = inputScripts.includes('p2trMusig2') ? rootWalletKeys.backup : rootWalletKeys.bitgo;
|
|
53
|
+
psbt.signAllInputsHD(key, { deterministic: true });
|
|
54
|
+
psbt.validateSignaturesOfAllInputs();
|
|
55
|
+
psbt.finalizeAllInputs();
|
|
56
|
+
const tx = psbt.extractTransaction();
|
|
57
|
+
assert.ok(tx);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Build the key objects
|
|
61
|
+
const rootWalletKeys = (0, util_1.getDefaultWalletKeys)();
|
|
62
|
+
const keyDocumentObjects = rootWalletKeys.triple.map((bip32, keyIdx) => {
|
|
63
|
+
return {
|
|
64
|
+
id: (0, sdk_test_1.getSeed)(util_1.keychainsBase58[keyIdx].pub).toString('hex'),
|
|
65
|
+
pub: bip32.neutered().toBase58(),
|
|
66
|
+
source: ['user', 'backup', 'bitgo'][keyIdx],
|
|
67
|
+
encryptedPrv: (0, util_1.encryptKeychain)(walletPassphrase, util_1.keychainsBase58[keyIdx]),
|
|
68
|
+
webauthnDevices: [
|
|
69
|
+
{
|
|
70
|
+
otpDeviceId: '123',
|
|
71
|
+
authenticatorInfo: {
|
|
72
|
+
credID: 'credID',
|
|
73
|
+
fmt: 'packed',
|
|
74
|
+
publicKey: 'some value',
|
|
75
|
+
},
|
|
76
|
+
prfSalt: '456',
|
|
77
|
+
encryptedPrv: (0, util_1.encryptKeychain)(webauthnWalletPassPhrase, util_1.keychainsBase58[keyIdx]),
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
coinSpecific: {},
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
function run(coin, inputScripts, txFormat) {
|
|
84
|
+
function createPrebuildPsbt(inputs, outputs) {
|
|
85
|
+
const psbt = utxolib.testutil.constructPsbt(inputs, outputs, coin.network, rootWalletKeys, 'unsigned');
|
|
86
|
+
utxolib.bitgo.addXpubsToPsbt(psbt, rootWalletKeys);
|
|
87
|
+
return psbt;
|
|
88
|
+
}
|
|
89
|
+
function createNocks(params) {
|
|
90
|
+
const nocks = [];
|
|
91
|
+
// Nock the prebuild route (/tx/build, blockheight)
|
|
92
|
+
const expected_params = {
|
|
93
|
+
recipients: [params.recipient],
|
|
94
|
+
rbfTxIds: params.rbfTxIds,
|
|
95
|
+
feeMultiplier: params.feeMultiplier,
|
|
96
|
+
changeAddressType: ['p2trMusig2', 'p2wsh', 'p2shP2wsh', 'p2sh', 'p2tr'],
|
|
97
|
+
};
|
|
98
|
+
if (params.txFormat) {
|
|
99
|
+
expected_params['txFormat'] = params.txFormat;
|
|
100
|
+
}
|
|
101
|
+
nocks.push(nock(params.bgUrl)
|
|
102
|
+
.post(`/api/v2/${coin.getChain()}/wallet/${params.wallet.id()}/tx/build`, expected_params)
|
|
103
|
+
.reply(200, { txHex: params.prebuild.toHex(), txInfo: {} }));
|
|
104
|
+
nocks.push(nock(params.bgUrl).get(`/api/v2/${coin.getChain()}/public/block/latest`).reply(200, { height: 1000 }));
|
|
105
|
+
// nock the keychain fetch - 3 times (prebuildAndSign, verifyTransaction, and signTransaction)
|
|
106
|
+
params.keyDocuments.forEach((keyDocument) => {
|
|
107
|
+
nocks.push(nock(params.bgUrl).get(`/api/v2/${coin.getChain()}/key/${keyDocument.id}`).times(3).reply(200, keyDocument));
|
|
108
|
+
});
|
|
109
|
+
// nock the address info fetch
|
|
110
|
+
if (params.nockOutputAddresses) {
|
|
111
|
+
nocks.push(nock(params.bgUrl)
|
|
112
|
+
.get(`/api/v2/${coin.getChain()}/wallet/${params.wallet.id()}/address/${params.addressInfo.address}`)
|
|
113
|
+
.reply(200, params.addressInfo));
|
|
114
|
+
}
|
|
115
|
+
if (params.rbfTxIds) {
|
|
116
|
+
nocks.push(nock(params.bgUrl)
|
|
117
|
+
.get(`/api/v2/${coin.getChain()}/wallet/${params.wallet.id()}/tx/${params.rbfTxIds[0]}?includeRbf=true`)
|
|
118
|
+
.reply(200, {
|
|
119
|
+
outputs: [
|
|
120
|
+
{
|
|
121
|
+
address: params.recipient.address,
|
|
122
|
+
value: Number(params.recipient.amount),
|
|
123
|
+
valueString: params.recipient.amount,
|
|
124
|
+
wallet: params.selfSend ? params.wallet.id() : 'some-other-wallet-id', // external output if not a self send
|
|
125
|
+
},
|
|
126
|
+
// Dummy change output to test transfer entries filtering
|
|
127
|
+
{
|
|
128
|
+
address: params.recipient.address,
|
|
129
|
+
value: Number(params.recipient.amount),
|
|
130
|
+
valueString: params.recipient.amount,
|
|
131
|
+
wallet: params.wallet.id(), // internal output
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
}));
|
|
135
|
+
}
|
|
136
|
+
// nock the deterministic nonce response
|
|
137
|
+
if (inputScripts.includes('taprootKeyPathSpend')) {
|
|
138
|
+
const psbt = params.prebuild.clone();
|
|
139
|
+
psbt.setAllInputsMusig2NonceHD(rootWalletKeys.user);
|
|
140
|
+
psbt.setAllInputsMusig2NonceHD(rootWalletKeys.bitgo);
|
|
141
|
+
nocks.push(nock(params.bgUrl)
|
|
142
|
+
.post(`/api/v2/${coin.getChain()}/wallet/${params.wallet.id()}/tx/signpsbt`, (body) => body.psbt)
|
|
143
|
+
.reply(200, { psbt: psbt.toHex() }));
|
|
144
|
+
}
|
|
145
|
+
return nocks;
|
|
146
|
+
}
|
|
147
|
+
describe(`${coin.getFullName()}-prebuildAndSign-txFormat=${txFormat}-inputScripts=${inputScripts.join(',')}`, function () {
|
|
148
|
+
const wallet = (0, util_1.getUtxoWallet)(coin, {
|
|
149
|
+
coinSpecific: { addressVersion: 'base58' },
|
|
150
|
+
keys: keyDocumentObjects.map((k) => k.id),
|
|
151
|
+
id: 'walletId',
|
|
152
|
+
});
|
|
153
|
+
const bgUrl = sdk_core_1.common.Environments[util_1.defaultBitGo.getEnv()].uri;
|
|
154
|
+
let prebuild;
|
|
155
|
+
let recipient;
|
|
156
|
+
let addressInfo;
|
|
157
|
+
const fee = BigInt(10000);
|
|
158
|
+
before(async function () {
|
|
159
|
+
// Make output address information
|
|
160
|
+
const outputAmount = BigInt(inputScripts.length) * BigInt(1e8) - fee;
|
|
161
|
+
const outputScriptType = 'p2sh';
|
|
162
|
+
const outputChain = utxolib.bitgo.getExternalChainCode(outputScriptType);
|
|
163
|
+
const outputAddress = utxolib.bitgo.getWalletAddress(rootWalletKeys, outputChain, 0, coin.network);
|
|
164
|
+
recipient = {
|
|
165
|
+
address: outputAddress,
|
|
166
|
+
amount: outputAmount.toString(),
|
|
167
|
+
};
|
|
168
|
+
addressInfo = {
|
|
169
|
+
address: outputAddress,
|
|
170
|
+
chain: outputChain,
|
|
171
|
+
index: 0,
|
|
172
|
+
coin: coin.getChain(),
|
|
173
|
+
wallet: wallet.id(),
|
|
174
|
+
coinSpecific: {},
|
|
175
|
+
};
|
|
176
|
+
prebuild = createPrebuildPsbt(inputScripts.map((s) => ({ scriptType: s, value: BigInt(1e8) })), [{ scriptType: outputScriptType, value: outputAmount }]);
|
|
177
|
+
});
|
|
178
|
+
afterEach(nock.cleanAll);
|
|
179
|
+
[true, false].forEach((useWebauthn) => {
|
|
180
|
+
it(`should succeed with ${useWebauthn ? 'webauthn encryptedPrv' : 'encryptedPrv'}`, async function () {
|
|
181
|
+
// Check if this wallet/coin combination defaults to psbt
|
|
182
|
+
const defaultTxFormat = coin.getDefaultTxFormat(wallet);
|
|
183
|
+
const nocks = createNocks({
|
|
184
|
+
bgUrl,
|
|
185
|
+
wallet,
|
|
186
|
+
keyDocuments: keyDocumentObjects,
|
|
187
|
+
prebuild,
|
|
188
|
+
recipient,
|
|
189
|
+
addressInfo,
|
|
190
|
+
nockOutputAddresses: txFormat !== 'psbt',
|
|
191
|
+
txFormat: defaultTxFormat,
|
|
192
|
+
});
|
|
193
|
+
// call prebuild and sign, nocks should be consumed
|
|
194
|
+
const res = (await wallet.prebuildAndSignTransaction({
|
|
195
|
+
recipients: [recipient],
|
|
196
|
+
walletPassphrase: useWebauthn ? webauthnWalletPassPhrase : walletPassphrase,
|
|
197
|
+
}));
|
|
198
|
+
nocks.forEach((nock) => assert.ok(nock.isDone()));
|
|
199
|
+
assertSignable(res.txHex, inputScripts, coin.network);
|
|
200
|
+
});
|
|
201
|
+
it('should fail if the wallet passphrase is incorrect', async function () {
|
|
202
|
+
createNocks({
|
|
203
|
+
bgUrl,
|
|
204
|
+
wallet,
|
|
205
|
+
keyDocuments: keyDocumentObjects,
|
|
206
|
+
prebuild,
|
|
207
|
+
recipient,
|
|
208
|
+
addressInfo,
|
|
209
|
+
nockOutputAddresses: txFormat !== 'psbt',
|
|
210
|
+
});
|
|
211
|
+
await wallet
|
|
212
|
+
.prebuildAndSignTransaction({
|
|
213
|
+
recipients: [recipient],
|
|
214
|
+
walletPassphrase: Math.random().toString(),
|
|
215
|
+
})
|
|
216
|
+
.should.be.rejectedWith('unable to decrypt keychain with the given wallet passphrase');
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
[true, false].forEach((selfSend) => {
|
|
220
|
+
it(`should be able to build, sign, & verify a replacement transaction with selfSend: ${selfSend}`, async function () {
|
|
221
|
+
const rbfTxIds = ['tx-to-be-replaced'], feeMultiplier = 1.5;
|
|
222
|
+
// Check if this wallet/coin combination defaults to psbt
|
|
223
|
+
const defaultTxFormat = coin.getDefaultTxFormat(wallet);
|
|
224
|
+
const nocks = createNocks({
|
|
225
|
+
bgUrl,
|
|
226
|
+
wallet,
|
|
227
|
+
keyDocuments: keyDocumentObjects,
|
|
228
|
+
prebuild,
|
|
229
|
+
recipient,
|
|
230
|
+
addressInfo,
|
|
231
|
+
rbfTxIds,
|
|
232
|
+
feeMultiplier,
|
|
233
|
+
selfSend,
|
|
234
|
+
nockOutputAddresses: txFormat !== 'psbt',
|
|
235
|
+
txFormat: defaultTxFormat,
|
|
236
|
+
});
|
|
237
|
+
// call prebuild and sign, nocks should be consumed
|
|
238
|
+
const res = (await wallet.prebuildAndSignTransaction({
|
|
239
|
+
recipients: [recipient],
|
|
240
|
+
walletPassphrase,
|
|
241
|
+
rbfTxIds,
|
|
242
|
+
feeMultiplier,
|
|
243
|
+
}));
|
|
244
|
+
nocks.forEach((nock) => assert.ok(nock.isDone()));
|
|
245
|
+
assertSignable(res.txHex, inputScripts, coin.network);
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
util_1.utxoCoins
|
|
251
|
+
.filter((coin) => utxolib.getMainnet(coin.network) !== utxolib.networks.bitcoinsv)
|
|
252
|
+
.forEach((coin) => {
|
|
253
|
+
scriptTypes
|
|
254
|
+
// Don't iterate over p2shP2pk - in no scenario would a wallet spend two p2shP2pk inputs as these
|
|
255
|
+
// are single signature inputs that are used for replay protection and are added to the transaction
|
|
256
|
+
// by our system from a separate wallet. We do run tests below where one of the inputs is a p2shP2pk and
|
|
257
|
+
// the other is an input spent by the user.
|
|
258
|
+
.filter((scriptType) => scriptType !== 'p2shP2pk')
|
|
259
|
+
.forEach((inputScript) => {
|
|
260
|
+
const inputScriptCleaned = (inputScript === 'taprootKeyPathSpend' ? 'p2trMusig2' : inputScript);
|
|
261
|
+
if (!coin.supportsAddressType(inputScriptCleaned)) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
run(coin, [inputScript, inputScript], 'psbt');
|
|
265
|
+
if ((0, src_1.getReplayProtectionAddresses)(coin.network).length) {
|
|
266
|
+
run(coin, ['p2shP2pk', inputScript], 'psbt');
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlYnVpbGRBbmRTaWduLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3ByZWJ1aWxkQW5kU2lnbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUVqQyw4REFBZ0Q7QUFDaEQsNkJBQThCO0FBQzlCLG1EQUFpRjtBQUNqRixtREFBK0M7QUFFL0MsbUNBQTJFO0FBRTNFLGlDQUF3SDtBQUV4SCxNQUFNLFNBQVMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQVUsQ0FBQztBQVc5QyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztBQUNwQyxNQUFNLHdCQUF3QixHQUFHLG1CQUFtQixDQUFDO0FBRXJELE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFRakgsU0FBUyxjQUFjLENBQUMsT0FBZSxFQUFFLFlBQTBCLEVBQUUsT0FBd0I7SUFDM0YsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QseUVBQXlFO0lBQ3pFLDJEQUEyRDtJQUMzRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFDL0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsNkJBQTZCLEVBQUUs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dCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgbm9jayA9IHJlcXVpcmUoJ25vY2snKTtcbmltcG9ydCB7IGNvbW1vbiwgSGFsZlNpZ25lZFV0eG9UcmFuc2FjdGlvbiwgV2FsbGV0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgZ2V0U2VlZCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay10ZXN0JztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiwgZ2V0UmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmltcG9ydCB7IGRlZmF1bHRCaXRHbywgZW5jcnlwdEtleWNoYWluLCBnZXREZWZhdWx0V2FsbGV0S2V5cywgZ2V0VXR4b1dhbGxldCwga2V5Y2hhaW5zQmFzZTU4LCB1dHhvQ29pbnMgfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCB0eEZvcm1hdHMgPSBbJ2xlZ2FjeScsICdwc2J0J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBUeEZvcm1hdCA9ICh0eXBlb2YgdHhGb3JtYXRzKVtudW1iZXJdO1xuXG50eXBlIEtleURvYyA9IHtcbiAgaWQ6IHN0cmluZztcbiAgcHViOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBlbmNyeXB0ZWRQcnY6IHN0cmluZztcbiAgY29pblNwZWNpZmljOiBhbnk7XG59O1xuXG5jb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ2dhYmFnb29sJztcbmNvbnN0IHdlYmF1dGhuV2FsbGV0UGFzc1BocmFzZSA9ICdqdXN0IHRoZSBnYWJhZ29vbCc7XG5cbmNvbnN0IHNjcmlwdFR5cGVzID0gWy4uLnV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5zY3JpcHRUeXBlczJPZjMsICd0YXByb290S2V5UGF0aFNwZW5kJywgJ3Ayc2hQMnBrJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTY3JpcHRUeXBlID0gKHR5cGVvZiBzY3JpcHRUeXBlcylbbnVtYmVyXTtcblxudHlwZSBJbnB1dCA9IHtcbiAgc2NyaXB0VHlwZTogU2NyaXB0VHlwZTtcbiAgdmFsdWU6IGJpZ2ludDtcbn07XG5cbmZ1bmN0aW9uIGFzc2VydFNpZ25hYmxlKHBzYnRIZXg6IHN0cmluZywgaW5wdXRTY3JpcHRzOiBTY3JpcHRUeXBlW10sIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IHZvaWQge1xuICBjb25zdCBwc2J0ID0gdXR4b2xpYi5iaXRnby5jcmVhdGVQc2J0RnJvbUhleChwc2J0SGV4LCBuZXR3b3JrKTtcbiAgLy8gTWFrZSBzdXJlIHRoYXQgeW91IGNhbiBzaWduIHdpdGggYml0Z28ga2V5IGFuZCBleHRyYWN0IHRoZSB0cmFuc2FjdGlvblxuICAvLyBObyBzaWduYXR1cmVzIHNob3VsZCBiZSBwcmVzZW50IGlmIGl0J3MgYSBwMnNoUDJwayBpbnB1dFxuICBpZiAoIWlucHV0U2NyaXB0cy5pbmNsdWRlcygncDJzaFAycGsnKSkge1xuICAgIGNvbnN0IGtleSA9IGlucHV0U2NyaXB0cy5pbmNsdWRlcygncDJ0ck11c2lnMicpID8gcm9vdFdhbGxldEtleXMuYmFja3VwIDogcm9vdFdhbGxldEtleXMuYml0Z287XG4gICAgcHNidC5zaWduQWxsSW5wdXRzSEQoa2V5LCB7IGRldGVybWluaXN0aWM6IHRydWUgfSk7XG4gICAgcHNidC52YWxpZGF0ZVNpZ25hdHVyZXNPZkFsbElucHV0cygpO1xuICAgIHBzYnQuZmluYWxpemVBbGxJbnB1dHMoKTtcbiAgICBjb25zdCB0eCA9IHBzYnQuZXh0cmFjdFRyYW5zYWN0aW9uKCk7XG4gICAgYXNzZXJ0Lm9rKHR4KTtcbiAgfVxufVxuXG4vLyBCdWlsZCB0aGUga2V5IG9iamVjdHNcbmNvbnN0IHJvb3RXYWxsZXRLZXlzID0gZ2V0RGVmYXVsdFdhbGxldEtleXMoKTtcbmNvbnN0IGtleURvY3VtZW50T2JqZWN0cyA9IHJvb3RXYWxsZXRLZXlzLnRyaXBsZS5tYXAoKGJpcDMyLCBrZXlJZHgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBpZDogZ2V0U2VlZChrZXljaGFpbnNCYXNlNThba2V5SWR4XS5wdWIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICBwdWI6IGJpcDMyLm5ldXRlcmVkKCkudG9CYXNlNTgoKSxcbiAgICBzb3VyY2U6IFsndXNlcicsICdiYWNrdXAnLCAnYml0Z28nXVtrZXlJZHhdLFxuICAgIGVuY3J5cHRlZFBydjogZW5jcnlwdEtleWNoYWluKHdhbGxldFBhc3NwaHJhc2UsIGtleWNoYWluc0Jhc2U1OFtrZXlJZHhdKSxcbiAgICB3ZWJhdXRobkRldmljZXM6IFtcbiAgICAgIHtcbiAgICAgICAgb3RwRGV2aWNlSWQ6ICcxMjMnLFxuICAgICAgICBhdXRoZW50aWNhdG9ySW5mbzoge1xuICAgICAgICAgIGNyZWRJRDogJ2NyZWRJRCcsXG4gICAgICAgICAgZm10OiAncGFja2VkJyxcbiAgICAgICAgICBwdWJsaWNLZXk6ICdzb21lIHZhbHVlJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJmU2FsdDogJzQ1NicsXG4gICAgICAgIGVuY3J5cHRlZFBydjogZW5jcnlwdEtleWNoYWluKHdlYmF1dGhuV2FsbGV0UGFzc1BocmFzZSwga2V5Y2hhaW5zQmFzZTU4W2tleUlkeF0pLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGNvaW5TcGVjaWZpYzoge30sXG4gIH07XG59KTtcblxuZnVuY3Rpb24gcnVuKGNvaW46IEFic3RyYWN0VXR4b0NvaW4sIGlucHV0U2NyaXB0czogU2NyaXB0VHlwZVtdLCB0eEZvcm1hdDogVHhGb3JtYXQpOiB2b2lkIHtcbiAgZnVuY3Rpb24gY3JlYXRlUHJlYnVpbGRQc2J0KGlucHV0czogSW5wdXRbXSwgb3V0cHV0czogeyBzY3JpcHRUeXBlOiAncDJzaCc7IHZhbHVlOiBiaWdpbnQgfVtdKSB7XG4gICAgY29uc3QgcHNidCA9IHV0eG9saWIudGVzdHV0aWwuY29uc3RydWN0UHNidChcbiAgICAgIGlucHV0cyBhcyB1dHhvbGliLnRlc3R1dGlsLklucHV0W10sXG4gICAgICBvdXRwdXRzLFxuICAgICAgY29pbi5uZXR3b3JrLFxuICAgICAgcm9vdFdhbGxldEtleXMsXG4gICAgICAndW5zaWduZWQnXG4gICAgKTtcbiAgICB1dHhvbGliLmJpdGdvLmFkZFhwdWJzVG9Qc2J0KHBzYnQsIHJvb3RXYWxsZXRLZXlzKTtcbiAgICByZXR1cm4gcHNidDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU5vY2tzKHBhcmFtczoge1xuICAgIGJnVXJsOiBzdHJpbmc7XG4gICAgd2FsbGV0OiBXYWxsZXQ7XG4gICAga2V5RG9jdW1lbnRzOiBLZXlEb2NbXTtcbiAgICBwcmVidWlsZDogdXR4b2xpYi5iaXRnby5VdHhvUHNidDtcbiAgICByZWNpcGllbnQ6IHsgYWRkcmVzczogc3RyaW5nOyBhbW91bnQ6IHN0cmluZyB9O1xuICAgIGFkZHJlc3NJbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHJiZlR4SWRzPzogc3RyaW5nW107XG4gICAgZmVlTXVsdGlwbGllcj86IG51bWJlcjtcbiAgICBzZWxmU2VuZD86IGJvb2xlYW47XG4gICAgbm9ja091dHB1dEFkZHJlc3Nlcz86IGJvb2xlYW47XG4gICAgdHhGb3JtYXQ/OiBzdHJpbmc7XG4gIH0pOiBub2NrLlNjb3BlW10ge1xuICAgIGNvbnN0IG5vY2tzOiBub2NrLlNjb3BlW10gPSBbXTtcblxuICAgIC8vIE5vY2sgdGhlIHByZWJ1aWxkIHJvdXRlICgvdHgvYnVpbGQsIGJsb2NraGVpZ2h0KVxuICAgIGNvbnN0IGV4cGVjdGVkX3BhcmFtcyA9IHtcbiAgICAgIHJlY2lwaWVudHM6IFtwYXJhbXMucmVjaXBpZW50XSxcbiAgICAgIHJiZlR4SWRzOiBwYXJhbXMucmJmVHhJZHMsXG4gICAgICBmZWVNdWx0aXBsaWVyOiBwYXJhbXMuZmVlTXVsdGlwbGllcixcbiAgICAgIGNoYW5nZUFkZHJlc3NUeXBlOiBbJ3AydHJNdXNpZzInLCAncDJ3c2gnLCAncDJzaFAyd3NoJywgJ3Ayc2gnLCAncDJ0ciddLFxuICAgIH07XG4gICAgaWYgKHBhcmFtcy50eEZvcm1hdCkge1xuICAgICAgZXhwZWN0ZWRfcGFyYW1zWyd0eEZvcm1hdCddID0gcGFyYW1zLnR4Rm9ybWF0O1xuICAgIH1cbiAgICBub2Nrcy5wdXNoKFxuICAgICAgbm9jayhwYXJhbXMuYmdVcmwpXG4gICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS93YWxsZXQvJHtwYXJhbXMud2FsbGV0LmlkKCl9L3R4L2J1aWxkYCwgZXhwZWN0ZWRfcGFyYW1zKVxuICAgICAgICAucmVwbHkoMjAwLCB7IHR4SGV4OiBwYXJhbXMucHJlYnVpbGQudG9IZXgoKSwgdHhJbmZvOiB7fSB9KVxuICAgICk7XG4gICAgbm9ja3MucHVzaChub2NrKHBhcmFtcy5iZ1VybCkuZ2V0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS9wdWJsaWMvYmxvY2svbGF0ZXN0YCkucmVwbHkoMjAwLCB7IGhlaWdodDogMTAwMCB9KSk7XG5cbiAgICAvLyBub2NrIHRoZSBrZXljaGFpbiBmZXRjaCAtIDMgdGltZXMgKHByZWJ1aWxkQW5kU2lnbiwgdmVyaWZ5VHJhbnNhY3Rpb24sIGFuZCBzaWduVHJhbnNhY3Rpb24pXG4gICAgcGFyYW1zLmtleURvY3VtZW50cy5mb3JFYWNoKChrZXlEb2N1bWVudCkgPT4ge1xuICAgICAgbm9ja3MucHVzaChcbiAgICAgICAgbm9jayhwYXJhbXMuYmdVcmwpLmdldChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0va2V5LyR7a2V5RG9jdW1lbnQuaWR9YCkudGltZXMoMykucmVwbHkoMjAwLCBrZXlEb2N1bWVudClcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICAvLyBub2NrIHRoZSBhZGRyZXNzIGluZm8gZmV0Y2hcbiAgICBpZiAocGFyYW1zLm5vY2tPdXRwdXRBZGRyZXNzZXMpIHtcbiAgICAgIG5vY2tzLnB1c2goXG4gICAgICAgIG5vY2socGFyYW1zLmJnVXJsKVxuICAgICAgICAgIC5nZXQoYC9hcGkvdjIvJHtjb2luLmdldENoYWluKCl9L3dhbGxldC8ke3BhcmFtcy53YWxsZXQuaWQoKX0vYWRkcmVzcy8ke3BhcmFtcy5hZGRyZXNzSW5mby5hZGRyZXNzfWApXG4gICAgICAgICAgLnJlcGx5KDIwMCwgcGFyYW1zLmFkZHJlc3NJbmZvKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnJiZlR4SWRzKSB7XG4gICAgICBub2Nrcy5wdXNoKFxuICAgICAgICBub2NrKHBhcmFtcy5iZ1VybClcbiAgICAgICAgICAuZ2V0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS93YWxsZXQvJHtwYXJhbXMud2FsbGV0LmlkKCl9L3R4LyR7cGFyYW1zLnJiZlR4SWRzWzBdfT9pbmNsdWRlUmJmPXRydWVgKVxuICAgICAgICAgIC5yZXBseSgyMDAsIHtcbiAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHBhcmFtcy5yZWNpcGllbnQuYWRkcmVzcyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogTnVtYmVyKHBhcmFtcy5yZWNpcGllbnQuYW1vdW50KSxcbiAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogcGFyYW1zLnJlY2lwaWVudC5hbW91bnQsXG4gICAgICAgICAgICAgICAgd2FsbGV0OiBwYXJhbXMuc2VsZlNlbmQgPyBwYXJhbXMud2FsbGV0LmlkKCkgOiAnc29tZS1vdGhlci13YWxsZXQtaWQnLCAvLyBleHRlcm5hbCBvdXRwdXQgaWYgbm90IGEgc2VsZiBzZW5kXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIC8vIER1bW15IGNoYW5nZSBvdXRwdXQgdG8gdGVzdCB0cmFuc2ZlciBlbnRyaWVzIGZpbHRlcmluZ1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogcGFyYW1zLnJlY2lwaWVudC5hZGRyZXNzLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBOdW1iZXIocGFyYW1zLnJlY2lwaWVudC5hbW91bnQpLFxuICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiBwYXJhbXMucmVjaXBpZW50LmFtb3VudCxcbiAgICAgICAgICAgICAgICB3YWxsZXQ6IHBhcmFtcy53YWxsZXQuaWQoKSwgLy8gaW50ZXJuYWwgb3V0cHV0XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIG5vY2sgdGhlIGRldGVybWluaXN0aWMgbm9uY2UgcmVzcG9uc2VcbiAgICBpZiAoaW5wdXRTY3JpcHRzLmluY2x1ZGVzKCd0YXByb290S2V5UGF0aFNwZW5kJykpIHtcbiAgICAgIGNvbnN0IHBzYnQgPSBwYXJhbXMucHJlYnVpbGQuY2xvbmUoKTtcbiAgICAgIHBzYnQuc2V0QWxsSW5wdXRzTXVzaWcyTm9uY2VIRChyb290V2FsbGV0S2V5cy51c2VyKTtcbiAgICAgIHBzYnQuc2V0QWxsSW5wdXRzTXVzaWcyTm9uY2VIRChyb290V2FsbGV0S2V5cy5iaXRnbyk7XG4gICAgICBub2Nrcy5wdXNoKFxuICAgICAgICBub2NrKHBhcmFtcy5iZ1VybClcbiAgICAgICAgICAucG9zdChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0vd2FsbGV0LyR7cGFyYW1zLndhbGxldC5pZCgpfS90eC9zaWducHNidGAsIChib2R5KSA9PiBib2R5LnBzYnQpXG4gICAgICAgICAgLnJlcGx5KDIwMCwgeyBwc2J0OiBwc2J0LnRvSGV4KCkgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vY2tzO1xuICB9XG5cbiAgZGVzY3JpYmUoYCR7Y29pbi5nZXRGdWxsTmFtZSgpfS1wcmVidWlsZEFuZFNpZ24tdHhGb3JtYXQ9JHt0eEZvcm1hdH0taW5wdXRTY3JpcHRzPSR7aW5wdXRTY3JpcHRzLmpvaW4oXG4gICAgJywnXG4gICl9YCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHdhbGxldCA9IGdldFV0eG9XYWxsZXQoY29pbiwge1xuICAgICAgY29pblNwZWNpZmljOiB7IGFkZHJlc3NWZXJzaW9uOiAnYmFzZTU4JyB9LFxuICAgICAga2V5czoga2V5RG9jdW1lbnRPYmplY3RzLm1hcCgoaykgPT4gay5pZCksXG4gICAgICBpZDogJ3dhbGxldElkJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGJnVXJsID0gY29tbW9uLkVudmlyb25tZW50c1tkZWZhdWx0Qml0R28uZ2V0RW52KCldLnVyaTtcbiAgICBsZXQgcHJlYnVpbGQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQ7XG4gICAgbGV0IHJlY2lwaWVudDogeyBhZGRyZXNzOiBzdHJpbmc7IGFtb3VudDogc3RyaW5nIH07XG4gICAgbGV0IGFkZHJlc3NJbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGNvbnN0IGZlZSA9IEJpZ0ludCgxMDAwMCk7XG5cbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gTWFrZSBvdXRwdXQgYWRkcmVzcyBpbmZvcm1hdGlvblxuICAgICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gQmlnSW50KGlucHV0U2NyaXB0cy5sZW5ndGgpICogQmlnSW50KDFlOCkgLSBmZWU7XG4gICAgICBjb25zdCBvdXRwdXRTY3JpcHRUeXBlOiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZSA9ICdwMnNoJztcbiAgICAgIGNvbnN0IG91dHB1dENoYWluID0gdXR4b2xpYi5iaXRnby5nZXRFeHRlcm5hbENoYWluQ29kZShvdXRwdXRTY3JpcHRUeXBlKTtcbiAgICAgIGNvbnN0IG91dHB1dEFkZHJlc3MgPSB1dHhvbGliLmJpdGdvLmdldFdhbGxldEFkZHJlc3Mocm9vdFdhbGxldEtleXMsIG91dHB1dENoYWluLCAwLCBjb2luLm5ldHdvcmspO1xuXG4gICAgICByZWNpcGllbnQgPSB7XG4gICAgICAgIGFkZHJlc3M6IG91dHB1dEFkZHJlc3MsXG4gICAgICAgIGFtb3VudDogb3V0cHV0QW1vdW50LnRvU3RyaW5nKCksXG4gICAgICB9O1xuICAgICAgYWRkcmVzc0luZm8gPSB7XG4gICAgICAgIGFkZHJlc3M6IG91dHB1dEFkZHJlc3MsXG4gICAgICAgIGNoYWluOiBvdXRwdXRDaGFpbixcbiAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgIGNvaW46IGNvaW4uZ2V0Q2hhaW4oKSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXQuaWQoKSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7fSxcbiAgICAgIH07XG5cbiAgICAgIHByZWJ1aWxkID0gY3JlYXRlUHJlYnVpbGRQc2J0KFxuICAgICAgICBpbnB1dFNjcmlwdHMubWFwKChzKSA9PiAoeyBzY3JpcHRUeXBlOiBzLCB2YWx1ZTogQmlnSW50KDFlOCkgfSkpLFxuICAgICAgICBbeyBzY3JpcHRUeXBlOiBvdXRwdXRTY3JpcHRUeXBlLCB2YWx1ZTogb3V0cHV0QW1vdW50IH1dXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKG5vY2suY2xlYW5BbGwpO1xuXG4gICAgW3RydWUsIGZhbHNlXS5mb3JFYWNoKCh1c2VXZWJhdXRobikgPT4ge1xuICAgICAgaXQoYHNob3VsZCBzdWNjZWVkIHdpdGggJHt1c2VXZWJhdXRobiA/ICd3ZWJhdXRobiBlbmNyeXB0ZWRQcnYnIDogJ2VuY3J5cHRlZFBydid9YCwgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGlzIHdhbGxldC9jb2luIGNvbWJpbmF0aW9uIGRlZmF1bHRzIHRvIHBzYnRcbiAgICAgICAgY29uc3QgZGVmYXVsdFR4Rm9ybWF0ID0gY29pbi5nZXREZWZhdWx0VHhGb3JtYXQod2FsbGV0KTtcbiAgICAgICAgY29uc3Qgbm9ja3MgPSBjcmVhdGVOb2Nrcyh7XG4gICAgICAgICAgYmdVcmwsXG4gICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgIGtleURvY3VtZW50czoga2V5RG9jdW1lbnRPYmplY3RzLFxuICAgICAgICAgIHByZWJ1aWxkLFxuICAgICAgICAgIHJlY2lwaWVudCxcbiAgICAgICAgICBhZGRyZXNzSW5mbyxcbiAgICAgICAgICBub2NrT3V0cHV0QWRkcmVzc2VzOiB0eEZvcm1hdCAhPT0gJ3BzYnQnLFxuICAgICAgICAgIHR4Rm9ybWF0OiBkZWZhdWx0VHhGb3JtYXQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGNhbGwgcHJlYnVpbGQgYW5kIHNpZ24sIG5vY2tzIHNob3VsZCBiZSBjb25zdW1lZFxuICAgICAgICBjb25zdCByZXMgPSAoYXdhaXQgd2FsbGV0LnByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgICByZWNpcGllbnRzOiBbcmVjaXBpZW50XSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB1c2VXZWJhdXRobiA/IHdlYmF1dGhuV2FsbGV0UGFzc1BocmFzZSA6IHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIH0pKSBhcyBIYWxmU2lnbmVkVXR4b1RyYW5zYWN0aW9uO1xuXG4gICAgICAgIG5vY2tzLmZvckVhY2goKG5vY2spID0+IGFzc2VydC5vayhub2NrLmlzRG9uZSgpKSk7XG5cbiAgICAgICAgYXNzZXJ0U2lnbmFibGUocmVzLnR4SGV4LCBpbnB1dFNjcmlwdHMsIGNvaW4ubmV0d29yayk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIGlmIHRoZSB3YWxsZXQgcGFzc3BocmFzZSBpcyBpbmNvcnJlY3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNyZWF0ZU5vY2tzKHtcbiAgICAgICAgICBiZ1VybCxcbiAgICAgICAgICB3YWxsZXQsXG4gICAgICAgICAga2V5RG9jdW1lbnRzOiBrZXlEb2N1bWVudE9iamVjdHMsXG4gICAgICAgICAgcHJlYnVpbGQsXG4gICAgICAgICAgcmVjaXBpZW50LFxuICAgICAgICAgIGFkZHJlc3NJbmZvLFxuICAgICAgICAgIG5vY2tPdXRwdXRBZGRyZXNzZXM6IHR4Rm9ybWF0ICE9PSAncHNidCcsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IHdhbGxldFxuICAgICAgICAgIC5wcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgICAgICByZWNpcGllbnRzOiBbcmVjaXBpZW50XSxcbiAgICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCd1bmFibGUgdG8gZGVjcnlwdCBrZXljaGFpbiB3aXRoIHRoZSBnaXZlbiB3YWxsZXQgcGFzc3BocmFzZScpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBbdHJ1ZSwgZmFsc2VdLmZvckVhY2goKHNlbGZTZW5kKSA9PiB7XG4gICAgICBpdChgc2hvdWxkIGJlIGFibGUgdG8gYnVpbGQsIHNpZ24sICYgdmVyaWZ5IGEgcmVwbGFjZW1lbnQgdHJhbnNhY3Rpb24gd2l0aCBzZWxmU2VuZDogJHtzZWxmU2VuZH1gLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHJiZlR4SWRzID0gWyd0eC10by1iZS1yZXBsYWNlZCddLFxuICAgICAgICAgIGZlZU11bHRpcGxpZXIgPSAxLjU7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoaXMgd2FsbGV0L2NvaW4gY29tYmluYXRpb24gZGVmYXVsdHMgdG8gcHNidFxuICAgICAgICBjb25zdCBkZWZhdWx0VHhGb3JtYXQgPSBjb2luLmdldERlZmF1bHRUeEZvcm1hdCh3YWxsZXQpO1xuICAgICAgICBjb25zdCBub2NrcyA9IGNyZWF0ZU5vY2tzKHtcbiAgICAgICAgICBiZ1VybCxcbiAgICAgICAgICB3YWxsZXQsXG4gICAgICAgICAga2V5RG9jdW1lbnRzOiBrZXlEb2N1bWVudE9iamVjdHMsXG4gICAgICAgICAgcHJlYnVpbGQsXG4gICAgICAgICAgcmVjaXBpZW50LFxuICAgICAgICAgIGFkZHJlc3NJbmZvLFxuICAgICAgICAgIHJiZlR4SWRzLFxuICAgICAgICAgIGZlZU11bHRpcGxpZXIsXG4gICAgICAgICAgc2VsZlNlbmQsXG4gICAgICAgICAgbm9ja091dHB1dEFkZHJlc3NlczogdHhGb3JtYXQgIT09ICdwc2J0JyxcbiAgICAgICAgICB0eEZvcm1hdDogZGVmYXVsdFR4Rm9ybWF0LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBjYWxsIHByZWJ1aWxkIGFuZCBzaWduLCBub2NrcyBzaG91bGQgYmUgY29uc3VtZWRcbiAgICAgICAgY29uc3QgcmVzID0gKGF3YWl0IHdhbGxldC5wcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgICAgcmVjaXBpZW50czogW3JlY2lwaWVudF0sXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgICByYmZUeElkcyxcbiAgICAgICAgICBmZWVNdWx0aXBsaWVyLFxuICAgICAgICB9KSkgYXMgSGFsZlNpZ25lZFV0eG9UcmFuc2FjdGlvbjtcblxuICAgICAgICBub2Nrcy5mb3JFYWNoKChub2NrKSA9PiBhc3NlcnQub2sobm9jay5pc0RvbmUoKSkpO1xuXG4gICAgICAgIGFzc2VydFNpZ25hYmxlKHJlcy50eEhleCwgaW5wdXRTY3JpcHRzLCBjb2luLm5ldHdvcmspO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG51dHhvQ29pbnNcbiAgLmZpbHRlcigoY29pbikgPT4gdXR4b2xpYi5nZXRNYWlubmV0KGNvaW4ubmV0d29yaykgIT09IHV0eG9saWIubmV0d29ya3MuYml0Y29pbnN2KVxuICAuZm9yRWFjaCgoY29pbikgPT4ge1xuICAgIHNjcmlwdFR5cGVzXG4gICAgICAvLyBEb24ndCBpdGVyYXRlIG92ZXIgcDJzaFAycGsgLSBpbiBubyBzY2VuYXJpbyB3b3VsZCBhIHdhbGxldCBzcGVuZCB0d28gcDJzaFAycGsgaW5wdXRzIGFzIHRoZXNlXG4gICAgICAvLyBhcmUgc2luZ2xlIHNpZ25hdHVyZSBpbnB1dHMgdGhhdCBhcmUgdXNlZCBmb3IgcmVwbGF5IHByb3RlY3Rpb24gYW5kIGFyZSBhZGRlZCB0byB0aGUgdHJhbnNhY3Rpb25cbiAgICAgIC8vIGJ5IG91ciBzeXN0ZW0gZnJvbSBhIHNlcGFyYXRlIHdhbGxldC4gV2UgZG8gcnVuIHRlc3RzIGJlbG93IHdoZXJlIG9uZSBvZiB0aGUgaW5wdXRzIGlzIGEgcDJzaFAycGsgYW5kXG4gICAgICAvLyB0aGUgb3RoZXIgaXMgYW4gaW5wdXQgc3BlbnQgYnkgdGhlIHVzZXIuXG4gICAgICAuZmlsdGVyKChzY3JpcHRUeXBlKSA9PiBzY3JpcHRUeXBlICE9PSAncDJzaFAycGsnKVxuICAgICAgLmZvckVhY2goKGlucHV0U2NyaXB0KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0U2NyaXB0Q2xlYW5lZCA9IChcbiAgICAgICAgICBpbnB1dFNjcmlwdCA9PT0gJ3RhcHJvb3RLZXlQYXRoU3BlbmQnID8gJ3AydHJNdXNpZzInIDogaW5wdXRTY3JpcHRcbiAgICAgICAgKSBhcyB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjM7XG5cbiAgICAgICAgaWYgKCFjb2luLnN1cHBvcnRzQWRkcmVzc1R5cGUoaW5wdXRTY3JpcHRDbGVhbmVkKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJ1bihjb2luLCBbaW5wdXRTY3JpcHQsIGlucHV0U2NyaXB0XSwgJ3BzYnQnKTtcbiAgICAgICAgaWYgKGdldFJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMoY29pbi5uZXR3b3JrKS5sZW5ndGgpIHtcbiAgICAgICAgICBydW4oY29pbiwgWydwMnNoUDJwaycsIGlucHV0U2NyaXB0XSwgJ3BzYnQnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backupKeyRecovery.d.ts","sourceRoot":"","sources":["../../../../../test/unit/recovery/backupKeyRecovery.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,CAAC"}
|