@xyo-network/xl1-providers 4.0.6 → 4.0.7

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 (109) hide show
  1. package/dist/browser/SimpleNetworkStakeViewer.d.ts +1 -1
  2. package/dist/browser/SimpleStepRewards/SimpleStepRewardsByPositionViewer.d.ts +2 -2
  3. package/dist/browser/SimpleStepRewards/SimpleStepRewardsByPositionViewer.d.ts.map +1 -1
  4. package/dist/browser/SimpleStepRewards/SimpleStepRewardsByStakerViewer.d.ts +2 -2
  5. package/dist/browser/SimpleStepRewards/SimpleStepRewardsByStakerViewer.d.ts.map +1 -1
  6. package/dist/browser/SimpleStepRewards/SimpleStepRewardsByStepViewer.d.ts +2 -2
  7. package/dist/browser/SimpleStepRewards/SimpleStepRewardsByStepViewer.d.ts.map +1 -1
  8. package/dist/browser/SimpleStepRewards/SimpleStepRewardsTotalViewer.d.ts +1 -1
  9. package/dist/browser/SimpleStepRewards/SimpleStepRewardsTotalViewer.d.ts.map +1 -1
  10. package/dist/browser/SimpleStepViewer.d.ts +2 -2
  11. package/dist/browser/SimpleStepViewer.d.ts.map +1 -1
  12. package/dist/browser/SimpleXyoViewer.d.ts +131 -131
  13. package/dist/browser/SimpleXyoViewer.d.ts.map +1 -1
  14. package/dist/browser/buildSimpleXyoSigner.d.ts +8 -0
  15. package/dist/browser/buildSimpleXyoSigner.d.ts.map +1 -0
  16. package/dist/browser/index.d.ts +1 -3
  17. package/dist/browser/index.d.ts.map +1 -1
  18. package/dist/browser/index.mjs +1010 -1128
  19. package/dist/browser/index.mjs.map +4 -4
  20. package/dist/browser/locators/index.d.ts +0 -2
  21. package/dist/browser/locators/index.d.ts.map +1 -1
  22. package/dist/browser/locators/providerCandidates.d.ts.map +1 -1
  23. package/dist/browser/locators/remoteLocatorFromConfig.d.ts +1 -1
  24. package/dist/browser/locators/remoteLocatorFromConfig.d.ts.map +1 -1
  25. package/dist/browser/registerHelpers.d.ts +3 -18
  26. package/dist/browser/registerHelpers.d.ts.map +1 -1
  27. package/dist/neutral/SimpleNetworkStakeViewer.d.ts +1 -1
  28. package/dist/neutral/SimpleStepRewards/SimpleStepRewardsByPositionViewer.d.ts +2 -2
  29. package/dist/neutral/SimpleStepRewards/SimpleStepRewardsByPositionViewer.d.ts.map +1 -1
  30. package/dist/neutral/SimpleStepRewards/SimpleStepRewardsByStakerViewer.d.ts +2 -2
  31. package/dist/neutral/SimpleStepRewards/SimpleStepRewardsByStakerViewer.d.ts.map +1 -1
  32. package/dist/neutral/SimpleStepRewards/SimpleStepRewardsByStepViewer.d.ts +2 -2
  33. package/dist/neutral/SimpleStepRewards/SimpleStepRewardsByStepViewer.d.ts.map +1 -1
  34. package/dist/neutral/SimpleStepRewards/SimpleStepRewardsTotalViewer.d.ts +1 -1
  35. package/dist/neutral/SimpleStepRewards/SimpleStepRewardsTotalViewer.d.ts.map +1 -1
  36. package/dist/neutral/SimpleStepViewer.d.ts +2 -2
  37. package/dist/neutral/SimpleStepViewer.d.ts.map +1 -1
  38. package/dist/neutral/SimpleXyoViewer.d.ts +131 -131
  39. package/dist/neutral/SimpleXyoViewer.d.ts.map +1 -1
  40. package/dist/neutral/buildSimpleXyoSigner.d.ts +8 -0
  41. package/dist/neutral/buildSimpleXyoSigner.d.ts.map +1 -0
  42. package/dist/neutral/index.d.ts +1 -3
  43. package/dist/neutral/index.d.ts.map +1 -1
  44. package/dist/neutral/index.mjs +1010 -1128
  45. package/dist/neutral/index.mjs.map +4 -4
  46. package/dist/neutral/locators/index.d.ts +0 -2
  47. package/dist/neutral/locators/index.d.ts.map +1 -1
  48. package/dist/neutral/locators/providerCandidates.d.ts.map +1 -1
  49. package/dist/neutral/locators/remoteLocatorFromConfig.d.ts +1 -1
  50. package/dist/neutral/locators/remoteLocatorFromConfig.d.ts.map +1 -1
  51. package/dist/neutral/registerHelpers.d.ts +3 -18
  52. package/dist/neutral/registerHelpers.d.ts.map +1 -1
  53. package/dist/node/SimpleNetworkStakeViewer.d.ts +1 -1
  54. package/dist/node/SimpleStepRewards/SimpleStepRewardsByPositionViewer.d.ts +2 -2
  55. package/dist/node/SimpleStepRewards/SimpleStepRewardsByPositionViewer.d.ts.map +1 -1
  56. package/dist/node/SimpleStepRewards/SimpleStepRewardsByStakerViewer.d.ts +2 -2
  57. package/dist/node/SimpleStepRewards/SimpleStepRewardsByStakerViewer.d.ts.map +1 -1
  58. package/dist/node/SimpleStepRewards/SimpleStepRewardsByStepViewer.d.ts +2 -2
  59. package/dist/node/SimpleStepRewards/SimpleStepRewardsByStepViewer.d.ts.map +1 -1
  60. package/dist/node/SimpleStepRewards/SimpleStepRewardsTotalViewer.d.ts +1 -1
  61. package/dist/node/SimpleStepRewards/SimpleStepRewardsTotalViewer.d.ts.map +1 -1
  62. package/dist/node/SimpleStepViewer.d.ts +2 -2
  63. package/dist/node/SimpleStepViewer.d.ts.map +1 -1
  64. package/dist/node/SimpleXyoViewer.d.ts +131 -131
  65. package/dist/node/SimpleXyoViewer.d.ts.map +1 -1
  66. package/dist/node/buildSimpleXyoSigner.d.ts +8 -0
  67. package/dist/node/buildSimpleXyoSigner.d.ts.map +1 -0
  68. package/dist/node/index.d.ts +1 -3
  69. package/dist/node/index.d.ts.map +1 -1
  70. package/dist/node/index.mjs +1010 -1128
  71. package/dist/node/index.mjs.map +4 -4
  72. package/dist/node/locators/index.d.ts +0 -2
  73. package/dist/node/locators/index.d.ts.map +1 -1
  74. package/dist/node/locators/providerCandidates.d.ts.map +1 -1
  75. package/dist/node/locators/remoteLocatorFromConfig.d.ts +1 -1
  76. package/dist/node/locators/remoteLocatorFromConfig.d.ts.map +1 -1
  77. package/dist/node/registerHelpers.d.ts +3 -18
  78. package/dist/node/registerHelpers.d.ts.map +1 -1
  79. package/package.json +14 -12
  80. package/dist/browser/NodeXyoRunner.d.ts +0 -33
  81. package/dist/browser/NodeXyoRunner.d.ts.map +0 -1
  82. package/dist/browser/NodeXyoViewer.d.ts +0 -16
  83. package/dist/browser/NodeXyoViewer.d.ts.map +0 -1
  84. package/dist/browser/buildSimpleXyoSignerV2.d.ts +0 -6
  85. package/dist/browser/buildSimpleXyoSignerV2.d.ts.map +0 -1
  86. package/dist/browser/locators/commonLocatorFromConfig.d.ts +0 -11
  87. package/dist/browser/locators/commonLocatorFromConfig.d.ts.map +0 -1
  88. package/dist/browser/locators/commonProvidersFromConfig.d.ts +0 -7
  89. package/dist/browser/locators/commonProvidersFromConfig.d.ts.map +0 -1
  90. package/dist/neutral/NodeXyoRunner.d.ts +0 -33
  91. package/dist/neutral/NodeXyoRunner.d.ts.map +0 -1
  92. package/dist/neutral/NodeXyoViewer.d.ts +0 -16
  93. package/dist/neutral/NodeXyoViewer.d.ts.map +0 -1
  94. package/dist/neutral/buildSimpleXyoSignerV2.d.ts +0 -6
  95. package/dist/neutral/buildSimpleXyoSignerV2.d.ts.map +0 -1
  96. package/dist/neutral/locators/commonLocatorFromConfig.d.ts +0 -11
  97. package/dist/neutral/locators/commonLocatorFromConfig.d.ts.map +0 -1
  98. package/dist/neutral/locators/commonProvidersFromConfig.d.ts +0 -7
  99. package/dist/neutral/locators/commonProvidersFromConfig.d.ts.map +0 -1
  100. package/dist/node/NodeXyoRunner.d.ts +0 -33
  101. package/dist/node/NodeXyoRunner.d.ts.map +0 -1
  102. package/dist/node/NodeXyoViewer.d.ts +0 -16
  103. package/dist/node/NodeXyoViewer.d.ts.map +0 -1
  104. package/dist/node/buildSimpleXyoSignerV2.d.ts +0 -6
  105. package/dist/node/buildSimpleXyoSignerV2.d.ts.map +0 -1
  106. package/dist/node/locators/commonLocatorFromConfig.d.ts +0 -11
  107. package/dist/node/locators/commonLocatorFromConfig.d.ts.map +0 -1
  108. package/dist/node/locators/commonProvidersFromConfig.d.ts +0 -7
  109. package/dist/node/locators/commonProvidersFromConfig.d.ts.map +0 -1
@@ -11,16 +11,17 @@ var __decorateClass = (decorators, target, key, kind) => {
11
11
  };
12
12
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
13
13
 
14
- // src/buildSimpleXyoSignerV2.ts
14
+ // src/buildSimpleXyoSigner.ts
15
15
  import { XyoSignerMoniker } from "@xyo-network/xl1-protocol-lib";
16
16
  import { ProviderFactoryLocator, SimpleXyoSigner } from "@xyo-network/xl1-protocol-sdk";
17
- async function buildSimpleXyoSignerV2(context, account) {
17
+ async function buildSimpleXyoSigner(context, account) {
18
18
  const locator = new ProviderFactoryLocator(context);
19
19
  locator.register(
20
20
  SimpleXyoSigner.factory(SimpleXyoSigner.dependencies, { account })
21
21
  );
22
22
  return await locator.getInstance(XyoSignerMoniker);
23
23
  }
24
+ var buildSimpleXyoSignerV2 = buildSimpleXyoSigner;
24
25
 
25
26
  // src/creators/createRestDataLake.ts
26
27
  import { RestDataLakeRunner as RestDataLakeRunner3, RestDataLakeViewer as RestDataLakeViewer4 } from "@xyo-network/xl1-protocol-sdk";
@@ -40,7 +41,7 @@ async function baseConfigFactoryLocator() {
40
41
  }
41
42
 
42
43
  // src/locators/basicRemoteRunnerLocator.ts
43
- import { isDefined as isDefined3 } from "@xylabs/sdk";
44
+ import { isDefined as isDefined3 } from "@ariestools/sdk";
44
45
  import {
45
46
  ProviderFactoryLocator as ProviderFactoryLocator4,
46
47
  RestDataLakeRunner as RestDataLakeRunner2,
@@ -95,7 +96,7 @@ SimpleXyoConnectionRunner = __decorateClass([
95
96
  ], SimpleXyoConnectionRunner);
96
97
 
97
98
  // src/locators/basicRemoteViewerLocator.ts
98
- import { isDefined as isDefined2 } from "@xylabs/sdk";
99
+ import { isDefined as isDefined2 } from "@ariestools/sdk";
99
100
  import {
100
101
  ActorConfigZod,
101
102
  RestDataLakeViewer as RestDataLakeViewer2,
@@ -172,7 +173,7 @@ import {
172
173
  SimpleChainContractViewer,
173
174
  SimpleFinalizationRunner,
174
175
  SimpleFinalizationViewer,
175
- SimpleMempoolRunner as SimpleMempoolRunner2,
176
+ SimpleMempoolRunner,
176
177
  SimpleMempoolViewer,
177
178
  SimpleStakeEventsViewer,
178
179
  SimpleStakeTotalsViewer,
@@ -201,1271 +202,1181 @@ import {
201
202
  JsonRpcXyoViewer
202
203
  } from "@xyo-network/xl1-rpc";
203
204
 
204
- // src/NodeXyoRunner.ts
205
- import { assertEx } from "@xylabs/sdk";
206
- import { asArchivistInstance } from "@xyo-network/sdk-js";
207
- import { XyoRunnerMoniker as XyoRunnerMoniker2 } from "@xyo-network/xl1-protocol-lib";
205
+ // src/SimpleDeadLetterQueueRunner.ts
206
+ import { assertEx } from "@ariestools/sdk";
207
+ import { isHashMeta, PayloadBuilder } from "@xyo-network/sdk-js";
208
208
  import {
209
- AbstractCreatableProvider as AbstractCreatableProvider3,
210
- creatableProvider as creatableProvider3,
211
- SimpleMempoolRunner
212
- } from "@xyo-network/xl1-protocol-sdk";
213
- var NodeXyoRunner = class extends AbstractCreatableProvider3 {
214
- moniker = XyoRunnerMoniker2;
215
- _mempoolRunner;
216
- _pendingBlocksArchivist;
217
- _pendingTransactionsArchivist;
218
- get mempool() {
219
- return this._mempoolRunner;
220
- }
221
- get node() {
222
- return this.params.node;
209
+ DeadLetterQueueRunnerMoniker,
210
+ isBlockRejection,
211
+ isTransactionRejection
212
+ } from "@xyo-network/xl1-protocol-lib";
213
+ import { AbstractCreatableProvider as AbstractCreatableProvider3, creatableProvider as creatableProvider3 } from "@xyo-network/xl1-protocol-sdk";
214
+ var SimpleDeadLetterQueueRunner = class extends AbstractCreatableProvider3 {
215
+ moniker = SimpleDeadLetterQueueRunner.defaultMoniker;
216
+ get rejectedBlocksArchivist() {
217
+ return this.params.rejectedBlocksArchivist;
223
218
  }
224
- get pendingBlocksArchivist() {
225
- return this._pendingBlocksArchivist;
219
+ get rejectedTransactionsArchivist() {
220
+ return this.params.rejectedTransactionsArchivist;
226
221
  }
227
- get pendingBlocksArchivistPath() {
228
- return this.params.pendingBlocksArchivistPath ?? "XYOChain:Pending:Blocks";
222
+ static async paramsHandler(params) {
223
+ return {
224
+ ...await super.paramsHandler(params),
225
+ rejectedBlocksArchivist: assertEx(params?.rejectedBlocksArchivist, () => "rejectedBlocksArchivist is required"),
226
+ rejectedTransactionsArchivist: assertEx(params?.rejectedTransactionsArchivist, () => "rejectedTransactionsArchivist is required")
227
+ };
229
228
  }
230
- get pendingTransactionsArchivist() {
231
- return this._pendingTransactionsArchivist;
229
+ async pruneRejectedBlocks({
230
+ batchSize = 10,
231
+ maxPrune = 1e3,
232
+ maxCheck = 1e3
233
+ } = {}) {
234
+ let total = 0;
235
+ let pruned = 0;
236
+ let cursor;
237
+ let batch = await this.rejectedBlocksArchivist.next({
238
+ limit: batchSize,
239
+ cursor,
240
+ order: "desc"
241
+ });
242
+ while (batch.length > 0 && pruned < maxPrune && total < maxCheck) {
243
+ const pruneHashes = batch.filter(isHashMeta).filter((p) => !isBlockRejection(p)).map((p) => p._hash);
244
+ pruned += pruneHashes.length;
245
+ total += batch.length;
246
+ if (pruneHashes.length > 0) {
247
+ await this.rejectedBlocksArchivist.delete(pruneHashes);
248
+ }
249
+ const pruneSet = new Set(pruneHashes);
250
+ const lastSurvivor = batch.findLast((p) => isHashMeta(p) && !pruneSet.has(p._hash));
251
+ cursor = lastSurvivor?._sequence ?? cursor;
252
+ batch = await this.rejectedBlocksArchivist.next({
253
+ limit: batchSize,
254
+ cursor,
255
+ order: "desc"
256
+ });
257
+ }
258
+ return [pruned, total];
232
259
  }
233
- get pendingTransactionsArchivistPath() {
234
- return this.params.pendingTransactionsArchivistPath ?? "XYOChain:Pending:Transactions";
260
+ async pruneRejectedTransactions({
261
+ batchSize = 10,
262
+ maxPrune = 1e3,
263
+ maxCheck = 1e3
264
+ } = {}) {
265
+ let total = 0;
266
+ let pruned = 0;
267
+ let cursor;
268
+ let batch = await this.rejectedTransactionsArchivist.next({
269
+ limit: batchSize,
270
+ cursor,
271
+ order: "desc"
272
+ });
273
+ while (batch.length > 0 && pruned < maxPrune && total < maxCheck) {
274
+ const pruneHashes = batch.filter(isHashMeta).filter((p) => !isTransactionRejection(p)).map((p) => p._hash);
275
+ pruned += pruneHashes.length;
276
+ total += batch.length;
277
+ if (pruneHashes.length > 0) {
278
+ await this.rejectedTransactionsArchivist.delete(pruneHashes);
279
+ }
280
+ const pruneSet = new Set(pruneHashes);
281
+ const lastSurvivor = batch.findLast((p) => isHashMeta(p) && !pruneSet.has(p._hash));
282
+ cursor = lastSurvivor?._sequence ?? cursor;
283
+ batch = await this.rejectedTransactionsArchivist.next({
284
+ limit: batchSize,
285
+ cursor,
286
+ order: "desc"
287
+ });
288
+ }
289
+ return [pruned, total];
235
290
  }
236
- async broadcastTransaction(transaction) {
237
- const [txHash] = await this.mempool.submitTransactions([transaction]);
238
- return txHash;
291
+ async rejectBlock(rejection) {
292
+ const withMeta = await PayloadBuilder.addHashMeta(rejection);
293
+ const inserted = await this.rejectedBlocksArchivist.insert([withMeta]);
294
+ return inserted.length > 0;
239
295
  }
240
- getArchivist = async (identifier) => {
241
- const archivist = await this.node.resolve(identifier);
242
- return assertEx(asArchivistInstance(archivist), () => `Could not resolve ${identifier} to an archivist instance`);
243
- };
244
- async startHandler() {
245
- await super.startHandler();
246
- this._pendingTransactionsArchivist = assertEx(
247
- await this.getArchivist(this.pendingTransactionsArchivistPath),
248
- () => `Could not resolve pending archivist at ${this.pendingTransactionsArchivistPath}`
249
- );
250
- this._pendingBlocksArchivist = assertEx(
251
- await this.getArchivist(this.pendingBlocksArchivistPath),
252
- () => `Could not resolve pending archivist at ${this.pendingBlocksArchivistPath}`
253
- );
254
- this._mempoolRunner = assertEx(await SimpleMempoolRunner.create({
255
- context: this.context,
256
- pendingTransactionsArchivist: this.pendingTransactionsArchivist,
257
- pendingBlocksArchivist: this.pendingBlocksArchivist
258
- }), () => "Failed to create SimpleMempoolRunner");
296
+ async rejectTransaction(rejection) {
297
+ const withMeta = await PayloadBuilder.addHashMeta(rejection);
298
+ const inserted = await this.rejectedTransactionsArchivist.insert([withMeta]);
299
+ return inserted.length > 0;
259
300
  }
260
301
  };
261
- __publicField(NodeXyoRunner, "connectionTypes", ["lmdb", "mongo", "memory"]);
262
- __publicField(NodeXyoRunner, "defaultMoniker", XyoRunnerMoniker2);
263
- __publicField(NodeXyoRunner, "dependencies", []);
264
- __publicField(NodeXyoRunner, "monikers", [XyoRunnerMoniker2]);
265
- __publicField(NodeXyoRunner, "surface", "node");
266
- NodeXyoRunner = __decorateClass([
302
+ __publicField(SimpleDeadLetterQueueRunner, "connectionTypes", ["lmdb", "mongo", "memory"]);
303
+ __publicField(SimpleDeadLetterQueueRunner, "defaultMoniker", DeadLetterQueueRunnerMoniker);
304
+ __publicField(SimpleDeadLetterQueueRunner, "dependencies", []);
305
+ __publicField(SimpleDeadLetterQueueRunner, "monikers", [DeadLetterQueueRunnerMoniker]);
306
+ __publicField(SimpleDeadLetterQueueRunner, "surface", "node");
307
+ SimpleDeadLetterQueueRunner = __decorateClass([
267
308
  creatableProvider3()
268
- ], NodeXyoRunner);
269
-
270
- // src/NodeXyoViewer.ts
271
- import { assertEx as assertEx3 } from "@xylabs/sdk";
272
- import { asAttachableArchivistInstance } from "@xyo-network/sdk-js";
273
- import { creatableProvider as creatableProvider5 } from "@xyo-network/xl1-protocol-sdk";
309
+ ], SimpleDeadLetterQueueRunner);
274
310
 
275
- // src/SimpleXyoViewer.ts
311
+ // src/SimpleDeadLetterQueueViewer.ts
276
312
  import {
277
- assertEx as assertEx2,
278
- toAddress
279
- } from "@xylabs/sdk";
313
+ exists,
314
+ isDefined,
315
+ isHash
316
+ } from "@ariestools/sdk";
317
+ import { isHashMeta as isHashMeta2 } from "@xyo-network/sdk-js";
318
+ import {
319
+ DeadLetterQueueViewerMoniker,
320
+ isBlockRejection as isBlockRejection2,
321
+ isTransactionRejection as isTransactionRejection2
322
+ } from "@xyo-network/xl1-protocol-lib";
323
+ import { AbstractCreatableProvider as AbstractCreatableProvider4, creatableProvider as creatableProvider4 } from "@xyo-network/xl1-protocol-sdk";
324
+ var SimpleDeadLetterQueueViewer = class extends AbstractCreatableProvider4 {
325
+ moniker = SimpleDeadLetterQueueViewer.defaultMoniker;
326
+ get rejectedBlocksArchivist() {
327
+ return this.params.rejectedBlocksArchivist;
328
+ }
329
+ get rejectedTransactionsArchivist() {
330
+ return this.params.rejectedTransactionsArchivist;
331
+ }
332
+ async rejectedBlocks({
333
+ cursor: providedCursor,
334
+ limit = 100,
335
+ rejector
336
+ } = {}) {
337
+ let cursor;
338
+ if (isHash(providedCursor)) {
339
+ const [p] = await this.rejectedBlocksArchivist.get([providedCursor]);
340
+ if (isDefined(p)) {
341
+ cursor = p._sequence;
342
+ }
343
+ }
344
+ const payloads = await this.rejectedBlocksArchivist.next({
345
+ order: "desc",
346
+ limit,
347
+ cursor
348
+ });
349
+ const rejections = payloads.filter(isHashMeta2).map((p) => isBlockRejection2(p) ? p : void 0).filter(exists);
350
+ if (rejector !== void 0) {
351
+ return rejections.filter((r) => r.rejector === rejector);
352
+ }
353
+ return rejections;
354
+ }
355
+ async rejectedTransactions({
356
+ cursor: providedCursor,
357
+ limit = 100,
358
+ rejector
359
+ } = {}) {
360
+ let cursor;
361
+ if (isHash(providedCursor)) {
362
+ const [p] = await this.rejectedTransactionsArchivist.get([providedCursor]);
363
+ if (isDefined(p)) {
364
+ cursor = p._sequence;
365
+ }
366
+ }
367
+ const payloads = await this.rejectedTransactionsArchivist.next({
368
+ order: "desc",
369
+ limit,
370
+ cursor
371
+ });
372
+ const rejections = payloads.filter(isHashMeta2).map((p) => isTransactionRejection2(p) ? p : void 0).filter(exists);
373
+ if (rejector !== void 0) {
374
+ return rejections.filter((r) => r.rejector === rejector);
375
+ }
376
+ return rejections;
377
+ }
378
+ };
379
+ __publicField(SimpleDeadLetterQueueViewer, "connectionTypes", ["lmdb", "mongo", "memory"]);
380
+ __publicField(SimpleDeadLetterQueueViewer, "defaultMoniker", DeadLetterQueueViewerMoniker);
381
+ __publicField(SimpleDeadLetterQueueViewer, "dependencies", []);
382
+ __publicField(SimpleDeadLetterQueueViewer, "monikers", [DeadLetterQueueViewerMoniker]);
383
+ __publicField(SimpleDeadLetterQueueViewer, "surface", "node");
384
+ SimpleDeadLetterQueueViewer = __decorateClass([
385
+ creatableProvider4()
386
+ ], SimpleDeadLetterQueueViewer);
387
+
388
+ // src/SimpleNetworkStakeViewer.ts
389
+ import { assertEx as assertEx2 } from "@ariestools/sdk";
280
390
  import {
281
- AccountBalanceViewerMoniker,
282
- asAttoXL1,
283
- asXL1BlockRange,
284
- BlockViewerMoniker,
285
- ChainContractViewerMoniker,
286
391
  FinalizationViewerMoniker,
287
- MempoolViewerMoniker,
288
- NetworkStakeStepRewardsByPositionViewerMoniker,
392
+ NetworkStakeStepRewardsViewerMoniker,
289
393
  NetworkStakeViewerMoniker,
290
- StakeViewerMoniker,
291
- StepViewerMoniker,
292
- TimeSyncViewerMoniker,
293
- TransactionViewerMoniker,
294
- XYO_NETWORK_STAKING_ADDRESS,
295
- XYO_ZERO_ADDRESS,
296
- XyoViewerMoniker as XyoViewerMoniker3
394
+ StakeTotalsViewerMoniker,
395
+ StakeViewerMoniker
297
396
  } from "@xyo-network/xl1-protocol-lib";
298
397
  import {
299
- AbstractCreatableProvider as AbstractCreatableProvider4,
300
- allStakersForStep,
301
- blockRangeSteps,
302
- creatableProvider as creatableProvider4,
303
- externalBlockRangeFromStep,
304
- externalBlockRangeFromXL1BlockRange,
305
- networkStakeStepRewardPositionWeight,
306
- stepRewardTotal,
307
- toStepIdentityString,
308
- weightedStakeForRangeByPosition,
309
- withContextCacheResponse
398
+ AbstractCreatableProvider as AbstractCreatableProvider5,
399
+ creatableProvider as creatableProvider5
310
400
  } from "@xyo-network/xl1-protocol-sdk";
311
- var SimpleXyoViewer = class extends AbstractCreatableProvider4 {
312
- moniker = SimpleXyoViewer.defaultMoniker;
313
- _tracer;
314
- _accountBalanceViewer;
315
- _blockViewer;
316
- _chainContractViewer;
317
- _chainId;
401
+ var SimpleNetworkStakeViewer = class extends AbstractCreatableProvider5 {
402
+ moniker = SimpleNetworkStakeViewer.defaultMoniker;
318
403
  _finalizationViewer;
319
- _mempoolViewer;
320
- _networkStakeViewer;
321
- _networkStepRewardsByPositionViewer;
322
- _rewardMultipliers;
323
- _stakeViewer;
324
- _stepViewer;
325
- _timeSyncViewer;
326
- _transaction;
327
- get account() {
328
- return { balance: this._accountBalanceViewer };
329
- }
330
- get block() {
331
- return this._blockViewer;
332
- }
333
- get chainContractViewer() {
334
- return this._chainContractViewer;
404
+ _stake;
405
+ _stakeTotals;
406
+ _stepRewardsViewer;
407
+ get stepRewards() {
408
+ return assertEx2(this._stepRewardsViewer, () => "Step rewards viewer not initialized");
335
409
  }
336
- get finalization() {
410
+ get finalizationViewer() {
337
411
  return this._finalizationViewer;
338
412
  }
339
- get mempool() {
340
- return this._mempoolViewer;
341
- }
342
- get networkStake() {
343
- return this._networkStakeViewer;
413
+ get rewardMultipliers() {
414
+ return this.params.rewardMultipliers;
344
415
  }
345
416
  get stake() {
346
- return this._stakeViewer;
347
- }
348
- get step() {
349
- return this._stepViewer;
350
- }
351
- get time() {
352
- return this._timeSyncViewer;
417
+ return this._stake;
353
418
  }
354
- get transaction() {
355
- return this._transaction;
419
+ get stakeTotals() {
420
+ return this._stakeTotals;
356
421
  }
357
- get finalizationViewer() {
358
- return this._finalizationViewer;
422
+ async active(blockNumber) {
423
+ const resolvedBlockNumber = blockNumber ?? await this.finalizationViewer.headNumber();
424
+ return [await this.stakeTotals.active(resolvedBlockNumber), resolvedBlockNumber];
359
425
  }
360
- get initRewardsCache() {
361
- return this.params.initRewardsCache ?? true;
362
- }
363
- get networkStepRewardsByPositionViewer() {
364
- return this._networkStepRewardsByPositionViewer;
426
+ async createHandler() {
427
+ await super.createHandler();
428
+ this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker);
429
+ this._stake = await this.locator.getInstance(StakeViewerMoniker);
430
+ this._stakeTotals = await this.locator.getInstance(StakeTotalsViewerMoniker);
431
+ this._stepRewardsViewer = await this.locator.getInstance(NetworkStakeStepRewardsViewerMoniker);
365
432
  }
433
+ };
434
+ __publicField(SimpleNetworkStakeViewer, "connectionTypes", ["lmdb", "mongo", "memory"]);
435
+ __publicField(SimpleNetworkStakeViewer, "defaultMoniker", NetworkStakeViewerMoniker);
436
+ __publicField(SimpleNetworkStakeViewer, "dependencies", [
437
+ FinalizationViewerMoniker,
438
+ NetworkStakeStepRewardsViewerMoniker,
439
+ StakeTotalsViewerMoniker,
440
+ StakeViewerMoniker
441
+ ]);
442
+ __publicField(SimpleNetworkStakeViewer, "monikers", [NetworkStakeViewerMoniker]);
443
+ __publicField(SimpleNetworkStakeViewer, "surface", "node");
444
+ SimpleNetworkStakeViewer = __decorateClass([
445
+ creatableProvider5()
446
+ ], SimpleNetworkStakeViewer);
447
+
448
+ // src/SimpleStepRewards/SimpleStepRewardsByPositionViewer.ts
449
+ import { isArray } from "@ariestools/sdk";
450
+ import {
451
+ asAttoXL1,
452
+ asXL1BlockRange,
453
+ BlockViewerMoniker,
454
+ FinalizationViewerMoniker as FinalizationViewerMoniker2,
455
+ NetworkStakeStepRewardsByPositionViewerMoniker,
456
+ StakeViewerMoniker as StakeViewerMoniker2
457
+ } from "@xyo-network/xl1-protocol-lib";
458
+ import {
459
+ AbstractCreatableProvider as AbstractCreatableProvider6,
460
+ blockRangeSteps,
461
+ creatableProvider as creatableProvider6
462
+ } from "@xyo-network/xl1-protocol-sdk";
463
+
464
+ // src/SimpleStepRewards/primitives/networkStakeStepRewardEarned.ts
465
+ import { XYO_NETWORK_STAKING_ADDRESS as XYO_NETWORK_STAKING_ADDRESS2 } from "@xyo-network/xl1-protocol-lib";
466
+ import { withContextCacheResponse as withContextCacheResponse2 } from "@xyo-network/xl1-protocol-sdk";
467
+
468
+ // src/SimpleStepRewards/primitives/networkStakeStepRewardEarnedForPosition.ts
469
+ import { XYO_NETWORK_STAKING_ADDRESS } from "@xyo-network/xl1-protocol-lib";
470
+ import {
471
+ externalBlockRangeFromStep,
472
+ stepRewardTotal,
473
+ weightedStakeForRangeByPosition,
474
+ withContextCacheResponse
475
+ } from "@xyo-network/xl1-protocol-sdk";
476
+ async function networkStakeStepRewardEarnedForPosition(context, blockViewer, stakeEventsViewer, stepIdentity, position, rewardMultipliers = {}) {
477
+ const cacheKey = `${stepIdentity.block}|${stepIdentity.step}|${position.id}`;
478
+ return await withContextCacheResponse(context, "networkStakeStepRewardEarnedForPosition", cacheKey, async () => {
479
+ const range = await externalBlockRangeFromStep(context, blockViewer, stepIdentity);
480
+ const numerator = position.staked === XYO_NETWORK_STAKING_ADDRESS ? await weightedStakeForRangeByPosition(
481
+ context,
482
+ blockViewer,
483
+ stakeEventsViewer,
484
+ range,
485
+ XYO_NETWORK_STAKING_ADDRESS,
486
+ position.id
487
+ ) : 0n;
488
+ const denominator = await weightedStakeForRangeByPosition(
489
+ context,
490
+ blockViewer,
491
+ stakeEventsViewer,
492
+ range
493
+ );
494
+ const totalReward = await stepRewardTotal(context, blockViewer, stepIdentity, rewardMultipliers);
495
+ const positionReward = denominator > 0n ? totalReward * numerator / denominator : 0n;
496
+ const result = [positionReward, totalReward];
497
+ return result;
498
+ });
499
+ }
500
+
501
+ // src/SimpleStepRewards/primitives/networkStakeStepRewardEarned.ts
502
+ async function networkStakeStepRewardEarned(context, blockViewer, stakeViewer, stepIdentity, rewardMultipliers = {}) {
503
+ const cacheKey = `${stepIdentity.block}|${stepIdentity.step}`;
504
+ return await withContextCacheResponse2(context, "networkStakeStepRewardEarned", cacheKey, async () => {
505
+ const positions = await stakeViewer.stakesByStaked(XYO_NETWORK_STAKING_ADDRESS2);
506
+ const results = await Promise.all(positions.map((pos) => {
507
+ return networkStakeStepRewardEarnedForPosition(
508
+ context,
509
+ blockViewer,
510
+ stakeViewer.stakeEvents,
511
+ stepIdentity,
512
+ pos,
513
+ rewardMultipliers
514
+ );
515
+ }));
516
+ const numerator = results.reduce((acc, [positionReward]) => acc + positionReward, 0n);
517
+ const result = results.length > 0 ? [numerator, results[0][1]] : [0n, 0n];
518
+ return result;
519
+ });
520
+ }
521
+
522
+ // src/SimpleStepRewards/primitives/networkStakeStepRewardEarnedForStaker.ts
523
+ import { XYO_NETWORK_STAKING_ADDRESS as XYO_NETWORK_STAKING_ADDRESS3 } from "@xyo-network/xl1-protocol-lib";
524
+ import {
525
+ toStepIdentityString,
526
+ withContextCacheResponse as withContextCacheResponse3
527
+ } from "@xyo-network/xl1-protocol-sdk";
528
+ async function networkStakeStepRewardEarnedForStaker(context, blockViewer, stakeViewer, stepIdentity, staker, rewardMultipliers = {}) {
529
+ const stepId = toStepIdentityString(stepIdentity);
530
+ return await withContextCacheResponse3(context, "networkStakeStepRewardEarnedForStaker", `${stepId}-${staker}`, async () => {
531
+ const stakes = await stakeViewer.stakesByStaker(staker);
532
+ const positions = stakes.filter((pos) => pos.staked === XYO_NETWORK_STAKING_ADDRESS3);
533
+ const results = await Promise.all(positions.map((pos) => {
534
+ return networkStakeStepRewardEarnedForPosition(
535
+ context,
536
+ blockViewer,
537
+ stakeViewer.stakeEvents,
538
+ stepIdentity,
539
+ pos,
540
+ rewardMultipliers
541
+ );
542
+ }));
543
+ const numerator = results.reduce((acc, [positionReward]) => acc + positionReward, 0n);
544
+ const result = results.length > 0 ? [numerator, results[0][1]] : [0n, 0n];
545
+ return result;
546
+ });
547
+ }
548
+
549
+ // src/SimpleStepRewards/SimpleStepRewardsByPositionViewer.ts
550
+ var SimpleStepRewardsByPositionViewer = class extends AbstractCreatableProvider6 {
551
+ moniker = SimpleStepRewardsByPositionViewer.defaultMoniker;
552
+ _blockViewer;
553
+ _finalizationViewer;
554
+ _stakeViewer;
366
555
  get rewardMultipliers() {
367
- this._rewardMultipliers = this._rewardMultipliers ?? this.params.rewardMultipliers ?? {};
368
- return this._rewardMultipliers;
369
- }
370
- async accountBalance(address, config = {}) {
371
- return await this.account.balance.accountBalance(address, config);
372
- }
373
- async accountBalanceHistory(address, config = {}) {
374
- return await this.account.balance.accountBalanceHistory(address, config);
375
- }
376
- async blockByHash(hash) {
377
- return await this.block.blockByHash(hash);
556
+ return this.params.rewardMultipliers ?? {};
378
557
  }
379
- async blockByNumber(blockNumber) {
380
- return await this.block.blockByNumber(blockNumber);
558
+ get blockViewer() {
559
+ return this._blockViewer;
381
560
  }
382
- async blocksByHash(hash, limit = 10) {
383
- return await this.block.blocksByHash(hash, limit);
561
+ get finalizationViewer() {
562
+ return this._finalizationViewer;
384
563
  }
385
- async blocksByNumber(blockNumber, limit = 10) {
386
- return await this.block.blocksByNumber(blockNumber, limit);
564
+ get stakeViewer() {
565
+ return this._stakeViewer;
387
566
  }
388
- async blocksByStep(stepLevel, stepIndex) {
389
- return await this.block.blocksByStep(stepLevel, stepIndex);
567
+ async bonus({ range, positions } = {}) {
568
+ const total = await this.total({ range, positions });
569
+ const earned = await this.earned({ range, positions });
570
+ const result = {};
571
+ for (const key of Object.keys(total)) {
572
+ const pos = Number(key);
573
+ result[pos] = asAttoXL1(total[pos] - (earned[pos] ?? 0n));
574
+ }
575
+ return result;
390
576
  }
391
- async chainId(blockNumber = "latest") {
392
- return await this.spanAsync("SimpleXyoViewer:chainId", async () => {
393
- const chainId = assertEx2(
394
- blockNumber === "latest" ? this._chainId : await this.chainContractViewer.chainIdAtBlockNumber(blockNumber),
395
- () => `Could not find block for chainId at block ${blockNumber}`
396
- );
397
- return chainId;
398
- }, this.context);
577
+ claimed(_options) {
578
+ throw new Error("Method [claimed] not implemented.");
399
579
  }
400
580
  async createHandler() {
401
581
  await super.createHandler();
402
- this._accountBalanceViewer = await this.locator.getInstance(AccountBalanceViewerMoniker);
403
582
  this._blockViewer = await this.locator.getInstance(BlockViewerMoniker);
404
- this._chainContractViewer = await this.locator.getInstance(ChainContractViewerMoniker);
405
- this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker);
406
- this._mempoolViewer = await this.locator.getInstance(MempoolViewerMoniker);
407
- this._networkStakeViewer = await this.locator.getInstance(NetworkStakeViewerMoniker);
408
- this._networkStepRewardsByPositionViewer = await this.locator.getInstance(NetworkStakeStepRewardsByPositionViewerMoniker);
409
- this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker);
410
- this._stepViewer = await this.locator.getInstance(StepViewerMoniker);
411
- this._timeSyncViewer = await this.locator.getInstance(TimeSyncViewerMoniker);
412
- this._transaction = await this.locator.getInstance(TransactionViewerMoniker);
413
- this._chainId = await this._chainContractViewer.chainId();
414
- }
415
- async currentBlock() {
416
- return await this.block.currentBlock();
417
- }
418
- async currentBlockHash() {
419
- return await this.block.currentBlockHash();
420
- }
421
- async currentBlockNumber() {
422
- return await this.block.currentBlockNumber();
423
- }
424
- forkHistory() {
425
- throw new Error("Method [forkHistory] not implemented.");
426
- }
427
- networkStakeStepRewardAddressHistory(_address) {
428
- throw new Error("Method [networkStakeStepRewardAddressHistory] not implemented.");
429
- }
430
- networkStakeStepRewardAddressReward(_context, _address) {
431
- throw new Error("Method [networkStakeStepRewardAddressReward] not implemented.");
432
- }
433
- networkStakeStepRewardAddressShare(_context, _address) {
434
- throw new Error("Method [networkStakeStepRewardAddressShare] not implemented.");
435
- }
436
- networkStakeStepRewardClaimedByAddress(_address) {
437
- throw new Error("Method [networkStakeStepRewardClaimedByAddress] not implemented.");
583
+ this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker2);
584
+ this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker2);
438
585
  }
439
- async networkStakeStepRewardForPosition(position, range) {
440
- const cacheKey = `${position}|${range[0]}-${range[1]}`;
441
- return await withContextCacheResponse(this.context, "SimpleXyoViewer:networkStakeStepRewardForPosition", cacheKey, async () => {
442
- const externalRange = await externalBlockRangeFromXL1BlockRange(this.context, this.block, range);
443
- const positionCount = await this.stake.stakeEvents.positionCount(externalRange);
444
- if (positionCount === 0) {
445
- return [asAttoXL1(0n), asAttoXL1(0n)];
446
- }
447
- const steps = blockRangeSteps(range, [3, 4, 5, 6, 7]);
448
- const rewards = await Promise.all(steps.map((step) => this.networkStakeStepRewardForStepForPosition(step, position)));
449
- const positionReward = asAttoXL1(rewards.reduce((a, b) => a + b[0], 0n));
450
- const totalReward = asAttoXL1(rewards.reduce((a, b) => a + b[1], 0n));
451
- return [positionReward, totalReward];
452
- });
586
+ async earned({ range, positions } = {}) {
587
+ return await this.calculateRewards({ range, positions });
453
588
  }
454
- async networkStakeStepRewardForStep(stepContext) {
455
- return await stepRewardTotal(this.context, this.block, stepContext, this.rewardMultipliers);
589
+ async total({ range, positions } = {}) {
590
+ return await this.calculateRewards({ range, positions }, this.rewardMultipliers);
456
591
  }
457
- async networkStakeStepRewardForStepForPosition(stepIdentity, position) {
458
- const stepIdentityString = toStepIdentityString(stepIdentity);
459
- const cacheKey = `${stepIdentityString}|${position}`;
460
- return await withContextCacheResponse(this.context, "SimpleXyoViewer:networkStakeStepRewardForStepForPosition", cacheKey, async () => {
461
- const range = await externalBlockRangeFromStep(this.context, this.block, stepIdentity);
462
- const stake = await this.stakeById(position);
463
- const numerator = stake.staked === XYO_NETWORK_STAKING_ADDRESS ? await weightedStakeForRangeByPosition(this.context, this.block, this.stake.stakeEvents, range, XYO_NETWORK_STAKING_ADDRESS, position) : 0n;
464
- const denominator = await this.stepWeightedDenominator(stepIdentity);
465
- const totalReward = await this.networkStakeStepRewardForStep(stepIdentity);
466
- const positionReward = asAttoXL1(denominator > 0n ? totalReward * numerator / denominator : 0n);
467
- const result = [positionReward, totalReward];
468
- return result;
469
- });
592
+ unclaimed(_options = {}) {
593
+ throw new Error("Method [unclaimed] not implemented.");
470
594
  }
471
- async networkStakeStepRewardPoolRewards(step) {
472
- const stakes = await this.stake.stakesByStaked(XYO_NETWORK_STAKING_ADDRESS);
473
- const rewards = [];
474
- for (const stake of stakes) {
475
- rewards.push([stake.staker, await this.networkStakeStepRewardForStepForPosition(
476
- step,
477
- stake.id
478
- )]);
479
- }
595
+ async calculateRewards({ range, positions } = {}, rewardMultipliers) {
480
596
  const result = {};
481
- for (const [staker, reward] of rewards) {
482
- result[staker] = asAttoXL1((result[staker] ?? 0n) + reward[0]);
483
- }
484
- const filtered = Object.fromEntries(Object.entries(result).filter(([_, v]) => v > 0n));
485
- return filtered;
486
- }
487
- networkStakeStepRewardPoolShares(_context) {
488
- throw new Error("Method [networkStakeStepRewardPoolShares] not implemented.");
489
- }
490
- async networkStakeStepRewardPositionWeight(stepContext, position) {
491
- return await networkStakeStepRewardPositionWeight(this.context, this.block, this.stake.stakeEvents, stepContext, position);
492
- }
493
- networkStakeStepRewardPotentialPositionLoss(_context, _position) {
494
- throw new Error("Method [networkStakeStepRewardPotentialPositionLoss] not implemented.");
495
- }
496
- networkStakeStepRewardRandomizer(_context) {
497
- throw new Error("Method [networkStakeStepRewardRandomizer] not implemented.");
498
- }
499
- async networkStakeStepRewardStakerCount(stepContext) {
500
- return Object.keys(await allStakersForStep(
501
- this.context,
502
- this.block,
503
- this.stake.stakeEvents,
504
- stepContext,
505
- XYO_NETWORK_STAKING_ADDRESS
506
- )).length;
507
- }
508
- networkStakeStepRewardUnclaimedByAddress(_address) {
509
- throw new Error("Method [networkStakeStepRewardUnclaimedByAddress] not implemented.");
510
- }
511
- networkStakeStepRewardWeightForAddress(_context, _address) {
512
- throw new Error("Method [networkStakeStepRewardWeightForAddress] not implemented.");
513
- }
514
- async networkStakeStepRewardsForPosition(position, range) {
515
- const steps = blockRangeSteps(range, [3, 4, 5, 6, 7, 8]);
516
- const rewards = await Promise.all(steps.map(async (step) => {
517
- return [toStepIdentityString(step), await this.networkStakeStepRewardForStepForPosition(step, position)];
518
- }));
519
- const result = Object.fromEntries(rewards);
520
- const filtered = Object.fromEntries(Object.entries(result).filter(([_, v]) => v[0] > 0n));
521
- return filtered;
522
- }
523
- async networkStakeStepRewardsForRange(range) {
524
- return await this.spanAsync("networkStakeStepRewardsForRange", async () => {
525
- const steps = blockRangeSteps(range, [3, 4, 5, 6, 7, 8]);
526
- const rewards = await Promise.all(steps.map(async (step) => {
527
- return await this.networkStakeStepRewardForStep(step);
528
- }));
529
- return asAttoXL1(rewards.reduce((a, b) => a + b, 0n));
530
- }, this.context);
531
- }
532
- async networkStakeStepRewardsForStepLevel(stepLevel, range) {
533
- const steps = blockRangeSteps(range, [stepLevel]);
534
- const rewards = await Promise.all(steps.map(async (step) => {
535
- return await this.networkStakeStepRewardForStep(step);
536
- }));
537
- return asAttoXL1(rewards.reduce((a, b) => a + b, 0n));
538
- }
539
- payloadByHash(_hash) {
540
- throw new Error("Method [payloadByHash] not implemented.");
541
- }
542
- payloadsByHash(_hashes) {
543
- throw new Error("Method [payloadsByHash] not implemented.");
544
- }
545
- async rate(range, timeUnit) {
546
- return await this.block.rate(range, timeUnit);
547
- }
548
- async stakeById(id) {
549
- return await this.stake.stakeById(id);
550
- }
551
- async stakeByStaker(staker, slot) {
552
- return await this.stake.stakeByStaker(staker, slot);
553
- }
554
- async stakedByStaker(staker) {
555
- const result = /* @__PURE__ */ new Set();
556
- let slot = 0;
557
- while (true) {
558
- try {
559
- const ethStake = await this.stake.stakeByStaker(staker, slot);
560
- result.add(toAddress(ethStake.staked));
561
- slot++;
562
- } catch {
563
- break;
564
- }
565
- }
566
- return [...result];
567
- }
568
- async stakesByStaked(staked) {
569
- return await this.stake.stakesByStaked(staked);
570
- }
571
- async stakesByStaker(staker) {
572
- return await this.stake.stakesByStaker(staker);
573
- }
574
- async stepSizeRate(start, stepSizeIndex, count, timeUnit) {
575
- return await this.block.stepSizeRate(start, stepSizeIndex, count, timeUnit);
576
- }
577
- async timeDurationRate(timeConfig, startBlock, timeUnit, toleranceMs, maxAttempts) {
578
- return await this.block.timeDurationRate(timeConfig, startBlock, timeUnit, toleranceMs, maxAttempts);
579
- }
580
- async transactionByBlockHashAndIndex(blockHash, transactionIndex = 0) {
581
- return await this.transaction.byBlockHashAndIndex(blockHash, transactionIndex);
582
- }
583
- async transactionByBlockNumberAndIndex(blockNumber, transactionIndex = 0) {
584
- return await this.transaction.byBlockNumberAndIndex(blockNumber, transactionIndex);
585
- }
586
- async transactionByHash(transactionHash) {
587
- return await this.transaction.byHash(transactionHash);
588
- }
589
- async startHandler() {
590
- try {
591
- const currentBlockNumber = await this.currentBlockNumber();
592
- await this.account.balance.accountBalance(XYO_ZERO_ADDRESS);
593
- if (this.initRewardsCache) {
594
- const externalRange = await externalBlockRangeFromXL1BlockRange(
595
- this.context,
596
- this.block,
597
- asXL1BlockRange([0, currentBlockNumber], { name: "startHandler" })
598
- );
599
- const positionCount = await this.stake.stakeEvents.positionCount(externalRange);
600
- this.logger?.debug(`SimpleXyoViewer: Precomputing networkStakeStepRewardForPosition up to position ${positionCount - 1}`);
601
- const positions = Array.from(
602
- { length: positionCount },
603
- (_, i) => i
604
- );
605
- while (positions.length > 0) {
606
- const batch = positions.splice(0, 10);
607
- this.logger?.debug(`SimpleXyoViewer: Precomputing networkStakeStepRewardForPosition for positions ${batch.at(0)} - ${batch.at(-1)}`);
608
- await Promise.all(batch.map(async (_, position) => await this.networkStakeStepRewardForPosition(
597
+ const head = await this.finalizationViewer.head();
598
+ const steps = blockRangeSteps(asXL1BlockRange(
599
+ range ?? [0, head[1]],
600
+ { name: "NodeStepRewardsByPositionViewer" }
601
+ ), [3, 4, 5, 6, 7]);
602
+ for (const step of steps) {
603
+ if (isArray(positions)) {
604
+ for (const positionId of positions) {
605
+ const position = await this.stakeViewer.stakeById(positionId);
606
+ const reward = await networkStakeStepRewardEarnedForPosition(
607
+ this.context,
608
+ this.blockViewer,
609
+ this.stakeViewer.stakeEvents,
610
+ step,
609
611
  position,
610
- asXL1BlockRange([0, currentBlockNumber], { name: "startHandler" })
611
- )));
612
+ rewardMultipliers
613
+ );
614
+ result[positionId] = asAttoXL1((result[positionId] ?? 0n) + reward[0]);
612
615
  }
613
- this.logger?.debug(`SimpleXyoViewer: Precomputed networkStakeStepRewardForPosition up to position ${positionCount - 1}`);
614
616
  }
615
- } catch (ex) {
616
- this.logger?.error(`SimpleXyoViewer: Error during startHandler initialization: ${ex.message}`);
617
- this.logger?.error(ex.stack ?? "<No Stack>");
618
- throw ex;
619
617
  }
620
- }
621
- async stepWeightedDenominator(stepIdentity, staked) {
622
- const cacheKey = toStepIdentityString(stepIdentity);
623
- return await withContextCacheResponse(this.context, "NodeXyoViewer-networkStakeStepRewardForStepForPosition-denominator", cacheKey, async () => {
624
- const range = await externalBlockRangeFromStep(this.context, this.block, stepIdentity);
625
- return await weightedStakeForRangeByPosition(this.context, this.block, this.stake.stakeEvents, range, staked);
626
- });
627
- }
628
- };
629
- __publicField(SimpleXyoViewer, "connectionTypes", ["lmdb", "mongo", "memory"]);
630
- __publicField(SimpleXyoViewer, "defaultMoniker", XyoViewerMoniker3);
631
- __publicField(SimpleXyoViewer, "dependencies", [
632
- AccountBalanceViewerMoniker,
633
- BlockViewerMoniker,
634
- ChainContractViewerMoniker,
635
- FinalizationViewerMoniker,
636
- MempoolViewerMoniker,
637
- NetworkStakeViewerMoniker,
638
- NetworkStakeStepRewardsByPositionViewerMoniker,
639
- StakeViewerMoniker,
640
- StepViewerMoniker,
641
- TimeSyncViewerMoniker,
642
- TransactionViewerMoniker
643
- ]);
644
- __publicField(SimpleXyoViewer, "monikers", [XyoViewerMoniker3]);
645
- __publicField(SimpleXyoViewer, "surface", "node");
646
- SimpleXyoViewer = __decorateClass([
647
- creatableProvider4()
648
- ], SimpleXyoViewer);
649
-
650
- // src/NodeXyoViewer.ts
651
- var NodeXyoViewer = class extends SimpleXyoViewer {
652
- get node() {
653
- return this.params.node;
654
- }
655
- static async getFinalizedArchivistFromNode(node) {
656
- const resolved = await this.getArchivist(node, this.finalizedArchivistPath);
657
- return assertEx3(resolved, () => `Could not resolve finalized archivist at ${this.finalizedArchivistPath}`);
618
+ return result;
658
619
  }
659
620
  };
660
- __publicField(NodeXyoViewer, "finalizedArchivistPath", "XYOChain:Chain:Finalized");
661
- __publicField(NodeXyoViewer, "getArchivist", async (node, identifier) => {
662
- const archivist = await node.resolve(identifier);
663
- return assertEx3(asAttachableArchivistInstance(archivist), () => `Could not resolve ${identifier} to an archivist instance`);
664
- });
665
- NodeXyoViewer = __decorateClass([
666
- creatableProvider5()
667
- ], NodeXyoViewer);
621
+ __publicField(SimpleStepRewardsByPositionViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
622
+ __publicField(SimpleStepRewardsByPositionViewer, "defaultMoniker", NetworkStakeStepRewardsByPositionViewerMoniker);
623
+ __publicField(SimpleStepRewardsByPositionViewer, "dependencies", [BlockViewerMoniker, FinalizationViewerMoniker2, StakeViewerMoniker2]);
624
+ __publicField(SimpleStepRewardsByPositionViewer, "monikers", [NetworkStakeStepRewardsByPositionViewerMoniker]);
625
+ __publicField(SimpleStepRewardsByPositionViewer, "surface", "node");
626
+ SimpleStepRewardsByPositionViewer = __decorateClass([
627
+ creatableProvider6()
628
+ ], SimpleStepRewardsByPositionViewer);
668
629
 
669
- // src/SimpleDeadLetterQueueRunner.ts
670
- import { assertEx as assertEx4 } from "@xylabs/sdk";
671
- import { isHashMeta, PayloadBuilder } from "@xyo-network/sdk-js";
630
+ // src/SimpleStepRewards/SimpleStepRewardsByStakerViewer.ts
631
+ import { isArray as isArray2 } from "@ariestools/sdk";
672
632
  import {
673
- DeadLetterQueueRunnerMoniker,
674
- isBlockRejection,
675
- isTransactionRejection
633
+ asAttoXL1 as asAttoXL12,
634
+ asXL1BlockRange as asXL1BlockRange2,
635
+ BlockViewerMoniker as BlockViewerMoniker2,
636
+ FinalizationViewerMoniker as FinalizationViewerMoniker3,
637
+ NetworkStakeStepRewardsByStakerViewerMoniker,
638
+ StakeViewerMoniker as StakeViewerMoniker3
676
639
  } from "@xyo-network/xl1-protocol-lib";
677
- import { AbstractCreatableProvider as AbstractCreatableProvider5, creatableProvider as creatableProvider6 } from "@xyo-network/xl1-protocol-sdk";
678
- var SimpleDeadLetterQueueRunner = class extends AbstractCreatableProvider5 {
679
- moniker = SimpleDeadLetterQueueRunner.defaultMoniker;
680
- get rejectedBlocksArchivist() {
681
- return this.params.rejectedBlocksArchivist;
640
+ import {
641
+ AbstractCreatableProvider as AbstractCreatableProvider7,
642
+ blockRangeSteps as blockRangeSteps2,
643
+ creatableProvider as creatableProvider7
644
+ } from "@xyo-network/xl1-protocol-sdk";
645
+ var SimpleStepRewardsByStakerViewer = class extends AbstractCreatableProvider7 {
646
+ moniker = SimpleStepRewardsByStakerViewer.defaultMoniker;
647
+ _blockViewer;
648
+ _finalizationViewer;
649
+ _stakeViewer;
650
+ get rewardMultipliers() {
651
+ return this.params.rewardMultipliers ?? {};
682
652
  }
683
- get rejectedTransactionsArchivist() {
684
- return this.params.rejectedTransactionsArchivist;
653
+ get blockViewer() {
654
+ return this._blockViewer;
685
655
  }
686
- static async paramsHandler(params) {
687
- return {
688
- ...await super.paramsHandler(params),
689
- rejectedBlocksArchivist: assertEx4(params?.rejectedBlocksArchivist, () => "rejectedBlocksArchivist is required"),
690
- rejectedTransactionsArchivist: assertEx4(params?.rejectedTransactionsArchivist, () => "rejectedTransactionsArchivist is required")
691
- };
656
+ get finalizationViewer() {
657
+ return this._finalizationViewer;
692
658
  }
693
- async pruneRejectedBlocks({
694
- batchSize = 10,
695
- maxPrune = 1e3,
696
- maxCheck = 1e3
697
- } = {}) {
698
- let total = 0;
699
- let pruned = 0;
700
- let cursor;
701
- let batch = await this.rejectedBlocksArchivist.next({
702
- limit: batchSize,
703
- cursor,
704
- order: "desc"
705
- });
706
- while (batch.length > 0 && pruned < maxPrune && total < maxCheck) {
707
- const pruneHashes = batch.filter(isHashMeta).filter((p) => !isBlockRejection(p)).map((p) => p._hash);
708
- pruned += pruneHashes.length;
709
- total += batch.length;
710
- if (pruneHashes.length > 0) {
711
- await this.rejectedBlocksArchivist.delete(pruneHashes);
712
- }
713
- const pruneSet = new Set(pruneHashes);
714
- const lastSurvivor = batch.findLast((p) => isHashMeta(p) && !pruneSet.has(p._hash));
715
- cursor = lastSurvivor?._sequence ?? cursor;
716
- batch = await this.rejectedBlocksArchivist.next({
717
- limit: batchSize,
718
- cursor,
719
- order: "desc"
720
- });
659
+ get stakeViewer() {
660
+ return this._stakeViewer;
661
+ }
662
+ async bonus({ range, stakers } = {}) {
663
+ const total = await this.total({ range, stakers });
664
+ const earned = await this.earned({ range, stakers });
665
+ const result = {};
666
+ for (const staker of Object.keys(total)) {
667
+ result[staker] = asAttoXL12(total[staker] - (earned[staker] ?? 0n));
721
668
  }
722
- return [pruned, total];
669
+ return result;
723
670
  }
724
- async pruneRejectedTransactions({
725
- batchSize = 10,
726
- maxPrune = 1e3,
727
- maxCheck = 1e3
728
- } = {}) {
729
- let total = 0;
730
- let pruned = 0;
731
- let cursor;
732
- let batch = await this.rejectedTransactionsArchivist.next({
733
- limit: batchSize,
734
- cursor,
735
- order: "desc"
736
- });
737
- while (batch.length > 0 && pruned < maxPrune && total < maxCheck) {
738
- const pruneHashes = batch.filter(isHashMeta).filter((p) => !isTransactionRejection(p)).map((p) => p._hash);
739
- pruned += pruneHashes.length;
740
- total += batch.length;
741
- if (pruneHashes.length > 0) {
742
- await this.rejectedTransactionsArchivist.delete(pruneHashes);
671
+ claimed(_options) {
672
+ throw new Error("Method [claimed] not implemented.");
673
+ }
674
+ async createHandler() {
675
+ await super.createHandler();
676
+ this._blockViewer = await this.locator.getInstance(BlockViewerMoniker2);
677
+ this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker3);
678
+ this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker3);
679
+ }
680
+ async earned(options = {}) {
681
+ return await this.calculateRewards(options);
682
+ }
683
+ async total(options = {}) {
684
+ return await this.calculateRewards(options, this.rewardMultipliers);
685
+ }
686
+ unclaimed(_options = {}) {
687
+ throw new Error("Method [unclaimed] not implemented.");
688
+ }
689
+ async calculateRewards({ range, stakers } = {}, rewardMultipliers) {
690
+ const result = {};
691
+ const steps = blockRangeSteps2(asXL1BlockRange2(
692
+ range ?? [0, await this.finalizationViewer.headNumber()],
693
+ { name: "NodeStepRewardsByStakerViewer" }
694
+ ), [3, 4, 5, 6, 7]);
695
+ for (const step of steps) {
696
+ if (isArray2(stakers)) {
697
+ for (const staker of stakers) {
698
+ const reward = await networkStakeStepRewardEarnedForStaker(
699
+ this.context,
700
+ this.blockViewer,
701
+ this.stakeViewer,
702
+ step,
703
+ staker,
704
+ rewardMultipliers
705
+ );
706
+ result[staker] = asAttoXL12((result[staker] ?? 0n) + reward[0]);
707
+ }
743
708
  }
744
- const pruneSet = new Set(pruneHashes);
745
- const lastSurvivor = batch.findLast((p) => isHashMeta(p) && !pruneSet.has(p._hash));
746
- cursor = lastSurvivor?._sequence ?? cursor;
747
- batch = await this.rejectedTransactionsArchivist.next({
748
- limit: batchSize,
749
- cursor,
750
- order: "desc"
751
- });
752
709
  }
753
- return [pruned, total];
754
- }
755
- async rejectBlock(rejection) {
756
- const withMeta = await PayloadBuilder.addHashMeta(rejection);
757
- const inserted = await this.rejectedBlocksArchivist.insert([withMeta]);
758
- return inserted.length > 0;
759
- }
760
- async rejectTransaction(rejection) {
761
- const withMeta = await PayloadBuilder.addHashMeta(rejection);
762
- const inserted = await this.rejectedTransactionsArchivist.insert([withMeta]);
763
- return inserted.length > 0;
710
+ return result;
764
711
  }
765
712
  };
766
- __publicField(SimpleDeadLetterQueueRunner, "connectionTypes", ["lmdb", "mongo", "memory"]);
767
- __publicField(SimpleDeadLetterQueueRunner, "defaultMoniker", DeadLetterQueueRunnerMoniker);
768
- __publicField(SimpleDeadLetterQueueRunner, "dependencies", []);
769
- __publicField(SimpleDeadLetterQueueRunner, "monikers", [DeadLetterQueueRunnerMoniker]);
770
- __publicField(SimpleDeadLetterQueueRunner, "surface", "node");
771
- SimpleDeadLetterQueueRunner = __decorateClass([
772
- creatableProvider6()
773
- ], SimpleDeadLetterQueueRunner);
713
+ __publicField(SimpleStepRewardsByStakerViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
714
+ __publicField(SimpleStepRewardsByStakerViewer, "defaultMoniker", NetworkStakeStepRewardsByStakerViewerMoniker);
715
+ __publicField(SimpleStepRewardsByStakerViewer, "dependencies", [BlockViewerMoniker2, FinalizationViewerMoniker3, StakeViewerMoniker3]);
716
+ __publicField(SimpleStepRewardsByStakerViewer, "monikers", [NetworkStakeStepRewardsByStakerViewerMoniker]);
717
+ __publicField(SimpleStepRewardsByStakerViewer, "surface", "node");
718
+ SimpleStepRewardsByStakerViewer = __decorateClass([
719
+ creatableProvider7()
720
+ ], SimpleStepRewardsByStakerViewer);
774
721
 
775
- // src/SimpleDeadLetterQueueViewer.ts
776
- import {
777
- exists,
778
- isDefined,
779
- isHash
780
- } from "@xylabs/sdk";
781
- import { isHashMeta as isHashMeta2 } from "@xyo-network/sdk-js";
722
+ // src/SimpleStepRewards/SimpleStepRewardsByStepViewer.ts
782
723
  import {
783
- DeadLetterQueueViewerMoniker,
784
- isBlockRejection as isBlockRejection2,
785
- isTransactionRejection as isTransactionRejection2
724
+ asAttoXL1 as asAttoXL13,
725
+ asXL1BlockRange as asXL1BlockRange3,
726
+ BlockViewerMoniker as BlockViewerMoniker3,
727
+ FinalizationViewerMoniker as FinalizationViewerMoniker4,
728
+ NetworkStakeStepRewardsByStepViewerMoniker,
729
+ StakeViewerMoniker as StakeViewerMoniker4
786
730
  } from "@xyo-network/xl1-protocol-lib";
787
- import { AbstractCreatableProvider as AbstractCreatableProvider6, creatableProvider as creatableProvider7 } from "@xyo-network/xl1-protocol-sdk";
788
- var SimpleDeadLetterQueueViewer = class extends AbstractCreatableProvider6 {
789
- moniker = SimpleDeadLetterQueueViewer.defaultMoniker;
790
- get rejectedBlocksArchivist() {
791
- return this.params.rejectedBlocksArchivist;
731
+ import {
732
+ AbstractCreatableProvider as AbstractCreatableProvider8,
733
+ blockRangeSteps as blockRangeSteps3,
734
+ creatableProvider as creatableProvider8,
735
+ toStepIdentityString as toStepIdentityString2
736
+ } from "@xyo-network/xl1-protocol-sdk";
737
+ var SimpleStepRewardsByStepViewer = class extends AbstractCreatableProvider8 {
738
+ moniker = SimpleStepRewardsByStepViewer.defaultMoniker;
739
+ _blockViewer;
740
+ _finalizationViewer;
741
+ _stakeViewer;
742
+ get rewardMultipliers() {
743
+ return this.params.rewardMultipliers ?? {};
792
744
  }
793
- get rejectedTransactionsArchivist() {
794
- return this.params.rejectedTransactionsArchivist;
745
+ get blockViewer() {
746
+ return this._blockViewer;
795
747
  }
796
- async rejectedBlocks({
797
- cursor: providedCursor,
798
- limit = 100,
799
- rejector
800
- } = {}) {
801
- let cursor;
802
- if (isHash(providedCursor)) {
803
- const [p] = await this.rejectedBlocksArchivist.get([providedCursor]);
804
- if (isDefined(p)) {
805
- cursor = p._sequence;
806
- }
807
- }
808
- const payloads = await this.rejectedBlocksArchivist.next({
809
- order: "desc",
810
- limit,
811
- cursor
812
- });
813
- const rejections = payloads.filter(isHashMeta2).map((p) => isBlockRejection2(p) ? p : void 0).filter(exists);
814
- if (rejector !== void 0) {
815
- return rejections.filter((r) => r.rejector === rejector);
748
+ get finalizationViewer() {
749
+ return this._finalizationViewer;
750
+ }
751
+ get stakeViewer() {
752
+ return this._stakeViewer;
753
+ }
754
+ async bonus({ range, steps } = {}) {
755
+ const total = await this.total({ range, steps });
756
+ const earned = await this.earned({ range, steps });
757
+ const result = {};
758
+ for (const stepString of Object.keys(total)) {
759
+ result[stepString] = asAttoXL13(total[stepString] - (earned[stepString] ?? 0n));
816
760
  }
817
- return rejections;
761
+ return result;
818
762
  }
819
- async rejectedTransactions({
820
- cursor: providedCursor,
821
- limit = 100,
822
- rejector
823
- } = {}) {
824
- let cursor;
825
- if (isHash(providedCursor)) {
826
- const [p] = await this.rejectedTransactionsArchivist.get([providedCursor]);
827
- if (isDefined(p)) {
828
- cursor = p._sequence;
829
- }
763
+ claimed(_options) {
764
+ throw new Error("Method [claimed] not implemented.");
765
+ }
766
+ async createHandler() {
767
+ await super.createHandler();
768
+ this._blockViewer = await this.locator.getInstance(BlockViewerMoniker3);
769
+ this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker4);
770
+ this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker4);
771
+ }
772
+ async earned({ range, steps } = {}) {
773
+ const result = {};
774
+ const resolvedSteps = steps ?? blockRangeSteps3(asXL1BlockRange3(
775
+ range ?? [0, await this.finalizationViewer.headNumber()],
776
+ { name: "NodeStepRewardsByStepViewer" }
777
+ ), [3, 4, 5, 6, 7]);
778
+ for (const step of resolvedSteps) {
779
+ const stepIdentityString = toStepIdentityString2(step);
780
+ const reward = await networkStakeStepRewardEarned(
781
+ this.context,
782
+ this.blockViewer,
783
+ this.stakeViewer,
784
+ step
785
+ );
786
+ result[stepIdentityString] = asAttoXL13((result[stepIdentityString] ?? 0n) + reward[0]);
830
787
  }
831
- const payloads = await this.rejectedTransactionsArchivist.next({
832
- order: "desc",
833
- limit,
834
- cursor
835
- });
836
- const rejections = payloads.filter(isHashMeta2).map((p) => isTransactionRejection2(p) ? p : void 0).filter(exists);
837
- if (rejector !== void 0) {
838
- return rejections.filter((r) => r.rejector === rejector);
788
+ return result;
789
+ }
790
+ async total({ range, steps } = {}) {
791
+ const result = {};
792
+ const head = await this.finalizationViewer.head();
793
+ const resolvedSteps = steps ?? blockRangeSteps3(asXL1BlockRange3(
794
+ range ?? [0, head[1]],
795
+ { name: "NodeStepRewardsByStepViewer" }
796
+ ), [3, 4, 5, 6, 7]);
797
+ for (const step of resolvedSteps) {
798
+ const stepIdentityString = toStepIdentityString2(step);
799
+ const reward = await networkStakeStepRewardEarned(
800
+ this.context,
801
+ this.blockViewer,
802
+ this.stakeViewer,
803
+ step,
804
+ this.rewardMultipliers
805
+ );
806
+ result[stepIdentityString] = asAttoXL13((result[stepIdentityString] ?? 0n) + reward[0]);
839
807
  }
840
- return rejections;
808
+ return result;
809
+ }
810
+ unclaimed(_options = {}) {
811
+ throw new Error("Method [unclaimed] ot implemented.");
841
812
  }
842
813
  };
843
- __publicField(SimpleDeadLetterQueueViewer, "connectionTypes", ["lmdb", "mongo", "memory"]);
844
- __publicField(SimpleDeadLetterQueueViewer, "defaultMoniker", DeadLetterQueueViewerMoniker);
845
- __publicField(SimpleDeadLetterQueueViewer, "dependencies", []);
846
- __publicField(SimpleDeadLetterQueueViewer, "monikers", [DeadLetterQueueViewerMoniker]);
847
- __publicField(SimpleDeadLetterQueueViewer, "surface", "node");
848
- SimpleDeadLetterQueueViewer = __decorateClass([
849
- creatableProvider7()
850
- ], SimpleDeadLetterQueueViewer);
814
+ __publicField(SimpleStepRewardsByStepViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
815
+ __publicField(SimpleStepRewardsByStepViewer, "defaultMoniker", NetworkStakeStepRewardsByStepViewerMoniker);
816
+ __publicField(SimpleStepRewardsByStepViewer, "dependencies", [BlockViewerMoniker3, FinalizationViewerMoniker4, StakeViewerMoniker4]);
817
+ __publicField(SimpleStepRewardsByStepViewer, "monikers", [NetworkStakeStepRewardsByStepViewerMoniker]);
818
+ __publicField(SimpleStepRewardsByStepViewer, "surface", "node");
819
+ SimpleStepRewardsByStepViewer = __decorateClass([
820
+ creatableProvider8()
821
+ ], SimpleStepRewardsByStepViewer);
851
822
 
852
- // src/SimpleNetworkStakeViewer.ts
853
- import { assertEx as assertEx5 } from "@xylabs/sdk";
823
+ // src/SimpleStepRewards/SimpleStepRewardsTotalViewer.ts
824
+ import { asAttoXL1 as asAttoXL14, NetworkStakeStepRewardsTotalViewerMoniker } from "@xyo-network/xl1-protocol-lib";
854
825
  import {
855
- FinalizationViewerMoniker as FinalizationViewerMoniker2,
856
- NetworkStakeStepRewardsViewerMoniker,
857
- NetworkStakeViewerMoniker as NetworkStakeViewerMoniker2,
858
- StakeTotalsViewerMoniker,
859
- StakeViewerMoniker as StakeViewerMoniker2
826
+ AbstractCreatableProvider as AbstractCreatableProvider9,
827
+ creatableProvider as creatableProvider9
828
+ } from "@xyo-network/xl1-protocol-sdk";
829
+ var SimpleStepRewardsTotalViewer = class extends AbstractCreatableProvider9 {
830
+ moniker = SimpleStepRewardsTotalViewer.defaultMoniker;
831
+ get rewardMultipliers() {
832
+ return this.params.rewardMultipliers ?? {};
833
+ }
834
+ async bonus({ range } = {}) {
835
+ const total = await this.total({ range });
836
+ const earned = await this.earned({ range });
837
+ return asAttoXL14(total - earned);
838
+ }
839
+ claimed(_options) {
840
+ throw new Error("Method [claimed] not implemented.");
841
+ }
842
+ async earned(options = {}) {
843
+ return await this.calculateRewards(options);
844
+ }
845
+ async total(options = {}) {
846
+ return await this.calculateRewards(options, this.rewardMultipliers);
847
+ }
848
+ unclaimed(_options = {}) {
849
+ throw new Error("Method [unclaimed] not implemented.");
850
+ }
851
+ calculateRewards(_options = {}, _rewardMultipliers) {
852
+ throw new Error("Method [calculateRewards] not implemented.");
853
+ }
854
+ };
855
+ __publicField(SimpleStepRewardsTotalViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
856
+ __publicField(SimpleStepRewardsTotalViewer, "defaultMoniker", NetworkStakeStepRewardsTotalViewerMoniker);
857
+ __publicField(SimpleStepRewardsTotalViewer, "dependencies", []);
858
+ __publicField(SimpleStepRewardsTotalViewer, "monikers", [NetworkStakeStepRewardsTotalViewerMoniker]);
859
+ __publicField(SimpleStepRewardsTotalViewer, "surface", "node");
860
+ SimpleStepRewardsTotalViewer = __decorateClass([
861
+ creatableProvider9()
862
+ ], SimpleStepRewardsTotalViewer);
863
+
864
+ // src/SimpleStepRewards/SimpleStepRewardsViewer.ts
865
+ import { assertEx as assertEx3 } from "@ariestools/sdk";
866
+ import {
867
+ BlockViewerMoniker as BlockViewerMoniker4,
868
+ NetworkStakeStepRewardsByPositionViewerMoniker as NetworkStakeStepRewardsByPositionViewerMoniker2,
869
+ NetworkStakeStepRewardsByStakerViewerMoniker as NetworkStakeStepRewardsByStakerViewerMoniker2,
870
+ NetworkStakeStepRewardsByStepViewerMoniker as NetworkStakeStepRewardsByStepViewerMoniker2,
871
+ NetworkStakeStepRewardsViewerMoniker as NetworkStakeStepRewardsViewerMoniker2
860
872
  } from "@xyo-network/xl1-protocol-lib";
861
873
  import {
862
- AbstractCreatableProvider as AbstractCreatableProvider7,
863
- creatableProvider as creatableProvider8
874
+ AbstractCreatableProvider as AbstractCreatableProvider10,
875
+ creatableProvider as creatableProvider10
864
876
  } from "@xyo-network/xl1-protocol-sdk";
865
- var SimpleNetworkStakeViewer = class extends AbstractCreatableProvider7 {
866
- moniker = SimpleNetworkStakeViewer.defaultMoniker;
867
- _finalizationViewer;
868
- _stake;
869
- _stakeTotals;
870
- _stepRewardsViewer;
871
- get stepRewards() {
872
- return assertEx5(this._stepRewardsViewer, () => "Step rewards viewer not initialized");
873
- }
874
- get finalizationViewer() {
875
- return this._finalizationViewer;
877
+ var SimpleStepRewardsViewer = class extends AbstractCreatableProvider10 {
878
+ moniker = SimpleStepRewardsViewer.defaultMoniker;
879
+ _blockViewer;
880
+ _position;
881
+ _staker;
882
+ _step;
883
+ get position() {
884
+ return assertEx3(this._position, () => "Position viewer not initialized");
876
885
  }
877
- get rewardMultipliers() {
878
- return this.params.rewardMultipliers;
886
+ get staker() {
887
+ return assertEx3(this._staker, () => "Position viewer not initialized");
879
888
  }
880
- get stake() {
881
- return this._stake;
889
+ get step() {
890
+ return assertEx3(this._step, () => "Step viewer not initialized");
882
891
  }
883
- get stakeTotals() {
884
- return this._stakeTotals;
892
+ get total() {
893
+ throw new Error("Method [total] not implemented.");
885
894
  }
886
- async active(blockNumber) {
887
- const resolvedBlockNumber = blockNumber ?? await this.finalizationViewer.headNumber();
888
- return [await this.stakeTotals.active(resolvedBlockNumber), resolvedBlockNumber];
895
+ get rewardMultipliers() {
896
+ return this.params.rewardMultipliers;
889
897
  }
890
898
  async createHandler() {
891
899
  await super.createHandler();
892
- this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker2);
893
- this._stake = await this.locator.getInstance(StakeViewerMoniker2);
894
- this._stakeTotals = await this.locator.getInstance(StakeTotalsViewerMoniker);
895
- this._stepRewardsViewer = await this.locator.getInstance(NetworkStakeStepRewardsViewerMoniker);
900
+ this._blockViewer = await this.locator.getInstance(BlockViewerMoniker4);
901
+ this._position = await this.locator.getInstance(NetworkStakeStepRewardsByPositionViewerMoniker2);
902
+ this._staker = await this.locator.getInstance(NetworkStakeStepRewardsByStakerViewerMoniker2);
903
+ this._step = await this.locator.getInstance(NetworkStakeStepRewardsByStepViewerMoniker2);
904
+ }
905
+ async startHandler() {
906
+ await super.startHandler();
907
+ await assertEx3(this._position, () => "Position viewer not created").start();
908
+ await assertEx3(this._staker, () => "Staker viewer not created").start();
909
+ await assertEx3(this._step, () => "Step viewer not created").start();
896
910
  }
897
911
  };
898
- __publicField(SimpleNetworkStakeViewer, "connectionTypes", ["lmdb", "mongo", "memory"]);
899
- __publicField(SimpleNetworkStakeViewer, "defaultMoniker", NetworkStakeViewerMoniker2);
900
- __publicField(SimpleNetworkStakeViewer, "dependencies", [
901
- FinalizationViewerMoniker2,
902
- NetworkStakeStepRewardsViewerMoniker,
903
- StakeTotalsViewerMoniker,
904
- StakeViewerMoniker2
912
+ __publicField(SimpleStepRewardsViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
913
+ __publicField(SimpleStepRewardsViewer, "defaultMoniker", NetworkStakeStepRewardsViewerMoniker2);
914
+ __publicField(SimpleStepRewardsViewer, "dependencies", [
915
+ BlockViewerMoniker4,
916
+ NetworkStakeStepRewardsByPositionViewerMoniker2,
917
+ NetworkStakeStepRewardsByStakerViewerMoniker2,
918
+ NetworkStakeStepRewardsByStepViewerMoniker2
905
919
  ]);
906
- __publicField(SimpleNetworkStakeViewer, "monikers", [NetworkStakeViewerMoniker2]);
907
- __publicField(SimpleNetworkStakeViewer, "surface", "node");
908
- SimpleNetworkStakeViewer = __decorateClass([
909
- creatableProvider8()
910
- ], SimpleNetworkStakeViewer);
920
+ __publicField(SimpleStepRewardsViewer, "monikers", [NetworkStakeStepRewardsViewerMoniker2]);
921
+ __publicField(SimpleStepRewardsViewer, "surface", "node");
922
+ SimpleStepRewardsViewer = __decorateClass([
923
+ creatableProvider10()
924
+ ], SimpleStepRewardsViewer);
911
925
 
912
- // src/SimpleStepRewards/SimpleStepRewardsByPositionViewer.ts
913
- import { isArray } from "@xylabs/sdk";
926
+ // src/SimpleStepViewer.ts
914
927
  import {
915
- asAttoXL1 as asAttoXL12,
916
- asXL1BlockRange as asXL1BlockRange2,
917
- BlockViewerMoniker as BlockViewerMoniker2,
918
- FinalizationViewerMoniker as FinalizationViewerMoniker3,
919
- NetworkStakeStepRewardsByPositionViewerMoniker as NetworkStakeStepRewardsByPositionViewerMoniker2,
920
- StakeViewerMoniker as StakeViewerMoniker3
928
+ BlockViewerMoniker as BlockViewerMoniker5,
929
+ NetworkStakeStepRewardsViewerMoniker as NetworkStakeStepRewardsViewerMoniker3,
930
+ StakeEventsViewerMoniker,
931
+ StakeViewerMoniker as StakeViewerMoniker5,
932
+ StepViewerMoniker
921
933
  } from "@xyo-network/xl1-protocol-lib";
922
934
  import {
923
- AbstractCreatableProvider as AbstractCreatableProvider8,
924
- blockRangeSteps as blockRangeSteps2,
925
- creatableProvider as creatableProvider9
926
- } from "@xyo-network/xl1-protocol-sdk";
927
-
928
- // src/SimpleStepRewards/primitives/networkStakeStepRewardEarned.ts
929
- import { XYO_NETWORK_STAKING_ADDRESS as XYO_NETWORK_STAKING_ADDRESS3 } from "@xyo-network/xl1-protocol-lib";
930
- import { withContextCacheResponse as withContextCacheResponse3 } from "@xyo-network/xl1-protocol-sdk";
931
-
932
- // src/SimpleStepRewards/primitives/networkStakeStepRewardEarnedForPosition.ts
933
- import { XYO_NETWORK_STAKING_ADDRESS as XYO_NETWORK_STAKING_ADDRESS2 } from "@xyo-network/xl1-protocol-lib";
934
- import {
935
- externalBlockRangeFromStep as externalBlockRangeFromStep2,
936
- stepRewardTotal as stepRewardTotal2,
937
- weightedStakeForRangeByPosition as weightedStakeForRangeByPosition2,
938
- withContextCacheResponse as withContextCacheResponse2
939
- } from "@xyo-network/xl1-protocol-sdk";
940
- async function networkStakeStepRewardEarnedForPosition(context, blockViewer, stakeEventsViewer, stepIdentity, position, rewardMultipliers = {}) {
941
- const cacheKey = `${stepIdentity.block}|${stepIdentity.step}|${position.id}`;
942
- return await withContextCacheResponse2(context, "networkStakeStepRewardEarnedForPosition", cacheKey, async () => {
943
- const range = await externalBlockRangeFromStep2(context, blockViewer, stepIdentity);
944
- const numerator = position.staked === XYO_NETWORK_STAKING_ADDRESS2 ? await weightedStakeForRangeByPosition2(
945
- context,
946
- blockViewer,
947
- stakeEventsViewer,
948
- range,
949
- XYO_NETWORK_STAKING_ADDRESS2,
950
- position.id
951
- ) : 0n;
952
- const denominator = await weightedStakeForRangeByPosition2(
953
- context,
954
- blockViewer,
955
- stakeEventsViewer,
956
- range
957
- );
958
- const totalReward = await stepRewardTotal2(context, blockViewer, stepIdentity, rewardMultipliers);
959
- const positionReward = denominator > 0n ? totalReward * numerator / denominator : 0n;
960
- const result = [positionReward, totalReward];
961
- return result;
962
- });
963
- }
964
-
965
- // src/SimpleStepRewards/primitives/networkStakeStepRewardEarned.ts
966
- async function networkStakeStepRewardEarned(context, blockViewer, stakeViewer, stepIdentity, rewardMultipliers = {}) {
967
- const cacheKey = `${stepIdentity.block}|${stepIdentity.step}`;
968
- return await withContextCacheResponse3(context, "networkStakeStepRewardEarned", cacheKey, async () => {
969
- const positions = await stakeViewer.stakesByStaked(XYO_NETWORK_STAKING_ADDRESS3);
970
- const results = await Promise.all(positions.map((pos) => {
971
- return networkStakeStepRewardEarnedForPosition(
972
- context,
973
- blockViewer,
974
- stakeViewer.stakeEvents,
975
- stepIdentity,
976
- pos,
977
- rewardMultipliers
978
- );
979
- }));
980
- const numerator = results.reduce((acc, [positionReward]) => acc + positionReward, 0n);
981
- const result = results.length > 0 ? [numerator, results[0][1]] : [0n, 0n];
982
- return result;
983
- });
984
- }
985
-
986
- // src/SimpleStepRewards/primitives/networkStakeStepRewardEarnedForStaker.ts
987
- import { XYO_NETWORK_STAKING_ADDRESS as XYO_NETWORK_STAKING_ADDRESS4 } from "@xyo-network/xl1-protocol-lib";
988
- import {
989
- toStepIdentityString as toStepIdentityString2,
990
- withContextCacheResponse as withContextCacheResponse4
935
+ AbstractCreatableProvider as AbstractCreatableProvider11,
936
+ creatableProvider as creatableProvider11,
937
+ externalBlockRangeFromStep as externalBlockRangeFromStep2
991
938
  } from "@xyo-network/xl1-protocol-sdk";
992
- async function networkStakeStepRewardEarnedForStaker(context, blockViewer, stakeViewer, stepIdentity, staker, rewardMultipliers = {}) {
993
- const stepId = toStepIdentityString2(stepIdentity);
994
- return await withContextCacheResponse4(context, "networkStakeStepRewardEarnedForStaker", `${stepId}-${staker}`, async () => {
995
- const stakes = await stakeViewer.stakesByStaker(staker);
996
- const positions = stakes.filter((pos) => pos.staked === XYO_NETWORK_STAKING_ADDRESS4);
997
- const results = await Promise.all(positions.map((pos) => {
998
- return networkStakeStepRewardEarnedForPosition(
999
- context,
1000
- blockViewer,
1001
- stakeViewer.stakeEvents,
1002
- stepIdentity,
1003
- pos,
1004
- rewardMultipliers
1005
- );
1006
- }));
1007
- const numerator = results.reduce((acc, [positionReward]) => acc + positionReward, 0n);
1008
- const result = results.length > 0 ? [numerator, results[0][1]] : [0n, 0n];
1009
- return result;
1010
- });
1011
- }
1012
-
1013
- // src/SimpleStepRewards/SimpleStepRewardsByPositionViewer.ts
1014
- var SimpleStepRewardsByPositionViewer = class extends AbstractCreatableProvider8 {
1015
- moniker = SimpleStepRewardsByPositionViewer.defaultMoniker;
939
+ var SimpleStepViewer = class extends AbstractCreatableProvider11 {
940
+ moniker = SimpleStepViewer.defaultMoniker;
1016
941
  _blockViewer;
1017
- _finalizationViewer;
942
+ _networkStakeStepRewardsViewer;
943
+ _stakeEventsViewer;
1018
944
  _stakeViewer;
1019
- get rewardMultipliers() {
1020
- return this.params.rewardMultipliers ?? {};
945
+ get rewards() {
946
+ return this._networkStakeStepRewardsViewer;
1021
947
  }
1022
948
  get blockViewer() {
1023
949
  return this._blockViewer;
1024
950
  }
1025
- get finalizationViewer() {
1026
- return this._finalizationViewer;
951
+ get stakeEventsViewer() {
952
+ return this._stakeEventsViewer;
1027
953
  }
1028
954
  get stakeViewer() {
1029
955
  return this._stakeViewer;
1030
956
  }
1031
- async bonus({ range, positions } = {}) {
1032
- const total = await this.total({ range, positions });
1033
- const earned = await this.earned({ range, positions });
1034
- const result = {};
1035
- for (const key of Object.keys(total)) {
1036
- const pos = Number(key);
1037
- result[pos] = asAttoXL12(total[pos] - (earned[pos] ?? 0n));
1038
- }
1039
- return result;
1040
- }
1041
- claimed(_options) {
1042
- throw new Error("Method [claimed] not implemented.");
1043
- }
1044
957
  async createHandler() {
1045
958
  await super.createHandler();
1046
- this._blockViewer = await this.locator.getInstance(BlockViewerMoniker2);
1047
- this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker3);
1048
- this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker3);
959
+ this._blockViewer = await this.locator.getInstance(BlockViewerMoniker5);
960
+ this._networkStakeStepRewardsViewer = await this.locator.getInstance(NetworkStakeStepRewardsViewerMoniker3);
961
+ this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker5);
962
+ this._stakeEventsViewer = await this.locator.getInstance(StakeEventsViewerMoniker);
1049
963
  }
1050
- async earned({ range, positions } = {}) {
1051
- return await this.calculateRewards({ range, positions });
964
+ async positionCount(step) {
965
+ const externalRange = await externalBlockRangeFromStep2(this.context, this.blockViewer, step);
966
+ const positionCount = await this.stakeEventsViewer.positionCount(externalRange);
967
+ return positionCount;
1052
968
  }
1053
- async total({ range, positions } = {}) {
1054
- return await this.calculateRewards({ range, positions }, this.rewardMultipliers);
969
+ // TODO: Implement paging
970
+ async positions(step, _options) {
971
+ const count = await this.positionCount(step);
972
+ const externalRange = await externalBlockRangeFromStep2(this.context, this.blockViewer, step);
973
+ const allPositions = await Promise.all(Array.from({ length: count + 1 }, (_, i) => i).map(async (id) => this.stakeViewer.stakeById(id)));
974
+ return allPositions.filter((pos) => pos.addBlock <= externalRange[1] && (pos.removeBlock === 0 || pos.removeBlock > externalRange[0]));
1055
975
  }
1056
- unclaimed(_options = {}) {
1057
- throw new Error("Method [unclaimed] not implemented.");
976
+ randomizer(_step) {
977
+ throw new Error("Method [randomizer] not implemented.");
1058
978
  }
1059
- async calculateRewards({ range, positions } = {}, rewardMultipliers) {
1060
- const result = {};
1061
- const head = await this.finalizationViewer.head();
1062
- const steps = blockRangeSteps2(asXL1BlockRange2(
1063
- range ?? [0, head[1]],
1064
- { name: "NodeStepRewardsByPositionViewer" }
1065
- ), [3, 4, 5, 6, 7]);
1066
- for (const step of steps) {
1067
- if (isArray(positions)) {
1068
- for (const positionId of positions) {
1069
- const position = await this.stakeViewer.stakeById(positionId);
1070
- const reward = await networkStakeStepRewardEarnedForPosition(
1071
- this.context,
1072
- this.blockViewer,
1073
- this.stakeViewer.stakeEvents,
1074
- step,
1075
- position,
1076
- rewardMultipliers
1077
- );
1078
- result[positionId] = asAttoXL12((result[positionId] ?? 0n) + reward[0]);
1079
- }
1080
- }
1081
- }
1082
- return result;
979
+ stake(_step) {
980
+ throw new Error("Method [stake] not implemented.");
981
+ }
982
+ stakerCount(_step) {
983
+ throw new Error("Method [stakerCount] not implemented.");
984
+ }
985
+ stakers(_step, _options) {
986
+ throw new Error("Method [stakers] not implemented.");
987
+ }
988
+ weight(_step, _positionId) {
989
+ throw new Error("Method [weight] not implemented.");
1083
990
  }
1084
991
  };
1085
- __publicField(SimpleStepRewardsByPositionViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
1086
- __publicField(SimpleStepRewardsByPositionViewer, "defaultMoniker", NetworkStakeStepRewardsByPositionViewerMoniker2);
1087
- __publicField(SimpleStepRewardsByPositionViewer, "dependencies", [BlockViewerMoniker2, FinalizationViewerMoniker3, StakeViewerMoniker3]);
1088
- __publicField(SimpleStepRewardsByPositionViewer, "monikers", [NetworkStakeStepRewardsByPositionViewerMoniker2]);
1089
- __publicField(SimpleStepRewardsByPositionViewer, "surface", "node");
1090
- SimpleStepRewardsByPositionViewer = __decorateClass([
1091
- creatableProvider9()
1092
- ], SimpleStepRewardsByPositionViewer);
992
+ __publicField(SimpleStepViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
993
+ __publicField(SimpleStepViewer, "defaultMoniker", StepViewerMoniker);
994
+ __publicField(SimpleStepViewer, "dependencies", [
995
+ BlockViewerMoniker5,
996
+ NetworkStakeStepRewardsViewerMoniker3,
997
+ StakeViewerMoniker5,
998
+ StakeEventsViewerMoniker
999
+ ]);
1000
+ __publicField(SimpleStepViewer, "monikers", [StepViewerMoniker]);
1001
+ __publicField(SimpleStepViewer, "surface", "node");
1002
+ SimpleStepViewer = __decorateClass([
1003
+ creatableProvider11()
1004
+ ], SimpleStepViewer);
1093
1005
 
1094
- // src/SimpleStepRewards/SimpleStepRewardsByStakerViewer.ts
1095
- import { isArray as isArray2 } from "@xylabs/sdk";
1006
+ // src/SimpleXyoViewer.ts
1096
1007
  import {
1097
- asAttoXL1 as asAttoXL13,
1098
- asXL1BlockRange as asXL1BlockRange3,
1099
- BlockViewerMoniker as BlockViewerMoniker3,
1100
- FinalizationViewerMoniker as FinalizationViewerMoniker4,
1101
- NetworkStakeStepRewardsByStakerViewerMoniker,
1102
- StakeViewerMoniker as StakeViewerMoniker4
1008
+ assertEx as assertEx4,
1009
+ toAddress
1010
+ } from "@ariestools/sdk";
1011
+ import {
1012
+ AccountBalanceViewerMoniker,
1013
+ asAttoXL1 as asAttoXL15,
1014
+ asXL1BlockRange as asXL1BlockRange4,
1015
+ BlockViewerMoniker as BlockViewerMoniker6,
1016
+ ChainContractViewerMoniker,
1017
+ FinalizationViewerMoniker as FinalizationViewerMoniker5,
1018
+ MempoolViewerMoniker,
1019
+ NetworkStakeStepRewardsByPositionViewerMoniker as NetworkStakeStepRewardsByPositionViewerMoniker3,
1020
+ NetworkStakeViewerMoniker as NetworkStakeViewerMoniker2,
1021
+ StakeViewerMoniker as StakeViewerMoniker6,
1022
+ StepViewerMoniker as StepViewerMoniker2,
1023
+ TimeSyncViewerMoniker,
1024
+ TransactionViewerMoniker,
1025
+ XYO_NETWORK_STAKING_ADDRESS as XYO_NETWORK_STAKING_ADDRESS4,
1026
+ XYO_ZERO_ADDRESS,
1027
+ XyoViewerMoniker as XyoViewerMoniker3
1103
1028
  } from "@xyo-network/xl1-protocol-lib";
1104
1029
  import {
1105
- AbstractCreatableProvider as AbstractCreatableProvider9,
1106
- blockRangeSteps as blockRangeSteps3,
1107
- creatableProvider as creatableProvider10
1030
+ AbstractCreatableProvider as AbstractCreatableProvider12,
1031
+ allStakersForStep,
1032
+ blockRangeSteps as blockRangeSteps4,
1033
+ creatableProvider as creatableProvider12,
1034
+ externalBlockRangeFromStep as externalBlockRangeFromStep3,
1035
+ externalBlockRangeFromXL1BlockRange,
1036
+ networkStakeStepRewardPositionWeight,
1037
+ stepRewardTotal as stepRewardTotal2,
1038
+ toStepIdentityString as toStepIdentityString3,
1039
+ weightedStakeForRangeByPosition as weightedStakeForRangeByPosition2,
1040
+ withContextCacheResponse as withContextCacheResponse4
1108
1041
  } from "@xyo-network/xl1-protocol-sdk";
1109
- var SimpleStepRewardsByStakerViewer = class extends AbstractCreatableProvider9 {
1110
- moniker = SimpleStepRewardsByStakerViewer.defaultMoniker;
1042
+ var SimpleXyoViewer = class extends AbstractCreatableProvider12 {
1043
+ moniker = SimpleXyoViewer.defaultMoniker;
1044
+ _tracer;
1045
+ _accountBalanceViewer;
1111
1046
  _blockViewer;
1047
+ _chainContractViewer;
1048
+ _chainId;
1112
1049
  _finalizationViewer;
1050
+ _mempoolViewer;
1051
+ _networkStakeViewer;
1052
+ _networkStepRewardsByPositionViewer;
1053
+ _rewardMultipliers;
1113
1054
  _stakeViewer;
1114
- get rewardMultipliers() {
1115
- return this.params.rewardMultipliers ?? {};
1055
+ _stepViewer;
1056
+ _timeSyncViewer;
1057
+ _transaction;
1058
+ get account() {
1059
+ return { balance: this._accountBalanceViewer };
1116
1060
  }
1117
- get blockViewer() {
1061
+ get block() {
1118
1062
  return this._blockViewer;
1119
1063
  }
1120
- get finalizationViewer() {
1064
+ get chainContractViewer() {
1065
+ return this._chainContractViewer;
1066
+ }
1067
+ get finalization() {
1121
1068
  return this._finalizationViewer;
1122
1069
  }
1123
- get stakeViewer() {
1124
- return this._stakeViewer;
1070
+ get mempool() {
1071
+ return this._mempoolViewer;
1125
1072
  }
1126
- async bonus({ range, stakers } = {}) {
1127
- const total = await this.total({ range, stakers });
1128
- const earned = await this.earned({ range, stakers });
1129
- const result = {};
1130
- for (const staker of Object.keys(total)) {
1131
- result[staker] = asAttoXL13(total[staker] - (earned[staker] ?? 0n));
1132
- }
1133
- return result;
1073
+ get networkStake() {
1074
+ return this._networkStakeViewer;
1134
1075
  }
1135
- claimed(_options) {
1136
- throw new Error("Method [claimed] not implemented.");
1076
+ get stake() {
1077
+ return this._stakeViewer;
1137
1078
  }
1138
- async createHandler() {
1139
- await super.createHandler();
1140
- this._blockViewer = await this.locator.getInstance(BlockViewerMoniker3);
1141
- this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker4);
1142
- this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker4);
1079
+ get step() {
1080
+ return this._stepViewer;
1143
1081
  }
1144
- async earned(options = {}) {
1145
- return await this.calculateRewards(options);
1082
+ get time() {
1083
+ return this._timeSyncViewer;
1146
1084
  }
1147
- async total(options = {}) {
1148
- return await this.calculateRewards(options, this.rewardMultipliers);
1085
+ get transaction() {
1086
+ return this._transaction;
1149
1087
  }
1150
- unclaimed(_options = {}) {
1151
- throw new Error("Method [unclaimed] not implemented.");
1088
+ get finalizationViewer() {
1089
+ return this._finalizationViewer;
1152
1090
  }
1153
- async calculateRewards({ range, stakers } = {}, rewardMultipliers) {
1154
- const result = {};
1155
- const steps = blockRangeSteps3(asXL1BlockRange3(
1156
- range ?? [0, await this.finalizationViewer.headNumber()],
1157
- { name: "NodeStepRewardsByStakerViewer" }
1158
- ), [3, 4, 5, 6, 7]);
1159
- for (const step of steps) {
1160
- if (isArray2(stakers)) {
1161
- for (const staker of stakers) {
1162
- const reward = await networkStakeStepRewardEarnedForStaker(
1163
- this.context,
1164
- this.blockViewer,
1165
- this.stakeViewer,
1166
- step,
1167
- staker,
1168
- rewardMultipliers
1169
- );
1170
- result[staker] = asAttoXL13((result[staker] ?? 0n) + reward[0]);
1171
- }
1172
- }
1173
- }
1174
- return result;
1091
+ get initRewardsCache() {
1092
+ return this.params.initRewardsCache ?? true;
1093
+ }
1094
+ get networkStepRewardsByPositionViewer() {
1095
+ return this._networkStepRewardsByPositionViewer;
1175
1096
  }
1176
- };
1177
- __publicField(SimpleStepRewardsByStakerViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
1178
- __publicField(SimpleStepRewardsByStakerViewer, "defaultMoniker", NetworkStakeStepRewardsByStakerViewerMoniker);
1179
- __publicField(SimpleStepRewardsByStakerViewer, "dependencies", [BlockViewerMoniker3, FinalizationViewerMoniker4, StakeViewerMoniker4]);
1180
- __publicField(SimpleStepRewardsByStakerViewer, "monikers", [NetworkStakeStepRewardsByStakerViewerMoniker]);
1181
- __publicField(SimpleStepRewardsByStakerViewer, "surface", "node");
1182
- SimpleStepRewardsByStakerViewer = __decorateClass([
1183
- creatableProvider10()
1184
- ], SimpleStepRewardsByStakerViewer);
1185
-
1186
- // src/SimpleStepRewards/SimpleStepRewardsByStepViewer.ts
1187
- import {
1188
- asAttoXL1 as asAttoXL14,
1189
- asXL1BlockRange as asXL1BlockRange4,
1190
- BlockViewerMoniker as BlockViewerMoniker4,
1191
- FinalizationViewerMoniker as FinalizationViewerMoniker5,
1192
- NetworkStakeStepRewardsByStepViewerMoniker,
1193
- StakeViewerMoniker as StakeViewerMoniker5
1194
- } from "@xyo-network/xl1-protocol-lib";
1195
- import {
1196
- AbstractCreatableProvider as AbstractCreatableProvider10,
1197
- blockRangeSteps as blockRangeSteps4,
1198
- creatableProvider as creatableProvider11,
1199
- toStepIdentityString as toStepIdentityString3
1200
- } from "@xyo-network/xl1-protocol-sdk";
1201
- var SimpleStepRewardsByStepViewer = class extends AbstractCreatableProvider10 {
1202
- moniker = SimpleStepRewardsByStepViewer.defaultMoniker;
1203
- _blockViewer;
1204
- _finalizationViewer;
1205
- _stakeViewer;
1206
1097
  get rewardMultipliers() {
1207
- return this.params.rewardMultipliers ?? {};
1098
+ this._rewardMultipliers = this._rewardMultipliers ?? this.params.rewardMultipliers ?? {};
1099
+ return this._rewardMultipliers;
1208
1100
  }
1209
- get blockViewer() {
1210
- return this._blockViewer;
1101
+ async accountBalance(address, config = {}) {
1102
+ return await this.account.balance.accountBalance(address, config);
1211
1103
  }
1212
- get finalizationViewer() {
1213
- return this._finalizationViewer;
1104
+ async accountBalanceHistory(address, config = {}) {
1105
+ return await this.account.balance.accountBalanceHistory(address, config);
1214
1106
  }
1215
- get stakeViewer() {
1216
- return this._stakeViewer;
1107
+ async blockByHash(hash) {
1108
+ return await this.block.blockByHash(hash);
1217
1109
  }
1218
- async bonus({ range, steps } = {}) {
1219
- const total = await this.total({ range, steps });
1220
- const earned = await this.earned({ range, steps });
1221
- const result = {};
1222
- for (const stepString of Object.keys(total)) {
1223
- result[stepString] = asAttoXL14(total[stepString] - (earned[stepString] ?? 0n));
1224
- }
1225
- return result;
1110
+ async blockByNumber(blockNumber) {
1111
+ return await this.block.blockByNumber(blockNumber);
1226
1112
  }
1227
- claimed(_options) {
1228
- throw new Error("Method [claimed] not implemented.");
1113
+ async blocksByHash(hash, limit = 10) {
1114
+ return await this.block.blocksByHash(hash, limit);
1115
+ }
1116
+ async blocksByNumber(blockNumber, limit = 10) {
1117
+ return await this.block.blocksByNumber(blockNumber, limit);
1118
+ }
1119
+ async blocksByStep(stepLevel, stepIndex) {
1120
+ return await this.block.blocksByStep(stepLevel, stepIndex);
1121
+ }
1122
+ async chainId(blockNumber = "latest") {
1123
+ return await this.spanAsync("SimpleXyoViewer:chainId", async () => {
1124
+ const chainId = assertEx4(
1125
+ blockNumber === "latest" ? this._chainId : await this.chainContractViewer.chainIdAtBlockNumber(blockNumber),
1126
+ () => `Could not find block for chainId at block ${blockNumber}`
1127
+ );
1128
+ return chainId;
1129
+ }, this.context);
1229
1130
  }
1230
1131
  async createHandler() {
1231
1132
  await super.createHandler();
1232
- this._blockViewer = await this.locator.getInstance(BlockViewerMoniker4);
1133
+ this._accountBalanceViewer = await this.locator.getInstance(AccountBalanceViewerMoniker);
1134
+ this._blockViewer = await this.locator.getInstance(BlockViewerMoniker6);
1135
+ this._chainContractViewer = await this.locator.getInstance(ChainContractViewerMoniker);
1233
1136
  this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker5);
1234
- this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker5);
1137
+ this._mempoolViewer = await this.locator.getInstance(MempoolViewerMoniker);
1138
+ this._networkStakeViewer = await this.locator.getInstance(NetworkStakeViewerMoniker2);
1139
+ this._networkStepRewardsByPositionViewer = await this.locator.getInstance(NetworkStakeStepRewardsByPositionViewerMoniker3);
1140
+ this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker6);
1141
+ this._stepViewer = await this.locator.getInstance(StepViewerMoniker2);
1142
+ this._timeSyncViewer = await this.locator.getInstance(TimeSyncViewerMoniker);
1143
+ this._transaction = await this.locator.getInstance(TransactionViewerMoniker);
1144
+ this._chainId = await this._chainContractViewer.chainId();
1235
1145
  }
1236
- async earned({ range, steps } = {}) {
1237
- const result = {};
1238
- const resolvedSteps = steps ?? blockRangeSteps4(asXL1BlockRange4(
1239
- range ?? [0, await this.finalizationViewer.headNumber()],
1240
- { name: "NodeStepRewardsByStepViewer" }
1241
- ), [3, 4, 5, 6, 7]);
1242
- for (const step of resolvedSteps) {
1243
- const stepIdentityString = toStepIdentityString3(step);
1244
- const reward = await networkStakeStepRewardEarned(
1245
- this.context,
1246
- this.blockViewer,
1247
- this.stakeViewer,
1248
- step
1249
- );
1250
- result[stepIdentityString] = asAttoXL14((result[stepIdentityString] ?? 0n) + reward[0]);
1251
- }
1252
- return result;
1146
+ async currentBlock() {
1147
+ return await this.block.currentBlock();
1253
1148
  }
1254
- async total({ range, steps } = {}) {
1255
- const result = {};
1256
- const head = await this.finalizationViewer.head();
1257
- const resolvedSteps = steps ?? blockRangeSteps4(asXL1BlockRange4(
1258
- range ?? [0, head[1]],
1259
- { name: "NodeStepRewardsByStepViewer" }
1260
- ), [3, 4, 5, 6, 7]);
1261
- for (const step of resolvedSteps) {
1262
- const stepIdentityString = toStepIdentityString3(step);
1263
- const reward = await networkStakeStepRewardEarned(
1264
- this.context,
1265
- this.blockViewer,
1266
- this.stakeViewer,
1267
- step,
1268
- this.rewardMultipliers
1269
- );
1270
- result[stepIdentityString] = asAttoXL14((result[stepIdentityString] ?? 0n) + reward[0]);
1271
- }
1272
- return result;
1149
+ async currentBlockHash() {
1150
+ return await this.block.currentBlockHash();
1273
1151
  }
1274
- unclaimed(_options = {}) {
1275
- throw new Error("Method [unclaimed] ot implemented.");
1152
+ async currentBlockNumber() {
1153
+ return await this.block.currentBlockNumber();
1276
1154
  }
1277
- };
1278
- __publicField(SimpleStepRewardsByStepViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
1279
- __publicField(SimpleStepRewardsByStepViewer, "defaultMoniker", NetworkStakeStepRewardsByStepViewerMoniker);
1280
- __publicField(SimpleStepRewardsByStepViewer, "dependencies", [BlockViewerMoniker4, FinalizationViewerMoniker5, StakeViewerMoniker5]);
1281
- __publicField(SimpleStepRewardsByStepViewer, "monikers", [NetworkStakeStepRewardsByStepViewerMoniker]);
1282
- __publicField(SimpleStepRewardsByStepViewer, "surface", "node");
1283
- SimpleStepRewardsByStepViewer = __decorateClass([
1284
- creatableProvider11()
1285
- ], SimpleStepRewardsByStepViewer);
1286
-
1287
- // src/SimpleStepRewards/SimpleStepRewardsTotalViewer.ts
1288
- import { asAttoXL1 as asAttoXL15, NetworkStakeStepRewardsTotalViewerMoniker } from "@xyo-network/xl1-protocol-lib";
1289
- import {
1290
- AbstractCreatableProvider as AbstractCreatableProvider11,
1291
- creatableProvider as creatableProvider12
1292
- } from "@xyo-network/xl1-protocol-sdk";
1293
- var SimpleStepRewardsTotalViewer = class extends AbstractCreatableProvider11 {
1294
- moniker = SimpleStepRewardsTotalViewer.defaultMoniker;
1295
- get rewardMultipliers() {
1296
- return this.params.rewardMultipliers ?? {};
1155
+ forkHistory() {
1156
+ throw new Error("Method [forkHistory] not implemented.");
1157
+ }
1158
+ networkStakeStepRewardAddressHistory(_address) {
1159
+ throw new Error("Method [networkStakeStepRewardAddressHistory] not implemented.");
1160
+ }
1161
+ networkStakeStepRewardAddressReward(_context, _address) {
1162
+ throw new Error("Method [networkStakeStepRewardAddressReward] not implemented.");
1163
+ }
1164
+ networkStakeStepRewardAddressShare(_context, _address) {
1165
+ throw new Error("Method [networkStakeStepRewardAddressShare] not implemented.");
1166
+ }
1167
+ networkStakeStepRewardClaimedByAddress(_address) {
1168
+ throw new Error("Method [networkStakeStepRewardClaimedByAddress] not implemented.");
1169
+ }
1170
+ async networkStakeStepRewardForPosition(position, range) {
1171
+ const cacheKey = `${position}|${range[0]}-${range[1]}`;
1172
+ return await withContextCacheResponse4(this.context, "SimpleXyoViewer:networkStakeStepRewardForPosition", cacheKey, async () => {
1173
+ const externalRange = await externalBlockRangeFromXL1BlockRange(this.context, this.block, range);
1174
+ const positionCount = await this.stake.stakeEvents.positionCount(externalRange);
1175
+ if (positionCount === 0) {
1176
+ return [asAttoXL15(0n), asAttoXL15(0n)];
1177
+ }
1178
+ const steps = blockRangeSteps4(range, [3, 4, 5, 6, 7]);
1179
+ const rewards = await Promise.all(steps.map((step) => this.networkStakeStepRewardForStepForPosition(step, position)));
1180
+ const positionReward = asAttoXL15(rewards.reduce((a, b) => a + b[0], 0n));
1181
+ const totalReward = asAttoXL15(rewards.reduce((a, b) => a + b[1], 0n));
1182
+ return [positionReward, totalReward];
1183
+ });
1184
+ }
1185
+ async networkStakeStepRewardForStep(stepContext) {
1186
+ return await stepRewardTotal2(this.context, this.block, stepContext, this.rewardMultipliers);
1187
+ }
1188
+ async networkStakeStepRewardForStepForPosition(stepIdentity, position) {
1189
+ const stepIdentityString = toStepIdentityString3(stepIdentity);
1190
+ const cacheKey = `${stepIdentityString}|${position}`;
1191
+ return await withContextCacheResponse4(this.context, "SimpleXyoViewer:networkStakeStepRewardForStepForPosition", cacheKey, async () => {
1192
+ const range = await externalBlockRangeFromStep3(this.context, this.block, stepIdentity);
1193
+ const stake = await this.stakeById(position);
1194
+ const numerator = stake.staked === XYO_NETWORK_STAKING_ADDRESS4 ? await weightedStakeForRangeByPosition2(this.context, this.block, this.stake.stakeEvents, range, XYO_NETWORK_STAKING_ADDRESS4, position) : 0n;
1195
+ const denominator = await this.stepWeightedDenominator(stepIdentity);
1196
+ const totalReward = await this.networkStakeStepRewardForStep(stepIdentity);
1197
+ const positionReward = asAttoXL15(denominator > 0n ? totalReward * numerator / denominator : 0n);
1198
+ const result = [positionReward, totalReward];
1199
+ return result;
1200
+ });
1201
+ }
1202
+ async networkStakeStepRewardPoolRewards(step) {
1203
+ const stakes = await this.stake.stakesByStaked(XYO_NETWORK_STAKING_ADDRESS4);
1204
+ const rewards = [];
1205
+ for (const stake of stakes) {
1206
+ rewards.push([stake.staker, await this.networkStakeStepRewardForStepForPosition(
1207
+ step,
1208
+ stake.id
1209
+ )]);
1210
+ }
1211
+ const result = {};
1212
+ for (const [staker, reward] of rewards) {
1213
+ result[staker] = asAttoXL15((result[staker] ?? 0n) + reward[0]);
1214
+ }
1215
+ const filtered = Object.fromEntries(Object.entries(result).filter(([_, v]) => v > 0n));
1216
+ return filtered;
1297
1217
  }
1298
- async bonus({ range } = {}) {
1299
- const total = await this.total({ range });
1300
- const earned = await this.earned({ range });
1301
- return asAttoXL15(total - earned);
1218
+ networkStakeStepRewardPoolShares(_context) {
1219
+ throw new Error("Method [networkStakeStepRewardPoolShares] not implemented.");
1302
1220
  }
1303
- claimed(_options) {
1304
- throw new Error("Method [claimed] not implemented.");
1221
+ async networkStakeStepRewardPositionWeight(stepContext, position) {
1222
+ return await networkStakeStepRewardPositionWeight(this.context, this.block, this.stake.stakeEvents, stepContext, position);
1305
1223
  }
1306
- async earned(options = {}) {
1307
- return await this.calculateRewards(options);
1224
+ networkStakeStepRewardPotentialPositionLoss(_context, _position) {
1225
+ throw new Error("Method [networkStakeStepRewardPotentialPositionLoss] not implemented.");
1308
1226
  }
1309
- async total(options = {}) {
1310
- return await this.calculateRewards(options, this.rewardMultipliers);
1227
+ networkStakeStepRewardRandomizer(_context) {
1228
+ throw new Error("Method [networkStakeStepRewardRandomizer] not implemented.");
1311
1229
  }
1312
- unclaimed(_options = {}) {
1313
- throw new Error("Method [unclaimed] not implemented.");
1230
+ async networkStakeStepRewardStakerCount(stepContext) {
1231
+ return Object.keys(await allStakersForStep(
1232
+ this.context,
1233
+ this.block,
1234
+ this.stake.stakeEvents,
1235
+ stepContext,
1236
+ XYO_NETWORK_STAKING_ADDRESS4
1237
+ )).length;
1314
1238
  }
1315
- calculateRewards(_options = {}, _rewardMultipliers) {
1316
- throw new Error("Method [calculateRewards] not implemented.");
1239
+ networkStakeStepRewardUnclaimedByAddress(_address) {
1240
+ throw new Error("Method [networkStakeStepRewardUnclaimedByAddress] not implemented.");
1317
1241
  }
1318
- };
1319
- __publicField(SimpleStepRewardsTotalViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
1320
- __publicField(SimpleStepRewardsTotalViewer, "defaultMoniker", NetworkStakeStepRewardsTotalViewerMoniker);
1321
- __publicField(SimpleStepRewardsTotalViewer, "dependencies", []);
1322
- __publicField(SimpleStepRewardsTotalViewer, "monikers", [NetworkStakeStepRewardsTotalViewerMoniker]);
1323
- __publicField(SimpleStepRewardsTotalViewer, "surface", "node");
1324
- SimpleStepRewardsTotalViewer = __decorateClass([
1325
- creatableProvider12()
1326
- ], SimpleStepRewardsTotalViewer);
1327
-
1328
- // src/SimpleStepRewards/SimpleStepRewardsViewer.ts
1329
- import { assertEx as assertEx6 } from "@xylabs/sdk";
1330
- import {
1331
- BlockViewerMoniker as BlockViewerMoniker5,
1332
- NetworkStakeStepRewardsByPositionViewerMoniker as NetworkStakeStepRewardsByPositionViewerMoniker3,
1333
- NetworkStakeStepRewardsByStakerViewerMoniker as NetworkStakeStepRewardsByStakerViewerMoniker2,
1334
- NetworkStakeStepRewardsByStepViewerMoniker as NetworkStakeStepRewardsByStepViewerMoniker2,
1335
- NetworkStakeStepRewardsViewerMoniker as NetworkStakeStepRewardsViewerMoniker2
1336
- } from "@xyo-network/xl1-protocol-lib";
1337
- import {
1338
- AbstractCreatableProvider as AbstractCreatableProvider12,
1339
- creatableProvider as creatableProvider13
1340
- } from "@xyo-network/xl1-protocol-sdk";
1341
- var SimpleStepRewardsViewer = class extends AbstractCreatableProvider12 {
1342
- moniker = SimpleStepRewardsViewer.defaultMoniker;
1343
- _blockViewer;
1344
- _position;
1345
- _staker;
1346
- _step;
1347
- get position() {
1348
- return assertEx6(this._position, () => "Position viewer not initialized");
1242
+ networkStakeStepRewardWeightForAddress(_context, _address) {
1243
+ throw new Error("Method [networkStakeStepRewardWeightForAddress] not implemented.");
1349
1244
  }
1350
- get staker() {
1351
- return assertEx6(this._staker, () => "Position viewer not initialized");
1245
+ async networkStakeStepRewardsForPosition(position, range) {
1246
+ const steps = blockRangeSteps4(range, [3, 4, 5, 6, 7, 8]);
1247
+ const rewards = await Promise.all(steps.map(async (step) => {
1248
+ return [toStepIdentityString3(step), await this.networkStakeStepRewardForStepForPosition(step, position)];
1249
+ }));
1250
+ const result = Object.fromEntries(rewards);
1251
+ const filtered = Object.fromEntries(Object.entries(result).filter(([_, v]) => v[0] > 0n));
1252
+ return filtered;
1352
1253
  }
1353
- get step() {
1354
- return assertEx6(this._step, () => "Step viewer not initialized");
1254
+ async networkStakeStepRewardsForRange(range) {
1255
+ return await this.spanAsync("networkStakeStepRewardsForRange", async () => {
1256
+ const steps = blockRangeSteps4(range, [3, 4, 5, 6, 7, 8]);
1257
+ const rewards = await Promise.all(steps.map(async (step) => {
1258
+ return await this.networkStakeStepRewardForStep(step);
1259
+ }));
1260
+ return asAttoXL15(rewards.reduce((a, b) => a + b, 0n));
1261
+ }, this.context);
1355
1262
  }
1356
- get total() {
1357
- throw new Error("Method [total] not implemented.");
1263
+ async networkStakeStepRewardsForStepLevel(stepLevel, range) {
1264
+ const steps = blockRangeSteps4(range, [stepLevel]);
1265
+ const rewards = await Promise.all(steps.map(async (step) => {
1266
+ return await this.networkStakeStepRewardForStep(step);
1267
+ }));
1268
+ return asAttoXL15(rewards.reduce((a, b) => a + b, 0n));
1358
1269
  }
1359
- get rewardMultipliers() {
1360
- return this.params.rewardMultipliers;
1270
+ payloadByHash(_hash) {
1271
+ throw new Error("Method [payloadByHash] not implemented.");
1361
1272
  }
1362
- async createHandler() {
1363
- await super.createHandler();
1364
- this._blockViewer = await this.locator.getInstance(BlockViewerMoniker5);
1365
- this._position = await this.locator.getInstance(NetworkStakeStepRewardsByPositionViewerMoniker3);
1366
- this._staker = await this.locator.getInstance(NetworkStakeStepRewardsByStakerViewerMoniker2);
1367
- this._step = await this.locator.getInstance(NetworkStakeStepRewardsByStepViewerMoniker2);
1273
+ payloadsByHash(_hashes) {
1274
+ throw new Error("Method [payloadsByHash] not implemented.");
1368
1275
  }
1369
- async startHandler() {
1370
- await super.startHandler();
1371
- await assertEx6(this._position, () => "Position viewer not created").start();
1372
- await assertEx6(this._staker, () => "Staker viewer not created").start();
1373
- await assertEx6(this._step, () => "Step viewer not created").start();
1276
+ async rate(range, timeUnit) {
1277
+ return await this.block.rate(range, timeUnit);
1374
1278
  }
1375
- };
1376
- __publicField(SimpleStepRewardsViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
1377
- __publicField(SimpleStepRewardsViewer, "defaultMoniker", NetworkStakeStepRewardsViewerMoniker2);
1378
- __publicField(SimpleStepRewardsViewer, "dependencies", [
1379
- BlockViewerMoniker5,
1380
- NetworkStakeStepRewardsByPositionViewerMoniker3,
1381
- NetworkStakeStepRewardsByStakerViewerMoniker2,
1382
- NetworkStakeStepRewardsByStepViewerMoniker2
1383
- ]);
1384
- __publicField(SimpleStepRewardsViewer, "monikers", [NetworkStakeStepRewardsViewerMoniker2]);
1385
- __publicField(SimpleStepRewardsViewer, "surface", "node");
1386
- SimpleStepRewardsViewer = __decorateClass([
1387
- creatableProvider13()
1388
- ], SimpleStepRewardsViewer);
1389
-
1390
- // src/SimpleStepViewer.ts
1391
- import {
1392
- BlockViewerMoniker as BlockViewerMoniker6,
1393
- NetworkStakeStepRewardsViewerMoniker as NetworkStakeStepRewardsViewerMoniker3,
1394
- StakeEventsViewerMoniker,
1395
- StakeViewerMoniker as StakeViewerMoniker6,
1396
- StepViewerMoniker as StepViewerMoniker2
1397
- } from "@xyo-network/xl1-protocol-lib";
1398
- import {
1399
- AbstractCreatableProvider as AbstractCreatableProvider13,
1400
- creatableProvider as creatableProvider14,
1401
- externalBlockRangeFromStep as externalBlockRangeFromStep3
1402
- } from "@xyo-network/xl1-protocol-sdk";
1403
- var SimpleStepViewer = class extends AbstractCreatableProvider13 {
1404
- moniker = SimpleStepViewer.defaultMoniker;
1405
- _blockViewer;
1406
- _networkStakeStepRewardsViewer;
1407
- _stakeEventsViewer;
1408
- _stakeViewer;
1409
- get rewards() {
1410
- return this._networkStakeStepRewardsViewer;
1279
+ async stakeById(id) {
1280
+ return await this.stake.stakeById(id);
1411
1281
  }
1412
- get blockViewer() {
1413
- return this._blockViewer;
1282
+ async stakeByStaker(staker, slot) {
1283
+ return await this.stake.stakeByStaker(staker, slot);
1414
1284
  }
1415
- get stakeEventsViewer() {
1416
- return this._stakeEventsViewer;
1285
+ async stakedByStaker(staker) {
1286
+ const result = /* @__PURE__ */ new Set();
1287
+ let slot = 0;
1288
+ while (true) {
1289
+ try {
1290
+ const ethStake = await this.stake.stakeByStaker(staker, slot);
1291
+ result.add(toAddress(ethStake.staked));
1292
+ slot++;
1293
+ } catch {
1294
+ break;
1295
+ }
1296
+ }
1297
+ return [...result];
1417
1298
  }
1418
- get stakeViewer() {
1419
- return this._stakeViewer;
1299
+ async stakesByStaked(staked) {
1300
+ return await this.stake.stakesByStaked(staked);
1420
1301
  }
1421
- async createHandler() {
1422
- await super.createHandler();
1423
- this._blockViewer = await this.locator.getInstance(BlockViewerMoniker6);
1424
- this._networkStakeStepRewardsViewer = await this.locator.getInstance(NetworkStakeStepRewardsViewerMoniker3);
1425
- this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker6);
1426
- this._stakeEventsViewer = await this.locator.getInstance(StakeEventsViewerMoniker);
1302
+ async stakesByStaker(staker) {
1303
+ return await this.stake.stakesByStaker(staker);
1427
1304
  }
1428
- async positionCount(step) {
1429
- const externalRange = await externalBlockRangeFromStep3(this.context, this.blockViewer, step);
1430
- const positionCount = await this.stakeEventsViewer.positionCount(externalRange);
1431
- return positionCount;
1305
+ async stepSizeRate(start, stepSizeIndex, count, timeUnit) {
1306
+ return await this.block.stepSizeRate(start, stepSizeIndex, count, timeUnit);
1432
1307
  }
1433
- // TODO: Implement paging
1434
- async positions(step, _options) {
1435
- const count = await this.positionCount(step);
1436
- const externalRange = await externalBlockRangeFromStep3(this.context, this.blockViewer, step);
1437
- const allPositions = await Promise.all(Array.from({ length: count + 1 }, (_, i) => i).map(async (id) => this.stakeViewer.stakeById(id)));
1438
- return allPositions.filter((pos) => pos.addBlock <= externalRange[1] && (pos.removeBlock === 0 || pos.removeBlock > externalRange[0]));
1308
+ async timeDurationRate(timeConfig, startBlock, timeUnit, toleranceMs, maxAttempts) {
1309
+ return await this.block.timeDurationRate(timeConfig, startBlock, timeUnit, toleranceMs, maxAttempts);
1439
1310
  }
1440
- randomizer(_step) {
1441
- throw new Error("Method [randomizer] not implemented.");
1311
+ async transactionByBlockHashAndIndex(blockHash, transactionIndex = 0) {
1312
+ return await this.transaction.byBlockHashAndIndex(blockHash, transactionIndex);
1442
1313
  }
1443
- stake(_step) {
1444
- throw new Error("Method [stake] not implemented.");
1314
+ async transactionByBlockNumberAndIndex(blockNumber, transactionIndex = 0) {
1315
+ return await this.transaction.byBlockNumberAndIndex(blockNumber, transactionIndex);
1445
1316
  }
1446
- stakerCount(_step) {
1447
- throw new Error("Method [stakerCount] not implemented.");
1317
+ async transactionByHash(transactionHash) {
1318
+ return await this.transaction.byHash(transactionHash);
1448
1319
  }
1449
- stakers(_step, _options) {
1450
- throw new Error("Method [stakers] not implemented.");
1320
+ async startHandler() {
1321
+ try {
1322
+ const currentBlockNumber = await this.currentBlockNumber();
1323
+ await this.account.balance.accountBalance(XYO_ZERO_ADDRESS);
1324
+ if (this.initRewardsCache) {
1325
+ const externalRange = await externalBlockRangeFromXL1BlockRange(
1326
+ this.context,
1327
+ this.block,
1328
+ asXL1BlockRange4([0, currentBlockNumber], { name: "startHandler" })
1329
+ );
1330
+ const positionCount = await this.stake.stakeEvents.positionCount(externalRange);
1331
+ this.logger?.debug(`SimpleXyoViewer: Precomputing networkStakeStepRewardForPosition up to position ${positionCount - 1}`);
1332
+ const positions = Array.from(
1333
+ { length: positionCount },
1334
+ (_, i) => i
1335
+ );
1336
+ while (positions.length > 0) {
1337
+ const batch = positions.splice(0, 10);
1338
+ this.logger?.debug(`SimpleXyoViewer: Precomputing networkStakeStepRewardForPosition for positions ${batch.at(0)} - ${batch.at(-1)}`);
1339
+ await Promise.all(batch.map(async (_, position) => await this.networkStakeStepRewardForPosition(
1340
+ position,
1341
+ asXL1BlockRange4([0, currentBlockNumber], { name: "startHandler" })
1342
+ )));
1343
+ }
1344
+ this.logger?.debug(`SimpleXyoViewer: Precomputed networkStakeStepRewardForPosition up to position ${positionCount - 1}`);
1345
+ }
1346
+ } catch (ex) {
1347
+ this.logger?.error(`SimpleXyoViewer: Error during startHandler initialization: ${ex.message}`);
1348
+ this.logger?.error(ex.stack ?? "<No Stack>");
1349
+ throw ex;
1350
+ }
1451
1351
  }
1452
- weight(_step, _positionId) {
1453
- throw new Error("Method [weight] not implemented.");
1352
+ async stepWeightedDenominator(stepIdentity, staked) {
1353
+ const cacheKey = toStepIdentityString3(stepIdentity);
1354
+ return await withContextCacheResponse4(this.context, "NodeXyoViewer-networkStakeStepRewardForStepForPosition-denominator", cacheKey, async () => {
1355
+ const range = await externalBlockRangeFromStep3(this.context, this.block, stepIdentity);
1356
+ return await weightedStakeForRangeByPosition2(this.context, this.block, this.stake.stakeEvents, range, staked);
1357
+ });
1454
1358
  }
1455
1359
  };
1456
- __publicField(SimpleStepViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
1457
- __publicField(SimpleStepViewer, "defaultMoniker", StepViewerMoniker2);
1458
- __publicField(SimpleStepViewer, "dependencies", [
1360
+ __publicField(SimpleXyoViewer, "connectionTypes", ["lmdb", "mongo", "memory"]);
1361
+ __publicField(SimpleXyoViewer, "defaultMoniker", XyoViewerMoniker3);
1362
+ __publicField(SimpleXyoViewer, "dependencies", [
1363
+ AccountBalanceViewerMoniker,
1459
1364
  BlockViewerMoniker6,
1460
- NetworkStakeStepRewardsViewerMoniker3,
1365
+ ChainContractViewerMoniker,
1366
+ FinalizationViewerMoniker5,
1367
+ MempoolViewerMoniker,
1368
+ NetworkStakeViewerMoniker2,
1369
+ NetworkStakeStepRewardsByPositionViewerMoniker3,
1461
1370
  StakeViewerMoniker6,
1462
- StakeEventsViewerMoniker
1371
+ StepViewerMoniker2,
1372
+ TimeSyncViewerMoniker,
1373
+ TransactionViewerMoniker
1463
1374
  ]);
1464
- __publicField(SimpleStepViewer, "monikers", [StepViewerMoniker2]);
1465
- __publicField(SimpleStepViewer, "surface", "node");
1466
- SimpleStepViewer = __decorateClass([
1467
- creatableProvider14()
1468
- ], SimpleStepViewer);
1375
+ __publicField(SimpleXyoViewer, "monikers", [XyoViewerMoniker3]);
1376
+ __publicField(SimpleXyoViewer, "surface", "node");
1377
+ SimpleXyoViewer = __decorateClass([
1378
+ creatableProvider12()
1379
+ ], SimpleXyoViewer);
1469
1380
 
1470
1381
  // src/locators/providerCandidates.ts
1471
1382
  var PROVIDER_IMPLEMENTATIONS = [
@@ -1482,10 +1393,6 @@ var PROVIDER_IMPLEMENTATIONS = [
1482
1393
  JsonRpcXyoRunner,
1483
1394
  JsonRpcXyoSigner,
1484
1395
  JsonRpcXyoViewer,
1485
- // eslint-disable-next-line @typescript-eslint/no-deprecated -- backward-compat provider registry
1486
- NodeXyoRunner,
1487
- // eslint-disable-next-line @typescript-eslint/no-deprecated -- backward-compat provider registry
1488
- NodeXyoViewer,
1489
1396
  RestDataLakeRunner,
1490
1397
  RestDataLakeViewer,
1491
1398
  SimpleAccountBalanceViewer,
@@ -1497,7 +1404,7 @@ var PROVIDER_IMPLEMENTATIONS = [
1497
1404
  SimpleDeadLetterQueueViewer,
1498
1405
  SimpleFinalizationRunner,
1499
1406
  SimpleFinalizationViewer,
1500
- SimpleMempoolRunner2,
1407
+ SimpleMempoolRunner,
1501
1408
  SimpleMempoolViewer,
1502
1409
  SimpleNetworkStakeViewer,
1503
1410
  SimpleStakeEventsViewer,
@@ -1656,24 +1563,13 @@ async function basicRemoteRunnerLocator(name, rpcConnection, signerTransport, da
1656
1563
  return locator;
1657
1564
  }
1658
1565
 
1659
- // src/locators/commonLocatorFromConfig.ts
1660
- import { ProviderFactoryLocator as ProviderFactoryLocator5 } from "@xyo-network/xl1-protocol-sdk";
1661
- function commonLocatorFromConfig(context, validateDepsOnRegister = false) {
1662
- return new ProviderFactoryLocator5(context, {}, validateDepsOnRegister);
1663
- }
1664
-
1665
- // src/locators/commonProvidersFromConfig.ts
1666
- function commonProvidersFromConfig() {
1667
- return [];
1668
- }
1669
-
1670
1566
  // src/locators/rootLocatorFromConfig.ts
1671
- import { assertEx as assertEx7 } from "@xylabs/sdk";
1567
+ import { assertEx as assertEx5 } from "@ariestools/sdk";
1672
1568
  async function rootLocatorFromConfig(context, validateDepsOnRegister = false, validators) {
1673
1569
  const { config } = context;
1674
1570
  const hasRpcConnection = config.connections?.["default-rpc"] !== void 0 || Object.values(config.connections ?? {}).some((connection) => connection?.type === "rpc");
1675
1571
  const newLocator = hasRpcConnection ? await remoteLocatorFromConfig(context, validateDepsOnRegister, validators) : void 0;
1676
- const locator = assertEx7(newLocator, () => "Root locator could not be created from config. No supported configuration found.");
1572
+ const locator = assertEx5(newLocator, () => "Root locator could not be created from config. No supported configuration found.");
1677
1573
  locator.freeze();
1678
1574
  return locator;
1679
1575
  }
@@ -1702,16 +1598,6 @@ import {
1702
1598
  SimpleXyoGatewayRunner as SimpleXyoGatewayRunner3,
1703
1599
  SimpleXyoSigner as SimpleXyoSigner2
1704
1600
  } from "@xyo-network/xl1-protocol-sdk";
1705
- var registerGatewayRunnerWithLocatorIfProvided = (locator, params) => {
1706
- const account = params?.signerAccount;
1707
- if (account) {
1708
- locator.registerMany([
1709
- SimpleXyoSigner2.factory(SimpleXyoSigner2.dependencies, { account }),
1710
- SimpleXyoGatewayRunner3.factory(SimpleXyoGatewayRunner3.dependencies, {})
1711
- ]);
1712
- }
1713
- return locator;
1714
- };
1715
1601
  var registerGatewayWithLocator = (locator, account) => {
1716
1602
  locator.registerMany([
1717
1603
  SimpleXyoConnectionRunner.factory(SimpleXyoConnectionRunner.dependencies, {}),
@@ -1733,8 +1619,6 @@ var registerSimpleStakeViewerWithLocator = (locator, positions) => {
1733
1619
  return locator;
1734
1620
  };
1735
1621
  export {
1736
- NodeXyoRunner,
1737
- NodeXyoViewer,
1738
1622
  SimpleDeadLetterQueueRunner,
1739
1623
  SimpleDeadLetterQueueViewer,
1740
1624
  SimpleNetworkStakeViewer,
@@ -1751,13 +1635,11 @@ export {
1751
1635
  baseConfigFactoryLocator,
1752
1636
  basicRemoteRunnerLocator,
1753
1637
  basicRemoteViewerLocator,
1638
+ buildSimpleXyoSigner,
1754
1639
  buildSimpleXyoSignerV2,
1755
- commonLocatorFromConfig,
1756
- commonProvidersFromConfig,
1757
1640
  createRestDataLakeRunner,
1758
1641
  createRestDataLakeViewer,
1759
1642
  locatorFromAdaptedConfig,
1760
- registerGatewayRunnerWithLocatorIfProvided,
1761
1643
  registerGatewayWithLocator,
1762
1644
  registerSimpleStakeViewerWithLocator,
1763
1645
  remoteLocatorFromConfig,