@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.
Files changed (211) hide show
  1. package/.env_witnet +6 -6
  2. package/LICENSE +21 -21
  3. package/README.md +103 -103
  4. package/dist/bin/helpers.d.ts +88 -0
  5. package/dist/bin/helpers.d.ts.map +1 -0
  6. package/dist/bin/helpers.js +866 -0
  7. package/dist/index.d.ts +4 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +42 -0
  10. package/dist/lib/crypto/account.d.ts +18 -0
  11. package/dist/lib/crypto/account.d.ts.map +1 -0
  12. package/dist/lib/crypto/account.js +152 -0
  13. package/dist/lib/crypto/coinbase.d.ts +9 -0
  14. package/dist/lib/crypto/coinbase.d.ts.map +1 -0
  15. package/dist/lib/crypto/coinbase.js +39 -0
  16. package/dist/lib/crypto/index.d.ts +7 -0
  17. package/dist/lib/crypto/index.d.ts.map +1 -0
  18. package/dist/lib/crypto/index.js +28 -0
  19. package/dist/lib/crypto/interfaces.d.ts +80 -0
  20. package/dist/lib/crypto/interfaces.d.ts.map +1 -0
  21. package/dist/lib/crypto/interfaces.js +3 -0
  22. package/dist/lib/crypto/payloads/DataRequestPayload.d.ts +47 -0
  23. package/dist/lib/crypto/payloads/DataRequestPayload.d.ts.map +1 -0
  24. package/dist/lib/crypto/payloads/DataRequestPayload.js +384 -0
  25. package/dist/lib/crypto/payloads/StakePayload.d.ts +27 -0
  26. package/dist/lib/crypto/payloads/StakePayload.d.ts.map +1 -0
  27. package/dist/lib/crypto/payloads/StakePayload.js +184 -0
  28. package/dist/lib/crypto/payloads/UnstakePayload.d.ts +35 -0
  29. package/dist/lib/crypto/payloads/UnstakePayload.d.ts.map +1 -0
  30. package/dist/lib/crypto/payloads/UnstakePayload.js +244 -0
  31. package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts +24 -0
  32. package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts.map +1 -0
  33. package/dist/lib/crypto/payloads/ValueTransferPayload.js +182 -0
  34. package/dist/lib/crypto/payloads.d.ts +54 -0
  35. package/dist/lib/crypto/payloads.d.ts.map +1 -0
  36. package/dist/lib/crypto/payloads.js +224 -0
  37. package/dist/lib/crypto/signer.d.ts +26 -0
  38. package/dist/lib/crypto/signer.d.ts.map +1 -0
  39. package/dist/lib/crypto/signer.js +299 -0
  40. package/dist/lib/crypto/transmitters/DataRequests.d.ts +14 -0
  41. package/dist/lib/crypto/transmitters/DataRequests.d.ts.map +1 -0
  42. package/dist/lib/crypto/transmitters/DataRequests.js +62 -0
  43. package/dist/lib/crypto/transmitters/StakeDeposits.d.ts +11 -0
  44. package/dist/lib/crypto/transmitters/StakeDeposits.d.ts.map +1 -0
  45. package/dist/lib/crypto/transmitters/StakeDeposits.js +48 -0
  46. package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts +17 -0
  47. package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts.map +1 -0
  48. package/dist/lib/crypto/transmitters/StakeWithdrawals.js +115 -0
  49. package/dist/lib/crypto/transmitters/ValueTransfers.d.ts +10 -0
  50. package/dist/lib/crypto/transmitters/ValueTransfers.d.ts.map +1 -0
  51. package/dist/lib/crypto/transmitters/ValueTransfers.js +47 -0
  52. package/dist/lib/crypto/transmitters.d.ts +46 -0
  53. package/dist/lib/crypto/transmitters.d.ts.map +1 -0
  54. package/dist/lib/crypto/transmitters.js +506 -0
  55. package/dist/lib/crypto/types.d.ts +127 -0
  56. package/dist/lib/crypto/types.d.ts.map +1 -0
  57. package/dist/lib/crypto/types.js +261 -0
  58. package/dist/lib/crypto/utils.d.ts +10 -0
  59. package/dist/lib/crypto/utils.d.ts.map +1 -0
  60. package/dist/lib/crypto/utils.js +97 -0
  61. package/dist/lib/crypto/wallet.d.ts +26 -0
  62. package/dist/lib/crypto/wallet.d.ts.map +1 -0
  63. package/dist/lib/crypto/wallet.js +327 -0
  64. package/dist/lib/helpers.d.ts +90 -0
  65. package/dist/lib/helpers.d.ts.map +1 -0
  66. package/dist/lib/helpers.js +1031 -0
  67. package/dist/lib/index.d.ts +5 -0
  68. package/dist/lib/index.d.ts.map +1 -0
  69. package/dist/lib/index.js +21 -0
  70. package/dist/lib/radon/artifacts.d.ts +55 -0
  71. package/dist/lib/radon/artifacts.d.ts.map +1 -0
  72. package/dist/lib/radon/artifacts.js +347 -0
  73. package/dist/lib/radon/ccdr/eth.d.ts +100 -0
  74. package/dist/lib/radon/ccdr/eth.d.ts.map +1 -0
  75. package/dist/lib/radon/ccdr/eth.js +237 -0
  76. package/dist/lib/radon/ccdr/index.d.ts +34 -0
  77. package/dist/lib/radon/ccdr/index.d.ts.map +1 -0
  78. package/dist/lib/radon/ccdr/index.js +63 -0
  79. package/dist/lib/radon/ccdr/wit.d.ts +29 -0
  80. package/dist/lib/radon/ccdr/wit.d.ts.map +1 -0
  81. package/dist/lib/radon/ccdr/wit.js +60 -0
  82. package/dist/lib/radon/filters.d.ts +14 -0
  83. package/dist/lib/radon/filters.d.ts.map +1 -0
  84. package/dist/lib/radon/filters.js +47 -0
  85. package/dist/lib/radon/index.d.ts +36 -0
  86. package/dist/lib/radon/index.d.ts.map +1 -0
  87. package/dist/lib/radon/index.js +154 -0
  88. package/dist/lib/radon/reducers.d.ts +29 -0
  89. package/dist/lib/radon/reducers.d.ts.map +1 -0
  90. package/dist/lib/radon/reducers.js +101 -0
  91. package/dist/lib/radon/retrievals.d.ts +120 -0
  92. package/dist/lib/radon/retrievals.d.ts.map +1 -0
  93. package/dist/lib/radon/retrievals.js +358 -0
  94. package/dist/lib/radon/sources.d.ts +102 -0
  95. package/dist/lib/radon/sources.d.ts.map +1 -0
  96. package/dist/lib/radon/sources.js +294 -0
  97. package/dist/lib/radon/types.d.ts +521 -0
  98. package/dist/lib/radon/types.d.ts.map +1 -0
  99. package/dist/lib/radon/types.js +1066 -0
  100. package/dist/lib/radon/utils.d.ts +55 -0
  101. package/dist/lib/radon/utils.d.ts.map +1 -0
  102. package/dist/lib/radon/utils.js +181 -0
  103. package/dist/lib/rpc/farm.d.ts +66 -0
  104. package/dist/lib/rpc/farm.d.ts.map +1 -0
  105. package/dist/lib/rpc/farm.js +808 -0
  106. package/dist/lib/rpc/index.d.ts +3 -0
  107. package/dist/lib/rpc/index.d.ts.map +1 -0
  108. package/dist/lib/rpc/index.js +19 -0
  109. package/dist/lib/rpc/node.d.ts +38 -0
  110. package/dist/lib/rpc/node.d.ts.map +1 -0
  111. package/dist/lib/rpc/node.js +335 -0
  112. package/dist/lib/rpc/nodes.d.ts +40 -0
  113. package/dist/lib/rpc/nodes.d.ts.map +1 -0
  114. package/dist/lib/rpc/nodes.js +531 -0
  115. package/dist/lib/rpc/provider.d.ts +72 -0
  116. package/dist/lib/rpc/provider.d.ts.map +1 -0
  117. package/dist/lib/rpc/provider.js +402 -0
  118. package/dist/lib/rpc/reporter.d.ts +18 -0
  119. package/dist/lib/rpc/reporter.d.ts.map +1 -0
  120. package/dist/lib/rpc/reporter.js +99 -0
  121. package/dist/lib/rpc/types.d.ts +396 -0
  122. package/dist/lib/rpc/types.d.ts.map +1 -0
  123. package/dist/lib/rpc/types.js +81 -0
  124. package/dist/lib/rpc/wallet.d.ts +72 -0
  125. package/dist/lib/rpc/wallet.d.ts.map +1 -0
  126. package/dist/lib/rpc/wallet.js +41 -0
  127. package/dist/lib/types.d.ts +19 -0
  128. package/dist/lib/types.d.ts.map +1 -0
  129. package/dist/lib/types.js +7 -0
  130. package/dist/lib/utils.d.ts +5 -0
  131. package/dist/lib/utils.d.ts.map +1 -0
  132. package/dist/lib/utils.js +51 -0
  133. package/dist/package.json +1 -1
  134. package/dist/src/bin/helpers.js +2 -2
  135. package/dist/src/index.js +1 -1
  136. package/dist/src/lib/crypto/account.js +1 -1
  137. package/dist/src/lib/crypto/coinbase.js +1 -1
  138. package/dist/src/lib/crypto/index.js +1 -1
  139. package/dist/src/lib/crypto/interfaces.js +1 -1
  140. package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts +2 -2
  141. package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts.map +1 -1
  142. package/dist/src/lib/crypto/payloads/DataRequestPayload.js +8 -8
  143. package/dist/src/lib/crypto/payloads/StakePayload.js +1 -1
  144. package/dist/src/lib/crypto/payloads/UnstakePayload.js +1 -1
  145. package/dist/src/lib/crypto/payloads/ValueTransferPayload.js +1 -1
  146. package/dist/src/lib/crypto/payloads.js +1 -1
  147. package/dist/src/lib/crypto/signer.js +1 -1
  148. package/dist/src/lib/crypto/transmitters/DataRequests.d.ts +0 -1
  149. package/dist/src/lib/crypto/transmitters/DataRequests.d.ts.map +1 -1
  150. package/dist/src/lib/crypto/transmitters/DataRequests.js +1 -2
  151. package/dist/src/lib/crypto/transmitters/StakeDeposits.js +1 -1
  152. package/dist/src/lib/crypto/transmitters/StakeWithdrawals.js +1 -1
  153. package/dist/src/lib/crypto/transmitters/ValueTransfers.js +1 -1
  154. package/dist/src/lib/crypto/transmitters.js +1 -1
  155. package/dist/src/lib/crypto/types.js +1 -1
  156. package/dist/src/lib/crypto/utils.js +1 -1
  157. package/dist/src/lib/crypto/wallet.js +1 -1
  158. package/dist/src/lib/index.js +1 -1
  159. package/dist/src/lib/radon/ccdr/eth.js +1 -1
  160. package/dist/src/lib/radon/ccdr/index.js +1 -1
  161. package/dist/src/lib/radon/ccdr/wit.d.ts +11 -0
  162. package/dist/src/lib/radon/ccdr/wit.d.ts.map +1 -1
  163. package/dist/src/lib/radon/ccdr/wit.js +17 -2
  164. package/dist/src/lib/radon/filters.js +1 -1
  165. package/dist/src/lib/radon/index.d.ts +1 -1
  166. package/dist/src/lib/radon/index.d.ts.map +1 -1
  167. package/dist/src/lib/radon/index.js +9 -3
  168. package/dist/src/lib/radon/reducers.js +1 -1
  169. package/dist/src/lib/radon/types.js +1 -1
  170. package/dist/src/lib/radon/utils.js +1 -1
  171. package/dist/src/lib/rpc/index.js +1 -1
  172. package/dist/src/lib/rpc/nodes.js +1 -1
  173. package/dist/src/lib/rpc/provider.d.ts +5 -3
  174. package/dist/src/lib/rpc/provider.d.ts.map +1 -1
  175. package/dist/src/lib/rpc/provider.js +14 -3
  176. package/dist/src/lib/rpc/reporter.d.ts +2 -3
  177. package/dist/src/lib/rpc/reporter.d.ts.map +1 -1
  178. package/dist/src/lib/rpc/reporter.js +1 -4
  179. package/dist/src/lib/rpc/types.d.ts +49 -24
  180. package/dist/src/lib/rpc/types.d.ts.map +1 -1
  181. package/dist/src/lib/rpc/types.js +3 -1
  182. package/dist/src/lib/types.d.ts +1 -1
  183. package/dist/src/lib/types.d.ts.map +1 -1
  184. package/dist/src/lib/types.js +1 -1
  185. package/dist/src/lib/utils.js +1 -1
  186. package/dist/witnet/assets/index.js +1 -1
  187. package/dist/witnet/assets/modals/index.js +1 -1
  188. package/dist/witnet/assets/modals/web3/eth.js +1 -1
  189. package/dist/witnet/assets/modals/web3/ipfs.js +1 -1
  190. package/dist/witnet/assets/modals/web3/wit.js +4 -7
  191. package/dist/witnet/assets/requests.js +1 -1
  192. package/package.json +1 -1
  193. package/src/bin/cli/history.js +31 -31
  194. package/src/bin/cli/inspect.js +405 -359
  195. package/src/bin/cli/network.js +594 -592
  196. package/src/bin/cli/nodes.js +364 -364
  197. package/src/bin/cli/radon.js +815 -815
  198. package/src/bin/cli/wallet.js +1117 -1094
  199. package/src/bin/helpers.js +840 -840
  200. package/src/bin/postinstall.js +9 -9
  201. package/src/bin/toolkit.js +295 -295
  202. package/witnet/assets/_index.js +8 -8
  203. package/witnet/assets/_requests.js +25 -25
  204. package/witnet/assets/_sources.js +36 -36
  205. package/witnet/assets/_templates.js +36 -36
  206. package/witnet/assets/index.js +4 -4
  207. package/witnet/assets/modals/index.js +9 -9
  208. package/witnet/assets/modals/web3/eth.js +29 -29
  209. package/witnet/assets/modals/web3/ipfs.js +19 -19
  210. package/witnet/assets/modals/web3/wit.js +21 -23
  211. 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"}