@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.
- package/.mocharc.yml +1 -1
- package/CHANGELOG.md +593 -0
- package/package.json +9 -9
- package/dist/src/cspr.d.ts +0 -104
- package/dist/src/cspr.d.ts.map +0 -1
- package/dist/src/cspr.js +0 -292
- package/dist/src/index.d.ts +0 -5
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -30
- package/dist/src/lib/constants.d.ts +0 -19
- package/dist/src/lib/constants.d.ts.map +0 -1
- package/dist/src/lib/constants.js +0 -28
- package/dist/src/lib/delegateBuilder.d.ts +0 -49
- package/dist/src/lib/delegateBuilder.d.ts.map +0 -1
- package/dist/src/lib/delegateBuilder.js +0 -111
- package/dist/src/lib/ifaces.d.ts +0 -69
- package/dist/src/lib/ifaces.d.ts.map +0 -1
- package/dist/src/lib/ifaces.js +0 -3
- package/dist/src/lib/index.d.ts +0 -6
- package/dist/src/lib/index.d.ts.map +0 -1
- package/dist/src/lib/index.js +0 -31
- package/dist/src/lib/keyPair.d.ts +0 -18
- package/dist/src/lib/keyPair.d.ts.map +0 -1
- package/dist/src/lib/keyPair.js +0 -56
- package/dist/src/lib/transaction.d.ts +0 -55
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -227
- package/dist/src/lib/transactionBuilder.d.ts +0 -124
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -312
- package/dist/src/lib/transactionBuilderFactory.d.ts +0 -46
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilderFactory.js +0 -98
- package/dist/src/lib/transferBuilder.d.ts +0 -39
- package/dist/src/lib/transferBuilder.d.ts.map +0 -1
- package/dist/src/lib/transferBuilder.js +0 -106
- package/dist/src/lib/undelegateBuilder.d.ts +0 -49
- package/dist/src/lib/undelegateBuilder.d.ts.map +0 -1
- package/dist/src/lib/undelegateBuilder.js +0 -111
- package/dist/src/lib/utils.d.ts +0 -188
- package/dist/src/lib/utils.d.ts.map +0 -1
- package/dist/src/lib/utils.js +0 -477
- package/dist/src/lib/walletInitializationBuilder.d.ts +0 -27
- package/dist/src/lib/walletInitializationBuilder.d.ts.map +0 -1
- package/dist/src/lib/walletInitializationBuilder.js +0 -95
- package/dist/src/register.d.ts +0 -3
- package/dist/src/register.d.ts.map +0 -1
- package/dist/src/register.js +0 -11
- package/dist/src/tcspr.d.ts +0 -11
- package/dist/src/tcspr.d.ts.map +0 -1
- package/dist/src/tcspr.js +0 -24
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TransferBuilder = void 0;
|
|
4
|
-
const casper_js_sdk_1 = require("casper-js-sdk");
|
|
5
|
-
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
6
|
-
const transactionBuilder_1 = require("./transactionBuilder");
|
|
7
|
-
const constants_1 = require("./constants");
|
|
8
|
-
const utils_1 = require("./utils");
|
|
9
|
-
class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
10
|
-
constructor(_coinConfig) {
|
|
11
|
-
super(_coinConfig);
|
|
12
|
-
}
|
|
13
|
-
/** @inheritdoc */
|
|
14
|
-
async buildImplementation() {
|
|
15
|
-
const extraArguments = new Map();
|
|
16
|
-
if (this._toAddress) {
|
|
17
|
-
extraArguments.set(constants_1.TRANSACTION_TYPE, casper_js_sdk_1.CLValueBuilder.string(sdk_core_1.TransactionType[sdk_core_1.TransactionType.Send]));
|
|
18
|
-
extraArguments.set(constants_1.TRANSFER_TO_ADDRESS, casper_js_sdk_1.CLValueBuilder.string(this._toAddress));
|
|
19
|
-
}
|
|
20
|
-
this._session = {
|
|
21
|
-
amount: this._amount,
|
|
22
|
-
target: casper_js_sdk_1.CLPublicKey.fromHex(this._toAddress),
|
|
23
|
-
id: this._transferId,
|
|
24
|
-
extraArguments: extraArguments,
|
|
25
|
-
};
|
|
26
|
-
this.transaction.setTransactionType(sdk_core_1.TransactionType.Send);
|
|
27
|
-
return await super.buildImplementation();
|
|
28
|
-
}
|
|
29
|
-
/** @inheritdoc */
|
|
30
|
-
initBuilder(tx) {
|
|
31
|
-
super.initBuilder(tx);
|
|
32
|
-
this.transaction.setTransactionType(sdk_core_1.TransactionType.Send);
|
|
33
|
-
this.to(utils_1.getTransferDestinationAddress(tx.casperTx.session));
|
|
34
|
-
this.amount(utils_1.getTransferAmount(tx.casperTx.session));
|
|
35
|
-
const transferId = utils_1.getTransferId(tx.casperTx.session);
|
|
36
|
-
if (transferId !== undefined) {
|
|
37
|
-
this.transferId(transferId);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/** @inheritdoc */
|
|
41
|
-
signImplementation(key) {
|
|
42
|
-
if (this._multiSignerKeyPairs.length >= transactionBuilder_1.DEFAULT_M) {
|
|
43
|
-
throw new sdk_core_1.SigningError('A maximum of ' + transactionBuilder_1.DEFAULT_M + ' can sign the transaction.');
|
|
44
|
-
}
|
|
45
|
-
return super.signImplementation(key);
|
|
46
|
-
}
|
|
47
|
-
// region Transfer fields
|
|
48
|
-
/**
|
|
49
|
-
* Set the destination address where the funds will be sent,
|
|
50
|
-
*
|
|
51
|
-
* @param {string} address the address to transfer funds to
|
|
52
|
-
* @returns {TransferBuilder} the builder with the new parameter set
|
|
53
|
-
*/
|
|
54
|
-
to(address) {
|
|
55
|
-
if (!utils_1.isValidAddress(address)) {
|
|
56
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid address');
|
|
57
|
-
}
|
|
58
|
-
this._toAddress = address;
|
|
59
|
-
return this;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Set the amount to be transferred
|
|
63
|
-
*
|
|
64
|
-
* @param {string} amount amount to transfer in motes (1 Cspr equals 1,000,000,000 motes)
|
|
65
|
-
* @returns {TransferBuilder} the builder with the new parameter set
|
|
66
|
-
*/
|
|
67
|
-
amount(amount) {
|
|
68
|
-
if (!utils_1.isValidTransferAmount(amount)) {
|
|
69
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid amount');
|
|
70
|
-
}
|
|
71
|
-
this._amount = amount;
|
|
72
|
-
return this;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Set transfer id that acts as a transaction identifier (similar to memo id for Stellar)
|
|
76
|
-
*
|
|
77
|
-
* @param {number} id transfer id
|
|
78
|
-
* @returns {TransferBuilder} the builder with the new parameter set
|
|
79
|
-
*/
|
|
80
|
-
transferId(id) {
|
|
81
|
-
if (!utils_1.isValidTransferId(id)) {
|
|
82
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid transfer id');
|
|
83
|
-
}
|
|
84
|
-
this._transferId = id.toString();
|
|
85
|
-
return this;
|
|
86
|
-
}
|
|
87
|
-
// endregion
|
|
88
|
-
// region Validators
|
|
89
|
-
validateMandatoryFields() {
|
|
90
|
-
if (!this._toAddress) {
|
|
91
|
-
throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing to');
|
|
92
|
-
}
|
|
93
|
-
if (!utils_1.isValidAddress(this._toAddress)) {
|
|
94
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid to address');
|
|
95
|
-
}
|
|
96
|
-
if (!this._amount) {
|
|
97
|
-
throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing amount');
|
|
98
|
-
}
|
|
99
|
-
if (!utils_1.isValidTransferAmount(this._amount)) {
|
|
100
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid amount');
|
|
101
|
-
}
|
|
102
|
-
super.validateMandatoryFields();
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
exports.TransferBuilder = TransferBuilder;
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQWtGO0FBQ2xGLG1EQU04QjtBQUM5Qiw2REFBcUU7QUFFckUsMkNBQW9FO0FBQ3BFLG1DQU9pQjtBQUVqQixNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBS3JELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO1FBQ2xELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixjQUFjLENBQUMsR0FBRyxDQUFDLDRCQUFnQixFQUFFLDhCQUFjLENBQUMsTUFBTSxDQUFDLDBCQUFlLENBQUMsMEJBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkcsY0FBYyxDQUFDLEdBQUcsQ0FBQywrQkFBbUIsRUFBRSw4QkFBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUNqRjtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDcEIsTUFBTSxFQUFFLDJCQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDMUMsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFxQjtZQUM5QixjQUFjLEVBQUUsY0FBYztTQUMvQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQywwQkFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELE9BQU8sTUFBTSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsa0JBQWtCO0lB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Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IENMVmFsdWUsIENMUHVibGljS2V5IGFzIFB1YmxpY0tleSwgQ0xWYWx1ZUJ1aWxkZXIgfSBmcm9tICdjYXNwZXItanMtc2RrJztcbmltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IsXG4gIFNpZ25pbmdFcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIsIERFRkFVTFRfTSB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUUkFOU0FDVElPTl9UWVBFLCBUUkFOU0ZFUl9UT19BRERSRVNTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgaXNWYWxpZFRyYW5zZmVyQW1vdW50LFxuICBpc1ZhbGlkVHJhbnNmZXJJZCxcbiAgZ2V0VHJhbnNmZXJEZXN0aW5hdGlvbkFkZHJlc3MsXG4gIGdldFRyYW5zZmVyQW1vdW50LFxuICBnZXRUcmFuc2ZlcklkLFxuICBpc1ZhbGlkQWRkcmVzcyxcbn0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF90b0FkZHJlc3M6IHN0cmluZztcbiAgcHJpdmF0ZSBfYW1vdW50OiBzdHJpbmc7XG4gIHByaXZhdGUgX3RyYW5zZmVySWQ6IG51bWJlciB8IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IGV4dHJhQXJndW1lbnRzID0gbmV3IE1hcDxzdHJpbmcsIENMVmFsdWU+KCk7XG4gICAgaWYgKHRoaXMuX3RvQWRkcmVzcykge1xuICAgICAgZXh0cmFBcmd1bWVudHMuc2V0KFRSQU5TQUNUSU9OX1RZUEUsIENMVmFsdWVCdWlsZGVyLnN0cmluZyhUcmFuc2FjdGlvblR5cGVbVHJhbnNhY3Rpb25UeXBlLlNlbmRdKSk7XG4gICAgICBleHRyYUFyZ3VtZW50cy5zZXQoVFJBTlNGRVJfVE9fQUREUkVTUywgQ0xWYWx1ZUJ1aWxkZXIuc3RyaW5nKHRoaXMuX3RvQWRkcmVzcykpO1xuICAgIH1cbiAgICB0aGlzLl9zZXNzaW9uID0ge1xuICAgICAgYW1vdW50OiB0aGlzLl9hbW91bnQsXG4gICAgICB0YXJnZXQ6IFB1YmxpY0tleS5mcm9tSGV4KHRoaXMuX3RvQWRkcmVzcyksXG4gICAgICBpZDogdGhpcy5fdHJhbnNmZXJJZCBhcyBzdHJpbmcsXG4gICAgICBleHRyYUFyZ3VtZW50czogZXh0cmFBcmd1bWVudHMsXG4gICAgfTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmJ1aWxkSW1wbGVtZW50YXRpb24oKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgIHRoaXMudG8oZ2V0VHJhbnNmZXJEZXN0aW5hdGlvbkFkZHJlc3ModHguY2FzcGVyVHguc2Vzc2lvbikpO1xuICAgIHRoaXMuYW1vdW50KGdldFRyYW5zZmVyQW1vdW50KHR4LmNhc3BlclR4LnNlc3Npb24pKTtcbiAgICBjb25zdCB0cmFuc2ZlcklkID0gZ2V0VHJhbnNmZXJJZCh0eC5jYXNwZXJUeC5zZXNzaW9uKTtcbiAgICBpZiAodHJhbnNmZXJJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRyYW5zZmVySWQodHJhbnNmZXJJZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oa2V5OiBCYXNlS2V5KTogVHJhbnNhY3Rpb24ge1xuICAgIGlmICh0aGlzLl9tdWx0aVNpZ25lcktleVBhaXJzLmxlbmd0aCA+PSBERUZBVUxUX00pIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0EgbWF4aW11bSBvZiAnICsgREVGQVVMVF9NICsgJyBjYW4gc2lnbiB0aGUgdHJhbnNhY3Rpb24uJyk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5zaWduSW1wbGVtZW50YXRpb24oa2V5KTtcbiAgfVxuXG4gIC8vIHJlZ2lvbiBUcmFuc2ZlciBmaWVsZHNcbiAgLyoqXG4gICAqIFNldCB0aGUgZGVzdGluYXRpb24gYWRkcmVzcyB3aGVyZSB0aGUgZnVuZHMgd2lsbCBiZSBzZW50LFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyB0aGUgYWRkcmVzcyB0byB0cmFuc2ZlciBmdW5kcyB0b1xuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJCdWlsZGVyfSB0aGUgYnVpbGRlciB3aXRoIHRoZSBuZXcgcGFyYW1ldGVyIHNldFxuICAgKi9cbiAgdG8oYWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGFkZHJlc3MnKTtcbiAgICB9XG4gICAgdGhpcy5fdG9BZGRyZXNzID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IGFtb3VudCB0byB0cmFuc2ZlciBpbiBtb3RlcyAoMSBDc3ByIGVxdWFscyAxLDAwMCwwMDAsMDAwIG1vdGVzKVxuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJCdWlsZGVyfSB0aGUgYnVpbGRlciB3aXRoIHRoZSBuZXcgcGFyYW1ldGVyIHNldFxuICAgKi9cbiAgYW1vdW50KGFtb3VudDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpc1ZhbGlkVHJhbnNmZXJBbW91bnQoYW1vdW50KSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGFtb3VudCcpO1xuICAgIH1cbiAgICB0aGlzLl9hbW91bnQgPSBhbW91bnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRyYW5zZmVyIGlkIHRoYXQgYWN0cyBhcyBhIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIgKHNpbWlsYXIgdG8gbWVtbyBpZCBmb3IgU3RlbGxhcilcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIHRyYW5zZmVyIGlkXG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckJ1aWxkZXJ9IHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICB0cmFuc2ZlcklkKGlkOiBudW1iZXIgfCBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRUcmFuc2ZlcklkKGlkKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIHRyYW5zZmVyIGlkJyk7XG4gICAgfVxuICAgIHRoaXMuX3RyYW5zZmVySWQgPSBpZC50b1N0cmluZygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgdmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90b0FkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgdG8nKTtcbiAgICB9XG4gICAgaWYgKCFpc1ZhbGlkQWRkcmVzcyh0aGlzLl90b0FkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgdG8gYWRkcmVzcycpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX2Ftb3VudCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBhbW91bnQnKTtcbiAgICB9XG4gICAgaWYgKCFpc1ZhbGlkVHJhbnNmZXJBbW91bnQodGhpcy5fYW1vdW50KSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGFtb3VudCcpO1xuICAgIH1cbiAgICBzdXBlci52YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpO1xuICB9XG4gIC8vIGVuZHJlZ2lvblxufVxuIl19
|
|
@@ -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 UndelegateBuilder extends TransactionBuilder {
|
|
6
|
-
private _validator;
|
|
7
|
-
private _action;
|
|
8
|
-
private _amount;
|
|
9
|
-
private _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 buildUndelegateParameters;
|
|
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 {UndelegateBuilder} 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 {UndelegateBuilder} 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=undelegateBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"undelegateBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/undelegateBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,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,iBAAkB,SAAQ,kBAAkB;IACvD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAa;IAE9B;;;;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,yBAAyB;IAajC;;;;;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"}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UndelegateBuilder = void 0;
|
|
4
|
-
const casper_js_sdk_1 = require("casper-js-sdk");
|
|
5
|
-
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
6
|
-
const transactionBuilder_1 = require("./transactionBuilder");
|
|
7
|
-
const constants_1 = require("./constants");
|
|
8
|
-
const utils_1 = require("./utils");
|
|
9
|
-
class UndelegateBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
10
|
-
/**
|
|
11
|
-
* Public constructor.
|
|
12
|
-
*
|
|
13
|
-
* @param {CoinConfig} _coinConfig Coin configuration object
|
|
14
|
-
*/
|
|
15
|
-
constructor(_coinConfig) {
|
|
16
|
-
super(_coinConfig);
|
|
17
|
-
this._action = constants_1.UNDELEGATE_CONTRACT_ACTION;
|
|
18
|
-
this._contract = Uint8Array.from(Buffer.from(utils_1.casperContractHexCode, 'hex'));
|
|
19
|
-
}
|
|
20
|
-
/** @inheritdoc */
|
|
21
|
-
async buildImplementation() {
|
|
22
|
-
this._validator = this._validator || constants_1.DELEGATE_VALIDATOR_ACCOUNT;
|
|
23
|
-
const args = this.buildUndelegateParameters();
|
|
24
|
-
const extraArguments = new Map();
|
|
25
|
-
extraArguments.set(constants_1.TRANSACTION_TYPE, casper_js_sdk_1.CLValueBuilder.string(sdk_core_1.TransactionType[sdk_core_1.TransactionType.StakingUnlock]));
|
|
26
|
-
extraArguments.set(constants_1.STAKING_TYPE, casper_js_sdk_1.CLValueBuilder.string(sdk_core_1.StakingOperationTypes[sdk_core_1.StakingOperationTypes.UNLOCK]));
|
|
27
|
-
extraArguments.set(constants_1.DELEGATE_FROM_ADDRESS, casper_js_sdk_1.CLValueBuilder.string(this._source.address));
|
|
28
|
-
extraArguments.set(constants_1.DELEGATE_VALIDATOR, casper_js_sdk_1.CLValueBuilder.string(this._validator));
|
|
29
|
-
this._session = {
|
|
30
|
-
moduleBytes: this._contract,
|
|
31
|
-
args: casper_js_sdk_1.RuntimeArgs.fromMap(args),
|
|
32
|
-
extraArguments: extraArguments,
|
|
33
|
-
};
|
|
34
|
-
this.transaction.setTransactionType(sdk_core_1.TransactionType.StakingUnlock);
|
|
35
|
-
return await super.buildImplementation();
|
|
36
|
-
}
|
|
37
|
-
/** @inheritdoc */
|
|
38
|
-
initBuilder(tx) {
|
|
39
|
-
super.initBuilder(tx);
|
|
40
|
-
this.transaction.setTransactionType(sdk_core_1.TransactionType.StakingUnlock);
|
|
41
|
-
this.validator(utils_1.getValidatorAddress(tx.casperTx.session));
|
|
42
|
-
this.amount(utils_1.getTransferAmount(tx.casperTx.session));
|
|
43
|
-
}
|
|
44
|
-
/** @inheritdoc */
|
|
45
|
-
signImplementation(key) {
|
|
46
|
-
if (this._multiSignerKeyPairs.length >= transactionBuilder_1.DEFAULT_M) {
|
|
47
|
-
throw new sdk_core_1.SigningError('A maximum of ' + transactionBuilder_1.DEFAULT_M + ' can sign the transaction.');
|
|
48
|
-
}
|
|
49
|
-
return super.signImplementation(key);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Build args needed to create a session, then we can send this session with the contract
|
|
53
|
-
*
|
|
54
|
-
* @returns {DelegateUndelegateContractArgs} contracts args to create a session
|
|
55
|
-
*/
|
|
56
|
-
buildUndelegateParameters() {
|
|
57
|
-
const delegator = casper_js_sdk_1.CLPublicKey.fromHex(this._source.address);
|
|
58
|
-
const validator = casper_js_sdk_1.CLPublicKey.fromHex(this._validator);
|
|
59
|
-
return {
|
|
60
|
-
action: casper_js_sdk_1.CLValueBuilder.string(this._action),
|
|
61
|
-
delegator: casper_js_sdk_1.CLValueBuilder.publicKey(delegator.value(), delegator.tag),
|
|
62
|
-
validator: casper_js_sdk_1.CLValueBuilder.publicKey(validator.value(), validator.tag),
|
|
63
|
-
amount: casper_js_sdk_1.CLValueBuilder.u512(this._amount),
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
// region Transfer fields
|
|
67
|
-
/**
|
|
68
|
-
* Set the destination address where the funds will be sent,
|
|
69
|
-
*
|
|
70
|
-
* @param {string} address the 68 bits address to transfer funds to
|
|
71
|
-
* @returns {UndelegateBuilder} the builder with the new parameter set
|
|
72
|
-
*/
|
|
73
|
-
validator(address) {
|
|
74
|
-
if (!utils_1.isValidAddress(address)) {
|
|
75
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid address');
|
|
76
|
-
}
|
|
77
|
-
this._validator = address;
|
|
78
|
-
return this;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Set the amount to be transferred
|
|
82
|
-
*
|
|
83
|
-
* @param {string} amount amount to transfer
|
|
84
|
-
* @returns {UndelegateBuilder} the builder with the new parameter set
|
|
85
|
-
*/
|
|
86
|
-
amount(amount) {
|
|
87
|
-
if (!utils_1.isValidDelegateAmount(amount)) {
|
|
88
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid amount');
|
|
89
|
-
}
|
|
90
|
-
this._amount = amount;
|
|
91
|
-
return this;
|
|
92
|
-
}
|
|
93
|
-
// endregion
|
|
94
|
-
// region Validators
|
|
95
|
-
/**
|
|
96
|
-
* Validate mandatory fields in the class
|
|
97
|
-
*
|
|
98
|
-
* @throws {Error} In case of missing or invalid fields
|
|
99
|
-
*/
|
|
100
|
-
validateMandatoryFields() {
|
|
101
|
-
if (!this._amount) {
|
|
102
|
-
throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing amount');
|
|
103
|
-
}
|
|
104
|
-
if (!utils_1.isValidDelegateAmount(this._amount)) {
|
|
105
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid amount');
|
|
106
|
-
}
|
|
107
|
-
super.validateMandatoryFields();
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
exports.UndelegateBuilder = UndelegateBuilder;
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kZWxlZ2F0ZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3VuZGVsZWdhdGVCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGlEQUErRjtBQUMvRixtREFPOEI7QUFDOUIsNkRBQXFFO0FBRXJFLDJDQU9xQjtBQUNyQixtQ0FNaUI7QUFHakIsTUFBYSxpQkFBa0IsU0FBUSx1Q0FBa0I7SUFNdkQ7Ozs7T0FJRztJQUNILFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsc0NBQTBCLENBQUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksc0NBQTBCLENBQUM7UUFDaEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDOUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7UUFFbEQsY0FBYyxDQUFDLEdBQUcsQ0FBQyw0QkFBZ0IsRUFBRSw4QkFBYyxDQUFDLE1BQU0sQ0FBQywwQkFBZSxDQUFDLDBCQUFlLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVHLGNBQWMsQ0FBQyxHQUFHLENBQUMsd0JBQVksRUFBRSw4QkFBYyxDQUFDLE1BQU0sQ0FBQyxnQ0FBcUIsQ0FBQyxnQ0FBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0csY0FBYyxDQUFDLEdBQUcsQ0FBQyxpQ0FBcUIsRUFBRSw4QkFBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENB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Qjs7OztPQUlHO0lBQ0gsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsSUFBSSxDQUFDLDZCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QyxNQUFNLElBQUkscUNBQTBCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUN4RDtRQUNELEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2xDLENBQUM7Q0FFRjtBQXRIRCw4Q0FzSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBDTFZhbHVlLCBDTFB1YmxpY0tleSBhcyBQdWJsaWNLZXksIFJ1bnRpbWVBcmdzLCBDTFZhbHVlQnVpbGRlciB9IGZyb20gJ2Nhc3Blci1qcy1zZGsnO1xuaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBUcmFuc2FjdGlvblR5cGUsXG4gIFN0YWtpbmdPcGVyYXRpb25UeXBlcyxcbiAgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IsXG4gIFNpZ25pbmdFcnJvcixcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyLCBERUZBVUxUX00gfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHtcbiAgVFJBTlNBQ1RJT05fVFlQRSxcbiAgREVMRUdBVEVfVkFMSURBVE9SLFxuICBERUxFR0FURV9GUk9NX0FERFJFU1MsXG4gIFNUQUtJTkdfVFlQRSxcbiAgVU5ERUxFR0FURV9DT05UUkFDVF9BQ1RJT04sXG4gIERFTEVHQVRFX1ZBTElEQVRPUl9BQ0NPVU5ULFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBpc1ZhbGlkRGVsZWdhdGVBbW91bnQsXG4gIGlzVmFsaWRBZGRyZXNzLFxuICBnZXRUcmFuc2ZlckFtb3VudCxcbiAgZ2V0VmFsaWRhdG9yQWRkcmVzcyxcbiAgY2FzcGVyQ29udHJhY3RIZXhDb2RlLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IERlbGVnYXRlVW5kZWxlZ2F0ZUNvbnRyYWN0QXJncyB9IGZyb20gJy4vaWZhY2VzJztcblxuZXhwb3J0IGNsYXNzIFVuZGVsZWdhdGVCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSBfdmFsaWRhdG9yOiBzdHJpbmc7XG4gIHByaXZhdGUgX2FjdGlvbjogc3RyaW5nO1xuICBwcml2YXRlIF9hbW91bnQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfY29udHJhY3Q6IFVpbnQ4QXJyYXk7XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIHtDb2luQ29uZmlnfSBfY29pbkNvbmZpZyBDb2luIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqL1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fYWN0aW9uID0gVU5ERUxFR0FURV9DT05UUkFDVF9BQ1RJT047XG4gICAgdGhpcy5fY29udHJhY3QgPSBVaW50OEFycmF5LmZyb20oQnVmZmVyLmZyb20oY2FzcGVyQ29udHJhY3RIZXhDb2RlLCAnaGV4JykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLl92YWxpZGF0b3IgPSB0aGlzLl92YWxpZGF0b3IgfHwgREVMRUdBVEVfVkFMSURBVE9SX0FDQ09VTlQ7XG4gICAgY29uc3QgYXJncyA9IHRoaXMuYnVpbGRVbmRlbGVnYXRlUGFyYW1ldGVycygpO1xuICAgIGNvbnN0IGV4dHJhQXJndW1lbnRzID0gbmV3IE1hcDxzdHJpbmcsIENMVmFsdWU+KCk7XG5cbiAgICBleHRyYUFyZ3VtZW50cy5zZXQoVFJBTlNBQ1RJT05fVFlQRSwgQ0xWYWx1ZUJ1aWxkZXIuc3RyaW5nKFRyYW5zYWN0aW9uVHlwZVtUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9ja10pKTtcbiAgICBleHRyYUFyZ3VtZW50cy5zZXQoU1RBS0lOR19UWVBFLCBDTFZhbHVlQnVpbGRlci5zdHJpbmcoU3Rha2luZ09wZXJhdGlvblR5cGVzW1N0YWtpbmdPcGVyYXRpb25UeXBlcy5VTkxPQ0tdKSk7XG4gICAgZXh0cmFBcmd1bWVudHMuc2V0KERFTEVHQVRFX0ZST01fQUREUkVTUywgQ0xWYWx1ZUJ1aWxkZXIuc3RyaW5nKHRoaXMuX3NvdXJjZS5hZGRyZXNzKSk7XG4gICAgZXh0cmFBcmd1bWVudHMuc2V0KERFTEVHQVRFX1ZBTElEQVRPUiwgQ0xWYWx1ZUJ1aWxkZXIuc3RyaW5nKHRoaXMuX3ZhbGlkYXRvcikpO1xuXG4gICAgdGhpcy5fc2Vzc2lvbiA9IHtcbiAgICAgIG1vZHVsZUJ5dGVzOiB0aGlzLl9jb250cmFjdCxcbiAgICAgIGFyZ3M6IFJ1bnRpbWVBcmdzLmZyb21NYXAoYXJncyksXG4gICAgICBleHRyYUFyZ3VtZW50czogZXh0cmFBcmd1bWVudHMsXG4gICAgfTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jayk7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmJ1aWxkSW1wbGVtZW50YXRpb24oKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2spO1xuICAgIHRoaXMudmFsaWRhdG9yKGdldFZhbGlkYXRvckFkZHJlc3ModHguY2FzcGVyVHguc2Vzc2lvbikpO1xuICAgIHRoaXMuYW1vdW50KGdldFRyYW5zZmVyQW1vdW50KHR4LmNhc3BlclR4LnNlc3Npb24pKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICBpZiAodGhpcy5fbXVsdGlTaWduZXJLZXlQYWlycy5sZW5ndGggPj0gREVGQVVMVF9NKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdBIG1heGltdW0gb2YgJyArIERFRkFVTFRfTSArICcgY2FuIHNpZ24gdGhlIHRyYW5zYWN0aW9uLicpO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuc2lnbkltcGxlbWVudGF0aW9uKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYXJncyBuZWVkZWQgdG8gY3JlYXRlIGEgc2Vzc2lvbiwgdGhlbiB3ZSBjYW4gc2VuZCB0aGlzIHNlc3Npb24gd2l0aCB0aGUgY29udHJhY3RcbiAgICpcbiAgICogQHJldHVybnMge0RlbGVnYXRlVW5kZWxlZ2F0ZUNvbnRyYWN0QXJnc30gY29udHJhY3RzIGFyZ3MgdG8gY3JlYXRlIGEgc2Vzc2lvblxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFVuZGVsZWdhdGVQYXJhbWV0ZXJzKCk6IERlbGVnYXRlVW5kZWxlZ2F0ZUNvbnRyYWN0QXJncyB7XG4gICAgY29uc3QgZGVsZWdhdG9yID0gUHVibGljS2V5LmZyb21IZXgodGhpcy5fc291cmNlLmFkZHJlc3MpO1xuICAgIGNvbnN0IHZhbGlkYXRvciA9IFB1YmxpY0tleS5mcm9tSGV4KHRoaXMuX3ZhbGlkYXRvcik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uOiBDTFZhbHVlQnVpbGRlci5zdHJpbmcodGhpcy5fYWN0aW9uKSxcbiAgICAgIGRlbGVnYXRvcjogQ0xWYWx1ZUJ1aWxkZXIucHVibGljS2V5KGRlbGVnYXRvci52YWx1ZSgpLCBkZWxlZ2F0b3IudGFnKSxcbiAgICAgIHZhbGlkYXRvcjogQ0xWYWx1ZUJ1aWxkZXIucHVibGljS2V5KHZhbGlkYXRvci52YWx1ZSgpLCB2YWxpZGF0b3IudGFnKSxcbiAgICAgIGFtb3VudDogQ0xWYWx1ZUJ1aWxkZXIudTUxMih0aGlzLl9hbW91bnQpLFxuICAgIH07XG4gIH1cblxuICAvLyByZWdpb24gVHJhbnNmZXIgZmllbGRzXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3Mgd2hlcmUgdGhlIGZ1bmRzIHdpbGwgYmUgc2VudCxcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgdGhlIDY4IGJpdHMgYWRkcmVzcyB0byB0cmFuc2ZlciBmdW5kcyB0b1xuICAgKiBAcmV0dXJucyB7VW5kZWxlZ2F0ZUJ1aWxkZXJ9IHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICB2YWxpZGF0b3IoYWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGFkZHJlc3MnKTtcbiAgICB9XG4gICAgdGhpcy5fdmFsaWRhdG9yID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IGFtb3VudCB0byB0cmFuc2ZlclxuICAgKiBAcmV0dXJucyB7VW5kZWxlZ2F0ZUJ1aWxkZXJ9IHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICBhbW91bnQoYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWREZWxlZ2F0ZUFtb3VudChhbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYW1vdW50Jyk7XG4gICAgfVxuICAgIHRoaXMuX2Ftb3VudCA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIG1hbmRhdG9yeSBmaWVsZHMgaW4gdGhlIGNsYXNzXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJbiBjYXNlIG9mIG1pc3Npbmcgb3IgaW52YWxpZCBmaWVsZHNcbiAgICovXG4gIHZhbGlkYXRlTWFuZGF0b3J5RmllbGRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYW1vdW50KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGFtb3VudCcpO1xuICAgIH1cbiAgICBpZiAoIWlzVmFsaWREZWxlZ2F0ZUFtb3VudCh0aGlzLl9hbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYW1vdW50Jyk7XG4gICAgfVxuICAgIHN1cGVyLnZhbGlkYXRlTWFuZGF0b3J5RmllbGRzKCk7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=
|