@bitgo-beta/sdk-coin-polyx 1.0.1-beta.13 → 1.0.1-beta.130

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.
Files changed (56) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/dist/src/lib/batchStakingBuilder.d.ts +78 -0
  3. package/dist/src/lib/batchStakingBuilder.d.ts.map +1 -0
  4. package/dist/src/lib/batchStakingBuilder.js +225 -0
  5. package/dist/src/lib/batchUnstakingBuilder.d.ts +38 -0
  6. package/dist/src/lib/batchUnstakingBuilder.d.ts.map +1 -0
  7. package/dist/src/lib/batchUnstakingBuilder.js +119 -0
  8. package/dist/src/lib/bondExtraBuilder.d.ts +36 -0
  9. package/dist/src/lib/bondExtraBuilder.d.ts.map +1 -0
  10. package/dist/src/lib/bondExtraBuilder.js +101 -0
  11. package/dist/src/lib/iface.d.ts +52 -5
  12. package/dist/src/lib/iface.d.ts.map +1 -1
  13. package/dist/src/lib/iface.js +1 -1
  14. package/dist/src/lib/index.d.ts +11 -7
  15. package/dist/src/lib/index.d.ts.map +1 -1
  16. package/dist/src/lib/index.js +34 -36
  17. package/dist/src/lib/registerDidWithCDDBuilder.d.ts +34 -0
  18. package/dist/src/lib/registerDidWithCDDBuilder.d.ts.map +1 -0
  19. package/dist/src/lib/registerDidWithCDDBuilder.js +81 -0
  20. package/dist/src/lib/transaction.d.ts +9 -6
  21. package/dist/src/lib/transaction.d.ts.map +1 -1
  22. package/dist/src/lib/transaction.js +72 -8
  23. package/dist/src/lib/transactionBuilderFactory.d.ts +21 -5
  24. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  25. package/dist/src/lib/transactionBuilderFactory.js +81 -8
  26. package/dist/src/lib/transferBuilder.d.ts +48 -2
  27. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  28. package/dist/src/lib/transferBuilder.js +103 -3
  29. package/dist/src/lib/txnSchema.d.ts +42 -0
  30. package/dist/src/lib/txnSchema.d.ts.map +1 -0
  31. package/dist/src/lib/txnSchema.js +81 -0
  32. package/dist/src/lib/utils.d.ts +4 -14
  33. package/dist/src/lib/utils.d.ts.map +1 -1
  34. package/dist/src/lib/utils.js +7 -25
  35. package/dist/src/lib/withdrawUnbondedBuilder.d.ts +34 -0
  36. package/dist/src/lib/withdrawUnbondedBuilder.d.ts.map +1 -0
  37. package/dist/src/lib/withdrawUnbondedBuilder.js +89 -0
  38. package/dist/src/polyx.d.ts +7 -8
  39. package/dist/src/polyx.d.ts.map +1 -1
  40. package/dist/src/polyx.js +9 -20
  41. package/dist/src/resources/index.d.ts +3 -0
  42. package/dist/src/resources/index.d.ts.map +1 -0
  43. package/dist/src/resources/index.js +19 -0
  44. package/dist/src/resources/mainnet.d.ts +13 -0
  45. package/dist/src/resources/mainnet.d.ts.map +1 -0
  46. package/dist/src/resources/mainnet.js +16 -0
  47. package/dist/src/resources/testnet.d.ts +13 -0
  48. package/dist/src/resources/testnet.d.ts.map +1 -0
  49. package/dist/src/resources/testnet.js +16 -0
  50. package/package.json +13 -9
  51. package/dist/src/lib/keyPair.d.ts +0 -12
  52. package/dist/src/lib/keyPair.d.ts.map +0 -1
  53. package/dist/src/lib/keyPair.js +0 -24
  54. package/dist/src/lib/transactionBuilder.d.ts +0 -43
  55. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  56. package/dist/src/lib/transactionBuilder.js +0 -78
package/CHANGELOG.md CHANGED
@@ -0,0 +1,57 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
+
6
+ # [1.3.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-polyx@1.2.0...@bitgo/sdk-coin-polyx@1.3.0) (2025-06-05)
7
+
8
+ ### Features
9
+
10
+ - add batchStakingBuilder (bond and nominate) and bondExtraBuilder for polyx ([cd29662](https://github.com/BitGo/BitGoJS/commit/cd296620fb013ebd48ec89bb4bcf1bf0433ec7d4))
11
+ - add batchUnstakingBuilder and withdrawUnbondedBuilder ([d86c459](https://github.com/BitGo/BitGoJS/commit/d86c459f1c42c1d5cbf93b7ba408760b617bf328))
12
+ - **root:** support node 22 ([c4ad6af](https://github.com/BitGo/BitGoJS/commit/c4ad6af2e8896221417c303f0f6b84652b493216))
13
+
14
+ # [1.2.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-polyx@1.1.2...@bitgo/sdk-coin-polyx@1.2.0) (2025-06-02)
15
+
16
+ ### Bug Fixes
17
+
18
+ - **sdk-coin-polyx:** fix to toJson method in polyx transaction ([8f8ef0b](https://github.com/BitGo/BitGoJS/commit/8f8ef0b8fa420dadb41989465b2380af73466ae0))
19
+
20
+ ### Features
21
+
22
+ - rename audit function naming and signature ([1a885ab](https://github.com/BitGo/BitGoJS/commit/1a885ab60d30ca8595e284a728f2ab9d3c09994e))
23
+
24
+ ## [1.1.2](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-polyx@1.1.1...@bitgo/sdk-coin-polyx@1.1.2) (2025-05-28)
25
+
26
+ **Note:** Version bump only for package @bitgo/sdk-coin-polyx
27
+
28
+ ## [1.1.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-polyx@1.1.0...@bitgo/sdk-coin-polyx@1.1.1) (2025-05-22)
29
+
30
+ ### Bug Fixes
31
+
32
+ - **sdk-coin-polyx:** all fixed ([f9c23bc](https://github.com/BitGo/BitGoJS/commit/f9c23bc9a8bc609be5f41a4ffd980138ecb63148))
33
+ - **sdk-coin-polyx:** fix cdd builder ([2461fbf](https://github.com/BitGo/BitGoJS/commit/2461fbfcc76f8f6e7f89302f5e3c4b99097cb97a))
34
+
35
+ # [1.1.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-polyx@1.0.4...@bitgo/sdk-coin-polyx@1.1.0) (2025-05-20)
36
+
37
+ ### Features
38
+
39
+ - **sdk-coin-polyx:** add transaction builders ([31c96bb](https://github.com/BitGo/BitGoJS/commit/31c96bbbce60b93e13208e3eab06bd144cfe57e4))
40
+
41
+ ## [1.0.4](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-polyx@1.0.3...@bitgo/sdk-coin-polyx@1.0.4) (2025-05-07)
42
+
43
+ ### Bug Fixes
44
+
45
+ - send statics coin to substrate class ([9ed860e](https://github.com/BitGo/BitGoJS/commit/9ed860ed288516959d5723e6119c7701588a41e7))
46
+
47
+ ## [1.0.3](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-polyx@1.0.2...@bitgo/sdk-coin-polyx@1.0.3) (2025-04-29)
48
+
49
+ **Note:** Version bump only for package @bitgo/sdk-coin-polyx
50
+
51
+ ## [1.0.2](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-polyx@1.0.1...@bitgo/sdk-coin-polyx@1.0.2) (2025-04-25)
52
+
53
+ **Note:** Version bump only for package @bitgo/sdk-coin-polyx
54
+
55
+ ## 1.0.1 (2025-04-15)
56
+
57
+ **Note:** Version bump only for package @bitgo/sdk-coin-polyx
@@ -0,0 +1,78 @@
1
+ import { TransactionBuilder, Transaction } from '@bitgo-beta/abstract-substrate';
2
+ import { DecodedSignedTx, DecodedSigningPayload, UnsignedTransaction } from '@substrate/txwrapper-core';
3
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
4
+ import { BaseAddress, TransactionType } from '@bitgo-beta/sdk-core';
5
+ import { BondArgs, NominateArgs } from './iface';
6
+ export declare class BatchStakingBuilder extends TransactionBuilder {
7
+ protected _amount: string;
8
+ protected _controller: string;
9
+ protected _payee: string | {
10
+ Account: string;
11
+ };
12
+ protected _validators: string[];
13
+ constructor(_coinConfig: Readonly<CoinConfig>);
14
+ protected get transactionType(): TransactionType;
15
+ /**
16
+ * Build a batch transaction that combines bond and nominate operations
17
+ * Both operations are required and always atomic (using batchAll)
18
+ */
19
+ protected buildTransaction(): UnsignedTransaction;
20
+ /**
21
+ * Set the staking amount for bond
22
+ */
23
+ amount(amount: string): this;
24
+ /**
25
+ * Get the staking amount
26
+ */
27
+ getAmount(): string;
28
+ /**
29
+ * Set the controller account for bond
30
+ */
31
+ controller(controller: BaseAddress): this;
32
+ /**
33
+ * Get the controller address
34
+ */
35
+ getController(): string;
36
+ /**
37
+ * Set the rewards destination for bond ('Staked', 'Stash','Controller', or { Account: string })
38
+ */
39
+ payee(payee: string | {
40
+ Account: string;
41
+ }): this;
42
+ /**
43
+ * Get the payee
44
+ */
45
+ getPayee(): string | {
46
+ Account: string;
47
+ };
48
+ /**
49
+ * Set the validators to nominate
50
+ */
51
+ validators(validators: string[]): this;
52
+ /**
53
+ * Get the validators to nominate
54
+ */
55
+ getValidators(): string[];
56
+ /** @inheritdoc */
57
+ validateDecodedTransaction(decodedTxn: DecodedSigningPayload | DecodedSignedTx): void;
58
+ /**
59
+ * Validate bond arguments
60
+ */
61
+ private validateBondArgs;
62
+ /**
63
+ * Validate nominate arguments
64
+ */
65
+ private validateNominateArgs;
66
+ /** @inheritdoc */
67
+ protected fromImplementation(rawTransaction: string): Transaction;
68
+ /** @inheritdoc */
69
+ validateTransaction(tx: Transaction): void;
70
+ /**
71
+ * Validate the builder fields
72
+ */
73
+ private validateFields;
74
+ testValidateFields(): void;
75
+ testValidateBondArgs(args: BondArgs): void;
76
+ testValidateNominateArgs(args: NominateArgs): void;
77
+ }
78
+ //# sourceMappingURL=batchStakingBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchStakingBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/batchStakingBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAExG,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAA2B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG7F,OAAO,EAAa,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5D,qBAAa,mBAAoB,SAAQ,kBAAkB;IAEzD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAG/C,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAM;gBAEzB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;OAGG;IACH,SAAS,CAAC,gBAAgB,IAAI,mBAAmB;IA2CjD;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAMzC;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAShD;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAIxC;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI;IAQtC;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB,kBAAkB;IAClB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,GAAG,eAAe,GAAG,IAAI;IA0BrF;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IA2BjE,kBAAkB;IAClB,mBAAmB,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAK1C;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB,kBAAkB,IAAI,IAAI;IAInB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAI1C,wBAAwB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;CAG1D"}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BatchStakingBuilder = void 0;
7
+ const abstract_substrate_1 = require("@bitgo-beta/abstract-substrate");
8
+ const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
9
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
10
+ const txnSchema_1 = require("./txnSchema");
11
+ const utils_1 = __importDefault(require("./utils"));
12
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
13
+ class BatchStakingBuilder extends abstract_substrate_1.TransactionBuilder {
14
+ constructor(_coinConfig) {
15
+ super(_coinConfig);
16
+ // For nominate operation
17
+ this._validators = [];
18
+ this.material(utils_1.default.getMaterial(_coinConfig.network.type));
19
+ }
20
+ get transactionType() {
21
+ return sdk_core_1.TransactionType.Batch;
22
+ }
23
+ /**
24
+ * Build a batch transaction that combines bond and nominate operations
25
+ * Both operations are required and always atomic (using batchAll)
26
+ */
27
+ buildTransaction() {
28
+ // Ensure both bond and nominate operations are included
29
+ if (!this._amount || this._validators.length === 0) {
30
+ throw new sdk_core_1.InvalidTransactionError('Batch transaction must include both bond and nominate operations');
31
+ }
32
+ const baseTxInfo = this.createBaseTxInfo();
33
+ // Create the individual calls
34
+ const calls = [];
35
+ // Add bond call
36
+ const bondCall = txwrapper_polkadot_1.methods.staking.bond({
37
+ controller: this._controller || this._sender,
38
+ value: this._amount,
39
+ payee: this._payee || 'Staked',
40
+ }, baseTxInfo.baseTxInfo, baseTxInfo.options);
41
+ calls.push(bondCall.method);
42
+ // Add nominate call
43
+ const nominateCall = txwrapper_polkadot_1.methods.staking.nominate({
44
+ targets: this._validators,
45
+ }, baseTxInfo.baseTxInfo, baseTxInfo.options);
46
+ calls.push(nominateCall.method);
47
+ // Always use batchAll (atomic)
48
+ return txwrapper_polkadot_1.methods.utility.batchAll({
49
+ calls,
50
+ }, baseTxInfo.baseTxInfo, baseTxInfo.options);
51
+ }
52
+ /**
53
+ * Set the staking amount for bond
54
+ */
55
+ amount(amount) {
56
+ this.validateValue(new bignumber_js_1.default(amount));
57
+ this._amount = amount;
58
+ return this;
59
+ }
60
+ /**
61
+ * Get the staking amount
62
+ */
63
+ getAmount() {
64
+ return this._amount;
65
+ }
66
+ /**
67
+ * Set the controller account for bond
68
+ */
69
+ controller(controller) {
70
+ this.validateAddress(controller);
71
+ this._controller = controller.address;
72
+ return this;
73
+ }
74
+ /**
75
+ * Get the controller address
76
+ */
77
+ getController() {
78
+ return this._controller;
79
+ }
80
+ /**
81
+ * Set the rewards destination for bond ('Staked', 'Stash','Controller', or { Account: string })
82
+ */
83
+ payee(payee) {
84
+ if (typeof payee === 'object' && payee.Account) {
85
+ this._payee = payee;
86
+ }
87
+ else {
88
+ this._payee = payee;
89
+ }
90
+ return this;
91
+ }
92
+ /**
93
+ * Get the payee
94
+ */
95
+ getPayee() {
96
+ return this._payee;
97
+ }
98
+ /**
99
+ * Set the validators to nominate
100
+ */
101
+ validators(validators) {
102
+ for (const address of validators) {
103
+ this.validateAddress({ address });
104
+ }
105
+ this._validators = validators;
106
+ return this;
107
+ }
108
+ /**
109
+ * Get the validators to nominate
110
+ */
111
+ getValidators() {
112
+ return this._validators;
113
+ }
114
+ /** @inheritdoc */
115
+ validateDecodedTransaction(decodedTxn) {
116
+ const methodName = decodedTxn.method?.name;
117
+ // batch bond and nominate
118
+ if (methodName === 'utility.batchAll') {
119
+ const txMethod = decodedTxn.method.args;
120
+ const calls = txMethod.calls;
121
+ for (const call of calls) {
122
+ const callMethod = call.method;
123
+ if (callMethod === 'staking.bond') {
124
+ const bondArgs = call.args;
125
+ this.validateBondArgs(bondArgs);
126
+ }
127
+ else if (callMethod === 'staking.nominate') {
128
+ const nominateArgs = call.args;
129
+ this.validateNominateArgs(nominateArgs);
130
+ }
131
+ else {
132
+ throw new sdk_core_1.InvalidTransactionError(`Invalid call in batch: ${callMethod}`);
133
+ }
134
+ }
135
+ }
136
+ else {
137
+ throw new sdk_core_1.InvalidTransactionError(`Invalid transaction type: ${methodName}`);
138
+ }
139
+ }
140
+ /**
141
+ * Validate bond arguments
142
+ */
143
+ validateBondArgs(args) {
144
+ if (!utils_1.default.isValidAddress(args.controller)) {
145
+ throw new sdk_core_1.InvalidTransactionError(`Invalid bond args: controller address ${args.controller} is not a well-formed address`);
146
+ }
147
+ const validationResult = txnSchema_1.BatchTransactionSchema.validateBond({
148
+ value: args.value,
149
+ controller: args.controller,
150
+ payee: args.payee,
151
+ });
152
+ if (validationResult.error) {
153
+ throw new sdk_core_1.InvalidTransactionError(`Invalid bond args: ${validationResult.error.message}`);
154
+ }
155
+ }
156
+ /**
157
+ * Validate nominate arguments
158
+ */
159
+ validateNominateArgs(args) {
160
+ const validationResult = txnSchema_1.BatchTransactionSchema.validateNominate({
161
+ validators: args.targets,
162
+ });
163
+ if (validationResult.error) {
164
+ throw new sdk_core_1.InvalidTransactionError(`Invalid nominate args: ${validationResult.error.message}`);
165
+ }
166
+ }
167
+ /** @inheritdoc */
168
+ fromImplementation(rawTransaction) {
169
+ const tx = super.fromImplementation(rawTransaction);
170
+ // Check if the transaction is a batch transaction
171
+ if (this._method?.name !== 'utility.batchAll') {
172
+ throw new sdk_core_1.InvalidTransactionError(`Invalid Transaction Type: ${this._method?.name}. Expected utility.batchAll`);
173
+ }
174
+ if (this._method) {
175
+ const txMethod = this._method.args;
176
+ for (const call of txMethod.calls) {
177
+ if (call.method === 'staking.bond') {
178
+ const bondArgs = call.args;
179
+ this.amount(bondArgs.value);
180
+ this.controller({ address: bondArgs.controller });
181
+ this.payee(bondArgs.payee);
182
+ }
183
+ else if (call.method === 'staking.nominate') {
184
+ const nominateArgs = call.args;
185
+ this.validators(nominateArgs.targets);
186
+ }
187
+ }
188
+ }
189
+ return tx;
190
+ }
191
+ /** @inheritdoc */
192
+ validateTransaction(tx) {
193
+ super.validateTransaction(tx);
194
+ this.validateFields();
195
+ }
196
+ /**
197
+ * Validate the builder fields
198
+ */
199
+ validateFields() {
200
+ // Ensure both bond and nominate operations are included
201
+ if (!this._amount || this._validators.length === 0) {
202
+ throw new sdk_core_1.InvalidTransactionError('Batch transaction must include both bond and nominate operations');
203
+ }
204
+ const validationResult = txnSchema_1.BatchTransactionSchema.validate({
205
+ amount: this._amount,
206
+ controller: this._controller,
207
+ payee: this._payee,
208
+ validators: this._validators,
209
+ });
210
+ if (validationResult.error) {
211
+ throw new sdk_core_1.InvalidTransactionError(`Invalid transaction: ${validationResult.error.message}`);
212
+ }
213
+ }
214
+ testValidateFields() {
215
+ this.validateFields();
216
+ }
217
+ testValidateBondArgs(args) {
218
+ return this.validateBondArgs(args);
219
+ }
220
+ testValidateNominateArgs(args) {
221
+ return this.validateNominateArgs(args);
222
+ }
223
+ }
224
+ exports.BatchStakingBuilder = BatchStakingBuilder;
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hTdGFraW5nQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYmF0Y2hTdGFraW5nQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx1RUFBaUY7QUFFakYsc0VBQXdEO0FBRXhELG1EQUE2RjtBQUM3RiwyQ0FBcUQ7QUFDckQsb0RBQTRCO0FBRTVCLGdFQUFxQztBQUVyQyxNQUFhLG1CQUFvQixTQUFRLHVDQUFrQjtJQVN6RCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUpyQix5QkFBeUI7UUFDZixnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUluQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQUssQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQ7OztPQUdHO0lBQ08sZ0JBQWdCO1FBQ3hCLHdEQUF3RDtRQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuRCxNQUFNLElBQUksa0NBQXVCLENBQUMsa0VBQWtFLENBQUMsQ0FBQztRQUN4RyxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFM0MsOEJBQThCO1FBQzlCLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUUzQixnQkFBZ0I7UUFDaEIsTUFBTSxRQUFRLEdBQUcsNEJBQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNuQztZQUNFLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPO1lBQzVDLEtBQUssRUFBRSxJQUFJLENBQUMs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O0lBQ3hCLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxJQUFjO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxJQUFrQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0NBQ0Y7QUFyUUQsa0RBcVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyLCBUcmFuc2FjdGlvbiB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LXN1YnN0cmF0ZSc7XG5pbXBvcnQgeyBEZWNvZGVkU2lnbmVkVHgsIERlY29kZWRTaWduaW5nUGF5bG9hZCwgVW5zaWduZWRUcmFuc2FjdGlvbiB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUnO1xuaW1wb3J0IHsgbWV0aG9kcyB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJhc2VBZGRyZXNzLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmF0Y2hUcmFuc2FjdGlvblNjaGVtYSB9IGZyb20gJy4vdHhuU2NoZW1hJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEJhdGNoQXJncywgQm9uZEFyZ3MsIE5vbWluYXRlQXJncyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgQmF0Y2hTdGFraW5nQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIC8vIEZvciBib25kIG9wZXJhdGlvblxuICBwcm90ZWN0ZWQgX2Ftb3VudDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2NvbnRyb2xsZXI6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9wYXllZTogc3RyaW5nIHwgeyBBY2NvdW50OiBzdHJpbmcgfTtcblxuICAvLyBGb3Igbm9taW5hdGUgb3BlcmF0aW9uXG4gIHByb3RlY3RlZCBfdmFsaWRhdG9yczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5tYXRlcmlhbCh1dGlscy5nZXRNYXRlcmlhbChfY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5CYXRjaDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGJhdGNoIHRyYW5zYWN0aW9uIHRoYXQgY29tYmluZXMgYm9uZCBhbmQgbm9taW5hdGUgb3BlcmF0aW9uc1xuICAgKiBCb3RoIG9wZXJhdGlvbnMgYXJlIHJlcXVpcmVkIGFuZCBhbHdheXMgYXRvbWljICh1c2luZyBiYXRjaEFsbClcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZFRyYW5zYWN0aW9uKCk6IFVuc2lnbmVkVHJhbnNhY3Rpb24ge1xuICAgIC8vIEVuc3VyZSBib3RoIGJvbmQgYW5kIG5vbWluYXRlIG9wZXJhdGlvbnMgYXJlIGluY2x1ZGVkXG4gICAgaWYgKCF0aGlzLl9hbW91bnQgfHwgdGhpcy5fdmFsaWRhdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignQmF0Y2ggdHJhbnNhY3Rpb24gbXVzdCBpbmNsdWRlIGJvdGggYm9uZCBhbmQgbm9taW5hdGUgb3BlcmF0aW9ucycpO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VUeEluZm8gPSB0aGlzLmNyZWF0ZUJhc2VUeEluZm8oKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgaW5kaXZpZHVhbCBjYWxsc1xuICAgIGNvbnN0IGNhbGxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gQWRkIGJvbmQgY2FsbFxuICAgIGNvbnN0IGJvbmRDYWxsID0gbWV0aG9kcy5zdGFraW5nLmJvbmQoXG4gICAgICB7XG4gICAgICAgIGNvbnRyb2xsZXI6IHRoaXMuX2NvbnRyb2xsZXIgfHwgdGhpcy5fc2VuZGVyLFxuICAgICAgICB2YWx1ZTogdGhpcy5fYW1vdW50LFxuICAgICAgICBwYXllZTogdGhpcy5fcGF5ZWUgfHwgJ1N0YWtlZCcsXG4gICAgICB9LFxuICAgICAgYmFzZVR4SW5mby5iYXNlVHhJbmZvLFxuICAgICAgYmFzZVR4SW5mby5vcHRpb25zXG4gICAgKTtcbiAgICBjYWxscy5wdXNoKGJvbmRDYWxsLm1ldGhvZCk7XG5cbiAgICAvLyBBZGQgbm9taW5hdGUgY2FsbFxuICAgIGNvbnN0IG5vbWluYXRlQ2FsbCA9IG1ldGhvZHMuc3Rha2luZy5ub21pbmF0ZShcbiAgICAgIHtcbiAgICAgICAgdGFyZ2V0czogdGhpcy5fdmFsaWRhdG9ycyxcbiAgICAgIH0sXG4gICAgICBiYXNlVHhJbmZvLmJhc2VUeEluZm8sXG4gICAgICBiYXNlVHhJbmZvLm9wdGlvbnNcbiAgICApO1xuICAgIGNhbGxzLnB1c2gobm9taW5hdGVDYWxsLm1ldGhvZCk7XG5cbiAgICAvLyBBbHdheXMgdXNlIGJhdGNoQWxsIChhdG9taWMpXG4gICAgcmV0dXJuIG1ldGhvZHMudXRpbGl0eS5iYXRjaEFsbChcbiAgICAgIHtcbiAgICAgICAgY2FsbHMsXG4gICAgICB9LFxuICAgICAgYmFzZVR4SW5mby5iYXNlVHhJbmZvLFxuICAgICAgYmFzZVR4SW5mby5vcHRpb25zXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHN0YWtpbmcgYW1vdW50IGZvciBib25kXG4gICAqL1xuICBhbW91bnQoYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihhbW91bnQpKTtcbiAgICB0aGlzLl9hbW91bnQgPSBhbW91bnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGFraW5nIGFtb3VudFxuICAgKi9cbiAgZ2V0QW1vdW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Ftb3VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbnRyb2xsZXIgYWNjb3VudCBmb3IgYm9uZFxuICAgKi9cbiAgY29udHJvbGxlcihjb250cm9sbGVyOiBCYXNlQWRkcmVzcyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKGNvbnRyb2xsZXIpO1xuICAgIHRoaXMuX2NvbnRyb2xsZXIgPSBjb250cm9sbGVyLmFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjb250cm9sbGVyIGFkZHJlc3NcbiAgICovXG4gIGdldENvbnRyb2xsZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbGxlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHJld2FyZHMgZGVzdGluYXRpb24gZm9yIGJvbmQgKCdTdGFrZWQnLCAnU3Rhc2gnLCdDb250cm9sbGVyJywgb3IgeyBBY2NvdW50OiBzdHJpbmcgfSlcbiAgICovXG4gIHBheWVlKHBheWVlOiBzdHJpbmcgfCB7IEFjY291bnQ6IHN0cmluZyB9KTogdGhpcyB7XG4gICAgaWYgKHR5cGVvZiBwYXllZSA9PT0gJ29iamVjdCcgJiYgcGF5ZWUuQWNjb3VudCkge1xuICAgICAgdGhpcy5fcGF5ZWUgPSBwYXllZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcGF5ZWUgPSBwYXllZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBwYXllZVxuICAgKi9cbiAgZ2V0UGF5ZWUoKTogc3RyaW5nIHwgeyBBY2NvdW50OiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHRoaXMuX3BheWVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdmFsaWRhdG9ycyB0byBub21pbmF0ZVxuICAgKi9cbiAgdmFsaWRhdG9ycyh2YWxpZGF0b3JzOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgIGZvciAoY29uc3QgYWRkcmVzcyBvZiB2YWxpZGF0b3JzKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3MgfSk7XG4gICAgfVxuICAgIHRoaXMuX3ZhbGlkYXRvcnMgPSB2YWxpZGF0b3JzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdmFsaWRhdG9ycyB0byBub21pbmF0ZVxuICAgKi9cbiAgZ2V0VmFsaWRhdG9ycygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRvcnM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24oZGVjb2RlZFR4bjogRGVjb2RlZFNpZ25pbmdQYXlsb2FkIHwgRGVjb2RlZFNpZ25lZFR4KTogdm9pZCB7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IGRlY29kZWRUeG4ubWV0aG9kPy5uYW1lIGFzIHN0cmluZztcblxuICAgIC8vIGJhdGNoIGJvbmQgYW5kIG5vbWluYXRlXG4gICAgaWYgKG1ldGhvZE5hbWUgPT09ICd1dGlsaXR5LmJhdGNoQWxsJykge1xuICAgICAgY29uc3QgdHhNZXRob2QgPSBkZWNvZGVkVHhuLm1ldGhvZC5hcmdzIGFzIHVua25vd24gYXMgQmF0Y2hBcmdzO1xuICAgICAgY29uc3QgY2FsbHMgPSB0eE1ldGhvZC5jYWxscztcblxuICAgICAgZm9yIChjb25zdCBjYWxsIG9mIGNhbGxzKSB7XG4gICAgICAgIGNvbnN0IGNhbGxNZXRob2QgPSBjYWxsLm1ldGhvZDtcblxuICAgICAgICBpZiAoY2FsbE1ldGhvZCA9PT0gJ3N0YWtpbmcuYm9uZCcpIHtcbiAgICAgICAgICBjb25zdCBib25kQXJncyA9IGNhbGwuYXJncyBhcyB1bmtub3duIGFzIEJvbmRBcmdzO1xuICAgICAgICAgIHRoaXMudmFsaWRhdGVCb25kQXJncyhib25kQXJncyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2FsbE1ldGhvZCA9PT0gJ3N0YWtpbmcubm9taW5hdGUnKSB7XG4gICAgICAgICAgY29uc3Qgbm9taW5hdGVBcmdzID0gY2FsbC5hcmdzIGFzIHVua25vd24gYXMgTm9taW5hdGVBcmdzO1xuICAgICAgICAgIHRoaXMudmFsaWRhdGVOb21pbmF0ZUFyZ3Mobm9taW5hdGVBcmdzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgY2FsbCBpbiBiYXRjaDogJHtjYWxsTWV0aG9kfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB0cmFuc2FjdGlvbiB0eXBlOiAke21ldGhvZE5hbWV9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGJvbmQgYXJndW1lbnRzXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlQm9uZEFyZ3MoYXJnczogQm9uZEFyZ3MpOiB2b2lkIHtcbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKGFyZ3MuY29udHJvbGxlcikpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgYm9uZCBhcmdzOiBjb250cm9sbGVyIGFkZHJlc3MgJHthcmdzLmNvbnRyb2xsZXJ9IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGFkZHJlc3NgXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBCYXRjaFRyYW5zYWN0aW9uU2NoZW1hLnZhbGlkYXRlQm9uZCh7XG4gICAgICB2YWx1ZTogYXJncy52YWx1ZSxcbiAgICAgIGNvbnRyb2xsZXI6IGFyZ3MuY29udHJvbGxlcixcbiAgICAgIHBheWVlOiBhcmdzLnBheWVlLFxuICAgIH0pO1xuXG4gICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBib25kIGFyZ3M6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBub21pbmF0ZSBhcmd1bWVudHNcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVOb21pbmF0ZUFyZ3MoYXJnczogTm9taW5hdGVBcmdzKTogdm9pZCB7XG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IEJhdGNoVHJhbnNhY3Rpb25TY2hlbWEudmFsaWRhdGVOb21pbmF0ZSh7XG4gICAgICB2YWxpZGF0b3JzOiBhcmdzLnRhcmdldHMsXG4gICAgfSk7XG5cbiAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5lcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIG5vbWluYXRlIGFyZ3M6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBzdXBlci5mcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb24pO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIHRyYW5zYWN0aW9uIGlzIGEgYmF0Y2ggdHJhbnNhY3Rpb25cbiAgICBpZiAoKHRoaXMuX21ldGhvZD8ubmFtZSBhcyBzdHJpbmcpICE9PSAndXRpbGl0eS5iYXRjaEFsbCcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBUcmFuc2FjdGlvbiBUeXBlOiAke3RoaXMuX21ldGhvZD8ubmFtZX0uIEV4cGVjdGVkIHV0aWxpdHkuYmF0Y2hBbGxgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fbWV0aG9kKSB7XG4gICAgICBjb25zdCB0eE1ldGhvZCA9IHRoaXMuX21ldGhvZC5hcmdzIGFzIHVua25vd24gYXMgQmF0Y2hBcmdzO1xuXG4gICAgICBmb3IgKGNvbnN0IGNhbGwgb2YgdHhNZXRob2QuY2FsbHMpIHtcbiAgICAgICAgaWYgKGNhbGwubWV0aG9kID09PSAnc3Rha2luZy5ib25kJykge1xuICAgICAgICAgIGNvbnN0IGJvbmRBcmdzID0gY2FsbC5hcmdzIGFzIHVua25vd24gYXMgQm9uZEFyZ3M7XG4gICAgICAgICAgdGhpcy5hbW91bnQoYm9uZEFyZ3MudmFsdWUpO1xuICAgICAgICAgIHRoaXMuY29udHJvbGxlcih7IGFkZHJlc3M6IGJvbmRBcmdzLmNvbnRyb2xsZXIgfSk7XG4gICAgICAgICAgdGhpcy5wYXllZShib25kQXJncy5wYXllZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2FsbC5tZXRob2QgPT09ICdzdGFraW5nLm5vbWluYXRlJykge1xuICAgICAgICAgIGNvbnN0IG5vbWluYXRlQXJncyA9IGNhbGwuYXJncyBhcyB1bmtub3duIGFzIE5vbWluYXRlQXJncztcbiAgICAgICAgICB0aGlzLnZhbGlkYXRvcnMobm9taW5hdGVBcmdzLnRhcmdldHMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIudmFsaWRhdGVUcmFuc2FjdGlvbih0eCk7XG4gICAgdGhpcy52YWxpZGF0ZUZpZWxkcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoZSBidWlsZGVyIGZpZWxkc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZpZWxkcygpOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgYm90aCBib25kIGFuZCBub21pbmF0ZSBvcGVyYXRpb25zIGFyZSBpbmNsdWRlZFxuICAgIGlmICghdGhpcy5fYW1vdW50IHx8IHRoaXMuX3ZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0JhdGNoIHRyYW5zYWN0aW9uIG11c3QgaW5jbHVkZSBib3RoIGJvbmQgYW5kIG5vbWluYXRlIG9wZXJhdGlvbnMnKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gQmF0Y2hUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZSh7XG4gICAgICBhbW91bnQ6IHRoaXMuX2Ftb3VudCxcbiAgICAgIGNvbnRyb2xsZXI6IHRoaXMuX2NvbnRyb2xsZXIsXG4gICAgICBwYXllZTogdGhpcy5fcGF5ZWUsXG4gICAgICB2YWxpZGF0b3JzOiB0aGlzLl92YWxpZGF0b3JzLFxuICAgIH0pO1xuXG4gICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB0cmFuc2FjdGlvbjogJHt2YWxpZGF0aW9uUmVzdWx0LmVycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgdGVzdFZhbGlkYXRlRmllbGRzKCk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVGaWVsZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyB0ZXN0VmFsaWRhdGVCb25kQXJncyhhcmdzOiBCb25kQXJncyk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlQm9uZEFyZ3MoYXJncyk7XG4gIH1cblxuICBwdWJsaWMgdGVzdFZhbGlkYXRlTm9taW5hdGVBcmdzKGFyZ3M6IE5vbWluYXRlQXJncyk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlTm9taW5hdGVBcmdzKGFyZ3MpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { UnsignedTransaction, DecodedSigningPayload, DecodedSignedTx } from '@substrate/txwrapper-core';
3
+ import { TransactionType } from '@bitgo-beta/sdk-core';
4
+ import { TransactionBuilder, Transaction } from '@bitgo-beta/abstract-substrate';
5
+ export declare class BatchUnstakingBuilder extends TransactionBuilder {
6
+ protected _amount: string;
7
+ constructor(_coinConfig: Readonly<CoinConfig>);
8
+ /**
9
+ * Unbond tokens and chill (stop nominating validators)
10
+ *
11
+ * @returns {UnsignedTransaction} an unsigned Polyx transaction
12
+ */
13
+ protected buildTransaction(): UnsignedTransaction;
14
+ protected get transactionType(): TransactionType;
15
+ /**
16
+ * The amount to unstake.
17
+ *
18
+ * @param {string} amount
19
+ * @returns {BatchUnstakingBuilder} This unstake builder.
20
+ */
21
+ amount(amount: string): this;
22
+ /**
23
+ * Get the amount to unstake
24
+ */
25
+ getAmount(): string;
26
+ /** @inheritdoc */
27
+ validateDecodedTransaction(decodedTxn: DecodedSigningPayload | DecodedSignedTx): void;
28
+ /** @inheritdoc */
29
+ protected fromImplementation(rawTransaction: string): Transaction;
30
+ /** @inheritdoc */
31
+ validateTransaction(_: Transaction): void;
32
+ private validateFields;
33
+ /**
34
+ * Validates fields for testing
35
+ */
36
+ testValidateFields(): void;
37
+ }
38
+ //# sourceMappingURL=batchUnstakingBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchUnstakingBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/batchUnstakingBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACxG,OAAO,EAA2B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEhF,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIjF,qBAAa,qBAAsB,SAAQ,kBAAkB;IAC3D,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEd,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,IAAI,mBAAmB;IAuBjD,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB,kBAAkB;IAClB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,GAAG,eAAe,GAAG,IAAI;IAyCrF,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAkBjE,kBAAkB;IAClB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;IAKzC,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,kBAAkB,IAAI,IAAI;CAG3B"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BatchUnstakingBuilder = void 0;
7
+ const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
8
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
10
+ const abstract_substrate_1 = require("@bitgo-beta/abstract-substrate");
11
+ const txnSchema_1 = require("./txnSchema");
12
+ class BatchUnstakingBuilder extends abstract_substrate_1.TransactionBuilder {
13
+ constructor(_coinConfig) {
14
+ super(_coinConfig);
15
+ }
16
+ /**
17
+ * Unbond tokens and chill (stop nominating validators)
18
+ *
19
+ * @returns {UnsignedTransaction} an unsigned Polyx transaction
20
+ */
21
+ buildTransaction() {
22
+ const baseTxInfo = this.createBaseTxInfo();
23
+ const chillCall = txwrapper_polkadot_1.methods.staking.chill({}, baseTxInfo.baseTxInfo, baseTxInfo.options);
24
+ const unbondCall = txwrapper_polkadot_1.methods.staking.unbond({
25
+ value: this._amount,
26
+ }, baseTxInfo.baseTxInfo, baseTxInfo.options);
27
+ // Create batch all transaction (atomic execution)
28
+ return txwrapper_polkadot_1.methods.utility.batchAll({
29
+ calls: [chillCall.method, unbondCall.method],
30
+ }, baseTxInfo.baseTxInfo, baseTxInfo.options);
31
+ }
32
+ get transactionType() {
33
+ return sdk_core_1.TransactionType.Batch;
34
+ }
35
+ /**
36
+ * The amount to unstake.
37
+ *
38
+ * @param {string} amount
39
+ * @returns {BatchUnstakingBuilder} This unstake builder.
40
+ */
41
+ amount(amount) {
42
+ this.validateValue(new bignumber_js_1.default(amount));
43
+ this._amount = amount;
44
+ return this;
45
+ }
46
+ /**
47
+ * Get the amount to unstake
48
+ */
49
+ getAmount() {
50
+ return this._amount;
51
+ }
52
+ /** @inheritdoc */
53
+ validateDecodedTransaction(decodedTxn) {
54
+ const methodName = decodedTxn.method?.name;
55
+ if (methodName === 'utility.batchAll') {
56
+ const txMethod = decodedTxn.method.args;
57
+ const calls = txMethod.calls;
58
+ if (calls.length !== 2) {
59
+ throw new sdk_core_1.InvalidTransactionError(`Invalid batch unstaking transaction: expected 2 calls but got ${calls.length}`);
60
+ }
61
+ // Check that first call is chill
62
+ if (calls[0].method !== 'staking.chill') {
63
+ throw new sdk_core_1.InvalidTransactionError(`Invalid batch unstaking transaction: first call should be staking.chill but got ${calls[0].method}`);
64
+ }
65
+ // Check that second call is unbond
66
+ if (calls[1].method !== 'staking.unbond') {
67
+ throw new sdk_core_1.InvalidTransactionError(`Invalid batch unstaking transaction: second call should be staking.unbond but got ${calls[1].method}`);
68
+ }
69
+ // Validate unbond amount
70
+ const unbondArgs = calls[1].args;
71
+ const validationResult = txnSchema_1.BatchUnstakingTransactionSchema.validate({
72
+ value: unbondArgs.value,
73
+ });
74
+ if (validationResult.error) {
75
+ throw new sdk_core_1.InvalidTransactionError(`Invalid batch unstaking transaction: ${validationResult.error.message}`);
76
+ }
77
+ }
78
+ else {
79
+ throw new sdk_core_1.InvalidTransactionError(`Invalid transaction type: ${methodName}. Expected utility.batchAll`);
80
+ }
81
+ }
82
+ /** @inheritdoc */
83
+ fromImplementation(rawTransaction) {
84
+ const tx = super.fromImplementation(rawTransaction);
85
+ if (this._method && this._method.name === 'utility.batchAll') {
86
+ const txMethod = this._method.args;
87
+ const calls = txMethod.calls;
88
+ if (calls && calls.length === 2 && calls[1].method === 'staking.unbond') {
89
+ const unbondArgs = calls[1].args;
90
+ this.amount(unbondArgs.value);
91
+ }
92
+ }
93
+ else {
94
+ throw new sdk_core_1.InvalidTransactionError(`Invalid Transaction Type: ${this._method?.name}. Expected utility.batchAll`);
95
+ }
96
+ return tx;
97
+ }
98
+ /** @inheritdoc */
99
+ validateTransaction(_) {
100
+ super.validateTransaction(_);
101
+ this.validateFields(this._amount);
102
+ }
103
+ validateFields(value) {
104
+ const validationResult = txnSchema_1.BatchUnstakingTransactionSchema.validate({
105
+ value,
106
+ });
107
+ if (validationResult.error) {
108
+ throw new sdk_core_1.InvalidTransactionError(`Batch Unstaking Builder Transaction validation failed: ${validationResult.error.message}`);
109
+ }
110
+ }
111
+ /**
112
+ * Validates fields for testing
113
+ */
114
+ testValidateFields() {
115
+ this.validateFields(this._amount);
116
+ }
117
+ }
118
+ exports.BatchUnstakingBuilder = BatchUnstakingBuilder;
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hVbnN0YWtpbmdCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9iYXRjaFVuc3Rha2luZ0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0Esc0VBQXdEO0FBRXhELG1EQUFnRjtBQUNoRixnRUFBcUM7QUFDckMsdUVBQWlGO0FBRWpGLDJDQUE4RDtBQUU5RCxNQUFhLHFCQUFzQixTQUFRLHVDQUFrQjtJQUczRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGdCQUFnQjtRQUN4QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUUzQyxNQUFNLFNBQVMsR0FBRyw0QkFBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXZGLE1BQU0sVUFBVSxHQUFHLDRCQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDdkM7WUFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDcEIsRUFDRCxVQUFVLENBQUMsVUFBVSxFQUNyQixVQUFVLENBQUMsT0FBTyxDQUNuQixDQUFDO1FBRUYsa0RBQWtEO1FBQ2xELE9BQU8sNEJBQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUM3QjtZQUNFLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQztTQUM3QyxFQUNELFVBQVUsQ0FBQyxVQUFVLEVBQ3JCLFVBQVUsQ0FBQyxPQUFPLENBQ25CLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLE1BQWM7UUFD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LE9BQU8sRUFBRSxJQUFJLDZCQUE2QixDQUFDLENBQUM7UUFDbEgsQ0FBQztRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELGtCQUFrQjtJQUNsQixtQkFBbUIsQ0FBQyxDQUFjO1FBQ2hDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWE7UUFDbEMsTUFBTSxnQkFBZ0IsR0FBRywyQ0FBK0IsQ0FBQyxRQUFRLENBQUM7WUFDaEUsS0FBSztTQUNOLENBQUMsQ0FBQztRQUVILElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLGtDQUF1QixDQUMvQiwwREFBMEQsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUMzRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGtCQUFrQjtRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0Y7QUEvSUQsc0RBK0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgbWV0aG9kcyB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCB7IFVuc2lnbmVkVHJhbnNhY3Rpb24sIERlY29kZWRTaWduaW5nUGF5bG9hZCwgRGVjb2RlZFNpZ25lZFR4IH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItY29yZSc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyLCBUcmFuc2FjdGlvbiB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LXN1YnN0cmF0ZSc7XG5pbXBvcnQgeyBCYXRjaEFyZ3MgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEJhdGNoVW5zdGFraW5nVHJhbnNhY3Rpb25TY2hlbWEgfSBmcm9tICcuL3R4blNjaGVtYSc7XG5cbmV4cG9ydCBjbGFzcyBCYXRjaFVuc3Rha2luZ0J1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX2Ftb3VudDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmJvbmQgdG9rZW5zIGFuZCBjaGlsbCAoc3RvcCBub21pbmF0aW5nIHZhbGlkYXRvcnMpXG4gICAqXG4gICAqIEByZXR1cm5zIHtVbnNpZ25lZFRyYW5zYWN0aW9ufSBhbiB1bnNpZ25lZCBQb2x5eCB0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkVHJhbnNhY3Rpb24oKTogVW5zaWduZWRUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgYmFzZVR4SW5mbyA9IHRoaXMuY3JlYXRlQmFzZVR4SW5mbygpO1xuXG4gICAgY29uc3QgY2hpbGxDYWxsID0gbWV0aG9kcy5zdGFraW5nLmNoaWxsKHt9LCBiYXNlVHhJbmZvLmJhc2VUeEluZm8sIGJhc2VUeEluZm8ub3B0aW9ucyk7XG5cbiAgICBjb25zdCB1bmJvbmRDYWxsID0gbWV0aG9kcy5zdGFraW5nLnVuYm9uZChcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHRoaXMuX2Ftb3VudCxcbiAgICAgIH0sXG4gICAgICBiYXNlVHhJbmZvLmJhc2VUeEluZm8sXG4gICAgICBiYXNlVHhJbmZvLm9wdGlvbnNcbiAgICApO1xuXG4gICAgLy8gQ3JlYXRlIGJhdGNoIGFsbCB0cmFuc2FjdGlvbiAoYXRvbWljIGV4ZWN1dGlvbilcbiAgICByZXR1cm4gbWV0aG9kcy51dGlsaXR5LmJhdGNoQWxsKFxuICAgICAge1xuICAgICAgICBjYWxsczogW2NoaWxsQ2FsbC5tZXRob2QsIHVuYm9uZENhbGwubWV0aG9kXSxcbiAgICAgIH0sXG4gICAgICBiYXNlVHhJbmZvLmJhc2VUeEluZm8sXG4gICAgICBiYXNlVHhJbmZvLm9wdGlvbnNcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkJhdGNoO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgdG8gdW5zdGFrZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudFxuICAgKiBAcmV0dXJucyB7QmF0Y2hVbnN0YWtpbmdCdWlsZGVyfSBUaGlzIHVuc3Rha2UgYnVpbGRlci5cbiAgICovXG4gIGFtb3VudChhbW91bnQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKGFtb3VudCkpO1xuICAgIHRoaXMuX2Ftb3VudCA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGFtb3VudCB0byB1bnN0YWtlXG4gICAqL1xuICBnZXRBbW91bnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYW1vdW50O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKGRlY29kZWRUeG46IERlY29kZWRTaWduaW5nUGF5bG9hZCB8IERlY29kZWRTaWduZWRUeCk6IHZvaWQge1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBkZWNvZGVkVHhuLm1ldGhvZD8ubmFtZSBhcyBzdHJpbmc7XG5cbiAgICBpZiAobWV0aG9kTmFtZSA9PT0gJ3V0aWxpdHkuYmF0Y2hBbGwnKSB7XG4gICAgICBjb25zdCB0eE1ldGhvZCA9IGRlY29kZWRUeG4ubWV0aG9kLmFyZ3MgYXMgdW5rbm93biBhcyBCYXRjaEFyZ3M7XG4gICAgICBjb25zdCBjYWxscyA9IHR4TWV0aG9kLmNhbGxzO1xuXG4gICAgICBpZiAoY2FsbHMubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICBgSW52YWxpZCBiYXRjaCB1bnN0YWtpbmcgdHJhbnNhY3Rpb246IGV4cGVjdGVkIDIgY2FsbHMgYnV0IGdvdCAke2NhbGxzLmxlbmd0aH1gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIHRoYXQgZmlyc3QgY2FsbCBpcyBjaGlsbFxuICAgICAgaWYgKGNhbGxzWzBdLm1ldGhvZCAhPT0gJ3N0YWtpbmcuY2hpbGwnKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICBgSW52YWxpZCBiYXRjaCB1bnN0YWtpbmcgdHJhbnNhY3Rpb246IGZpcnN0IGNhbGwgc2hvdWxkIGJlIHN0YWtpbmcuY2hpbGwgYnV0IGdvdCAke2NhbGxzWzBdLm1ldGhvZH1gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIHRoYXQgc2Vjb25kIGNhbGwgaXMgdW5ib25kXG4gICAgICBpZiAoY2FsbHNbMV0ubWV0aG9kICE9PSAnc3Rha2luZy51bmJvbmQnKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICBgSW52YWxpZCBiYXRjaCB1bnN0YWtpbmcgdHJhbnNhY3Rpb246IHNlY29uZCBjYWxsIHNob3VsZCBiZSBzdGFraW5nLnVuYm9uZCBidXQgZ290ICR7Y2FsbHNbMV0ubWV0aG9kfWBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGUgdW5ib25kIGFtb3VudFxuICAgICAgY29uc3QgdW5ib25kQXJncyA9IGNhbGxzWzFdLmFyZ3MgYXMgeyB2YWx1ZTogc3RyaW5nIH07XG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gQmF0Y2hVbnN0YWtpbmdUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZSh7XG4gICAgICAgIHZhbHVlOiB1bmJvbmRBcmdzLnZhbHVlLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBiYXRjaCB1bnN0YWtpbmcgdHJhbnNhY3Rpb246ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgdHJhbnNhY3Rpb24gdHlwZTogJHttZXRob2ROYW1lfS4gRXhwZWN0ZWQgdXRpbGl0eS5iYXRjaEFsbGApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBzdXBlci5mcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb24pO1xuXG4gICAgaWYgKHRoaXMuX21ldGhvZCAmJiAodGhpcy5fbWV0aG9kLm5hbWUgYXMgc3RyaW5nKSA9PT0gJ3V0aWxpdHkuYmF0Y2hBbGwnKSB7XG4gICAgICBjb25zdCB0eE1ldGhvZCA9IHRoaXMuX21ldGhvZC5hcmdzIGFzIHVua25vd24gYXMgQmF0Y2hBcmdzO1xuICAgICAgY29uc3QgY2FsbHMgPSB0eE1ldGhvZC5jYWxscztcblxuICAgICAgaWYgKGNhbGxzICYmIGNhbGxzLmxlbmd0aCA9PT0gMiAmJiBjYWxsc1sxXS5tZXRob2QgPT09ICdzdGFraW5nLnVuYm9uZCcpIHtcbiAgICAgICAgY29uc3QgdW5ib25kQXJncyA9IGNhbGxzWzFdLmFyZ3MgYXMgeyB2YWx1ZTogc3RyaW5nIH07XG4gICAgICAgIHRoaXMuYW1vdW50KHVuYm9uZEFyZ3MudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgVHJhbnNhY3Rpb24gVHlwZTogJHt0aGlzLl9tZXRob2Q/Lm5hbWV9LiBFeHBlY3RlZCB1dGlsaXR5LmJhdGNoQWxsYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24oXzogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci52YWxpZGF0ZVRyYW5zYWN0aW9uKF8pO1xuICAgIHRoaXMudmFsaWRhdGVGaWVsZHModGhpcy5fYW1vdW50KTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVGaWVsZHModmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBCYXRjaFVuc3Rha2luZ1RyYW5zYWN0aW9uU2NoZW1hLnZhbGlkYXRlKHtcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuXG4gICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEJhdGNoIFVuc3Rha2luZyBCdWlsZGVyIFRyYW5zYWN0aW9uIHZhbGlkYXRpb24gZmFpbGVkOiAke3ZhbGlkYXRpb25SZXN1bHQuZXJyb3IubWVzc2FnZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgZmllbGRzIGZvciB0ZXN0aW5nXG4gICAqL1xuICB0ZXN0VmFsaWRhdGVGaWVsZHMoKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZUZpZWxkcyh0aGlzLl9hbW91bnQpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { TransactionBuilder, Transaction } from '@bitgo-beta/abstract-substrate';
2
+ import { DecodedSignedTx, DecodedSigningPayload, UnsignedTransaction } from '@substrate/txwrapper-core';
3
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
4
+ import { TransactionType } from '@bitgo-beta/sdk-core';
5
+ export declare class BondExtraBuilder extends TransactionBuilder {
6
+ protected _amount: string;
7
+ constructor(_coinConfig: Readonly<CoinConfig>);
8
+ protected get transactionType(): TransactionType;
9
+ /**
10
+ * Build the bondExtra transaction
11
+ */
12
+ protected buildTransaction(): UnsignedTransaction;
13
+ /**
14
+ * Set additional amount to stake
15
+ */
16
+ amount(amount: string): this;
17
+ /**
18
+ * Get the amount to stake
19
+ */
20
+ getAmount(): string;
21
+ /** @inheritdoc */
22
+ validateDecodedTransaction(decodedTxn: DecodedSigningPayload | DecodedSignedTx): void;
23
+ /** @inheritdoc */
24
+ protected fromImplementation(rawTransaction: string): Transaction;
25
+ /** @inheritdoc */
26
+ validateTransaction(tx: Transaction): void;
27
+ /**
28
+ * Validate the bondExtra fields
29
+ */
30
+ private validateFields;
31
+ /**
32
+ * Validate amount
33
+ */
34
+ validateAmount(amount: string): void;
35
+ }
36
+ //# sourceMappingURL=bondExtraBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bondExtraBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/bondExtraBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAExG,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAA2B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMhF,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEd,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;OAEG;IACH,SAAS,CAAC,gBAAgB,IAAI,mBAAmB;IAYjD;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB,kBAAkB;IAClB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,GAAG,eAAe,GAAG,IAAI;IAmBrF,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAcjE,kBAAkB;IAClB,mBAAmB,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAK1C;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAMrC"}