@bitgo-beta/sdk-coin-cspr 1.2.19-beta.122 → 1.2.19-beta.1221

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 (51) hide show
  1. package/.mocharc.yml +1 -1
  2. package/CHANGELOG.md +593 -0
  3. package/package.json +9 -9
  4. package/dist/src/cspr.d.ts +0 -104
  5. package/dist/src/cspr.d.ts.map +0 -1
  6. package/dist/src/cspr.js +0 -292
  7. package/dist/src/index.d.ts +0 -5
  8. package/dist/src/index.d.ts.map +0 -1
  9. package/dist/src/index.js +0 -30
  10. package/dist/src/lib/constants.d.ts +0 -19
  11. package/dist/src/lib/constants.d.ts.map +0 -1
  12. package/dist/src/lib/constants.js +0 -28
  13. package/dist/src/lib/delegateBuilder.d.ts +0 -49
  14. package/dist/src/lib/delegateBuilder.d.ts.map +0 -1
  15. package/dist/src/lib/delegateBuilder.js +0 -111
  16. package/dist/src/lib/ifaces.d.ts +0 -69
  17. package/dist/src/lib/ifaces.d.ts.map +0 -1
  18. package/dist/src/lib/ifaces.js +0 -3
  19. package/dist/src/lib/index.d.ts +0 -6
  20. package/dist/src/lib/index.d.ts.map +0 -1
  21. package/dist/src/lib/index.js +0 -31
  22. package/dist/src/lib/keyPair.d.ts +0 -18
  23. package/dist/src/lib/keyPair.d.ts.map +0 -1
  24. package/dist/src/lib/keyPair.js +0 -56
  25. package/dist/src/lib/transaction.d.ts +0 -55
  26. package/dist/src/lib/transaction.d.ts.map +0 -1
  27. package/dist/src/lib/transaction.js +0 -227
  28. package/dist/src/lib/transactionBuilder.d.ts +0 -124
  29. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  30. package/dist/src/lib/transactionBuilder.js +0 -312
  31. package/dist/src/lib/transactionBuilderFactory.d.ts +0 -46
  32. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  33. package/dist/src/lib/transactionBuilderFactory.js +0 -98
  34. package/dist/src/lib/transferBuilder.d.ts +0 -39
  35. package/dist/src/lib/transferBuilder.d.ts.map +0 -1
  36. package/dist/src/lib/transferBuilder.js +0 -106
  37. package/dist/src/lib/undelegateBuilder.d.ts +0 -49
  38. package/dist/src/lib/undelegateBuilder.d.ts.map +0 -1
  39. package/dist/src/lib/undelegateBuilder.js +0 -111
  40. package/dist/src/lib/utils.d.ts +0 -188
  41. package/dist/src/lib/utils.d.ts.map +0 -1
  42. package/dist/src/lib/utils.js +0 -477
  43. package/dist/src/lib/walletInitializationBuilder.d.ts +0 -27
  44. package/dist/src/lib/walletInitializationBuilder.d.ts.map +0 -1
  45. package/dist/src/lib/walletInitializationBuilder.js +0 -95
  46. package/dist/src/register.d.ts +0 -3
  47. package/dist/src/register.d.ts.map +0 -1
  48. package/dist/src/register.js +0 -11
  49. package/dist/src/tcspr.d.ts +0 -11
  50. package/dist/src/tcspr.d.ts.map +0 -1
  51. package/dist/src/tcspr.js +0 -24
@@ -1,104 +0,0 @@
1
- /// <reference types="node" />
2
- import { BaseCoin as StaticsBaseCoin, CoinFamily } from '@bitgo-beta/statics';
3
- import { BaseCoin, BitGoBase, KeyPair, ParsedTransaction, ParseTransactionOptions, SignedTransaction, SignTransactionOptions as BaseSignTransactionOptions, TransactionExplanation, TransactionPrebuild as BaseTransactionPrebuild, VerifyAddressOptions, VerifyTransactionOptions } from '@bitgo-beta/sdk-core';
4
- interface SignTransactionOptions extends BaseSignTransactionOptions {
5
- txPrebuild: TransactionPrebuild;
6
- prv: string;
7
- }
8
- export interface TransactionPrebuild extends BaseTransactionPrebuild {
9
- txHex: string;
10
- }
11
- export interface TransactionFee {
12
- gasLimit: string;
13
- gasPrice: string;
14
- }
15
- export interface ExplainTransactionOptions {
16
- txHex?: string;
17
- halfSigned?: {
18
- txHex: string;
19
- };
20
- feeInfo: TransactionFee;
21
- }
22
- interface SupplementGenerateWalletOptions {
23
- rootPrivateKey?: string;
24
- }
25
- interface CsprVerifyAddressOptions extends VerifyAddressOptions {
26
- rootAddress: string;
27
- }
28
- export declare class Cspr extends BaseCoin {
29
- protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
30
- constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
31
- static createInstance(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>): BaseCoin;
32
- getChain(): string;
33
- getFamily(): CoinFamily;
34
- getFullName(): string;
35
- getBaseFactor(): string | number;
36
- verifyTransaction(params: VerifyTransactionOptions): Promise<boolean>;
37
- /**
38
- * Check if address is valid, then make sure it matches the root address.
39
- *
40
- * @param {VerifyAddressOptions} params address and rootAddress to verify
41
- */
42
- isWalletAddress(params: CsprVerifyAddressOptions): Promise<boolean>;
43
- /**
44
- * Generate Casper key pair - BitGo xpub format
45
- *
46
- * @param {Buffer} seed - Seed from which the new keypair should be generated, otherwise a random seed is used
47
- * @returns {Object} object with generated xpub and xprv
48
- */
49
- generateKeyPair(seed?: Buffer): KeyPair;
50
- isValidPub(pub: string): boolean;
51
- /**
52
- * Return boolean indicating whether input is valid private key for the coin
53
- *
54
- * @param prv the prv to be checked
55
- * @returns is it valid?
56
- */
57
- isValidPrv(prv: string): boolean;
58
- /**
59
- * Return boolean indicating whether input is valid CSPR address
60
- *
61
- * @param address the pub to be checked
62
- * @returns true if the address is valid
63
- */
64
- isValidAddress(address: string): boolean;
65
- /**
66
- * Assemble keychain and half-sign prebuilt transaction
67
- *
68
- * @param {SignTransactionOptions} params data required to rebuild and sign the transaction
69
- * @param {TransactionPrebuild} params.txPrebuild prebuild object returned by platform
70
- * @param {String} params.prv user prv used to sign the transaction
71
- * @returns Bluebird<SignedTransaction>
72
- */
73
- signTransaction(params: SignTransactionOptions): Promise<SignedTransaction>;
74
- parseTransaction(params: ParseTransactionOptions): Promise<ParsedTransaction>;
75
- /**
76
- * Extend walletParams with extra params required for generating a Casper wallet
77
- *
78
- * Casper wallets have three three keys, user, backup and bitgo.
79
- * Initially, we need a root prv to generate the account, which must be distinct from all three keychains on the wallet.
80
- * If a root private key is not provided, a random one is generated.
81
- * The root public key is the basis for the wallet root address.
82
- */
83
- supplementGenerateWallet(walletParams: SupplementGenerateWalletOptions): Promise<SupplementGenerateWalletOptions>;
84
- /**
85
- * Sign message with private key
86
- *
87
- * @param key
88
- * @param message
89
- */
90
- signMessage(key: KeyPair, message: string | Buffer): Promise<Buffer>;
91
- /**
92
- * Explain a Casper transaction from Raw Tx
93
- *
94
- * @param {ExplainTransactionOptions} params given explain transaction params
95
- * @param {String} params.txHex raw transaction
96
- * @param {String} params.halfSigned.txHex raw half signed transaction
97
- * @param {TransactionFee} fee fee information
98
- * @returns Bluebird<TransactionExplanation>
99
- */
100
- explainTransaction(params: ExplainTransactionOptions): Promise<TransactionExplanation>;
101
- private getBuilder;
102
- }
103
- export {};
104
- //# sourceMappingURL=cspr.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cspr.d.ts","sourceRoot":"","sources":["../../src/cspr.ts"],"names":[],"mappings":";AAOA,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,UAAU,EAAS,MAAM,qBAAqB,CAAC;AACrF,OAAO,EACL,QAAQ,EACR,SAAS,EAGT,OAAO,EACP,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,IAAI,0BAA0B,EACpD,sBAAsB,EACtB,mBAAmB,IAAI,uBAAuB,EAG9C,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAE9B,UAAU,sBAAuB,SAAQ,0BAA0B;IACjE,UAAU,EAAE,mBAAmB,CAAC;IAChC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAClE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,UAAU,+BAA+B;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAeD,UAAU,wBAAyB,SAAQ,oBAAoB;IAC7D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,IAAK,SAAQ,QAAQ;IAChC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAE/C,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAUrE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,QAAQ,IAAI,MAAM;IAGlB,SAAS,IAAI,UAAU;IAGvB,WAAW,IAAI,MAAM;IAGrB,aAAa,IAAI,MAAM,GAAG,MAAM;IAI1B,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAK3E;;;;OAIG;IACG,eAAe,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBzE;;;;;OAKG;IACH,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAcvC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAWhC;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAWhC;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IASxC;;;;;;;OAOG;IACG,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAe3E,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAInF;;;;;;;OAOG;IACG,wBAAwB,CAC5B,YAAY,EAAE,+BAA+B,GAC5C,OAAO,CAAC,+BAA+B,CAAC;IAe3C;;;;;OAKG;IACG,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO1E;;;;;;;;OAQG;IACG,kBAAkB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAoF5F,OAAO,CAAC,UAAU;CAGnB"}
package/dist/src/cspr.js DELETED
@@ -1,292 +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
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.Cspr = void 0;
26
- /**
27
- * @prettier
28
- */
29
- const CsprLib = __importStar(require("./lib"));
30
- const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
31
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
32
- const statics_1 = require("@bitgo-beta/statics");
33
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
34
- class Cspr extends sdk_core_1.BaseCoin {
35
- constructor(bitgo, staticsCoin) {
36
- super(bitgo);
37
- if (!staticsCoin) {
38
- throw new Error('missing required constructor parameter staticsCoin');
39
- }
40
- this._staticsCoin = staticsCoin;
41
- }
42
- static createInstance(bitgo, staticsCoin) {
43
- return new Cspr(bitgo, staticsCoin);
44
- }
45
- getChain() {
46
- return this._staticsCoin.name;
47
- }
48
- getFamily() {
49
- return this._staticsCoin.family;
50
- }
51
- getFullName() {
52
- return this._staticsCoin.fullName;
53
- }
54
- getBaseFactor() {
55
- return Math.pow(10, this._staticsCoin.decimalPlaces);
56
- }
57
- async verifyTransaction(params) {
58
- // TODO: Implement when available on the SDK.
59
- return true;
60
- }
61
- /**
62
- * Check if address is valid, then make sure it matches the root address.
63
- *
64
- * @param {VerifyAddressOptions} params address and rootAddress to verify
65
- */
66
- async isWalletAddress(params) {
67
- const { address, rootAddress } = params;
68
- if (!this.isValidAddress(address)) {
69
- throw new sdk_core_1.InvalidAddressError(`invalid address: ${address}`);
70
- }
71
- if (!this.isValidAddress(rootAddress)) {
72
- throw new sdk_core_1.InvalidAddressError('wallet root address is not valid');
73
- }
74
- const newAddressDetails = CsprLib.Utils.getAddressDetails(address);
75
- const rootAddressDetails = CsprLib.Utils.getAddressDetails(rootAddress);
76
- if (newAddressDetails.address.toLowerCase() !== rootAddressDetails.address.toLowerCase()) {
77
- throw new sdk_core_1.UnexpectedAddressError(`address validation failure: ${newAddressDetails.address} vs ${rootAddress}`);
78
- }
79
- return true;
80
- }
81
- /**
82
- * Generate Casper key pair - BitGo xpub format
83
- *
84
- * @param {Buffer} seed - Seed from which the new keypair should be generated, otherwise a random seed is used
85
- * @returns {Object} object with generated xpub and xprv
86
- */
87
- generateKeyPair(seed) {
88
- const keyPair = seed ? new CsprLib.KeyPair({ seed }) : new CsprLib.KeyPair();
89
- const keys = keyPair.getExtendedKeys();
90
- if (!keys.xprv) {
91
- throw new Error('Missing xprv in key generation.');
92
- }
93
- return {
94
- pub: keys.xpub,
95
- prv: keys.xprv,
96
- };
97
- }
98
- isValidPub(pub) {
99
- // TODO(STLX-1344): Validate using account-lib when available
100
- // return accountLib.Cspr.Utils.isValidPublicKey(pub);
101
- try {
102
- new CsprLib.KeyPair({ pub });
103
- return true;
104
- }
105
- catch (e) {
106
- return false;
107
- }
108
- }
109
- /**
110
- * Return boolean indicating whether input is valid private key for the coin
111
- *
112
- * @param prv the prv to be checked
113
- * @returns is it valid?
114
- */
115
- isValidPrv(prv) {
116
- // TODO(STLX-1345): Validate using account-lib when available
117
- // return accountLib.Cspr.Utils.isValidPrivateKey(prv);
118
- try {
119
- new CsprLib.KeyPair({ prv });
120
- return true;
121
- }
122
- catch (e) {
123
- return false;
124
- }
125
- }
126
- /**
127
- * Return boolean indicating whether input is valid CSPR address
128
- *
129
- * @param address the pub to be checked
130
- * @returns true if the address is valid
131
- */
132
- isValidAddress(address) {
133
- try {
134
- const addressDetails = CsprLib.Utils.getAddressDetails(address);
135
- return address === CsprLib.Utils.normalizeAddress(addressDetails);
136
- }
137
- catch (e) {
138
- return false;
139
- }
140
- }
141
- /**
142
- * Assemble keychain and half-sign prebuilt transaction
143
- *
144
- * @param {SignTransactionOptions} params data required to rebuild and sign the transaction
145
- * @param {TransactionPrebuild} params.txPrebuild prebuild object returned by platform
146
- * @param {String} params.prv user prv used to sign the transaction
147
- * @returns Bluebird<SignedTransaction>
148
- */
149
- async signTransaction(params) {
150
- const txBuilder = this.getBuilder().from(params.txPrebuild.txHex);
151
- const key = params.prv;
152
- txBuilder.sign({ key });
153
- const transaction = await txBuilder.build();
154
- if (!transaction) {
155
- throw new sdk_core_1.InvalidTransactionError('Error while trying to build transaction');
156
- }
157
- const response = {
158
- txHex: transaction.toBroadcastFormat(),
159
- };
160
- return transaction.signature.length >= 2 ? response : { halfSigned: response };
161
- }
162
- async parseTransaction(params) {
163
- return {};
164
- }
165
- /**
166
- * Extend walletParams with extra params required for generating a Casper wallet
167
- *
168
- * Casper wallets have three three keys, user, backup and bitgo.
169
- * Initially, we need a root prv to generate the account, which must be distinct from all three keychains on the wallet.
170
- * If a root private key is not provided, a random one is generated.
171
- * The root public key is the basis for the wallet root address.
172
- */
173
- async supplementGenerateWallet(walletParams) {
174
- if (walletParams.rootPrivateKey) {
175
- if (!this.isValidPrv(walletParams.rootPrivateKey) || walletParams.rootPrivateKey.length !== 64) {
176
- throw new Error('rootPrivateKey needs to be a hexadecimal private key string');
177
- }
178
- }
179
- else {
180
- const keyPair = utxo_lib_1.ECPair.makeRandom();
181
- if (!keyPair.privateKey) {
182
- throw new Error('no privateKey');
183
- }
184
- walletParams.rootPrivateKey = keyPair.privateKey.toString('hex');
185
- }
186
- return walletParams;
187
- }
188
- /**
189
- * Sign message with private key
190
- *
191
- * @param key
192
- * @param message
193
- */
194
- async signMessage(key, message) {
195
- const keyPair = new CsprLib.KeyPair({ prv: key.prv });
196
- const messageHex = message instanceof Buffer ? message.toString('hex') : message;
197
- const signatureData = CsprLib.Utils.signMessage(keyPair, messageHex);
198
- return Buffer.from(signatureData.signature);
199
- }
200
- /**
201
- * Explain a Casper transaction from Raw Tx
202
- *
203
- * @param {ExplainTransactionOptions} params given explain transaction params
204
- * @param {String} params.txHex raw transaction
205
- * @param {String} params.halfSigned.txHex raw half signed transaction
206
- * @param {TransactionFee} fee fee information
207
- * @returns Bluebird<TransactionExplanation>
208
- */
209
- async explainTransaction(params) {
210
- const txHex = params.txHex || (params.halfSigned && params.halfSigned.txHex);
211
- if (!txHex || !params.feeInfo) {
212
- throw new Error('missing explain tx parameters');
213
- }
214
- const txBuilder = this.getBuilder().from(txHex);
215
- const tx = await txBuilder.build();
216
- if (!tx) {
217
- throw new sdk_core_1.InvalidTransactionError('Error while trying to build transaction');
218
- }
219
- const id = Buffer.from(tx.casperTx.hash).toString('hex');
220
- const amount = CsprLib.Utils.getTransferAmount(tx.casperTx.session);
221
- let transferId;
222
- const outputs = [];
223
- const operations = [];
224
- switch (tx.type) {
225
- case sdk_core_1.TransactionType.Send: {
226
- transferId = CsprLib.Utils.getTransferId(tx.casperTx.session);
227
- const toAddress = CsprLib.Utils.getTransferDestinationAddress(tx._deploy.session);
228
- outputs.push({
229
- address: toAddress,
230
- amount,
231
- coin: this.getChain(),
232
- });
233
- break;
234
- }
235
- case sdk_core_1.TransactionType.StakingLock: {
236
- const validator = CsprLib.Utils.getValidatorAddress(tx._deploy.session);
237
- operations.push({
238
- type: sdk_core_1.TransactionType.StakingLock,
239
- amount,
240
- coin: this.getChain(),
241
- validator: validator,
242
- });
243
- break;
244
- }
245
- case sdk_core_1.TransactionType.StakingUnlock: {
246
- const validator = CsprLib.Utils.getValidatorAddress(tx._deploy.session);
247
- operations.push({
248
- type: sdk_core_1.TransactionType.StakingUnlock,
249
- amount,
250
- coin: this.getChain(),
251
- validator: validator,
252
- });
253
- break;
254
- }
255
- default: {
256
- throw new sdk_core_1.InvalidTransactionError('Error while trying to get transaction type');
257
- }
258
- }
259
- const outputAmount = outputs
260
- .reduce((acumulator, output) => {
261
- const currentValue = new bignumber_js_1.default(output.amount);
262
- return acumulator.plus(currentValue);
263
- }, new bignumber_js_1.default(0))
264
- .toFixed(0);
265
- const displayOrder = [
266
- 'id',
267
- 'outputAmount',
268
- 'changeAmount',
269
- 'outputs',
270
- 'changeOutputs',
271
- 'transferId',
272
- 'fee',
273
- 'operations',
274
- ];
275
- return {
276
- displayOrder,
277
- id,
278
- outputs,
279
- outputAmount,
280
- changeOutputs: [],
281
- changeAmount: '0',
282
- transferId,
283
- fee: params.feeInfo,
284
- operations,
285
- };
286
- }
287
- getBuilder() {
288
- return new CsprLib.TransactionBuilderFactory(statics_1.coins.get(this.getChain()));
289
- }
290
- }
291
- exports.Cspr = Cspr;
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Nwci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jc3ByLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUNILCtDQUFpQztBQUNqQyxtREFBOEM7QUFDOUMsZ0VBQXFDO0FBRXJDLGlEQUFxRjtBQUNyRixtREFnQjhCO0FBNkM5QixNQUFhLElBQUssU0FBUSxtQkFBUTtJQUdoQyxZQUFZLEtBQWdCLEVBQUUsV0FBdUM7UUFDbkUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7U0FDdkU7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBQ0QsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUNELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBZ0M7UUFDdEQsNkNBQTZDO1FBQzdDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZUFB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QVU7UUFDaEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztDQUNGO0FBelJELG9CQXlSQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCAqIGFzIENzcHJMaWIgZnJvbSAnLi9saWInO1xuaW1wb3J0IHsgRUNQYWlyIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4sIENvaW5GYW1pbHksIGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQge1xuICBCYXNlQ29pbixcbiAgQml0R29CYXNlLFxuICBJbnZhbGlkQWRkcmVzc0Vycm9yLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgS2V5UGFpcixcbiAgUGFyc2VkVHJhbnNhY3Rpb24sXG4gIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zLFxuICBTaWduZWRUcmFuc2FjdGlvbixcbiAgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyBhcyBCYXNlU2lnblRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgVHJhbnNhY3Rpb25QcmVidWlsZCBhcyBCYXNlVHJhbnNhY3Rpb25QcmVidWlsZCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yLFxuICBWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmludGVyZmFjZSBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgQmFzZVNpZ25UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiBUcmFuc2FjdGlvblByZWJ1aWxkO1xuICBwcnY6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvblByZWJ1aWxkIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uUHJlYnVpbGQge1xuICB0eEhleDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uRmVlIHtcbiAgZ2FzTGltaXQ6IHN0cmluZztcbiAgZ2FzUHJpY2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhIZXg/OiBzdHJpbmc7XG4gIGhhbGZTaWduZWQ/OiB7XG4gICAgdHhIZXg6IHN0cmluZztcbiAgfTtcbiAgZmVlSW5mbzogVHJhbnNhY3Rpb25GZWU7XG59XG5cbmludGVyZmFjZSBTdXBwbGVtZW50R2VuZXJhdGVXYWxsZXRPcHRpb25zIHtcbiAgcm9vdFByaXZhdGVLZXk/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBUcmFuc2FjdGlvbk91dHB1dCB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG4gIGNvaW46IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFRyYW5zYWN0aW9uT3BlcmF0aW9uIHtcbiAgdHlwZTogbnVtYmVyO1xuICBhbW91bnQ6IHN0cmluZztcbiAgY29pbjogc3RyaW5nO1xuICB2YWxpZGF0b3I6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENzcHJWZXJpZnlBZGRyZXNzT3B0aW9ucyBleHRlbmRzIFZlcmlmeUFkZHJlc3NPcHRpb25zIHtcbiAgcm9vdEFkZHJlc3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIENzcHIgZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28pO1xuXG4gICAgaWYgKCFzdGF0aWNzQ29pbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBzdGF0aWNzQ29pbicpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRpY3NDb2luID0gc3RhdGljc0NvaW47XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgQ3NwcihiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4ubmFtZTtcbiAgfVxuICBnZXRGYW1pbHkoKTogQ29pbkZhbWlseSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLmZhbWlseTtcbiAgfVxuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mdWxsTmFtZTtcbiAgfVxuICBnZXRCYXNlRmFjdG9yKCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgucG93KDEwLCB0aGlzLl9zdGF0aWNzQ29pbi5kZWNpbWFsUGxhY2VzKTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gVE9ETzogSW1wbGVtZW50IHdoZW4gYXZhaWxhYmxlIG9uIHRoZSBTREsuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYWRkcmVzcyBpcyB2YWxpZCwgdGhlbiBtYWtlIHN1cmUgaXQgbWF0Y2hlcyB0aGUgcm9vdCBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0ge1ZlcmlmeUFkZHJlc3NPcHRpb25zfSBwYXJhbXMgYWRkcmVzcyBhbmQgcm9vdEFkZHJlc3MgdG8gdmVyaWZ5XG4gICAqL1xuICBhc3luYyBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBDc3ByVmVyaWZ5QWRkcmVzc09wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGFkZHJlc3MsIHJvb3RBZGRyZXNzIH0gPSBwYXJhbXM7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc1ZhbGlkQWRkcmVzcyhyb290QWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKCd3YWxsZXQgcm9vdCBhZGRyZXNzIGlzIG5vdCB2YWxpZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0FkZHJlc3NEZXRhaWxzID0gQ3NwckxpYi5VdGlscy5nZXRBZGRyZXNzRGV0YWlscyhhZGRyZXNzKTtcbiAgICBjb25zdCByb290QWRkcmVzc0RldGFpbHMgPSBDc3ByTGliLlV0aWxzLmdldEFkZHJlc3NEZXRhaWxzKHJvb3RBZGRyZXNzKTtcbiAgICBpZiAobmV3QWRkcmVzc0RldGFpbHMuYWRkcmVzcy50b0xvd2VyQ2FzZSgpICE9PSByb290QWRkcmVzc0RldGFpbHMuYWRkcmVzcy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEFkZHJlc3NFcnJvcihgYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmU6ICR7bmV3QWRkcmVzc0RldGFpbHMuYWRkcmVzc30gdnMgJHtyb290QWRkcmVzc31gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgQ2FzcGVyIGtleSBwYWlyIC0gQml0R28geHB1YiBmb3JtYXRcbiAgICpcbiAgICogQHBhcmFtIHtCdWZmZXJ9IHNlZWQgLSBTZWVkIGZyb20gd2hpY2ggdGhlIG5ldyBrZXlwYWlyIHNob3VsZCBiZSBnZW5lcmF0ZWQsIG90aGVyd2lzZSBhIHJhbmRvbSBzZWVkIGlzIHVzZWRcbiAgICogQHJldHVybnMge09iamVjdH0gb2JqZWN0IHdpdGggZ2VuZXJhdGVkIHhwdWIgYW5kIHhwcnZcbiAgICovXG4gIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogS2V5UGFpciB7XG4gICAgY29uc3Qga2V5UGFpciA9IHNlZWQgPyBuZXcgQ3NwckxpYi5LZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBDc3ByTGliLktleVBhaXIoKTtcbiAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRFeHRlbmRlZEtleXMoKTtcblxuICAgIGlmICgha2V5cy54cHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgeHBydiBpbiBrZXkgZ2VuZXJhdGlvbi4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHViOiBrZXlzLnhwdWIsXG4gICAgICBwcnY6IGtleXMueHBydixcbiAgICB9O1xuICB9XG5cbiAgaXNWYWxpZFB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIFRPRE8oU1RMWC0xMzQ0KTogVmFsaWRhdGUgdXNpbmcgYWNjb3VudC1saWIgd2hlbiBhdmFpbGFibGVcbiAgICAvLyAgcmV0dXJuIGFjY291bnRMaWIuQ3Nwci5VdGlscy5pc1ZhbGlkUHVibGljS2V5KHB1Yik7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBDc3ByTGliLktleVBhaXIoeyBwdWIgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwcml2YXRlIGtleSBmb3IgdGhlIGNvaW5cbiAgICpcbiAgICogQHBhcmFtIHBydiB0aGUgcHJ2IHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMgaXMgaXQgdmFsaWQ/XG4gICAqL1xuICBpc1ZhbGlkUHJ2KHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gVE9ETyhTVExYLTEzNDUpOiBWYWxpZGF0ZSB1c2luZyBhY2NvdW50LWxpYiB3aGVuIGF2YWlsYWJsZVxuICAgIC8vICByZXR1cm4gYWNjb3VudExpYi5Dc3ByLlV0aWxzLmlzVmFsaWRQcml2YXRlS2V5KHBydik7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBDc3ByTGliLktleVBhaXIoeyBwcnYgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBDU1BSIGFkZHJlc3NcbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3MgdGhlIHB1YiB0byBiZSBjaGVja2VkXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGFkZHJlc3MgaXMgdmFsaWRcbiAgICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhZGRyZXNzRGV0YWlscyA9IENzcHJMaWIuVXRpbHMuZ2V0QWRkcmVzc0RldGFpbHMoYWRkcmVzcyk7XG4gICAgICByZXR1cm4gYWRkcmVzcyA9PT0gQ3NwckxpYi5VdGlscy5ub3JtYWxpemVBZGRyZXNzKGFkZHJlc3NEZXRhaWxzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFzc2VtYmxlIGtleWNoYWluIGFuZCBoYWxmLXNpZ24gcHJlYnVpbHQgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtTaWduVHJhbnNhY3Rpb25PcHRpb25zfSBwYXJhbXMgZGF0YSByZXF1aXJlZCB0byByZWJ1aWxkIGFuZCBzaWduIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUHJlYnVpbGR9IHBhcmFtcy50eFByZWJ1aWxkIHByZWJ1aWxkIG9iamVjdCByZXR1cm5lZCBieSBwbGF0Zm9ybVxuICAgKiBAcGFyYW0ge1N0cmluZ30gcGFyYW1zLnBydiB1c2VyIHBydiB1c2VkIHRvIHNpZ24gdGhlIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIEJsdWViaXJkPFNpZ25lZFRyYW5zYWN0aW9uPlxuICAgKi9cbiAgYXN5bmMgc2lnblRyYW5zYWN0aW9uKHBhcmFtczogU2lnblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8U2lnbmVkVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSB0aGlzLmdldEJ1aWxkZXIoKS5mcm9tKHBhcmFtcy50eFByZWJ1aWxkLnR4SGV4KTtcbiAgICBjb25zdCBrZXkgPSBwYXJhbXMucHJ2O1xuICAgIHR4QnVpbGRlci5zaWduKHsga2V5IH0pO1xuXG4gICAgY29uc3QgdHJhbnNhY3Rpb246IGFueSA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGJ1aWxkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgICAgdHhIZXg6IHRyYW5zYWN0aW9uLnRvQnJvYWRjYXN0Rm9ybWF0KCksXG4gICAgfTtcbiAgICByZXR1cm4gdHJhbnNhY3Rpb24uc2lnbmF0dXJlLmxlbmd0aCA+PSAyID8gcmVzcG9uc2UgOiB7IGhhbGZTaWduZWQ6IHJlc3BvbnNlIH07XG4gIH1cblxuICBhc3luYyBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dGVuZCB3YWxsZXRQYXJhbXMgd2l0aCBleHRyYSBwYXJhbXMgcmVxdWlyZWQgZm9yIGdlbmVyYXRpbmcgYSBDYXNwZXIgd2FsbGV0XG4gICAqXG4gICAqIENhc3BlciB3YWxsZXRzIGhhdmUgdGhyZWUgdGhyZWUga2V5cywgdXNlciwgYmFja3VwIGFuZCBiaXRnby5cbiAgICogSW5pdGlhbGx5LCB3ZSBuZWVkIGEgcm9vdCBwcnYgdG8gZ2VuZXJhdGUgdGhlIGFjY291bnQsIHdoaWNoIG11c3QgYmUgZGlzdGluY3QgZnJvbSBhbGwgdGhyZWUga2V5Y2hhaW5zIG9uIHRoZSB3YWxsZXQuXG4gICAqIElmIGEgcm9vdCBwcml2YXRlIGtleSBpcyBub3QgcHJvdmlkZWQsIGEgcmFuZG9tIG9uZSBpcyBnZW5lcmF0ZWQuXG4gICAqIFRoZSByb290IHB1YmxpYyBrZXkgaXMgdGhlIGJhc2lzIGZvciB0aGUgd2FsbGV0IHJvb3QgYWRkcmVzcy5cbiAgICovXG4gIGFzeW5jIHN1cHBsZW1lbnRHZW5lcmF0ZVdhbGxldChcbiAgICB3YWxsZXRQYXJhbXM6IFN1cHBsZW1lbnRHZW5lcmF0ZVdhbGxldE9wdGlvbnNcbiAgKTogUHJvbWlzZTxTdXBwbGVtZW50R2VuZXJhdGVXYWxsZXRPcHRpb25zPiB7XG4gICAgaWYgKHdhbGxldFBhcmFtcy5yb290UHJpdmF0ZUtleSkge1xuICAgICAgaWYgKCF0aGlzLmlzVmFsaWRQcnYod2FsbGV0UGFyYW1zLnJvb3RQcml2YXRlS2V5KSB8fCB3YWxsZXRQYXJhbXMucm9vdFByaXZhdGVLZXkubGVuZ3RoICE9PSA2NCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jvb3RQcml2YXRlS2V5IG5lZWRzIHRvIGJlIGEgaGV4YWRlY2ltYWwgcHJpdmF0ZSBrZXkgc3RyaW5nJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBFQ1BhaXIubWFrZVJhbmRvbSgpO1xuICAgICAgaWYgKCFrZXlQYWlyLnByaXZhdGVLZXkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBwcml2YXRlS2V5Jyk7XG4gICAgICB9XG4gICAgICB3YWxsZXRQYXJhbXMucm9vdFByaXZhdGVLZXkgPSBrZXlQYWlyLnByaXZhdGVLZXkudG9TdHJpbmcoJ2hleCcpO1xuICAgIH1cbiAgICByZXR1cm4gd2FsbGV0UGFyYW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gbWVzc2FnZSB3aXRoIHByaXZhdGUga2V5XG4gICAqXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICovXG4gIGFzeW5jIHNpZ25NZXNzYWdlKGtleTogS2V5UGFpciwgbWVzc2FnZTogc3RyaW5nIHwgQnVmZmVyKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBjb25zdCBrZXlQYWlyID0gbmV3IENzcHJMaWIuS2V5UGFpcih7IHBydjoga2V5LnBydiB9KTtcbiAgICBjb25zdCBtZXNzYWdlSGV4ID0gbWVzc2FnZSBpbnN0YW5jZW9mIEJ1ZmZlciA/IG1lc3NhZ2UudG9TdHJpbmcoJ2hleCcpIDogbWVzc2FnZTtcbiAgICBjb25zdCBzaWduYXR1cmVEYXRhID0gQ3NwckxpYi5VdGlscy5zaWduTWVzc2FnZShrZXlQYWlyLCBtZXNzYWdlSGV4KTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oc2lnbmF0dXJlRGF0YS5zaWduYXR1cmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cGxhaW4gYSBDYXNwZXIgdHJhbnNhY3Rpb24gZnJvbSBSYXcgVHhcbiAgICpcbiAgICogQHBhcmFtIHtFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zfSBwYXJhbXMgZ2l2ZW4gZXhwbGFpbiB0cmFuc2FjdGlvbiBwYXJhbXNcbiAgICogQHBhcmFtIHtTdHJpbmd9IHBhcmFtcy50eEhleCByYXcgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtTdHJpbmd9IHBhcmFtcy5oYWxmU2lnbmVkLnR4SGV4IHJhdyBoYWxmIHNpZ25lZCB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uRmVlfSBmZWUgZmVlIGluZm9ybWF0aW9uXG4gICAqIEByZXR1cm5zIEJsdWViaXJkPFRyYW5zYWN0aW9uRXhwbGFuYXRpb24+XG4gICAqL1xuICBhc3luYyBleHBsYWluVHJhbnNhY3Rpb24ocGFyYW1zOiBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxUcmFuc2FjdGlvbkV4cGxhbmF0aW9uPiB7XG4gICAgY29uc3QgdHhIZXggPSBwYXJhbXMudHhIZXggfHwgKHBhcmFtcy5oYWxmU2lnbmVkICYmIHBhcmFtcy5oYWxmU2lnbmVkLnR4SGV4KTtcbiAgICBpZiAoIXR4SGV4IHx8ICFwYXJhbXMuZmVlSW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGV4cGxhaW4gdHggcGFyYW1ldGVycycpO1xuICAgIH1cbiAgICBjb25zdCB0eEJ1aWxkZXIgPSB0aGlzLmdldEJ1aWxkZXIoKS5mcm9tKHR4SGV4KTtcblxuICAgIGNvbnN0IHR4OiBhbnkgPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBpZiAoIXR4KSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0Vycm9yIHdoaWxlIHRyeWluZyB0byBidWlsZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBpZCA9IEJ1ZmZlci5mcm9tKHR4LmNhc3BlclR4Lmhhc2gpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBjb25zdCBhbW91bnQgPSBDc3ByTGliLlV0aWxzLmdldFRyYW5zZmVyQW1vdW50KHR4LmNhc3BlclR4LnNlc3Npb24pO1xuICAgIGxldCB0cmFuc2ZlcklkO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uT3V0cHV0W10gPSBbXTtcbiAgICBjb25zdCBvcGVyYXRpb25zOiBUcmFuc2FjdGlvbk9wZXJhdGlvbltdID0gW107XG5cbiAgICBzd2l0Y2ggKHR4LnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6IHtcbiAgICAgICAgdHJhbnNmZXJJZCA9IENzcHJMaWIuVXRpbHMuZ2V0VHJhbnNmZXJJZCh0eC5jYXNwZXJUeC5zZXNzaW9uKTtcbiAgICAgICAgY29uc3QgdG9BZGRyZXNzID0gQ3NwckxpYi5VdGlscy5nZXRUcmFuc2ZlckRlc3RpbmF0aW9uQWRkcmVzcyh0eC5fZGVwbG95LnNlc3Npb24pO1xuICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgIGFkZHJlc3M6IHRvQWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgY29pbjogdGhpcy5nZXRDaGFpbigpLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nTG9jazoge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3IgPSBDc3ByTGliLlV0aWxzLmdldFZhbGlkYXRvckFkZHJlc3ModHguX2RlcGxveS5zZXNzaW9uKTtcbiAgICAgICAgb3BlcmF0aW9ucy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0xvY2ssXG4gICAgICAgICAgYW1vdW50LFxuICAgICAgICAgIGNvaW46IHRoaXMuZ2V0Q2hhaW4oKSxcbiAgICAgICAgICB2YWxpZGF0b3I6IHZhbGlkYXRvcixcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jazoge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3IgPSBDc3ByTGliLlV0aWxzLmdldFZhbGlkYXRvckFkZHJlc3ModHguX2RlcGxveS5zZXNzaW9uKTtcbiAgICAgICAgb3BlcmF0aW9ucy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jayxcbiAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgY29pbjogdGhpcy5nZXRDaGFpbigpLFxuICAgICAgICAgIHZhbGlkYXRvcjogdmFsaWRhdG9yLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGdldCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gb3V0cHV0c1xuICAgICAgLnJlZHVjZSgoYWN1bXVsYXRvciwgb3V0cHV0KSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IG5ldyBCaWdOdW1iZXIob3V0cHV0LmFtb3VudCk7XG4gICAgICAgIHJldHVybiBhY3VtdWxhdG9yLnBsdXMoY3VycmVudFZhbHVlKTtcbiAgICAgIH0sIG5ldyBCaWdOdW1iZXIoMCkpXG4gICAgICAudG9GaXhlZCgwKTtcblxuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFtcbiAgICAgICdpZCcsXG4gICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgJ291dHB1dHMnLFxuICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgJ3RyYW5zZmVySWQnLFxuICAgICAgJ2ZlZScsXG4gICAgICAnb3BlcmF0aW9ucycsXG4gICAgXTtcblxuICAgIHJldHVybiB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZCxcbiAgICAgIG91dHB1dHMsXG4gICAgICBvdXRwdXRBbW91bnQsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSwgLy8gYWNjb3VudCBiYXNlZCBkb2VzIG5vdCB1c2UgY2hhbmdlIG91dHB1dHNcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLCAvLyBhY2NvdW50IGJhc2UgZG9lcyBub3QgbWFrZSBjaGFuZ2VcbiAgICAgIHRyYW5zZmVySWQsXG4gICAgICBmZWU6IHBhcmFtcy5mZWVJbmZvLFxuICAgICAgb3BlcmF0aW9ucyxcbiAgICB9IGFzIGFueTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QnVpbGRlcigpOiBDc3ByTGliLlRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICAgIHJldHVybiBuZXcgQ3NwckxpYi5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCh0aGlzLmdldENoYWluKCkpKTtcbiAgfVxufVxuIl19
@@ -1,5 +0,0 @@
1
- export * from './cspr';
2
- export * from './tcspr';
3
- export * as CsprLib from './lib';
4
- export * from './register';
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,OAAO,KAAK,OAAO,MAAM,OAAO,CAAC;AACjC,cAAc,YAAY,CAAC"}
package/dist/src/index.js DELETED
@@ -1,30 +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
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
16
- };
17
- var __importStar = (this && this.__importStar) || function (mod) {
18
- if (mod && mod.__esModule) return mod;
19
- var result = {};
20
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
21
- __setModuleDefault(result, mod);
22
- return result;
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.CsprLib = void 0;
26
- __exportStar(require("./cspr"), exports);
27
- __exportStar(require("./tcspr"), exports);
28
- exports.CsprLib = __importStar(require("./lib"));
29
- __exportStar(require("./register"), exports);
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUF1QjtBQUN2QiwwQ0FBd0I7QUFDeEIsaURBQWlDO0FBQ2pDLDZDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3Nwcic7XG5leHBvcnQgKiBmcm9tICcuL3Rjc3ByJztcbmV4cG9ydCAqIGFzIENzcHJMaWIgZnJvbSAnLi9saWInO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlcic7XG4iXX0=
@@ -1,19 +0,0 @@
1
- export declare const SECP256K1_PREFIX = "02";
2
- export declare const ED25519_PREFIX = "01";
3
- export declare const DEFAULT_CHAIN_NAMES: {
4
- testnet: string;
5
- mainnet: string;
6
- };
7
- export declare const TRANSACTION_EXPIRATION = 64800000;
8
- export declare const DELEGATE_VALIDATOR_ACCOUNT = "0100cd28cec3dd6d29b959ae7b36a8201c92fe6af75fa44d5fa84b7d2e417ca940";
9
- export declare const MODULE_BYTES_ACTION = "action";
10
- export declare const WALLET_INITIALIZATION_CONTRACT_ACTION = "set_all";
11
- export declare const DELEGATE_CONTRACT_ACTION = "delegate";
12
- export declare const UNDELEGATE_CONTRACT_ACTION = "undelegate";
13
- export declare const OWNER_PREFIX = "owner_";
14
- export declare const TRANSFER_TO_ADDRESS = "to_address";
15
- export declare const DELEGATE_FROM_ADDRESS = "from_address";
16
- export declare const TRANSACTION_TYPE = "deploy_type";
17
- export declare const DELEGATE_VALIDATOR = "validator";
18
- export declare const STAKING_TYPE = "staking_type";
19
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,cAAc,OAAO,CAAC;AACnC,eAAO,MAAM,mBAAmB;;;CAG/B,CAAC;AACF,eAAO,MAAM,sBAAsB,WAAW,CAAC;AAC/C,eAAO,MAAM,0BAA0B,uEAAuE,CAAC;AAG/G,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAI5C,eAAO,MAAM,qCAAqC,YAAY,CAAC;AAC/D,eAAO,MAAM,wBAAwB,aAAa,CAAC;AACnD,eAAO,MAAM,0BAA0B,eAAe,CAAC;AAIvD,eAAO,MAAM,YAAY,WAAW,CAAC;AACrC,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAChD,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AACpD,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,YAAY,iBAAiB,CAAC"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.STAKING_TYPE = exports.DELEGATE_VALIDATOR = exports.TRANSACTION_TYPE = exports.DELEGATE_FROM_ADDRESS = exports.TRANSFER_TO_ADDRESS = exports.OWNER_PREFIX = exports.UNDELEGATE_CONTRACT_ACTION = exports.DELEGATE_CONTRACT_ACTION = exports.WALLET_INITIALIZATION_CONTRACT_ACTION = exports.MODULE_BYTES_ACTION = exports.DELEGATE_VALIDATOR_ACCOUNT = exports.TRANSACTION_EXPIRATION = exports.DEFAULT_CHAIN_NAMES = exports.ED25519_PREFIX = exports.SECP256K1_PREFIX = void 0;
4
- exports.SECP256K1_PREFIX = '02';
5
- exports.ED25519_PREFIX = '01';
6
- exports.DEFAULT_CHAIN_NAMES = {
7
- testnet: 'integration-test',
8
- mainnet: 'casper',
9
- };
10
- exports.TRANSACTION_EXPIRATION = 64800000; // 18 hours in milliseconds (max TTL)
11
- exports.DELEGATE_VALIDATOR_ACCOUNT = '0100cd28cec3dd6d29b959ae7b36a8201c92fe6af75fa44d5fa84b7d2e417ca940';
12
- // #region contract arguments
13
- exports.MODULE_BYTES_ACTION = 'action';
14
- // #endregion
15
- // #region contract actions
16
- exports.WALLET_INITIALIZATION_CONTRACT_ACTION = 'set_all';
17
- exports.DELEGATE_CONTRACT_ACTION = 'delegate';
18
- exports.UNDELEGATE_CONTRACT_ACTION = 'undelegate';
19
- // #endregion
20
- // #region extra deploy arguments
21
- exports.OWNER_PREFIX = 'owner_';
22
- exports.TRANSFER_TO_ADDRESS = 'to_address';
23
- exports.DELEGATE_FROM_ADDRESS = 'from_address';
24
- exports.TRANSACTION_TYPE = 'deploy_type';
25
- exports.DELEGATE_VALIDATOR = 'validator';
26
- exports.STAKING_TYPE = 'staking_type';
27
- // #endregion
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFDeEIsUUFBQSxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBQ3RCLFFBQUEsbUJBQW1CLEdBQUc7SUFDakMsT0FBTyxFQUFFLGtCQUFrQjtJQUMzQixPQUFPLEVBQUUsUUFBUTtDQUNsQixDQUFDO0FBQ1csUUFBQSxzQkFBc0IsR0FBRyxRQUFRLENBQUMsQ0FBQyxxQ0FBcUM7QUFDeEUsUUFBQSwwQkFBMEIsR0FBRyxvRUFBb0UsQ0FBQztBQUUvRyw2QkFBNkI7QUFDaEIsUUFBQSxtQkFBbUIsR0FBRyxRQUFRLENBQUM7QUFDNUMsYUFBYTtBQUViLDJCQUEyQjtBQUNkLFFBQUEscUNBQXFDLEdBQUcsU0FBUyxDQUFDO0FBQ2xELFFBQUEsd0JBQXdCLEdBQUcsVUFBVSxDQUFDO0FBQ3RDLFFBQUEsMEJBQTBCLEdBQUcsWUFBWSxDQUFDO0FBQ3ZELGFBQWE7QUFFYixpQ0FBaUM7QUFDcEIsUUFBQSxZQUFZLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLFFBQUEsbUJBQW1CLEdBQUcsWUFBWSxDQUFDO0FBQ25DLFFBQUEscUJBQXFCLEdBQUcsY0FBYyxDQUFDO0FBQ3ZDLFFBQUEsZ0JBQWdCLEdBQUcsYUFBYSxDQUFDO0FBQ2pDLFFBQUEsa0JBQWtCLEdBQUcsV0FBVyxDQUFDO0FBQ2pDLFFBQUEsWUFBWSxHQUFHLGNBQWMsQ0FBQztBQUMzQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFNFQ1AyNTZLMV9QUkVGSVggPSAnMDInO1xuZXhwb3J0IGNvbnN0IEVEMjU1MTlfUFJFRklYID0gJzAxJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0NIQUlOX05BTUVTID0ge1xuICB0ZXN0bmV0OiAnaW50ZWdyYXRpb24tdGVzdCcsXG4gIG1haW5uZXQ6ICdjYXNwZXInLFxufTtcbmV4cG9ydCBjb25zdCBUUkFOU0FDVElPTl9FWFBJUkFUSU9OID0gNjQ4MDAwMDA7IC8vIDE4IGhvdXJzIGluIG1pbGxpc2Vjb25kcyAobWF4IFRUTClcbmV4cG9ydCBjb25zdCBERUxFR0FURV9WQUxJREFUT1JfQUNDT1VOVCA9ICcwMTAwY2QyOGNlYzNkZDZkMjliOTU5YWU3YjM2YTgyMDFjOTJmZTZhZjc1ZmE0NGQ1ZmE4NGI3ZDJlNDE3Y2E5NDAnO1xuXG4vLyAjcmVnaW9uIGNvbnRyYWN0IGFyZ3VtZW50c1xuZXhwb3J0IGNvbnN0IE1PRFVMRV9CWVRFU19BQ1RJT04gPSAnYWN0aW9uJztcbi8vICNlbmRyZWdpb25cblxuLy8gI3JlZ2lvbiBjb250cmFjdCBhY3Rpb25zXG5leHBvcnQgY29uc3QgV0FMTEVUX0lOSVRJQUxJWkFUSU9OX0NPTlRSQUNUX0FDVElPTiA9ICdzZXRfYWxsJztcbmV4cG9ydCBjb25zdCBERUxFR0FURV9DT05UUkFDVF9BQ1RJT04gPSAnZGVsZWdhdGUnO1xuZXhwb3J0IGNvbnN0IFVOREVMRUdBVEVfQ09OVFJBQ1RfQUNUSU9OID0gJ3VuZGVsZWdhdGUnO1xuLy8gI2VuZHJlZ2lvblxuXG4vLyAjcmVnaW9uIGV4dHJhIGRlcGxveSBhcmd1bWVudHNcbmV4cG9ydCBjb25zdCBPV05FUl9QUkVGSVggPSAnb3duZXJfJztcbmV4cG9ydCBjb25zdCBUUkFOU0ZFUl9UT19BRERSRVNTID0gJ3RvX2FkZHJlc3MnO1xuZXhwb3J0IGNvbnN0IERFTEVHQVRFX0ZST01fQUREUkVTUyA9ICdmcm9tX2FkZHJlc3MnO1xuZXhwb3J0IGNvbnN0IFRSQU5TQUNUSU9OX1RZUEUgPSAnZGVwbG95X3R5cGUnO1xuZXhwb3J0IGNvbnN0IERFTEVHQVRFX1ZBTElEQVRPUiA9ICd2YWxpZGF0b3InO1xuZXhwb3J0IGNvbnN0IFNUQUtJTkdfVFlQRSA9ICdzdGFraW5nX3R5cGUnO1xuLy8gI2VuZHJlZ2lvblxuIl19
@@ -1,49 +0,0 @@
1
- import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
- import { BaseKey } from '@bitgo-beta/sdk-core';
3
- import { TransactionBuilder } from './transactionBuilder';
4
- import { Transaction } from './transaction';
5
- export declare class DelegateBuilder extends TransactionBuilder {
6
- private _validator;
7
- private readonly _action;
8
- private _amount;
9
- private readonly _contract;
10
- /**
11
- * Public constructor.
12
- *
13
- * @param {CoinConfig} _coinConfig Coin configuration object
14
- */
15
- constructor(_coinConfig: Readonly<CoinConfig>);
16
- /** @inheritdoc */
17
- protected buildImplementation(): Promise<Transaction>;
18
- /** @inheritdoc */
19
- initBuilder(tx: Transaction): void;
20
- /** @inheritdoc */
21
- protected signImplementation(key: BaseKey): Transaction;
22
- /**
23
- * Build args needed to create a session, then we can send this session with the contract
24
- *
25
- * @returns {DelegateUndelegateContractArgs} contracts args to create a session
26
- */
27
- private buildDelegateParameters;
28
- /**
29
- * Set the destination address where the funds will be sent,
30
- *
31
- * @param {string} address the 68 bits address to transfer funds to
32
- * @returns {DelegateBuilder} the builder with the new parameter set
33
- */
34
- validator(address: string): this;
35
- /**
36
- * Set the amount to be transferred
37
- *
38
- * @param {string} amount amount to transfer
39
- * @returns {DelegateBuilder} the builder with the new parameter set
40
- */
41
- amount(amount: string): this;
42
- /**
43
- * Validate mandatory fields in the class
44
- *
45
- * @throws {Error} In case of missing or invalid fields
46
- */
47
- validateMandatoryFields(): void;
48
- }
49
- //# sourceMappingURL=delegateBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delegateBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/delegateBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EACL,OAAO,EAMR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAa,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAkB5C,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IAEvC;;;;OAIG;gBACS,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAmB3D,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAOlC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAOvD;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAa/B;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQhC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAY5B;;;;OAIG;IACH,uBAAuB,IAAI,IAAI;CAUhC"}