@bitgo-beta/utxo-staking 1.1.1-beta.194 → 1.1.1-beta.196

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/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.9.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/utxo-staking@1.8.0...@bitgo/utxo-staking@1.9.0) (2025-03-06)
7
+
8
+ ### Features
9
+
10
+ - **utxo-staking:** add normalize helper for test fixtures ([b2266d8](https://github.com/BitGo/BitGoJS/commit/b2266d8264b7579ebd505cb7c723389439f65849))
11
+
6
12
  # [1.8.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/utxo-staking@1.6.0...@bitgo/utxo-staking@1.8.0) (2025-03-04)
7
13
 
8
14
  ### Bug Fixes
@@ -0,0 +1,23 @@
1
+ import * as vendor from '@bitgo-beta/babylonlabs-io-btc-staking-ts';
2
+ import * as babylonProtobuf from '@babylonlabs-io/babylon-proto-ts';
3
+ import * as bitcoinjslib from 'bitcoinjs-lib';
4
+ import { ECPairInterface } from '@bitgo-beta/utxo-lib';
5
+ import { Descriptor } from '@bitgo/wasm-miniscript';
6
+ import { BabylonDescriptorBuilder } from './descriptor';
7
+ export declare const mockBabylonProvider: vendor.BabylonProvider;
8
+ export type ValueWithTypeUrl<T> = {
9
+ typeUrl: string;
10
+ value: T;
11
+ };
12
+ export declare function getSignedPsbt(psbt: bitcoinjslib.Psbt, descriptor: Descriptor, signers: ECPairInterface[], { finalize }: {
13
+ finalize?: boolean | undefined;
14
+ }): bitcoinjslib.Psbt;
15
+ export declare function getBtcProviderForECKey(descriptorBuilder: BabylonDescriptorBuilder, stakerKey: ECPairInterface): vendor.BtcProvider;
16
+ type Result = {
17
+ unsignedDelegationMsg: ValueWithTypeUrl<babylonProtobuf.btcstakingtx.MsgCreateBTCDelegation>;
18
+ stakingTx: bitcoinjslib.Transaction;
19
+ };
20
+ export declare function createUnsignedPreStakeRegistrationBabylonTransaction(manager: vendor.BabylonBtcStakingManager, stakingParams: vendor.VersionedStakingParams[], network: bitcoinjslib.Network, stakerBtcInfo: vendor.StakerInfo, stakingInput: vendor.StakingInputs, babylonBtcTipHeight: number, inputUTXOs: vendor.UTXO[], feeRateSatB: number, babylonAddress: string): Promise<Result>;
21
+ export declare function createUnsignedPreStakeRegistrationBabylonTransactionWithBtcProvider(btcProvider: vendor.BtcProvider, stakingParams: vendor.VersionedStakingParams, network: bitcoinjslib.Network, stakerBtcInfo: vendor.StakerInfo, stakingInput: vendor.StakingInputs, babylonBtcTipHeight: number, inputUTXOs: vendor.UTXO[], feeRateSatB: number, babylonAddress: string): Promise<Result>;
22
+ export {};
23
+ //# sourceMappingURL=delegationMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegationMessage.d.ts","sourceRoot":"","sources":["../../../src/babylon/delegationMessage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,2CAA2C,CAAC;AACpE,OAAO,KAAK,eAAe,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAExD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,eAIxC,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAEhE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,CAAC,IAAI,EACvB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,eAAe,EAAE,EAC1B,EAAE,QAAgB,EAAE;;CAAA,GACnB,YAAY,CAAC,IAAI,CAmBnB;AAED,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,wBAAwB,EAC3C,SAAS,EAAE,eAAe,GACzB,MAAM,CAAC,WAAW,CAkCpB;AAED,KAAK,MAAM,GAAG;IACZ,qBAAqB,EAAE,gBAAgB,CAAC,eAAe,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;IAC7F,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC;CACrC,CAAC;AAQF,wBAAsB,oDAAoD,CACxE,OAAO,EAAE,MAAM,CAAC,wBAAwB,EACxC,aAAa,EAAE,MAAM,CAAC,sBAAsB,EAAE,EAC9C,OAAO,EAAE,YAAY,CAAC,OAAO,EAC7B,aAAa,EAAE,MAAM,CAAC,UAAU,EAChC,YAAY,EAAE,MAAM,CAAC,aAAa,EAClC,mBAAmB,EAAE,MAAM,EAC3B,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,EACzB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,CAsCjB;AAED,wBAAsB,mEAAmE,CACvF,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,aAAa,EAAE,MAAM,CAAC,sBAAsB,EAC5C,OAAO,EAAE,YAAY,CAAC,OAAO,EAC7B,aAAa,EAAE,MAAM,CAAC,UAAU,EAChC,YAAY,EAAE,MAAM,CAAC,aAAa,EAClC,mBAAmB,EAAE,MAAM,EAC3B,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,EACzB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,CAajB"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.mockBabylonProvider = void 0;
40
+ exports.getSignedPsbt = getSignedPsbt;
41
+ exports.getBtcProviderForECKey = getBtcProviderForECKey;
42
+ exports.createUnsignedPreStakeRegistrationBabylonTransaction = createUnsignedPreStakeRegistrationBabylonTransaction;
43
+ exports.createUnsignedPreStakeRegistrationBabylonTransactionWithBtcProvider = createUnsignedPreStakeRegistrationBabylonTransactionWithBtcProvider;
44
+ const assert_1 = __importDefault(require("assert"));
45
+ const vendor = __importStar(require("@bitgo-beta/babylonlabs-io-btc-staking-ts"));
46
+ const bitcoinjslib = __importStar(require("bitcoinjs-lib"));
47
+ const descriptor_1 = require("@bitgo-beta/utxo-core/descriptor");
48
+ exports.mockBabylonProvider = {
49
+ signTransaction() {
50
+ throw new Error('Function not implemented.');
51
+ },
52
+ };
53
+ function getSignedPsbt(psbt, descriptor, signers, { finalize = false }) {
54
+ const wrappedPsbt = (0, descriptor_1.toWrappedPsbt)(psbt.toBuffer());
55
+ const signedInputs = psbt.data.inputs.flatMap((input, i) => {
56
+ (0, assert_1.default)(input.witnessUtxo);
57
+ if (Buffer.from(descriptor.scriptPubkey()).equals(input.witnessUtxo.script)) {
58
+ wrappedPsbt.updateInputWithDescriptor(i, descriptor);
59
+ const signResults = signers.map((signer) => {
60
+ (0, assert_1.default)(signer.privateKey);
61
+ return wrappedPsbt.signWithPrv(signer.privateKey);
62
+ });
63
+ return [[i, signResults]];
64
+ }
65
+ return [];
66
+ });
67
+ (0, assert_1.default)(signedInputs.length > 0);
68
+ if (finalize) {
69
+ wrappedPsbt.finalize();
70
+ }
71
+ return bitcoinjslib.Psbt.fromBuffer(Buffer.from(wrappedPsbt.serialize()));
72
+ }
73
+ function getBtcProviderForECKey(descriptorBuilder, stakerKey) {
74
+ function signWithDescriptor(psbt, descriptor, key) {
75
+ psbt = getSignedPsbt(psbt, descriptor, [key], { finalize: false });
76
+ // BUG: we need to blindly finalize here even though we have not fully signed
77
+ psbt.finalizeAllInputs();
78
+ return psbt;
79
+ }
80
+ return {
81
+ async signMessage(signingStep, message, type) {
82
+ (0, assert_1.default)(type === 'ecdsa');
83
+ switch (signingStep) {
84
+ case 'proof-of-possession':
85
+ return stakerKey.sign(Buffer.from(message, 'hex')).toString('hex');
86
+ default:
87
+ throw new Error(`unexpected signing step: ${signingStep}`);
88
+ }
89
+ },
90
+ async signPsbt(signingStep, psbtHex) {
91
+ const psbt = bitcoinjslib.Psbt.fromHex(psbtHex);
92
+ switch (signingStep) {
93
+ case 'staking-slashing':
94
+ return signWithDescriptor(psbt, descriptorBuilder.getStakingDescriptor(), stakerKey).toHex();
95
+ case 'unbonding-slashing':
96
+ return signWithDescriptor(psbt, descriptorBuilder.getUnbondingDescriptor(), stakerKey).toHex();
97
+ default:
98
+ throw new Error(`unexpected signing step: ${signingStep}`);
99
+ }
100
+ },
101
+ };
102
+ }
103
+ /*
104
+ * This is mostly lifted from
105
+ * https://github.com/babylonlabs-io/btc-staking-ts/blob/v0.4.0-rc.2/src/staking/manager.ts#L100-L172
106
+ *
107
+ * The difference is that here we are returning an _unsigned_ delegation message.
108
+ */
109
+ async function createUnsignedPreStakeRegistrationBabylonTransaction(manager, stakingParams, network, stakerBtcInfo, stakingInput, babylonBtcTipHeight, inputUTXOs, feeRateSatB, babylonAddress) {
110
+ if (babylonBtcTipHeight === 0) {
111
+ throw new Error('Babylon BTC tip height cannot be 0');
112
+ }
113
+ if (inputUTXOs.length === 0) {
114
+ throw new Error('No input UTXOs provided');
115
+ }
116
+ if (!vendor.isValidBabylonAddress(babylonAddress)) {
117
+ throw new Error('Invalid Babylon address');
118
+ }
119
+ // Get the Babylon params based on the BTC tip height from Babylon chain
120
+ const params = vendor.getBabylonParamByBtcHeight(babylonBtcTipHeight, stakingParams);
121
+ const staking = new vendor.Staking(network, stakerBtcInfo, params, stakingInput.finalityProviderPkNoCoordHex, stakingInput.stakingTimelock);
122
+ // Create unsigned staking transaction
123
+ const { transaction } = staking.createStakingTransaction(stakingInput.stakingAmountSat, inputUTXOs, feeRateSatB);
124
+ // Create delegation message without including inclusion proof
125
+ const msg = await manager.createBtcDelegationMsg(staking, stakingInput, transaction, babylonAddress, stakerBtcInfo, params);
126
+ return {
127
+ unsignedDelegationMsg: msg,
128
+ stakingTx: transaction,
129
+ };
130
+ }
131
+ async function createUnsignedPreStakeRegistrationBabylonTransactionWithBtcProvider(btcProvider, stakingParams, network, stakerBtcInfo, stakingInput, babylonBtcTipHeight, inputUTXOs, feeRateSatB, babylonAddress) {
132
+ const manager = new vendor.BabylonBtcStakingManager(network, [stakingParams], btcProvider, exports.mockBabylonProvider);
133
+ return await createUnsignedPreStakeRegistrationBabylonTransaction(manager, [stakingParams], network, stakerBtcInfo, stakingInput, babylonBtcTipHeight, inputUTXOs, feeRateSatB, babylonAddress);
134
+ }
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGlvbk1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFieWxvbi9kZWxlZ2F0aW9uTWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQkEsc0NBd0JDO0FBRUQsd0RBcUNDO0FBYUQsb0hBZ0RDO0FBRUQsa0pBdUJDO0FBeEtELG9EQUE0QjtBQUU1QixrRkFBb0U7QUFFcEUsNERBQThDO0FBRzlDLGlFQUFpRTtBQUlwRCxRQUFBLG1CQUFtQixHQUEyQjtJQUN6RCxlQUFlO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRixDQUFDO0FBSUYsU0FBZ0IsYUFBYSxDQUMzQixJQUF1QixFQUN2QixVQUFzQixFQUN0QixPQUEwQixFQUMxQixFQUFFLFFBQVEsR0FBRyxLQUFLLEVBQUU7SUFFcEIsTUFBTSxXQUFXLEdBQUcsSUFBQSwwQkFBYSxFQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN6RCxJQUFBLGdCQUFNLEVBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzVFLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDckQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUN6QyxJQUFB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LEVBQUUsMkJBQW1CLENBQUMsQ0FBQztJQUNoSCxPQUFPLE1BQU0sb0RBQW9ELENBQy9ELE9BQU8sRUFDUCxDQUFDLGFBQWEsQ0FBQyxFQUNmLE9BQU8sRUFDUCxhQUFhLEVBQ2IsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsV0FBVyxFQUNYLGNBQWMsQ0FDZixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdmVuZG9yIGZyb20gJ0BiaXRnby1iZXRhL2JhYnlsb25sYWJzLWlvLWJ0Yy1zdGFraW5nLXRzJztcbmltcG9ydCAqIGFzIGJhYnlsb25Qcm90b2J1ZiBmcm9tICdAYmFieWxvbmxhYnMtaW8vYmFieWxvbi1wcm90by10cyc7XG5pbXBvcnQgKiBhcyBiaXRjb2luanNsaWIgZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgeyBFQ1BhaXJJbnRlcmZhY2UgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5pbXBvcnQgeyB0b1dyYXBwZWRQc2J0IH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1jb3JlL2Rlc2NyaXB0b3InO1xuXG5pbXBvcnQgeyBCYWJ5bG9uRGVzY3JpcHRvckJ1aWxkZXIgfSBmcm9tICcuL2Rlc2NyaXB0b3InO1xuXG5leHBvcnQgY29uc3QgbW9ja0JhYnlsb25Qcm92aWRlcjogdmVuZG9yLkJhYnlsb25Qcm92aWRlciA9IHtcbiAgc2lnblRyYW5zYWN0aW9uKCk6IFByb21pc2U8VWludDhBcnJheT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignRnVuY3Rpb24gbm90IGltcGxlbWVudGVkLicpO1xuICB9LFxufTtcblxuZXhwb3J0IHR5cGUgVmFsdWVXaXRoVHlwZVVybDxUPiA9IHsgdHlwZVVybDogc3RyaW5nOyB2YWx1ZTogVCB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2lnbmVkUHNidChcbiAgcHNidDogYml0Y29pbmpzbGliLlBzYnQsXG4gIGRlc2NyaXB0b3I6IERlc2NyaXB0b3IsXG4gIHNpZ25lcnM6IEVDUGFpckludGVyZmFjZVtdLFxuICB7IGZpbmFsaXplID0gZmFsc2UgfVxuKTogYml0Y29pbmpzbGliLlBzYnQge1xuICBjb25zdCB3cmFwcGVkUHNidCA9IHRvV3JhcHBlZFBzYnQocHNidC50b0J1ZmZlcigpKTtcbiAgY29uc3Qgc2lnbmVkSW5wdXRzID0gcHNidC5kYXRhLmlucHV0cy5mbGF0TWFwKChpbnB1dCwgaSkgPT4ge1xuICAgIGFzc2VydChpbnB1dC53aXRuZXNzVXR4byk7XG4gICAgaWYgKEJ1ZmZlci5mcm9tKGRlc2NyaXB0b3Iuc2NyaXB0UHVia2V5KCkpLmVxdWFscyhpbnB1dC53aXRuZXNzVXR4by5zY3JpcHQpKSB7XG4gICAgICB3cmFwcGVkUHNidC51cGRhdGVJbnB1dFdpdGhEZXNjcmlwdG9yKGksIGRlc2NyaXB0b3IpO1xuICAgICAgY29uc3Qgc2lnblJlc3VsdHMgPSBzaWduZXJzLm1hcCgoc2lnbmVyKSA9PiB7XG4gICAgICAgIGFzc2VydChzaWduZXIucHJpdmF0ZUtleSk7XG4gICAgICAgIHJldHVybiB3cmFwcGVkUHNidC5zaWduV2l0aFBydihzaWduZXIucHJpdmF0ZUtleSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBbW2ksIHNpZ25SZXN1bHRzXV07XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfSk7XG4gIGFzc2VydChzaWduZWRJbnB1dHMubGVuZ3RoID4gMCk7XG4gIGlmIChmaW5hbGl6ZSkge1xuICAgIHdyYXBwZWRQc2J0LmZpbmFsaXplKCk7XG4gIH1cbiAgcmV0dXJuIGJpdGNvaW5qc2xpYi5Qc2J0LmZyb21CdWZmZXIoQnVmZmVyLmZyb20od3JhcHBlZFBzYnQuc2VyaWFsaXplKCkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJ0Y1Byb3ZpZGVyRm9yRUNLZXkoXG4gIGRlc2NyaXB0b3JCdWlsZGVyOiBCYWJ5bG9uRGVzY3JpcHRvckJ1aWxkZXIsXG4gIHN0YWtlcktleTogRUNQYWlySW50ZXJmYWNlXG4pOiB2ZW5kb3IuQnRjUHJvdmlkZXIge1xuICBmdW5jdGlvbiBzaWduV2l0aERlc2NyaXB0b3IoXG4gICAgcHNidDogYml0Y29pbmpzbGliLlBzYnQsXG4gICAgZGVzY3JpcHRvcjogRGVzY3JpcHRvcixcbiAgICBrZXk6IEVDUGFpckludGVyZmFjZVxuICApOiBiaXRjb2luanNsaWIuUHNidCB7XG4gICAgcHNidCA9IGdldFNpZ25lZFBzYnQocHNidCwgZGVzY3JpcHRvciwgW2tleV0sIHsgZmluYWxpemU6IGZhbHNlIH0pO1xuICAgIC8vIEJVRzogd2UgbmVlZCB0byBibGluZGx5IGZpbmFsaXplIGhlcmUgZXZlbiB0aG91Z2ggd2UgaGF2ZSBub3QgZnVsbHkgc2lnbmVkXG4gICAgcHNidC5maW5hbGl6ZUFsbElucHV0cygpO1xuICAgIHJldHVybiBwc2J0O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhc3luYyBzaWduTWVzc2FnZShzaWduaW5nU3RlcDogdmVuZG9yLlNpZ25pbmdTdGVwLCBtZXNzYWdlOiBzdHJpbmcsIHR5cGU6ICdlY2RzYScpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgYXNzZXJ0KHR5cGUgPT09ICdlY2RzYScpO1xuICAgICAgc3dpdGNoIChzaWduaW5nU3RlcCkge1xuICAgICAgICBjYXNlICdwcm9vZi1vZi1wb3NzZXNzaW9uJzpcbiAgICAgICAgICByZXR1cm4gc3Rha2VyS2V5LnNpZ24oQnVmZmVyLmZyb20obWVzc2FnZSwgJ2hleCcpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHNpZ25pbmcgc3RlcDogJHtzaWduaW5nU3RlcH1gKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHNpZ25Qc2J0KHNpZ25pbmdTdGVwOiB2ZW5kb3IuU2lnbmluZ1N0ZXAsIHBzYnRIZXg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICBjb25zdCBwc2J0ID0gYml0Y29pbmpzbGliLlBzYnQuZnJvbUhleChwc2J0SGV4KTtcbiAgICAgIHN3aXRjaCAoc2lnbmluZ1N0ZXApIHtcbiAgICAgICAgY2FzZSAnc3Rha2luZy1zbGFzaGluZyc6XG4gICAgICAgICAgcmV0dXJuIHNpZ25XaXRoRGVzY3JpcHRvcihwc2J0LCBkZXNjcmlwdG9yQnVpbGRlci5nZXRTdGFraW5nRGVzY3JpcHRvcigpLCBzdGFrZXJLZXkpLnRvSGV4KCk7XG4gICAgICAgIGNhc2UgJ3VuYm9uZGluZy1zbGFzaGluZyc6XG4gICAgICAgICAgcmV0dXJuIHNpZ25XaXRoRGVzY3JpcHRvcihwc2J0LCBkZXNjcmlwdG9yQnVpbGRlci5nZXRVbmJvbmRpbmdEZXNjcmlwdG9yKCksIHN0YWtlcktleSkudG9IZXgoKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgc2lnbmluZyBzdGVwOiAke3NpZ25pbmdTdGVwfWApO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5cbnR5cGUgUmVzdWx0ID0ge1xuICB1bnNpZ25lZERlbGVnYXRpb25Nc2c6IFZhbHVlV2l0aFR5cGVVcmw8YmFieWxvblByb3RvYnVmLmJ0Y3N0YWtpbmd0eC5Nc2dDcmVhdGVCVENEZWxlZ2F0aW9uPjtcbiAgc3Rha2luZ1R4OiBiaXRjb2luanNsaWIuVHJhbnNhY3Rpb247XG59O1xuXG4vKlxuICogVGhpcyBpcyBtb3N0bHkgbGlmdGVkIGZyb21cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJ5bG9ubGFicy1pby9idGMtc3Rha2luZy10cy9ibG9iL3YwLjQuMC1yYy4yL3NyYy9zdGFraW5nL21hbmFnZXIudHMjTDEwMC1MMTcyXG4gKlxuICogVGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBoZXJlIHdlIGFyZSByZXR1cm5pbmcgYW4gX3Vuc2lnbmVkXyBkZWxlZ2F0aW9uIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVVbnNpZ25lZFByZVN0YWtlUmVnaXN0cmF0aW9uQmFieWxvblRyYW5zYWN0aW9uKFxuICBtYW5hZ2VyOiB2ZW5kb3IuQmFieWxvbkJ0Y1N0YWtpbmdNYW5hZ2VyLFxuICBzdGFraW5nUGFyYW1zOiB2ZW5kb3IuVmVyc2lvbmVkU3Rha2luZ1BhcmFtc1tdLFxuICBuZXR3b3JrOiBiaXRjb2luanNsaWIuTmV0d29yayxcbiAgc3Rha2VyQnRjSW5mbzogdmVuZG9yLlN0YWtlckluZm8sXG4gIHN0YWtpbmdJbnB1dDogdmVuZG9yLlN0YWtpbmdJbnB1dHMsXG4gIGJhYnlsb25CdGNUaXBIZWlnaHQ6IG51bWJlcixcbiAgaW5wdXRVVFhPczogdmVuZG9yLlVUWE9bXSxcbiAgZmVlUmF0ZVNhdEI6IG51bWJlcixcbiAgYmFieWxvbkFkZHJlc3M6IHN0cmluZ1xuKTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgaWYgKGJhYnlsb25CdGNUaXBIZWlnaHQgPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0JhYnlsb24gQlRDIHRpcCBoZWlnaHQgY2Fubm90IGJlIDAnKTtcbiAgfVxuICBpZiAoaW5wdXRVVFhPcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGlucHV0IFVUWE9zIHByb3ZpZGVkJyk7XG4gIH1cbiAgaWYgKCF2ZW5kb3IuaXNWYWxpZEJhYnlsb25BZGRyZXNzKGJhYnlsb25BZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBCYWJ5bG9uIGFkZHJlc3MnKTtcbiAgfVxuXG4gIC8vIEdldCB0aGUgQmFieWxvbiBwYXJhbXMgYmFzZWQgb24gdGhlIEJUQyB0aXAgaGVpZ2h0IGZyb20gQmFieWxvbiBjaGFpblxuICBjb25zdCBwYXJhbXMgPSB2ZW5kb3IuZ2V0QmFieWxvblBhcmFtQnlCdGNIZWlnaHQoYmFieWxvbkJ0Y1RpcEhlaWdodCwgc3Rha2luZ1BhcmFtcyk7XG5cbiAgY29uc3Qgc3Rha2luZyA9IG5ldyB2ZW5kb3IuU3Rha2luZyhcbiAgICBuZXR3b3JrLFxuICAgIHN0YWtlckJ0Y0luZm8sXG4gICAgcGFyYW1zLFxuICAgIHN0YWtpbmdJbnB1dC5maW5hbGl0eVByb3ZpZGVyUGtOb0Nvb3JkSGV4LFxuICAgIHN0YWtpbmdJbnB1dC5zdGFraW5nVGltZWxvY2tcbiAgKTtcblxuICAvLyBDcmVhdGUgdW5zaWduZWQgc3Rha2luZyB0cmFuc2FjdGlvblxuICBjb25zdCB7IHRyYW5zYWN0aW9uIH0gPSBzdGFraW5nLmNyZWF0ZVN0YWtpbmdUcmFuc2FjdGlvbihzdGFraW5nSW5wdXQuc3Rha2luZ0Ftb3VudFNhdCwgaW5wdXRVVFhPcywgZmVlUmF0ZVNhdEIpO1xuXG4gIC8vIENyZWF0ZSBkZWxlZ2F0aW9uIG1lc3NhZ2Ugd2l0aG91dCBpbmNsdWRpbmcgaW5jbHVzaW9uIHByb29mXG4gIGNvbnN0IG1zZyA9IGF3YWl0IG1hbmFnZXIuY3JlYXRlQnRjRGVsZWdhdGlvbk1zZyhcbiAgICBzdGFraW5nLFxuICAgIHN0YWtpbmdJbnB1dCxcbiAgICB0cmFuc2FjdGlvbixcbiAgICBiYWJ5bG9uQWRkcmVzcyxcbiAgICBzdGFrZXJCdGNJbmZvLFxuICAgIHBhcmFtc1xuICApO1xuICByZXR1cm4ge1xuICAgIHVuc2lnbmVkRGVsZWdhdGlvbk1zZzogbXNnLFxuICAgIHN0YWtpbmdUeDogdHJhbnNhY3Rpb24sXG4gIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVVbnNpZ25lZFByZVN0YWtlUmVnaXN0cmF0aW9uQmFieWxvblRyYW5zYWN0aW9uV2l0aEJ0Y1Byb3ZpZGVyKFxuICBidGNQcm92aWRlcjogdmVuZG9yLkJ0Y1Byb3ZpZGVyLFxuICBzdGFraW5nUGFyYW1zOiB2ZW5kb3IuVmVyc2lvbmVkU3Rha2luZ1BhcmFtcyxcbiAgbmV0d29yazogYml0Y29pbmpzbGliLk5ldHdvcmssXG4gIHN0YWtlckJ0Y0luZm86IHZlbmRvci5TdGFrZXJJbmZvLFxuICBzdGFraW5nSW5wdXQ6IHZlbmRvci5TdGFraW5nSW5wdXRzLFxuICBiYWJ5bG9uQnRjVGlwSGVpZ2h0OiBudW1iZXIsXG4gIGlucHV0VVRYT3M6IHZlbmRvci5VVFhPW10sXG4gIGZlZVJhdGVTYXRCOiBudW1iZXIsXG4gIGJhYnlsb25BZGRyZXNzOiBzdHJpbmdcbik6IFByb21pc2U8UmVzdWx0PiB7XG4gIGNvbnN0IG1hbmFnZXIgPSBuZXcgdmVuZG9yLkJhYnlsb25CdGNTdGFraW5nTWFuYWdlcihuZXR3b3JrLCBbc3Rha2luZ1BhcmFtc10sIGJ0Y1Byb3ZpZGVyLCBtb2NrQmFieWxvblByb3ZpZGVyKTtcbiAgcmV0dXJuIGF3YWl0IGNyZWF0ZVVuc2lnbmVkUHJlU3Rha2VSZWdpc3RyYXRpb25CYWJ5bG9uVHJhbnNhY3Rpb24oXG4gICAgbWFuYWdlcixcbiAgICBbc3Rha2luZ1BhcmFtc10sXG4gICAgbmV0d29yayxcbiAgICBzdGFrZXJCdGNJbmZvLFxuICAgIHN0YWtpbmdJbnB1dCxcbiAgICBiYWJ5bG9uQnRjVGlwSGVpZ2h0LFxuICAgIGlucHV0VVRYT3MsXG4gICAgZmVlUmF0ZVNhdEIsXG4gICAgYmFieWxvbkFkZHJlc3NcbiAgKTtcbn1cbiJdfQ==
@@ -1,4 +1,9 @@
1
+ /**
2
+ * https://github.com/babylonlabs-io/babylon/tree/main/docs
3
+ * https://github.com/babylonlabs-io/babylon/blob/main/docs/staking-script.md
4
+ */
1
5
  import { Descriptor, ast } from '@bitgo/wasm-miniscript';
6
+ import { StakingParams } from '@bitgo-beta/babylonlabs-io-btc-staking-ts';
2
7
  export declare function getUnspendableKey(): string;
3
8
  export declare class BabylonDescriptorBuilder {
4
9
  stakerKey: Buffer;
@@ -8,6 +13,10 @@ export declare class BabylonDescriptorBuilder {
8
13
  stakingTimeLock: number;
9
14
  unbondingTimeLock: number;
10
15
  constructor(stakerKey: Buffer, finalityProviderKeys: Buffer[], covenantKeys: Buffer[], covenantThreshold: number, stakingTimeLock: number, unbondingTimeLock: number);
16
+ static fromParams(params: {
17
+ stakerKey: Buffer;
18
+ finalityProviderKeys: Buffer[];
19
+ } & StakingParams): BabylonDescriptorBuilder;
11
20
  getTimelockMiniscript(): ast.MiniscriptNode;
12
21
  getUnbondingMiniscript(): ast.MiniscriptNode;
13
22
  getSlashingMiniscript(): ast.MiniscriptNode;
@@ -1 +1 @@
1
- {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../../src/babylon/descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAEzD,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAmBD,qBAAa,wBAAwB;IAE1B,SAAS,EAAE,MAAM;IACjB,oBAAoB,EAAE,MAAM,EAAE;IAC9B,YAAY,EAAE,MAAM,EAAE;IACtB,iBAAiB,EAAE,MAAM;IACzB,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,MAAM;gBALzB,SAAS,EAAE,MAAM,EACjB,oBAAoB,EAAE,MAAM,EAAE,EAC9B,YAAY,EAAE,MAAM,EAAE,EACtB,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM;IAGlC,qBAAqB,IAAI,GAAG,CAAC,cAAc;IAI3C,sBAAsB,IAAI,GAAG,CAAC,cAAc;IAI5C,qBAAqB,IAAI,GAAG,CAAC,cAAc;IAgB3C,8BAA8B,IAAI,GAAG,CAAC,cAAc;IAIpD,oBAAoB,IAAI,UAAU;IAOlC,qBAAqB,IAAI,UAAU;IAInC,sBAAsB,IAAI,UAAU;CAGrC"}
1
+ {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../../src/babylon/descriptor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAE1E,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAmBD,qBAAa,wBAAwB;IAE1B,SAAS,EAAE,MAAM;IACjB,oBAAoB,EAAE,MAAM,EAAE;IAC9B,YAAY,EAAE,MAAM,EAAE;IACtB,iBAAiB,EAAE,MAAM;IACzB,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,MAAM;gBALzB,SAAS,EAAE,MAAM,EACjB,oBAAoB,EAAE,MAAM,EAAE,EAC9B,YAAY,EAAE,MAAM,EAAE,EACtB,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM;IAGlC,MAAM,CAAC,UAAU,CACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,oBAAoB,EAAE,MAAM,EAAE,CAAC;KAChC,GAAG,aAAa,GAChB,wBAAwB;IA0B3B,qBAAqB,IAAI,GAAG,CAAC,cAAc;IAI3C,sBAAsB,IAAI,GAAG,CAAC,cAAc;IAI5C,qBAAqB,IAAI,GAAG,CAAC,cAAc;IAgB3C,8BAA8B,IAAI,GAAG,CAAC,cAAc;IAIpD,oBAAoB,IAAI,UAAU;IAOlC,qBAAqB,IAAI,UAAU;IAInC,sBAAsB,IAAI,UAAU;CAGrC"}
@@ -1,4 +1,8 @@
1
1
  "use strict";
2
+ /**
3
+ * https://github.com/babylonlabs-io/babylon/tree/main/docs
4
+ * https://github.com/babylonlabs-io/babylon/blob/main/docs/staking-script.md
5
+ */
2
6
  Object.defineProperty(exports, "__esModule", { value: true });
3
7
  exports.BabylonDescriptorBuilder = void 0;
4
8
  exports.getUnspendableKey = getUnspendableKey;
@@ -29,6 +33,24 @@ class BabylonDescriptorBuilder {
29
33
  this.stakingTimeLock = stakingTimeLock;
30
34
  this.unbondingTimeLock = unbondingTimeLock;
31
35
  }
36
+ static fromParams(params) {
37
+ /*
38
+
39
+ const stakerKey = getECKey('staker');
40
+ const covenantThreshold = stakingParams.covenantQuorum;
41
+ const stakingTimelock = stakingParams.minStakingTimeBlocks;
42
+ const unbondingTimelock = stakingParams.unbondingTime;
43
+ const vendorBuilder = new vendor.StakingScriptData(
44
+ getXOnlyPubkey(stakerKey),
45
+ finalityProviderKeys.map(getXOnlyPubkey),
46
+ covenantKeys.map(getXOnlyPubkey),
47
+ covenantThreshold,
48
+ stakingTimelock,
49
+ unbondingTimelock
50
+ );
51
+ */
52
+ return new BabylonDescriptorBuilder(params.stakerKey, params.finalityProviderKeys, params.covenantNoCoordPks.map((k) => Buffer.from(k, 'hex')), params.covenantQuorum, params.minStakingTimeBlocks, params.unbondingTime);
53
+ }
32
54
  getTimelockMiniscript() {
33
55
  return { and_v: [pk(this.stakerKey), { older: this.stakingTimeLock }] };
34
56
  }
@@ -67,4 +89,4 @@ class BabylonDescriptorBuilder {
67
89
  }
68
90
  }
69
91
  exports.BabylonDescriptorBuilder = BabylonDescriptorBuilder;
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWJ5bG9uL2Rlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsOENBR0M7QUFMRCw0REFBeUQ7QUFFekQsU0FBZ0IsaUJBQWlCO0lBQy9CLG9HQUFvRztJQUNwRyxPQUFPLGtFQUFrRSxDQUFDO0FBQzVFLENBQUM7QUFFRCxpREFBaUQ7QUFDakQsU0FBUyxFQUFFLENBQUMsQ0FBUztJQUNuQixPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN2QyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBYztJQUNoQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLFNBQWlCLEVBQUUsSUFBYztJQUNsRCxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEUsQ0FBQztBQUVELFNBQVMsd0JBQXdCLENBQUMsQ0FBa0I7SUFDbEQsT0FBTyw0QkFBVSxDQUFDLFVBQVUsQ0FBQyxxQkFBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzdGLENBQUM7QUFFRCxNQUFhLHdCQUF3QjtJQUNuQyxZQUNTLFNBQWlCLEVBQ2pCLG9CQUE4QixFQUM5QixZQUFzQixFQUN0QixpQkFBeUIsRUFDekIsZUFBdUIsRUFDdkIsaUJBQXlCO1FBTHpCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFVO1FBQzlCLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQUN6QixvQkFBZSxHQUFmLGVBQWUsQ0FBUTtRQUN2QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQVE7SUFDL0IsQ0FBQztJQUVKLHFCQUFxQjtRQUNuQixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFFLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDNUcsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixPQUFPO1lBQ0wsS0FBSyxFQUFFO2dCQUNMO29CQUNFLEtBQUssRUFBRTt3QkFDTCxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzt3QkFDbEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sS0FBSyxDQUFDOzRCQUNwQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTs0QkFDMUQsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEVBQUU7cUJBQzdEO2lCQUNGO2dCQUNELEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO2FBQ2xFO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7UUFDNUIsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzVFLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyx3QkFBd0IsQ0FBQztZQUM5QixJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDNUIsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUM5RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sd0JBQXdCLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE9BQU8sd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekcsQ0FBQztDQUNGO0FBcERELDREQW9EQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc2NyaXB0b3IsIGFzdCB9IGZyb20gJ0BiaXRnby93YXNtLW1pbmlzY3JpcHQnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5zcGVuZGFibGVLZXkoKTogc3RyaW5nIHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JhYnlsb25sYWJzLWlvL2J0Yy1zdGFraW5nLXRzL2Jsb2IvdjAuNC4wLXJjLjIvc3JjL2NvbnN0YW50cy9pbnRlcm5hbFB1YmtleS50c1xuICByZXR1cm4gJzUwOTI5Yjc0YzFhMDQ5NTRiNzhiNGI2MDM1ZTk3YTVlMDc4YTVhMGYyOGVjOTZkNTQ3YmZlZTlhY2U4MDNhYzAnO1xufVxuXG4vLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBtaW5pc2NyaXB0IG5vZGVzXG5mdW5jdGlvbiBwayhiOiBCdWZmZXIpOiBhc3QuTWluaXNjcmlwdE5vZGUge1xuICByZXR1cm4geyAndjpwayc6IGIudG9TdHJpbmcoJ2hleCcpIH07XG59XG5cbmZ1bmN0aW9uIHNvcnRlZEtleXMoa2V5czogQnVmZmVyW10pOiBCdWZmZXJbXSB7XG4gIHJldHVybiBbLi4ua2V5c10uc29ydCgoYSwgYikgPT4gYS5jb21wYXJlKGIpKTtcbn1cblxuZnVuY3Rpb24gbXVsdGlBcmdzKHRocmVzaG9sZDogbnVtYmVyLCBrZXlzOiBCdWZmZXJbXSk6IFtudW1iZXIsIC4uLnN0cmluZ1tdXSB7XG4gIHJldHVybiBbdGhyZXNob2xkLCAuLi5zb3J0ZWRLZXlzKGtleXMpLm1hcCgoaykgPT4gay50b1N0cmluZygnaGV4JykpXTtcbn1cblxuZnVuY3Rpb24gdGFwcm9vdFNjcmlwdE9ubHlGcm9tQXN0KG46IGFzdC5UYXBUcmVlTm9kZSk6IERlc2NyaXB0b3Ige1xuICByZXR1cm4gRGVzY3JpcHRvci5mcm9tU3RyaW5nKGFzdC5mb3JtYXROb2RlKHsgdHI6IFtnZXRVbnNwZW5kYWJsZUtleSgpLCBuXSB9KSwgJ2RlZmluaXRlJyk7XG59XG5cbmV4cG9ydCBjbGFzcyBCYWJ5bG9uRGVzY3JpcHRvckJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc3Rha2VyS2V5OiBCdWZmZXIsXG4gICAgcHVibGljIGZpbmFsaXR5UHJvdmlkZXJLZXlzOiBCdWZmZXJbXSxcbiAgICBwdWJsaWMgY292ZW5hbnRLZXlzOiBCdWZmZXJbXSxcbiAgICBwdWJsaWMgY292ZW5hbnRUaHJlc2hvbGQ6IG51bWJlcixcbiAgICBwdWJsaWMgc3Rha2luZ1RpbWVMb2NrOiBudW1iZXIsXG4gICAgcHVibGljIHVuYm9uZGluZ1RpbWVMb2NrOiBudW1iZXJcbiAgKSB7fVxuXG4gIGdldFRpbWVsb2NrTWluaXNjcmlwdCgpOiBhc3QuTWluaXNjcmlwdE5vZGUge1xuICAgIHJldHVybiB7IGFuZF92OiBbcGsodGhpcy5zdGFrZXJLZXkpLCB7IG9sZGVyOiB0aGlzLnN0YWtpbmdUaW1lTG9jayB9XSB9O1xuICB9XG5cbiAgZ2V0VW5ib25kaW5nTWluaXNjcmlwdCgpOiBhc3QuTWluaXNjcmlwdE5vZGUge1xuICAgIHJldHVybiB7IGFuZF92OiBbcGsodGhpcy5zdGFrZXJLZXkpLCB7IG11bHRpX2E6IG11bHRpQXJncyh0aGlzLmNvdmVuYW50VGhyZXNob2xkLCB0aGlzLmNvdmVuYW50S2V5cykgfV0gfTtcbiAgfVxuXG4gIGdldFNsYXNoaW5nTWluaXNjcmlwdCgpOiBhc3QuTWluaXNjcmlwdE5vZGUge1xuICAgIHJldHVybiB7XG4gICAgICBhbmRfdjogW1xuICAgICAgICB7XG4gICAgICAgICAgYW5kX3Y6IFtcbiAgICAgICAgICAgIHBrKHRoaXMuc3Rha2VyS2V5KSxcbiAgICAgICAgICAgIHRoaXMuZmluYWxpdHlQcm92aWRlcktleXMubGVuZ3RoID09PSAxXG4gICAgICAgICAgICAgID8geyAndjpwayc6IHRoaXMuZmluYWxpdHlQcm92aWRlcktleXNbMF0udG9TdHJpbmcoJ2hleCcpIH1cbiAgICAgICAgICAgICAgOiB7ICd2Om11bHRpX2EnOiBtdWx0aUFyZ3MoMSwgdGhpcy5maW5hbGl0eVByb3ZpZGVyS2V5cykgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB7IG11bHRpX2E6IG11bHRpQXJncyh0aGlzLmNvdmVuYW50VGhyZXNob2xkLCB0aGlzLmNvdmVuYW50S2V5cykgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIGdldFVuYm9uZGluZ1RpbWVsb2NrTWluaXNjcmlwdCgpOiBhc3QuTWluaXNjcmlwdE5vZGUge1xuICAgIHJldHVybiB7IGFuZF92OiBbcGsodGhpcy5zdGFrZXJLZXkpLCB7IG9sZGVyOiB0aGlzLnVuYm9uZGluZ1RpbWVMb2NrIH1dIH07XG4gIH1cblxuICBnZXRTdGFraW5nRGVzY3JpcHRvcigpOiBEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4gdGFwcm9vdFNjcmlwdE9ubHlGcm9tQXN0KFtcbiAgICAgIHRoaXMuZ2V0U2xhc2hpbmdNaW5pc2NyaXB0KCksXG4gICAgICBbdGhpcy5nZXRVbmJvbmRpbmdNaW5pc2NyaXB0KCksIHRoaXMuZ2V0VGltZWxvY2tNaW5pc2NyaXB0KCldLFxuICAgIF0pO1xuICB9XG5cbiAgZ2V0U2xhc2hpbmdEZXNjcmlwdG9yKCk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiB0YXByb290U2NyaXB0T25seUZyb21Bc3QodGhpcy5nZXRVbmJvbmRpbmdUaW1lbG9ja01pbmlzY3JpcHQoKSk7XG4gIH1cblxuICBnZXRVbmJvbmRpbmdEZXNjcmlwdG9yKCk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiB0YXByb290U2NyaXB0T25seUZyb21Bc3QoW3RoaXMuZ2V0U2xhc2hpbmdNaW5pc2NyaXB0KCksIHRoaXMuZ2V0VW5ib25kaW5nVGltZWxvY2tNaW5pc2NyaXB0KCldKTtcbiAgfVxufVxuIl19
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWJ5bG9uL2Rlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBS0gsOENBR0M7QUFORCw0REFBeUQ7QUFHekQsU0FBZ0IsaUJBQWlCO0lBQy9CLG9HQUFvRztJQUNwRyxPQUFPLGtFQUFrRSxDQUFDO0FBQzVFLENBQUM7QUFFRCxpREFBaUQ7QUFDakQsU0FBUyxFQUFFLENBQUMsQ0FBUztJQUNuQixPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN2QyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBYztJQUNoQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLFNBQWlCLEVBQUUsSUFBYztJQUNsRCxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEUsQ0FBQztBQUVELFNBQVMsd0JBQXdCLENBQUMsQ0FBa0I7SUFDbEQsT0FBTyw0QkFBVSxDQUFDLFVBQVUsQ0FBQyxxQkFBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzdGLENBQUM7QUFFRCxNQUFhLHdCQUF3QjtJQUNuQyxZQUNTLFNBQWlCLEVBQ2pCLG9CQUE4QixF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InNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogaHR0cHM6Ly9naXRodWIuY29tL2JhYnlsb25sYWJzLWlvL2JhYnlsb24vdHJlZS9tYWluL2RvY3NcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJ5bG9ubGFicy1pby9iYWJ5bG9uL2Jsb2IvbWFpbi9kb2NzL3N0YWtpbmctc2NyaXB0Lm1kXG4gKi9cblxuaW1wb3J0IHsgRGVzY3JpcHRvciwgYXN0IH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5pbXBvcnQgeyBTdGFraW5nUGFyYW1zIH0gZnJvbSAnQGJpdGdvLWJldGEvYmFieWxvbmxhYnMtaW8tYnRjLXN0YWtpbmctdHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5zcGVuZGFibGVLZXkoKTogc3RyaW5nIHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JhYnlsb25sYWJzLWlvL2J0Yy1zdGFraW5nLXRzL2Jsb2IvdjAuNC4wLXJjLjIvc3JjL2NvbnN0YW50cy9pbnRlcm5hbFB1YmtleS50c1xuICByZXR1cm4gJzUwOTI5Yjc0YzFhMDQ5NTRiNzhiNGI2MDM1ZTk3YTVlMDc4YTVhMGYyOGVjOTZkNTQ3YmZlZTlhY2U4MDNhYzAnO1xufVxuXG4vLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBtaW5pc2NyaXB0IG5vZGVzXG5mdW5jdGlvbiBwayhiOiBCdWZmZXIpOiBhc3QuTWluaXNjcmlwdE5vZGUge1xuICByZXR1cm4geyAndjpwayc6IGIudG9TdHJpbmcoJ2hleCcpIH07XG59XG5cbmZ1bmN0aW9uIHNvcnRlZEtleXMoa2V5czogQnVmZmVyW10pOiBCdWZmZXJbXSB7XG4gIHJldHVybiBbLi4ua2V5c10uc29ydCgoYSwgYikgPT4gYS5jb21wYXJlKGIpKTtcbn1cblxuZnVuY3Rpb24gbXVsdGlBcmdzKHRocmVzaG9sZDogbnVtYmVyLCBrZXlzOiBCdWZmZXJbXSk6IFtudW1iZXIsIC4uLnN0cmluZ1tdXSB7XG4gIHJldHVybiBbdGhyZXNob2xkLCAuLi5zb3J0ZWRLZXlzKGtleXMpLm1hcCgoaykgPT4gay50b1N0cmluZygnaGV4JykpXTtcbn1cblxuZnVuY3Rpb24gdGFwcm9vdFNjcmlwdE9ubHlGcm9tQXN0KG46IGFzdC5UYXBUcmVlTm9kZSk6IERlc2NyaXB0b3Ige1xuICByZXR1cm4gRGVzY3JpcHRvci5mcm9tU3RyaW5nKGFzdC5mb3JtYXROb2RlKHsgdHI6IFtnZXRVbnNwZW5kYWJsZUtleSgpLCBuXSB9KSwgJ2RlZmluaXRlJyk7XG59XG5cbmV4cG9ydCBjbGFzcyBCYWJ5bG9uRGVzY3JpcHRvckJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc3Rha2VyS2V5OiBCdWZmZXIsXG4gICAgcHVibGljIGZpbmFsaXR5UHJvdmlkZXJLZXlzOiBCdWZmZXJbXSxcbiAgICBwdWJsaWMgY292ZW5hbnRLZXlzOiBCdWZmZXJbXSxcbiAgICBwdWJsaWMgY292ZW5hbnRUaHJlc2hvbGQ6IG51bWJlcixcbiAgICBwdWJsaWMgc3Rha2luZ1RpbWVMb2NrOiBudW1iZXIsXG4gICAgcHVibGljIHVuYm9uZGluZ1RpbWVMb2NrOiBudW1iZXJcbiAgKSB7fVxuXG4gIHN0YXRpYyBmcm9tUGFyYW1zKFxuICAgIHBhcmFtczoge1xuICAgICAgc3Rha2VyS2V5OiBCdWZmZXI7XG4gICAgICBmaW5hbGl0eVByb3ZpZGVyS2V5czogQnVmZmVyW107XG4gICAgfSAmIFN0YWtpbmdQYXJhbXNcbiAgKTogQmFieWxvbkRlc2NyaXB0b3JCdWlsZGVyIHtcbiAgICAvKlxuXG4gIGNvbnN0IHN0YWtlcktleSA9IGdldEVDS2V5KCdzdGFrZXInKTtcbiAgY29uc3QgY292ZW5hbnRUaHJlc2hvbGQgPSBzdGFraW5nUGFyYW1zLmNvdmVuYW50UXVvcnVtO1xuICBjb25zdCBzdGFraW5nVGltZWxvY2sgPSBzdGFraW5nUGFyYW1zLm1pblN0YWtpbmdUaW1lQmxvY2tzO1xuICBjb25zdCB1bmJvbmRpbmdUaW1lbG9jayA9IHN0YWtpbmdQYXJhbXMudW5ib25kaW5nVGltZTtcbiAgY29uc3QgdmVuZG9yQnVpbGRlciA9IG5ldyB2ZW5kb3IuU3Rha2luZ1NjcmlwdERhdGEoXG4gICAgZ2V0WE9ubHlQdWJrZXkoc3Rha2VyS2V5KSxcbiAgICBmaW5hbGl0eVByb3ZpZGVyS2V5cy5tYXAoZ2V0WE9ubHlQdWJrZXkpLFxuICAgIGNvdmVuYW50S2V5cy5tYXAoZ2V0WE9ubHlQdWJrZXkpLFxuICAgIGNvdmVuYW50VGhyZXNob2xkLFxuICAgIHN0YWtpbmdUaW1lbG9jayxcbiAgICB1bmJvbmRpbmdUaW1lbG9ja1xuICApO1xuICAgICAqL1xuICAgIHJldHVybiBuZXcgQmFieWxvbkRlc2NyaXB0b3JCdWlsZGVyKFxuICAgICAgcGFyYW1zLnN0YWtlcktleSxcbiAgICAgIHBhcmFtcy5maW5hbGl0eVByb3ZpZGVyS2V5cyxcbiAgICAgIHBhcmFtcy5jb3ZlbmFudE5vQ29vcmRQa3MubWFwKChrKSA9PiBCdWZmZXIuZnJvbShrLCAnaGV4JykpLFxuICAgICAgcGFyYW1zLmNvdmVuYW50UXVvcnVtLFxuICAgICAgcGFyYW1zLm1pblN0YWtpbmdUaW1lQmxvY2tzLFxuICAgICAgcGFyYW1zLnVuYm9uZGluZ1RpbWVcbiAgICApO1xuICB9XG5cbiAgZ2V0VGltZWxvY2tNaW5pc2NyaXB0KCk6IGFzdC5NaW5pc2NyaXB0Tm9kZSB7XG4gICAgcmV0dXJuIHsgYW5kX3Y6IFtwayh0aGlzLnN0YWtlcktleSksIHsgb2xkZXI6IHRoaXMuc3Rha2luZ1RpbWVMb2NrIH1dIH07XG4gIH1cblxuICBnZXRVbmJvbmRpbmdNaW5pc2NyaXB0KCk6IGFzdC5NaW5pc2NyaXB0Tm9kZSB7XG4gICAgcmV0dXJuIHsgYW5kX3Y6IFtwayh0aGlzLnN0YWtlcktleSksIHsgbXVsdGlfYTogbXVsdGlBcmdzKHRoaXMuY292ZW5hbnRUaHJlc2hvbGQsIHRoaXMuY292ZW5hbnRLZXlzKSB9XSB9O1xuICB9XG5cbiAgZ2V0U2xhc2hpbmdNaW5pc2NyaXB0KCk6IGFzdC5NaW5pc2NyaXB0Tm9kZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFuZF92OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhbmRfdjogW1xuICAgICAgICAgICAgcGsodGhpcy5zdGFrZXJLZXkpLFxuICAgICAgICAgICAgdGhpcy5maW5hbGl0eVByb3ZpZGVyS2V5cy5sZW5ndGggPT09IDFcbiAgICAgICAgICAgICAgPyB7ICd2OnBrJzogdGhpcy5maW5hbGl0eVByb3ZpZGVyS2V5c1swXS50b1N0cmluZygnaGV4JykgfVxuICAgICAgICAgICAgICA6IHsgJ3Y6bXVsdGlfYSc6IG11bHRpQXJncygxLCB0aGlzLmZpbmFsaXR5UHJvdmlkZXJLZXlzKSB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHsgbXVsdGlfYTogbXVsdGlBcmdzKHRoaXMuY292ZW5hbnRUaHJlc2hvbGQsIHRoaXMuY292ZW5hbnRLZXlzKSB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0VW5ib25kaW5nVGltZWxvY2tNaW5pc2NyaXB0KCk6IGFzdC5NaW5pc2NyaXB0Tm9kZSB7XG4gICAgcmV0dXJuIHsgYW5kX3Y6IFtwayh0aGlzLnN0YWtlcktleSksIHsgb2xkZXI6IHRoaXMudW5ib25kaW5nVGltZUxvY2sgfV0gfTtcbiAgfVxuXG4gIGdldFN0YWtpbmdEZXNjcmlwdG9yKCk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiB0YXByb290U2NyaXB0T25seUZyb21Bc3QoW1xuICAgICAgdGhpcy5nZXRTbGFzaGluZ01pbmlzY3JpcHQoKSxcbiAgICAgIFt0aGlzLmdldFVuYm9uZGluZ01pbmlzY3JpcHQoKSwgdGhpcy5nZXRUaW1lbG9ja01pbmlzY3JpcHQoKV0sXG4gICAgXSk7XG4gIH1cblxuICBnZXRTbGFzaGluZ0Rlc2NyaXB0b3IoKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIHRhcHJvb3RTY3JpcHRPbmx5RnJvbUFzdCh0aGlzLmdldFVuYm9uZGluZ1RpbWVsb2NrTWluaXNjcmlwdCgpKTtcbiAgfVxuXG4gIGdldFVuYm9uZGluZ0Rlc2NyaXB0b3IoKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIHRhcHJvb3RTY3JpcHRPbmx5RnJvbUFzdChbdGhpcy5nZXRTbGFzaGluZ01pbmlzY3JpcHQoKSwgdGhpcy5nZXRVbmJvbmRpbmdUaW1lbG9ja01pbmlzY3JpcHQoKV0pO1xuICB9XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
+ export * from './delegationMessage';
1
2
  export * from './descriptor';
2
- export * from './testnet';
3
+ export * from './stakingParams';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/babylon/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/babylon/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./delegationMessage"), exports);
17
18
  __exportStar(require("./descriptor"), exports);
18
- __exportStar(require("./testnet"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFieWxvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQTZCO0FBQzdCLDRDQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL3Rlc3RuZXQnO1xuIl19
19
+ __exportStar(require("./stakingParams"), exports);
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFieWxvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQW9DO0FBQ3BDLCtDQUE2QjtBQUM3QixrREFBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RlbGVnYXRpb25NZXNzYWdlJztcbmV4cG9ydCAqIGZyb20gJy4vZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL3N0YWtpbmdQYXJhbXMnO1xuIl19
@@ -0,0 +1,3 @@
1
+ import { ECPairInterface } from '@bitgo-beta/utxo-lib';
2
+ export declare function getXOnlyPubkey(key: ECPairInterface): Buffer;
3
+ //# sourceMappingURL=keyUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyUtils.d.ts","sourceRoot":"","sources":["../../../src/babylon/keyUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAE3D"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getXOnlyPubkey = getXOnlyPubkey;
4
+ function getXOnlyPubkey(key) {
5
+ return key.publicKey.subarray(1);
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5VXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFieWxvbi9rZXlVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLHdDQUVDO0FBRkQsU0FBZ0IsY0FBYyxDQUFDLEdBQW9CO0lBQ2pELE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVDUGFpckludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFhPbmx5UHVia2V5KGtleTogRUNQYWlySW50ZXJmYWNlKTogQnVmZmVyIHtcbiAgcmV0dXJuIGtleS5wdWJsaWNLZXkuc3ViYXJyYXkoMSk7XG59XG4iXX0=
@@ -0,0 +1,31 @@
1
+ import { BIP32Interface, ECPairInterface } from '@bitgo-beta/utxo-lib';
2
+ import { StakerInfo, StakingInputs, VersionedStakingParams } from '@bitgo-beta/babylonlabs-io-btc-staking-ts';
3
+ import { BabylonDescriptorBuilder } from './descriptor';
4
+ export type JsonParams = {
5
+ version: number;
6
+ covenant_pks: string[];
7
+ covenant_quorum: number;
8
+ min_staking_value_sat: number;
9
+ max_staking_value_sat: number;
10
+ min_staking_time_blocks: number;
11
+ max_staking_time_blocks: number;
12
+ slashing_pk_script: string;
13
+ min_slashing_tx_fee_sat: number;
14
+ slashing_rate: string;
15
+ unbonding_time_blocks: number;
16
+ unbonding_fee_sat: number;
17
+ min_commission_rate: string;
18
+ delegation_creation_base_gas_fee: number;
19
+ allow_list_expiration_height: number;
20
+ btc_activation_height: number;
21
+ };
22
+ export declare const testnetStakingParams: JsonParams;
23
+ export declare const mainnetStakingParams: JsonParams;
24
+ export declare function toVersionedParams(p: JsonParams): VersionedStakingParams;
25
+ export declare const testnetFinalityProvider0: Buffer<ArrayBuffer>;
26
+ export declare function getDescriptorBuilderForParams(userKey: BIP32Interface | ECPairInterface | Buffer, finalityProviderKeys: Buffer[], params: Pick<VersionedStakingParams, 'covenantNoCoordPks' | 'covenantQuorum' | 'minStakingTimeBlocks' | 'unbondingTime'>): BabylonDescriptorBuilder;
27
+ export declare function getDescriptorProviderForStakingParams(stakerBtcInfo: StakerInfo, stakingInput: StakingInputs, stakingParams: VersionedStakingParams): BabylonDescriptorBuilder;
28
+ export declare function getTestnetDescriptorBuilder(userKey: BIP32Interface | ECPairInterface | Buffer, { finalityProviderKeys, }?: {
29
+ finalityProviderKeys?: Buffer[];
30
+ }): BabylonDescriptorBuilder;
31
+ //# sourceMappingURL=stakingParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakingParams.d.ts","sourceRoot":"","sources":["../../../src/babylon/stakingParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAE9G,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gCAAgC,EAAE,MAAM,CAAC;IACzC,4BAA4B,EAAE,MAAM,CAAC;IACrC,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,UA2BlC,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,UAuBlC,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,sBAAsB,CAkBvE;AAGD,eAAO,MAAM,wBAAwB,qBAGpC,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,cAAc,GAAG,eAAe,GAAG,MAAM,EAClD,oBAAoB,EAAE,MAAM,EAAE,EAC9B,MAAM,EAAE,IAAI,CACV,sBAAsB,EACtB,oBAAoB,GAAG,gBAAgB,GAAG,sBAAsB,GAAG,eAAe,CACnF,GACA,wBAAwB,CAY1B;AAED,wBAAgB,qCAAqC,CACnD,aAAa,EAAE,UAAU,EACzB,YAAY,EAAE,aAAa,EAC3B,aAAa,EAAE,sBAAsB,GACpC,wBAAwB,CAI1B;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,cAAc,GAAG,eAAe,GAAG,MAAM,EAClD,EACE,oBAAiD,GAClD,GAAE;IACD,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,GACL,wBAAwB,CAE1B"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.testnetFinalityProvider0 = exports.mainnetStakingParams = exports.testnetStakingParams = void 0;
4
+ exports.toVersionedParams = toVersionedParams;
5
+ exports.getDescriptorBuilderForParams = getDescriptorBuilderForParams;
6
+ exports.getDescriptorProviderForStakingParams = getDescriptorProviderForStakingParams;
7
+ exports.getTestnetDescriptorBuilder = getTestnetDescriptorBuilder;
8
+ const descriptor_1 = require("./descriptor");
9
+ // Source: https://github.com/babylonlabs-io/babylon/blob/v1.99.0-snapshot.250211/app/upgrades/v1/testnet/btcstaking_params.go#L149-L159
10
+ exports.testnetStakingParams = {
11
+ version: 5 /* it's the sixth element in the array */,
12
+ covenant_pks: [
13
+ 'fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737',
14
+ '0aee0509b16db71c999238a4827db945526859b13c95487ab46725357c9a9f25',
15
+ '17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4',
16
+ '113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0',
17
+ '79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0',
18
+ '3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c',
19
+ 'd21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36',
20
+ '40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df',
21
+ 'f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e',
22
+ ],
23
+ covenant_quorum: 6,
24
+ min_staking_value_sat: 50000,
25
+ max_staking_value_sat: 35000000000,
26
+ min_staking_time_blocks: 10000,
27
+ max_staking_time_blocks: 64000,
28
+ slashing_pk_script: 'ABRb4SYk0IorQkCV18ByIcM0UNFL8Q==',
29
+ min_slashing_tx_fee_sat: 5000,
30
+ slashing_rate: '0.05',
31
+ unbonding_time_blocks: 1008,
32
+ unbonding_fee_sat: 2000,
33
+ min_commission_rate: '0.03',
34
+ delegation_creation_base_gas_fee: 1095000,
35
+ allow_list_expiration_height: 26124,
36
+ btc_activation_height: 227174,
37
+ };
38
+ // https://github.com/babylonlabs-io/babylon/blob/v1.99.0-snapshot.250211/app/upgrades/v1/mainnet/btcstaking_params.go#L4-L28
39
+ exports.mainnetStakingParams = {
40
+ version: 0,
41
+ covenant_pks: [
42
+ '43311589af63c2adda04fcd7792c038a05c12a4fe40351b3eb1612ff6b2e5a0e',
43
+ 'd415b187c6e7ce9da46ac888d20df20737d6f16a41639e68ea055311e1535dd9',
44
+ 'd27cd27dbff481bc6fc4aa39dd19405eb6010237784ecba13bab130a4a62df5d',
45
+ 'a3e107fee8879f5cf901161dbf4ff61c252ba5fec6f6407fe81b9453d244c02c',
46
+ 'c45753e856ad0abb06f68947604f11476c157d13b7efd54499eaa0f6918cf716',
47
+ ],
48
+ covenant_quorum: 3,
49
+ min_staking_value_sat: 10000,
50
+ max_staking_value_sat: 10000000000,
51
+ min_staking_time_blocks: 10,
52
+ max_staking_time_blocks: 65535,
53
+ slashing_pk_script: 'dqkUAQEBAQEBAQEBAQEBAQEBAQEBAQGIrA==',
54
+ min_slashing_tx_fee_sat: 1000,
55
+ slashing_rate: '0.100000000000000000',
56
+ unbonding_time_blocks: 101,
57
+ unbonding_fee_sat: 1000,
58
+ min_commission_rate: '0.03',
59
+ delegation_creation_base_gas_fee: 1000,
60
+ allow_list_expiration_height: 0,
61
+ btc_activation_height: 100,
62
+ };
63
+ function toVersionedParams(p) {
64
+ return {
65
+ version: p.version,
66
+ btcActivationHeight: p.btc_activation_height,
67
+ covenantNoCoordPks: p.covenant_pks,
68
+ covenantQuorum: p.covenant_quorum,
69
+ unbondingTime: p.unbonding_time_blocks,
70
+ unbondingFeeSat: p.unbonding_fee_sat,
71
+ maxStakingAmountSat: p.max_staking_value_sat,
72
+ minStakingAmountSat: p.min_staking_value_sat,
73
+ maxStakingTimeBlocks: p.max_staking_time_blocks,
74
+ minStakingTimeBlocks: p.min_staking_time_blocks,
75
+ slashing: {
76
+ slashingPkScriptHex: Buffer.from(p.slashing_pk_script, 'base64').toString('hex'),
77
+ slashingRate: parseFloat(p.slashing_rate),
78
+ minSlashingTxFeeSat: p.min_slashing_tx_fee_sat,
79
+ },
80
+ };
81
+ }
82
+ // Source: https://btcstaking.testnet.babylonlabs.io/ "Babylon Foundation 0"
83
+ exports.testnetFinalityProvider0 = Buffer.from('d23c2c25e1fcf8fd1c21b9a402c19e2e309e531e45e92fb1e9805b6056b0cc76', 'hex');
84
+ function getDescriptorBuilderForParams(userKey, finalityProviderKeys, params) {
85
+ if (!Buffer.isBuffer(userKey)) {
86
+ userKey = userKey.publicKey;
87
+ }
88
+ return new descriptor_1.BabylonDescriptorBuilder(userKey, finalityProviderKeys, params.covenantNoCoordPks.map((pk) => Buffer.from(pk, 'hex')), params.covenantQuorum, params.minStakingTimeBlocks, params.unbondingTime);
89
+ }
90
+ function getDescriptorProviderForStakingParams(stakerBtcInfo, stakingInput, stakingParams) {
91
+ const userKey = Buffer.from(stakerBtcInfo.publicKeyNoCoordHex, 'hex');
92
+ const finalityProviderKey = Buffer.from(stakingInput.finalityProviderPkNoCoordHex, 'hex');
93
+ return getDescriptorBuilderForParams(userKey, [finalityProviderKey], stakingParams);
94
+ }
95
+ function getTestnetDescriptorBuilder(userKey, { finalityProviderKeys = [exports.testnetFinalityProvider0], } = {}) {
96
+ return getDescriptorBuilderForParams(userKey, finalityProviderKeys, toVersionedParams(exports.testnetStakingParams));
97
+ }
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1BhcmFtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWJ5bG9uL3N0YWtpbmdQYXJhbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZ0ZBLDhDQWtCQztBQVFELHNFQW1CQztBQUVELHNGQVFDO0FBRUQsa0VBU0M7QUEvSUQsNkNBQXdEO0FBcUJ4RCx3SUFBd0k7QUFDM0gsUUFBQSxvQkFBb0IsR0FBZTtJQUM5QyxPQUFPLEVBQUUsQ0FBQyxDQUFDLHlDQUF5QztJQUNwRCxZQUFZLEVBQUU7UUFDWixrRUFBa0U7UUFDbEUsa0VBQWtFO1FBQ2xFLGtFQUFrRTtRQUNsRSxrRUFBa0U7UUFDbEUsa0VBQWtFO1FBQ2xFLGtFQUFrRTtRQUNsRSxrRUFBa0U7UUFDbEUsa0VBQWtFO1FBQ2xFLGtFQUFrRTtLQUNuRTtJQUNELGVBQWUsRUFBRSxDQUFDO0lBQ2xCLHFCQUFxQixFQUFFLEtBQUs7SUFDNUIscUJBQXFCLEVBQUUsV0FBVztJQUNsQyx1QkFBdUIsRUFBRSxLQUFLO0lBQzlCLHVCQUF1QixFQUFFLEtBQUs7SUFDOUIsa0JBQWtCLEVBQUUsa0NBQWtDO0lBQ3RELHVCQUF1QixFQUFFLElBQUk7SUFDN0IsYUFBYSxFQUFFLE1BQU07SUFDckIscUJBQXFCLEVBQUUsSUFBSTtJQUMzQixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLG1CQUFtQixFQUFFLE1BQU07SUFDM0IsZ0NBQWdDLEVBQUUsT0FBTztJQUN6Qyw0QkFBNEIsRUFBRSxLQUFLO0lBQ25DLHFCQUFxQixFQUFFLE1BQU07Q0FDOUIsQ0FBQztBQUVGLDZIQUE2SDtBQUNoSCxRQUFBLG9CQUFvQixHQUFlO0lBQzlDLE9BQU8sRUFBRSxDQUFDO0lBQ1YsWUFBWSxFQUFFO1FBQ1osa0VBQWtFO1FBQ2xFLGtFQUFrRTtRQUNsRSxrRUFBa0U7UUFDbEUsa0VBQWtFO1FBQ2xFLGtFQUFrRTtLQUNuRTtJQUNELGVBQWUsRUFBRSxDQUFDO0lBQ2xCLHFC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QUFDLDRCQUFvQixDQUFDLENBQUMsQ0FBQztBQUMvRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UsIEVDUGFpckludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IFN0YWtlckluZm8sIFN0YWtpbmdJbnB1dHMsIFZlcnNpb25lZFN0YWtpbmdQYXJhbXMgfSBmcm9tICdAYml0Z28tYmV0YS9iYWJ5bG9ubGFicy1pby1idGMtc3Rha2luZy10cyc7XG5cbmltcG9ydCB7IEJhYnlsb25EZXNjcmlwdG9yQnVpbGRlciB9IGZyb20gJy4vZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEpzb25QYXJhbXMgPSB7XG4gIHZlcnNpb246IG51bWJlcjtcbiAgY292ZW5hbnRfcGtzOiBzdHJpbmdbXTtcbiAgY292ZW5hbnRfcXVvcnVtOiBudW1iZXI7XG4gIG1pbl9zdGFraW5nX3ZhbHVlX3NhdDogbnVtYmVyO1xuICBtYXhfc3Rha2luZ192YWx1ZV9zYXQ6IG51bWJlcjtcbiAgbWluX3N0YWtpbmdfdGltZV9ibG9ja3M6IG51bWJlcjtcbiAgbWF4X3N0YWtpbmdfdGltZV9ibG9ja3M6IG51bWJlcjtcbiAgc2xhc2hpbmdfcGtfc2NyaXB0OiBzdHJpbmc7XG4gIG1pbl9zbGFzaGluZ190eF9mZWVfc2F0OiBudW1iZXI7XG4gIHNsYXNoaW5nX3JhdGU6IHN0cmluZztcbiAgdW5ib25kaW5nX3RpbWVfYmxvY2tzOiBudW1iZXI7XG4gIHVuYm9uZGluZ19mZWVfc2F0OiBudW1iZXI7XG4gIG1pbl9jb21taXNzaW9uX3JhdGU6IHN0cmluZztcbiAgZGVsZWdhdGlvbl9jcmVhdGlvbl9iYXNlX2dhc19mZWU6IG51bWJlcjtcbiAgYWxsb3dfbGlzdF9leHBpcmF0aW9uX2hlaWdodDogbnVtYmVyO1xuICBidGNfYWN0aXZhdGlvbl9oZWlnaHQ6IG51bWJlcjtcbn07XG5cbi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2JhYnlsb25sYWJzLWlvL2JhYnlsb24vYmxvYi92MS45OS4wLXNuYXBzaG90LjI1MDIxMS9hcHAvdXBncmFkZXMvdjEvdGVzdG5ldC9idGNzdGFraW5nX3BhcmFtcy5nbyNMMTQ5LUwxNTlcbmV4cG9ydCBjb25zdCB0ZXN0bmV0U3Rha2luZ1BhcmFtczogSnNvblBhcmFtcyA9IHtcbiAgdmVyc2lvbjogNSAvKiBpdCdzIHRoZSBzaXh0aCBlbGVtZW50IGluIHRoZSBhcnJheSAqLyxcbiAgY292ZW5hbnRfcGtzOiBbXG4gICAgJ2ZhOWQ4ODJkNDVmNDA2MGJkYjgwNDIxODM4MjhjZDg3NTQ0ZjFlYTk5NzM4MGU1ODZjYWI3N2Q1ZmQ2OTg3MzcnLFxuICAgICcwYWVlMDUwOWIxNmRiNzFjOTk5MjM4YTQ4MjdkYjk0NTUyNjg1OWIxM2M5NTQ4N2FiNDY3MjUzNTdjOWE5ZjI1JyxcbiAgICAnMTc5MjFjZjE1NmNjYjRlNzNkNDI4Zjk5NmVkMTFiMjQ1MzEzZTM3ZTI3Yzk3OGFjNGQyY2MyMWVjYTQ2NzJlNCcsXG4gICAgJzExM2MzYTMyYTlkMzIwYjcyMTkwYTA0YTAyMGEwZGIzOTc2ZWYzNjk3MjY3MzI1OGU5YTM4YTM2NGYzZGMzYjAnLFxuICAgICc3OWE3MWZmZDcxYzUwM2VmMmUyZjkxYmNjZmM4ZmNkYTc5NDZmNDY1M2NlZjBkOWYzZGRlMjA3OTVlZjNiOWYwJyxcbiAgICAnM2JiOTNkZmM4YjYxODg3ZDc3MWYzNjMwZTlhNjNlOTdjYmFmY2ZjYzc4NTU2YTQ3NGRmODNhMzFhMGVmODk5YycsXG4gICAgJ2QyMWZhZjc4YzY3NTFhMGQzOGU2YmQ4MDI4YjkwN2ZmMDdlOWE4NjlhNDNmYzgzN2Q2YjNmOGRmZjYxMTlhMzYnLFxuICAgICc0MGFmYWY0N2M0ZmZhNTZkZTg2NDEwZDhlNDdiYWEyYmI2ZjA0YjYwNGY0ZWEyNDMyMzczN2RkYzNmZTA5MmRmJyxcbiAgICAnZjUxOTllZmFlM2YyOGJiODI0NzYxNjNhN2U0NThjN2FkNDQ1ZDliZmZiMDY4MmQxMGQzYmRiMmNiNDFmOGU4ZScsXG4gIF0sXG4gIGNvdmVuYW50X3F1b3J1bTogNixcbiAgbWluX3N0YWtpbmdfdmFsdWVfc2F0OiA1MDAwMCxcbiAgbWF4X3N0YWtpbmdfdmFsdWVfc2F0OiAzNTAwMDAwMDAwMCxcbiAgbWluX3N0YWtpbmdfdGltZV9ibG9ja3M6IDEwMDAwLFxuICBtYXhfc3Rha2luZ190aW1lX2Jsb2NrczogNjQwMDAsXG4gIHNsYXNoaW5nX3BrX3NjcmlwdDogJ0FCUmI0U1lrMElvclFrQ1YxOEJ5SWNNMFVORkw4UT09JyxcbiAgbWluX3NsYXNoaW5nX3R4X2ZlZV9zYXQ6IDUwMDAsXG4gIHNsYXNoaW5nX3JhdGU6ICcwLjA1JyxcbiAgdW5ib25kaW5nX3RpbWVfYmxvY2tzOiAxMDA4LFxuICB1bmJvbmRpbmdfZmVlX3NhdDogMjAwMCxcbiAgbWluX2NvbW1pc3Npb25fcmF0ZTogJzAuMDMnLFxuICBkZWxlZ2F0aW9uX2NyZWF0aW9uX2Jhc2VfZ2FzX2ZlZTogMTA5NTAwMCxcbiAgYWxsb3dfbGlzdF9leHBpcmF0aW9uX2hlaWdodDogMjYxMjQsXG4gIGJ0Y19hY3RpdmF0aW9uX2hlaWdodDogMjI3MTc0LFxufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2JhYnlsb25sYWJzLWlvL2JhYnlsb24vYmxvYi92MS45OS4wLXNuYXBzaG90LjI1MDIxMS9hcHAvdXBncmFkZXMvdjEvbWFpbm5ldC9idGNzdGFraW5nX3BhcmFtcy5nbyNMNC1MMjhcbmV4cG9ydCBjb25zdCBtYWlubmV0U3Rha2luZ1BhcmFtczogSnNvblBhcmFtcyA9IHtcbiAgdmVyc2lvbjogMCxcbiAgY292ZW5hbnRfcGtzOiBbXG4gICAgJzQzMzExNTg5YWY2M2MyYWRkYTA0ZmNkNzc5MmMwMzhhMDVjMTJhNGZlNDAzNTFiM2ViMTYxMmZmNmIyZTVhMGUnLFxuICAgICdkNDE1YjE4N2M2ZTdjZTlkYTQ2YWM4ODhkMjBkZjIwNzM3ZDZmMTZhNDE2MzllNjhlYTA1NTMxMWUxNTM1ZGQ5JyxcbiAgICAnZDI3Y2QyN2RiZmY0ODFiYzZmYzRhYTM5ZGQxOTQwNWViNjAxMDIzNzc4NGVjYmExM2JhYjEzMGE0YTYyZGY1ZCcsXG4gICAgJ2EzZTEwN2ZlZTg4NzlmNWNmOTAxMTYxZGJmNGZmNjFjMjUyYmE1ZmVjNmY2NDA3ZmU4MWI5NDUzZDI0NGMwMmMnLFxuICAgICdjNDU3NTNlODU2YWQwYWJiMDZmNjg5NDc2MDRmMTE0NzZjMTU3ZDEzYjdlZmQ1NDQ5OWVhYTBmNjkxOGNmNzE2JyxcbiAgXSxcbiAgY292ZW5hbnRfcXVvcnVtOiAzLFxuICBtaW5fc3Rha2luZ192YWx1ZV9zYXQ6IDEwMDAwLFxuICBtYXhfc3Rha2luZ192YWx1ZV9zYXQ6IDEwMDAwMDAwMDAwLFxuICBtaW5fc3Rha2luZ190aW1lX2Jsb2NrczogMTAsXG4gIG1heF9zdGFraW5nX3RpbWVfYmxvY2tzOiA2NTUzNSxcbiAgc2xhc2hpbmdfcGtfc2NyaXB0OiAnZHFrVUFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRR0lyQT09JyxcbiAgbWluX3NsYXNoaW5nX3R4X2ZlZV9zYXQ6IDEwMDAsXG4gIHNsYXNoaW5nX3JhdGU6ICcwLjEwMDAwMDAwMDAwMDAwMDAwMCcsXG4gIHVuYm9uZGluZ190aW1lX2Jsb2NrczogMTAxLFxuICB1bmJvbmRpbmdfZmVlX3NhdDogMTAwMCxcbiAgbWluX2NvbW1pc3Npb25fcmF0ZTogJzAuMDMnLFxuICBkZWxlZ2F0aW9uX2NyZWF0aW9uX2Jhc2VfZ2FzX2ZlZTogMTAwMCxcbiAgYWxsb3dfbGlzdF9leHBpcmF0aW9uX2hlaWdodDogMCxcbiAgYnRjX2FjdGl2YXRpb25faGVpZ2h0OiAxMDAsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9WZXJzaW9uZWRQYXJhbXMocDogSnNvblBhcmFtcyk6IFZlcnNpb25lZFN0YWtpbmdQYXJhbXMge1xuICByZXR1cm4ge1xuICAgIHZlcnNpb246IHAudmVyc2lvbixcbiAgICBidGNBY3RpdmF0aW9uSGVpZ2h0OiBwLmJ0Y19hY3RpdmF0aW9uX2hlaWdodCxcbiAgICBjb3ZlbmFudE5vQ29vcmRQa3M6IHAuY292ZW5hbnRfcGtzLFxuICAgIGNvdmVuYW50UXVvcnVtOiBwLmNvdmVuYW50X3F1b3J1bSxcbiAgICB1bmJvbmRpbmdUaW1lOiBwLnVuYm9uZGluZ190aW1lX2Jsb2NrcyxcbiAgICB1bmJvbmRpbmdGZWVTYXQ6IHAudW5ib25kaW5nX2ZlZV9zYXQsXG4gICAgbWF4U3Rha2luZ0Ftb3VudFNhdDogcC5tYXhfc3Rha2luZ192YWx1ZV9zYXQsXG4gICAgbWluU3Rha2luZ0Ftb3VudFNhdDogcC5taW5fc3Rha2luZ192YWx1ZV9zYXQsXG4gICAgbWF4U3Rha2luZ1RpbWVCbG9ja3M6IHAubWF4X3N0YWtpbmdfdGltZV9ibG9ja3MsXG4gICAgbWluU3Rha2luZ1RpbWVCbG9ja3M6IHAubWluX3N0YWtpbmdfdGltZV9ibG9ja3MsXG4gICAgc2xhc2hpbmc6IHtcbiAgICAgIHNsYXNoaW5nUGtTY3JpcHRIZXg6IEJ1ZmZlci5mcm9tKHAuc2xhc2hpbmdfcGtfc2NyaXB0LCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgc2xhc2hpbmdSYXRlOiBwYXJzZUZsb2F0KHAuc2xhc2hpbmdfcmF0ZSksXG4gICAgICBtaW5TbGFzaGluZ1R4RmVlU2F0OiBwLm1pbl9zbGFzaGluZ190eF9mZWVfc2F0LFxuICAgIH0sXG4gIH07XG59XG5cbi8vIFNvdXJjZTogaHR0cHM6Ly9idGNzdGFraW5nLnRlc3RuZXQuYmFieWxvbmxhYnMuaW8vIFwiQmFieWxvbiBGb3VuZGF0aW9uIDBcIlxuZXhwb3J0IGNvbnN0IHRlc3RuZXRGaW5hbGl0eVByb3ZpZGVyMCA9IEJ1ZmZlci5mcm9tKFxuICAnZDIzYzJjMjVlMWZjZjhmZDFjMjFiOWE0MDJjMTllMmUzMDllNTMxZTQ1ZTkyZmIxZTk4MDViNjA1NmIwY2M3NicsXG4gICdoZXgnXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVzY3JpcHRvckJ1aWxkZXJGb3JQYXJhbXMoXG4gIHVzZXJLZXk6IEJJUDMySW50ZXJmYWNlIHwgRUNQYWlySW50ZXJmYWNlIHwgQnVmZmVyLFxuICBmaW5hbGl0eVByb3ZpZGVyS2V5czogQnVmZmVyW10sXG4gIHBhcmFtczogUGljazxcbiAgICBWZXJzaW9uZWRTdGFraW5nUGFyYW1zLFxuICAgICdjb3ZlbmFudE5vQ29vcmRQa3MnIHwgJ2NvdmVuYW50UXVvcnVtJyB8ICdtaW5TdGFraW5nVGltZUJsb2NrcycgfCAndW5ib25kaW5nVGltZSdcbiAgPlxuKTogQmFieWxvbkRlc2NyaXB0b3JCdWlsZGVyIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodXNlcktleSkpIHtcbiAgICB1c2VyS2V5ID0gdXNlcktleS5wdWJsaWNLZXk7XG4gIH1cbiAgcmV0dXJuIG5ldyBCYWJ5bG9uRGVzY3JpcHRvckJ1aWxkZXIoXG4gICAgdXNlcktleSxcbiAgICBmaW5hbGl0eVByb3ZpZGVyS2V5cyxcbiAgICBwYXJhbXMuY292ZW5hbnROb0Nvb3JkUGtzLm1hcCgocGspID0+IEJ1ZmZlci5mcm9tKHBrLCAnaGV4JykpLFxuICAgIHBhcmFtcy5jb3ZlbmFudFF1b3J1bSxcbiAgICBwYXJhbXMubWluU3Rha2luZ1RpbWVCbG9ja3MsXG4gICAgcGFyYW1zLnVuYm9uZGluZ1RpbWVcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2NyaXB0b3JQcm92aWRlckZvclN0YWtpbmdQYXJhbXMoXG4gIHN0YWtlckJ0Y0luZm86IFN0YWtlckluZm8sXG4gIHN0YWtpbmdJbnB1dDogU3Rha2luZ0lucHV0cyxcbiAgc3Rha2luZ1BhcmFtczogVmVyc2lvbmVkU3Rha2luZ1BhcmFtc1xuKTogQmFieWxvbkRlc2NyaXB0b3JCdWlsZGVyIHtcbiAgY29uc3QgdXNlcktleSA9IEJ1ZmZlci5mcm9tKHN0YWtlckJ0Y0luZm8ucHVibGljS2V5Tm9Db29yZEhleCwgJ2hleCcpO1xuICBjb25zdCBmaW5hbGl0eVByb3ZpZGVyS2V5ID0gQnVmZmVyLmZyb20oc3Rha2luZ0lucHV0LmZpbmFsaXR5UHJvdmlkZXJQa05vQ29vcmRIZXgsICdoZXgnKTtcbiAgcmV0dXJuIGdldERlc2NyaXB0b3JCdWlsZGVyRm9yUGFyYW1zKHVzZXJLZXksIFtmaW5hbGl0eVByb3ZpZGVyS2V5XSwgc3Rha2luZ1BhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXN0bmV0RGVzY3JpcHRvckJ1aWxkZXIoXG4gIHVzZXJLZXk6IEJJUDMySW50ZXJmYWNlIHwgRUNQYWlySW50ZXJmYWNlIHwgQnVmZmVyLFxuICB7XG4gICAgZmluYWxpdHlQcm92aWRlcktleXMgPSBbdGVzdG5ldEZpbmFsaXR5UHJvdmlkZXIwXSxcbiAgfToge1xuICAgIGZpbmFsaXR5UHJvdmlkZXJLZXlzPzogQnVmZmVyW107XG4gIH0gPSB7fVxuKTogQmFieWxvbkRlc2NyaXB0b3JCdWlsZGVyIHtcbiAgcmV0dXJuIGdldERlc2NyaXB0b3JCdWlsZGVyRm9yUGFyYW1zKHVzZXJLZXksIGZpbmFsaXR5UHJvdmlkZXJLZXlzLCB0b1ZlcnNpb25lZFBhcmFtcyh0ZXN0bmV0U3Rha2luZ1BhcmFtcykpO1xufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitgo-beta/utxo-staking",
3
- "version": "1.1.1-beta.194",
3
+ "version": "1.1.1-beta.196",
4
4
  "description": "BitGo SDK for build UTXO staking transactions",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -39,14 +39,13 @@
39
39
  ]
40
40
  },
41
41
  "dependencies": {
42
- "@bitgo-beta/unspents": "0.13.2-beta.753",
43
- "@bitgo-beta/utxo-core": "1.0.0-beta.64",
44
- "@bitgo-beta/utxo-lib": "8.0.3-beta.754",
45
- "@bitgo/wasm-miniscript": "2.0.0-beta.7"
46
- },
47
- "devDependencies": {
48
- "bip174": "=2.1.1",
42
+ "@babylonlabs-io/babylon-proto-ts": "1.0.0",
43
+ "@bitgo-beta/babylonlabs-io-btc-staking-ts": "0.4.0-beta.0",
44
+ "@bitgo-beta/unspents": "0.13.2-beta.755",
45
+ "@bitgo-beta/utxo-core": "1.0.0-beta.66",
46
+ "@bitgo-beta/utxo-lib": "8.0.3-beta.756",
47
+ "@bitgo/wasm-miniscript": "2.0.0-beta.7",
49
48
  "bitcoinjs-lib": "^6.1.7"
50
49
  },
51
- "gitHead": "145c66d258f73a4b4328d39b84a8b00039663b50"
50
+ "gitHead": "dfa42f8df208fbc9b6c18dc9a8e47751667e13c8"
52
51
  }
@@ -1,24 +0,0 @@
1
- import { BIP32Interface } from '@bitgo-beta/utxo-lib';
2
- import { BabylonDescriptorBuilder } from './descriptor';
3
- export declare const testnetStakingParams: {
4
- covenant_pks: string[];
5
- covenant_quorum: number;
6
- min_staking_value_sat: number;
7
- max_staking_value_sat: number;
8
- min_staking_time_blocks: number;
9
- max_staking_time_blocks: number;
10
- slashing_pk_script: string;
11
- min_slashing_tx_fee_sat: number;
12
- slashing_rate: string;
13
- unbonding_time_blocks: number;
14
- unbonding_fee_sat: number;
15
- min_commission_rate: string;
16
- delegation_creation_base_gas_fee: number;
17
- allow_list_expiration_height: number;
18
- btc_activation_height: number;
19
- };
20
- export declare const finalityBabylonProvider0: Buffer<ArrayBuffer>;
21
- export declare function getTestnetDescriptorBuilder(userKey: BIP32Interface, { finalityProviderKeys, }?: {
22
- finalityProviderKeys?: Buffer[];
23
- }): BabylonDescriptorBuilder;
24
- //# sourceMappingURL=testnet.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testnet.d.ts","sourceRoot":"","sources":["../../../src/babylon/testnet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGxD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;CA0BhC,CAAC;AAGF,eAAO,MAAM,wBAAwB,qBAGpC,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,cAAc,EACvB,EACE,oBAAiD,GAClD,GAAE;IACD,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,GACL,wBAAwB,CAS1B"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.finalityBabylonProvider0 = exports.testnetStakingParams = void 0;
4
- exports.getTestnetDescriptorBuilder = getTestnetDescriptorBuilder;
5
- const descriptor_1 = require("./descriptor");
6
- // Source: https://github.com/babylonlabs-io/babylon/blob/v1.99.0-snapshot.250211/app/upgrades/v1/testnet/btcstaking_params.go#L149-L159
7
- exports.testnetStakingParams = {
8
- covenant_pks: [
9
- 'fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737',
10
- '0aee0509b16db71c999238a4827db945526859b13c95487ab46725357c9a9f25',
11
- '17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4',
12
- '113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0',
13
- '79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0',
14
- '3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c',
15
- 'd21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36',
16
- '40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df',
17
- 'f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e',
18
- ],
19
- covenant_quorum: 6,
20
- min_staking_value_sat: 50000,
21
- max_staking_value_sat: 35000000000,
22
- min_staking_time_blocks: 10000,
23
- max_staking_time_blocks: 64000,
24
- slashing_pk_script: 'ABRb4SYk0IorQkCV18ByIcM0UNFL8Q==',
25
- min_slashing_tx_fee_sat: 5000,
26
- slashing_rate: '0.05',
27
- unbonding_time_blocks: 1008,
28
- unbonding_fee_sat: 2000,
29
- min_commission_rate: '0.03',
30
- delegation_creation_base_gas_fee: 1095000,
31
- allow_list_expiration_height: 26124,
32
- btc_activation_height: 227174,
33
- };
34
- // Source: https://btcstaking.testnet.babylonlabs.io/ "Babylon Foundation 0"
35
- exports.finalityBabylonProvider0 = Buffer.from('d23c2c25e1fcf8fd1c21b9a402c19e2e309e531e45e92fb1e9805b6056b0cc76', 'hex');
36
- function getTestnetDescriptorBuilder(userKey, { finalityProviderKeys = [exports.finalityBabylonProvider0], } = {}) {
37
- return new descriptor_1.BabylonDescriptorBuilder(userKey.publicKey, finalityProviderKeys, exports.testnetStakingParams.covenant_pks.map((pk) => Buffer.from(pk, 'hex')), exports.testnetStakingParams.covenant_quorum, exports.testnetStakingParams.min_staking_time_blocks, exports.testnetStakingParams.unbonding_time_blocks);
38
- }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdG5ldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWJ5bG9uL3Rlc3RuZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBdUNBLGtFQWdCQztBQXJERCw2Q0FBd0Q7QUFFeEQsd0lBQXdJO0FBQzNILFFBQUEsb0JBQW9CLEdBQUc7SUFDbEMsWUFBWSxFQUFFO1FBQ1osa0VBQWtFO1FBQ2xFLGtFQUFrRTtRQUNsRSxrRUFBa0U7UUFDbEUsa0VBQWtFO1FBQ2xFLGtFQUFrRTtRQUNsRSxrRUFBa0U7UUFDbEUsa0VBQWtFO1FBQ2xFLGtFQUFrRTtRQUNsRSxrRUFBa0U7S0FDbkU7SUFDRCxlQUFlLEVBQUUsQ0FBQztJQUNsQixxQkFBcUIsRUFBRSxLQUFLO0lBQzVCLHFCQUFxQixFQUFFLFdBQVc7SUFDbEMsdUJBQXVCLEVBQUUsS0FBSztJQUM5Qix1QkFBdUIsRUFBRSxLQUFLO0lBQzlCLGtCQUFrQixFQUFFLGtDQUFrQztJQUN0RCx1QkFBdUIsRUFBRSxJQUFJO0lBQzdCLGFBQWEsRUFBRSxNQUFNO0lBQ3JCLHFCQUFxQixFQUFFLElBQUk7SUFDM0IsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixtQkFBbUIsRUFBRSxNQUFNO0lBQzNCLGdDQUFnQyxFQUFFLE9BQU87SUFDekMsNEJBQTRCLEVBQUUsS0FBSztJQUNuQyxxQkFBcUIsRUFBRSxNQUFNO0NBQzlCLENBQUM7QUFFRiw0RUFBNEU7QUFDL0QsUUFBQSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUNqRCxrRUFBa0UsRUFDbEUsS0FBSyxDQUNOLENBQUM7QUFFRixTQUFnQiwyQkFBMkIsQ0FDekMsT0FBdUIsRUFDdkIsRUFDRSxvQkFBb0IsR0FBRyxDQUFDLGdDQUF3QixDQUFDLE1BRy9DLEVBQUU7SUFFTixPQUFPLElBQUkscUNBQXdCLENBQ2pDLE9BQU8sQ0FBQyxTQUFTLEVBQ2pCLG9CQUFvQixFQUNwQiw0QkFBb0IsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUNyRSw0QkFBb0IsQ0FBQyxlQUFlLEVBQ3BDLDRCQUFvQixDQUFDLHVCQUF1QixFQUM1Qyw0QkFBb0IsQ0FBQyxxQkFBcUIsQ0FDM0MsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgQmFieWxvbkRlc2NyaXB0b3JCdWlsZGVyIH0gZnJvbSAnLi9kZXNjcmlwdG9yJztcblxuLy8gU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vYmFieWxvbmxhYnMtaW8vYmFieWxvbi9ibG9iL3YxLjk5LjAtc25hcHNob3QuMjUwMjExL2FwcC91cGdyYWRlcy92MS90ZXN0bmV0L2J0Y3N0YWtpbmdfcGFyYW1zLmdvI0wxNDktTDE1OVxuZXhwb3J0IGNvbnN0IHRlc3RuZXRTdGFraW5nUGFyYW1zID0ge1xuICBjb3ZlbmFudF9wa3M6IFtcbiAgICAnZmE5ZDg4MmQ0NWY0MDYwYmRiODA0MjE4MzgyOGNkODc1NDRmMWVhOTk3MzgwZTU4NmNhYjc3ZDVmZDY5ODczNycsXG4gICAgJzBhZWUwNTA5YjE2ZGI3MWM5OTkyMzhhNDgyN2RiOTQ1NTI2ODU5YjEzYzk1NDg3YWI0NjcyNTM1N2M5YTlmMjUnLFxuICAgICcxNzkyMWNmMTU2Y2NiNGU3M2Q0MjhmOTk2ZWQxMWIyNDUzMTNlMzdlMjdjOTc4YWM0ZDJjYzIxZWNhNDY3MmU0JyxcbiAgICAnMTEzYzNhMzJhOWQzMjBiNzIxOTBhMDRhMDIwYTBkYjM5NzZlZjM2OTcyNjczMjU4ZTlhMzhhMzY0ZjNkYzNiMCcsXG4gICAgJzc5YTcxZmZkNzFjNTAzZWYyZTJmOTFiY2NmYzhmY2RhNzk0NmY0NjUzY2VmMGQ5ZjNkZGUyMDc5NWVmM2I5ZjAnLFxuICAgICczYmI5M2RmYzhiNjE4ODdkNzcxZjM2MzBlOWE2M2U5N2NiYWZjZmNjNzg1NTZhNDc0ZGY4M2EzMWEwZWY4OTljJyxcbiAgICAnZDIxZmFmNzhjNjc1MWEwZDM4ZTZiZDgwMjhiOTA3ZmYwN2U5YTg2OWE0M2ZjODM3ZDZiM2Y4ZGZmNjExOWEzNicsXG4gICAgJzQwYWZhZjQ3YzRmZmE1NmRlODY0MTBkOGU0N2JhYTJiYjZmMDRiNjA0ZjRlYTI0MzIzNzM3ZGRjM2ZlMDkyZGYnLFxuICAgICdmNTE5OWVmYWUzZjI4YmI4MjQ3NjE2M2E3ZTQ1OGM3YWQ0NDVkOWJmZmIwNjgyZDEwZDNiZGIyY2I0MWY4ZThlJyxcbiAgXSxcbiAgY292ZW5hbnRfcXVvcnVtOiA2LFxuICBtaW5fc3Rha2luZ192YWx1ZV9zYXQ6IDUwMDAwLFxuICBtYXhfc3Rha2luZ192YWx1ZV9zYXQ6IDM1MDAwMDAwMDAwLFxuICBtaW5fc3Rha2luZ190aW1lX2Jsb2NrczogMTAwMDAsXG4gIG1heF9zdGFraW5nX3RpbWVfYmxvY2tzOiA2NDAwMCxcbiAgc2xhc2hpbmdfcGtfc2NyaXB0OiAnQUJSYjRTWWswSW9yUWtDVjE4QnlJY00wVU5GTDhRPT0nLFxuICBtaW5fc2xhc2hpbmdfdHhfZmVlX3NhdDogNTAwMCxcbiAgc2xhc2hpbmdfcmF0ZTogJzAuMDUnLFxuICB1bmJvbmRpbmdfdGltZV9ibG9ja3M6IDEwMDgsXG4gIHVuYm9uZGluZ19mZWVfc2F0OiAyMDAwLFxuICBtaW5fY29tbWlzc2lvbl9yYXRlOiAnMC4wMycsXG4gIGRlbGVnYXRpb25fY3JlYXRpb25fYmFzZV9nYXNfZmVlOiAxMDk1MDAwLFxuICBhbGxvd19saXN0X2V4cGlyYXRpb25faGVpZ2h0OiAyNjEyNCxcbiAgYnRjX2FjdGl2YXRpb25faGVpZ2h0OiAyMjcxNzQsXG59O1xuXG4vLyBTb3VyY2U6IGh0dHBzOi8vYnRjc3Rha2luZy50ZXN0bmV0LmJhYnlsb25sYWJzLmlvLyBcIkJhYnlsb24gRm91bmRhdGlvbiAwXCJcbmV4cG9ydCBjb25zdCBmaW5hbGl0eUJhYnlsb25Qcm92aWRlcjAgPSBCdWZmZXIuZnJvbShcbiAgJ2QyM2MyYzI1ZTFmY2Y4ZmQxYzIxYjlhNDAyYzE5ZTJlMzA5ZTUzMWU0NWU5MmZiMWU5ODA1YjYwNTZiMGNjNzYnLFxuICAnaGV4J1xuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRlc3RuZXREZXNjcmlwdG9yQnVpbGRlcihcbiAgdXNlcktleTogQklQMzJJbnRlcmZhY2UsXG4gIHtcbiAgICBmaW5hbGl0eVByb3ZpZGVyS2V5cyA9IFtmaW5hbGl0eUJhYnlsb25Qcm92aWRlcjBdLFxuICB9OiB7XG4gICAgZmluYWxpdHlQcm92aWRlcktleXM/OiBCdWZmZXJbXTtcbiAgfSA9IHt9XG4pOiBCYWJ5bG9uRGVzY3JpcHRvckJ1aWxkZXIge1xuICByZXR1cm4gbmV3IEJhYnlsb25EZXNjcmlwdG9yQnVpbGRlcihcbiAgICB1c2VyS2V5LnB1YmxpY0tleSxcbiAgICBmaW5hbGl0eVByb3ZpZGVyS2V5cyxcbiAgICB0ZXN0bmV0U3Rha2luZ1BhcmFtcy5jb3ZlbmFudF9wa3MubWFwKChwaykgPT4gQnVmZmVyLmZyb20ocGssICdoZXgnKSksXG4gICAgdGVzdG5ldFN0YWtpbmdQYXJhbXMuY292ZW5hbnRfcXVvcnVtLFxuICAgIHRlc3RuZXRTdGFraW5nUGFyYW1zLm1pbl9zdGFraW5nX3RpbWVfYmxvY2tzLFxuICAgIHRlc3RuZXRTdGFraW5nUGFyYW1zLnVuYm9uZGluZ190aW1lX2Jsb2Nrc1xuICApO1xufVxuIl19