@witnet/sdk 1.0.1 → 1.0.4
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/.env_witnet +6 -6
- package/LICENSE +21 -21
- package/README.md +103 -103
- package/dist/bin/helpers.d.ts +88 -0
- package/dist/bin/helpers.d.ts.map +1 -0
- package/dist/bin/helpers.js +866 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/lib/crypto/account.d.ts +18 -0
- package/dist/lib/crypto/account.d.ts.map +1 -0
- package/dist/lib/crypto/account.js +152 -0
- package/dist/lib/crypto/coinbase.d.ts +9 -0
- package/dist/lib/crypto/coinbase.d.ts.map +1 -0
- package/dist/lib/crypto/coinbase.js +39 -0
- package/dist/lib/crypto/index.d.ts +7 -0
- package/dist/lib/crypto/index.d.ts.map +1 -0
- package/dist/lib/crypto/index.js +28 -0
- package/dist/lib/crypto/interfaces.d.ts +80 -0
- package/dist/lib/crypto/interfaces.d.ts.map +1 -0
- package/dist/lib/crypto/interfaces.js +3 -0
- package/dist/lib/crypto/payloads/DataRequestPayload.d.ts +47 -0
- package/dist/lib/crypto/payloads/DataRequestPayload.d.ts.map +1 -0
- package/dist/lib/crypto/payloads/DataRequestPayload.js +384 -0
- package/dist/lib/crypto/payloads/StakePayload.d.ts +27 -0
- package/dist/lib/crypto/payloads/StakePayload.d.ts.map +1 -0
- package/dist/lib/crypto/payloads/StakePayload.js +184 -0
- package/dist/lib/crypto/payloads/UnstakePayload.d.ts +35 -0
- package/dist/lib/crypto/payloads/UnstakePayload.d.ts.map +1 -0
- package/dist/lib/crypto/payloads/UnstakePayload.js +244 -0
- package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts +24 -0
- package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts.map +1 -0
- package/dist/lib/crypto/payloads/ValueTransferPayload.js +182 -0
- package/dist/lib/crypto/payloads.d.ts +54 -0
- package/dist/lib/crypto/payloads.d.ts.map +1 -0
- package/dist/lib/crypto/payloads.js +224 -0
- package/dist/lib/crypto/signer.d.ts +26 -0
- package/dist/lib/crypto/signer.d.ts.map +1 -0
- package/dist/lib/crypto/signer.js +299 -0
- package/dist/lib/crypto/transmitters/DataRequests.d.ts +14 -0
- package/dist/lib/crypto/transmitters/DataRequests.d.ts.map +1 -0
- package/dist/lib/crypto/transmitters/DataRequests.js +62 -0
- package/dist/lib/crypto/transmitters/StakeDeposits.d.ts +11 -0
- package/dist/lib/crypto/transmitters/StakeDeposits.d.ts.map +1 -0
- package/dist/lib/crypto/transmitters/StakeDeposits.js +48 -0
- package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts +17 -0
- package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts.map +1 -0
- package/dist/lib/crypto/transmitters/StakeWithdrawals.js +115 -0
- package/dist/lib/crypto/transmitters/ValueTransfers.d.ts +10 -0
- package/dist/lib/crypto/transmitters/ValueTransfers.d.ts.map +1 -0
- package/dist/lib/crypto/transmitters/ValueTransfers.js +47 -0
- package/dist/lib/crypto/transmitters.d.ts +46 -0
- package/dist/lib/crypto/transmitters.d.ts.map +1 -0
- package/dist/lib/crypto/transmitters.js +506 -0
- package/dist/lib/crypto/types.d.ts +127 -0
- package/dist/lib/crypto/types.d.ts.map +1 -0
- package/dist/lib/crypto/types.js +261 -0
- package/dist/lib/crypto/utils.d.ts +10 -0
- package/dist/lib/crypto/utils.d.ts.map +1 -0
- package/dist/lib/crypto/utils.js +97 -0
- package/dist/lib/crypto/wallet.d.ts +26 -0
- package/dist/lib/crypto/wallet.d.ts.map +1 -0
- package/dist/lib/crypto/wallet.js +327 -0
- package/dist/lib/helpers.d.ts +90 -0
- package/dist/lib/helpers.d.ts.map +1 -0
- package/dist/lib/helpers.js +1031 -0
- package/dist/lib/index.d.ts +5 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +21 -0
- package/dist/lib/radon/artifacts.d.ts +55 -0
- package/dist/lib/radon/artifacts.d.ts.map +1 -0
- package/dist/lib/radon/artifacts.js +347 -0
- package/dist/lib/radon/ccdr/eth.d.ts +100 -0
- package/dist/lib/radon/ccdr/eth.d.ts.map +1 -0
- package/dist/lib/radon/ccdr/eth.js +237 -0
- package/dist/lib/radon/ccdr/index.d.ts +34 -0
- package/dist/lib/radon/ccdr/index.d.ts.map +1 -0
- package/dist/lib/radon/ccdr/index.js +63 -0
- package/dist/lib/radon/ccdr/wit.d.ts +29 -0
- package/dist/lib/radon/ccdr/wit.d.ts.map +1 -0
- package/dist/lib/radon/ccdr/wit.js +60 -0
- package/dist/lib/radon/filters.d.ts +14 -0
- package/dist/lib/radon/filters.d.ts.map +1 -0
- package/dist/lib/radon/filters.js +47 -0
- package/dist/lib/radon/index.d.ts +36 -0
- package/dist/lib/radon/index.d.ts.map +1 -0
- package/dist/lib/radon/index.js +154 -0
- package/dist/lib/radon/reducers.d.ts +29 -0
- package/dist/lib/radon/reducers.d.ts.map +1 -0
- package/dist/lib/radon/reducers.js +101 -0
- package/dist/lib/radon/retrievals.d.ts +120 -0
- package/dist/lib/radon/retrievals.d.ts.map +1 -0
- package/dist/lib/radon/retrievals.js +358 -0
- package/dist/lib/radon/sources.d.ts +102 -0
- package/dist/lib/radon/sources.d.ts.map +1 -0
- package/dist/lib/radon/sources.js +294 -0
- package/dist/lib/radon/types.d.ts +521 -0
- package/dist/lib/radon/types.d.ts.map +1 -0
- package/dist/lib/radon/types.js +1066 -0
- package/dist/lib/radon/utils.d.ts +55 -0
- package/dist/lib/radon/utils.d.ts.map +1 -0
- package/dist/lib/radon/utils.js +181 -0
- package/dist/lib/rpc/farm.d.ts +66 -0
- package/dist/lib/rpc/farm.d.ts.map +1 -0
- package/dist/lib/rpc/farm.js +808 -0
- package/dist/lib/rpc/index.d.ts +3 -0
- package/dist/lib/rpc/index.d.ts.map +1 -0
- package/dist/lib/rpc/index.js +19 -0
- package/dist/lib/rpc/node.d.ts +38 -0
- package/dist/lib/rpc/node.d.ts.map +1 -0
- package/dist/lib/rpc/node.js +335 -0
- package/dist/lib/rpc/nodes.d.ts +40 -0
- package/dist/lib/rpc/nodes.d.ts.map +1 -0
- package/dist/lib/rpc/nodes.js +531 -0
- package/dist/lib/rpc/provider.d.ts +72 -0
- package/dist/lib/rpc/provider.d.ts.map +1 -0
- package/dist/lib/rpc/provider.js +402 -0
- package/dist/lib/rpc/reporter.d.ts +18 -0
- package/dist/lib/rpc/reporter.d.ts.map +1 -0
- package/dist/lib/rpc/reporter.js +99 -0
- package/dist/lib/rpc/types.d.ts +396 -0
- package/dist/lib/rpc/types.d.ts.map +1 -0
- package/dist/lib/rpc/types.js +81 -0
- package/dist/lib/rpc/wallet.d.ts +72 -0
- package/dist/lib/rpc/wallet.d.ts.map +1 -0
- package/dist/lib/rpc/wallet.js +41 -0
- package/dist/lib/types.d.ts +19 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +7 -0
- package/dist/lib/utils.d.ts +5 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +51 -0
- package/dist/package.json +1 -1
- package/dist/src/bin/helpers.js +2 -2
- package/dist/src/index.js +1 -1
- package/dist/src/lib/crypto/account.js +1 -1
- package/dist/src/lib/crypto/coinbase.js +1 -1
- package/dist/src/lib/crypto/index.js +1 -1
- package/dist/src/lib/crypto/interfaces.js +1 -1
- package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts +2 -2
- package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/DataRequestPayload.js +8 -8
- package/dist/src/lib/crypto/payloads/StakePayload.js +1 -1
- package/dist/src/lib/crypto/payloads/UnstakePayload.js +1 -1
- package/dist/src/lib/crypto/payloads/ValueTransferPayload.js +1 -1
- package/dist/src/lib/crypto/payloads.js +1 -1
- package/dist/src/lib/crypto/signer.js +1 -1
- package/dist/src/lib/crypto/transmitters/DataRequests.d.ts +0 -1
- package/dist/src/lib/crypto/transmitters/DataRequests.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/DataRequests.js +1 -2
- package/dist/src/lib/crypto/transmitters/StakeDeposits.js +1 -1
- package/dist/src/lib/crypto/transmitters/StakeWithdrawals.js +1 -1
- package/dist/src/lib/crypto/transmitters/ValueTransfers.js +1 -1
- package/dist/src/lib/crypto/transmitters.js +1 -1
- package/dist/src/lib/crypto/types.js +1 -1
- package/dist/src/lib/crypto/utils.js +1 -1
- package/dist/src/lib/crypto/wallet.js +1 -1
- package/dist/src/lib/index.js +1 -1
- package/dist/src/lib/radon/ccdr/eth.js +1 -1
- package/dist/src/lib/radon/ccdr/index.js +1 -1
- package/dist/src/lib/radon/ccdr/wit.d.ts +11 -0
- package/dist/src/lib/radon/ccdr/wit.d.ts.map +1 -1
- package/dist/src/lib/radon/ccdr/wit.js +17 -2
- package/dist/src/lib/radon/filters.js +1 -1
- package/dist/src/lib/radon/index.d.ts +1 -1
- package/dist/src/lib/radon/index.d.ts.map +1 -1
- package/dist/src/lib/radon/index.js +9 -3
- package/dist/src/lib/radon/reducers.js +1 -1
- package/dist/src/lib/radon/types.js +1 -1
- package/dist/src/lib/radon/utils.js +1 -1
- package/dist/src/lib/rpc/index.js +1 -1
- package/dist/src/lib/rpc/nodes.js +1 -1
- package/dist/src/lib/rpc/provider.d.ts +5 -3
- package/dist/src/lib/rpc/provider.d.ts.map +1 -1
- package/dist/src/lib/rpc/provider.js +14 -3
- package/dist/src/lib/rpc/reporter.d.ts +2 -3
- package/dist/src/lib/rpc/reporter.d.ts.map +1 -1
- package/dist/src/lib/rpc/reporter.js +1 -4
- package/dist/src/lib/rpc/types.d.ts +49 -24
- package/dist/src/lib/rpc/types.d.ts.map +1 -1
- package/dist/src/lib/rpc/types.js +3 -1
- package/dist/src/lib/types.d.ts +1 -1
- package/dist/src/lib/types.d.ts.map +1 -1
- package/dist/src/lib/types.js +1 -1
- package/dist/src/lib/utils.js +1 -1
- package/dist/witnet/assets/index.js +1 -1
- package/dist/witnet/assets/modals/index.js +1 -1
- package/dist/witnet/assets/modals/web3/eth.js +1 -1
- package/dist/witnet/assets/modals/web3/ipfs.js +1 -1
- package/dist/witnet/assets/modals/web3/wit.js +4 -7
- package/dist/witnet/assets/requests.js +1 -1
- package/package.json +1 -1
- package/src/bin/cli/history.js +31 -31
- package/src/bin/cli/inspect.js +405 -359
- package/src/bin/cli/network.js +594 -592
- package/src/bin/cli/nodes.js +364 -364
- package/src/bin/cli/radon.js +815 -815
- package/src/bin/cli/wallet.js +1117 -1094
- package/src/bin/helpers.js +840 -840
- package/src/bin/postinstall.js +9 -9
- package/src/bin/toolkit.js +295 -295
- package/witnet/assets/_index.js +8 -8
- package/witnet/assets/_requests.js +25 -25
- package/witnet/assets/_sources.js +36 -36
- package/witnet/assets/_templates.js +36 -36
- package/witnet/assets/index.js +4 -4
- package/witnet/assets/modals/index.js +9 -9
- package/witnet/assets/modals/web3/eth.js +29 -29
- package/witnet/assets/modals/web3/ipfs.js +19 -19
- package/witnet/assets/modals/web3/wit.js +21 -23
- package/witnet/assets/requests.js +95 -95
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __assign = (this && this.__assign) || function () {
|
|
18
|
+
__assign = Object.assign || function(t) {
|
|
19
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
+
s = arguments[i];
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
29
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
30
|
+
if (!m) return o;
|
|
31
|
+
var i = m.call(o), r, ar = [], e;
|
|
32
|
+
try {
|
|
33
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
34
|
+
}
|
|
35
|
+
catch (error) { e = { error: error }; }
|
|
36
|
+
finally {
|
|
37
|
+
try {
|
|
38
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
39
|
+
}
|
|
40
|
+
finally { if (e) throw e.error; }
|
|
41
|
+
}
|
|
42
|
+
return ar;
|
|
43
|
+
};
|
|
44
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
45
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
46
|
+
if (ar || !(i in from)) {
|
|
47
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
48
|
+
ar[i] = from[i];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
52
|
+
};
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
exports.DataRequestPayload = void 0;
|
|
55
|
+
var protobufjs_1 = require("protobufjs");
|
|
56
|
+
var protoRoot = protobufjs_1.Root.fromJSON(require("../../../../witnet/witnet.proto.json"));
|
|
57
|
+
var helpers_1 = require("../../../bin/helpers");
|
|
58
|
+
var radon_1 = require("../../radon");
|
|
59
|
+
var payloads_1 = require("../payloads");
|
|
60
|
+
var types_1 = require("../types");
|
|
61
|
+
var utils_1 = require("../utils");
|
|
62
|
+
var DR_COMMIT_TX_WEIGHT = 400;
|
|
63
|
+
var DR_REVEAL_TX_WEIGHT = 200;
|
|
64
|
+
var DR_TALLY_TX_WEIGHT = 100;
|
|
65
|
+
var DR_TX_WEIGHT_ALPHA = 1;
|
|
66
|
+
var DR_TX_WEIGHT_BETA = 1;
|
|
67
|
+
var TX_WEIGHT_INPUT_SIZE = 133;
|
|
68
|
+
var TX_WEIGHT_OUTPUT_SIZE = 36;
|
|
69
|
+
var DataRequestPayload = /** @class */ (function (_super) {
|
|
70
|
+
__extends(DataRequestPayload, _super);
|
|
71
|
+
function DataRequestPayload(protoTypeName, radon, initialTarget) {
|
|
72
|
+
var _this = _super.call(this, protoTypeName, initialTarget) || this;
|
|
73
|
+
if (radon instanceof radon_1.RadonRequest) {
|
|
74
|
+
_this._request = radon;
|
|
75
|
+
}
|
|
76
|
+
else if (radon instanceof radon_1.RadonTemplate) {
|
|
77
|
+
_this.template = radon;
|
|
78
|
+
}
|
|
79
|
+
return _this;
|
|
80
|
+
}
|
|
81
|
+
Object.defineProperty(DataRequestPayload.prototype, "burns", {
|
|
82
|
+
get: function () {
|
|
83
|
+
/* V2.1 */
|
|
84
|
+
if (this._target && typeof this._target.witnesses === 'number') {
|
|
85
|
+
var witnesses = this._target.witnesses;
|
|
86
|
+
return witnesses * (this._target.fees
|
|
87
|
+
+ 2 * witnesses * (Math.floor(this._target.fees / 3 / this._target.witnesses)));
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
enumerable: false,
|
|
94
|
+
configurable: true
|
|
95
|
+
});
|
|
96
|
+
Object.defineProperty(DataRequestPayload.prototype, "droHash", {
|
|
97
|
+
get: function () {
|
|
98
|
+
var obj = this._toDrOutputProtobuf();
|
|
99
|
+
if (obj) {
|
|
100
|
+
var DataRequestOutput = protoRoot.lookupType("DataRequestOutput");
|
|
101
|
+
var err = DataRequestOutput.verify(obj);
|
|
102
|
+
if (err) {
|
|
103
|
+
throw TypeError(err);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// console.log("\ndroHash.obj =>", JSON.stringify(obj))
|
|
107
|
+
var message = DataRequestOutput.fromObject(obj);
|
|
108
|
+
// console.log("\ndroHash.message =>", JSON.stringify(message))
|
|
109
|
+
var bytecode = DataRequestOutput.encode(message).finish();
|
|
110
|
+
// console.log("\ndroHash.bytecode =>", bytecode)
|
|
111
|
+
return (0, helpers_1.toHexString)((0, utils_1.sha256)(bytecode));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
enumerable: false,
|
|
119
|
+
configurable: true
|
|
120
|
+
});
|
|
121
|
+
Object.defineProperty(DataRequestPayload.prototype, "droSLA", {
|
|
122
|
+
get: function () {
|
|
123
|
+
if (this._target) {
|
|
124
|
+
var minConsensusPercentage = 51;
|
|
125
|
+
var witnesses = (typeof this._target.witnesses === 'object'
|
|
126
|
+
? Object.keys(this._target.witnesses).length
|
|
127
|
+
: this._target.witnesses);
|
|
128
|
+
var commitAndRevealFee = Math.floor(this._target.fees / 3 / witnesses);
|
|
129
|
+
var witnessReward = witnesses * commitAndRevealFee;
|
|
130
|
+
var collateral = witnessReward * DataRequestPayload.COLLATERAL_RATIO;
|
|
131
|
+
return {
|
|
132
|
+
collateral: collateral,
|
|
133
|
+
commitAndRevealFee: commitAndRevealFee,
|
|
134
|
+
minConsensusPercentage: minConsensusPercentage,
|
|
135
|
+
witnesses: witnesses,
|
|
136
|
+
witnessReward: witnessReward,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
enumerable: false,
|
|
144
|
+
configurable: true
|
|
145
|
+
});
|
|
146
|
+
Object.defineProperty(DataRequestPayload.prototype, "fees", {
|
|
147
|
+
get: function () {
|
|
148
|
+
var _a;
|
|
149
|
+
return ((_a = this._target) === null || _a === void 0 ? void 0 : _a.fees) || 0;
|
|
150
|
+
},
|
|
151
|
+
enumerable: false,
|
|
152
|
+
configurable: true
|
|
153
|
+
});
|
|
154
|
+
Object.defineProperty(DataRequestPayload.prototype, "hash", {
|
|
155
|
+
get: function () {
|
|
156
|
+
var _bytecode = this.bytecode;
|
|
157
|
+
if (_bytecode && this.droHash) {
|
|
158
|
+
return (0, helpers_1.toHexString)((0, utils_1.sha256)(Buffer.concat([
|
|
159
|
+
(0, helpers_1.fromHexString)(this.droHash),
|
|
160
|
+
(0, utils_1.sha256)(_bytecode),
|
|
161
|
+
])));
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
return undefined;
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
enumerable: false,
|
|
168
|
+
configurable: true
|
|
169
|
+
});
|
|
170
|
+
Object.defineProperty(DataRequestPayload.prototype, "maxWeight", {
|
|
171
|
+
get: function () {
|
|
172
|
+
return DataRequestPayload.MAX_WEIGHT;
|
|
173
|
+
},
|
|
174
|
+
enumerable: false,
|
|
175
|
+
configurable: true
|
|
176
|
+
});
|
|
177
|
+
Object.defineProperty(DataRequestPayload.prototype, "parameterized", {
|
|
178
|
+
get: function () {
|
|
179
|
+
return !!this.template;
|
|
180
|
+
},
|
|
181
|
+
enumerable: false,
|
|
182
|
+
configurable: true
|
|
183
|
+
});
|
|
184
|
+
Object.defineProperty(DataRequestPayload.prototype, "prepared", {
|
|
185
|
+
get: function () {
|
|
186
|
+
return (this.covered
|
|
187
|
+
&& this._inputs.length > 0
|
|
188
|
+
&& !!this._request
|
|
189
|
+
&& !!this._target);
|
|
190
|
+
},
|
|
191
|
+
enumerable: false,
|
|
192
|
+
configurable: true
|
|
193
|
+
});
|
|
194
|
+
Object.defineProperty(DataRequestPayload.prototype, "radArgs", {
|
|
195
|
+
get: function () {
|
|
196
|
+
var _a;
|
|
197
|
+
return this.template ? (_a = this._target) === null || _a === void 0 ? void 0 : _a.args : undefined;
|
|
198
|
+
},
|
|
199
|
+
enumerable: false,
|
|
200
|
+
configurable: true
|
|
201
|
+
});
|
|
202
|
+
Object.defineProperty(DataRequestPayload.prototype, "radHash", {
|
|
203
|
+
get: function () {
|
|
204
|
+
var _a;
|
|
205
|
+
return (_a = this.request) === null || _a === void 0 ? void 0 : _a.radHash();
|
|
206
|
+
},
|
|
207
|
+
enumerable: false,
|
|
208
|
+
configurable: true
|
|
209
|
+
});
|
|
210
|
+
Object.defineProperty(DataRequestPayload.prototype, "request", {
|
|
211
|
+
get: function () {
|
|
212
|
+
return this._request;
|
|
213
|
+
},
|
|
214
|
+
enumerable: false,
|
|
215
|
+
configurable: true
|
|
216
|
+
});
|
|
217
|
+
Object.defineProperty(DataRequestPayload.prototype, "value", {
|
|
218
|
+
get: function () {
|
|
219
|
+
if (this._target) {
|
|
220
|
+
if (typeof this._target.witnesses === 'object') {
|
|
221
|
+
/* V2.1 */
|
|
222
|
+
return Object.values(this._target.witnesses).reduce(function (prev, curr) { return prev + curr; }, 0);
|
|
223
|
+
}
|
|
224
|
+
else if (typeof this._target.witnesses === 'number') {
|
|
225
|
+
/* V2.0 */
|
|
226
|
+
var witnesses = this._target.witnesses;
|
|
227
|
+
return witnesses * witnesses * (Math.floor(this._target.fees / 3 / this._target.witnesses));
|
|
228
|
+
// /* V2.1 */
|
|
229
|
+
// // return 0
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return 0;
|
|
233
|
+
},
|
|
234
|
+
enumerable: false,
|
|
235
|
+
configurable: true
|
|
236
|
+
});
|
|
237
|
+
Object.defineProperty(DataRequestPayload.prototype, "weight", {
|
|
238
|
+
get: function () {
|
|
239
|
+
var _a;
|
|
240
|
+
if (this._request && this._target) {
|
|
241
|
+
var witnesses = typeof this._target.witnesses === 'object' ? Object.keys(this._target.witnesses).length : this._target.witnesses;
|
|
242
|
+
return (DR_TX_WEIGHT_ALPHA * (this._request.weight() + 8 + 2 + 8 + 4 + 8),
|
|
243
|
+
+this._inputs.length * TX_WEIGHT_INPUT_SIZE
|
|
244
|
+
+ this._outputs.length * TX_WEIGHT_OUTPUT_SIZE
|
|
245
|
+
+ witnesses * (DR_COMMIT_TX_WEIGHT
|
|
246
|
+
+ DR_REVEAL_TX_WEIGHT * DR_TX_WEIGHT_BETA
|
|
247
|
+
+ TX_WEIGHT_OUTPUT_SIZE // TODO V2.1: typeof this._target.witnesses === 'object' ? TX_WEIGHT_OUTPUT_SIZE : 0
|
|
248
|
+
)
|
|
249
|
+
+ Math.max(DR_TALLY_TX_WEIGHT * DR_TX_WEIGHT_BETA, ((_a = this._target) === null || _a === void 0 ? void 0 : _a.maxResultSize) || 0));
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
return 0;
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
enumerable: false,
|
|
256
|
+
configurable: true
|
|
257
|
+
});
|
|
258
|
+
DataRequestPayload.prototype.intoReceipt = function (target) {
|
|
259
|
+
return {
|
|
260
|
+
burns: this.burns,
|
|
261
|
+
droHash: this.droHash,
|
|
262
|
+
radArgs: this.radArgs,
|
|
263
|
+
radHash: this.radHash,
|
|
264
|
+
witnesses: target.witnesses,
|
|
265
|
+
};
|
|
266
|
+
};
|
|
267
|
+
DataRequestPayload.prototype.resetTarget = function (target) {
|
|
268
|
+
var _a, _b;
|
|
269
|
+
var _c;
|
|
270
|
+
this._change = 0;
|
|
271
|
+
this._covered = 0;
|
|
272
|
+
this._inputs = [];
|
|
273
|
+
this._outputs = [];
|
|
274
|
+
this._target = target;
|
|
275
|
+
if (((_c = this.droSLA) === null || _c === void 0 ? void 0 : _c.collateral) && this.droSLA.collateral < DataRequestPayload.MIN_COLLATERAL) {
|
|
276
|
+
throw new TypeError("".concat(this.constructor.name, ": implicit witnessing collateral too low: ").concat((0, helpers_1.fromNanowits)(this.droSLA.collateral), " < ").concat((0, helpers_1.fromNanowits)(DataRequestPayload.MIN_COLLATERAL)));
|
|
277
|
+
}
|
|
278
|
+
if (this.template) {
|
|
279
|
+
var args = target === null || target === void 0 ? void 0 : target.args;
|
|
280
|
+
if (Array.isArray(args) && args.length > 0) {
|
|
281
|
+
if (Array.isArray(args[0])) {
|
|
282
|
+
this._request = (_a = this.template).buildRequest.apply(_a, __spreadArray([], __read(args), false));
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
if (this.template.homogeneous) {
|
|
286
|
+
this._request = (_b = this.template).buildRequestModal.apply(_b, __spreadArray([], __read(args), false));
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
throw new TypeError("".concat(this.constructor.name, ": cannot build modal request out from heterogeneous sources: ").concat(args));
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
else if (typeof args === 'string'
|
|
294
|
+
&& this.template.homogeneous
|
|
295
|
+
&& this.template.argsCount === 1) {
|
|
296
|
+
this._request = this.template.buildRequestModal(args);
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
throw new TypeError("".concat(this.constructor.name, ": unsupported args when building request out from template: ").concat(args));
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
DataRequestPayload.prototype.toJSON = function (humanize) {
|
|
304
|
+
if (humanize === void 0) { humanize = false; }
|
|
305
|
+
var droSLA = this.droSLA;
|
|
306
|
+
return {
|
|
307
|
+
inputs: this.inputs
|
|
308
|
+
.map(function (_a) {
|
|
309
|
+
var _b = __read(_a, 2), utxo = _b[1];
|
|
310
|
+
return ({ output_pointer: utxo.output_pointer });
|
|
311
|
+
}),
|
|
312
|
+
outputs: this.outputs.map(function (vto) {
|
|
313
|
+
return {
|
|
314
|
+
pkh: vto.pkh,
|
|
315
|
+
time_lock: vto.time_lock,
|
|
316
|
+
value: vto.value,
|
|
317
|
+
};
|
|
318
|
+
}),
|
|
319
|
+
dr_output: __assign(__assign({}, (this._request ? { data_request: this._request.toJSON(humanize) } : {})), { commit_and_reveal_fee: droSLA === null || droSLA === void 0 ? void 0 : droSLA.commitAndRevealFee, min_consensus_percentage: droSLA === null || droSLA === void 0 ? void 0 : droSLA.minConsensusPercentage, witnesses: droSLA === null || droSLA === void 0 ? void 0 : droSLA.witnesses, witness_reward: droSLA === null || droSLA === void 0 ? void 0 : droSLA.witnessReward, collateral: droSLA === null || droSLA === void 0 ? void 0 : droSLA.collateral })
|
|
320
|
+
};
|
|
321
|
+
};
|
|
322
|
+
DataRequestPayload.prototype.toProtobuf = function () {
|
|
323
|
+
if (this.prepared && this._target && this._request) {
|
|
324
|
+
return {
|
|
325
|
+
inputs: this.inputs
|
|
326
|
+
.map(function (_a) {
|
|
327
|
+
var _b = __read(_a, 2), utxo = _b[1];
|
|
328
|
+
var transactionId = utxo.output_pointer.split(':')[0];
|
|
329
|
+
var outputIndex = parseInt(utxo.output_pointer.split(':')[1]);
|
|
330
|
+
return {
|
|
331
|
+
outputPointer: __assign({ transactionId: { SHA256: Array.from((0, helpers_1.fromHexString)(transactionId)) } }, (outputIndex > 0 ? { outputIndex: outputIndex } : {})),
|
|
332
|
+
};
|
|
333
|
+
}),
|
|
334
|
+
outputs: this.outputs.map(function (vto) { return (__assign({ pkh: { hash: Array.from(types_1.PublicKeyHash.fromBech32(vto.pkh).toBytes20()), }, value: vto.value }, (vto.time_lock > 0 ? { timeLock: vto.time_lock } : {}))); }),
|
|
335
|
+
drOutput: this._toDrOutputProtobuf(),
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
};
|
|
339
|
+
DataRequestPayload.prototype.validateTarget = function (target) {
|
|
340
|
+
target = this._cleanTargetExtras(target);
|
|
341
|
+
if (target && Object.keys(target).length > 0) {
|
|
342
|
+
if (!(target
|
|
343
|
+
&& (target === null || target === void 0 ? void 0 : target.fees)
|
|
344
|
+
&& parseInt(target === null || target === void 0 ? void 0 : target.fees) > 0
|
|
345
|
+
&& (target === null || target === void 0 ? void 0 : target.witnesses)
|
|
346
|
+
&& (!this.template || (target === null || target === void 0 ? void 0 : target.args)))) {
|
|
347
|
+
throw new TypeError("".concat(this.constructor.name, ": invalid specs were provided: ").concat(JSON.stringify(target)));
|
|
348
|
+
}
|
|
349
|
+
else {
|
|
350
|
+
if (typeof target.witnesses === 'object') {
|
|
351
|
+
throw new TypeError("".concat(this.constructor.name, ": explicit witnessing committees not yet supported: ").concat(target.witnesses));
|
|
352
|
+
}
|
|
353
|
+
return target;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
return undefined;
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
DataRequestPayload.prototype._cleanTargetExtras = function (target) {
|
|
361
|
+
if (target) {
|
|
362
|
+
return Object.fromEntries(Object.entries(target).filter(function (_a) {
|
|
363
|
+
var _b = __read(_a, 1), key = _b[0];
|
|
364
|
+
return [
|
|
365
|
+
'args',
|
|
366
|
+
'fees',
|
|
367
|
+
'maxResultSize',
|
|
368
|
+
'witnesses',
|
|
369
|
+
].includes(key);
|
|
370
|
+
}));
|
|
371
|
+
}
|
|
372
|
+
};
|
|
373
|
+
DataRequestPayload.prototype._toDrOutputProtobuf = function () {
|
|
374
|
+
if (this._request) {
|
|
375
|
+
return __assign(__assign({}, this.droSLA), { dataRequest: this._request.toProtobuf() });
|
|
376
|
+
}
|
|
377
|
+
};
|
|
378
|
+
DataRequestPayload.COLLATERAL_RATIO = 125;
|
|
379
|
+
DataRequestPayload.MAX_WEIGHT = 80000;
|
|
380
|
+
DataRequestPayload.MIN_COLLATERAL = 20000000000;
|
|
381
|
+
return DataRequestPayload;
|
|
382
|
+
}(payloads_1.TransactionPayloadMultiSig));
|
|
383
|
+
exports.DataRequestPayload = DataRequestPayload;
|
|
384
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVJlcXVlc3RQYXlsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vcGF5bG9hZHMvRGF0YVJlcXVlc3RQYXlsb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUE4QztBQUM5QyxJQUFNLFNBQVMsR0FBRyxpQkFBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxDQUFBO0FBRXJGLGdEQUErRTtBQUUvRSxxQ0FBeUQ7QUFHekQsd0NBQXdEO0FBQ3hELGtDQUFnRjtBQUNoRixrQ0FBaUM7QUFrQmpDLElBQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFBO0FBQy9CLElBQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFBO0FBQy9CLElBQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFBO0FBRTlCLElBQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFBO0FBQzVCLElBQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFBO0FBRTNCLElBQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFBO0FBQ2hDLElBQU0scUJBQXFCLEdBQUcsRUFBRSxDQUFBO0FBRWhDO0lBQXdDLHNDQUE2QztJQVNqRiw0QkFBYSxhQUFxQixFQUFFLEtBQW1DLEVBQUUsYUFBaUM7UUFDdEcsWUFBQSxNQUFLLFlBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxTQUFBO1FBQ25DLElBQUksS0FBSyxZQUFZLG9CQUFZLEVBQUUsQ0FBQztZQUNoQyxLQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtRQUN6QixDQUFDO2FBQU0sSUFBSSxLQUFLLFlBQVkscUJBQWEsRUFBRSxDQUFDO1lBQ3hDLEtBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ3pCLENBQUM7O0lBQ0wsQ0FBQztJQUVELHNCQUFXLHFDQUFLO2FBQWhCO1lB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Q0wsQ0FBQztJQXRTYSxtQ0FBZ0IsR0FBRyxHQUFHLENBQUE7SUFDdEIsNkJBQVUsR0FBRyxLQUFNLENBQUE7SUFDbkIsaUNBQWMsR0FBRyxXQUFjLENBQUE7SUFxU2pELHlCQUFDO0NBQUEsQUF6U0QsQ0FBd0MscUNBQTBCLEdBeVNqRTtBQXpTWSxnREFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb290IGFzIFByb3RvUm9vdCB9IGZyb20gXCJwcm90b2J1ZmpzXCJcbmNvbnN0IHByb3RvUm9vdCA9IFByb3RvUm9vdC5mcm9tSlNPTihyZXF1aXJlKFwiLi4vLi4vLi4vLi4vd2l0bmV0L3dpdG5ldC5wcm90by5qc29uXCIpKVxuXG5pbXBvcnQgeyBmcm9tSGV4U3RyaW5nLCBmcm9tTmFub3dpdHMsIHRvSGV4U3RyaW5nIH0gZnJvbSBcIi4uLy4uLy4uL2Jpbi9oZWxwZXJzXCJcblxuaW1wb3J0IHsgUmFkb25SZXF1ZXN0LCBSYWRvblRlbXBsYXRlIH0gZnJvbSBcIi4uLy4uL3JhZG9uXCJcbmltcG9ydCB7IEhhc2gsIEhleFN0cmluZywgTmFub3dpdHMgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuXG5pbXBvcnQgeyBUcmFuc2FjdGlvblBheWxvYWRNdWx0aVNpZyB9IGZyb20gXCIuLi9wYXlsb2Fkc1wiXG5pbXBvcnQgeyBQdWJsaWNLZXlIYXNoLCBQdWJsaWNLZXlIYXNoU3RyaW5nLCBUcmFuc2FjdGlvblBhcmFtcyB9IGZyb20gXCIuLi90eXBlc1wiXG5pbXBvcnQgeyBzaGEyNTYgfSBmcm9tIFwiLi4vdXRpbHNcIlxuXG5leHBvcnQgdHlwZSBEYXRhUmVxdWVzdFRlbXBsYXRlQXJncyA9IHN0cmluZyB8IHN0cmluZ1tdIHwgc3RyaW5nW11bXVxuICAgIFxuZXhwb3J0IHR5cGUgRGF0YVJlcXVlc3RQYXJhbXMgPSBUcmFuc2FjdGlvblBhcmFtcyAmIHtcbiAgICBhcmdzPzogRGF0YVJlcXVlc3RUZW1wbGF0ZUFyZ3MsXG4gICAgbWF4UmVzdWx0U2l6ZT86IG51bWJlcixcbiAgICB3aXRuZXNzZXM6IG51bWJlciB8IFJlY29yZDxQdWJsaWNLZXlIYXNoU3RyaW5nLCBOYW5vd2l0cz4sXG59XG5cbnR5cGUgRGF0YVJlcXVlc3RPdXRwdXRTTEEgPSB7XG4gICAgY29sbGF0ZXJhbDogbnVtYmVyLFxuICAgIGNvbW1pdEFuZFJldmVhbEZlZTogbnVtYmVyLFxuICAgIG1pbkNvbnNlbnN1c1BlcmNlbnRhZ2U6IG51bWJlcixcbiAgICB3aXRuZXNzZXM6IG51bWJlcixcbiAgICB3aXRuZXNzUmV3YXJkOiBudW1iZXIsXG59XG5cbmNvbnN0IERSX0NPTU1JVF9UWF9XRUlHSFQgPSA0MDBcbmNvbnN0IERSX1JFVkVBTF9UWF9XRUlHSFQgPSAyMDBcbmNvbnN0IERSX1RBTExZX1RYX1dFSUdIVCA9IDEwMFxuXG5jb25zdCBEUl9UWF9XRUlHSFRfQUxQSEEgPSAxXG5jb25zdCBEUl9UWF9XRUlHSFRfQkVUQSA9IDFcblxuY29uc3QgVFhfV0VJR0hUX0lOUFVUX1NJWkUgPSAxMzNcbmNvbnN0IFRYX1dFSUdIVF9PVVRQVVRfU0laRSA9IDM2XG5cbmV4cG9ydCBjbGFzcyBEYXRhUmVxdWVzdFBheWxvYWQgZXh0ZW5kcyBUcmFuc2FjdGlvblBheWxvYWRNdWx0aVNpZzxEYXRhUmVxdWVzdFBhcmFtcz4ge1xuXG4gICAgcHVibGljIHN0YXRpYyBDT0xMQVRFUkFMX1JBVElPID0gMTI1XG4gICAgcHVibGljIHN0YXRpYyBNQVhfV0VJR0hUID0gODBfMDAwXG4gICAgcHVibGljIHN0YXRpYyBNSU5fQ09MTEFURVJBTCA9IDIwXzAwMF8wMDBfMDAwXG5cbiAgICBwcm90ZWN0ZWQgX3JlcXVlc3Q/OiBSYWRvblJlcXVlc3QgXG4gICAgcHVibGljIHJlYWRvbmx5IHRlbXBsYXRlPzogUmFkb25UZW1wbGF0ZVxuICAgIFxuICAgIGNvbnN0cnVjdG9yIChwcm90b1R5cGVOYW1lOiBzdHJpbmcsIHJhZG9uOiBSYWRvblJlcXVlc3QgfCBSYWRvblRlbXBsYXRlLCBpbml0aWFsVGFyZ2V0PzogRGF0YVJlcXVlc3RQYXJhbXMpIHtcbiAgICAgICAgc3VwZXIocHJvdG9UeXBlTmFtZSwgaW5pdGlhbFRhcmdldClcbiAgICAgICAgaWYgKHJhZG9uIGluc3RhbmNlb2YgUmFkb25SZXF1ZXN0KSB7XG4gICAgICAgICAgICB0aGlzLl9yZXF1ZXN0ID0gcmFkb25cbiAgICAgICAgfSBlbHNlIGlmIChyYWRvbiBpbnN0YW5jZW9mIFJhZG9uVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGUgPSByYWRvblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBidXJucygpOiBOYW5vd2l0cyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIC8qIFYyLjEgKi9cbiAgICAgICAgaWYgKHRoaXMuX3RhcmdldCAmJiB0eXBlb2YgdGhpcy5fdGFyZ2V0LndpdG5lc3NlcyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpdG5lc3NlcyA9IHRoaXMuX3RhcmdldC53aXRuZXNzZXNcbiAgICAgICAgICAgIHJldHVybiB3aXRuZXNzZXMgKiAoXG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0LmZlZXNcbiAgICAgICAgICAgICAgICAgICAgKyAyICogd2l0bmVzc2VzICogKE1hdGguZmxvb3IodGhpcy5fdGFyZ2V0LmZlZXMgLyAzIC8gdGhpcy5fdGFyZ2V0LndpdG5lc3NlcykpXG4gICAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRyb0hhc2goKTogSGFzaCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IG9iaiA9IHRoaXMuX3RvRHJPdXRwdXRQcm90b2J1ZigpXG4gICAgICAgIGlmIChvYmopIHtcbiAgICAgICAgICAgIGNvbnN0IERhdGFSZXF1ZXN0T3V0cHV0ID0gcHJvdG9Sb290Lmxvb2t1cFR5cGUoXCJEYXRhUmVxdWVzdE91dHB1dFwiKVxuICAgICAgICAgICAgY29uc3QgZXJyID0gRGF0YVJlcXVlc3RPdXRwdXQudmVyaWZ5KG9iailcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoZXJyKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlxcbmRyb0hhc2gub2JqID0+XCIsIEpTT04uc3RyaW5naWZ5KG9iaikpXG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IERhdGFSZXF1ZXN0T3V0cHV0LmZyb21PYmplY3Qob2JqKVxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiXFxuZHJvSGFzaC5tZXNzYWdlID0+XCIsIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKVxuICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVjb2RlID0gRGF0YVJlcXVlc3RPdXRwdXQuZW5jb2RlKG1lc3NhZ2UpLmZpbmlzaCgpXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJcXG5kcm9IYXNoLmJ5dGVjb2RlID0+XCIsIGJ5dGVjb2RlKVxuICAgICAgICAgICAgICAgIHJldHVybiB0b0hleFN0cmluZyhzaGEyNTYoYnl0ZWNvZGUpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkcm9TTEEoKTogRGF0YVJlcXVlc3RPdXRwdXRTTEEgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5fdGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBtaW5Db25zZW5zdXNQZXJjZW50YWdlID0gNTFcbiAgICAgICAgICAgIGNvbnN0IHdpdG5lc3NlcyA9IChcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5fdGFyZ2V0LndpdG5lc3NlcyA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgPyBPYmplY3Qua2V5cyh0aGlzLl90YXJnZXQud2l0bmVzc2VzKS5sZW5ndGggXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5fdGFyZ2V0LndpdG5lc3Nlc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbW1pdEFuZFJldmVhbEZlZSA9IE1hdGguZmxvb3IodGhpcy5fdGFyZ2V0LmZlZXMgLyAzIC8gd2l0bmVzc2VzKVxuICAgICAgICAgICAgY29uc3Qgd2l0bmVzc1Jld2FyZCA9IHdpdG5lc3NlcyAqIGNvbW1pdEFuZFJldmVhbEZlZVxuICAgICAgICAgICAgY29uc3QgY29sbGF0ZXJhbCA9IHdpdG5lc3NSZXdhcmQgKiBEYXRhUmVxdWVzdFBheWxvYWQuQ09MTEFURVJBTF9SQVRJTyBcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY29sbGF0ZXJhbCxcbiAgICAgICAgICAgICAgICBjb21taXRBbmRSZXZlYWxGZWUsXG4gICAgICAgICAgICAgICAgbWluQ29uc2Vuc3VzUGVyY2VudGFnZSxcbiAgICAgICAgICAgICAgICB3aXRuZXNzZXMsXG4gICAgICAgICAgICAgICAgd2l0bmVzc1Jld2FyZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmZWVzKCk6IE5hbm93aXRzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhcmdldD8uZmVlcyB8fCAwXG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNoKCk6IEhhc2ggfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBfYnl0ZWNvZGUgPSB0aGlzLmJ5dGVjb2RlXG4gICAgICAgIGlmIChfYnl0ZWNvZGUgJiYgdGhpcy5kcm9IYXNoKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9IZXhTdHJpbmcoc2hhMjU2KEJ1ZmZlci5jb25jYXQoW1xuICAgICAgICAgICAgICAgIGZyb21IZXhTdHJpbmcodGhpcy5kcm9IYXNoKSxcbiAgICAgICAgICAgICAgICBzaGEyNTYoX2J5dGVjb2RlKSxcbiAgICAgICAgICAgIF0pKSkgYXMgSGFzaFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtYXhXZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIERhdGFSZXF1ZXN0UGF5bG9hZC5NQVhfV0VJR0hUXG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYXJhbWV0ZXJpemVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnRlbXBsYXRlXG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwcmVwYXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuY292ZXJlZFxuICAgICAgICAgICAgICAgICYmIHRoaXMuX2lucHV0cy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgJiYgISF0aGlzLl9yZXF1ZXN0XG4gICAgICAgICAgICAgICAgJiYgISF0aGlzLl90YXJnZXRcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmFkQXJncygpOiBEYXRhUmVxdWVzdFRlbXBsYXRlQXJncyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRlbXBsYXRlID8gdGhpcy5fdGFyZ2V0Py5hcmdzIDogdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcHVibGljIGdldCByYWRIYXNoKCk6IEhleFN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3Q/LnJhZEhhc2goKVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVxdWVzdCgpOiBSYWRvblJlcXVlc3QgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdFxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogTmFub3dpdHMge1xuICAgICAgICBpZiAodGhpcy5fdGFyZ2V0KSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3RhcmdldC53aXRuZXNzZXMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgLyogVjIuMSAqL1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuX3RhcmdldC53aXRuZXNzZXMpLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIsIDApXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuX3RhcmdldC53aXRuZXNzZXMgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgLyogVjIuMCAqL1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpdG5lc3NlcyA9IHRoaXMuX3RhcmdldC53aXRuZXNzZXNcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0bmVzc2VzICogd2l0bmVzc2VzICogKE1hdGguZmxvb3IodGhpcy5fdGFyZ2V0LmZlZXMgLyAzIC8gdGhpcy5fdGFyZ2V0LndpdG5lc3NlcykpXG4gICAgICAgICAgICAgICAgLy8gLyogVjIuMSAqL1xuICAgICAgICAgICAgICAgIC8vIC8vIHJldHVybiAwXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDBcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHdlaWdodCgpOiBOYW5vd2l0cyB7XG4gICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0ICYmIHRoaXMuX3RhcmdldCkge1xuICAgICAgICAgICAgY29uc3Qgd2l0bmVzc2VzID0gdHlwZW9mIHRoaXMuX3RhcmdldC53aXRuZXNzZXMgPT09ICdvYmplY3QnID8gT2JqZWN0LmtleXModGhpcy5fdGFyZ2V0LndpdG5lc3NlcykubGVuZ3RoIDogdGhpcy5fdGFyZ2V0LndpdG5lc3Nlc1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBEUl9UWF9XRUlHSFRfQUxQSEEgKiAodGhpcy5fcmVxdWVzdC53ZWlnaHQoKSArIDggKyAyICsgOCArIDQgKyA4KSxcbiAgICAgICAgICAgICAgICAgICAgKyB0aGlzLl9pbnB1dHMubGVuZ3RoICogVFhfV0VJR0hUX0lOUFVUX1NJWkUgXG4gICAgICAgICAgICAgICAgICAgICsgdGhpcy5fb3V0cHV0cy5sZW5ndGggKiBUWF9XRUlHSFRfT1VUUFVUX1NJWkUgXG4gICAgICAgICAgICAgICAgICAgICsgd2l0bmVzc2VzICogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSX0NPTU1JVF9UWF9XRUlHSFRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBEUl9SRVZFQUxfVFhfV0VJR0hUICogRFJfVFhfV0VJR0hUX0JFVEEgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFRYX1dFSUdIVF9PVVRQVVRfU0laRSAvLyBUT0RPIFYyLjE6IHR5cGVvZiB0aGlzLl90YXJnZXQud2l0bmVzc2VzID09PSAnb2JqZWN0JyA/IFRYX1dFSUdIVF9PVVRQVVRfU0laRSA6IDBcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICArIE1hdGgubWF4KERSX1RBTExZX1RYX1dFSUdIVCAqIERSX1RYX1dFSUdIVF9CRVRBLCB0aGlzLl90YXJnZXQ/Lm1heFJlc3VsdFNpemUgfHwgMClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGludG9SZWNlaXB0KHRhcmdldDogRGF0YVJlcXVlc3RQYXJhbXMpOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVybnM6IHRoaXMuYnVybnMsXG4gICAgICAgICAgICBkcm9IYXNoOiB0aGlzLmRyb0hhc2gsXG4gICAgICAgICAgICByYWRBcmdzOiB0aGlzLnJhZEFyZ3MsXG4gICAgICAgICAgICByYWRIYXNoOiB0aGlzLnJhZEhhc2gsXG4gICAgICAgICAgICB3aXRuZXNzZXM6IHRhcmdldC53aXRuZXNzZXMsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRUYXJnZXQodGFyZ2V0OiBEYXRhUmVxdWVzdFBhcmFtcyk6IGFueSB7XG4gICAgICAgIHRoaXMuX2NoYW5nZSA9IDBcbiAgICAgICAgdGhpcy5fY292ZXJlZCA9IDBcbiAgICAgICAgdGhpcy5faW5wdXRzID0gW11cbiAgICAgICAgdGhpcy5fb3V0cHV0cyA9IFtdXG4gICAgICAgIHRoaXMuX3RhcmdldCA9IHRhcmdldFxuICAgICAgICBpZiAodGhpcy5kcm9TTEE/LmNvbGxhdGVyYWwgJiYgdGhpcy5kcm9TTEEuY29sbGF0ZXJhbCA8IERhdGFSZXF1ZXN0UGF5bG9hZC5NSU5fQ09MTEFURVJBTCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbXBsaWNpdCB3aXRuZXNzaW5nIGNvbGxhdGVyYWwgdG9vIGxvdzogJHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbU5hbm93aXRzKHRoaXMuZHJvU0xBLmNvbGxhdGVyYWwpXG4gICAgICAgICAgICAgICAgfSA8ICR7XG4gICAgICAgICAgICAgICAgICAgIGZyb21OYW5vd2l0cyhEYXRhUmVxdWVzdFBheWxvYWQuTUlOX0NPTExBVEVSQUwpXG4gICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGVtcGxhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSB0YXJnZXQ/LmFyZ3NcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpICYmIGFyZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZ3NbMF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3QgPSB0aGlzLnRlbXBsYXRlLmJ1aWxkUmVxdWVzdCguLi4oYXJncyBhcyBzdHJpbmdbXVtdKSlcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50ZW1wbGF0ZS5ob21vZ2VuZW91cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVxdWVzdCA9IHRoaXMudGVtcGxhdGUuYnVpbGRSZXF1ZXN0TW9kYWwoLi4uKGFyZ3MgYXMgc3RyaW5nW10pKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBjYW5ub3QgYnVpbGQgbW9kYWwgcmVxdWVzdCBvdXQgZnJvbSBoZXRlcm9nZW5lb3VzIHNvdXJjZXM6ICR7YXJnc31gXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB0eXBlb2YgYXJncyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy50ZW1wbGF0ZS5ob21vZ2VuZW91c1xuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLnRlbXBsYXRlLmFyZ3NDb3VudCA9PT0gMVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVxdWVzdCA9IHRoaXMudGVtcGxhdGUuYnVpbGRSZXF1ZXN0TW9kYWwoYXJncylcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogdW5zdXBwb3J0ZWQgYXJncyB3aGVuIGJ1aWxkaW5nIHJlcXVlc3Qgb3V0IGZyb20gdGVtcGxhdGU6ICR7YXJnc31gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB0b0pTT04oaHVtYW5pemUgPSBmYWxzZSk6IGFueSB7XG4gICAgICAgIGNvbnN0IGRyb1NMQSA9IHRoaXMuZHJvU0xBICAgICAgICBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlucHV0czogdGhpcy5pbnB1dHNcbiAgICAgICAgICAgICAgICAubWFwKChbLCB1dHhvXSkgPT4gKHsgb3V0cHV0X3BvaW50ZXI6IHV0eG8ub3V0cHV0X3BvaW50ZXIgfSkpLFxuICAgICAgICAgICAgb3V0cHV0czogdGhpcy5vdXRwdXRzLm1hcCh2dG8gPT4geyByZXR1cm4geyBcbiAgICAgICAgICAgICAgICBwa2g6IHZ0by5wa2gsXG4gICAgICAgICAgICAgICAgdGltZV9sb2NrOiB2dG8udGltZV9sb2NrLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2dG8udmFsdWUsXG4gICAgICAgICAgICB9fSksXG4gICAgICAgICAgICBkcl9vdXRwdXQ6IHtcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5fcmVxdWVzdCA/IHsgZGF0YV9yZXF1ZXN0OiB0aGlzLl9yZXF1ZXN0LnRvSlNPTihodW1hbml6ZSkgfSA6IHt9KSxcbiAgICAgICAgICAgICAgICBjb21taXRfYW5kX3JldmVhbF9mZWU6IGRyb1NMQT8uY29tbWl0QW5kUmV2ZWFsRmVlLFxuICAgICAgICAgICAgICAgIG1pbl9jb25zZW5zdXNfcGVyY2VudGFnZTogZHJvU0xBPy5taW5Db25zZW5zdXNQZXJjZW50YWdlLFxuICAgICAgICAgICAgICAgIHdpdG5lc3NlczogZHJvU0xBPy53aXRuZXNzZXMsXG4gICAgICAgICAgICAgICAgd2l0bmVzc19yZXdhcmQ6IGRyb1NMQT8ud2l0bmVzc1Jld2FyZCxcbiAgICAgICAgICAgICAgICBjb2xsYXRlcmFsOiBkcm9TTEE/LmNvbGxhdGVyYWxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gICBcblxuICAgIHB1YmxpYyB0b1Byb3RvYnVmKCk6IGFueSB7XG4gICAgICAgIGlmICh0aGlzLnByZXBhcmVkICYmIHRoaXMuX3RhcmdldCAmJiB0aGlzLl9yZXF1ZXN0KSB7XG4gICAgICAgICAgICByZXR1cm4geyAgICBcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHRoaXMuaW5wdXRzXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKFssIHV0eG9dKSA9PiB7IFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25JZCA9IHV0eG8ub3V0cHV0X3BvaW50ZXIuc3BsaXQoJzonKVswXVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0SW5kZXggPSBwYXJzZUludCh1dHhvLm91dHB1dF9wb2ludGVyLnNwbGl0KCc6JylbMV0pXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFBvaW50ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25JZDogeyBTSEEyNTY6IEFycmF5LmZyb20oZnJvbUhleFN0cmluZyh0cmFuc2FjdGlvbklkKSkgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKG91dHB1dEluZGV4ID4gMCA/IHsgb3V0cHV0SW5kZXggfSA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBvdXRwdXRzOiB0aGlzLm91dHB1dHMubWFwKHZ0byA9PiAoeyBcbiAgICAgICAgICAgICAgICAgICAgcGtoOiB7IGhhc2g6IEFycmF5LmZyb20oUHVibGljS2V5SGFzaC5mcm9tQmVjaDMyKHZ0by5wa2gpLnRvQnl0ZXMyMCgpKSwgfSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZ0by52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uKHZ0by50aW1lX2xvY2sgPiAwID8geyB0aW1lTG9jazogdnRvLnRpbWVfbG9jayB9IDoge30pLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICBkck91dHB1dDogdGhpcy5fdG9Eck91dHB1dFByb3RvYnVmKCksXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVUYXJnZXQodGFyZ2V0PzogYW55KTogRGF0YVJlcXVlc3RQYXJhbXMgfCB1bmRlZmluZWQge1xuICAgICAgICB0YXJnZXQgPSB0aGlzLl9jbGVhblRhcmdldEV4dHJhcyh0YXJnZXQpXG4gICAgICAgIGlmICh0YXJnZXQgJiYgT2JqZWN0LmtleXModGFyZ2V0KS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAoIShcbiAgICAgICAgICAgICAgICB0YXJnZXRcbiAgICAgICAgICAgICAgICAgICAgJiYgdGFyZ2V0Py5mZWVzXG4gICAgICAgICAgICAgICAgICAgICYmIHBhcnNlSW50KHRhcmdldD8uZmVlcykgPiAwXG4gICAgICAgICAgICAgICAgICAgICYmIHRhcmdldD8ud2l0bmVzc2VzXG4gICAgICAgICAgICAgICAgICAgICYmICghdGhpcy50ZW1wbGF0ZSB8fCB0YXJnZXQ/LmFyZ3MpXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnZhbGlkIHNwZWNzIHdlcmUgcHJvdmlkZWQ6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0KX1gKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRhcmdldC53aXRuZXNzZXMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogZXhwbGljaXQgd2l0bmVzc2luZyBjb21taXR0ZWVzIG5vdCB5ZXQgc3VwcG9ydGVkOiAke3RhcmdldC53aXRuZXNzZXN9YClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldCBhcyBEYXRhUmVxdWVzdFBhcmFtc1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jbGVhblRhcmdldEV4dHJhcyh0YXJnZXQ/OiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRhcmdldCkuZmlsdGVyKChba2V5LF0pID0+IFtcbiAgICAgICAgICAgICAgICAgICAgJ2FyZ3MnLFxuICAgICAgICAgICAgICAgICAgICAnZmVlcycsXG4gICAgICAgICAgICAgICAgICAgICdtYXhSZXN1bHRTaXplJyxcbiAgICAgICAgICAgICAgICAgICAgJ3dpdG5lc3NlcycsXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhrZXkpKVxuICAgICAgICAgICAgKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF90b0RyT3V0cHV0UHJvdG9idWYoKTogYW55IHtcbiAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5kcm9TTEEsXG4gICAgICAgICAgICAgICAgZGF0YVJlcXVlc3Q6IHRoaXMuX3JlcXVlc3QudG9Qcm90b2J1ZigpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { HexString, Nanowits, Network } from "../../types";
|
|
2
|
+
import { TransactionPayloadMultiSig } from "../payloads";
|
|
3
|
+
import { PublicKeyHashString, TransactionParams } from "../types";
|
|
4
|
+
export type StakeDepositParams = TransactionParams & {
|
|
5
|
+
authorization: HexString;
|
|
6
|
+
value: Nanowits;
|
|
7
|
+
withdrawer: PublicKeyHashString;
|
|
8
|
+
};
|
|
9
|
+
export declare class StakePayload extends TransactionPayloadMultiSig<StakeDepositParams> {
|
|
10
|
+
static MAX_WEIGHT: number;
|
|
11
|
+
static MIN_VALUE: number;
|
|
12
|
+
constructor(protoTypeName: string, specs?: any);
|
|
13
|
+
get maxWeight(): number;
|
|
14
|
+
get prepared(): boolean;
|
|
15
|
+
get value(): Nanowits;
|
|
16
|
+
get weight(): Nanowits;
|
|
17
|
+
intoReceipt(target: StakeDepositParams, network?: Network): {
|
|
18
|
+
authorization: string;
|
|
19
|
+
withdrawer: string;
|
|
20
|
+
validator: string;
|
|
21
|
+
};
|
|
22
|
+
toJSON(_humanize?: boolean, network?: Network): any;
|
|
23
|
+
toProtobuf(): any;
|
|
24
|
+
validateTarget(target?: any): StakeDepositParams | undefined;
|
|
25
|
+
protected _cleanTargetExtras(target?: any): any;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=StakePayload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StakePayload.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/payloads/StakePayload.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EAA4B,mBAAmB,EAAwB,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAEjH,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG;IACjD,aAAa,EAAE,SAAS,CAAC;IACzB,KAAK,EAAE,QAAQ,CAAC;IAChB,UAAU,EAAE,mBAAmB,CAAC;CACnC,CAAA;AAMD,qBAAa,YAAa,SAAQ,0BAA0B,CAAC,kBAAkB,CAAC;IAE5E,OAAc,UAAU,SAAS;IACjC,OAAc,SAAS,SAAmB;gBAE7B,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;IAI/C,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,QAAQ,IAAI,OAAO,CAM7B;IAED,IAAW,KAAK,IAAI,QAAQ,CAE3B;IAED,IAAW,MAAM,IAAI,QAAQ,CAM5B;IAEM,WAAW,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,OAAO;;;;;IAQzD,MAAM,CAAC,SAAS,UAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,GAAG;IA6BjD,UAAU,IAAI,GAAG;IAoCjB,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,kBAAkB,GAAG,SAAS;IAsCnE,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG;CAYlD"}
|