@bitgo-beta/utxo-core 1.8.1-beta.60 → 1.8.1-beta.601
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/Output.d.ts.map +1 -0
- package/dist/cjs/src/Output.js +60 -0
- package/dist/cjs/src/bip322/index.d.ts +5 -0
- package/dist/cjs/src/bip322/index.d.ts.map +1 -0
- package/dist/cjs/src/bip322/index.js +21 -0
- package/dist/cjs/src/bip322/toSign.d.ts +25 -0
- package/dist/cjs/src/bip322/toSign.d.ts.map +1 -0
- package/dist/cjs/src/bip322/toSign.js +126 -0
- package/dist/cjs/src/bip322/toSpend.d.ts +22 -0
- package/dist/cjs/src/bip322/toSpend.d.ts.map +1 -0
- package/dist/cjs/src/bip322/toSpend.js +72 -0
- package/dist/cjs/src/bip322/utils.d.ts +18 -0
- package/dist/cjs/src/bip322/utils.d.ts.map +1 -0
- package/dist/cjs/src/bip322/utils.js +115 -0
- package/dist/cjs/src/bip322/verify.d.ts +12 -0
- package/dist/cjs/src/bip322/verify.d.ts.map +1 -0
- package/dist/cjs/src/bip322/verify.js +115 -0
- package/dist/cjs/src/bip32utils.d.ts +16 -0
- package/dist/cjs/src/bip32utils.d.ts.map +1 -0
- package/dist/cjs/src/bip32utils.js +71 -0
- package/dist/cjs/src/bip65/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/bip65/index.js +1 -1
- package/dist/cjs/src/bip65/locktime.d.ts.map +1 -0
- package/dist/cjs/src/bip65/locktime.js +37 -0
- package/dist/{src → cjs/src}/descriptor/DescriptorMap.d.ts +1 -1
- package/dist/cjs/src/descriptor/DescriptorMap.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/DescriptorMap.js +9 -0
- package/dist/{src → cjs/src}/descriptor/Output.d.ts +1 -1
- package/dist/cjs/src/descriptor/Output.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/Output.js +41 -0
- package/dist/{src → cjs/src}/descriptor/VirtualSize.d.ts +1 -1
- package/dist/cjs/src/descriptor/VirtualSize.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/VirtualSize.js +100 -0
- package/dist/{src → cjs/src}/descriptor/address.d.ts +1 -1
- package/dist/cjs/src/descriptor/address.d.ts.map +1 -0
- package/dist/{src → cjs/src}/descriptor/address.js +1 -1
- package/dist/{src → cjs/src}/descriptor/derive.d.ts +1 -1
- package/dist/cjs/src/descriptor/derive.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/derive.js +45 -0
- package/dist/{src → cjs/src}/descriptor/fromFixedScriptWallet.d.ts +1 -1
- package/dist/cjs/src/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/fromFixedScriptWallet.js +88 -0
- package/dist/{src → cjs/src}/descriptor/index.d.ts +1 -0
- package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/descriptor/index.js +2 -1
- package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts +14 -0
- package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/parse/PatternMatcher.js +60 -0
- package/dist/{src → cjs/src}/descriptor/psbt/assertSatisfiable.d.ts +1 -1
- package/dist/cjs/src/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/assertSatisfiable.js +74 -0
- package/dist/{src → cjs/src}/descriptor/psbt/createPsbt.d.ts +4 -0
- package/dist/cjs/src/descriptor/psbt/createPsbt.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/createPsbt.js +107 -0
- package/dist/{src → cjs/src}/descriptor/psbt/findDescriptors.d.ts +1 -1
- package/dist/cjs/src/descriptor/psbt/findDescriptors.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/findDescriptors.js +98 -0
- package/dist/cjs/src/descriptor/psbt/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/descriptor/psbt/index.js +1 -1
- package/dist/{src → cjs/src}/descriptor/psbt/parse.d.ts +1 -1
- package/dist/cjs/src/descriptor/psbt/parse.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/parse.js +87 -0
- package/dist/{src → cjs/src}/descriptor/psbt/sign.d.ts +4 -4
- package/dist/cjs/src/descriptor/psbt/sign.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/sign.js +42 -0
- package/dist/{src → cjs/src}/descriptor/psbt/wrap.d.ts +1 -1
- package/dist/cjs/src/descriptor/psbt/wrap.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/wrap.js +76 -0
- package/dist/cjs/src/dustThreshold.d.ts.map +1 -0
- package/dist/cjs/src/dustThreshold.js +134 -0
- package/dist/{src → cjs/src}/index.d.ts +1 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/index.js +3 -2
- package/dist/cjs/src/paygo/attestation.d.ts +11 -0
- package/dist/cjs/src/paygo/attestation.d.ts.map +1 -0
- package/dist/cjs/src/paygo/attestation.js +58 -0
- package/dist/cjs/src/paygo/index.d.ts +3 -0
- package/dist/cjs/src/paygo/index.d.ts.map +1 -0
- package/dist/cjs/src/paygo/index.js +19 -0
- package/dist/{src/paygo/ExtractAddressPayGoAttestation.d.ts → cjs/src/paygo/parsePayGoAttestation.d.ts} +8 -3
- package/dist/cjs/src/paygo/parsePayGoAttestation.d.ts.map +1 -0
- package/dist/cjs/src/paygo/parsePayGoAttestation.js +50 -0
- package/dist/cjs/src/paygo/psbt/Errors.d.ts +22 -0
- package/dist/cjs/src/paygo/psbt/Errors.d.ts.map +1 -0
- package/dist/cjs/src/paygo/psbt/Errors.js +44 -0
- package/dist/cjs/src/paygo/psbt/index.d.ts +2 -0
- package/dist/cjs/src/paygo/psbt/index.d.ts.map +1 -0
- package/dist/{src/paygo → cjs/src/paygo/psbt}/index.js +2 -2
- package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts +29 -0
- package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
- package/dist/cjs/src/paygo/psbt/payGoAddressProof.js +124 -0
- package/dist/{src → cjs/src}/testutil/descriptor/descriptors.d.ts +4 -1
- package/dist/cjs/src/testutil/descriptor/descriptors.d.ts.map +1 -0
- package/dist/cjs/src/testutil/descriptor/descriptors.js +162 -0
- package/dist/cjs/src/testutil/descriptor/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/testutil/descriptor/index.js +1 -1
- package/dist/{src → cjs/src}/testutil/descriptor/mock.utils.d.ts +3 -1
- package/dist/cjs/src/testutil/descriptor/mock.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/descriptor/mock.utils.js +92 -0
- package/dist/cjs/src/testutil/descriptor/psbt.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/descriptor/psbt.utils.js +21 -0
- package/dist/cjs/src/testutil/fixtures.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/fixtures.utils.js +127 -0
- package/dist/{src → cjs/src}/testutil/generatePayGoAttestationProof.utils.d.ts +1 -1
- package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.js +38 -0
- package/dist/{src → cjs/src}/testutil/index.d.ts +1 -0
- package/dist/cjs/src/testutil/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/testutil/index.js +2 -1
- package/dist/{src → cjs/src}/testutil/key.utils.d.ts +1 -1
- package/dist/cjs/src/testutil/key.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/key.utils.js +60 -0
- package/dist/cjs/src/testutil/toPlainObject.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/toPlainObject.utils.js +89 -0
- package/dist/cjs/src/testutil/trimMessagePrefix.d.ts +11 -0
- package/dist/cjs/src/testutil/trimMessagePrefix.d.ts.map +1 -0
- package/dist/cjs/src/testutil/trimMessagePrefix.js +60 -0
- package/dist/cjs/src/xOnlyPubkey.d.ts.map +1 -0
- package/dist/cjs/src/xOnlyPubkey.js +18 -0
- package/dist/cjs/test/Output.d.ts +2 -0
- package/dist/cjs/test/Output.d.ts.map +1 -0
- package/dist/cjs/test/Output.js +70 -0
- package/dist/cjs/test/bip322/bip322.utils.d.ts +7 -0
- package/dist/cjs/test/bip322/bip322.utils.d.ts.map +1 -0
- package/dist/cjs/test/bip322/bip322.utils.js +16 -0
- package/dist/cjs/test/bip322/toSign.d.ts +2 -0
- package/dist/cjs/test/bip322/toSign.d.ts.map +1 -0
- package/dist/cjs/test/bip322/toSign.js +133 -0
- package/dist/cjs/test/bip322/toSpend.d.ts +2 -0
- package/dist/cjs/test/bip322/toSpend.d.ts.map +1 -0
- package/dist/cjs/test/bip322/toSpend.js +70 -0
- package/dist/cjs/test/bip322/utils.d.ts +2 -0
- package/dist/cjs/test/bip322/utils.d.ts.map +1 -0
- package/dist/cjs/test/bip322/utils.js +79 -0
- package/dist/cjs/test/bip322/verify.d.ts +2 -0
- package/dist/cjs/test/bip322/verify.d.ts.map +1 -0
- package/dist/cjs/test/bip322/verify.js +293 -0
- package/dist/cjs/test/bip32utils.d.ts +2 -0
- package/dist/cjs/test/bip32utils.d.ts.map +1 -0
- package/dist/cjs/test/bip32utils.js +62 -0
- package/dist/cjs/test/bip65/locktime.d.ts +2 -0
- package/dist/cjs/test/bip65/locktime.d.ts.map +1 -0
- package/dist/cjs/test/bip65/locktime.js +22 -0
- package/dist/cjs/test/descriptor/Output.d.ts +2 -0
- package/dist/cjs/test/descriptor/Output.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/Output.js +44 -0
- package/dist/cjs/test/descriptor/derive.d.ts +2 -0
- package/dist/cjs/test/descriptor/derive.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/derive.js +27 -0
- package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts +2 -0
- package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/fromFixedScriptWallet.js +145 -0
- package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts +2 -0
- package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/parse/PatternMatcher.js +120 -0
- package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts +2 -0
- package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/psbt/VirtualSize.js +71 -0
- package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts +2 -0
- package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/psbt/assertSatisfiable.js +56 -0
- package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts +2 -0
- package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/psbt/findDescriptors.js +70 -0
- package/dist/cjs/test/descriptor/psbt/psbt.d.ts +2 -0
- package/dist/cjs/test/descriptor/psbt/psbt.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/psbt/psbt.js +211 -0
- package/dist/cjs/test/dustThreshold.d.ts +2 -0
- package/dist/cjs/test/dustThreshold.d.ts.map +1 -0
- package/dist/cjs/test/dustThreshold.js +110 -0
- package/dist/cjs/test/paygo/attestation.d.ts +2 -0
- package/dist/cjs/test/paygo/attestation.d.ts.map +1 -0
- package/dist/cjs/test/paygo/attestation.js +23 -0
- package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts +2 -0
- package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts.map +1 -0
- package/dist/cjs/test/paygo/parsePayGoAttestation.js +75 -0
- package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts +9 -0
- package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
- package/dist/cjs/test/paygo/psbt/payGoAddressProof.js +163 -0
- package/dist/cjs/test/xOnlyPubkey.d.ts +2 -0
- package/dist/cjs/test/xOnlyPubkey.d.ts.map +1 -0
- package/dist/cjs/test/xOnlyPubkey.js +18 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/Output.d.ts +43 -0
- package/dist/esm/Output.js +53 -0
- package/dist/esm/bip322/index.d.ts +5 -0
- package/dist/esm/bip322/index.d.ts.map +1 -0
- package/dist/esm/bip322/index.js +5 -0
- package/dist/esm/bip322/toSign.d.ts +25 -0
- package/dist/esm/bip322/toSign.d.ts.map +1 -0
- package/dist/esm/bip322/toSign.js +120 -0
- package/dist/esm/bip322/toSpend.d.ts +22 -0
- package/dist/esm/bip322/toSpend.d.ts.map +1 -0
- package/dist/esm/bip322/toSpend.js +66 -0
- package/dist/esm/bip322/utils.d.ts +18 -0
- package/dist/esm/bip322/utils.d.ts.map +1 -0
- package/dist/esm/bip322/utils.js +77 -0
- package/dist/esm/bip322/verify.d.ts +12 -0
- package/dist/esm/bip322/verify.d.ts.map +1 -0
- package/dist/esm/bip322/verify.js +76 -0
- package/dist/esm/bip32utils.d.ts +16 -0
- package/dist/esm/bip32utils.d.ts.map +1 -0
- package/dist/esm/bip32utils.js +34 -0
- package/dist/esm/bip65/index.d.ts +2 -0
- package/dist/esm/bip65/index.js +2 -0
- package/dist/esm/bip65/locktime.d.ts +8 -0
- package/dist/esm/bip65/locktime.js +34 -0
- package/dist/esm/descriptor/DescriptorMap.d.ts +9 -0
- package/dist/{src → esm}/descriptor/DescriptorMap.d.ts.map +1 -1
- package/dist/esm/descriptor/DescriptorMap.js +6 -0
- package/dist/esm/descriptor/Output.d.ts +23 -0
- package/dist/{src → esm}/descriptor/Output.d.ts.map +1 -1
- package/dist/esm/descriptor/Output.js +32 -0
- package/dist/esm/descriptor/VirtualSize.d.ts +23 -0
- package/dist/{src → esm}/descriptor/VirtualSize.d.ts.map +1 -1
- package/dist/esm/descriptor/VirtualSize.js +94 -0
- package/dist/esm/descriptor/address.d.ts +5 -0
- package/dist/{src → esm}/descriptor/address.d.ts.map +1 -1
- package/dist/esm/descriptor/address.js +11 -0
- package/dist/esm/descriptor/derive.d.ts +13 -0
- package/dist/{src → esm}/descriptor/derive.d.ts.map +1 -1
- package/dist/esm/descriptor/derive.js +38 -0
- package/dist/esm/descriptor/fromFixedScriptWallet.d.ts +16 -0
- package/dist/{src → esm}/descriptor/fromFixedScriptWallet.d.ts.map +1 -1
- package/dist/esm/descriptor/fromFixedScriptWallet.js +51 -0
- package/dist/esm/descriptor/index.d.ts +11 -0
- package/dist/{src → esm}/descriptor/index.d.ts.map +1 -1
- package/dist/esm/descriptor/index.js +11 -0
- package/dist/esm/descriptor/parse/PatternMatcher.d.ts +14 -0
- package/dist/esm/descriptor/parse/PatternMatcher.d.ts.map +1 -0
- package/dist/esm/descriptor/parse/PatternMatcher.js +56 -0
- package/dist/esm/descriptor/psbt/assertSatisfiable.d.ts +20 -0
- package/dist/{src → esm}/descriptor/psbt/assertSatisfiable.d.ts.map +1 -1
- package/dist/esm/descriptor/psbt/assertSatisfiable.js +69 -0
- package/dist/esm/descriptor/psbt/createPsbt.d.ts +23 -0
- package/dist/esm/descriptor/psbt/createPsbt.d.ts.map +1 -0
- package/dist/esm/descriptor/psbt/createPsbt.js +69 -0
- package/dist/esm/descriptor/psbt/findDescriptors.d.ts +26 -0
- package/dist/{src → esm}/descriptor/psbt/findDescriptors.d.ts.map +1 -1
- package/dist/esm/descriptor/psbt/findDescriptors.js +94 -0
- package/dist/esm/descriptor/psbt/index.d.ts +7 -0
- package/dist/esm/descriptor/psbt/index.js +7 -0
- package/dist/esm/descriptor/psbt/parse.d.ts +27 -0
- package/dist/{src → esm}/descriptor/psbt/parse.d.ts.map +1 -1
- package/dist/esm/descriptor/psbt/parse.js +51 -0
- package/dist/esm/descriptor/psbt/sign.d.ts +26 -0
- package/dist/esm/descriptor/psbt/sign.d.ts.map +1 -0
- package/dist/esm/descriptor/psbt/sign.js +34 -0
- package/dist/esm/descriptor/psbt/wrap.d.ts +12 -0
- package/dist/{src → esm}/descriptor/psbt/wrap.d.ts.map +1 -1
- package/dist/esm/descriptor/psbt/wrap.js +38 -0
- package/dist/esm/dustThreshold.d.ts +4 -0
- package/dist/esm/dustThreshold.js +97 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/{src → esm}/index.d.ts.map +1 -1
- package/dist/esm/index.js +10 -0
- package/dist/esm/paygo/attestation.d.ts +11 -0
- package/dist/esm/paygo/attestation.d.ts.map +1 -0
- package/dist/esm/paygo/attestation.js +18 -0
- package/dist/esm/paygo/index.d.ts +3 -0
- package/dist/esm/paygo/index.d.ts.map +1 -0
- package/dist/esm/paygo/index.js +3 -0
- package/dist/esm/paygo/parsePayGoAttestation.d.ts +16 -0
- package/dist/esm/paygo/parsePayGoAttestation.d.ts.map +1 -0
- package/dist/esm/paygo/parsePayGoAttestation.js +43 -0
- package/dist/esm/paygo/psbt/Errors.d.ts +22 -0
- package/dist/esm/paygo/psbt/Errors.d.ts.map +1 -0
- package/dist/esm/paygo/psbt/Errors.js +35 -0
- package/dist/esm/paygo/psbt/index.d.ts +2 -0
- package/dist/esm/paygo/psbt/index.d.ts.map +1 -0
- package/dist/esm/paygo/psbt/index.js +2 -0
- package/dist/esm/paygo/psbt/payGoAddressProof.d.ts +29 -0
- package/dist/esm/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
- package/dist/esm/paygo/psbt/payGoAddressProof.js +85 -0
- package/dist/esm/testutil/descriptor/descriptors.d.ts +13 -0
- package/dist/esm/testutil/descriptor/descriptors.d.ts.map +1 -0
- package/dist/esm/testutil/descriptor/descriptors.js +150 -0
- package/dist/esm/testutil/descriptor/index.d.ts +4 -0
- package/dist/esm/testutil/descriptor/index.js +4 -0
- package/dist/esm/testutil/descriptor/mock.utils.d.ts +36 -0
- package/dist/esm/testutil/descriptor/mock.utils.d.ts.map +1 -0
- package/dist/esm/testutil/descriptor/mock.utils.js +53 -0
- package/dist/esm/testutil/descriptor/psbt.utils.d.ts +4 -0
- package/dist/{src → esm}/testutil/descriptor/psbt.utils.d.ts.map +1 -1
- package/dist/esm/testutil/descriptor/psbt.utils.js +17 -0
- package/dist/esm/testutil/fixtures.utils.d.ts +15 -0
- package/dist/{src → esm}/testutil/fixtures.utils.js +5 -42
- package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
- package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
- package/dist/esm/testutil/generatePayGoAttestationProof.utils.js +32 -0
- package/dist/esm/testutil/index.d.ts +6 -0
- package/dist/{src → esm}/testutil/index.d.ts.map +1 -1
- package/dist/esm/testutil/index.js +6 -0
- package/dist/esm/testutil/key.utils.d.ts +16 -0
- package/dist/{src → esm}/testutil/key.utils.d.ts.map +1 -1
- package/dist/esm/testutil/key.utils.js +22 -0
- package/dist/esm/testutil/toPlainObject.utils.d.ts +11 -0
- package/dist/{src → esm}/testutil/toPlainObject.utils.d.ts.map +1 -1
- package/dist/esm/testutil/toPlainObject.utils.js +85 -0
- package/dist/esm/testutil/trimMessagePrefix.d.ts +11 -0
- package/dist/esm/testutil/trimMessagePrefix.d.ts.map +1 -0
- package/dist/esm/testutil/trimMessagePrefix.js +24 -0
- package/dist/esm/xOnlyPubkey.d.ts +2 -0
- package/dist/esm/xOnlyPubkey.js +15 -0
- package/package.json +50 -25
- package/dist/src/Output.js +0 -60
- package/dist/src/bip32utils.d.ts +0 -16
- package/dist/src/bip32utils.d.ts.map +0 -1
- package/dist/src/bip32utils.js +0 -72
- package/dist/src/bip65/locktime.js +0 -37
- package/dist/src/descriptor/DescriptorMap.js +0 -9
- package/dist/src/descriptor/Output.js +0 -41
- package/dist/src/descriptor/VirtualSize.js +0 -100
- package/dist/src/descriptor/derive.js +0 -45
- package/dist/src/descriptor/fromFixedScriptWallet.js +0 -88
- package/dist/src/descriptor/psbt/assertSatisfiable.js +0 -74
- package/dist/src/descriptor/psbt/createPsbt.d.ts.map +0 -1
- package/dist/src/descriptor/psbt/createPsbt.js +0 -82
- package/dist/src/descriptor/psbt/findDescriptors.js +0 -98
- package/dist/src/descriptor/psbt/parse.js +0 -87
- package/dist/src/descriptor/psbt/sign.d.ts.map +0 -1
- package/dist/src/descriptor/psbt/sign.js +0 -42
- package/dist/src/descriptor/psbt/wrap.js +0 -76
- package/dist/src/dustThreshold.js +0 -134
- package/dist/src/paygo/ExtractAddressPayGoAttestation.d.ts.map +0 -1
- package/dist/src/paygo/ExtractAddressPayGoAttestation.js +0 -44
- package/dist/src/paygo/index.d.ts +0 -2
- package/dist/src/paygo/index.d.ts.map +0 -1
- package/dist/src/testutil/descriptor/descriptors.d.ts.map +0 -1
- package/dist/src/testutil/descriptor/descriptors.js +0 -125
- package/dist/src/testutil/descriptor/mock.utils.d.ts.map +0 -1
- package/dist/src/testutil/descriptor/mock.utils.js +0 -91
- package/dist/src/testutil/descriptor/psbt.utils.js +0 -20
- package/dist/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +0 -1
- package/dist/src/testutil/generatePayGoAttestationProof.utils.js +0 -43
- package/dist/src/testutil/key.utils.js +0 -59
- package/dist/src/testutil/toPlainObject.utils.js +0 -75
- package/dist/src/xOnlyPubkey.js +0 -18
- /package/dist/{src → cjs/src}/Output.d.ts +0 -0
- /package/dist/{src → cjs/src}/bip65/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/bip65/locktime.d.ts +0 -0
- /package/dist/{src → cjs/src}/descriptor/psbt/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/dustThreshold.d.ts +0 -0
- /package/dist/{src → cjs/src}/testutil/descriptor/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/testutil/descriptor/psbt.utils.d.ts +0 -0
- /package/dist/{src → cjs/src}/testutil/fixtures.utils.d.ts +0 -0
- /package/dist/{src → cjs/src}/testutil/toPlainObject.utils.d.ts +0 -0
- /package/dist/{src → cjs/src}/xOnlyPubkey.d.ts +0 -0
- /package/dist/{src → esm}/Output.d.ts.map +0 -0
- /package/dist/{src → esm}/bip65/index.d.ts.map +0 -0
- /package/dist/{src → esm}/bip65/locktime.d.ts.map +0 -0
- /package/dist/{src → esm}/descriptor/psbt/index.d.ts.map +0 -0
- /package/dist/{src → esm}/dustThreshold.d.ts.map +0 -0
- /package/dist/{src → esm}/testutil/descriptor/index.d.ts.map +0 -0
- /package/dist/{src → esm}/testutil/fixtures.utils.d.ts.map +0 -0
- /package/dist/{src → esm}/xOnlyPubkey.d.ts.map +0 -0
|
@@ -0,0 +1,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvZGVzY3JpcHRvci9wc2J0L3BzYnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsOERBQWdEO0FBQ2hELG1EQUErRTtBQUMvRSxnREFBMEQ7QUFFMUQsd0RBQW9IO0FBQ3BILG9EQUFpRTtBQUNqRSxpRUFVMEM7QUFDMUMsNERBQXNGO0FBRXRGLFNBQVMsU0FBUyxDQUFDLENBQVU7SUFDM0IsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMxQixPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxDQUFDLFlBQVksc0JBQVUsRUFBRSxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFJLENBQUMsWUFBWSxNQUFNLEVBQUUsQ0FBQztRQUN4QixPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksQ0FBQyxZQUFZLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUEsa0NBQXFCLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksQ0FBQyxZQUFZLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxPQUFPLElBQUEsZ0NBQW1CLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3hDLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxLQUFLLFVBQVUsbUJBQW1CLENBQUMsQ0FBUyxFQUFFLFFBQWdCLEVBQUUsS0FBYztJQUM1RSxRQUFRLEdBQUcsU0FBUyxHQUFHLGtDQUFrQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDO0lBQy9FLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixnQkFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxJQUFBLHFCQUFVLEVBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sUUFBUSxHQUFHLElBQUEsdUJBQVksRUFBQyxHQUFHLENBQUMsQ0FBQztBQUNuQyxNQUFNLFNBQVMsR0FBRyxJQUFBLHVCQUFZLEVBQUMsR0FBRyxDQUFDLENBQUM7QUFFcEMsU0FBUyxPQUFPLENBQUMsQ0FBaUI7SUFDaEMsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hCLE9BQU8saUJBQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFjRCxTQUFTLFNBQVMsQ0FDaEIsSUFBNEIsRUFDNUIsTUFBbUMsRUFDbkMsTUFBbUI7SUFFbkIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUN2QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDbkIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLDBCQUFhLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0IsSUFBQSxnQkFBTSxFQUFDLElBQUEsMkJBQW9CLEVBQUMsSUFBQSxrQkFBVyxFQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLGdDQUFnQyxDQUFDLENBQUM7UUFDekcsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUEsdUJBQVUsRUFBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pFLElBQUksU0FBNkMsQ0FBQztRQUNsRCxJQUFJLFNBQTRELENBQUM7UUFDakUsSUFBSSxlQUFtQyxDQUFDO1FBQ3hDLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVCLFNBQVMsR0FBRyxJQUFBLHVCQUFVLEVBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuRSxTQUFTLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDM0MsZUFBZSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsT0FBTztZQUNMLEtBQUssQ0FBQyxJQUFJO1lBQ1Y7Z0JBQ0UsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsTUFBTTtnQkFDTixTQUFTO2dCQUNULFNBQVM7Z0JBQ1QsZUFBZTthQUNoQjtTQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQWNELFNBQVMsa0JBQWtCLENBQUMsSUFBWSxFQUFFLFVBQXNCO0lBQzlELFFBQVEsQ0FBQyxjQUFjLElBQUksRUFBRSxFQUFFO1FBQzdCLEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLO1lBQy9DLE1BQU0sWUFBWSxHQUNoQixNQUFNLElBQUksVUFBVTtnQkFDbEIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJO2dCQUNqQixDQUFDLENBQUMsSUFBQSw0QkFBZSxFQUFDO29CQUNkLGNBQWMsRUFBRSxVQUFVLENBQUMsY0FBYztvQkFDekMsZUFBZSxFQUFFLElBQUEsMEJBQWEsRUFBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO29CQUNwRCxNQUFNLEVBQUUsVUFBVSxDQUFDLFVBQVU7aUJBQzlCLENBQUMsQ0FBQztZQUNULE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxNQUFNLE1BQU0sR0FBRyxJQUFBLGtCQUFLLEVBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVFLGdCQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4RSxNQUFNLG1CQUFtQixDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN6RyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sdUJBQXVCLEdBQWdCO0lBQzNDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO0lBQzlCLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDL0MsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0NBQzlELENBQUM7QUFFRixTQUFTLDBCQUEwQixDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUU7SUFDeEQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDdEQsT0FBTztRQUNMLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO1FBQzlCLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7UUFDM0MsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0tBQ3pELENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxDQUFxQjtJQUNuRCxrQkFBa0IsQ0FBQyxDQUFDLEVBQUU7UUFDcEIsY0FBYyxFQUFFLElBQUEsMEJBQWEsRUFBQyxDQUFDLEVBQUUsUUFBUSxDQUFDO1FBQzFDLFVBQVUsRUFBRSxJQUFBLDBCQUFhLEVBQUMsQ0FBQyxDQUFDO1FBQzVCLE1BQU0sRUFBRSx1QkFBdUI7S0FDaEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMscUNBQXFDLENBQzVDLENBQXFCLEVBQ3JCLGNBQTBCLEVBQzFCLG1CQUErQixFQUMvQixXQUFtQjtJQUVuQixNQUFNLGVBQWUsR0FBRyxJQUFBLDBCQUFhLEVBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsd0JBQVcsRUFBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEcsSUFBQSxnQkFBTSxFQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUIsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksV0FBVyxFQUFFLEVBQUU7UUFDeEMsY0FBYyxFQUFFLGNBQWM7UUFDOUIsSUFBSSxFQUFFLElBQUEscUJBQVEsRUFDWjtZQUNFLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFO1lBQzdELEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxtQkFBbUIsRUFBRTtTQUMvRSxFQUNEO1lBQ0U7Z0JBQ0UsVUFBVSxFQUFFLGVBQWU7Z0JBQzNCLEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDO2dCQUNsQixRQUFRLEVBQUUsSUFBSTthQUNmO1lBQ0QsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtTQUM3RCxDQUNGO1FBQ0QsTUFBTSxFQUFFO1lBQ04sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDOUIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7U0FDbkM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDbEMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUMxQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQzNDLGtCQUFrQixDQUFDLHVCQUF1QixFQUFFO0lBQzFDLGNBQWMsRUFBRSxJQUFBLDBCQUFhLEVBQUMsdUJBQXVCLEVBQUUsUUFBUSxDQUFDO0lBQ2hFLFVBQVUsRUFBRSxFQUFFO0lBQ2QsTUFBTSxFQUFFLDBCQUEwQixFQUFFO0NBQ3JDLENBQUMsQ0FBQztBQUVILENBQUM7SUFDQyxNQUFNLENBQUMsR0FBdUIsNkJBQTZCLENBQUM7SUFDNUQsTUFBTSxjQUFjLEdBQUcsSUFBQSwwQkFBYSxFQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNsRCxJQUFBLDhCQUFpQixFQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG1CQUFtQixFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ25FLHFDQUFxQyxDQUNuQyxDQUFDLEVBQ0QsY0FBYyxFQUNkLHNCQUFVLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxFQUNqRCxnQkFBZ0IsQ0FBQyxFQUFFLENBQ3BCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxrQkFBa0IsQ0FBQyxpQ0FBaUMsRUFBRTtJQUNwRCxjQUFjLEVBQUUsSUFBQSwwQkFBYSxFQUFDLDZCQUE2QixFQUFFLFFBQVEsQ0FBQztJQUN0RSxVQUFVLEVBQUUsRUFBRTtJQUNkLE1BQU0sRUFBRSwwQkFBMEIsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztDQUNwRCxDQUFDLENBQUM7QUFFSCxDQUFDO0lBQ0MsTUFBTSxjQUFjLEdBQUcsSUFBQSwwQkFBYSxFQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxRCxNQUFNLGVBQWUsR0FBRyxJQUFBLDBCQUFhLEVBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVELGtCQUFrQixDQUFDLDZCQUE2QixFQUFFO1FBQ2hELGNBQWM7UUFDZCxJQUFJLEVBQUUsSUFBQSxxQkFBUSxFQUNaO1lBQ0UsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDeEMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7U0FDekUsRUFDRDtZQUNFO2dCQUNFLFVBQVUsRUFBRSxlQUFlO2dCQUMzQixLQUFLLEVBQUUsQ0FBQztnQkFDUixLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDbEIsUUFBUSxFQUFFLElBQUk7YUFDZjtZQUNELEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7U0FDN0QsQ0FDRjtRQUNELE1BQU0sRUFBRSx1QkFBdUI7S0FDaEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSwgRUNQYWlyLCBFQ1BhaXJJbnRlcmZhY2UgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yLCBNaW5pc2NyaXB0IH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbmltcG9ydCB7IFBzYnRQYXJhbXMsIHBhcnNlLCB0b1V0eG9Qc2J0LCB0b1dyYXBwZWRQc2J0LCBQYXJzZWREZXNjcmlwdG9yVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zcmMvZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBnZXRGaXh0dXJlLCBnZXRLZXlUcmlwbGUgfSBmcm9tICcuLi8uLi8uLi9zcmMvdGVzdHV0aWwnO1xuaW1wb3J0IHtcbiAgY29udGFpbnNLZXksXG4gIERlc2NyaXB0b3JUZW1wbGF0ZSxcbiAgZ2V0RGVzY3JpcHRvcixcbiAgZ2V0UHNidFBhcmFtcyxcbiAgZ2V0VGFwTGVhZlNjcmlwdHMsXG4gIG1vY2tQc2J0LFxuICBtb2NrUHNidERlZmF1bHQsXG4gIHRvUGxhaW5PYmplY3RGcm9tUHNidCxcbiAgdG9QbGFpbk9iamVjdEZyb21UeCxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZ2V0TmV3U2lnbmF0dXJlQ291bnQsIHNpZ25XaXRoS2V5IH0gZnJvbSAnLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvcHNidC9zaWduJztcblxuZnVuY3Rpb24gbm9ybWFsaXplKHY6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKHR5cGVvZiB2ID09PSAnYmlnaW50Jykge1xuICAgIHJldHVybiB2LnRvU3RyaW5nKCk7XG4gIH1cbiAgaWYgKHYgaW5zdGFuY2VvZiBEZXNjcmlwdG9yKSB7XG4gICAgcmV0dXJuIHYudG9TdHJpbmcoKTtcbiAgfVxuICBpZiAodiBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgIHJldHVybiB2LnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuICBpZiAodiBpbnN0YW5jZW9mIHV0eG9saWIuUHNidCkge1xuICAgIHJldHVybiB0b1BsYWluT2JqZWN0RnJvbVBzYnQodik7XG4gIH1cbiAgaWYgKHYgaW5zdGFuY2VvZiB1dHhvbGliLlRyYW5zYWN0aW9uKSB7XG4gICAgcmV0dXJuIHRvUGxhaW5PYmplY3RGcm9tVHgodik7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICByZXR1cm4gdi5tYXAobm9ybWFsaXplKTtcbiAgfVxuICBpZiAodHlwZW9mIHYgPT09ICdvYmplY3QnICYmIHYgIT09IG51bGwpIHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHYpLmZsYXRNYXAoKFtrLCB2XSkgPT4gKHYgPT09IHVuZGVmaW5lZCA/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":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
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 attestation_1 = require("../../src/paygo/attestation");
|
|
8
|
+
const testutil_1 = require("../../src/testutil");
|
|
9
|
+
const payGoAddressProof_1 = require("./psbt/payGoAddressProof");
|
|
10
|
+
describe('createPayGoAttestationBuffer', () => {
|
|
11
|
+
it('should create a PayGo Attestation proof matching with original proof', () => {
|
|
12
|
+
const payGoAttestationProof = (0, attestation_1.createPayGoAttestationBuffer)(payGoAddressProof_1.addressToVerify, payGoAddressProof_1.addressProofEntropy, payGoAddressProof_1.network);
|
|
13
|
+
assert_1.default.strictEqual(payGoAttestationProof.toString(), payGoAddressProof_1.addressProofMsgBuffer.toString());
|
|
14
|
+
(0, assert_1.default)(Buffer.compare(payGoAttestationProof, payGoAddressProof_1.addressProofMsgBuffer) === 0);
|
|
15
|
+
});
|
|
16
|
+
it('should create a PayGo Attestation proof that does not match with different uuid', () => {
|
|
17
|
+
const addressProofBufferDiffUuid = (0, testutil_1.generatePayGoAttestationProof)('00000000-0000-0000-0000-000000000001', Buffer.from(payGoAddressProof_1.addressToVerify));
|
|
18
|
+
const payGoAttestationProof = (0, attestation_1.createPayGoAttestationBuffer)(payGoAddressProof_1.addressToVerify, payGoAddressProof_1.addressProofEntropy, payGoAddressProof_1.network);
|
|
19
|
+
assert_1.default.notStrictEqual(payGoAttestationProof.toString(), addressProofBufferDiffUuid.toString());
|
|
20
|
+
(0, assert_1.default)(Buffer.compare(payGoAttestationProof, addressProofBufferDiffUuid) !== 0);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3BheWdvL2F0dGVzdGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLDZEQUEyRTtBQUMzRSxpREFBbUU7QUFFbkUsZ0VBQWdIO0FBRWhILFFBQVEsQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLEVBQUU7SUFDNUMsRUFBRSxDQUFDLHNFQUFzRSxFQUFFLEdBQUcsRUFBRTtRQUM5RSxNQUFNLHFCQUFxQixHQUFHLElBQUEsMENBQTRCLEVBQUMsbUNBQWUsRUFBRSx1Q0FBbUIsRUFBRSwyQkFBTyxDQUFDLENBQUM7UUFDMUcsZ0JBQU0sQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLEVBQUUseUNBQXFCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN2RixJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSx5Q0FBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlGQUFpRixFQUFFLEdBQUcsRUFBRTtRQUN6RixNQUFNLDBCQUEwQixHQUFHLElBQUEsd0NBQTZCLEVBQzlELHNDQUFzQyxFQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFlLENBQUMsQ0FDN0IsQ0FBQztRQUNGLE1BQU0scUJBQXFCLEdBQUcsSUFBQSwwQ0FBNEIsRUFBQyxtQ0FBZSxFQUFFLHVDQUFtQixFQUFFLDJCQUFPLENBQUMsQ0FBQztRQUMxRyxnQkFBTSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSwwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQy9GLElBQUEsZ0JBQU0sRUFBQyxNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgY3JlYXRlUGF5R29BdHRlc3RhdGlvbkJ1ZmZlciB9IGZyb20gJy4uLy4uL3NyYy9wYXlnby9hdHRlc3RhdGlvbic7XG5pbXBvcnQgeyBnZW5lcmF0ZVBheUdvQXR0ZXN0YXRpb25Qcm9vZiB9IGZyb20gJy4uLy4uL3NyYy90ZXN0dXRpbCc7XG5cbmltcG9ydCB7IGFkZHJlc3NQcm9vZkVudHJvcHksIGFkZHJlc3NQcm9vZk1zZ0J1ZmZlciwgYWRkcmVzc1RvVmVyaWZ5LCBuZXR3b3JrIH0gZnJvbSAnLi9wc2J0L3BheUdvQWRkcmVzc1Byb29mJztcblxuZGVzY3JpYmUoJ2NyZWF0ZVBheUdvQXR0ZXN0YXRpb25CdWZmZXInLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgY3JlYXRlIGEgUGF5R28gQXR0ZXN0YXRpb24gcHJvb2YgbWF0Y2hpbmcgd2l0aCBvcmlnaW5hbCBwcm9vZicsICgpID0+IHtcbiAgICBjb25zdCBwYXlHb0F0dGVzdGF0aW9uUHJvb2YgPSBjcmVhdGVQYXlHb0F0dGVzdGF0aW9uQnVmZmVyKGFkZHJlc3NUb1ZlcmlmeSwgYWRkcmVzc1Byb29mRW50cm9weSwgbmV0d29yayk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBheUdvQXR0ZXN0YXRpb25Qcm9vZi50b1N0cmluZygpLCBhZGRyZXNzUHJvb2ZNc2dCdWZmZXIudG9TdHJpbmcoKSk7XG4gICAgYXNzZXJ0KEJ1ZmZlci5jb21wYXJlKHBheUdvQXR0ZXN0YXRpb25Qcm9vZiwgYWRkcmVzc1Byb29mTXNnQnVmZmVyKSA9PT0gMCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIGEgUGF5R28gQXR0ZXN0YXRpb24gcHJvb2YgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGRpZmZlcmVudCB1dWlkJywgKCkgPT4ge1xuICAgIGNvbnN0IGFkZHJlc3NQcm9vZkJ1ZmZlckRpZmZVdWlkID0gZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YoXG4gICAgICAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAxJyxcbiAgICAgIEJ1ZmZlci5mcm9tKGFkZHJlc3NUb1ZlcmlmeSlcbiAgICApO1xuICAgIGNvbnN0IHBheUdvQXR0ZXN0YXRpb25Qcm9vZiA9IGNyZWF0ZVBheUdvQXR0ZXN0YXRpb25CdWZmZXIoYWRkcmVzc1RvVmVyaWZ5LCBhZGRyZXNzUHJvb2ZFbnRyb3B5LCBuZXR3b3JrKTtcbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwocGF5R29BdHRlc3RhdGlvblByb29mLnRvU3RyaW5nKCksIGFkZHJlc3NQcm9vZkJ1ZmZlckRpZmZVdWlkLnRvU3RyaW5nKCkpO1xuICAgIGFzc2VydChCdWZmZXIuY29tcGFyZShwYXlHb0F0dGVzdGF0aW9uUHJvb2YsIGFkZHJlc3NQcm9vZkJ1ZmZlckRpZmZVdWlkKSAhPT0gMCk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsePayGoAttestation.d.ts","sourceRoot":"","sources":["../../../../test/paygo/parsePayGoAttestation.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,75 @@
|
|
|
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 paygo_1 = require("../../src/paygo");
|
|
38
|
+
const testutil_1 = require("../../src/testutil");
|
|
39
|
+
const attestation_1 = require("../../src/paygo/attestation");
|
|
40
|
+
const addressFromPubKeyBase58 = 'bitgoAddressToExtract';
|
|
41
|
+
const bufferAddressPubKeyB58 = Buffer.from(addressFromPubKeyBase58);
|
|
42
|
+
describe('parsePayGoAttestationProof with prefix', () => {
|
|
43
|
+
it('should extractAddressBufferFromPayGoAttestationProof properly', function () {
|
|
44
|
+
const paygoAttestationProof = (0, testutil_1.generatePayGoAttestationProof)(attestation_1.NIL_UUID, bufferAddressPubKeyB58);
|
|
45
|
+
const { entropy, address, uuid } = (0, paygo_1.parsePayGoAttestation)(paygoAttestationProof);
|
|
46
|
+
assert.ok(address.equals(bufferAddressPubKeyB58));
|
|
47
|
+
assert.deepStrictEqual(uuid.toString(), attestation_1.NIL_UUID);
|
|
48
|
+
assert.deepStrictEqual(entropy.length, 64);
|
|
49
|
+
});
|
|
50
|
+
it('should extract the paygo address paygo attestation proof given a non nilUUID', function () {
|
|
51
|
+
const paygoAttestationProof = (0, testutil_1.generatePayGoAttestationProof)('12345678-1234-4567-6890-231928472123', bufferAddressPubKeyB58);
|
|
52
|
+
const { entropy, address, uuid } = (0, paygo_1.parsePayGoAttestation)(paygoAttestationProof);
|
|
53
|
+
assert.ok(address.equals(bufferAddressPubKeyB58));
|
|
54
|
+
assert.deepStrictEqual(uuid.toString('utf-8'), '12345678-1234-4567-6890-231928472123');
|
|
55
|
+
assert.deepStrictEqual(entropy.length, 64);
|
|
56
|
+
});
|
|
57
|
+
it('should not extract the correct address given a uuid of wrong format', function () {
|
|
58
|
+
const paygoAttestationProof = (0, testutil_1.generatePayGoAttestationProof)('000000000000000-000000-0000000-000000-0000000000000000', bufferAddressPubKeyB58);
|
|
59
|
+
const { address } = (0, paygo_1.parsePayGoAttestation)(paygoAttestationProof);
|
|
60
|
+
assert.ok(!address.equals(bufferAddressPubKeyB58));
|
|
61
|
+
});
|
|
62
|
+
it('should throw an error if the paygo attestation proof is too short', function () {
|
|
63
|
+
assert.throws(() => (0, paygo_1.parsePayGoAttestation)(Buffer.from('shortproof-shrug', 'utf-8')), 'PayGo attestation proof is too short to contain a valid address.');
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('parsePayGoAttestation without prefix', function () {
|
|
67
|
+
it('should extract the parts of the proof without the prefix automatically', function () {
|
|
68
|
+
const payGoAttestationProof = (0, testutil_1.generatePayGoAttestationProof)(attestation_1.NIL_UUID, bufferAddressPubKeyB58, false);
|
|
69
|
+
const { entropy, address, uuid } = (0, paygo_1.parsePayGoAttestation)(payGoAttestationProof);
|
|
70
|
+
assert.ok(address.equals(bufferAddressPubKeyB58));
|
|
71
|
+
assert.deepStrictEqual(uuid.toString(), attestation_1.NIL_UUID);
|
|
72
|
+
assert.deepStrictEqual(entropy.length, 64);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VQYXlHb0F0dGVzdGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC9wYXlnby9wYXJzZVBheUdvQXR0ZXN0YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFFakMsMkNBQXdEO0FBQ3hELGlEQUFtRTtBQUNuRSw2REFBdUQ7QUFFdkQsTUFBTSx1QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQztBQUN4RCxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUVwRSxRQUFRLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO0lBQ3RELEVBQUUsQ0FBQywrREFBK0QsRUFBRTtRQUNsRSxNQUFNLHFCQUFxQixHQUFHLElBQUEsd0NBQTZCLEVBQUMsc0JBQVEsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQzlGLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUEsNkJBQXFCLEVBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNoRixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLHNCQUFRLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOEVBQThFLEVBQUU7UUFDakYsTUFBTSxxQkFBcUIsR0FBRyxJQUFBLHdDQUE2QixFQUN6RCxzQ0FBc0MsRUFDdEMsc0JBQXNCLENBQ3ZCLENBQUM7UUFDRixNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFBLDZCQUFxQixFQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDaEYsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsc0NBQXNDLENBQUMsQ0FBQztRQUN2RixNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMscUVBQXFFLEVBQUU7UUFDeEUsTUFBTSxxQkFBcUIsR0FBRyxJQUFBLHdDQUE2QixFQUN6RCx3REFBd0QsRUFDeEQsc0JBQXNCLENBQ3ZCLENBQUM7UUFDRixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBQSw2QkFBcUIsRUFBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxtRUFBbUUsRUFBRTtRQUN0RSxNQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRSxDQUFDLElBQUEsNkJBQXFCLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUNyRSxrRUFBa0UsQ0FDbkUsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMsc0NBQXNDLEVBQUU7SUFDL0MsRUFBRSxDQUFDLHdFQUF3RSxFQUFFO1FBQzNFLE1BQU0scUJBQXFCLEdBQUcsSUFBQSx3Q0FBNkIsRUFBQyxzQkFBUSxFQUFFLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JHLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUEsNkJBQXFCLEVBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNoRixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLHNCQUFRLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBwYXJzZVBheUdvQXR0ZXN0YXRpb24gfSBmcm9tICcuLi8uLi9zcmMvcGF5Z28nO1xuaW1wb3J0IHsgZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YgfSBmcm9tICcuLi8uLi9zcmMvdGVzdHV0aWwnO1xuaW1wb3J0IHsgTklMX1VVSUQgfSBmcm9tICcuLi8uLi9zcmMvcGF5Z28vYXR0ZXN0YXRpb24nO1xuXG5jb25zdCBhZGRyZXNzRnJvbVB1YktleUJhc2U1OCA9ICdiaXRnb0FkZHJlc3NUb0V4dHJhY3QnO1xuY29uc3QgYnVmZmVyQWRkcmVzc1B1YktleUI1OCA9IEJ1ZmZlci5mcm9tKGFkZHJlc3NGcm9tUHViS2V5QmFzZTU4KTtcblxuZGVzY3JpYmUoJ3BhcnNlUGF5R29BdHRlc3RhdGlvblByb29mIHdpdGggcHJlZml4JywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIGV4dHJhY3RBZGRyZXNzQnVmZmVyRnJvbVBheUdvQXR0ZXN0YXRpb25Qcm9vZiBwcm9wZXJseScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwYXlnb0F0dGVzdGF0aW9uUHJvb2YgPSBnZW5lcmF0ZVBheUdvQXR0ZXN0YXRpb25Qcm9vZihOSUxfVVVJRCwgYnVmZmVyQWRkcmVzc1B1YktleUI1OCk7XG4gICAgY29uc3QgeyBlbnRyb3B5LCBhZGRyZXNzLCB1dWlkIH0gPSBwYXJzZVBheUdvQXR0ZXN0YXRpb24ocGF5Z29BdHRlc3RhdGlvblByb29mKTtcbiAgICBhc3NlcnQub2soYWRkcmVzcy5lcXVhbHMoYnVmZmVyQWRkcmVzc1B1YktleUI1OCkpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodXVpZC50b1N0cmluZygpLCBOSUxfVVVJRCk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChlbnRyb3B5Lmxlbmd0aCwgNjQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4dHJhY3QgdGhlIHBheWdvIGFkZHJlc3MgcGF5Z28gYXR0ZXN0YXRpb24gcHJvb2YgZ2l2ZW4gYSBub24gbmlsVVVJRCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwYXlnb0F0dGVzdGF0aW9uUHJvb2YgPSBnZW5lcmF0ZVBheUdvQXR0ZXN0YXRpb25Qcm9vZihcbiAgICAgICcxMjM0NTY3OC0xMjM0LTQ1NjctNjg5MC0yMzE5Mjg0NzIxMjMnLFxuICAgICAgYnVmZmVyQWRkcmVzc1B1YktleUI1OFxuICAgICk7XG4gICAgY29uc3QgeyBlbnRyb3B5LCBhZGRyZXNzLCB1dWlkIH0gPSBwYXJzZVBheUdvQXR0ZXN0YXRpb24ocGF5Z29BdHRlc3RhdGlvblByb29mKTtcbiAgICBhc3NlcnQub2soYWRkcmVzcy5lcXVhbHMoYnVmZmVyQWRkcmVzc1B1YktleUI1OCkpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodXVpZC50b1N0cmluZygndXRmLTgnKSwgJzEyMzQ1Njc4LTEyMzQtNDU2Ny02ODkwLTIzMTkyODQ3MjEyMycpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZW50cm9weS5sZW5ndGgsIDY0KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgZXh0cmFjdCB0aGUgY29ycmVjdCBhZGRyZXNzIGdpdmVuIGEgdXVpZCBvZiB3cm9uZyBmb3JtYXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF5Z29BdHRlc3RhdGlvblByb29mID0gZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YoXG4gICAgICAnMDAwMDAwMDAwMDAwMDAwLTAwMDAwMC0wMDAwMDAwLTAwMDAwMC0wMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgIGJ1ZmZlckFkZHJlc3NQdWJLZXlCNThcbiAgICApO1xuICAgIGNvbnN0IHsgYWRkcmVzcyB9ID0gcGFyc2VQYXlHb0F0dGVzdGF0aW9uKHBheWdvQXR0ZXN0YXRpb25Qcm9vZik7XG4gICAgYXNzZXJ0Lm9rKCFhZGRyZXNzLmVxdWFscyhidWZmZXJBZGRyZXNzUHViS2V5QjU4KSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHBheWdvIGF0dGVzdGF0aW9uIHByb29mIGlzIHRvbyBzaG9ydCcsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgKCkgPT4gcGFyc2VQYXlHb0F0dGVzdGF0aW9uKEJ1ZmZlci5mcm9tKCdzaG9ydHByb29mLXNocnVnJywgJ3V0Zi04JykpLFxuICAgICAgJ1BheUdvIGF0dGVzdGF0aW9uIHByb29mIGlzIHRvbyBzaG9ydCB0byBjb250YWluIGEgdmFsaWQgYWRkcmVzcy4nXG4gICAgKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3BhcnNlUGF5R29BdHRlc3RhdGlvbiB3aXRob3V0IHByZWZpeCcsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3Nob3VsZCBleHRyYWN0IHRoZSBwYXJ0cyBvZiB0aGUgcHJvb2Ygd2l0aG91dCB0aGUgcHJlZml4IGF1dG9tYXRpY2FsbHknLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF5R29BdHRlc3RhdGlvblByb29mID0gZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YoTklMX1VVSUQsIGJ1ZmZlckFkZHJlc3NQdWJLZXlCNTgsIGZhbHNlKTtcbiAgICBjb25zdCB7IGVudHJvcHksIGFkZHJlc3MsIHV1aWQgfSA9IHBhcnNlUGF5R29BdHRlc3RhdGlvbihwYXlHb0F0dGVzdGF0aW9uUHJvb2YpO1xuICAgIGFzc2VydC5vayhhZGRyZXNzLmVxdWFscyhidWZmZXJBZGRyZXNzUHViS2V5QjU4KSk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh1dWlkLnRvU3RyaW5nKCksIE5JTF9VVUlEKTtcbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGVudHJvcHkubGVuZ3RoLCA2NCk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
|
+
export declare const network: utxolib.Network;
|
|
3
|
+
export declare const attestationPubKey: Buffer<ArrayBufferLike>;
|
|
4
|
+
export declare const attestationPrvKey: Buffer<ArrayBufferLike>;
|
|
5
|
+
export declare const addressToVerify: string;
|
|
6
|
+
export declare const addressProofEntropy: Buffer<ArrayBuffer>;
|
|
7
|
+
export declare const addressProofMsgBuffer: Buffer<ArrayBuffer>;
|
|
8
|
+
export declare const sig: Buffer<ArrayBufferLike>;
|
|
9
|
+
//# sourceMappingURL=payGoAddressProof.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payGoAddressProof.d.ts","sourceRoot":"","sources":["../../../../../test/paygo/psbt/payGoAddressProof.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAehD,eAAO,MAAM,OAAO,iBAA2B,CAAC;AAgBhD,eAAO,MAAM,iBAAiB,yBAA2B,CAAC;AAC1D,eAAO,MAAM,iBAAiB,yBAA6B,CAAC;AAG5D,eAAO,MAAM,eAAe,QAI3B,CAAC;AAGF,eAAO,MAAM,mBAAmB,qBAAyB,CAAC;AAK1D,eAAO,MAAM,qBAAqB,qBAAkE,CAAC;AAGrG,eAAO,MAAM,GAAG,yBAAkE,CAAC"}
|