@bitgo/abstract-utxo 13.3.0 → 13.4.1
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/descriptor/validatePolicy.d.ts +15 -0
- package/dist/cjs/src/descriptor/validatePolicy.d.ts.map +1 -1
- package/dist/cjs/src/descriptor/validatePolicy.js +72 -3
- package/dist/cjs/src/impl/btc/tbtcstx.d.ts +1 -2
- package/dist/cjs/src/impl/btc/tbtcstx.d.ts.map +1 -1
- package/dist/cjs/src/impl/btc/tbtcstx.js +1 -4
- package/dist/cjs/src/impl/btc/tbtcstxsignet.d.ts +1 -2
- package/dist/cjs/src/impl/btc/tbtcstxsignet.d.ts.map +1 -1
- package/dist/cjs/src/impl/btc/tbtcstxsignet.js +1 -4
- package/dist/cjs/src/names.d.ts +1 -0
- package/dist/cjs/src/names.d.ts.map +1 -1
- package/dist/cjs/src/names.js +9 -1
- package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts +1 -0
- package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts.map +1 -1
- package/dist/cjs/src/offlineVault/TransactionExplanation.js +1 -1
- package/dist/cjs/src/offlineVault/descriptor/pox5.d.ts +9 -0
- package/dist/cjs/src/offlineVault/descriptor/pox5.d.ts.map +1 -0
- package/dist/cjs/src/offlineVault/descriptor/pox5.js +29 -0
- package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts.map +1 -1
- package/dist/cjs/src/offlineVault/descriptor/transaction.js +6 -1
- package/dist/cjs/src/recovery/RecoveryProvider.d.ts.map +1 -1
- package/dist/cjs/src/recovery/RecoveryProvider.js +25 -2
- package/dist/cjs/test/unit/offlineVault/pox5.d.ts +2 -0
- package/dist/cjs/test/unit/offlineVault/pox5.d.ts.map +1 -0
- package/dist/cjs/test/unit/offlineVault/pox5.js +207 -0
- package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.js +47 -1
- package/dist/cjs/test/unit/sweep.d.ts +2 -0
- package/dist/cjs/test/unit/sweep.d.ts.map +1 -0
- package/dist/cjs/test/unit/sweep.js +92 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/descriptor/validatePolicy.d.ts +15 -0
- package/dist/esm/descriptor/validatePolicy.d.ts.map +1 -1
- package/dist/esm/descriptor/validatePolicy.js +69 -3
- package/dist/esm/impl/btc/tbtcstx.d.ts +1 -2
- package/dist/esm/impl/btc/tbtcstx.d.ts.map +1 -1
- package/dist/esm/impl/btc/tbtcstx.js +1 -4
- package/dist/esm/impl/btc/tbtcstxsignet.d.ts +1 -2
- package/dist/esm/impl/btc/tbtcstxsignet.d.ts.map +1 -1
- package/dist/esm/impl/btc/tbtcstxsignet.js +1 -4
- package/dist/esm/names.d.ts +1 -0
- package/dist/esm/names.d.ts.map +1 -1
- package/dist/esm/names.js +9 -1
- package/dist/esm/offlineVault/TransactionExplanation.d.ts +1 -0
- package/dist/esm/offlineVault/TransactionExplanation.d.ts.map +1 -1
- package/dist/esm/offlineVault/TransactionExplanation.js +1 -1
- package/dist/esm/offlineVault/descriptor/pox5.d.ts +9 -0
- package/dist/esm/offlineVault/descriptor/pox5.d.ts.map +1 -0
- package/dist/esm/offlineVault/descriptor/pox5.js +26 -0
- package/dist/esm/offlineVault/descriptor/transaction.d.ts.map +1 -1
- package/dist/esm/offlineVault/descriptor/transaction.js +7 -2
- package/dist/esm/recovery/RecoveryProvider.d.ts.map +1 -1
- package/dist/esm/recovery/RecoveryProvider.js +26 -3
- package/package.json +10 -10
|
@@ -13,6 +13,21 @@ export declare function getValidatorEvery(validators: DescriptorValidationPolicy
|
|
|
13
13
|
export declare function getValidatorSome(validators: DescriptorValidationPolicy[]): DescriptorValidationPolicy;
|
|
14
14
|
export declare function getValidatorOneOfTemplates(names: string[]): DescriptorValidationPolicy;
|
|
15
15
|
export declare function getValidatorSignedByUserKey(): DescriptorValidationPolicy;
|
|
16
|
+
/**
|
|
17
|
+
* Accepts descriptors that are canonical PoX-5 lockup descriptors whose staker keys
|
|
18
|
+
* are the wallet keys.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getValidatorPox5Lockup(): DescriptorValidationPolicy;
|
|
21
|
+
/**
|
|
22
|
+
* Accepts descriptor groups where each descriptor individually satisfies at least one of
|
|
23
|
+
* the validators. Unlike `getValidatorSome`, different descriptors may match different validators.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getValidatorEachOneOf(validators: DescriptorValidationPolicy[]): DescriptorValidationPolicy;
|
|
26
|
+
/**
|
|
27
|
+
* Accepts the descriptors of a PoX-5 staking wallet: the regular 2-of-3 wallet descriptors
|
|
28
|
+
* together with PoX-5 lockup descriptors, all using the wallet keys.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getValidatorPox5Wallet(): DescriptorValidationPolicy;
|
|
16
31
|
export declare class DescriptorPolicyValidationError extends Error {
|
|
17
32
|
constructor(ds: NamedDescriptorNative[], policy: DescriptorValidationPolicy);
|
|
18
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validatePolicy.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/validatePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"validatePolicy.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/validatePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAgC,MAAM,kBAAkB,CAAC;AAGvE,OAAO,EAAqB,eAAe,EAAE,qBAAqB,EAA2B,MAAM,mBAAmB,CAAC;AAEvH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAErD,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,CAAC,GAAG,EAAE,qBAAqB,EAAE,EAAE,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC;CACxE;AAED,eAAO,MAAM,cAAc,EAAE,0BAG5B,CAAC;AAWF,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,0BAA0B,CAevF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,0BAA0B,EAAE,GAAG,0BAA0B,CAOtG;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,0BAA0B,EAAE,GAAG,0BAA0B,CAOrG;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAEtF;AAED,wBAAgB,2BAA2B,IAAI,0BAA0B,CAQxE;AAwBD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,0BAA0B,CAOnE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,0BAA0B,EAAE,GAAG,0BAA0B,CAO1G;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,0BAA0B,CAEnE;AAED,qBAAa,+BAAgC,SAAQ,KAAK;gBAC5C,EAAE,EAAE,qBAAqB,EAAE,EAAE,MAAM,EAAE,0BAA0B;CAG5E;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,qBAAqB,EAAE,EACpC,MAAM,EAAE,0BAA0B,EAClC,UAAU,EAAE,SAAS,GACpB,IAAI,CAIN;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,eAAe,EAAE,EAC9B,UAAU,EAAE,SAAS,EACrB,MAAM,EAAE,0BAA0B,GACjC,aAAa,CAMf;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,0BAA0B,CAmBhF"}
|
|
@@ -6,9 +6,13 @@ exports.getValidatorEvery = getValidatorEvery;
|
|
|
6
6
|
exports.getValidatorSome = getValidatorSome;
|
|
7
7
|
exports.getValidatorOneOfTemplates = getValidatorOneOfTemplates;
|
|
8
8
|
exports.getValidatorSignedByUserKey = getValidatorSignedByUserKey;
|
|
9
|
+
exports.getValidatorPox5Lockup = getValidatorPox5Lockup;
|
|
10
|
+
exports.getValidatorEachOneOf = getValidatorEachOneOf;
|
|
11
|
+
exports.getValidatorPox5Wallet = getValidatorPox5Wallet;
|
|
9
12
|
exports.assertDescriptorPolicy = assertDescriptorPolicy;
|
|
10
13
|
exports.toDescriptorMapValidate = toDescriptorMapValidate;
|
|
11
14
|
exports.getPolicyForEnv = getPolicyForEnv;
|
|
15
|
+
const utxo_descriptors_1 = require("@bitgo/utxo-descriptors");
|
|
12
16
|
const wasm_utxo_1 = require("@bitgo/wasm-utxo");
|
|
13
17
|
const builder_1 = require("./builder");
|
|
14
18
|
const NamedDescriptor_1 = require("./NamedDescriptor");
|
|
@@ -16,13 +20,23 @@ exports.policyAllowAll = {
|
|
|
16
20
|
name: 'allowAll',
|
|
17
21
|
validate: () => true,
|
|
18
22
|
};
|
|
23
|
+
function tryParseDescriptor(descriptor) {
|
|
24
|
+
try {
|
|
25
|
+
return (0, builder_1.parseDescriptor)(descriptor);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// not a descriptor we know how to parse: it cannot match any template
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
19
32
|
function getValidatorDescriptorTemplate(name) {
|
|
20
33
|
return {
|
|
21
34
|
name: 'descriptorTemplate(' + name + ')',
|
|
22
35
|
validate(arr, walletKeys) {
|
|
23
36
|
return arr.every((d) => {
|
|
24
|
-
const parsed = (
|
|
25
|
-
return (parsed
|
|
37
|
+
const parsed = tryParseDescriptor(d.value);
|
|
38
|
+
return (parsed !== undefined &&
|
|
39
|
+
parsed.name === name &&
|
|
26
40
|
parsed.keys.length === walletKeys.length &&
|
|
27
41
|
parsed.keys.every((k, i) => k.toBase58() === walletKeys[i].neutered().toBase58()));
|
|
28
42
|
});
|
|
@@ -57,6 +71,59 @@ function getValidatorSignedByUserKey() {
|
|
|
57
71
|
},
|
|
58
72
|
};
|
|
59
73
|
}
|
|
74
|
+
function isCanonicalPox5Lockup(descriptor, walletKeys) {
|
|
75
|
+
try {
|
|
76
|
+
const info = utxo_descriptors_1.pox5.parsePox5LockupDescriptor(descriptor);
|
|
77
|
+
if (!info) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
// Rebuilding the canonical descriptor from the wallet keys checks both that the
|
|
81
|
+
// staker keys are the wallet keys (with the `/*` derivation) and that the
|
|
82
|
+
// descriptor has no non-canonical encoding.
|
|
83
|
+
const canonical = utxo_descriptors_1.pox5.createPox5LockupDescriptor({
|
|
84
|
+
unlockHeight: info.unlockHeight,
|
|
85
|
+
stakerCommitment: info.stakerCommitment,
|
|
86
|
+
earlyExitKey: info.earlyExitKey,
|
|
87
|
+
stakerKeys: [walletKeys[0], walletKeys[1], walletKeys[2]],
|
|
88
|
+
});
|
|
89
|
+
return canonical.toString() === descriptor.toString();
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// malformed lockup parameters
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Accepts descriptors that are canonical PoX-5 lockup descriptors whose staker keys
|
|
98
|
+
* are the wallet keys.
|
|
99
|
+
*/
|
|
100
|
+
function getValidatorPox5Lockup() {
|
|
101
|
+
return {
|
|
102
|
+
name: 'pox5Lockup',
|
|
103
|
+
validate(arr, walletKeys) {
|
|
104
|
+
return arr.every((d) => isCanonicalPox5Lockup(d.value, walletKeys));
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Accepts descriptor groups where each descriptor individually satisfies at least one of
|
|
110
|
+
* the validators. Unlike `getValidatorSome`, different descriptors may match different validators.
|
|
111
|
+
*/
|
|
112
|
+
function getValidatorEachOneOf(validators) {
|
|
113
|
+
return {
|
|
114
|
+
name: 'eachOneOf(' + validators.map((v) => v.name).join(',') + ')',
|
|
115
|
+
validate(arr, walletKeys) {
|
|
116
|
+
return arr.every((d) => validators.some((v) => v.validate([d], walletKeys)));
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Accepts the descriptors of a PoX-5 staking wallet: the regular 2-of-3 wallet descriptors
|
|
122
|
+
* together with PoX-5 lockup descriptors, all using the wallet keys.
|
|
123
|
+
*/
|
|
124
|
+
function getValidatorPox5Wallet() {
|
|
125
|
+
return getValidatorEachOneOf([getValidatorDescriptorTemplate('Wsh2Of3'), getValidatorPox5Lockup()]);
|
|
126
|
+
}
|
|
60
127
|
class DescriptorPolicyValidationError extends Error {
|
|
61
128
|
constructor(ds, policy) {
|
|
62
129
|
super(`Descriptors ${ds.map((d) => d.value.toString())} does not match policy ${policy.name}`);
|
|
@@ -84,6 +151,8 @@ function getPolicyForEnv(env) {
|
|
|
84
151
|
getValidatorDescriptorTemplate('Wsh2Of3CltvDrop'),
|
|
85
152
|
// allow sBTC peg-in deposit descriptors where the reclaim keys match the wallet keys
|
|
86
153
|
getValidatorDescriptorTemplate('SbtcDeposit'),
|
|
154
|
+
// allow 2-of-3 wallet descriptors together with PoX-5 lockup descriptors (stacks staking)
|
|
155
|
+
getValidatorPox5Wallet(),
|
|
87
156
|
// allow all descriptors signed by the user key
|
|
88
157
|
getValidatorSignedByUserKey(),
|
|
89
158
|
]);
|
|
@@ -91,4 +160,4 @@ function getPolicyForEnv(env) {
|
|
|
91
160
|
return exports.policyAllowAll;
|
|
92
161
|
}
|
|
93
162
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVQb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci92YWxpZGF0ZVBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFxQkEsd0VBY0M7QUFFRCw4Q0FPQztBQUVELDRDQU9DO0FBRUQsZ0VBRUM7QUFFRCxrRUFRQztBQVFELHdEQVFDO0FBRUQsMERBVUM7QUFFRCwwQ0FpQkM7QUFqSEQsZ0RBQTJEO0FBRTNELHVDQUE0QztBQUM1Qyx1REFBdUg7QUFZMUcsUUFBQSxjQUFjLEdBQStCO0lBQ3hELElBQUksRUFBRSxVQUFVO0lBQ2hCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO0NBQ3JCLENBQUM7QUFFRixTQUFnQiw4QkFBOEIsQ0FBQyxJQUFZO0lBQ3pELE9BQU87UUFDTCxJQUFJLEVBQUUscUJBQXFCLEdBQUcsSUFBSSxHQUFHLEdBQUc7UUFDeEMsUUFBUSxDQUFDLEdBQTRCLEVBQUUsVUFBcUI7WUFDMUQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUEseUJBQWUsRUFBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hDLE9BQU8sQ0FDTCxNQUFNLENBQUMsSUFBSSxLQUFLLElBQUk7b0JBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxNQUFNO29CQUN4QyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDbEYsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQs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RSxDQUFDO1FBQ1osS0FBSyxXQUFXLENBQUM7UUFDakIsS0FBSyxNQUFNO1lBQ1QsT0FBTyxnQkFBZ0IsQ0FBQztnQkFDdEIsMEVBQTBFO2dCQUMxRSw4QkFBOEIsQ0FBQyxTQUFTLENBQUM7Z0JBQ3pDLDhGQUE4RjtnQkFDOUYsOEJBQThCLENBQUMsaUJBQWlCLENBQUM7Z0JBQ2pELHFGQUFxRjtnQkFDckYsOEJBQThCLENBQUMsYUFBYSxDQUFDO2dCQUM3QywrQ0FBK0M7Z0JBQy9DLDJCQUEyQixFQUFFO2FBQzlCLENBQUMsQ0FBQztRQUNMO1lBQ0UsT0FBTyxzQkFBYyxDQUFDO0lBQzFCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnROYW1lLCBUcmlwbGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgYmlwMzIsIGRlc2NyaXB0b3JXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgcGFyc2VEZXNjcmlwdG9yIH0gZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCB7IGhhc1ZhbGlkU2lnbmF0dXJlLCBOYW1lZERlc2NyaXB0b3IsIE5hbWVkRGVzY3JpcHRvck5hdGl2ZSwgdG9OYW1lZERlc2NyaXB0b3JOYXRpdmUgfSBmcm9tICcuL05hbWVkRGVzY3JpcHRvcic7XG5cbmltcG9ydCB0eXBlIHsgRGVzY3JpcHRvck1hcCB9IGZyb20gJy4vaW5kZXgnO1xuXG5leHBvcnQgdHlwZSBLZXlUcmlwbGUgPSBUcmlwbGU8YmlwMzIuQklQMzJJbnRlcmZhY2U+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgbmFtZTogc3RyaW5nO1xuXG4gIHZhbGlkYXRlKGFycjogTmFtZWREZXNjcmlwdG9yTmF0aXZlW10sIHdhbGxldEtleXM6IEtleVRyaXBsZSk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBwb2xpY3lBbGxvd0FsbDogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kgPSB7XG4gIG5hbWU6ICdhbGxvd0FsbCcsXG4gIHZhbGlkYXRlOiAoKSA9PiB0cnVlLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvckRlc2NyaXB0b3JUZW1wbGF0ZShuYW1lOiBzdHJpbmcpOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Rlc2NyaXB0b3JUZW1wbGF0ZSgnICsgbmFtZSArICcpJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBhcnIuZXZlcnkoKGQpID0+IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VEZXNjcmlwdG9yKGQudmFsdWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHBhcnNlZC5uYW1lID09PSBuYW1lICYmXG4gICAgICAgICAgcGFyc2VkLmtleXMubGVuZ3RoID09PSB3YWxsZXRLZXlzLmxlbmd0aCAmJlxuICAgICAgICAgIHBhcnNlZC5rZXlzLmV2ZXJ5KChrLCBpKSA9PiBrLnRvQmFzZTU4KCkgPT09IHdhbGxldEtleXNbaV0ubmV1dGVyZWQoKS50b0Jhc2U1OCgpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvckV2ZXJ5KHZhbGlkYXRvcnM6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5W10pOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2V2ZXJ5KCcgKyB2YWxpZGF0b3JzLm1hcCgodikgPT4gdi5uYW1lKS5qb2luKCcsJykgKyAnKScsXG4gICAgdmFsaWRhdGUoYXJyOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSwgd2FsbGV0S2V5czogS2V5VHJpcGxlKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdmFsaWRhdG9ycy5ldmVyeSgodikgPT4gdi52YWxpZGF0ZShhcnIsIHdhbGxldEtleXMpKTtcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yU29tZSh2YWxpZGF0b3JzOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeVtdKTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzb21lKCcgKyB2YWxpZGF0b3JzLm1hcCgodikgPT4gdi5uYW1lKS5qb2luKCcsJykgKyAnKScsXG4gICAgdmFsaWRhdGUoYXJyOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSwgd2FsbGV0S2V5czogS2V5VHJpcGxlKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdmFsaWRhdG9ycy5zb21lKCh2KSA9PiB2LnZhbGlkYXRlKGFyciwgd2FsbGV0S2V5cykpO1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZGF0b3JPbmVPZlRlbXBsYXRlcyhuYW1lczogc3RyaW5nW10pOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiBnZXRWYWxpZGF0b3JTb21lKG5hbWVzLm1hcChnZXRWYWxpZGF0b3JEZXNjcmlwdG9yVGVtcGxhdGUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvclNpZ25lZEJ5VXNlcktleSgpOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NpZ25lZEJ5VXNlcicsXG4gICAgdmFsaWRhdGUoYXJyOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSwgd2FsbGV0S2V5czogS2V5VHJpcGxlKTogYm9vbGVhbiB7XG4gICAgICAvLyB0aGUgZmlyc3Qga2V5IGlzIHRoZSB1c2VyIGtleSwgYnkgY29udmVudGlvblxuICAgICAgcmV0dXJuIGFyci5ldmVyeSgoZCkgPT4gaGFzVmFsaWRTaWduYXR1cmUoZC52YWx1ZSwgd2FsbGV0S2V5c1swXSwgZC5zaWduYXR1cmVzID8/IFtdKSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIERlc2NyaXB0b3JQb2xpY3lWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGRzOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSwgcG9saWN5OiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSkge1xuICAgIHN1cGVyKGBEZXNjcmlwdG9ycyAke2RzLm1hcCgoZCkgPT4gZC52YWx1ZS50b1N0cmluZygpKX0gZG9lcyBub3QgbWF0Y2ggcG9saWN5ICR7cG9saWN5Lm5hbWV9YCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydERlc2NyaXB0b3JQb2xpY3koXG4gIGRlc2NyaXB0b3JzOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSxcbiAgcG9saWN5OiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSxcbiAgd2FsbGV0S2V5czogS2V5VHJpcGxlXG4pOiB2b2lkIHtcbiAgaWYgKCFwb2xpY3kudmFsaWRhdGUoZGVzY3JpcHRvcnMsIHdhbGxldEtleXMpKSB7XG4gICAgdGhyb3cgbmV3IERlc2NyaXB0b3JQb2xpY3lWYWxpZGF0aW9uRXJyb3IoZGVzY3JpcHRvcnMsIHBvbGljeSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvRGVzY3JpcHRvck1hcFZhbGlkYXRlKFxuICBkZXNjcmlwdG9yczogTmFtZWREZXNjcmlwdG9yW10sXG4gIHdhbGxldEtleXM6IEtleVRyaXBsZSxcbiAgcG9saWN5OiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeVxuKTogRGVzY3JpcHRvck1hcCB7XG4gIGNvbnN0IG5hbWVkRGVzY3JpcHRvcnNOYXRpdmU6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdID0gZGVzY3JpcHRvcnMubWFwKCh2KSA9PlxuICAgIHRvTmFtZWREZXNjcmlwdG9yTmF0aXZlKHYsICdkZXJpdmFibGUnKVxuICApO1xuICBhc3NlcnREZXNjcmlwdG9yUG9saWN5KG5hbWVkRGVzY3JpcHRvcnNOYXRpdmUsIHBvbGljeSwgd2FsbGV0S2V5cyk7XG4gIHJldHVybiBkZXNjcmlwdG9yV2FsbGV0LnRvRGVzY3JpcHRvck1hcChuYW1lZERlc2NyaXB0b3JzTmF0aXZlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvbGljeUZvckVudihlbnY6IEVudmlyb25tZW50TmFtZSk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgc3dpdGNoIChlbnYpIHtcbiAgICBjYXNlICdhZG1pblByb2QnOlxuICAgIGNhc2UgJ3Byb2QnOlxuICAgICAgcmV0dXJuIGdldFZhbGlkYXRvclNvbWUoW1xuICAgICAgICAvLyBhbGxvdyAyLW9mLTMtaXNoIGRlc2NyaXB0b3IgZ3JvdXBzIHdoZXJlIHRoZSBrZXlzIG1hdGNoIHRoZSB3YWxsZXQga2V5c1xuICAgICAgICBnZXRWYWxpZGF0b3JEZXNjcmlwdG9yVGVtcGxhdGUoJ1dzaDJPZjMnKSxcbiAgICAgICAgLy8gYWxsb3cgZGVzY3JpcHRvciBncm91cHMgd2hlcmUgYWxsIGtleXMgbWF0Y2ggdGhlIHdhbGxldCBrZXlzIHBsdXMgT1BfRFJPUCAoY29yZWRhbyBzdGFraW5nKVxuICAgICAgICBnZXRWYWxpZGF0b3JEZXNjcmlwdG9yVGVtcGxhdGUoJ1dzaDJPZjNDbHR2RHJvcCcpLFxuICAgICAgICAvLyBhbGxvdyBzQlRDIHBlZy1pbiBkZXBvc2l0IGRlc2NyaXB0b3JzIHdoZXJlIHRoZSByZWNsYWltIGtleXMgbWF0Y2ggdGhlIHdhbGxldCBrZXlzXG4gICAgICAgIGdldFZhbGlkYXRvckRlc2NyaXB0b3JUZW1wbGF0ZSgnU2J0Y0RlcG9zaXQnKSxcbiAgICAgICAgLy8gYWxsb3cgYWxsIGRlc2NyaXB0b3JzIHNpZ25lZCBieSB0aGUgdXNlciBrZXlcbiAgICAgICAgZ2V0VmFsaWRhdG9yU2lnbmVkQnlVc2VyS2V5KCksXG4gICAgICBdKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHBvbGljeUFsbG93QWxsO1xuICB9XG59XG4iXX0=
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVQb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci92YWxpZGF0ZVBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUErQkEsd0VBZUM7QUFFRCw4Q0FPQztBQUVELDRDQU9DO0FBRUQsZ0VBRUM7QUFFRCxrRUFRQztBQTRCRCx3REFPQztBQU1ELHNEQU9DO0FBTUQsd0RBRUM7QUFRRCx3REFRQztBQUVELDBEQVVDO0FBRUQsMENBbUJDO0FBdExELDhEQUErQztBQUMvQyxnREFBdUU7QUFFdkUsdUNBQStEO0FBQy9ELHVEQUF1SDtBQVkxRyxRQUFBLGNBQWMsR0FBK0I7SUFDeEQsSUFBSSxFQUFFLFVBQVU7SUFDaEIsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUk7Q0FDckIsQ0FBQztBQUVGLFNBQVMsa0JBQWtCLENBQUMsVUFBc0I7SUFDaEQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFBLHlCQUFlLEVBQUMsVUFBVSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLHNFQUFzRTtRQUN0RSxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLDhCQUE4QixDQUFDLElBQVk7SUFDekQsT0FBTztRQUNMLElBQUksRUFBRSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsR0FBRztRQUN4QyxRQUFRLENBQUMsR0FBNEIsRUFBRSxVQUFxQjtZQUMxRCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDckIsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQ0wsTUFBTSxLQUFLLFNBQVM7b0JBQ3BCLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSTtvQkFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssVUFB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MEZBQTBGO2dCQUMxRixzQkFBc0IsRUFBRTtnQkFDeEIsK0NBQStDO2dCQUMvQywyQkFBMkIsRUFBRTthQUM5QixDQUFDLENBQUM7UUFDTDtZQUNFLE9BQU8sc0JBQWMsQ0FBQztJQUMxQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50TmFtZSwgVHJpcGxlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IHBveDUgfSBmcm9tICdAYml0Z28vdXR4by1kZXNjcmlwdG9ycyc7XG5pbXBvcnQgeyBiaXAzMiwgRGVzY3JpcHRvciwgZGVzY3JpcHRvcldhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBEZXNjcmlwdG9yQnVpbGRlciwgcGFyc2VEZXNjcmlwdG9yIH0gZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCB7IGhhc1ZhbGlkU2lnbmF0dXJlLCBOYW1lZERlc2NyaXB0b3IsIE5hbWVkRGVzY3JpcHRvck5hdGl2ZSwgdG9OYW1lZERlc2NyaXB0b3JOYXRpdmUgfSBmcm9tICcuL05hbWVkRGVzY3JpcHRvcic7XG5cbmltcG9ydCB0eXBlIHsgRGVzY3JpcHRvck1hcCB9IGZyb20gJy4vaW5kZXgnO1xuXG5leHBvcnQgdHlwZSBLZXlUcmlwbGUgPSBUcmlwbGU8YmlwMzIuQklQMzJJbnRlcmZhY2U+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgbmFtZTogc3RyaW5nO1xuXG4gIHZhbGlkYXRlKGFycjogTmFtZWREZXNjcmlwdG9yTmF0aXZlW10sIHdhbGxldEtleXM6IEtleVRyaXBsZSk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBwb2xpY3lBbGxvd0FsbDogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kgPSB7XG4gIG5hbWU6ICdhbGxvd0FsbCcsXG4gIHZhbGlkYXRlOiAoKSA9PiB0cnVlLFxufTtcblxuZnVuY3Rpb24gdHJ5UGFyc2VEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IERlc2NyaXB0b3IpOiBEZXNjcmlwdG9yQnVpbGRlciB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gbm90IGEgZGVzY3JpcHRvciB3ZSBrbm93IGhvdyB0byBwYXJzZTogaXQgY2Fubm90IG1hdGNoIGFueSB0ZW1wbGF0ZVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvckRlc2NyaXB0b3JUZW1wbGF0ZShuYW1lOiBzdHJpbmcpOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Rlc2NyaXB0b3JUZW1wbGF0ZSgnICsgbmFtZSArICcpJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBhcnIuZXZlcnkoKGQpID0+IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gdHJ5UGFyc2VEZXNjcmlwdG9yKGQudmFsdWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHBhcnNlZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgcGFyc2VkLm5hbWUgPT09IG5hbWUgJiZcbiAgICAgICAgICBwYXJzZWQua2V5cy5sZW5ndGggPT09IHdhbGxldEtleXMubGVuZ3RoICYmXG4gICAgICAgICAgcGFyc2VkLmtleXMuZXZlcnkoKGssIGkpID0+IGsudG9CYXNlNTgoKSA9PT0gd2FsbGV0S2V5c1tpXS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yRXZlcnkodmFsaWRhdG9yczogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3lbXSk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZXZlcnkoJyArIHZhbGlkYXRvcnMubWFwKCh2KSA9PiB2Lm5hbWUpLmpvaW4oJywnKSArICcpJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB2YWxpZGF0b3JzLmV2ZXJ5KCh2KSA9PiB2LnZhbGlkYXRlKGFyciwgd2FsbGV0S2V5cykpO1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZGF0b3JTb21lKHZhbGlkYXRvcnM6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5W10pOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NvbWUoJyArIHZhbGlkYXRvcnMubWFwKCh2KSA9PiB2Lm5hbWUpLmpvaW4oJywnKSArICcpJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB2YWxpZGF0b3JzLnNvbWUoKHYpID0+IHYudmFsaWRhdGUoYXJyLCB3YWxsZXRLZXlzKSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvck9uZU9mVGVtcGxhdGVzKG5hbWVzOiBzdHJpbmdbXSk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgcmV0dXJuIGdldFZhbGlkYXRvclNvbWUobmFtZXMubWFwKGdldFZhbGlkYXRvckRlc2NyaXB0b3JUZW1wbGF0ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yU2lnbmVkQnlVc2VyS2V5KCk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2lnbmVkQnlVc2VyJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIC8vIHRoZSBmaXJzdCBrZXkgaXMgdGhlIHVzZXIga2V5LCBieSBjb252ZW50aW9uXG4gICAgICByZXR1cm4gYXJyLmV2ZXJ5KChkKSA9PiBoYXNWYWxpZFNpZ25hdHVyZShkLnZhbHVlLCB3YWxsZXRLZXlzWzBdLCBkLnNpZ25hdHVyZXMgPz8gW10pKTtcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0Nhbm9uaWNhbFBveDVMb2NrdXAoZGVzY3JpcHRvcjogRGVzY3JpcHRvciwgd2FsbGV0S2V5czogS2V5VHJpcGxlKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgaW5mbyA9IHBveDUucGFyc2VQb3g1TG9ja3VwRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgICBpZiAoIWluZm8pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gUmVidWlsZGluZyB0aGUgY2Fub25pY2FsIGRlc2NyaXB0b3IgZnJvbSB0aGUgd2FsbGV0IGtleXMgY2hlY2tzIGJvdGggdGhhdCB0aGVcbiAgICAvLyBzdGFrZXIga2V5cyBhcmUgdGhlIHdhbGxldCBrZXlzICh3aXRoIHRoZSBgLypgIGRlcml2YXRpb24pIGFuZCB0aGF0IHRoZVxuICAgIC8vIGRlc2NyaXB0b3IgaGFzIG5vIG5vbi1jYW5vbmljYWwgZW5jb2RpbmcuXG4gICAgY29uc3QgY2Fub25pY2FsID0gcG94NS5jcmVhdGVQb3g1TG9ja3VwRGVzY3JpcHRvcih7XG4gICAgICB1bmxvY2tIZWlnaHQ6IGluZm8udW5sb2NrSGVpZ2h0LFxuICAgICAgc3Rha2VyQ29tbWl0bWVudDogaW5mby5zdGFrZXJDb21taXRtZW50LFxuICAgICAgZWFybHlFeGl0S2V5OiBpbmZvLmVhcmx5RXhpdEtleSxcbiAgICAgIHN0YWtlcktleXM6IFt3YWxsZXRLZXlzWzBdLCB3YWxsZXRLZXlzWzFdLCB3YWxsZXRLZXlzWzJdXSxcbiAgICB9KTtcbiAgICByZXR1cm4gY2Fub25pY2FsLnRvU3RyaW5nKCkgPT09IGRlc2NyaXB0b3IudG9TdHJpbmcoKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gbWFsZm9ybWVkIGxvY2t1cCBwYXJhbWV0ZXJzXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQWNjZXB0cyBkZXNjcmlwdG9ycyB0aGF0IGFyZSBjYW5vbmljYWwgUG9YLTUgbG9ja3VwIGRlc2NyaXB0b3JzIHdob3NlIHN0YWtlciBrZXlzXG4gKiBhcmUgdGhlIHdhbGxldCBrZXlzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yUG94NUxvY2t1cCgpOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3BveDVMb2NrdXAnLFxuICAgIHZhbGlkYXRlKGFycjogTmFtZWREZXNjcmlwdG9yTmF0aXZlW10sIHdhbGxldEtleXM6IEtleVRyaXBsZSk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGFyci5ldmVyeSgoZCkgPT4gaXNDYW5vbmljYWxQb3g1TG9ja3VwKGQudmFsdWUsIHdhbGxldEtleXMpKTtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIEFjY2VwdHMgZGVzY3JpcHRvciBncm91cHMgd2hlcmUgZWFjaCBkZXNjcmlwdG9yIGluZGl2aWR1YWxseSBzYXRpc2ZpZXMgYXQgbGVhc3Qgb25lIG9mXG4gKiB0aGUgdmFsaWRhdG9ycy4gVW5saWtlIGBnZXRWYWxpZGF0b3JTb21lYCwgZGlmZmVyZW50IGRlc2NyaXB0b3JzIG1heSBtYXRjaCBkaWZmZXJlbnQgdmFsaWRhdG9ycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvckVhY2hPbmVPZih2YWxpZGF0b3JzOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeVtdKTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdlYWNoT25lT2YoJyArIHZhbGlkYXRvcnMubWFwKCh2KSA9PiB2Lm5hbWUpLmpvaW4oJywnKSArICcpJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBhcnIuZXZlcnkoKGQpID0+IHZhbGlkYXRvcnMuc29tZSgodikgPT4gdi52YWxpZGF0ZShbZF0sIHdhbGxldEtleXMpKSk7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBBY2NlcHRzIHRoZSBkZXNjcmlwdG9ycyBvZiBhIFBvWC01IHN0YWtpbmcgd2FsbGV0OiB0aGUgcmVndWxhciAyLW9mLTMgd2FsbGV0IGRlc2NyaXB0b3JzXG4gKiB0b2dldGhlciB3aXRoIFBvWC01IGxvY2t1cCBkZXNjcmlwdG9ycywgYWxsIHVzaW5nIHRoZSB3YWxsZXQga2V5cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvclBveDVXYWxsZXQoKTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kge1xuICByZXR1cm4gZ2V0VmFsaWRhdG9yRWFjaE9uZU9mKFtnZXRWYWxpZGF0b3JEZXNjcmlwdG9yVGVtcGxhdGUoJ1dzaDJPZjMnKSwgZ2V0VmFsaWRhdG9yUG94NUxvY2t1cCgpXSk7XG59XG5cbmV4cG9ydCBjbGFzcyBEZXNjcmlwdG9yUG9saWN5VmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihkczogTmFtZWREZXNjcmlwdG9yTmF0aXZlW10sIHBvbGljeTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kpIHtcbiAgICBzdXBlcihgRGVzY3JpcHRvcnMgJHtkcy5tYXAoKGQpID0+IGQudmFsdWUudG9TdHJpbmcoKSl9IGRvZXMgbm90IG1hdGNoIHBvbGljeSAke3BvbGljeS5uYW1lfWApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnREZXNjcmlwdG9yUG9saWN5KFxuICBkZXNjcmlwdG9yczogTmFtZWREZXNjcmlwdG9yTmF0aXZlW10sXG4gIHBvbGljeTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3ksXG4gIHdhbGxldEtleXM6IEtleVRyaXBsZVxuKTogdm9pZCB7XG4gIGlmICghcG9saWN5LnZhbGlkYXRlKGRlc2NyaXB0b3JzLCB3YWxsZXRLZXlzKSkge1xuICAgIHRocm93IG5ldyBEZXNjcmlwdG9yUG9saWN5VmFsaWRhdGlvbkVycm9yKGRlc2NyaXB0b3JzLCBwb2xpY3kpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0Rlc2NyaXB0b3JNYXBWYWxpZGF0ZShcbiAgZGVzY3JpcHRvcnM6IE5hbWVkRGVzY3JpcHRvcltdLFxuICB3YWxsZXRLZXlzOiBLZXlUcmlwbGUsXG4gIHBvbGljeTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3lcbik6IERlc2NyaXB0b3JNYXAge1xuICBjb25zdCBuYW1lZERlc2NyaXB0b3JzTmF0aXZlOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSA9IGRlc2NyaXB0b3JzLm1hcCgodikgPT5cbiAgICB0b05hbWVkRGVzY3JpcHRvck5hdGl2ZSh2LCAnZGVyaXZhYmxlJylcbiAgKTtcbiAgYXNzZXJ0RGVzY3JpcHRvclBvbGljeShuYW1lZERlc2NyaXB0b3JzTmF0aXZlLCBwb2xpY3ksIHdhbGxldEtleXMpO1xuICByZXR1cm4gZGVzY3JpcHRvcldhbGxldC50b0Rlc2NyaXB0b3JNYXAobmFtZWREZXNjcmlwdG9yc05hdGl2ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb2xpY3lGb3JFbnYoZW52OiBFbnZpcm9ubWVudE5hbWUpOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHN3aXRjaCAoZW52KSB7XG4gICAgY2FzZSAnYWRtaW5Qcm9kJzpcbiAgICBjYXNlICdwcm9kJzpcbiAgICAgIHJldHVybiBnZXRWYWxpZGF0b3JTb21lKFtcbiAgICAgICAgLy8gYWxsb3cgMi1vZi0zLWlzaCBkZXNjcmlwdG9yIGdyb3VwcyB3aGVyZSB0aGUga2V5cyBtYXRjaCB0aGUgd2FsbGV0IGtleXNcbiAgICAgICAgZ2V0VmFsaWRhdG9yRGVzY3JpcHRvclRlbXBsYXRlKCdXc2gyT2YzJyksXG4gICAgICAgIC8vIGFsbG93IGRlc2NyaXB0b3IgZ3JvdXBzIHdoZXJlIGFsbCBrZXlzIG1hdGNoIHRoZSB3YWxsZXQga2V5cyBwbHVzIE9QX0RST1AgKGNvcmVkYW8gc3Rha2luZylcbiAgICAgICAgZ2V0VmFsaWRhdG9yRGVzY3JpcHRvclRlbXBsYXRlKCdXc2gyT2YzQ2x0dkRyb3AnKSxcbiAgICAgICAgLy8gYWxsb3cgc0JUQyBwZWctaW4gZGVwb3NpdCBkZXNjcmlwdG9ycyB3aGVyZSB0aGUgcmVjbGFpbSBrZXlzIG1hdGNoIHRoZSB3YWxsZXQga2V5c1xuICAgICAgICBnZXRWYWxpZGF0b3JEZXNjcmlwdG9yVGVtcGxhdGUoJ1NidGNEZXBvc2l0JyksXG4gICAgICAgIC8vIGFsbG93IDItb2YtMyB3YWxsZXQgZGVzY3JpcHRvcnMgdG9nZXRoZXIgd2l0aCBQb1gtNSBsb2NrdXAgZGVzY3JpcHRvcnMgKHN0YWNrcyBzdGFraW5nKVxuICAgICAgICBnZXRWYWxpZGF0b3JQb3g1V2FsbGV0KCksXG4gICAgICAgIC8vIGFsbG93IGFsbCBkZXNjcmlwdG9ycyBzaWduZWQgYnkgdGhlIHVzZXIga2V5XG4gICAgICAgIGdldFZhbGlkYXRvclNpZ25lZEJ5VXNlcktleSgpLFxuICAgICAgXSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBwb2xpY3lBbGxvd0FsbDtcbiAgfVxufVxuIl19
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { BitGoBase } from '@bitgo/sdk-core';
|
|
2
|
-
import { UtxoCoinName
|
|
2
|
+
import { UtxoCoinName } from '../../names';
|
|
3
3
|
import { Tbtc } from './tbtc';
|
|
4
4
|
export declare class Tbtcstx extends Tbtc {
|
|
5
5
|
readonly name: UtxoCoinName;
|
|
6
6
|
constructor(bitgo: BitGoBase);
|
|
7
7
|
static createInstance(bitgo: BitGoBase): Tbtcstx;
|
|
8
|
-
get wasmName(): WasmUtxoCoinName;
|
|
9
8
|
}
|
|
10
9
|
//# sourceMappingURL=tbtcstx.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tbtcstx.d.ts","sourceRoot":"","sources":["../../../../../src/impl/btc/tbtcstx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"tbtcstx.d.ts","sourceRoot":"","sources":["../../../../../src/impl/btc/tbtcstx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,OAAQ,SAAQ,IAAI;IAC/B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAa;gBAE5B,KAAK,EAAE,SAAS;IAI5B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;CAGjD"}
|
|
@@ -10,9 +10,6 @@ class Tbtcstx extends tbtc_1.Tbtc {
|
|
|
10
10
|
static createInstance(bitgo) {
|
|
11
11
|
return new Tbtcstx(bitgo);
|
|
12
12
|
}
|
|
13
|
-
get wasmName() {
|
|
14
|
-
return 'tbtcreg';
|
|
15
|
-
}
|
|
16
13
|
}
|
|
17
14
|
exports.Tbtcstx = Tbtcstx;
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGJ0Y3N0eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsL2J0Yy90YnRjc3R4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLGlDQUE4QjtBQUU5QixNQUFhLE9BQVEsU0FBUSxXQUFJO0lBRy9CLFlBQVksS0FBZ0I7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSE4sU0FBSSxHQUFpQixTQUFTLENBQUM7SUFJeEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBQ0Y7QUFWRCwwQkFVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmltcG9ydCB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uLy4uL25hbWVzJztcblxuaW1wb3J0IHsgVGJ0YyB9IGZyb20gJy4vdGJ0Yyc7XG5cbmV4cG9ydCBjbGFzcyBUYnRjc3R4IGV4dGVuZHMgVGJ0YyB7XG4gIHJlYWRvbmx5IG5hbWU6IFV0eG9Db2luTmFtZSA9ICd0YnRjc3R4JztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlKSB7XG4gICAgc3VwZXIoYml0Z28pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UpOiBUYnRjc3R4IHtcbiAgICByZXR1cm4gbmV3IFRidGNzdHgoYml0Z28pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { BitGoBase } from '@bitgo/sdk-core';
|
|
2
|
-
import { UtxoCoinName
|
|
2
|
+
import { UtxoCoinName } from '../../names';
|
|
3
3
|
import { Tbtc } from './tbtc';
|
|
4
4
|
export declare class Tbtcstxsignet extends Tbtc {
|
|
5
5
|
readonly name: UtxoCoinName;
|
|
6
6
|
constructor(bitgo: BitGoBase);
|
|
7
7
|
static createInstance(bitgo: BitGoBase): Tbtcstxsignet;
|
|
8
|
-
get wasmName(): WasmUtxoCoinName;
|
|
9
8
|
}
|
|
10
9
|
//# sourceMappingURL=tbtcstxsignet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tbtcstxsignet.d.ts","sourceRoot":"","sources":["../../../../../src/impl/btc/tbtcstxsignet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"tbtcstxsignet.d.ts","sourceRoot":"","sources":["../../../../../src/impl/btc/tbtcstxsignet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,aAAc,SAAQ,IAAI;IACrC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAmB;gBAElC,KAAK,EAAE,SAAS;IAI5B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa;CAGvD"}
|
|
@@ -10,9 +10,6 @@ class Tbtcstxsignet extends tbtc_1.Tbtc {
|
|
|
10
10
|
static createInstance(bitgo) {
|
|
11
11
|
return new Tbtcstxsignet(bitgo);
|
|
12
12
|
}
|
|
13
|
-
get wasmName() {
|
|
14
|
-
return 'tbtcsig';
|
|
15
|
-
}
|
|
16
13
|
}
|
|
17
14
|
exports.Tbtcstxsignet = Tbtcstxsignet;
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGJ0Y3N0eHNpZ25ldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsL2J0Yy90YnRjc3R4c2lnbmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLGlDQUE4QjtBQUU5QixNQUFhLGFBQWMsU0FBUSxXQUFJO0lBR3JDLFlBQVksS0FBZ0I7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSE4sU0FBSSxHQUFpQixlQUFlLENBQUM7SUFJOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFWRCxzQ0FVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmltcG9ydCB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uLy4uL25hbWVzJztcblxuaW1wb3J0IHsgVGJ0YyB9IGZyb20gJy4vdGJ0Yyc7XG5cbmV4cG9ydCBjbGFzcyBUYnRjc3R4c2lnbmV0IGV4dGVuZHMgVGJ0YyB7XG4gIHJlYWRvbmx5IG5hbWU6IFV0eG9Db2luTmFtZSA9ICd0YnRjc3R4c2lnbmV0JztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlKSB7XG4gICAgc3VwZXIoYml0Z28pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UpOiBUYnRjc3R4c2lnbmV0IHtcbiAgICByZXR1cm4gbmV3IFRidGNzdHhzaWduZXQoYml0Z28pO1xuICB9XG59XG4iXX0=
|
package/dist/cjs/src/names.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare const utxoCoinsTestnet: readonly ["tbtc", "tbtc4", "tbtcsig", "tb
|
|
|
5
5
|
export type UtxoCoinNameMainnet = (typeof utxoCoinsMainnet)[number];
|
|
6
6
|
export type UtxoCoinNameTestnet = `t${UtxoCoinNameMainnet}` | 'tbtcsig' | 'tbtc4' | 'tbtcbgsig' | 'tbtcstx' | 'tbtcstxprivate1' | 'tbtcstxsignet';
|
|
7
7
|
export type UtxoCoinName = UtxoCoinNameMainnet | UtxoCoinNameTestnet;
|
|
8
|
+
/** Coin name used by wasm-utxo. Private Bitcoin networks map to a shared codec. */
|
|
8
9
|
export declare function toWasmUtxoCoinName(coinName: UtxoCoinName | WasmUtxoCoinName): WasmUtxoCoinName;
|
|
9
10
|
export declare function isUtxoCoinNameMainnet(coinName: string): coinName is UtxoCoinNameMainnet;
|
|
10
11
|
export declare function isUtxoCoinNameTestnet(coinName: string): coinName is UtxoCoinNameTestnet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../../src/names.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAExC,eAAO,MAAM,gBAAgB,sFAAuF,CAAC;AACrH,eAAO,MAAM,gBAAgB,gLAiBnB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,MAAM,mBAAmB,GAC3B,IAAI,mBAAmB,EAAE,GACzB,SAAS,GACT,OAAO,GACP,WAAW,GACX,SAAS,GACT,iBAAiB,GACjB,eAAe,CAAC;AACpB,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAErE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,gBAAgB,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../../src/names.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAExC,eAAO,MAAM,gBAAgB,sFAAuF,CAAC;AACrH,eAAO,MAAM,gBAAgB,gLAiBnB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,MAAM,mBAAmB,GAC3B,IAAI,mBAAmB,EAAE,GACzB,SAAS,GACT,OAAO,GACP,WAAW,GACX,SAAS,GACT,iBAAiB,GACjB,eAAe,CAAC;AACpB,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAErE,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,gBAAgB,GAAG,gBAAgB,CAY9F;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,mBAAmB,CAEvF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,mBAAmB,CAEvF;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,YAAY,CAEzE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,mBAAmB,CAe9E;AA2BD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CA4BtE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE7D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE7D"}
|
package/dist/cjs/src/names.js
CHANGED
|
@@ -29,7 +29,15 @@ exports.utxoCoinsTestnet = [
|
|
|
29
29
|
'tpearl',
|
|
30
30
|
'tzec',
|
|
31
31
|
];
|
|
32
|
+
/** Coin name used by wasm-utxo. Private Bitcoin networks map to a shared codec. */
|
|
32
33
|
function toWasmUtxoCoinName(coinName) {
|
|
34
|
+
switch (coinName) {
|
|
35
|
+
case 'tbtcstx':
|
|
36
|
+
case 'tbtcstxprivate1':
|
|
37
|
+
return 'tbtcreg';
|
|
38
|
+
case 'tbtcstxsignet':
|
|
39
|
+
return 'tbtcsig';
|
|
40
|
+
}
|
|
33
41
|
if (!(0, wasm_utxo_1.isCoinName)(coinName)) {
|
|
34
42
|
throw new Error(`coin ${coinName} is not supported by wasm-utxo`);
|
|
35
43
|
}
|
|
@@ -116,4 +124,4 @@ function isTestnetCoin(coinName) {
|
|
|
116
124
|
function isMainnetCoin(coinName) {
|
|
117
125
|
return isUtxoCoinNameMainnet(coinName);
|
|
118
126
|
}
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmFtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBb0NBLGdEQVlDO0FBRUQsc0RBRUM7QUFFRCxzREFFQztBQUVELHdDQUVDO0FBRUQsZ0RBZUM7QUEyQkQsMERBNEJDO0FBRUQsc0NBRUM7QUFFRCxzQ0FFQztBQTVJRCxnREFBNkQ7QUFJaEQsUUFBQSxnQkFBZ0IsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBVSxDQUFDO0FBQ3hHLFFBQUEsZ0JBQWdCLEdBQUc7SUFDOUIsTUFBTTtJQUNOLE9BQU87SUFDUCxTQUFTO0lBQ1QsV0FBVztJQUNYLFNBQVM7SUFDVCxpQkFBaUI7SUFDakIsZUFBZTtJQUNmLE1BQU07SUFDTixPQUFPO0lBQ1AsTUFBTTtJQUNOLE1BQU07SUFDTixPQUFPO0lBQ1AsT0FBTztJQUNQLE1BQU07SUFDTixRQUFRO0lBQ1IsTUFBTTtDQUNFLENBQUM7QUFhWCxtRkFBbUY7QUFDbkYsU0FBZ0Isa0JBQWtCLENBQUMsUUFBeUM7SUFDMUUsUUFBUSxRQUFRLEVBQUUsQ0FBQztRQUNqQixLQUFLLFNBQVMsQ0FBQztRQUNmLEtBQUssaUJBQWlCO1lBQ3BCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLEtBQUssZUFBZTtZQUNsQixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQUEsc0JBQVUsRUFBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxRQUFRLGdDQUFnQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxRQUFnQjtJQUNwRCxP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c0NvaW5OYW1lLCB0eXBlIENvaW5OYW1lIH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbmV4cG9ydCB0eXBlIFdhc21VdHhvQ29pbk5hbWUgPSBDb2luTmFtZTtcblxuZXhwb3J0IGNvbnN0IHV0eG9Db2luc01haW5uZXQgPSBbJ2J0YycsICdiY2gnLCAnYmNoYScsICdic3YnLCAnYnRnJywgJ2Rhc2gnLCAnZG9nZScsICdsdGMnLCAncGVhcmwnLCAnemVjJ10gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgdXR4b0NvaW5zVGVzdG5ldCA9IFtcbiAgJ3RidGMnLFxuICAndGJ0YzQnLFxuICAndGJ0Y3NpZycsXG4gICd0YnRjYmdzaWcnLFxuICAndGJ0Y3N0eCcsXG4gICd0YnRjc3R4cHJpdmF0ZTEnLFxuICAndGJ0Y3N0eHNpZ25ldCcsXG4gICd0YmNoJyxcbiAgJ3RiY2hhJyxcbiAgJ3Ric3YnLFxuICAndGJ0ZycsXG4gICd0ZGFzaCcsXG4gICd0ZG9nZScsXG4gICd0bHRjJyxcbiAgJ3RwZWFybCcsXG4gICd0emVjJyxcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFV0eG9Db2luTmFtZU1haW5uZXQgPSAodHlwZW9mIHV0eG9Db2luc01haW5uZXQpW251bWJlcl07XG5leHBvcnQgdHlwZSBVdHhvQ29pbk5hbWVUZXN0bmV0ID1cbiAgfCBgdCR7VXR4b0NvaW5OYW1lTWFpbm5ldH1gXG4gIHwgJ3RidGNzaWcnXG4gIHwgJ3RidGM0J1xuICB8ICd0YnRjYmdzaWcnXG4gIHwgJ3RidGNzdHgnXG4gIHwgJ3RidGNzdHhwcml2YXRlMSdcbiAgfCAndGJ0Y3N0eHNpZ25ldCc7XG5leHBvcnQgdHlwZSBVdHhvQ29pbk5hbWUgPSBVdHhvQ29pbk5hbWVNYWlubmV0IHwgVXR4b0NvaW5OYW1lVGVzdG5ldDtcblxuLyoqIENvaW4gbmFtZSB1c2VkIGJ5IHdhc20tdXR4by4gUHJpdmF0ZSBCaXRjb2luIG5ldHdvcmtzIG1hcCB0byBhIHNoYXJlZCBjb2RlYy4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1dhc21VdHhvQ29pbk5hbWUoY29pbk5hbWU6IFV0eG9Db2luTmFtZSB8IFdhc21VdHhvQ29pbk5hbWUpOiBXYXNtVXR4b0NvaW5OYW1lIHtcbiAgc3dpdGNoIChjb2luTmFtZSkge1xuICAgIGNhc2UgJ3RidGNzdHgnOlxuICAgIGNhc2UgJ3RidGNzdHhwcml2YXRlMSc6XG4gICAgICByZXR1cm4gJ3RidGNyZWcnO1xuICAgIGNhc2UgJ3RidGNzdHhzaWduZXQnOlxuICAgICAgcmV0dXJuICd0YnRjc2lnJztcbiAgfVxuICBpZiAoIWlzQ29pbk5hbWUoY29pbk5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBjb2luICR7Y29pbk5hbWV9IGlzIG5vdCBzdXBwb3J0ZWQgYnkgd2FzbS11dHhvYCk7XG4gIH1cbiAgcmV0dXJuIGNvaW5OYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVdHhvQ29pbk5hbWVNYWlubmV0KGNvaW5OYW1lOiBzdHJpbmcpOiBjb2luTmFtZSBpcyBVdHhvQ29pbk5hbWVNYWlubmV0IHtcbiAgcmV0dXJuIHV0eG9Db2luc01haW5uZXQuaW5jbHVkZXMoY29pbk5hbWUgYXMgVXR4b0NvaW5OYW1lTWFpbm5ldCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1V0eG9Db2luTmFtZVRlc3RuZXQoY29pbk5hbWU6IHN0cmluZyk6IGNvaW5OYW1lIGlzIFV0eG9Db2luTmFtZVRlc3RuZXQge1xuICByZXR1cm4gdXR4b0NvaW5zVGVzdG5ldC5pbmNsdWRlcyhjb2luTmFtZSBhcyBVdHhvQ29pbk5hbWVUZXN0bmV0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXR4b0NvaW5OYW1lKGNvaW5OYW1lOiBzdHJpbmcpOiBjb2luTmFtZSBpcyBVdHhvQ29pbk5hbWUge1xuICByZXR1cm4gaXNVdHhvQ29pbk5hbWVNYWlubmV0KGNvaW5OYW1lKSB8fCBpc1V0eG9Db2luTmFtZVRlc3RuZXQoY29pbk5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFpbm5ldENvaW5OYW1lKGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUpOiBVdHhvQ29pbk5hbWVNYWlubmV0IHtcbiAgaWYgKGlzVXR4b0NvaW5OYW1lTWFpbm5ldChjb2luTmFtZSkpIHtcbiAgICByZXR1cm4gY29pbk5hbWU7XG4gIH1cbiAgc3dpdGNoIChjb2luTmFtZSkge1xuICAgIGNhc2UgJ3RidGM0JzpcbiAgICBjYXNlICd0YnRjc2lnJzpcbiAgICBjYXNlICd0YnRjYmdzaWcnOlxuICAgIGNhc2UgJ3RidGNzdHgnOlxuICAgIGNhc2UgJ3RidGNzdHhwcml2YXRlMSc6XG4gICAgY2FzZSAndGJ0Y3N0eHNpZ25ldCc6XG4gICAgICByZXR1cm4gJ2J0Yyc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBjb2luTmFtZS5zbGljZSgxKSBhcyBVdHhvQ29pbk5hbWVNYWlubmV0O1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJhc2VOYW1lRnJvbU1haW5uZXQoY29pbk5hbWU6IFV0eG9Db2luTmFtZU1haW5uZXQpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGNvaW5OYW1lKSB7XG4gICAgY2FzZSAnYnRjJzpcbiAgICAgIHJldHVybiAnQml0Y29pbic7XG4gICAgY2FzZSAnYmNoJzpcbiAgICAgIHJldHVybiAnQml0Y29pbiBDYXNoJztcbiAgICBjYXNlICdiY2hhJzpcbiAgICAgIHJldHVybiAnQml0Y29pbiBBQkMnO1xuICAgIGNhc2UgJ2J0Zyc6XG4gICAgICByZXR1cm4gJ0JpdGNvaW4gR29sZCc7XG4gICAgY2FzZSAnYnN2JzpcbiAgICAgIHJldHVybiAnQml0Y29pbiBTVic7XG4gICAgY2FzZSAnZGFzaCc6XG4gICAgICByZXR1cm4gJ0Rhc2gnO1xuICAgIGNhc2UgJ2RvZ2UnOlxuICAgICAgcmV0dXJuICdEb2dlY29pbic7XG4gICAgY2FzZSAnbHRjJzpcbiAgICAgIHJldHVybiAnTGl0ZWNvaW4nO1xuICAgIGNhc2UgJ3BlYXJsJzpcbiAgICAgIHJldHVybiAnUGVhcmwnO1xuICAgIGNhc2UgJ3plYyc6XG4gICAgICByZXR1cm4gJ1pDYXNoJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RnVsbE5hbWVGcm9tQ29pbk5hbWUoY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IHN0cmluZyB7XG4gIGlmIChjb2luTmFtZSA9PT0gJ3RidGNzdHhwcml2YXRlMScpIHtcbiAgICByZXR1cm4gJ1N0YWNrcyBCaXRjb2luIChQcml2YXRlLTEgUmVndGVzdCknO1xuICB9XG5cbiAgaWYgKGNvaW5OYW1lID09PSAndGJ0Y3N0eHNpZ25ldCcpIHtcbiAgICByZXR1cm4gJ1N0YWNrcyBCaXRjb2luIChTaWduZXQpJztcbiAgfVxuXG4gIGxldCBwcmVmaXg6IHN0cmluZztcbiAgc3dpdGNoIChjb2luTmFtZSkge1xuICAgIGNhc2UgJ3RidGM0JzpcbiAgICAgIHByZWZpeCA9ICdUZXN0bmV0NCAnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndGJ0Y3NpZyc6XG4gICAgICBwcmVmaXggPSAnUHVibGljIFNpZ25ldCAnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndGJ0Y2Jnc2lnJzpcbiAgICAgIHByZWZpeCA9ICdCaXRHbyBTaWduZXQgJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3RidGNzdHgnOlxuICAgICAgcHJlZml4ID0gJ1N0YWNrcyAnO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHByZWZpeCA9IGlzVXR4b0NvaW5OYW1lVGVzdG5ldChjb2luTmFtZSkgPyAnVGVzdG5ldCAnIDogJyc7XG4gIH1cblxuICByZXR1cm4gcHJlZml4ICsgZ2V0QmFzZU5hbWVGcm9tTWFpbm5ldChnZXRNYWlubmV0Q29pbk5hbWUoY29pbk5hbWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGVzdG5ldENvaW4oY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNVdHhvQ29pbk5hbWVUZXN0bmV0KGNvaW5OYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTWFpbm5ldENvaW4oY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNVdHhvQ29pbk5hbWVNYWlubmV0KGNvaW5OYW1lKTtcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionExplanation.d.ts","sourceRoot":"","sources":["../../../../src/offlineVault/TransactionExplanation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB,CAAC,IAAI;IAC1C,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,aAAa,EAAE,iBAAiB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"TransactionExplanation.d.ts","sourceRoot":"","sources":["../../../../src/offlineVault/TransactionExplanation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB,CAAC,IAAI;IAC1C,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,aAAa,EAAE,iBAAiB,EAAE,CAAC;IAEnC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE;QAEH,GAAG,EAAE,IAAI,CAAC;QACV,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QAC5C,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,CAAC;CACH;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAS7G"}
|
|
@@ -12,4 +12,4 @@ function getTransactionExplanation(coinName, tx) {
|
|
|
12
12
|
}
|
|
13
13
|
throw new Error('unsupported transaction type');
|
|
14
14
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25FeHBsYW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9vZmZsaW5lVmF1bHQvVHJhbnNhY3Rpb25FeHBsYW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXVCQSw4REFTQztBQTlCRCxpRUFBOEQ7QUFDOUQsNkNBQXdGO0FBb0J4RixTQUFnQix5QkFBeUIsQ0FBQyxRQUFzQixFQUFFLEVBQVc7SUFDM0UsSUFBSSxDQUFDLDJDQUFvQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBSSxrQ0FBcUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxPQUFPLElBQUEsOENBQWlDLEVBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uL25hbWVzJztcblxuaW1wb3J0IHsgT2ZmbGluZVZhdWx0U2lnbmFibGUgfSBmcm9tICcuL09mZmxpbmVWYXVsdFNpZ25hYmxlJztcbmltcG9ydCB7IERlc2NyaXB0b3JUcmFuc2FjdGlvbiwgZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbkZyb21Qc2J0IH0gZnJvbSAnLi9kZXNjcmlwdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBFeHBsYW5hdGlvbk91dHB1dCB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxURmVlPiB7XG4gIG91dHB1dHM6IEV4cGxhbmF0aW9uT3V0cHV0W107XG4gIGNoYW5nZU91dHB1dHM6IEV4cGxhbmF0aW9uT3V0cHV0W107XG4gIC8qIG5Mb2NrVGltZSBvZiB0aGUgdHJhbnNhY3Rpb24sIHRvIGJlIHZlcmlmaWVkIGJ5IHRoZSBzaWduZXIgZm9yIHRpbWUtbG9ja2VkIHNwZW5kcyAqL1xuICBsb2NrdGltZTogbnVtYmVyO1xuICBmZWU6IHtcbiAgICAvKiBuZXR3b3JrIGZlZSAqL1xuICAgIGZlZTogVEZlZTtcbiAgICBwYXlHb0ZlZVN0cmluZzogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHBheUdvRmVlQWRkcmVzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbihjb2luTmFtZTogVXR4b0NvaW5OYW1lLCB0eDogdW5rbm93bik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb248c3RyaW5nPiB7XG4gIGlmICghT2ZmbGluZVZhdWx0U2lnbmFibGUuaXModHgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgYSBzaWduYWJsZSB0cmFuc2FjdGlvbicpO1xuICB9XG4gIGlmIChEZXNjcmlwdG9yVHJhbnNhY3Rpb24uaXModHgpKSB7XG4gICAgcmV0dXJuIGdldFRyYW5zYWN0aW9uRXhwbGFuYXRpb25Gcm9tUHNidCh0eCwgY29pbk5hbWUpO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG59XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { descriptorWallet, Psbt } from '@bitgo/wasm-utxo';
|
|
2
|
+
/**
|
|
3
|
+
* Apply the PoX-5 staking spend policy to a PSBT before it is signed.
|
|
4
|
+
*
|
|
5
|
+
* PSBTs without PoX-5 lockup inputs are not affected. Otherwise, the PSBT must spend exactly one lockup
|
|
6
|
+
* input through the post-CLTV (late exit) branch, with nLockTime at or above the unlock height and a non-final sequence.
|
|
7
|
+
*/
|
|
8
|
+
export declare function assertPox5SpendPolicy(psbt: Psbt, descriptorMap: descriptorWallet.DescriptorMap): void;
|
|
9
|
+
//# sourceMappingURL=pox5.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pox5.d.ts","sourceRoot":"","sources":["../../../../../src/offlineVault/descriptor/pox5.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAQ1D;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,gBAAgB,CAAC,aAAa,GAAG,IAAI,CAcrG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertPox5SpendPolicy = assertPox5SpendPolicy;
|
|
4
|
+
const utxo_descriptors_1 = require("@bitgo/utxo-descriptors");
|
|
5
|
+
function getPox5InputMatches(psbt, descriptorMap) {
|
|
6
|
+
return Array.from({ length: psbt.inputCount() }, (_, i) => utxo_descriptors_1.pox5.matchPox5Input(psbt, i, descriptorMap)).filter((match) => match !== undefined);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Apply the PoX-5 staking spend policy to a PSBT before it is signed.
|
|
10
|
+
*
|
|
11
|
+
* PSBTs without PoX-5 lockup inputs are not affected. Otherwise, the PSBT must spend exactly one lockup
|
|
12
|
+
* input through the post-CLTV (late exit) branch, with nLockTime at or above the unlock height and a non-final sequence.
|
|
13
|
+
*/
|
|
14
|
+
function assertPox5SpendPolicy(psbt, descriptorMap) {
|
|
15
|
+
const matches = getPox5InputMatches(psbt, descriptorMap);
|
|
16
|
+
if (matches.length === 0) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (matches.length !== 1) {
|
|
20
|
+
throw new Error(`expected exactly one PoX-5 lockup input, found ${matches.length}`);
|
|
21
|
+
}
|
|
22
|
+
const [match] = matches;
|
|
23
|
+
const branch = utxo_descriptors_1.pox5.classifyPox5Spend(psbt, match);
|
|
24
|
+
if (branch !== 'locktime') {
|
|
25
|
+
throw new Error(`unsupported PoX-5 spend branch: ${branch}`);
|
|
26
|
+
}
|
|
27
|
+
utxo_descriptors_1.pox5.assertPox5LocktimeSpend(psbt, matches);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG94NS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9vZmZsaW5lVmF1bHQvZGVzY3JpcHRvci9wb3g1LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZUEsc0RBY0M7QUE3QkQsOERBQStDO0FBRy9DLFNBQVMsbUJBQW1CLENBQUMsSUFBVSxFQUFFLGFBQTZDO0lBQ3BGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHVCQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQzVHLENBQUMsS0FBSyxFQUFnQyxFQUFFLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FDN0QsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLElBQVUsRUFBRSxhQUE2QztJQUM3RixNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekQsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQ3hCLE1BQU0sTUFBTSxHQUFHLHVCQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25ELElBQUksTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUNELHVCQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb3g1IH0gZnJvbSAnQGJpdGdvL3V0eG8tZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHsgZGVzY3JpcHRvcldhbGxldCwgUHNidCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5mdW5jdGlvbiBnZXRQb3g1SW5wdXRNYXRjaGVzKHBzYnQ6IFBzYnQsIGRlc2NyaXB0b3JNYXA6IGRlc2NyaXB0b3JXYWxsZXQuRGVzY3JpcHRvck1hcCk6IHBveDUuUG94NUlucHV0TWF0Y2hbXSB7XG4gIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBwc2J0LmlucHV0Q291bnQoKSB9LCAoXywgaSkgPT4gcG94NS5tYXRjaFBveDVJbnB1dChwc2J0LCBpLCBkZXNjcmlwdG9yTWFwKSkuZmlsdGVyKFxuICAgIChtYXRjaCk6IG1hdGNoIGlzIHBveDUuUG94NUlucHV0TWF0Y2ggPT4gbWF0Y2ggIT09IHVuZGVmaW5lZFxuICApO1xufVxuXG4vKipcbiAqIEFwcGx5IHRoZSBQb1gtNSBzdGFraW5nIHNwZW5kIHBvbGljeSB0byBhIFBTQlQgYmVmb3JlIGl0IGlzIHNpZ25lZC5cbiAqXG4gKiBQU0JUcyB3aXRob3V0IFBvWC01IGxvY2t1cCBpbnB1dHMgYXJlIG5vdCBhZmZlY3RlZC4gT3RoZXJ3aXNlLCB0aGUgUFNCVCBtdXN0IHNwZW5kIGV4YWN0bHkgb25lIGxvY2t1cFxuICogaW5wdXQgdGhyb3VnaCB0aGUgcG9zdC1DTFRWIChsYXRlIGV4aXQpIGJyYW5jaCwgd2l0aCBuTG9ja1RpbWUgYXQgb3IgYWJvdmUgdGhlIHVubG9jayBoZWlnaHQgYW5kIGEgbm9uLWZpbmFsIHNlcXVlbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0UG94NVNwZW5kUG9saWN5KHBzYnQ6IFBzYnQsIGRlc2NyaXB0b3JNYXA6IGRlc2NyaXB0b3JXYWxsZXQuRGVzY3JpcHRvck1hcCk6IHZvaWQge1xuICBjb25zdCBtYXRjaGVzID0gZ2V0UG94NUlucHV0TWF0Y2hlcyhwc2J0LCBkZXNjcmlwdG9yTWFwKTtcbiAgaWYgKG1hdGNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChtYXRjaGVzLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgZXhhY3RseSBvbmUgUG9YLTUgbG9ja3VwIGlucHV0LCBmb3VuZCAke21hdGNoZXMubGVuZ3RofWApO1xuICB9XG4gIGNvbnN0IFttYXRjaF0gPSBtYXRjaGVzO1xuICBjb25zdCBicmFuY2ggPSBwb3g1LmNsYXNzaWZ5UG94NVNwZW5kKHBzYnQsIG1hdGNoKTtcbiAgaWYgKGJyYW5jaCAhPT0gJ2xvY2t0aW1lJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgUG9YLTUgc3BlbmQgYnJhbmNoOiAke2JyYW5jaH1gKTtcbiAgfVxuICBwb3g1LmFzc2VydFBveDVMb2NrdGltZVNwZW5kKHBzYnQsIG1hdGNoZXMpO1xufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../../src/offlineVault/descriptor/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAmB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../../src/offlineVault/descriptor/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAmB,MAAM,kBAAkB,CAAC;AAUlE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGjC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE3E,wBAAgB,uCAAuC,CAAC,EAAE,EAAE,qBAAqB,GAAG,aAAa,CAYhG;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,EAAE,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAMpH;AAED,wBAAgB,iCAAiC,CAC/C,EAAE,EAAE,qBAAqB,EACzB,QAAQ,EAAE,YAAY,GACrB,sBAAsB,CAAC,MAAM,CAAC,CAgBhC"}
|
|
@@ -43,6 +43,7 @@ const descriptor_1 = require("../../descriptor");
|
|
|
43
43
|
const OfflineVaultSignable_1 = require("../OfflineVaultSignable");
|
|
44
44
|
const validatePolicy_1 = require("../../descriptor/validatePolicy");
|
|
45
45
|
const descriptor_2 = require("../../transaction/descriptor");
|
|
46
|
+
const pox5_1 = require("./pox5");
|
|
46
47
|
exports.DescriptorTransaction = t.intersection([OfflineVaultSignable_1.OfflineVaultSignable, t.type({ descriptors: t.array(descriptor_1.NamedDescriptor) })], 'DescriptorTransaction');
|
|
47
48
|
function getDescriptorsFromDescriptorTransaction(tx) {
|
|
48
49
|
const { descriptors, xpubsWithDerivationPath } = tx;
|
|
@@ -50,6 +51,8 @@ function getDescriptorsFromDescriptorTransaction(tx) {
|
|
|
50
51
|
const policy = (0, validatePolicy_1.getValidatorSome)([
|
|
51
52
|
// allow all 2-of-3-ish descriptors where the keys match the wallet keys
|
|
52
53
|
(0, validatePolicy_1.getValidatorOneOfTemplates)(['Wsh2Of3', 'Wsh2Of3CltvDrop', 'ShWsh2Of3CltvDrop']),
|
|
54
|
+
// allow 2-of-3 wallet descriptors together with PoX-5 lockup descriptors where the keys match the wallet keys
|
|
55
|
+
(0, validatePolicy_1.getValidatorPox5Wallet)(),
|
|
53
56
|
// allow all descriptors signed by the user key
|
|
54
57
|
(0, validatePolicy_1.getValidatorSignedByUserKey)(),
|
|
55
58
|
]);
|
|
@@ -58,6 +61,7 @@ function getDescriptorsFromDescriptorTransaction(tx) {
|
|
|
58
61
|
function getHalfSignedPsbt(tx, prv, coinName) {
|
|
59
62
|
const psbt = wasm_utxo_1.Psbt.deserialize(Buffer.from(tx.coinSpecific.txHex, 'hex'));
|
|
60
63
|
const descriptorMap = getDescriptorsFromDescriptorTransaction(tx);
|
|
64
|
+
(0, pox5_1.assertPox5SpendPolicy)(psbt, descriptorMap);
|
|
61
65
|
(0, descriptor_2.signPsbt)(psbt, descriptorMap, prv, { onUnknownInput: 'throw' });
|
|
62
66
|
return psbt;
|
|
63
67
|
}
|
|
@@ -68,6 +72,7 @@ function getTransactionExplanationFromPsbt(tx, coinName) {
|
|
|
68
72
|
return {
|
|
69
73
|
outputs,
|
|
70
74
|
changeOutputs,
|
|
75
|
+
locktime: psbt.lockTime(),
|
|
71
76
|
fee: {
|
|
72
77
|
/* network fee */
|
|
73
78
|
fee,
|
|
@@ -77,4 +82,4 @@ function getTransactionExplanationFromPsbt(tx, coinName) {
|
|
|
77
82
|
},
|
|
78
83
|
};
|
|
79
84
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvb2ZmbGluZVZhdWx0L2Rlc2NyaXB0b3IvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJBLDBGQVlDO0FBRUQsOENBTUM7QUFFRCw4RUFtQkM7QUFsRUQseUNBQTJCO0FBQzNCLGdEQUErQztBQUUvQyxpREFBa0U7QUFDbEUsa0VBQTRFO0FBQzVFLG9FQU15QztBQUN6Qyw2REFBcUU7QUFJckUsaUNBQStDO0FBRWxDLFFBQUEscUJBQXFCLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FDakQsQ0FBQywyQ0FBb0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsNEJBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUN6RSx1QkFBdUIsQ0FDeEIsQ0FBQztBQUlGLFNBQWdCLHVDQUF1QyxDQUFDLEVBQXlCO0lBQy9FLE1BQU0sRUFBRSxXQUFXLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDcEQsTUFBTSxPQUFPLEdBQUcsSUFBQSxrQ0FBVyxFQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQUcsSUFBQSxpQ0FBZ0IsRUFBQztRQUM5Qix3RUFBd0U7UUFDeEUsSUFBQSwyQ0FBMEIsRUFBQyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQy9FLDhHQUE4RztRQUM5RyxJQUFBLHVDQUFzQixHQUFFO1FBQ3hCLCtDQUErQztRQUMvQyxJQUFBLDRDQUEyQixHQUFFO0tBQzlCLENBQUMsQ0FBQztJQUNILE9BQU8sSUFBQSx3Q0FBdUIsRUFBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxFQUF5QixFQUFFLEdBQXlCLEVBQUUsUUFBc0I7SUFDNUcsTUFBTSxJQUFJLEdBQUcsZ0JBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sYUFBYSxHQUFHLHVDQUF1QyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLElBQUEsNEJBQXFCLEVBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzNDLElBQUEscUJBQVEsRUFBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELFNBQWdCLGlDQUFpQyxDQUMvQyxFQUF5QixFQUN6QixRQUFzQjtJQUV0QixNQUFNLElBQUksR0FBRyxnQkFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekUsTUFBTSxhQUFhLEdBQUcsdUNBQXVDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEUsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBQSx3QkFBVyxFQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkYsT0FBTztRQUNMLE9BQU87UUFDUCxhQUFhO1FBQ2IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDekIsR0FBRyxFQUFFO1lBQ0gsaUJBQWlCO1lBQ2pCLEdBQUc7WUFDSCxVQUFVO1lBQ1YsY0FBYyxFQUFFLFNBQVM7WUFDekIsZUFBZSxFQUFFLFNBQVM7U0FDM0I7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuaW1wb3J0IHsgYmlwMzIsIFBzYnQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgRGVzY3JpcHRvck1hcCwgTmFtZWREZXNjcmlwdG9yIH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBPZmZsaW5lVmF1bHRTaWduYWJsZSwgdG9LZXlUcmlwbGUgfSBmcm9tICcuLi9PZmZsaW5lVmF1bHRTaWduYWJsZSc7XG5pbXBvcnQge1xuICBnZXRWYWxpZGF0b3JPbmVPZlRlbXBsYXRlcyxcbiAgZ2V0VmFsaWRhdG9yUG94NVdhbGxldCxcbiAgZ2V0VmFsaWRhdG9yU2lnbmVkQnlVc2VyS2V5LFxuICBnZXRWYWxpZGF0b3JTb21lLFxuICB0b0Rlc2NyaXB0b3JNYXBWYWxpZGF0ZSxcbn0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvci92YWxpZGF0ZVBvbGljeSc7XG5pbXBvcnQgeyBleHBsYWluUHNidCwgc2lnblBzYnQgfSBmcm9tICcuLi8uLi90cmFuc2FjdGlvbi9kZXNjcmlwdG9yJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuLi9UcmFuc2FjdGlvbkV4cGxhbmF0aW9uJztcbmltcG9ydCB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uLy4uL25hbWVzJztcblxuaW1wb3J0IHsgYXNzZXJ0UG94NVNwZW5kUG9saWN5IH0gZnJvbSAnLi9wb3g1JztcblxuZXhwb3J0IGNvbnN0IERlc2NyaXB0b3JUcmFuc2FjdGlvbiA9IHQuaW50ZXJzZWN0aW9uKFxuICBbT2ZmbGluZVZhdWx0U2lnbmFibGUsIHQudHlwZSh7IGRlc2NyaXB0b3JzOiB0LmFycmF5KE5hbWVkRGVzY3JpcHRvcikgfSldLFxuICAnRGVzY3JpcHRvclRyYW5zYWN0aW9uJ1xuKTtcblxuZXhwb3J0IHR5cGUgRGVzY3JpcHRvclRyYW5zYWN0aW9uID0gdC5UeXBlT2Y8dHlwZW9mIERlc2NyaXB0b3JUcmFuc2FjdGlvbj47XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNjcmlwdG9yc0Zyb21EZXNjcmlwdG9yVHJhbnNhY3Rpb24odHg6IERlc2NyaXB0b3JUcmFuc2FjdGlvbik6IERlc2NyaXB0b3JNYXAge1xuICBjb25zdCB7IGRlc2NyaXB0b3JzLCB4cHVic1dpdGhEZXJpdmF0aW9uUGF0aCB9ID0gdHg7XG4gIGNvbnN0IHB1YmtleXMgPSB0b0tleVRyaXBsZSh4cHVic1dpdGhEZXJpdmF0aW9uUGF0aCk7XG4gIGNvbnN0IHBvbGljeSA9IGdldFZhbGlkYXRvclNvbWUoW1xuICAgIC8vIGFsbG93IGFsbCAyLW9mLTMtaXNoIGRlc2NyaXB0b3JzIHdoZXJlIHRoZSBrZXlzIG1hdGNoIHRoZSB3YWxsZXQga2V5c1xuICAgIGdldFZhbGlkYXRvck9uZU9mVGVtcGxhdGVzKFsnV3NoMk9mMycsICdXc2gyT2YzQ2x0dkRyb3AnLCAnU2hXc2gyT2YzQ2x0dkRyb3AnXSksXG4gICAgLy8gYWxsb3cgMi1vZi0zIHdhbGxldCBkZXNjcmlwdG9ycyB0b2dldGhlciB3aXRoIFBvWC01IGxvY2t1cCBkZXNjcmlwdG9ycyB3aGVyZSB0aGUga2V5cyBtYXRjaCB0aGUgd2FsbGV0IGtleXNcbiAgICBnZXRWYWxpZGF0b3JQb3g1V2FsbGV0KCksXG4gICAgLy8gYWxsb3cgYWxsIGRlc2NyaXB0b3JzIHNpZ25lZCBieSB0aGUgdXNlciBrZXlcbiAgICBnZXRWYWxpZGF0b3JTaWduZWRCeVVzZXJLZXkoKSxcbiAgXSk7XG4gIHJldHVybiB0b0Rlc2NyaXB0b3JNYXBWYWxpZGF0ZShkZXNjcmlwdG9ycywgcHVia2V5cywgcG9saWN5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhhbGZTaWduZWRQc2J0KHR4OiBEZXNjcmlwdG9yVHJhbnNhY3Rpb24sIHBydjogYmlwMzIuQklQMzJJbnRlcmZhY2UsIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUpOiBQc2J0IHtcbiAgY29uc3QgcHNidCA9IFBzYnQuZGVzZXJpYWxpemUoQnVmZmVyLmZyb20odHguY29pblNwZWNpZmljLnR4SGV4LCAnaGV4JykpO1xuICBjb25zdCBkZXNjcmlwdG9yTWFwID0gZ2V0RGVzY3JpcHRvcnNGcm9tRGVzY3JpcHRvclRyYW5zYWN0aW9uKHR4KTtcbiAgYXNzZXJ0UG94NVNwZW5kUG9saWN5KHBzYnQsIGRlc2NyaXB0b3JNYXApO1xuICBzaWduUHNidChwc2J0LCBkZXNjcmlwdG9yTWFwLCBwcnYsIHsgb25Vbmtub3duSW5wdXQ6ICd0aHJvdycgfSk7XG4gIHJldHVybiBwc2J0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbkZyb21Qc2J0KFxuICB0eDogRGVzY3JpcHRvclRyYW5zYWN0aW9uLFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lXG4pOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uPHN0cmluZz4ge1xuICBjb25zdCBwc2J0ID0gUHNidC5kZXNlcmlhbGl6ZShCdWZmZXIuZnJvbSh0eC5jb2luU3BlY2lmaWMudHhIZXgsICdoZXgnKSk7XG4gIGNvbnN0IGRlc2NyaXB0b3JNYXAgPSBnZXREZXNjcmlwdG9yc0Zyb21EZXNjcmlwdG9yVHJhbnNhY3Rpb24odHgpO1xuICBjb25zdCB7IG91dHB1dHMsIGNoYW5nZU91dHB1dHMsIGZlZSB9ID0gZXhwbGFpblBzYnQocHNidCwgZGVzY3JpcHRvck1hcCwgY29pbk5hbWUpO1xuICByZXR1cm4ge1xuICAgIG91dHB1dHMsXG4gICAgY2hhbmdlT3V0cHV0cyxcbiAgICBsb2NrdGltZTogcHNidC5sb2NrVGltZSgpLFxuICAgIGZlZToge1xuICAgICAgLyogbmV0d29yayBmZWUgKi9cbiAgICAgIGZlZSxcbiAgICAgIC8qIFRPRE8gKi9cbiAgICAgIHBheUdvRmVlU3RyaW5nOiB1bmRlZmluZWQsXG4gICAgICBwYXlHb0ZlZUFkZHJlc3M6IHVuZGVmaW5lZCxcbiAgICB9LFxuICB9O1xufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecoveryProvider.d.ts","sourceRoot":"","sources":["../../../../src/recovery/RecoveryProvider.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"RecoveryProvider.d.ts","sourceRoot":"","sources":["../../../../src/recovery/RecoveryProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAG9F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI1C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM;IACxE,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1E,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACtD,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACxD;AA0BD,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAgBrF"}
|
|
@@ -2,7 +2,30 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.forCoin = forCoin;
|
|
4
4
|
const blockapis_1 = require("@bitgo/blockapis");
|
|
5
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
5
6
|
const baseApi_1 = require("./baseApi");
|
|
7
|
+
/**
|
|
8
|
+
* Re-map `@bitgo/blockapis` provider failures (`ApiRequestError`) to the shared
|
|
9
|
+
* `RecoveryProviderError` so a recovery scanner can distinguish "indexer failed"
|
|
10
|
+
* from "wallet is empty". `ApiRequestError` is the single error type the blockchair
|
|
11
|
+
* http client surfaces for network failures, non-2xx responses, and malformed bodies.
|
|
12
|
+
*/
|
|
13
|
+
function wrapProviderErrors(provider) {
|
|
14
|
+
return new Proxy(provider, {
|
|
15
|
+
get(target, prop, receiver) {
|
|
16
|
+
const value = Reflect.get(target, prop, receiver);
|
|
17
|
+
if (typeof value === 'function') {
|
|
18
|
+
return (...args) => Promise.resolve(value.apply(target, args)).catch((e) => {
|
|
19
|
+
if (e instanceof blockapis_1.ApiRequestError) {
|
|
20
|
+
throw new sdk_core_1.RecoveryProviderError(e.message, e);
|
|
21
|
+
}
|
|
22
|
+
throw e;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
}
|
|
6
29
|
function forCoin(coinName, apiToken) {
|
|
7
30
|
switch (coinName) {
|
|
8
31
|
case 'btc':
|
|
@@ -15,8 +38,8 @@ function forCoin(coinName, apiToken) {
|
|
|
15
38
|
case 'doge':
|
|
16
39
|
case 'ltc':
|
|
17
40
|
case 'zec':
|
|
18
|
-
return blockapis_1.BlockchairApi.forCoin(coinName, { apiToken });
|
|
41
|
+
return wrapProviderErrors(blockapis_1.BlockchairApi.forCoin(coinName, { apiToken }));
|
|
19
42
|
}
|
|
20
43
|
throw new baseApi_1.ApiNotImplementedError(coinName);
|
|
21
44
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3ZlcnlQcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9yZWNvdmVyeS9SZWNvdmVyeVByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaURBLDBCQWdCQztBQWpFRCxnREFBOEY7QUFDOUYsOENBQXdEO0FBSXhELHVDQUFtRDtBQW9CbkQ7Ozs7O0dBS0c7QUFDSCxTQUFTLGtCQUFrQixDQUE2QixRQUFXO0lBQ2pFLE9BQU8sSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1FBQ3pCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVE7WUFDeEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sQ0FBQyxHQUFHLElBQWUsRUFBRSxFQUFFLENBQzVCLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFVLEVBQUUsRUFBRTtvQkFDOUQsSUFBSSxDQUFDLFlBQVksMkJBQWUsRUFBRSxDQUFDO3dCQUNqQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDaEQsQ0FBQztvQkFDRCxNQUFNLENBQUMsQ0FBQztnQkFDVixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7S0FDRixDQUFNLENBQUM7QUFDVixDQUFDO0FBRUQsU0FBZ0IsT0FBTyxDQUFDLFFBQWdCLEVBQUUsUUFBaUI7SUFDekQsUUFBUSxRQUFRLEVBQUUsQ0FBQztRQUNqQixLQUFLLEtBQUssQ0FBQztRQUNYLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLEtBQUs7WUFDUixPQUFPLGtCQUFrQixDQUFDLHlCQUFhLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsTUFBTSxJQUFJLGdDQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlSZXF1ZXN0RXJyb3IsIEJsb2NrY2hhaXJBcGksIEFkZHJlc3NJbmZvLCBUcmFuc2FjdGlvbklPIH0gZnJvbSAnQGJpdGdvL2Jsb2NrYXBpcyc7XG5pbXBvcnQgeyBSZWNvdmVyeVByb3ZpZGVyRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IFVuc3BlbnQgfSBmcm9tICcuLi91bnNwZW50JztcblxuaW1wb3J0IHsgQXBpTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gJy4vYmFzZUFwaSc7XG5cbi8qKlxuICogQW4gYWNjb3VudCB3aXRoIGJlYXIgbWluaW11bSBpbmZvcm1hdGlvbiByZXF1aXJlZCBmb3IgcmVjb3Zlcmllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWNvdmVyeUFjY291bnREYXRhIHtcbiAgdHhDb3VudDogbnVtYmVyO1xuICB0b3RhbEJhbGFuY2U6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZvciBBZGRyZXNzQXBpICYgVXR4b0FwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlY292ZXJ5UHJvdmlkZXI8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4ge1xuICBnZXRVbnNwZW50c0ZvckFkZHJlc3NlcyhhZGRyZXNzZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxVbnNwZW50PFROdW1iZXI+W10+O1xuICBnZXRBZGRyZXNzSW5mbyhhZGRyZXNzOiBzdHJpbmcpOiBQcm9taXNlPEFkZHJlc3NJbmZvPjtcbiAgZ2V0VHJhbnNhY3Rpb25IZXgodHhpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+O1xuICBnZXRUcmFuc2FjdGlvbklPKHR4aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JTz47XG59XG5cbi8qKlxuICogUmUtbWFwIGBAYml0Z28vYmxvY2thcGlzYCBwcm92aWRlciBmYWlsdXJlcyAoYEFwaVJlcXVlc3RFcnJvcmApIHRvIHRoZSBzaGFyZWRcbiAqIGBSZWNvdmVyeVByb3ZpZGVyRXJyb3JgIHNvIGEgcmVjb3Zlcnkgc2Nhbm5lciBjYW4gZGlzdGluZ3Vpc2ggXCJpbmRleGVyIGZhaWxlZFwiXG4gKiBmcm9tIFwid2FsbGV0IGlzIGVtcHR5XCIuIGBBcGlSZXF1ZXN0RXJyb3JgIGlzIHRoZSBzaW5nbGUgZXJyb3IgdHlwZSB0aGUgYmxvY2tjaGFpclxuICogaHR0cCBjbGllbnQgc3VyZmFjZXMgZm9yIG5ldHdvcmsgZmFpbHVyZXMsIG5vbi0yeHggcmVzcG9uc2VzLCBhbmQgbWFsZm9ybWVkIGJvZGllcy5cbiAqL1xuZnVuY3Rpb24gd3JhcFByb3ZpZGVyRXJyb3JzPFQgZXh0ZW5kcyBSZWNvdmVyeVByb3ZpZGVyPihwcm92aWRlcjogVCk6IFQge1xuICByZXR1cm4gbmV3IFByb3h5KHByb3ZpZGVyLCB7XG4gICAgZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAoLi4uYXJnczogdW5rbm93bltdKSA9PlxuICAgICAgICAgIFByb21pc2UucmVzb2x2ZSh2YWx1ZS5hcHBseSh0YXJnZXQsIGFyZ3MpKS5jYXRjaCgoZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBcGlSZXF1ZXN0RXJyb3IpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlY292ZXJ5UHJvdmlkZXJFcnJvcihlLm1lc3NhZ2UsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICB9KSBhcyBUO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yQ29pbihjb2luTmFtZTogc3RyaW5nLCBhcGlUb2tlbj86IHN0cmluZyk6IFJlY292ZXJ5UHJvdmlkZXI8bnVtYmVyPiB7XG4gIHN3aXRjaCAoY29pbk5hbWUpIHtcbiAgICBjYXNlICdidGMnOlxuICAgIGNhc2UgJ3RidGMnOlxuICAgIGNhc2UgJ2JjaCc6XG4gICAgY2FzZSAnYmNoYSc6XG4gICAgY2FzZSAnYnN2JzpcbiAgICBjYXNlICdidGcnOlxuICAgIGNhc2UgJ2Rhc2gnOlxuICAgIGNhc2UgJ2RvZ2UnOlxuICAgIGNhc2UgJ2x0Yyc6XG4gICAgY2FzZSAnemVjJzpcbiAgICAgIHJldHVybiB3cmFwUHJvdmlkZXJFcnJvcnMoQmxvY2tjaGFpckFwaS5mb3JDb2luKGNvaW5OYW1lLCB7IGFwaVRva2VuIH0pKTtcbiAgfVxuXG4gIHRocm93IG5ldyBBcGlOb3RJbXBsZW1lbnRlZEVycm9yKGNvaW5OYW1lKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pox5.d.ts","sourceRoot":"","sources":["../../../../../test/unit/offlineVault/pox5.ts"],"names":[],"mappings":""}
|