@bitgo-beta/utxo-core 1.0.1-alpha.2 → 1.0.1-alpha.200
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 +43 -0
- 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 +125 -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 +113 -0
- package/dist/cjs/src/bip32utils.d.ts +12 -0
- package/dist/cjs/src/bip32utils.d.ts.map +1 -0
- package/dist/cjs/src/bip32utils.js +15 -0
- package/dist/cjs/src/bip65/index.d.ts +2 -0
- package/dist/cjs/src/bip65/index.d.ts.map +1 -0
- package/dist/{src/testutil → cjs/src/bip65}/index.js +2 -4
- package/dist/cjs/src/bip65/locktime.d.ts +8 -0
- 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/cjs/src/descriptor/Output.d.ts +23 -0
- 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 +3 -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 +2 -2
- package/dist/cjs/src/descriptor/address.d.ts.map +1 -0
- package/dist/{src → cjs/src}/descriptor/address.js +2 -2
- package/dist/cjs/src/descriptor/derive.d.ts +13 -0
- package/dist/cjs/src/descriptor/derive.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/derive.js +45 -0
- package/dist/cjs/src/descriptor/fromFixedScriptWallet.d.ts +16 -0
- package/dist/cjs/src/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/fromFixedScriptWallet.js +88 -0
- package/dist/cjs/src/descriptor/index.d.ts +11 -0
- package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/index.js +27 -0
- 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/cjs/src/descriptor/psbt/createPsbt.d.ts +23 -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 +7 -3
- package/dist/cjs/src/descriptor/psbt/findDescriptors.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/findDescriptors.js +98 -0
- package/dist/{src → cjs/src}/descriptor/psbt/index.d.ts +1 -0
- package/dist/cjs/src/descriptor/psbt/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/descriptor/psbt/index.js +2 -1
- package/dist/{src → cjs/src}/descriptor/psbt/parse.d.ts +2 -2
- package/dist/cjs/src/descriptor/psbt/parse.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/parse.js +87 -0
- package/dist/cjs/src/descriptor/psbt/sign.d.ts +26 -0
- 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 +4 -0
- package/dist/cjs/src/dustThreshold.d.ts.map +1 -0
- package/dist/cjs/src/dustThreshold.js +134 -0
- package/dist/cjs/src/index.d.ts +10 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/index.js +12 -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/cjs/src/paygo/parsePayGoAttestation.d.ts +16 -0
- 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/cjs/src/paygo/psbt/index.js +18 -0
- 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 +5 -2
- 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 +6 -4
- 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/cjs/src/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
- package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.js +38 -0
- package/dist/cjs/src/testutil/index.d.ts +6 -0
- package/dist/cjs/src/testutil/index.d.ts.map +1 -0
- package/dist/cjs/src/testutil/index.js +22 -0
- 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 +2 -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.d.ts.map +1 -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 +119 -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 +74 -0
- package/dist/esm/bip32utils.d.ts +12 -0
- package/dist/esm/bip32utils.d.ts.map +1 -0
- package/dist/esm/bip32utils.js +12 -0
- package/dist/esm/bip65/index.d.ts +2 -0
- package/dist/esm/bip65/index.d.ts.map +1 -0
- package/dist/esm/bip65/index.js +2 -0
- package/dist/esm/bip65/locktime.d.ts +8 -0
- package/dist/esm/bip65/locktime.d.ts.map +1 -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/esm/descriptor/Output.d.ts.map +1 -0
- package/dist/esm/descriptor/Output.js +32 -0
- package/dist/esm/descriptor/VirtualSize.d.ts +23 -0
- package/dist/esm/descriptor/VirtualSize.d.ts.map +1 -0
- package/dist/esm/descriptor/VirtualSize.js +94 -0
- package/dist/esm/descriptor/address.d.ts +5 -0
- package/dist/esm/descriptor/address.d.ts.map +1 -0
- package/dist/esm/descriptor/address.js +11 -0
- package/dist/esm/descriptor/derive.d.ts +13 -0
- package/dist/esm/descriptor/derive.d.ts.map +1 -0
- package/dist/esm/descriptor/derive.js +38 -0
- package/dist/esm/descriptor/fromFixedScriptWallet.d.ts +16 -0
- package/dist/esm/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
- package/dist/esm/descriptor/fromFixedScriptWallet.js +51 -0
- package/dist/esm/descriptor/index.d.ts +11 -0
- package/dist/esm/descriptor/index.d.ts.map +1 -0
- 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/esm/descriptor/psbt/findDescriptors.d.ts.map +1 -0
- package/dist/esm/descriptor/psbt/findDescriptors.js +94 -0
- package/dist/esm/descriptor/psbt/index.d.ts +7 -0
- package/dist/{src → esm}/descriptor/psbt/index.d.ts.map +1 -1
- package/dist/esm/descriptor/psbt/index.js +7 -0
- package/dist/esm/descriptor/psbt/parse.d.ts +27 -0
- package/dist/esm/descriptor/psbt/parse.d.ts.map +1 -0
- 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.d.ts.map +1 -0
- package/dist/esm/dustThreshold.js +97 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.d.ts.map +1 -0
- 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.d.ts.map +1 -0
- package/dist/esm/xOnlyPubkey.js +15 -0
- package/package.json +51 -22
- package/dist/src/descriptor/DescriptorMap.js +0 -12
- package/dist/src/descriptor/Output.d.ts +0 -24
- package/dist/src/descriptor/Output.d.ts.map +0 -1
- package/dist/src/descriptor/Output.js +0 -22
- package/dist/src/descriptor/VirtualSize.d.ts.map +0 -1
- package/dist/src/descriptor/VirtualSize.js +0 -87
- package/dist/src/descriptor/address.d.ts.map +0 -1
- package/dist/src/descriptor/index.d.ts +0 -9
- package/dist/src/descriptor/index.d.ts.map +0 -1
- package/dist/src/descriptor/index.js +0 -49
- package/dist/src/descriptor/psbt/assertSatisfiable.js +0 -74
- package/dist/src/descriptor/psbt/createPsbt.d.ts +0 -15
- 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.d.ts.map +0 -1
- package/dist/src/descriptor/psbt/findDescriptors.js +0 -85
- package/dist/src/descriptor/psbt/parse.d.ts.map +0 -1
- package/dist/src/descriptor/psbt/parse.js +0 -87
- package/dist/src/descriptor/psbt/wrap.js +0 -76
- package/dist/src/index.d.ts +0 -3
- package/dist/src/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 -105
- package/dist/src/testutil/descriptor/mock.utils.d.ts.map +0 -1
- package/dist/src/testutil/descriptor/mock.utils.js +0 -87
- package/dist/src/testutil/descriptor/psbt.utils.js +0 -20
- package/dist/src/testutil/index.d.ts +0 -4
- package/dist/src/testutil/key.utils.js +0 -59
- package/dist/src/testutil/toPlainObject.utils.js +0 -75
- /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 → esm}/testutil/descriptor/index.d.ts.map +0 -0
- /package/dist/{src → esm}/testutil/fixtures.utils.d.ts.map +0 -0
|
@@ -0,0 +1,62 @@
|
|
|
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 crypto = __importStar(require("crypto"));
|
|
37
|
+
const assert = __importStar(require("assert"));
|
|
38
|
+
const secp256k1_1 = require("@bitgo-beta/secp256k1");
|
|
39
|
+
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
40
|
+
const bip32utils_1 = require("../src/bip32utils");
|
|
41
|
+
describe('bip32utils', function () {
|
|
42
|
+
function getSeedBuffers(length) {
|
|
43
|
+
return Array.from({ length }).map((_, i) => crypto.createHash('sha256').update(`${i}`).digest());
|
|
44
|
+
}
|
|
45
|
+
it('signMessage/verifyMessage', function () {
|
|
46
|
+
const keys = getSeedBuffers(4).map((seed) => secp256k1_1.bip32.fromSeed(seed));
|
|
47
|
+
const messages = ['hello', 'goodbye', Buffer.from('\x01\x02\x03'), Buffer.from('')];
|
|
48
|
+
keys.forEach((key) => {
|
|
49
|
+
messages.forEach((message) => {
|
|
50
|
+
const signature = (0, bip32utils_1.signMessage)(message, key, utxolib.networks.bitcoin);
|
|
51
|
+
keys.forEach((otherKey) => {
|
|
52
|
+
messages.forEach((otherMessage) => {
|
|
53
|
+
const expectValid = message === otherMessage && key === otherKey;
|
|
54
|
+
assert.strictEqual((0, bip32utils_1.verifyMessage)(otherMessage, otherKey, signature, utxolib.networks.bitcoin), expectValid);
|
|
55
|
+
assert.strictEqual((0, bip32utils_1.verifyMessage)(Buffer.from(otherMessage), otherKey, signature, utxolib.networks.bitcoin), expectValid);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlwMzJ1dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvYmlwMzJ1dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQywrQ0FBaUM7QUFFakMscURBQThDO0FBQzlDLDhEQUFnRDtBQUVoRCxrREFBK0Q7QUFFL0QsUUFBUSxDQUFDLFlBQVksRUFBRTtJQUNyQixTQUFTLGNBQWMsQ0FBQyxNQUFjO1FBQ3BDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUNELEVBQUUsQ0FBQywyQkFBMkIsRUFBRTtRQUM5QixNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxpQkFBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbkIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFBLHdCQUFXLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUV0RSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ3hCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTt3QkFDaEMsTUFBTSxXQUFXLEdBQUcsT0FBTyxLQUFLLFlBQVksSUFBSSxHQUFHLEtBQUssUUFBUSxDQUFDO3dCQUNqRSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsMEJBQWEsRUFBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO3dCQUM1RyxNQUFNLENBQUMsV0FBVyxDQUNoQixJQUFBLDBCQUFhLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQ3ZGLFdBQVcsQ0FDWixDQUFDO29CQUNKLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBiaXAzMiB9IGZyb20gJ0BiaXRnby1iZXRhL3NlY3AyNTZrMSc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgc2lnbk1lc3NhZ2UsIHZlcmlmeU1lc3NhZ2UgfSBmcm9tICcuLi9zcmMvYmlwMzJ1dGlscyc7XG5cbmRlc2NyaWJlKCdiaXAzMnV0aWxzJywgZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBnZXRTZWVkQnVmZmVycyhsZW5ndGg6IG51bWJlcikge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoIH0pLm1hcCgoXywgaSkgPT4gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShgJHtpfWApLmRpZ2VzdCgpKTtcbiAgfVxuICBpdCgnc2lnbk1lc3NhZ2UvdmVyaWZ5TWVzc2FnZScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBrZXlzID0gZ2V0U2VlZEJ1ZmZlcnMoNCkubWFwKChzZWVkKSA9PiBiaXAzMi5mcm9tU2VlZChzZWVkKSk7XG4gICAgY29uc3QgbWVzc2FnZXMgPSBbJ2hlbGxvJywgJ2dvb2RieWUnLCBCdWZmZXIuZnJvbSgnXFx4MDFcXHgwMlxceDAzJyksIEJ1ZmZlci5mcm9tKCcnKV07XG4gICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIG1lc3NhZ2VzLmZvckVhY2goKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gc2lnbk1lc3NhZ2UobWVzc2FnZSwga2V5LCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pO1xuXG4gICAgICAgIGtleXMuZm9yRWFjaCgob3RoZXJLZXkpID0+IHtcbiAgICAgICAgICBtZXNzYWdlcy5mb3JFYWNoKChvdGhlck1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4cGVjdFZhbGlkID0gbWVzc2FnZSA9PT0gb3RoZXJNZXNzYWdlICYmIGtleSA9PT0gb3RoZXJLZXk7XG4gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmVyaWZ5TWVzc2FnZShvdGhlck1lc3NhZ2UsIG90aGVyS2V5LCBzaWduYXR1cmUsIHV0eG9saWIubmV0d29ya3MuYml0Y29pbiksIGV4cGVjdFZhbGlkKTtcbiAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgICAgICAgICAgdmVyaWZ5TWVzc2FnZShCdWZmZXIuZnJvbShvdGhlck1lc3NhZ2UpLCBvdGhlcktleSwgc2lnbmF0dXJlLCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pLFxuICAgICAgICAgICAgICBleHBlY3RWYWxpZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locktime.d.ts","sourceRoot":"","sources":["../../../../test/bip65/locktime.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
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 locktime_1 = require("../../src/bip65/locktime");
|
|
8
|
+
describe('locktime', function () {
|
|
9
|
+
it('encodes relative and absolute locktimes', function () {
|
|
10
|
+
assert_1.default.strictEqual((0, locktime_1.encodeLocktime)({ blocks: 1 }), 1);
|
|
11
|
+
assert_1.default.strictEqual((0, locktime_1.encodeLocktime)({ blocks: 500000000 - 1 }), 500000000 - 1);
|
|
12
|
+
assert_1.default.strictEqual((0, locktime_1.encodeLocktime)(new Date('1985-11-05T00:53:20Z')), 500000000);
|
|
13
|
+
assert_1.default.strictEqual((0, locktime_1.encodeLocktime)(new Date('2033-05-18T03:33:20.000Z')), 2000000000);
|
|
14
|
+
assert_1.default.throws(() => {
|
|
15
|
+
(0, locktime_1.encodeLocktime)({ blocks: 500000000 });
|
|
16
|
+
});
|
|
17
|
+
assert_1.default.throws(() => {
|
|
18
|
+
(0, locktime_1.encodeLocktime)(new Date('1985-11-05T00:53:19Z'));
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ja3RpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L2JpcDY1L2xvY2t0aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLHVEQUEwRDtBQUUxRCxRQUFRLENBQUMsVUFBVSxFQUFFO0lBQ25CLEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRTtRQUM1QyxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLHlCQUFjLEVBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLHlCQUFjLEVBQUMsRUFBRSxNQUFNLEVBQUUsU0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLGdCQUFNLENBQUMsV0FBVyxDQUFDLElBQUEseUJBQWMsRUFBQyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsU0FBVyxDQUFDLENBQUM7UUFDbEYsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsSUFBQSx5QkFBYyxFQUFDLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsRUFBRSxVQUFhLENBQUMsQ0FBQztRQUN4RixnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBQSx5QkFBYyxFQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVcsRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBQSx5QkFBYyxFQUFDLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IGVuY29kZUxvY2t0aW1lIH0gZnJvbSAnLi4vLi4vc3JjL2JpcDY1L2xvY2t0aW1lJztcblxuZGVzY3JpYmUoJ2xvY2t0aW1lJywgZnVuY3Rpb24gKCkge1xuICBpdCgnZW5jb2RlcyByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgbG9ja3RpbWVzJywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbmNvZGVMb2NrdGltZSh7IGJsb2NrczogMSB9KSwgMSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGVuY29kZUxvY2t0aW1lKHsgYmxvY2tzOiA1MDBfMDAwXzAwMCAtIDEgfSksIDUwMF8wMDBfMDAwIC0gMSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGVuY29kZUxvY2t0aW1lKG5ldyBEYXRlKCcxOTg1LTExLTA1VDAwOjUzOjIwWicpKSwgNTAwXzAwMF8wMDApO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbmNvZGVMb2NrdGltZShuZXcgRGF0ZSgnMjAzMy0wNS0xOFQwMzozMzoyMC4wMDBaJykpLCAyXzAwMF8wMDBfMDAwKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgIGVuY29kZUxvY2t0aW1lKHsgYmxvY2tzOiA1MDBfMDAwXzAwMCB9KTtcbiAgICB9KTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgIGVuY29kZUxvY2t0aW1lKG5ldyBEYXRlKCcxOTg1LTExLTA1VDAwOjUzOjE5WicpKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Output.d.ts","sourceRoot":"","sources":["../../../../test/descriptor/Output.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,44 @@
|
|
|
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 Output_1 = require("../../src/descriptor/Output");
|
|
8
|
+
const descriptor_1 = require("../../src/testutil/descriptor");
|
|
9
|
+
const descriptor_2 = require("../../src/descriptor");
|
|
10
|
+
describe('decscriptor.Output', function () {
|
|
11
|
+
const descriptor = (0, descriptor_1.getDescriptor)('Wsh2Of3');
|
|
12
|
+
it('isInternalOutput correctly identifies internal outputs', function () {
|
|
13
|
+
const internalOutput = { value: 1n, descriptor };
|
|
14
|
+
const externalOutput = { value: 1n };
|
|
15
|
+
assert_1.default.strictEqual((0, Output_1.isInternalOutput)(internalOutput), true);
|
|
16
|
+
assert_1.default.strictEqual((0, Output_1.isInternalOutput)(externalOutput), false);
|
|
17
|
+
});
|
|
18
|
+
it('isExternalOutput correctly identifies external outputs', function () {
|
|
19
|
+
const internalOutput = { value: 1n, descriptor };
|
|
20
|
+
const externalOutput = { value: 1n };
|
|
21
|
+
assert_1.default.strictEqual((0, Output_1.isExternalOutput)(internalOutput), false);
|
|
22
|
+
assert_1.default.strictEqual((0, Output_1.isExternalOutput)(externalOutput), true);
|
|
23
|
+
});
|
|
24
|
+
it('toDerivedDescriptorWalletOutput returns expected values', function () {
|
|
25
|
+
const derivable = descriptor;
|
|
26
|
+
const definite = derivable.atDerivationIndex(0);
|
|
27
|
+
for (const descriptor of [derivable, definite]) {
|
|
28
|
+
const descriptorIndex = descriptor === derivable ? 0 : undefined;
|
|
29
|
+
const descriptorMap = new Map([['desc', descriptor]]);
|
|
30
|
+
const descriptorWalletOutput = {
|
|
31
|
+
hash: Buffer.alloc(32).toString('hex'),
|
|
32
|
+
index: 0,
|
|
33
|
+
witnessUtxo: {
|
|
34
|
+
script: (0, descriptor_2.createScriptPubKeyFromDescriptor)(descriptor, descriptorIndex),
|
|
35
|
+
value: 1n,
|
|
36
|
+
},
|
|
37
|
+
descriptorName: 'desc',
|
|
38
|
+
descriptorIndex,
|
|
39
|
+
};
|
|
40
|
+
assert_1.default.strictEqual((0, Output_1.toDerivedDescriptorWalletOutput)(descriptorWalletOutput, descriptorMap).descriptor.toString(), definite.toString());
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC9kZXNjcmlwdG9yL091dHB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUU1Qix3REFBa0g7QUFDbEgsOERBQThEO0FBQzlELHFEQUF3RTtBQUV4RSxRQUFRLENBQUMsb0JBQW9CLEVBQUU7SUFDN0IsTUFBTSxVQUFVLEdBQUcsSUFBQSwwQkFBYSxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTVDLEVBQUUsQ0FBQyx3REFBd0QsRUFBRTtRQUMzRCxNQUFNLGNBQWMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDakQsTUFBTSxjQUFjLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFFckMsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsSUFBQSx5QkFBZ0IsRUFBQyxjQUFjLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLHlCQUFnQixFQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHdEQUF3RCxFQUFFO1FBQzNELE1BQU0sY0FBYyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUNqRCxNQUFNLGNBQWMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUVyQyxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLHlCQUFnQixFQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVELGdCQUFNLENBQUMsV0FBVyxDQUFDLElBQUEseUJBQWdCLEVBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMseURBQXlELEVBQUU7UUFDNUQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDO1FBQzdCLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxLQUFLLE1BQU0sVUFBVSxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDL0MsTUFBTSxlQUFlLEdBQUcsVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDakUsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsTUFBTSxzQkFBc0IsR0FBRztnQkFDN0IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDdEMsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsV0FBVyxFQUFFO29CQUNYLE1BQU0sRUFBRSxJQUFBLDZDQUFnQyxFQUFDLFVBQVUsRUFBRSxlQUFlLENBQUM7b0JBQ3JFLEtBQUssRUFBRSxFQUFFO2lCQUNWO2dCQUNELGNBQWMsRUFBRSxNQUFNO2dCQUN0QixlQUFlO2FBQ2hCLENBQUM7WUFDRixnQkFBTSxDQUFDLFdBQVcsQ0FDaEIsSUFBQSx3Q0FBK0IsRUFBQyxzQkFBc0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQzVGLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FDcEIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBpc0V4dGVybmFsT3V0cHV0LCBpc0ludGVybmFsT3V0cHV0LCB0b0Rlcml2ZWREZXNjcmlwdG9yV2FsbGV0T3V0cHV0IH0gZnJvbSAnLi4vLi4vc3JjL2Rlc2NyaXB0b3IvT3V0cHV0JztcbmltcG9ydCB7IGdldERlc2NyaXB0b3IgfSBmcm9tICcuLi8uLi9zcmMvdGVzdHV0aWwvZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBjcmVhdGVTY3JpcHRQdWJLZXlGcm9tRGVzY3JpcHRvciB9IGZyb20gJy4uLy4uL3NyYy9kZXNjcmlwdG9yJztcblxuZGVzY3JpYmUoJ2RlY3NjcmlwdG9yLk91dHB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZGVzY3JpcHRvciA9IGdldERlc2NyaXB0b3IoJ1dzaDJPZjMnKTtcblxuICBpdCgnaXNJbnRlcm5hbE91dHB1dCBjb3JyZWN0bHkgaWRlbnRpZmllcyBpbnRlcm5hbCBvdXRwdXRzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGludGVybmFsT3V0cHV0ID0geyB2YWx1ZTogMW4sIGRlc2NyaXB0b3IgfTtcbiAgICBjb25zdCBleHRlcm5hbE91dHB1dCA9IHsgdmFsdWU6IDFuIH07XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNJbnRlcm5hbE91dHB1dChpbnRlcm5hbE91dHB1dCksIHRydWUpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc0ludGVybmFsT3V0cHV0KGV4dGVybmFsT3V0cHV0KSwgZmFsc2UpO1xuICB9KTtcblxuICBpdCgnaXNFeHRlcm5hbE91dHB1dCBjb3JyZWN0bHkgaWRlbnRpZmllcyBleHRlcm5hbCBvdXRwdXRzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGludGVybmFsT3V0cHV0ID0geyB2YWx1ZTogMW4sIGRlc2NyaXB0b3IgfTtcbiAgICBjb25zdCBleHRlcm5hbE91dHB1dCA9IHsgdmFsdWU6IDFuIH07XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNFeHRlcm5hbE91dHB1dChpbnRlcm5hbE91dHB1dCksIGZhbHNlKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNFeHRlcm5hbE91dHB1dChleHRlcm5hbE91dHB1dCksIHRydWUpO1xuICB9KTtcblxuICBpdCgndG9EZXJpdmVkRGVzY3JpcHRvcldhbGxldE91dHB1dCByZXR1cm5zIGV4cGVjdGVkIHZhbHVlcycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkZXJpdmFibGUgPSBkZXNjcmlwdG9yO1xuICAgIGNvbnN0IGRlZmluaXRlID0gZGVyaXZhYmxlLmF0RGVyaXZhdGlvbkluZGV4KDApO1xuICAgIGZvciAoY29uc3QgZGVzY3JpcHRvciBvZiBbZGVyaXZhYmxlLCBkZWZpbml0ZV0pIHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3JJbmRleCA9IGRlc2NyaXB0b3IgPT09IGRlcml2YWJsZSA/IDAgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBkZXNjcmlwdG9yTWFwID0gbmV3IE1hcChbWydkZXNjJywgZGVzY3JpcHRvcl1dKTtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3JXYWxsZXRPdXRwdXQgPSB7XG4gICAgICAgIGhhc2g6IEJ1ZmZlci5hbGxvYygzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBpbmRleDogMCxcbiAgICAgICAgd2l0bmVzc1V0eG86IHtcbiAgICAgICAgICBzY3JpcHQ6IGNyZWF0ZVNjcmlwdFB1YktleUZyb21EZXNjcmlwdG9yKGRlc2NyaXB0b3IsIGRlc2NyaXB0b3JJbmRleCksXG4gICAgICAgICAgdmFsdWU6IDFuLFxuICAgICAgICB9LFxuICAgICAgICBkZXNjcmlwdG9yTmFtZTogJ2Rlc2MnLFxuICAgICAgICBkZXNjcmlwdG9ySW5kZXgsXG4gICAgICB9O1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgICB0b0Rlcml2ZWREZXNjcmlwdG9yV2FsbGV0T3V0cHV0KGRlc2NyaXB0b3JXYWxsZXRPdXRwdXQsIGRlc2NyaXB0b3JNYXApLmRlc2NyaXB0b3IudG9TdHJpbmcoKSxcbiAgICAgICAgZGVmaW5pdGUudG9TdHJpbmcoKVxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../../../test/descriptor/derive.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
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 descriptor_1 = require("../../src/testutil/descriptor");
|
|
8
|
+
const derive_1 = require("../../src/descriptor/derive");
|
|
9
|
+
describe('derive', function () {
|
|
10
|
+
const derivable = (0, descriptor_1.getDescriptor)('Wsh2Of3');
|
|
11
|
+
const definite = derivable.atDerivationIndex(0);
|
|
12
|
+
it('getDescriptorAtIndex', function () {
|
|
13
|
+
(0, assert_1.default)(derivable.hasWildcard());
|
|
14
|
+
(0, assert_1.default)(!definite.hasWildcard());
|
|
15
|
+
assert_1.default.strictEqual((0, derive_1.getDescriptorAtIndex)(derivable, 0).toString(), definite.toString());
|
|
16
|
+
assert_1.default.strictEqual((0, derive_1.getDescriptorAtIndex)(definite, undefined).toString(), definite.toString());
|
|
17
|
+
assert_1.default.throws(() => (0, derive_1.getDescriptorAtIndex)(derivable, undefined), /Derivable descriptor requires an index/);
|
|
18
|
+
assert_1.default.throws(() => (0, derive_1.getDescriptorAtIndex)(definite, 0), /Definite descriptor cannot be derived with index/);
|
|
19
|
+
});
|
|
20
|
+
it('getDescriptorAtIndexCheckScript', function () {
|
|
21
|
+
const script0 = Buffer.from(derivable.atDerivationIndex(0).scriptPubkey());
|
|
22
|
+
const script1 = Buffer.from(derivable.atDerivationIndex(1).scriptPubkey());
|
|
23
|
+
assert_1.default.strictEqual((0, derive_1.getDescriptorAtIndexCheckScript)(derivable, 0, script0).toString(), definite.toString());
|
|
24
|
+
assert_1.default.throws(() => (0, derive_1.getDescriptorAtIndexCheckScript)(derivable, 0, script1), /Script mismatch/);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyaXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC9kZXNjcmlwdG9yL2Rlcml2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUU1Qiw4REFBOEQ7QUFDOUQsd0RBQW9HO0FBRXBHLFFBQVEsQ0FBQyxRQUFRLEVBQUU7SUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBQSwwQkFBYSxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVoRCxFQUFFLENBQUMsc0JBQXNCLEVBQUU7UUFDekIsSUFBQSxnQkFBTSxFQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUEsZ0JBQU0sRUFBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLGdCQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsNkJBQW9CLEVBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLGdCQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsNkJBQW9CLEVBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEsNkJBQW9CLEVBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxFQUFFLHdDQUF3QyxDQUFDLENBQUM7UUFDMUcsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSw2QkFBb0IsRUFBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsa0RBQWtELENBQUMsQ0FBQztJQUM3RyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRTtRQUNwQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDM0UsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsSUFBQSx3Q0FBK0IsRUFBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzNHLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEsd0NBQStCLEVBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2pHLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IGdldERlc2NyaXB0b3IgfSBmcm9tICcuLi8uLi9zcmMvdGVzdHV0aWwvZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBnZXREZXNjcmlwdG9yQXRJbmRleCwgZ2V0RGVzY3JpcHRvckF0SW5kZXhDaGVja1NjcmlwdCB9IGZyb20gJy4uLy4uL3NyYy9kZXNjcmlwdG9yL2Rlcml2ZSc7XG5cbmRlc2NyaWJlKCdkZXJpdmUnLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGRlcml2YWJsZSA9IGdldERlc2NyaXB0b3IoJ1dzaDJPZjMnKTtcbiAgY29uc3QgZGVmaW5pdGUgPSBkZXJpdmFibGUuYXREZXJpdmF0aW9uSW5kZXgoMCk7XG5cbiAgaXQoJ2dldERlc2NyaXB0b3JBdEluZGV4JywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydChkZXJpdmFibGUuaGFzV2lsZGNhcmQoKSk7XG4gICAgYXNzZXJ0KCFkZWZpbml0ZS5oYXNXaWxkY2FyZCgpKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ2V0RGVzY3JpcHRvckF0SW5kZXgoZGVyaXZhYmxlLCAwKS50b1N0cmluZygpLCBkZWZpbml0ZS50b1N0cmluZygpKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ2V0RGVzY3JpcHRvckF0SW5kZXgoZGVmaW5pdGUsIHVuZGVmaW5lZCkudG9TdHJpbmcoKSwgZGVmaW5pdGUudG9TdHJpbmcoKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBnZXREZXNjcmlwdG9yQXRJbmRleChkZXJpdmFibGUsIHVuZGVmaW5lZCksIC9EZXJpdmFibGUgZGVzY3JpcHRvciByZXF1aXJlcyBhbiBpbmRleC8pO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gZ2V0RGVzY3JpcHRvckF0SW5kZXgoZGVmaW5pdGUsIDApLCAvRGVmaW5pdGUgZGVzY3JpcHRvciBjYW5ub3QgYmUgZGVyaXZlZCB3aXRoIGluZGV4Lyk7XG4gIH0pO1xuXG4gIGl0KCdnZXREZXNjcmlwdG9yQXRJbmRleENoZWNrU2NyaXB0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNjcmlwdDAgPSBCdWZmZXIuZnJvbShkZXJpdmFibGUuYXREZXJpdmF0aW9uSW5kZXgoMCkuc2NyaXB0UHVia2V5KCkpO1xuICAgIGNvbnN0IHNjcmlwdDEgPSBCdWZmZXIuZnJvbShkZXJpdmFibGUuYXREZXJpdmF0aW9uSW5kZXgoMSkuc2NyaXB0UHVia2V5KCkpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXREZXNjcmlwdG9yQXRJbmRleENoZWNrU2NyaXB0KGRlcml2YWJsZSwgMCwgc2NyaXB0MCkudG9TdHJpbmcoKSwgZGVmaW5pdGUudG9TdHJpbmcoKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBnZXREZXNjcmlwdG9yQXRJbmRleENoZWNrU2NyaXB0KGRlcml2YWJsZSwgMCwgc2NyaXB0MSksIC9TY3JpcHQgbWlzbWF0Y2gvKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fromFixedScriptWallet.d.ts","sourceRoot":"","sources":["../../../../test/descriptor/fromFixedScriptWallet.ts"],"names":[],"mappings":""}
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0dGVybk1hdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L2Rlc2NyaXB0b3IvcGFyc2UvUGF0dGVybk1hdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsZ0RBQW1EO0FBRW5ELG9EQUErQztBQUMvQyxzQ0FBZ0Q7QUFDaEQsaUZBQXVGO0FBRXZGLFNBQVMsS0FBSyxDQUFDLElBQVk7SUFDekIscUNBQXFDO0lBQ3JDLE9BQU8sSUFBQSxzQkFBZ0IsRUFBQyxJQUFBLGlCQUFNLEVBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUVELFNBQVMsaUJBQWlCO0lBQ3hCLE9BQU8sa0VBQWtFLENBQUM7QUFDNUUsQ0FBQztBQUVELFNBQVMsRUFBRSxDQUFDLENBQVM7SUFDbkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDdkMsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQWM7SUFDaEMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxTQUFpQixFQUFFLElBQWM7SUFDbEQsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLENBQWtCO0lBQ2xELE9BQU8sc0JBQVUsQ0FBQyxVQUFVLENBQUMsZUFBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzdGLENBQUM7QUFFRCxNQUFNLHdCQUF3QjtJQUM1QixZQUNTLE9BQWUsRUFDZixZQUFzQixFQUN0QixZQUFzQixFQUN0QixpQkFBeUIsRUFDekIsZUFBdUI7UUFKdkIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQUN6QixvQkFBZSxHQUFmLGVBQWUsQ0FBUTtJQUM3QixDQUFDO0lBRUoseUJBQXlCO1FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEUsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMxRyxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLE9BQU87WUFDTCxLQUFLLEVBQUU7Z0JBQ0w7b0JBQ0UsS0FBSyxFQUFFO3dCQUNMLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDOzRCQUM1QixDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7NEJBQ2xELENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtxQkFDckQ7aUJBQ0Y7Z0JBQ0QsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7YUFDbEU7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLHdCQUF3QixDQUFDO1lBQzlCLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUMvQixDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxFQUFFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1NBQ3ZFLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELDJDQUEyQztBQUMzQyxTQUFTLHNCQUFzQixDQUFDLFVBQXNCO0lBS3BELE1BQU0sT0FBTyxHQUFZO1FBQ3ZCLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQzdHLENBQUM7SUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUFjLEVBQUUsQ0FBQztJQUNyQyxNQUFNLGNBQWMsR0FBRyxlQUFHLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXRELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU87UUFDTCxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQWlDO1FBQ3JELGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBb0M7UUFDM0QsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFrQztLQUN4RCxDQUFDO0FBQ0osQ0FBQztBQUVELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtJQUN6QixFQUFFLENBQUMsMkJBQTJCLEVBQUU7UUFDOUIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2pELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSwrQkFBYyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN2RCxnQkFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRTtRQUN2QyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDakQsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLCtCQUFjLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELGdCQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRTtRQUNuQyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUN2RCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksK0JBQWMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkQsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNENBQTRDLEVBQUU7UUFDL0MsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksR0FBRyxJQUFJLCtCQUFjLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELGdCQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRTtRQUNwQyxNQUFNLE9BQU8sR0FBRyxJQUFJLHdCQUF3QixDQUMxQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQ2IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDcEIsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ3hDLENBQUMsRUFDRCxHQUFHLENBQ0osQ0FBQztRQUVGLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2xELE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxELGdCQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLGdCQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQztZQUNyRixnQkFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUM7UUFDbkYsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IERlc2NyaXB0b3IsIGFzdCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBnZXRLZXkgfSBmcm9tICcuLi8uLi8uLi9zcmMvdGVzdHV0aWwnO1xuaW1wb3J0IHsgdG9YT25seVB1YmxpY0tleSB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBQYXR0ZXJuTWF0Y2hlciwgUGF0dGVybiB9IGZyb20gJy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL3BhcnNlL1BhdHRlcm5NYXRjaGVyJztcblxuZnVuY3Rpb24ga2V5MzIoc2VlZDogc3RyaW5nKTogQnVmZmVyIHtcbiAgLy8gcmV0dXJuIHgtb25seSBwdWJsaWMga2V5IGZyb20gc2VlZFxuICByZXR1cm4gdG9YT25seVB1YmxpY0tleShnZXRLZXkoc2VlZCkucHVibGljS2V5KTtcbn1cblxuZnVuY3Rpb24gZ2V0VW5zcGVuZGFibGVLZXkoKTogc3RyaW5nIHtcbiAgcmV0dXJuICc1MDkyOWI3NGMxYTA0OTU0Yjc4YjRiNjAzNWU5N2E1ZTA3OGE1YTBmMjhlYzk2ZDU0N2JmZWU5YWNlODAzYWMwJztcbn1cblxuZnVuY3Rpb24gcGsoYjogQnVmZmVyKTogYXN0Lk1pbmlzY3JpcHROb2RlIHtcbiAgcmV0dXJuIHsgJ3Y6cGsnOiBiLnRvU3RyaW5nKCdoZXgnKSB9O1xufVxuXG5mdW5jdGlvbiBzb3J0ZWRLZXlzKGtleXM6IEJ1ZmZlcltdKTogQnVmZmVyW10ge1xuICByZXR1cm4gWy4uLmtleXNdLnNvcnQoKGEsIGIpID0+IGEuY29tcGFyZShiKSk7XG59XG5cbmZ1bmN0aW9uIG11bHRpQXJncyh0aHJlc2hvbGQ6IG51bWJlciwga2V5czogQnVmZmVyW10pOiBbbnVtYmVyLCAuLi5zdHJpbmdbXV0ge1xuICByZXR1cm4gW3RocmVzaG9sZCwgLi4uc29ydGVkS2V5cyhrZXlzKS5tYXAoKGspID0+IGsudG9TdHJpbmcoJ2hleCcpKV07XG59XG5cbmZ1bmN0aW9uIHRhcHJvb3RTY3JpcHRPbmx5RnJvbUFzdChuOiBhc3QuVGFwVHJlZU5vZGUpOiBEZXNjcmlwdG9yIHtcbiAgcmV0dXJuIERlc2NyaXB0b3IuZnJvbVN0cmluZyhhc3QuZm9ybWF0Tm9kZSh7IHRyOiBbZ2V0VW5zcGVuZGFibGVLZXkoKSwgbl0gfSksICdkZWZpbml0ZScpO1xufVxuXG5jbGFzcyBTdGFraW5nRGVzY3JpcHRvckJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdXNlcktleTogQnVmZmVyLFxuICAgIHB1YmxpYyBwcm92aWRlcktleXM6IEJ1ZmZlcltdLFxuICAgIHB1YmxpYyBndWFyZGlhbktleXM6IEJ1ZmZlcltdLFxuICAgIHB1YmxpYyBndWFyZGlhblRocmVzaG9sZDogbnVtYmVyLFxuICAgIHB1YmxpYyBzdGFraW5nVGltZUxvY2s6IG51bWJlclxuICApIHt9XG5cbiAgZ2V0VGltZWxvY2tNaW5pc2NyaXB0Tm9kZSgpOiBhc3QuTWluaXNjcmlwdE5vZGUge1xuICAgIHJldHVybiB7IGFuZF92OiBbcGsodGhpcy51c2VyS2V5KSwgeyBvbGRlcjogdGhpcy5zdGFraW5nVGltZUxvY2sgfV0gfTtcbiAgfVxuXG4gIGdldFdpdGhkcmF3YWxNaW5pc2NyaXB0Tm9kZSgpOiBhc3QuTWluaXNjcmlwdE5vZGUge1xuICAgIHJldHVybiB7IGFuZF92OiBbcGsodGhpcy51c2VyS2V5KSwgeyBtdWx0aV9hOiBtdWx0aUFyZ3ModGhpcy5ndWFyZGlhblRocmVzaG9sZCwgdGhpcy5ndWFyZGlhbktleXMpIH1dIH07XG4gIH1cblxuICBnZXRQZW5hbHR5TWluaXNjcmlwdE5vZGUoKTogYXN0Lk1pbmlzY3JpcHROb2RlIHtcbiAgICByZXR1cm4ge1xuICAgICAgYW5kX3Y6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFuZF92OiBbXG4gICAgICAgICAgICBwayh0aGlzLnVzZXJLZXkpLFxuICAgICAgICAgICAgdGhpcy5wcm92aWRlcktleXMubGVuZ3RoID09PSAxXG4gICAgICAgICAgICAgID8geyAndjpwayc6IHRoaXMucHJvdmlkZXJLZXlzWzBdLnRvU3RyaW5nKCdoZXgnKSB9XG4gICAgICAgICAgICAgIDogeyAndjptdWx0aV9hJzogbXVsdGlBcmdzKDEsIHRoaXMucHJvdmlkZXJLZXlzKSB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHsgbXVsdGlfYTogbXVsdGlBcmdzKHRoaXMuZ3VhcmRpYW5UaHJlc2hvbGQsIHRoaXMuZ3VhcmRpYW5LZXlzKSB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U3Rha2luZ0Rlc2NyaXB0b3IoKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIHRhcHJvb3RTY3JpcHRPbmx5RnJvbUFzdChbXG4gICAgICB0aGlzLmdldFBlbmFsdHlNaW5pc2NyaXB0Tm9kZSgpLFxuICAgICAgW3RoaXMuZ2V0V2l0aGRyYXdhbE1pbmlzY3JpcHROb2RlKCksIHRoaXMuZ2V0VGltZWxvY2tNaW5pc2NyaXB0Tm9kZSgpXSxcbiAgICBdKTtcbiAgfVxufVxuXG4vLyBJbnZlcnNlIGZ1bmN0aW9uIHRvIHBhcnNlIHRoZSBkZXNjcmlwdG9yXG5mdW5jdGlvbiBwYXJzZVN0YWtpbmdEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IERlc2NyaXB0b3IpOiB7XG4gIHBlbmFsdHlOb2RlOiBhc3QuTWluaXNjcmlwdE5vZGU7XG4gIHdpdGhkcmF3YWxOb2RlOiBhc3QuTWluaXNjcmlwdE5vZGU7XG4gIHRpbWVsb2NrTm9kZTogYXN0Lk1pbmlzY3JpcHROb2RlO1xufSB8IG51bGwge1xuICBjb25zdCBwYXR0ZXJuOiBQYXR0ZXJuID0ge1xuICAgIHRyOiBbZ2V0VW5zcGVuZGFibGVLZXkoKSwgW3sgJHZhcjogJ3BlbmFsdHlOb2RlJyB9LCBbeyAkdmFyOiAnd2l0aGRyYXdhbE5vZGUnIH0sIHsgJHZhcjogJ3RpbWVsb2NrTm9kZScgfV1dXSxcbiAgfTtcblxuICBjb25zdCBtYXRjaGVyID0gbmV3IFBhdHRlcm5NYXRjaGVyKCk7XG4gIGNvbnN0IGRlc2NyaXB0b3JOb2RlID0gYXN0LmZyb21EZXNjcmlwdG9yKGRlc2NyaXB0b3IpO1xuICBjb25zdCByZXN1bHQgPSBtYXRjaGVyLm1hdGNoKGRlc2NyaXB0b3JOb2RlLCBwYXR0ZXJuKTtcblxuICBpZiAoIXJlc3VsdCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwZW5hbHR5Tm9kZTogcmVzdWx0LnBlbmFsdHlOb2RlIGFzIGFzdC5NaW5pc2NyaXB0Tm9kZSxcbiAgICB3aXRoZHJhd2FsTm9kZTogcmVzdWx0LndpdGhkcmF3YWxOb2RlIGFzIGFzdC5NaW5pc2NyaXB0Tm9kZSxcbiAgICB0aW1lbG9ja05vZGU6IHJlc3VsdC50aW1lbG9ja05vZGUgYXMgYXN0Lk1pbmlzY3JpcHROb2RlLFxuICB9O1xufVxuXG5kZXNjcmliZSgnUGF0dGVybk1hdGNoZXInLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdzaG91bGQgbWF0Y2ggYmFzaWMgb2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBhdHRlcm4gPSB7IGE6IHsgJHZhcjogJ3gnIH0sIGI6ICdoZWxsbycgfTtcbiAgICBjb25zdCBub2RlID0geyBhOiAxMjMsIGI6ICdoZWxsbycgfTtcbiAgICBjb25zdCB2YXJzID0gbmV3IFBhdHRlcm5NYXRjaGVyKCkubWF0Y2gobm9kZSwgcGF0dGVybik7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh2YXJzLCB7IHg6IDEyMyB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIG9uIG5vbi1tYXRjaGluZyBvYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IHsgYTogeyAkdmFyOiAneCcgfSwgYjogJ3dvcmxkJyB9O1xuICAgIGNvbnN0IG5vZGUgPSB7IGE6IDEyMywgYjogJ2hlbGxvJyB9O1xuICAgIGNvbnN0IHZhcnMgPSBuZXcgUGF0dGVybk1hdGNoZXIoKS5tYXRjaChub2RlLCBwYXR0ZXJuKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFycywgbnVsbCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbWF0Y2ggd2l0aCByZXBlYXRlZCB2YXInLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IHsgYTogeyAkdmFyOiAneCcgfSwgYjogeyAkdmFyOiAneCcgfSB9O1xuICAgIGNvbnN0IG5vZGUgPSB7IGE6IDEyMywgYjogMTIzIH07XG4gICAgY29uc3QgdmFycyA9IG5ldyBQYXR0ZXJuTWF0Y2hlcigpLm1hdGNoKG5vZGUsIHBhdHRlcm4pO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodmFycywgeyB4OiAxMjMgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aXRoIG5vbi1tYXRjaGluZyByZXBlYXRlZCB2YXInLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IHsgYTogeyAkdmFyOiAneCcgfSwgYjogeyAkdmFyOiAneCcgfSB9O1xuICAgIGNvbnN0IG5vZGUgPSB7IGE6IDEyMywgYjogNDU2IH07XG4gICAgY29uc3QgdmFycyA9IG5ldyBQYXR0ZXJuTWF0Y2hlcigpLm1hdGNoKG5vZGUsIHBhdHRlcm4pO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YXJzLCBudWxsKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXJzZSBzdGFraW5nIGRlc2NyaXB0b3InLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBTdGFraW5nRGVzY3JpcHRvckJ1aWxkZXIoXG4gICAgICBrZXkzMigndXNlcicpLFxuICAgICAgW2tleTMyKCdwcm92aWRlcjEnKV0sXG4gICAgICBba2V5MzIoJ2d1YXJkaWFuMScpLCBrZXkzMignZ3VhcmRpYW4yJyldLFxuICAgICAgMixcbiAgICAgIDEwMFxuICAgICk7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0gYnVpbGRlci5nZXRTdGFraW5nRGVzY3JpcHRvcigpO1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU3Rha2luZ0Rlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG5cbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwocGFyc2VkLCBudWxsKTtcbiAgICBpZiAocGFyc2VkKSB7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlZC5wZW5hbHR5Tm9kZSwgYnVpbGRlci5nZXRQZW5hbHR5TWluaXNjcmlwdE5vZGUoKSk7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlZC53aXRoZHJhd2FsTm9kZSwgYnVpbGRlci5nZXRXaXRoZHJhd2FsTWluaXNjcmlwdE5vZGUoKSk7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlZC50aW1lbG9ja05vZGUsIGJ1aWxkZXIuZ2V0VGltZWxvY2tNaW5pc2NyaXB0Tm9kZSgpKTtcbiAgICB9XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VirtualSize.d.ts","sourceRoot":"","sources":["../../../../../test/descriptor/psbt/VirtualSize.ts"],"names":[],"mappings":""}
|