@xyo-network/chain-orchestration 1.19.6 → 1.19.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 (39) hide show
  1. package/dist/neutral/createDeclarationIntentBlock.d.ts +6 -4
  2. package/dist/neutral/createDeclarationIntentBlock.d.ts.map +1 -1
  3. package/dist/neutral/evm/index.d.ts +3 -0
  4. package/dist/neutral/evm/index.d.ts.map +1 -1
  5. package/dist/neutral/evm/initChainId.d.ts +2 -2
  6. package/dist/neutral/evm/initChainId.d.ts.map +1 -1
  7. package/dist/neutral/evm/initEvmProvider.d.ts +2 -2
  8. package/dist/neutral/evm/initEvmProvider.d.ts.map +1 -1
  9. package/dist/neutral/evm/initInfuraProvider.d.ts +4 -4
  10. package/dist/neutral/evm/initInfuraProvider.d.ts.map +1 -1
  11. package/dist/neutral/evm/initJsonRpcProvider.d.ts +3 -3
  12. package/dist/neutral/evm/initJsonRpcProvider.d.ts.map +1 -1
  13. package/dist/neutral/index.mjs +107 -69
  14. package/dist/neutral/index.mjs.map +1 -1
  15. package/dist/neutral/init/index.d.ts +2 -1
  16. package/dist/neutral/init/index.d.ts.map +1 -1
  17. package/dist/neutral/init/initEvmProvidersIfAvailable.d.ts +3 -0
  18. package/dist/neutral/init/initEvmProvidersIfAvailable.d.ts.map +1 -0
  19. package/dist/neutral/init/initFinalizationArchivistIfNeeded.d.ts +5 -0
  20. package/dist/neutral/init/initFinalizationArchivistIfNeeded.d.ts.map +1 -0
  21. package/dist/neutral/orchestrator/Orchestrator.d.ts +4 -4
  22. package/dist/neutral/orchestrator/Orchestrator.d.ts.map +1 -1
  23. package/package.json +12 -11
  24. package/src/evm/index.ts +3 -0
  25. package/src/evm/initChainId.ts +2 -2
  26. package/src/evm/initEvmProvider.ts +3 -4
  27. package/src/evm/initInfuraProvider.ts +5 -4
  28. package/src/evm/initJsonRpcProvider.ts +3 -3
  29. package/src/health/initHealthEndpoints.ts +1 -1
  30. package/src/init/index.ts +2 -1
  31. package/src/init/initEvmProvidersIfAvailable.ts +90 -0
  32. package/src/init/initFinalizationArchivistIfNeeded.ts +42 -0
  33. package/src/init/initProducerAccount.ts +1 -1
  34. package/src/init/initSeedPhrase.ts +1 -1
  35. package/src/init/initWallet.ts +4 -4
  36. package/src/orchestrator/Orchestrator.ts +6 -4
  37. package/dist/neutral/init/initChainStakeViewer.d.ts +0 -10
  38. package/dist/neutral/init/initChainStakeViewer.d.ts.map +0 -1
  39. package/src/init/initChainStakeViewer.ts +0 -56
@@ -18,8 +18,6 @@ export declare function createProducerChainStakeIntentBlock(prevBlock: WithHashM
18
18
  chain: import("@xylabs/hex").BrandedHex;
19
19
  previous: import("@xylabs/hex").BrandedHash | null;
20
20
  $epoch: number;
21
- _hash: import("@xylabs/hex").BrandedHash;
22
- _dataHash: import("@xylabs/hex").BrandedHash;
23
21
  $destination?: (Lowercase<string> & {
24
22
  readonly __hex: true;
25
23
  } & {
@@ -28,9 +26,13 @@ export declare function createProducerChainStakeIntentBlock(prevBlock: WithHashM
28
26
  $sourceQuery?: import("@xylabs/hex").BrandedHash | undefined;
29
27
  protocol?: number | undefined;
30
28
  step_hashes?: import("@xylabs/hex").BrandedHash[] | undefined;
31
- }, {
29
+ } & {
30
+ _hash: import("@xylabs/hex").BrandedHash;
31
+ _dataHash: import("@xylabs/hex").BrandedHash;
32
+ }, ({
32
33
  schema: import("@xyo-network/payload-model").BrandedSchema<string>;
34
+ } & {
33
35
  _hash: import("@xylabs/hex").BrandedHash;
34
36
  _dataHash: import("@xylabs/hex").BrandedHash;
35
- }[]]>;
37
+ })[]]>;
36
38
  //# sourceMappingURL=createDeclarationIntentBlock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createDeclarationIntentBlock.d.ts","sourceRoot":"","sources":["../../src/createDeclarationIntentBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAG5E,wBAAsB,mCAAmC,CAAC,SAAS,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAa3J"}
1
+ {"version":3,"file":"createDeclarationIntentBlock.d.ts","sourceRoot":"","sources":["../../src/createDeclarationIntentBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAG5E,wBAAsB,mCAAmC,CAAC,SAAS,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAa3J"}
@@ -1,2 +1,5 @@
1
+ export * from './initChainId.ts';
1
2
  export * from './initEvmProvider.ts';
3
+ export * from './initInfuraProvider.ts';
4
+ export * from './initJsonRpcProvider.ts';
2
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/evm/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/evm/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA"}
@@ -1,4 +1,4 @@
1
1
  import type { Config } from '@xyo-network/xl1-sdk';
2
- export declare const canUseChainId: (config: Pick<Config, "evm">) => boolean;
3
- export declare const getChainId: (config: Pick<Config, "evm">) => number;
2
+ export declare const canUseChainId: (config: Config) => boolean;
3
+ export declare const getChainId: (config: Config) => number;
4
4
  //# sourceMappingURL=initChainId.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"initChainId.d.ts","sourceRoot":"","sources":["../../../src/evm/initChainId.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAElD,eAAO,MAAM,aAAa,GAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAG,OAE3D,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,WAUrD,CAAA"}
1
+ {"version":3,"file":"initChainId.d.ts","sourceRoot":"","sources":["../../../src/evm/initChainId.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAElD,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,OAE9C,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,WAUxC,CAAA"}
@@ -2,10 +2,10 @@ import type { Logger } from '@xylabs/sdk-js';
2
2
  import type { Config } from '@xyo-network/xl1-sdk';
3
3
  import type { Provider } from 'ethers';
4
4
  export declare const initEvmProvider: ({ config }: {
5
- config: Pick<Config, "evm">;
5
+ config: Config;
6
6
  logger?: Logger;
7
7
  }) => Promise<Provider>;
8
8
  export declare const canUseEvmProvider: ({ config }: {
9
- config: Pick<Config, "evm">;
9
+ config: Config;
10
10
  }) => boolean;
11
11
  //# sourceMappingURL=initEvmProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"initEvmProvider.d.ts","sourceRoot":"","sources":["../../../src/evm/initEvmProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAQtC,eAAO,MAAM,eAAe,GAAU,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC,QAAQ,CAQpH,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,YAE5E,CAAA"}
1
+ {"version":3,"file":"initEvmProvider.d.ts","sourceRoot":"","sources":["../../../src/evm/initEvmProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAOtC,eAAO,MAAM,eAAe,GAAU,YAAY;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC,QAAQ,CAQvG,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,YAAY;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,YAE/D,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import type { Config } from '@xyo-network/xl1-sdk';
2
- import { InfuraProvider } from 'ethers/providers';
3
- export declare const initInfuraProvider: (config: Pick<Config, "evm">) => Promise<InfuraProvider>;
4
- export declare const canUseInfuraProvider: (config: Pick<Config, "evm">) => boolean;
5
- export declare const getInfuraProviderConfig: (config: Pick<Config, "evm">) => readonly [number, string, string];
2
+ import type { Provider } from 'ethers';
3
+ export declare const initInfuraProvider: (config: Config) => Promise<Provider>;
4
+ export declare const canUseInfuraProvider: (config: Config) => boolean;
5
+ export declare const getInfuraProviderConfig: (config: Config) => readonly [number, string, string];
6
6
  //# sourceMappingURL=initInfuraProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"initInfuraProvider.d.ts","sourceRoot":"","sources":["../../../src/evm/initInfuraProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAMjD,eAAO,MAAM,kBAAkB,GAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,4BAK7D,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAG,OAIlE,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,sCAIlE,CAAA"}
1
+ {"version":3,"file":"initInfuraProvider.d.ts","sourceRoot":"","sources":["../../../src/evm/initInfuraProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAOtC,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC,QAAQ,CAKnE,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,QAAQ,MAAM,KAAG,OAIrD,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,QAAQ,MAAM,sCAIrD,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import type { Config } from '@xyo-network/xl1-sdk';
2
2
  import { JsonRpcProvider } from 'ethers/providers';
3
- export declare const initJsonRpcProvider: (config: Pick<Config, "evm">) => Promise<JsonRpcProvider>;
4
- export declare const canUseJsonRpcProvider: (config: Pick<Config, "evm">) => boolean;
5
- export declare const getJsonRpcProviderConfig: (config: Pick<Config, "evm">) => readonly [string, number];
3
+ export declare const initJsonRpcProvider: (config: Config) => Promise<JsonRpcProvider>;
4
+ export declare const canUseJsonRpcProvider: (config: Config) => boolean;
5
+ export declare const getJsonRpcProviderConfig: (config: Config) => readonly [string, number];
6
6
  //# sourceMappingURL=initJsonRpcProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"initJsonRpcProvider.d.ts","sourceRoot":"","sources":["../../../src/evm/initJsonRpcProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAIlD,eAAO,MAAM,mBAAmB,GAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,6BAG9D,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,YAGhE,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,8BAGnE,CAAA"}
1
+ {"version":3,"file":"initJsonRpcProvider.d.ts","sourceRoot":"","sources":["../../../src/evm/initJsonRpcProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAIlD,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,6BAGjD,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,QAAQ,MAAM,YAGnD,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,8BAGtD,CAAA"}
@@ -400,13 +400,6 @@ async function createProducerChainStakeIntentBlock(prevBlock, producerAccount, r
400
400
  }
401
401
  __name(createProducerChainStakeIntentBlock, "createProducerChainStakeIntentBlock");
402
402
 
403
- // src/evm/initEvmProvider.ts
404
- import { assertEx as assertEx9 } from "@xylabs/sdk-js";
405
-
406
- // src/evm/initInfuraProvider.ts
407
- import { assertEx as assertEx7, isDefined as isDefined2 } from "@xylabs/sdk-js";
408
- import { InfuraProvider } from "ethers/providers";
409
-
410
403
  // src/evm/initChainId.ts
411
404
  import { assertEx as assertEx6, hexFrom, isDefined, isHex } from "@xylabs/sdk-js";
412
405
  var canUseChainId = /* @__PURE__ */ __name((config) => {
@@ -426,12 +419,17 @@ var getChainId = /* @__PURE__ */ __name((config) => {
426
419
  }
427
420
  }, "getChainId");
428
421
 
422
+ // src/evm/initEvmProvider.ts
423
+ import { assertEx as assertEx9 } from "@xylabs/sdk-js";
424
+
429
425
  // src/evm/initInfuraProvider.ts
426
+ import { assertEx as assertEx7, isDefined as isDefined2 } from "@xylabs/sdk-js";
427
+ import { InfuraProvider } from "ethers/providers";
430
428
  var instance;
431
429
  var initInfuraProvider = /* @__PURE__ */ __name((config) => {
432
430
  if (instance) return instance;
433
431
  const providerConfig = getInfuraProviderConfig(config);
434
- instance = Promise.resolve(new InfuraProvider(...providerConfig));
432
+ instance = Promise.resolve(new InfuraProvider(providerConfig[0], providerConfig[1]));
435
433
  return instance;
436
434
  }, "initInfuraProvider");
437
435
  var canUseInfuraProvider = /* @__PURE__ */ __name((config) => {
@@ -532,7 +530,7 @@ var createHealthServer = /* @__PURE__ */ __name((port, statusMonitor, logger) =>
532
530
  }, "createHealthServer");
533
531
  var initHealthEndpoints = /* @__PURE__ */ __name((params) => {
534
532
  const { config, logger, statusReporter } = params;
535
- const { healthCheckPort } = config.producer;
533
+ const { healthCheckPort } = config.actors.producer;
536
534
  return isDefined4(healthCheckPort) ? createHealthServer(healthCheckPort, statusReporter, logger) : void 0;
537
535
  }, "initHealthEndpoints");
538
536
 
@@ -640,56 +638,89 @@ var initBridgedArchivistModule = /* @__PURE__ */ __name(async ({ bridge, moduleN
640
638
  })), () => `Could not convert ${moduleName} to attachable archivist instance`);
641
639
  }, "initBridgedArchivistModule");
642
640
 
643
- // src/init/initChainStakeViewer.ts
644
- import { asAddress, assertEx as assertEx12, toAddress, toEthAddress } from "@xylabs/sdk-js";
645
- import { EvmStakeEventsViewer, EvmStakeViewer } from "@xyo-network/chain-sdk";
646
- import { IStakedXyoChain__factory } from "@xyo-network/typechain";
647
- import { SimpleStakeViewer } from "@xyo-network/xl1-sdk";
648
- async function initEvmChainStakeViewer(context, config, logger) {
649
- const provider2 = await initEvmProvider({
650
- config,
651
- logger
652
- });
653
- const contractAddress = assertEx12(config.chain.id, () => "Missing config.evm.chainId");
654
- const contract = IStakedXyoChain__factory.connect(toEthAddress(contractAddress), provider2);
655
- const stakeEventsViewer = await EvmStakeEventsViewer.create({
656
- contract,
657
- logger,
658
- context
659
- });
660
- assertEx12(await stakeEventsViewer.start(), () => "Failed to start EvmStakeEvents reader");
661
- const stakeChainViewer = await EvmStakeViewer.create({
662
- contract,
663
- stakeEventsViewer,
664
- logger,
665
- context
666
- });
667
- assertEx12(await stakeChainViewer.start(), () => "Failed to start EvmStake viewer");
668
- return stakeChainViewer;
669
- }
670
- __name(initEvmChainStakeViewer, "initEvmChainStakeViewer");
671
- async function initSimpleStakeViewer(context, config, logger) {
672
- const stakeViewer = await SimpleStakeViewer.create({
673
- context,
674
- chainId: asAddress(toAddress(1n), true),
675
- logger,
676
- positions: []
677
- });
678
- assertEx12(await stakeViewer.start(), () => "Failed to start SimpleChainStake viewer");
679
- return stakeViewer;
680
- }
681
- __name(initSimpleStakeViewer, "initSimpleStakeViewer");
682
- async function initStakeViewer({ config, logger, context }) {
641
+ // src/init/initEvmProvidersIfAvailable.ts
642
+ import { asEthAddress, assertEx as assertEx12 } from "@xylabs/sdk-js";
643
+ import { EvmChainContractViewer, EvmStakeEventsViewer, EvmStakeTotalsViewer, EvmStakeViewer } from "@xyo-network/chain-ethereum";
644
+ import { SimpleChainContractViewer, SimpleStakeEventsViewer, SimpleStakeTotalsViewer, SimpleStakeViewer, SimpleTimeSyncViewer, XYO_ZERO_ADDRESS } from "@xyo-network/xl1-sdk";
645
+ async function initEvmProvidersIfAvailable(locator) {
646
+ const { config, logger } = locator.context;
683
647
  if (canUseEvmProvider({
684
648
  config
685
649
  })) {
686
- return await initEvmChainStakeViewer(context, config, logger);
650
+ const chainId = assertEx12(config.chain.id, () => "Missing config.chain.chainId (required for EVM providers)");
651
+ const provider2 = await initEvmProvider({
652
+ config,
653
+ logger
654
+ });
655
+ const address = asEthAddress(chainId, true);
656
+ locator.register(EvmStakeEventsViewer.factory(EvmStakeEventsViewer.dependencies, {
657
+ address,
658
+ provider: provider2
659
+ }));
660
+ locator.register(EvmStakeViewer.factory(EvmStakeViewer.dependencies, {
661
+ address,
662
+ provider: provider2
663
+ }));
664
+ locator.register(EvmStakeTotalsViewer.factory(EvmStakeTotalsViewer.dependencies, {
665
+ address,
666
+ provider: provider2
667
+ }));
668
+ locator.register(EvmChainContractViewer.factory(EvmChainContractViewer.dependencies, {
669
+ address,
670
+ provider: provider2
671
+ }));
672
+ locator.register(SimpleTimeSyncViewer.factory(SimpleTimeSyncViewer.dependencies, {
673
+ ethProvider: provider2
674
+ }));
687
675
  } else {
688
- console.warn("[API] Infura configuration not found. Using SimpleChainStakeViewer with no positions. This means no staking data will be available.");
689
- return await initSimpleStakeViewer(context, config, logger);
676
+ logger?.warn("EVM provider not available - running with memory based contract/stake viewers");
677
+ const positions = [];
678
+ const chainId = assertEx12(config.chain.id, () => "Missing config.chain.chainId (required for non-EVM providers)");
679
+ locator.register(SimpleStakeEventsViewer.factory(SimpleStakeEventsViewer.dependencies, {
680
+ positions
681
+ }));
682
+ locator.register(SimpleStakeViewer.factory(SimpleStakeViewer.dependencies, {
683
+ positions
684
+ }));
685
+ locator.register(SimpleStakeTotalsViewer.factory(SimpleStakeTotalsViewer.dependencies, {}));
686
+ locator.register(SimpleChainContractViewer.factory(SimpleChainContractViewer.dependencies, {
687
+ chainId,
688
+ minWithdrawalBlocks: 10,
689
+ stakingTokenAddress: XYO_ZERO_ADDRESS,
690
+ rewardsContract: XYO_ZERO_ADDRESS
691
+ }));
692
+ locator.register(SimpleTimeSyncViewer.factory(SimpleTimeSyncViewer.dependencies, {}));
693
+ }
694
+ return locator;
695
+ }
696
+ __name(initEvmProvidersIfAvailable, "initEvmProvidersIfAvailable");
697
+
698
+ // src/init/initFinalizationArchivistIfNeeded.ts
699
+ import { assertEx as assertEx13 } from "@xylabs/sdk-js";
700
+ import { Account } from "@xyo-network/account";
701
+ import { createBootstrapHead } from "@xyo-network/chain-sdk";
702
+ import { asAttoXL1, findMostRecentBlock, flattenHydratedBlock } from "@xyo-network/xl1-sdk";
703
+ async function initFinalizationArchivistIfNeeded(archivist, config, account) {
704
+ const configuredChainId = config.chain.id;
705
+ const possibleHead = await findMostRecentBlock(archivist);
706
+ if (configuredChainId && possibleHead && possibleHead.chain !== configuredChainId) {
707
+ throw new Error(`Configured chain ID (${configuredChainId}) does not match the existing chain ID (${possibleHead.chain})`);
708
+ }
709
+ let possibleChainId = configuredChainId;
710
+ if (!possibleHead) {
711
+ possibleChainId = possibleChainId ?? (await Account.random()).address;
712
+ const chain = await createBootstrapHead(account, possibleChainId, asAttoXL1(20000000000000000000000n), config.chain.genesisRewardAddress ?? account.address);
713
+ const payloads = chain.flatMap((block) => flattenHydratedBlock(block));
714
+ await archivist.insert(payloads);
690
715
  }
716
+ const head = possibleHead ?? assertEx13(await findMostRecentBlock(archivist), () => "No blocks found in chain archivist");
717
+ const chainId = assertEx13(possibleChainId, () => "Chain ID could not be determined");
718
+ return [
719
+ head,
720
+ chainId
721
+ ];
691
722
  }
692
- __name(initStakeViewer, "initStakeViewer");
723
+ __name(initFinalizationArchivistIfNeeded, "initFinalizationArchivistIfNeeded");
693
724
 
694
725
  // src/init/initFinalizedArchivist.ts
695
726
  import { MongoDBArchivistV2 } from "@xyo-network/archivist-mongodb";
@@ -716,7 +747,7 @@ import { ADDRESS_INDEX, generateXyoBaseWalletFromPhrase } from "@xyo-network/xl1
716
747
  var accountServiceSingleton;
717
748
  var initProducerAccount = /* @__PURE__ */ __name(async ({ config, logger }) => {
718
749
  if (accountServiceSingleton) return accountServiceSingleton;
719
- let walletPhrase = config.producer.mnemonic;
750
+ let walletPhrase = config.actors.producer.mnemonic;
720
751
  if (isUndefined(walletPhrase)) {
721
752
  logger?.warn("[Producer] No wallet mnemonic specified!");
722
753
  const randomMnemonic = HDWallet.generateMnemonic();
@@ -734,12 +765,12 @@ ${randomMnemonic}
734
765
  }, "initProducerAccount");
735
766
 
736
767
  // src/init/initSeedPhrase.ts
737
- import { assertEx as assertEx13, isString } from "@xylabs/sdk-js";
768
+ import { assertEx as assertEx14, isString } from "@xylabs/sdk-js";
738
769
  import { HDWallet as HDWallet2 } from "@xyo-network/wallet";
739
770
  async function initSeedPhrase({ config, logger, bios }) {
740
771
  const storedSeedPhrase = await bios.seedPhraseStore.get("os");
741
772
  logger?.debug(`[API] Stored mnemonic: ${storedSeedPhrase}`);
742
- const { mnemonic } = config.api;
773
+ const { mnemonic } = config.actors.api;
743
774
  if (isString(storedSeedPhrase) && isString(mnemonic)) {
744
775
  logger?.warn("[API] Stored mnemonic does not match supplied. Updating stored mnemonic to supplied.");
745
776
  await bios.seedPhraseStore.set("os", mnemonic);
@@ -754,12 +785,12 @@ async function initSeedPhrase({ config, logger, bios }) {
754
785
  }
755
786
  await bios.seedPhraseStore.set("os", seedPhrase);
756
787
  }
757
- return assertEx13(await bios.seedPhraseStore.get("os"), () => "Unable to acquire mnemonic from bios");
788
+ return assertEx14(await bios.seedPhraseStore.get("os"), () => "Unable to acquire mnemonic from bios");
758
789
  }
759
790
  __name(initSeedPhrase, "initSeedPhrase");
760
791
 
761
792
  // src/init/initServerNode.ts
762
- import { assertEx as assertEx14 } from "@xylabs/sdk-js";
793
+ import { assertEx as assertEx15 } from "@xylabs/sdk-js";
763
794
  import { asArchivistInstance } from "@xyo-network/archivist-model";
764
795
 
765
796
  // src/manifest/getLocator.ts
@@ -995,7 +1026,7 @@ async function writableChainArchivistFromNode(node) {
995
1026
  }
996
1027
  __name(writableChainArchivistFromNode, "writableChainArchivistFromNode");
997
1028
  async function readonlyChainArchivistFromNode(node) {
998
- return assertEx14(asArchivistInstance(await node.resolve("Chain:Validated"), {
1029
+ return assertEx15(asArchivistInstance(await node.resolve("Chain:Validated"), {
999
1030
  required: true
1000
1031
  }));
1001
1032
  }
@@ -1020,7 +1051,7 @@ async function initServerNode({ wallet, logger, config, node: providedNode, tran
1020
1051
  transfersSummaryMap,
1021
1052
  balancesSummaryMap
1022
1053
  });
1023
- assertEx14(await node.start(), () => "Failed to start node");
1054
+ assertEx15(await node.start(), () => "Failed to start node");
1024
1055
  const writableChainArchivist = await writableChainArchivistFromNode(node);
1025
1056
  const readonlyChainArchivist = await readonlyChainArchivistFromNode(node);
1026
1057
  const pendingTransactionsArchivist = await pendingTransactionsArchivistFromNode(node);
@@ -1056,7 +1087,7 @@ __name(initStatusReporter, "initStatusReporter");
1056
1087
 
1057
1088
  // src/init/initTransferSummaryMap.ts
1058
1089
  import { BaseMongoSdk as BaseMongoSdk2 } from "@xylabs/mongo";
1059
- import { assertEx as assertEx15 } from "@xylabs/sdk-js";
1090
+ import { assertEx as assertEx16 } from "@xylabs/sdk-js";
1060
1091
  import { MongoMap as MongoMap2 } from "@xyo-network/chain-protocol";
1061
1092
  import { hasMongoConfig as hasMongoConfig3, MemoryMap as MemoryMap2 } from "@xyo-network/xl1-sdk";
1062
1093
  async function initTransferSummaryMap({ config, logger }) {
@@ -1081,7 +1112,7 @@ async function initTransferSummaryMap({ config, logger }) {
1081
1112
  maxEntries: 5e3
1082
1113
  }
1083
1114
  });
1084
- assertEx15(await result.start(), () => "Failed to start transfer summary map");
1115
+ assertEx16(await result.start(), () => "Failed to start transfer summary map");
1085
1116
  return result;
1086
1117
  } else {
1087
1118
  logger?.warn("[API] Mongo configuration not found. Using MemoryMap for TransferSummaryMap.");
@@ -1105,7 +1136,7 @@ async function initWallet({ config, logger }, mnemonic) {
1105
1136
  }
1106
1137
  __name(initWallet, "initWallet");
1107
1138
  async function initApiWallet({ config, logger }) {
1108
- const { mnemonic } = config.api;
1139
+ const { mnemonic } = config.actors.api;
1109
1140
  return await initWallet({
1110
1141
  config,
1111
1142
  logger
@@ -1113,7 +1144,7 @@ async function initApiWallet({ config, logger }) {
1113
1144
  }
1114
1145
  __name(initApiWallet, "initApiWallet");
1115
1146
  async function initMempoolWallet({ config, logger }) {
1116
- const { mnemonic } = config.mempool;
1147
+ const { mnemonic } = config.actors.mempool;
1117
1148
  return await initWallet({
1118
1149
  config,
1119
1150
  logger
@@ -1121,7 +1152,7 @@ async function initMempoolWallet({ config, logger }) {
1121
1152
  }
1122
1153
  __name(initMempoolWallet, "initMempoolWallet");
1123
1154
  async function initProducerWallet({ config, logger }) {
1124
- const { mnemonic } = config.producer;
1155
+ const { mnemonic } = config.actors.producer;
1125
1156
  return await initWallet({
1126
1157
  config,
1127
1158
  logger
@@ -1129,7 +1160,7 @@ async function initProducerWallet({ config, logger }) {
1129
1160
  }
1130
1161
  __name(initProducerWallet, "initProducerWallet");
1131
1162
  async function initRewardsRedemptionApiWallet({ config, logger }) {
1132
- const { mnemonic } = config.rewardRedemptionApi;
1163
+ const { mnemonic } = config.actors.rewardRedemption;
1133
1164
  return await initWallet({
1134
1165
  config,
1135
1166
  logger
@@ -1213,18 +1244,27 @@ export {
1213
1244
  ServiceLifetime,
1214
1245
  ValidatorActor,
1215
1246
  buildTelemetryConfig,
1247
+ canUseChainId,
1216
1248
  canUseEvmProvider,
1249
+ canUseInfuraProvider,
1250
+ canUseJsonRpcProvider,
1217
1251
  createProducerChainStakeIntentBlock,
1252
+ getChainId,
1253
+ getInfuraProviderConfig,
1254
+ getJsonRpcProviderConfig,
1218
1255
  getLocator,
1219
1256
  initApiWallet,
1220
1257
  initBalanceSummaryMap,
1221
1258
  initBridgedArchivistModule,
1222
1259
  initBridgedModule,
1223
1260
  initChainFinalizedArchivist,
1224
- initEvmChainStakeViewer,
1225
1261
  initEvmProvider,
1262
+ initEvmProvidersIfAvailable,
1263
+ initFinalizationArchivistIfNeeded,
1226
1264
  initFinalizedArchivist,
1227
1265
  initHealthEndpoints,
1266
+ initInfuraProvider,
1267
+ initJsonRpcProvider,
1228
1268
  initMempoolWallet,
1229
1269
  initPendingBlocksArchivist,
1230
1270
  initProducerAccount,
@@ -1233,9 +1273,7 @@ export {
1233
1273
  initRewardsRedemptionApiWallet,
1234
1274
  initSeedPhrase,
1235
1275
  initServerNode,
1236
- initSimpleStakeViewer,
1237
1276
  initStakeIntentStateArchivist,
1238
- initStakeViewer,
1239
1277
  initStatusReporter,
1240
1278
  initTransferSummaryMap,
1241
1279
  loadNode