@xyo-network/xl1-providers 4.0.6 → 4.0.8

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