@substrate/api-sidecar 19.4.0 → 20.0.0

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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "19.4.0",
2
+ "version": "20.0.0",
3
3
  "name": "@substrate/api-sidecar",
4
4
  "description": "REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.",
5
5
  "homepage": "https://github.com/paritytech/substrate-api-sidecar#readme",
@@ -50,11 +50,11 @@
50
50
  "test:test-release": "yarn build:scripts && node scripts/build/runYarnPack.js"
51
51
  },
52
52
  "dependencies": {
53
- "@polkadot/api": "^15.2.1",
54
- "@polkadot/api-augment": "^15.2.1",
55
- "@polkadot/api-contract": "^15.2.1",
56
- "@polkadot/types": "^15.2.1",
57
- "@polkadot/types-codec": "^15.2.1",
53
+ "@polkadot/api": "^15.5.2",
54
+ "@polkadot/api-augment": "^15.5.2",
55
+ "@polkadot/api-contract": "^15.5.2",
56
+ "@polkadot/types": "^15.5.2",
57
+ "@polkadot/types-codec": "^15.5.2",
58
58
  "@polkadot/util": "^13.3.1",
59
59
  "@polkadot/util-crypto": "^13.3.1",
60
60
  "@substrate/calc": "^0.3.1",
@@ -73,7 +73,7 @@
73
73
  "@substrate/dev": "^0.9.0",
74
74
  "@types/argparse": "2.0.17",
75
75
  "@types/express": "^5.0.0",
76
- "@types/express-serve-static-core": "^5.0.3",
76
+ "@types/express-serve-static-core": "^5.0.6",
77
77
  "@types/http-errors": "2.0.4",
78
78
  "@types/lru-cache": "^7.10.10",
79
79
  "@types/morgan": "1.9.9",
@@ -9,4 +9,29 @@ export declare class AccountsStakingInfoService extends AbstractService {
9
9
  * @param stash address of the _Stash_ account to get the staking info of
10
10
  */
11
11
  fetchAccountStakingInfo(hash: BlockHash, stash: string): Promise<IAccountStakingInfo>;
12
+ private fetchStakingData;
13
+ private fetchErasStatusForValidator;
14
+ private fetchErasStatusForNominator;
15
+ /**
16
+ * This function returns the era and its reward status information for a given stash account.
17
+ */
18
+ private fetchErasFromOldCalls;
19
+ private ErasStatusNominatorForValPartiallyClaimed;
20
+ /**
21
+ * This function calculates the era from which we should start checking
22
+ * for claimed rewards.
23
+ */
24
+ private fetchErasStart;
25
+ /**
26
+ * This function verifies if the information from old calls has already been checked/used. If not,
27
+ * it proceeds to use it and populate the `claimedRewards` array with the eras that have been claimed.
28
+ * Note that data from old calls may also be empty (no results), in which case the `claimedRewards` array
29
+ * will only be populated with data from the new `query.staking?.claimedRewards` call
30
+ * (later in the main function's code).
31
+ *
32
+ * Returns a boolean flag `oldCallChecked` that indicates if the old calls have already been checked/used or not.
33
+ *
34
+ */
35
+ private isOldCallsChecked;
36
+ private fetchClaimedInfoFromOldCalls;
12
37
  }
@@ -26,8 +26,10 @@ class AccountsStakingInfoService extends AbstractService_1.AbstractService {
26
26
  * @param stash address of the _Stash_ account to get the staking info of
27
27
  */
28
28
  async fetchAccountStakingInfo(hash, stash) {
29
+ var _a;
29
30
  const { api } = this;
30
31
  const historicApi = await api.at(hash);
32
+ // Fetching initial data
31
33
  const [header, controllerOption] = await Promise.all([
32
34
  api.rpc.chain.getHeader(hash),
33
35
  historicApi.query.staking.bonded(stash), // Option<AccountId> representing the controller
@@ -42,33 +44,296 @@ class AccountsStakingInfoService extends AbstractService_1.AbstractService {
42
44
  throw new http_errors_1.BadRequest(`The address ${stash} is not a stash address.`);
43
45
  }
44
46
  const controller = controllerOption.unwrap();
45
- const [stakingLedgerOption, rewardDestination, slashingSpansOption] = await Promise.all([
46
- historicApi.query.staking.ledger(controller),
47
- historicApi.query.staking.payee(stash),
48
- historicApi.query.staking.slashingSpans(stash),
49
- ]).catch((err) => {
50
- throw this.createHttpErrorForAddr(stash, err);
51
- });
47
+ const [stakingLedgerOption, rewardDestination, slashingSpansOption] = await this.fetchStakingData(historicApi, controller, stash);
52
48
  const stakingLedger = stakingLedgerOption.unwrapOr(null);
49
+ /**
50
+ * `isValidator`: checking if the account is a validator or not.
51
+ *
52
+ * `nominations`: fetching the list of validators that a nominator is nominating. This is only relevant for nominators.
53
+ * The stash account that we use as key is the nominator's stash account.
54
+ * https://polkadot.js.org/docs/substrate/storage/#nominatorsaccountid32-optionpalletstakingnominations
55
+ *
56
+ * `currentEra`: fetching the current era.
57
+ */
58
+ const [isValidator, nominations, currentEraOption] = await Promise.all([
59
+ historicApi.query.session
60
+ ? (await historicApi.query.session.validators()).toHuman().includes(stash)
61
+ : false,
62
+ historicApi.query.staking.nominators ? (await historicApi.query.staking.nominators(stash)).unwrapOr(null) : null,
63
+ historicApi.query.staking.currentEra(),
64
+ ]);
53
65
  if (stakingLedger === null) {
54
66
  // should never throw because by time we get here we know we have a bonded pair
55
67
  throw new http_errors_1.InternalServerError(`Staking ledger could not be found for controller address "${controller.toString()}"`);
56
68
  }
57
- const numSlashingSpans = slashingSpansOption.isSome ? slashingSpansOption.unwrap().prior.length + 1 : 0;
58
- let nominations = null;
59
- if (historicApi.query.staking.nominators) {
60
- const nominationsOption = await historicApi.query.staking.nominators(stash);
61
- nominations = nominationsOption.unwrapOr(null);
69
+ // Initializing two arrays to store the status of claimed rewards per era for validators and for nominators.
70
+ let claimedRewards = [];
71
+ let claimedRewardsNom = [];
72
+ // `eraDepth`: the number of eras to check.
73
+ const eraDepth = Number(api.consts.staking.historyDepth.toNumber());
74
+ const eraStart = this.fetchErasStart(currentEraOption, eraDepth);
75
+ let oldCallChecked = false;
76
+ // Checking each era one by one
77
+ for (let e = eraStart; e < eraStart + eraDepth; e++) {
78
+ let claimedRewardsEras = [];
79
+ [claimedRewardsEras, claimedRewards] = this.fetchClaimedInfoFromOldCalls(stakingLedger, claimedRewardsEras, claimedRewards);
80
+ [oldCallChecked, claimedRewards, e] = this.isOldCallsChecked(oldCallChecked, claimedRewardsEras, claimedRewards, eraStart, eraDepth, e);
81
+ claimedRewardsNom = claimedRewards;
82
+ /**
83
+ * If the old calls are checked (which means `oldCallChecked` flag is true) and the new call
84
+ * `query.staking.claimedRewards` is available then we go into this check.
85
+ */
86
+ if (!!((_a = historicApi.query.staking) === null || _a === void 0 ? void 0 : _a.claimedRewards) && oldCallChecked) {
87
+ if (currentEraOption.isNone) {
88
+ throw new http_errors_1.InternalServerError('CurrentEra is None when Some was expected');
89
+ }
90
+ if (isValidator) {
91
+ claimedRewards = await this.fetchErasStatusForValidator(historicApi, e, stash, claimedRewards);
92
+ }
93
+ else {
94
+ // To verify the reward status `claimed` of an era for a Nominator's account,
95
+ // we need to check the status of that era in one of their associated Validators' accounts.
96
+ const validatorsTargets = nominations === null || nominations === void 0 ? void 0 : nominations.targets.toHuman();
97
+ if (validatorsTargets) {
98
+ const [era, claimedRewardsNom1] = await this.fetchErasStatusForNominator(historicApi, e, eraDepth, eraStart, claimedRewardsNom, validatorsTargets, stash, currentEraOption);
99
+ e = era;
100
+ claimedRewardsNom = claimedRewardsNom1;
101
+ }
102
+ }
103
+ }
104
+ else {
105
+ break;
106
+ }
62
107
  }
108
+ const numSlashingSpans = slashingSpansOption.isSome ? slashingSpansOption.unwrap().prior.length + 1 : 0;
63
109
  return {
64
110
  at,
65
111
  controller,
66
112
  rewardDestination,
67
113
  numSlashingSpans,
68
114
  nominations,
69
- staking: stakingLedger,
115
+ staking: {
116
+ stash: stakingLedger.stash,
117
+ total: stakingLedger.total,
118
+ active: stakingLedger.active,
119
+ unlocking: stakingLedger.unlocking,
120
+ claimedRewards: isValidator ? claimedRewards : claimedRewardsNom,
121
+ },
70
122
  };
71
123
  }
124
+ async fetchStakingData(historicApi, controller, stash) {
125
+ const [stakingLedgerOption, rewardDestination, slashingSpansOption] = await Promise.all([
126
+ historicApi.query.staking.ledger(controller),
127
+ historicApi.query.staking.payee(stash),
128
+ historicApi.query.staking.slashingSpans(stash),
129
+ ]).catch((err) => {
130
+ throw this.createHttpErrorForAddr(stash, err);
131
+ });
132
+ return [stakingLedgerOption, rewardDestination, slashingSpansOption];
133
+ }
134
+ async fetchErasStatusForValidator(historicApi, e, stash, claimedRewards) {
135
+ var _a, _b, _c;
136
+ const [erasStakersOverview, erasStakers, claimedRewardsPerEra] = await Promise.all([
137
+ ((_a = historicApi.query.staking) === null || _a === void 0 ? void 0 : _a.erasStakersOverview) ? (_b = historicApi.query.staking) === null || _b === void 0 ? void 0 : _b.erasStakersOverview(e, stash) : null,
138
+ ((_c = historicApi.query.staking) === null || _c === void 0 ? void 0 : _c.erasStakers) ? historicApi.query.staking.erasStakers(e, stash) : null,
139
+ historicApi.query.staking.claimedRewards(e, stash),
140
+ ]);
141
+ if (erasStakersOverview === null || erasStakersOverview === void 0 ? void 0 : erasStakersOverview.isSome) {
142
+ const pageCount = erasStakersOverview.unwrap().pageCount.toNumber();
143
+ const eraStatus = claimedRewardsPerEra.length === 0
144
+ ? 'unclaimed'
145
+ : claimedRewardsPerEra.length === pageCount
146
+ ? 'claimed'
147
+ : claimedRewardsPerEra.length != pageCount
148
+ ? 'partially claimed'
149
+ : 'undefined';
150
+ claimedRewards.push({ era: e, status: eraStatus });
151
+ }
152
+ else if (erasStakers && erasStakers.total.toBigInt() > 0) {
153
+ // if erasStakers.total > 0, then the pageCount is always 1
154
+ // https://github.com/polkadot-js/api/issues/5859#issuecomment-2077011825
155
+ const eraStatus = claimedRewardsPerEra.length === 1 ? 'claimed' : 'unclaimed';
156
+ claimedRewards.push({ era: e, status: eraStatus });
157
+ }
158
+ return claimedRewards;
159
+ }
160
+ async fetchErasStatusForNominator(historicApi, e, depth, eraStart, claimedRewardsNom, validatorsTargets, nominatorStash, currentEraOption) {
161
+ var _a, _b;
162
+ // Iterate through all validators that the nominator is nominating and
163
+ // check if the rewards are claimed or not.
164
+ for (const [idx, validatorStash] of validatorsTargets.entries()) {
165
+ let oldCallChecked = false;
166
+ if (claimedRewardsNom.length == 0) {
167
+ const [era, claimedRewardsOld, oldCallCheck] = await this.fetchErasFromOldCalls(historicApi, e, depth, eraStart, claimedRewardsNom, validatorStash, oldCallChecked);
168
+ claimedRewardsNom = claimedRewardsOld;
169
+ oldCallChecked = oldCallCheck;
170
+ e = era;
171
+ }
172
+ else {
173
+ oldCallChecked = true;
174
+ }
175
+ // Checking if the new call is available then I can check if rewards of nominator are claimed or not.
176
+ // If not available, I will set the status to 'undefined'.
177
+ if (!!((_a = historicApi.query.staking) === null || _a === void 0 ? void 0 : _a.claimedRewards) && oldCallChecked) {
178
+ if (currentEraOption.isNone) {
179
+ throw new http_errors_1.InternalServerError('CurrentEra is None when Some was expected');
180
+ }
181
+ // Doing similar checks as in fetchErasStatusForValidator function
182
+ // but with slight changes to adjust to nominator's case
183
+ const [erasStakersOverview, erasStakers, claimedRewardsPerEra] = await Promise.all([
184
+ historicApi.query.staking.erasStakersOverview(e, validatorStash),
185
+ ((_b = historicApi.query.staking) === null || _b === void 0 ? void 0 : _b.erasStakers) ? historicApi.query.staking.erasStakers(e, validatorStash) : null,
186
+ historicApi.query.staking.claimedRewards(e, validatorStash),
187
+ ]);
188
+ if (erasStakersOverview.isSome) {
189
+ const pageCount = erasStakersOverview.unwrap().pageCount.toNumber();
190
+ const eraStatus = claimedRewardsPerEra.length === 0
191
+ ? 'unclaimed'
192
+ : claimedRewardsPerEra.length === pageCount
193
+ ? 'claimed'
194
+ : claimedRewardsPerEra.length != pageCount
195
+ ? await this.ErasStatusNominatorForValPartiallyClaimed(historicApi, e, validatorStash, pageCount, nominatorStash, claimedRewardsPerEra)
196
+ : 'undefined';
197
+ claimedRewardsNom.push({ era: e, status: eraStatus });
198
+ break;
199
+ }
200
+ else if (erasStakers && erasStakers.total.toBigInt() > 0) {
201
+ // if erasStakers.total > 0, then the pageCount is always 1
202
+ // https://github.com/polkadot-js/api/issues/5859#issuecomment-2077011825
203
+ const eraStatus = claimedRewardsPerEra.length === 1 ? 'claimed' : 'unclaimed';
204
+ claimedRewardsNom.push({ era: e, status: eraStatus });
205
+ break;
206
+ }
207
+ else {
208
+ if (idx === validatorsTargets.length - 1) {
209
+ claimedRewardsNom.push({ era: e, status: 'undefined' });
210
+ }
211
+ else {
212
+ continue;
213
+ }
214
+ }
215
+ }
216
+ }
217
+ return [e, claimedRewardsNom];
218
+ }
219
+ /**
220
+ * This function returns the era and its reward status information for a given stash account.
221
+ */
222
+ async fetchErasFromOldCalls(historicApi, e, depth, eraStart, claimedRewards, validatorStash, oldCallChecked) {
223
+ let claimedRewardsEras = [];
224
+ const controllerOption = await historicApi.query.staking.bonded(validatorStash);
225
+ if (controllerOption.isNone) {
226
+ return [e, claimedRewards, oldCallChecked];
227
+ }
228
+ const controller = controllerOption.unwrap();
229
+ const [stakingLedgerOption, ,] = await this.fetchStakingData(historicApi, controller, validatorStash);
230
+ const stakingLedgerValNom = stakingLedgerOption.unwrapOr(null);
231
+ [claimedRewardsEras, claimedRewards] = this.fetchClaimedInfoFromOldCalls(stakingLedgerValNom, claimedRewardsEras, claimedRewards);
232
+ [oldCallChecked, claimedRewards, e] = this.isOldCallsChecked(oldCallChecked, claimedRewardsEras, claimedRewards, eraStart, depth, e);
233
+ return [e, claimedRewards, oldCallChecked];
234
+ }
235
+ async ErasStatusNominatorForValPartiallyClaimed(historicApi, e, validatorStash, pageCount, nominatorStash, claimedRewardsPerEra) {
236
+ var _a;
237
+ // If era is partially claimed from the side of the validator that means that the validator
238
+ // has more than one page of nominators. In this case, I need to check in which page the nominator is
239
+ // and if that page was claimed or not.
240
+ for (let page = 0; page < pageCount; page++) {
241
+ if ((_a = historicApi.query.staking) === null || _a === void 0 ? void 0 : _a.erasStakersPaged) {
242
+ const erasStakers = await historicApi.query.staking.erasStakersPaged(e, validatorStash, page);
243
+ const erasStakersPaged = erasStakers.unwrapOr(null);
244
+ if (erasStakersPaged === null || erasStakersPaged === void 0 ? void 0 : erasStakersPaged.others) {
245
+ for (const nominator of erasStakersPaged.others.entries()) {
246
+ if (nominatorStash === nominator[1].who.toString()) {
247
+ if (claimedRewardsPerEra.length > 0) {
248
+ const pageIncluded = claimedRewardsPerEra === null || claimedRewardsPerEra === void 0 ? void 0 : claimedRewardsPerEra.some((reward) => Number(reward) === Number(page));
249
+ if (pageIncluded) {
250
+ return 'claimed';
251
+ }
252
+ else {
253
+ return 'unclaimed';
254
+ }
255
+ }
256
+ break;
257
+ }
258
+ }
259
+ }
260
+ }
261
+ }
262
+ return 'undefined';
263
+ }
264
+ /**
265
+ * This function calculates the era from which we should start checking
266
+ * for claimed rewards.
267
+ */
268
+ fetchErasStart(currentEraOption, eraDepth) {
269
+ if (currentEraOption.isNone) {
270
+ throw new http_errors_1.InternalServerError('CurrentEra is None when Some was expected');
271
+ }
272
+ const currentEraNumber = currentEraOption.unwrap().toNumber();
273
+ const eraStart = Math.max(0, currentEraNumber - eraDepth);
274
+ return eraStart;
275
+ }
276
+ /**
277
+ * This function verifies if the information from old calls has already been checked/used. If not,
278
+ * it proceeds to use it and populate the `claimedRewards` array with the eras that have been claimed.
279
+ * Note that data from old calls may also be empty (no results), in which case the `claimedRewards` array
280
+ * will only be populated with data from the new `query.staking?.claimedRewards` call
281
+ * (later in the main function's code).
282
+ *
283
+ * Returns a boolean flag `oldCallChecked` that indicates if the old calls have already been checked/used or not.
284
+ *
285
+ */
286
+ isOldCallsChecked(oldCallChecked, claimedRewardsEras, claimedRewards, eraStart, depth, e) {
287
+ if (!oldCallChecked) {
288
+ if (claimedRewardsEras.length > 0) {
289
+ claimedRewards = claimedRewardsEras.map((element) => ({
290
+ era: element.toNumber(),
291
+ status: 'claimed',
292
+ }));
293
+ const claimedRewardsErasMax = claimedRewardsEras[claimedRewardsEras.length - 1].toNumber();
294
+ /**
295
+ * This check was added because old calls would sometimes return eras outside the intended range.
296
+ * In such cases, I need to verify if the era falls within the specific range I am checking.
297
+ */
298
+ if (eraStart <= claimedRewardsErasMax) {
299
+ e = claimedRewardsErasMax + 1;
300
+ }
301
+ else if (depth == claimedRewardsEras.length) {
302
+ if (claimedRewardsEras[0].toNumber() == eraStart) {
303
+ e = eraStart + depth;
304
+ }
305
+ }
306
+ else {
307
+ claimedRewards = [];
308
+ }
309
+ }
310
+ oldCallChecked = true;
311
+ }
312
+ return [oldCallChecked, claimedRewards, e];
313
+ }
314
+ fetchClaimedInfoFromOldCalls(stakingLedger, claimedRewardsEras, claimedRewards) {
315
+ var _a;
316
+ // Checking first the old call of `lastReward` and setting as claimed only the era that
317
+ // is defined in the lastReward field. I do not make any assumptions for any other eras.
318
+ if (stakingLedger === null || stakingLedger === void 0 ? void 0 : stakingLedger.lastReward) {
319
+ const lastReward = stakingLedger.lastReward;
320
+ if (lastReward.isSome) {
321
+ const e = (_a = stakingLedger === null || stakingLedger === void 0 ? void 0 : stakingLedger.lastReward) === null || _a === void 0 ? void 0 : _a.unwrap().toNumber();
322
+ if (e) {
323
+ claimedRewards.push({ era: e, status: 'claimed' });
324
+ }
325
+ }
326
+ // Second check is another old call called `legacyClaimedRewards` from stakingLedger
327
+ }
328
+ else if (stakingLedger === null || stakingLedger === void 0 ? void 0 : stakingLedger.legacyClaimedRewards) {
329
+ claimedRewardsEras = stakingLedger === null || stakingLedger === void 0 ? void 0 : stakingLedger.legacyClaimedRewards;
330
+ // If none of the above are present, we try the `claimedRewards` from stakingLedger
331
+ }
332
+ else {
333
+ claimedRewardsEras = stakingLedger === null || stakingLedger === void 0 ? void 0 : stakingLedger.claimedRewards;
334
+ }
335
+ return [claimedRewardsEras, claimedRewards];
336
+ }
72
337
  }
73
338
  exports.AccountsStakingInfoService = AccountsStakingInfoService;
74
339
  //# sourceMappingURL=AccountsStakingInfoService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccountsStakingInfoService.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsStakingInfoService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccountsStakingInfoService.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsStakingInfoService.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;AAYxE,6CAA8D;AAG9D,wDAAqD;AAErD,MAAa,0BAA2B,SAAQ,iCAAe;IAC9D;;;;;OAKG;IACH,KAAK,CAAC,uBAAuB,CAAC,IAAe,EAAE,KAAa;;QAC3D,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACrB,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAEvC,wBAAwB;QACxB,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;YAC7B,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,gDAAgD;SACzF,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YACvB,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,MAAM,EAAE,GAAG;YACV,IAAI;YACJ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;SAC3C,CAAC;QAEF,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,wBAAU,CAAC,eAAe,KAAK,0BAA0B,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAChG,WAAW,EACX,UAAU,EACV,KAAK,CACL,CAAC;QACF,MAAM,aAAa,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEzD;;;;;;;;WAQG;QACH,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtE,WAAW,CAAC,KAAK,CAAC,OAAO;gBACxB,CAAC,CAAE,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAe,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACxF,CAAC,CAAC,KAAK;YACR,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YAChH,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE;SACtC,CAAC,CAAC;QAEH,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC5B,+EAA+E;YAC/E,MAAM,IAAI,iCAAmB,CAC5B,6DAA6D,UAAU,CAAC,QAAQ,EAAE,GAAG,CACrF,CAAC;QACH,CAAC;QAED,4GAA4G;QAC5G,IAAI,cAAc,GAAoD,EAAE,CAAC;QACzE,IAAI,iBAAiB,GAAkC,EAAE,CAAC;QAE1D,2CAA2C;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAEjE,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,+BAA+B;QAC/B,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YACrD,IAAI,kBAAkB,GAAU,EAAE,CAAC;YAEnC,CAAC,kBAAkB,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,4BAA4B,CACvE,aAAa,EACb,kBAAkB,EAClB,cAAc,CACd,CAAC;YAEF,CAAC,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAC3D,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,CAAC,CACD,CAAC;YACF,iBAAiB,GAAG,cAA+C,CAAC;YACpE;;;eAGG;YACH,IAAI,CAAC,CAAC,CAAA,MAAA,WAAW,CAAC,KAAK,CAAC,OAAO,0CAAE,cAAc,CAAA,IAAI,cAAc,EAAE,CAAC;gBACnE,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;oBAC7B,MAAM,IAAI,iCAAmB,CAAC,2CAA2C,CAAC,CAAC;gBAC5E,CAAC;gBAED,IAAI,WAAW,EAAE,CAAC;oBACjB,cAAc,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;gBAChG,CAAC;qBAAM,CAAC;oBACP,6EAA6E;oBAC7E,2FAA2F;oBAC3F,MAAM,iBAAiB,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,CAAC,OAAO,EAAc,CAAC;oBACrE,IAAI,iBAAiB,EAAE,CAAC;wBACvB,MAAM,CAAC,GAAG,EAAE,kBAAkB,CAAC,GAAG,MAAM,IAAI,CAAC,2BAA2B,CACvE,WAAW,EACX,CAAC,EACD,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,EACL,gBAAgB,CAChB,CAAC;wBACF,CAAC,GAAG,GAAG,CAAC;wBACR,iBAAiB,GAAG,kBAAkB,CAAC;oBACxC,CAAC;gBACF,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,MAAM;YACP,CAAC;QACF,CAAC;QACD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAExG,OAAO;YACN,EAAE;YACF,UAAU;YACV,iBAAiB;YACjB,gBAAgB;YAChB,WAAW;YACX,OAAO,EAAE;gBACR,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,MAAM,EAAE,aAAa,CAAC,MAAM;gBAC5B,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB;aAChE;SACD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC7B,WAAqC,EACrC,UAAuB,EACvB,KAAa;QAQb,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvF,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAkD;YAC7F,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YACtC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;SAC9C,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YACvB,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IACtE,CAAC;IAEO,KAAK,CAAC,2BAA2B,CACxC,WAAqC,EACrC,CAAS,EACT,KAAa,EACb,cAA6C;;QAE7C,MAAM,CAAC,mBAAmB,EAAE,WAAW,EAAE,oBAAoB,CAAC,GAI1D,MAAM,OAAO,CAAC,GAAG,CAAC;YACrB,CAAA,MAAA,WAAW,CAAC,KAAK,CAAC,OAAO,0CAAE,mBAAmB,EAAC,CAAC,CAAC,MAAA,WAAW,CAAC,KAAK,CAAC,OAAO,0CAAE,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;YAChH,CAAA,MAAA,WAAW,CAAC,KAAK,CAAC,OAAO,0CAAE,WAAW,EAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;YAC/F,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC;SAClD,CAAC,CAAC;QAEH,IAAI,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,MAAM,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACpE,MAAM,SAAS,GACd,oBAAoB,CAAC,MAAM,KAAK,CAAC;gBAChC,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,oBAAoB,CAAC,MAAM,KAAK,SAAS;oBAC1C,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,oBAAoB,CAAC,MAAM,IAAI,SAAS;wBACzC,CAAC,CAAC,mBAAmB;wBACrB,CAAC,CAAC,WAAW,CAAC;YAClB,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;YAC5D,2DAA2D;YAC3D,yEAAyE;YACzE,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;YAC9E,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,cAAc,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,2BAA2B,CACxC,WAAqC,EACrC,CAAS,EACT,KAAa,EACb,QAAgB,EAChB,iBAAgD,EAChD,iBAA2B,EAC3B,cAAsB,EACtB,gBAA6B;;QAE7B,sEAAsE;QACtE,2CAA2C;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC;YACjE,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,IAAI,iBAAiB,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,CAAC,GAAG,EAAE,iBAAiB,EAAE,YAAY,CAAC,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAC9E,WAAW,EACX,CAAC,EACD,KAAK,EACL,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,cAAc,CACd,CAAC;gBACF,iBAAiB,GAAG,iBAAiB,CAAC;gBACtC,cAAc,GAAG,YAAY,CAAC;gBAC9B,CAAC,GAAG,GAAG,CAAC;YACT,CAAC;iBAAM,CAAC;gBACP,cAAc,GAAG,IAAI,CAAC;YACvB,CAAC;YAED,qGAAqG;YACrG,0DAA0D;YAC1D,IAAI,CAAC,CAAC,CAAA,MAAA,WAAW,CAAC,KAAK,CAAC,OAAO,0CAAE,cAAc,CAAA,IAAI,cAAc,EAAE,CAAC;gBACnE,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;oBAC7B,MAAM,IAAI,iCAAmB,CAAC,2CAA2C,CAAC,CAAC;gBAC5E,CAAC;gBAED,kEAAkE;gBAClE,wDAAwD;gBACxD,MAAM,CAAC,mBAAmB,EAAE,WAAW,EAAE,oBAAoB,CAAC,GAI1D,MAAM,OAAO,CAAC,GAAG,CAAC;oBACrB,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,EAAE,cAAc,CAAC;oBAChE,CAAA,MAAA,WAAW,CAAC,KAAK,CAAC,OAAO,0CAAE,WAAW,EAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI;oBACxG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,cAAc,CAAC;iBAC3D,CAAC,CAAC;gBAEH,IAAI,mBAAmB,CAAC,MAAM,EAAE,CAAC;oBAChC,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;oBACpE,MAAM,SAAS,GACd,oBAAoB,CAAC,MAAM,KAAK,CAAC;wBAChC,CAAC,CAAC,WAAW;wBACb,CAAC,CAAC,oBAAoB,CAAC,MAAM,KAAK,SAAS;4BAC1C,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,oBAAoB,CAAC,MAAM,IAAI,SAAS;gCACzC,CAAC,CAAC,MAAM,IAAI,CAAC,yCAAyC,CACpD,WAAW,EACX,CAAC,EACD,cAAc,EACd,SAAS,EACT,cAAc,EACd,oBAAoB,CACpB;gCACF,CAAC,CAAC,WAAW,CAAC;oBAClB,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBACtD,MAAM;gBACP,CAAC;qBAAM,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;oBAC5D,2DAA2D;oBAC3D,yEAAyE;oBACzE,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;oBAC9E,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBACtD,MAAM;gBACP,CAAC;qBAAM,CAAC;oBACP,IAAI,GAAG,KAAK,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC1C,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;oBACzD,CAAC;yBAAM,CAAC;wBACP,SAAS;oBACV,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CAClC,WAAqC,EACrC,CAAS,EACT,KAAa,EACb,QAAgB,EAChB,cAA6C,EAC7C,cAAsB,EACtB,cAAuB;QAEvB,IAAI,kBAAkB,GAAU,EAAE,CAAC;QACnC,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAEhF,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC7B,OAAO,CAAC,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,CAAC,mBAAmB,EAAE,AAAD,EAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;QACtG,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE/D,CAAC,kBAAkB,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,4BAA4B,CACvE,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,CAC4B,CAAC;QAE5C,CAAC,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAC3D,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,KAAK,EACL,CAAC,CACmD,CAAC;QAEtD,OAAO,CAAC,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,yCAAyC,CACtD,WAAqC,EACrC,CAAS,EACT,cAAsB,EACtB,SAAiB,EACjB,cAAsB,EACtB,oBAA8B;;QAE9B,2FAA2F;QAC3F,qGAAqG;QACrG,uCAAuC;QACvC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;YAC7C,IAAI,MAAA,WAAW,CAAC,KAAK,CAAC,OAAO,0CAAE,gBAAgB,EAAE,CAAC;gBACjD,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;gBAC9F,MAAM,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpD,IAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM,EAAE,CAAC;oBAC9B,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;wBAC3D,IAAI,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;4BACpD,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCACrC,MAAM,YAAY,GAAG,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gCAC7F,IAAI,YAAY,EAAE,CAAC;oCAClB,OAAO,SAAS,CAAC;gCAClB,CAAC;qCAAM,CAAC;oCACP,OAAO,WAAW,CAAC;gCACpB,CAAC;4BACF,CAAC;4BACD,MAAM;wBACP,CAAC;oBACF,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,WAAW,CAAC;IACpB,CAAC;IAED;;;OAGG;IACK,cAAc,CAAC,gBAA6B,EAAE,QAAgB;QACrE,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,iCAAmB,CAAC,2CAA2C,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,GAAG,QAAQ,CAAC,CAAC;QAC1D,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED;;;;;;;;;OASG;IACK,iBAAiB,CACxB,cAAuB,EACvB,kBAAyB,EACzB,cAA+D,EAC/D,QAAgB,EAChB,KAAa,EACb,CAAS;QAET,IAAI,CAAC,cAAc,EAAE,CAAC;YACrB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,cAAc,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACrD,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE;oBACvB,MAAM,EAAE,SAAS;iBACjB,CAAC,CAAC,CAAC;gBACJ,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC3F;;;mBAGG;gBACH,IAAI,QAAQ,IAAI,qBAAqB,EAAE,CAAC;oBACvC,CAAC,GAAG,qBAAqB,GAAG,CAAC,CAAC;gBAC/B,CAAC;qBAAM,IAAI,KAAK,IAAI,kBAAkB,CAAC,MAAM,EAAE,CAAC;oBAC/C,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,QAAQ,EAAE,CAAC;wBAClD,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAC;oBACtB,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,cAAc,GAAG,EAAE,CAAC;gBACrB,CAAC;YACF,CAAC;YACD,cAAc,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAEO,4BAA4B,CACnC,aAAgD,EAChD,kBAAyB,EACzB,cAA+D;;QAE/D,uFAAuF;QACvF,wFAAwF;QACxF,IAAK,aAA+C,aAA/C,aAAa,uBAAb,aAAa,CAAoC,UAAU,EAAE,CAAC;YAClE,MAAM,UAAU,GAAI,aAA+C,CAAC,UAAU,CAAC;YAC/E,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,MAAC,aAA+C,aAA/C,aAAa,uBAAb,aAAa,CAAoC,UAAU,0CAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;gBAC5F,IAAI,CAAC,EAAE,CAAC;oBACP,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBACpD,CAAC;YACF,CAAC;YACD,oFAAoF;QACrF,CAAC;aAAM,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,oBAAoB,EAAE,CAAC;YAChD,kBAAkB,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,oBAAoB,CAAC;YACzD,mFAAmF;QACpF,CAAC;aAAM,CAAC;YACP,kBAAkB,GAAI,aAA0C,aAA1C,aAAa,uBAAb,aAAa,CAA+B,cAA0B,CAAC;QAC9F,CAAC;QACD,OAAO,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;IAC7C,CAAC;CACD;AAzbD,gEAybC"}
@@ -2,3 +2,9 @@ import { Option } from '@polkadot/types';
2
2
  import { AccountId, Hash, StakingLedger } from '@polkadot/types/interfaces';
3
3
  export declare const bondedAt: (_hash: Hash, _address: string) => Promise<Option<AccountId>>;
4
4
  export declare const ledgerAt: (_hash: Hash, _address: string) => Promise<Option<StakingLedger>>;
5
+ export declare const bondedAt21157800: (_hash: Hash, _address: string) => Promise<Option<AccountId>>;
6
+ export declare const ledgerAt21157800: (_hash: Hash, _address: string) => Promise<Option<StakingLedger>>;
7
+ export declare const payee21157800: (_hash: Hash, _address: string) => Promise<Option<AccountId>>;
8
+ export declare const bondedAt22939322: (_hash: Hash, _address: string) => Promise<Option<AccountId>>;
9
+ export declare const ledgerAt22939322: (_hash: Hash, _address: string) => Promise<Option<StakingLedger>>;
10
+ export declare const payee22939322: (_hash: Hash, _address: string) => Promise<Option<AccountId>>;
@@ -18,12 +18,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
18
18
  return (mod && mod.__esModule) ? mod : { "default": mod };
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.ledgerAt = exports.bondedAt = void 0;
21
+ exports.payee22939322 = exports.ledgerAt22939322 = exports.bondedAt22939322 = exports.payee21157800 = exports.ledgerAt21157800 = exports.bondedAt21157800 = exports.ledgerAt = exports.bondedAt = void 0;
22
22
  const http_errors_1 = require("http-errors");
23
23
  const sanitizeNumbers_1 = require("../../sanitize/sanitizeNumbers");
24
24
  const registries_1 = require("../../test-helpers/registries");
25
25
  const mock_1 = require("../test-helpers/mock");
26
+ const stakingInfo_1 = require("../test-helpers/mock/accounts/stakingInfo");
27
+ const validators789629Hex_1 = require("../test-helpers/mock/data/validators789629Hex");
28
+ const validators21157800Hex_1 = require("../test-helpers/mock/data/validators21157800Hex");
29
+ const validators22939322Hex_1 = require("../test-helpers/mock/data/validators22939322Hex");
26
30
  const stakingInfo789629_json_1 = __importDefault(require("../test-helpers/responses/accounts/stakingInfo789629.json"));
31
+ const stakingInfo21157800_json_1 = __importDefault(require("../test-helpers/responses/accounts/stakingInfo21157800.json"));
32
+ const stakingInfo21157800nominator_json_1 = __importDefault(require("../test-helpers/responses/accounts/stakingInfo21157800nominator.json"));
33
+ const stakingInfo22939322_json_1 = __importDefault(require("../test-helpers/responses/accounts/stakingInfo22939322.json"));
27
34
  const AccountsStakingInfoService_1 = require("./AccountsStakingInfoService");
28
35
  const bondedAt = (_hash, _address) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<AccountId>', mock_1.testAddressController));
29
36
  exports.bondedAt = bondedAt;
@@ -31,6 +38,7 @@ const ledgerAt = (_hash, _address) => Promise.resolve().then(() => registries_1.
31
38
  exports.ledgerAt = ledgerAt;
32
39
  const payeeAt = (_hash, _address) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('RewardDestination', 'Controller'));
33
40
  const slashingSpansAt = (_hash, _address) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('SlashingSpans'));
41
+ const validatorsAt789629 = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Vec<AccountId32>', validators789629Hex_1.validators789629Hex));
34
42
  const historicApi = {
35
43
  query: {
36
44
  staking: {
@@ -38,6 +46,10 @@ const historicApi = {
38
46
  ledger: exports.ledgerAt,
39
47
  payee: payeeAt,
40
48
  slashingSpans: slashingSpansAt,
49
+ currentEra: mock_1.currentEraAt,
50
+ },
51
+ session: {
52
+ validators: validatorsAt789629,
41
53
  },
42
54
  },
43
55
  };
@@ -46,6 +58,83 @@ const mockApi = {
46
58
  at: (_hash) => historicApi,
47
59
  };
48
60
  const accountStakingInfoService = new AccountsStakingInfoService_1.AccountsStakingInfoService(mockApi);
61
+ const bondedAt21157800 = (_hash, _address) => Promise.resolve().then(() => registries_1.polkadotRegistryV1002000.createType('Option<AccountId>', mock_1.testAddressControllerPolkadot));
62
+ exports.bondedAt21157800 = bondedAt21157800;
63
+ const ledgerAt21157800 = (_hash, _address) => Promise.resolve().then(() => registries_1.polkadotRegistryV1002000.createType('Option<StakingLedger>', '0x005fa73637062be3fbfb972174a5bc85a2f6cc0350cb84aa9d657422796bfdf10b119b01640c070b119b01640c070088690500006a0500006b0500006c0500006d0500006e0500006f050000700500007105000072050000730500007405000075050000760500007705000078050000790500007a0500007b0500007c0500007d0500007e0500007f050000800500008105000082050000830500008405000085050000860500008705000088050000890500008a050000'));
64
+ exports.ledgerAt21157800 = ledgerAt21157800;
65
+ const payee21157800 = (_hash, _address) => Promise.resolve().then(() => registries_1.polkadotRegistryV1002000.createType('Option<AccountId>', mock_1.testAddressPayeePolkadot));
66
+ exports.payee21157800 = payee21157800;
67
+ const validatorsAt21157800 = () => Promise.resolve().then(() => registries_1.polkadotRegistryV1002000.createType('Vec<AccountId32>', validators21157800Hex_1.validators21157800Hex));
68
+ const nominations21157800 = (_hash) => Promise.resolve().then(() => registries_1.polkadotRegistryV1002000.createType('Option<PalletStakingNominations>', '0x04005fa73637062be3fbfb972174a5bc85a2f6cc0350cb84aa9d657422796bfdf16705000000'));
69
+ const historicApi21157800 = {
70
+ query: {
71
+ staking: {
72
+ bonded: exports.bondedAt21157800,
73
+ ledger: exports.ledgerAt21157800,
74
+ payee: stakingInfo_1.polkadotPayeeMockedCall,
75
+ slashingSpans: stakingInfo_1.polkadotSlashingSpansMockedCall,
76
+ claimedRewards: stakingInfo_1.polkadotClaimedRewardsMockedCall,
77
+ activeEra: mock_1.activeEraAt21157800,
78
+ currentEra: mock_1.currentEraAt21157800,
79
+ erasStakersOverview: stakingInfo_1.polkadotErasStakersOverviewMockedCall,
80
+ erasStakers: stakingInfo_1.polkadotErasStakersMockedCall,
81
+ nominators: null,
82
+ },
83
+ session: {
84
+ validators: validatorsAt21157800,
85
+ },
86
+ },
87
+ };
88
+ const mockApiPolkadot21157800val = {
89
+ ...mock_1.defaultMockApi21157800,
90
+ at: (_hash) => historicApi21157800,
91
+ };
92
+ const accountStakingInfoService21157800val = new AccountsStakingInfoService_1.AccountsStakingInfoService(mockApiPolkadot21157800val);
93
+ const mockApiPolkadot21157800nom = {
94
+ ...mock_1.defaultMockApi21157800,
95
+ at: (_hash) => ({
96
+ ...historicApi21157800,
97
+ query: {
98
+ ...historicApi21157800.query,
99
+ staking: {
100
+ ...historicApi21157800.query.staking,
101
+ nominators: nominations21157800,
102
+ erasStakersPaged: stakingInfo_1.polkadotErasStakersPagedMockedCall,
103
+ },
104
+ },
105
+ }),
106
+ };
107
+ const accountStakingInfoService21157800nom = new AccountsStakingInfoService_1.AccountsStakingInfoService(mockApiPolkadot21157800nom);
108
+ const bondedAt22939322 = (_hash, _address) => Promise.resolve().then(() => registries_1.kusamaRegistryV1002000.createType('Option<AccountId>', mock_1.testAddressControllerKusama));
109
+ exports.bondedAt22939322 = bondedAt22939322;
110
+ const ledgerAt22939322 = (_hash, _address) => Promise.resolve().then(() => registries_1.kusamaRegistryV1002000.createType('Option<StakingLedger>', '0x6c6ed8531e6c0b882af0a42f2f23ef0a102b5d49cb5f5a24ede72d53ffce83170b7962e569db040b7962e569db0400a84719000048190000491900004a1900004b1900004c1900004d1900004e1900004f190000501900005119000052190000531900005419000055190000561900005719000058190000591900005a1900005b1900005c1900005d1900005e1900005f190000601900006119000062190000631900006419000065190000661900006719000068190000691900006a1900006b1900006c1900006d1900006e1900006f19000070190000'));
111
+ exports.ledgerAt22939322 = ledgerAt22939322;
112
+ const payee22939322 = (_hash, _address) => Promise.resolve().then(() => registries_1.kusamaRegistryV1002000.createType('Option<AccountId>', mock_1.testAddressPayeeKusama));
113
+ exports.payee22939322 = payee22939322;
114
+ const validatorsAt22939322 = () => Promise.resolve().then(() => registries_1.kusamaRegistryV1002000.createType('Vec<AccountId32>', validators22939322Hex_1.validators22939322Hex));
115
+ const historicApi22939322 = {
116
+ query: {
117
+ staking: {
118
+ bonded: exports.bondedAt22939322,
119
+ ledger: exports.ledgerAt22939322,
120
+ payee: stakingInfo_1.stakingPayeeMockedCall,
121
+ slashingSpans: stakingInfo_1.stakingslashingSpansMockedCall,
122
+ claimedRewards: stakingInfo_1.stakingClaimedRewardsMockedCall,
123
+ activeEra: mock_1.activeEraAt22939322,
124
+ currentEra: mock_1.currentEraAt22939322,
125
+ erasStakersOverview: stakingInfo_1.stakingerasStakersOverviewMockedCall,
126
+ erasStakers: stakingInfo_1.kusamaErasStakersMockedCall,
127
+ },
128
+ session: {
129
+ validators: validatorsAt22939322,
130
+ },
131
+ },
132
+ };
133
+ const mockApiKusama22939322 = {
134
+ ...mock_1.defaultMockApi22939322,
135
+ at: (_hash) => historicApi22939322,
136
+ };
137
+ const accountStakingInfoService22939322 = new AccountsStakingInfoService_1.AccountsStakingInfoService(mockApiKusama22939322);
49
138
  describe('AccountsStakingInfoService', () => {
50
139
  describe('fetchAccountStakingInfo', () => {
51
140
  it('works with a valid stash address (block 789629)', async () => {
@@ -61,6 +150,15 @@ describe('AccountsStakingInfoService', () => {
61
150
  await expect(accountStakingInfoService.fetchAccountStakingInfo(mock_1.blockHash789629, mock_1.testAddress)).rejects.toStrictEqual(new http_errors_1.InternalServerError(`Staking ledger could not be found for controller address "${mock_1.testAddressController.toString()}"`));
62
151
  historicApi.query.staking.ledger = exports.ledgerAt;
63
152
  });
153
+ it('works with a valid stash account (block 22939322) and returns eras claimed that include era 6514 (when the migration occurred in Kusama)', async () => {
154
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(await accountStakingInfoService22939322.fetchAccountStakingInfo(mock_1.blockHash22939322, mock_1.testAddressKusama))).toStrictEqual(stakingInfo22939322_json_1.default);
155
+ });
156
+ it('works with a validator account (block 21157800) & returns an array of claimed (including case erasStakersOverview=null & erasStakers>0, era 1419), partially claimed & unclaimed eras (Polkadot)', async () => {
157
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(await accountStakingInfoService21157800val.fetchAccountStakingInfo(mock_1.blockHash21157800, mock_1.testAddressPolkadot))).toStrictEqual(stakingInfo21157800_json_1.default);
158
+ });
159
+ it('works with a nominator account (block 21157800) & returns claimed & unclaimed eras (Polkadot)', async () => {
160
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(await accountStakingInfoService21157800nom.fetchAccountStakingInfo(mock_1.blockHash21157800, mock_1.testNominatorAddressPolkadot))).toStrictEqual(stakingInfo21157800nominator_json_1.default);
161
+ });
64
162
  });
65
163
  });
66
164
  //# sourceMappingURL=AccountsStakingInfoService.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccountsStakingInfoService.spec.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsStakingInfoService.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccountsStakingInfoService.spec.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsStakingInfoService.spec.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ const tempGetKeyNames = trace_1.Trace['getKeyNames'].bind(trace_1.Trace);
35
35
  * HistoricApi used in order to create the correct types per the blocks runtime.
36
36
  */
37
37
  const mockHistoricApi = {
38
- registry: registries_1.kusamRegistryV2025,
38
+ registry: registries_1.kusamaRegistryV2025,
39
39
  };
40
40
  /**
41
41
  * BlocksTraceService mock
@@ -1 +1 @@
1
- {"version":3,"file":"BlocksTraceService.spec.js","sourceRoot":"","sources":["../../../../src/services/blocks/BlocksTraceService.spec.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;AAIxE,oEAAiE;AACjE,8DAAmE;AACnE,+CAAuE;AACvE,uEAAiE;AACjE,uGAAkF;AAClF,+FAA0E;AAC1E,6DAA0D;AAC1D,mCAAgC;AAEhC;;;GAGG;AACH,MAAM,eAAe,GAAG,aAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,aAAK,CAAC,CAAC;AAEzD;;GAEG;AACH,MAAM,eAAe,GAAG;IACvB,QAAQ,EAAE,+BAAkB;CACW,CAAC;AAEzC;;GAEG;AACH,MAAM,kBAAkB,GAAG,IAAI,uCAAkB,CAAC,qBAAc,CAAC,CAAC;AAElE,SAAS,CAAC,GAAG,EAAE;IACd,aAAK,CAAC,aAAa,CAAC,GAAG,GAAG,EAAE,CAAC,sBAAQ,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,GAAG,EAAE;IACb,uCAAuC;IACvC,aAAK,CAAC,aAAa,CAAC,GAAG,eAAe,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IACnC,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QAC1C,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,CAAC,IAAA,iCAAe,EAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,sBAAe,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,qBAAc,CAAC,CAAC;QACzG,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC9C,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,CACL,IAAA,iCAAe,EAAC,MAAM,kBAAkB,CAAC,UAAU,CAAC,sBAAe,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAC7F,CAAC,aAAa,CAAC,yBAAkB,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"BlocksTraceService.spec.js","sourceRoot":"","sources":["../../../../src/services/blocks/BlocksTraceService.spec.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;AAIxE,oEAAiE;AACjE,8DAAoE;AACpE,+CAAuE;AACvE,uEAAiE;AACjE,uGAAkF;AAClF,+FAA0E;AAC1E,6DAA0D;AAC1D,mCAAgC;AAEhC;;;GAGG;AACH,MAAM,eAAe,GAAG,aAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,aAAK,CAAC,CAAC;AAEzD;;GAEG;AACH,MAAM,eAAe,GAAG;IACvB,QAAQ,EAAE,gCAAmB;CACU,CAAC;AAEzC;;GAEG;AACH,MAAM,kBAAkB,GAAG,IAAI,uCAAkB,CAAC,qBAAc,CAAC,CAAC;AAElE,SAAS,CAAC,GAAG,EAAE;IACd,aAAK,CAAC,aAAa,CAAC,GAAG,GAAG,EAAE,CAAC,sBAAQ,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,GAAG,EAAE;IACb,uCAAuC;IACvC,aAAK,CAAC,aAAa,CAAC,GAAG,eAAe,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IACnC,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QAC1C,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,CAAC,IAAA,iCAAe,EAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,sBAAe,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,qBAAc,CAAC,CAAC;QACzG,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC9C,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,CACL,IAAA,iCAAe,EAAC,MAAM,kBAAkB,CAAC,UAAU,CAAC,sBAAe,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAC7F,CAAC,aAAa,CAAC,yBAAkB,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,12 +1,26 @@
1
- import type { Option } from '@polkadot/types/codec';
1
+ import type { u128, Vec } from '@polkadot/types';
2
+ import type { Compact, Option } from '@polkadot/types/codec';
2
3
  import type { AccountId } from '@polkadot/types/interfaces/runtime';
3
- import type { PalletStakingNominations, PalletStakingRewardDestination, PalletStakingStakingLedger } from '@polkadot/types/lookup';
4
+ import type { PalletStakingNominations, PalletStakingRewardDestination, PalletStakingUnlockChunk } from '@polkadot/types/lookup';
4
5
  import { IAt } from '.';
6
+ export type ValidatorStatus = 'claimed' | 'unclaimed' | 'partially claimed' | 'undefined';
7
+ export type NominatorStatus = 'claimed' | 'unclaimed' | 'undefined';
8
+ export interface IEraStatus<T> {
9
+ era: number;
10
+ status: T;
11
+ }
12
+ export interface IStakingLedger {
13
+ stash: AccountId;
14
+ total: Compact<u128>;
15
+ active: Compact<u128>;
16
+ unlocking: Vec<PalletStakingUnlockChunk>;
17
+ claimedRewards?: IEraStatus<ValidatorStatus | NominatorStatus>[];
18
+ }
5
19
  export interface IAccountStakingInfo {
6
20
  at: IAt;
7
21
  controller: AccountId;
8
22
  rewardDestination: Option<PalletStakingRewardDestination>;
9
23
  numSlashingSpans: number;
10
24
  nominations: PalletStakingNominations | null;
11
- staking: PalletStakingStakingLedger;
25
+ staking: IStakingLedger | null;
12
26
  }
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "19.4.0",
2
+ "version": "20.0.0",
3
3
  "name": "@substrate/api-sidecar",
4
4
  "description": "REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.",
5
5
  "homepage": "https://github.com/paritytech/substrate-api-sidecar#readme",
@@ -50,11 +50,11 @@
50
50
  "test:test-release": "yarn build:scripts && node scripts/build/runYarnPack.js"
51
51
  },
52
52
  "dependencies": {
53
- "@polkadot/api": "^15.2.1",
54
- "@polkadot/api-augment": "^15.2.1",
55
- "@polkadot/api-contract": "^15.2.1",
56
- "@polkadot/types": "^15.2.1",
57
- "@polkadot/types-codec": "^15.2.1",
53
+ "@polkadot/api": "^15.5.2",
54
+ "@polkadot/api-augment": "^15.5.2",
55
+ "@polkadot/api-contract": "^15.5.2",
56
+ "@polkadot/types": "^15.5.2",
57
+ "@polkadot/types-codec": "^15.5.2",
58
58
  "@polkadot/util": "^13.3.1",
59
59
  "@polkadot/util-crypto": "^13.3.1",
60
60
  "@substrate/calc": "^0.3.1",
@@ -73,7 +73,7 @@
73
73
  "@substrate/dev": "^0.9.0",
74
74
  "@types/argparse": "2.0.17",
75
75
  "@types/express": "^5.0.0",
76
- "@types/express-serve-static-core": "^5.0.3",
76
+ "@types/express-serve-static-core": "^5.0.6",
77
77
  "@types/http-errors": "2.0.4",
78
78
  "@types/lru-cache": "^7.10.10",
79
79
  "@types/morgan": "1.9.9",