@bitgo-beta/utxo-core 1.8.1-beta.61 → 1.8.1-beta.611
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/dist/cjs/src/Output.d.ts.map +1 -0
- package/dist/cjs/src/Output.js +60 -0
- package/dist/cjs/src/bip322/index.d.ts +5 -0
- package/dist/cjs/src/bip322/index.d.ts.map +1 -0
- package/dist/cjs/src/bip322/index.js +21 -0
- package/dist/cjs/src/bip322/toSign.d.ts +25 -0
- package/dist/cjs/src/bip322/toSign.d.ts.map +1 -0
- package/dist/cjs/src/bip322/toSign.js +126 -0
- package/dist/cjs/src/bip322/toSpend.d.ts +22 -0
- package/dist/cjs/src/bip322/toSpend.d.ts.map +1 -0
- package/dist/cjs/src/bip322/toSpend.js +72 -0
- package/dist/cjs/src/bip322/utils.d.ts +18 -0
- package/dist/cjs/src/bip322/utils.d.ts.map +1 -0
- package/dist/cjs/src/bip322/utils.js +115 -0
- package/dist/cjs/src/bip322/verify.d.ts +12 -0
- package/dist/cjs/src/bip322/verify.d.ts.map +1 -0
- package/dist/cjs/src/bip322/verify.js +115 -0
- package/dist/cjs/src/bip32utils.d.ts +16 -0
- package/dist/cjs/src/bip32utils.d.ts.map +1 -0
- package/dist/cjs/src/bip32utils.js +71 -0
- package/dist/cjs/src/bip65/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/bip65/index.js +1 -1
- package/dist/cjs/src/bip65/locktime.d.ts.map +1 -0
- package/dist/cjs/src/bip65/locktime.js +37 -0
- package/dist/{src → cjs/src}/descriptor/DescriptorMap.d.ts +1 -1
- package/dist/cjs/src/descriptor/DescriptorMap.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/DescriptorMap.js +9 -0
- package/dist/{src → cjs/src}/descriptor/Output.d.ts +1 -1
- package/dist/cjs/src/descriptor/Output.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/Output.js +41 -0
- package/dist/{src → cjs/src}/descriptor/VirtualSize.d.ts +1 -1
- package/dist/cjs/src/descriptor/VirtualSize.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/VirtualSize.js +100 -0
- package/dist/{src → cjs/src}/descriptor/address.d.ts +1 -1
- package/dist/cjs/src/descriptor/address.d.ts.map +1 -0
- package/dist/{src → cjs/src}/descriptor/address.js +1 -1
- package/dist/{src → cjs/src}/descriptor/derive.d.ts +1 -1
- package/dist/cjs/src/descriptor/derive.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/derive.js +45 -0
- package/dist/{src → cjs/src}/descriptor/fromFixedScriptWallet.d.ts +1 -1
- package/dist/cjs/src/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/fromFixedScriptWallet.js +88 -0
- package/dist/{src → cjs/src}/descriptor/index.d.ts +1 -0
- package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/descriptor/index.js +2 -1
- package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts +14 -0
- package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/parse/PatternMatcher.js +60 -0
- package/dist/{src → cjs/src}/descriptor/psbt/assertSatisfiable.d.ts +1 -1
- package/dist/cjs/src/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/assertSatisfiable.js +74 -0
- package/dist/{src → cjs/src}/descriptor/psbt/createPsbt.d.ts +4 -0
- package/dist/cjs/src/descriptor/psbt/createPsbt.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/createPsbt.js +107 -0
- package/dist/{src → cjs/src}/descriptor/psbt/findDescriptors.d.ts +1 -1
- package/dist/cjs/src/descriptor/psbt/findDescriptors.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/findDescriptors.js +98 -0
- package/dist/cjs/src/descriptor/psbt/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/descriptor/psbt/index.js +1 -1
- package/dist/{src → cjs/src}/descriptor/psbt/parse.d.ts +1 -1
- package/dist/cjs/src/descriptor/psbt/parse.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/parse.js +87 -0
- package/dist/{src → cjs/src}/descriptor/psbt/sign.d.ts +4 -4
- package/dist/cjs/src/descriptor/psbt/sign.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/sign.js +42 -0
- package/dist/{src → cjs/src}/descriptor/psbt/wrap.d.ts +1 -1
- package/dist/cjs/src/descriptor/psbt/wrap.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/wrap.js +76 -0
- package/dist/cjs/src/dustThreshold.d.ts.map +1 -0
- package/dist/cjs/src/dustThreshold.js +134 -0
- package/dist/{src → cjs/src}/index.d.ts +1 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/index.js +3 -2
- package/dist/cjs/src/paygo/attestation.d.ts +11 -0
- package/dist/cjs/src/paygo/attestation.d.ts.map +1 -0
- package/dist/cjs/src/paygo/attestation.js +58 -0
- package/dist/cjs/src/paygo/index.d.ts +3 -0
- package/dist/cjs/src/paygo/index.d.ts.map +1 -0
- package/dist/cjs/src/paygo/index.js +19 -0
- package/dist/{src/paygo/ExtractAddressPayGoAttestation.d.ts → cjs/src/paygo/parsePayGoAttestation.d.ts} +8 -3
- package/dist/cjs/src/paygo/parsePayGoAttestation.d.ts.map +1 -0
- package/dist/cjs/src/paygo/parsePayGoAttestation.js +50 -0
- package/dist/cjs/src/paygo/psbt/Errors.d.ts +22 -0
- package/dist/cjs/src/paygo/psbt/Errors.d.ts.map +1 -0
- package/dist/cjs/src/paygo/psbt/Errors.js +44 -0
- package/dist/cjs/src/paygo/psbt/index.d.ts +2 -0
- package/dist/cjs/src/paygo/psbt/index.d.ts.map +1 -0
- package/dist/{src/paygo → cjs/src/paygo/psbt}/index.js +2 -2
- package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts +29 -0
- package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
- package/dist/cjs/src/paygo/psbt/payGoAddressProof.js +124 -0
- package/dist/{src → cjs/src}/testutil/descriptor/descriptors.d.ts +4 -1
- package/dist/cjs/src/testutil/descriptor/descriptors.d.ts.map +1 -0
- package/dist/cjs/src/testutil/descriptor/descriptors.js +162 -0
- package/dist/cjs/src/testutil/descriptor/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/testutil/descriptor/index.js +1 -1
- package/dist/{src → cjs/src}/testutil/descriptor/mock.utils.d.ts +3 -1
- package/dist/cjs/src/testutil/descriptor/mock.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/descriptor/mock.utils.js +92 -0
- package/dist/cjs/src/testutil/descriptor/psbt.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/descriptor/psbt.utils.js +21 -0
- package/dist/cjs/src/testutil/fixtures.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/fixtures.utils.js +127 -0
- package/dist/{src → cjs/src}/testutil/generatePayGoAttestationProof.utils.d.ts +1 -1
- package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.js +38 -0
- package/dist/{src → cjs/src}/testutil/index.d.ts +1 -0
- package/dist/cjs/src/testutil/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/testutil/index.js +2 -1
- package/dist/{src → cjs/src}/testutil/key.utils.d.ts +1 -1
- package/dist/cjs/src/testutil/key.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/key.utils.js +60 -0
- package/dist/cjs/src/testutil/toPlainObject.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/toPlainObject.utils.js +89 -0
- package/dist/cjs/src/testutil/trimMessagePrefix.d.ts +11 -0
- package/dist/cjs/src/testutil/trimMessagePrefix.d.ts.map +1 -0
- package/dist/cjs/src/testutil/trimMessagePrefix.js +60 -0
- package/dist/cjs/src/xOnlyPubkey.d.ts.map +1 -0
- package/dist/cjs/src/xOnlyPubkey.js +18 -0
- package/dist/cjs/test/Output.d.ts +2 -0
- package/dist/cjs/test/Output.d.ts.map +1 -0
- package/dist/cjs/test/Output.js +70 -0
- package/dist/cjs/test/bip322/bip322.utils.d.ts +7 -0
- package/dist/cjs/test/bip322/bip322.utils.d.ts.map +1 -0
- package/dist/cjs/test/bip322/bip322.utils.js +16 -0
- package/dist/cjs/test/bip322/toSign.d.ts +2 -0
- package/dist/cjs/test/bip322/toSign.d.ts.map +1 -0
- package/dist/cjs/test/bip322/toSign.js +133 -0
- package/dist/cjs/test/bip322/toSpend.d.ts +2 -0
- package/dist/cjs/test/bip322/toSpend.d.ts.map +1 -0
- package/dist/cjs/test/bip322/toSpend.js +70 -0
- package/dist/cjs/test/bip322/utils.d.ts +2 -0
- package/dist/cjs/test/bip322/utils.d.ts.map +1 -0
- package/dist/cjs/test/bip322/utils.js +79 -0
- package/dist/cjs/test/bip322/verify.d.ts +2 -0
- package/dist/cjs/test/bip322/verify.d.ts.map +1 -0
- package/dist/cjs/test/bip322/verify.js +293 -0
- package/dist/cjs/test/bip32utils.d.ts +2 -0
- package/dist/cjs/test/bip32utils.d.ts.map +1 -0
- package/dist/cjs/test/bip32utils.js +62 -0
- package/dist/cjs/test/bip65/locktime.d.ts +2 -0
- package/dist/cjs/test/bip65/locktime.d.ts.map +1 -0
- package/dist/cjs/test/bip65/locktime.js +22 -0
- package/dist/cjs/test/descriptor/Output.d.ts +2 -0
- package/dist/cjs/test/descriptor/Output.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/Output.js +44 -0
- package/dist/cjs/test/descriptor/derive.d.ts +2 -0
- package/dist/cjs/test/descriptor/derive.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/derive.js +27 -0
- package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts +2 -0
- package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/fromFixedScriptWallet.js +145 -0
- package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts +2 -0
- package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/parse/PatternMatcher.js +120 -0
- package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts +2 -0
- package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/psbt/VirtualSize.js +71 -0
- package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts +2 -0
- package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/psbt/assertSatisfiable.js +56 -0
- package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts +2 -0
- package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/psbt/findDescriptors.js +70 -0
- package/dist/cjs/test/descriptor/psbt/psbt.d.ts +2 -0
- package/dist/cjs/test/descriptor/psbt/psbt.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/psbt/psbt.js +211 -0
- package/dist/cjs/test/dustThreshold.d.ts +2 -0
- package/dist/cjs/test/dustThreshold.d.ts.map +1 -0
- package/dist/cjs/test/dustThreshold.js +110 -0
- package/dist/cjs/test/paygo/attestation.d.ts +2 -0
- package/dist/cjs/test/paygo/attestation.d.ts.map +1 -0
- package/dist/cjs/test/paygo/attestation.js +23 -0
- package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts +2 -0
- package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts.map +1 -0
- package/dist/cjs/test/paygo/parsePayGoAttestation.js +75 -0
- package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts +9 -0
- package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
- package/dist/cjs/test/paygo/psbt/payGoAddressProof.js +163 -0
- package/dist/cjs/test/xOnlyPubkey.d.ts +2 -0
- package/dist/cjs/test/xOnlyPubkey.d.ts.map +1 -0
- package/dist/cjs/test/xOnlyPubkey.js +18 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/Output.d.ts +43 -0
- package/dist/esm/Output.js +53 -0
- package/dist/esm/bip322/index.d.ts +5 -0
- package/dist/esm/bip322/index.d.ts.map +1 -0
- package/dist/esm/bip322/index.js +5 -0
- package/dist/esm/bip322/toSign.d.ts +25 -0
- package/dist/esm/bip322/toSign.d.ts.map +1 -0
- package/dist/esm/bip322/toSign.js +120 -0
- package/dist/esm/bip322/toSpend.d.ts +22 -0
- package/dist/esm/bip322/toSpend.d.ts.map +1 -0
- package/dist/esm/bip322/toSpend.js +66 -0
- package/dist/esm/bip322/utils.d.ts +18 -0
- package/dist/esm/bip322/utils.d.ts.map +1 -0
- package/dist/esm/bip322/utils.js +77 -0
- package/dist/esm/bip322/verify.d.ts +12 -0
- package/dist/esm/bip322/verify.d.ts.map +1 -0
- package/dist/esm/bip322/verify.js +76 -0
- package/dist/esm/bip32utils.d.ts +16 -0
- package/dist/esm/bip32utils.d.ts.map +1 -0
- package/dist/esm/bip32utils.js +34 -0
- package/dist/esm/bip65/index.d.ts +2 -0
- package/dist/esm/bip65/index.js +2 -0
- package/dist/esm/bip65/locktime.d.ts +8 -0
- package/dist/esm/bip65/locktime.js +34 -0
- package/dist/esm/descriptor/DescriptorMap.d.ts +9 -0
- package/dist/{src → esm}/descriptor/DescriptorMap.d.ts.map +1 -1
- package/dist/esm/descriptor/DescriptorMap.js +6 -0
- package/dist/esm/descriptor/Output.d.ts +23 -0
- package/dist/{src → esm}/descriptor/Output.d.ts.map +1 -1
- package/dist/esm/descriptor/Output.js +32 -0
- package/dist/esm/descriptor/VirtualSize.d.ts +23 -0
- package/dist/{src → esm}/descriptor/VirtualSize.d.ts.map +1 -1
- package/dist/esm/descriptor/VirtualSize.js +94 -0
- package/dist/esm/descriptor/address.d.ts +5 -0
- package/dist/{src → esm}/descriptor/address.d.ts.map +1 -1
- package/dist/esm/descriptor/address.js +11 -0
- package/dist/esm/descriptor/derive.d.ts +13 -0
- package/dist/{src → esm}/descriptor/derive.d.ts.map +1 -1
- package/dist/esm/descriptor/derive.js +38 -0
- package/dist/esm/descriptor/fromFixedScriptWallet.d.ts +16 -0
- package/dist/{src → esm}/descriptor/fromFixedScriptWallet.d.ts.map +1 -1
- package/dist/esm/descriptor/fromFixedScriptWallet.js +51 -0
- package/dist/esm/descriptor/index.d.ts +11 -0
- package/dist/{src → esm}/descriptor/index.d.ts.map +1 -1
- package/dist/esm/descriptor/index.js +11 -0
- package/dist/esm/descriptor/parse/PatternMatcher.d.ts +14 -0
- package/dist/esm/descriptor/parse/PatternMatcher.d.ts.map +1 -0
- package/dist/esm/descriptor/parse/PatternMatcher.js +56 -0
- package/dist/esm/descriptor/psbt/assertSatisfiable.d.ts +20 -0
- package/dist/{src → esm}/descriptor/psbt/assertSatisfiable.d.ts.map +1 -1
- package/dist/esm/descriptor/psbt/assertSatisfiable.js +69 -0
- package/dist/esm/descriptor/psbt/createPsbt.d.ts +23 -0
- package/dist/esm/descriptor/psbt/createPsbt.d.ts.map +1 -0
- package/dist/esm/descriptor/psbt/createPsbt.js +69 -0
- package/dist/esm/descriptor/psbt/findDescriptors.d.ts +26 -0
- package/dist/{src → esm}/descriptor/psbt/findDescriptors.d.ts.map +1 -1
- package/dist/esm/descriptor/psbt/findDescriptors.js +94 -0
- package/dist/esm/descriptor/psbt/index.d.ts +7 -0
- package/dist/esm/descriptor/psbt/index.js +7 -0
- package/dist/esm/descriptor/psbt/parse.d.ts +27 -0
- package/dist/{src → esm}/descriptor/psbt/parse.d.ts.map +1 -1
- package/dist/esm/descriptor/psbt/parse.js +51 -0
- package/dist/esm/descriptor/psbt/sign.d.ts +26 -0
- package/dist/esm/descriptor/psbt/sign.d.ts.map +1 -0
- package/dist/esm/descriptor/psbt/sign.js +34 -0
- package/dist/esm/descriptor/psbt/wrap.d.ts +12 -0
- package/dist/{src → esm}/descriptor/psbt/wrap.d.ts.map +1 -1
- package/dist/esm/descriptor/psbt/wrap.js +38 -0
- package/dist/esm/dustThreshold.d.ts +4 -0
- package/dist/esm/dustThreshold.js +97 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/{src → esm}/index.d.ts.map +1 -1
- package/dist/esm/index.js +10 -0
- package/dist/esm/paygo/attestation.d.ts +11 -0
- package/dist/esm/paygo/attestation.d.ts.map +1 -0
- package/dist/esm/paygo/attestation.js +18 -0
- package/dist/esm/paygo/index.d.ts +3 -0
- package/dist/esm/paygo/index.d.ts.map +1 -0
- package/dist/esm/paygo/index.js +3 -0
- package/dist/esm/paygo/parsePayGoAttestation.d.ts +16 -0
- package/dist/esm/paygo/parsePayGoAttestation.d.ts.map +1 -0
- package/dist/esm/paygo/parsePayGoAttestation.js +43 -0
- package/dist/esm/paygo/psbt/Errors.d.ts +22 -0
- package/dist/esm/paygo/psbt/Errors.d.ts.map +1 -0
- package/dist/esm/paygo/psbt/Errors.js +35 -0
- package/dist/esm/paygo/psbt/index.d.ts +2 -0
- package/dist/esm/paygo/psbt/index.d.ts.map +1 -0
- package/dist/esm/paygo/psbt/index.js +2 -0
- package/dist/esm/paygo/psbt/payGoAddressProof.d.ts +29 -0
- package/dist/esm/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
- package/dist/esm/paygo/psbt/payGoAddressProof.js +85 -0
- package/dist/esm/testutil/descriptor/descriptors.d.ts +13 -0
- package/dist/esm/testutil/descriptor/descriptors.d.ts.map +1 -0
- package/dist/esm/testutil/descriptor/descriptors.js +150 -0
- package/dist/esm/testutil/descriptor/index.d.ts +4 -0
- package/dist/esm/testutil/descriptor/index.js +4 -0
- package/dist/esm/testutil/descriptor/mock.utils.d.ts +36 -0
- package/dist/esm/testutil/descriptor/mock.utils.d.ts.map +1 -0
- package/dist/esm/testutil/descriptor/mock.utils.js +53 -0
- package/dist/esm/testutil/descriptor/psbt.utils.d.ts +4 -0
- package/dist/{src → esm}/testutil/descriptor/psbt.utils.d.ts.map +1 -1
- package/dist/esm/testutil/descriptor/psbt.utils.js +17 -0
- package/dist/esm/testutil/fixtures.utils.d.ts +15 -0
- package/dist/{src → esm}/testutil/fixtures.utils.js +5 -42
- package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
- package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
- package/dist/esm/testutil/generatePayGoAttestationProof.utils.js +32 -0
- package/dist/esm/testutil/index.d.ts +6 -0
- package/dist/{src → esm}/testutil/index.d.ts.map +1 -1
- package/dist/esm/testutil/index.js +6 -0
- package/dist/esm/testutil/key.utils.d.ts +16 -0
- package/dist/{src → esm}/testutil/key.utils.d.ts.map +1 -1
- package/dist/esm/testutil/key.utils.js +22 -0
- package/dist/esm/testutil/toPlainObject.utils.d.ts +11 -0
- package/dist/{src → esm}/testutil/toPlainObject.utils.d.ts.map +1 -1
- package/dist/esm/testutil/toPlainObject.utils.js +85 -0
- package/dist/esm/testutil/trimMessagePrefix.d.ts +11 -0
- package/dist/esm/testutil/trimMessagePrefix.d.ts.map +1 -0
- package/dist/esm/testutil/trimMessagePrefix.js +24 -0
- package/dist/esm/xOnlyPubkey.d.ts +2 -0
- package/dist/esm/xOnlyPubkey.js +15 -0
- package/package.json +50 -25
- package/dist/src/Output.js +0 -60
- package/dist/src/bip32utils.d.ts +0 -16
- package/dist/src/bip32utils.d.ts.map +0 -1
- package/dist/src/bip32utils.js +0 -72
- package/dist/src/bip65/locktime.js +0 -37
- package/dist/src/descriptor/DescriptorMap.js +0 -9
- package/dist/src/descriptor/Output.js +0 -41
- package/dist/src/descriptor/VirtualSize.js +0 -100
- package/dist/src/descriptor/derive.js +0 -45
- package/dist/src/descriptor/fromFixedScriptWallet.js +0 -88
- package/dist/src/descriptor/psbt/assertSatisfiable.js +0 -74
- package/dist/src/descriptor/psbt/createPsbt.d.ts.map +0 -1
- package/dist/src/descriptor/psbt/createPsbt.js +0 -82
- package/dist/src/descriptor/psbt/findDescriptors.js +0 -98
- package/dist/src/descriptor/psbt/parse.js +0 -87
- package/dist/src/descriptor/psbt/sign.d.ts.map +0 -1
- package/dist/src/descriptor/psbt/sign.js +0 -42
- package/dist/src/descriptor/psbt/wrap.js +0 -76
- package/dist/src/dustThreshold.js +0 -134
- package/dist/src/paygo/ExtractAddressPayGoAttestation.d.ts.map +0 -1
- package/dist/src/paygo/ExtractAddressPayGoAttestation.js +0 -44
- package/dist/src/paygo/index.d.ts +0 -2
- package/dist/src/paygo/index.d.ts.map +0 -1
- package/dist/src/testutil/descriptor/descriptors.d.ts.map +0 -1
- package/dist/src/testutil/descriptor/descriptors.js +0 -125
- package/dist/src/testutil/descriptor/mock.utils.d.ts.map +0 -1
- package/dist/src/testutil/descriptor/mock.utils.js +0 -91
- package/dist/src/testutil/descriptor/psbt.utils.js +0 -20
- package/dist/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +0 -1
- package/dist/src/testutil/generatePayGoAttestationProof.utils.js +0 -43
- package/dist/src/testutil/key.utils.js +0 -59
- package/dist/src/testutil/toPlainObject.utils.js +0 -75
- package/dist/src/xOnlyPubkey.js +0 -18
- /package/dist/{src → cjs/src}/Output.d.ts +0 -0
- /package/dist/{src → cjs/src}/bip65/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/bip65/locktime.d.ts +0 -0
- /package/dist/{src → cjs/src}/descriptor/psbt/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/dustThreshold.d.ts +0 -0
- /package/dist/{src → cjs/src}/testutil/descriptor/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/testutil/descriptor/psbt.utils.d.ts +0 -0
- /package/dist/{src → cjs/src}/testutil/fixtures.utils.d.ts +0 -0
- /package/dist/{src → cjs/src}/testutil/toPlainObject.utils.d.ts +0 -0
- /package/dist/{src → cjs/src}/xOnlyPubkey.d.ts +0 -0
- /package/dist/{src → esm}/Output.d.ts.map +0 -0
- /package/dist/{src → esm}/bip65/index.d.ts.map +0 -0
- /package/dist/{src → esm}/bip65/locktime.d.ts.map +0 -0
- /package/dist/{src → esm}/descriptor/psbt/index.d.ts.map +0 -0
- /package/dist/{src → esm}/dustThreshold.d.ts.map +0 -0
- /package/dist/{src → esm}/testutil/descriptor/index.d.ts.map +0 -0
- /package/dist/{src → esm}/testutil/fixtures.utils.d.ts.map +0 -0
- /package/dist/{src → esm}/xOnlyPubkey.d.ts.map +0 -0
|
@@ -0,0 +1,145 @@
|
|
|
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("node:assert/strict"));
|
|
37
|
+
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
38
|
+
const fromFixedScriptWallet_1 = require("../../src/descriptor/fromFixedScriptWallet");
|
|
39
|
+
function getRootWalletKeys(derivationPrefixes) {
|
|
40
|
+
// This is a fixed script wallet, so we use a fixed key triple.
|
|
41
|
+
// In practice, this would be derived from the wallet's root keys.
|
|
42
|
+
return new utxolib.bitgo.RootWalletKeys(utxolib.testutil.getKeyTriple('fixedScript'), derivationPrefixes);
|
|
43
|
+
}
|
|
44
|
+
const customPrefixes = [
|
|
45
|
+
undefined,
|
|
46
|
+
['1/2', '1/2', '1/2'], // Custom prefixes for testing
|
|
47
|
+
['1/2', '3/4', '5/6'], // Different custom prefixes
|
|
48
|
+
];
|
|
49
|
+
const scriptTypes = utxolib.bitgo.outputScripts.scriptTypes2Of3;
|
|
50
|
+
const scope = ['external', 'internal'];
|
|
51
|
+
const index = [0, 1, 2];
|
|
52
|
+
/** Get the expected max weight to satisfy the descriptor */
|
|
53
|
+
function getExpectedMaxWeightToSatisfy(scriptType) {
|
|
54
|
+
switch (scriptType) {
|
|
55
|
+
case 'p2sh':
|
|
56
|
+
return 256;
|
|
57
|
+
case 'p2shP2wsh':
|
|
58
|
+
return 99;
|
|
59
|
+
case 'p2wsh':
|
|
60
|
+
return 64;
|
|
61
|
+
default:
|
|
62
|
+
throw new Error('unexpected script type');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** Compute the total size of the input, including overhead */
|
|
66
|
+
function getTotalInputSize(vSize) {
|
|
67
|
+
const sizeOpPushData1 = 1;
|
|
68
|
+
const sizeOpPushData2 = 2;
|
|
69
|
+
return 32 /* txid */ + 4 /* vout */ + 4 /* nSequence */ + (vSize < 255 ? sizeOpPushData1 : sizeOpPushData2) + vSize;
|
|
70
|
+
}
|
|
71
|
+
/** Get the full expected vSize of the input including overhead */
|
|
72
|
+
function getExpectedVSize(scriptType) {
|
|
73
|
+
// https://github.com/BitGo/BitGoJS/blob/master/modules/unspents/docs/input-costs.md
|
|
74
|
+
switch (scriptType) {
|
|
75
|
+
case 'p2sh':
|
|
76
|
+
return 298;
|
|
77
|
+
case 'p2shP2wsh':
|
|
78
|
+
return 140;
|
|
79
|
+
case 'p2wsh':
|
|
80
|
+
return 105;
|
|
81
|
+
default:
|
|
82
|
+
throw new Error('unexpected script type');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function runTestGetDescriptorWithScriptType(customPrefix, scriptType, index, scope) {
|
|
86
|
+
describe(`customPrefix=${customPrefix}, scriptType=${scriptType}, index=${index}, scope=${scope}`, function () {
|
|
87
|
+
const rootWalletKeys = getRootWalletKeys(customPrefix);
|
|
88
|
+
const chainCode = scope === 'external'
|
|
89
|
+
? utxolib.bitgo.getExternalChainCode(scriptType)
|
|
90
|
+
: utxolib.bitgo.getInternalChainCode(scriptType);
|
|
91
|
+
const derivedKeys = rootWalletKeys.deriveForChainAndIndex(chainCode, index);
|
|
92
|
+
const scriptUtxolib = utxolib.bitgo.outputScripts.createOutputScript2of3(derivedKeys.publicKeys, scriptType).scriptPubKey;
|
|
93
|
+
let descriptor;
|
|
94
|
+
before(function () {
|
|
95
|
+
descriptor = (0, fromFixedScriptWallet_1.getDescriptorForScriptType)(rootWalletKeys, scriptType, scope);
|
|
96
|
+
});
|
|
97
|
+
it('address should match descriptor', function () {
|
|
98
|
+
const scriptFromDescriptor = Buffer.from(descriptor.atDerivationIndex(index).scriptPubkey());
|
|
99
|
+
assert.deepStrictEqual(scriptUtxolib.toString('hex'), scriptFromDescriptor.toString('hex'));
|
|
100
|
+
});
|
|
101
|
+
it('should have expected weights', function () {
|
|
102
|
+
assert.ok(Number.isInteger(descriptor.maxWeightToSatisfy()));
|
|
103
|
+
const vSize = Math.ceil(descriptor.maxWeightToSatisfy() / 4);
|
|
104
|
+
assert.equal(vSize, getExpectedMaxWeightToSatisfy(scriptType));
|
|
105
|
+
assert.equal(getTotalInputSize(vSize), getExpectedVSize(scriptType));
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
function runTestGetDescriptorMap(customPrefix) {
|
|
110
|
+
describe(`getNamedDescriptorsForRootWalletKeys with customPrefix=${customPrefix}`, function () {
|
|
111
|
+
const rootWalletKeys = getRootWalletKeys(customPrefix);
|
|
112
|
+
const descriptorMap = (0, fromFixedScriptWallet_1.getNamedDescriptorsForRootWalletKeys)(rootWalletKeys);
|
|
113
|
+
it('should return a map with the correct number of entries', function () {
|
|
114
|
+
assert.equal(descriptorMap.size, scriptTypes.length * scope.length);
|
|
115
|
+
});
|
|
116
|
+
scriptTypes.forEach((scriptType) => {
|
|
117
|
+
scope.forEach((s) => {
|
|
118
|
+
const key = `${scriptType}/${s}`;
|
|
119
|
+
it(`should have a correct descriptor for ${key}`, function () {
|
|
120
|
+
const descriptorFromMap = descriptorMap.get(key);
|
|
121
|
+
if (scriptType === 'p2tr' || scriptType === 'p2trMusig2') {
|
|
122
|
+
assert.equal(descriptorFromMap, null, `Descriptor for ${key} should be null`);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
assert.ok(descriptorFromMap, `Descriptor for ${key} should exist`);
|
|
126
|
+
const expectedDescriptor = (0, fromFixedScriptWallet_1.getDescriptorForScriptType)(rootWalletKeys, scriptType, s);
|
|
127
|
+
assert.equal(descriptorFromMap.toString(), expectedDescriptor.toString());
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
customPrefixes.forEach((customPrefix) => {
|
|
134
|
+
scriptTypes.forEach((scriptType) => {
|
|
135
|
+
index.forEach((index) => {
|
|
136
|
+
scope.forEach((scope) => {
|
|
137
|
+
if (scriptType !== 'p2tr' && scriptType !== 'p2trMusig2') {
|
|
138
|
+
runTestGetDescriptorWithScriptType(customPrefix, scriptType, index, scope);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
runTestGetDescriptorMap(customPrefix);
|
|
144
|
+
});
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbUZpeGVkU2NyaXB0V2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC9kZXNjcmlwdG9yL2Zyb21GaXhlZFNjcmlwdFdhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJEQUE2QztBQUU3Qyw4REFBZ0Q7QUFHaEQsc0ZBR29EO0FBRXBELFNBQVMsaUJBQWlCLENBQUMsa0JBQWlEO0lBQzFFLCtEQUErRDtJQUMvRCxrRUFBa0U7SUFDbEUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUM7QUFDNUcsQ0FBQztBQUVELE1BQU0sY0FBYyxHQUFpRDtJQUNuRSxTQUFTO0lBQ1QsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLDhCQUE4QjtJQUNyRCxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsNEJBQTRCO0NBQ3BELENBQUM7QUFDRixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUM7QUFDaEUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFDaEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRXhCLDREQUE0RDtBQUM1RCxTQUFTLDZCQUE2QixDQUFDLFVBQXNEO0lBQzNGLFFBQVEsVUFBVSxFQUFFLENBQUM7UUFDbkIsS0FBSyxNQUFNO1lBQ1QsT0FBTyxHQUFHLENBQUM7UUFDYixLQUFLLFdBQVc7WUFDZCxPQUFPLEVBQUUsQ0FBQztRQUNaLEtBQUssT0FBTztZQUNWLE9BQU8sRUFBRSxDQUFDO1FBQ1o7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RSxDQUFDLENBQUMsQ0FBQztvQkFDckYsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RSxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7SUFDdEMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQ2pDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN0QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksVUFBVSxLQUFLLE1BQU0sSUFBSSxVQUFVLEtBQUssWUFBWSxFQUFFLENBQUM7b0JBQ3pELGtDQUFrQyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUM3RSxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsdUJBQXVCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDeEMsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnbm9kZTphc3NlcnQvc3RyaWN0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbmltcG9ydCB7XG4gIGdldERlc2NyaXB0b3JGb3JTY3JpcHRUeXBlLFxuICBnZXROYW1lZERlc2NyaXB0b3JzRm9yUm9vdFdhbGxldEtleXMsXG59IGZyb20gJy4uLy4uL3NyYy9kZXNjcmlwdG9yL2Zyb21GaXhlZFNjcmlwdFdhbGxldCc7XG5cbmZ1bmN0aW9uIGdldFJvb3RXYWxsZXRLZXlzKGRlcml2YXRpb25QcmVmaXhlcz86IHV0eG9saWIuYml0Z28uVHJpcGxlPHN0cmluZz4pOiB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzIHtcbiAgLy8gVGhpcyBpcyBhIGZpeGVkIHNjcmlwdCB3YWxsZXQsIHNvIHdlIHVzZSBhIGZpeGVkIGtleSB0cmlwbGUuXG4gIC8vIEluIHByYWN0aWNlLCB0aGlzIHdvdWxkIGJlIGRlcml2ZWQgZnJvbSB0aGUgd2FsbGV0J3Mgcm9vdCBrZXlzLlxuICByZXR1cm4gbmV3IHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXModXR4b2xpYi50ZXN0dXRpbC5nZXRLZXlUcmlwbGUoJ2ZpeGVkU2NyaXB0JyksIGRlcml2YXRpb25QcmVmaXhlcyk7XG59XG5cbmNvbnN0IGN1c3RvbVByZWZpeGVzOiAodXR4b2xpYi5iaXRnby5UcmlwbGU8c3RyaW5nPiB8IHVuZGVmaW5lZClbXSA9IFtcbiAgdW5kZWZpbmVkLFxuICBbJzEvMicsICcxLzInLCAnMS8yJ10sIC8vIEN1c3RvbSBwcmVmaXhlcyBmb3IgdGVzdGluZ1xuICBbJzEvMicsICczLzQnLCAnNS82J10sIC8vIERpZmZlcmVudCBjdXN0b20gcHJlZml4ZXNcbl07XG5jb25zdCBzY3JpcHRUeXBlcyA9IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5zY3JpcHRUeXBlczJPZjM7XG5jb25zdCBzY29wZSA9IFsnZXh0ZXJuYWwnLCAnaW50ZXJuYWwnXSBhcyBjb25zdDtcbmNvbnN0IGluZGV4ID0gWzAsIDEsIDJdO1xuXG4vKiogR2V0IHRoZSBleHBlY3RlZCBtYXggd2VpZ2h0IHRvIHNhdGlzZnkgdGhlIGRlc2NyaXB0b3IgKi9cbmZ1bmN0aW9uIGdldEV4cGVjdGVkTWF4V2VpZ2h0VG9TYXRpc2Z5KHNjcmlwdFR5cGU6IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5TY3JpcHRUeXBlMk9mMykge1xuICBzd2l0Y2ggKHNjcmlwdFR5cGUpIHtcbiAgICBjYXNlICdwMnNoJzpcbiAgICAgIHJldHVybiAyNTY7XG4gICAgY2FzZSAncDJzaFAyd3NoJzpcbiAgICAgIHJldHVybiA5OTtcbiAgICBjYXNlICdwMndzaCc6XG4gICAgICByZXR1cm4gNjQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBzY3JpcHQgdHlwZScpO1xuICB9XG59XG5cbi8qKiBDb21wdXRlIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBpbnB1dCwgaW5jbHVkaW5nIG92ZXJoZWFkICovXG5mdW5jdGlvbiBnZXRUb3RhbElucHV0U2l6ZSh2U2l6ZTogbnVtYmVyKSB7XG4gIGNvbnN0IHNpemVPcFB1c2hEYXRhMSA9IDE7XG4gIGNvbnN0IHNpemVPcFB1c2hEYXRhMiA9IDI7XG4gIHJldHVybiAzMiAvKiB0eGlkICovICsgNCAvKiB2b3V0ICovICsgNCAvKiBuU2VxdWVuY2UgKi8gKyAodlNpemUgPCAyNTUgPyBzaXplT3BQdXNoRGF0YTEgOiBzaXplT3BQdXNoRGF0YTIpICsgdlNpemU7XG59XG5cbi8qKiBHZXQgdGhlIGZ1bGwgZXhwZWN0ZWQgdlNpemUgb2YgdGhlIGlucHV0IGluY2x1ZGluZyBvdmVyaGVhZCAqL1xuZnVuY3Rpb24gZ2V0RXhwZWN0ZWRWU2l6ZShzY3JpcHRUeXBlOiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjMpIHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0JpdEdvL0JpdEdvSlMvYmxvYi9tYXN0ZXIvbW9kdWxlcy91bnNwZW50cy9kb2NzL2lucHV0LWNvc3RzLm1kXG4gIHN3aXRjaCAoc2NyaXB0VHlwZSkge1xuICAgIGNhc2UgJ3Ayc2gnOlxuICAgICAgcmV0dXJuIDI5ODtcbiAgICBjYXNlICdwMnNoUDJ3c2gnOlxuICAgICAgcmV0dXJuIDE0MDtcbiAgICBjYXNlICdwMndzaCc6XG4gICAgICByZXR1cm4gMTA1O1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgc2NyaXB0IHR5cGUnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBydW5UZXN0R2V0RGVzY3JpcHRvcldpdGhTY3JpcHRUeXBlKFxuICBjdXN0b21QcmVmaXg6IHV0eG9saWIuYml0Z28uVHJpcGxlPHN0cmluZz4gfCB1bmRlZmluZWQsXG4gIHNjcmlwdFR5cGU6ICdwMnNoJyB8ICdwMnNoUDJ3c2gnIHwgJ3Ayd3NoJyxcbiAgaW5kZXg6IG51bWJlcixcbiAgc2NvcGU6ICdpbnRlcm5hbCcgfCAnZXh0ZXJuYWwnXG4pIHtcbiAgZGVzY3JpYmUoYGN1c3RvbVByZWZpeD0ke2N1c3RvbVByZWZpeH0sIHNjcmlwdFR5cGU9JHtzY3JpcHRUeXBlfSwgaW5kZXg9JHtpbmRleH0sIHNjb3BlPSR7c2NvcGV9YCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJvb3RXYWxsZXRLZXlzID0gZ2V0Um9vdFdhbGxldEtleXMoY3VzdG9tUHJlZml4KTtcbiAgICBjb25zdCBjaGFpbkNvZGUgPVxuICAgICAgc2NvcGUgPT09ICdleHRlcm5hbCdcbiAgICAgICAgPyB1dHhvbGliLmJpdGdvLmdldEV4dGVybmFsQ2hhaW5Db2RlKHNjcmlwdFR5cGUpXG4gICAgICAgIDogdXR4b2xpYi5iaXRnby5nZXRJbnRlcm5hbENoYWluQ29kZShzY3JpcHRUeXBlKTtcbiAgICBjb25zdCBkZXJpdmVkS2V5cyA9IHJvb3RXYWxsZXRLZXlzLmRlcml2ZUZvckNoYWluQW5kSW5kZXgoY2hhaW5Db2RlLCBpbmRleCk7XG4gICAgY29uc3Qgc2NyaXB0VXR4b2xpYiA9IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5jcmVhdGVPdXRwdXRTY3JpcHQyb2YzKFxuICAgICAgZGVyaXZlZEtleXMucHVibGljS2V5cyxcbiAgICAgIHNjcmlwdFR5cGVcbiAgICApLnNjcmlwdFB1YktleTtcblxuICAgIGxldCBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yO1xuXG4gICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlc2NyaXB0b3IgPSBnZXREZXNjcmlwdG9yRm9yU2NyaXB0VHlwZShyb290V2FsbGV0S2V5cywgc2NyaXB0VHlwZSwgc2NvcGUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FkZHJlc3Mgc2hvdWxkIG1hdGNoIGRlc2NyaXB0b3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzY3JpcHRGcm9tRGVzY3JpcHRvciA9IEJ1ZmZlci5mcm9tKGRlc2NyaXB0b3IuYXREZXJpdmF0aW9uSW5kZXgoaW5kZXgpLnNjcmlwdFB1YmtleSgpKTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2NyaXB0VXR4b2xpYi50b1N0cmluZygnaGV4JyksIHNjcmlwdEZyb21EZXNjcmlwdG9yLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhdmUgZXhwZWN0ZWQgd2VpZ2h0cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5vayhOdW1iZXIuaXNJbnRlZ2VyKGRlc2NyaXB0b3IubWF4V2VpZ2h0VG9TYXRpc2Z5KCkpKTtcbiAgICAgIGNvbnN0IHZTaXplID0gTWF0aC5jZWlsKGRlc2NyaXB0b3IubWF4V2VpZ2h0VG9TYXRpc2Z5KCkgLyA0KTtcbiAgICAgIGFzc2VydC5lcXVhbCh2U2l6ZSwgZ2V0RXhwZWN0ZWRNYXhXZWlnaHRUb1NhdGlzZnkoc2NyaXB0VHlwZSkpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGdldFRvdGFsSW5wdXRTaXplKHZTaXplKSwgZ2V0RXhwZWN0ZWRWU2l6ZShzY3JpcHRUeXBlKSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBydW5UZXN0R2V0RGVzY3JpcHRvck1hcChjdXN0b21QcmVmaXg6IHV0eG9saWIuYml0Z28uVHJpcGxlPHN0cmluZz4gfCB1bmRlZmluZWQpIHtcbiAgZGVzY3JpYmUoYGdldE5hbWVkRGVzY3JpcHRvcnNGb3JSb290V2FsbGV0S2V5cyB3aXRoIGN1c3RvbVByZWZpeD0ke2N1c3RvbVByZWZpeH1gLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgcm9vdFdhbGxldEtleXMgPSBnZXRSb290V2FsbGV0S2V5cyhjdXN0b21QcmVmaXgpO1xuICAgIGNvbnN0IGRlc2NyaXB0b3JNYXAgPSBnZXROYW1lZERlc2NyaXB0b3JzRm9yUm9vdFdhbGxldEtleXMocm9vdFdhbGxldEtleXMpO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBtYXAgd2l0aCB0aGUgY29ycmVjdCBudW1iZXIgb2YgZW50cmllcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5lcXVhbChkZXNjcmlwdG9yTWFwLnNpemUsIHNjcmlwdFR5cGVzLmxlbmd0aCAqIHNjb3BlLmxlbmd0aCk7XG4gICAgfSk7XG5cbiAgICBzY3JpcHRUeXBlcy5mb3JFYWNoKChzY3JpcHRUeXBlKSA9PiB7XG4gICAgICBzY29wZS5mb3JFYWNoKChzKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGAke3NjcmlwdFR5cGV9LyR7c31gO1xuICAgICAgICBpdChgc2hvdWxkIGhhdmUgYSBjb3JyZWN0IGRlc2NyaXB0b3IgZm9yICR7a2V5fWAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBkZXNjcmlwdG9yRnJvbU1hcCA9IGRlc2NyaXB0b3JNYXAuZ2V0KGtleSk7XG4gICAgICAgICAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnRyJyB8fCBzY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMicpIHtcbiAgICAgICAgICAgIGFzc2VydC5lcXVhbChkZXNjcmlwdG9yRnJvbU1hcCwgbnVsbCwgYERlc2NyaXB0b3IgZm9yICR7a2V5fSBzaG91bGQgYmUgbnVsbGApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhc3NlcnQub2soZGVzY3JpcHRvckZyb21NYXAsIGBEZXNjcmlwdG9yIGZvciAke2tleX0gc2hvdWxkIGV4aXN0YCk7XG4gICAgICAgICAgY29uc3QgZXhwZWN0ZWREZXNjcmlwdG9yID0gZ2V0RGVzY3JpcHRvckZvclNjcmlwdFR5cGUocm9vdFdhbGxldEtleXMsIHNjcmlwdFR5cGUsIHMpO1xuICAgICAgICAgIGFzc2VydC5lcXVhbChkZXNjcmlwdG9yRnJvbU1hcC50b1N0cmluZygpLCBleHBlY3RlZERlc2NyaXB0b3IudG9TdHJpbmcoKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5jdXN0b21QcmVmaXhlcy5mb3JFYWNoKChjdXN0b21QcmVmaXgpID0+IHtcbiAgc2NyaXB0VHlwZXMuZm9yRWFjaCgoc2NyaXB0VHlwZSkgPT4ge1xuICAgIGluZGV4LmZvckVhY2goKGluZGV4KSA9PiB7XG4gICAgICBzY29wZS5mb3JFYWNoKChzY29wZSkgPT4ge1xuICAgICAgICBpZiAoc2NyaXB0VHlwZSAhPT0gJ3AydHInICYmIHNjcmlwdFR5cGUgIT09ICdwMnRyTXVzaWcyJykge1xuICAgICAgICAgIHJ1blRlc3RHZXREZXNjcmlwdG9yV2l0aFNjcmlwdFR5cGUoY3VzdG9tUHJlZml4LCBzY3JpcHRUeXBlLCBpbmRleCwgc2NvcGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcnVuVGVzdEdldERlc2NyaXB0b3JNYXAoY3VzdG9tUHJlZml4KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatternMatcher.d.ts","sourceRoot":"","sources":["../../../../../test/descriptor/parse/PatternMatcher.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const wasm_utxo_1 = require("@bitgo/wasm-utxo");
|
|
8
|
+
const testutil_1 = require("../../../src/testutil");
|
|
9
|
+
const src_1 = require("../../../src");
|
|
10
|
+
const PatternMatcher_1 = require("../../../src/descriptor/parse/PatternMatcher");
|
|
11
|
+
function key32(seed) {
|
|
12
|
+
// return x-only public key from seed
|
|
13
|
+
return (0, src_1.toXOnlyPublicKey)((0, testutil_1.getKey)(seed).publicKey);
|
|
14
|
+
}
|
|
15
|
+
function getUnspendableKey() {
|
|
16
|
+
return '50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0';
|
|
17
|
+
}
|
|
18
|
+
function pk(b) {
|
|
19
|
+
return { 'v:pk': b.toString('hex') };
|
|
20
|
+
}
|
|
21
|
+
function sortedKeys(keys) {
|
|
22
|
+
return [...keys].sort((a, b) => a.compare(b));
|
|
23
|
+
}
|
|
24
|
+
function multiArgs(threshold, keys) {
|
|
25
|
+
return [threshold, ...sortedKeys(keys).map((k) => k.toString('hex'))];
|
|
26
|
+
}
|
|
27
|
+
function taprootScriptOnlyFromAst(n) {
|
|
28
|
+
return wasm_utxo_1.Descriptor.fromString(wasm_utxo_1.ast.formatNode({ tr: [getUnspendableKey(), n] }), 'definite');
|
|
29
|
+
}
|
|
30
|
+
class StakingDescriptorBuilder {
|
|
31
|
+
constructor(userKey, providerKeys, guardianKeys, guardianThreshold, stakingTimeLock) {
|
|
32
|
+
this.userKey = userKey;
|
|
33
|
+
this.providerKeys = providerKeys;
|
|
34
|
+
this.guardianKeys = guardianKeys;
|
|
35
|
+
this.guardianThreshold = guardianThreshold;
|
|
36
|
+
this.stakingTimeLock = stakingTimeLock;
|
|
37
|
+
}
|
|
38
|
+
getTimelockMiniscriptNode() {
|
|
39
|
+
return { and_v: [pk(this.userKey), { older: this.stakingTimeLock }] };
|
|
40
|
+
}
|
|
41
|
+
getWithdrawalMiniscriptNode() {
|
|
42
|
+
return { and_v: [pk(this.userKey), { multi_a: multiArgs(this.guardianThreshold, this.guardianKeys) }] };
|
|
43
|
+
}
|
|
44
|
+
getPenaltyMiniscriptNode() {
|
|
45
|
+
return {
|
|
46
|
+
and_v: [
|
|
47
|
+
{
|
|
48
|
+
and_v: [
|
|
49
|
+
pk(this.userKey),
|
|
50
|
+
this.providerKeys.length === 1
|
|
51
|
+
? { 'v:pk': this.providerKeys[0].toString('hex') }
|
|
52
|
+
: { 'v:multi_a': multiArgs(1, this.providerKeys) },
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
{ multi_a: multiArgs(this.guardianThreshold, this.guardianKeys) },
|
|
56
|
+
],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
getStakingDescriptor() {
|
|
60
|
+
return taprootScriptOnlyFromAst([
|
|
61
|
+
this.getPenaltyMiniscriptNode(),
|
|
62
|
+
[this.getWithdrawalMiniscriptNode(), this.getTimelockMiniscriptNode()],
|
|
63
|
+
]);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Inverse function to parse the descriptor
|
|
67
|
+
function parseStakingDescriptor(descriptor) {
|
|
68
|
+
const pattern = {
|
|
69
|
+
tr: [getUnspendableKey(), [{ $var: 'penaltyNode' }, [{ $var: 'withdrawalNode' }, { $var: 'timelockNode' }]]],
|
|
70
|
+
};
|
|
71
|
+
const matcher = new PatternMatcher_1.PatternMatcher();
|
|
72
|
+
const descriptorNode = wasm_utxo_1.ast.fromDescriptor(descriptor);
|
|
73
|
+
const result = matcher.match(descriptorNode, pattern);
|
|
74
|
+
if (!result) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
penaltyNode: result.penaltyNode,
|
|
79
|
+
withdrawalNode: result.withdrawalNode,
|
|
80
|
+
timelockNode: result.timelockNode,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
describe('PatternMatcher', function () {
|
|
84
|
+
it('should match basic object', function () {
|
|
85
|
+
const pattern = { a: { $var: 'x' }, b: 'hello' };
|
|
86
|
+
const node = { a: 123, b: 'hello' };
|
|
87
|
+
const vars = new PatternMatcher_1.PatternMatcher().match(node, pattern);
|
|
88
|
+
assert_1.default.deepStrictEqual(vars, { x: 123 });
|
|
89
|
+
});
|
|
90
|
+
it('should fail on non-matching object', function () {
|
|
91
|
+
const pattern = { a: { $var: 'x' }, b: 'world' };
|
|
92
|
+
const node = { a: 123, b: 'hello' };
|
|
93
|
+
const vars = new PatternMatcher_1.PatternMatcher().match(node, pattern);
|
|
94
|
+
assert_1.default.strictEqual(vars, null);
|
|
95
|
+
});
|
|
96
|
+
it('should match with repeated var', function () {
|
|
97
|
+
const pattern = { a: { $var: 'x' }, b: { $var: 'x' } };
|
|
98
|
+
const node = { a: 123, b: 123 };
|
|
99
|
+
const vars = new PatternMatcher_1.PatternMatcher().match(node, pattern);
|
|
100
|
+
assert_1.default.deepStrictEqual(vars, { x: 123 });
|
|
101
|
+
});
|
|
102
|
+
it('should fail with non-matching repeated var', function () {
|
|
103
|
+
const pattern = { a: { $var: 'x' }, b: { $var: 'x' } };
|
|
104
|
+
const node = { a: 123, b: 456 };
|
|
105
|
+
const vars = new PatternMatcher_1.PatternMatcher().match(node, pattern);
|
|
106
|
+
assert_1.default.strictEqual(vars, null);
|
|
107
|
+
});
|
|
108
|
+
it('should parse staking descriptor', function () {
|
|
109
|
+
const builder = new StakingDescriptorBuilder(key32('user'), [key32('provider1')], [key32('guardian1'), key32('guardian2')], 2, 100);
|
|
110
|
+
const descriptor = builder.getStakingDescriptor();
|
|
111
|
+
const parsed = parseStakingDescriptor(descriptor);
|
|
112
|
+
assert_1.default.notStrictEqual(parsed, null);
|
|
113
|
+
if (parsed) {
|
|
114
|
+
assert_1.default.deepStrictEqual(parsed.penaltyNode, builder.getPenaltyMiniscriptNode());
|
|
115
|
+
assert_1.default.deepStrictEqual(parsed.withdrawalNode, builder.getWithdrawalMiniscriptNode());
|
|
116
|
+
assert_1.default.deepStrictEqual(parsed.timelockNode, builder.getTimelockMiniscriptNode());
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0dGVybk1hdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L2Rlc2NyaXB0b3IvcGFyc2UvUGF0dGVybk1hdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsZ0RBQW1EO0FBRW5ELG9EQUErQztBQUMvQyxzQ0FBZ0Q7QUFDaEQsaUZBQXVGO0FBRXZGLFNBQVMsS0FBSyxDQUFDLElBQVk7SUFDekIscUNBQXFDO0lBQ3JDLE9BQU8sSUFBQSxzQkFBZ0IsRUFBQyxJQUFBLGlCQUFNLEVBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUVELFNBQVMsaUJBQWlCO0lBQ3hCLE9BQU8sa0VBQWtFLENBQUM7QUFDNUUsQ0FBQztBQUVELFNBQVMsRUFBRSxDQUFDLENBQVM7SUFDbkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDdkMsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQWM7SUFDaEMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxTQUFpQixFQUFFLElBQWM7SUFDbEQsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLENBQWtCO0lBQ2xELE9BQU8sc0JBQVUsQ0FBQyxVQUFVLENBQUMsZUFBRyxD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LE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLGdCQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQztZQUNyRixnQkFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUM7UUFDbkYsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IERlc2NyaXB0b3IsIGFzdCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBnZXRLZXkgfSBmcm9tICcuLi8uLi8uLi9zcmMvdGVzdHV0aWwnO1xuaW1wb3J0IHsgdG9YT25seVB1YmxpY0tleSB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBQYXR0ZXJuTWF0Y2hlciwgUGF0dGVybiB9IGZyb20gJy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL3BhcnNlL1BhdHRlcm5NYXRjaGVyJztcblxuZnVuY3Rpb24ga2V5MzIoc2VlZDogc3RyaW5nKTogQnVmZmVyIHtcbiAgLy8gcmV0dXJuIHgtb25seSBwdWJsaWMga2V5IGZyb20gc2VlZFxuICByZXR1cm4gdG9YT25seVB1YmxpY0tleShnZXRLZXkoc2VlZCkucHVibGljS2V5KTtcbn1cblxuZnVuY3Rpb24gZ2V0VW5zcGVuZGFibGVLZXkoKTogc3RyaW5nIHtcbiAgcmV0dXJuICc1MDkyOWI3NGMxYTA0OTU0Yjc4YjRiNjAzNWU5N2E1ZTA3OGE1YTBmMjhlYzk2ZDU0N2JmZWU5YWNlODAzYWMwJztcbn1cblxuZnVuY3Rpb24gcGsoYjogQnVmZmVyKTogYXN0Lk1pbmlzY3JpcHROb2RlIHtcbiAgcmV0dXJuIHsgJ3Y6cGsnOiBiLnRvU3RyaW5nKCdoZXgnKSB9O1xufVxuXG5mdW5jdGlvbiBzb3J0ZWRLZXlzKGtleXM6IEJ1ZmZlcltdKTogQnVmZmVyW10ge1xuICByZXR1cm4gWy4uLmtleXNdLnNvcnQoKGEsIGIpID0+IGEuY29tcGFyZShiKSk7XG59XG5cbmZ1bmN0aW9uIG11bHRpQXJncyh0aHJlc2hvbGQ6IG51bWJlciwga2V5czogQnVmZmVyW10pOiBbbnVtYmVyLCAuLi5zdHJpbmdbXV0ge1xuICByZXR1cm4gW3RocmVzaG9sZCwgLi4uc29ydGVkS2V5cyhrZXlzKS5tYXAoKGspID0+IGsudG9TdHJpbmcoJ2hleCcpKV07XG59XG5cbmZ1bmN0aW9uIHRhcHJvb3RTY3JpcHRPbmx5RnJvbUFzdChuOiBhc3QuVGFwVHJlZU5vZGUpOiBEZXNjcmlwdG9yIHtcbiAgcmV0dXJuIERlc2NyaXB0b3IuZnJvbVN0cmluZyhhc3QuZm9ybWF0Tm9kZSh7IHRyOiBbZ2V0VW5zcGVuZGFibGVLZXkoKSwgbl0gfSksICdkZWZpbml0ZScpO1xufVxuXG5jbGFzcyBTdGFraW5nRGVzY3JpcHRvckJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdXNlcktleTogQnVmZmVyLFxuICAgIHB1YmxpYyBwcm92aWRlcktleXM6IEJ1ZmZlcltdLFxuICAgIHB1YmxpYyBndWFyZGlhbktleXM6IEJ1ZmZlcltdLFxuICAgIHB1YmxpYyBndWFyZGlhblRocmVzaG9sZDogbnVtYmVyLFxuICAgIHB1YmxpYyBzdGFraW5nVGltZUxvY2s6IG51bWJlclxuICApIHt9XG5cbiAgZ2V0VGltZWxvY2tNaW5pc2NyaXB0Tm9kZSgpOiBhc3QuTWluaXNjcmlwdE5vZGUge1xuICAgIHJldHVybiB7IGFuZF92OiBbcGsodGhpcy51c2VyS2V5KSwgeyBvbGRlcjogdGhpcy5zdGFraW5nVGltZUxvY2sgfV0gfTtcbiAgfVxuXG4gIGdldFdpdGhkcmF3YWxNaW5pc2NyaXB0Tm9kZSgpOiBhc3QuTWluaXNjcmlwdE5vZGUge1xuICAgIHJldHVybiB7IGFuZF92OiBbcGsodGhpcy51c2VyS2V5KSwgeyBtdWx0aV9hOiBtdWx0aUFyZ3ModGhpcy5ndWFyZGlhblRocmVzaG9sZCwgdGhpcy5ndWFyZGlhbktleXMpIH1dIH07XG4gIH1cblxuICBnZXRQZW5hbHR5TWluaXNjcmlwdE5vZGUoKTogYXN0Lk1pbmlzY3JpcHROb2RlIHtcbiAgICByZXR1cm4ge1xuICAgICAgYW5kX3Y6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFuZF92OiBbXG4gICAgICAgICAgICBwayh0aGlzLnVzZXJLZXkpLFxuICAgICAgICAgICAgdGhpcy5wcm92aWRlcktleXMubGVuZ3RoID09PSAxXG4gICAgICAgICAgICAgID8geyAndjpwayc6IHRoaXMucHJvdmlkZXJLZXlzWzBdLnRvU3RyaW5nKCdoZXgnKSB9XG4gICAgICAgICAgICAgIDogeyAndjptdWx0aV9hJzogbXVsdGlBcmdzKDEsIHRoaXMucHJvdmlkZXJLZXlzKSB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHsgbXVsdGlfYTogbXVsdGlBcmdzKHRoaXMuZ3VhcmRpYW5UaHJlc2hvbGQsIHRoaXMuZ3VhcmRpYW5LZXlzKSB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U3Rha2luZ0Rlc2NyaXB0b3IoKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIHRhcHJvb3RTY3JpcHRPbmx5RnJvbUFzdChbXG4gICAgICB0aGlzLmdldFBlbmFsdHlNaW5pc2NyaXB0Tm9kZSgpLFxuICAgICAgW3RoaXMuZ2V0V2l0aGRyYXdhbE1pbmlzY3JpcHROb2RlKCksIHRoaXMuZ2V0VGltZWxvY2tNaW5pc2NyaXB0Tm9kZSgpXSxcbiAgICBdKTtcbiAgfVxufVxuXG4vLyBJbnZlcnNlIGZ1bmN0aW9uIHRvIHBhcnNlIHRoZSBkZXNjcmlwdG9yXG5mdW5jdGlvbiBwYXJzZVN0YWtpbmdEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IERlc2NyaXB0b3IpOiB7XG4gIHBlbmFsdHlOb2RlOiBhc3QuTWluaXNjcmlwdE5vZGU7XG4gIHdpdGhkcmF3YWxOb2RlOiBhc3QuTWluaXNjcmlwdE5vZGU7XG4gIHRpbWVsb2NrTm9kZTogYXN0Lk1pbmlzY3JpcHROb2RlO1xufSB8IG51bGwge1xuICBjb25zdCBwYXR0ZXJuOiBQYXR0ZXJuID0ge1xuICAgIHRyOiBbZ2V0VW5zcGVuZGFibGVLZXkoKSwgW3sgJHZhcjogJ3BlbmFsdHlOb2RlJyB9LCBbeyAkdmFyOiAnd2l0aGRyYXdhbE5vZGUnIH0sIHsgJHZhcjogJ3RpbWVsb2NrTm9kZScgfV1dXSxcbiAgfTtcblxuICBjb25zdCBtYXRjaGVyID0gbmV3IFBhdHRlcm5NYXRjaGVyKCk7XG4gIGNvbnN0IGRlc2NyaXB0b3JOb2RlID0gYXN0LmZyb21EZXNjcmlwdG9yKGRlc2NyaXB0b3IpO1xuICBjb25zdCByZXN1bHQgPSBtYXRjaGVyLm1hdGNoKGRlc2NyaXB0b3JOb2RlLCBwYXR0ZXJuKTtcblxuICBpZiAoIXJlc3VsdCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwZW5hbHR5Tm9kZTogcmVzdWx0LnBlbmFsdHlOb2RlIGFzIGFzdC5NaW5pc2NyaXB0Tm9kZSxcbiAgICB3aXRoZHJhd2FsTm9kZTogcmVzdWx0LndpdGhkcmF3YWxOb2RlIGFzIGFzdC5NaW5pc2NyaXB0Tm9kZSxcbiAgICB0aW1lbG9ja05vZGU6IHJlc3VsdC50aW1lbG9ja05vZGUgYXMgYXN0Lk1pbmlzY3JpcHROb2RlLFxuICB9O1xufVxuXG5kZXNjcmliZSgnUGF0dGVybk1hdGNoZXInLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdzaG91bGQgbWF0Y2ggYmFzaWMgb2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBhdHRlcm4gPSB7IGE6IHsgJHZhcjogJ3gnIH0sIGI6ICdoZWxsbycgfTtcbiAgICBjb25zdCBub2RlID0geyBhOiAxMjMsIGI6ICdoZWxsbycgfTtcbiAgICBjb25zdCB2YXJzID0gbmV3IFBhdHRlcm5NYXRjaGVyKCkubWF0Y2gobm9kZSwgcGF0dGVybik7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh2YXJzLCB7IHg6IDEyMyB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIG9uIG5vbi1tYXRjaGluZyBvYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IHsgYTogeyAkdmFyOiAneCcgfSwgYjogJ3dvcmxkJyB9O1xuICAgIGNvbnN0IG5vZGUgPSB7IGE6IDEyMywgYjogJ2hlbGxvJyB9O1xuICAgIGNvbnN0IHZhcnMgPSBuZXcgUGF0dGVybk1hdGNoZXIoKS5tYXRjaChub2RlLCBwYXR0ZXJuKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFycywgbnVsbCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbWF0Y2ggd2l0aCByZXBlYXRlZCB2YXInLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IHsgYTogeyAkdmFyOiAneCcgfSwgYjogeyAkdmFyOiAneCcgfSB9O1xuICAgIGNvbnN0IG5vZGUgPSB7IGE6IDEyMywgYjogMTIzIH07XG4gICAgY29uc3QgdmFycyA9IG5ldyBQYXR0ZXJuTWF0Y2hlcigpLm1hdGNoKG5vZGUsIHBhdHRlcm4pO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodmFycywgeyB4OiAxMjMgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aXRoIG5vbi1tYXRjaGluZyByZXBlYXRlZCB2YXInLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IHsgYTogeyAkdmFyOiAneCcgfSwgYjogeyAkdmFyOiAneCcgfSB9O1xuICAgIGNvbnN0IG5vZGUgPSB7IGE6IDEyMywgYjogNDU2IH07XG4gICAgY29uc3QgdmFycyA9IG5ldyBQYXR0ZXJuTWF0Y2hlcigpLm1hdGNoKG5vZGUsIHBhdHRlcm4pO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YXJzLCBudWxsKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXJzZSBzdGFraW5nIGRlc2NyaXB0b3InLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBTdGFraW5nRGVzY3JpcHRvckJ1aWxkZXIoXG4gICAgICBrZXkzMigndXNlcicpLFxuICAgICAgW2tleTMyKCdwcm92aWRlcjEnKV0sXG4gICAgICBba2V5MzIoJ2d1YXJkaWFuMScpLCBrZXkzMignZ3VhcmRpYW4yJyldLFxuICAgICAgMixcbiAgICAgIDEwMFxuICAgICk7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0gYnVpbGRlci5nZXRTdGFraW5nRGVzY3JpcHRvcigpO1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU3Rha2luZ0Rlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG5cbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwocGFyc2VkLCBudWxsKTtcbiAgICBpZiAocGFyc2VkKSB7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlZC5wZW5hbHR5Tm9kZSwgYnVpbGRlci5nZXRQZW5hbHR5TWluaXNjcmlwdE5vZGUoKSk7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlZC53aXRoZHJhd2FsTm9kZSwgYnVpbGRlci5nZXRXaXRoZHJhd2FsTWluaXNjcmlwdE5vZGUoKSk7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlZC50aW1lbG9ja05vZGUsIGJ1aWxkZXIuZ2V0VGltZWxvY2tNaW5pc2NyaXB0Tm9kZSgpKTtcbiAgICB9XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VirtualSize.d.ts","sourceRoot":"","sources":["../../../../../test/descriptor/psbt/VirtualSize.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const VirtualSize_1 = require("../../../src/descriptor/VirtualSize");
|
|
8
|
+
const descriptor_1 = require("../../../src/testutil/descriptor");
|
|
9
|
+
const testutil_1 = require("../../../src/testutil");
|
|
10
|
+
const descriptor_2 = require("../../../src/descriptor");
|
|
11
|
+
describe('VirtualSize', function () {
|
|
12
|
+
describe('getInputVSizesForDescriptorWallet', function () {
|
|
13
|
+
it('returns the input virtual sizes for a descriptor wallet', function () {
|
|
14
|
+
assert_1.default.deepStrictEqual((0, VirtualSize_1.getInputVSizesForDescriptors)(new Map([
|
|
15
|
+
['foo', (0, descriptor_1.getDescriptor)('Wsh2Of2')],
|
|
16
|
+
['bar', (0, descriptor_1.getDescriptor)('Wsh2Of2')],
|
|
17
|
+
])), {
|
|
18
|
+
foo: 96,
|
|
19
|
+
bar: 96,
|
|
20
|
+
});
|
|
21
|
+
assert_1.default.deepStrictEqual((0, VirtualSize_1.getInputVSizesForDescriptors)((0, descriptor_1.getDescriptorMap)('Wsh2Of3')), {
|
|
22
|
+
external: 105,
|
|
23
|
+
internal: 105,
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe('getChangeOutputVSizesForDescriptor', function () {
|
|
28
|
+
it('returns the output virtual sizes for a descriptor', function () {
|
|
29
|
+
assert_1.default.deepStrictEqual((0, VirtualSize_1.getChangeOutputVSizesForDescriptor)((0, descriptor_1.getDescriptor)('Wsh2Of2')), {
|
|
30
|
+
inputVSize: 96,
|
|
31
|
+
outputVSize: 34,
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
function describeWithTemplate(t, inputSize, outputSize) {
|
|
36
|
+
describe(`getVirtualSize ${t}`, function () {
|
|
37
|
+
it('returns expected virtual size', function () {
|
|
38
|
+
assert_1.default.deepStrictEqual((0, VirtualSize_1.getVirtualSize)({
|
|
39
|
+
inputs: [{ descriptorName: 'internal' }],
|
|
40
|
+
outputs: [{ script: Buffer.alloc(34) }],
|
|
41
|
+
}, (0, descriptor_1.getDescriptorMap)(t)), inputSize + outputSize + 11);
|
|
42
|
+
const descriptor = (0, descriptor_1.getDescriptor)(t);
|
|
43
|
+
const nInputs = 10000;
|
|
44
|
+
assert_1.default.deepStrictEqual((0, VirtualSize_1.getVirtualSize)({
|
|
45
|
+
/* as proof we can pass 10_000 inputs */
|
|
46
|
+
inputs: Array.from({ length: nInputs }).map(() => descriptor),
|
|
47
|
+
outputs: [],
|
|
48
|
+
}), inputSize * nInputs + 11);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe(`getVirtualSizeForPsbt ${t}`, function () {
|
|
52
|
+
const keys = (0, testutil_1.getKeyTriple)('a');
|
|
53
|
+
const descriptorSelf = (0, descriptor_1.getDescriptor)(t, keys.map((k) => k.neutered().toBase58()));
|
|
54
|
+
const descriptorOther = (0, descriptor_1.getDescriptor)(t, (0, descriptor_1.getDefaultXPubs)('b'));
|
|
55
|
+
it('returns expected virtual size', function () {
|
|
56
|
+
const psbt = (0, descriptor_1.mockPsbtDefault)({ descriptorSelf, descriptorOther });
|
|
57
|
+
const descriptorMap = new Map([['internal', descriptorSelf]]);
|
|
58
|
+
const expectedVirtualSize = inputSize * 2 + outputSize * 2 + 11;
|
|
59
|
+
assert_1.default.deepStrictEqual((0, VirtualSize_1.getVirtualSizeEstimateForPsbt)(psbt, descriptorMap), expectedVirtualSize);
|
|
60
|
+
psbt.signAllInputsHD(keys[0]);
|
|
61
|
+
psbt.signAllInputsHD(keys[1]);
|
|
62
|
+
(0, descriptor_2.finalizePsbt)(psbt);
|
|
63
|
+
// TODO(BTC-1797): figure out why we overestimate by 1
|
|
64
|
+
assert_1.default.strictEqual(psbt.extractTransaction().virtualSize(), expectedVirtualSize - 1);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
describeWithTemplate('Wsh2Of3', 105, 43);
|
|
69
|
+
describeWithTemplate('Tr2Of3-NoKeyPath', 109, 43);
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlydHVhbFNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L2Rlc2NyaXB0b3IvcHNidC9WaXJ0dWFsU2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUU1QixxRUFLNkM7QUFDN0MsaUVBTTBDO0FBQzFDLG9EQUFxRDtBQUNyRCx3REFBdUQ7QUFFdkQsUUFBUSxDQUFDLGFBQWEsRUFBRTtJQUN0QixRQUFRLENBQUMsbUNBQW1DLEVBQUU7UUFDNUMsRUFBRSxDQUFDLHlEQUF5RCxFQUFFO1lBQzVELGdCQUFNLENBQUMsZUFBZSxDQUNwQixJQUFBLDBDQUE0QixFQUMxQixJQUFJLEdBQUcsQ0FBQztnQkFDTixDQUFDLEtBQUssRUFBRSxJQUFBLDBCQUFhLEVBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2pDLENBQUMsS0FBSyxFQUFFLElBQUEsMEJBQWEsRUFBQyxTQUFTLENBQUMsQ0FBQzthQUNsQyxDQUFDLENBQ0gsRUFDRDtnQkFDRSxHQUFHLEVBQUUsRUFBRTtnQkFDUCxHQUFHLEVBQUUsRUFBRTthQUNSLENBQ0YsQ0FBQztZQUNGLGdCQUFNLENBQUMsZUFBZSxDQUFDLElBQUEsMENBQTRCLEVBQUMsSUFBQSw2QkFBZ0IsRUFBQyxTQUFTLENBQUMsQ0FBQyxFQUFFO2dCQUNoRixRQUFRLEVBQUUsR0FBRztnQkFDYixRQUFRLEVBQUUsR0FBRzthQUNkLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsb0NBQW9DLEVBQUU7UUFDN0MsRUFBRSxDQUFDLG1EQUFtRCxFQUFFO1lBQ3RELGdCQUFNLENBQUMsZUFBZSxDQUFDLElBQUEsZ0RBQWtDLEVBQUMsSUFBQSwwQkFBYSxFQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25GLFVBQVUsRUFBRSxFQUFFO2dCQUNkLFdBQVcsRUFBRSxFQUFFO2FBQ2hCLENB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LENBQUMsQ0FBQztJQUN6QyxvQkFBb0IsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7XG4gIGdldENoYW5nZU91dHB1dFZTaXplc0ZvckRlc2NyaXB0b3IsXG4gIGdldElucHV0VlNpemVzRm9yRGVzY3JpcHRvcnMsXG4gIGdldFZpcnR1YWxTaXplLFxuICBnZXRWaXJ0dWFsU2l6ZUVzdGltYXRlRm9yUHNidCxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvVmlydHVhbFNpemUnO1xuaW1wb3J0IHtcbiAgRGVzY3JpcHRvclRlbXBsYXRlLFxuICBnZXREZWZhdWx0WFB1YnMsXG4gIGdldERlc2NyaXB0b3IsXG4gIGdldERlc2NyaXB0b3JNYXAsXG4gIG1vY2tQc2J0RGVmYXVsdCxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZ2V0S2V5VHJpcGxlIH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsJztcbmltcG9ydCB7IGZpbmFsaXplUHNidCB9IGZyb20gJy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yJztcblxuZGVzY3JpYmUoJ1ZpcnR1YWxTaXplJywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnZ2V0SW5wdXRWU2l6ZXNGb3JEZXNjcmlwdG9yV2FsbGV0JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdyZXR1cm5zIHRoZSBpbnB1dCB2aXJ0dWFsIHNpemVzIGZvciBhIGRlc2NyaXB0b3Igd2FsbGV0JywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChcbiAgICAgICAgZ2V0SW5wdXRWU2l6ZXNGb3JEZXNjcmlwdG9ycyhcbiAgICAgICAgICBuZXcgTWFwKFtcbiAgICAgICAgICAgIFsnZm9vJywgZ2V0RGVzY3JpcHRvcignV3NoMk9mMicpXSxcbiAgICAgICAgICAgIFsnYmFyJywgZ2V0RGVzY3JpcHRvcignV3NoMk9mMicpXSxcbiAgICAgICAgICBdKVxuICAgICAgICApLFxuICAgICAgICB7XG4gICAgICAgICAgZm9vOiA5NixcbiAgICAgICAgICBiYXI6IDk2LFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChnZXRJbnB1dFZTaXplc0ZvckRlc2NyaXB0b3JzKGdldERlc2NyaXB0b3JNYXAoJ1dzaDJPZjMnKSksIHtcbiAgICAgICAgZXh0ZXJuYWw6IDEwNSxcbiAgICAgICAgaW50ZXJuYWw6IDEwNSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0Q2hhbmdlT3V0cHV0VlNpemVzRm9yRGVzY3JpcHRvcicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgncmV0dXJucyB0aGUgb3V0cHV0IHZpcnR1YWwgc2l6ZXMgZm9yIGEgZGVzY3JpcHRvcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZ2V0Q2hhbmdlT3V0cHV0VlNpemVzRm9yRGVzY3JpcHRvcihnZXREZXNjcmlwdG9yKCdXc2gyT2YyJykpLCB7XG4gICAgICAgIGlucHV0VlNpemU6IDk2LFxuICAgICAgICBvdXRwdXRWU2l6ZTogMzQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gZGVzY3JpYmVXaXRoVGVtcGxhdGUodDogRGVzY3JpcHRvclRlbXBsYXRlLCBpbnB1dFNpemU6IG51bWJlciwgb3V0cHV0U2l6ZTogbnVtYmVyKSB7XG4gICAgZGVzY3JpYmUoYGdldFZpcnR1YWxTaXplICR7dH1gLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgncmV0dXJucyBleHBlY3RlZCB2aXJ0dWFsIHNpemUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoXG4gICAgICAgICAgZ2V0VmlydHVhbFNpemUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlucHV0czogW3sgZGVzY3JpcHRvck5hbWU6ICdpbnRlcm5hbCcgfV0sXG4gICAgICAgICAgICAgIG91dHB1dHM6IFt7IHNjcmlwdDogQnVmZmVyLmFsbG9jKDM0KSB9XSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXREZXNjcmlwdG9yTWFwKHQpXG4gICAgICAgICAgKSxcbiAgICAgICAgICBpbnB1dFNpemUgKyBvdXRwdXRTaXplICsgMTFcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gZ2V0RGVzY3JpcHRvcih0KTtcblxuICAgICAgICBjb25zdCBuSW5wdXRzID0gMTBfMDAwO1xuICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKFxuICAgICAgICAgIGdldFZpcnR1YWxTaXplKHtcbiAgICAgICAgICAgIC8qIGFzIHByb29mIHdlIGNhbiBwYXNzIDEwXzAwMCBpbnB1dHMgKi9cbiAgICAgICAgICAgIGlucHV0czogQXJyYXkuZnJvbSh7IGxlbmd0aDogbklucHV0cyB9KS5tYXAoKCkgPT4gZGVzY3JpcHRvciksXG4gICAgICAgICAgICBvdXRwdXRzOiBbXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBpbnB1dFNpemUgKiBuSW5wdXRzICsgMTFcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoYGdldFZpcnR1YWxTaXplRm9yUHNidCAke3R9YCwgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qga2V5cyA9IGdldEtleVRyaXBsZSgnYScpO1xuICAgICAgY29uc3QgZGVzY3JpcHRvclNlbGYgPSBnZXREZXNjcmlwdG9yKFxuICAgICAgICB0LFxuICAgICAgICBrZXlzLm1hcCgoaykgPT4gay5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkpXG4gICAgICApO1xuICAgICAgY29uc3QgZGVzY3JpcHRvck90aGVyID0gZ2V0RGVzY3JpcHRvcih0LCBnZXREZWZhdWx0WFB1YnMoJ2InKSk7XG4gICAgICBpdCgncmV0dXJucyBleHBlY3RlZCB2aXJ0dWFsIHNpemUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHBzYnQgPSBtb2NrUHNidERlZmF1bHQoeyBkZXNjcmlwdG9yU2VsZiwgZGVzY3JpcHRvck90aGVyIH0pO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yTWFwID0gbmV3IE1hcChbWydpbnRlcm5hbCcsIGRlc2NyaXB0b3JTZWxmXV0pO1xuICAgICAgICBjb25zdCBleHBlY3RlZFZpcnR1YWxTaXplID0gaW5wdXRTaXplICogMiArIG91dHB1dFNpemUgKiAyICsgMTE7XG4gICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZ2V0VmlydHVhbFNpemVFc3RpbWF0ZUZvclBzYnQocHNidCwgZGVzY3JpcHRvck1hcCksIGV4cGVjdGVkVmlydHVhbFNpemUpO1xuICAgICAgICBwc2J0LnNpZ25BbGxJbnB1dHNIRChrZXlzWzBdKTtcbiAgICAgICAgcHNidC5zaWduQWxsSW5wdXRzSEQoa2V5c1sxXSk7XG4gICAgICAgIGZpbmFsaXplUHNidChwc2J0KTtcbiAgICAgICAgLy8gVE9ETyhCVEMtMTc5Nyk6IGZpZ3VyZSBvdXQgd2h5IHdlIG92ZXJlc3RpbWF0ZSBieSAxXG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwc2J0LmV4dHJhY3RUcmFuc2FjdGlvbigpLnZpcnR1YWxTaXplKCksIGV4cGVjdGVkVmlydHVhbFNpemUgLSAxKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZGVzY3JpYmVXaXRoVGVtcGxhdGUoJ1dzaDJPZjMnLCAxMDUsIDQzKTtcbiAgZGVzY3JpYmVXaXRoVGVtcGxhdGUoJ1RyMk9mMy1Ob0tleVBhdGgnLCAxMDksIDQzKTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertSatisfiable.d.ts","sourceRoot":"","sources":["../../../../../test/descriptor/psbt/assertSatisfiable.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,56 @@
|
|
|
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 wasm_utxo_1 = require("@bitgo/wasm-utxo");
|
|
38
|
+
const descriptor_1 = require("../../../src/testutil/descriptor");
|
|
39
|
+
const descriptor_2 = require("../../../src/descriptor");
|
|
40
|
+
function d(s) {
|
|
41
|
+
return wasm_utxo_1.Descriptor.fromString(s, 'derivable');
|
|
42
|
+
}
|
|
43
|
+
describe('assertSatisfiable', function () {
|
|
44
|
+
describe('getRequiredLocktime', function () {
|
|
45
|
+
const xpubs = (0, descriptor_1.getDefaultXPubs)();
|
|
46
|
+
it('has expected result', function () {
|
|
47
|
+
// OP_DROP
|
|
48
|
+
assert.strictEqual((0, descriptor_2.getRequiredLocktime)(d(`wsh(and_v(r:after(100),pk(${xpubs[0]})))`)), 100);
|
|
49
|
+
// OP_VERIFY
|
|
50
|
+
assert.strictEqual((0, descriptor_2.getRequiredLocktime)(d(`wsh(and_v(v:after(100),pk(${xpubs[0]})))`)), 100);
|
|
51
|
+
// no locktime at all
|
|
52
|
+
assert.strictEqual((0, descriptor_2.getRequiredLocktime)(d(`wsh(pk(${xpubs[0]}))`)), undefined);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0U2F0aXNmaWFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L2Rlc2NyaXB0b3IvcHNidC9hc3NlcnRTYXRpc2ZpYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUVqQyxnREFBOEM7QUFFOUMsaUVBQW1FO0FBQ25FLHdEQUE4RDtBQUU5RCxTQUFTLENBQUMsQ0FBQyxDQUFTO0lBQ2xCLE9BQU8sc0JBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxRQUFRLENBQUMsbUJBQW1CLEVBQUU7SUFDNUIsUUFBUSxDQUFDLHFCQUFxQixFQUFFO1FBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUEsNEJBQWUsR0FBRSxDQUFDO1FBQ2hDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRTtZQUN4QixVQUFVO1lBQ1YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLGdDQUFtQixFQUFDLENBQUMsQ0FBQyw2QkFBNkIsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVGLFlBQVk7WUFDWixNQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsZ0NBQW1CLEVBQUMsQ0FBQyxDQUFDLDZCQUE2QixLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUYscUJBQXFCO1lBQ3JCLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBQSxnQ0FBbUIsRUFBQyxDQUFDLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgZ2V0RGVmYXVsdFhQdWJzIH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZ2V0UmVxdWlyZWRMb2NrdGltZSB9IGZyb20gJy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yJztcblxuZnVuY3Rpb24gZChzOiBzdHJpbmcpOiBEZXNjcmlwdG9yIHtcbiAgcmV0dXJuIERlc2NyaXB0b3IuZnJvbVN0cmluZyhzLCAnZGVyaXZhYmxlJyk7XG59XG5cbmRlc2NyaWJlKCdhc3NlcnRTYXRpc2ZpYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ2dldFJlcXVpcmVkTG9ja3RpbWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgeHB1YnMgPSBnZXREZWZhdWx0WFB1YnMoKTtcbiAgICBpdCgnaGFzIGV4cGVjdGVkIHJlc3VsdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIE9QX0RST1BcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRSZXF1aXJlZExvY2t0aW1lKGQoYHdzaChhbmRfdihyOmFmdGVyKDEwMCkscGsoJHt4cHVic1swXX0pKSlgKSksIDEwMCk7XG4gICAgICAvLyBPUF9WRVJJRllcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRSZXF1aXJlZExvY2t0aW1lKGQoYHdzaChhbmRfdih2OmFmdGVyKDEwMCkscGsoJHt4cHVic1swXX0pKSlgKSksIDEwMCk7XG4gICAgICAvLyBubyBsb2NrdGltZSBhdCBhbGxcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRSZXF1aXJlZExvY2t0aW1lKGQoYHdzaChwaygke3hwdWJzWzBdfSkpYCkpLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findDescriptors.d.ts","sourceRoot":"","sources":["../../../../../test/descriptor/psbt/findDescriptors.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,70 @@
|
|
|
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 descriptor_1 = require("../../../src/testutil/descriptor");
|
|
38
|
+
const descriptor_2 = require("../../../src/descriptor");
|
|
39
|
+
function describeWithTemplates(templateSelf, templateOther) {
|
|
40
|
+
describe(`parsePsbt [${templateSelf},${templateOther}]`, function () {
|
|
41
|
+
const descriptorA = (0, descriptor_1.getDescriptor)(templateSelf, (0, descriptor_1.getDefaultXPubs)('a'));
|
|
42
|
+
const descriptorB = (0, descriptor_1.getDescriptor)(templateOther, (0, descriptor_1.getDefaultXPubs)('b'));
|
|
43
|
+
const descriptorMap = new Map([
|
|
44
|
+
['a', descriptorA],
|
|
45
|
+
['b', descriptorB],
|
|
46
|
+
]);
|
|
47
|
+
it('finds descriptors for PSBT inputs/outputs', function () {
|
|
48
|
+
const psbt = (0, descriptor_1.mockPsbt)([
|
|
49
|
+
{ descriptor: descriptorA, index: 0 },
|
|
50
|
+
{ descriptor: descriptorB, index: 1, id: { vout: 1 } },
|
|
51
|
+
], [{ descriptor: descriptorA, index: 2, value: BigInt(1e6) }]);
|
|
52
|
+
assert.deepStrictEqual((0, descriptor_2.findDescriptorForInput)(psbt.data.inputs[0], descriptorMap), {
|
|
53
|
+
descriptor: descriptorA,
|
|
54
|
+
index: 0,
|
|
55
|
+
});
|
|
56
|
+
assert.deepStrictEqual((0, descriptor_2.findDescriptorForInput)(psbt.data.inputs[1], descriptorMap), {
|
|
57
|
+
descriptor: descriptorB,
|
|
58
|
+
index: 1,
|
|
59
|
+
});
|
|
60
|
+
assert.deepStrictEqual((0, descriptor_2.findDescriptorForOutput)(psbt.txOutputs[0].script, psbt.data.outputs[0], descriptorMap), {
|
|
61
|
+
descriptor: descriptorA,
|
|
62
|
+
index: 2,
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
describeWithTemplates('Wsh2Of3', 'Wsh2Of3');
|
|
68
|
+
describeWithTemplates('Wsh2Of3', 'Tr2Of3-NoKeyPath');
|
|
69
|
+
describeWithTemplates('Tr2Of3-NoKeyPath', 'Tr2Of3-NoKeyPath');
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZERlc2NyaXB0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC9kZXNjcmlwdG9yL3BzYnQvZmluZERlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBRWpDLGlFQUFnSDtBQUNoSCx3REFBMEY7QUFFMUYsU0FBUyxxQkFBcUIsQ0FBQyxZQUFnQyxFQUFFLGFBQWlDO0lBQ2hHLFFBQVEsQ0FBQyxjQUFjLFlBQVksSUFBSSxhQUFhLEdBQUcsRUFBRTtRQUN2RCxNQUFNLFdBQVcsR0FBRyxJQUFBLDBCQUFhLEVBQUMsWUFBWSxFQUFFLElBQUEsNEJBQWUsRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sV0FBVyxHQUFHLElBQUEsMEJBQWEsRUFBQyxhQUFhLEVBQUUsSUFBQSw0QkFBZSxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkUsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUM7WUFDNUIsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDO1lBQ2xCLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQztTQUNuQixDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkNBQTJDLEVBQUU7WUFDOUMsTUFBTSxJQUFJLEdBQUcsSUFBQSxxQkFBUSxFQUNuQjtnQkFDRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtnQkFDckMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO2FBQ3ZELEVBQ0QsQ0FBQyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FDNUQsQ0FBQztZQUVGLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBQSxtQ0FBc0IsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsRUFBRTtnQkFDakYsVUFBVSxFQUFFLFdBQVc7Z0JBQ3ZCLEtBQUssRUFBRSxDQUFDO2FBQ1QsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFBLG1DQUFzQixFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxFQUFFO2dCQUNqRixVQUFVLEVBQUUsV0FBVztnQkFDdkIsS0FBSyxFQUFFLENBQUM7YUFDVCxDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUEsb0NBQXVCLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQUU7Z0JBQzdHLFVBQVUsRUFBRSxXQUFXO2dCQUN2QixLQUFLLEVBQUUsQ0FBQzthQUNULENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQscUJBQXFCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzVDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3JELHFCQUFxQixDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgRGVzY3JpcHRvclRlbXBsYXRlLCBnZXREZWZhdWx0WFB1YnMsIGdldERlc2NyaXB0b3IsIG1vY2tQc2J0IH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZmluZERlc2NyaXB0b3JGb3JJbnB1dCwgZmluZERlc2NyaXB0b3JGb3JPdXRwdXQgfSBmcm9tICcuLi8uLi8uLi9zcmMvZGVzY3JpcHRvcic7XG5cbmZ1bmN0aW9uIGRlc2NyaWJlV2l0aFRlbXBsYXRlcyh0ZW1wbGF0ZVNlbGY6IERlc2NyaXB0b3JUZW1wbGF0ZSwgdGVtcGxhdGVPdGhlcjogRGVzY3JpcHRvclRlbXBsYXRlKSB7XG4gIGRlc2NyaWJlKGBwYXJzZVBzYnQgWyR7dGVtcGxhdGVTZWxmfSwke3RlbXBsYXRlT3RoZXJ9XWAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkZXNjcmlwdG9yQSA9IGdldERlc2NyaXB0b3IodGVtcGxhdGVTZWxmLCBnZXREZWZhdWx0WFB1YnMoJ2EnKSk7XG4gICAgY29uc3QgZGVzY3JpcHRvckIgPSBnZXREZXNjcmlwdG9yKHRlbXBsYXRlT3RoZXIsIGdldERlZmF1bHRYUHVicygnYicpKTtcbiAgICBjb25zdCBkZXNjcmlwdG9yTWFwID0gbmV3IE1hcChbXG4gICAgICBbJ2EnLCBkZXNjcmlwdG9yQV0sXG4gICAgICBbJ2InLCBkZXNjcmlwdG9yQl0sXG4gICAgXSk7XG5cbiAgICBpdCgnZmluZHMgZGVzY3JpcHRvcnMgZm9yIFBTQlQgaW5wdXRzL291dHB1dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwc2J0ID0gbW9ja1BzYnQoXG4gICAgICAgIFtcbiAgICAgICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JBLCBpbmRleDogMCB9LFxuICAgICAgICAgIHsgZGVzY3JpcHRvcjogZGVzY3JpcHRvckIsIGluZGV4OiAxLCBpZDogeyB2b3V0OiAxIH0gfSxcbiAgICAgICAgXSxcbiAgICAgICAgW3sgZGVzY3JpcHRvcjogZGVzY3JpcHRvckEsIGluZGV4OiAyLCB2YWx1ZTogQmlnSW50KDFlNikgfV1cbiAgICAgICk7XG5cbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZmluZERlc2NyaXB0b3JGb3JJbnB1dChwc2J0LmRhdGEuaW5wdXRzWzBdLCBkZXNjcmlwdG9yTWFwKSwge1xuICAgICAgICBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yQSxcbiAgICAgICAgaW5kZXg6IDAsXG4gICAgICB9KTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZmluZERlc2NyaXB0b3JGb3JJbnB1dChwc2J0LmRhdGEuaW5wdXRzWzFdLCBkZXNjcmlwdG9yTWFwKSwge1xuICAgICAgICBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yQixcbiAgICAgICAgaW5kZXg6IDEsXG4gICAgICB9KTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZmluZERlc2NyaXB0b3JGb3JPdXRwdXQocHNidC50eE91dHB1dHNbMF0uc2NyaXB0LCBwc2J0LmRhdGEub3V0cHV0c1swXSwgZGVzY3JpcHRvck1hcCksIHtcbiAgICAgICAgZGVzY3JpcHRvcjogZGVzY3JpcHRvckEsXG4gICAgICAgIGluZGV4OiAyLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5kZXNjcmliZVdpdGhUZW1wbGF0ZXMoJ1dzaDJPZjMnLCAnV3NoMk9mMycpO1xuZGVzY3JpYmVXaXRoVGVtcGxhdGVzKCdXc2gyT2YzJywgJ1RyMk9mMy1Ob0tleVBhdGgnKTtcbmRlc2NyaWJlV2l0aFRlbXBsYXRlcygnVHIyT2YzLU5vS2V5UGF0aCcsICdUcjJPZjMtTm9LZXlQYXRoJyk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"psbt.d.ts","sourceRoot":"","sources":["../../../../../test/descriptor/psbt/psbt.ts"],"names":[],"mappings":""}
|