@bitgo-beta/sdk-coin-baby 1.0.1-beta.81 → 1.0.1-beta.810
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/src/baby.d.ts +2 -1
- package/dist/src/baby.d.ts.map +1 -1
- package/dist/src/baby.js +3 -2
- package/dist/src/lib/BabylonTransaction.d.ts +9 -0
- package/dist/src/lib/BabylonTransaction.d.ts.map +1 -0
- package/dist/src/lib/BabylonTransaction.js +87 -0
- package/dist/src/lib/CustomTransactionBuilder.d.ts +14 -0
- package/dist/src/lib/CustomTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/CustomTransactionBuilder.js +37 -0
- package/dist/src/lib/EpochedStakingActivateBuilder.d.ts +7 -0
- package/dist/src/lib/EpochedStakingActivateBuilder.d.ts.map +1 -0
- package/dist/src/lib/EpochedStakingActivateBuilder.js +48 -0
- package/dist/src/lib/EpochedStakingDeactivateBuilder.d.ts +7 -0
- package/dist/src/lib/EpochedStakingDeactivateBuilder.d.ts.map +1 -0
- package/dist/src/lib/EpochedStakingDeactivateBuilder.js +48 -0
- package/dist/src/lib/EpochedStakingRedelegateBuilder.d.ts +7 -0
- package/dist/src/lib/EpochedStakingRedelegateBuilder.d.ts.map +1 -0
- package/dist/src/lib/EpochedStakingRedelegateBuilder.js +48 -0
- package/dist/src/lib/constants.d.ts +6 -0
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +11 -3
- package/dist/src/lib/iface.d.ts +10 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +3 -0
- package/dist/src/lib/index.d.ts +4 -1
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +10 -3
- package/dist/src/lib/transactionBuilderFactory.d.ts +10 -8
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +15 -5
- package/dist/src/lib/utils.d.ts +25 -2
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +155 -2
- package/dist/test/resources/baby.d.ts +397 -0
- package/dist/test/resources/baby.d.ts.map +1 -0
- package/dist/test/resources/baby.js +413 -0
- package/dist/test/unit/baby.d.ts +2 -0
- package/dist/test/unit/baby.d.ts.map +1 -0
- package/dist/test/unit/baby.js +259 -0
- package/dist/test/unit/getBuilderFactory.d.ts +3 -0
- package/dist/test/unit/getBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/getBuilderFactory.js +10 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +93 -0
- package/dist/test/unit/transaction.d.ts +2 -0
- package/dist/test/unit/transaction.d.ts.map +1 -0
- package/dist/test/unit/transaction.js +143 -0
- package/dist/test/unit/transactionBuilder/CustomTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/CustomTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/CustomTransactionBuilder.js +124 -0
- package/dist/test/unit/transactionBuilder/StakingActivateBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/StakingActivateBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/StakingActivateBuilder.js +154 -0
- package/dist/test/unit/transactionBuilder/StakingDeactivateBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/StakingDeactivateBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/StakingDeactivateBuilder.js +153 -0
- package/dist/test/unit/transactionBuilder/StakingRedelegateBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/StakingRedelegateBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/StakingRedelegateBuilder.js +93 -0
- package/dist/test/unit/transactionBuilder/StakingWithdrawRewardsBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/StakingWithdrawRewardsBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/StakingWithdrawRewardsBuilder.js +154 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.js +124 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.js +212 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +84 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +16 -10
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -42
|
@@ -6,14 +6,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.TransactionBuilderFactory = void 0;
|
|
7
7
|
const abstract_cosmos_1 = require("@bitgo-beta/abstract-cosmos");
|
|
8
8
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const EpochedStakingActivateBuilder_1 = require("./EpochedStakingActivateBuilder");
|
|
10
|
+
const EpochedStakingDeactivateBuilder_1 = require("./EpochedStakingDeactivateBuilder");
|
|
11
|
+
const EpochedStakingRedelegateBuilder_1 = require("./EpochedStakingRedelegateBuilder");
|
|
12
|
+
const CustomTransactionBuilder_1 = require("./CustomTransactionBuilder");
|
|
9
13
|
const utils_1 = __importDefault(require("./utils"));
|
|
14
|
+
const BabylonTransaction_1 = require("./BabylonTransaction");
|
|
10
15
|
class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
|
|
11
16
|
constructor(_coinConfig) {
|
|
12
17
|
super(_coinConfig);
|
|
13
18
|
}
|
|
14
19
|
/** @inheritdoc */
|
|
15
20
|
from(raw) {
|
|
16
|
-
const tx = new
|
|
21
|
+
const tx = new BabylonTransaction_1.BabylonTransaction(this._coinConfig, utils_1.default);
|
|
17
22
|
tx.enrichTransactionDetailsFromRawTransaction(raw);
|
|
18
23
|
try {
|
|
19
24
|
switch (tx.type) {
|
|
@@ -29,6 +34,8 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
|
|
|
29
34
|
return this.getContractCallBuilder(tx);
|
|
30
35
|
case sdk_core_1.TransactionType.StakingRedelegate:
|
|
31
36
|
return this.getStakingRedelegateBuilder(tx);
|
|
37
|
+
case sdk_core_1.TransactionType.CustomTx:
|
|
38
|
+
return this.getCustomTransactionBuilder(tx);
|
|
32
39
|
default:
|
|
33
40
|
throw new sdk_core_1.InvalidTransactionError('Invalid transaction');
|
|
34
41
|
}
|
|
@@ -43,11 +50,11 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
|
|
|
43
50
|
}
|
|
44
51
|
/** @inheritdoc */
|
|
45
52
|
getStakingActivateBuilder(tx) {
|
|
46
|
-
return this.initializeBuilder(tx, new
|
|
53
|
+
return this.initializeBuilder(tx, new EpochedStakingActivateBuilder_1.EpochedStakingActivateBuilder(this._coinConfig, utils_1.default));
|
|
47
54
|
}
|
|
48
55
|
/** @inheritdoc */
|
|
49
56
|
getStakingDeactivateBuilder(tx) {
|
|
50
|
-
return this.initializeBuilder(tx, new
|
|
57
|
+
return this.initializeBuilder(tx, new EpochedStakingDeactivateBuilder_1.EpochedStakingDeactivateBuilder(this._coinConfig, utils_1.default));
|
|
51
58
|
}
|
|
52
59
|
/** @inheritdoc */
|
|
53
60
|
getStakingWithdrawRewardsBuilder(tx) {
|
|
@@ -57,7 +64,10 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
|
|
|
57
64
|
return this.initializeBuilder(tx, new abstract_cosmos_1.ContractCallBuilder(this._coinConfig, utils_1.default));
|
|
58
65
|
}
|
|
59
66
|
getStakingRedelegateBuilder(tx) {
|
|
60
|
-
return this.initializeBuilder(tx, new
|
|
67
|
+
return this.initializeBuilder(tx, new EpochedStakingRedelegateBuilder_1.EpochedStakingRedelegateBuilder(this._coinConfig, utils_1.default));
|
|
68
|
+
}
|
|
69
|
+
getCustomTransactionBuilder(tx) {
|
|
70
|
+
return this.initializeBuilder(tx, new CustomTransactionBuilder_1.CustomTransactionBuilder(this._coinConfig, utils_1.default));
|
|
61
71
|
}
|
|
62
72
|
/** @inheritdoc */
|
|
63
73
|
getWalletInitializationBuilder() {
|
|
@@ -78,4 +88,4 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
|
|
|
78
88
|
}
|
|
79
89
|
}
|
|
80
90
|
exports.TransactionBuilderFactory = TransactionBuilderFactory;
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpRUFTcUM7QUFDckMsbURBQStHO0FBRS9HLG1GQUFnRjtBQUNoRix1RkFBb0Y7QUFDcEYsdUZBQW9GO0FBQ3BGLHlFQUFzRTtBQUV0RSxvREFBNEI7QUFDNUIsNkRBQTBEO0FBRTFELE1BQWEseUJBQTBCLFNBQVEsd0NBQTZCO0lBQzFFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBSSxDQUFDLEdBQVc7UUFDZCxNQUFNLEVBQUUsR0FBRyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBSyxDQUFDLENBQUM7UUFDM0QsRUFBRSxDQUFDLDBDQUEwQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQztZQUNILFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixLQUFLLDBCQUFlLENBQUMsSUFBSTtvQkFDdkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLEtBQUssMEJBQWUsQ0FBQyxlQUFlO29CQUNsQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUMsS0FBSywwQkFBZSxDQUFDLGlCQUFpQjtvQkFDcEMsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzlDLEtBQUssMEJBQWUsQ0FBQyxlQUFlO29CQUNsQyxPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkQsS0FBSywwQkFBZSxDQUFDLFlBQVk7b0JBQy9CLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN6QyxLQUFLLDBCQUFlLENBQUMsaUJBQWlCO29CQUNwQyxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDOUMsS0FBSywwQkFBZSxDQUFDLFFBQVE7b0JBQzNCLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QztvQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUM3RCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksa0NBQXVCLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQixDQUFDLEVBQStDO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLHVDQUFxQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBSyxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBQ0Qsa0JBQWtCO0lBQ2xCLHlCQUF5QixDQUN2QixFQUErQztRQUUvQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSw2REFBNkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQUssQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUNELGtCQUFrQjtJQUNsQiwyQkFBMkIsQ0FDekIsRUFBK0M7UUFFL0MsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksaUVBQStCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxlQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFDRCxrQkFBa0I7SUFDbEIsZ0NBQWdDLENBQzlCLEVBQStDO1FBRS9DLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLCtDQUE2QixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBSyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsc0JBQXNCLENBQ3BCLEVBQStDO1FBRS9DLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLHFDQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBSyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsMkJBQTJCLENBQ3pCLEVBQStDO1FBRS9DLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLGlFQUErQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBSyxDQUFDLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQsMkJBQTJCLENBQ3pCLEVBQStDO1FBRS9DLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLG1EQUF3QixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBSyxDQUFDLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDhCQUE4QjtRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLGlCQUFpQixDQUN2QixFQUEwRCxFQUMxRCxPQUFVO1FBRVYsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQS9GRCw4REErRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb250cmFjdENhbGxCdWlsZGVyLFxuICBDb3Ntb3NUcmFuc2FjdGlvbixcbiAgQ29zbW9zVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBDb3Ntb3NUcmFuc2ZlckJ1aWxkZXIsXG4gIFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIsXG4gIFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcixcbiAgU3Rha2luZ1JlZGVsZWdhdGVCdWlsZGVyLFxuICBTdGFraW5nV2l0aGRyYXdSZXdhcmRzQnVpbGRlcixcbn0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3QtY29zbW9zJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgRXBvY2hlZFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIgfSBmcm9tICcuL0Vwb2NoZWRTdGFraW5nQWN0aXZhdGVCdWlsZGVyJztcbmltcG9ydCB7IEVwb2NoZWRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIgfSBmcm9tICcuL0Vwb2NoZWRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXInO1xuaW1wb3J0IHsgRXBvY2hlZFN0YWtpbmdSZWRlbGVnYXRlQnVpbGRlciB9IGZyb20gJy4vRXBvY2hlZFN0YWtpbmdSZWRlbGVnYXRlQnVpbGRlcic7XG5pbXBvcnQgeyBDdXN0b21UcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL0N1c3RvbVRyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlcyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQmFieWxvblRyYW5zYWN0aW9uIH0gZnJvbSAnLi9CYWJ5bG9uVHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGZyb20ocmF3OiBzdHJpbmcpOiBDb3Ntb3NUcmFuc2FjdGlvbkJ1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICBjb25zdCB0eCA9IG5ldyBCYWJ5bG9uVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZywgdXRpbHMpO1xuICAgIHR4LmVucmljaFRyYW5zYWN0aW9uRGV0YWlsc0Zyb21SYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKHR4LnR5cGUpIHtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2ZlckJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFraW5nV2l0aGRyYXdSZXdhcmRzQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbDpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDb250cmFjdENhbGxCdWlsZGVyKHR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1JlZGVsZWdhdGU6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ1JlZGVsZWdhdGVCdWlsZGVyKHR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ3VzdG9tVHg6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q3VzdG9tVHJhbnNhY3Rpb25CdWlsZGVyKHR4KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246ICcgKyBlLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIodHg/OiBDb3Ntb3NUcmFuc2FjdGlvbjxCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlcz4pOiBDb3Ntb3NUcmFuc2ZlckJ1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IENvc21vc1RyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnLCB1dGlscykpO1xuICB9XG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKFxuICAgIHR4PzogQ29zbW9zVHJhbnNhY3Rpb248QmFieWxvblNwZWNpZmljTWVzc2FnZXM+XG4gICk6IFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IEVwb2NoZWRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcsIHV0aWxzKSk7XG4gIH1cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcihcbiAgICB0eD86IENvc21vc1RyYW5zYWN0aW9uPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzPlxuICApOiBTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IEVwb2NoZWRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZywgdXRpbHMpKTtcbiAgfVxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0U3Rha2luZ1dpdGhkcmF3UmV3YXJkc0J1aWxkZXIoXG4gICAgdHg/OiBDb3Ntb3NUcmFuc2FjdGlvbjxCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlcz5cbiAgKTogU3Rha2luZ1dpdGhkcmF3UmV3YXJkc0J1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdXaXRoZHJhd1Jld2FyZHNCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcsIHV0aWxzKSk7XG4gIH1cblxuICBnZXRDb250cmFjdENhbGxCdWlsZGVyKFxuICAgIHR4PzogQ29zbW9zVHJhbnNhY3Rpb248QmFieWxvblNwZWNpZmljTWVzc2FnZXM+XG4gICk6IENvbnRyYWN0Q2FsbEJ1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IENvbnRyYWN0Q2FsbEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZywgdXRpbHMpKTtcbiAgfVxuXG4gIGdldFN0YWtpbmdSZWRlbGVnYXRlQnVpbGRlcihcbiAgICB0eD86IENvc21vc1RyYW5zYWN0aW9uPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzPlxuICApOiBTdGFraW5nUmVkZWxlZ2F0ZUJ1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IEVwb2NoZWRTdGFraW5nUmVkZWxlZ2F0ZUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZywgdXRpbHMpKTtcbiAgfVxuXG4gIGdldEN1c3RvbVRyYW5zYWN0aW9uQnVpbGRlcihcbiAgICB0eD86IENvc21vc1RyYW5zYWN0aW9uPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzPlxuICApOiBDb3Ntb3NUcmFuc2FjdGlvbkJ1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IEN1c3RvbVRyYW5zYWN0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnLCB1dGlscykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcigpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoIHRoZSBnaXZlbiB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uIHwgdW5kZWZpbmVkfSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IGJ1aWxkZXIgLSB0aGUgYnVpbGRlciB0byBiZSBpbml0aWFsaXplZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSB0aGUgYnVpbGRlciBpbml0aWFsaXplZFxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplQnVpbGRlcjxUIGV4dGVuZHMgQ29zbW9zVHJhbnNhY3Rpb25CdWlsZGVyPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzPj4oXG4gICAgdHg6IENvc21vc1RyYW5zYWN0aW9uPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzPiB8IHVuZGVmaW5lZCxcbiAgICBidWlsZGVyOiBUXG4gICk6IFQge1xuICAgIGlmICh0eCkge1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgfVxuICAgIHJldHVybiBidWlsZGVyO1xuICB9XG59XG4iXX0=
|
package/dist/src/lib/utils.d.ts
CHANGED
|
@@ -1,6 +1,29 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DecodedTxRaw } from '@cosmjs/proto-signing';
|
|
2
2
|
import { Coin } from '@cosmjs/stargate';
|
|
3
|
-
|
|
3
|
+
import { Any } from 'cosmjs-types/google/protobuf/any';
|
|
4
|
+
import { BabylonSpecificMessageKind, BabylonSpecificMessages, CreateBtcDelegationMessage, WithdrawRewardMessage } from './iface';
|
|
5
|
+
import { CosmosUtils, MessageData } from '@bitgo-beta/abstract-cosmos';
|
|
6
|
+
import { TransactionType } from '@bitgo-beta/sdk-core';
|
|
7
|
+
export declare class Utils extends CosmosUtils<BabylonSpecificMessages> {
|
|
8
|
+
babylonMessageKindToTypeUrl: Record<BabylonSpecificMessageKind, string>;
|
|
9
|
+
babylonMessageTypeUrlToKind: Record<string, BabylonSpecificMessageKind>;
|
|
10
|
+
protected wrappedMsgTypeUrls: Set<string>;
|
|
11
|
+
protected customMsgTypeUrls: Set<string>;
|
|
12
|
+
constructor();
|
|
13
|
+
/** @inheritdoc */
|
|
14
|
+
getDelegateOrUndelegateMessageDataFromDecodedTx(decodedTx: DecodedTxRaw): MessageData<BabylonSpecificMessages>[];
|
|
15
|
+
/** @inheritdoc */
|
|
16
|
+
getRedelegateMessageDataFromDecodedTx(decodedTx: DecodedTxRaw): MessageData<BabylonSpecificMessages>[];
|
|
17
|
+
/** @inheritdoc */
|
|
18
|
+
getCustomMessageDataFromDecodedTx(decodedTx: DecodedTxRaw): MessageData<BabylonSpecificMessages>[];
|
|
19
|
+
/** @inheritdoc */
|
|
20
|
+
getTransactionTypeFromTypeUrl(typeUrl: string): TransactionType | undefined;
|
|
21
|
+
/** @inheritdoc */
|
|
22
|
+
getSendMessagesForEncodingTx(cosmosLikeTransaction: Parameters<CosmosUtils<BabylonSpecificMessages>['getSendMessagesForEncodingTx']>[0]): Any[];
|
|
23
|
+
/** @inheritdoc */
|
|
24
|
+
validateCustomMessage(customMessage: BabylonSpecificMessages): void;
|
|
25
|
+
validateCreateBtcDelegationMessage(createBtcDelegationMessage: CreateBtcDelegationMessage): void;
|
|
26
|
+
validateWithdrawRewardMessage(withdrawRewardMessage: WithdrawRewardMessage): void;
|
|
4
27
|
/** @inheritdoc */
|
|
5
28
|
isValidAddress(address: string): boolean;
|
|
6
29
|
/** @inheritdoc */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AACvD,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAA2B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGhF,qBAAa,KAAM,SAAQ,WAAW,CAAC,uBAAuB,CAAC;IACtD,2BAA2B,EAAE,MAAM,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAG5E;IACK,2BAA2B,EAE7B,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAEhD,SAAS,CAAC,kBAAkB,cAIzB;IACH,SAAS,CAAC,iBAAiB,cAA8D;;IAWzF,kBAAkB;IAClB,+CAA+C,CAAC,SAAS,EAAE,YAAY,GAAG,WAAW,CAAC,uBAAuB,CAAC,EAAE;IAchH,kBAAkB;IAClB,qCAAqC,CAAC,SAAS,EAAE,YAAY,GAAG,WAAW,CAAC,uBAAuB,CAAC,EAAE;IAetG,kBAAkB;IAClB,iCAAiC,CAAC,SAAS,EAAE,YAAY,GAAG,WAAW,CAAC,uBAAuB,CAAC,EAAE;IAalG,kBAAkB;IAClB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAgB3E,kBAAkB;IAClB,4BAA4B,CAC1B,qBAAqB,EAAE,UAAU,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,GACzG,GAAG,EAAE;IAcR,kBAAkB;IAClB,qBAAqB,CAAC,aAAa,EAAE,uBAAuB,GAAG,IAAI;IAanE,kCAAkC,CAAC,0BAA0B,EAAE,0BAA0B,GAAG,IAAI;IA2ChG,6BAA6B,CAAC,qBAAqB,EAAE,qBAAqB,GAAG,IAAI;IAgBjF,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,kBAAkB;IAClB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjD,kBAAkB;IAClB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIhD,kBAAkB;IAClB,cAAc,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;CASnC;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
|
package/dist/src/lib/utils.js
CHANGED
|
@@ -37,11 +37,164 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.Utils = void 0;
|
|
40
|
+
const babylon_proto_ts_1 = require("@babylonlabs-io/babylon-proto-ts");
|
|
41
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
40
42
|
const abstract_cosmos_1 = require("@bitgo-beta/abstract-cosmos");
|
|
41
43
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
42
|
-
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
43
44
|
const constants = __importStar(require("./constants"));
|
|
44
45
|
class Utils extends abstract_cosmos_1.CosmosUtils {
|
|
46
|
+
constructor() {
|
|
47
|
+
super();
|
|
48
|
+
this.babylonMessageKindToTypeUrl = {
|
|
49
|
+
CreateBtcDelegation: constants.createBTCDelegationMsgTypeUrl,
|
|
50
|
+
WithdrawReward: constants.withdrawRewardMsgTypeUrl,
|
|
51
|
+
};
|
|
52
|
+
this.babylonMessageTypeUrlToKind = Object.fromEntries(Object.entries(this.babylonMessageKindToTypeUrl).map(([key, value]) => [value, key]));
|
|
53
|
+
this.wrappedMsgTypeUrls = new Set([
|
|
54
|
+
constants.wrappedDelegateMsgTypeUrl,
|
|
55
|
+
constants.wrappedUndelegateMsgTypeUrl,
|
|
56
|
+
constants.wrappedBeginRedelegateTypeUrl,
|
|
57
|
+
]);
|
|
58
|
+
this.customMsgTypeUrls = new Set([constants.createBTCDelegationMsgTypeUrl]);
|
|
59
|
+
this.registry.register(constants.wrappedDelegateMsgTypeUrl, babylon_proto_ts_1.epochingtx.MsgWrappedDelegate);
|
|
60
|
+
this.registry.register(constants.wrappedUndelegateMsgTypeUrl, babylon_proto_ts_1.epochingtx.MsgWrappedUndelegate);
|
|
61
|
+
this.registry.register(constants.wrappedBeginRedelegateTypeUrl, babylon_proto_ts_1.epochingtx.MsgWrappedBeginRedelegate);
|
|
62
|
+
this.registry.register(constants.createBTCDelegationMsgTypeUrl, babylon_proto_ts_1.btcstakingtx.MsgCreateBTCDelegation);
|
|
63
|
+
this.registry.register(constants.withdrawRewardMsgTypeUrl, babylon_proto_ts_1.incentivetx.MsgWithdrawReward);
|
|
64
|
+
}
|
|
65
|
+
/** @inheritdoc */
|
|
66
|
+
getDelegateOrUndelegateMessageDataFromDecodedTx(decodedTx) {
|
|
67
|
+
return decodedTx.body.messages.map((message) => {
|
|
68
|
+
const value = this.registry.decode(message).msg;
|
|
69
|
+
return {
|
|
70
|
+
typeUrl: message.typeUrl,
|
|
71
|
+
value: {
|
|
72
|
+
delegatorAddress: value.delegatorAddress,
|
|
73
|
+
validatorAddress: value.validatorAddress,
|
|
74
|
+
amount: value.amount,
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/** @inheritdoc */
|
|
80
|
+
getRedelegateMessageDataFromDecodedTx(decodedTx) {
|
|
81
|
+
return decodedTx.body.messages.map((message) => {
|
|
82
|
+
const value = this.registry.decode(message).msg;
|
|
83
|
+
return {
|
|
84
|
+
typeUrl: message.typeUrl,
|
|
85
|
+
value: {
|
|
86
|
+
delegatorAddress: value.delegatorAddress,
|
|
87
|
+
validatorSrcAddress: value.validatorSrcAddress,
|
|
88
|
+
validatorDstAddress: value.validatorDstAddress,
|
|
89
|
+
amount: value.amount,
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/** @inheritdoc */
|
|
95
|
+
getCustomMessageDataFromDecodedTx(decodedTx) {
|
|
96
|
+
return decodedTx.body.messages.map((message) => {
|
|
97
|
+
const value = this.registry.decode(message);
|
|
98
|
+
return {
|
|
99
|
+
typeUrl: message.typeUrl,
|
|
100
|
+
value: {
|
|
101
|
+
_kind: this.babylonMessageTypeUrlToKind[message.typeUrl],
|
|
102
|
+
...value,
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/** @inheritdoc */
|
|
108
|
+
getTransactionTypeFromTypeUrl(typeUrl) {
|
|
109
|
+
switch (typeUrl) {
|
|
110
|
+
case constants.wrappedDelegateMsgTypeUrl:
|
|
111
|
+
return sdk_core_1.TransactionType.StakingActivate;
|
|
112
|
+
case constants.wrappedUndelegateMsgTypeUrl:
|
|
113
|
+
return sdk_core_1.TransactionType.StakingDeactivate;
|
|
114
|
+
case constants.wrappedBeginRedelegateTypeUrl:
|
|
115
|
+
return sdk_core_1.TransactionType.StakingRedelegate;
|
|
116
|
+
case constants.createBTCDelegationMsgTypeUrl:
|
|
117
|
+
case constants.withdrawRewardMsgTypeUrl:
|
|
118
|
+
return sdk_core_1.TransactionType.CustomTx;
|
|
119
|
+
default:
|
|
120
|
+
return super.getTransactionTypeFromTypeUrl(typeUrl);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/** @inheritdoc */
|
|
124
|
+
getSendMessagesForEncodingTx(cosmosLikeTransaction) {
|
|
125
|
+
return cosmosLikeTransaction.sendMessages.map(({ typeUrl, value }) => {
|
|
126
|
+
let valueToEncode = value;
|
|
127
|
+
if (this.wrappedMsgTypeUrls.has(typeUrl)) {
|
|
128
|
+
valueToEncode = { msg: value };
|
|
129
|
+
}
|
|
130
|
+
else if (this.customMsgTypeUrls.has(typeUrl)) {
|
|
131
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
132
|
+
const { _kind, ...rest } = value;
|
|
133
|
+
valueToEncode = rest;
|
|
134
|
+
}
|
|
135
|
+
return { typeUrl, value: valueToEncode };
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/** @inheritdoc */
|
|
139
|
+
validateCustomMessage(customMessage) {
|
|
140
|
+
switch (customMessage._kind) {
|
|
141
|
+
case 'CreateBtcDelegation':
|
|
142
|
+
this.validateCreateBtcDelegationMessage(customMessage);
|
|
143
|
+
break;
|
|
144
|
+
case 'WithdrawReward':
|
|
145
|
+
this.validateWithdrawRewardMessage(customMessage);
|
|
146
|
+
break;
|
|
147
|
+
default:
|
|
148
|
+
throw new sdk_core_1.InvalidTransactionError(`Unsupported BabylonSpecificMessages message`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
validateCreateBtcDelegationMessage(createBtcDelegationMessage) {
|
|
152
|
+
if (createBtcDelegationMessage._kind !== 'CreateBtcDelegation') {
|
|
153
|
+
throw new sdk_core_1.InvalidTransactionError(`Invalid CreateBtcDelegationMessage kind: ${createBtcDelegationMessage._kind}`);
|
|
154
|
+
}
|
|
155
|
+
// TODO: check the other fields more thoroughly
|
|
156
|
+
this.isObjPropertyNull(createBtcDelegationMessage, [
|
|
157
|
+
'stakerAddr',
|
|
158
|
+
// 'pop',
|
|
159
|
+
'btcPk',
|
|
160
|
+
'fpBtcPkList',
|
|
161
|
+
'stakingTime',
|
|
162
|
+
'stakingValue',
|
|
163
|
+
'stakingTx',
|
|
164
|
+
// 'stakingTxInclusionProof',
|
|
165
|
+
'slashingTx',
|
|
166
|
+
'delegatorSlashingSig',
|
|
167
|
+
'unbondingTime',
|
|
168
|
+
'unbondingTx',
|
|
169
|
+
'unbondingValue',
|
|
170
|
+
'unbondingSlashingTx',
|
|
171
|
+
'delegatorUnbondingSlashingSig',
|
|
172
|
+
]);
|
|
173
|
+
if (createBtcDelegationMessage.pop) {
|
|
174
|
+
this.isObjPropertyNull(createBtcDelegationMessage.pop, ['btcSigType', 'btcSig']);
|
|
175
|
+
}
|
|
176
|
+
if (createBtcDelegationMessage.stakingTxInclusionProof) {
|
|
177
|
+
this.isObjPropertyNull(createBtcDelegationMessage.stakingTxInclusionProof, ['key', 'proof']);
|
|
178
|
+
if (createBtcDelegationMessage.stakingTxInclusionProof.key) {
|
|
179
|
+
this.isObjPropertyNull(createBtcDelegationMessage.stakingTxInclusionProof.key, ['index', 'hash']);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (!this.isValidAddress(createBtcDelegationMessage.stakerAddr)) {
|
|
183
|
+
throw new sdk_core_1.InvalidTransactionError(`Invalid CreateBtcDelegationMessage stakerAddr: ${createBtcDelegationMessage.stakerAddr}`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
validateWithdrawRewardMessage(withdrawRewardMessage) {
|
|
187
|
+
if (withdrawRewardMessage._kind !== 'WithdrawReward') {
|
|
188
|
+
throw new sdk_core_1.InvalidTransactionError(`Invalid WithdrawRewardMessage kind: ${withdrawRewardMessage._kind}`);
|
|
189
|
+
}
|
|
190
|
+
this.isObjPropertyNull(withdrawRewardMessage, ['type', 'address']);
|
|
191
|
+
if (!['finality_provider', 'btc_staker'].includes(withdrawRewardMessage.type)) {
|
|
192
|
+
throw new sdk_core_1.InvalidTransactionError(`Invalid WithdrawRewardMessage type: ${withdrawRewardMessage.type}`);
|
|
193
|
+
}
|
|
194
|
+
if (!this.isValidAddress(withdrawRewardMessage.address)) {
|
|
195
|
+
throw new sdk_core_1.InvalidTransactionError(`Invalid WithdrawRewardMessage address: ${withdrawRewardMessage.address}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
45
198
|
/** @inheritdoc */
|
|
46
199
|
isValidAddress(address) {
|
|
47
200
|
return this.isValidCosmosLikeAddressWithMemoId(address, constants.accountAddressRegex);
|
|
@@ -68,4 +221,4 @@ class Utils extends abstract_cosmos_1.CosmosUtils {
|
|
|
68
221
|
exports.Utils = Utils;
|
|
69
222
|
const utils = new Utils();
|
|
70
223
|
exports.default = utils;
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlFQUEwRDtBQUMxRCxtREFBK0Q7QUFFL0QsZ0VBQXFDO0FBQ3JDLHVEQUF5QztBQUV6QyxNQUFhLEtBQU0sU0FBUSw2QkFBVztJQUNwQyxrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLE9BQWU7UUFDNUIsT0FBTyxJQUFJLENBQUMsa0NBQWtDLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsdUJBQXVCLENBQUMsT0FBZTtRQUNyQyxPQUFPLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixzQkFBc0IsQ0FBQyxPQUFlO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLGlDQUFpQyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxNQUFZO1FBQ3pCLE1BQU0sU0FBUyxHQUFHLElBQUEsc0JBQVMsRUFBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsSUFBSSxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksa0NBQXVCLENBQUMsc0RBQXNELEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVHLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuRSxNQUFNLElBQUksa0NBQXVCLENBQUMscURBQXFELEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFHLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUExQkQsc0JBMEJDO0FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUUxQixrQkFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3Ntb3NVdGlscyB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWNvc21vcyc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IENvaW4gfSBmcm9tICdAY29zbWpzL3N0YXJnYXRlJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCAqIGFzIGNvbnN0YW50cyBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyBleHRlbmRzIENvc21vc1V0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRDb3Ntb3NMaWtlQWRkcmVzc1dpdGhNZW1vSWQoYWRkcmVzcywgY29uc3RhbnRzLmFjY291bnRBZGRyZXNzUmVnZXgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRWYWxpZGF0b3JBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRCZWNoMzJBZGRyZXNzTWF0Y2hpbmdSZWdleChhZGRyZXNzLCBjb25zdGFudHMudmFsaWRhdG9yQWRkcmVzc1JlZ2V4KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQ29udHJhY3RBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRCZWNoMzJBZGRyZXNzTWF0Y2hpbmdSZWdleChhZGRyZXNzLCBjb25zdGFudHMuY29udHJhY3RBZGRyZXNzUmVnZXgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQW1vdW50KGFtb3VudDogQ29pbik6IHZvaWQge1xuICAgIGNvbnN0IGFtb3VudEJpZyA9IEJpZ051bWJlcihhbW91bnQuYW1vdW50KTtcbiAgICBpZiAoYW1vdW50QmlnLmlzTGVzc1RoYW5PckVxdWFsVG8oMCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcigndHJhbnNhY3Rpb25CdWlsZGVyOiB2YWxpZGF0ZUFtb3VudDogSW52YWxpZCBhbW91bnQ6ICcgKyBhbW91bnQuYW1vdW50KTtcbiAgICB9XG4gICAgaWYgKCFjb25zdGFudHMudmFsaWREZW5vbXMuZmluZCgoZGVub20pID0+IGRlbm9tID09PSBhbW91bnQuZGVub20pKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uQnVpbGRlcjogdmFsaWRhdGVBbW91bnQ6IEludmFsaWQgZGVub206ICcgKyBhbW91bnQuZGVub20pO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVFQUF5RjtBQUd6RixnRUFBcUM7QUFRckMsaUVBQXVFO0FBQ3ZFLG1EQUFnRjtBQUNoRix1REFBeUM7QUFFekMsTUFBYSxLQUFNLFNBQVEsNkJBQW9DO0lBZ0I3RDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBaEJILGdDQUEyQixHQUErQztZQUMvRSxtQkFBbUIsRUFBRSxTQUFTLENBQUMsNkJBQTZCO1lBQzVELGNBQWMsRUFBRSxTQUFTLENBQUMsd0JBQXdCO1NBQ25ELENBQUM7UUFDSyxnQ0FBMkIsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUNyRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUN2QyxDQUFDO1FBRXRDLHVCQUFrQixHQUFHLElBQUksR0FBRyxDQUFTO1lBQzdDLFNBQVMsQ0FBQyx5QkFBeUI7WUFDbkMsU0FBUyxDQUFDLDJCQUEyQjtZQUNyQyxTQUFTLENBQUMsNkJBQTZCO1NBQ3hDLENBQUMsQ0FBQztRQUNPLHNCQUFpQixHQUFHLElBQUksR0FBRyxDQUFTLENBQUMsU0FBUyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQztRQUl2RixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMseUJBQXlCLEVBQUUsNkJBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsRUFBRSw2QkFBVSxDQUFDLG9CQUFvQixDQUFD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T0FBTyxFQUFFLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLE1BQVk7UUFDekIsTUFBTSxTQUFTLEdBQUcsSUFBQSxzQkFBUyxFQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQyxJQUFJLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxzREFBc0QsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUcsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25FLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxxREFBcUQsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUcsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTFNRCxzQkEwTUM7QUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBRTFCLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVwb2NoaW5ndHgsIGJ0Y3N0YWtpbmd0eCwgaW5jZW50aXZldHggfSBmcm9tICdAYmFieWxvbmxhYnMtaW8vYmFieWxvbi1wcm90by10cyc7XG5pbXBvcnQgeyBEZWNvZGVkVHhSYXcgfSBmcm9tICdAY29zbWpzL3Byb3RvLXNpZ25pbmcnO1xuaW1wb3J0IHsgQ29pbiB9IGZyb20gJ0Bjb3NtanMvc3RhcmdhdGUnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgQW55IH0gZnJvbSAnY29zbWpzLXR5cGVzL2dvb2dsZS9wcm90b2J1Zi9hbnknO1xuaW1wb3J0IHtcbiAgQmFieWxvblNwZWNpZmljTWVzc2FnZUtpbmQsXG4gIEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzLFxuICBDcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZSxcbiAgV2l0aGRyYXdSZXdhcmRNZXNzYWdlLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IENvc21vc1V0aWxzLCBNZXNzYWdlRGF0YSB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWNvc21vcyc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGV4dGVuZHMgQ29zbW9zVXRpbHM8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgcHVibGljIGJhYnlsb25NZXNzYWdlS2luZFRvVHlwZVVybDogUmVjb3JkPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VLaW5kLCBzdHJpbmc+ID0ge1xuICAgIENyZWF0ZUJ0Y0RlbGVnYXRpb246IGNvbnN0YW50cy5jcmVhdGVCVENEZWxlZ2F0aW9uTXNnVHlwZVVybCxcbiAgICBXaXRoZHJhd1Jld2FyZDogY29uc3RhbnRzLndpdGhkcmF3UmV3YXJkTXNnVHlwZVVybCxcbiAgfTtcbiAgcHVibGljIGJhYnlsb25NZXNzYWdlVHlwZVVybFRvS2luZCA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLmJhYnlsb25NZXNzYWdlS2luZFRvVHlwZVVybCkubWFwKChba2V5LCB2YWx1ZV0pID0+IFt2YWx1ZSwga2V5XSlcbiAgKSBhcyBSZWNvcmQ8c3RyaW5nLCBCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlS2luZD47XG5cbiAgcHJvdGVjdGVkIHdyYXBwZWRNc2dUeXBlVXJscyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gICAgY29uc3RhbnRzLndyYXBwZWREZWxlZ2F0ZU1zZ1R5cGVVcmwsXG4gICAgY29uc3RhbnRzLndyYXBwZWRVbmRlbGVnYXRlTXNnVHlwZVVybCxcbiAgICBjb25zdGFudHMud3JhcHBlZEJlZ2luUmVkZWxlZ2F0ZVR5cGVVcmwsXG4gIF0pO1xuICBwcm90ZWN0ZWQgY3VzdG9tTXNnVHlwZVVybHMgPSBuZXcgU2V0PHN0cmluZz4oW2NvbnN0YW50cy5jcmVhdGVCVENEZWxlZ2F0aW9uTXNnVHlwZVVybF0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZWdpc3RyeS5yZWdpc3Rlcihjb25zdGFudHMud3JhcHBlZERlbGVnYXRlTXNnVHlwZVVybCwgZXBvY2hpbmd0eC5Nc2dXcmFwcGVkRGVsZWdhdGUpO1xuICAgIHRoaXMucmVnaXN0cnkucmVnaXN0ZXIoY29uc3RhbnRzLndyYXBwZWRVbmRlbGVnYXRlTXNnVHlwZVVybCwgZXBvY2hpbmd0eC5Nc2dXcmFwcGVkVW5kZWxlZ2F0ZSk7XG4gICAgdGhpcy5yZWdpc3RyeS5yZWdpc3Rlcihjb25zdGFudHMud3JhcHBlZEJlZ2luUmVkZWxlZ2F0ZVR5cGVVcmwsIGVwb2NoaW5ndHguTXNnV3JhcHBlZEJlZ2luUmVkZWxlZ2F0ZSk7XG4gICAgdGhpcy5yZWdpc3RyeS5yZWdpc3Rlcihjb25zdGFudHMuY3JlYXRlQlRDRGVsZWdhdGlvbk1zZ1R5cGVVcmwsIGJ0Y3N0YWtpbmd0eC5Nc2dDcmVhdGVCVENEZWxlZ2F0aW9uKTtcbiAgICB0aGlzLnJlZ2lzdHJ5LnJlZ2lzdGVyKGNvbnN0YW50cy53aXRoZHJhd1Jld2FyZE1zZ1R5cGVVcmwsIGluY2VudGl2ZXR4Lk1zZ1dpdGhkcmF3UmV3YXJkKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXREZWxlZ2F0ZU9yVW5kZWxlZ2F0ZU1lc3NhZ2VEYXRhRnJvbURlY29kZWRUeChkZWNvZGVkVHg6IERlY29kZWRUeFJhdyk6IE1lc3NhZ2VEYXRhPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzPltdIHtcbiAgICByZXR1cm4gZGVjb2RlZFR4LmJvZHkubWVzc2FnZXMubWFwKChtZXNzYWdlKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmVnaXN0cnkuZGVjb2RlKG1lc3NhZ2UpLm1zZztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGVVcmw6IG1lc3NhZ2UudHlwZVVybCxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBkZWxlZ2F0b3JBZGRyZXNzOiB2YWx1ZS5kZWxlZ2F0b3JBZGRyZXNzLFxuICAgICAgICAgIHZhbGlkYXRvckFkZHJlc3M6IHZhbHVlLnZhbGlkYXRvckFkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiB2YWx1ZS5hbW91bnQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFJlZGVsZWdhdGVNZXNzYWdlRGF0YUZyb21EZWNvZGVkVHgoZGVjb2RlZFR4OiBEZWNvZGVkVHhSYXcpOiBNZXNzYWdlRGF0YTxCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlcz5bXSB7XG4gICAgcmV0dXJuIGRlY29kZWRUeC5ib2R5Lm1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnJlZ2lzdHJ5LmRlY29kZShtZXNzYWdlKS5tc2c7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlVXJsOiBtZXNzYWdlLnR5cGVVcmwsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgZGVsZWdhdG9yQWRkcmVzczogdmFsdWUuZGVsZWdhdG9yQWRkcmVzcyxcbiAgICAgICAgICB2YWxpZGF0b3JTcmNBZGRyZXNzOiB2YWx1ZS52YWxpZGF0b3JTcmNBZGRyZXNzLFxuICAgICAgICAgIHZhbGlkYXRvckRzdEFkZHJlc3M6IHZhbHVlLnZhbGlkYXRvckRzdEFkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiB2YWx1ZS5hbW91bnQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldEN1c3RvbU1lc3NhZ2VEYXRhRnJvbURlY29kZWRUeChkZWNvZGVkVHg6IERlY29kZWRUeFJhdyk6IE1lc3NhZ2VEYXRhPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzPltdIHtcbiAgICByZXR1cm4gZGVjb2RlZFR4LmJvZHkubWVzc2FnZXMubWFwKChtZXNzYWdlKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmVnaXN0cnkuZGVjb2RlKG1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZVVybDogbWVzc2FnZS50eXBlVXJsLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIF9raW5kOiB0aGlzLmJhYnlsb25NZXNzYWdlVHlwZVVybFRvS2luZFttZXNzYWdlLnR5cGVVcmxdLFxuICAgICAgICAgIC4uLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2FjdGlvblR5cGVGcm9tVHlwZVVybCh0eXBlVXJsOiBzdHJpbmcpOiBUcmFuc2FjdGlvblR5cGUgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAodHlwZVVybCkge1xuICAgICAgY2FzZSBjb25zdGFudHMud3JhcHBlZERlbGVnYXRlTXNnVHlwZVVybDpcbiAgICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU7XG4gICAgICBjYXNlIGNvbnN0YW50cy53cmFwcGVkVW5kZWxlZ2F0ZU1zZ1R5cGVVcmw6XG4gICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGU7XG4gICAgICBjYXNlIGNvbnN0YW50cy53cmFwcGVkQmVnaW5SZWRlbGVnYXRlVHlwZVVybDpcbiAgICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nUmVkZWxlZ2F0ZTtcbiAgICAgIGNhc2UgY29uc3RhbnRzLmNyZWF0ZUJUQ0RlbGVnYXRpb25Nc2dUeXBlVXJsOlxuICAgICAgY2FzZSBjb25zdGFudHMud2l0aGRyYXdSZXdhcmRNc2dUeXBlVXJsOlxuICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkN1c3RvbVR4O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldFRyYW5zYWN0aW9uVHlwZUZyb21UeXBlVXJsKHR5cGVVcmwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRTZW5kTWVzc2FnZXNGb3JFbmNvZGluZ1R4KFxuICAgIGNvc21vc0xpa2VUcmFuc2FjdGlvbjogUGFyYW1ldGVyczxDb3Ntb3NVdGlsczxCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlcz5bJ2dldFNlbmRNZXNzYWdlc0ZvckVuY29kaW5nVHgnXT5bMF1cbiAgKTogQW55W10ge1xuICAgIHJldHVybiBjb3Ntb3NMaWtlVHJhbnNhY3Rpb24uc2VuZE1lc3NhZ2VzLm1hcCgoeyB0eXBlVXJsLCB2YWx1ZSB9KSA9PiB7XG4gICAgICBsZXQgdmFsdWVUb0VuY29kZTogdW5rbm93biA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMud3JhcHBlZE1zZ1R5cGVVcmxzLmhhcyh0eXBlVXJsKSkge1xuICAgICAgICB2YWx1ZVRvRW5jb2RlID0geyBtc2c6IHZhbHVlIH07XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY3VzdG9tTXNnVHlwZVVybHMuaGFzKHR5cGVVcmwpKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgY29uc3QgeyBfa2luZCwgLi4ucmVzdCB9ID0gdmFsdWUgYXMgQmFieWxvblNwZWNpZmljTWVzc2FnZXM7XG4gICAgICAgIHZhbHVlVG9FbmNvZGUgPSByZXN0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgdHlwZVVybCwgdmFsdWU6IHZhbHVlVG9FbmNvZGUgfTtcbiAgICB9KSBhcyB1bmtub3duIGFzIEFueVtdO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQ3VzdG9tTWVzc2FnZShjdXN0b21NZXNzYWdlOiBCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlcyk6IHZvaWQge1xuICAgIHN3aXRjaCAoY3VzdG9tTWVzc2FnZS5fa2luZCkge1xuICAgICAgY2FzZSAnQ3JlYXRlQnRjRGVsZWdhdGlvbic6XG4gICAgICAgIHRoaXMudmFsaWRhdGVDcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZShjdXN0b21NZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdXaXRoZHJhd1Jld2FyZCc6XG4gICAgICAgIHRoaXMudmFsaWRhdGVXaXRoZHJhd1Jld2FyZE1lc3NhZ2UoY3VzdG9tTWVzc2FnZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBVbnN1cHBvcnRlZCBCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlcyBtZXNzYWdlYCk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVDcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZShjcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZTogQ3JlYXRlQnRjRGVsZWdhdGlvbk1lc3NhZ2UpOiB2b2lkIHtcbiAgICBpZiAoY3JlYXRlQnRjRGVsZWdhdGlvbk1lc3NhZ2UuX2tpbmQgIT09ICdDcmVhdGVCdGNEZWxlZ2F0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIENyZWF0ZUJ0Y0RlbGVnYXRpb25NZXNzYWdlIGtpbmQ6ICR7Y3JlYXRlQnRjRGVsZWdhdGlvbk1lc3NhZ2UuX2tpbmR9YCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogY2hlY2sgdGhlIG90aGVyIGZpZWxkcyBtb3JlIHRob3JvdWdobHlcbiAgICB0aGlzLmlzT2JqUHJvcGVydHlOdWxsKGNyZWF0ZUJ0Y0RlbGVnYXRpb25NZXNzYWdlLCBbXG4gICAgICAnc3Rha2VyQWRkcicsXG4gICAgICAvLyAncG9wJyxcbiAgICAgICdidGNQaycsXG4gICAgICAnZnBCdGNQa0xpc3QnLFxuICAgICAgJ3N0YWtpbmdUaW1lJyxcbiAgICAgICdzdGFraW5nVmFsdWUnLFxuICAgICAgJ3N0YWtpbmdUeCcsXG4gICAgICAvLyAnc3Rha2luZ1R4SW5jbHVzaW9uUHJvb2YnLFxuICAgICAgJ3NsYXNoaW5nVHgnLFxuICAgICAgJ2RlbGVnYXRvclNsYXNoaW5nU2lnJyxcbiAgICAgICd1bmJvbmRpbmdUaW1lJyxcbiAgICAgICd1bmJvbmRpbmdUeCcsXG4gICAgICAndW5ib25kaW5nVmFsdWUnLFxuICAgICAgJ3VuYm9uZGluZ1NsYXNoaW5nVHgnLFxuICAgICAgJ2RlbGVnYXRvclVuYm9uZGluZ1NsYXNoaW5nU2lnJyxcbiAgICBdKTtcblxuICAgIGlmIChjcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZS5wb3ApIHtcbiAgICAgIHRoaXMuaXNPYmpQcm9wZXJ0eU51bGwoY3JlYXRlQnRjRGVsZWdhdGlvbk1lc3NhZ2UucG9wLCBbJ2J0Y1NpZ1R5cGUnLCAnYnRjU2lnJ10pO1xuICAgIH1cblxuICAgIGlmIChjcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZS5zdGFraW5nVHhJbmNsdXNpb25Qcm9vZikge1xuICAgICAgdGhpcy5pc09ialByb3BlcnR5TnVsbChjcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZS5zdGFraW5nVHhJbmNsdXNpb25Qcm9vZiwgWydrZXknLCAncHJvb2YnXSk7XG5cbiAgICAgIGlmIChjcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZS5zdGFraW5nVHhJbmNsdXNpb25Qcm9vZi5rZXkpIHtcbiAgICAgICAgdGhpcy5pc09ialByb3BlcnR5TnVsbChjcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZS5zdGFraW5nVHhJbmNsdXNpb25Qcm9vZi5rZXksIFsnaW5kZXgnLCAnaGFzaCddKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MoY3JlYXRlQnRjRGVsZWdhdGlvbk1lc3NhZ2Uuc3Rha2VyQWRkcikpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgQ3JlYXRlQnRjRGVsZWdhdGlvbk1lc3NhZ2Ugc3Rha2VyQWRkcjogJHtjcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZS5zdGFrZXJBZGRyfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVXaXRoZHJhd1Jld2FyZE1lc3NhZ2Uod2l0aGRyYXdSZXdhcmRNZXNzYWdlOiBXaXRoZHJhd1Jld2FyZE1lc3NhZ2UpOiB2b2lkIHtcbiAgICBpZiAod2l0aGRyYXdSZXdhcmRNZXNzYWdlLl9raW5kICE9PSAnV2l0aGRyYXdSZXdhcmQnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgV2l0aGRyYXdSZXdhcmRNZXNzYWdlIGtpbmQ6ICR7d2l0aGRyYXdSZXdhcmRNZXNzYWdlLl9raW5kfWApO1xuICAgIH1cblxuICAgIHRoaXMuaXNPYmpQcm9wZXJ0eU51bGwod2l0aGRyYXdSZXdhcmRNZXNzYWdlLCBbJ3R5cGUnLCAnYWRkcmVzcyddKTtcblxuICAgIGlmICghWydmaW5hbGl0eV9wcm92aWRlcicsICdidGNfc3Rha2VyJ10uaW5jbHVkZXMod2l0aGRyYXdSZXdhcmRNZXNzYWdlLnR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgV2l0aGRyYXdSZXdhcmRNZXNzYWdlIHR5cGU6ICR7d2l0aGRyYXdSZXdhcmRNZXNzYWdlLnR5cGV9YCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWRBZGRyZXNzKHdpdGhkcmF3UmV3YXJkTWVzc2FnZS5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIFdpdGhkcmF3UmV3YXJkTWVzc2FnZSBhZGRyZXNzOiAke3dpdGhkcmF3UmV3YXJkTWVzc2FnZS5hZGRyZXNzfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkQ29zbW9zTGlrZUFkZHJlc3NXaXRoTWVtb0lkKGFkZHJlc3MsIGNvbnN0YW50cy5hY2NvdW50QWRkcmVzc1JlZ2V4KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkVmFsaWRhdG9yQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkQmVjaDMyQWRkcmVzc01hdGNoaW5nUmVnZXgoYWRkcmVzcywgY29uc3RhbnRzLnZhbGlkYXRvckFkZHJlc3NSZWdleCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZENvbnRyYWN0QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkQmVjaDMyQWRkcmVzc01hdGNoaW5nUmVnZXgoYWRkcmVzcywgY29uc3RhbnRzLmNvbnRyYWN0QWRkcmVzc1JlZ2V4KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFtb3VudChhbW91bnQ6IENvaW4pOiB2b2lkIHtcbiAgICBjb25zdCBhbW91bnRCaWcgPSBCaWdOdW1iZXIoYW1vdW50LmFtb3VudCk7XG4gICAgaWYgKGFtb3VudEJpZy5pc0xlc3NUaGFuT3JFcXVhbFRvKDApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uQnVpbGRlcjogdmFsaWRhdGVBbW91bnQ6IEludmFsaWQgYW1vdW50OiAnICsgYW1vdW50LmFtb3VudCk7XG4gICAgfVxuICAgIGlmICghY29uc3RhbnRzLnZhbGlkRGVub21zLmZpbmQoKGRlbm9tKSA9PiBkZW5vbSA9PT0gYW1vdW50LmRlbm9tKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbkJ1aWxkZXI6IHZhbGlkYXRlQW1vdW50OiBJbnZhbGlkIGRlbm9tOiAnICsgYW1vdW50LmRlbm9tKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgdXRpbHMgPSBuZXcgVXRpbHMoKTtcblxuZXhwb3J0IGRlZmF1bHQgdXRpbHM7XG4iXX0=
|