@polymeshassociation/polymesh-sdk 31.1.0-beta.4 → 31.1.0-beta.6

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 (141) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/CHANGELOG.md +15 -2
  3. package/api/client/Assets.d.ts.map +1 -1
  4. package/api/client/Assets.js +4 -5
  5. package/api/client/Assets.js.map +1 -1
  6. package/api/client/Network.d.ts +20 -0
  7. package/api/client/Network.d.ts.map +1 -1
  8. package/api/client/Network.js +14 -0
  9. package/api/client/Network.js.map +1 -1
  10. package/api/client/Polymesh.js +1 -1
  11. package/api/client/Polymesh.js.map +1 -1
  12. package/api/client/Staking.d.ts +176 -4
  13. package/api/client/Staking.d.ts.map +1 -1
  14. package/api/client/Staking.js +324 -1
  15. package/api/client/Staking.js.map +1 -1
  16. package/api/client/types.d.ts +228 -5
  17. package/api/client/types.d.ts.map +1 -1
  18. package/api/client/types.js +23 -1
  19. package/api/client/types.js.map +1 -1
  20. package/api/entities/Account/Staking/index.d.ts +13 -2
  21. package/api/entities/Account/Staking/index.d.ts.map +1 -1
  22. package/api/entities/Account/Staking/index.js +14 -3
  23. package/api/entities/Account/Staking/index.js.map +1 -1
  24. package/api/entities/Account/index.d.ts +6 -1
  25. package/api/entities/Account/index.d.ts.map +1 -1
  26. package/api/entities/Account/index.js +5 -1
  27. package/api/entities/Account/index.js.map +1 -1
  28. package/api/entities/Account/types.d.ts +1 -1
  29. package/api/entities/Asset/Base/BaseAsset.js +1 -1
  30. package/api/entities/Asset/Base/BaseAsset.js.map +1 -1
  31. package/api/entities/Asset/NonFungible/Nft.js +1 -1
  32. package/api/entities/Asset/NonFungible/Nft.js.map +1 -1
  33. package/api/entities/AuthorizationRequest.js +1 -1
  34. package/api/entities/AuthorizationRequest.js.map +1 -1
  35. package/api/entities/Checkpoint.js +1 -1
  36. package/api/entities/Checkpoint.js.map +1 -1
  37. package/api/entities/CheckpointSchedule/index.js +1 -1
  38. package/api/entities/CheckpointSchedule/index.js.map +1 -1
  39. package/api/entities/CorporateActionBase/index.js +1 -1
  40. package/api/entities/CorporateActionBase/index.js.map +1 -1
  41. package/api/entities/CustomPermissionGroup.js +1 -1
  42. package/api/entities/CustomPermissionGroup.js.map +1 -1
  43. package/api/entities/Identity/IdentityAuthorizations.d.ts +5 -0
  44. package/api/entities/Identity/IdentityAuthorizations.d.ts.map +1 -1
  45. package/api/entities/Identity/IdentityAuthorizations.js +5 -0
  46. package/api/entities/Identity/IdentityAuthorizations.js.map +1 -1
  47. package/api/entities/Identity/Portfolios.js +1 -1
  48. package/api/entities/Identity/Portfolios.js.map +1 -1
  49. package/api/entities/Instruction/index.js +1 -1
  50. package/api/entities/Instruction/index.js.map +1 -1
  51. package/api/entities/MetadataEntry/index.js +1 -1
  52. package/api/entities/MetadataEntry/index.js.map +1 -1
  53. package/api/entities/NumberedPortfolio.d.ts +4 -0
  54. package/api/entities/NumberedPortfolio.d.ts.map +1 -1
  55. package/api/entities/NumberedPortfolio.js +1 -1
  56. package/api/entities/NumberedPortfolio.js.map +1 -1
  57. package/api/entities/Offering/index.js +1 -1
  58. package/api/entities/Offering/index.js.map +1 -1
  59. package/api/entities/Portfolio/index.d.ts +22 -0
  60. package/api/entities/Portfolio/index.d.ts.map +1 -1
  61. package/api/entities/Portfolio/index.js +99 -21
  62. package/api/entities/Portfolio/index.js.map +1 -1
  63. package/api/entities/Venue/index.js +1 -1
  64. package/api/entities/Venue/index.js.map +1 -1
  65. package/api/entities/common/namespaces/Authorizations.d.ts +11 -1
  66. package/api/entities/common/namespaces/Authorizations.d.ts.map +1 -1
  67. package/api/entities/common/namespaces/Authorizations.js +11 -2
  68. package/api/entities/common/namespaces/Authorizations.js.map +1 -1
  69. package/api/procedures/acceptPrimaryKeyRotation.js +1 -1
  70. package/api/procedures/acceptPrimaryKeyRotation.js.map +1 -1
  71. package/api/procedures/bondPolyx.d.ts +9 -1
  72. package/api/procedures/bondPolyx.d.ts.map +1 -1
  73. package/api/procedures/bondPolyx.js +10 -6
  74. package/api/procedures/bondPolyx.js.map +1 -1
  75. package/api/procedures/chillStaking.d.ts +36 -0
  76. package/api/procedures/chillStaking.d.ts.map +1 -0
  77. package/api/procedures/chillStaking.js +72 -0
  78. package/api/procedures/chillStaking.js.map +1 -0
  79. package/api/procedures/configureDividendDistribution.js +2 -2
  80. package/api/procedures/configureDividendDistribution.js.map +1 -1
  81. package/api/procedures/modifyAsset.js +1 -1
  82. package/api/procedures/modifyAsset.js.map +1 -1
  83. package/api/procedures/moveFunds.js +2 -2
  84. package/api/procedures/moveFunds.js.map +1 -1
  85. package/api/procedures/nominateValidators.d.ts +6 -1
  86. package/api/procedures/nominateValidators.d.ts.map +1 -1
  87. package/api/procedures/nominateValidators.js +7 -2
  88. package/api/procedures/nominateValidators.js.map +1 -1
  89. package/api/procedures/redeemNft.js +1 -1
  90. package/api/procedures/redeemNft.js.map +1 -1
  91. package/api/procedures/redeemTokens.js +1 -1
  92. package/api/procedures/redeemTokens.js.map +1 -1
  93. package/api/procedures/removeAssetRequirement.js +1 -1
  94. package/api/procedures/removeAssetRequirement.js.map +1 -1
  95. package/api/procedures/removeCheckpointSchedule.js +1 -1
  96. package/api/procedures/removeCheckpointSchedule.js.map +1 -1
  97. package/api/procedures/removeCorporateAction.js +3 -3
  98. package/api/procedures/removeCorporateAction.js.map +1 -1
  99. package/api/procedures/setCustodian.d.ts +5 -1
  100. package/api/procedures/setCustodian.d.ts.map +1 -1
  101. package/api/procedures/setCustodian.js +2 -6
  102. package/api/procedures/setCustodian.js.map +1 -1
  103. package/api/procedures/setStakingController.d.ts +9 -1
  104. package/api/procedures/setStakingController.d.ts.map +1 -1
  105. package/api/procedures/setStakingController.js +10 -6
  106. package/api/procedures/setStakingController.js.map +1 -1
  107. package/api/procedures/setStakingPayee.d.ts +9 -1
  108. package/api/procedures/setStakingPayee.d.ts.map +1 -1
  109. package/api/procedures/setStakingPayee.js +10 -6
  110. package/api/procedures/setStakingPayee.js.map +1 -1
  111. package/api/procedures/types.d.ts +1 -1
  112. package/api/procedures/updateBondedPolyx.d.ts +13 -2
  113. package/api/procedures/updateBondedPolyx.d.ts.map +1 -1
  114. package/api/procedures/updateBondedPolyx.js +39 -10
  115. package/api/procedures/updateBondedPolyx.js.map +1 -1
  116. package/api/procedures/withdrawUnbondedPolyx.d.ts +9 -1
  117. package/api/procedures/withdrawUnbondedPolyx.d.ts.map +1 -1
  118. package/api/procedures/withdrawUnbondedPolyx.js +10 -6
  119. package/api/procedures/withdrawUnbondedPolyx.js.map +1 -1
  120. package/base/Context.d.ts +2 -1
  121. package/base/Context.d.ts.map +1 -1
  122. package/base/Context.js +2 -2
  123. package/base/Context.js.map +1 -1
  124. package/internal.d.ts +1 -0
  125. package/internal.d.ts.map +1 -1
  126. package/internal.js +3 -1
  127. package/internal.js.map +1 -1
  128. package/middleware/queries/polyxTransactions.d.ts +2 -1
  129. package/middleware/queries/polyxTransactions.d.ts.map +1 -1
  130. package/middleware/queries/polyxTransactions.js +9 -2
  131. package/middleware/queries/polyxTransactions.js.map +1 -1
  132. package/npm-package/{polymeshassociation-polymesh-sdk-31.1.0-beta.4.tgz → polymeshassociation-polymesh-sdk-31.1.0-beta.6.tgz} +0 -0
  133. package/package.json +1 -1
  134. package/utils/constants.d.ts +8 -0
  135. package/utils/constants.d.ts.map +1 -1
  136. package/utils/constants.js +9 -1
  137. package/utils/constants.js.map +1 -1
  138. package/utils/internal.d.ts +1 -1
  139. package/utils/internal.d.ts.map +1 -1
  140. package/utils/internal.js +3 -3
  141. package/utils/internal.js.map +1 -1
@@ -15,8 +15,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.Staking = void 0;
16
16
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
17
17
  const internal_1 = require("../../internal");
18
+ const types_1 = require("../../types");
19
+ const constants_1 = require("../../utils/constants");
18
20
  const conversion_1 = require("../../utils/conversion");
19
21
  const internal_2 = require("../../utils/internal");
22
+ /**
23
+ * @hidden
24
+ *
25
+ * Assemble the exact slot-counted progress through a period, plus the time projection a countdown
26
+ * needs. Both are clamped: a period that has run long has not ended, and a progress above 1 or a
27
+ * negative countdown reads as broken
28
+ */
29
+ function toPeriodProgress(elapsed, total, expectedBlockTime) {
30
+ const capped = bignumber_js_1.default.min(elapsed, total);
31
+ const remaining = total.minus(capped).multipliedBy(expectedBlockTime);
32
+ return {
33
+ elapsed,
34
+ total,
35
+ progress: capped.dividedBy(total),
36
+ remaining,
37
+ end: new Date(new bignumber_js_1.default(Date.now()).plus(remaining).toNumber()),
38
+ };
39
+ }
20
40
  /**
21
41
  * Handles Staking related functionality
22
42
  */
@@ -35,6 +55,13 @@ class Staking {
35
55
  this.bondExtra = (0, internal_2.createProcedureMethod)({
36
56
  getProcedureAndArgs: args => [internal_1.updateBondedPolyx, Object.assign(Object.assign({}, args), { type: 'bondExtra' })],
37
57
  }, context);
58
+ this.rebond = (0, internal_2.createProcedureMethod)({
59
+ getProcedureAndArgs: args => [internal_1.updateBondedPolyx, Object.assign(Object.assign({}, args), { type: 'rebond' })],
60
+ }, context);
61
+ this.chill = (0, internal_2.createProcedureMethod)({
62
+ getProcedureAndArgs: () => [internal_1.chillStaking, undefined],
63
+ voidArgs: true,
64
+ }, context);
38
65
  this.withdraw = (0, internal_2.createProcedureMethod)({
39
66
  getProcedureAndArgs: () => [internal_1.withdrawUnbondedPolyx, undefined],
40
67
  voidArgs: true,
@@ -77,6 +104,38 @@ class Staking {
77
104
  };
78
105
  });
79
106
  }
107
+ /**
108
+ * Retrieve the validators whose set is actually in force for the active era
109
+ *
110
+ * @returns the elected validators, in the chain's own order
111
+ *
112
+ * @note this is a different question from
113
+ * {@link api/client/Staking!Staking.getValidators | getValidators}, which lists every Account
114
+ * *declaring intent* to validate. Those declaring intent but not elected are the waiting set —
115
+ * subtract this result from `getValidators` to get it
116
+ * @note bounded by {@link api/client/Staking!Staking.getValidatorCount | getValidatorCount}, so
117
+ * unlike the intent list this needs no pagination
118
+ */
119
+ getActiveValidators() {
120
+ return __awaiter(this, void 0, void 0, function* () {
121
+ const { context, context: { polymeshApi: { query }, }, } = this;
122
+ const rawValidators = yield query.session.validators();
123
+ return rawValidators.map(rawAddress => new internal_1.Account({ address: (0, conversion_1.accountIdToString)(rawAddress) }, context));
124
+ });
125
+ }
126
+ /**
127
+ * Retrieve how many validators the chain aims to elect each era
128
+ *
129
+ * @note this is the target the election is run against, not how many are currently in force —
130
+ * read {@link api/client/Staking!Staking.getActiveValidators | getActiveValidators} for that.
131
+ * The two differ when fewer Accounts declare intent than there are slots
132
+ */
133
+ getValidatorCount() {
134
+ return __awaiter(this, void 0, void 0, function* () {
135
+ const { context: { polymeshApi: { query }, }, } = this;
136
+ return (0, conversion_1.u32ToBigNumber)(yield query.staking.validatorCount());
137
+ });
138
+ }
80
139
  // eslint-disable-next-line require-jsdoc
81
140
  eraInfo(callback) {
82
141
  return __awaiter(this, void 0, void 0, function* () {
@@ -97,7 +156,8 @@ class Staking {
97
156
  currentEra = (0, conversion_1.u32ToBigNumber)(rawCurrentEra.unwrap());
98
157
  }
99
158
  const plannedSession = (0, conversion_1.u32ToBigNumber)(rawPlannedSession);
100
- const totalStaked = (0, conversion_1.u128ToBigNumber)(rawTotalStaked);
159
+ // `erasTotalStake` is a `Balance`, so it needs the POLYX shift rather than a plain u128 read
160
+ const totalStaked = (0, conversion_1.balanceToBigNumber)(rawTotalStaked);
101
161
  return {
102
162
  activeEra: activeEra.index,
103
163
  activeEraStart: activeEra.start,
@@ -155,6 +215,269 @@ class Staking {
155
215
  return assembleResult(rawActiveEra, rawCurrentEra, rawPlannedSession, rawTotalStaked);
156
216
  });
157
217
  }
218
+ /**
219
+ * Retrieve the chain constants that govern staking
220
+ *
221
+ * @note these come from the chain's metadata, so this makes no query
222
+ */
223
+ getConstants() {
224
+ const { context: { polymeshApi: { consts }, }, } = this;
225
+ const sessionsPerEra = (0, conversion_1.u32ToBigNumber)(consts.staking.sessionsPerEra);
226
+ const slotsPerSession = (0, conversion_1.u64ToBigNumber)(consts.babe.epochDuration);
227
+ const expectedBlockTime = (0, conversion_1.u64ToBigNumber)(consts.babe.expectedBlockTime);
228
+ const eraDuration = expectedBlockTime
229
+ .multipliedBy(slotsPerSession)
230
+ .multipliedBy(sessionsPerEra);
231
+ return {
232
+ sessionsPerEra,
233
+ slotsPerSession,
234
+ expectedBlockTime,
235
+ eraDuration,
236
+ erasPerYear: constants_1.MILLISECONDS_PER_YEAR.dividedBy(eraDuration),
237
+ bondingDuration: (0, conversion_1.u32ToBigNumber)(consts.staking.bondingDuration),
238
+ historyDepth: (0, conversion_1.u32ToBigNumber)(consts.staking.historyDepth),
239
+ fixedYearlyReward: (0, conversion_1.balanceToBigNumber)(consts.validators.fixedYearlyReward),
240
+ maxVariableInflationTotalIssuance: (0, conversion_1.balanceToBigNumber)(consts.validators.maxVariableInflationTotalIssuance),
241
+ };
242
+ }
243
+ // eslint-disable-next-line require-jsdoc
244
+ eraProgress(callback) {
245
+ return __awaiter(this, void 0, void 0, function* () {
246
+ const { context, context: { polymeshApi: { query }, }, } = this;
247
+ const { slotsPerSession, sessionsPerEra, expectedBlockTime } = this.getConstants();
248
+ /* `babe.currentSlot` alone changes every block; the rest ride along on the same notification */
249
+ const queries = [
250
+ [query.staking.activeEra, undefined],
251
+ [query.staking.currentEra, undefined],
252
+ [query.session.currentIndex, undefined],
253
+ [query.babe.epochIndex, undefined],
254
+ [query.babe.currentSlot, undefined],
255
+ [query.babe.genesisSlot, undefined],
256
+ ];
257
+ /*
258
+ * `erasStartSessionIndex` is keyed by the active era, so it cannot join the multi query that
259
+ * reads the era itself. It changes once per era rather than once per block, so it is re-read
260
+ * only when the era does
261
+ */
262
+ let cachedFor = null;
263
+ let startSession = new bignumber_js_1.default(0);
264
+ const readStartSession = (era) => __awaiter(this, void 0, void 0, function* () {
265
+ if (cachedFor !== era.toString()) {
266
+ const rawStartSession = yield query.staking.erasStartSessionIndex((0, conversion_1.bigNumberToU32)(era, context));
267
+ /* an era whose start the chain has pruned cannot anchor a count, so treat it as session 0 */
268
+ startSession = rawStartSession.isSome
269
+ ? (0, conversion_1.u32ToBigNumber)(rawStartSession.unwrap())
270
+ : new bignumber_js_1.default(0);
271
+ cachedFor = era.toString();
272
+ }
273
+ return startSession;
274
+ });
275
+ const assembleResult = ([rawActiveEra, rawCurrentEra, rawSession, rawEpoch, rawSlot, rawGenesisSlot], eraStartSession) => {
276
+ const { index: rawEraIndex, start: rawStart } = rawActiveEra.unwrap();
277
+ const era = (0, conversion_1.u32ToBigNumber)(rawEraIndex);
278
+ const session = (0, conversion_1.u32ToBigNumber)(rawSession);
279
+ /*
280
+ * the chain does not store where a session began, so it is derived the way the runtime lays
281
+ * epochs out: the Nth epoch starts `N * slotsPerSession` slots after genesis
282
+ */
283
+ const sessionStartSlot = (0, conversion_1.u64ToBigNumber)(rawEpoch)
284
+ .multipliedBy(slotsPerSession)
285
+ .plus((0, conversion_1.u64ToBigNumber)(rawGenesisSlot));
286
+ const sessionElapsed = bignumber_js_1.default.max((0, conversion_1.u64ToBigNumber)(rawSlot).minus(sessionStartSlot), 0);
287
+ /* sessions of this era that are already behind the chain */
288
+ const sessionsDone = bignumber_js_1.default.max(session.minus(eraStartSession), 0);
289
+ const eraElapsed = sessionsDone.multipliedBy(slotsPerSession).plus(sessionElapsed);
290
+ return {
291
+ era: {
292
+ index: era,
293
+ planned: rawCurrentEra.isSome ? (0, conversion_1.u32ToBigNumber)(rawCurrentEra.unwrap()) : era,
294
+ start: rawStart.isSome ? new Date((0, conversion_1.u64ToBigNumber)(rawStart.unwrap()).toNumber()) : null,
295
+ progress: toPeriodProgress(eraElapsed, slotsPerSession.multipliedBy(sessionsPerEra), expectedBlockTime),
296
+ },
297
+ session: {
298
+ index: session,
299
+ inEra: bignumber_js_1.default.min(sessionsDone.plus(1), sessionsPerEra),
300
+ perEra: sessionsPerEra,
301
+ progress: toPeriodProgress(sessionElapsed, slotsPerSession, expectedBlockTime),
302
+ },
303
+ };
304
+ };
305
+ const assertActiveEra = (raw) => {
306
+ if (raw[0].isNone) {
307
+ throw new internal_1.PolymeshError({
308
+ code: types_1.ErrorCode.DataUnavailable,
309
+ message: 'There is no active staking era',
310
+ });
311
+ }
312
+ };
313
+ if (callback) {
314
+ context.assertSupportsSubscription();
315
+ return (0, internal_2.requestMulti)(context, queries, (raw) => __awaiter(this, void 0, void 0, function* () {
316
+ assertActiveEra(raw);
317
+ const eraStartSession = yield readStartSession((0, conversion_1.u32ToBigNumber)(raw[0].unwrap().index));
318
+ yield callback(assembleResult(raw, eraStartSession));
319
+ }));
320
+ }
321
+ const raw = yield (0, internal_2.requestMulti)(context, queries);
322
+ assertActiveEra(raw);
323
+ return assembleResult(raw, yield readStartSession((0, conversion_1.u32ToBigNumber)(raw[0].unwrap().index)));
324
+ });
325
+ }
326
+ // eslint-disable-next-line require-jsdoc
327
+ getEraRewardPoints(eraOrCallback, maybeCallback) {
328
+ return __awaiter(this, void 0, void 0, function* () {
329
+ const { context, context: { polymeshApi: { query }, }, } = this;
330
+ const era = bignumber_js_1.default.isBigNumber(eraOrCallback) ? eraOrCallback : undefined;
331
+ const callback = bignumber_js_1.default.isBigNumber(eraOrCallback) ? maybeCallback : eraOrCallback;
332
+ const rawEra = yield this.asRawEra(era);
333
+ const assembleResult = (rawPoints) => {
334
+ const { total, individual } = rawPoints;
335
+ return {
336
+ total: (0, conversion_1.u32ToBigNumber)(total),
337
+ individual: [...individual.entries()].map(([rawAccountId, rawIndividualPoints]) => ({
338
+ account: new internal_1.Account({ address: (0, conversion_1.accountIdToString)(rawAccountId) }, context),
339
+ points: (0, conversion_1.u32ToBigNumber)(rawIndividualPoints),
340
+ })),
341
+ };
342
+ };
343
+ if (callback) {
344
+ context.assertSupportsSubscription();
345
+ return query.staking.erasRewardPoints(rawEra, rawPoints => {
346
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises -- callback errors should be handled by the caller
347
+ callback(assembleResult(rawPoints));
348
+ });
349
+ }
350
+ return assembleResult(yield query.staking.erasRewardPoints(rawEra));
351
+ });
352
+ }
353
+ /**
354
+ * Retrieve the total POLYX paid out to validators and their nominators for an era
355
+ *
356
+ * @param era - defaults to the active era
357
+ *
358
+ * @returns `null` for an era the chain has not paid out, i.e. one still running or older than the
359
+ * history depth
360
+ */
361
+ getEraValidatorReward(era) {
362
+ return __awaiter(this, void 0, void 0, function* () {
363
+ const { context: { polymeshApi: { query }, }, } = this;
364
+ const rawEra = yield this.asRawEra(era);
365
+ const rawReward = yield query.staking.erasValidatorReward(rawEra);
366
+ return rawReward.isNone ? null : (0, conversion_1.balanceToBigNumber)(rawReward.unwrap());
367
+ });
368
+ }
369
+ /**
370
+ * Retrieve the session an era started at
371
+ *
372
+ * @param era - defaults to the active era
373
+ *
374
+ * @returns `null` for an era outside the chain's history depth
375
+ */
376
+ getEraStartSession(era) {
377
+ return __awaiter(this, void 0, void 0, function* () {
378
+ const { context: { polymeshApi: { query }, }, } = this;
379
+ const rawEra = yield this.asRawEra(era);
380
+ const rawIndex = yield query.staking.erasStartSessionIndex(rawEra);
381
+ return rawIndex.isNone ? null : (0, conversion_1.u32ToBigNumber)(rawIndex.unwrap());
382
+ });
383
+ }
384
+ /**
385
+ * Retrieve how much POLYX was backing a validator in an era, and how it was split
386
+ *
387
+ * @param args.validator - the validator's Account or address
388
+ * @param args.era - defaults to the active era
389
+ *
390
+ * @returns `null` if the Account was not in the era's validator set
391
+ */
392
+ getEraExposure(args) {
393
+ return __awaiter(this, void 0, void 0, function* () {
394
+ const { context, context: { polymeshApi: { query }, }, } = this;
395
+ const { validator, era } = args;
396
+ const rawEra = yield this.asRawEra(era);
397
+ const rawAddress = (0, conversion_1.stringToAccountId)((0, internal_2.asAccount)(validator, context).address, context);
398
+ const rawOverview = yield query.staking.erasStakersOverview(rawEra, rawAddress);
399
+ if (rawOverview.isNone) {
400
+ return null;
401
+ }
402
+ const { total, own, nominatorCount, pageCount } = rawOverview.unwrap();
403
+ return {
404
+ total: (0, conversion_1.balanceToBigNumber)(total.unwrap()),
405
+ own: (0, conversion_1.balanceToBigNumber)(own.unwrap()),
406
+ nominatorCount: (0, conversion_1.u32ToBigNumber)(nominatorCount),
407
+ pageCount: (0, conversion_1.u32ToBigNumber)(pageCount),
408
+ };
409
+ });
410
+ }
411
+ /**
412
+ * Retrieve one page of the nominators backing a validator in an era
413
+ *
414
+ * @param args.validator - the validator's Account or address
415
+ * @param args.page - defaults to the first page. Read `pageCount` from
416
+ * {@link api/client/Staking!Staking.getEraExposure | getEraExposure} for how many there are
417
+ * @param args.era - defaults to the active era
418
+ *
419
+ * @returns `null` if the page does not exist
420
+ *
421
+ * @note nominators are paged by the chain so that a payout fits in a block, which is why this is
422
+ * not returned as part of the exposure
423
+ */
424
+ getEraNominators(args) {
425
+ return __awaiter(this, void 0, void 0, function* () {
426
+ const { context, context: { polymeshApi: { query }, }, } = this;
427
+ const { validator, page = new bignumber_js_1.default(0), era } = args;
428
+ const rawEra = yield this.asRawEra(era);
429
+ const rawAddress = (0, conversion_1.stringToAccountId)((0, internal_2.asAccount)(validator, context).address, context);
430
+ const rawPage = (0, conversion_1.bigNumberToU32)(page, context);
431
+ const rawExposure = yield query.staking.erasStakersPaged(rawEra, rawAddress, rawPage);
432
+ if (rawExposure.isNone) {
433
+ return null;
434
+ }
435
+ const { pageTotal, others } = rawExposure.unwrap();
436
+ return {
437
+ pageTotal: (0, conversion_1.balanceToBigNumber)(pageTotal.unwrap()),
438
+ nominators: others.map(({ who, value }) => ({
439
+ account: new internal_1.Account({ address: (0, conversion_1.accountIdToString)(who) }, context),
440
+ value: (0, conversion_1.balanceToBigNumber)(value.unwrap()),
441
+ })),
442
+ };
443
+ });
444
+ }
445
+ // eslint-disable-next-line require-jsdoc
446
+ getElectionPhase(callback) {
447
+ return __awaiter(this, void 0, void 0, function* () {
448
+ const { context, context: { polymeshApi: { query }, }, } = this;
449
+ if (callback) {
450
+ context.assertSupportsSubscription();
451
+ return query.electionProviderMultiPhase.currentPhase(rawPhase => {
452
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises -- callback errors should be handled by the caller
453
+ callback(types_1.ElectionPhase[rawPhase.type]);
454
+ });
455
+ }
456
+ const rawPhase = yield query.electionProviderMultiPhase.currentPhase();
457
+ return types_1.ElectionPhase[rawPhase.type];
458
+ });
459
+ }
460
+ /**
461
+ * @hidden
462
+ *
463
+ * Resolve an optional era argument to the era to query, defaulting to the active one
464
+ */
465
+ asRawEra(era) {
466
+ return __awaiter(this, void 0, void 0, function* () {
467
+ const { context, context: { polymeshApi: { query }, }, } = this;
468
+ if (era) {
469
+ return (0, conversion_1.bigNumberToU32)(era, context);
470
+ }
471
+ const rawActiveEra = yield query.staking.activeEra();
472
+ if (rawActiveEra.isNone) {
473
+ throw new internal_1.PolymeshError({
474
+ code: types_1.ErrorCode.DataUnavailable,
475
+ message: 'There is no active staking era',
476
+ });
477
+ }
478
+ return rawActiveEra.unwrap().index;
479
+ });
480
+ }
158
481
  }
159
482
  exports.Staking = Staking;
160
483
  //# sourceMappingURL=Staking.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Staking.js","sourceRoot":"","sources":["../../../src/api/client/Staking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Staking.js","sourceRoot":"","sources":["../../../src/api/client/Staking.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,gEAAqC;AAErC,yCAWoB;AACpB,mCAsBiB;AACjB,iDAA0D;AAC1D,mDAS4B;AAC5B,+CAM0B;AAE1B;;;;;;GAMG;AACH,SAAS,gBAAgB,CACvB,OAAkB,EAClB,KAAgB,EAChB,iBAA4B;IAE5B,MAAM,MAAM,GAAG,sBAAS,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAEtE,OAAO;QACL,OAAO;QACP,KAAK;QACL,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QACjC,SAAS;QACT,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,sBAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;KACpE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAa,OAAO;IAGlB;;OAEG;IACH,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,IAAI,GAAG,IAAA,gCAAqB,EAC/B;YACE,mBAAmB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,oBAAS,oBAAO,IAAI,EAAG;SACtD,EACD,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAA,gCAAqB,EACjC;YACE,mBAAmB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,4BAAiB,EAAE,gCAAK,IAAI,KAAE,IAAI,EAAE,QAAQ,GAAW,CAAC;SACvF,EACD,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,IAAA,gCAAqB,EACpC;YACE,mBAAmB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,4BAAiB,EAAE,gCAAK,IAAI,KAAE,IAAI,EAAE,WAAW,GAAW,CAAC;SAC1F,EACD,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAA,gCAAqB,EACjC;YACE,mBAAmB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,4BAAiB,EAAE,gCAAK,IAAI,KAAE,IAAI,EAAE,QAAQ,GAAW,CAAC;SACvF,EACD,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG,IAAA,gCAAqB,EAChC;YACE,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,uBAAY,EAAE,SAAS,CAAC;YACpD,QAAQ,EAAE,IAAI;SACf,EACD,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAA,gCAAqB,EACnC;YACE,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,gCAAqB,EAAE,SAAS,CAAC;YAC7D,QAAQ,EAAE,IAAI;SACf,EACD,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAA,gCAAqB,EACnC;YACE,mBAAmB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,6BAAkB,EAAE,kBAAK,IAAI,CAAW,CAAC;SACxE,EACD,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,IAAA,gCAAqB,EACxC;YACE,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,+BAAoB,EAAE,SAAS,CAAC;YAC5D,QAAQ,EAAE,IAAI;SACf,EACD,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAA,gCAAqB,EACnC;YACE,mBAAmB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,0BAAe,EAAE,IAAI,CAAC;SACrD,EACD,OAAO,CACR,CAAC;IACJ,CAAC;IAgED;;;;OAIG;IACU,aAAa,CACxB,cAAkC;;YAElC,MAAM,EACJ,OAAO,EACP,OAAO,EAAE,EACP,WAAW,EAAE,EAAE,KAAK,EAAE,GACvB,GACF,GAAG,IAAI,CAAC;YAET,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,2BAAgB,EACtE,KAAK,CAAC,OAAO,CAAC,UAAU,EACxB;gBACE,cAAc;aACf,CACF,CAAC;YAEF,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAC5B,CAAC,CACC,EACE,IAAI,EAAE,CAAC,UAAU,CAAC,GACnB,EACD,gBAAgB,EACjB,EAAE,EAAE;gBACH,MAAM,OAAO,GAAG,IAAA,8BAAiB,EAAC,UAAU,CAAC,CAAC;gBAC9C,MAAM,OAAO,GAAG,IAAI,kBAAO,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;gBAElD,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAA,yCAA4B,EAAC,gBAAgB,CAAC,CAAC;gBAE/E,OAAO;oBACL,OAAO;oBACP,UAAU;oBACV,OAAO;iBACR,CAAC;YACJ,CAAC,CACF,CAAC;YAEF,OAAO;gBACL,IAAI;gBACJ,IAAI;aACL,CAAC;QACJ,CAAC;KAAA;IAED;;;;;;;;;;;OAWG;IACU,mBAAmB;;YAC9B,MAAM,EACJ,OAAO,EACP,OAAO,EAAE,EACP,WAAW,EAAE,EAAE,KAAK,EAAE,GACvB,GACF,GAAG,IAAI,CAAC;YAET,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAEvD,OAAO,aAAa,CAAC,GAAG,CACtB,UAAU,CAAC,EAAE,CAAC,IAAI,kBAAO,CAAC,EAAE,OAAO,EAAE,IAAA,8BAAiB,EAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAC/E,CAAC;QACJ,CAAC;KAAA;IAED;;;;;;OAMG;IACU,iBAAiB;;YAC5B,MAAM,EACJ,OAAO,EAAE,EACP,WAAW,EAAE,EAAE,KAAK,EAAE,GACvB,GACF,GAAG,IAAI,CAAC;YAET,OAAO,IAAA,2BAAc,EAAC,MAAM,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC9D,CAAC;KAAA;IA2BD,yCAAyC;IAC5B,OAAO,CAClB,QAAsC;;YAEtC,MAAM,EACJ,OAAO,EAAE,EACP,WAAW,EAAE,EAAE,KAAK,EAAE,GACvB,EACD,OAAO,GACR,GAAG,IAAI,CAAC;YAET,MAAM,cAAc,GAAG,CACrB,YAAgD,EAChD,aAA0B,EAC1B,iBAAsB,EACtB,cAAoB,EACJ,EAAE;gBAClB,IAAI,SAAwB,CAAC;gBAC7B,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;oBACxB,SAAS,GAAG,EAAE,KAAK,EAAE,IAAI,sBAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,sBAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,CAAC;qBAAM,CAAC;oBACN,SAAS,GAAG,IAAA,4CAA+B,EAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;gBACrE,CAAC;gBAED,IAAI,UAAqB,CAAC;gBAC1B,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;oBACzB,UAAU,GAAG,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,UAAU,GAAG,IAAA,2BAAc,EAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtD,CAAC;gBAED,MAAM,cAAc,GAAG,IAAA,2BAAc,EAAC,iBAAiB,CAAC,CAAC;gBACzD,6FAA6F;gBAC7F,MAAM,WAAW,GAAG,IAAA,+BAAkB,EAAC,cAAc,CAAC,CAAC;gBAEvD,OAAO;oBACL,SAAS,EAAE,SAAS,CAAC,KAAK;oBAC1B,cAAc,EAAE,SAAS,CAAC,KAAK;oBAC/B,UAAU;oBACV,cAAc;oBACd,WAAW;iBACZ,CAAC;YACJ,CAAC,CAAC;YAEF,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,0BAA0B,EAAE,CAAC;gBAErC,IAAI,YAAgD,CAAC;gBACrD,IAAI,aAAa,GAAgB,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,0CAA0C;gBACzH,IAAI,iBAAsB,CAAC;gBAC3B,IAAI,cAAoB,CAAC;gBAEzB,IAAI,WAAW,GAAG,KAAK,CAAC;gBAExB,MAAM,MAAM,GAAG,GAAS,EAAE;oBACxB,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjB,OAAO;oBACT,CAAC;oBAED,MAAM,MAAM,GAAG,cAAc,CAC3B,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,cAAc,CACf,CAAC;oBAEF,sHAAsH;oBACtH,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACnB,CAAC,CAAC;gBAEF,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBAClE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;wBAClC,YAAY,GAAG,SAAS,CAAC;wBAEzB,MAAM,EAAE,CAAC;oBACX,CAAC,CAAC;oBACF,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAM,UAAU,EAAC,EAAE;wBAC1C,aAAa,GAAG,UAAU,CAAC;wBAC3B,cAAc,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;wBAE/E,MAAM,EAAE,CAAC;oBACX,CAAC,CAAA,CAAC;oBACF,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE;wBACnD,iBAAiB,GAAG,cAAc,CAAC;wBAEnC,MAAM,EAAE,CAAC;oBACX,CAAC,CAAC;iBACH,CAAC,CAAC;gBAEH,cAAc,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE/E,MAAM,KAAK,GAAG,GAAS,EAAE;oBACvB,WAAW,EAAE,CAAC;oBACd,YAAY,EAAE,CAAC;oBACf,YAAY,EAAE,CAAC;gBACjB,CAAC,CAAC;gBAEF,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM,EAAE,CAAC;gBAET,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,iBAAiB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACzE,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE;gBACzB,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE;gBAC1B,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE;aACtC,CAAC,CAAC;YAEH,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAErF,OAAO,cAAc,CAAC,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;QACxF,CAAC;KAAA;IAED;;;;OAIG;IACI,YAAY;QACjB,MAAM,EACJ,OAAO,EAAE,EACP,WAAW,EAAE,EAAE,MAAM,EAAE,GACxB,GACF,GAAG,IAAI,CAAC;QAET,MAAM,cAAc,GAAG,IAAA,2BAAc,EAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG,IAAA,2BAAc,EAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,IAAA,2BAAc,EAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAExE,MAAM,WAAW,GAAG,iBAAiB;aAClC,YAAY,CAAC,eAAe,CAAC;aAC7B,YAAY,CAAC,cAAc,CAAC,CAAC;QAEhC,OAAO;YACL,cAAc;YACd,eAAe;YACf,iBAAiB;YACjB,WAAW;YACX,WAAW,EAAE,iCAAqB,CAAC,SAAS,CAAC,WAAW,CAAC;YACzD,eAAe,EAAE,IAAA,2BAAc,EAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;YAC/D,YAAY,EAAE,IAAA,2BAAc,EAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;YACzD,iBAAiB,EAAE,IAAA,+BAAkB,EAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAC1E,iCAAiC,EAAE,IAAA,+BAAkB,EACnD,MAAM,CAAC,UAAU,CAAC,iCAAiC,CACpD;SACF,CAAC;IACJ,CAAC;IA0BD,yCAAyC;IAC5B,WAAW,CACtB,QAAmC;;YAEnC,MAAM,EACJ,OAAO,EACP,OAAO,EAAE,EACP,WAAW,EAAE,EAAE,KAAK,EAAE,GACvB,GACF,GAAG,IAAI,CAAC;YAET,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAWnF,gGAAgG;YAChG,MAAM,OAAO,GAAqC;gBAChD,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;gBACpC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC;gBACrC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC;gBACvC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;gBAClC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;gBACnC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;aACpC,CAAC;YAIF;;;;eAIG;YACH,IAAI,SAAS,GAAkB,IAAI,CAAC;YACpC,IAAI,YAAY,GAAG,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC;YAEpC,MAAM,gBAAgB,GAAG,CAAO,GAAc,EAAsB,EAAE;gBACpE,IAAI,SAAS,KAAK,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACjC,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAC/D,IAAA,2BAAc,EAAC,GAAG,EAAE,OAAO,CAAC,CAC7B,CAAC;oBAEF,6FAA6F;oBAC7F,YAAY,GAAG,eAAe,CAAC,MAAM;wBACnC,CAAC,CAAC,IAAA,2BAAc,EAAC,eAAe,CAAC,MAAM,EAAE,CAAC;wBAC1C,CAAC,CAAC,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC;oBACrB,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC7B,CAAC;gBAED,OAAO,YAAY,CAAC;YACtB,CAAC,CAAA,CAAC;YAEF,MAAM,cAAc,GAAG,CACrB,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAc,EACzF,eAA0B,EACb,EAAE;gBACf,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;gBAEtE,MAAM,GAAG,GAAG,IAAA,2BAAc,EAAC,WAAW,CAAC,CAAC;gBACxC,MAAM,OAAO,GAAG,IAAA,2BAAc,EAAC,UAAU,CAAC,CAAC;gBAE3C;;;mBAGG;gBACH,MAAM,gBAAgB,GAAG,IAAA,2BAAc,EAAC,QAAQ,CAAC;qBAC9C,YAAY,CAAC,eAAe,CAAC;qBAC7B,IAAI,CAAC,IAAA,2BAAc,EAAC,cAAc,CAAC,CAAC,CAAC;gBAExC,MAAM,cAAc,GAAG,sBAAS,CAAC,GAAG,CAAC,IAAA,2BAAc,EAAC,OAAO,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEzF,4DAA4D;gBAC5D,MAAM,YAAY,GAAG,sBAAS,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEtE,MAAM,UAAU,GAAG,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAEnF,OAAO;oBACL,GAAG,EAAE;wBACH,KAAK,EAAE,GAAG;wBACV,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,2BAAc,EAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;wBAC5E,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAA,2BAAc,EAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;wBACtF,QAAQ,EAAE,gBAAgB,CACxB,UAAU,EACV,eAAe,CAAC,YAAY,CAAC,cAAc,CAAC,EAC5C,iBAAiB,CAClB;qBACF;oBACD,OAAO,EAAE;wBACP,KAAK,EAAE,OAAO;wBACd,KAAK,EAAE,sBAAS,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC;wBAC1D,MAAM,EAAE,cAAc;wBACtB,QAAQ,EAAE,gBAAgB,CAAC,cAAc,EAAE,eAAe,EAAE,iBAAiB,CAAC;qBAC/E;iBACF,CAAC;YACJ,CAAC,CAAC;YAEF,MAAM,eAAe,GAAG,CAAC,GAAgB,EAAQ,EAAE;gBACjD,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;oBAClB,MAAM,IAAI,wBAAa,CAAC;wBACtB,IAAI,EAAE,iBAAS,CAAC,eAAe;wBAC/B,OAAO,EAAE,gCAAgC;qBAC1C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC;YAEF,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,0BAA0B,EAAE,CAAC;gBAErC,OAAO,IAAA,uBAAY,EAAkB,OAAO,EAAE,OAAO,EAAE,CAAM,GAAG,EAAC,EAAE;oBACjE,eAAe,CAAC,GAAG,CAAC,CAAC;oBAErB,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,IAAA,2BAAc,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;oBAEtF,MAAM,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;gBACvD,CAAC,CAAA,CAAC,CAAC;YACL,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,IAAA,uBAAY,EAAkB,OAAO,EAAE,OAAO,CAAC,CAAC;YAElE,eAAe,CAAC,GAAG,CAAC,CAAC;YAErB,OAAO,cAAc,CAAC,GAAG,EAAE,MAAM,gBAAgB,CAAC,IAAA,2BAAc,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5F,CAAC;KAAA;IAsCD,yCAAyC;IAC5B,kBAAkB,CAC7B,aAAwD,EACxD,aAA4C;;YAE5C,MAAM,EACJ,OAAO,EACP,OAAO,EAAE,EACP,WAAW,EAAE,EAAE,KAAK,EAAE,GACvB,GACF,GAAG,IAAI,CAAC;YAET,MAAM,GAAG,GAAG,sBAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7E,MAAM,QAAQ,GAAG,sBAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;YAEtF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAExC,MAAM,cAAc,GAAG,CAAC,SAAuC,EAAmB,EAAE;gBAClF,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;gBAExC,OAAO;oBACL,KAAK,EAAE,IAAA,2BAAc,EAAC,KAAK,CAAC;oBAC5B,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAAE,EAAE,CAAC,CAAC;wBAClF,OAAO,EAAE,IAAI,kBAAO,CAAC,EAAE,OAAO,EAAE,IAAA,8BAAiB,EAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC;wBAC3E,MAAM,EAAE,IAAA,2BAAc,EAAC,mBAAmB,CAAC;qBAC5C,CAAC,CAAC;iBACJ,CAAC;YACJ,CAAC,CAAC;YAEF,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,0BAA0B,EAAE,CAAC;gBAErC,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;oBACxD,sHAAsH;oBACtH,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;YACL,CAAC;YAED,OAAO,cAAc,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,CAAC;KAAA;IAED;;;;;;;OAOG;IACU,qBAAqB,CAAC,GAAe;;YAChD,MAAM,EACJ,OAAO,EAAE,EACP,WAAW,EAAE,EAAE,KAAK,EAAE,GACvB,GACF,GAAG,IAAI,CAAC;YAET,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAExC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAElE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,+BAAkB,EAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1E,CAAC;KAAA;IAED;;;;;;OAMG;IACU,kBAAkB,CAAC,GAAe;;YAC7C,MAAM,EACJ,OAAO,EAAE,EACP,WAAW,EAAE,EAAE,KAAK,EAAE,GACvB,GACF,GAAG,IAAI,CAAC;YAET,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAExC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAEnE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,2BAAc,EAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC;KAAA;IAED;;;;;;;OAOG;IACU,cAAc,CAAC,IAG3B;;YACC,MAAM,EACJ,OAAO,EACP,OAAO,EAAE,EACP,WAAW,EAAE,EAAE,KAAK,EAAE,GACvB,GACF,GAAG,IAAI,CAAC;YAET,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAEhC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,IAAA,oBAAS,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAErF,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAEhF,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBACvB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YAEvE,OAAO;gBACL,KAAK,EAAE,IAAA,+BAAkB,EAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACzC,GAAG,EAAE,IAAA,+BAAkB,EAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBACrC,cAAc,EAAE,IAAA,2BAAc,EAAC,cAAc,CAAC;gBAC9C,SAAS,EAAE,IAAA,2BAAc,EAAC,SAAS,CAAC;aACrC,CAAC;QACJ,CAAC;KAAA;IAED;;;;;;;;;;;;OAYG;IACU,gBAAgB,CAAC,IAI7B;;YACC,MAAM,EACJ,OAAO,EACP,OAAO,EAAE,EACP,WAAW,EAAE,EAAE,KAAK,EAAE,GACvB,GACF,GAAG,IAAI,CAAC;YAET,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,sBAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAEzD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,IAAA,oBAAS,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACrF,MAAM,OAAO,GAAG,IAAA,2BAAc,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAE9C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAEtF,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBACvB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YAEnD,OAAO;gBACL,SAAS,EAAE,IAAA,+BAAkB,EAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBACjD,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC1C,OAAO,EAAE,IAAI,kBAAO,CAAC,EAAE,OAAO,EAAE,IAAA,8BAAiB,EAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC;oBAClE,KAAK,EAAE,IAAA,+BAAkB,EAAC,KAAK,CAAC,MAAM,EAAE,CAAC;iBAC1C,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;KAAA;IAuBD,yCAAyC;IAC5B,gBAAgB,CAC3B,QAAqC;;YAErC,MAAM,EACJ,OAAO,EACP,OAAO,EAAE,EACP,WAAW,EAAE,EAAE,KAAK,EAAE,GACvB,GACF,GAAG,IAAI,CAAC;YAET,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,0BAA0B,EAAE,CAAC;gBAErC,OAAO,KAAK,CAAC,0BAA0B,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;oBAC9D,sHAAsH;oBACtH,QAAQ,CAAC,qBAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzC,CAAC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC,YAAY,EAAE,CAAC;YAEvE,OAAO,qBAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;KAAA;IAED;;;;OAIG;IACW,QAAQ,CAAC,GAAe;;YACpC,MAAM,EACJ,OAAO,EACP,OAAO,EAAE,EACP,WAAW,EAAE,EAAE,KAAK,EAAE,GACvB,GACF,GAAG,IAAI,CAAC;YAET,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,IAAA,2BAAc,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAErD,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;gBACxB,MAAM,IAAI,wBAAa,CAAC;oBACtB,IAAI,EAAE,iBAAS,CAAC,eAAe;oBAC/B,OAAO,EAAE,gCAAgC;iBAC1C,CAAC,CAAC;YACL,CAAC;YAED,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;QACrC,CAAC;KAAA;CACF;AAx0BD,0BAw0BC"}
@@ -1,7 +1,7 @@
1
1
  import { ApiOptions } from '@polkadot/api/types';
2
2
  import { ISubmittableResult } from '@polkadot/types/types';
3
3
  import BigNumber from 'bignumber.js';
4
- import { Asset, Identity, InstructionStatusEnum, TxTag } from '../../types';
4
+ import { Account, Asset, Identity, InstructionStatusEnum, TxTag } from '../../types';
5
5
  export { InstructionStatusEnum };
6
6
  export interface ExtrinsicData {
7
7
  blockHash: string;
@@ -136,7 +136,11 @@ export declare enum ErrorCode {
136
136
  }
137
137
  export interface MiddlewareConfig {
138
138
  link: string;
139
- key: string;
139
+ /**
140
+ * API key for the middleware, sent as the `x-api-key` header. Optional: an indexer that
141
+ * requires no authentication needs none, and the header is omitted rather than sent empty
142
+ */
143
+ key?: string;
140
144
  }
141
145
  export interface PolkadotConfig {
142
146
  /**
@@ -265,15 +269,28 @@ export interface HistoricalInstructionFilters {
265
269
  */
266
270
  export interface StakingEraInfo {
267
271
  /**
268
- * The active era. This is the era whose rewards and slashes are being processed and may lag the current era
272
+ * The era whose validator set is in force, and whose rewards and slashes are being processed
273
+ *
274
+ * @note this is the era to use for anything describing what the chain is doing *now*. It lags
275
+ * {@link StakingEraInfo.currentEra | currentEra} between an election and the session rotation
276
+ * that brings the newly elected set into force
269
277
  */
270
278
  activeEra: BigNumber;
271
279
  /**
272
- * The block in which the active era began
280
+ * The moment the active era began, as milliseconds since the Unix epoch
281
+ *
282
+ * @note this is `0` where the chain holds no start for the active era. The chain creates the
283
+ * active era at session rotation and records its start on the following block, so the gap is
284
+ * brief — but it recurs at every era change, not only before the first era
273
285
  */
274
286
  activeEraStart: BigNumber;
275
287
  /**
276
- * The current era
288
+ * The latest era the chain has *planned*
289
+ *
290
+ * @note a validator set has been elected for this era, but the Session pallet may not have
291
+ * brought it into force yet, so this runs ahead of
292
+ * {@link StakingEraInfo.activeEra | activeEra} between the election and the rotation. The two
293
+ * are equal the rest of the time, and `currentEra` is never behind
277
294
  */
278
295
  currentEra: BigNumber;
279
296
  /**
@@ -285,4 +302,210 @@ export interface StakingEraInfo {
285
302
  */
286
303
  totalStaked: BigNumber;
287
304
  }
305
+ export interface StakingConstants {
306
+ /**
307
+ * The number of sessions in an era
308
+ */
309
+ sessionsPerEra: BigNumber;
310
+ /**
311
+ * The number of slots in a session
312
+ */
313
+ slotsPerSession: BigNumber;
314
+ /**
315
+ * The average time the chain is expected to take to produce a block, in milliseconds
316
+ */
317
+ expectedBlockTime: BigNumber;
318
+ /**
319
+ * How long an era is expected to last, in milliseconds
320
+ *
321
+ * @note this is `expectedBlockTime * slotsPerSession * sessionsPerEra`. It is what an era is
322
+ * expected to take, not what any particular era took — the chain pays rewards against the
323
+ * duration an era actually ran for
324
+ */
325
+ eraDuration: BigNumber;
326
+ /**
327
+ * How many eras are expected in a year
328
+ *
329
+ * @note the year here is the Julian year of 365.25 days, which is what the chain's reward
330
+ * calculation uses
331
+ */
332
+ erasPerYear: BigNumber;
333
+ /**
334
+ * The number of eras that must pass before unbonded POLYX can be withdrawn
335
+ */
336
+ bondingDuration: BigNumber;
337
+ /**
338
+ * How many past eras the chain keeps data for
339
+ *
340
+ * @note the per-era reads return `null` for anything older than this many eras before the active
341
+ * one, because the chain has pruned it
342
+ */
343
+ historyDepth: BigNumber;
344
+ /**
345
+ * The amount of POLYX issued per year once total issuance reaches
346
+ * {@link StakingConstants.maxVariableInflationTotalIssuance}
347
+ */
348
+ fixedYearlyReward: BigNumber;
349
+ /**
350
+ * The total issuance at which rewards stop following the inflation curve and become
351
+ * {@link StakingConstants.fixedYearlyReward}
352
+ */
353
+ maxVariableInflationTotalIssuance: BigNumber;
354
+ }
355
+ /**
356
+ * The phase of the validator election
357
+ */
358
+ export declare enum ElectionPhase {
359
+ /**
360
+ * No election is in progress
361
+ */
362
+ Off = "Off",
363
+ /**
364
+ * Signed solutions are being accepted
365
+ */
366
+ Signed = "Signed",
367
+ /**
368
+ * Unsigned solutions are being accepted
369
+ */
370
+ Unsigned = "Unsigned",
371
+ /**
372
+ * The election failed and is being resolved by governance
373
+ */
374
+ Emergency = "Emergency"
375
+ }
376
+ export interface EraRewardPoints {
377
+ /**
378
+ * The total points awarded across all validators in the era
379
+ */
380
+ total: BigNumber;
381
+ /**
382
+ * The points awarded to each validator that authored at least one block in the era
383
+ */
384
+ individual: {
385
+ account: Account;
386
+ points: BigNumber;
387
+ }[];
388
+ }
389
+ export interface EraExposure {
390
+ /**
391
+ * The total POLYX backing the validator, its own stake included
392
+ */
393
+ total: BigNumber;
394
+ /**
395
+ * The POLYX the validator bonded itself
396
+ */
397
+ own: BigNumber;
398
+ /**
399
+ * How many Accounts nominated the validator in this era
400
+ */
401
+ nominatorCount: BigNumber;
402
+ /**
403
+ * How many pages the nominators are split across
404
+ *
405
+ * @note nominators are paged so a payout fits in a block. Use
406
+ * {@link api/client/Staking!Staking.getEraNominators | getEraNominators} to read one page
407
+ */
408
+ pageCount: BigNumber;
409
+ }
410
+ export interface EraNominators {
411
+ /**
412
+ * The total POLYX nominated on this page
413
+ */
414
+ pageTotal: BigNumber;
415
+ /**
416
+ * The nominators on this page and what each of them staked
417
+ */
418
+ nominators: {
419
+ account: Account;
420
+ value: BigNumber;
421
+ }[];
422
+ }
423
+ /**
424
+ * How far through a period the chain is
425
+ *
426
+ * @note `elapsed`, `total` and `progress` are **exact** — they are counted in slots, which is how
427
+ * the chain itself measures a period. `remaining` and `end` are **projections** from
428
+ * {@link StakingConstants.expectedBlockTime}, so they move as block production drifts. Render a
429
+ * bar from `progress` and a countdown from `remaining`
430
+ */
431
+ export interface PeriodProgress {
432
+ /**
433
+ * Slots elapsed so far
434
+ */
435
+ elapsed: BigNumber;
436
+ /**
437
+ * Slots in the whole period
438
+ */
439
+ total: BigNumber;
440
+ /**
441
+ * How far through the period the chain is, from 0 to 1
442
+ *
443
+ * @note clamped to 1. A period that has run past its expected length has not ended — the chain
444
+ * rolls it over when it rolls over
445
+ */
446
+ progress: BigNumber;
447
+ /**
448
+ * Projected milliseconds until the period ends
449
+ *
450
+ * @note `0` once the period has run past its expected length
451
+ */
452
+ remaining: BigNumber;
453
+ /**
454
+ * Projected moment the period ends
455
+ */
456
+ end: Date;
457
+ }
458
+ /**
459
+ * A live view of where the chain is in the staking cycle
460
+ *
461
+ * @note an era is divided into sessions (BABE calls them epochs), and both advance every block.
462
+ * Subscribe with {@link api/client/Staking!Staking.eraProgress | eraProgress} to drive a progress
463
+ * bar without polling
464
+ */
465
+ export interface EraProgress {
466
+ era: {
467
+ /**
468
+ * The active era — the one whose validator set is in force and whose rewards are being
469
+ * processed
470
+ */
471
+ index: BigNumber;
472
+ /**
473
+ * The latest era the chain has *planned*
474
+ *
475
+ * @note runs ahead of `index` between an election and the session rotation that brings the
476
+ * newly elected set into force, and equals it the rest of the time
477
+ */
478
+ planned: BigNumber;
479
+ /**
480
+ * When the active era began
481
+ *
482
+ * @note `null` in the brief window between the chain creating the era at session rotation and
483
+ * recording its start on the following block. Progress is unaffected — it is counted in
484
+ * slots, which are always available
485
+ */
486
+ start: Date | null;
487
+ /**
488
+ * How far through the active era the chain is
489
+ */
490
+ progress: PeriodProgress;
491
+ };
492
+ session: {
493
+ /**
494
+ * The absolute session index, counting from genesis
495
+ */
496
+ index: BigNumber;
497
+ /**
498
+ * Which session of the active era this is, counting from 1
499
+ */
500
+ inEra: BigNumber;
501
+ /**
502
+ * How many sessions there are in an era
503
+ */
504
+ perEra: BigNumber;
505
+ /**
506
+ * How far through the current session the chain is
507
+ */
508
+ progress: PeriodProgress;
509
+ };
510
+ }
288
511
  //# sourceMappingURL=types.d.ts.map