@bitgo/sdk-coin-celo 5.1.13 → 5.1.15

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 (45) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.json +8 -8
  3. package/LICENSE +0 -191
  4. package/dist/src/celo.d.ts +0 -17
  5. package/dist/src/celo.d.ts.map +0 -1
  6. package/dist/src/celo.js +0 -44
  7. package/dist/src/celoToken.d.ts +0 -34
  8. package/dist/src/celoToken.d.ts.map +0 -1
  9. package/dist/src/celoToken.js +0 -73
  10. package/dist/src/index.d.ts +0 -6
  11. package/dist/src/index.d.ts.map +0 -1
  12. package/dist/src/index.js +0 -22
  13. package/dist/src/lib/index.d.ts +0 -8
  14. package/dist/src/lib/index.d.ts.map +0 -1
  15. package/dist/src/lib/index.js +0 -50
  16. package/dist/src/lib/resources.d.ts +0 -10
  17. package/dist/src/lib/resources.d.ts.map +0 -1
  18. package/dist/src/lib/resources.js +0 -25
  19. package/dist/src/lib/stakingBuilder.d.ts +0 -91
  20. package/dist/src/lib/stakingBuilder.d.ts.map +0 -1
  21. package/dist/src/lib/stakingBuilder.js +0 -306
  22. package/dist/src/lib/stakingCall.d.ts +0 -7
  23. package/dist/src/lib/stakingCall.d.ts.map +0 -1
  24. package/dist/src/lib/stakingCall.js +0 -13
  25. package/dist/src/lib/testnetTransactionBuilder.d.ts +0 -15
  26. package/dist/src/lib/testnetTransactionBuilder.d.ts.map +0 -1
  27. package/dist/src/lib/testnetTransactionBuilder.js +0 -68
  28. package/dist/src/lib/transactionBuilder.d.ts +0 -86
  29. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  30. package/dist/src/lib/transactionBuilder.js +0 -222
  31. package/dist/src/lib/transferBuilder.d.ts +0 -19
  32. package/dist/src/lib/transferBuilder.d.ts.map +0 -1
  33. package/dist/src/lib/transferBuilder.js +0 -27
  34. package/dist/src/lib/types.d.ts +0 -50
  35. package/dist/src/lib/types.d.ts.map +0 -1
  36. package/dist/src/lib/types.js +0 -223
  37. package/dist/src/lib/utils.d.ts +0 -18
  38. package/dist/src/lib/utils.d.ts.map +0 -1
  39. package/dist/src/lib/utils.js +0 -113
  40. package/dist/src/register.d.ts +0 -3
  41. package/dist/src/register.d.ts.map +0 -1
  42. package/dist/src/register.js +0 -15
  43. package/dist/src/tcelo.d.ts +0 -13
  44. package/dist/src/tcelo.d.ts.map +0 -1
  45. package/dist/src/tcelo.js +0 -19
@@ -1,91 +0,0 @@
1
- import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
- import { StakingOperationTypes } from '@bitgo/sdk-core';
3
- import { StakingCall } from './stakingCall';
4
- export declare class StakingBuilder {
5
- private readonly DEFAULT_ADDRESS;
6
- private _amount;
7
- private _validatorGroup;
8
- private _lesser;
9
- private _greater;
10
- private _index;
11
- private _type;
12
- private _coinConfig;
13
- constructor(coinConfig: Readonly<CoinConfig>, serializedData?: string);
14
- type(type: StakingOperationTypes): this;
15
- amount(value: string): this;
16
- group(validatorGroup: string): this;
17
- lesser(lesser: string): this;
18
- greater(greater: string): this;
19
- index(index: number): this;
20
- build(): StakingCall;
21
- /**
22
- * Builds a lock gold operation sending the amount on the transaction value field
23
- *
24
- * @returns {StakingCall} a lock gold operation using the LockedGold contract
25
- */
26
- private buildLockStaking;
27
- /**
28
- * Builds an unlock gold operation sending the amount encoded on the data field
29
- *
30
- * params
31
- * amount: amount of locked gold to be unlocked
32
- *
33
- * @returns {StakingCall} an unlock gold operation using the LockedGold contract
34
- */
35
- private buildUnlockStaking;
36
- /**
37
- * Builds a vote operation that uses locked gold to add pending votes for a validator group.
38
- *
39
- * params
40
- * validatorGroup: group to vote for
41
- * amount: amount of votes (locked gold) for the group
42
- * lesser: validator group that has less votes than the validatorGroup
43
- * greater: validator group that has more vots than the validatorGroup
44
- *
45
- * @returns {StakingCall} an vote operation using the Election contract
46
- */
47
- private buildVoteStaking;
48
- /**
49
- * Builds an unvote operation to revoke active votes for a validator group.
50
- *
51
- * params
52
- * validatorGroup: group whose votes will be revoked
53
- * amount: amount of votes (locked gold) that will be revoked
54
- * lesser: validator group that has less votes than the validatorGroup
55
- * greater: validator group that has more vots than the validatorGroup
56
- * index: index of the validatorGroup on the list of groups the address has voted for
57
- *
58
- * @returns {StakingCall} an vote operation using the Election contract
59
- */
60
- private buildUnvoteStaking;
61
- /**
62
- * Builds an activate vote operation to change all the votes casted for a validator
63
- * from 'pending' to 'active'
64
- *
65
- * params
66
- * validatorGroup: group whose votes will be activated
67
- *
68
- * @returns {StakingCall} an activate votes operation
69
- */
70
- private buildActivateStaking;
71
- /**
72
- * Builds a withdraw operation for locked gold that has been unlocked
73
- * after the unlocking period has passed.
74
- *
75
- * params
76
- * index: index of the unlock operation whose unlocking period has passed.
77
- *
78
- * @returns {StakingCall} an activate votes operation
79
- */
80
- private buildWithdrawStaking;
81
- private validateMandatoryFields;
82
- private validateElectionFields;
83
- private validateIndex;
84
- private validateAmount;
85
- private validateUnvoteFields;
86
- private validateGroup;
87
- private decodeStakingData;
88
- private validateDecodedDataLength;
89
- private classifyStakingType;
90
- }
91
- //# sourceMappingURL=stakingBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stakingBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/stakingBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQxD,OAAO,EAML,qBAAqB,EAKtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgD;IAChF,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,WAAW,CAAuB;gBAE9B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM;IASrE,IAAI,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAKvC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ3B,KAAK,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAQnC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQ9B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAY1B,KAAK,IAAI,WAAW;IA0BpB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,iBAAiB;IA6CzB,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,mBAAmB;CAiB5B"}
@@ -1,306 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.StakingBuilder = void 0;
37
- const ethUtil = __importStar(require("ethereumjs-util"));
38
- const sdk_coin_eth_1 = require("@bitgo/sdk-coin-eth");
39
- const sdk_core_1 = require("@bitgo/sdk-core");
40
- const stakingCall_1 = require("./stakingCall");
41
- class StakingBuilder {
42
- constructor(coinConfig, serializedData) {
43
- this.DEFAULT_ADDRESS = '0x0000000000000000000000000000000000000000';
44
- this._lesser = this.DEFAULT_ADDRESS;
45
- this._greater = this.DEFAULT_ADDRESS;
46
- this._coinConfig = coinConfig;
47
- if (serializedData) {
48
- this.decodeStakingData(serializedData);
49
- }
50
- }
51
- // region Staking properties
52
- type(type) {
53
- this._type = type;
54
- return this;
55
- }
56
- amount(value) {
57
- if (!(0, sdk_coin_eth_1.isValidAmount)(value)) {
58
- throw new sdk_core_1.InvalidParameterValueError('Invalid value for stake transaction');
59
- }
60
- this._amount = value;
61
- return this;
62
- }
63
- group(validatorGroup) {
64
- if (!(0, sdk_coin_eth_1.isValidEthAddress)(validatorGroup)) {
65
- throw new sdk_core_1.InvalidParameterValueError('Invalid validator group address');
66
- }
67
- this._validatorGroup = validatorGroup;
68
- return this;
69
- }
70
- lesser(lesser) {
71
- if (!(0, sdk_coin_eth_1.isValidEthAddress)(lesser)) {
72
- throw new sdk_core_1.InvalidParameterValueError('Invalid address for lesser');
73
- }
74
- this._lesser = lesser;
75
- return this;
76
- }
77
- greater(greater) {
78
- if (!(0, sdk_coin_eth_1.isValidEthAddress)(greater)) {
79
- throw new sdk_core_1.InvalidParameterValueError('Invalid address for greater');
80
- }
81
- this._greater = greater;
82
- return this;
83
- }
84
- index(index) {
85
- if (index < 0) {
86
- throw new sdk_core_1.InvalidParameterValueError('Invalid index for staking transaction');
87
- }
88
- this._index = index;
89
- return this;
90
- }
91
- // endregion
92
- // region Staking building
93
- build() {
94
- this.validateMandatoryFields();
95
- switch (this._type) {
96
- case sdk_core_1.StakingOperationTypes.LOCK:
97
- this.validateAmount();
98
- return this.buildLockStaking();
99
- case sdk_core_1.StakingOperationTypes.VOTE:
100
- this.validateElectionFields();
101
- return this.buildVoteStaking();
102
- case sdk_core_1.StakingOperationTypes.ACTIVATE:
103
- this.validateGroup();
104
- return this.buildActivateStaking();
105
- case sdk_core_1.StakingOperationTypes.UNVOTE:
106
- this.validateUnvoteFields();
107
- return this.buildUnvoteStaking();
108
- case sdk_core_1.StakingOperationTypes.UNLOCK:
109
- this.validateAmount();
110
- return this.buildUnlockStaking();
111
- case sdk_core_1.StakingOperationTypes.WITHDRAW:
112
- this.validateIndex();
113
- return this.buildWithdrawStaking();
114
- default:
115
- throw new sdk_core_1.InvalidTransactionError('Invalid staking operation: ' + this._type);
116
- }
117
- }
118
- /**
119
- * Builds a lock gold operation sending the amount on the transaction value field
120
- *
121
- * @returns {StakingCall} a lock gold operation using the LockedGold contract
122
- */
123
- buildLockStaking() {
124
- const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
125
- return new stakingCall_1.StakingCall(this._amount, operation.contractAddress, operation.methodId, operation.types, []);
126
- }
127
- /**
128
- * Builds an unlock gold operation sending the amount encoded on the data field
129
- *
130
- * params
131
- * amount: amount of locked gold to be unlocked
132
- *
133
- * @returns {StakingCall} an unlock gold operation using the LockedGold contract
134
- */
135
- buildUnlockStaking() {
136
- const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
137
- const params = [this._amount];
138
- return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
139
- }
140
- /**
141
- * Builds a vote operation that uses locked gold to add pending votes for a validator group.
142
- *
143
- * params
144
- * validatorGroup: group to vote for
145
- * amount: amount of votes (locked gold) for the group
146
- * lesser: validator group that has less votes than the validatorGroup
147
- * greater: validator group that has more vots than the validatorGroup
148
- *
149
- * @returns {StakingCall} an vote operation using the Election contract
150
- */
151
- buildVoteStaking() {
152
- const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
153
- const params = [this._validatorGroup, this._amount, this._lesser, this._greater];
154
- return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
155
- }
156
- /**
157
- * Builds an unvote operation to revoke active votes for a validator group.
158
- *
159
- * params
160
- * validatorGroup: group whose votes will be revoked
161
- * amount: amount of votes (locked gold) that will be revoked
162
- * lesser: validator group that has less votes than the validatorGroup
163
- * greater: validator group that has more vots than the validatorGroup
164
- * index: index of the validatorGroup on the list of groups the address has voted for
165
- *
166
- * @returns {StakingCall} an vote operation using the Election contract
167
- */
168
- buildUnvoteStaking() {
169
- const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
170
- const params = [this._validatorGroup, this._amount, this._lesser, this._greater, this._index.toString()];
171
- return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
172
- }
173
- /**
174
- * Builds an activate vote operation to change all the votes casted for a validator
175
- * from 'pending' to 'active'
176
- *
177
- * params
178
- * validatorGroup: group whose votes will be activated
179
- *
180
- * @returns {StakingCall} an activate votes operation
181
- */
182
- buildActivateStaking() {
183
- const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
184
- const params = [this._validatorGroup];
185
- return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
186
- }
187
- /**
188
- * Builds a withdraw operation for locked gold that has been unlocked
189
- * after the unlocking period has passed.
190
- *
191
- * params
192
- * index: index of the unlock operation whose unlocking period has passed.
193
- *
194
- * @returns {StakingCall} an activate votes operation
195
- */
196
- buildWithdrawStaking() {
197
- const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
198
- const params = [this._index.toString()];
199
- return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
200
- }
201
- // endregion
202
- // region Validation methods
203
- validateMandatoryFields() {
204
- if (!(this._type !== undefined && this._coinConfig)) {
205
- throw new sdk_core_1.BuildTransactionError('Missing staking mandatory fields. Type and coin are required');
206
- }
207
- }
208
- validateElectionFields() {
209
- this.validateGroup();
210
- this.validateAmount();
211
- if (this._lesser === this._greater) {
212
- throw new sdk_core_1.BuildTransactionError('Greater and lesser values should not be the same');
213
- }
214
- }
215
- validateIndex() {
216
- if (this._index === undefined) {
217
- throw new sdk_core_1.BuildTransactionError('Missing index for staking transaction');
218
- }
219
- }
220
- validateAmount() {
221
- if (this._amount === undefined) {
222
- throw new sdk_core_1.BuildTransactionError('Missing amount for staking transaction');
223
- }
224
- }
225
- validateUnvoteFields() {
226
- this.validateElectionFields();
227
- this.validateIndex();
228
- }
229
- validateGroup() {
230
- if (!this._validatorGroup) {
231
- throw new sdk_core_1.BuildTransactionError('Missing validator group for staking transaction');
232
- }
233
- }
234
- // endregion
235
- // region Deserialization methods
236
- decodeStakingData(data) {
237
- this.classifyStakingType(data);
238
- const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
239
- const decoded = (0, sdk_coin_eth_1.getRawDecoded)(operation.types, (0, sdk_coin_eth_1.getBufferedByteCode)(operation.methodId, data));
240
- switch (this._type) {
241
- case sdk_core_1.StakingOperationTypes.VOTE:
242
- this.validateDecodedDataLength(decoded.length, 4, data);
243
- const [groupToVote, amount, lesser, greater] = decoded;
244
- this._amount = ethUtil.bufferToHex(amount);
245
- this._validatorGroup = ethUtil.addHexPrefix(groupToVote);
246
- this._lesser = ethUtil.addHexPrefix(lesser);
247
- this._greater = ethUtil.addHexPrefix(greater);
248
- break;
249
- case sdk_core_1.StakingOperationTypes.UNVOTE:
250
- this.validateDecodedDataLength(decoded.length, 5, data);
251
- const [groupToUnvote, amountUnvote, lesserUnvote, greaterUnvote, indexUnvote] = decoded;
252
- this._validatorGroup = ethUtil.addHexPrefix(groupToUnvote);
253
- this._amount = ethUtil.bufferToHex(amountUnvote);
254
- this._lesser = ethUtil.addHexPrefix(lesserUnvote);
255
- this._greater = ethUtil.addHexPrefix(greaterUnvote);
256
- this._index = (0, sdk_coin_eth_1.hexStringToNumber)(ethUtil.bufferToHex(indexUnvote));
257
- break;
258
- case sdk_core_1.StakingOperationTypes.ACTIVATE:
259
- this.validateDecodedDataLength(decoded.length, 1, data);
260
- const [groupToActivate] = decoded;
261
- this._validatorGroup = ethUtil.addHexPrefix(groupToActivate);
262
- break;
263
- case sdk_core_1.StakingOperationTypes.UNLOCK:
264
- if (decoded.length !== 1) {
265
- throw new sdk_core_1.BuildTransactionError(`Invalid unlock decoded data: ${data}`);
266
- }
267
- const [decodedAmount] = decoded;
268
- this._amount = ethUtil.bufferToHex(decodedAmount);
269
- break;
270
- case sdk_core_1.StakingOperationTypes.WITHDRAW:
271
- this.validateDecodedDataLength(decoded.length, 1, data);
272
- const [index] = decoded;
273
- this._index = (0, sdk_coin_eth_1.hexStringToNumber)(ethUtil.bufferToHex(index));
274
- break;
275
- default:
276
- throw new sdk_core_1.BuildTransactionError(`Invalid staking data: ${this._type}`);
277
- }
278
- }
279
- validateDecodedDataLength(actual, expected, data) {
280
- if (actual !== expected) {
281
- throw new sdk_core_1.BuildTransactionError(`Invalid staking decoded data: ${data}`);
282
- }
283
- }
284
- classifyStakingType(data) {
285
- if (data.startsWith(sdk_core_1.VoteMethodId)) {
286
- this._type = sdk_core_1.StakingOperationTypes.VOTE;
287
- }
288
- else if (data.startsWith(sdk_core_1.UnvoteMethodId)) {
289
- this._type = sdk_core_1.StakingOperationTypes.UNVOTE;
290
- }
291
- else if (data.startsWith(sdk_core_1.ActivateMethodId)) {
292
- this._type = sdk_core_1.StakingOperationTypes.ACTIVATE;
293
- }
294
- else if (data.startsWith(sdk_core_1.UnlockMethodId)) {
295
- this._type = sdk_core_1.StakingOperationTypes.UNLOCK;
296
- }
297
- else if (data.startsWith(sdk_core_1.WithdrawMethodId)) {
298
- this._type = sdk_core_1.StakingOperationTypes.WITHDRAW;
299
- }
300
- else {
301
- throw new sdk_core_1.BuildTransactionError(`Invalid staking bytecode: ${data}`);
302
- }
303
- }
304
- }
305
- exports.StakingBuilder = StakingBuilder;
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ0J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3N0YWtpbmdCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlEQUEyQztBQUUzQyxzREFNNkI7QUFDN0IsOENBV3lCO0FBQ3pCLCtDQUE0QztBQUU1QyxNQUFhLGNBQWM7SUFVekIsWUFBWSxVQUFnQyxFQUFFLGNBQXVCO1FBVHBELG9CQUFlLEdBQUcsNENBQTRDLENBQUM7UUFHeEUsWUFBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDL0IsYUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFNdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCw0QkFBNEI7SUFFNUIsSUFBSSxDQUFDLElBQTJCO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxJQUFBLDRCQUFhLEVBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUkscUNBQTBCLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQXNCO1FBQzFCLElBQUksQ0FBQyxJQUFBLGdDQUFpQixFQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLHFDQUEwQixDQUFDLGlDQUFpQyxDQUFDLENBQUM7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cnQgKiBhcyBldGhVdGlsIGZyb20gJ2V0aGVyZXVtanMtdXRpbCc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHtcbiAgaXNWYWxpZEFtb3VudCxcbiAgaXNWYWxpZEV0aEFkZHJlc3MsXG4gIGdldFJhd0RlY29kZWQsXG4gIGdldEJ1ZmZlcmVkQnl0ZUNvZGUsXG4gIGhleFN0cmluZ1RvTnVtYmVyLFxufSBmcm9tICdAYml0Z28vc2RrLWNvaW4tZXRoJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlTWV0aG9kSWQsXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgZ2V0T3BlcmF0aW9uQ29uZmlnLFxuICBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcixcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFN0YWtpbmdPcGVyYXRpb25UeXBlcyxcbiAgVW5sb2NrTWV0aG9kSWQsXG4gIFVudm90ZU1ldGhvZElkLFxuICBWb3RlTWV0aG9kSWQsXG4gIFdpdGhkcmF3TWV0aG9kSWQsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBTdGFraW5nQ2FsbCB9IGZyb20gJy4vc3Rha2luZ0NhbGwnO1xuXG5leHBvcnQgY2xhc3MgU3Rha2luZ0J1aWxkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfQUREUkVTUyA9ICcweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnO1xuICBwcml2YXRlIF9hbW91bnQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfdmFsaWRhdG9yR3JvdXA6IHN0cmluZztcbiAgcHJpdmF0ZSBfbGVzc2VyID0gdGhpcy5ERUZBVUxUX0FERFJFU1M7XG4gIHByaXZhdGUgX2dyZWF0ZXIgPSB0aGlzLkRFRkFVTFRfQUREUkVTUztcbiAgcHJpdmF0ZSBfaW5kZXg6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdHlwZTogU3Rha2luZ09wZXJhdGlvblR5cGVzO1xuICBwcml2YXRlIF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPjtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPiwgc2VyaWFsaXplZERhdGE/OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb2luQ29uZmlnID0gY29pbkNvbmZpZztcbiAgICBpZiAoc2VyaWFsaXplZERhdGEpIHtcbiAgICAgIHRoaXMuZGVjb2RlU3Rha2luZ0RhdGEoc2VyaWFsaXplZERhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJlZ2lvbiBTdGFraW5nIHByb3BlcnRpZXNcblxuICB0eXBlKHR5cGU6IFN0YWtpbmdPcGVyYXRpb25UeXBlcyk6IHRoaXMge1xuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYW1vdW50KHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRBbW91bnQodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgdmFsdWUgZm9yIHN0YWtlIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHRoaXMuX2Ftb3VudCA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ3JvdXAodmFsaWRhdG9yR3JvdXA6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZEV0aEFkZHJlc3ModmFsaWRhdG9yR3JvdXApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgdmFsaWRhdG9yIGdyb3VwIGFkZHJlc3MnKTtcbiAgICB9XG4gICAgdGhpcy5fdmFsaWRhdG9yR3JvdXAgPSB2YWxpZGF0b3JHcm91cDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxlc3NlcihsZXNzZXI6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZEV0aEFkZHJlc3MobGVzc2VyKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGFkZHJlc3MgZm9yIGxlc3NlcicpO1xuICAgIH1cbiAgICB0aGlzLl9sZXNzZXIgPSBsZXNzZXI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBncmVhdGVyKGdyZWF0ZXI6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZEV0aEFkZHJlc3MoZ3JlYXRlcikpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBhZGRyZXNzIGZvciBncmVhdGVyJyk7XG4gICAgfVxuICAgIHRoaXMuX2dyZWF0ZXIgPSBncmVhdGVyO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaW5kZXgoaW5kZXg6IG51bWJlcik6IHRoaXMge1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBpbmRleCBmb3Igc3Rha2luZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICB0aGlzLl9pbmRleCA9IGluZGV4O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFN0YWtpbmcgYnVpbGRpbmdcblxuICBidWlsZCgpOiBTdGFraW5nQ2FsbCB7XG4gICAgdGhpcy52YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpO1xuICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuTE9DSzpcbiAgICAgICAgdGhpcy52YWxpZGF0ZUFtb3VudCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZExvY2tTdGFraW5nKCk7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5WT1RFOlxuICAgICAgICB0aGlzLnZhbGlkYXRlRWxlY3Rpb25GaWVsZHMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRWb3RlU3Rha2luZygpO1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuQUNUSVZBVEU6XG4gICAgICAgIHRoaXMudmFsaWRhdGVHcm91cCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEFjdGl2YXRlU3Rha2luZygpO1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuVU5WT1RFOlxuICAgICAgICB0aGlzLnZhbGlkYXRlVW52b3RlRmllbGRzKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkVW52b3RlU3Rha2luZygpO1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuVU5MT0NLOlxuICAgICAgICB0aGlzLnZhbGlkYXRlQW1vdW50KCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkVW5sb2NrU3Rha2luZygpO1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuV0lUSERSQVc6XG4gICAgICAgIHRoaXMudmFsaWRhdGVJbmRleCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFdpdGhkcmF3U3Rha2luZygpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHN0YWtpbmcgb3BlcmF0aW9uOiAnICsgdGhpcy5fdHlwZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIGxvY2sgZ29sZCBvcGVyYXRpb24gc2VuZGluZyB0aGUgYW1vdW50IG9uIHRoZSB0cmFuc2FjdGlvbiB2YWx1ZSBmaWVsZFxuICAgKlxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0NhbGx9IGEgbG9jayBnb2xkIG9wZXJhdGlvbiB1c2luZyB0aGUgTG9ja2VkR29sZCBjb250cmFjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZExvY2tTdGFraW5nKCk6IFN0YWtpbmdDYWxsIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRPcGVyYXRpb25Db25maWcodGhpcy5fdHlwZSwgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICAgIHJldHVybiBuZXcgU3Rha2luZ0NhbGwodGhpcy5fYW1vdW50LCBvcGVyYXRpb24uY29udHJhY3RBZGRyZXNzLCBvcGVyYXRpb24ubWV0aG9kSWQsIG9wZXJhdGlvbi50eXBlcywgW10pO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhbiB1bmxvY2sgZ29sZCBvcGVyYXRpb24gc2VuZGluZyB0aGUgYW1vdW50IGVuY29kZWQgb24gdGhlIGRhdGEgZmllbGRcbiAgICpcbiAgICogcGFyYW1zXG4gICAqIGFtb3VudDogYW1vdW50IG9mIGxvY2tlZCBnb2xkIHRvIGJlIHVubG9ja2VkXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQ2FsbH0gYW4gdW5sb2NrIGdvbGQgb3BlcmF0aW9uIHVzaW5nIHRoZSBMb2NrZWRHb2xkIGNvbnRyYWN0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkVW5sb2NrU3Rha2luZygpOiBTdGFraW5nQ2FsbCB7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0T3BlcmF0aW9uQ29uZmlnKHRoaXMuX3R5cGUsIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgICBjb25zdCBwYXJhbXMgPSBbdGhpcy5fYW1vdW50XTtcbiAgICByZXR1cm4gbmV3IFN0YWtpbmdDYWxsKCcwJywgb3BlcmF0aW9uLmNvbnRyYWN0QWRkcmVzcywgb3BlcmF0aW9uLm1ldGhvZElkLCBvcGVyYXRpb24udHlwZXMsIHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgdm90ZSBvcGVyYXRpb24gdGhhdCB1c2VzIGxvY2tlZCBnb2xkIHRvIGFkZCBwZW5kaW5nIHZvdGVzIGZvciBhIHZhbGlkYXRvciBncm91cC5cbiAgICpcbiAgICogcGFyYW1zXG4gICAqIHZhbGlkYXRvckdyb3VwOiBncm91cCB0byB2b3RlIGZvclxuICAgKiBhbW91bnQ6IGFtb3VudCBvZiB2b3RlcyAobG9ja2VkIGdvbGQpIGZvciB0aGUgZ3JvdXBcbiAgICogbGVzc2VyOiB2YWxpZGF0b3IgZ3JvdXAgdGhhdCBoYXMgbGVzcyB2b3RlcyB0aGFuIHRoZSB2YWxpZGF0b3JHcm91cFxuICAgKiBncmVhdGVyOiB2YWxpZGF0b3IgZ3JvdXAgdGhhdCBoYXMgbW9yZSB2b3RzIHRoYW4gdGhlIHZhbGlkYXRvckdyb3VwXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQ2FsbH0gYW4gdm90ZSBvcGVyYXRpb24gdXNpbmcgdGhlIEVsZWN0aW9uIGNvbnRyYWN0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkVm90ZVN0YWtpbmcoKTogU3Rha2luZ0NhbGwge1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE9wZXJhdGlvbkNvbmZpZyh0aGlzLl90eXBlLCB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgY29uc3QgcGFyYW1zID0gW3RoaXMuX3ZhbGlkYXRvckdyb3VwLCB0aGlzLl9hbW91bnQsIHRoaXMuX2xlc3NlciwgdGhpcy5fZ3JlYXRlcl07XG4gICAgcmV0dXJuIG5ldyBTdGFraW5nQ2FsbCgnMCcsIG9wZXJhdGlvbi5jb250cmFjdEFkZHJlc3MsIG9wZXJhdGlvbi5tZXRob2RJZCwgb3BlcmF0aW9uLnR5cGVzLCBwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhbiB1bnZvdGUgb3BlcmF0aW9uIHRvIHJldm9rZSBhY3RpdmUgdm90ZXMgZm9yIGEgdmFsaWRhdG9yIGdyb3VwLlxuICAgKlxuICAgKiBwYXJhbXNcbiAgICogdmFsaWRhdG9yR3JvdXA6IGdyb3VwIHdob3NlIHZvdGVzIHdpbGwgYmUgcmV2b2tlZFxuICAgKiBhbW91bnQ6IGFtb3VudCBvZiB2b3RlcyAobG9ja2VkIGdvbGQpIHRoYXQgd2lsbCBiZSByZXZva2VkXG4gICAqIGxlc3NlcjogdmFsaWRhdG9yIGdyb3VwIHRoYXQgaGFzIGxlc3Mgdm90ZXMgdGhhbiB0aGUgdmFsaWRhdG9yR3JvdXBcbiAgICogZ3JlYXRlcjogdmFsaWRhdG9yIGdyb3VwIHRoYXQgaGFzIG1vcmUgdm90cyB0aGFuIHRoZSB2YWxpZGF0b3JHcm91cFxuICAgKiBpbmRleDogaW5kZXggb2YgdGhlIHZhbGlkYXRvckdyb3VwIG9uIHRoZSBsaXN0IG9mIGdyb3VwcyB0aGUgYWRkcmVzcyBoYXMgdm90ZWQgZm9yXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQ2FsbH0gYW4gdm90ZSBvcGVyYXRpb24gdXNpbmcgdGhlIEVsZWN0aW9uIGNvbnRyYWN0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkVW52b3RlU3Rha2luZygpOiBTdGFraW5nQ2FsbCB7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0T3BlcmF0aW9uQ29uZmlnKHRoaXMuX3R5cGUsIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgICBjb25zdCBwYXJhbXMgPSBbdGhpcy5fdmFsaWRhdG9yR3JvdXAsIHRoaXMuX2Ftb3VudCwgdGhpcy5fbGVzc2VyLCB0aGlzLl9ncmVhdGVyLCB0aGlzLl9pbmRleC50b1N0cmluZygpXTtcbiAgICByZXR1cm4gbmV3IFN0YWtpbmdDYWxsKCcwJywgb3BlcmF0aW9uLmNvbnRyYWN0QWRkcmVzcywgb3BlcmF0aW9uLm1ldGhvZElkLCBvcGVyYXRpb24udHlwZXMsIHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGFuIGFjdGl2YXRlIHZvdGUgb3BlcmF0aW9uIHRvIGNoYW5nZSBhbGwgdGhlIHZvdGVzIGNhc3RlZCBmb3IgYSB2YWxpZGF0b3JcbiAgICogZnJvbSAncGVuZGluZycgdG8gJ2FjdGl2ZSdcbiAgICpcbiAgICogcGFyYW1zXG4gICAqIHZhbGlkYXRvckdyb3VwOiBncm91cCB3aG9zZSB2b3RlcyB3aWxsIGJlIGFjdGl2YXRlZFxuICAgKlxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0NhbGx9IGFuIGFjdGl2YXRlIHZvdGVzIG9wZXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEFjdGl2YXRlU3Rha2luZygpOiBTdGFraW5nQ2FsbCB7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0T3BlcmF0aW9uQ29uZmlnKHRoaXMuX3R5cGUsIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgICBjb25zdCBwYXJhbXMgPSBbdGhpcy5fdmFsaWRhdG9yR3JvdXBdO1xuICAgIHJldHVybiBuZXcgU3Rha2luZ0NhbGwoJzAnLCBvcGVyYXRpb24uY29udHJhY3RBZGRyZXNzLCBvcGVyYXRpb24ubWV0aG9kSWQsIG9wZXJhdGlvbi50eXBlcywgcGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSB3aXRoZHJhdyBvcGVyYXRpb24gZm9yIGxvY2tlZCBnb2xkIHRoYXQgaGFzIGJlZW4gdW5sb2NrZWRcbiAgICogYWZ0ZXIgdGhlIHVubG9ja2luZyBwZXJpb2QgaGFzIHBhc3NlZC5cbiAgICpcbiAgICogcGFyYW1zXG4gICAqIGluZGV4OiBpbmRleCBvZiB0aGUgdW5sb2NrIG9wZXJhdGlvbiB3aG9zZSB1bmxvY2tpbmcgcGVyaW9kIGhhcyBwYXNzZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQ2FsbH0gYW4gYWN0aXZhdGUgdm90ZXMgb3BlcmF0aW9uXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkV2l0aGRyYXdTdGFraW5nKCk6IFN0YWtpbmdDYWxsIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRPcGVyYXRpb25Db25maWcodGhpcy5fdHlwZSwgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICAgIGNvbnN0IHBhcmFtcyA9IFt0aGlzLl9pbmRleC50b1N0cmluZygpXTtcbiAgICByZXR1cm4gbmV3IFN0YWtpbmdDYWxsKCcwJywgb3BlcmF0aW9uLmNvbnRyYWN0QWRkcmVzcywgb3BlcmF0aW9uLm1ldGhvZElkLCBvcGVyYXRpb24udHlwZXMsIHBhcmFtcyk7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gVmFsaWRhdGlvbiBtZXRob2RzXG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpOiB2b2lkIHtcbiAgICBpZiAoISh0aGlzLl90eXBlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fY29pbkNvbmZpZykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3Npbmcgc3Rha2luZyBtYW5kYXRvcnkgZmllbGRzLiBUeXBlIGFuZCBjb2luIGFyZSByZXF1aXJlZCcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVFbGVjdGlvbkZpZWxkcygpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlR3JvdXAoKTtcbiAgICB0aGlzLnZhbGlkYXRlQW1vdW50KCk7XG4gICAgaWYgKHRoaXMuX2xlc3NlciA9PT0gdGhpcy5fZ3JlYXRlcikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignR3JlYXRlciBhbmQgbGVzc2VyIHZhbHVlcyBzaG91bGQgbm90IGJlIHRoZSBzYW1lJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUluZGV4KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIGluZGV4IGZvciBzdGFraW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFtb3VudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fYW1vdW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgYW1vdW50IGZvciBzdGFraW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVVudm90ZUZpZWxkcygpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlRWxlY3Rpb25GaWVsZHMoKTtcbiAgICB0aGlzLnZhbGlkYXRlSW5kZXgoKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVHcm91cCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3ZhbGlkYXRvckdyb3VwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIHZhbGlkYXRvciBncm91cCBmb3Igc3Rha2luZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBEZXNlcmlhbGl6YXRpb24gbWV0aG9kc1xuICBwcml2YXRlIGRlY29kZVN0YWtpbmdEYXRhKGRhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2xhc3NpZnlTdGFraW5nVHlwZShkYXRhKTtcblxuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE9wZXJhdGlvbkNvbmZpZyh0aGlzLl90eXBlLCB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgY29uc3QgZGVjb2RlZCA9IGdldFJhd0RlY29kZWQob3BlcmF0aW9uLnR5cGVzLCBnZXRCdWZmZXJlZEJ5dGVDb2RlKG9wZXJhdGlvbi5tZXRob2RJZCwgZGF0YSkpO1xuICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuVk9URTpcbiAgICAgICAgdGhpcy52YWxpZGF0ZURlY29kZWREYXRhTGVuZ3RoKGRlY29kZWQubGVuZ3RoLCA0LCBkYXRhKTtcbiAgICAgICAgY29uc3QgW2dyb3VwVG9Wb3RlLCBhbW91bnQsIGxlc3NlciwgZ3JlYXRlcl0gPSBkZWNvZGVkO1xuICAgICAgICB0aGlzLl9hbW91bnQgPSBldGhVdGlsLmJ1ZmZlclRvSGV4KGFtb3VudCBhcyBCdWZmZXIpO1xuICAgICAgICB0aGlzLl92YWxpZGF0b3JHcm91cCA9IGV0aFV0aWwuYWRkSGV4UHJlZml4KGdyb3VwVG9Wb3RlIGFzIHN0cmluZyk7XG4gICAgICAgIHRoaXMuX2xlc3NlciA9IGV0aFV0aWwuYWRkSGV4UHJlZml4KGxlc3NlciBhcyBzdHJpbmcpO1xuICAgICAgICB0aGlzLl9ncmVhdGVyID0gZXRoVXRpbC5hZGRIZXhQcmVmaXgoZ3JlYXRlciBhcyBzdHJpbmcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU3Rha2luZ09wZXJhdGlvblR5cGVzLlVOVk9URTpcbiAgICAgICAgdGhpcy52YWxpZGF0ZURlY29kZWREYXRhTGVuZ3RoKGRlY29kZWQubGVuZ3RoLCA1LCBkYXRhKTtcbiAgICAgICAgY29uc3QgW2dyb3VwVG9VbnZvdGUsIGFtb3VudFVudm90ZSwgbGVzc2VyVW52b3RlLCBncmVhdGVyVW52b3RlLCBpbmRleFVudm90ZV0gPSBkZWNvZGVkO1xuICAgICAgICB0aGlzLl92YWxpZGF0b3JHcm91cCA9IGV0aFV0aWwuYWRkSGV4UHJlZml4KGdyb3VwVG9VbnZvdGUgYXMgc3RyaW5nKTtcbiAgICAgICAgdGhpcy5fYW1vdW50ID0gZXRoVXRpbC5idWZmZXJUb0hleChhbW91bnRVbnZvdGUgYXMgQnVmZmVyKTtcbiAgICAgICAgdGhpcy5fbGVzc2VyID0gZXRoVXRpbC5hZGRIZXhQcmVmaXgobGVzc2VyVW52b3RlIGFzIHN0cmluZyk7XG4gICAgICAgIHRoaXMuX2dyZWF0ZXIgPSBldGhVdGlsLmFkZEhleFByZWZpeChncmVhdGVyVW52b3RlIGFzIHN0cmluZyk7XG4gICAgICAgIHRoaXMuX2luZGV4ID0gaGV4U3RyaW5nVG9OdW1iZXIoZXRoVXRpbC5idWZmZXJUb0hleChpbmRleFVudm90ZSBhcyBCdWZmZXIpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5BQ1RJVkFURTpcbiAgICAgICAgdGhpcy52YWxpZGF0ZURlY29kZWREYXRhTGVuZ3RoKGRlY29kZWQubGVuZ3RoLCAxLCBkYXRhKTtcbiAgICAgICAgY29uc3QgW2dyb3VwVG9BY3RpdmF0ZV0gPSBkZWNvZGVkO1xuICAgICAgICB0aGlzLl92YWxpZGF0b3JHcm91cCA9IGV0aFV0aWwuYWRkSGV4UHJlZml4KGdyb3VwVG9BY3RpdmF0ZSBhcyBzdHJpbmcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU3Rha2luZ09wZXJhdGlvblR5cGVzLlVOTE9DSzpcbiAgICAgICAgaWYgKGRlY29kZWQubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB1bmxvY2sgZGVjb2RlZCBkYXRhOiAke2RhdGF9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW2RlY29kZWRBbW91bnRdID0gZGVjb2RlZDtcbiAgICAgICAgdGhpcy5fYW1vdW50ID0gZXRoVXRpbC5idWZmZXJUb0hleChkZWNvZGVkQW1vdW50IGFzIEJ1ZmZlcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuV0lUSERSQVc6XG4gICAgICAgIHRoaXMudmFsaWRhdGVEZWNvZGVkRGF0YUxlbmd0aChkZWNvZGVkLmxlbmd0aCwgMSwgZGF0YSk7XG4gICAgICAgIGNvbnN0IFtpbmRleF0gPSBkZWNvZGVkO1xuICAgICAgICB0aGlzLl9pbmRleCA9IGhleFN0cmluZ1RvTnVtYmVyKGV0aFV0aWwuYnVmZmVyVG9IZXgoaW5kZXggYXMgQnVmZmVyKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBzdGFraW5nIGRhdGE6ICR7dGhpcy5fdHlwZX1gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlRGVjb2RlZERhdGFMZW5ndGgoYWN0dWFsOiBudW1iZXIsIGV4cGVjdGVkOiBudW1iZXIsIGRhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHN0YWtpbmcgZGVjb2RlZCBkYXRhOiAke2RhdGF9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGFzc2lmeVN0YWtpbmdUeXBlKGRhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChkYXRhLnN0YXJ0c1dpdGgoVm90ZU1ldGhvZElkKSkge1xuICAgICAgdGhpcy5fdHlwZSA9IFN0YWtpbmdPcGVyYXRpb25UeXBlcy5WT1RFO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5zdGFydHNXaXRoKFVudm90ZU1ldGhvZElkKSkge1xuICAgICAgdGhpcy5fdHlwZSA9IFN0YWtpbmdPcGVyYXRpb25UeXBlcy5VTlZPVEU7XG4gICAgfSBlbHNlIGlmIChkYXRhLnN0YXJ0c1dpdGgoQWN0aXZhdGVNZXRob2RJZCkpIHtcbiAgICAgIHRoaXMuX3R5cGUgPSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuQUNUSVZBVEU7XG4gICAgfSBlbHNlIGlmIChkYXRhLnN0YXJ0c1dpdGgoVW5sb2NrTWV0aG9kSWQpKSB7XG4gICAgICB0aGlzLl90eXBlID0gU3Rha2luZ09wZXJhdGlvblR5cGVzLlVOTE9DSztcbiAgICB9IGVsc2UgaWYgKGRhdGEuc3RhcnRzV2l0aChXaXRoZHJhd01ldGhvZElkKSkge1xuICAgICAgdGhpcy5fdHlwZSA9IFN0YWtpbmdPcGVyYXRpb25UeXBlcy5XSVRIRFJBVztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBzdGFraW5nIGJ5dGVjb2RlOiAke2RhdGF9YCk7XG4gICAgfVxuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=
@@ -1,7 +0,0 @@
1
- import { ContractCall } from '@bitgo/sdk-coin-eth';
2
- export declare class StakingCall extends ContractCall {
3
- amount: string;
4
- address: string;
5
- constructor(amount: string, address: string, _methodId: string, _types: string[], _params: string[]);
6
- }
7
- //# sourceMappingURL=stakingCall.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stakingCall.d.ts","sourceRoot":"","sources":["../../../src/lib/stakingCall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,qBAAa,WAAY,SAAQ,YAAY;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;gBACX,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;CAKpG"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StakingCall = void 0;
4
- const sdk_coin_eth_1 = require("@bitgo/sdk-coin-eth");
5
- class StakingCall extends sdk_coin_eth_1.ContractCall {
6
- constructor(amount, address, _methodId, _types, _params) {
7
- super(_methodId, _types, _params);
8
- this.amount = amount;
9
- this.address = address;
10
- }
11
- }
12
- exports.StakingCall = StakingCall;
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ0NhbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3N0YWtpbmdDYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFtRDtBQUVuRCxNQUFhLFdBQVksU0FBUSwyQkFBWTtJQUczQyxZQUFZLE1BQWMsRUFBRSxPQUFlLEVBQUUsU0FBaUIsRUFBRSxNQUFnQixFQUFFLE9BQWlCO1FBQ2pHLEtBQUssQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQVJELGtDQVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udHJhY3RDYWxsIH0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWV0aCc7XG5cbmV4cG9ydCBjbGFzcyBTdGFraW5nQ2FsbCBleHRlbmRzIENvbnRyYWN0Q2FsbCB7XG4gIHB1YmxpYyBhbW91bnQ6IHN0cmluZztcbiAgcHVibGljIGFkZHJlc3M6IHN0cmluZztcbiAgY29uc3RydWN0b3IoYW1vdW50OiBzdHJpbmcsIGFkZHJlc3M6IHN0cmluZywgX21ldGhvZElkOiBzdHJpbmcsIF90eXBlczogc3RyaW5nW10sIF9wYXJhbXM6IHN0cmluZ1tdKSB7XG4gICAgc3VwZXIoX21ldGhvZElkLCBfdHlwZXMsIF9wYXJhbXMpO1xuICAgIHRoaXMuYW1vdW50ID0gYW1vdW50O1xuICAgIHRoaXMuYWRkcmVzcyA9IGFkZHJlc3M7XG4gIH1cbn1cbiJdfQ==
@@ -1,15 +0,0 @@
1
- import { Transaction } from '@bitgo/abstract-eth';
2
- import { BaseCoin as CoinConfig } from '@bitgo/statics';
3
- import { TransactionBuilder } from './transactionBuilder';
4
- export declare class TestnetTransactionBuilder extends TransactionBuilder {
5
- constructor(_coinConfig: Readonly<CoinConfig>);
6
- /**
7
- * Get the final v value. Final v is described in EIP-155.
8
- *
9
- * @protected for internal use when the enableFinalVField flag is true.
10
- */
11
- protected getFinalV(): string;
12
- /** @inheritdoc */
13
- protected fromImplementation(rawTransaction: string): Transaction;
14
- }
15
- //# sourceMappingURL=testnetTransactionBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testnetTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/testnetTransactionBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,yBAA0B,SAAQ,kBAAkB;gBACnD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;OAIG;IACH,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;CAWlE"}
@@ -1,68 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.TestnetTransactionBuilder = void 0;
37
- const ethUtil = __importStar(require("ethereumjs-util"));
38
- const abstract_eth_1 = require("@bitgo/abstract-eth");
39
- const transactionBuilder_1 = require("./transactionBuilder");
40
- class TestnetTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
41
- constructor(_coinConfig) {
42
- super(_coinConfig);
43
- this.transaction = new abstract_eth_1.Transaction(_coinConfig, this._common);
44
- }
45
- /**
46
- * Get the final v value. Final v is described in EIP-155.
47
- *
48
- * @protected for internal use when the enableFinalVField flag is true.
49
- */
50
- getFinalV() {
51
- return ethUtil.addHexPrefix(this._common.chainIdBN().muln(2).addn(35).toString(16));
52
- }
53
- /** @inheritdoc */
54
- fromImplementation(rawTransaction) {
55
- let tx;
56
- if (/^0x?[0-9a-f]{1,}$/.test(rawTransaction.toLowerCase())) {
57
- tx = abstract_eth_1.Transaction.fromSerialized(this._coinConfig, this._common, rawTransaction);
58
- this.loadBuilderInput(tx.toJson());
59
- }
60
- else {
61
- const txData = JSON.parse(rawTransaction);
62
- tx = new abstract_eth_1.Transaction(this._coinConfig, txData);
63
- }
64
- return tx;
65
- }
66
- }
67
- exports.TestnetTransactionBuilder = TestnetTransactionBuilder;
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdG5ldFRyYW5zYWN0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdGVzdG5ldFRyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5REFBMkM7QUFDM0Msc0RBQWtEO0FBRWxELDZEQUEwRDtBQUUxRCxNQUFhLHlCQUEwQixTQUFRLHVDQUFrQjtJQUMvRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksMEJBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sU0FBUztRQUNqQixPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxjQUFzQjtRQUNqRCxJQUFJLEVBQWUsQ0FBQztRQUNwQixJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzNELEVBQUUsR0FBRywwQkFBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMxQyxFQUFFLEdBQUcsSUFBSSwwQkFBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNGO0FBM0JELDhEQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGV0aFV0aWwgZnJvbSAnZXRoZXJldW1qcy11dGlsJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnQGJpdGdvL2Fic3RyYWN0LWV0aCc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgVGVzdG5ldFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnLCB0aGlzLl9jb21tb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZmluYWwgdiB2YWx1ZS4gRmluYWwgdiBpcyBkZXNjcmliZWQgaW4gRUlQLTE1NS5cbiAgICpcbiAgICogQHByb3RlY3RlZCBmb3IgaW50ZXJuYWwgdXNlIHdoZW4gdGhlIGVuYWJsZUZpbmFsVkZpZWxkIGZsYWcgaXMgdHJ1ZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRGaW5hbFYoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZXRoVXRpbC5hZGRIZXhQcmVmaXgodGhpcy5fY29tbW9uLmNoYWluSWRCTigpLm11bG4oMikuYWRkbigzNSkudG9TdHJpbmcoMTYpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgbGV0IHR4OiBUcmFuc2FjdGlvbjtcbiAgICBpZiAoL14weD9bMC05YS1mXXsxLH0kLy50ZXN0KHJhd1RyYW5zYWN0aW9uLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICB0eCA9IFRyYW5zYWN0aW9uLmZyb21TZXJpYWxpemVkKHRoaXMuX2NvaW5Db25maWcsIHRoaXMuX2NvbW1vbiwgcmF3VHJhbnNhY3Rpb24pO1xuICAgICAgdGhpcy5sb2FkQnVpbGRlcklucHV0KHR4LnRvSnNvbigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHhEYXRhID0gSlNPTi5wYXJzZShyYXdUcmFuc2FjdGlvbik7XG4gICAgICB0eCA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnLCB0eERhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gdHg7XG4gIH1cbn1cbiJdfQ==
@@ -1,86 +0,0 @@
1
- import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
- import { Transaction } from '@bitgo/abstract-eth';
3
- import { TransactionBuilder as EthTransactionBuilder, TxData } from '@bitgo/sdk-coin-eth';
4
- import { TransactionType } from '@bitgo/sdk-core';
5
- import { StakingBuilder } from './stakingBuilder';
6
- import { TransferBuilder } from './transferBuilder';
7
- export declare class TransactionBuilder extends EthTransactionBuilder {
8
- private _stakingBuilder?;
9
- protected _transfer: TransferBuilder;
10
- constructor(_coinConfig: Readonly<CoinConfig>);
11
- /** @inheritdoc */
12
- type(type: TransactionType): void;
13
- protected getTransactionData(): TxData;
14
- /** @inheritdoc */
15
- protected fromImplementation(rawTransaction: string): Transaction;
16
- protected setTransactionTypeFields(decodedType: TransactionType, transactionJson: TxData): void;
17
- /**
18
- * Returns the smart contract encoded data
19
- *
20
- * @param {string[]} addresses - the contract signers
21
- * @returns {string} - the smart contract encoded data
22
- */
23
- protected getContractData(addresses: string[]): string;
24
- /**
25
- * Gets the staking lock builder if exist, or creates a new one for this transaction and returns it
26
- * requires: amount
27
- *
28
- * @returns {StakingBuilder} the staking builder
29
- */
30
- lock(): StakingBuilder;
31
- /**
32
- * Gets the staking vote builder if exist, or creates a new one for this transaction and returns it
33
- * requires: group, lesser, greater, amount
34
- *
35
- * @returns {StakingBuilder} the staking builder
36
- */
37
- vote(): StakingBuilder;
38
- /**
39
- * Gets the staking activate builder if exist, or creates a new one for this transaction and returns it
40
- * requires: group
41
- *
42
- * @returns {StakingBuilder} the staking builder
43
- */
44
- activate(): StakingBuilder;
45
- /**
46
- * Gets the staking unlock builder if exist, or creates a new one for this transaction and returns it
47
- * requires: amount
48
- *
49
- * @returns {StakingBuilder} the staking builder
50
- */
51
- unlock(): StakingBuilder;
52
- /**
53
- * Gets the staking unvote builder if exist, or creates a new one for this transaction and returns it
54
- * requires: group, lesser, greater, amount, index
55
- *
56
- * @returns {StakingBuilder} the staking builder
57
- */
58
- unvote(): StakingBuilder;
59
- /**
60
- * Gets the staking withdraw builder if exist, or creates a new one for this transaction and returns it
61
- * requires: index (unlock list)
62
- *
63
- * @returns {StakingBuilder} the staking builder
64
- */
65
- withdraw(): StakingBuilder;
66
- /** @inheritdoc */
67
- transfer(data?: string): TransferBuilder;
68
- /**
69
- * Get the appropriate builder for the selected type
70
- *
71
- * @param {StakingOperationTypes} type the selected type for the staking builder
72
- * @returns {StakingBuilder} the staking builder for the selected type
73
- */
74
- private getBuilder;
75
- private getStaking;
76
- private buildLockStakeTransaction;
77
- private buildStakingTransaction;
78
- /**
79
- * The value to send along with this transaction. 0 by default
80
- *
81
- * @param {string} value The value to send along with this transaction
82
- */
83
- value(value: string): void;
84
- validatePrecision(value: string, context?: string): void;
85
- }
86
- //# sourceMappingURL=transactionBuilder.d.ts.map