@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,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":""}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const assert_1 = __importDefault(require("assert"));
|
|
40
|
+
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
41
|
+
const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
|
|
42
|
+
const wasm_utxo_1 = require("@bitgo/wasm-utxo");
|
|
43
|
+
const descriptor_1 = require("../../../src/descriptor");
|
|
44
|
+
const testutil_1 = require("../../../src/testutil");
|
|
45
|
+
const descriptor_2 = require("../../../src/testutil/descriptor");
|
|
46
|
+
const sign_1 = require("../../../src/descriptor/psbt/sign");
|
|
47
|
+
function normalize(v) {
|
|
48
|
+
if (typeof v === 'bigint') {
|
|
49
|
+
return v.toString();
|
|
50
|
+
}
|
|
51
|
+
if (v instanceof wasm_utxo_1.Descriptor) {
|
|
52
|
+
return v.toString();
|
|
53
|
+
}
|
|
54
|
+
if (v instanceof Buffer) {
|
|
55
|
+
return v.toString('hex');
|
|
56
|
+
}
|
|
57
|
+
if (v instanceof utxolib.Psbt) {
|
|
58
|
+
return (0, descriptor_2.toPlainObjectFromPsbt)(v);
|
|
59
|
+
}
|
|
60
|
+
if (v instanceof utxolib.Transaction) {
|
|
61
|
+
return (0, descriptor_2.toPlainObjectFromTx)(v);
|
|
62
|
+
}
|
|
63
|
+
if (Array.isArray(v)) {
|
|
64
|
+
return v.map(normalize);
|
|
65
|
+
}
|
|
66
|
+
if (typeof v === 'object' && v !== null) {
|
|
67
|
+
return Object.fromEntries(Object.entries(v).flatMap(([k, v]) => (v === undefined ? [] : [[k, normalize(v)]])));
|
|
68
|
+
}
|
|
69
|
+
return v;
|
|
70
|
+
}
|
|
71
|
+
async function assertEqualsFixture(t, filename, value) {
|
|
72
|
+
filename = __dirname + '/../../descriptor/psbt/fixtures/' + t + '.' + filename;
|
|
73
|
+
const nv = normalize(value);
|
|
74
|
+
assert_1.default.deepStrictEqual(nv, await (0, testutil_1.getFixture)(filename, nv));
|
|
75
|
+
}
|
|
76
|
+
const selfKeys = (0, testutil_1.getKeyTriple)('a');
|
|
77
|
+
const otherKeys = (0, testutil_1.getKeyTriple)('b');
|
|
78
|
+
function toPlain(k) {
|
|
79
|
+
assert_1.default.ok(k.privateKey);
|
|
80
|
+
return utxo_lib_1.ECPair.fromPrivateKey(k.privateKey);
|
|
81
|
+
}
|
|
82
|
+
function getStages(psbt, parsed, stages) {
|
|
83
|
+
return Object.fromEntries(stages.map((stage) => {
|
|
84
|
+
const psbtStageWrapped = (0, descriptor_1.toWrappedPsbt)(psbt);
|
|
85
|
+
for (const key of stage.keys) {
|
|
86
|
+
(0, assert_1.default)((0, sign_1.getNewSignatureCount)((0, sign_1.signWithKey)(psbtStageWrapped, key)) > 0, 'No new signatures were created');
|
|
87
|
+
}
|
|
88
|
+
const psbtStage = (0, descriptor_1.toUtxoPsbt)(psbtStageWrapped, utxolib.networks.bitcoin);
|
|
89
|
+
let psbtFinal;
|
|
90
|
+
let networkTx;
|
|
91
|
+
let networkTxBuffer;
|
|
92
|
+
if (stage.final) {
|
|
93
|
+
psbtStageWrapped.finalize();
|
|
94
|
+
psbtFinal = (0, descriptor_1.toUtxoPsbt)(psbtStageWrapped, utxolib.networks.bitcoin);
|
|
95
|
+
networkTx = psbtFinal.extractTransaction();
|
|
96
|
+
networkTxBuffer = networkTx.toBuffer();
|
|
97
|
+
}
|
|
98
|
+
return [
|
|
99
|
+
stage.name,
|
|
100
|
+
{
|
|
101
|
+
psbt: psbtStage,
|
|
102
|
+
parsed,
|
|
103
|
+
psbtFinal,
|
|
104
|
+
networkTx,
|
|
105
|
+
networkTxBuffer,
|
|
106
|
+
},
|
|
107
|
+
];
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
function describeCreatePsbt(name, testParams) {
|
|
111
|
+
describe(`createPsbt ${name}`, function () {
|
|
112
|
+
it('creates psbt with expected properties', async function () {
|
|
113
|
+
const psbtUnsigned = 'psbt' in testParams
|
|
114
|
+
? testParams.psbt
|
|
115
|
+
: (0, descriptor_2.mockPsbtDefault)({
|
|
116
|
+
descriptorSelf: testParams.descriptorSelf,
|
|
117
|
+
descriptorOther: (0, descriptor_2.getDescriptor)('Wsh2Of3', otherKeys),
|
|
118
|
+
params: testParams.psbtParams,
|
|
119
|
+
});
|
|
120
|
+
const descriptorMap = new Map([['self', testParams.descriptorSelf]]);
|
|
121
|
+
const parsed = (0, descriptor_1.parse)(psbtUnsigned, descriptorMap, utxolib.networks.bitcoin);
|
|
122
|
+
assert_1.default.strictEqual(parsed.spendAmount, psbtUnsigned.txOutputs[1].value);
|
|
123
|
+
await assertEqualsFixture(name, 'psbtStages.json', getStages(psbtUnsigned, parsed, testParams.stages));
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
const defaultStagesCombinedAB = [
|
|
128
|
+
{ name: 'unsigned', keys: [] },
|
|
129
|
+
{ name: 'signedA', keys: selfKeys.slice(0, 1) },
|
|
130
|
+
{ name: 'signedAB', keys: selfKeys.slice(0, 2), final: true },
|
|
131
|
+
];
|
|
132
|
+
function getDefaultStagesSeparateAB({ plain = false } = {}) {
|
|
133
|
+
const keys = plain ? selfKeys.map(toPlain) : selfKeys;
|
|
134
|
+
return [
|
|
135
|
+
{ name: 'unsigned', keys: [] },
|
|
136
|
+
{ name: 'signedA', keys: keys.slice(0, 1) },
|
|
137
|
+
{ name: 'signedB', keys: keys.slice(1, 2), final: true },
|
|
138
|
+
];
|
|
139
|
+
}
|
|
140
|
+
function describeCreatePsbt2Of3(t) {
|
|
141
|
+
describeCreatePsbt(t, {
|
|
142
|
+
descriptorSelf: (0, descriptor_2.getDescriptor)(t, selfKeys),
|
|
143
|
+
psbtParams: (0, descriptor_2.getPsbtParams)(t),
|
|
144
|
+
stages: defaultStagesCombinedAB,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
function describeCreatePsbtSelectTapLeafScript(t, selfDescriptor, selectTapLeafScript, tapLeafName) {
|
|
148
|
+
const otherDescriptor = (0, descriptor_2.getDescriptor)('Wsh2Of3', otherKeys);
|
|
149
|
+
const signKeys = selfKeys.filter((k) => (0, descriptor_2.containsKey)(selectTapLeafScript, k)).map((k) => toPlain(k));
|
|
150
|
+
(0, assert_1.default)(signKeys.length === 1);
|
|
151
|
+
describeCreatePsbt(`${t}-${tapLeafName}`, {
|
|
152
|
+
descriptorSelf: selfDescriptor,
|
|
153
|
+
psbt: (0, descriptor_2.mockPsbt)([
|
|
154
|
+
{ descriptor: selfDescriptor, index: 0, selectTapLeafScript },
|
|
155
|
+
{ descriptor: selfDescriptor, index: 1, id: { vout: 1 }, selectTapLeafScript },
|
|
156
|
+
], [
|
|
157
|
+
{
|
|
158
|
+
descriptor: otherDescriptor,
|
|
159
|
+
index: 0,
|
|
160
|
+
value: BigInt(4e5),
|
|
161
|
+
external: true,
|
|
162
|
+
},
|
|
163
|
+
{ descriptor: selfDescriptor, index: 0, value: BigInt(4e5) },
|
|
164
|
+
]),
|
|
165
|
+
stages: [
|
|
166
|
+
{ name: 'unsigned', keys: [] },
|
|
167
|
+
{ name: 'signed', keys: signKeys },
|
|
168
|
+
],
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
describeCreatePsbt2Of3('Wsh2Of3');
|
|
172
|
+
describeCreatePsbt2Of3('Wsh2Of3CltvDrop');
|
|
173
|
+
describeCreatePsbt2Of3('Tr2Of3-NoKeyPath');
|
|
174
|
+
describeCreatePsbt('Tr1Of3-NoKeyPath-Tree', {
|
|
175
|
+
descriptorSelf: (0, descriptor_2.getDescriptor)('Tr1Of3-NoKeyPath-Tree', selfKeys),
|
|
176
|
+
psbtParams: {},
|
|
177
|
+
stages: getDefaultStagesSeparateAB(),
|
|
178
|
+
});
|
|
179
|
+
{
|
|
180
|
+
const t = 'Tr1Of3-NoKeyPath-Tree-Plain';
|
|
181
|
+
const selfDescriptor = (0, descriptor_2.getDescriptor)(t, selfKeys);
|
|
182
|
+
(0, descriptor_2.getTapLeafScripts)(selfDescriptor).forEach((selectTapLeafScript, i) => {
|
|
183
|
+
describeCreatePsbtSelectTapLeafScript(t, selfDescriptor, wasm_utxo_1.Miniscript.fromString(selectTapLeafScript, 'tap'), `TapLeafScript${i}`);
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
describeCreatePsbt('Tr1Of3-NoKeyPath-Tree-PlainKeys', {
|
|
187
|
+
descriptorSelf: (0, descriptor_2.getDescriptor)('Tr1Of3-NoKeyPath-Tree-Plain', selfKeys),
|
|
188
|
+
psbtParams: {},
|
|
189
|
+
stages: getDefaultStagesSeparateAB({ plain: true }),
|
|
190
|
+
});
|
|
191
|
+
{
|
|
192
|
+
const descriptorSelf = (0, descriptor_2.getDescriptor)('Wsh2Of3', selfKeys);
|
|
193
|
+
const descriptorOther = (0, descriptor_2.getDescriptor)('Wsh2Of3', otherKeys);
|
|
194
|
+
describeCreatePsbt('Wsh2Of3-CustomInputSequence', {
|
|
195
|
+
descriptorSelf,
|
|
196
|
+
psbt: (0, descriptor_2.mockPsbt)([
|
|
197
|
+
{ descriptor: descriptorSelf, index: 0 },
|
|
198
|
+
{ descriptor: descriptorSelf, index: 1, id: { vout: 1 }, sequence: 123 },
|
|
199
|
+
], [
|
|
200
|
+
{
|
|
201
|
+
descriptor: descriptorOther,
|
|
202
|
+
index: 0,
|
|
203
|
+
value: BigInt(4e5),
|
|
204
|
+
external: true,
|
|
205
|
+
},
|
|
206
|
+
{ descriptor: descriptorSelf, index: 0, value: BigInt(4e5) },
|
|
207
|
+
]),
|
|
208
|
+
stages: defaultStagesCombinedAB,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvZGVzY3JpcHRvci9wc2J0L3BzYnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsOERBQWdEO0FBQ2hELG1EQUErRTtBQUMvRSxnREFBMEQ7QUFFMUQsd0RBQW9IO0FBQ3BILG9EQUFpRTtBQUNqRSxpRUFVMEM7QUFDMUMsNERBQXNGO0FBRXRGLFNBQVMsU0FBUyxDQUFDLENBQVU7SUFDM0IsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMxQixPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxDQUFDLFlBQVksc0JBQVUsRUFBRSxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFJLENBQUMsWUFBWSxNQUFNLEVBQUUsQ0FBQztRQUN4QixPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksQ0FBQyxZQUFZLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUEsa0NBQXFCLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksQ0FBQyxZQUFZLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxPQUFPLElBQUEsZ0NBQW1CLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FB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QUFDLEVBQUU7WUFDeEMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7U0FDekUsRUFDRDtZQUNFO2dCQUNFLFVBQVUsRUFBRSxlQUFlO2dCQUMzQixLQUFLLEVBQUUsQ0FBQztnQkFDUixLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDbEIsUUFBUSxFQUFFLElBQUk7YUFDZjtZQUNELEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7U0FDN0QsQ0FDRjtRQUNELE1BQU0sRUFBRSx1QkFBdUI7S0FDaEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSwgRUNQYWlyLCBFQ1BhaXJJbnRlcmZhY2UgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yLCBNaW5pc2NyaXB0IH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbmltcG9ydCB7IFBzYnRQYXJhbXMsIHBhcnNlLCB0b1V0eG9Qc2J0LCB0b1dyYXBwZWRQc2J0LCBQYXJzZWREZXNjcmlwdG9yVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zcmMvZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBnZXRGaXh0dXJlLCBnZXRLZXlUcmlwbGUgfSBmcm9tICcuLi8uLi8uLi9zcmMvdGVzdHV0aWwnO1xuaW1wb3J0IHtcbiAgY29udGFpbnNLZXksXG4gIERlc2NyaXB0b3JUZW1wbGF0ZSxcbiAgZ2V0RGVzY3JpcHRvcixcbiAgZ2V0UHNidFBhcmFtcyxcbiAgZ2V0VGFwTGVhZlNjcmlwdHMsXG4gIG1vY2tQc2J0LFxuICBtb2NrUHNidERlZmF1bHQsXG4gIHRvUGxhaW5PYmplY3RGcm9tUHNidCxcbiAgdG9QbGFpbk9iamVjdEZyb21UeCxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZ2V0TmV3U2lnbmF0dXJlQ291bnQsIHNpZ25XaXRoS2V5IH0gZnJvbSAnLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvcHNidC9zaWduJztcblxuZnVuY3Rpb24gbm9ybWFsaXplKHY6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKHR5cGVvZiB2ID09PSAnYmlnaW50Jykge1xuICAgIHJldHVybiB2LnRvU3RyaW5nKCk7XG4gIH1cbiAgaWYgKHYgaW5zdGFuY2VvZiBEZXNjcmlwdG9yKSB7XG4gICAgcmV0dXJuIHYudG9TdHJpbmcoKTtcbiAgfVxuICBpZiAodiBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgIHJldHVybiB2LnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuICBpZiAodiBpbnN0YW5jZW9mIHV0eG9saWIuUHNidCkge1xuICAgIHJldHVybiB0b1BsYWluT2JqZWN0RnJvbVBzYnQodik7XG4gIH1cbiAgaWYgKHYgaW5zdGFuY2VvZiB1dHhvbGliLlRyYW5zYWN0aW9uKSB7XG4gICAgcmV0dXJuIHRvUGxhaW5PYmplY3RGcm9tVHgodik7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICByZXR1cm4gdi5tYXAobm9ybWFsaXplKTtcbiAgfVxuICBpZiAodHlwZW9mIHYgPT09ICdvYmplY3QnICYmIHYgIT09IG51bGwpIHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHYpLmZsYXRNYXAoKFtrLCB2XSkgPT4gKHYgPT09IHVuZGVmaW5lZCA/IFtdIDogW1trLCBub3JtYWxpemUodildXSkpKTtcbiAgfVxuICByZXR1cm4gdjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXNzZXJ0RXF1YWxzRml4dHVyZSh0OiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSB7XG4gIGZpbGVuYW1lID0gX19kaXJuYW1lICsgJy8uLi8uLi9kZXNjcmlwdG9yL3BzYnQvZml4dHVyZXMvJyArIHQgKyAnLicgKyBmaWxlbmFtZTtcbiAgY29uc3QgbnYgPSBub3JtYWxpemUodmFsdWUpO1xuICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKG52LCBhd2FpdCBnZXRGaXh0dXJlKGZpbGVuYW1lLCBudikpO1xufVxuXG5jb25zdCBzZWxmS2V5cyA9IGdldEtleVRyaXBsZSgnYScpO1xuY29uc3Qgb3RoZXJLZXlzID0gZ2V0S2V5VHJpcGxlKCdiJyk7XG5cbmZ1bmN0aW9uIHRvUGxhaW4oazogQklQMzJJbnRlcmZhY2UpOiBFQ1BhaXJJbnRlcmZhY2Uge1xuICBhc3NlcnQub2soay5wcml2YXRlS2V5KTtcbiAgcmV0dXJuIEVDUGFpci5mcm9tUHJpdmF0ZUtleShrLnByaXZhdGVLZXkpO1xufVxuXG50eXBlIFBzYnRTdGFnZSA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBrZXlzOiAoQklQMzJJbnRlcmZhY2UgfCBFQ1BhaXJJbnRlcmZhY2UpW107XG4gIGZpbmFsPzogYm9vbGVhbjtcbn07XG5cbnR5cGUgRml4dHVyZVN0YWdlID0ge1xuICBwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0O1xuICBuZXR3b3JrVHg/OiB1dHhvbGliLlRyYW5zYWN0aW9uPGJpZ2ludD47XG4gIG5ldHdvcmtUeEJ1ZmZlcj86IEJ1ZmZlcjtcbn07XG5cbmZ1bmN0aW9uIGdldFN0YWdlcyhcbiAgcHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCxcbiAgcGFyc2VkOiBQYXJzZWREZXNjcmlwdG9yVHJhbnNhY3Rpb24sXG4gIHN0YWdlczogUHNidFN0YWdlW11cbik6IFJlY29yZDxzdHJpbmcsIEZpeHR1cmVTdGFnZT4ge1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIHN0YWdlcy5tYXAoKHN0YWdlKSA9PiB7XG4gICAgICBjb25zdCBwc2J0U3RhZ2VXcmFwcGVkID0gdG9XcmFwcGVkUHNidChwc2J0KTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIHN0YWdlLmtleXMpIHtcbiAgICAgICAgYXNzZXJ0KGdldE5ld1NpZ25hdHVyZUNvdW50KHNpZ25XaXRoS2V5KHBzYnRTdGFnZVdyYXBwZWQsIGtleSkpID4gMCwgJ05vIG5ldyBzaWduYXR1cmVzIHdlcmUgY3JlYXRlZCcpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHNidFN0YWdlID0gdG9VdHhvUHNidChwc2J0U3RhZ2VXcmFwcGVkLCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pO1xuICAgICAgbGV0IHBzYnRGaW5hbDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCB8IHVuZGVmaW5lZDtcbiAgICAgIGxldCBuZXR3b3JrVHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPGJpZ2ludD4gfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgbmV0d29ya1R4QnVmZmVyOiBCdWZmZXIgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoc3RhZ2UuZmluYWwpIHtcbiAgICAgICAgcHNidFN0YWdlV3JhcHBlZC5maW5hbGl6ZSgpO1xuICAgICAgICBwc2J0RmluYWwgPSB0b1V0eG9Qc2J0KHBzYnRTdGFnZVdyYXBwZWQsIHV0eG9saWIubmV0d29ya3MuYml0Y29pbik7XG4gICAgICAgIG5ldHdvcmtUeCA9IHBzYnRGaW5hbC5leHRyYWN0VHJhbnNhY3Rpb24oKTtcbiAgICAgICAgbmV0d29ya1R4QnVmZmVyID0gbmV0d29ya1R4LnRvQnVmZmVyKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW1xuICAgICAgICBzdGFnZS5uYW1lLFxuICAgICAgICB7XG4gICAgICAgICAgcHNidDogcHNidFN0YWdlLFxuICAgICAgICAgIHBhcnNlZCxcbiAgICAgICAgICBwc2J0RmluYWwsXG4gICAgICAgICAgbmV0d29ya1R4LFxuICAgICAgICAgIG5ldHdvcmtUeEJ1ZmZlcixcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfSlcbiAgKTtcbn1cblxudHlwZSBUZXN0UGFyYW1zID0ge1xuICBkZXNjcmlwdG9yU2VsZjogRGVzY3JpcHRvcjtcbiAgc3RhZ2VzOiBQc2J0U3RhZ2VbXTtcbn0gJiAoXG4gIHwge1xuICAgICAgcHNidFBhcmFtczogUGFydGlhbDxQc2J0UGFyYW1zPjtcbiAgICB9XG4gIHwge1xuICAgICAgcHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidDtcbiAgICB9XG4pO1xuXG5mdW5jdGlvbiBkZXNjcmliZUNyZWF0ZVBzYnQobmFtZTogc3RyaW5nLCB0ZXN0UGFyYW1zOiBUZXN0UGFyYW1zKSB7XG4gIGRlc2NyaWJlKGBjcmVhdGVQc2J0ICR7bmFtZX1gLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2NyZWF0ZXMgcHNidCB3aXRoIGV4cGVjdGVkIHByb3BlcnRpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwc2J0VW5zaWduZWQgPVxuICAgICAgICAncHNidCcgaW4gdGVzdFBhcmFtc1xuICAgICAgICAgID8gdGVzdFBhcmFtcy5wc2J0XG4gICAgICAgICAgOiBtb2NrUHNidERlZmF1bHQoe1xuICAgICAgICAgICAgICBkZXNjcmlwdG9yU2VsZjogdGVzdFBhcmFtcy5kZXNjcmlwdG9yU2VsZixcbiAgICAgICAgICAgICAgZGVzY3JpcHRvck90aGVyOiBnZXREZXNjcmlwdG9yKCdXc2gyT2YzJywgb3RoZXJLZXlzKSxcbiAgICAgICAgICAgICAgcGFyYW1zOiB0ZXN0UGFyYW1zLnBzYnRQYXJhbXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3JNYXAgPSBuZXcgTWFwKFtbJ3NlbGYnLCB0ZXN0UGFyYW1zLmRlc2NyaXB0b3JTZWxmXV0pO1xuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2UocHNidFVuc2lnbmVkLCBkZXNjcmlwdG9yTWFwLCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlZC5zcGVuZEFtb3VudCwgcHNidFVuc2lnbmVkLnR4T3V0cHV0c1sxXS52YWx1ZSk7XG4gICAgICBhd2FpdCBhc3NlcnRFcXVhbHNGaXh0dXJlKG5hbWUsICdwc2J0U3RhZ2VzLmpzb24nLCBnZXRTdGFnZXMocHNidFVuc2lnbmVkLCBwYXJzZWQsIHRlc3RQYXJhbXMuc3RhZ2VzKSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5jb25zdCBkZWZhdWx0U3RhZ2VzQ29tYmluZWRBQjogUHNidFN0YWdlW10gPSBbXG4gIHsgbmFtZTogJ3Vuc2lnbmVkJywga2V5czogW10gfSxcbiAgeyBuYW1lOiAnc2lnbmVkQScsIGtleXM6IHNlbGZLZXlzLnNsaWNlKDAsIDEpIH0sXG4gIHsgbmFtZTogJ3NpZ25lZEFCJywga2V5czogc2VsZktleXMuc2xpY2UoMCwgMiksIGZpbmFsOiB0cnVlIH0sXG5dO1xuXG5mdW5jdGlvbiBnZXREZWZhdWx0U3RhZ2VzU2VwYXJhdGVBQih7IHBsYWluID0gZmFsc2UgfSA9IHt9KTogUHNidFN0YWdlW10ge1xuICBjb25zdCBrZXlzID0gcGxhaW4gPyBzZWxmS2V5cy5tYXAodG9QbGFpbikgOiBzZWxmS2V5cztcbiAgcmV0dXJuIFtcbiAgICB7IG5hbWU6ICd1bnNpZ25lZCcsIGtleXM6IFtdIH0sXG4gICAgeyBuYW1lOiAnc2lnbmVkQScsIGtleXM6IGtleXMuc2xpY2UoMCwgMSkgfSxcbiAgICB7IG5hbWU6ICdzaWduZWRCJywga2V5czoga2V5cy5zbGljZSgxLCAyKSwgZmluYWw6IHRydWUgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVDcmVhdGVQc2J0Mk9mMyh0OiBEZXNjcmlwdG9yVGVtcGxhdGUpIHtcbiAgZGVzY3JpYmVDcmVhdGVQc2J0KHQsIHtcbiAgICBkZXNjcmlwdG9yU2VsZjogZ2V0RGVzY3JpcHRvcih0LCBzZWxmS2V5cyksXG4gICAgcHNidFBhcmFtczogZ2V0UHNidFBhcmFtcyh0KSxcbiAgICBzdGFnZXM6IGRlZmF1bHRTdGFnZXNDb21iaW5lZEFCLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVDcmVhdGVQc2J0U2VsZWN0VGFwTGVhZlNjcmlwdChcbiAgdDogRGVzY3JpcHRvclRlbXBsYXRlLFxuICBzZWxmRGVzY3JpcHRvcjogRGVzY3JpcHRvcixcbiAgc2VsZWN0VGFwTGVhZlNjcmlwdDogTWluaXNjcmlwdCxcbiAgdGFwTGVhZk5hbWU6IHN0cmluZ1xuKSB7XG4gIGNvbnN0IG90aGVyRGVzY3JpcHRvciA9IGdldERlc2NyaXB0b3IoJ1dzaDJPZjMnLCBvdGhlcktleXMpO1xuICBjb25zdCBzaWduS2V5cyA9IHNlbGZLZXlzLmZpbHRlcigoaykgPT4gY29udGFpbnNLZXkoc2VsZWN0VGFwTGVhZlNjcmlwdCwgaykpLm1hcCgoaykgPT4gdG9QbGFpbihrKSk7XG4gIGFzc2VydChzaWduS2V5cy5sZW5ndGggPT09IDEpO1xuICBkZXNjcmliZUNyZWF0ZVBzYnQoYCR7dH0tJHt0YXBMZWFmTmFtZX1gLCB7XG4gICAgZGVzY3JpcHRvclNlbGY6IHNlbGZEZXNjcmlwdG9yLFxuICAgIHBzYnQ6IG1vY2tQc2J0KFxuICAgICAgW1xuICAgICAgICB7IGRlc2NyaXB0b3I6IHNlbGZEZXNjcmlwdG9yLCBpbmRleDogMCwgc2VsZWN0VGFwTGVhZlNjcmlwdCB9LFxuICAgICAgICB7IGRlc2NyaXB0b3I6IHNlbGZEZXNjcmlwdG9yLCBpbmRleDogMSwgaWQ6IHsgdm91dDogMSB9LCBzZWxlY3RUYXBMZWFmU2NyaXB0IH0sXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgZGVzY3JpcHRvcjogb3RoZXJEZXNjcmlwdG9yLFxuICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgIHZhbHVlOiBCaWdJbnQoNGU1KSxcbiAgICAgICAgICBleHRlcm5hbDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBkZXNjcmlwdG9yOiBzZWxmRGVzY3JpcHRvciwgaW5kZXg6IDAsIHZhbHVlOiBCaWdJbnQoNGU1KSB9LFxuICAgICAgXVxuICAgICksXG4gICAgc3RhZ2VzOiBbXG4gICAgICB7IG5hbWU6ICd1bnNpZ25lZCcsIGtleXM6IFtdIH0sXG4gICAgICB7IG5hbWU6ICdzaWduZWQnLCBrZXlzOiBzaWduS2V5cyB9LFxuICAgIF0sXG4gIH0pO1xufVxuXG5kZXNjcmliZUNyZWF0ZVBzYnQyT2YzKCdXc2gyT2YzJyk7XG5kZXNjcmliZUNyZWF0ZVBzYnQyT2YzKCdXc2gyT2YzQ2x0dkRyb3AnKTtcbmRlc2NyaWJlQ3JlYXRlUHNidDJPZjMoJ1RyMk9mMy1Ob0tleVBhdGgnKTtcbmRlc2NyaWJlQ3JlYXRlUHNidCgnVHIxT2YzLU5vS2V5UGF0aC1UcmVlJywge1xuICBkZXNjcmlwdG9yU2VsZjogZ2V0RGVzY3JpcHRvcignVHIxT2YzLU5vS2V5UGF0aC1UcmVlJywgc2VsZktleXMpLFxuICBwc2J0UGFyYW1zOiB7fSxcbiAgc3RhZ2VzOiBnZXREZWZhdWx0U3RhZ2VzU2VwYXJhdGVBQigpLFxufSk7XG5cbntcbiAgY29uc3QgdDogRGVzY3JpcHRvclRlbXBsYXRlID0gJ1RyMU9mMy1Ob0tleVBhdGgtVHJlZS1QbGFpbic7XG4gIGNvbnN0IHNlbGZEZXNjcmlwdG9yID0gZ2V0RGVzY3JpcHRvcih0LCBzZWxmS2V5cyk7XG4gIGdldFRhcExlYWZTY3JpcHRzKHNlbGZEZXNjcmlwdG9yKS5mb3JFYWNoKChzZWxlY3RUYXBMZWFmU2NyaXB0LCBpKSA9PiB7XG4gICAgZGVzY3JpYmVDcmVhdGVQc2J0U2VsZWN0VGFwTGVhZlNjcmlwdChcbiAgICAgIHQsXG4gICAgICBzZWxmRGVzY3JpcHRvcixcbiAgICAgIE1pbmlzY3JpcHQuZnJvbVN0cmluZyhzZWxlY3RUYXBMZWFmU2NyaXB0LCAndGFwJyksXG4gICAgICBgVGFwTGVhZlNjcmlwdCR7aX1gXG4gICAgKTtcbiAgfSk7XG59XG5cbmRlc2NyaWJlQ3JlYXRlUHNidCgnVHIxT2YzLU5vS2V5UGF0aC1UcmVlLVBsYWluS2V5cycsIHtcbiAgZGVzY3JpcHRvclNlbGY6IGdldERlc2NyaXB0b3IoJ1RyMU9mMy1Ob0tleVBhdGgtVHJlZS1QbGFpbicsIHNlbGZLZXlzKSxcbiAgcHNidFBhcmFtczoge30sXG4gIHN0YWdlczogZ2V0RGVmYXVsdFN0YWdlc1NlcGFyYXRlQUIoeyBwbGFpbjogdHJ1ZSB9KSxcbn0pO1xuXG57XG4gIGNvbnN0IGRlc2NyaXB0b3JTZWxmID0gZ2V0RGVzY3JpcHRvcignV3NoMk9mMycsIHNlbGZLZXlzKTtcbiAgY29uc3QgZGVzY3JpcHRvck90aGVyID0gZ2V0RGVzY3JpcHRvcignV3NoMk9mMycsIG90aGVyS2V5cyk7XG4gIGRlc2NyaWJlQ3JlYXRlUHNidCgnV3NoMk9mMy1DdXN0b21JbnB1dFNlcXVlbmNlJywge1xuICAgIGRlc2NyaXB0b3JTZWxmLFxuICAgIHBzYnQ6IG1vY2tQc2J0KFxuICAgICAgW1xuICAgICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JTZWxmLCBpbmRleDogMCB9LFxuICAgICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JTZWxmLCBpbmRleDogMSwgaWQ6IHsgdm91dDogMSB9LCBzZXF1ZW5jZTogMTIzIH0sXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgZGVzY3JpcHRvcjogZGVzY3JpcHRvck90aGVyLFxuICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgIHZhbHVlOiBCaWdJbnQoNGU1KSxcbiAgICAgICAgICBleHRlcm5hbDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yU2VsZiwgaW5kZXg6IDAsIHZhbHVlOiBCaWdJbnQoNGU1KSB9LFxuICAgICAgXVxuICAgICksXG4gICAgc3RhZ2VzOiBkZWZhdWx0U3RhZ2VzQ29tYmluZWRBQixcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dustThreshold.d.ts","sourceRoot":"","sources":["../../../test/dustThreshold.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const assert_1 = __importDefault(require("assert"));
|
|
40
|
+
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
41
|
+
const dustThreshold_1 = require("../src/dustThreshold");
|
|
42
|
+
describe('getDustThresholdSat', function () {
|
|
43
|
+
it('has expected values', function () {
|
|
44
|
+
assert_1.default.deepStrictEqual(utxolib.getNetworkList().flatMap((n) => {
|
|
45
|
+
if (n === utxolib.networks.bitcoin) {
|
|
46
|
+
return [
|
|
47
|
+
['bitcoin', (0, dustThreshold_1.getDustThresholdSat)(n, 34, false)],
|
|
48
|
+
['bitcoin (segwit)', (0, dustThreshold_1.getDustThresholdSat)(n, 31, true)],
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
return [[utxolib.getNetworkName(n), (0, dustThreshold_1.getDustThresholdSat)(n, 34, false)]];
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
(0, assert_1.default)(e instanceof Error);
|
|
56
|
+
return [[utxolib.getNetworkName(n), e.message]];
|
|
57
|
+
}
|
|
58
|
+
}), [
|
|
59
|
+
/*
|
|
60
|
+
|
|
61
|
+
https://github.com/bitcoin/bitcoin/blob/v28.0/src/policy/policy.cpp#L28
|
|
62
|
+
|
|
63
|
+
>> "Dust" is defined in terms of dustRelayFee,
|
|
64
|
+
>> which has units satoshis-per-kilobyte.
|
|
65
|
+
>> If you'd pay more in fees than the value of the output
|
|
66
|
+
>> to spend something, then we consider it dust.
|
|
67
|
+
>> A typical spendable non-segwit txout is 34 bytes big, and will
|
|
68
|
+
>> need a CTxIn of at least 148 bytes to spend:
|
|
69
|
+
>> so dust is a spendable txout less than
|
|
70
|
+
>> 182*dustRelayFee/1000 (in satoshis).
|
|
71
|
+
>> 546 satoshis at the default rate of 3000 sat/kvB.
|
|
72
|
+
|
|
73
|
+
*/
|
|
74
|
+
['bitcoin', 546],
|
|
75
|
+
/*
|
|
76
|
+
|
|
77
|
+
>> A typical spendable segwit P2WPKH txout is 31 bytes big, and will
|
|
78
|
+
>> need a CTxIn of at least 67 bytes to spend:
|
|
79
|
+
>> so dust is a spendable txout less than
|
|
80
|
+
>> 98*dustRelayFee/1000 (in satoshis).
|
|
81
|
+
>> 294 satoshis at the default rate of 3000 sat/kvB.
|
|
82
|
+
|
|
83
|
+
for us it is 297 because we round up
|
|
84
|
+
|
|
85
|
+
*/
|
|
86
|
+
['bitcoin (segwit)', 297],
|
|
87
|
+
['testnet', 546],
|
|
88
|
+
['bitcoinPublicSignet', 546],
|
|
89
|
+
['bitcoinTestnet4', 546],
|
|
90
|
+
['bitcoinBitGoSignet', 546],
|
|
91
|
+
['bitcoincash', 182],
|
|
92
|
+
['bitcoincashTestnet', 182],
|
|
93
|
+
['bitcoingold', 546],
|
|
94
|
+
['bitcoingoldTestnet', 546],
|
|
95
|
+
['bitcoinsv', 'deprecated coin'],
|
|
96
|
+
['bitcoinsvTestnet', 'deprecated coin'],
|
|
97
|
+
['dash', 546],
|
|
98
|
+
['dashTest', 546],
|
|
99
|
+
['dogecoin', 1000000],
|
|
100
|
+
['dogecoinTest', 1000000],
|
|
101
|
+
['ecash', 'unsupported network'],
|
|
102
|
+
['ecashTest', 'unsupported network'],
|
|
103
|
+
['litecoin', 5460],
|
|
104
|
+
['litecoinTest', 5460],
|
|
105
|
+
['zcash', 300],
|
|
106
|
+
['zcashTest', 300],
|
|
107
|
+
]);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVzdFRocmVzaG9sZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvZHVzdFRocmVzaG9sZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUU1Qiw4REFBZ0Q7QUFFaEQsd0RBQTJEO0FBRTNELFFBQVEsQ0FBQyxxQkFBcUIsRUFBRTtJQUM5QixFQUFFLENBQUMscUJBQXFCLEVBQUU7UUFDeEIsZ0JBQU0sQ0FBQyxlQUFlLENBQ3BCLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQXdCLEVBQUU7WUFDM0QsSUFBSSxDQUFDLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkMsT0FBTztvQkFDTCxDQUFDLFNBQVMsRUFBRSxJQUFBLG1DQUFtQixFQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzlDLENBQUMsa0JBQWtCLEVBQUUsSUFBQSxtQ0FBbUIsRUFBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUN2RCxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksQ0FBQztnQkFDSCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUEsbUNBQW1CLEVBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUUsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsSUFBQSxnQkFBTSxFQUFDLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQztnQkFDM0IsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNsRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLEVBQ0Y7WUFDRTs7Ozs7Ozs7Ozs7Ozs7ZUFjRztZQUNILENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQztZQUNoQjs7Ozs7Ozs7OztlQVVHO1lBQ0gsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUM7WUFDekIsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO1lBQ2hCLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDO1lBQzVCLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDO1lBQ3hCLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDO1lBQzNCLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQztZQUNwQixDQUFDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQztZQUMzQixDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUM7WUFDcEIsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUM7WUFDM0IsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLENBQUM7WUFDaEMsQ0FBQyxrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQztZQUN2QyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7WUFDYixDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUM7WUFDakIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDO1lBQ3JCLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQztZQUN6QixDQUFDLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQztZQUNoQyxDQUFDLFdBQVcsRUFBRSxxQkFBcUIsQ0FBQztZQUNwQyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7WUFDbEIsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDO1lBQ3RCLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQztZQUNkLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQztTQUNuQixDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgZ2V0RHVzdFRocmVzaG9sZFNhdCB9IGZyb20gJy4uL3NyYy9kdXN0VGhyZXNob2xkJztcblxuZGVzY3JpYmUoJ2dldER1c3RUaHJlc2hvbGRTYXQnLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdoYXMgZXhwZWN0ZWQgdmFsdWVzJywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoXG4gICAgICB1dHhvbGliLmdldE5ldHdvcmtMaXN0KCkuZmxhdE1hcCgobik6IFt1bmtub3duLCB1bmtub3duXVtdID0+IHtcbiAgICAgICAgaWYgKG4gPT09IHV0eG9saWIubmV0d29ya3MuYml0Y29pbikge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBbJ2JpdGNvaW4nLCBnZXREdXN0VGhyZXNob2xkU2F0KG4sIDM0LCBmYWxzZSldLFxuICAgICAgICAgICAgWydiaXRjb2luIChzZWd3aXQpJywgZ2V0RHVzdFRocmVzaG9sZFNhdChuLCAzMSwgdHJ1ZSldLFxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gW1t1dHhvbGliLmdldE5ldHdvcmtOYW1lKG4pLCBnZXREdXN0VGhyZXNob2xkU2F0KG4sIDM0LCBmYWxzZSldXTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgRXJyb3IpO1xuICAgICAgICAgIHJldHVybiBbW3V0eG9saWIuZ2V0TmV0d29ya05hbWUobiksIGUubWVzc2FnZV1dO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIFtcbiAgICAgICAgLypcblxuICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXRjb2luL2Jsb2IvdjI4LjAvc3JjL3BvbGljeS9wb2xpY3kuY3BwI0wyOFxuXG4gICAgICAgID4+IFwiRHVzdFwiIGlzIGRlZmluZWQgaW4gdGVybXMgb2YgZHVzdFJlbGF5RmVlLFxuICAgICAgICA+PiB3aGljaCBoYXMgdW5pdHMgc2F0b3NoaXMtcGVyLWtpbG9ieXRlLlxuICAgICAgICA+PiBJZiB5b3UnZCBwYXkgbW9yZSBpbiBmZWVzIHRoYW4gdGhlIHZhbHVlIG9mIHRoZSBvdXRwdXRcbiAgICAgICAgPj4gdG8gc3BlbmQgc29tZXRoaW5nLCB0aGVuIHdlIGNvbnNpZGVyIGl0IGR1c3QuXG4gICAgICAgID4+IEEgdHlwaWNhbCBzcGVuZGFibGUgbm9uLXNlZ3dpdCB0eG91dCBpcyAzNCBieXRlcyBiaWcsIGFuZCB3aWxsXG4gICAgICAgID4+IG5lZWQgYSBDVHhJbiBvZiBhdCBsZWFzdCAxNDggYnl0ZXMgdG8gc3BlbmQ6XG4gICAgICAgID4+IHNvIGR1c3QgaXMgYSBzcGVuZGFibGUgdHhvdXQgbGVzcyB0aGFuXG4gICAgICAgID4+IDE4MipkdXN0UmVsYXlGZWUvMTAwMCAoaW4gc2F0b3NoaXMpLlxuICAgICAgICA+PiA1NDYgc2F0b3NoaXMgYXQgdGhlIGRlZmF1bHQgcmF0ZSBvZiAzMDAwIHNhdC9rdkIuXG5cbiAgICAgICAgICovXG4gICAgICAgIFsnYml0Y29pbicsIDU0Nl0sXG4gICAgICAgIC8qXG5cbiAgICAgICAgPj4gQSB0eXBpY2FsIHNwZW5kYWJsZSBzZWd3aXQgUDJXUEtIIHR4b3V0IGlzIDMxIGJ5dGVzIGJpZywgYW5kIHdpbGxcbiAgICAgICAgPj4gbmVlZCBhIENUeEluIG9mIGF0IGxlYXN0IDY3IGJ5dGVzIHRvIHNwZW5kOlxuICAgICAgICA+PiBzbyBkdXN0IGlzIGEgc3BlbmRhYmxlIHR4b3V0IGxlc3MgdGhhblxuICAgICAgICA+PiA5OCpkdXN0UmVsYXlGZWUvMTAwMCAoaW4gc2F0b3NoaXMpLlxuICAgICAgICA+PiAyOTQgc2F0b3NoaXMgYXQgdGhlIGRlZmF1bHQgcmF0ZSBvZiAzMDAwIHNhdC9rdkIuXG5cbiAgICAgICAgZm9yIHVzIGl0IGlzIDI5NyBiZWNhdXNlIHdlIHJvdW5kIHVwXG5cbiAgICAgICAgICovXG4gICAgICAgIFsnYml0Y29pbiAoc2Vnd2l0KScsIDI5N10sXG4gICAgICAgIFsndGVzdG5ldCcsIDU0Nl0sXG4gICAgICAgIFsnYml0Y29pblB1YmxpY1NpZ25ldCcsIDU0Nl0sXG4gICAgICAgIFsnYml0Y29pblRlc3RuZXQ0JywgNTQ2XSxcbiAgICAgICAgWydiaXRjb2luQml0R29TaWduZXQnLCA1NDZdLFxuICAgICAgICBbJ2JpdGNvaW5jYXNoJywgMTgyXSxcbiAgICAgICAgWydiaXRjb2luY2FzaFRlc3RuZXQnLCAxODJdLFxuICAgICAgICBbJ2JpdGNvaW5nb2xkJywgNTQ2XSxcbiAgICAgICAgWydiaXRjb2luZ29sZFRlc3RuZXQnLCA1NDZdLFxuICAgICAgICBbJ2JpdGNvaW5zdicsICdkZXByZWNhdGVkIGNvaW4nXSxcbiAgICAgICAgWydiaXRjb2luc3ZUZXN0bmV0JywgJ2RlcHJlY2F0ZWQgY29pbiddLFxuICAgICAgICBbJ2Rhc2gnLCA1NDZdLFxuICAgICAgICBbJ2Rhc2hUZXN0JywgNTQ2XSxcbiAgICAgICAgWydkb2dlY29pbicsIDEwMDAwMDBdLFxuICAgICAgICBbJ2RvZ2Vjb2luVGVzdCcsIDEwMDAwMDBdLFxuICAgICAgICBbJ2VjYXNoJywgJ3Vuc3VwcG9ydGVkIG5ldHdvcmsnXSxcbiAgICAgICAgWydlY2FzaFRlc3QnLCAndW5zdXBwb3J0ZWQgbmV0d29yayddLFxuICAgICAgICBbJ2xpdGVjb2luJywgNTQ2MF0sXG4gICAgICAgIFsnbGl0ZWNvaW5UZXN0JywgNTQ2MF0sXG4gICAgICAgIFsnemNhc2gnLCAzMDBdLFxuICAgICAgICBbJ3pjYXNoVGVzdCcsIDMwMF0sXG4gICAgICBdXG4gICAgKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../../../../test/paygo/attestation.ts"],"names":[],"mappings":""}
|