@xyo-network/xl1-cli-lib 1.16.26 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/node/commands/producer/runProducer.d.ts +1 -1
  2. package/dist/node/commands/producer/runProducer.d.ts.map +1 -1
  3. package/dist/node/commands/validator/runValidator.d.ts.map +1 -1
  4. package/dist/node/index.mjs +345 -509
  5. package/dist/node/index.mjs.map +1 -1
  6. package/dist/node/orchestration/actor/implementation/BalanceActor.d.ts +2 -2
  7. package/dist/node/orchestration/actor/implementation/BalanceActor.d.ts.map +1 -1
  8. package/dist/node/orchestration/actor/implementation/ProducerActor.d.ts +2 -2
  9. package/dist/node/orchestration/actor/implementation/ProducerActor.d.ts.map +1 -1
  10. package/dist/node/orchestration/actor/implementation/ValidatorActor.d.ts +2 -2
  11. package/dist/node/orchestration/actor/implementation/ValidatorActor.d.ts.map +1 -1
  12. package/dist/node/orchestration/actor/implementation/index.d.ts +0 -1
  13. package/dist/node/orchestration/actor/implementation/index.d.ts.map +1 -1
  14. package/dist/node/orchestration/initServices.d.ts.map +1 -1
  15. package/dist/node/orchestration/services/implementation/accountBalance.d.ts +0 -2
  16. package/dist/node/orchestration/services/implementation/accountBalance.d.ts.map +1 -1
  17. package/dist/node/orchestration/services/implementation/blockViewer.d.ts +7 -0
  18. package/dist/node/orchestration/services/implementation/blockViewer.d.ts.map +1 -0
  19. package/dist/node/orchestration/services/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts +3 -3
  20. package/dist/node/orchestration/services/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts.map +1 -1
  21. package/dist/node/orchestration/services/implementation/head/head.d.ts +1 -1
  22. package/dist/node/orchestration/services/implementation/head/head.d.ts.map +1 -1
  23. package/dist/node/orchestration/services/implementation/index.d.ts +1 -0
  24. package/dist/node/orchestration/services/implementation/index.d.ts.map +1 -1
  25. package/dist/node/orchestration/services/implementation/pendingTransactions.d.ts +7 -3
  26. package/dist/node/orchestration/services/implementation/pendingTransactions.d.ts.map +1 -1
  27. package/dist/node/xl1.mjs +295 -704
  28. package/dist/node/xl1.mjs.map +1 -1
  29. package/package.json +18 -16
  30. package/src/commands/producer/runProducer.ts +7 -5
  31. package/src/commands/validator/runValidator.ts +2 -3
  32. package/src/orchestration/actor/implementation/BalanceActor.ts +4 -7
  33. package/src/orchestration/actor/implementation/ProducerActor.ts +6 -6
  34. package/src/orchestration/actor/implementation/ValidatorActor.ts +4 -4
  35. package/src/orchestration/actor/implementation/index.ts +0 -1
  36. package/src/orchestration/initServices.ts +30 -101
  37. package/src/orchestration/services/implementation/accountBalance.ts +10 -17
  38. package/src/orchestration/services/implementation/blockViewer.ts +29 -0
  39. package/src/orchestration/services/implementation/head/createBootstrapHead.ts +1 -1
  40. package/src/orchestration/services/implementation/head/createForkedHead/config/getBridgeSourceDetails.ts +5 -5
  41. package/src/orchestration/services/implementation/head/createForkedHead/getBridgeDestinationObservation.ts +1 -1
  42. package/src/orchestration/services/implementation/head/createForkedHead/getBridgeIntent.ts +1 -1
  43. package/src/orchestration/services/implementation/head/createForkedHead/getBridgeSourceObservation.ts +1 -1
  44. package/src/orchestration/services/implementation/head/createForkedHead/getFirstBlockForNewChain.ts +1 -1
  45. package/src/orchestration/services/implementation/head/getForkFromBlock.ts +1 -1
  46. package/src/orchestration/services/implementation/head/head.ts +1 -2
  47. package/src/orchestration/services/implementation/index.ts +1 -0
  48. package/src/orchestration/services/implementation/pendingTransactions.ts +28 -9
  49. package/src/orchestration/services/implementation/time.ts +2 -2
  50. package/dist/node/orchestration/actor/implementation/ChainHeadUpdateActor.d.ts +0 -20
  51. package/dist/node/orchestration/actor/implementation/ChainHeadUpdateActor.d.ts.map +0 -1
  52. package/src/orchestration/actor/implementation/ChainHeadUpdateActor.ts +0 -72
@@ -3,7 +3,6 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
3
3
 
4
4
  // src/orchestration/actor/implementation/BalanceActor.ts
5
5
  import { assertEx } from "@xylabs/sdk-js";
6
- import { PayloadBuilder } from "@xyo-network/payload-builder";
7
6
  import { Mutex } from "async-mutex";
8
7
 
9
8
  // src/orchestration/actor/model/Actor.ts
@@ -198,17 +197,14 @@ var BalanceActor = class _BalanceActor extends Actor {
198
197
  get balanceService() {
199
198
  return assertEx(this.params.balance, () => "balanceService not set");
200
199
  }
201
- get chainIterator() {
202
- return assertEx(this.params.chainIterator, () => "chainIterator not set");
200
+ get blockViewer() {
201
+ return assertEx(this.params.blockViewer, () => "blockViewer not set");
203
202
  }
204
203
  static create(params) {
205
204
  return new _BalanceActor(params);
206
205
  }
207
206
  async start() {
208
207
  await super.start();
209
- this.chainIterator.on("headUpdate", async () => {
210
- await this.updateBalance();
211
- });
212
208
  this.registerTimer(
213
209
  "BalanceTimer",
214
210
  async () => {
@@ -222,84 +218,21 @@ var BalanceActor = class _BalanceActor extends Actor {
222
218
  async updateBalance() {
223
219
  if (this._updateMutex.isLocked()) return;
224
220
  await this._updateMutex.runExclusive(async () => {
225
- const head = await PayloadBuilder.hash(await this.chainIterator.head());
221
+ const head = await this.blockViewer.currentBlockHash();
226
222
  await this.balanceService.accountsBalances([], head);
227
223
  });
228
224
  }
229
225
  };
230
226
 
231
- // src/orchestration/actor/implementation/ChainHeadUpdateActor.ts
232
- import { assertEx as assertEx2, toHex } from "@xylabs/sdk-js";
233
- import { findMostRecentBlock, sortBlocks } from "@xyo-network/chain-protocol";
234
- import { isBlockBoundWitness } from "@xyo-network/xl1-protocol";
235
- import { Mutex as Mutex2 } from "async-mutex";
236
- var ChainHeadUpdateActor = class _ChainHeadUpdateActor extends Actor {
237
- static {
238
- __name(this, "ChainHeadUpdateActor");
239
- }
240
- _pollForNewHeadMutex = new Mutex2();
241
- constructor(params) {
242
- super("ChainHeadUpdate", "ChainHeadUpdate", params);
243
- }
244
- get chainFinalizedArchivist() {
245
- return assertEx2(this.params.chainArchivist, () => "ChainArchivist not set");
246
- }
247
- get chainIterator() {
248
- return assertEx2(this.params.chainIterator, () => "chainIterator not set");
249
- }
250
- static create(params) {
251
- return new _ChainHeadUpdateActor(params);
252
- }
253
- async start() {
254
- await super.start();
255
- this.chainFinalizedArchivist.on("inserted", async (data) => {
256
- await this.checkInsertedForNewHead(data);
257
- });
258
- this.registerTimer(
259
- "ChainHeadUpdateTimer",
260
- async () => await this.pollForNewHead(),
261
- 0,
262
- 2500
263
- /* 250 */
264
- );
265
- }
266
- async checkInsertedForNewHead(data) {
267
- const candidateBlock = sortBlocks(data.payloads.filter(isBlockBoundWitness)).at(-1);
268
- await this.updateHeadIfNewer(candidateBlock);
269
- }
270
- async pollForNewHead() {
271
- if (this._pollForNewHeadMutex.isLocked()) {
272
- this.logger?.log("Skipping poll for new head, previous poll still in progress");
273
- return;
274
- }
275
- await this._pollForNewHeadMutex.runExclusive(async () => {
276
- const candidateBlock = await findMostRecentBlock(this.chainFinalizedArchivist);
277
- await this.updateHeadIfNewer(candidateBlock);
278
- });
279
- }
280
- async updateHeadIfNewer(candidateBlock) {
281
- if (!candidateBlock) return;
282
- const currentHead = await this.chainIterator.head();
283
- const candidateBlockNumber = candidateBlock.block;
284
- const candidateBlockNumberDisplay = `0x${toHex(candidateBlockNumber)}`;
285
- const currentBlockNumber = currentHead?.block ?? -1;
286
- if (candidateBlockNumber > currentBlockNumber) {
287
- this.logger?.log("Found more recent head:", candidateBlockNumber, candidateBlockNumberDisplay);
288
- await this.chainIterator.updateHead(candidateBlock);
289
- this.logger?.log("Updated head:", candidateBlockNumber, candidateBlockNumberDisplay);
290
- }
291
- }
292
- };
293
-
294
227
  // src/orchestration/actor/implementation/ProducerActor.ts
295
- import { assertEx as assertEx3, isDefined, isUndefined, toHex as toHex2 } from "@xylabs/sdk-js";
228
+ import { assertEx as assertEx2, isDefined, isUndefined, toHex } from "@xylabs/sdk-js";
296
229
  import { createDeclarationIntent } from "@xyo-network/chain-protocol";
297
230
  import { BaseBlockProducerService } from "@xyo-network/chain-services";
298
- import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
231
+ import { PayloadBuilder } from "@xyo-network/payload-builder";
299
232
  import { PayloadBundleSchema } from "@xyo-network/payload-model";
300
233
  import { asXL1BlockNumber } from "@xyo-network/xl1-protocol";
301
234
  import { buildTransaction, flattenHydratedBlock, flattenHydratedTransaction } from "@xyo-network/xl1-protocol-sdk";
302
- import { Mutex as Mutex3 } from "async-mutex";
235
+ import { Mutex as Mutex2 } from "async-mutex";
303
236
  var SHOULD_REGISTER_REDECLARATION_INTENT_TIMER = true;
304
237
  var TEN_MINUTES = 10 * 60 * 1e3;
305
238
  var ProducerActor = class _ProducerActor extends Actor {
@@ -313,7 +246,7 @@ var ProducerActor = class _ProducerActor extends Actor {
313
246
  _producerActorBlockProductionChecks;
314
247
  _producerActorBlocksProduced;
315
248
  _producerActorBlocksPublished;
316
- _produceBlockMutex = new Mutex3();
249
+ _produceBlockMutex = new Mutex2();
317
250
  constructor(params) {
318
251
  super(params.producer.address, "Producer", params);
319
252
  this._metricAttributes = {
@@ -333,28 +266,28 @@ var ProducerActor = class _ProducerActor extends Actor {
333
266
  });
334
267
  }
335
268
  get account() {
336
- return assertEx3(this.params.account, () => "account not set");
269
+ return assertEx2(this.params.account, () => "account not set");
337
270
  }
338
271
  get balanceService() {
339
- return assertEx3(this.params.balance, () => "balanceService not set");
272
+ return assertEx2(this.params.balance, () => "balanceService not set");
340
273
  }
341
- get chainIterator() {
342
- return assertEx3(this.params.chainIterator, () => "chainIterator not set");
274
+ get blockViewer() {
275
+ return assertEx2(this.params.blockViewer, () => "blockViewer not set");
343
276
  }
344
277
  get chainStakeViewer() {
345
- return assertEx3(this.params.chainStakeViewer, () => "chainStakeViewer not set");
278
+ return assertEx2(this.params.chainStakeViewer, () => "chainStakeViewer not set");
346
279
  }
347
280
  get chainSubmissionsArchivistWrite() {
348
- return assertEx3(this.params.chainSubmissionsArchivistWrite, () => "chainSubmissionsArchivistWrite not set");
281
+ return assertEx2(this.params.chainSubmissionsArchivistWrite, () => "chainSubmissionsArchivistWrite not set");
349
282
  }
350
283
  get pendingBundledTransactionsArchivistWrite() {
351
- return assertEx3(this.params.pendingBundledTransactionsArchivistWrite, () => "pendingBundledTransactionsArchivistWrite not set");
284
+ return assertEx2(this.params.pendingBundledTransactionsArchivistWrite, () => "pendingBundledTransactionsArchivistWrite not set");
352
285
  }
353
286
  get producer() {
354
- return assertEx3(this.params.producer, () => "producer not set");
287
+ return assertEx2(this.params.producer, () => "producer not set");
355
288
  }
356
289
  get stakeIntentService() {
357
- return assertEx3(this.params.stakeIntent, () => "stakeIntentService not set");
290
+ return assertEx2(this.params.stakeIntent, () => "stakeIntentService not set");
358
291
  }
359
292
  static create(params) {
360
293
  return new _ProducerActor(params);
@@ -395,12 +328,12 @@ var ProducerActor = class _ProducerActor extends Actor {
395
328
  }
396
329
  await this._produceBlockMutex.runExclusive(async () => {
397
330
  const headStart = Date.now();
398
- const head = await this.chainIterator.head();
331
+ const head = (await this.blockViewer.currentBlock())[0];
399
332
  const headDuration = Date.now() - headStart;
400
- if (headDuration > 500) this.logger?.warn(`[Slow] Fetched head in ${headDuration}ms: 0x${toHex2(head._hash)}`);
333
+ if (headDuration > 500) this.logger?.warn(`[Slow] Fetched head in ${headDuration}ms: 0x${toHex(head._hash)}`);
401
334
  const headHash = head._hash;
402
335
  if (this._lastProducedBlock && this._lastProducedBlock[0].previous === headHash) {
403
- this.logger?.log("Block already produced:", `0x${toHex2(this._lastProducedBlock[0].block)}`, this._lastProducedBlock[0].block);
336
+ this.logger?.log("Block already produced:", `0x${toHex(this._lastProducedBlock[0].block)}`, this._lastProducedBlock[0].block);
404
337
  } else {
405
338
  this._producerActorBlockProductionAttempts?.add(1, this._metricAttributes);
406
339
  const nextStart = Date.now();
@@ -408,7 +341,7 @@ var ProducerActor = class _ProducerActor extends Actor {
408
341
  const nextDuration = Date.now() - nextStart;
409
342
  if (nextDuration > 1e3) this.logger?.warn(`[Slow] Generated next block in ${nextDuration}ms, block: ${nextBlock?.[0]._hash}`);
410
343
  if (nextBlock) {
411
- const displayBlockNumber = `0x${toHex2(nextBlock[0].block)}`;
344
+ const displayBlockNumber = `0x${toHex(nextBlock[0].block)}`;
412
345
  this.logger?.log("Produced block:", displayBlockNumber);
413
346
  this._producerActorBlocksProduced?.add(1, this._metricAttributes);
414
347
  await this.chainSubmissionsArchivistWrite.insert(flattenHydratedBlock(nextBlock));
@@ -423,7 +356,7 @@ var ProducerActor = class _ProducerActor extends Actor {
423
356
  async redeclareIntent() {
424
357
  await this.spanAsync("redeclareIntent", async () => {
425
358
  if (this.params.config.producer.disableIntentRedeclaration) return;
426
- const head = await this.chainIterator.head();
359
+ const head = (await this.blockViewer.currentBlock())[0];
427
360
  if (isUndefined(head)) return;
428
361
  const currentBlock = head.block;
429
362
  const blocksUntilExpiration = await this.calculateBlocksUntilProducerDeclarationExpiration(currentBlock);
@@ -451,12 +384,12 @@ var ProducerActor = class _ProducerActor extends Actor {
451
384
  }
452
385
  async submitRedeclarationIntent(currentBlock, redeclarationIntent) {
453
386
  this.logger?.log("Submitting redeclaration intent for producer:", this.account.address);
454
- const tx = await buildTransaction(this.chainIterator.chainId, [
387
+ const tx = await buildTransaction(await this.chainStakeViewer.chainId(), [
455
388
  redeclarationIntent
456
389
  ], [], this.account, currentBlock, asXL1BlockNumber(currentBlock + 1e3, true));
457
390
  const payloads = flattenHydratedTransaction(tx);
458
391
  const root = tx[0]._hash;
459
- const payloadBundle = new PayloadBuilder2({
392
+ const payloadBundle = new PayloadBuilder({
460
393
  schema: PayloadBundleSchema
461
394
  }).fields({
462
395
  payloads,
@@ -494,8 +427,8 @@ var ProducerActor = class _ProducerActor extends Actor {
494
427
  };
495
428
 
496
429
  // src/orchestration/actor/implementation/ValidatorActor.ts
497
- import { assertEx as assertEx4, isDefined as isDefined2, isUndefined as isUndefined2, toHex as toHex3 } from "@xylabs/sdk-js";
498
- import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/payload-builder";
430
+ import { assertEx as assertEx3, isDefined as isDefined2, isUndefined as isUndefined2, toHex as toHex2 } from "@xylabs/sdk-js";
431
+ import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
499
432
  var ValidatorActor = class _ValidatorActor extends Actor {
500
433
  static {
501
434
  __name(this, "ValidatorActor");
@@ -506,25 +439,25 @@ var ValidatorActor = class _ValidatorActor extends Actor {
506
439
  super("Validator", "Validator", params);
507
440
  }
508
441
  get account() {
509
- return assertEx4(this.params.account, () => "account not set");
442
+ return assertEx3(this.params.account, () => "account not set");
510
443
  }
511
444
  get balanceService() {
512
- return assertEx4(this.params.balance, () => "balanceService not set");
445
+ return assertEx3(this.params.balance, () => "balanceService not set");
513
446
  }
514
- get chainIterator() {
515
- return assertEx4(this.params.chainIterator, () => "chainIterator not set");
447
+ get blockViewer() {
448
+ return assertEx3(this.params.blockViewer, () => "blockViewer not set");
516
449
  }
517
450
  get chainStakeViewer() {
518
- return assertEx4(this.params.chainStakeViewer, () => "chainStakeViewer not set");
451
+ return assertEx3(this.params.chainStakeViewer, () => "chainStakeViewer not set");
519
452
  }
520
453
  get chainSubmissionsArchivistWrite() {
521
- return assertEx4(this.params.chainSubmissionsArchivistWrite, () => "chainSubmissionsArchivistWrite not set");
454
+ return assertEx3(this.params.chainSubmissionsArchivistWrite, () => "chainSubmissionsArchivistWrite not set");
522
455
  }
523
456
  get pendingBundledTransactionsArchivistWrite() {
524
- return assertEx4(this.params.pendingBundledTransactionsArchivistWrite, () => "pendingBundledTransactionsArchivistWrite not set");
457
+ return assertEx3(this.params.pendingBundledTransactionsArchivistWrite, () => "pendingBundledTransactionsArchivistWrite not set");
525
458
  }
526
459
  get stakeIntentService() {
527
- return assertEx4(this.params.stakeIntent, () => "stakeIntentService not set");
460
+ return assertEx3(this.params.stakeIntent, () => "stakeIntentService not set");
528
461
  }
529
462
  // protected get validator() {
530
463
  // return assertEx(this.params.validator, () => 'validator not set')
@@ -538,18 +471,18 @@ var ValidatorActor = class _ValidatorActor extends Actor {
538
471
  "BlockProductionTimer",
539
472
  async () => {
540
473
  await this.spanAsync("produceBlock", async () => {
541
- const block = await this.chainIterator.head();
474
+ const block = (await this.blockViewer.currentBlock())[0];
542
475
  if (isUndefined2(block)) return;
543
- const hash = await PayloadBuilder3.hash(block);
476
+ const hash = await PayloadBuilder2.hash(block);
544
477
  if (isDefined2(this._lastValidatedBlock) && this._lastValidatedBlockHash === hash) {
545
- this.logger?.log("Block already validated:", `0x${toHex3(block.block)}`);
478
+ this.logger?.log("Block already validated:", `0x${toHex2(block.block)}`);
546
479
  } else {
547
- this.logger?.log("Validating block:", `0x${toHex3(block.block)}`);
480
+ this.logger?.log("Validating block:", `0x${toHex2(block.block)}`);
548
481
  const valid = await this.validateBlock(block);
549
482
  if (valid) {
550
- this.logger?.log("Validated block:", `0x${toHex3(block.block)}`);
483
+ this.logger?.log("Validated block:", `0x${toHex2(block.block)}`);
551
484
  } else {
552
- this.logger?.log("Invalid block:", `0x${toHex3(block.block)}`);
485
+ this.logger?.log("Invalid block:", `0x${toHex2(block.block)}`);
553
486
  await this.slashInvalidBlock(block);
554
487
  }
555
488
  }
@@ -567,7 +500,7 @@ var ValidatorActor = class _ValidatorActor extends Actor {
567
500
  async validateBlock(block) {
568
501
  const valid = await Promise.resolve(true);
569
502
  this._lastValidatedBlock = block;
570
- this._lastValidatedBlockHash = await PayloadBuilder3.hash(block);
503
+ this._lastValidatedBlockHash = await PayloadBuilder2.hash(block);
571
504
  return valid;
572
505
  }
573
506
  };
@@ -629,25 +562,12 @@ var initHealthEndpoints = /* @__PURE__ */ __name((params) => {
629
562
  }, "initHealthEndpoints");
630
563
 
631
564
  // src/orchestration/initServices.ts
632
- import { asAddress as asAddress2, assertEx as assertEx19, isDefined as isDefined14 } from "@xylabs/sdk-js";
633
- import { initChainIterator, initElectionService, initProducerAccount, initStakeIntentService } from "@xyo-network/chain-orchestration";
634
- import { blockViewerFromChainIteratorAndArchivist } from "@xyo-network/chain-services";
565
+ import { asAddress as asAddress2, assertEx as assertEx17, isDefined as isDefined17 } from "@xylabs/sdk-js";
566
+ import { initElectionService, initProducerAccount, initStakeIntentService } from "@xyo-network/chain-orchestration";
635
567
  import { initTelemetry } from "@xyo-network/chain-telemetry";
636
- import { startupSpanAsync as startupSpanAsync8 } from "@xyo-network/chain-utils";
568
+ import { startupSpanAsync as startupSpanAsync7 } from "@xyo-network/chain-utils";
637
569
  import { validateHydratedBlockState } from "@xyo-network/chain-validation";
638
- import { StepSizes } from "@xyo-network/xl1-protocol";
639
- import { readPayloadMapFromStore } from "@xyo-network/xl1-protocol-sdk";
640
570
  import { CompletedStepRewardAddressValidatorFactory, DerivedReceiveAddressValidatorFactory, SelfSignerValidator, TransactionTransfersValidatorFactory } from "@xyo-network/xl1-validation";
641
- import { Semaphore as Semaphore2 } from "async-mutex";
642
-
643
- // src/orchestration/archivists/ChainFinalized/archivist.ts
644
- import { initArchivistSync } from "@xyo-network/chain-orchestration";
645
- import { startupSpanAsync } from "@xyo-network/chain-utils";
646
- import { timeBudget } from "@xyo-network/xl1-protocol-sdk";
647
- import { Mutex as Mutex6 } from "async-mutex";
648
-
649
- // src/orchestration/archivists/ChainFinalized/local.ts
650
- import { Mutex as Mutex4 } from "async-mutex";
651
571
 
652
572
  // src/orchestration/archivists/lib/localPersistentArchivist.ts
653
573
  import { rm } from "fs/promises";
@@ -674,120 +594,62 @@ var getLocalPersistentArchivist = /* @__PURE__ */ __name((name, dbName, storeNam
674
594
  }
675
595
  }, "getLocalPersistentArchivist");
676
596
 
677
- // src/orchestration/archivists/ChainFinalized/local.ts
678
- var mutex = new Mutex4();
679
- var singleton;
680
- var initLocalChainFinalizedArchivist = /* @__PURE__ */ __name(async ({ config: config2 }) => {
681
- return await mutex.runExclusive(async () => {
682
- if (singleton) return singleton;
683
- const { root } = config2.storage;
684
- singleton = await getLocalPersistentArchivist("local-finalized-chain", "chain", "finalized", root);
685
- return singleton;
686
- });
687
- }, "initLocalChainFinalizedArchivist");
688
-
689
- // src/orchestration/archivists/ChainFinalized/remote.ts
597
+ // src/orchestration/archivists/ChainSubmissions/archivist.ts
690
598
  import { assertEx as assertEx5 } from "@xylabs/sdk-js";
599
+ import { startupSpanAsync } from "@xyo-network/chain-utils";
600
+ import { timeBudget } from "@xyo-network/xl1-protocol-sdk";
601
+ import { Mutex as Mutex4 } from "async-mutex";
602
+
603
+ // src/orchestration/archivists/ChainSubmissions/remote.ts
604
+ import { assertEx as assertEx4 } from "@xylabs/sdk-js";
691
605
  import { initBridge, initBridgedArchivistModule } from "@xyo-network/chain-orchestration";
692
606
  import { getUrl } from "@xyo-network/xl1-protocol-sdk";
693
- import { Mutex as Mutex5 } from "async-mutex";
694
- var mutex2 = new Mutex5();
695
- var singleton2;
696
- var initRemoteChainFinalizedArchivist = /* @__PURE__ */ __name(async ({ config: config2 }) => {
697
- return await mutex2.runExclusive(async () => {
698
- if (singleton2) return singleton2;
607
+ import { Mutex as Mutex3 } from "async-mutex";
608
+ var mutex = new Mutex3();
609
+ var singleton;
610
+ var initRemoteChainSubmissionsArchivist = /* @__PURE__ */ __name(async ({ config: config2 }) => {
611
+ return await mutex.runExclusive(async () => {
612
+ if (singleton) return singleton;
699
613
  const { host, port } = config2.mempool.enabled ? config2.mempool : config2.api;
700
614
  const nodeUrl = getUrl(host, port);
701
615
  const bridge = await initBridge(nodeUrl);
702
- singleton2 = await initBridgedArchivistModule({
703
- bridge,
704
- moduleName: "XYOChain:Chain:Finalized"
705
- });
706
- return assertEx5(singleton2, () => "RemoteChainFinalizedArchivist failed to initialize");
707
- });
708
- }, "initRemoteChainFinalizedArchivist");
709
-
710
- // src/orchestration/archivists/ChainFinalized/archivist.ts
711
- var mutex3 = new Mutex6();
712
- var singleton3;
713
- async function initChainFinalizedArchivist({ config: config2, logger, traceProvider }) {
714
- return await mutex3.runExclusive(async () => {
715
- if (singleton3) return singleton3;
716
- return await timeBudget("initChainFinalizedArchivist", logger, async () => {
717
- const [remote, local] = await Promise.all([
718
- startupSpanAsync("ChainFinalizedArchivist:initRemote", () => initRemoteChainFinalizedArchivist({
719
- config: config2,
720
- logger
721
- })),
722
- startupSpanAsync("ChainFinalizedArchivist:initLocal", () => initLocalChainFinalizedArchivist({
723
- config: config2,
724
- logger
725
- }))
726
- ]);
727
- await startupSpanAsync("ChainFinalizedArchivist:initArchivistSync", () => initArchivistSync("ChainFinalizedArchivist", remote, local, 200, Number.MAX_SAFE_INTEGER, traceProvider));
728
- singleton3 = local;
729
- return singleton3;
730
- }, 2e3, true);
731
- });
732
- }
733
- __name(initChainFinalizedArchivist, "initChainFinalizedArchivist");
734
-
735
- // src/orchestration/archivists/ChainSubmissions/archivist.ts
736
- import { assertEx as assertEx7 } from "@xylabs/sdk-js";
737
- import { startupSpanAsync as startupSpanAsync2 } from "@xyo-network/chain-utils";
738
- import { timeBudget as timeBudget2 } from "@xyo-network/xl1-protocol-sdk";
739
- import { Mutex as Mutex8 } from "async-mutex";
740
-
741
- // src/orchestration/archivists/ChainSubmissions/remote.ts
742
- import { assertEx as assertEx6 } from "@xylabs/sdk-js";
743
- import { initBridge as initBridge2, initBridgedArchivistModule as initBridgedArchivistModule2 } from "@xyo-network/chain-orchestration";
744
- import { getUrl as getUrl2 } from "@xyo-network/xl1-protocol-sdk";
745
- import { Mutex as Mutex7 } from "async-mutex";
746
- var mutex4 = new Mutex7();
747
- var singleton4;
748
- var initRemoteChainSubmissionsArchivist = /* @__PURE__ */ __name(async ({ config: config2 }) => {
749
- return await mutex4.runExclusive(async () => {
750
- if (singleton4) return singleton4;
751
- const { host, port } = config2.mempool.enabled ? config2.mempool : config2.api;
752
- const nodeUrl = getUrl2(host, port);
753
- const bridge = await initBridge2(nodeUrl);
754
- singleton4 = await initBridgedArchivistModule2({
616
+ singleton = await initBridgedArchivistModule({
755
617
  bridge,
756
618
  moduleName: "XYOChain:Chain:Submissions"
757
619
  });
758
- return assertEx6(singleton4, () => new Error("Failed to initialize RemoteChainSubmissionsArchivist"));
620
+ return assertEx4(singleton, () => new Error("Failed to initialize RemoteChainSubmissionsArchivist"));
759
621
  });
760
622
  }, "initRemoteChainSubmissionsArchivist");
761
623
 
762
624
  // src/orchestration/archivists/ChainSubmissions/archivist.ts
763
- var mutex5 = new Mutex8();
764
- var singleton5;
625
+ var mutex2 = new Mutex4();
626
+ var singleton2;
765
627
  var initChainSubmissionsArchivist = /* @__PURE__ */ __name(async (params) => {
766
- return await mutex5.runExclusive(async () => {
767
- if (singleton5) return singleton5;
768
- return await timeBudget2("initChainSubmissionsArchivist", params.logger, async () => {
769
- const remote = await startupSpanAsync2("ChainSubmissionsArchivist:initRemote", () => initRemoteChainSubmissionsArchivist(params));
770
- singleton5 = remote;
771
- return assertEx7(singleton5, () => new Error("Failed to initialize ChainSubmissionsArchivist"));
628
+ return await mutex2.runExclusive(async () => {
629
+ if (singleton2) return singleton2;
630
+ return await timeBudget("initChainSubmissionsArchivist", params.logger, async () => {
631
+ const remote = await startupSpanAsync("ChainSubmissionsArchivist:initRemote", () => initRemoteChainSubmissionsArchivist(params));
632
+ singleton2 = remote;
633
+ return assertEx5(singleton2, () => new Error("Failed to initialize ChainSubmissionsArchivist"));
772
634
  }, 2e3, true);
773
635
  });
774
636
  }, "initChainSubmissionsArchivist");
775
637
 
776
638
  // src/orchestration/archivists/PendingTransactions/archivist.ts
777
- import { initArchivistSync as initArchivistSync2 } from "@xyo-network/chain-orchestration";
778
- import { startupSpanAsync as startupSpanAsync3 } from "@xyo-network/chain-utils";
779
- import { timeBudget as timeBudget3 } from "@xyo-network/xl1-protocol-sdk";
780
- import { Mutex as Mutex11 } from "async-mutex";
639
+ import { initArchivistSync } from "@xyo-network/chain-orchestration";
640
+ import { startupSpanAsync as startupSpanAsync2 } from "@xyo-network/chain-utils";
641
+ import { timeBudget as timeBudget2 } from "@xyo-network/xl1-protocol-sdk";
642
+ import { Mutex as Mutex7 } from "async-mutex";
781
643
 
782
644
  // src/orchestration/archivists/PendingTransactions/local.ts
783
645
  import { MemoryArchivist, MemoryArchivistConfigSchema } from "@xyo-network/archivist-memory";
784
- import { Mutex as Mutex9 } from "async-mutex";
785
- var mutex6 = new Mutex9();
786
- var singleton6;
646
+ import { Mutex as Mutex5 } from "async-mutex";
647
+ var mutex3 = new Mutex5();
648
+ var singleton3;
787
649
  var initLocalPendingTransactionsArchivist = /* @__PURE__ */ __name(async () => {
788
- return await mutex6.runExclusive(async () => {
789
- if (singleton6) return singleton6;
790
- singleton6 = await MemoryArchivist.create({
650
+ return await mutex3.runExclusive(async () => {
651
+ if (singleton3) return singleton3;
652
+ singleton3 = await MemoryArchivist.create({
791
653
  account: "random",
792
654
  config: {
793
655
  schema: MemoryArchivistConfigSchema,
@@ -795,43 +657,43 @@ var initLocalPendingTransactionsArchivist = /* @__PURE__ */ __name(async () => {
795
657
  name: "localPendingTransactions"
796
658
  }
797
659
  });
798
- return singleton6;
660
+ return singleton3;
799
661
  });
800
662
  }, "initLocalPendingTransactionsArchivist");
801
663
 
802
664
  // src/orchestration/archivists/PendingTransactions/remote.ts
803
- import { assertEx as assertEx8 } from "@xylabs/sdk-js";
804
- import { initBridge as initBridge3, initBridgedArchivistModule as initBridgedArchivistModule3 } from "@xyo-network/chain-orchestration";
805
- import { getUrl as getUrl3 } from "@xyo-network/xl1-protocol-sdk";
806
- import { Mutex as Mutex10 } from "async-mutex";
807
- var mutex7 = new Mutex10();
808
- var singleton7;
665
+ import { assertEx as assertEx6 } from "@xylabs/sdk-js";
666
+ import { initBridge as initBridge2, initBridgedArchivistModule as initBridgedArchivistModule2 } from "@xyo-network/chain-orchestration";
667
+ import { getUrl as getUrl2 } from "@xyo-network/xl1-protocol-sdk";
668
+ import { Mutex as Mutex6 } from "async-mutex";
669
+ var mutex4 = new Mutex6();
670
+ var singleton4;
809
671
  var initRemotePendingTransactionsArchivist = /* @__PURE__ */ __name(async ({ config: config2 }) => {
810
- return await mutex7.runExclusive(async () => {
811
- if (singleton7) return singleton7;
672
+ return await mutex4.runExclusive(async () => {
673
+ if (singleton4) return singleton4;
812
674
  const { host, port } = config2.mempool.enabled ? config2.mempool : config2.api;
813
- const nodeUrl = getUrl3(host, port);
814
- const bridge = await initBridge3(nodeUrl);
815
- singleton7 = await initBridgedArchivistModule3({
675
+ const nodeUrl = getUrl2(host, port);
676
+ const bridge = await initBridge2(nodeUrl);
677
+ singleton4 = await initBridgedArchivistModule2({
816
678
  bridge,
817
679
  moduleName: "XYOChain:Pending:PendingTransactions"
818
680
  });
819
- return assertEx8(singleton7, () => "RemotePendingBundledTransactionsArchivist is undefined");
681
+ return assertEx6(singleton4, () => "RemotePendingBundledTransactionsArchivist is undefined");
820
682
  });
821
683
  }, "initRemotePendingTransactionsArchivist");
822
684
 
823
685
  // src/orchestration/archivists/PendingTransactions/archivist.ts
824
- var mutex8 = new Mutex11();
825
- var singleton8;
686
+ var mutex5 = new Mutex7();
687
+ var singleton5;
826
688
  var initPendingBundledTransactionsArchivist = /* @__PURE__ */ __name(async ({ config: config2, logger }) => {
827
- return await mutex8.runExclusive(async () => {
828
- if (singleton8) return singleton8;
829
- return await timeBudget3("initPendingBundledTransactionsArchivist", logger, async () => {
830
- const remote = await startupSpanAsync3("PendingBundledTransactionsArchivist:initRemote", () => initRemotePendingTransactionsArchivist({
689
+ return await mutex5.runExclusive(async () => {
690
+ if (singleton5) return singleton5;
691
+ return await timeBudget2("initPendingBundledTransactionsArchivist", logger, async () => {
692
+ const remote = await startupSpanAsync2("PendingBundledTransactionsArchivist:initRemote", () => initRemotePendingTransactionsArchivist({
831
693
  config: config2,
832
694
  logger
833
695
  }));
834
- const local = await startupSpanAsync3("PendingBundledTransactionsArchivist:initLocal", () => initLocalPendingTransactionsArchivist({
696
+ const local = await startupSpanAsync2("PendingBundledTransactionsArchivist:initLocal", () => initLocalPendingTransactionsArchivist({
835
697
  config: config2,
836
698
  logger
837
699
  }));
@@ -840,30 +702,30 @@ var initPendingBundledTransactionsArchivist = /* @__PURE__ */ __name(async ({ co
840
702
  order: "desc"
841
703
  });
842
704
  await local.insert(start2);
843
- await startupSpanAsync3("PendingBundledTransactionsArchivist:initArchivistSync", () => initArchivistSync2("PendingBundledTransactionsArchivist", remote, local));
844
- singleton8 = [
705
+ await startupSpanAsync2("PendingBundledTransactionsArchivist:initArchivistSync", () => initArchivistSync("PendingBundledTransactionsArchivist", remote, local));
706
+ singleton5 = [
845
707
  local,
846
708
  remote
847
709
  ];
848
- return singleton8;
710
+ return singleton5;
849
711
  }, 2e3, true);
850
712
  });
851
713
  }, "initPendingBundledTransactionsArchivist");
852
714
 
853
715
  // src/orchestration/archivists/RejectedTransactions/archivist.ts
854
- import { startupSpanAsync as startupSpanAsync4 } from "@xyo-network/chain-utils";
855
- import { timeBudget as timeBudget4 } from "@xyo-network/xl1-protocol-sdk";
856
- import { Mutex as Mutex13 } from "async-mutex";
716
+ import { startupSpanAsync as startupSpanAsync3 } from "@xyo-network/chain-utils";
717
+ import { timeBudget as timeBudget3 } from "@xyo-network/xl1-protocol-sdk";
718
+ import { Mutex as Mutex9 } from "async-mutex";
857
719
 
858
720
  // src/orchestration/archivists/RejectedTransactions/local.ts
859
721
  import { MemoryArchivist as MemoryArchivist2, MemoryArchivistConfigSchema as MemoryArchivistConfigSchema2 } from "@xyo-network/archivist-memory";
860
- import { Mutex as Mutex12 } from "async-mutex";
861
- var mutex9 = new Mutex12();
862
- var singleton9;
722
+ import { Mutex as Mutex8 } from "async-mutex";
723
+ var mutex6 = new Mutex8();
724
+ var singleton6;
863
725
  var initLocalRejectedTransactionsArchivist = /* @__PURE__ */ __name(async () => {
864
- return await mutex9.runExclusive(async () => {
865
- if (singleton9) return singleton9;
866
- singleton9 = await MemoryArchivist2.create({
726
+ return await mutex6.runExclusive(async () => {
727
+ if (singleton6) return singleton6;
728
+ singleton6 = await MemoryArchivist2.create({
867
729
  account: "random",
868
730
  config: {
869
731
  schema: MemoryArchivistConfigSchema2,
@@ -871,90 +733,90 @@ var initLocalRejectedTransactionsArchivist = /* @__PURE__ */ __name(async () =>
871
733
  name: "localRejectedTransactions"
872
734
  }
873
735
  });
874
- return singleton9;
736
+ return singleton6;
875
737
  });
876
738
  }, "initLocalRejectedTransactionsArchivist");
877
739
 
878
740
  // src/orchestration/archivists/RejectedTransactions/archivist.ts
879
- var mutex10 = new Mutex13();
880
- var singleton10;
741
+ var mutex7 = new Mutex9();
742
+ var singleton7;
881
743
  async function initRejectedTransactionsArchivist(params) {
882
- return await mutex10.runExclusive(async () => {
883
- if (singleton10) return singleton10;
884
- return await timeBudget4("initRejectedTransactionsArchivist", params.logger, async () => {
885
- const local = await startupSpanAsync4("RejectedTransactionsArchivist:initLocal", () => initLocalRejectedTransactionsArchivist(params));
886
- singleton10 = local;
887
- return singleton10;
744
+ return await mutex7.runExclusive(async () => {
745
+ if (singleton7) return singleton7;
746
+ return await timeBudget3("initRejectedTransactionsArchivist", params.logger, async () => {
747
+ const local = await startupSpanAsync3("RejectedTransactionsArchivist:initLocal", () => initLocalRejectedTransactionsArchivist(params));
748
+ singleton7 = local;
749
+ return singleton7;
888
750
  }, 2e3, true);
889
751
  });
890
752
  }
891
753
  __name(initRejectedTransactionsArchivist, "initRejectedTransactionsArchivist");
892
754
 
893
755
  // src/orchestration/archivists/StakeIntentState/archivist.ts
894
- import { assertEx as assertEx10 } from "@xylabs/sdk-js";
895
- import { startupSpanAsync as startupSpanAsync5 } from "@xyo-network/chain-utils";
896
- import { timeBudget as timeBudget5 } from "@xyo-network/xl1-protocol-sdk";
897
- import { Mutex as Mutex15 } from "async-mutex";
756
+ import { assertEx as assertEx8 } from "@xylabs/sdk-js";
757
+ import { startupSpanAsync as startupSpanAsync4 } from "@xyo-network/chain-utils";
758
+ import { timeBudget as timeBudget4 } from "@xyo-network/xl1-protocol-sdk";
759
+ import { Mutex as Mutex11 } from "async-mutex";
898
760
 
899
761
  // src/orchestration/archivists/StakeIntentState/local.ts
900
- import { assertEx as assertEx9 } from "@xylabs/sdk-js";
901
- import { Mutex as Mutex14 } from "async-mutex";
902
- var mutex11 = new Mutex14();
903
- var singleton11;
762
+ import { assertEx as assertEx7 } from "@xylabs/sdk-js";
763
+ import { Mutex as Mutex10 } from "async-mutex";
764
+ var mutex8 = new Mutex10();
765
+ var singleton8;
904
766
  var initLocalStakeIntentStateArchivist = /* @__PURE__ */ __name(async ({ config: config2 }) => {
905
- return await mutex11.runExclusive(async () => {
906
- if (singleton11) return singleton11;
767
+ return await mutex8.runExclusive(async () => {
768
+ if (singleton8) return singleton8;
907
769
  const { root } = config2.storage;
908
- singleton11 = await getLocalPersistentArchivist("local-stake-intent-state", "stakeIntent", "state", root);
909
- return assertEx9(singleton11, () => new Error("Failed to initialize stake intent state archivist"));
770
+ singleton8 = await getLocalPersistentArchivist("local-stake-intent-state", "stakeIntent", "state", root);
771
+ return assertEx7(singleton8, () => new Error("Failed to initialize stake intent state archivist"));
910
772
  });
911
773
  }, "initLocalStakeIntentStateArchivist");
912
774
 
913
775
  // src/orchestration/archivists/StakeIntentState/archivist.ts
914
- var mutex12 = new Mutex15();
915
- var singleton12;
776
+ var mutex9 = new Mutex11();
777
+ var singleton9;
916
778
  var initStakeIntentStateArchivist = /* @__PURE__ */ __name(async (params) => {
917
- return await mutex12.runExclusive(async () => {
918
- if (singleton12) return singleton12;
919
- return await timeBudget5("initStakeIntentStateArchivist", params.logger, async () => {
920
- const local = await startupSpanAsync5("StakeIntentStateArchivist:initLocal", () => initLocalStakeIntentStateArchivist(params));
921
- singleton12 = local;
922
- return assertEx10(singleton12, () => "StakeIntentStateArchivist is undefined");
779
+ return await mutex9.runExclusive(async () => {
780
+ if (singleton9) return singleton9;
781
+ return await timeBudget4("initStakeIntentStateArchivist", params.logger, async () => {
782
+ const local = await startupSpanAsync4("StakeIntentStateArchivist:initLocal", () => initLocalStakeIntentStateArchivist(params));
783
+ singleton9 = local;
784
+ return assertEx8(singleton9, () => "StakeIntentStateArchivist is undefined");
923
785
  }, 2e3, true);
924
786
  });
925
787
  }, "initStakeIntentStateArchivist");
926
788
 
927
789
  // src/orchestration/map/BalanceSummary/initBalanceSummaryMap.ts
928
790
  import { isDefined as isDefined5 } from "@xylabs/sdk-js";
929
- import { startupSpanAsync as startupSpanAsync6 } from "@xyo-network/chain-utils";
930
- import { timeBudget as timeBudget6 } from "@xyo-network/xl1-protocol-sdk";
931
- import { Mutex as Mutex17 } from "async-mutex";
791
+ import { startupSpanAsync as startupSpanAsync5 } from "@xyo-network/chain-utils";
792
+ import { timeBudget as timeBudget5 } from "@xyo-network/xl1-protocol-sdk";
793
+ import { Mutex as Mutex13 } from "async-mutex";
932
794
 
933
795
  // src/orchestration/map/BalanceSummary/initLocalBalanceSummaryMap.ts
934
796
  import { isDefined as isDefined4 } from "@xylabs/sdk-js";
935
797
  import { getLocalPersistentMap } from "@xyo-network/chain-protocol";
936
- import { Mutex as Mutex16 } from "async-mutex";
937
- var mutex13 = new Mutex16();
938
- var singleton13;
798
+ import { Mutex as Mutex12 } from "async-mutex";
799
+ var mutex10 = new Mutex12();
800
+ var singleton10;
939
801
  var initLocalBalanceSummaryMap = /* @__PURE__ */ __name(async (params) => {
940
- return await mutex13.runExclusive(async () => {
941
- if (isDefined4(singleton13)) return singleton13;
802
+ return await mutex10.runExclusive(async () => {
803
+ if (isDefined4(singleton10)) return singleton10;
942
804
  const { root } = params.config.storage;
943
- singleton13 = await getLocalPersistentMap("balance", "summary", root);
944
- return singleton13;
805
+ singleton10 = await getLocalPersistentMap("balance", "summary", root);
806
+ return singleton10;
945
807
  });
946
808
  }, "initLocalBalanceSummaryMap");
947
809
 
948
810
  // src/orchestration/map/BalanceSummary/initBalanceSummaryMap.ts
949
- var mutex14 = new Mutex17();
950
- var singleton14;
811
+ var mutex11 = new Mutex13();
812
+ var singleton11;
951
813
  async function initBalanceSummaryMap(params) {
952
- return await mutex14.runExclusive(async () => {
953
- if (isDefined5(singleton14)) return singleton14;
954
- return await timeBudget6("initBalanceSummaryMap", params.logger, async () => {
955
- const local = await startupSpanAsync6("BalanceSummaryMap:initLocal", () => initLocalBalanceSummaryMap(params));
956
- singleton14 = local;
957
- return singleton14;
814
+ return await mutex11.runExclusive(async () => {
815
+ if (isDefined5(singleton11)) return singleton11;
816
+ return await timeBudget5("initBalanceSummaryMap", params.logger, async () => {
817
+ const local = await startupSpanAsync5("BalanceSummaryMap:initLocal", () => initLocalBalanceSummaryMap(params));
818
+ singleton11 = local;
819
+ return singleton11;
958
820
  }, 2e3, true);
959
821
  });
960
822
  }
@@ -962,77 +824,103 @@ __name(initBalanceSummaryMap, "initBalanceSummaryMap");
962
824
 
963
825
  // src/orchestration/map/BalanceSummary/initTransferSummaryMap.ts
964
826
  import { isDefined as isDefined7 } from "@xylabs/sdk-js";
965
- import { startupSpanAsync as startupSpanAsync7 } from "@xyo-network/chain-utils";
966
- import { timeBudget as timeBudget7 } from "@xyo-network/xl1-protocol-sdk";
967
- import { Mutex as Mutex19 } from "async-mutex";
827
+ import { startupSpanAsync as startupSpanAsync6 } from "@xyo-network/chain-utils";
828
+ import { timeBudget as timeBudget6 } from "@xyo-network/xl1-protocol-sdk";
829
+ import { Mutex as Mutex15 } from "async-mutex";
968
830
 
969
831
  // src/orchestration/map/BalanceSummary/initLocalTransferSummaryMap.ts
970
832
  import { isDefined as isDefined6 } from "@xylabs/sdk-js";
971
833
  import { getLocalPersistentMap as getLocalPersistentMap2 } from "@xyo-network/chain-protocol";
972
- import { Mutex as Mutex18 } from "async-mutex";
973
- var mutex15 = new Mutex18();
974
- var singleton15;
834
+ import { Mutex as Mutex14 } from "async-mutex";
835
+ var mutex12 = new Mutex14();
836
+ var singleton12;
975
837
  var initLocalTransferSummaryMap = /* @__PURE__ */ __name(async (params) => {
976
- return await mutex15.runExclusive(async () => {
977
- if (isDefined6(singleton15)) return singleton15;
838
+ return await mutex12.runExclusive(async () => {
839
+ if (isDefined6(singleton12)) return singleton12;
978
840
  const { root } = params.config.storage;
979
- singleton15 = await getLocalPersistentMap2("transfer", "summary", root);
980
- return singleton15;
841
+ singleton12 = await getLocalPersistentMap2("transfer", "summary", root);
842
+ return singleton12;
981
843
  });
982
844
  }, "initLocalTransferSummaryMap");
983
845
 
984
846
  // src/orchestration/map/BalanceSummary/initTransferSummaryMap.ts
985
- var mutex16 = new Mutex19();
986
- var singleton16;
847
+ var mutex13 = new Mutex15();
848
+ var singleton13;
987
849
  async function initTransferSummaryMap(params) {
988
- return await mutex16.runExclusive(async () => {
989
- if (isDefined7(singleton16)) return singleton16;
990
- return await timeBudget7("initTransferSummaryMap:Init", params.logger, async () => {
991
- const local = await startupSpanAsync7("TransferSummaryMap:initLocal", () => initLocalTransferSummaryMap(params));
992
- singleton16 = local;
993
- return singleton16;
850
+ return await mutex13.runExclusive(async () => {
851
+ if (isDefined7(singleton13)) return singleton13;
852
+ return await timeBudget6("initTransferSummaryMap:Init", params.logger, async () => {
853
+ const local = await startupSpanAsync6("TransferSummaryMap:initLocal", () => initLocalTransferSummaryMap(params));
854
+ singleton13 = local;
855
+ return singleton13;
994
856
  }, 2e3, true);
995
857
  });
996
858
  }
997
859
  __name(initTransferSummaryMap, "initTransferSummaryMap");
998
860
 
999
861
  // src/orchestration/services/implementation/accountBalance.ts
1000
- import { BaseAccountBalanceService } from "@xyo-network/chain-services";
1001
- import { timeBudget as timeBudget8 } from "@xyo-network/xl1-protocol-sdk";
862
+ import { isDefined as isDefined8 } from "@xylabs/sdk-js";
863
+ import { AccountBalanceViewerRpcSchemas, HttpRpcTransport, JsonRpcAccountBalanceViewer } from "@xyo-network/xl1-rpc";
1002
864
  var balanceServiceSingleton;
1003
- var initAccountBalanceService = /* @__PURE__ */ __name(async (params) => {
865
+ var initAccountBalanceService = /* @__PURE__ */ __name((params) => {
1004
866
  const { config: config2, logger } = params;
1005
867
  if (balanceServiceSingleton) return balanceServiceSingleton;
1006
- return await timeBudget8("initAccountBalanceService", params.logger, async () => {
1007
- const endpoint = config2.services?.accountBalanceViewerEndpoint ?? config2.services?.apiEndpoint;
1008
- balanceServiceSingleton = await BaseAccountBalanceService.create(params.params);
1009
- return balanceServiceSingleton;
1010
- }, 2e3, true);
868
+ const endpoint = config2.services?.accountBalanceViewerEndpoint ?? config2.services?.apiEndpoint;
869
+ if (isDefined8(endpoint)) {
870
+ const transport = new HttpRpcTransport(endpoint, {
871
+ ...AccountBalanceViewerRpcSchemas
872
+ });
873
+ const viewer = new JsonRpcAccountBalanceViewer(transport);
874
+ logger?.log("Using AccountBalanceViewer RPC service at", endpoint);
875
+ return viewer;
876
+ } else {
877
+ throw new Error("No AccountBalanceViewer endpoint configured");
878
+ }
1011
879
  }, "initAccountBalanceService");
1012
880
 
881
+ // src/orchestration/services/implementation/blockViewer.ts
882
+ import { isDefined as isDefined9 } from "@xylabs/sdk-js";
883
+ import { BlockViewerRpcSchemas, HttpRpcTransport as HttpRpcTransport2, JsonRpcBlockViewer } from "@xyo-network/xl1-rpc";
884
+ var blockViewerSingleton;
885
+ var initBlockViewer = /* @__PURE__ */ __name((params) => {
886
+ const { config: config2, logger } = params;
887
+ if (blockViewerSingleton) return blockViewerSingleton;
888
+ const endpoint = config2.services?.apiEndpoint;
889
+ if (isDefined9(endpoint)) {
890
+ const transport = new HttpRpcTransport2(endpoint, {
891
+ ...BlockViewerRpcSchemas
892
+ });
893
+ const viewer = new JsonRpcBlockViewer(transport);
894
+ logger?.log("Using BlockViewer RPC service at", endpoint);
895
+ return viewer;
896
+ } else {
897
+ throw new Error("No BlockViewer endpoint configured");
898
+ }
899
+ }, "initBlockViewer");
900
+
1013
901
  // src/orchestration/services/implementation/chain/index.ts
1014
- import { assertEx as assertEx16 } from "@xylabs/sdk-js";
902
+ import { assertEx as assertEx14 } from "@xylabs/sdk-js";
1015
903
  import { MemoryChainService } from "@xyo-network/chain-services";
1016
904
 
1017
905
  // src/orchestration/services/implementation/chain/evm.ts
1018
- import { asAddress, assertEx as assertEx15, isDefined as isDefined11, ZERO_ADDRESS } from "@xylabs/sdk-js";
906
+ import { asAddress, assertEx as assertEx13, isDefined as isDefined13, ZERO_ADDRESS } from "@xylabs/sdk-js";
1019
907
  import { EvmChainService } from "@xyo-network/chain-services";
1020
908
  import { Wallet } from "ethers/wallet";
1021
909
 
1022
910
  // src/orchestration/services/implementation/evm/initEvmProvider.ts
1023
- import { assertEx as assertEx14 } from "@xylabs/sdk-js";
911
+ import { assertEx as assertEx12 } from "@xylabs/sdk-js";
1024
912
 
1025
913
  // src/orchestration/services/implementation/evm/initInfuraProvider.ts
1026
- import { assertEx as assertEx12, isDefined as isDefined9 } from "@xylabs/sdk-js";
914
+ import { assertEx as assertEx10, isDefined as isDefined11 } from "@xylabs/sdk-js";
1027
915
  import { InfuraProvider } from "ethers/providers";
1028
916
 
1029
917
  // src/orchestration/services/implementation/evm/initChainId.ts
1030
- import { assertEx as assertEx11, hexFrom, isDefined as isDefined8, isHex } from "@xylabs/sdk-js";
918
+ import { assertEx as assertEx9, hexFrom, isDefined as isDefined10, isHex } from "@xylabs/sdk-js";
1031
919
  var canUseChainId = /* @__PURE__ */ __name((config2) => {
1032
- return isDefined8(config2.evm.chainId);
920
+ return isDefined10(config2.evm.chainId);
1033
921
  }, "canUseChainId");
1034
922
  var getChainId = /* @__PURE__ */ __name((config2) => {
1035
- const chainId = assertEx11(config2.evm.chainId, () => "Missing config.evm.chainId");
923
+ const chainId = assertEx9(config2.evm.chainId, () => "Missing config.evm.chainId");
1036
924
  if (isHex(chainId, {
1037
925
  prefix: true
1038
926
  })) {
@@ -1054,11 +942,11 @@ var initInfuraProvider = /* @__PURE__ */ __name((config2) => {
1054
942
  return instance;
1055
943
  }, "initInfuraProvider");
1056
944
  var canUseInfuraProvider = /* @__PURE__ */ __name((config2) => {
1057
- return canUseChainId(config2) && isDefined9(config2.evm?.infura?.projectId) && isDefined9(config2.evm?.infura?.projectSecret);
945
+ return canUseChainId(config2) && isDefined11(config2.evm?.infura?.projectId) && isDefined11(config2.evm?.infura?.projectSecret);
1058
946
  }, "canUseInfuraProvider");
1059
947
  var getInfuraProviderConfig = /* @__PURE__ */ __name((config2) => {
1060
- const projectId = assertEx12(config2.evm?.infura?.projectId, () => "Missing config.evm.infura.projectId");
1061
- const projectSecret = assertEx12(config2.evm?.infura?.projectSecret, () => "Missing config.evm.infura.projectSecret");
948
+ const projectId = assertEx10(config2.evm?.infura?.projectId, () => "Missing config.evm.infura.projectId");
949
+ const projectSecret = assertEx10(config2.evm?.infura?.projectSecret, () => "Missing config.evm.infura.projectSecret");
1062
950
  return [
1063
951
  getChainId(config2),
1064
952
  projectId,
@@ -1067,17 +955,17 @@ var getInfuraProviderConfig = /* @__PURE__ */ __name((config2) => {
1067
955
  }, "getInfuraProviderConfig");
1068
956
 
1069
957
  // src/orchestration/services/implementation/evm/initJsonRpcProvider.ts
1070
- import { assertEx as assertEx13, isDefined as isDefined10 } from "@xylabs/sdk-js";
958
+ import { assertEx as assertEx11, isDefined as isDefined12 } from "@xylabs/sdk-js";
1071
959
  import { JsonRpcProvider } from "ethers/providers";
1072
960
  var initJsonRpcProvider = /* @__PURE__ */ __name((config2) => {
1073
961
  const providerConfig = getJsonRpcProviderConfig(config2);
1074
962
  return Promise.resolve(new JsonRpcProvider(...providerConfig));
1075
963
  }, "initJsonRpcProvider");
1076
964
  var canUseJsonRpcProvider = /* @__PURE__ */ __name((config2) => {
1077
- return canUseChainId(config2) && isDefined10(config2.evm.jsonRpc?.url);
965
+ return canUseChainId(config2) && isDefined12(config2.evm.jsonRpc?.url);
1078
966
  }, "canUseJsonRpcProvider");
1079
967
  var getJsonRpcProviderConfig = /* @__PURE__ */ __name((config2) => {
1080
- const jsonRpcUrl = assertEx13(config2.evm.jsonRpc?.url, () => "Missing config.evm.jsonRpc.url");
968
+ const jsonRpcUrl = assertEx11(config2.evm.jsonRpc?.url, () => "Missing config.evm.jsonRpc.url");
1081
969
  return [
1082
970
  jsonRpcUrl,
1083
971
  getChainId(config2)
@@ -1093,7 +981,7 @@ var initEvmProvider = /* @__PURE__ */ __name(async ({ config: config2 }) => {
1093
981
  } else if (canUseJsonRpcProvider(config2)) {
1094
982
  provider = initJsonRpcProvider(config2);
1095
983
  }
1096
- return assertEx14(await provider, () => "No provider available");
984
+ return assertEx12(await provider, () => "No provider available");
1097
985
  }, "initEvmProvider");
1098
986
  var canUseEvmProvider = /* @__PURE__ */ __name(({ config: config2 }) => {
1099
987
  return canUseInfuraProvider(config2) || canUseJsonRpcProvider(config2);
@@ -1103,18 +991,18 @@ var canUseEvmProvider = /* @__PURE__ */ __name(({ config: config2 }) => {
1103
991
  var chainStakeServiceSingleton;
1104
992
  var canUseEvmContractChainService = /* @__PURE__ */ __name((config2) => {
1105
993
  const { id } = config2.chain;
1106
- return isDefined11(id) && id !== ZERO_ADDRESS && canUseEvmProvider({
994
+ return isDefined13(id) && id !== ZERO_ADDRESS && canUseEvmProvider({
1107
995
  config: config2
1108
996
  });
1109
997
  }, "canUseEvmContractChainService");
1110
998
  var initEvmContractChainService = /* @__PURE__ */ __name(async ({ account, config: config2, traceProvider, meterProvider, logger }) => {
1111
999
  if (chainStakeServiceSingleton) return chainStakeServiceSingleton;
1112
- const emvStakingContractAddress = assertEx15(config2.chain.id, () => "config.chain.id is required");
1113
- const id = assertEx15(asAddress(emvStakingContractAddress), () => "config.chain.id is not a valid address");
1114
- const provider2 = assertEx15(await initEvmProvider({
1000
+ const emvStakingContractAddress = assertEx13(config2.chain.id, () => "config.chain.id is required");
1001
+ const id = assertEx13(asAddress(emvStakingContractAddress), () => "config.chain.id is not a valid address");
1002
+ const provider2 = assertEx13(await initEvmProvider({
1115
1003
  config: config2
1116
1004
  }));
1117
- const privateKey = assertEx15(account.private?.hex, () => "Account does not have a private key");
1005
+ const privateKey = assertEx13(account.private?.hex, () => "Account does not have a private key");
1118
1006
  const runner = new Wallet(privateKey, provider2);
1119
1007
  chainStakeServiceSingleton = EvmChainService.create({
1120
1008
  id,
@@ -1145,7 +1033,7 @@ var initMemoryChainService = /* @__PURE__ */ __name(async ({ config: config2 })
1145
1033
  config: config2,
1146
1034
  name: "MemoryChainService"
1147
1035
  });
1148
- assertEx16(await result.start(), () => "Failed to start MemoryChainService");
1036
+ assertEx14(await result.start(), () => "Failed to start MemoryChainService");
1149
1037
  return result;
1150
1038
  }, "initMemoryChainService");
1151
1039
  var init = /* @__PURE__ */ __name(async (params) => {
@@ -1159,13 +1047,13 @@ var init = /* @__PURE__ */ __name(async (params) => {
1159
1047
  }, "init");
1160
1048
 
1161
1049
  // src/orchestration/services/implementation/head/head.ts
1162
- import { assertEx as assertEx17, isDefined as isDefined13 } from "@xylabs/sdk-js";
1163
- import { findMostRecentBlock as findMostRecentBlock2 } from "@xyo-network/chain-protocol";
1050
+ import { assertEx as assertEx15, isDefined as isDefined15 } from "@xylabs/sdk-js";
1051
+ import { findMostRecentBlock } from "@xyo-network/xl1-protocol-sdk";
1164
1052
 
1165
1053
  // src/orchestration/services/implementation/head/createBootstrapHead.ts
1166
1054
  import { buildNextBlock, createDeclarationIntent as createDeclarationIntent2, createGenesisBlock } from "@xyo-network/chain-protocol";
1167
1055
  var createBootstrapHead = /* @__PURE__ */ __name(async (account, chainService) => {
1168
- const chainId = chainService.chainId;
1056
+ const chainId = await chainService.chainId();
1169
1057
  const chain = [];
1170
1058
  const genesisBlock = await createGenesisBlock(account, chainId, 10000000n, account.address);
1171
1059
  chain.push(genesisBlock);
@@ -1181,27 +1069,27 @@ var createBootstrapHead = /* @__PURE__ */ __name(async (account, chainService) =
1181
1069
 
1182
1070
  // src/orchestration/services/implementation/head/createForkedHead/getBridgeDestinationObservation.ts
1183
1071
  import { buildNextBlock as buildNextBlock2 } from "@xyo-network/chain-protocol";
1184
- import { PayloadBuilder as PayloadBuilder4 } from "@xyo-network/payload-builder";
1072
+ import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/payload-builder";
1185
1073
  import { BridgeDestinationObservationSchema } from "@xyo-network/xl1-protocol";
1186
1074
 
1187
1075
  // src/orchestration/services/implementation/head/createForkedHead/config/getBridgeDestinationDetails.ts
1188
- import { toHex as toHex5 } from "@xylabs/sdk-js";
1076
+ import { toHex as toHex4 } from "@xylabs/sdk-js";
1189
1077
 
1190
1078
  // src/orchestration/services/implementation/head/createForkedHead/config/getForkDetails.ts
1191
- import { toHex as toHex4 } from "@xylabs/sdk-js";
1079
+ import { toHex as toHex3 } from "@xylabs/sdk-js";
1192
1080
  import { AttoXL1ConvertFactor } from "@xyo-network/xl1-protocol";
1193
1081
  var getForkBlockReward = /* @__PURE__ */ __name(() => {
1194
1082
  return 18000000000n * AttoXL1ConvertFactor.xl1;
1195
1083
  }, "getForkBlockReward");
1196
1084
  var getForkBlockRewardHex = /* @__PURE__ */ __name(() => {
1197
- return toHex4(getForkBlockReward());
1085
+ return toHex3(getForkBlockReward());
1198
1086
  }, "getForkBlockRewardHex");
1199
1087
 
1200
1088
  // src/orchestration/services/implementation/head/createForkedHead/config/getBridgeDestinationDetails.ts
1201
- var ethChainId = toHex5("0x1");
1202
- var bridgeableTokenContract = toHex5("0xf72aE3E0DA743033AbD7A407557D684c1aE66aed");
1203
- var bridgeDestAddress = toHex5("0x0e65b65B10C791942665030402c35023d88B14dA");
1204
- var destConfirmation = toHex5("0x950861b10523b52cdbb4a9ee52ed26601db555d2652bfec21c709e5e70d5b7d3");
1089
+ var ethChainId = toHex4("0x1");
1090
+ var bridgeableTokenContract = toHex4("0xf72aE3E0DA743033AbD7A407557D684c1aE66aed");
1091
+ var bridgeDestAddress = toHex4("0x0e65b65B10C791942665030402c35023d88B14dA");
1092
+ var destConfirmation = toHex4("0x950861b10523b52cdbb4a9ee52ed26601db555d2652bfec21c709e5e70d5b7d3");
1205
1093
  var getBridgeDestChainId = /* @__PURE__ */ __name(() => ethChainId, "getBridgeDestChainId");
1206
1094
  var getBridgeDestToken = /* @__PURE__ */ __name(() => bridgeableTokenContract, "getBridgeDestToken");
1207
1095
  var getBridgeDestAddress = /* @__PURE__ */ __name(() => bridgeDestAddress, "getBridgeDestAddress");
@@ -1217,15 +1105,15 @@ var getBridgeDestinationDetails = /* @__PURE__ */ __name(() => {
1217
1105
  }, "getBridgeDestinationDetails");
1218
1106
 
1219
1107
  // src/orchestration/services/implementation/head/createForkedHead/config/getBridgeSourceDetails.ts
1220
- var getBridgeSrcChainId = /* @__PURE__ */ __name((chainService) => chainService.chainId, "getBridgeSrcChainId");
1108
+ var getBridgeSrcChainId = /* @__PURE__ */ __name((chainService) => chainService.chainId(), "getBridgeSrcChainId");
1221
1109
  var getBridgeSrcAddress = /* @__PURE__ */ __name((account) => account.address, "getBridgeSrcAddress");
1222
- var getBridgeSrcToken = /* @__PURE__ */ __name((chainService) => chainService.chainId, "getBridgeSrcToken");
1110
+ var getBridgeSrcToken = /* @__PURE__ */ __name((chainService) => chainService.chainId(), "getBridgeSrcToken");
1223
1111
  var getBridgeSrcAmount = /* @__PURE__ */ __name(() => getForkBlockRewardHex(), "getBridgeSrcAmount");
1224
- var getBridgeSourceDetails = /* @__PURE__ */ __name((account, chainService) => {
1112
+ var getBridgeSourceDetails = /* @__PURE__ */ __name(async (account, chainService) => {
1225
1113
  return {
1226
- src: getBridgeSrcChainId(chainService),
1114
+ src: await getBridgeSrcChainId(chainService),
1227
1115
  srcAddress: getBridgeSrcAddress(account),
1228
- srcToken: getBridgeSrcToken(chainService),
1116
+ srcToken: await getBridgeSrcToken(chainService),
1229
1117
  srcAmount: getBridgeSrcAmount()
1230
1118
  };
1231
1119
  }, "getBridgeSourceDetails");
@@ -1233,11 +1121,11 @@ var getBridgeSourceDetails = /* @__PURE__ */ __name((account, chainService) => {
1233
1121
  // src/orchestration/services/implementation/head/createForkedHead/getBridgeDestinationObservation.ts
1234
1122
  var getBridgeDestinationObservation = /* @__PURE__ */ __name(async (previousBlock, account, chainService) => {
1235
1123
  const bridgeDestinationObservationFields = {
1236
- ...getBridgeSourceDetails(account, chainService),
1124
+ ...await getBridgeSourceDetails(account, chainService),
1237
1125
  ...getBridgeDestinationDetails(),
1238
1126
  destConfirmation: getBridgeDestConfirmation()
1239
1127
  };
1240
- const bridgeDestinationObservation = new PayloadBuilder4({
1128
+ const bridgeDestinationObservation = new PayloadBuilder3({
1241
1129
  schema: BridgeDestinationObservationSchema
1242
1130
  }).fields(bridgeDestinationObservationFields).build();
1243
1131
  return await buildNextBlock2(previousBlock[0], [], [
@@ -1249,7 +1137,7 @@ var getBridgeDestinationObservation = /* @__PURE__ */ __name(async (previousBloc
1249
1137
 
1250
1138
  // src/orchestration/services/implementation/head/createForkedHead/getBridgeIntent.ts
1251
1139
  import { buildNextBlock as buildNextBlock3, createTransferPayload } from "@xyo-network/chain-protocol";
1252
- import { PayloadBuilder as PayloadBuilder5 } from "@xyo-network/payload-builder";
1140
+ import { PayloadBuilder as PayloadBuilder4 } from "@xyo-network/payload-builder";
1253
1141
  import { BridgeIntentSchema, XYO_BRIDGE_ADDRESS } from "@xyo-network/xl1-protocol";
1254
1142
  var getBridgeIntent = /* @__PURE__ */ __name(async (previousBlock, account, chainService) => {
1255
1143
  const transferPayload = createTransferPayload(account.address, {
@@ -1257,11 +1145,11 @@ var getBridgeIntent = /* @__PURE__ */ __name(async (previousBlock, account, chai
1257
1145
  });
1258
1146
  const nonce = `${Date.now()}`;
1259
1147
  const bridgeIntentFields = {
1260
- ...getBridgeSourceDetails(account, chainService),
1148
+ ...await getBridgeSourceDetails(account, chainService),
1261
1149
  ...getBridgeDestinationDetails(),
1262
1150
  nonce
1263
1151
  };
1264
- const bridgeIntent = new PayloadBuilder5({
1152
+ const bridgeIntent = new PayloadBuilder4({
1265
1153
  schema: BridgeIntentSchema
1266
1154
  }).fields(bridgeIntentFields).build();
1267
1155
  return await buildNextBlock3(previousBlock[0], [], [
@@ -1274,17 +1162,17 @@ var getBridgeIntent = /* @__PURE__ */ __name(async (previousBlock, account, chai
1274
1162
 
1275
1163
  // src/orchestration/services/implementation/head/createForkedHead/getBridgeSourceObservation.ts
1276
1164
  import { buildNextBlock as buildNextBlock4 } from "@xyo-network/chain-protocol";
1277
- import { PayloadBuilder as PayloadBuilder6 } from "@xyo-network/payload-builder";
1165
+ import { PayloadBuilder as PayloadBuilder5 } from "@xyo-network/payload-builder";
1278
1166
  import { BridgeSourceObservationSchema } from "@xyo-network/xl1-protocol";
1279
1167
  var getBridgeSourceObservation = /* @__PURE__ */ __name(async (previousBlock, account, chainService) => {
1280
1168
  const srcTxHash = previousBlock[0]._hash;
1281
1169
  const bridgeSourceObservationFields = {
1282
- ...getBridgeSourceDetails(account, chainService),
1170
+ ...await getBridgeSourceDetails(account, chainService),
1283
1171
  ...getBridgeDestinationDetails(),
1284
1172
  // Observation
1285
1173
  srcConfirmation: srcTxHash
1286
1174
  };
1287
- const bridgeSourceObservation = new PayloadBuilder6({
1175
+ const bridgeSourceObservation = new PayloadBuilder5({
1288
1176
  schema: BridgeSourceObservationSchema
1289
1177
  }).fields(bridgeSourceObservationFields).build();
1290
1178
  return await buildNextBlock4(previousBlock[0], [], [
@@ -1299,7 +1187,7 @@ import { buildBlock } from "@xyo-network/chain-protocol";
1299
1187
  import { AttoXL1, XYO_STEP_REWARD_ADDRESS } from "@xyo-network/xl1-protocol";
1300
1188
  var getFirstBlockForNewChain = /* @__PURE__ */ __name(async (forkBlock, account, chainService) => {
1301
1189
  const { _hash: previousBlockHash, block: previousBlockNumber, step_hashes: previousStepHashes = [], protocol } = forkBlock;
1302
- const chainId = chainService.chainId;
1190
+ const chainId = await chainService.chainId();
1303
1191
  const options = {
1304
1192
  blockPayloads: [],
1305
1193
  chainId,
@@ -1332,14 +1220,14 @@ var createForkedHead = /* @__PURE__ */ __name(async (forkFromBlock, account, cha
1332
1220
  }, "createForkedHead");
1333
1221
 
1334
1222
  // src/orchestration/services/implementation/head/getForkFromBlock.ts
1335
- import { asHash, hexFromBigInt, isDefined as isDefined12 } from "@xylabs/sdk-js";
1223
+ import { asHash, hexFromBigInt, isDefined as isDefined14 } from "@xylabs/sdk-js";
1336
1224
  import { isSignedBlockBoundWitnessWithHashMeta } from "@xyo-network/xl1-protocol";
1337
1225
  var getForkFromBlock = /* @__PURE__ */ __name(async (head, chainService, chainArchivist) => {
1338
- if (head.chain !== chainService.chainId) {
1226
+ if (head.chain !== await chainService.chainId()) {
1339
1227
  const forkedAtBigInt = await chainService.forkedAtHash();
1340
1228
  const forkedAtHex = hexFromBigInt(forkedAtBigInt);
1341
1229
  const forkedAtHash = asHash(forkedAtHex);
1342
- if (isDefined12(forkedAtHash)) {
1230
+ if (isDefined14(forkedAtHash)) {
1343
1231
  const [forkedAtBlock] = await chainArchivist.get([
1344
1232
  forkedAtHash
1345
1233
  ]);
@@ -1374,19 +1262,19 @@ var headSingleton;
1374
1262
  var initHead = /* @__PURE__ */ __name(async (params) => {
1375
1263
  const { account, chainArchivist, chainSubmissionsArchivistWrite, chainService } = params;
1376
1264
  if (headSingleton) return headSingleton;
1377
- let head = await findMostRecentBlock2(chainArchivist);
1265
+ let head = await findMostRecentBlock(chainArchivist);
1378
1266
  if (head) {
1379
1267
  const forkFromBlock = await getForkFromBlock(head, chainService, chainArchivist);
1380
- if (isDefined13(forkFromBlock)) {
1268
+ if (isDefined15(forkFromBlock)) {
1381
1269
  const chain = await createForkedHead(forkFromBlock, account, chainService);
1382
1270
  await submitNewChain(chain, chainArchivist, chainSubmissionsArchivistWrite);
1383
- const newBlock = assertEx17(chain.at(-1), () => new Error("Failed to get new head after forking"));
1271
+ const newBlock = assertEx15(chain.at(-1), () => new Error("Failed to get new head after forking"));
1384
1272
  head = newBlock[0];
1385
1273
  }
1386
1274
  } else {
1387
1275
  const chain = await createBootstrapHead(account, chainService);
1388
1276
  await submitNewChain(chain, chainArchivist, chainSubmissionsArchivistWrite);
1389
- const newBlock = assertEx17(chain.at(-1), () => new Error("Failed to get new head after genesis"));
1277
+ const newBlock = assertEx15(chain.at(-1), () => new Error("Failed to get new head after genesis"));
1390
1278
  head = newBlock[0];
1391
1279
  }
1392
1280
  headSingleton = head;
@@ -1394,37 +1282,49 @@ var initHead = /* @__PURE__ */ __name(async (params) => {
1394
1282
  }, "initHead");
1395
1283
 
1396
1284
  // src/orchestration/services/implementation/pendingTransactions.ts
1285
+ import { isDefined as isDefined16 } from "@xylabs/sdk-js";
1397
1286
  import { BasePendingTransactionsService } from "@xyo-network/chain-services";
1398
- import { timeBudget as timeBudget9 } from "@xyo-network/xl1-protocol-sdk";
1287
+ import { timeBudget as timeBudget7 } from "@xyo-network/xl1-protocol-sdk";
1288
+ import { HttpRpcTransport as HttpRpcTransport3, JsonRpcMempoolViewer, MempoolViewerRpcSchemas } from "@xyo-network/xl1-rpc";
1399
1289
  var serviceSingleton;
1400
- var initPendingTransactions = /* @__PURE__ */ __name(async (params) => {
1290
+ var initPendingTransactions = /* @__PURE__ */ __name(async ({ config: config2, params, logger }) => {
1401
1291
  if (serviceSingleton) return serviceSingleton;
1402
- return await timeBudget9("initPendingTransactions", params.logger, async () => {
1403
- serviceSingleton = await BasePendingTransactionsService.create(params);
1292
+ return await timeBudget7("initPendingTransactions", logger, async () => {
1293
+ const endpoint = config2.services?.apiEndpoint;
1294
+ if (isDefined16(endpoint)) {
1295
+ const transport = new HttpRpcTransport3(endpoint, {
1296
+ ...MempoolViewerRpcSchemas
1297
+ });
1298
+ const viewer = new JsonRpcMempoolViewer(transport);
1299
+ logger?.log("Using MempoolViewer RPC service at", endpoint);
1300
+ return viewer;
1301
+ } else {
1302
+ serviceSingleton = await BasePendingTransactionsService.create(params);
1303
+ }
1404
1304
  return serviceSingleton;
1405
1305
  }, 2e3, true);
1406
1306
  }, "initPendingTransactions");
1407
1307
 
1408
1308
  // src/orchestration/services/implementation/producer.ts
1409
1309
  import { BaseBlockProducerService as BaseBlockProducerService2 } from "@xyo-network/chain-services";
1410
- import { timeBudget as timeBudget10 } from "@xyo-network/xl1-protocol-sdk";
1310
+ import { timeBudget as timeBudget8 } from "@xyo-network/xl1-protocol-sdk";
1411
1311
  var serviceSingleton2;
1412
1312
  var initBlockProducer = /* @__PURE__ */ __name(async (params) => {
1413
1313
  if (serviceSingleton2) return serviceSingleton2;
1414
- return await timeBudget10("initBlockProducer", params.logger, async () => {
1314
+ return await timeBudget8("initBlockProducer", params.logger, async () => {
1415
1315
  serviceSingleton2 = await BaseBlockProducerService2.create(params);
1416
1316
  return serviceSingleton2;
1417
1317
  }, 2e3, true);
1418
1318
  }, "initBlockProducer");
1419
1319
 
1420
1320
  // src/orchestration/services/implementation/reward.ts
1421
- import { assertEx as assertEx18 } from "@xylabs/sdk-js";
1321
+ import { assertEx as assertEx16 } from "@xylabs/sdk-js";
1422
1322
  import { EvmBlockRewardService, MemoryBlockRewardService } from "@xyo-network/chain-services";
1423
- import { timeBudget as timeBudget11 } from "@xyo-network/xl1-protocol-sdk";
1323
+ import { timeBudget as timeBudget9 } from "@xyo-network/xl1-protocol-sdk";
1424
1324
  var rewardServiceSingleton;
1425
1325
  var initBlockRewardService = /* @__PURE__ */ __name((params) => {
1426
1326
  if (rewardServiceSingleton) return rewardServiceSingleton;
1427
- return timeBudget11("initBlockRewardService", params.logger, () => {
1327
+ return timeBudget9("initBlockRewardService", params.logger, () => {
1428
1328
  const { config: config2 } = params;
1429
1329
  rewardServiceSingleton = canUseEvmBlockRewardService({
1430
1330
  config: config2
@@ -1434,7 +1334,7 @@ var initBlockRewardService = /* @__PURE__ */ __name((params) => {
1434
1334
  }, "initBlockRewardService");
1435
1335
  var initXyoBlockRewardService = /* @__PURE__ */ __name((params) => {
1436
1336
  if (rewardServiceSingleton) return rewardServiceSingleton;
1437
- return timeBudget11("initXyoBlockRewardService", params.logger, () => {
1337
+ return timeBudget9("initXyoBlockRewardService", params.logger, () => {
1438
1338
  rewardServiceSingleton = MemoryBlockRewardService.create(params);
1439
1339
  return rewardServiceSingleton;
1440
1340
  }, 2e3, true);
@@ -1444,10 +1344,10 @@ var canUseEvmBlockRewardService = /* @__PURE__ */ __name((params) => canUseEvmPr
1444
1344
  }), "canUseEvmBlockRewardService");
1445
1345
  var initEvmBlockRewardService = /* @__PURE__ */ __name(async (params) => {
1446
1346
  if (rewardServiceSingleton) return rewardServiceSingleton;
1447
- return await timeBudget11("initEvmBlockRewardService", params.logger, async () => {
1347
+ return await timeBudget9("initEvmBlockRewardService", params.logger, async () => {
1448
1348
  const { account: paramsAccount } = params;
1449
- const account = assertEx18(paramsAccount, () => "Account is required");
1450
- const provider2 = assertEx18(await initEvmProvider(params));
1349
+ const account = assertEx16(paramsAccount, () => "Account is required");
1350
+ const provider2 = assertEx16(await initEvmProvider(params));
1451
1351
  const evmBlockRewardServiceParams = {
1452
1352
  ...params,
1453
1353
  provider: provider2,
@@ -1460,19 +1360,18 @@ var initEvmBlockRewardService = /* @__PURE__ */ __name(async (params) => {
1460
1360
 
1461
1361
  // src/orchestration/services/implementation/time.ts
1462
1362
  import { BaseTimeSyncService } from "@xyo-network/chain-services";
1463
- import { timeBudget as timeBudget12 } from "@xyo-network/xl1-protocol-sdk";
1363
+ import { timeBudget as timeBudget10 } from "@xyo-network/xl1-protocol-sdk";
1464
1364
  var timeSyncServiceSingleton;
1465
- var initTimeService = /* @__PURE__ */ __name(async ({ chainArchivist, chainIterator, config: config2, logger, meterProvider, traceProvider }) => {
1365
+ var initTimeService = /* @__PURE__ */ __name(async ({ blockViewer, config: config2, logger, meterProvider, traceProvider }) => {
1466
1366
  if (timeSyncServiceSingleton) return timeSyncServiceSingleton;
1467
- return await timeBudget12("initTimeService", logger, async () => {
1367
+ return await timeBudget10("initTimeService", logger, async () => {
1468
1368
  const ethProvider = canUseEvmProvider({
1469
1369
  config: config2
1470
1370
  }) ? await initEvmProvider({
1471
1371
  config: config2
1472
1372
  }) : void 0;
1473
1373
  timeSyncServiceSingleton = BaseTimeSyncService.create({
1474
- chainArchivist,
1475
- chainIterator,
1374
+ blockViewer,
1476
1375
  ethProvider,
1477
1376
  logger,
1478
1377
  meterProvider,
@@ -1484,11 +1383,11 @@ var initTimeService = /* @__PURE__ */ __name(async ({ chainArchivist, chainItera
1484
1383
 
1485
1384
  // src/orchestration/services/implementation/transfer.ts
1486
1385
  import { BaseAccountTransfersService } from "@xyo-network/chain-services";
1487
- import { timeBudget as timeBudget13 } from "@xyo-network/xl1-protocol-sdk";
1386
+ import { timeBudget as timeBudget11 } from "@xyo-network/xl1-protocol-sdk";
1488
1387
  var transferServiceSingleton;
1489
1388
  var initTransferService = /* @__PURE__ */ __name(async (params) => {
1490
1389
  if (transferServiceSingleton) return transferServiceSingleton;
1491
- return await timeBudget13("initTransferService", params.logger, async () => {
1390
+ return await timeBudget11("initTransferService", params.logger, async () => {
1492
1391
  transferServiceSingleton = await BaseAccountTransfersService.create(params);
1493
1392
  return transferServiceSingleton;
1494
1393
  }, 2e3, true);
@@ -1595,7 +1494,7 @@ var RuntimeStatusMonitor = class extends LoggerStatusReporter {
1595
1494
  // src/orchestration/initServices.ts
1596
1495
  var isStartable = /* @__PURE__ */ __name((value) => {
1597
1496
  const possibleStartable = value;
1598
- return isDefined14(possibleStartable.start) && typeof possibleStartable.start === "function" && possibleStartable.status === "created";
1497
+ return isDefined17(possibleStartable.start) && typeof possibleStartable.start === "function" && possibleStartable.status === "created";
1599
1498
  }, "isStartable");
1600
1499
  var initServices = /* @__PURE__ */ __name(async (context) => {
1601
1500
  const { config: config2, logger } = context;
@@ -1611,7 +1510,7 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1611
1510
  logger.error("Producer encountered an unhandled error!");
1612
1511
  process.exit(1);
1613
1512
  });
1614
- await startupSpanAsync8("initHealthEndpoints", () => initHealthEndpoints({
1513
+ await startupSpanAsync7("initHealthEndpoints", () => initHealthEndpoints({
1615
1514
  ...context,
1616
1515
  statusReporter
1617
1516
  }));
@@ -1629,8 +1528,8 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1629
1528
  }
1630
1529
  };
1631
1530
  const [{ traceProvider, meterProvider }, account] = await Promise.all([
1632
- startupSpanAsync8("initTelemetry", () => initTelemetry(telemetryConfig)),
1633
- startupSpanAsync8("initProducerAccount", () => initProducerAccount(context))
1531
+ startupSpanAsync7("initTelemetry", () => initTelemetry(telemetryConfig)),
1532
+ startupSpanAsync7("initProducerAccount", () => initProducerAccount(context))
1634
1533
  ]);
1635
1534
  const allowedRewardRedeemers = config2.validation?.allowedRewardRedeemers ?? [];
1636
1535
  const allowedRewardEscrowAccountSigners = config2.validation?.allowedRewardEscrowAccountSigners ?? [];
@@ -1646,32 +1545,23 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1646
1545
  statusReporter,
1647
1546
  traceProvider
1648
1547
  };
1649
- const [chainArchivist, [pendingBundledTransactionsArchivist, pendingBundledTransactionsArchivistWrite], rejectedTransactionsArchivist, chainSubmissionsArchivistWrite, stakeIntentStateArchivist, chainService, balanceSummaryMap, transferSummaryMap] = await Promise.all([
1650
- startupSpanAsync8("ChainFinalizedArchivist", () => initChainFinalizedArchivist(initParams)),
1651
- startupSpanAsync8("PendingBundledTransactionsArchivist", () => initPendingBundledTransactionsArchivist(initParams)),
1652
- startupSpanAsync8("RejectedTransactionsArchivist", () => initRejectedTransactionsArchivist(initParams)),
1653
- startupSpanAsync8("ChainSubmissionsArchivist", () => initChainSubmissionsArchivist(initParams)),
1654
- startupSpanAsync8("StakeIntentStateArchivist", () => initStakeIntentStateArchivist(initParams)),
1655
- startupSpanAsync8("ChainService", () => initChainService({
1548
+ const [[pendingBundledTransactionsArchivist, pendingBundledTransactionsArchivistWrite], rejectedTransactionsArchivist, chainSubmissionsArchivistWrite, stakeIntentStateArchivist, chainService, balanceSummaryMap] = await Promise.all([
1549
+ startupSpanAsync7("PendingBundledTransactionsArchivist", () => initPendingBundledTransactionsArchivist(initParams)),
1550
+ startupSpanAsync7("RejectedTransactionsArchivist", () => initRejectedTransactionsArchivist(initParams)),
1551
+ startupSpanAsync7("ChainSubmissionsArchivist", () => initChainSubmissionsArchivist(initParams)),
1552
+ startupSpanAsync7("StakeIntentStateArchivist", () => initStakeIntentStateArchivist(initParams)),
1553
+ startupSpanAsync7("ChainService", () => initChainService({
1656
1554
  ...initParams,
1657
1555
  account,
1658
1556
  name: "ChainService"
1659
1557
  })),
1660
- startupSpanAsync8("BalanceSummaryMap", () => initBalanceSummaryMap(initParams)),
1661
- startupSpanAsync8("TransferSummaryMap", () => initTransferSummaryMap(initParams))
1558
+ startupSpanAsync7("BalanceSummaryMap", () => initBalanceSummaryMap(initParams)),
1559
+ startupSpanAsync7("TransferSummaryMap", () => initTransferSummaryMap(initParams))
1662
1560
  ]);
1663
- const chainId = chainService.chainId;
1664
- const chainMap = readPayloadMapFromStore(chainArchivist);
1561
+ const chainId = await chainService.chainId();
1665
1562
  const chainContractViewer = chainService;
1666
1563
  const chainStakeViewer = chainService;
1667
1564
  const chainStaker = chainService;
1668
- const head = await startupSpanAsync8("initHead", () => initHead({
1669
- ...initParams,
1670
- account,
1671
- chainArchivist,
1672
- chainSubmissionsArchivistWrite,
1673
- chainService
1674
- }));
1675
1565
  const additionalPendingTransactionValidators = [
1676
1566
  TransactionTransfersValidatorFactory([
1677
1567
  SelfSignerValidator,
@@ -1679,98 +1569,48 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1679
1569
  DerivedReceiveAddressValidatorFactory(allowedRewardEscrowAccountSigners, "reward-escrow")
1680
1570
  ])
1681
1571
  ];
1682
- const [pendingTransactionsService, rewardService, chainIterator] = await Promise.all([
1683
- startupSpanAsync8("PendingTransactions", () => initPendingTransactions({
1684
- name: "PendingTransactionsService",
1685
- chainArchivist,
1686
- chainId,
1687
- pendingBundledTransactionsArchivist,
1688
- rejectedTransactionsArchivist,
1689
- additionalPendingTransactionValidators,
1690
- ...initParams
1572
+ const [pendingTransactionsService, rewardService] = await Promise.all([
1573
+ startupSpanAsync7("PendingTransactions", () => initPendingTransactions({
1574
+ config: config2,
1575
+ params: {
1576
+ name: "PendingTransactionsService",
1577
+ chainId,
1578
+ pendingBundledTransactionsArchivist,
1579
+ rejectedTransactionsArchivist,
1580
+ additionalPendingTransactionValidators,
1581
+ ...initParams
1582
+ }
1691
1583
  })),
1692
- startupSpanAsync8("RewardService", () => initBlockRewardService({
1584
+ startupSpanAsync7("RewardService", () => initBlockRewardService({
1693
1585
  name: "RewardService",
1694
1586
  account,
1695
1587
  chainService,
1696
1588
  ...initParams
1697
- })),
1698
- startupSpanAsync8("ChainIterator", () => initChainIterator({
1699
- name: "ChainIterator",
1700
- chainMap,
1701
- head,
1702
- ...initParams
1703
- }))
1704
- ]);
1705
- const blockViewer = blockViewerFromChainIteratorAndArchivist(chainIterator, chainArchivist);
1706
- const balanceContext = {
1707
- stepSemaphores: StepSizes.map(() => new Semaphore2(20)),
1708
- store: {
1709
- chainMap
1710
- },
1711
- head: /* @__PURE__ */ __name(async () => {
1712
- const head2 = await chainIterator.head();
1713
- return [
1714
- head2._hash,
1715
- head2.block
1716
- ];
1717
- }, "head"),
1718
- chainId,
1719
- summaryMap: balanceSummaryMap
1720
- };
1721
- const transferContext = {
1722
- stepSemaphores: StepSizes.map(() => new Semaphore2(20)),
1723
- store: {
1724
- chainMap
1725
- },
1726
- head: /* @__PURE__ */ __name(async () => {
1727
- const head2 = await chainIterator.head();
1728
- return [
1729
- head2._hash,
1730
- head2.block
1731
- ];
1732
- }, "head"),
1733
- chainId,
1734
- summaryMap: transferSummaryMap
1735
- };
1736
- const [balanceService] = await Promise.all([
1737
- startupSpanAsync8("BalanceService", () => initAccountBalanceService({
1738
- params: {
1739
- name: "BalanceService",
1740
- config: {},
1741
- context: balanceContext,
1742
- blockViewer,
1743
- chainArchivist,
1744
- chainIterator,
1745
- transferContext
1746
- },
1747
- ...initParams
1748
- })),
1749
- startupSpanAsync8("TransferService", () => initTransferService({
1750
- name: "TransferService",
1751
- context: transferContext,
1752
- ...initParams
1753
1589
  }))
1754
1590
  ]);
1591
+ const blockViewer = await startupSpanAsync7("BlockViewer", () => initBlockViewer({
1592
+ ...initParams
1593
+ }));
1594
+ const balanceService = await startupSpanAsync7("BalanceService", () => initAccountBalanceService({
1595
+ ...initParams
1596
+ }));
1755
1597
  const [stakeIntentService, time] = await Promise.all([
1756
- startupSpanAsync8("StakeIntentService", () => initStakeIntentService({
1598
+ startupSpanAsync7("StakeIntentService", () => initStakeIntentService({
1757
1599
  name: "StakeIntentService",
1758
- chainArchivist,
1759
- chainIterator,
1600
+ blockViewer,
1760
1601
  chainStakeViewer,
1761
1602
  stakeIntentStateArchivist,
1762
1603
  ...initParams
1763
1604
  })),
1764
- startupSpanAsync8("TimeService", () => initTimeService({
1605
+ startupSpanAsync7("TimeService", () => initTimeService({
1765
1606
  name: "TimeService",
1766
- chainArchivist,
1767
- chainIterator,
1607
+ blockViewer,
1768
1608
  ...initParams
1769
1609
  }))
1770
1610
  ]);
1771
- const electionService = await startupSpanAsync8("ElectionService", () => initElectionService({
1611
+ const electionService = await startupSpanAsync7("ElectionService", () => initElectionService({
1772
1612
  name: "ElectionService",
1773
- chainIterator,
1613
+ blockViewer,
1774
1614
  chainStakeViewer,
1775
1615
  stakeIntentService,
1776
1616
  ...initParams
@@ -1780,19 +1620,19 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1780
1620
  account,
1781
1621
  chainId,
1782
1622
  pendingBundledTransactionsArchivist,
1783
- chainArchivist,
1623
+ blockViewer,
1784
1624
  electionService,
1785
1625
  rewardService,
1786
1626
  stakeIntentService,
1787
1627
  validateHydratedBlockState,
1788
1628
  ...initParams
1789
1629
  };
1790
- const rewardAddress = isDefined14(config2.producer.rewardAddress) ? assertEx19(asAddress2(config2.producer.rewardAddress), () => "Invalid block reward address provided") : account.address;
1630
+ const rewardAddress = isDefined17(config2.producer.rewardAddress) ? assertEx17(asAddress2(config2.producer.rewardAddress), () => "Invalid block reward address provided") : account.address;
1791
1631
  const producerParams = {
1792
1632
  ...validatorParams,
1793
1633
  name: "Producer",
1794
1634
  balanceService,
1795
- chainArchivist,
1635
+ blockViewer,
1796
1636
  pendingBundledTransactionsArchivist,
1797
1637
  pendingTransactionsService,
1798
1638
  rejectedTransactionsArchivist,
@@ -1800,13 +1640,12 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1800
1640
  time,
1801
1641
  ...initParams
1802
1642
  };
1803
- const producer = await startupSpanAsync8("Producer", () => initBlockProducer(producerParams));
1643
+ const producer = await startupSpanAsync7("Producer", () => initBlockProducer(producerParams));
1804
1644
  const services = {
1805
1645
  account,
1806
1646
  balance: balanceService,
1807
- chainArchivist,
1808
1647
  chainContractViewer,
1809
- chainIterator,
1648
+ blockViewer,
1810
1649
  chainStaker,
1811
1650
  chainStakeViewer,
1812
1651
  chainSubmissionsArchivistWrite,
@@ -1822,7 +1661,7 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1822
1661
  balanceSummaryMap,
1823
1662
  ...Object.values(services)
1824
1663
  ].filter(isStartable);
1825
- assertEx19((await Promise.all(startableServices.map((service) => service.start()))).every(Boolean), () => "One or more services failed to start");
1664
+ assertEx17((await Promise.all(startableServices.map((service) => service.start()))).every(Boolean), () => "One or more services failed to start");
1826
1665
  logger?.log("All services started successfully.");
1827
1666
  return {
1828
1667
  ...services,
@@ -1831,7 +1670,7 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1831
1670
  }, "initServices");
1832
1671
 
1833
1672
  // src/runCLI.ts
1834
- import { deepMerge, isDefined as isDefined17 } from "@xylabs/sdk-js";
1673
+ import { deepMerge, isDefined as isDefined21 } from "@xylabs/sdk-js";
1835
1674
  import { ConfigZod } from "@xyo-network/xl1-protocol-sdk";
1836
1675
  import yargs from "yargs";
1837
1676
  import { hideBin } from "yargs/helpers";
@@ -1859,6 +1698,7 @@ function runMempool(context) {
1859
1698
  __name(runMempool, "runMempool");
1860
1699
 
1861
1700
  // src/commands/producer/runProducer.ts
1701
+ import { exists, isDefined as isDefined18 } from "@xylabs/sdk-js";
1862
1702
  var runProducer = /* @__PURE__ */ __name(async (context) => {
1863
1703
  const { config: config2, logger, orchestrator } = context;
1864
1704
  logger?.log("Services: Initializing...");
@@ -1868,11 +1708,8 @@ var runProducer = /* @__PURE__ */ __name(async (context) => {
1868
1708
  ...services,
1869
1709
  config: config2
1870
1710
  };
1871
- const chainHeadUpdate = await ChainHeadUpdateActor.create({
1872
- ...params,
1873
- name: "ChainHeadUpdateActor"
1874
- });
1875
- const balances = await BalanceActor.create({
1711
+ const apiEndpoint = config2.services.apiEndpoint;
1712
+ const balances = isDefined18(apiEndpoint) ? void 0 : await BalanceActor.create({
1876
1713
  ...params,
1877
1714
  name: "BalanceActor"
1878
1715
  });
@@ -1881,10 +1718,9 @@ var runProducer = /* @__PURE__ */ __name(async (context) => {
1881
1718
  name: "ProducerActor"
1882
1719
  });
1883
1720
  const actors = [
1884
- chainHeadUpdate,
1885
1721
  balances,
1886
1722
  producer
1887
- ];
1723
+ ].filter(exists);
1888
1724
  for (const actor of actors) {
1889
1725
  await orchestrator.registerActor(actor);
1890
1726
  }
@@ -1919,16 +1755,16 @@ var XL1LogoColorizedAscii = `\x1B[38;2;128;128;128m\xA0\xA0\xA0\xA0\xA0\xA0\xA0\
1919
1755
  \x1B[38;2;128;128;128m\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\x1B[0m\x1B[38;2;108;93;162m\xB2\x1B[0m\x1B[38;2;99;79;176m^\x1B[0m`;
1920
1756
 
1921
1757
  // src/initLogger.ts
1922
- import { Base as Base2, ConsoleLogger, isDefined as isDefined15, LogLevel, SilentLogger } from "@xylabs/sdk-js";
1758
+ import { Base as Base2, ConsoleLogger, isDefined as isDefined19, LogLevel, SilentLogger } from "@xylabs/sdk-js";
1923
1759
  var initLogger = /* @__PURE__ */ __name((config2) => {
1924
1760
  let logger;
1925
1761
  if (config2.silent) {
1926
1762
  logger = new SilentLogger();
1927
1763
  } else {
1928
1764
  let level;
1929
- if (isDefined15(config2.logLevel)) {
1765
+ if (isDefined19(config2.logLevel)) {
1930
1766
  const parsed = LogLevel[config2.logLevel.toLowerCase()];
1931
- if (isDefined15(parsed)) level = parsed;
1767
+ if (isDefined19(parsed)) level = parsed;
1932
1768
  }
1933
1769
  logger = new ConsoleLogger(level);
1934
1770
  }
@@ -1954,7 +1790,7 @@ var optionsFromGlobalZodRegistry = /* @__PURE__ */ __name(() => {
1954
1790
  }, "optionsFromGlobalZodRegistry");
1955
1791
 
1956
1792
  // src/tryParseConfig.ts
1957
- import { isDefined as isDefined16, isNull } from "@xylabs/sdk-js";
1793
+ import { isDefined as isDefined20, isNull } from "@xylabs/sdk-js";
1958
1794
  import { cosmiconfigSync } from "cosmiconfig";
1959
1795
  var configName = "xyo";
1960
1796
  var configSection = "xl1";
@@ -1963,7 +1799,7 @@ var tryParseConfig = /* @__PURE__ */ __name(() => {
1963
1799
  const result = explorer.search();
1964
1800
  if (!isNull(result)) {
1965
1801
  const section = result?.config?.[configSection];
1966
- if (isDefined16(section) && typeof section === "object") {
1802
+ if (isDefined20(section) && typeof section === "object") {
1967
1803
  return section;
1968
1804
  }
1969
1805
  }
@@ -1993,7 +1829,7 @@ var waitForHostPort = /* @__PURE__ */ __name((host, port) => {
1993
1829
 
1994
1830
  // src/runCLI.ts
1995
1831
  var configuration;
1996
- var version = isDefined17("1.16.25") ? "1.16.25" : "unknown";
1832
+ var version = isDefined21("1.16.26") ? "1.16.26" : "unknown";
1997
1833
  var getContextFromConfig = /* @__PURE__ */ __name((configuration2) => {
1998
1834
  const logger = initLogger(configuration2);
1999
1835
  const orchestrator = new Orchestrator(logger);
@@ -2119,7 +1955,6 @@ var start = /* @__PURE__ */ __name(async () => {
2119
1955
  export {
2120
1956
  Actor,
2121
1957
  BalanceActor,
2122
- ChainHeadUpdateActor,
2123
1958
  LoggerStatusReporter,
2124
1959
  Orchestrator,
2125
1960
  ProducerActor,
@@ -2129,6 +1964,7 @@ export {
2129
1964
  initAccountBalanceService,
2130
1965
  initBlockProducer,
2131
1966
  initBlockRewardService,
1967
+ initBlockViewer,
2132
1968
  initChainService,
2133
1969
  initEvmProvider,
2134
1970
  initHead,