@bitgo-beta/sdk-coin-cspr 1.2.19-beta.1221 → 1.2.19-beta.1223
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/dist/src/cspr.d.ts +107 -0
- package/dist/src/cspr.d.ts.map +1 -0
- package/dist/src/cspr.js +314 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +44 -0
- package/dist/src/lib/constants.d.ts +19 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +28 -0
- package/dist/src/lib/delegateBuilder.d.ts +49 -0
- package/dist/src/lib/delegateBuilder.d.ts.map +1 -0
- package/dist/src/lib/delegateBuilder.js +111 -0
- package/dist/src/lib/ifaces.d.ts +69 -0
- package/dist/src/lib/ifaces.d.ts.map +1 -0
- package/dist/src/lib/ifaces.js +3 -0
- package/dist/src/lib/index.d.ts +6 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +45 -0
- package/dist/src/lib/keyPair.d.ts +18 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +55 -0
- package/dist/src/lib/transaction.d.ts +55 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +240 -0
- package/dist/src/lib/transactionBuilder.d.ts +124 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +312 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +46 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilderFactory.js +98 -0
- package/dist/src/lib/transferBuilder.d.ts +39 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +106 -0
- package/dist/src/lib/undelegateBuilder.d.ts +49 -0
- package/dist/src/lib/undelegateBuilder.d.ts.map +1 -0
- package/dist/src/lib/undelegateBuilder.js +111 -0
- package/dist/src/lib/utils.d.ts +188 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +490 -0
- package/dist/src/lib/walletInitializationBuilder.d.ts +27 -0
- package/dist/src/lib/walletInitializationBuilder.d.ts.map +1 -0
- package/dist/src/lib/walletInitializationBuilder.js +95 -0
- package/dist/src/register.d.ts +3 -0
- package/dist/src/register.d.ts.map +1 -0
- package/dist/src/register.js +11 -0
- package/dist/src/tcspr.d.ts +11 -0
- package/dist/src/tcspr.d.ts.map +1 -0
- package/dist/src/tcspr.js +24 -0
- package/package.json +6 -6
|
@@ -0,0 +1,106 @@
|
|
|
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((0, utils_1.getTransferDestinationAddress)(tx.casperTx.session));
|
|
34
|
+
this.amount((0, utils_1.getTransferAmount)(tx.casperTx.session));
|
|
35
|
+
const transferId = (0, 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 (!(0, 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 (!(0, 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 (!(0, 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 (!(0, 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 (!(0, 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQWtGO0FBQ2xGLG1EQU04QjtBQUM5Qiw2REFBcUU7QUFFckUsMkNBQW9FO0FBQ3BFLG1DQU9pQjtBQUVqQixNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBS3JELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO1FBQ2xELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLGNBQWMsQ0FBQyxHQUFHLENBQUMsNEJBQWdCLEVBQUUsOEJBQWMsQ0FBQyxNQUFNLENBQUMsMEJBQWUsQ0FBQywwQkFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRyxjQUFjLENBQUMsR0FBRyxDQUFDLCtCQUFtQixFQUFFLDhCQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3BCLE1BQU0sRUFBRSwyQkFBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQzFDLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBcUI7WUFDOUIsY0FBYyxFQUFFLGNBQWM7U0FDL0IsQ0FBQztRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsMEJBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRCxPQUFPLE1BQU0sS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVE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QUFDO1FBQ3pELENBQUM7UUFDRCxLQUFLLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0NBRUY7QUE1R0QsMENBNEdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQ0xWYWx1ZSwgQ0xQdWJsaWNLZXkgYXMgUHVibGljS2V5LCBDTFZhbHVlQnVpbGRlciB9IGZyb20gJ2Nhc3Blci1qcy1zZGsnO1xuaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcixcbiAgU2lnbmluZ0Vycm9yLFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciwgREVGQVVMVF9NIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRSQU5TQUNUSU9OX1RZUEUsIFRSQU5TRkVSX1RPX0FERFJFU1MgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBpc1ZhbGlkVHJhbnNmZXJBbW91bnQsXG4gIGlzVmFsaWRUcmFuc2ZlcklkLFxuICBnZXRUcmFuc2ZlckRlc3RpbmF0aW9uQWRkcmVzcyxcbiAgZ2V0VHJhbnNmZXJBbW91bnQsXG4gIGdldFRyYW5zZmVySWQsXG4gIGlzVmFsaWRBZGRyZXNzLFxufSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX3RvQWRkcmVzczogc3RyaW5nO1xuICBwcml2YXRlIF9hbW91bnQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfdHJhbnNmZXJJZDogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgZXh0cmFBcmd1bWVudHMgPSBuZXcgTWFwPHN0cmluZywgQ0xWYWx1ZT4oKTtcbiAgICBpZiAodGhpcy5fdG9BZGRyZXNzKSB7XG4gICAgICBleHRyYUFyZ3VtZW50cy5zZXQoVFJBTlNBQ1RJT05fVFlQRSwgQ0xWYWx1ZUJ1aWxkZXIuc3RyaW5nKFRyYW5zYWN0aW9uVHlwZVtUcmFuc2FjdGlvblR5cGUuU2VuZF0pKTtcbiAgICAgIGV4dHJhQXJndW1lbnRzLnNldChUUkFOU0ZFUl9UT19BRERSRVNTLCBDTFZhbHVlQnVpbGRlci5zdHJpbmcodGhpcy5fdG9BZGRyZXNzKSk7XG4gICAgfVxuICAgIHRoaXMuX3Nlc3Npb24gPSB7XG4gICAgICBhbW91bnQ6IHRoaXMuX2Ftb3VudCxcbiAgICAgIHRhcmdldDogUHVibGljS2V5LmZyb21IZXgodGhpcy5fdG9BZGRyZXNzKSxcbiAgICAgIGlkOiB0aGlzLl90cmFuc2ZlcklkIGFzIHN0cmluZyxcbiAgICAgIGV4dHJhQXJndW1lbnRzOiBleHRyYUFyZ3VtZW50cyxcbiAgICB9O1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgdGhpcy50byhnZXRUcmFuc2ZlckRlc3RpbmF0aW9uQWRkcmVzcyh0eC5jYXNwZXJUeC5zZXNzaW9uKSk7XG4gICAgdGhpcy5hbW91bnQoZ2V0VHJhbnNmZXJBbW91bnQodHguY2FzcGVyVHguc2Vzc2lvbikpO1xuICAgIGNvbnN0IHRyYW5zZmVySWQgPSBnZXRUcmFuc2ZlcklkKHR4LmNhc3BlclR4LnNlc3Npb24pO1xuICAgIGlmICh0cmFuc2ZlcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudHJhbnNmZXJJZCh0cmFuc2ZlcklkKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgaWYgKHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMubGVuZ3RoID49IERFRkFVTFRfTSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignQSBtYXhpbXVtIG9mICcgKyBERUZBVUxUX00gKyAnIGNhbiBzaWduIHRoZSB0cmFuc2FjdGlvbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnNpZ25JbXBsZW1lbnRhdGlvbihrZXkpO1xuICB9XG5cbiAgLy8gcmVnaW9uIFRyYW5zZmVyIGZpZWxkc1xuICAvKipcbiAgICogU2V0IHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIHdoZXJlIHRoZSBmdW5kcyB3aWxsIGJlIHNlbnQsXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIHRoZSBhZGRyZXNzIHRvIHRyYW5zZmVyIGZ1bmRzIHRvXG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckJ1aWxkZXJ9IHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICB0byhhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICAgIH1cbiAgICB0aGlzLl90b0FkZHJlc3MgPSBhZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhbW91bnQgYW1vdW50IHRvIHRyYW5zZmVyIGluIG1vdGVzICgxIENzcHIgZXF1YWxzIDEsMDAwLDAwMCwwMDAgbW90ZXMpXG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckJ1aWxkZXJ9IHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICBhbW91bnQoYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRUcmFuc2ZlckFtb3VudChhbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYW1vdW50Jyk7XG4gICAgfVxuICAgIHRoaXMuX2Ftb3VudCA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdHJhbnNmZXIgaWQgdGhhdCBhY3RzIGFzIGEgdHJhbnNhY3Rpb24gaWRlbnRpZmllciAoc2ltaWxhciB0byBtZW1vIGlkIGZvciBTdGVsbGFyKVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgdHJhbnNmZXIgaWRcbiAgICogQHJldHVybnMge1RyYW5zZmVyQnVpbGRlcn0gdGhlIGJ1aWxkZXIgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBzZXRcbiAgICovXG4gIHRyYW5zZmVySWQoaWQ6IG51bWJlciB8IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZFRyYW5zZmVySWQoaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgdHJhbnNmZXIgaWQnKTtcbiAgICB9XG4gICAgdGhpcy5fdHJhbnNmZXJJZCA9IGlkLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gVmFsaWRhdG9yc1xuICB2YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RvQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyB0bycpO1xuICAgIH1cbiAgICBpZiAoIWlzVmFsaWRBZGRyZXNzKHRoaXMuX3RvQWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCB0byBhZGRyZXNzJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fYW1vdW50KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGFtb3VudCcpO1xuICAgIH1cbiAgICBpZiAoIWlzVmFsaWRUcmFuc2ZlckFtb3VudCh0aGlzLl9hbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYW1vdW50Jyk7XG4gICAgfVxuICAgIHN1cGVyLnZhbGlkYXRlTWFuZGF0b3J5RmllbGRzKCk7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
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((0, utils_1.getValidatorAddress)(tx.casperTx.session));
|
|
42
|
+
this.amount((0, 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 (!(0, 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 (!(0, 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 (!(0, 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kZWxlZ2F0ZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3VuZGVsZWdhdGVCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGlEQUErRjtBQUMvRixtREFPOEI7QUFDOUIsNkRBQXFFO0FBRXJFLDJDQU9xQjtBQUNyQixtQ0FNaUI7QUFHakIsTUFBYSxpQkFBa0IsU0FBUSx1Q0FBa0I7SUFNdkQ7Ozs7T0FJRztJQUNILFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsc0NBQTBCLENBQUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksc0NBQTBCLENBQUM7UUFDaEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDOUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7UUFFbEQsY0FBYyxDQUFDLEdBQUcsQ0FBQyw0QkFBZ0IsRUFBRSw4QkFBYyxDQUFDLE1BQU0sQ0FBQywwQkFBZSxDQUFDLDBCQUFlLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVHLGNBQWMsQ0FBQyxHQUFHLENBQUMsd0JBQVksRUFBRSw4QkFBYyxDQUFDLE1BQU0sQ0FBQyxnQ0FBcUIsQ0FBQyxnQ0FBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0csY0FBYyxDQUFDLEdBQUcsQ0FBQyxpQ0FBcUIsRUFBRSw4QkFBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdkYsY0FBYyxDQUFDLEdBQUcsQ0FBQyw4QkFBa0IsRUFBRSw4QkFBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQzNCLElBQUksRUFBRSwyQkFBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDL0IsY0FBYyxFQUFFLGNBQWM7U0FDL0IsQ0FBQztRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsMEJBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRSxPQUFPLE1BQU0sS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXLENBQUMsRUFBZTtRQUN6QixLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsMEJBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUEsMkJBQW1CLEVBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBQSx5QkFBaUIsRUFBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELGtCQUFrQjtJQUNSLGtCQUFrQixDQUFDLEdBQVk7UUFDdkMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxJQUFJLDhCQUFTLEVBQUUsQ0FBQztZQUNsRCxNQUFNLElBQUksdUJBQVksQ0FBQyxlQUFlLEdBQUcsOEJBQVMsR0FBRyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHlCQUF5QjtRQUMvQixNQUFNLFNBQVMsR0FBRywyQkFBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELE1BQU0sU0FBUyxHQUFHLDJCQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVyRCxPQUFPO1lBQ0wsTUFBTSxFQUFFLDhCQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDM0MsU0FBUyxFQUFFLDhCQUFjLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQ3JFLFNBQVMsRUFBRSw4QkFBYyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztZQUNyRSxNQUFNLEVBQUUsOEJBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVELHlCQUF5QjtJQUN6Qjs7Ozs7T0FLRztJQUNILFNBQVMsQ0FBQyxPQUFlO1FBQ3ZCLElBQUksQ0FBQyxJQUFBLHNCQUFjLEVBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUkscUNBQTBCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsTUFBYztRQUNuQixJQUFJLENBQUMsSUFBQSw2QkFBcUIsRUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxxQ0FBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxZQUFZO0lBRVosb0JBQW9CO0lBRXBCOzs7O09BSUc7SUFDSCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksZ0NBQXFCLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUEsNkJBQXFCLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDekMsTUFBTSxJQUFJLHFDQUEwQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekQsQ0FBQztRQUNELEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2xDLENBQUM7Q0FFRjtBQXRIRCw4Q0FzSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBDTFZhbHVlLCBDTFB1YmxpY0tleSBhcyBQdWJsaWNLZXksIFJ1bnRpbWVBcmdzLCBDTFZhbHVlQnVpbGRlciB9IGZyb20gJ2Nhc3Blci1qcy1zZGsnO1xuaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBUcmFuc2FjdGlvblR5cGUsXG4gIFN0YWtpbmdPcGVyYXRpb25UeXBlcyxcbiAgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IsXG4gIFNpZ25pbmdFcnJvcixcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyLCBERUZBVUxUX00gfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHtcbiAgVFJBTlNBQ1RJT05fVFlQRSxcbiAgREVMRUdBVEVfVkFMSURBVE9SLFxuICBERUxFR0FURV9GUk9NX0FERFJFU1MsXG4gIFNUQUtJTkdfVFlQRSxcbiAgVU5ERUxFR0FURV9DT05UUkFDVF9BQ1RJT04sXG4gIERFTEVHQVRFX1ZBTElEQVRPUl9BQ0NPVU5ULFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBpc1ZhbGlkRGVsZWdhdGVBbW91bnQsXG4gIGlzVmFsaWRBZGRyZXNzLFxuICBnZXRUcmFuc2ZlckFtb3VudCxcbiAgZ2V0VmFsaWRhdG9yQWRkcmVzcyxcbiAgY2FzcGVyQ29udHJhY3RIZXhDb2RlLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IERlbGVnYXRlVW5kZWxlZ2F0ZUNvbnRyYWN0QXJncyB9IGZyb20gJy4vaWZhY2VzJztcblxuZXhwb3J0IGNsYXNzIFVuZGVsZWdhdGVCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSBfdmFsaWRhdG9yOiBzdHJpbmc7XG4gIHByaXZhdGUgX2FjdGlvbjogc3RyaW5nO1xuICBwcml2YXRlIF9hbW91bnQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfY29udHJhY3Q6IFVpbnQ4QXJyYXk7XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIHtDb2luQ29uZmlnfSBfY29pbkNvbmZpZyBDb2luIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqL1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fYWN0aW9uID0gVU5ERUxFR0FURV9DT05UUkFDVF9BQ1RJT047XG4gICAgdGhpcy5fY29udHJhY3QgPSBVaW50OEFycmF5LmZyb20oQnVmZmVyLmZyb20oY2FzcGVyQ29udHJhY3RIZXhDb2RlLCAnaGV4JykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLl92YWxpZGF0b3IgPSB0aGlzLl92YWxpZGF0b3IgfHwgREVMRUdBVEVfVkFMSURBVE9SX0FDQ09VTlQ7XG4gICAgY29uc3QgYXJncyA9IHRoaXMuYnVpbGRVbmRlbGVnYXRlUGFyYW1ldGVycygpO1xuICAgIGNvbnN0IGV4dHJhQXJndW1lbnRzID0gbmV3IE1hcDxzdHJpbmcsIENMVmFsdWU+KCk7XG5cbiAgICBleHRyYUFyZ3VtZW50cy5zZXQoVFJBTlNBQ1RJT05fVFlQRSwgQ0xWYWx1ZUJ1aWxkZXIuc3RyaW5nKFRyYW5zYWN0aW9uVHlwZVtUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9ja10pKTtcbiAgICBleHRyYUFyZ3VtZW50cy5zZXQoU1RBS0lOR19UWVBFLCBDTFZhbHVlQnVpbGRlci5zdHJpbmcoU3Rha2luZ09wZXJhdGlvblR5cGVzW1N0YWtpbmdPcGVyYXRpb25UeXBlcy5VTkxPQ0tdKSk7XG4gICAgZXh0cmFBcmd1bWVudHMuc2V0KERFTEVHQVRFX0ZST01fQUREUkVTUywgQ0xWYWx1ZUJ1aWxkZXIuc3RyaW5nKHRoaXMuX3NvdXJjZS5hZGRyZXNzKSk7XG4gICAgZXh0cmFBcmd1bWVudHMuc2V0KERFTEVHQVRFX1ZBTElEQVRPUiwgQ0xWYWx1ZUJ1aWxkZXIuc3RyaW5nKHRoaXMuX3ZhbGlkYXRvcikpO1xuXG4gICAgdGhpcy5fc2Vzc2lvbiA9IHtcbiAgICAgIG1vZHVsZUJ5dGVzOiB0aGlzLl9jb250cmFjdCxcbiAgICAgIGFyZ3M6IFJ1bnRpbWVBcmdzLmZyb21NYXAoYXJncyksXG4gICAgICBleHRyYUFyZ3VtZW50czogZXh0cmFBcmd1bWVudHMsXG4gICAgfTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jayk7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmJ1aWxkSW1wbGVtZW50YXRpb24oKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2spO1xuICAgIHRoaXMudmFsaWRhdG9yKGdldFZhbGlkYXRvckFkZHJlc3ModHguY2FzcGVyVHguc2Vzc2lvbikpO1xuICAgIHRoaXMuYW1vdW50KGdldFRyYW5zZmVyQW1vdW50KHR4LmNhc3BlclR4LnNlc3Npb24pKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICBpZiAodGhpcy5fbXVsdGlTaWduZXJLZXlQYWlycy5sZW5ndGggPj0gREVGQVVMVF9NKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdBIG1heGltdW0gb2YgJyArIERFRkFVTFRfTSArICcgY2FuIHNpZ24gdGhlIHRyYW5zYWN0aW9uLicpO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuc2lnbkltcGxlbWVudGF0aW9uKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYXJncyBuZWVkZWQgdG8gY3JlYXRlIGEgc2Vzc2lvbiwgdGhlbiB3ZSBjYW4gc2VuZCB0aGlzIHNlc3Npb24gd2l0aCB0aGUgY29udHJhY3RcbiAgICpcbiAgICogQHJldHVybnMge0RlbGVnYXRlVW5kZWxlZ2F0ZUNvbnRyYWN0QXJnc30gY29udHJhY3RzIGFyZ3MgdG8gY3JlYXRlIGEgc2Vzc2lvblxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFVuZGVsZWdhdGVQYXJhbWV0ZXJzKCk6IERlbGVnYXRlVW5kZWxlZ2F0ZUNvbnRyYWN0QXJncyB7XG4gICAgY29uc3QgZGVsZWdhdG9yID0gUHVibGljS2V5LmZyb21IZXgodGhpcy5fc291cmNlLmFkZHJlc3MpO1xuICAgIGNvbnN0IHZhbGlkYXRvciA9IFB1YmxpY0tleS5mcm9tSGV4KHRoaXMuX3ZhbGlkYXRvcik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uOiBDTFZhbHVlQnVpbGRlci5zdHJpbmcodGhpcy5fYWN0aW9uKSxcbiAgICAgIGRlbGVnYXRvcjogQ0xWYWx1ZUJ1aWxkZXIucHVibGljS2V5KGRlbGVnYXRvci52YWx1ZSgpLCBkZWxlZ2F0b3IudGFnKSxcbiAgICAgIHZhbGlkYXRvcjogQ0xWYWx1ZUJ1aWxkZXIucHVibGljS2V5KHZhbGlkYXRvci52YWx1ZSgpLCB2YWxpZGF0b3IudGFnKSxcbiAgICAgIGFtb3VudDogQ0xWYWx1ZUJ1aWxkZXIudTUxMih0aGlzLl9hbW91bnQpLFxuICAgIH07XG4gIH1cblxuICAvLyByZWdpb24gVHJhbnNmZXIgZmllbGRzXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3Mgd2hlcmUgdGhlIGZ1bmRzIHdpbGwgYmUgc2VudCxcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgdGhlIDY4IGJpdHMgYWRkcmVzcyB0byB0cmFuc2ZlciBmdW5kcyB0b1xuICAgKiBAcmV0dXJucyB7VW5kZWxlZ2F0ZUJ1aWxkZXJ9IHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICB2YWxpZGF0b3IoYWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGFkZHJlc3MnKTtcbiAgICB9XG4gICAgdGhpcy5fdmFsaWRhdG9yID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IGFtb3VudCB0byB0cmFuc2ZlclxuICAgKiBAcmV0dXJucyB7VW5kZWxlZ2F0ZUJ1aWxkZXJ9IHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICBhbW91bnQoYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWREZWxlZ2F0ZUFtb3VudChhbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYW1vdW50Jyk7XG4gICAgfVxuICAgIHRoaXMuX2Ftb3VudCA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIG1hbmRhdG9yeSBmaWVsZHMgaW4gdGhlIGNsYXNzXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJbiBjYXNlIG9mIG1pc3Npbmcgb3IgaW52YWxpZCBmaWVsZHNcbiAgICovXG4gIHZhbGlkYXRlTWFuZGF0b3J5RmllbGRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYW1vdW50KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGFtb3VudCcpO1xuICAgIH1cbiAgICBpZiAoIWlzVmFsaWREZWxlZ2F0ZUFtb3VudCh0aGlzLl9hbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYW1vdW50Jyk7XG4gICAgfVxuICAgIHN1cGVyLnZhbGlkYXRlTWFuZGF0b3J5RmllbGRzKCk7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=
|