@xyo-network/chain-orchestration 1.20.21 → 1.20.22

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 (100) hide show
  1. package/dist/browser/index.mjs +176 -124
  2. package/dist/browser/index.mjs.map +1 -1
  3. package/dist/browser/node/config/locators/actors/{validatorLocatorFromConfig.d.ts → finalizerLocatorFromConfig.d.ts} +2 -2
  4. package/dist/{neutral/node/config/locators/actors/validatorLocatorFromConfig.d.ts.map → browser/node/config/locators/actors/finalizerLocatorFromConfig.d.ts.map} +1 -1
  5. package/dist/browser/node/config/locators/actors/index.d.ts +1 -1
  6. package/dist/browser/node/config/locators/actors/index.d.ts.map +1 -1
  7. package/dist/browser/node/config/locators/actors/producerLocatorFromConfig.d.ts.map +1 -1
  8. package/dist/browser/node/config/locators/localLocatorFromConfig.d.ts +1 -1
  9. package/dist/browser/node/config/locators/localLocatorFromConfig.d.ts.map +1 -1
  10. package/dist/browser/node/config/locators/locatorsFromConfig.d.ts +1 -1
  11. package/dist/browser/node/config/locators/locatorsFromConfig.d.ts.map +1 -1
  12. package/dist/browser/node/config/locators/rootLocatorFromConfig.d.ts +1 -1
  13. package/dist/browser/node/config/locators/rootLocatorFromConfig.d.ts.map +1 -1
  14. package/dist/browser/node/config/tryParseConfig.d.ts +3 -154
  15. package/dist/browser/node/config/tryParseConfig.d.ts.map +1 -1
  16. package/dist/browser/node/init/initFinalizationArchivistIfNeeded.d.ts +6 -1
  17. package/dist/browser/node/init/initFinalizationArchivistIfNeeded.d.ts.map +1 -1
  18. package/dist/{neutral/shared/actor/ValidatorActor.d.ts → browser/shared/actor/FinalizerActor.d.ts} +6 -9
  19. package/dist/browser/shared/actor/FinalizerActor.d.ts.map +1 -0
  20. package/dist/browser/shared/actor/index.d.ts +1 -1
  21. package/dist/browser/shared/config/actors/{Validator.d.ts → Finalizer.d.ts} +12 -12
  22. package/dist/browser/shared/config/actors/{Validator.d.ts.map → Finalizer.d.ts.map} +1 -1
  23. package/dist/browser/shared/config/actors/index.d.ts +1 -1
  24. package/dist/browser/shared/config/actors/index.d.ts.map +1 -1
  25. package/dist/browser/shared/index.d.ts +1 -0
  26. package/dist/browser/shared/index.d.ts.map +1 -1
  27. package/dist/browser/shared/init/walletResolution.d.ts +4 -1
  28. package/dist/browser/shared/init/walletResolution.d.ts.map +1 -1
  29. package/dist/browser/shared/provider/SimpleRejectedTransactionsArchivistProvider.d.ts +31 -0
  30. package/dist/browser/shared/provider/SimpleRejectedTransactionsArchivistProvider.d.ts.map +1 -0
  31. package/dist/browser/shared/provider/index.d.ts +2 -0
  32. package/dist/browser/shared/provider/index.d.ts.map +1 -0
  33. package/dist/neutral/index.mjs +176 -124
  34. package/dist/neutral/index.mjs.map +1 -1
  35. package/dist/neutral/node/config/locators/actors/{validatorLocatorFromConfig.d.ts → finalizerLocatorFromConfig.d.ts} +2 -2
  36. package/dist/{browser/node/config/locators/actors/validatorLocatorFromConfig.d.ts.map → neutral/node/config/locators/actors/finalizerLocatorFromConfig.d.ts.map} +1 -1
  37. package/dist/neutral/node/config/locators/actors/index.d.ts +1 -1
  38. package/dist/neutral/node/config/locators/actors/index.d.ts.map +1 -1
  39. package/dist/neutral/node/config/locators/actors/producerLocatorFromConfig.d.ts.map +1 -1
  40. package/dist/neutral/node/config/locators/localLocatorFromConfig.d.ts +1 -1
  41. package/dist/neutral/node/config/locators/localLocatorFromConfig.d.ts.map +1 -1
  42. package/dist/neutral/node/config/locators/locatorsFromConfig.d.ts +1 -1
  43. package/dist/neutral/node/config/locators/locatorsFromConfig.d.ts.map +1 -1
  44. package/dist/neutral/node/config/locators/rootLocatorFromConfig.d.ts +1 -1
  45. package/dist/neutral/node/config/locators/rootLocatorFromConfig.d.ts.map +1 -1
  46. package/dist/neutral/node/config/tryParseConfig.d.ts +3 -154
  47. package/dist/neutral/node/config/tryParseConfig.d.ts.map +1 -1
  48. package/dist/neutral/node/init/initFinalizationArchivistIfNeeded.d.ts +6 -1
  49. package/dist/neutral/node/init/initFinalizationArchivistIfNeeded.d.ts.map +1 -1
  50. package/dist/{node/shared/actor/ValidatorActor.d.ts → neutral/shared/actor/FinalizerActor.d.ts} +6 -9
  51. package/dist/neutral/shared/actor/FinalizerActor.d.ts.map +1 -0
  52. package/dist/neutral/shared/actor/index.d.ts +1 -1
  53. package/dist/neutral/shared/config/actors/{Validator.d.ts → Finalizer.d.ts} +12 -12
  54. package/dist/neutral/shared/config/actors/{Validator.d.ts.map → Finalizer.d.ts.map} +1 -1
  55. package/dist/neutral/shared/config/actors/index.d.ts +1 -1
  56. package/dist/neutral/shared/config/actors/index.d.ts.map +1 -1
  57. package/dist/neutral/shared/index.d.ts +1 -0
  58. package/dist/neutral/shared/index.d.ts.map +1 -1
  59. package/dist/neutral/shared/init/walletResolution.d.ts +4 -1
  60. package/dist/neutral/shared/init/walletResolution.d.ts.map +1 -1
  61. package/dist/neutral/shared/provider/SimpleRejectedTransactionsArchivistProvider.d.ts +31 -0
  62. package/dist/neutral/shared/provider/SimpleRejectedTransactionsArchivistProvider.d.ts.map +1 -0
  63. package/dist/neutral/shared/provider/index.d.ts +2 -0
  64. package/dist/neutral/shared/provider/index.d.ts.map +1 -0
  65. package/dist/node/index.mjs +272 -173
  66. package/dist/node/index.mjs.map +1 -1
  67. package/dist/node/node/config/locators/actors/{validatorLocatorFromConfig.d.ts → finalizerLocatorFromConfig.d.ts} +2 -2
  68. package/dist/node/node/config/locators/actors/{validatorLocatorFromConfig.d.ts.map → finalizerLocatorFromConfig.d.ts.map} +1 -1
  69. package/dist/node/node/config/locators/actors/index.d.ts +1 -1
  70. package/dist/node/node/config/locators/actors/index.d.ts.map +1 -1
  71. package/dist/node/node/config/locators/actors/producerLocatorFromConfig.d.ts.map +1 -1
  72. package/dist/node/node/config/locators/localLocatorFromConfig.d.ts +1 -1
  73. package/dist/node/node/config/locators/localLocatorFromConfig.d.ts.map +1 -1
  74. package/dist/node/node/config/locators/locatorsFromConfig.d.ts +1 -1
  75. package/dist/node/node/config/locators/locatorsFromConfig.d.ts.map +1 -1
  76. package/dist/node/node/config/locators/rootLocatorFromConfig.d.ts +1 -1
  77. package/dist/node/node/config/locators/rootLocatorFromConfig.d.ts.map +1 -1
  78. package/dist/node/node/config/tryParseConfig.d.ts +3 -154
  79. package/dist/node/node/config/tryParseConfig.d.ts.map +1 -1
  80. package/dist/node/node/init/initFinalizationArchivistIfNeeded.d.ts +6 -1
  81. package/dist/node/node/init/initFinalizationArchivistIfNeeded.d.ts.map +1 -1
  82. package/dist/{browser/shared/actor/ValidatorActor.d.ts → node/shared/actor/FinalizerActor.d.ts} +6 -9
  83. package/dist/node/shared/actor/FinalizerActor.d.ts.map +1 -0
  84. package/dist/node/shared/actor/index.d.ts +1 -1
  85. package/dist/node/shared/config/actors/{Validator.d.ts → Finalizer.d.ts} +12 -12
  86. package/dist/node/shared/config/actors/{Validator.d.ts.map → Finalizer.d.ts.map} +1 -1
  87. package/dist/node/shared/config/actors/index.d.ts +1 -1
  88. package/dist/node/shared/config/actors/index.d.ts.map +1 -1
  89. package/dist/node/shared/index.d.ts +1 -0
  90. package/dist/node/shared/index.d.ts.map +1 -1
  91. package/dist/node/shared/init/walletResolution.d.ts +4 -1
  92. package/dist/node/shared/init/walletResolution.d.ts.map +1 -1
  93. package/dist/node/shared/provider/SimpleRejectedTransactionsArchivistProvider.d.ts +31 -0
  94. package/dist/node/shared/provider/SimpleRejectedTransactionsArchivistProvider.d.ts.map +1 -0
  95. package/dist/node/shared/provider/index.d.ts +2 -0
  96. package/dist/node/shared/provider/index.d.ts.map +1 -0
  97. package/package.json +20 -20
  98. package/dist/browser/shared/actor/ValidatorActor.d.ts.map +0 -1
  99. package/dist/neutral/shared/actor/ValidatorActor.d.ts.map +0 -1
  100. package/dist/node/shared/actor/ValidatorActor.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/shared/actor/ValidatorActor.ts","../../src/shared/buildTelemetryConfig.ts","../../src/shared/config/actors/Api.ts","../../src/shared/config/actors/accountIndex.ts","../../src/shared/config/actors/Bridge.ts","../../src/shared/config/actors/Mempool.ts","../../src/shared/config/actors/Producer.ts","../../src/shared/config/actors/RewardRedemption.ts","../../src/shared/config/actors/Validator.ts","../../src/shared/config/mergeConfig.ts","../../src/shared/createDeclarationIntentBlock.ts","../../src/shared/host/implementation/DefaultHost.ts","../../src/shared/host/implementation/DefaultServiceProvider.ts","../../src/shared/host/model/ServiceCollection.ts","../../src/shared/init/initActorAccount.ts","../../src/shared/init/walletResolution.ts","../../src/shared/init/initActorSeedPhrase.ts","../../src/shared/init/initBridgedModule.ts","../../src/shared/init/initStatusReporter.ts","../../src/shared/init/initWallet.ts","../../src/shared/orchestrator/Orchestrator.ts","../../src/node/config/locators/basicRemoteRunnerLocator.ts","../../src/node/config/locators/basicRemoteViewerLocator.ts","../../src/node/config/locators/telemetryContextFromConfig.ts","../../src/node/config/locators/contextFromConfigWithoutLocator.ts","../../src/node/config/locators/localLocatorFromConfig.ts","../../src/node/init/initBalanceSummaryMap.ts","../../src/node/init/initEvmProvidersIfAvailable.ts","../../src/node/init/initFinalizationArchivistIfNeeded.ts","../../src/node/init/initFinalizedArchivist.ts","../../src/node/init/initServerNode.ts","../../src/node/manifest/getLocator.ts","../../src/node/manifest/NamedLmdbArchivist.ts","../../src/node/manifest/loadNode.ts","../../src/node/manifest/node.json","../../src/node/manifest/nodeManifest.ts","../../src/node/manifest/private/index.ts","../../src/node/manifest/public/Chain.json","../../src/node/manifest/public/DeadLetterQueue.json","../../src/node/manifest/public/Pending.json","../../src/node/manifest/public/index.ts","../../src/node/init/initTransferSummaryMap.ts","../../src/node/config/locators/locatorsFromConfig.ts","../../src/node/config/locators/actors/apiLocatorFromConfig.ts","../../src/node/config/locators/actors/bridgeLocatorFromConfig.ts","../../src/node/config/locators/actors/mempoolLocatorFromConfig.ts","../../src/node/config/locators/actors/producerLocatorFromConfig.ts","../../src/node/config/locators/actors/rewardRedemptionLocatorFromConfig.ts","../../src/node/config/locators/actors/validatorLocatorFromConfig.ts","../../src/node/config/locators/rootLocatorFromConfig.ts","../../src/node/config/tryParseConfig.ts","../../src/node/index.ts"],"sourcesContent":["import type { Hash } from '@xylabs/sdk-js'\nimport { creatable } from '@xylabs/sdk-js'\nimport { processPendingBlocks } from '@xyo-network/chain-sdk'\nimport type {\n ActorParamsV3, BlockBoundWitness, BlockValidationViewer, BlockViewer,\n DeadLetterQueueRunner,\n FinalizationRunner,\n MempoolViewer,\n} from '@xyo-network/xl1-sdk'\nimport {\n ActorV3, BlockValidationViewerMoniker, BlockViewerMoniker,\n DeadLetterQueueRunnerMoniker,\n FinalizationRunnerMoniker,\n MempoolViewerMoniker,\n} from '@xyo-network/xl1-sdk'\n\nimport type { ValidatorConfig } from '../config/index.ts'\n\nexport type ValidatorActorParams = ActorParamsV3<\n {\n config: ValidatorConfig\n }>\n\n@creatable()\nexport class ValidatorActor extends ActorV3<ValidatorActorParams> {\n protected _blockValidationViewer!: BlockValidationViewer\n protected _blockViewer!: BlockViewer\n protected _deadLetterQueueRunner?: DeadLetterQueueRunner\n protected _finalizationRunner!: FinalizationRunner\n protected _lastValidatedBlock: BlockBoundWitness | undefined\n protected _lastValidatedBlockHash: Hash | undefined\n protected _mempoolViewer!: MempoolViewer\n\n protected get allowedProducers() {\n return this.params.config.allowedProducers ?? []\n }\n\n protected get blockValidationViewer() {\n return this._blockValidationViewer\n }\n\n protected get blockViewer() {\n return this._blockViewer\n }\n\n protected get finalizationRunner() {\n return this._finalizationRunner\n }\n\n protected get mempoolViewer() {\n return this._mempoolViewer\n }\n\n protected get minCandidates() {\n return this.params.config.minCandidates\n }\n\n override async createHandler() {\n await super.startHandler()\n this._blockValidationViewer = await this.locator.getInstance(BlockValidationViewerMoniker)\n this._blockViewer = await this.locator.getInstance(BlockViewerMoniker)\n this._finalizationRunner = await this.locator.getInstance(FinalizationRunnerMoniker)\n this._mempoolViewer = await this.locator.getInstance(MempoolViewerMoniker)\n this._deadLetterQueueRunner = await this.locator.tryGetInstance<DeadLetterQueueRunner>(DeadLetterQueueRunnerMoniker)\n }\n\n override async startHandler(): Promise<void> {\n await super.startHandler()\n this.registerTimer('ValidatorActor', async () => {\n await this.spanAsync('processPendingBlocks', async () => {\n this.logger?.debug('ValidatorActor: Processing pending blocks...')\n await processPendingBlocks({\n blockValidationViewer: this.blockValidationViewer,\n context: this.context,\n logger: this.logger,\n mempoolViewer: this.mempoolViewer,\n blockViewer: this.blockViewer,\n finalizationRunner: this.finalizationRunner,\n allowedProducers: this.allowedProducers,\n minCandidates: this.minCandidates,\n deadLetterQueueRunner: this._deadLetterQueueRunner,\n })\n }, { ...this.context, timeBudgetLimit: 1500 })\n }, 2000, 500)\n }\n}\n","import type { Config } from '@xyo-network/xl1-sdk'\n\nexport function buildTelemetryConfig(config: Config, serviceName: string, serviceVersion: string, defaultMetricsScrapePort = 9464) {\n const { otlpEndpoint } = config.telemetry?.otel ?? {}\n const { path: endpoint = '/metrics', port = defaultMetricsScrapePort } = config.telemetry?.metrics?.scrape ?? {}\n const telemetryConfig = {\n attributes: { serviceName, serviceVersion }, otlpEndpoint, metricsConfig: { endpoint, port },\n }\n return telemetryConfig\n}\n","import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nimport { ActorAccountIndexZod } from './accountIndex.ts'\n\nexport const ApiConfigZod = HostActorConfigZod.extend(z.object({\n accountIndex: ActorAccountIndexZod('api.accountIndex'),\n initRewardsCache: z.union([z.number(), z.string(), z.boolean()]).transform(\n v => v !== '0' && v !== 'false' && v !== false && v != 0,\n ).default(true).register(globalRegistry, {\n description: 'Whether to initialize the rewards cache on startup',\n title: 'api.initRewardsCache',\n type: 'boolean',\n }),\n}).shape)\n\nexport type ApiConfig = z.infer<typeof ApiConfigZod>\n\nexport const isApiConfig = zodIsFactory(ApiConfigZod)\nexport const asApiConfig = zodAsFactory(ApiConfigZod, 'asApiConfig')\nexport const toApiConfig = zodToFactory(ApiConfigZod, 'toApiConfig')\n\nexport interface ApiConfigContext extends Omit<BaseConfigContext, 'config'> {\n config: ApiConfig\n}\n\nexport const ApiConfigContext: z.ZodType<ApiConfigContext> = BaseConfigContextZod.extend({ config: ApiConfigZod })\n\nexport const isApiConfigContext: <T>(value: T) => value is T & ApiConfigContext = zodIsFactory(ApiConfigContext)\nexport const asApiConfigContext: ReturnType<typeof zodAsFactory<ApiConfigContext>> = zodAsFactory(ApiConfigContext, 'asApiConfigContext')\nexport const toApiConfigContext: ReturnType<typeof zodToFactory<ApiConfigContext>> = zodToFactory(ApiConfigContext, 'toApiConfigContext')\n","import { globalRegistry, z } from 'zod'\n\nexport const ActorAccountIndexZod = (title: string) => z.coerce.number().int().min(0).optional().register(globalRegistry, {\n description: 'Account index derived from the actor wallet phrase. Defaults to 0 for actor mnemonics and to the actor-specific shared index for the root mnemonic.',\n title,\n type: 'number',\n})\n","import {\n AddressZod, HexZod, toAddress, toHex, zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport type { BaseConfigContext, ChainId } from '@xyo-network/xl1-sdk'\nimport {\n AttoXL1ConvertFactor, BaseConfigContextZod, HostActorConfigZod, XL1,\n} from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nimport { ActorAccountIndexZod } from './accountIndex.ts'\n\nconst DEFAULT_FIXED_FEE = toHex(XL1(1000n) * AttoXL1ConvertFactor.xl1)\nconst DEFAULT_VARIABLE_FEE_BASIS_POINTS = 300 // 3%\nconst DEFAULT_HARDHAT_BRIDGE_CONTRACT = toAddress('2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6')\nconst DEFAULT_HARDHAT_CHAIN_ID: ChainId = toHex('7A69')\nconst DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY = toHex('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80')\nconst DEFAULT_HARDHAT_TOKEN_CONTRACT = toAddress('5FbDB2315678afecb367f032d93F642f64180aa3')\nconst DEFAULT_MAX_BRIDGE_AMOUNT = toHex(XL1(1_000_000n) * AttoXL1ConvertFactor.xl1)\nconst DEFAULT_MIN_BRIDGE_AMOUNT = toHex(XL1(1500n) * AttoXL1ConvertFactor.xl1)\n\nexport const BasisPointsZod = z.coerce.number().int().nonnegative().max(10_000)\nexport type BasisPoints = z.infer<typeof BasisPointsZod>\n\nexport const BridgeConfigZod = HostActorConfigZod.extend({\n accountIndex: ActorAccountIndexZod('bridge.accountIndex'),\n escrowAddress: AddressZod.optional().register(globalRegistry, {\n description: 'Address to which bridge escrow will be sent',\n title: 'bridge.escrowAddress',\n type: 'string',\n }),\n feesAddress: AddressZod.optional().register(globalRegistry, {\n description: 'Address to which bridge fees will be sent',\n title: 'bridge.feesAddress',\n type: 'string',\n }),\n feeFixed: HexZod.default(DEFAULT_FIXED_FEE).register(globalRegistry, {\n default: DEFAULT_FIXED_FEE,\n description: 'Fixed fee (in AttoXL1) applied to bridge transfers',\n title: 'bridge.feeFixed',\n type: 'bigint',\n }),\n feeRateBasisPoints: BasisPointsZod.default(DEFAULT_VARIABLE_FEE_BASIS_POINTS).register(globalRegistry, {\n default: DEFAULT_VARIABLE_FEE_BASIS_POINTS,\n description: 'Variable rate fee (in basis points where 1 bps = 0.01%) applied to bridge transfers',\n title: 'bridge.feeRateBasisPoints',\n type: 'number',\n }),\n maxBridgeAmount: HexZod.default(DEFAULT_MAX_BRIDGE_AMOUNT).register(globalRegistry, {\n default: DEFAULT_MAX_BRIDGE_AMOUNT,\n description: 'Maximum amount allowed for a bridge transfer',\n title: 'bridge.maxBridgeAmount',\n type: 'string',\n }),\n minBridgeAmount: HexZod.default(DEFAULT_MIN_BRIDGE_AMOUNT).register(globalRegistry, {\n default: DEFAULT_MIN_BRIDGE_AMOUNT,\n description: 'Minimum amount required for a bridge transfer',\n title: 'bridge.minBridgeAmount',\n type: 'string',\n }),\n redisHost: z.string().default('localhost').register(globalRegistry, {\n default: 'localhost',\n description: 'Host for the Bridge Redis instance',\n title: 'bridge.redisHost',\n type: 'string',\n }),\n redisPort: z.coerce.number().int().positive().default(6379).register(globalRegistry, {\n default: 6379,\n description: 'Port for the Bridge Redis instance',\n title: 'bridge.redisPort',\n type: 'number',\n }),\n remoteBridgeContractAddress: AddressZod.default(DEFAULT_HARDHAT_BRIDGE_CONTRACT).register(globalRegistry, {\n default: DEFAULT_HARDHAT_BRIDGE_CONTRACT,\n description: 'Hex representation of remote token address used for bridging',\n title: 'bridge.remoteBridgeContractAddress',\n type: 'string',\n }),\n remoteChainId: HexZod.default(DEFAULT_HARDHAT_CHAIN_ID).register(globalRegistry, {\n default: DEFAULT_HARDHAT_CHAIN_ID,\n description: 'Remote chain ID',\n title: 'bridge.remoteChainId',\n type: 'string',\n }),\n remoteTokenAddress: HexZod.default(DEFAULT_HARDHAT_TOKEN_CONTRACT).register(globalRegistry, {\n default: DEFAULT_HARDHAT_TOKEN_CONTRACT,\n description: 'Hex representation of remote token address used for bridging',\n title: 'bridge.remoteTokenAddress',\n type: 'string',\n }),\n remoteChainWalletPrivateKey: HexZod.default(DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY).register(globalRegistry, {\n description: 'Private key for the wallet to use for the remote chain wallet',\n title: 'bridge.remoteChainWalletPrivateKey',\n type: 'string',\n }),\n xl1ChainId: HexZod.optional().register(globalRegistry, {\n description: 'XL1 chain id used for bridging',\n title: 'bridge.xl1ChainId',\n type: 'string',\n }),\n xl1TokenAddress: HexZod.optional().register(globalRegistry, {\n description: 'XL1 token address used for bridging',\n title: 'bridge.xl1TokenAddress',\n type: 'string',\n }),\n})\n\nexport type BridgeConfig = z.infer<typeof BridgeConfigZod>\n\nexport const BridgeSettingsZod = BridgeConfigZod.pick({\n feeFixed: true,\n feeRateBasisPoints: true,\n feesAddress: true,\n escrowAddress: true,\n maxBridgeAmount: true,\n minBridgeAmount: true,\n remoteChainId: true,\n remoteTokenAddress: true,\n xl1TokenAddress: true,\n xl1ChainId: true,\n}).required()\n\nexport type BridgeSettings = z.infer<typeof BridgeSettingsZod>\n\nexport const isBridgeConfig = zodIsFactory(BridgeConfigZod)\nexport const asBridgeConfig = zodAsFactory(BridgeConfigZod, 'asBridgeConfig')\nexport const toBridgeConfig = zodToFactory(BridgeConfigZod, 'toBridgeConfig')\n\nexport interface BridgeConfigContext extends Omit<BaseConfigContext, 'config'> {\n config: BridgeConfig\n}\n\nexport const BridgeConfigContext: z.ZodType<BridgeConfigContext> = BaseConfigContextZod.extend({ config: BridgeConfigZod })\n\nexport const isBridgeConfigContext: <T>(value: T) => value is T & BridgeConfigContext = zodIsFactory(BridgeConfigContext)\nexport const asBridgeConfigContext: ReturnType<typeof zodAsFactory<BridgeConfigContext>> = zodAsFactory(BridgeConfigContext, 'asBridgeConfigContext')\nexport const toBridgeConfigContext: ReturnType<typeof zodToFactory<BridgeConfigContext>> = zodToFactory(BridgeConfigContext, 'toBridgeConfigContext')\n","import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nimport { ActorAccountIndexZod } from './accountIndex.ts'\n\nexport const DEFAULT_MEMPOOL_BLOCK_PRUNE_INTERVAL = 1000\nexport const DEFAULT_MEMPOOL_TRANSACTION_PRUNE_INTERVAL = 1000\n\nexport const MempoolConfigZod = HostActorConfigZod.extend({\n accountIndex: ActorAccountIndexZod('mempool.accountIndex'),\n enabled: z.union([z.string(), z.boolean()]).default('false').transform((val, ctx) => {\n if (typeof val === 'boolean') return val\n const normalized = val.toLowerCase().trim()\n if (['true', '1', 'yes', 'on'].includes(normalized)) return true\n if (['false', '0', 'no', 'off'].includes(normalized)) return false\n ctx.addIssue({\n code: 'invalid_type',\n expected: 'boolean',\n message: `Invalid boolean value: \"${val}\". Use true/false, 1/0, yes/no.`,\n })\n return z.NEVER\n }).register(globalRegistry, {\n default: 'false',\n description: 'Enable the Mempool',\n title: 'mempool.enabled',\n type: 'boolean',\n }),\n blockPruneInterval: z.coerce.number().default(DEFAULT_MEMPOOL_BLOCK_PRUNE_INTERVAL).register(globalRegistry, {\n description: 'The interval time (in milliseconds) between pending block prune attempts',\n title: 'mempool.blockPruneInterval',\n type: 'number',\n }),\n transactionPruneInterval: z.coerce.number().default(DEFAULT_MEMPOOL_TRANSACTION_PRUNE_INTERVAL).register(globalRegistry, {\n description: 'The interval time (in milliseconds) between pending transaction prune attempts',\n title: 'mempool.transactionPruneInterval',\n type: 'number',\n }),\n})\n\nexport type MempoolConfig = z.infer<typeof MempoolConfigZod>\n\nexport const isMempoolConfig = zodIsFactory(MempoolConfigZod)\nexport const asMempoolConfig = zodAsFactory(MempoolConfigZod, 'asMempoolConfig')\nexport const toMempoolConfig = zodToFactory(MempoolConfigZod, 'toMempoolConfig')\n\nexport interface MempoolConfigContext extends Omit<BaseConfigContext, 'config'> {\n config: MempoolConfig\n}\n\nexport const MempoolConfigContext: z.ZodType<MempoolConfigContext> = BaseConfigContextZod.extend({ config: MempoolConfigZod })\n\nexport const isMempoolConfigContext: <T>(value: T) => value is T & MempoolConfigContext = zodIsFactory(MempoolConfigContext)\nexport const asMempoolConfigContext: ReturnType<typeof zodAsFactory<MempoolConfigContext>> = zodAsFactory(MempoolConfigContext, 'asMempoolConfigContext')\nexport const toMempoolConfigContext: ReturnType<typeof zodToFactory<MempoolConfigContext>> = zodToFactory(MempoolConfigContext, 'toMempoolConfigContext')\n","import {\n AddressZod, asAddress,\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { ActorConfigZod, BaseConfigContextZod } from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nimport { ActorAccountIndexZod } from './accountIndex.ts'\n\nexport const DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL = 10_000 // 10 seconds\n\nexport const ProducerConfigZod = ActorConfigZod.extend(z.object({\n accountIndex: ActorAccountIndexZod('producer.accountIndex'),\n allowlist: z.preprocess((val) => {\n if (typeof val === 'string') {\n return val.split(',').map(s => asAddress(s.trim()))\n }\n return val\n }, z.array(AddressZod).optional().register(globalRegistry, {\n description: 'List of allowed producer addresses, if undefined anyone can participate',\n title: 'allowlist',\n type: 'array',\n })),\n\n blockProductionCheckInterval: z.coerce.number().default(DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL).register(globalRegistry, {\n description: 'The interval time (in milliseconds) between block production attempts',\n title: 'producer.blockProductionCheckInterval',\n type: 'number',\n }),\n disableIntentRedeclaration: z.boolean().optional().register(globalRegistry, {\n description: 'Should the producer skip redeclaring their intent to continue producing blocks',\n title: 'producer.disableIntentRedeclaration',\n type: 'boolean',\n }),\n heartbeatInterval: z.coerce.number().default(3_600_000).register(globalRegistry, {\n description: 'The number of milliseconds between heartbeats if no blocks are produced',\n title: 'producer.heartbeatInterval',\n type: 'number',\n }),\n // TODO: BigInt schema\n minStake: z.coerce.number().default(1).register(globalRegistry, {\n description: 'Minimum stake required to be a Producer',\n title: 'producer.minStake',\n type: 'number',\n }),\n // TODO: Address schema\n rewardAddress: z.string().optional().register(globalRegistry, {\n description: 'Address to receive block rewards',\n title: 'producer.rewardAddress',\n type: 'string',\n }),\n}).shape)\n\nexport type ProducerConfig = z.infer<typeof ProducerConfigZod>\n\nexport const isProducerConfig = zodIsFactory(ProducerConfigZod)\nexport const asProducerConfig = zodAsFactory(ProducerConfigZod, 'asProducerConfig')\nexport const toProducerConfig = zodToFactory(ProducerConfigZod, 'toProducerConfig')\n\nexport interface ProducerConfigContext extends Omit<BaseConfigContext, 'config'> {\n config: ProducerConfig\n}\n\nexport const ProducerConfigContext: z.ZodType<ProducerConfigContext> = BaseConfigContextZod.extend({ config: ProducerConfigZod })\n\nexport const isProducerConfigContext: <T>(value: T) => value is T & ProducerConfigContext = zodIsFactory(ProducerConfigContext)\nexport const asProducerConfigContext: ReturnType<typeof zodAsFactory<ProducerConfigContext>> = zodAsFactory(ProducerConfigContext, 'asProducerConfigContext')\nexport const toProducerConfigContext: ReturnType<typeof zodToFactory<ProducerConfigContext>> = zodToFactory(ProducerConfigContext, 'toProducerConfigContext')\n","import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'\nimport type { z } from 'zod'\n\nimport { ActorAccountIndexZod } from './accountIndex.ts'\n\nexport const RewardRedemptionConfigZod = HostActorConfigZod.extend({ accountIndex: ActorAccountIndexZod('rewardRedemption.accountIndex') })\n\nexport type RewardRedemptionConfig = z.infer<typeof RewardRedemptionConfigZod>\n\nexport const isRewardRedemptionConfig = zodIsFactory(RewardRedemptionConfigZod)\nexport const asRewardRedemptionConfig = zodAsFactory(RewardRedemptionConfigZod, 'asRewardRedemptionConfig')\nexport const toRewardRedemptionConfig = zodToFactory(RewardRedemptionConfigZod, 'toRewardRedemptionConfig')\n\nexport interface RewardRedemptionConfigContext extends Omit<BaseConfigContext, 'config'> {\n config: RewardRedemptionConfig\n}\n\nexport const RewardRedemptionConfigContext: z.ZodType<RewardRedemptionConfigContext> = BaseConfigContextZod.extend({ config: RewardRedemptionConfigZod })\n\nexport const isRewardRedemptionConfigContext: <T>(value: T) => value is T & RewardRedemptionConfigContext = zodIsFactory(RewardRedemptionConfigContext)\nexport const asRewardRedemptionConfigContext: ReturnType<typeof zodAsFactory<RewardRedemptionConfigContext>> = zodAsFactory(RewardRedemptionConfigContext, 'asRewardRedemptionConfigContext')\nexport const toRewardRedemptionConfigContext: ReturnType<typeof zodToFactory<RewardRedemptionConfigContext>> = zodToFactory(RewardRedemptionConfigContext, 'toRewardRedemptionConfigContext')\n","import {\n AddressZod,\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'\nimport { z } from 'zod'\n\nimport { ActorAccountIndexZod } from './accountIndex.ts'\n\nexport const ValidatorConfigZod = HostActorConfigZod.extend({\n accountIndex: ActorAccountIndexZod('validator.accountIndex'),\n allowedProducers: z.array(AddressZod).optional(),\n minCandidates: z.number().int().min(0).default(1),\n})\n\nexport type ValidatorConfig = z.infer<typeof ValidatorConfigZod>\n\nexport const isValidatorConfig = zodIsFactory(ValidatorConfigZod)\nexport const asValidatorConfig = zodAsFactory(ValidatorConfigZod, 'asValidatorConfig')\nexport const toValidatorConfig = zodToFactory(ValidatorConfigZod, 'toValidatorConfig')\n\nexport interface ValidatorConfigContext extends Omit<BaseConfigContext, 'config'> {\n config: ValidatorConfig\n}\n\nexport const ValidatorConfigContext: z.ZodType<ValidatorConfigContext> = BaseConfigContextZod.extend({ config: ValidatorConfigZod })\n\nexport const isValidatorConfigContext: <T>(value: T) => value is T & ValidatorConfigContext = zodIsFactory(ValidatorConfigContext)\nexport const asValidatorConfigContext: ReturnType<typeof zodAsFactory<ValidatorConfigContext>> = zodAsFactory(ValidatorConfigContext, 'asValidatorConfigContext')\nexport const toValidatorConfigContext: ReturnType<typeof zodToFactory<ValidatorConfigContext>> = zodToFactory(ValidatorConfigContext, 'toValidatorConfigContext')\n","import { deepMerge } from '@xylabs/sdk-js'\nimport type { Config } from '@xyo-network/xl1-sdk'\n\nexport function mergeConfig({ actors, ...baseConfig }: Config) {\n return {\n ...baseConfig,\n actors: actors.map((actor) => {\n return deepMerge(baseConfig, actor)\n }),\n }\n}\n","import { buildNextBlock } from '@xyo-network/chain-sdk'\nimport type { AccountInstance, WithHashMeta } from '@xyo-network/sdk-js'\nimport type { BlockBoundWitness, XL1BlockRange } from '@xyo-network/xl1-sdk'\nimport { createDeclarationIntent } from '@xyo-network/xl1-sdk'\n\nexport async function createProducerChainStakeIntentBlock(prevBlock: WithHashMeta<BlockBoundWitness>, producerAccount: AccountInstance, range: XL1BlockRange) {\n const producerDeclarationPayload = createDeclarationIntent(\n producerAccount.address,\n 'producer',\n range[0],\n range[1],\n )\n return await buildNextBlock(\n prevBlock,\n [],\n [producerDeclarationPayload],\n [producerAccount],\n )\n}\n","import type { Host, ServiceProvider } from '../model/index.ts'\n\n/**\n * A generic host implementation that can be used as a starting point for\n * more complex host implementations.\n */\nexport class GenericHost implements Host {\n services: ServiceProvider\n\n constructor(services: ServiceProvider) {\n this.services = services\n }\n\n async start(): Promise<void> {\n await Promise.resolve()\n // Initialize or start your services here\n console.log('Host is starting...')\n }\n\n async stop(): Promise<void> {\n await Promise.resolve()\n // Stop or clean up services here\n console.log('Host is stopping...')\n }\n}\n","import type { ServiceProvider } from '../model/index.ts'\n\nexport class DefaultServiceProvider implements ServiceProvider {\n protected _services: Record<string, unknown>\n constructor(services: Record<string, unknown>) {\n this._services = services\n }\n\n getService<T>(serviceIdentifier: string): T | undefined {\n return this._services[serviceIdentifier] as T\n }\n}\n","import type { ServiceProvider } from './ServiceProvider.ts'\n\nexport interface ServiceCollection {\n build(): ServiceProvider\n}\n\n/**\n * Represents the lifetime of a service\n */\nexport const ServiceLifetime = {\n Singleton: 'Singleton',\n Transient: 'Transient',\n} as const\n\n/**\n * Describes a single service registration\n */\nexport interface ServiceDescriptor<T = unknown> {\n identifier: string | symbol\n implementationFactory: () => T\n lifetime: keyof typeof ServiceLifetime\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type { ActorConfigContext } from '@xyo-network/xl1-sdk'\n\nimport { resolveWalletForActor } from './walletResolution.ts'\n\nconst actorAccountSingletons: Record<string, Promisable<WalletInstance>> = {}\n\nexport async function initActorAccount({ config, logger }: Pick<ActorConfigContext, 'config' | 'logger'>): Promise<WalletInstance> {\n const actorName = config.name\n if (isDefined(actorAccountSingletons[actorName])) return actorAccountSingletons[actorName]\n const accountIndex = 'accountIndex' in config && typeof config.accountIndex === 'number' ? config.accountIndex : undefined\n const account = await resolveWalletForActor(actorName, config.mnemonic, accountIndex)\n logger?.debug(`[${actorName}] Using wallet address ${account.address}`)\n actorAccountSingletons[actorName] = account\n return actorAccountSingletons[actorName]\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type { ActorConfig, Config } from '@xyo-network/xl1-sdk'\nimport { DEFAULT_WALLET_PATH, generateXyoBaseWalletFromPhrase } from '@xyo-network/xl1-sdk'\n\nexport const BUILT_IN_DEV_MNEMONIC = 'crane ribbon cook cousin tobacco vital moral protect merit knock veteran hint knee ocean nurse'\nexport const INSECURE_GENESIS_REWARD_MNEMONIC = 'test test test test test test test test test test test junk'\nexport const GENESIS_REWARD_AMOUNT = 20_000_000_000_000_000_000_000n\nconst ATTO_XL1_PER_XL1 = 1_000_000_000_000_000_000n\n\nexport const ROOT_WALLET_RUNTIME_ID = '_root'\nexport const SHARED_ACCOUNT_REPORT_COUNT = 10\nexport type RootMnemonicConfig = Config & { mnemonic?: string }\ntype ActorWalletConfig = Partial<ActorConfig> & { accountIndex?: number; mnemonic?: string }\n\nexport type WalletSource = 'root' | 'actor'\nexport type MnemonicKind = 'built-in-dev' | 'configured-root' | 'configured-actor'\n\nexport interface ResolvedRootWallet {\n basePath: string\n isBuiltInDevMnemonic: boolean\n mnemonic: string\n mnemonicKind: Extract<MnemonicKind, 'built-in-dev' | 'configured-root'>\n}\n\nexport interface ResolvedWalletMetadata {\n accountIndex: number\n actorName: string\n address: string\n derivationPath: string\n label: string\n mnemonic: string\n mnemonicKind: MnemonicKind\n privateKey?: string\n source: WalletSource\n usesBuiltInDevMnemonic: boolean\n}\n\nexport interface ResolvedWalletReport {\n actorSpecificAccounts: ResolvedWalletMetadata[]\n insecureGenesisRewardAccounts?: ResolvedWalletMetadata[]\n requestedActors: string[]\n root: ResolvedRootWallet\n sharedAccounts: ResolvedWalletMetadata[]\n}\n\nconst RESERVED_ACTOR_INDEX: Record<string, number> = {\n [ROOT_WALLET_RUNTIME_ID]: 0,\n api: 4,\n bridge: 2,\n mempool: 5,\n producer: 1,\n rewardRedemption: 3,\n validator: 6,\n}\n\nconst ACTOR_LABELS: Record<string, string> = {\n [ROOT_WALLET_RUNTIME_ID]: 'root/local-node',\n api: 'api',\n bridge: 'bridge',\n mempool: 'mempool',\n producer: 'producer',\n rewardRedemption: 'rewardRedemption',\n validator: 'validator',\n}\n\nlet activeWalletReport: ResolvedWalletReport | undefined\n\nfunction getAccountLabel(actorName: string): string {\n return ACTOR_LABELS[actorName] ?? actorName\n}\n\nexport function clearResolvedWalletReport() {\n activeWalletReport = undefined\n}\n\nexport function getReservedActorIndex(actorName: string): number {\n return RESERVED_ACTOR_INDEX[actorName] ?? 0\n}\n\nexport function getBuiltInDevMnemonic(): string {\n return BUILT_IN_DEV_MNEMONIC\n}\n\nexport function getInsecureGenesisRewardMnemonic(): string {\n return INSECURE_GENESIS_REWARD_MNEMONIC\n}\n\nexport function resolveRootWallet(configuration: RootMnemonicConfig): ResolvedRootWallet {\n const mnemonic = configuration.mnemonic ?? BUILT_IN_DEV_MNEMONIC\n const isBuiltInDevMnemonic = mnemonic === BUILT_IN_DEV_MNEMONIC\n return {\n basePath: DEFAULT_WALLET_PATH,\n isBuiltInDevMnemonic,\n mnemonic,\n mnemonicKind: isBuiltInDevMnemonic ? 'built-in-dev' : 'configured-root',\n }\n}\n\nasync function resolveWalletMetadata({\n accountIndex,\n actorName,\n mnemonic,\n mnemonicKind,\n source,\n}: {\n accountIndex: number\n actorName: string\n mnemonic: string\n mnemonicKind: MnemonicKind\n source: WalletSource\n}): Promise<ResolvedWalletMetadata> {\n const wallet = await generateXyoBaseWalletFromPhrase(mnemonic)\n const derivationPath = `${DEFAULT_WALLET_PATH}/${accountIndex}`\n const account = await wallet.derivePath(`${accountIndex}`)\n return {\n accountIndex,\n actorName,\n address: account.address,\n derivationPath,\n label: getAccountLabel(actorName),\n mnemonic,\n mnemonicKind,\n privateKey: account.privateKey,\n source,\n usesBuiltInDevMnemonic: mnemonic === BUILT_IN_DEV_MNEMONIC,\n }\n}\n\nexport async function resolveActorWallet(\n actorName: string,\n actorConfig: ActorWalletConfig | undefined,\n root: ResolvedRootWallet,\n): Promise<ResolvedWalletMetadata> {\n const actorMnemonic = actorConfig?.mnemonic\n const accountIndex = actorConfig?.accountIndex\n return await resolveWalletMetadata(actorMnemonic\n ? {\n accountIndex: accountIndex ?? 0,\n actorName,\n mnemonic: actorMnemonic,\n mnemonicKind: 'configured-actor',\n source: 'actor',\n }\n : {\n accountIndex: accountIndex ?? getReservedActorIndex(actorName),\n actorName,\n mnemonic: root.mnemonic,\n mnemonicKind: root.mnemonicKind,\n source: 'root',\n })\n}\n\nexport async function resolveWalletReport(\n requestedActors: string[],\n configuration: RootMnemonicConfig,\n): Promise<ResolvedWalletReport> {\n const root = resolveRootWallet(configuration)\n const actorConfigMap = new Map(configuration.actors.map(actor => [actor.name, actor]))\n\n const resolvedActors = await Promise.all(\n requestedActors.map(async actorName => await resolveActorWallet(actorName, actorConfigMap.get(actorName), root)),\n )\n\n const labelMap = new Map<number, string[]>([[0, [getAccountLabel(ROOT_WALLET_RUNTIME_ID)]]])\n for (const actor of resolvedActors) {\n if (actor.source !== 'root') continue\n const labels = labelMap.get(actor.accountIndex) ?? []\n labels.push(actor.label)\n labelMap.set(actor.accountIndex, labels)\n }\n\n const sharedAccounts = await Promise.all(\n Array.from({ length: SHARED_ACCOUNT_REPORT_COUNT }, (_, index) => index).map(async (accountIndex) => {\n const account = await resolveWalletMetadata({\n accountIndex,\n actorName: ROOT_WALLET_RUNTIME_ID,\n mnemonic: root.mnemonic,\n mnemonicKind: root.mnemonicKind,\n source: 'root',\n })\n const labels = labelMap.get(accountIndex)\n return { ...account, label: labels?.join(', ') ?? `shared[${accountIndex}]` }\n }),\n )\n\n const insecureGenesisRewardAccounts = configuration.chain.genesisRewardAddress\n ? undefined\n : await Promise.all(\n Array.from({ length: SHARED_ACCOUNT_REPORT_COUNT }, (_, index) => index).map(async (accountIndex) => {\n const account = await resolveWalletMetadata({\n accountIndex,\n actorName: 'genesisReward',\n mnemonic: INSECURE_GENESIS_REWARD_MNEMONIC,\n mnemonicKind: 'configured-actor',\n source: 'actor',\n })\n return { ...account, label: accountIndex === 0 ? 'genesisRewardAddress' : `genesisReward[${accountIndex}]` }\n }),\n )\n\n return {\n actorSpecificAccounts: resolvedActors.filter(actor => actor.source === 'actor'),\n insecureGenesisRewardAccounts,\n requestedActors: [...requestedActors],\n root,\n sharedAccounts,\n }\n}\n\nexport async function initializeResolvedWalletReport(\n requestedActors: string[],\n configuration: RootMnemonicConfig,\n): Promise<ResolvedWalletReport> {\n activeWalletReport = await resolveWalletReport(requestedActors, configuration)\n return activeWalletReport\n}\n\nexport function getResolvedWalletReport(): ResolvedWalletReport | undefined {\n return activeWalletReport\n}\n\nfunction formatSharedAccount(account: ResolvedWalletMetadata, showPrivateKey: boolean) {\n const lines = [\n `[${account.accountIndex}] ${account.label}`,\n `source: ${account.mnemonicKind === 'built-in-dev' ? 'built-in dev mnemonic' : 'configured root mnemonic'}`,\n `path: ${account.derivationPath}`,\n `address: ${account.address}`,\n ]\n if (showPrivateKey) lines.push(`privateKey: ${account.privateKey ?? 'unavailable'}`)\n return lines.join('\\n')\n}\n\nfunction formatActorSpecificAccount(account: ResolvedWalletMetadata) {\n return [\n account.label,\n 'source: actor mnemonic',\n `path: ${account.derivationPath}`,\n `address: ${account.address}`,\n ].join('\\n')\n}\n\nfunction formatGenesisRewardAccount(account: ResolvedWalletMetadata) {\n const balance = account.accountIndex === 0 ? GENESIS_REWARD_AMOUNT / ATTO_XL1_PER_XL1 : 0n\n return [\n `[${account.accountIndex}] ${account.label}`,\n `path: ${account.derivationPath}`,\n `address: ${account.address}`,\n `privateKey: ${account.privateKey ?? 'unavailable'}`,\n `balance: ${balance.toString()} XL1`,\n ].join('\\n')\n}\n\nexport function formatWalletReport(report: ResolvedWalletReport): string {\n const sections: string[] = []\n const showSecrets = report.root.isBuiltInDevMnemonic\n\n sections.push(showSecrets ? 'Development wallet detected.' : 'Wallet summary')\n\n if (showSecrets) {\n sections.push([\n 'DEVELOPMENT WALLET WARNING',\n '',\n 'XL1 is using the built-in development mnemonic.',\n 'This mnemonic is fixed, public, and does not change between runs.',\n 'The addresses and private keys below are unsafe and must never be used for real funds, production systems, or shared environments.',\n 'Anyone with this information can fully control these accounts.',\n '',\n 'Mnemonic:',\n report.root.mnemonic,\n ].join('\\n'))\n }\n\n sections.push([\n `Shared wallet accounts from ${report.root.basePath}:`,\n '',\n report.sharedAccounts.map(account => formatSharedAccount(account, showSecrets)).join('\\n\\n'),\n ].join('\\n'))\n\n if (report.actorSpecificAccounts.length > 0) {\n sections.push([\n 'Actor-specific wallet accounts:',\n '',\n report.actorSpecificAccounts.map(account => formatActorSpecificAccount(account)).join('\\n\\n'),\n ].join('\\n'))\n }\n\n if (report.insecureGenesisRewardAccounts) {\n sections.push([\n 'INSECURE GENESIS REWARD WALLET WARNING',\n '',\n 'XL1 is using a public, insecure fallback wallet for the genesis reward address.',\n 'This phrase is intentionally unsafe and must never be used for real funds, production systems, or shared environments.',\n 'Anyone with this information can fully control the genesis reward wallet.',\n '',\n 'Genesis reward phrase:',\n INSECURE_GENESIS_REWARD_MNEMONIC,\n '',\n `The genesis reward is sent to index 0 and starts with ${(GENESIS_REWARD_AMOUNT / ATTO_XL1_PER_XL1).toString()} XL1.`,\n '',\n `Genesis reward wallet accounts from ${DEFAULT_WALLET_PATH}:`,\n '',\n report.insecureGenesisRewardAccounts.map(account => formatGenesisRewardAccount(account)).join('\\n\\n'),\n ].join('\\n'))\n }\n\n return sections.join('\\n\\n')\n}\n\nexport async function resolveGenesisRewardAddress(config: Pick<Config, 'chain'>): Promise<Address> {\n if (config.chain.genesisRewardAddress) return config.chain.genesisRewardAddress\n const wallet = await generateXyoBaseWalletFromPhrase(INSECURE_GENESIS_REWARD_MNEMONIC)\n const account = await wallet.derivePath('0')\n return account.address\n}\n\nexport async function resolveWalletForActor(\n actorName: string,\n mnemonic?: string,\n accountIndex?: number,\n): Promise<WalletInstance> {\n const fromReport = activeWalletReport\n ? actorName === ROOT_WALLET_RUNTIME_ID\n ? activeWalletReport.sharedAccounts.find(account => account.accountIndex === 0)\n : activeWalletReport.actorSpecificAccounts.find(account => account.actorName === actorName)\n ?? activeWalletReport.sharedAccounts.find(account => account.actorName === actorName || account.label.split(', ').includes(getAccountLabel(actorName)))\n : undefined\n\n const resolvedMnemonic = fromReport?.mnemonic ?? mnemonic ?? BUILT_IN_DEV_MNEMONIC\n const resolvedAccountIndex = fromReport?.accountIndex ?? accountIndex ?? 0\n\n const wallet = await generateXyoBaseWalletFromPhrase(resolvedMnemonic)\n return await wallet.derivePath(`${resolvedAccountIndex}`)\n}\n","import { assertEx, isString } from '@xylabs/sdk-js'\nimport type { BiosExternalInterface } from '@xyo-network/bios-model'\nimport type { WalletKind } from '@xyo-network/storage-model'\nimport type { ActorConfigContext } from '@xyo-network/xl1-sdk'\n\nimport {\n getBuiltInDevMnemonic, getResolvedWalletReport, ROOT_WALLET_RUNTIME_ID,\n} from './walletResolution.ts'\n\nexport async function initActorSeedPhrase(context: ActorConfigContext, bios: BiosExternalInterface): Promise<string> {\n const { logger, config } = context\n const walletKind = config.name as WalletKind\n void bios\n const report = getResolvedWalletReport()\n const account = config.name === ROOT_WALLET_RUNTIME_ID ? report?.sharedAccounts.find(entry => entry.accountIndex === 0) : report?.actorSpecificAccounts.find(entry => entry.actorName === config.name)\n if (isString(account?.mnemonic)) return account.mnemonic\n if (isString(report?.root.mnemonic)) return report.root.mnemonic\n if (isString(config.mnemonic)) return config.mnemonic\n const fallback = getBuiltInDevMnemonic()\n logger?.debug(`[${walletKind}] Falling back to built-in development mnemonic`)\n return assertEx(fallback, () => 'Unable to resolve mnemonic')\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport type {\n AttachableArchivistInstance, AttachableModuleInstance, BridgeInstance, ModuleIdentifier,\n} from '@xyo-network/sdk-js'\nimport { asAttachableArchivistInstance, asAttachableModuleInstance } from '@xyo-network/sdk-js'\nimport { Mutex } from 'async-mutex'\n\nconst initMutex = new Mutex()\ntype ModuleDictionary = Record<ModuleIdentifier, AttachableModuleInstance | undefined>\ntype BridgedModuleDictionary = Record<Address, ModuleDictionary | undefined>\nconst bridgedModuleDictionary: BridgedModuleDictionary = {}\n\nexport async function initBridgedModule({ bridge, moduleName }: { bridge: BridgeInstance; moduleName: ModuleIdentifier }): Promise<AttachableModuleInstance> {\n return await initMutex.runExclusive(async () => {\n const existing = bridgedModuleDictionary?.[bridge.address]?.[moduleName]\n if (existing) return existing\n const mod = assertEx(await bridge.resolve(moduleName), () => `Could not resolve ${moduleName}`)\n const moduleInstance = assertEx(asAttachableModuleInstance(mod), () => `Could not convert ${moduleName} to attachable module instance`)\n // Initialize the nested dictionary if needed\n let moduleMap = bridgedModuleDictionary[bridge.address]\n if (moduleMap === undefined) {\n moduleMap = {}\n bridgedModuleDictionary[bridge.address] = moduleMap\n }\n // Store and return the module instance\n moduleMap[moduleName] = moduleInstance\n return moduleInstance\n })\n}\n\nexport async function initBridgedArchivistModule({ bridge, moduleName }: {\n bridge: BridgeInstance\n moduleName: ModuleIdentifier\n}): Promise<AttachableArchivistInstance> {\n return assertEx(\n asAttachableArchivistInstance(await initBridgedModule({ bridge, moduleName })),\n () => `Could not convert ${moduleName} to attachable archivist instance`,\n )\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { RuntimeStatusMonitor } from '@xyo-network/xl1-sdk'\n\nexport function initStatusReporter({ logger }: { logger: Logger }) {\n const statusReporter = new RuntimeStatusMonitor(logger)\n statusReporter.onGlobalTransition({ to: 'started' }, () => {\n logger.log('All services started.')\n })\n statusReporter.onGlobalTransition({ to: 'error' }, () => {\n logger.error('Producer encountered an unhandled error!')\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(1)\n })\n return statusReporter\n}\n","import type { ActorConfigContext } from '@xyo-network/xl1-sdk'\n\nimport { resolveWalletForActor, ROOT_WALLET_RUNTIME_ID } from './walletResolution.ts'\n\nexport async function initActorWallet(context: ActorConfigContext, mnemonic?: string) {\n const actorName = context.config.name === ROOT_WALLET_RUNTIME_ID ? ROOT_WALLET_RUNTIME_ID : context.config.name\n const accountIndex = 'accountIndex' in context.config && typeof context.config.accountIndex === 'number'\n ? context.config.accountIndex\n : undefined\n return await resolveWalletForActor(\n actorName,\n mnemonic ?? context.config.mnemonic,\n accountIndex,\n )\n}\n\n// export async function initApiWallet({ config, logger }: ConfigContext) {\n// const { mnemonic } = config.actors.api\n// return await initWallet({ config, logger }, mnemonic)\n// }\n\n// export async function initBridgeWallet({ config, logger }: ConfigContext) {\n// const { mnemonic } = config.actors.bridge\n// return await initWallet({ config, logger }, mnemonic)\n// }\n\n// export async function initMempoolWallet({ config, logger }: ConfigContext) {\n// const { mnemonic } = config.actors.mempool\n// return await initWallet({ config, logger }, mnemonic)\n// }\n\n// export async function initProducerWallet({ config, logger }: ConfigContext) {\n// const { mnemonic } = config.actors.producer\n// return await initWallet({ config, logger }, mnemonic)\n// }\n\n// export async function initRewardsRedemptionApiWallet({ config, logger }: ConfigContext) {\n// const { mnemonic } = config.actors.rewardRedemption\n// return await initWallet({ config, logger }, mnemonic)\n// }\n\n// export async function initValidatorWallet({ config, logger }: ConfigContext) {\n// const { mnemonic } = config.actors.mempool\n// return await initWallet({ config, logger }, mnemonic)\n// }\n","import type { CreatableInstance } from '@xylabs/sdk-js'\nimport { AbstractCreatable, creatable } from '@xylabs/sdk-js'\nimport type { ActorInstanceV3 } from '@xyo-network/xl1-sdk'\n\nexport interface OrchestratorInstance extends CreatableInstance {\n registerActor(actor: ActorInstanceV3): Promise<void>\n}\n\n@creatable()\nexport class Orchestrator extends AbstractCreatable implements OrchestratorInstance {\n protected actors: (ActorInstanceV3)[] = []\n protected keepAliveHandle: NodeJS.Timeout | null = null\n protected running = false\n\n /**\n * Registers an actor.\n * (We won't activate the actor until `start()` is called.)\n */\n async registerActor(actor: ActorInstanceV3) {\n if (this.running) {\n // If the orchestrator is already running, activate the actor immediately\n await actor.start()\n }\n this.actors.push(actor)\n }\n\n /**\n * Starts the orchestrator: activates all actors.\n */\n override async startHandler() {\n await super.startHandler()\n if (this.running) {\n this.logger?.warn('[Orchestrator] Already started.')\n return\n }\n\n this.logger?.log('[Orchestrator] Starting...')\n this.running = true\n for (const actor of this.actors) {\n await actor.start()\n }\n // This interval will fire every 24.8 days (2^31 - 1 ms), effectively never finishing\n this.keepAliveHandle = setInterval(() => {\n // No-op\n }, 2_147_483_647)\n }\n\n /**\n * Stops the orchestrator: deactivates all actors.\n */\n override async stopHandler() {\n await super.stopHandler()\n if (!this.running) {\n this.logger?.log('[Orchestrator] Already stopped.')\n return\n }\n\n this.logger?.log('[Orchestrator] Stopping...')\n for (const actor of this.actors) {\n await actor.stop()\n }\n this.running = false\n if (this.keepAliveHandle) clearInterval(this.keepAliveHandle)\n this.logger?.log('[Orchestrator] Stopped...')\n }\n}\n","import type { AccountInstance } from '@xyo-network/sdk-js'\nimport { isAccountInstance } from '@xyo-network/sdk-js'\nimport type {\n BlockValidators,\n RemoteConfig, RpcTransport, XyoSignerRpcSchemas,\n} from '@xyo-network/xl1-sdk'\nimport {\n basicRemoteRunnerLocator as sdkBasicRemoteRunnerLocator,\n JsonRpcAccountBalanceViewer,\n JsonRpcXyoSigner,\n SimpleXyoSigner,\n} from '@xyo-network/xl1-sdk'\n\nfunction signerFactoryFromParam(signer: RpcTransport<XyoSignerRpcSchemas> | AccountInstance) {\n if (isAccountInstance(signer)) {\n return SimpleXyoSigner.factory<SimpleXyoSigner>(SimpleXyoSigner.dependencies, { account: signer })\n }\n return JsonRpcXyoSigner.factory<JsonRpcXyoSigner>(JsonRpcXyoSigner.dependencies, { transport: signer })\n}\n\nexport function basicRemoteRunnerLocator(\n name: string,\n remoteConfig: RemoteConfig,\n signer: RpcTransport<XyoSignerRpcSchemas> | AccountInstance,\n dataLakeEndpoint?: string,\n validators?: BlockValidators,\n) {\n const transport = isAccountInstance(signer) ? undefined as never : signer\n return sdkBasicRemoteRunnerLocator(name, remoteConfig, transport, dataLakeEndpoint, {\n additionalProviders: [\n JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>(\n JsonRpcAccountBalanceViewer.dependencies,\n {},\n ),\n ],\n signerFactory: signerFactoryFromParam(signer),\n skipGatewayRunner: true,\n validators,\n })\n}\n","import type { BlockValidators, RemoteConfig } from '@xyo-network/xl1-sdk'\nimport {\n basicRemoteViewerLocator as sdkBasicRemoteViewerLocator,\n JsonRpcAccountBalanceViewer,\n} from '@xyo-network/xl1-sdk'\n\nexport function basicRemoteViewerLocator(\n name: string,\n remoteConfig: RemoteConfig,\n dataLakeEndpoint?: string,\n validators?: BlockValidators,\n) {\n return sdkBasicRemoteViewerLocator(name, remoteConfig, dataLakeEndpoint, {\n additionalProviders: [\n JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>(\n JsonRpcAccountBalanceViewer.dependencies,\n {},\n ),\n ],\n validators,\n })\n}\n","import { initTelemetry } from '@xyo-network/chain-telemetry'\nimport type { Config } from '@xyo-network/xl1-sdk'\n\nexport async function telemetryContextFromConfig(config: Config, serviceName: string, serviceVersion: string) {\n const { otlpEndpoint } = config.telemetry?.otel ?? {}\n const { path: endpoint = '/metrics', port: port = 9466 } = config.telemetry?.metrics?.scrape ?? {}\n return await initTelemetry({\n attributes: {\n serviceName,\n serviceVersion,\n },\n otlpEndpoint,\n metricsConfig: { endpoint, port },\n })\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport type { Config, CreatableProviderContext } from '@xyo-network/xl1-sdk'\n\nimport { initStatusReporter } from '../../../shared/index.ts'\nimport { telemetryContextFromConfig } from './telemetryContextFromConfig.ts'\n\nexport async function contextFromConfigWithoutLocator(\n config: Config,\n logger: Logger,\n serviceName: string,\n serviceVersion: string,\n): Promise<Omit<CreatableProviderContext, 'locator'>> {\n const singletons = {}\n const caches = {}\n const telemetryConfig = await telemetryContextFromConfig(config, serviceName, serviceVersion)\n const statusReporter = initStatusReporter({ logger })\n return {\n ...telemetryConfig,\n config,\n singletons,\n caches,\n logger,\n statusReporter,\n }\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport { validateHydratedBlock, validateHydratedBlockState } from '@xyo-network/chain-validation'\nimport type { ActorConfigContext, HydratedBlockStateValidationFunction } from '@xyo-network/xl1-sdk'\nimport {\n BlockCumulativeBalanceValidatorFactory,\n ProviderFactoryLocator,\n SimpleAccountBalanceViewer,\n SimpleBlockValidationViewer,\n SimpleBlockViewer,\n SimpleDeadLetterQueueRunner,\n SimpleDeadLetterQueueViewer,\n SimpleFinalizationRunner,\n SimpleFinalizationViewer,\n SimpleMempoolRunner,\n SimpleMempoolViewer,\n SimpleTransactionValidationViewer,\n SimpleTransactionViewer,\n SimpleWindowedBlockViewer,\n SimpleXyoConnectionViewer,\n SimpleXyoViewer,\n validateTransaction,\n} from '@xyo-network/xl1-sdk'\n\nimport { initActorWallet } from '../../../shared/index.ts'\nimport {\n initBalanceSummaryMap, initFinalizationArchivistIfNeeded,\n initServerNode, initTransferSummaryMap,\n} from '../../init/index.ts'\n\nconst cumulativeBalanceValidator = BlockCumulativeBalanceValidatorFactory()\n\nconst validateHydratedBlockStateWithCumulativeBalance: HydratedBlockStateValidationFunction = async (context, block) => {\n const [stateErrors, cumulativeErrors] = await Promise.all([\n validateHydratedBlockState(context, block),\n cumulativeBalanceValidator(context, block),\n ])\n return [...stateErrors, ...cumulativeErrors]\n}\n\nexport async function localLocatorFromConfig(\n context: ActorConfigContext,\n validateDepsOnRegister = false,\n) {\n const balancesSummaryMap = assertEx(await initBalanceSummaryMap(context), () => 'Balance Summary Map not initialized')\n const transfersSummaryMap = assertEx(await initTransferSummaryMap(context), () => 'Transfer Summary Map not initialized')\n\n // TODO: this should not be an api wallet, but a server wallet\n const wallet = await initActorWallet(context)\n\n const {\n writableChainArchivist,\n readonlyChainArchivist,\n pendingTransactionsArchivist,\n pendingBlocksArchivist,\n rejectedBlocksArchivist,\n rejectedTransactionsArchivist,\n } = await initServerNode(\n context,\n wallet,\n )\n\n await initFinalizationArchivistIfNeeded(writableChainArchivist, context.config, wallet)\n\n const locator = new ProviderFactoryLocator(context, {}, validateDepsOnRegister)\n locator.registerMany([\n SimpleMempoolViewer.factory<SimpleMempoolViewer>(SimpleMempoolViewer.dependencies, { pendingTransactionsArchivist, pendingBlocksArchivist }),\n SimpleMempoolRunner.factory<SimpleMempoolRunner>(SimpleMempoolRunner.dependencies, { pendingTransactionsArchivist, pendingBlocksArchivist }),\n SimpleAccountBalanceViewer.factory<SimpleAccountBalanceViewer>(SimpleAccountBalanceViewer.dependencies, { balancesSummaryMap, transfersSummaryMap }),\n SimpleFinalizationViewer.factory<SimpleFinalizationViewer>(SimpleFinalizationViewer.dependencies, { finalizedArchivist: readonlyChainArchivist }),\n SimpleBlockViewer.factory<SimpleBlockViewer>(SimpleBlockViewer.dependencies, { finalizedArchivist: readonlyChainArchivist }),\n SimpleWindowedBlockViewer.factory<SimpleWindowedBlockViewer>(SimpleWindowedBlockViewer.dependencies, { maxWindowSize: 1000, syncInterval: 10_000 }),\n SimpleXyoConnectionViewer.factory<SimpleXyoConnectionViewer>(SimpleXyoConnectionViewer.dependencies, {}),\n SimpleTransactionViewer.factory<SimpleTransactionViewer>(SimpleTransactionViewer.dependencies, {}),\n SimpleXyoViewer.factory<SimpleXyoViewer>(SimpleXyoViewer.dependencies, {}),\n SimpleFinalizationViewer.factory<SimpleFinalizationViewer>(SimpleFinalizationViewer.dependencies, { finalizedArchivist: readonlyChainArchivist }),\n SimpleFinalizationRunner.factory<SimpleFinalizationRunner>(SimpleFinalizationRunner.dependencies, { finalizedArchivist: writableChainArchivist }),\n SimpleBlockValidationViewer.factory<SimpleBlockValidationViewer>(\n SimpleBlockValidationViewer.dependencies,\n { state: validateHydratedBlockStateWithCumulativeBalance, protocol: validateHydratedBlock },\n ),\n SimpleTransactionValidationViewer.factory<SimpleTransactionValidationViewer>(\n SimpleTransactionValidationViewer.dependencies,\n { protocol: validateTransaction },\n ),\n SimpleDeadLetterQueueRunner.factory<SimpleDeadLetterQueueRunner>(\n SimpleDeadLetterQueueRunner.dependencies,\n { rejectedBlocksArchivist, rejectedTransactionsArchivist },\n ),\n SimpleDeadLetterQueueViewer.factory<SimpleDeadLetterQueueViewer>(\n SimpleDeadLetterQueueViewer.dependencies,\n { rejectedBlocksArchivist, rejectedTransactionsArchivist },\n ),\n ])\n return locator\n}\n","import { BaseMongoSdk, type BaseMongoSdkPrivateConfig } from '@xylabs/mongo'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport { MongoMap } from '@xyo-network/chain-protocol-driver-mongodb'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BalancesStepSummary, BaseConfigContext, MapType,\n} from '@xyo-network/xl1-sdk'\nimport { hasMongoConfig, MemoryMap } from '@xyo-network/xl1-sdk'\n\nexport async function initBalanceSummaryMap({ logger, config }: BaseConfigContext): Promise<MapType<string, WithStorageMeta<BalancesStepSummary>>> {\n const mongoConfig = config.storage?.mongo\n if (hasMongoConfig(mongoConfig)) {\n // Create the MongoDB SDK from the configuration\n const {\n connectionString: dbConnectionString, database: dbName, domain: dbDomain, password: dbPassword, username: dbUserName,\n } = mongoConfig\n const payloadSdkConfig: BaseMongoSdkPrivateConfig = {\n dbConnectionString, dbDomain, dbName, dbPassword, dbUserName,\n }\n\n const sdkBalanceSummaryMap = new BaseMongoSdk<WithStorageMeta<BalancesStepSummary>>({ ...payloadSdkConfig, collection: 'balance_summary_map' })\n const result = await MongoMap.create<MongoMap<Hash, WithStorageMeta<BalancesStepSummary>>>({\n sdk: sdkBalanceSummaryMap,\n getCache: { enabled: true, maxEntries: 5000 },\n })\n assertEx(await result.start(), () => 'Failed to start transfer summary map')\n return result\n } else {\n logger?.warn('[API] Mongo configuration not found. Using MemoryMap for BalanceSummaryMap.')\n return new MemoryMap<string, WithStorageMeta<BalancesStepSummary>>()\n }\n}\n","import { asEthAddress } from '@xylabs/sdk-js'\nimport {\n EvmChainContractViewer, EvmStakeEventsViewer, EvmStakeTotalsViewer, EvmStakeViewer,\n} from '@xyo-network/chain-ethereum'\nimport { canUseEvmProvider, initEvmProvider } from '@xyo-network/chain-orchestration-evm'\nimport type {\n ChainId,\n Position,\n ProviderFactoryLocatorInstance,\n} from '@xyo-network/xl1-sdk'\nimport {\n SimpleChainContractViewer,\n SimpleStakeEventsViewer, SimpleStakeTotalsViewer, SimpleStakeViewer, SimpleTimeSyncViewer,\n XYO_ZERO_ADDRESS,\n} from '@xyo-network/xl1-sdk'\n\n/* TODO: Rename function since it initializes both EVM and non-EVM providers */\nexport async function initEvmProvidersIfAvailable(\n locator: ProviderFactoryLocatorInstance,\n): Promise<ProviderFactoryLocatorInstance> {\n const context = locator.context\n const { logger } = context\n if (canUseEvmProvider(context) && context.config.chain.id) {\n const chainId = context.config.chain.id as ChainId\n const provider = await initEvmProvider(context)\n const address = asEthAddress(chainId, true)\n\n // Register the contract events viewer\n locator.register(EvmStakeEventsViewer.factory<EvmStakeEventsViewer>(\n EvmStakeEventsViewer.dependencies,\n { address, provider },\n ))\n\n // Register the stake viewer\n locator.register(EvmStakeViewer.factory<EvmStakeViewer>(\n EvmStakeViewer.dependencies,\n { address, provider },\n ))\n\n // Register the stake totals viewer\n locator.register(EvmStakeTotalsViewer.factory<EvmStakeTotalsViewer>(\n EvmStakeTotalsViewer.dependencies,\n { address, provider },\n ))\n\n // Register the contract viewer\n locator.register(EvmChainContractViewer.factory<EvmChainContractViewer>(\n EvmChainContractViewer.dependencies,\n { address, provider },\n ))\n\n locator.register(SimpleTimeSyncViewer.factory<SimpleTimeSyncViewer>(\n SimpleTimeSyncViewer.dependencies,\n { ethProvider: provider },\n ))\n } else {\n logger?.warn('EVM provider not available - running with memory based contract/stake viewers')\n const positions: Position[] = []\n\n // Register the contract events viewer\n locator.register(SimpleStakeEventsViewer.factory<SimpleStakeEventsViewer>(\n SimpleStakeEventsViewer.dependencies,\n { positions },\n ))\n\n // Register the stake viewer\n locator.register(SimpleStakeViewer.factory<SimpleStakeViewer>(\n SimpleStakeViewer.dependencies,\n { positions },\n ))\n\n // Register the stake totals viewer\n locator.register(SimpleStakeTotalsViewer.factory<SimpleStakeTotalsViewer>(\n SimpleStakeTotalsViewer.dependencies,\n {},\n ))\n\n // Register the contract viewer\n locator.register(SimpleChainContractViewer.factory<SimpleChainContractViewer>(\n SimpleChainContractViewer.dependencies,\n {\n minWithdrawalBlocks: 10, stakingTokenAddress: XYO_ZERO_ADDRESS, rewardsContract: XYO_ZERO_ADDRESS,\n },\n ))\n\n locator.register(SimpleTimeSyncViewer.factory<SimpleTimeSyncViewer>(\n SimpleTimeSyncViewer.dependencies,\n {},\n ))\n }\n return locator\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport { createBootstrapHead } from '@xyo-network/chain-sdk'\nimport type { AccountInstance, ArchivistInstance } from '@xyo-network/sdk-js'\nimport { Account } from '@xyo-network/sdk-js'\nimport type {\n ActorConfig,\n ChainId,\n SignedBlockBoundWitnessWithHashMeta,\n} from '@xyo-network/xl1-sdk'\nimport {\n asAttoXL1, findMostRecentBlock,\n flattenHydratedBlock,\n} from '@xyo-network/xl1-sdk'\n\nimport { GENESIS_REWARD_AMOUNT, resolveGenesisRewardAddress } from '../../shared/index.ts'\n\nexport async function initFinalizationArchivistIfNeeded(\n archivist: ArchivistInstance,\n config: ActorConfig,\n account: AccountInstance,\n): Promise<[SignedBlockBoundWitnessWithHashMeta, ChainId]> {\n const configuredChainId = config.chain.id\n const possibleHead = await findMostRecentBlock(archivist)\n if (configuredChainId && possibleHead && possibleHead.chain !== configuredChainId) {\n throw new Error(`Configured chain ID (${configuredChainId}) does not match the existing chain ID (${possibleHead.chain})`)\n }\n\n let possibleChainId: ChainId | undefined = configuredChainId\n\n // if there is no configured chain ID and no head, create a new chain\n if (!possibleHead) {\n possibleChainId = possibleChainId ?? (await Account.random()).address\n const genesisRewardAddress = await resolveGenesisRewardAddress(config)\n // If there is no head, create one\n const chain = await createBootstrapHead(\n account,\n possibleChainId,\n asAttoXL1(GENESIS_REWARD_AMOUNT),\n genesisRewardAddress,\n )\n const payloads = chain.flatMap(block => flattenHydratedBlock(block))\n await archivist.insert(payloads)\n }\n const head = possibleHead ?? assertEx(await findMostRecentBlock(archivist), () => 'No blocks found in chain archivist')\n const chainId = assertEx(possibleChainId, () => 'Chain ID could not be determined')\n return [head, chainId]\n}\n","import { MongoDBArchivistV2 } from '@xyo-network/archivist-mongodb'\nimport type { MongoDBModuleParamsV2 } from '@xyo-network/module-model-mongodb'\nimport type { Config } from '@xyo-network/xl1-sdk'\n\nasync function initMongoFinalizedArchivist(config: Config) {\n const payloadSdkConfig = {\n ...config.storage.mongo,\n collection: 'chain_validated',\n } satisfies MongoDBModuleParamsV2['payloadSdkConfig']\n return await MongoDBArchivistV2.create({ payloadSdkConfig })\n}\n\nexport async function initFinalizedArchivist(config: Config) {\n const finalizedArchivist = await initMongoFinalizedArchivist(config)\n return finalizedArchivist\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport type { NodeInstance } from '@xyo-network/sdk-js'\nimport { asArchivistInstance } from '@xyo-network/sdk-js'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\n\nimport { loadNode } from '../manifest/index.ts'\n\nasync function writableChainArchivistFromNode(node: NodeInstance) {\n return asArchivistInstance(\n await node.resolve('Chain:Validated'),\n { required: true },\n )\n}\n\nasync function readonlyChainArchivistFromNode(node: NodeInstance) {\n return assertEx(asArchivistInstance(\n await node.resolve('Chain:Validated'),\n { required: true },\n ))\n}\n\nasync function pendingTransactionsArchivistFromNode(node: NodeInstance) {\n return asArchivistInstance(\n await node.resolve('XYOChain:Pending:Transactions'),\n { required: true },\n )\n}\n\nasync function pendingBlocksArchivistFromNode(node: NodeInstance) {\n return asArchivistInstance(\n await node.resolve('XYOChain:Pending:Blocks'),\n { required: true },\n )\n}\n\nasync function rejectedBlocksArchivistFromNode(node: NodeInstance) {\n return asArchivistInstance(\n await node.resolve('XYOChain:DeadLetterQueue:RejectedBlocks'),\n { required: true },\n )\n}\n\nasync function rejectedTransactionsArchivistFromNode(node: NodeInstance) {\n return asArchivistInstance(\n await node.resolve('XYOChain:DeadLetterQueue:RejectedTransactions'),\n { required: true },\n )\n}\n\nexport async function initServerNode(\n context: BaseConfigContext,\n wallet: WalletInstance,\n providedNode?: NodeInstance,\n) {\n const node: NodeInstance = providedNode ?? await loadNode(context, wallet)\n assertEx(await node.start(), () => 'Failed to start node')\n const writableChainArchivist = await writableChainArchivistFromNode(node)\n const readonlyChainArchivist = await readonlyChainArchivistFromNode(node)\n const pendingTransactionsArchivist = await pendingTransactionsArchivistFromNode(node)\n const pendingBlocksArchivist = await pendingBlocksArchivistFromNode(node)\n const rejectedBlocksArchivist = await rejectedBlocksArchivistFromNode(node)\n const rejectedTransactionsArchivist = await rejectedTransactionsArchivistFromNode(node)\n return {\n node,\n writableChainArchivist,\n readonlyChainArchivist,\n pendingTransactionsArchivist,\n pendingBlocksArchivist,\n rejectedBlocksArchivist,\n rejectedTransactionsArchivist,\n }\n}\n","import { type BaseMongoSdkPrivateConfig } from '@xylabs/mongo'\nimport { isDefined } from '@xylabs/sdk-js'\nimport { LmdbArchivistConfigSchema } from '@xyo-network/archivist-lmdb'\nimport { MongoDBArchivistV2, MongoDBArchivistV2Deletable } from '@xyo-network/archivist-mongodb'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { initTelemetry } from '@xyo-network/chain-telemetry'\nimport type { MongoDBModuleParamsV2 } from '@xyo-network/module-model-mongodb'\nimport {\n AbstractModule, LoggerModuleStatusReporter,\n MemoryArchivist, MemorySentinel, ModuleFactoryLocator,\n} from '@xyo-network/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { hasMongoConfig } from '@xyo-network/xl1-sdk'\n\nimport { NamedLmdbArchivist } from './NamedLmdbArchivist.ts'\n\n/**\n * Used for retrieving a locator with the necessary modules registered for testing\n * operation of the node (entirely in memory)\n * @returns A locator with the necessary modules registered\n */\nexport const getLocator = async (\n { logger, config }: BaseConfigContext,\n) => {\n const { otlpEndpoint } = config.telemetry?.otel ?? {}\n const { path: endpoint = '/metrics', port: port = 9465 } = config.telemetry?.metrics?.scrape ?? {}\n const { traceProvider, meterProvider } = await initTelemetry({\n attributes: {\n serviceName: 'xl1-api',\n serviceVersion: '1.0.0',\n },\n otlpEndpoint,\n metricsConfig: { endpoint, port },\n })\n\n if (isDefined(logger)) AbstractModule.defaultLogger = logger\n const statusReporter = logger ? new LoggerModuleStatusReporter(logger) : undefined\n\n const locator = new ModuleFactoryLocator()\n // If there's a MongoDB configuration\n const mongoConfig = config.storage?.mongo\n if (hasMongoConfig(mongoConfig)) {\n // Create the MongoDB SDK from the configuration\n const {\n connectionString: dbConnectionString, database: dbName, domain: dbDomain, password: dbPassword, username: dbUserName,\n } = mongoConfig\n const payloadSdkConfig: BaseMongoSdkPrivateConfig = {\n dbConnectionString, dbDomain, dbName, dbPassword, dbUserName,\n }\n const params: Partial<MongoDBModuleParamsV2> = {\n meterProvider, payloadSdkConfig, statusReporter, traceProvider,\n }\n // Register the MongoDB Archivist as the default\n locator.register(MongoDBArchivistV2.factory(params), undefined, true)\n locator.register(MongoDBArchivistV2Deletable.factory(params), { 'network.xyo.storage.capabilities.delete': 'enabled' }, false)\n } else if (isDefined(config.storage?.root)) {\n // LMDB-backed disk storage when no mongo is configured.\n // Multi-process-safe (LMDB lockfile/MVCC), so the same storage.root can be\n // shared across separate Node processes running different actors.\n const lmdbLocation = config.storage.root\n const lmdbConfig = {\n clearStoreOnStart: false,\n location: lmdbLocation,\n schema: LmdbArchivistConfigSchema,\n }\n locator.register(\n NamedLmdbArchivist.factory({\n config: lmdbConfig,\n meterProvider,\n statusReporter,\n traceProvider,\n }),\n undefined,\n true,\n )\n }\n\n locator.register(MemoryArchivist.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n locator.register(MemorySentinel.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n locator.register(ViewArchivist.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n return locator\n}\n","import { LmdbArchivist } from '@xyo-network/archivist-lmdb'\n\n/**\n * LMDB-backed archivist that derives its on-disk location, database name, and\n * store name from `config.location` / `config.dbName` / `config.storeName`,\n * and — critically — falls back to `config.payloadSdkConfig.collection` or\n * `config.name` when `config.storeName` is not explicitly set.\n *\n * This lets the manifest-driven archivist factories (see `public/Pending.json`,\n * `public/Chain.json`, `public/DeadLetterQueue.json`) share a single LMDB root\n * while each archivist gets its own per-store LMDB env — the same separation\n * that `payloadSdkConfig.collection` provides for mongo.\n */\nexport class NamedLmdbArchivist extends LmdbArchivist {\n override get dbName(): string {\n return (this.config as { dbName?: string }).dbName ?? 'xyo-chain'\n }\n\n override get location(): string {\n const cfgLocation = (this.config as { location?: string }).location\n const paramsLocation = (this.params as { location?: string } | undefined)?.location\n if (cfgLocation) return cfgLocation\n if (paramsLocation) return paramsLocation\n throw new Error('NamedLmdbArchivist: no location configured (set storage.root or pass location in factory params)')\n }\n\n override get storeName(): string {\n const cfg = this.config as {\n name?: string\n payloadSdkConfig?: { collection?: string }\n storeName?: string\n }\n const derived = cfg.storeName ?? cfg.payloadSdkConfig?.collection ?? cfg.name\n if (!derived) throw new Error('NamedLmdbArchivist: no storeName (or payloadSdkConfig.collection / name) configured')\n return derived\n }\n}\n","import { ManifestWrapper } from '@xyo-network/sdk-js'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\n\nimport { getLocator } from './getLocator.ts'\nimport { NodeManifest } from './nodeManifest.ts'\nimport { PrivateChildManifests } from './private/index.ts'\nimport { PublicChildManifests } from './public/index.ts'\n\n/**\n * Creates a node with the xyo-chain modules registered\n * @returns A node with the xyo-chain modules registered\n */\nexport const loadNode = async (\n context: BaseConfigContext,\n wallet: WalletInstance,\n) => {\n const locator = await getLocator(context)\n const wrapper = new ManifestWrapper(NodeManifest, wallet, locator, PublicChildManifests, PrivateChildManifests)\n const [node, ...childNodes] = await wrapper.loadNodes()\n if (childNodes?.length > 0) {\n await Promise.all(childNodes.map(childNode => node.register(childNode)))\n await Promise.all(childNodes.map(childNode => node.attach(childNode.address, true)))\n }\n return node\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"44'/60'/1\",\n \"name\": \"XYOChain\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": []\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","import type { PackageManifestPayload } from '@xyo-network/sdk-js'\n\nimport node from './node.json' with { type: 'json' }\n\n/**\n * Root Node Manifest\n */\nexport const NodeManifest = node as unknown as PackageManifestPayload\n","/**\n * Private Child Manifests\n */\nexport const PrivateChildManifests = []\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"1\",\n \"name\": \"Chain\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [\n {\n \"config\": {\n \"accountPath\": \"1/1'/1'\",\n \"name\": \"Validated\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"payloadSdkConfig\": {\n \"collection\": \"chain_validated\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n }\n ],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"1/1/1\",\n \"name\": \"Finalized\",\n \"allowedQueries\": [\n \"network.xyo.query.archivist.get\",\n \"network.xyo.query.archivist.next\"\n ],\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 50000\n },\n \"originArchivist\": \"Validated\",\n \"schema\": \"network.xyo.archivist.view.config\"\n }\n }\n ]\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"3\",\n \"name\": \"DeadLetterQueue\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"3/1/1\",\n \"name\": \"RejectedBlocks\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"labels\": {\n \"network.xyo.storage.capabilities.delete\": \"enabled\",\n \"network.xyo.storage.class\": \"mongodb\"\n },\n \"payloadSdkConfig\": {\n \"collection\": \"rejected_blocks\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"3/1/2\",\n \"name\": \"RejectedTransactions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"labels\": {\n \"network.xyo.storage.capabilities.delete\": \"enabled\",\n \"network.xyo.storage.class\": \"mongodb\"\n },\n \"payloadSdkConfig\": {\n \"collection\": \"rejected_transactions\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n }\n ]\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"2\",\n \"name\": \"Pending\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"2/1/1\",\n \"name\": \"Transactions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"labels\": {\n \"network.xyo.storage.capabilities.delete\": \"enabled\",\n \"network.xyo.storage.class\": \"mongodb\"\n },\n \"payloadSdkConfig\": {\n \"collection\": \"pending_transaction_bundles\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"2/1/2\",\n \"name\": \"Blocks\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"labels\": {\n \"network.xyo.storage.capabilities.delete\": \"enabled\",\n \"network.xyo.storage.class\": \"mongodb\"\n },\n \"payloadSdkConfig\": {\n \"collection\": \"pending_block_bundles\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n }\n ]\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","import type { ModuleManifest, PackageManifestPayload } from '@xyo-network/sdk-js'\n\nimport Chain from './Chain.json' with { type: 'json' }\nimport DeadLetterQueue from './DeadLetterQueue.json' with { type: 'json' }\nimport Pending from './Pending.json' with { type: 'json' }\n\nconst ChainNodeManifest = Chain as unknown as PackageManifestPayload\nconst DeadLetterQueueNodeManifest = DeadLetterQueue as unknown as PackageManifestPayload\nconst PendingNodeManifest = Pending as unknown as PackageManifestPayload\n\nexport const PublicChildManifests: ModuleManifest[] = [\n ...ChainNodeManifest.nodes,\n ...DeadLetterQueueNodeManifest.nodes,\n ...PendingNodeManifest.nodes,\n]\n","import { BaseMongoSdk, type BaseMongoSdkPrivateConfig } from '@xylabs/mongo'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport { MongoMap } from '@xyo-network/chain-protocol-driver-mongodb'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BaseConfigContext, MapType, TransfersStepSummary,\n} from '@xyo-network/xl1-sdk'\nimport { hasMongoConfig, MemoryMap } from '@xyo-network/xl1-sdk'\n\nexport async function initTransferSummaryMap({ logger, config }: BaseConfigContext): Promise<MapType<string, WithStorageMeta<TransfersStepSummary>>> {\n const mongoConfig = config.storage?.mongo\n if (hasMongoConfig(mongoConfig)) {\n // Create the MongoDB SDK from the configuration\n const {\n connectionString: dbConnectionString, database: dbName, domain: dbDomain, password: dbPassword, username: dbUserName,\n } = mongoConfig\n const payloadSdkConfig: BaseMongoSdkPrivateConfig = {\n dbConnectionString, dbDomain, dbName, dbPassword, dbUserName,\n }\n\n const sdkTransferSummaryMap = new BaseMongoSdk<WithStorageMeta<TransfersStepSummary>>({ ...payloadSdkConfig, collection: 'transfer_summary_map' })\n const result = await MongoMap.create<MongoMap<Hash, WithStorageMeta<TransfersStepSummary>>>({\n sdk: sdkTransferSummaryMap,\n getCache: { enabled: true, maxEntries: 5000 },\n })\n assertEx(await result.start(), () => 'Failed to start transfer summary map')\n return result\n } else {\n logger?.warn('[API] Mongo configuration not found. Using MemoryMap for TransferSummaryMap.')\n return new MemoryMap<string, WithStorageMeta<TransfersStepSummary>>()\n }\n}\n","import { deepMerge } from '@xylabs/sdk-js'\nimport {\n type CachingContext,\n type Config, type ProviderFactoryLocatorInstance,\n} from '@xyo-network/xl1-sdk'\n\nimport {\n ApiConfigZod, BridgeConfigZod, MempoolConfigZod, ProducerConfigZod, RewardRedemptionConfigZod, ValidatorConfigZod,\n} from '../../../shared/index.ts'\nimport {\n apiLocatorFromConfig, bridgeLocatorFromConfig, mempoolLocatorFromConfig,\n producerLocatorFromConfig, rewardRedemptionLocatorFromConfig, validatorLocatorFromConfig,\n} from './actors/index.ts'\nimport { rootLocatorFromConfig } from './rootLocatorFromConfig.ts'\n\nexport async function locatorsFromConfig(\n context: CachingContext,\n { actors, ...config }: Config,\n): Promise<Record<string, ProviderFactoryLocatorInstance>> {\n const result: Record<string, ProviderFactoryLocatorInstance> = { _root: await rootLocatorFromConfig({ ...context, config: { ...config, name: '_root' } }) }\n for (const actorConfig of actors) {\n switch (actorConfig.name) {\n case 'producer': {\n result[actorConfig.name] = await producerLocatorFromConfig(\n { ...context, config: ProducerConfigZod.parse(deepMerge(config, actorConfig)) },\n result._root,\n )\n break\n }\n case 'api': {\n result[actorConfig.name] = await apiLocatorFromConfig(\n { ...context, config: ApiConfigZod.parse(deepMerge(config, actorConfig)) },\n result._root,\n )\n\n break\n }\n case 'mempool': {\n result[actorConfig.name] = await mempoolLocatorFromConfig(\n { ...context, config: MempoolConfigZod.parse(deepMerge(config, actorConfig)) },\n result._root,\n )\n break\n }\n case 'validator': {\n result[actorConfig.name] = await validatorLocatorFromConfig(\n { ...context, config: ValidatorConfigZod.parse(deepMerge(config, actorConfig)) },\n result._root,\n )\n break\n }\n case 'bridge': {\n result[actorConfig.name] = await bridgeLocatorFromConfig(\n { ...context, config: BridgeConfigZod.parse(deepMerge(config, actorConfig)) },\n result._root,\n )\n\n break\n }\n case 'rewardRedemption': {\n result[actorConfig.name] = await rewardRedemptionLocatorFromConfig(\n {\n ...context,\n config: RewardRedemptionConfigZod.parse(deepMerge(config, actorConfig)),\n },\n result._root,\n )\n break\n }\n // No default\n }\n }\n return result\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport {\n ProviderFactoryLocator,\n SimpleXyoConnectionRunner,\n SimpleXyoGateway,\n SimpleXyoRunner,\n} from '@xyo-network/xl1-sdk'\n\nimport type { ApiConfigContext } from '../../../../neutral/index.ts'\n\nexport function apiLocatorFromConfig(\n context: ApiConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promisable<ProviderFactoryLocatorInstance> {\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\n\n locator.registerMany([\n SimpleXyoRunner.factory<SimpleXyoRunner>(SimpleXyoRunner.dependencies, {}),\n SimpleXyoConnectionRunner.factory<SimpleXyoConnectionRunner>(SimpleXyoConnectionRunner.dependencies, {}),\n SimpleXyoGateway.factory<SimpleXyoGateway>(SimpleXyoGateway.dependencies, {}),\n ])\n locator.freeze()\n return locator\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { ProviderFactoryLocatorInstance, RestDataLakeRunnerParams } from '@xyo-network/xl1-sdk'\nimport {\n JsonRpcAccountBalanceViewer,\n JsonRpcBlockViewer,\n JsonRpcFinalizationViewer,\n JsonRpcMempoolRunner,\n JsonRpcMempoolViewer,\n JsonRpcXyoRunner,\n JsonRpcXyoViewer,\n ProviderFactoryLocator,\n RestDataLakeRunner,\n RestDataLakeViewer,\n SimpleStakeEventsViewer,\n SimpleXyoConnectionRunner,\n SimpleXyoGatewayRunner,\n SimpleXyoRunner,\n SimpleXyoSigner,\n} from '@xyo-network/xl1-sdk'\n\nimport { type BridgeConfigContext, initActorAccount } from '../../../../neutral/index.ts'\n\nexport async function bridgeLocatorFromConfig(\n context: BridgeConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promise<Promise<Promisable<ProviderFactoryLocatorInstance>>> {\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\n\n const { config } = context\n\n const { dataLake } = config\n const signerAccount = await initActorAccount(context)\n\n if (config.remote.rpc) {\n locator.registerMany([\n JsonRpcMempoolViewer.factory<JsonRpcMempoolViewer>(JsonRpcMempoolViewer.dependencies, {}),\n JsonRpcMempoolRunner.factory<JsonRpcMempoolRunner>(JsonRpcMempoolRunner.dependencies, {}),\n JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>(\n JsonRpcAccountBalanceViewer.dependencies,\n {},\n ),\n JsonRpcFinalizationViewer.factory<JsonRpcFinalizationViewer>(\n JsonRpcFinalizationViewer.dependencies,\n {},\n ),\n JsonRpcBlockViewer.factory<JsonRpcBlockViewer>(JsonRpcBlockViewer.dependencies, {}),\n JsonRpcXyoRunner.factory<JsonRpcXyoRunner>(JsonRpcXyoRunner.dependencies, {}),\n JsonRpcXyoViewer.factory<JsonRpcXyoViewer>(JsonRpcXyoViewer.dependencies, {}),\n ])\n }\n if (isDefined(dataLake)) {\n const { driver } = dataLake\n switch (driver) {\n case 'rest': {\n const { url: endpoint } = dataLake\n locator.registerMany([\n RestDataLakeRunner.factory<RestDataLakeRunner<RestDataLakeRunnerParams>>(RestDataLakeRunner.dependencies, { endpoint }),\n RestDataLakeViewer.factory<RestDataLakeViewer>(RestDataLakeViewer.dependencies, { endpoint }),\n ])\n break\n }\n default: {\n throw new Error(`Unsupported data lake protocol: ${driver}`)\n }\n }\n }\n\n locator.registerMany([\n SimpleStakeEventsViewer.factory<SimpleStakeEventsViewer>(SimpleStakeEventsViewer.dependencies, { positions: [] }),\n SimpleXyoSigner.factory<SimpleXyoSigner>(SimpleXyoSigner.dependencies, { account: signerAccount }),\n SimpleXyoRunner.factory<SimpleXyoRunner>(SimpleXyoRunner.dependencies, {}),\n SimpleXyoConnectionRunner.factory<SimpleXyoConnectionRunner>(SimpleXyoConnectionRunner.dependencies, {}),\n SimpleXyoGatewayRunner.factory<SimpleXyoGatewayRunner>(SimpleXyoGatewayRunner.dependencies, {}),\n ])\n locator.freeze()\n return locator\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport { ProviderFactoryLocator } from '@xyo-network/xl1-sdk'\n\nimport type { MempoolConfigContext } from '../../../../neutral/index.ts'\n\nexport function mempoolLocatorFromConfig(\n context: MempoolConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promisable<ProviderFactoryLocatorInstance> {\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\n\n locator.registerMany([\n ])\n locator.freeze()\n return locator\n}\n","import { asAddress } from '@xylabs/sdk-js'\nimport { SimpleBlockRunner } from '@xyo-network/chain-services'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport { ProviderFactoryLocator } from '@xyo-network/xl1-sdk'\n\nimport type { ProducerConfigContext } from '../../../../neutral/index.ts'\nimport { initActorAccount } from '../../../../neutral/index.ts'\n\nexport async function producerLocatorFromConfig(\n context: ProducerConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promise<ProviderFactoryLocatorInstance> {\n const { logger, config } = context\n const account = await initActorAccount(context)\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\n const rewardAddress = asAddress(config.rewardAddress ?? account.address, true)\n logger?.info(`Using reward address ${rewardAddress}`)\n if (rewardAddress === account.address) {\n logger?.warn(`Using producer account address as reward address: ${account.address}`)\n }\n\n locator.registerMany([\n SimpleBlockRunner.factory<SimpleBlockRunner>(\n SimpleBlockRunner.dependencies,\n { account, rewardAddress },\n )])\n locator.freeze()\n return locator\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport {\n JsonRpcAccountBalanceViewer,\n JsonRpcBlockViewer,\n JsonRpcFinalizationViewer,\n JsonRpcMempoolRunner,\n JsonRpcMempoolViewer,\n JsonRpcXyoRunner,\n JsonRpcXyoViewer,\n ProviderFactoryLocator,\n SimpleXyoConnectionRunner,\n SimpleXyoGatewayRunner,\n SimpleXyoRunner,\n SimpleXyoSigner,\n} from '@xyo-network/xl1-sdk'\n\nimport { initActorAccount, type RewardRedemptionConfigContext } from '../../../../neutral/index.ts'\n\nexport async function rewardRedemptionLocatorFromConfig(\n context: RewardRedemptionConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promise<Promisable<ProviderFactoryLocatorInstance>> {\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\n\n const { config } = context\n\n const account = await initActorAccount(context)\n\n if (config.remote.rpc) {\n locator.registerMany([\n JsonRpcMempoolViewer.factory<JsonRpcMempoolViewer>(JsonRpcMempoolViewer.dependencies, {}),\n JsonRpcMempoolRunner.factory<JsonRpcMempoolRunner>(JsonRpcMempoolRunner.dependencies, {}),\n JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>(\n JsonRpcAccountBalanceViewer.dependencies,\n {},\n ),\n JsonRpcFinalizationViewer.factory<JsonRpcFinalizationViewer>(\n JsonRpcFinalizationViewer.dependencies,\n {},\n ),\n JsonRpcBlockViewer.factory<JsonRpcBlockViewer>(JsonRpcBlockViewer.dependencies, {}),\n JsonRpcXyoRunner.factory<JsonRpcXyoRunner>(JsonRpcXyoRunner.dependencies, {}),\n JsonRpcXyoViewer.factory<JsonRpcXyoViewer>(JsonRpcXyoViewer.dependencies, {}),\n ])\n }\n\n locator.registerMany([\n SimpleXyoSigner.factory<SimpleXyoSigner>(SimpleXyoSigner.dependencies, { account }),\n SimpleXyoRunner.factory<SimpleXyoRunner>(SimpleXyoRunner.dependencies, {}),\n SimpleXyoConnectionRunner.factory<SimpleXyoConnectionRunner>(SimpleXyoConnectionRunner.dependencies, {}),\n SimpleXyoGatewayRunner.factory<SimpleXyoGatewayRunner>(SimpleXyoGatewayRunner.dependencies, {}),\n ])\n locator.freeze()\n return locator\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport type { ActorConfigContext, ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport { ProviderFactoryLocator } from '@xyo-network/xl1-sdk'\n\nexport function validatorLocatorFromConfig(\n context: ActorConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promisable<ProviderFactoryLocatorInstance> {\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\n\n locator.registerMany([\n ])\n locator.freeze()\n return locator\n}\n","import type { ActorConfigContext, ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport { commonLocatorFromConfig, remoteLocatorFromConfig } from '@xyo-network/xl1-sdk'\n\nimport { initEvmProvidersIfAvailable } from '../../init/index.ts'\nimport { localLocatorFromConfig } from './localLocatorFromConfig.ts'\n\nexport async function rootLocatorFromConfig(\n context: ActorConfigContext,\n validateDepsOnRegister = false,\n): Promise<ProviderFactoryLocatorInstance> {\n const { config } = context\n let locator = await commonLocatorFromConfig(context, validateDepsOnRegister)\n\n const newLocator = await (config.remote.rpc\n ? remoteLocatorFromConfig(locator.context, validateDepsOnRegister)\n : localLocatorFromConfig({ ...locator.context, config: { ...locator.context.config, ...context.config } }, validateDepsOnRegister))\n locator = newLocator\n locator = await initEvmProvidersIfAvailable(locator)\n locator.freeze()\n return locator\n}\n","import { isDefined, isNull } from '@xylabs/sdk-js'\nimport { ConfigZod } from '@xyo-network/xl1-sdk'\nimport { cosmiconfig } from 'cosmiconfig'\n\n/**\n * The name of the configuration file to search for.\n */\nconst configName = 'xyo'\n\n/**\n * The name of the section within the configuration file to parse.\n */\nconst configSection = 'xl1' // Default section in the config file\n\n/**\n * Attempts to parse the configuration from a file using cosmiconfig.\n * @param options - Optional config loading options.\n * @param options.configPath - Explicit path to a config file to load instead of searching.\n * @param options.searchPlaces - Custom search places for cosmiconfig.\n * @returns The parsed configuration object if found and valid, otherwise undefined.\n */\nexport async function tryParseConfig(options?: { configPath?: string; searchPlaces?: string[] }) {\n const { configPath, searchPlaces } = options ?? {}\n const explorer = cosmiconfig(\n configName,\n {\n cache: true,\n // loaders: { '.ts': TypeScriptLoader() },\n searchPlaces,\n },\n )\n const result = isDefined(configPath)\n ? (await explorer.load(configPath))?.config\n : (await explorer.search())?.config\n if (isDefined(result) && !isNull(result)) {\n const section = result[configSection]\n if (isDefined(section) && typeof section === 'object') {\n const parsed = ConfigZod.loose().parse(section)\n return typeof section.mnemonic === 'string' ? { ...parsed, mnemonic: section.mnemonic } : parsed\n }\n }\n return ConfigZod.parse({})\n}\n","export * from '../shared/index.ts'\nexport * from './config/index.ts'\nexport * from './init/index.ts'\nexport * from './manifest/index.ts'\nexport * from '@xyo-network/chain-orchestration-evm'\nexport * from '@xyo-network/chain-orchestration-express'\nexport * from '@xyo-network/chain-orchestration-storage'\n"],"mappings":"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","names":["creatable","processPendingBlocks","ActorV3","BlockValidationViewerMoniker","BlockViewerMoniker","DeadLetterQueueRunnerMoniker","FinalizationRunnerMoniker","MempoolViewerMoniker","ValidatorActor","ActorV3","_blockValidationViewer","_blockViewer","_deadLetterQueueRunner","_finalizationRunner","_lastValidatedBlock","_lastValidatedBlockHash","_mempoolViewer","allowedProducers","params","config","blockValidationViewer","blockViewer","finalizationRunner","mempoolViewer","minCandidates","createHandler","startHandler","locator","getInstance","BlockValidationViewerMoniker","BlockViewerMoniker","FinalizationRunnerMoniker","MempoolViewerMoniker","tryGetInstance","DeadLetterQueueRunnerMoniker","registerTimer","spanAsync","logger","debug","processPendingBlocks","context","deadLetterQueueRunner","timeBudgetLimit","buildTelemetryConfig","config","serviceName","serviceVersion","defaultMetricsScrapePort","otlpEndpoint","telemetry","otel","path","endpoint","port","metrics","scrape","telemetryConfig","attributes","metricsConfig","zodAsFactory","zodIsFactory","zodToFactory","BaseConfigContextZod","HostActorConfigZod","globalRegistry","z","globalRegistry","z","ActorAccountIndexZod","title","z","coerce","number","int","min","optional","register","globalRegistry","description","type","ApiConfigZod","HostActorConfigZod","extend","z","object","accountIndex","ActorAccountIndexZod","initRewardsCache","union","number","string","boolean","transform","v","default","register","globalRegistry","description","title","type","shape","isApiConfig","zodIsFactory","asApiConfig","zodAsFactory","toApiConfig","zodToFactory","ApiConfigContext","BaseConfigContextZod","config","isApiConfigContext","asApiConfigContext","toApiConfigContext","AddressZod","HexZod","toAddress","toHex","zodAsFactory","zodIsFactory","zodToFactory","AttoXL1ConvertFactor","BaseConfigContextZod","HostActorConfigZod","XL1","globalRegistry","z","DEFAULT_FIXED_FEE","toHex","XL1","AttoXL1ConvertFactor","xl1","DEFAULT_VARIABLE_FEE_BASIS_POINTS","DEFAULT_HARDHAT_BRIDGE_CONTRACT","toAddress","DEFAULT_HARDHAT_CHAIN_ID","DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY","DEFAULT_HARDHAT_TOKEN_CONTRACT","DEFAULT_MAX_BRIDGE_AMOUNT","DEFAULT_MIN_BRIDGE_AMOUNT","BasisPointsZod","z","coerce","number","int","nonnegative","max","BridgeConfigZod","HostActorConfigZod","extend","accountIndex","ActorAccountIndexZod","escrowAddress","AddressZod","optional","register","globalRegistry","description","title","type","feesAddress","feeFixed","HexZod","default","feeRateBasisPoints","maxBridgeAmount","minBridgeAmount","redisHost","string","redisPort","positive","remoteBridgeContractAddress","remoteChainId","remoteTokenAddress","remoteChainWalletPrivateKey","xl1ChainId","xl1TokenAddress","BridgeSettingsZod","pick","required","isBridgeConfig","zodIsFactory","asBridgeConfig","zodAsFactory","toBridgeConfig","zodToFactory","BridgeConfigContext","BaseConfigContextZod","config","isBridgeConfigContext","asBridgeConfigContext","toBridgeConfigContext","zodAsFactory","zodIsFactory","zodToFactory","BaseConfigContextZod","HostActorConfigZod","globalRegistry","z","DEFAULT_MEMPOOL_BLOCK_PRUNE_INTERVAL","DEFAULT_MEMPOOL_TRANSACTION_PRUNE_INTERVAL","MempoolConfigZod","HostActorConfigZod","extend","accountIndex","ActorAccountIndexZod","enabled","z","union","string","boolean","default","transform","val","ctx","normalized","toLowerCase","trim","includes","addIssue","code","expected","message","NEVER","register","globalRegistry","description","title","type","blockPruneInterval","coerce","number","transactionPruneInterval","isMempoolConfig","zodIsFactory","asMempoolConfig","zodAsFactory","toMempoolConfig","zodToFactory","MempoolConfigContext","BaseConfigContextZod","config","isMempoolConfigContext","asMempoolConfigContext","toMempoolConfigContext","AddressZod","asAddress","zodAsFactory","zodIsFactory","zodToFactory","ActorConfigZod","BaseConfigContextZod","globalRegistry","z","DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL","ProducerConfigZod","ActorConfigZod","extend","z","object","accountIndex","ActorAccountIndexZod","allowlist","preprocess","val","split","map","s","asAddress","trim","array","AddressZod","optional","register","globalRegistry","description","title","type","blockProductionCheckInterval","coerce","number","default","disableIntentRedeclaration","boolean","heartbeatInterval","minStake","rewardAddress","string","shape","isProducerConfig","zodIsFactory","asProducerConfig","zodAsFactory","toProducerConfig","zodToFactory","ProducerConfigContext","BaseConfigContextZod","config","isProducerConfigContext","asProducerConfigContext","toProducerConfigContext","zodAsFactory","zodIsFactory","zodToFactory","BaseConfigContextZod","HostActorConfigZod","RewardRedemptionConfigZod","HostActorConfigZod","extend","accountIndex","ActorAccountIndexZod","isRewardRedemptionConfig","zodIsFactory","asRewardRedemptionConfig","zodAsFactory","toRewardRedemptionConfig","zodToFactory","RewardRedemptionConfigContext","BaseConfigContextZod","config","isRewardRedemptionConfigContext","asRewardRedemptionConfigContext","toRewardRedemptionConfigContext","AddressZod","zodAsFactory","zodIsFactory","zodToFactory","BaseConfigContextZod","HostActorConfigZod","z","ValidatorConfigZod","HostActorConfigZod","extend","accountIndex","ActorAccountIndexZod","allowedProducers","z","array","AddressZod","optional","minCandidates","number","int","min","default","isValidatorConfig","zodIsFactory","asValidatorConfig","zodAsFactory","toValidatorConfig","zodToFactory","ValidatorConfigContext","BaseConfigContextZod","config","isValidatorConfigContext","asValidatorConfigContext","toValidatorConfigContext","deepMerge","mergeConfig","actors","baseConfig","map","actor","deepMerge","buildNextBlock","createDeclarationIntent","createProducerChainStakeIntentBlock","prevBlock","producerAccount","range","producerDeclarationPayload","createDeclarationIntent","address","buildNextBlock","GenericHost","services","start","Promise","resolve","console","log","stop","DefaultServiceProvider","_services","services","getService","serviceIdentifier","ServiceLifetime","Singleton","Transient","isDefined","DEFAULT_WALLET_PATH","generateXyoBaseWalletFromPhrase","BUILT_IN_DEV_MNEMONIC","INSECURE_GENESIS_REWARD_MNEMONIC","GENESIS_REWARD_AMOUNT","ATTO_XL1_PER_XL1","ROOT_WALLET_RUNTIME_ID","SHARED_ACCOUNT_REPORT_COUNT","RESERVED_ACTOR_INDEX","api","bridge","mempool","producer","rewardRedemption","validator","ACTOR_LABELS","activeWalletReport","getAccountLabel","actorName","clearResolvedWalletReport","undefined","getReservedActorIndex","getBuiltInDevMnemonic","getInsecureGenesisRewardMnemonic","resolveRootWallet","configuration","mnemonic","isBuiltInDevMnemonic","basePath","DEFAULT_WALLET_PATH","mnemonicKind","resolveWalletMetadata","accountIndex","source","wallet","generateXyoBaseWalletFromPhrase","derivationPath","account","derivePath","address","label","privateKey","usesBuiltInDevMnemonic","resolveActorWallet","actorConfig","root","actorMnemonic","resolveWalletReport","requestedActors","actorConfigMap","Map","actors","map","actor","name","resolvedActors","Promise","all","get","labelMap","labels","push","set","sharedAccounts","Array","from","length","_","index","join","insecureGenesisRewardAccounts","chain","genesisRewardAddress","actorSpecificAccounts","filter","initializeResolvedWalletReport","getResolvedWalletReport","formatSharedAccount","showPrivateKey","lines","formatActorSpecificAccount","formatGenesisRewardAccount","balance","toString","formatWalletReport","report","sections","showSecrets","resolveGenesisRewardAddress","config","resolveWalletForActor","fromReport","find","split","includes","resolvedMnemonic","resolvedAccountIndex","actorAccountSingletons","initActorAccount","config","logger","actorName","name","isDefined","accountIndex","undefined","account","resolveWalletForActor","mnemonic","debug","address","assertEx","isString","initActorSeedPhrase","context","bios","logger","config","walletKind","name","report","getResolvedWalletReport","account","ROOT_WALLET_RUNTIME_ID","sharedAccounts","find","entry","accountIndex","actorSpecificAccounts","actorName","isString","mnemonic","root","fallback","getBuiltInDevMnemonic","debug","assertEx","assertEx","asAttachableArchivistInstance","asAttachableModuleInstance","Mutex","initMutex","Mutex","bridgedModuleDictionary","initBridgedModule","bridge","moduleName","runExclusive","existing","address","mod","assertEx","resolve","moduleInstance","asAttachableModuleInstance","moduleMap","undefined","initBridgedArchivistModule","asAttachableArchivistInstance","RuntimeStatusMonitor","initStatusReporter","logger","statusReporter","RuntimeStatusMonitor","onGlobalTransition","to","log","error","process","exit","initActorWallet","context","mnemonic","actorName","config","name","ROOT_WALLET_RUNTIME_ID","accountIndex","undefined","resolveWalletForActor","AbstractCreatable","creatable","Orchestrator","AbstractCreatable","actors","keepAliveHandle","running","registerActor","actor","start","push","startHandler","logger","warn","log","setInterval","stopHandler","stop","clearInterval","isAccountInstance","basicRemoteRunnerLocator","sdkBasicRemoteRunnerLocator","JsonRpcAccountBalanceViewer","JsonRpcXyoSigner","SimpleXyoSigner","signerFactoryFromParam","signer","isAccountInstance","SimpleXyoSigner","factory","dependencies","account","JsonRpcXyoSigner","transport","basicRemoteRunnerLocator","name","remoteConfig","dataLakeEndpoint","validators","undefined","sdkBasicRemoteRunnerLocator","additionalProviders","JsonRpcAccountBalanceViewer","signerFactory","skipGatewayRunner","basicRemoteViewerLocator","sdkBasicRemoteViewerLocator","JsonRpcAccountBalanceViewer","basicRemoteViewerLocator","name","remoteConfig","dataLakeEndpoint","validators","sdkBasicRemoteViewerLocator","additionalProviders","JsonRpcAccountBalanceViewer","factory","dependencies","initTelemetry","telemetryContextFromConfig","config","serviceName","serviceVersion","otlpEndpoint","telemetry","otel","path","endpoint","port","metrics","scrape","initTelemetry","attributes","metricsConfig","contextFromConfigWithoutLocator","config","logger","serviceName","serviceVersion","singletons","caches","telemetryConfig","telemetryContextFromConfig","statusReporter","initStatusReporter","assertEx","validateHydratedBlock","validateHydratedBlockState","BlockCumulativeBalanceValidatorFactory","ProviderFactoryLocator","SimpleAccountBalanceViewer","SimpleBlockValidationViewer","SimpleBlockViewer","SimpleDeadLetterQueueRunner","SimpleDeadLetterQueueViewer","SimpleFinalizationRunner","SimpleFinalizationViewer","SimpleMempoolRunner","SimpleMempoolViewer","SimpleTransactionValidationViewer","SimpleTransactionViewer","SimpleWindowedBlockViewer","SimpleXyoConnectionViewer","SimpleXyoViewer","validateTransaction","BaseMongoSdk","assertEx","MongoMap","hasMongoConfig","MemoryMap","initBalanceSummaryMap","logger","config","mongoConfig","storage","mongo","hasMongoConfig","connectionString","dbConnectionString","database","dbName","domain","dbDomain","password","dbPassword","username","dbUserName","payloadSdkConfig","sdkBalanceSummaryMap","BaseMongoSdk","collection","result","MongoMap","create","sdk","getCache","enabled","maxEntries","assertEx","start","warn","MemoryMap","asEthAddress","EvmChainContractViewer","EvmStakeEventsViewer","EvmStakeTotalsViewer","EvmStakeViewer","canUseEvmProvider","initEvmProvider","SimpleChainContractViewer","SimpleStakeEventsViewer","SimpleStakeTotalsViewer","SimpleStakeViewer","SimpleTimeSyncViewer","XYO_ZERO_ADDRESS","initEvmProvidersIfAvailable","locator","context","logger","canUseEvmProvider","config","chain","id","chainId","provider","initEvmProvider","address","asEthAddress","register","EvmStakeEventsViewer","factory","dependencies","EvmStakeViewer","EvmStakeTotalsViewer","EvmChainContractViewer","SimpleTimeSyncViewer","ethProvider","warn","positions","SimpleStakeEventsViewer","SimpleStakeViewer","SimpleStakeTotalsViewer","SimpleChainContractViewer","minWithdrawalBlocks","stakingTokenAddress","XYO_ZERO_ADDRESS","rewardsContract","assertEx","createBootstrapHead","Account","asAttoXL1","findMostRecentBlock","flattenHydratedBlock","initFinalizationArchivistIfNeeded","archivist","config","account","configuredChainId","chain","id","possibleHead","findMostRecentBlock","Error","possibleChainId","Account","random","address","genesisRewardAddress","resolveGenesisRewardAddress","createBootstrapHead","asAttoXL1","GENESIS_REWARD_AMOUNT","payloads","flatMap","block","flattenHydratedBlock","insert","head","assertEx","chainId","MongoDBArchivistV2","initMongoFinalizedArchivist","config","payloadSdkConfig","storage","mongo","collection","MongoDBArchivistV2","create","initFinalizedArchivist","finalizedArchivist","assertEx","asArchivistInstance","isDefined","LmdbArchivistConfigSchema","MongoDBArchivistV2","MongoDBArchivistV2Deletable","ViewArchivist","initTelemetry","AbstractModule","LoggerModuleStatusReporter","MemoryArchivist","MemorySentinel","ModuleFactoryLocator","hasMongoConfig","LmdbArchivist","NamedLmdbArchivist","LmdbArchivist","dbName","config","location","cfgLocation","paramsLocation","params","Error","storeName","cfg","derived","payloadSdkConfig","collection","name","getLocator","logger","config","otlpEndpoint","telemetry","otel","path","endpoint","port","metrics","scrape","traceProvider","meterProvider","initTelemetry","attributes","serviceName","serviceVersion","metricsConfig","isDefined","AbstractModule","defaultLogger","statusReporter","LoggerModuleStatusReporter","undefined","locator","ModuleFactoryLocator","mongoConfig","storage","mongo","hasMongoConfig","connectionString","dbConnectionString","database","dbName","domain","dbDomain","password","dbPassword","username","dbUserName","payloadSdkConfig","params","register","MongoDBArchivistV2","factory","MongoDBArchivistV2Deletable","root","lmdbLocation","lmdbConfig","clearStoreOnStart","location","schema","LmdbArchivistConfigSchema","NamedLmdbArchivist","MemoryArchivist","MemorySentinel","ViewArchivist","ManifestWrapper","NodeManifest","node","PrivateChildManifests","ChainNodeManifest","Chain","DeadLetterQueueNodeManifest","DeadLetterQueue","PendingNodeManifest","Pending","PublicChildManifests","nodes","loadNode","context","wallet","locator","getLocator","wrapper","ManifestWrapper","NodeManifest","PublicChildManifests","PrivateChildManifests","node","childNodes","loadNodes","length","Promise","all","map","childNode","register","attach","address","writableChainArchivistFromNode","node","asArchivistInstance","resolve","required","readonlyChainArchivistFromNode","assertEx","pendingTransactionsArchivistFromNode","pendingBlocksArchivistFromNode","rejectedBlocksArchivistFromNode","rejectedTransactionsArchivistFromNode","initServerNode","context","wallet","providedNode","loadNode","start","writableChainArchivist","readonlyChainArchivist","pendingTransactionsArchivist","pendingBlocksArchivist","rejectedBlocksArchivist","rejectedTransactionsArchivist","BaseMongoSdk","assertEx","MongoMap","hasMongoConfig","MemoryMap","initTransferSummaryMap","logger","config","mongoConfig","storage","mongo","hasMongoConfig","connectionString","dbConnectionString","database","dbName","domain","dbDomain","password","dbPassword","username","dbUserName","payloadSdkConfig","sdkTransferSummaryMap","BaseMongoSdk","collection","result","MongoMap","create","sdk","getCache","enabled","maxEntries","assertEx","start","warn","MemoryMap","cumulativeBalanceValidator","BlockCumulativeBalanceValidatorFactory","validateHydratedBlockStateWithCumulativeBalance","context","block","stateErrors","cumulativeErrors","Promise","all","validateHydratedBlockState","localLocatorFromConfig","validateDepsOnRegister","balancesSummaryMap","assertEx","initBalanceSummaryMap","transfersSummaryMap","initTransferSummaryMap","wallet","initActorWallet","writableChainArchivist","readonlyChainArchivist","pendingTransactionsArchivist","pendingBlocksArchivist","rejectedBlocksArchivist","rejectedTransactionsArchivist","initServerNode","initFinalizationArchivistIfNeeded","config","locator","ProviderFactoryLocator","registerMany","SimpleMempoolViewer","factory","dependencies","SimpleMempoolRunner","SimpleAccountBalanceViewer","SimpleFinalizationViewer","finalizedArchivist","SimpleBlockViewer","SimpleWindowedBlockViewer","maxWindowSize","syncInterval","SimpleXyoConnectionViewer","SimpleTransactionViewer","SimpleXyoViewer","SimpleFinalizationRunner","SimpleBlockValidationViewer","state","protocol","validateHydratedBlock","SimpleTransactionValidationViewer","validateTransaction","SimpleDeadLetterQueueRunner","SimpleDeadLetterQueueViewer","deepMerge","ProviderFactoryLocator","SimpleXyoConnectionRunner","SimpleXyoGateway","SimpleXyoRunner","apiLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","registerMany","SimpleXyoRunner","factory","dependencies","SimpleXyoConnectionRunner","SimpleXyoGateway","freeze","isDefined","JsonRpcAccountBalanceViewer","JsonRpcBlockViewer","JsonRpcFinalizationViewer","JsonRpcMempoolRunner","JsonRpcMempoolViewer","JsonRpcXyoRunner","JsonRpcXyoViewer","ProviderFactoryLocator","RestDataLakeRunner","RestDataLakeViewer","SimpleStakeEventsViewer","SimpleXyoConnectionRunner","SimpleXyoGatewayRunner","SimpleXyoRunner","SimpleXyoSigner","bridgeLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","config","dataLake","signerAccount","initActorAccount","remote","rpc","registerMany","JsonRpcMempoolViewer","factory","dependencies","JsonRpcMempoolRunner","JsonRpcAccountBalanceViewer","JsonRpcFinalizationViewer","JsonRpcBlockViewer","JsonRpcXyoRunner","JsonRpcXyoViewer","isDefined","driver","url","endpoint","RestDataLakeRunner","RestDataLakeViewer","Error","SimpleStakeEventsViewer","positions","SimpleXyoSigner","account","SimpleXyoRunner","SimpleXyoConnectionRunner","SimpleXyoGatewayRunner","freeze","ProviderFactoryLocator","mempoolLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","registerMany","freeze","asAddress","SimpleBlockRunner","ProviderFactoryLocator","producerLocatorFromConfig","context","parent","logger","config","account","initActorAccount","locator","ProviderFactoryLocator","rewardAddress","asAddress","address","info","warn","registerMany","SimpleBlockRunner","factory","dependencies","freeze","JsonRpcAccountBalanceViewer","JsonRpcBlockViewer","JsonRpcFinalizationViewer","JsonRpcMempoolRunner","JsonRpcMempoolViewer","JsonRpcXyoRunner","JsonRpcXyoViewer","ProviderFactoryLocator","SimpleXyoConnectionRunner","SimpleXyoGatewayRunner","SimpleXyoRunner","SimpleXyoSigner","rewardRedemptionLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","config","account","initActorAccount","remote","rpc","registerMany","JsonRpcMempoolViewer","factory","dependencies","JsonRpcMempoolRunner","JsonRpcAccountBalanceViewer","JsonRpcFinalizationViewer","JsonRpcBlockViewer","JsonRpcXyoRunner","JsonRpcXyoViewer","SimpleXyoSigner","SimpleXyoRunner","SimpleXyoConnectionRunner","SimpleXyoGatewayRunner","freeze","ProviderFactoryLocator","validatorLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","registerMany","freeze","commonLocatorFromConfig","remoteLocatorFromConfig","rootLocatorFromConfig","context","validateDepsOnRegister","config","locator","commonLocatorFromConfig","newLocator","remote","rpc","remoteLocatorFromConfig","localLocatorFromConfig","initEvmProvidersIfAvailable","freeze","locatorsFromConfig","context","actors","config","result","_root","rootLocatorFromConfig","name","actorConfig","producerLocatorFromConfig","ProducerConfigZod","parse","deepMerge","apiLocatorFromConfig","ApiConfigZod","mempoolLocatorFromConfig","MempoolConfigZod","validatorLocatorFromConfig","ValidatorConfigZod","bridgeLocatorFromConfig","BridgeConfigZod","rewardRedemptionLocatorFromConfig","RewardRedemptionConfigZod","isDefined","isNull","ConfigZod","cosmiconfig","configName","configSection","tryParseConfig","options","configPath","searchPlaces","explorer","cosmiconfig","cache","result","isDefined","load","config","search","isNull","section","parsed","ConfigZod","loose","parse","mnemonic"]}
1
+ {"version":3,"sources":["../../src/shared/actor/FinalizerActor.ts","../../src/shared/buildTelemetryConfig.ts","../../src/shared/config/actors/Api.ts","../../src/shared/config/actors/accountIndex.ts","../../src/shared/config/actors/Bridge.ts","../../src/shared/config/actors/Finalizer.ts","../../src/shared/config/actors/Mempool.ts","../../src/shared/config/actors/Producer.ts","../../src/shared/config/actors/RewardRedemption.ts","../../src/shared/config/mergeConfig.ts","../../src/shared/createDeclarationIntentBlock.ts","../../src/shared/host/implementation/DefaultHost.ts","../../src/shared/host/implementation/DefaultServiceProvider.ts","../../src/shared/host/model/ServiceCollection.ts","../../src/shared/init/initActorAccount.ts","../../src/shared/init/walletResolution.ts","../../src/shared/init/initActorSeedPhrase.ts","../../src/shared/init/initBridgedModule.ts","../../src/shared/init/initStatusReporter.ts","../../src/shared/init/initWallet.ts","../../src/shared/orchestrator/Orchestrator.ts","../../src/shared/provider/SimpleRejectedTransactionsArchivistProvider.ts","../../src/node/config/locators/basicRemoteRunnerLocator.ts","../../src/node/config/locators/basicRemoteViewerLocator.ts","../../src/node/config/locators/telemetryContextFromConfig.ts","../../src/node/config/locators/contextFromConfigWithoutLocator.ts","../../src/node/config/locators/localLocatorFromConfig.ts","../../src/node/init/initBalanceSummaryMap.ts","../../src/node/init/initEvmProvidersIfAvailable.ts","../../src/node/init/initFinalizationArchivistIfNeeded.ts","../../src/node/init/initFinalizedArchivist.ts","../../src/node/init/initServerNode.ts","../../src/node/manifest/getLocator.ts","../../src/node/manifest/NamedLmdbArchivist.ts","../../src/node/manifest/loadNode.ts","../../src/node/manifest/node.json","../../src/node/manifest/nodeManifest.ts","../../src/node/manifest/private/index.ts","../../src/node/manifest/public/Chain.json","../../src/node/manifest/public/DeadLetterQueue.json","../../src/node/manifest/public/Pending.json","../../src/node/manifest/public/index.ts","../../src/node/init/initTransferSummaryMap.ts","../../src/node/config/locators/locatorsFromConfig.ts","../../src/node/config/locators/actors/apiLocatorFromConfig.ts","../../src/node/config/locators/actors/bridgeLocatorFromConfig.ts","../../src/node/config/locators/actors/finalizerLocatorFromConfig.ts","../../src/node/config/locators/actors/mempoolLocatorFromConfig.ts","../../src/node/config/locators/actors/producerLocatorFromConfig.ts","../../src/node/config/locators/actors/rewardRedemptionLocatorFromConfig.ts","../../src/node/config/locators/rootLocatorFromConfig.ts","../../src/node/config/tryParseConfig.ts","../../src/node/index.ts"],"sourcesContent":["import { creatable } from '@xylabs/sdk-js'\nimport { processPendingBlocks } from '@xyo-network/chain-sdk'\nimport type {\n ActorParamsV3, BlockValidationViewer, BlockViewer,\n DeadLetterQueueRunner,\n FinalizationRunner,\n MempoolViewer,\n} from '@xyo-network/xl1-sdk'\nimport {\n ActorV3, BlockValidationViewerMoniker, BlockViewerMoniker,\n DeadLetterQueueRunnerMoniker,\n FinalizationRunnerMoniker,\n MempoolViewerMoniker,\n} from '@xyo-network/xl1-sdk'\n\nimport type { FinalizerConfig } from '../config/index.ts'\n\nexport type FinalizerActorParams = ActorParamsV3<\n {\n config: FinalizerConfig\n }>\n\n@creatable()\nexport class FinalizerActor extends ActorV3<FinalizerActorParams> {\n protected _blockValidationViewer!: BlockValidationViewer\n protected _blockViewer!: BlockViewer\n protected _deadLetterQueueRunner?: DeadLetterQueueRunner\n protected _finalizationRunner!: FinalizationRunner\n protected _mempoolViewer!: MempoolViewer\n\n protected get allowedProducers() {\n return this.params.config.allowedProducers ?? []\n }\n\n protected get blockValidationViewer() {\n return this._blockValidationViewer\n }\n\n protected get blockViewer() {\n return this._blockViewer\n }\n\n protected get finalizationRunner() {\n return this._finalizationRunner\n }\n\n protected get mempoolViewer() {\n return this._mempoolViewer\n }\n\n protected get minCandidates() {\n return this.params.config.minCandidates\n }\n\n override async createHandler() {\n await super.startHandler()\n this._blockValidationViewer = await this.locator.getInstance(BlockValidationViewerMoniker)\n this._blockViewer = await this.locator.getInstance(BlockViewerMoniker)\n this._finalizationRunner = await this.locator.getInstance(FinalizationRunnerMoniker)\n this._mempoolViewer = await this.locator.getInstance(MempoolViewerMoniker)\n this._deadLetterQueueRunner = await this.locator.tryGetInstance<DeadLetterQueueRunner>(DeadLetterQueueRunnerMoniker)\n }\n\n override async startHandler(): Promise<void> {\n await super.startHandler()\n this.registerTimer('FinalizerActor', async () => {\n await this.spanAsync('processPendingBlocks', async () => {\n this.logger?.debug('FinalizerActor: Processing pending blocks...')\n await processPendingBlocks({\n blockValidationViewer: this.blockValidationViewer,\n context: this.context,\n logger: this.logger,\n mempoolViewer: this.mempoolViewer,\n blockViewer: this.blockViewer,\n finalizationRunner: this.finalizationRunner,\n allowedProducers: this.allowedProducers,\n minCandidates: this.minCandidates,\n deadLetterQueueRunner: this._deadLetterQueueRunner,\n })\n }, { ...this.context, timeBudgetLimit: 1500 })\n }, 2000, 500)\n }\n}\n","import type { Config } from '@xyo-network/xl1-sdk'\n\nexport function buildTelemetryConfig(config: Config, serviceName: string, serviceVersion: string, defaultMetricsScrapePort = 9464) {\n const { otlpEndpoint } = config.telemetry?.otel ?? {}\n const { path: endpoint = '/metrics', port = defaultMetricsScrapePort } = config.telemetry?.metrics?.scrape ?? {}\n const telemetryConfig = {\n attributes: { serviceName, serviceVersion }, otlpEndpoint, metricsConfig: { endpoint, port },\n }\n return telemetryConfig\n}\n","import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nimport { ActorAccountIndexZod } from './accountIndex.ts'\n\nexport const ApiConfigZod = HostActorConfigZod.extend(z.object({\n accountIndex: ActorAccountIndexZod('api.accountIndex'),\n initRewardsCache: z.union([z.number(), z.string(), z.boolean()]).transform(\n v => v !== '0' && v !== 'false' && v !== false && v != 0,\n ).default(true).register(globalRegistry, {\n description: 'Whether to initialize the rewards cache on startup',\n title: 'api.initRewardsCache',\n type: 'boolean',\n }),\n}).shape)\n\nexport type ApiConfig = z.infer<typeof ApiConfigZod>\n\nexport const isApiConfig = zodIsFactory(ApiConfigZod)\nexport const asApiConfig = zodAsFactory(ApiConfigZod, 'asApiConfig')\nexport const toApiConfig = zodToFactory(ApiConfigZod, 'toApiConfig')\n\nexport interface ApiConfigContext extends Omit<BaseConfigContext, 'config'> {\n config: ApiConfig\n}\n\nexport const ApiConfigContext: z.ZodType<ApiConfigContext> = BaseConfigContextZod.extend({ config: ApiConfigZod })\n\nexport const isApiConfigContext: <T>(value: T) => value is T & ApiConfigContext = zodIsFactory(ApiConfigContext)\nexport const asApiConfigContext: ReturnType<typeof zodAsFactory<ApiConfigContext>> = zodAsFactory(ApiConfigContext, 'asApiConfigContext')\nexport const toApiConfigContext: ReturnType<typeof zodToFactory<ApiConfigContext>> = zodToFactory(ApiConfigContext, 'toApiConfigContext')\n","import { globalRegistry, z } from 'zod'\n\nexport const ActorAccountIndexZod = (title: string) => z.coerce.number().int().min(0).optional().register(globalRegistry, {\n description: 'Account index derived from the actor wallet phrase. Defaults to 0 for actor mnemonics and to the actor-specific shared index for the root mnemonic.',\n title,\n type: 'number',\n})\n","import {\n AddressZod, HexZod, toAddress, toHex, zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport type { BaseConfigContext, ChainId } from '@xyo-network/xl1-sdk'\nimport {\n AttoXL1ConvertFactor, BaseConfigContextZod, HostActorConfigZod, XL1,\n} from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nimport { ActorAccountIndexZod } from './accountIndex.ts'\n\nconst DEFAULT_FIXED_FEE = toHex(XL1(1000n) * AttoXL1ConvertFactor.xl1)\nconst DEFAULT_VARIABLE_FEE_BASIS_POINTS = 300 // 3%\nconst DEFAULT_HARDHAT_BRIDGE_CONTRACT = toAddress('2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6')\nconst DEFAULT_HARDHAT_CHAIN_ID: ChainId = toHex('7A69')\nconst DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY = toHex('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80')\nconst DEFAULT_HARDHAT_TOKEN_CONTRACT = toAddress('5FbDB2315678afecb367f032d93F642f64180aa3')\nconst DEFAULT_MAX_BRIDGE_AMOUNT = toHex(XL1(1_000_000n) * AttoXL1ConvertFactor.xl1)\nconst DEFAULT_MIN_BRIDGE_AMOUNT = toHex(XL1(1500n) * AttoXL1ConvertFactor.xl1)\n\nexport const BasisPointsZod = z.coerce.number().int().nonnegative().max(10_000)\nexport type BasisPoints = z.infer<typeof BasisPointsZod>\n\nexport const BridgeConfigZod = HostActorConfigZod.extend({\n accountIndex: ActorAccountIndexZod('bridge.accountIndex'),\n escrowAddress: AddressZod.optional().register(globalRegistry, {\n description: 'Address to which bridge escrow will be sent',\n title: 'bridge.escrowAddress',\n type: 'string',\n }),\n feesAddress: AddressZod.optional().register(globalRegistry, {\n description: 'Address to which bridge fees will be sent',\n title: 'bridge.feesAddress',\n type: 'string',\n }),\n feeFixed: HexZod.default(DEFAULT_FIXED_FEE).register(globalRegistry, {\n default: DEFAULT_FIXED_FEE,\n description: 'Fixed fee (in AttoXL1) applied to bridge transfers',\n title: 'bridge.feeFixed',\n type: 'bigint',\n }),\n feeRateBasisPoints: BasisPointsZod.default(DEFAULT_VARIABLE_FEE_BASIS_POINTS).register(globalRegistry, {\n default: DEFAULT_VARIABLE_FEE_BASIS_POINTS,\n description: 'Variable rate fee (in basis points where 1 bps = 0.01%) applied to bridge transfers',\n title: 'bridge.feeRateBasisPoints',\n type: 'number',\n }),\n maxBridgeAmount: HexZod.default(DEFAULT_MAX_BRIDGE_AMOUNT).register(globalRegistry, {\n default: DEFAULT_MAX_BRIDGE_AMOUNT,\n description: 'Maximum amount allowed for a bridge transfer',\n title: 'bridge.maxBridgeAmount',\n type: 'string',\n }),\n minBridgeAmount: HexZod.default(DEFAULT_MIN_BRIDGE_AMOUNT).register(globalRegistry, {\n default: DEFAULT_MIN_BRIDGE_AMOUNT,\n description: 'Minimum amount required for a bridge transfer',\n title: 'bridge.minBridgeAmount',\n type: 'string',\n }),\n redisHost: z.string().default('localhost').register(globalRegistry, {\n default: 'localhost',\n description: 'Host for the Bridge Redis instance',\n title: 'bridge.redisHost',\n type: 'string',\n }),\n redisPort: z.coerce.number().int().positive().default(6379).register(globalRegistry, {\n default: 6379,\n description: 'Port for the Bridge Redis instance',\n title: 'bridge.redisPort',\n type: 'number',\n }),\n remoteBridgeContractAddress: AddressZod.default(DEFAULT_HARDHAT_BRIDGE_CONTRACT).register(globalRegistry, {\n default: DEFAULT_HARDHAT_BRIDGE_CONTRACT,\n description: 'Hex representation of remote token address used for bridging',\n title: 'bridge.remoteBridgeContractAddress',\n type: 'string',\n }),\n remoteChainId: HexZod.default(DEFAULT_HARDHAT_CHAIN_ID).register(globalRegistry, {\n default: DEFAULT_HARDHAT_CHAIN_ID,\n description: 'Remote chain ID',\n title: 'bridge.remoteChainId',\n type: 'string',\n }),\n remoteTokenAddress: HexZod.default(DEFAULT_HARDHAT_TOKEN_CONTRACT).register(globalRegistry, {\n default: DEFAULT_HARDHAT_TOKEN_CONTRACT,\n description: 'Hex representation of remote token address used for bridging',\n title: 'bridge.remoteTokenAddress',\n type: 'string',\n }),\n remoteChainWalletPrivateKey: HexZod.default(DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY).register(globalRegistry, {\n description: 'Private key for the wallet to use for the remote chain wallet',\n title: 'bridge.remoteChainWalletPrivateKey',\n type: 'string',\n }),\n xl1ChainId: HexZod.optional().register(globalRegistry, {\n description: 'XL1 chain id used for bridging',\n title: 'bridge.xl1ChainId',\n type: 'string',\n }),\n xl1TokenAddress: HexZod.optional().register(globalRegistry, {\n description: 'XL1 token address used for bridging',\n title: 'bridge.xl1TokenAddress',\n type: 'string',\n }),\n})\n\nexport type BridgeConfig = z.infer<typeof BridgeConfigZod>\n\nexport const BridgeSettingsZod = BridgeConfigZod.pick({\n feeFixed: true,\n feeRateBasisPoints: true,\n feesAddress: true,\n escrowAddress: true,\n maxBridgeAmount: true,\n minBridgeAmount: true,\n remoteChainId: true,\n remoteTokenAddress: true,\n xl1TokenAddress: true,\n xl1ChainId: true,\n}).required()\n\nexport type BridgeSettings = z.infer<typeof BridgeSettingsZod>\n\nexport const isBridgeConfig = zodIsFactory(BridgeConfigZod)\nexport const asBridgeConfig = zodAsFactory(BridgeConfigZod, 'asBridgeConfig')\nexport const toBridgeConfig = zodToFactory(BridgeConfigZod, 'toBridgeConfig')\n\nexport interface BridgeConfigContext extends Omit<BaseConfigContext, 'config'> {\n config: BridgeConfig\n}\n\nexport const BridgeConfigContext: z.ZodType<BridgeConfigContext> = BaseConfigContextZod.extend({ config: BridgeConfigZod })\n\nexport const isBridgeConfigContext: <T>(value: T) => value is T & BridgeConfigContext = zodIsFactory(BridgeConfigContext)\nexport const asBridgeConfigContext: ReturnType<typeof zodAsFactory<BridgeConfigContext>> = zodAsFactory(BridgeConfigContext, 'asBridgeConfigContext')\nexport const toBridgeConfigContext: ReturnType<typeof zodToFactory<BridgeConfigContext>> = zodToFactory(BridgeConfigContext, 'toBridgeConfigContext')\n","import {\n AddressZod,\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'\nimport { z } from 'zod'\n\nimport { ActorAccountIndexZod } from './accountIndex.ts'\n\nexport const FinalizerConfigZod = HostActorConfigZod.extend({\n accountIndex: ActorAccountIndexZod('finalizer.accountIndex'),\n allowedProducers: z.array(AddressZod).optional(),\n minCandidates: z.number().int().min(0).default(1),\n})\n\nexport type FinalizerConfig = z.infer<typeof FinalizerConfigZod>\n\nexport const isFinalizerConfig = zodIsFactory(FinalizerConfigZod)\nexport const asFinalizerConfig = zodAsFactory(FinalizerConfigZod, 'asFinalizerConfig')\nexport const toFinalizerConfig = zodToFactory(FinalizerConfigZod, 'toFinalizerConfig')\n\nexport interface FinalizerConfigContext extends Omit<BaseConfigContext, 'config'> {\n config: FinalizerConfig\n}\n\nexport const FinalizerConfigContext: z.ZodType<FinalizerConfigContext> = BaseConfigContextZod.extend({ config: FinalizerConfigZod })\n\nexport const isFinalizerConfigContext: <T>(value: T) => value is T & FinalizerConfigContext = zodIsFactory(FinalizerConfigContext)\nexport const asFinalizerConfigContext: ReturnType<typeof zodAsFactory<FinalizerConfigContext>> = zodAsFactory(FinalizerConfigContext, 'asFinalizerConfigContext')\nexport const toFinalizerConfigContext: ReturnType<typeof zodToFactory<FinalizerConfigContext>> = zodToFactory(FinalizerConfigContext, 'toFinalizerConfigContext')\n","import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nimport { ActorAccountIndexZod } from './accountIndex.ts'\n\nexport const DEFAULT_MEMPOOL_BLOCK_PRUNE_INTERVAL = 1000\nexport const DEFAULT_MEMPOOL_TRANSACTION_PRUNE_INTERVAL = 1000\n\nexport const MempoolConfigZod = HostActorConfigZod.extend({\n accountIndex: ActorAccountIndexZod('mempool.accountIndex'),\n enabled: z.union([z.string(), z.boolean()]).default('false').transform((val, ctx) => {\n if (typeof val === 'boolean') return val\n const normalized = val.toLowerCase().trim()\n if (['true', '1', 'yes', 'on'].includes(normalized)) return true\n if (['false', '0', 'no', 'off'].includes(normalized)) return false\n ctx.addIssue({\n code: 'invalid_type',\n expected: 'boolean',\n message: `Invalid boolean value: \"${val}\". Use true/false, 1/0, yes/no.`,\n })\n return z.NEVER\n }).register(globalRegistry, {\n default: 'false',\n description: 'Enable the Mempool',\n title: 'mempool.enabled',\n type: 'boolean',\n }),\n blockPruneInterval: z.coerce.number().default(DEFAULT_MEMPOOL_BLOCK_PRUNE_INTERVAL).register(globalRegistry, {\n description: 'The interval time (in milliseconds) between pending block prune attempts',\n title: 'mempool.blockPruneInterval',\n type: 'number',\n }),\n transactionPruneInterval: z.coerce.number().default(DEFAULT_MEMPOOL_TRANSACTION_PRUNE_INTERVAL).register(globalRegistry, {\n description: 'The interval time (in milliseconds) between pending transaction prune attempts',\n title: 'mempool.transactionPruneInterval',\n type: 'number',\n }),\n})\n\nexport type MempoolConfig = z.infer<typeof MempoolConfigZod>\n\nexport const isMempoolConfig = zodIsFactory(MempoolConfigZod)\nexport const asMempoolConfig = zodAsFactory(MempoolConfigZod, 'asMempoolConfig')\nexport const toMempoolConfig = zodToFactory(MempoolConfigZod, 'toMempoolConfig')\n\nexport interface MempoolConfigContext extends Omit<BaseConfigContext, 'config'> {\n config: MempoolConfig\n}\n\nexport const MempoolConfigContext: z.ZodType<MempoolConfigContext> = BaseConfigContextZod.extend({ config: MempoolConfigZod })\n\nexport const isMempoolConfigContext: <T>(value: T) => value is T & MempoolConfigContext = zodIsFactory(MempoolConfigContext)\nexport const asMempoolConfigContext: ReturnType<typeof zodAsFactory<MempoolConfigContext>> = zodAsFactory(MempoolConfigContext, 'asMempoolConfigContext')\nexport const toMempoolConfigContext: ReturnType<typeof zodToFactory<MempoolConfigContext>> = zodToFactory(MempoolConfigContext, 'toMempoolConfigContext')\n","import {\n AddressZod, asAddress,\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { ActorConfigZod, BaseConfigContextZod } from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nimport { ActorAccountIndexZod } from './accountIndex.ts'\n\nexport const DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL = 10_000 // 10 seconds\n\nexport const ProducerConfigZod = ActorConfigZod.extend(z.object({\n accountIndex: ActorAccountIndexZod('producer.accountIndex'),\n allowlist: z.preprocess((val) => {\n if (typeof val === 'string') {\n return val.split(',').map(s => asAddress(s.trim()))\n }\n return val\n }, z.array(AddressZod).optional().register(globalRegistry, {\n description: 'List of allowed producer addresses, if undefined anyone can participate',\n title: 'allowlist',\n type: 'array',\n })),\n\n blockProductionCheckInterval: z.coerce.number().default(DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL).register(globalRegistry, {\n description: 'The interval time (in milliseconds) between block production attempts',\n title: 'producer.blockProductionCheckInterval',\n type: 'number',\n }),\n disableIntentRedeclaration: z.boolean().optional().register(globalRegistry, {\n description: 'Should the producer skip redeclaring their intent to continue producing blocks',\n title: 'producer.disableIntentRedeclaration',\n type: 'boolean',\n }),\n heartbeatInterval: z.coerce.number().default(3_600_000).register(globalRegistry, {\n description: 'The number of milliseconds between heartbeats if no blocks are produced',\n title: 'producer.heartbeatInterval',\n type: 'number',\n }),\n // TODO: BigInt schema\n minStake: z.coerce.number().default(1).register(globalRegistry, {\n description: 'Minimum stake required to be a Producer',\n title: 'producer.minStake',\n type: 'number',\n }),\n // TODO: Address schema\n rewardAddress: z.string().optional().register(globalRegistry, {\n description: 'Address to receive block rewards',\n title: 'producer.rewardAddress',\n type: 'string',\n }),\n}).shape)\n\nexport type ProducerConfig = z.infer<typeof ProducerConfigZod>\n\nexport const isProducerConfig = zodIsFactory(ProducerConfigZod)\nexport const asProducerConfig = zodAsFactory(ProducerConfigZod, 'asProducerConfig')\nexport const toProducerConfig = zodToFactory(ProducerConfigZod, 'toProducerConfig')\n\nexport interface ProducerConfigContext extends Omit<BaseConfigContext, 'config'> {\n config: ProducerConfig\n}\n\nexport const ProducerConfigContext: z.ZodType<ProducerConfigContext> = BaseConfigContextZod.extend({ config: ProducerConfigZod })\n\nexport const isProducerConfigContext: <T>(value: T) => value is T & ProducerConfigContext = zodIsFactory(ProducerConfigContext)\nexport const asProducerConfigContext: ReturnType<typeof zodAsFactory<ProducerConfigContext>> = zodAsFactory(ProducerConfigContext, 'asProducerConfigContext')\nexport const toProducerConfigContext: ReturnType<typeof zodToFactory<ProducerConfigContext>> = zodToFactory(ProducerConfigContext, 'toProducerConfigContext')\n","import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'\nimport type { z } from 'zod'\n\nimport { ActorAccountIndexZod } from './accountIndex.ts'\n\nexport const RewardRedemptionConfigZod = HostActorConfigZod.extend({ accountIndex: ActorAccountIndexZod('rewardRedemption.accountIndex') })\n\nexport type RewardRedemptionConfig = z.infer<typeof RewardRedemptionConfigZod>\n\nexport const isRewardRedemptionConfig = zodIsFactory(RewardRedemptionConfigZod)\nexport const asRewardRedemptionConfig = zodAsFactory(RewardRedemptionConfigZod, 'asRewardRedemptionConfig')\nexport const toRewardRedemptionConfig = zodToFactory(RewardRedemptionConfigZod, 'toRewardRedemptionConfig')\n\nexport interface RewardRedemptionConfigContext extends Omit<BaseConfigContext, 'config'> {\n config: RewardRedemptionConfig\n}\n\nexport const RewardRedemptionConfigContext: z.ZodType<RewardRedemptionConfigContext> = BaseConfigContextZod.extend({ config: RewardRedemptionConfigZod })\n\nexport const isRewardRedemptionConfigContext: <T>(value: T) => value is T & RewardRedemptionConfigContext = zodIsFactory(RewardRedemptionConfigContext)\nexport const asRewardRedemptionConfigContext: ReturnType<typeof zodAsFactory<RewardRedemptionConfigContext>> = zodAsFactory(RewardRedemptionConfigContext, 'asRewardRedemptionConfigContext')\nexport const toRewardRedemptionConfigContext: ReturnType<typeof zodToFactory<RewardRedemptionConfigContext>> = zodToFactory(RewardRedemptionConfigContext, 'toRewardRedemptionConfigContext')\n","import { deepMerge } from '@xylabs/sdk-js'\nimport type { Config } from '@xyo-network/xl1-sdk'\n\nexport function mergeConfig({ actors, ...baseConfig }: Config) {\n return {\n ...baseConfig,\n actors: actors.map((actor) => {\n return deepMerge(baseConfig, actor)\n }),\n }\n}\n","import { buildNextBlock } from '@xyo-network/chain-sdk'\nimport type { AccountInstance, WithHashMeta } from '@xyo-network/sdk-js'\nimport type { BlockBoundWitness, XL1BlockRange } from '@xyo-network/xl1-sdk'\nimport { createDeclarationIntent } from '@xyo-network/xl1-sdk'\n\nexport async function createProducerChainStakeIntentBlock(prevBlock: WithHashMeta<BlockBoundWitness>, producerAccount: AccountInstance, range: XL1BlockRange) {\n const producerDeclarationPayload = createDeclarationIntent(\n producerAccount.address,\n 'producer',\n range[0],\n range[1],\n )\n return await buildNextBlock(\n prevBlock,\n [],\n [producerDeclarationPayload],\n [producerAccount],\n )\n}\n","import type { Host, ServiceProvider } from '../model/index.ts'\n\n/**\n * A generic host implementation that can be used as a starting point for\n * more complex host implementations.\n */\nexport class GenericHost implements Host {\n services: ServiceProvider\n\n constructor(services: ServiceProvider) {\n this.services = services\n }\n\n async start(): Promise<void> {\n await Promise.resolve()\n // Initialize or start your services here\n console.log('Host is starting...')\n }\n\n async stop(): Promise<void> {\n await Promise.resolve()\n // Stop or clean up services here\n console.log('Host is stopping...')\n }\n}\n","import type { ServiceProvider } from '../model/index.ts'\n\nexport class DefaultServiceProvider implements ServiceProvider {\n protected _services: Record<string, unknown>\n constructor(services: Record<string, unknown>) {\n this._services = services\n }\n\n getService<T>(serviceIdentifier: string): T | undefined {\n return this._services[serviceIdentifier] as T\n }\n}\n","import type { ServiceProvider } from './ServiceProvider.ts'\n\nexport interface ServiceCollection {\n build(): ServiceProvider\n}\n\n/**\n * Represents the lifetime of a service\n */\nexport const ServiceLifetime = {\n Singleton: 'Singleton',\n Transient: 'Transient',\n} as const\n\n/**\n * Describes a single service registration\n */\nexport interface ServiceDescriptor<T = unknown> {\n identifier: string | symbol\n implementationFactory: () => T\n lifetime: keyof typeof ServiceLifetime\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type { ActorConfigContext } from '@xyo-network/xl1-sdk'\n\nimport { resolveWalletForActor } from './walletResolution.ts'\n\nconst actorAccountSingletons: Record<string, Promisable<WalletInstance>> = {}\n\nexport async function initActorAccount({ config, logger }: Pick<ActorConfigContext, 'config' | 'logger'>): Promise<WalletInstance> {\n const actorName = config.name\n if (isDefined(actorAccountSingletons[actorName])) return actorAccountSingletons[actorName]\n const accountIndex = 'accountIndex' in config && typeof config.accountIndex === 'number' ? config.accountIndex : undefined\n const account = await resolveWalletForActor(actorName, config.mnemonic, accountIndex)\n logger?.debug(`[${actorName}] Using wallet address ${account.address}`)\n actorAccountSingletons[actorName] = account\n return actorAccountSingletons[actorName]\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type { ActorConfig, Config } from '@xyo-network/xl1-sdk'\nimport { DEFAULT_WALLET_PATH, generateXyoBaseWalletFromPhrase } from '@xyo-network/xl1-sdk'\n\nexport const BUILT_IN_DEV_MNEMONIC = 'crane ribbon cook cousin tobacco vital moral protect merit knock veteran hint knee ocean nurse'\nexport const INSECURE_GENESIS_REWARD_MNEMONIC = 'test test test test test test test test test test test junk'\nexport const GENESIS_REWARD_AMOUNT = 20_000_000_000_000_000_000_000n\nconst ATTO_XL1_PER_XL1 = 1_000_000_000_000_000_000n\n\nexport const ROOT_WALLET_RUNTIME_ID = '_root'\nexport const SHARED_ACCOUNT_REPORT_COUNT = 10\nexport type RootMnemonicConfig = Config & { mnemonic?: string }\ntype ActorWalletConfig = Partial<ActorConfig> & { accountIndex?: number; mnemonic?: string }\n\nexport type WalletSource = 'root' | 'actor'\nexport type MnemonicKind = 'built-in-dev' | 'configured-root' | 'configured-actor'\n\nexport interface ResolvedRootWallet {\n basePath: string\n isBuiltInDevMnemonic: boolean\n isConfigured: boolean\n mnemonic: string\n mnemonicKind: Extract<MnemonicKind, 'built-in-dev' | 'configured-root'>\n}\n\nexport interface ResolvedWalletMetadata {\n accountIndex: number\n actorName: string\n address: string\n derivationPath: string\n label: string\n mnemonic: string\n mnemonicKind: MnemonicKind\n privateKey?: string\n source: WalletSource\n usesBuiltInDevMnemonic: boolean\n}\n\nexport interface ResolvedWalletReport {\n actorSpecificAccounts: ResolvedWalletMetadata[]\n isRootRequired: boolean\n requestedActors: string[]\n root: ResolvedRootWallet\n sharedAccounts: ResolvedWalletMetadata[]\n}\n\nconst RESERVED_ACTOR_INDEX: Record<string, number> = {\n [ROOT_WALLET_RUNTIME_ID]: 0,\n api: 4,\n bridge: 2,\n finalizer: 6,\n mempool: 5,\n producer: 1,\n rewardRedemption: 3,\n}\n\nconst ACTOR_LABELS: Record<string, string> = {\n [ROOT_WALLET_RUNTIME_ID]: 'root/local-node',\n api: 'api',\n bridge: 'bridge',\n finalizer: 'finalizer',\n mempool: 'mempool',\n producer: 'producer',\n rewardRedemption: 'rewardRedemption',\n}\n\nlet activeWalletReport: ResolvedWalletReport | undefined\n\nfunction getAccountLabel(actorName: string): string {\n return ACTOR_LABELS[actorName] ?? actorName\n}\n\nexport function clearResolvedWalletReport() {\n activeWalletReport = undefined\n}\n\nexport function getReservedActorIndex(actorName: string): number {\n return RESERVED_ACTOR_INDEX[actorName] ?? 0\n}\n\nexport function getBuiltInDevMnemonic(): string {\n return BUILT_IN_DEV_MNEMONIC\n}\n\nexport function getInsecureGenesisRewardMnemonic(): string {\n return INSECURE_GENESIS_REWARD_MNEMONIC\n}\n\nexport function resolveRootWallet(configuration: RootMnemonicConfig): ResolvedRootWallet {\n const isConfigured = configuration.mnemonic !== undefined\n const mnemonic = configuration.mnemonic ?? BUILT_IN_DEV_MNEMONIC\n const isBuiltInDevMnemonic = mnemonic === BUILT_IN_DEV_MNEMONIC\n return {\n basePath: DEFAULT_WALLET_PATH,\n isBuiltInDevMnemonic,\n isConfigured,\n mnemonic,\n mnemonicKind: isBuiltInDevMnemonic ? 'built-in-dev' : 'configured-root',\n }\n}\n\nasync function resolveWalletMetadata({\n accountIndex,\n actorName,\n mnemonic,\n mnemonicKind,\n source,\n}: {\n accountIndex: number\n actorName: string\n mnemonic: string\n mnemonicKind: MnemonicKind\n source: WalletSource\n}): Promise<ResolvedWalletMetadata> {\n const wallet = await generateXyoBaseWalletFromPhrase(mnemonic)\n const derivationPath = `${DEFAULT_WALLET_PATH}/${accountIndex}`\n const account = await wallet.derivePath(`${accountIndex}`)\n return {\n accountIndex,\n actorName,\n address: account.address,\n derivationPath,\n label: getAccountLabel(actorName),\n mnemonic,\n mnemonicKind,\n privateKey: account.privateKey,\n source,\n usesBuiltInDevMnemonic: mnemonic === BUILT_IN_DEV_MNEMONIC,\n }\n}\n\nexport async function resolveActorWallet(\n actorName: string,\n actorConfig: ActorWalletConfig | undefined,\n root: ResolvedRootWallet,\n): Promise<ResolvedWalletMetadata> {\n const actorMnemonic = actorConfig?.mnemonic\n const accountIndex = actorConfig?.accountIndex\n return await resolveWalletMetadata(actorMnemonic\n ? {\n accountIndex: accountIndex ?? 0,\n actorName,\n mnemonic: actorMnemonic,\n mnemonicKind: 'configured-actor',\n source: 'actor',\n }\n : {\n accountIndex: accountIndex ?? getReservedActorIndex(actorName),\n actorName,\n mnemonic: root.mnemonic,\n mnemonicKind: root.mnemonicKind,\n source: 'root',\n })\n}\n\nexport async function resolveWalletReport(\n requestedActors: string[],\n configuration: RootMnemonicConfig,\n): Promise<ResolvedWalletReport> {\n const root = resolveRootWallet(configuration)\n const actorConfigMap = new Map(configuration.actors.map(actor => [actor.name, actor]))\n const isRootRequired = requestedActors.some(actorName => !actorConfigMap.get(actorName)?.mnemonic)\n\n const resolvedActors = await Promise.all(\n requestedActors.map(async actorName => await resolveActorWallet(actorName, actorConfigMap.get(actorName), root)),\n )\n\n const labelMap = new Map<number, string[]>([[0, [getAccountLabel(ROOT_WALLET_RUNTIME_ID)]]])\n for (const actor of resolvedActors) {\n if (actor.source !== 'root') continue\n const labels = labelMap.get(actor.accountIndex) ?? []\n labels.push(actor.label)\n labelMap.set(actor.accountIndex, labels)\n }\n\n const sharedAccounts = await Promise.all(\n Array.from({ length: SHARED_ACCOUNT_REPORT_COUNT }, (_, index) => index).map(async (accountIndex) => {\n const account = await resolveWalletMetadata({\n accountIndex,\n actorName: ROOT_WALLET_RUNTIME_ID,\n mnemonic: root.mnemonic,\n mnemonicKind: root.mnemonicKind,\n source: 'root',\n })\n const labels = labelMap.get(accountIndex)\n return { ...account, label: labels?.join(', ') ?? `shared[${accountIndex}]` }\n }),\n )\n\n return {\n actorSpecificAccounts: resolvedActors.filter(actor => actor.source === 'actor'),\n isRootRequired,\n requestedActors: [...requestedActors],\n root,\n sharedAccounts,\n }\n}\n\nexport async function buildInsecureGenesisRewardAccounts(): Promise<ResolvedWalletMetadata[]> {\n const accounts = await Promise.all(\n Array.from({ length: SHARED_ACCOUNT_REPORT_COUNT }, (_, index) => index).map(async (accountIndex) => {\n const account = await resolveWalletMetadata({\n accountIndex,\n actorName: 'genesisReward',\n mnemonic: INSECURE_GENESIS_REWARD_MNEMONIC,\n mnemonicKind: 'configured-actor',\n source: 'actor',\n })\n return { ...account, label: accountIndex === 0 ? 'genesisRewardAddress' : `genesisReward[${accountIndex}]` }\n }),\n )\n return accounts\n}\n\nexport async function initializeResolvedWalletReport(\n requestedActors: string[],\n configuration: RootMnemonicConfig,\n): Promise<ResolvedWalletReport> {\n activeWalletReport = await resolveWalletReport(requestedActors, configuration)\n return activeWalletReport\n}\n\nexport function getResolvedWalletReport(): ResolvedWalletReport | undefined {\n return activeWalletReport\n}\n\nfunction formatSharedAccount(account: ResolvedWalletMetadata, showPrivateKey: boolean) {\n const lines = [\n `[${account.accountIndex}] ${account.label}`,\n `source: ${account.mnemonicKind === 'built-in-dev' ? 'built-in dev mnemonic' : 'configured root mnemonic'}`,\n `path: ${account.derivationPath}`,\n `address: ${account.address}`,\n ]\n if (showPrivateKey) lines.push(`privateKey: ${account.privateKey ?? 'unavailable'}`)\n return lines.join('\\n')\n}\n\nfunction formatActorSpecificAccount(account: ResolvedWalletMetadata) {\n return [\n account.label,\n 'source: actor mnemonic',\n `path: ${account.derivationPath}`,\n `address: ${account.address}`,\n ].join('\\n')\n}\n\nfunction formatGenesisRewardAccount(account: ResolvedWalletMetadata) {\n const balance = account.accountIndex === 0 ? GENESIS_REWARD_AMOUNT / ATTO_XL1_PER_XL1 : 0n\n return [\n `[${account.accountIndex}] ${account.label}`,\n `path: ${account.derivationPath}`,\n `address: ${account.address}`,\n `privateKey: ${account.privateKey ?? 'unavailable'}`,\n `balance: ${balance.toString()} XL1`,\n ].join('\\n')\n}\n\nexport function formatWalletReport(report: ResolvedWalletReport): string {\n const sections: string[] = []\n const showRootSection = report.isRootRequired || report.root.isConfigured\n const showSecrets = report.root.isBuiltInDevMnemonic && showRootSection\n\n if (showRootSection) {\n sections.push(showSecrets ? 'Development wallet detected.' : 'Wallet summary')\n } else {\n sections.push('Wallet summary (root wallet not required — every requested actor has its own mnemonic)')\n }\n\n if (showSecrets) {\n sections.push([\n 'DEVELOPMENT WALLET WARNING',\n '',\n 'XL1 is using the built-in development mnemonic.',\n 'This mnemonic is fixed, public, and does not change between runs.',\n 'The addresses and private keys below are unsafe and must never be used for real funds, production systems, or shared environments.',\n 'Anyone with this information can fully control these accounts.',\n '',\n 'Mnemonic:',\n report.root.mnemonic,\n ].join('\\n'))\n }\n\n if (showRootSection) {\n sections.push([\n `Shared wallet accounts from ${report.root.basePath}:`,\n '',\n report.sharedAccounts.map(account => formatSharedAccount(account, showSecrets)).join('\\n\\n'),\n ].join('\\n'))\n }\n\n if (report.actorSpecificAccounts.length > 0) {\n sections.push([\n 'Actor-specific wallet accounts:',\n '',\n report.actorSpecificAccounts.map(account => formatActorSpecificAccount(account)).join('\\n\\n'),\n ].join('\\n'))\n }\n\n return sections.join('\\n\\n')\n}\n\nexport function formatInsecureGenesisRewardWarning(accounts: ResolvedWalletMetadata[]): string {\n return [\n 'INSECURE GENESIS REWARD WALLET WARNING',\n '',\n 'XL1 is using a public, insecure fallback wallet for the genesis reward address.',\n 'This phrase is intentionally unsafe and must never be used for real funds, production systems, or shared environments.',\n 'Anyone with this information can fully control the genesis reward wallet.',\n '',\n 'Genesis reward phrase:',\n INSECURE_GENESIS_REWARD_MNEMONIC,\n '',\n `The genesis reward is sent to index 0 and starts with ${(GENESIS_REWARD_AMOUNT / ATTO_XL1_PER_XL1).toString()} XL1.`,\n '',\n `Genesis reward wallet accounts from ${DEFAULT_WALLET_PATH}:`,\n '',\n accounts.map(account => formatGenesisRewardAccount(account)).join('\\n\\n'),\n ].join('\\n')\n}\n\nexport async function resolveGenesisRewardAddress(config: Pick<Config, 'chain'>): Promise<Address> {\n if (config.chain.genesisRewardAddress) return config.chain.genesisRewardAddress\n const wallet = await generateXyoBaseWalletFromPhrase(INSECURE_GENESIS_REWARD_MNEMONIC)\n const account = await wallet.derivePath('0')\n return account.address\n}\n\nexport async function resolveWalletForActor(\n actorName: string,\n mnemonic?: string,\n accountIndex?: number,\n): Promise<WalletInstance> {\n const fromReport = activeWalletReport\n ? actorName === ROOT_WALLET_RUNTIME_ID\n ? activeWalletReport.sharedAccounts.find(account => account.accountIndex === 0)\n : activeWalletReport.actorSpecificAccounts.find(account => account.actorName === actorName)\n ?? activeWalletReport.sharedAccounts.find(account => account.actorName === actorName || account.label.split(', ').includes(getAccountLabel(actorName)))\n : undefined\n\n const resolvedMnemonic = fromReport?.mnemonic ?? mnemonic ?? BUILT_IN_DEV_MNEMONIC\n const resolvedAccountIndex = fromReport?.accountIndex ?? accountIndex ?? 0\n\n const wallet = await generateXyoBaseWalletFromPhrase(resolvedMnemonic)\n return await wallet.derivePath(`${resolvedAccountIndex}`)\n}\n","import { assertEx, isString } from '@xylabs/sdk-js'\nimport type { BiosExternalInterface } from '@xyo-network/bios-model'\nimport type { WalletKind } from '@xyo-network/storage-model'\nimport type { ActorConfigContext } from '@xyo-network/xl1-sdk'\n\nimport {\n getBuiltInDevMnemonic, getResolvedWalletReport, ROOT_WALLET_RUNTIME_ID,\n} from './walletResolution.ts'\n\nexport async function initActorSeedPhrase(context: ActorConfigContext, bios: BiosExternalInterface): Promise<string> {\n const { logger, config } = context\n const walletKind = config.name as WalletKind\n void bios\n const report = getResolvedWalletReport()\n const account = config.name === ROOT_WALLET_RUNTIME_ID ? report?.sharedAccounts.find(entry => entry.accountIndex === 0) : report?.actorSpecificAccounts.find(entry => entry.actorName === config.name)\n if (isString(account?.mnemonic)) return account.mnemonic\n if (isString(report?.root.mnemonic)) return report.root.mnemonic\n if (isString(config.mnemonic)) return config.mnemonic\n const fallback = getBuiltInDevMnemonic()\n logger?.debug(`[${walletKind}] Falling back to built-in development mnemonic`)\n return assertEx(fallback, () => 'Unable to resolve mnemonic')\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport type {\n AttachableArchivistInstance, AttachableModuleInstance, BridgeInstance, ModuleIdentifier,\n} from '@xyo-network/sdk-js'\nimport { asAttachableArchivistInstance, asAttachableModuleInstance } from '@xyo-network/sdk-js'\nimport { Mutex } from 'async-mutex'\n\nconst initMutex = new Mutex()\ntype ModuleDictionary = Record<ModuleIdentifier, AttachableModuleInstance | undefined>\ntype BridgedModuleDictionary = Record<Address, ModuleDictionary | undefined>\nconst bridgedModuleDictionary: BridgedModuleDictionary = {}\n\nexport async function initBridgedModule({ bridge, moduleName }: { bridge: BridgeInstance; moduleName: ModuleIdentifier }): Promise<AttachableModuleInstance> {\n return await initMutex.runExclusive(async () => {\n const existing = bridgedModuleDictionary?.[bridge.address]?.[moduleName]\n if (existing) return existing\n const mod = assertEx(await bridge.resolve(moduleName), () => `Could not resolve ${moduleName}`)\n const moduleInstance = assertEx(asAttachableModuleInstance(mod), () => `Could not convert ${moduleName} to attachable module instance`)\n // Initialize the nested dictionary if needed\n let moduleMap = bridgedModuleDictionary[bridge.address]\n if (moduleMap === undefined) {\n moduleMap = {}\n bridgedModuleDictionary[bridge.address] = moduleMap\n }\n // Store and return the module instance\n moduleMap[moduleName] = moduleInstance\n return moduleInstance\n })\n}\n\nexport async function initBridgedArchivistModule({ bridge, moduleName }: {\n bridge: BridgeInstance\n moduleName: ModuleIdentifier\n}): Promise<AttachableArchivistInstance> {\n return assertEx(\n asAttachableArchivistInstance(await initBridgedModule({ bridge, moduleName })),\n () => `Could not convert ${moduleName} to attachable archivist instance`,\n )\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { RuntimeStatusMonitor } from '@xyo-network/xl1-sdk'\n\nexport function initStatusReporter({ logger }: { logger: Logger }) {\n const statusReporter = new RuntimeStatusMonitor(logger)\n statusReporter.onGlobalTransition({ to: 'started' }, () => {\n logger.log('All services started.')\n })\n statusReporter.onGlobalTransition({ to: 'error' }, () => {\n logger.error('Producer encountered an unhandled error!')\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(1)\n })\n return statusReporter\n}\n","import type { ActorConfigContext } from '@xyo-network/xl1-sdk'\n\nimport { resolveWalletForActor, ROOT_WALLET_RUNTIME_ID } from './walletResolution.ts'\n\nexport async function initActorWallet(context: ActorConfigContext, mnemonic?: string) {\n const actorName = context.config.name === ROOT_WALLET_RUNTIME_ID ? ROOT_WALLET_RUNTIME_ID : context.config.name\n const accountIndex = 'accountIndex' in context.config && typeof context.config.accountIndex === 'number'\n ? context.config.accountIndex\n : undefined\n return await resolveWalletForActor(\n actorName,\n mnemonic ?? context.config.mnemonic,\n accountIndex,\n )\n}\n\n// export async function initApiWallet({ config, logger }: ConfigContext) {\n// const { mnemonic } = config.actors.api\n// return await initWallet({ config, logger }, mnemonic)\n// }\n\n// export async function initBridgeWallet({ config, logger }: ConfigContext) {\n// const { mnemonic } = config.actors.bridge\n// return await initWallet({ config, logger }, mnemonic)\n// }\n\n// export async function initMempoolWallet({ config, logger }: ConfigContext) {\n// const { mnemonic } = config.actors.mempool\n// return await initWallet({ config, logger }, mnemonic)\n// }\n\n// export async function initProducerWallet({ config, logger }: ConfigContext) {\n// const { mnemonic } = config.actors.producer\n// return await initWallet({ config, logger }, mnemonic)\n// }\n\n// export async function initRewardsRedemptionApiWallet({ config, logger }: ConfigContext) {\n// const { mnemonic } = config.actors.rewardRedemption\n// return await initWallet({ config, logger }, mnemonic)\n// }\n\n// export async function initValidatorWallet({ config, logger }: ConfigContext) {\n// const { mnemonic } = config.actors.mempool\n// return await initWallet({ config, logger }, mnemonic)\n// }\n","import type { CreatableInstance } from '@xylabs/sdk-js'\nimport { AbstractCreatable, creatable } from '@xylabs/sdk-js'\nimport type { ActorInstanceV3 } from '@xyo-network/xl1-sdk'\n\nexport interface OrchestratorInstance extends CreatableInstance {\n registerActor(actor: ActorInstanceV3): Promise<void>\n}\n\n@creatable()\nexport class Orchestrator extends AbstractCreatable implements OrchestratorInstance {\n protected actors: (ActorInstanceV3)[] = []\n protected keepAliveHandle: NodeJS.Timeout | null = null\n protected running = false\n\n /**\n * Registers an actor.\n * (We won't activate the actor until `start()` is called.)\n */\n async registerActor(actor: ActorInstanceV3) {\n if (this.running) {\n // If the orchestrator is already running, activate the actor immediately\n await actor.start()\n }\n this.actors.push(actor)\n }\n\n /**\n * Starts the orchestrator: activates all actors.\n */\n override async startHandler() {\n await super.startHandler()\n if (this.running) {\n this.logger?.warn('[Orchestrator] Already started.')\n return\n }\n\n this.logger?.log('[Orchestrator] Starting...')\n this.running = true\n for (const actor of this.actors) {\n await actor.start()\n }\n // This interval will fire every 24.8 days (2^31 - 1 ms), effectively never finishing\n this.keepAliveHandle = setInterval(() => {\n // No-op\n }, 2_147_483_647)\n }\n\n /**\n * Stops the orchestrator: deactivates all actors.\n */\n override async stopHandler() {\n await super.stopHandler()\n if (!this.running) {\n this.logger?.log('[Orchestrator] Already stopped.')\n return\n }\n\n this.logger?.log('[Orchestrator] Stopping...')\n for (const actor of this.actors) {\n await actor.stop()\n }\n this.running = false\n if (this.keepAliveHandle) clearInterval(this.keepAliveHandle)\n this.logger?.log('[Orchestrator] Stopped...')\n }\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport type { CreatableProviderParams } from '@xyo-network/xl1-sdk'\nimport { AbstractCreatableProvider, creatableProvider } from '@xyo-network/xl1-sdk'\n\n/**\n * Moniker used to resolve a SimpleRejectedTransactionsArchivistProvider\n * from a ProviderFactoryLocator. Actor-local locators (e.g. the producer)\n * resolve this from the root locator to reuse the shared rejected-transactions\n * archivist that the DLQ runner and viewer also write to.\n */\nexport const RejectedTransactionsArchivistProviderMoniker = 'RejectedTransactionsArchivistProvider'\n\n/**\n * Parameters for SimpleRejectedTransactionsArchivistProvider.\n */\nexport interface SimpleRejectedTransactionsArchivistProviderParams extends CreatableProviderParams {\n archivist: ArchivistInstance\n}\n\n/**\n * Pass-through provider that exposes the shared rejected-transactions\n * archivist under a locator moniker so downstream actor locators can\n * reuse the same backing store rather than constructing their own\n * ephemeral MemoryArchivist.\n */\n@creatableProvider()\nexport class SimpleRejectedTransactionsArchivistProvider extends AbstractCreatableProvider<SimpleRejectedTransactionsArchivistProviderParams> {\n static readonly defaultMoniker = RejectedTransactionsArchivistProviderMoniker\n static readonly dependencies: string[] = []\n static readonly monikers = [RejectedTransactionsArchivistProviderMoniker]\n\n moniker = SimpleRejectedTransactionsArchivistProvider.defaultMoniker\n\n get archivist(): ArchivistInstance {\n return this.params.archivist\n }\n\n static override async paramsHandler(\n params?: Partial<SimpleRejectedTransactionsArchivistProviderParams>,\n ): Promise<SimpleRejectedTransactionsArchivistProviderParams> {\n return {\n ...(await super.paramsHandler(params)),\n archivist: assertEx(params?.archivist, () => 'archivist is required'),\n }\n }\n}\n","import type { AccountInstance } from '@xyo-network/sdk-js'\nimport { isAccountInstance } from '@xyo-network/sdk-js'\nimport type {\n BlockValidators,\n RemoteConfig, RpcTransport, XyoSignerRpcSchemas,\n} from '@xyo-network/xl1-sdk'\nimport {\n basicRemoteRunnerLocator as sdkBasicRemoteRunnerLocator,\n JsonRpcAccountBalanceViewer,\n JsonRpcXyoSigner,\n SimpleXyoSigner,\n} from '@xyo-network/xl1-sdk'\n\nfunction signerFactoryFromParam(signer: RpcTransport<XyoSignerRpcSchemas> | AccountInstance) {\n if (isAccountInstance(signer)) {\n return SimpleXyoSigner.factory<SimpleXyoSigner>(SimpleXyoSigner.dependencies, { account: signer })\n }\n return JsonRpcXyoSigner.factory<JsonRpcXyoSigner>(JsonRpcXyoSigner.dependencies, { transport: signer })\n}\n\nexport function basicRemoteRunnerLocator(\n name: string,\n remoteConfig: RemoteConfig,\n signer: RpcTransport<XyoSignerRpcSchemas> | AccountInstance,\n dataLakeEndpoint?: string,\n validators?: BlockValidators,\n) {\n const transport = isAccountInstance(signer) ? undefined as never : signer\n return sdkBasicRemoteRunnerLocator(name, remoteConfig, transport, dataLakeEndpoint, {\n additionalProviders: [\n JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>(\n JsonRpcAccountBalanceViewer.dependencies,\n {},\n ),\n ],\n signerFactory: signerFactoryFromParam(signer),\n skipGatewayRunner: true,\n validators,\n })\n}\n","import type { BlockValidators, RemoteConfig } from '@xyo-network/xl1-sdk'\nimport {\n basicRemoteViewerLocator as sdkBasicRemoteViewerLocator,\n JsonRpcAccountBalanceViewer,\n} from '@xyo-network/xl1-sdk'\n\nexport function basicRemoteViewerLocator(\n name: string,\n remoteConfig: RemoteConfig,\n dataLakeEndpoint?: string,\n validators?: BlockValidators,\n) {\n return sdkBasicRemoteViewerLocator(name, remoteConfig, dataLakeEndpoint, {\n additionalProviders: [\n JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>(\n JsonRpcAccountBalanceViewer.dependencies,\n {},\n ),\n ],\n validators,\n })\n}\n","import { initTelemetry } from '@xyo-network/chain-telemetry'\nimport type { Config } from '@xyo-network/xl1-sdk'\n\nexport async function telemetryContextFromConfig(config: Config, serviceName: string, serviceVersion: string) {\n const { otlpEndpoint } = config.telemetry?.otel ?? {}\n const { path: endpoint = '/metrics', port: port = 9466 } = config.telemetry?.metrics?.scrape ?? {}\n return await initTelemetry({\n attributes: {\n serviceName,\n serviceVersion,\n },\n otlpEndpoint,\n metricsConfig: { endpoint, port },\n })\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport type { Config, CreatableProviderContext } from '@xyo-network/xl1-sdk'\n\nimport { initStatusReporter } from '../../../shared/index.ts'\nimport { telemetryContextFromConfig } from './telemetryContextFromConfig.ts'\n\nexport async function contextFromConfigWithoutLocator(\n config: Config,\n logger: Logger,\n serviceName: string,\n serviceVersion: string,\n): Promise<Omit<CreatableProviderContext, 'locator'>> {\n const singletons = {}\n const caches = {}\n const telemetryConfig = await telemetryContextFromConfig(config, serviceName, serviceVersion)\n const statusReporter = initStatusReporter({ logger })\n return {\n ...telemetryConfig,\n config,\n singletons,\n caches,\n logger,\n statusReporter,\n }\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport { validateHydratedBlock, validateHydratedBlockState } from '@xyo-network/chain-validation'\nimport type { ActorConfigContext, HydratedBlockStateValidationFunction } from '@xyo-network/xl1-sdk'\nimport {\n BlockCumulativeBalanceValidatorFactory,\n ProviderFactoryLocator,\n SimpleAccountBalanceViewer,\n SimpleBlockValidationViewer,\n SimpleBlockViewer,\n SimpleDeadLetterQueueRunner,\n SimpleDeadLetterQueueViewer,\n SimpleFinalizationRunner,\n SimpleFinalizationViewer,\n SimpleMempoolRunner,\n SimpleMempoolViewer,\n SimpleTransactionValidationViewer,\n SimpleTransactionViewer,\n SimpleWindowedBlockViewer,\n SimpleXyoConnectionViewer,\n SimpleXyoViewer,\n validateTransaction,\n} from '@xyo-network/xl1-sdk'\n\nimport { initActorWallet, SimpleRejectedTransactionsArchivistProvider } from '../../../shared/index.ts'\nimport {\n initBalanceSummaryMap, initFinalizationArchivistIfNeeded,\n initServerNode, initTransferSummaryMap,\n} from '../../init/index.ts'\n\nconst cumulativeBalanceValidator = BlockCumulativeBalanceValidatorFactory()\n\nconst validateHydratedBlockStateWithCumulativeBalance: HydratedBlockStateValidationFunction = async (context, block) => {\n const [stateErrors, cumulativeErrors] = await Promise.all([\n validateHydratedBlockState(context, block),\n cumulativeBalanceValidator(context, block),\n ])\n return [...stateErrors, ...cumulativeErrors]\n}\n\nexport async function localLocatorFromConfig(\n context: ActorConfigContext,\n validateDepsOnRegister = false,\n onInsecureGenesisConfirm?: () => Promise<void>,\n) {\n const balancesSummaryMap = assertEx(await initBalanceSummaryMap(context), () => 'Balance Summary Map not initialized')\n const transfersSummaryMap = assertEx(await initTransferSummaryMap(context), () => 'Transfer Summary Map not initialized')\n\n // TODO: this should not be an api wallet, but a server wallet\n const wallet = await initActorWallet(context)\n\n const {\n writableChainArchivist,\n readonlyChainArchivist,\n pendingTransactionsArchivist,\n pendingBlocksArchivist,\n rejectedBlocksArchivist,\n rejectedTransactionsArchivist,\n } = await initServerNode(\n context,\n wallet,\n )\n\n await initFinalizationArchivistIfNeeded(writableChainArchivist, context.config, wallet, {\n logger: context.logger,\n onInsecureGenesisConfirm,\n })\n\n const locator = new ProviderFactoryLocator(context, {}, validateDepsOnRegister)\n locator.registerMany([\n SimpleMempoolViewer.factory<SimpleMempoolViewer>(SimpleMempoolViewer.dependencies, { pendingTransactionsArchivist, pendingBlocksArchivist }),\n SimpleMempoolRunner.factory<SimpleMempoolRunner>(SimpleMempoolRunner.dependencies, { pendingTransactionsArchivist, pendingBlocksArchivist }),\n SimpleAccountBalanceViewer.factory<SimpleAccountBalanceViewer>(SimpleAccountBalanceViewer.dependencies, { balancesSummaryMap, transfersSummaryMap }),\n SimpleFinalizationViewer.factory<SimpleFinalizationViewer>(SimpleFinalizationViewer.dependencies, { finalizedArchivist: readonlyChainArchivist }),\n SimpleBlockViewer.factory<SimpleBlockViewer>(SimpleBlockViewer.dependencies, { finalizedArchivist: readonlyChainArchivist }),\n SimpleWindowedBlockViewer.factory<SimpleWindowedBlockViewer>(SimpleWindowedBlockViewer.dependencies, { maxWindowSize: 1000, syncInterval: 10_000 }),\n SimpleXyoConnectionViewer.factory<SimpleXyoConnectionViewer>(SimpleXyoConnectionViewer.dependencies, {}),\n SimpleTransactionViewer.factory<SimpleTransactionViewer>(SimpleTransactionViewer.dependencies, {}),\n SimpleXyoViewer.factory<SimpleXyoViewer>(SimpleXyoViewer.dependencies, {}),\n SimpleFinalizationViewer.factory<SimpleFinalizationViewer>(SimpleFinalizationViewer.dependencies, { finalizedArchivist: readonlyChainArchivist }),\n SimpleFinalizationRunner.factory<SimpleFinalizationRunner>(SimpleFinalizationRunner.dependencies, { finalizedArchivist: writableChainArchivist }),\n SimpleBlockValidationViewer.factory<SimpleBlockValidationViewer>(\n SimpleBlockValidationViewer.dependencies,\n { state: validateHydratedBlockStateWithCumulativeBalance, protocol: validateHydratedBlock },\n ),\n SimpleTransactionValidationViewer.factory<SimpleTransactionValidationViewer>(\n SimpleTransactionValidationViewer.dependencies,\n { protocol: validateTransaction },\n ),\n SimpleDeadLetterQueueRunner.factory<SimpleDeadLetterQueueRunner>(\n SimpleDeadLetterQueueRunner.dependencies,\n { rejectedBlocksArchivist, rejectedTransactionsArchivist },\n ),\n SimpleDeadLetterQueueViewer.factory<SimpleDeadLetterQueueViewer>(\n SimpleDeadLetterQueueViewer.dependencies,\n { rejectedBlocksArchivist, rejectedTransactionsArchivist },\n ),\n SimpleRejectedTransactionsArchivistProvider.factory<SimpleRejectedTransactionsArchivistProvider>(\n SimpleRejectedTransactionsArchivistProvider.dependencies,\n { archivist: rejectedTransactionsArchivist },\n ),\n ])\n return locator\n}\n","import { BaseMongoSdk, type BaseMongoSdkPrivateConfig } from '@xylabs/mongo'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport { MongoMap } from '@xyo-network/chain-protocol-driver-mongodb'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BalancesStepSummary, BaseConfigContext, MapType,\n} from '@xyo-network/xl1-sdk'\nimport { hasMongoConfig, MemoryMap } from '@xyo-network/xl1-sdk'\n\nexport async function initBalanceSummaryMap({ logger, config }: BaseConfigContext): Promise<MapType<string, WithStorageMeta<BalancesStepSummary>>> {\n const mongoConfig = config.storage?.mongo\n if (hasMongoConfig(mongoConfig)) {\n // Create the MongoDB SDK from the configuration\n const {\n connectionString: dbConnectionString, database: dbName, domain: dbDomain, password: dbPassword, username: dbUserName,\n } = mongoConfig\n const payloadSdkConfig: BaseMongoSdkPrivateConfig = {\n dbConnectionString, dbDomain, dbName, dbPassword, dbUserName,\n }\n\n const sdkBalanceSummaryMap = new BaseMongoSdk<WithStorageMeta<BalancesStepSummary>>({ ...payloadSdkConfig, collection: 'balance_summary_map' })\n const result = await MongoMap.create<MongoMap<Hash, WithStorageMeta<BalancesStepSummary>>>({\n sdk: sdkBalanceSummaryMap,\n getCache: { enabled: true, maxEntries: 5000 },\n })\n assertEx(await result.start(), () => 'Failed to start transfer summary map')\n return result\n } else {\n logger?.warn('[API] Mongo configuration not found. Using MemoryMap for BalanceSummaryMap.')\n return new MemoryMap<string, WithStorageMeta<BalancesStepSummary>>()\n }\n}\n","import { asEthAddress } from '@xylabs/sdk-js'\nimport {\n EvmChainContractViewer, EvmStakeEventsViewer, EvmStakeTotalsViewer, EvmStakeViewer,\n} from '@xyo-network/chain-ethereum'\nimport { canUseEvmProvider, initEvmProvider } from '@xyo-network/chain-orchestration-evm'\nimport type {\n ChainId,\n Position,\n ProviderFactoryLocatorInstance,\n} from '@xyo-network/xl1-sdk'\nimport {\n SimpleChainContractViewer,\n SimpleStakeEventsViewer, SimpleStakeTotalsViewer, SimpleStakeViewer, SimpleTimeSyncViewer,\n XYO_ZERO_ADDRESS,\n} from '@xyo-network/xl1-sdk'\n\n/* TODO: Rename function since it initializes both EVM and non-EVM providers */\nexport async function initEvmProvidersIfAvailable(\n locator: ProviderFactoryLocatorInstance,\n): Promise<ProviderFactoryLocatorInstance> {\n const context = locator.context\n const { logger } = context\n if (canUseEvmProvider(context) && context.config.chain.id) {\n const chainId = context.config.chain.id as ChainId\n const provider = await initEvmProvider(context)\n const address = asEthAddress(chainId, true)\n\n // Register the contract events viewer\n locator.register(EvmStakeEventsViewer.factory<EvmStakeEventsViewer>(\n EvmStakeEventsViewer.dependencies,\n { address, provider },\n ))\n\n // Register the stake viewer\n locator.register(EvmStakeViewer.factory<EvmStakeViewer>(\n EvmStakeViewer.dependencies,\n { address, provider },\n ))\n\n // Register the stake totals viewer\n locator.register(EvmStakeTotalsViewer.factory<EvmStakeTotalsViewer>(\n EvmStakeTotalsViewer.dependencies,\n { address, provider },\n ))\n\n // Register the contract viewer\n locator.register(EvmChainContractViewer.factory<EvmChainContractViewer>(\n EvmChainContractViewer.dependencies,\n { address, provider },\n ))\n\n locator.register(SimpleTimeSyncViewer.factory<SimpleTimeSyncViewer>(\n SimpleTimeSyncViewer.dependencies,\n { ethProvider: provider },\n ))\n } else {\n logger?.warn('EVM provider not available - running with memory based contract/stake viewers')\n const positions: Position[] = []\n\n // Register the contract events viewer\n locator.register(SimpleStakeEventsViewer.factory<SimpleStakeEventsViewer>(\n SimpleStakeEventsViewer.dependencies,\n { positions },\n ))\n\n // Register the stake viewer\n locator.register(SimpleStakeViewer.factory<SimpleStakeViewer>(\n SimpleStakeViewer.dependencies,\n { positions },\n ))\n\n // Register the stake totals viewer\n locator.register(SimpleStakeTotalsViewer.factory<SimpleStakeTotalsViewer>(\n SimpleStakeTotalsViewer.dependencies,\n {},\n ))\n\n // Register the contract viewer\n locator.register(SimpleChainContractViewer.factory<SimpleChainContractViewer>(\n SimpleChainContractViewer.dependencies,\n {\n minWithdrawalBlocks: 10, stakingTokenAddress: XYO_ZERO_ADDRESS, rewardsContract: XYO_ZERO_ADDRESS,\n },\n ))\n\n locator.register(SimpleTimeSyncViewer.factory<SimpleTimeSyncViewer>(\n SimpleTimeSyncViewer.dependencies,\n {},\n ))\n }\n return locator\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport { createBootstrapHead } from '@xyo-network/chain-sdk'\nimport type { AccountInstance, ArchivistInstance } from '@xyo-network/sdk-js'\nimport { Account } from '@xyo-network/sdk-js'\nimport type {\n ActorConfig,\n ChainId,\n SignedBlockBoundWitnessWithHashMeta,\n} from '@xyo-network/xl1-sdk'\nimport {\n asAttoXL1, findMostRecentBlock,\n flattenHydratedBlock,\n} from '@xyo-network/xl1-sdk'\n\nimport {\n buildInsecureGenesisRewardAccounts,\n formatInsecureGenesisRewardWarning,\n GENESIS_REWARD_AMOUNT,\n resolveGenesisRewardAddress,\n} from '../../shared/index.ts'\n\nexport interface InitFinalizationOptions {\n logger?: Logger\n onInsecureGenesisConfirm?: () => Promise<void>\n}\n\nexport async function initFinalizationArchivistIfNeeded(\n archivist: ArchivistInstance,\n config: ActorConfig,\n account: AccountInstance,\n options: InitFinalizationOptions = {},\n): Promise<[SignedBlockBoundWitnessWithHashMeta, ChainId]> {\n const configuredChainId = config.chain.id\n const possibleHead = await findMostRecentBlock(archivist)\n if (configuredChainId && possibleHead && possibleHead.chain !== configuredChainId) {\n throw new Error(`Configured chain ID (${configuredChainId}) does not match the existing chain ID (${possibleHead.chain})`)\n }\n\n let possibleChainId: ChainId | undefined = configuredChainId\n\n // if there is no configured chain ID and no head, create a new chain\n if (!possibleHead) {\n possibleChainId = possibleChainId ?? (await Account.random()).address\n if (!config.chain.genesisRewardAddress) {\n const accounts = await buildInsecureGenesisRewardAccounts()\n options.logger?.warn(formatInsecureGenesisRewardWarning(accounts))\n if (options.onInsecureGenesisConfirm) await options.onInsecureGenesisConfirm()\n }\n const genesisRewardAddress = await resolveGenesisRewardAddress(config)\n // If there is no head, create one\n const chain = await createBootstrapHead(\n account,\n possibleChainId,\n asAttoXL1(GENESIS_REWARD_AMOUNT),\n genesisRewardAddress,\n )\n const payloads = chain.flatMap(block => flattenHydratedBlock(block))\n await archivist.insert(payloads)\n }\n const head = possibleHead ?? assertEx(await findMostRecentBlock(archivist), () => 'No blocks found in chain archivist')\n const chainId = assertEx(possibleChainId, () => 'Chain ID could not be determined')\n return [head, chainId]\n}\n","import { MongoDBArchivistV2 } from '@xyo-network/archivist-mongodb'\nimport type { MongoDBModuleParamsV2 } from '@xyo-network/module-model-mongodb'\nimport type { Config } from '@xyo-network/xl1-sdk'\n\nasync function initMongoFinalizedArchivist(config: Config) {\n const payloadSdkConfig = {\n ...config.storage.mongo,\n collection: 'chain_validated',\n } satisfies MongoDBModuleParamsV2['payloadSdkConfig']\n return await MongoDBArchivistV2.create({ payloadSdkConfig })\n}\n\nexport async function initFinalizedArchivist(config: Config) {\n const finalizedArchivist = await initMongoFinalizedArchivist(config)\n return finalizedArchivist\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport type { NodeInstance } from '@xyo-network/sdk-js'\nimport { asArchivistInstance } from '@xyo-network/sdk-js'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\n\nimport { loadNode } from '../manifest/index.ts'\n\nasync function writableChainArchivistFromNode(node: NodeInstance) {\n return asArchivistInstance(\n await node.resolve('Chain:Validated'),\n { required: true },\n )\n}\n\nasync function readonlyChainArchivistFromNode(node: NodeInstance) {\n return assertEx(asArchivistInstance(\n await node.resolve('Chain:Validated'),\n { required: true },\n ))\n}\n\nasync function pendingTransactionsArchivistFromNode(node: NodeInstance) {\n return asArchivistInstance(\n await node.resolve('XYOChain:Pending:Transactions'),\n { required: true },\n )\n}\n\nasync function pendingBlocksArchivistFromNode(node: NodeInstance) {\n return asArchivistInstance(\n await node.resolve('XYOChain:Pending:Blocks'),\n { required: true },\n )\n}\n\nasync function rejectedBlocksArchivistFromNode(node: NodeInstance) {\n return asArchivistInstance(\n await node.resolve('XYOChain:DeadLetterQueue:RejectedBlocks'),\n { required: true },\n )\n}\n\nasync function rejectedTransactionsArchivistFromNode(node: NodeInstance) {\n return asArchivistInstance(\n await node.resolve('XYOChain:DeadLetterQueue:RejectedTransactions'),\n { required: true },\n )\n}\n\nexport async function initServerNode(\n context: BaseConfigContext,\n wallet: WalletInstance,\n providedNode?: NodeInstance,\n) {\n const node: NodeInstance = providedNode ?? await loadNode(context, wallet)\n assertEx(await node.start(), () => 'Failed to start node')\n const writableChainArchivist = await writableChainArchivistFromNode(node)\n const readonlyChainArchivist = await readonlyChainArchivistFromNode(node)\n const pendingTransactionsArchivist = await pendingTransactionsArchivistFromNode(node)\n const pendingBlocksArchivist = await pendingBlocksArchivistFromNode(node)\n const rejectedBlocksArchivist = await rejectedBlocksArchivistFromNode(node)\n const rejectedTransactionsArchivist = await rejectedTransactionsArchivistFromNode(node)\n return {\n node,\n writableChainArchivist,\n readonlyChainArchivist,\n pendingTransactionsArchivist,\n pendingBlocksArchivist,\n rejectedBlocksArchivist,\n rejectedTransactionsArchivist,\n }\n}\n","import { type BaseMongoSdkPrivateConfig } from '@xylabs/mongo'\nimport { isDefined } from '@xylabs/sdk-js'\nimport { LmdbArchivistConfigSchema } from '@xyo-network/archivist-lmdb'\nimport { MongoDBArchivistV2, MongoDBArchivistV2Deletable } from '@xyo-network/archivist-mongodb'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { initTelemetry } from '@xyo-network/chain-telemetry'\nimport type { MongoDBModuleParamsV2 } from '@xyo-network/module-model-mongodb'\nimport {\n AbstractModule, LoggerModuleStatusReporter,\n MemoryArchivist, MemorySentinel, ModuleFactoryLocator,\n} from '@xyo-network/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { hasMongoConfig } from '@xyo-network/xl1-sdk'\n\nimport { NamedLmdbArchivist } from './NamedLmdbArchivist.ts'\n\n/**\n * Used for retrieving a locator with the necessary modules registered for testing\n * operation of the node (entirely in memory)\n * @returns A locator with the necessary modules registered\n */\nexport const getLocator = async (\n { logger, config }: BaseConfigContext,\n) => {\n const { otlpEndpoint } = config.telemetry?.otel ?? {}\n const { path: endpoint = '/metrics', port: port = 9465 } = config.telemetry?.metrics?.scrape ?? {}\n const { traceProvider, meterProvider } = await initTelemetry({\n attributes: {\n serviceName: 'xl1-api',\n serviceVersion: '1.0.0',\n },\n otlpEndpoint,\n metricsConfig: { endpoint, port },\n })\n\n if (isDefined(logger)) AbstractModule.defaultLogger = logger\n const statusReporter = logger ? new LoggerModuleStatusReporter(logger) : undefined\n\n const locator = new ModuleFactoryLocator()\n // If there's a MongoDB configuration\n const mongoConfig = config.storage?.mongo\n if (hasMongoConfig(mongoConfig)) {\n // Create the MongoDB SDK from the configuration\n const {\n connectionString: dbConnectionString, database: dbName, domain: dbDomain, password: dbPassword, username: dbUserName,\n } = mongoConfig\n const payloadSdkConfig: BaseMongoSdkPrivateConfig = {\n dbConnectionString, dbDomain, dbName, dbPassword, dbUserName,\n }\n const params: Partial<MongoDBModuleParamsV2> = {\n meterProvider, payloadSdkConfig, statusReporter, traceProvider,\n }\n // Register the MongoDB Archivist as the default\n locator.register(MongoDBArchivistV2.factory(params), undefined, true)\n locator.register(MongoDBArchivistV2Deletable.factory(params), { 'network.xyo.storage.capabilities.delete': 'enabled' }, false)\n } else if (isDefined(config.storage?.root)) {\n // LMDB-backed disk storage when no mongo is configured.\n // Multi-process-safe (LMDB lockfile/MVCC), so the same storage.root can be\n // shared across separate Node processes running different actors.\n const lmdbLocation = config.storage.root\n const lmdbConfig = {\n clearStoreOnStart: false,\n location: lmdbLocation,\n schema: LmdbArchivistConfigSchema,\n }\n locator.register(\n NamedLmdbArchivist.factory({\n config: lmdbConfig,\n meterProvider,\n statusReporter,\n traceProvider,\n }),\n undefined,\n true,\n )\n }\n\n locator.register(MemoryArchivist.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n locator.register(MemorySentinel.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n locator.register(ViewArchivist.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n return locator\n}\n","import { LmdbArchivist } from '@xyo-network/archivist-lmdb'\n\n/**\n * LMDB-backed archivist that derives its on-disk location, database name, and\n * store name from `config.location` / `config.dbName` / `config.storeName`,\n * and — critically — falls back to `config.payloadSdkConfig.collection` or\n * `config.name` when `config.storeName` is not explicitly set.\n *\n * This lets the manifest-driven archivist factories (see `public/Pending.json`,\n * `public/Chain.json`, `public/DeadLetterQueue.json`) share a single LMDB root\n * while each archivist gets its own per-store LMDB env — the same separation\n * that `payloadSdkConfig.collection` provides for mongo.\n */\nexport class NamedLmdbArchivist extends LmdbArchivist {\n override get dbName(): string {\n return (this.config as { dbName?: string }).dbName ?? 'xyo-chain'\n }\n\n override get location(): string {\n const cfgLocation = (this.config as { location?: string }).location\n const paramsLocation = (this.params as { location?: string } | undefined)?.location\n if (cfgLocation) return cfgLocation\n if (paramsLocation) return paramsLocation\n throw new Error('NamedLmdbArchivist: no location configured (set storage.root or pass location in factory params)')\n }\n\n override get storeName(): string {\n const cfg = this.config as {\n name?: string\n payloadSdkConfig?: { collection?: string }\n storeName?: string\n }\n const derived = cfg.storeName ?? cfg.payloadSdkConfig?.collection ?? cfg.name\n if (!derived) throw new Error('NamedLmdbArchivist: no storeName (or payloadSdkConfig.collection / name) configured')\n return derived\n }\n}\n","import { ManifestWrapper } from '@xyo-network/sdk-js'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\n\nimport { getLocator } from './getLocator.ts'\nimport { NodeManifest } from './nodeManifest.ts'\nimport { PrivateChildManifests } from './private/index.ts'\nimport { PublicChildManifests } from './public/index.ts'\n\n/**\n * Creates a node with the xyo-chain modules registered\n * @returns A node with the xyo-chain modules registered\n */\nexport const loadNode = async (\n context: BaseConfigContext,\n wallet: WalletInstance,\n) => {\n const locator = await getLocator(context)\n const wrapper = new ManifestWrapper(NodeManifest, wallet, locator, PublicChildManifests, PrivateChildManifests)\n const [node, ...childNodes] = await wrapper.loadNodes()\n if (childNodes?.length > 0) {\n await Promise.all(childNodes.map(childNode => node.register(childNode)))\n await Promise.all(childNodes.map(childNode => node.attach(childNode.address, true)))\n }\n return node\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"44'/60'/1\",\n \"name\": \"XYOChain\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": []\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","import type { PackageManifestPayload } from '@xyo-network/sdk-js'\n\nimport node from './node.json' with { type: 'json' }\n\n/**\n * Root Node Manifest\n */\nexport const NodeManifest = node as unknown as PackageManifestPayload\n","/**\n * Private Child Manifests\n */\nexport const PrivateChildManifests = []\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"1\",\n \"name\": \"Chain\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [\n {\n \"config\": {\n \"accountPath\": \"1/1'/1'\",\n \"name\": \"Validated\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"payloadSdkConfig\": {\n \"collection\": \"chain_validated\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n }\n ],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"1/1/1\",\n \"name\": \"Finalized\",\n \"allowedQueries\": [\n \"network.xyo.query.archivist.get\",\n \"network.xyo.query.archivist.next\"\n ],\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 50000\n },\n \"originArchivist\": \"Validated\",\n \"schema\": \"network.xyo.archivist.view.config\"\n }\n }\n ]\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"3\",\n \"name\": \"DeadLetterQueue\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"3/1/1\",\n \"name\": \"RejectedBlocks\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"labels\": {\n \"network.xyo.storage.capabilities.delete\": \"enabled\",\n \"network.xyo.storage.class\": \"mongodb\"\n },\n \"payloadSdkConfig\": {\n \"collection\": \"rejected_blocks\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"3/1/2\",\n \"name\": \"RejectedTransactions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"labels\": {\n \"network.xyo.storage.capabilities.delete\": \"enabled\",\n \"network.xyo.storage.class\": \"mongodb\"\n },\n \"payloadSdkConfig\": {\n \"collection\": \"rejected_transactions\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n }\n ]\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"2\",\n \"name\": \"Pending\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"2/1/1\",\n \"name\": \"Transactions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"labels\": {\n \"network.xyo.storage.capabilities.delete\": \"enabled\",\n \"network.xyo.storage.class\": \"mongodb\"\n },\n \"payloadSdkConfig\": {\n \"collection\": \"pending_transaction_bundles\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"2/1/2\",\n \"name\": \"Blocks\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"labels\": {\n \"network.xyo.storage.capabilities.delete\": \"enabled\",\n \"network.xyo.storage.class\": \"mongodb\"\n },\n \"payloadSdkConfig\": {\n \"collection\": \"pending_block_bundles\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n }\n ]\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","import type { ModuleManifest, PackageManifestPayload } from '@xyo-network/sdk-js'\n\nimport Chain from './Chain.json' with { type: 'json' }\nimport DeadLetterQueue from './DeadLetterQueue.json' with { type: 'json' }\nimport Pending from './Pending.json' with { type: 'json' }\n\nconst ChainNodeManifest = Chain as unknown as PackageManifestPayload\nconst DeadLetterQueueNodeManifest = DeadLetterQueue as unknown as PackageManifestPayload\nconst PendingNodeManifest = Pending as unknown as PackageManifestPayload\n\nexport const PublicChildManifests: ModuleManifest[] = [\n ...ChainNodeManifest.nodes,\n ...DeadLetterQueueNodeManifest.nodes,\n ...PendingNodeManifest.nodes,\n]\n","import { BaseMongoSdk, type BaseMongoSdkPrivateConfig } from '@xylabs/mongo'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport { MongoMap } from '@xyo-network/chain-protocol-driver-mongodb'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BaseConfigContext, MapType, TransfersStepSummary,\n} from '@xyo-network/xl1-sdk'\nimport { hasMongoConfig, MemoryMap } from '@xyo-network/xl1-sdk'\n\nexport async function initTransferSummaryMap({ logger, config }: BaseConfigContext): Promise<MapType<string, WithStorageMeta<TransfersStepSummary>>> {\n const mongoConfig = config.storage?.mongo\n if (hasMongoConfig(mongoConfig)) {\n // Create the MongoDB SDK from the configuration\n const {\n connectionString: dbConnectionString, database: dbName, domain: dbDomain, password: dbPassword, username: dbUserName,\n } = mongoConfig\n const payloadSdkConfig: BaseMongoSdkPrivateConfig = {\n dbConnectionString, dbDomain, dbName, dbPassword, dbUserName,\n }\n\n const sdkTransferSummaryMap = new BaseMongoSdk<WithStorageMeta<TransfersStepSummary>>({ ...payloadSdkConfig, collection: 'transfer_summary_map' })\n const result = await MongoMap.create<MongoMap<Hash, WithStorageMeta<TransfersStepSummary>>>({\n sdk: sdkTransferSummaryMap,\n getCache: { enabled: true, maxEntries: 5000 },\n })\n assertEx(await result.start(), () => 'Failed to start transfer summary map')\n return result\n } else {\n logger?.warn('[API] Mongo configuration not found. Using MemoryMap for TransferSummaryMap.')\n return new MemoryMap<string, WithStorageMeta<TransfersStepSummary>>()\n }\n}\n","import { deepMerge } from '@xylabs/sdk-js'\nimport {\n type CachingContext,\n type Config, type ProviderFactoryLocatorInstance,\n} from '@xyo-network/xl1-sdk'\n\nimport {\n ApiConfigZod, BridgeConfigZod, FinalizerConfigZod, MempoolConfigZod, ProducerConfigZod, RewardRedemptionConfigZod,\n} from '../../../shared/index.ts'\nimport {\n apiLocatorFromConfig, bridgeLocatorFromConfig, finalizerLocatorFromConfig,\n mempoolLocatorFromConfig, producerLocatorFromConfig, rewardRedemptionLocatorFromConfig,\n} from './actors/index.ts'\nimport { rootLocatorFromConfig } from './rootLocatorFromConfig.ts'\n\nexport async function locatorsFromConfig(\n context: CachingContext,\n { actors, ...config }: Config,\n onInsecureGenesisConfirm?: () => Promise<void>,\n): Promise<Record<string, ProviderFactoryLocatorInstance>> {\n const rootContext = { ...context, config: { ...config, name: '_root' } }\n const rootLocator = await rootLocatorFromConfig(rootContext, false, onInsecureGenesisConfirm)\n const result: Record<string, ProviderFactoryLocatorInstance> = { _root: rootLocator }\n for (const actorConfig of actors) {\n switch (actorConfig.name) {\n case 'producer': {\n result[actorConfig.name] = await producerLocatorFromConfig(\n { ...context, config: ProducerConfigZod.parse(deepMerge(config, actorConfig)) },\n result._root,\n )\n break\n }\n case 'api': {\n result[actorConfig.name] = await apiLocatorFromConfig(\n { ...context, config: ApiConfigZod.parse(deepMerge(config, actorConfig)) },\n result._root,\n )\n\n break\n }\n case 'mempool': {\n result[actorConfig.name] = await mempoolLocatorFromConfig(\n { ...context, config: MempoolConfigZod.parse(deepMerge(config, actorConfig)) },\n result._root,\n )\n break\n }\n case 'finalizer': {\n result[actorConfig.name] = await finalizerLocatorFromConfig(\n { ...context, config: FinalizerConfigZod.parse(deepMerge(config, actorConfig)) },\n result._root,\n )\n break\n }\n case 'bridge': {\n result[actorConfig.name] = await bridgeLocatorFromConfig(\n { ...context, config: BridgeConfigZod.parse(deepMerge(config, actorConfig)) },\n result._root,\n )\n\n break\n }\n case 'rewardRedemption': {\n result[actorConfig.name] = await rewardRedemptionLocatorFromConfig(\n {\n ...context,\n config: RewardRedemptionConfigZod.parse(deepMerge(config, actorConfig)),\n },\n result._root,\n )\n break\n }\n // No default\n }\n }\n return result\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport {\n ProviderFactoryLocator,\n SimpleXyoConnectionRunner,\n SimpleXyoGateway,\n SimpleXyoRunner,\n} from '@xyo-network/xl1-sdk'\n\nimport type { ApiConfigContext } from '../../../../neutral/index.ts'\n\nexport function apiLocatorFromConfig(\n context: ApiConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promisable<ProviderFactoryLocatorInstance> {\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\n\n locator.registerMany([\n SimpleXyoRunner.factory<SimpleXyoRunner>(SimpleXyoRunner.dependencies, {}),\n SimpleXyoConnectionRunner.factory<SimpleXyoConnectionRunner>(SimpleXyoConnectionRunner.dependencies, {}),\n SimpleXyoGateway.factory<SimpleXyoGateway>(SimpleXyoGateway.dependencies, {}),\n ])\n locator.freeze()\n return locator\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { ProviderFactoryLocatorInstance, RestDataLakeRunnerParams } from '@xyo-network/xl1-sdk'\nimport {\n JsonRpcAccountBalanceViewer,\n JsonRpcBlockViewer,\n JsonRpcFinalizationViewer,\n JsonRpcMempoolRunner,\n JsonRpcMempoolViewer,\n JsonRpcXyoRunner,\n JsonRpcXyoViewer,\n ProviderFactoryLocator,\n RestDataLakeRunner,\n RestDataLakeViewer,\n SimpleStakeEventsViewer,\n SimpleXyoConnectionRunner,\n SimpleXyoGatewayRunner,\n SimpleXyoRunner,\n SimpleXyoSigner,\n} from '@xyo-network/xl1-sdk'\n\nimport { type BridgeConfigContext, initActorAccount } from '../../../../neutral/index.ts'\n\nexport async function bridgeLocatorFromConfig(\n context: BridgeConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promise<Promise<Promisable<ProviderFactoryLocatorInstance>>> {\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\n\n const { config } = context\n\n const { dataLake } = config\n const signerAccount = await initActorAccount(context)\n\n if (config.remote.rpc) {\n locator.registerMany([\n JsonRpcMempoolViewer.factory<JsonRpcMempoolViewer>(JsonRpcMempoolViewer.dependencies, {}),\n JsonRpcMempoolRunner.factory<JsonRpcMempoolRunner>(JsonRpcMempoolRunner.dependencies, {}),\n JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>(\n JsonRpcAccountBalanceViewer.dependencies,\n {},\n ),\n JsonRpcFinalizationViewer.factory<JsonRpcFinalizationViewer>(\n JsonRpcFinalizationViewer.dependencies,\n {},\n ),\n JsonRpcBlockViewer.factory<JsonRpcBlockViewer>(JsonRpcBlockViewer.dependencies, {}),\n JsonRpcXyoRunner.factory<JsonRpcXyoRunner>(JsonRpcXyoRunner.dependencies, {}),\n JsonRpcXyoViewer.factory<JsonRpcXyoViewer>(JsonRpcXyoViewer.dependencies, {}),\n ])\n }\n if (isDefined(dataLake)) {\n const { driver } = dataLake\n switch (driver) {\n case 'rest': {\n const { url: endpoint } = dataLake\n locator.registerMany([\n RestDataLakeRunner.factory<RestDataLakeRunner<RestDataLakeRunnerParams>>(RestDataLakeRunner.dependencies, { endpoint }),\n RestDataLakeViewer.factory<RestDataLakeViewer>(RestDataLakeViewer.dependencies, { endpoint }),\n ])\n break\n }\n default: {\n throw new Error(`Unsupported data lake protocol: ${driver}`)\n }\n }\n }\n\n locator.registerMany([\n SimpleStakeEventsViewer.factory<SimpleStakeEventsViewer>(SimpleStakeEventsViewer.dependencies, { positions: [] }),\n SimpleXyoSigner.factory<SimpleXyoSigner>(SimpleXyoSigner.dependencies, { account: signerAccount }),\n SimpleXyoRunner.factory<SimpleXyoRunner>(SimpleXyoRunner.dependencies, {}),\n SimpleXyoConnectionRunner.factory<SimpleXyoConnectionRunner>(SimpleXyoConnectionRunner.dependencies, {}),\n SimpleXyoGatewayRunner.factory<SimpleXyoGatewayRunner>(SimpleXyoGatewayRunner.dependencies, {}),\n ])\n locator.freeze()\n return locator\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport type { ActorConfigContext, ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport { ProviderFactoryLocator } from '@xyo-network/xl1-sdk'\n\nexport function finalizerLocatorFromConfig(\n context: ActorConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promisable<ProviderFactoryLocatorInstance> {\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\n\n locator.registerMany([\n ])\n locator.freeze()\n return locator\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport { ProviderFactoryLocator } from '@xyo-network/xl1-sdk'\n\nimport type { MempoolConfigContext } from '../../../../neutral/index.ts'\n\nexport function mempoolLocatorFromConfig(\n context: MempoolConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promisable<ProviderFactoryLocatorInstance> {\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\n\n locator.registerMany([\n ])\n locator.freeze()\n return locator\n}\n","import { asAddress } from '@xylabs/sdk-js'\nimport { SimpleBlockRunner } from '@xyo-network/chain-services'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport { ProviderFactoryLocator } from '@xyo-network/xl1-sdk'\n\nimport type { ProducerConfigContext } from '../../../../neutral/index.ts'\nimport { initActorAccount } from '../../../../neutral/index.ts'\nimport {\n RejectedTransactionsArchivistProviderMoniker,\n type SimpleRejectedTransactionsArchivistProvider,\n} from '../../../../shared/index.ts'\n\nexport async function producerLocatorFromConfig(\n context: ProducerConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promise<ProviderFactoryLocatorInstance> {\n const { logger, config } = context\n const account = await initActorAccount(context)\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\n const rewardAddress = asAddress(config.rewardAddress ?? account.address, true)\n logger?.info(`Using reward address ${rewardAddress}`)\n if (rewardAddress === account.address) {\n logger?.warn(`Using producer account address as reward address: ${account.address}`)\n }\n\n // Resolve the shared rejected-transactions archivist from the root locator so\n // SimpleBlockRunner's legacy fallback path (when DLQRunner is unavailable)\n // writes to the same backing store as the DLQ runner/viewer instead of\n // allocating an orphan MemoryArchivist with a random account.\n const rejectedTransactionsProvider = await parent?.tryGetInstance<SimpleRejectedTransactionsArchivistProvider>(\n RejectedTransactionsArchivistProviderMoniker,\n )\n const rejectedTransactionsArchivist = rejectedTransactionsProvider?.archivist\n\n locator.registerMany([\n SimpleBlockRunner.factory<SimpleBlockRunner>(\n SimpleBlockRunner.dependencies,\n {\n account, rewardAddress, rejectedTransactionsArchivist,\n },\n )])\n locator.freeze()\n return locator\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport {\n JsonRpcAccountBalanceViewer,\n JsonRpcBlockViewer,\n JsonRpcFinalizationViewer,\n JsonRpcMempoolRunner,\n JsonRpcMempoolViewer,\n JsonRpcXyoRunner,\n JsonRpcXyoViewer,\n ProviderFactoryLocator,\n SimpleXyoConnectionRunner,\n SimpleXyoGatewayRunner,\n SimpleXyoRunner,\n SimpleXyoSigner,\n} from '@xyo-network/xl1-sdk'\n\nimport { initActorAccount, type RewardRedemptionConfigContext } from '../../../../neutral/index.ts'\n\nexport async function rewardRedemptionLocatorFromConfig(\n context: RewardRedemptionConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promise<Promisable<ProviderFactoryLocatorInstance>> {\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\n\n const { config } = context\n\n const account = await initActorAccount(context)\n\n if (config.remote.rpc) {\n locator.registerMany([\n JsonRpcMempoolViewer.factory<JsonRpcMempoolViewer>(JsonRpcMempoolViewer.dependencies, {}),\n JsonRpcMempoolRunner.factory<JsonRpcMempoolRunner>(JsonRpcMempoolRunner.dependencies, {}),\n JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>(\n JsonRpcAccountBalanceViewer.dependencies,\n {},\n ),\n JsonRpcFinalizationViewer.factory<JsonRpcFinalizationViewer>(\n JsonRpcFinalizationViewer.dependencies,\n {},\n ),\n JsonRpcBlockViewer.factory<JsonRpcBlockViewer>(JsonRpcBlockViewer.dependencies, {}),\n JsonRpcXyoRunner.factory<JsonRpcXyoRunner>(JsonRpcXyoRunner.dependencies, {}),\n JsonRpcXyoViewer.factory<JsonRpcXyoViewer>(JsonRpcXyoViewer.dependencies, {}),\n ])\n }\n\n locator.registerMany([\n SimpleXyoSigner.factory<SimpleXyoSigner>(SimpleXyoSigner.dependencies, { account }),\n SimpleXyoRunner.factory<SimpleXyoRunner>(SimpleXyoRunner.dependencies, {}),\n SimpleXyoConnectionRunner.factory<SimpleXyoConnectionRunner>(SimpleXyoConnectionRunner.dependencies, {}),\n SimpleXyoGatewayRunner.factory<SimpleXyoGatewayRunner>(SimpleXyoGatewayRunner.dependencies, {}),\n ])\n locator.freeze()\n return locator\n}\n","import type { ActorConfigContext, ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport { commonLocatorFromConfig, remoteLocatorFromConfig } from '@xyo-network/xl1-sdk'\n\nimport { initEvmProvidersIfAvailable } from '../../init/index.ts'\nimport { localLocatorFromConfig } from './localLocatorFromConfig.ts'\n\nexport async function rootLocatorFromConfig(\n context: ActorConfigContext,\n validateDepsOnRegister = false,\n onInsecureGenesisConfirm?: () => Promise<void>,\n): Promise<ProviderFactoryLocatorInstance> {\n const { config } = context\n let locator = await commonLocatorFromConfig(context, validateDepsOnRegister)\n\n const newLocator = await (config.remote.rpc\n ? remoteLocatorFromConfig(locator.context, validateDepsOnRegister)\n : localLocatorFromConfig(\n { ...locator.context, config: { ...locator.context.config, ...context.config } },\n validateDepsOnRegister,\n onInsecureGenesisConfirm,\n ))\n locator = newLocator\n locator = await initEvmProvidersIfAvailable(locator)\n locator.freeze()\n return locator\n}\n","import { isDefined, isNull } from '@xylabs/sdk-js'\nimport { ConfigZod } from '@xyo-network/xl1-sdk'\nimport { cosmiconfig } from 'cosmiconfig'\n\n/**\n * The name of the configuration file to search for.\n */\nconst configName = 'xyo'\n\n/**\n * The name of the section within the configuration file to parse.\n */\nconst configSection = 'xl1' // Default section in the config file\n\nexport class ConfigFileNotFoundError extends Error {\n constructor(configPath: string) {\n super(`Config file not found: ${configPath}`)\n this.name = 'ConfigFileNotFoundError'\n }\n}\n\nconst isMissingFileError = (error: unknown): error is NodeJS.ErrnoException => {\n return error instanceof Error && 'code' in error && error.code === 'ENOENT'\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n return typeof value === 'object' && value !== null\n}\n\n/**\n * Attempts to parse the configuration from a file using cosmiconfig.\n * @param options - Optional config loading options.\n * @param options.configPath - Explicit path to a config file to load instead of searching.\n * @param options.searchPlaces - Custom search places for cosmiconfig.\n * @returns The parsed configuration object if found and valid, otherwise undefined.\n */\nexport async function tryParseConfig(options?: { configPath?: string; searchPlaces?: string[] }) {\n const { configPath, searchPlaces } = options ?? {}\n const explorer = cosmiconfig(\n configName,\n {\n cache: true,\n // loaders: { '.ts': TypeScriptLoader() },\n searchPlaces,\n },\n )\n let result: unknown\n if (isDefined(configPath)) {\n try {\n result = (await explorer.load(configPath))?.config\n } catch (error) {\n if (isMissingFileError(error)) {\n throw new ConfigFileNotFoundError(configPath)\n }\n throw error\n }\n if (!isDefined(result) || isNull(result)) {\n throw new ConfigFileNotFoundError(configPath)\n }\n } else {\n result = (await explorer.search())?.config\n }\n if (isRecord(result)) {\n const section = result[configSection]\n if (isRecord(section)) {\n const parsed = ConfigZod.loose().parse(section)\n return typeof section.mnemonic === 'string' ? { ...parsed, mnemonic: section.mnemonic } : parsed\n }\n }\n return ConfigZod.parse({})\n}\n","export * from '../shared/index.ts'\nexport * from './config/index.ts'\nexport * from './init/index.ts'\nexport * from './manifest/index.ts'\nexport * from '@xyo-network/chain-orchestration-evm'\nexport * from '@xyo-network/chain-orchestration-express'\nexport * from '@xyo-network/chain-orchestration-storage'\n"],"mappings":"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","names":["creatable","processPendingBlocks","ActorV3","BlockValidationViewerMoniker","BlockViewerMoniker","DeadLetterQueueRunnerMoniker","FinalizationRunnerMoniker","MempoolViewerMoniker","FinalizerActor","ActorV3","_blockValidationViewer","_blockViewer","_deadLetterQueueRunner","_finalizationRunner","_mempoolViewer","allowedProducers","params","config","blockValidationViewer","blockViewer","finalizationRunner","mempoolViewer","minCandidates","createHandler","startHandler","locator","getInstance","BlockValidationViewerMoniker","BlockViewerMoniker","FinalizationRunnerMoniker","MempoolViewerMoniker","tryGetInstance","DeadLetterQueueRunnerMoniker","registerTimer","spanAsync","logger","debug","processPendingBlocks","context","deadLetterQueueRunner","timeBudgetLimit","buildTelemetryConfig","config","serviceName","serviceVersion","defaultMetricsScrapePort","otlpEndpoint","telemetry","otel","path","endpoint","port","metrics","scrape","telemetryConfig","attributes","metricsConfig","zodAsFactory","zodIsFactory","zodToFactory","BaseConfigContextZod","HostActorConfigZod","globalRegistry","z","globalRegistry","z","ActorAccountIndexZod","title","z","coerce","number","int","min","optional","register","globalRegistry","description","type","ApiConfigZod","HostActorConfigZod","extend","z","object","accountIndex","ActorAccountIndexZod","initRewardsCache","union","number","string","boolean","transform","v","default","register","globalRegistry","description","title","type","shape","isApiConfig","zodIsFactory","asApiConfig","zodAsFactory","toApiConfig","zodToFactory","ApiConfigContext","BaseConfigContextZod","config","isApiConfigContext","asApiConfigContext","toApiConfigContext","AddressZod","HexZod","toAddress","toHex","zodAsFactory","zodIsFactory","zodToFactory","AttoXL1ConvertFactor","BaseConfigContextZod","HostActorConfigZod","XL1","globalRegistry","z","DEFAULT_FIXED_FEE","toHex","XL1","AttoXL1ConvertFactor","xl1","DEFAULT_VARIABLE_FEE_BASIS_POINTS","DEFAULT_HARDHAT_BRIDGE_CONTRACT","toAddress","DEFAULT_HARDHAT_CHAIN_ID","DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY","DEFAULT_HARDHAT_TOKEN_CONTRACT","DEFAULT_MAX_BRIDGE_AMOUNT","DEFAULT_MIN_BRIDGE_AMOUNT","BasisPointsZod","z","coerce","number","int","nonnegative","max","BridgeConfigZod","HostActorConfigZod","extend","accountIndex","ActorAccountIndexZod","escrowAddress","AddressZod","optional","register","globalRegistry","description","title","type","feesAddress","feeFixed","HexZod","default","feeRateBasisPoints","maxBridgeAmount","minBridgeAmount","redisHost","string","redisPort","positive","remoteBridgeContractAddress","remoteChainId","remoteTokenAddress","remoteChainWalletPrivateKey","xl1ChainId","xl1TokenAddress","BridgeSettingsZod","pick","required","isBridgeConfig","zodIsFactory","asBridgeConfig","zodAsFactory","toBridgeConfig","zodToFactory","BridgeConfigContext","BaseConfigContextZod","config","isBridgeConfigContext","asBridgeConfigContext","toBridgeConfigContext","AddressZod","zodAsFactory","zodIsFactory","zodToFactory","BaseConfigContextZod","HostActorConfigZod","z","FinalizerConfigZod","HostActorConfigZod","extend","accountIndex","ActorAccountIndexZod","allowedProducers","z","array","AddressZod","optional","minCandidates","number","int","min","default","isFinalizerConfig","zodIsFactory","asFinalizerConfig","zodAsFactory","toFinalizerConfig","zodToFactory","FinalizerConfigContext","BaseConfigContextZod","config","isFinalizerConfigContext","asFinalizerConfigContext","toFinalizerConfigContext","zodAsFactory","zodIsFactory","zodToFactory","BaseConfigContextZod","HostActorConfigZod","globalRegistry","z","DEFAULT_MEMPOOL_BLOCK_PRUNE_INTERVAL","DEFAULT_MEMPOOL_TRANSACTION_PRUNE_INTERVAL","MempoolConfigZod","HostActorConfigZod","extend","accountIndex","ActorAccountIndexZod","enabled","z","union","string","boolean","default","transform","val","ctx","normalized","toLowerCase","trim","includes","addIssue","code","expected","message","NEVER","register","globalRegistry","description","title","type","blockPruneInterval","coerce","number","transactionPruneInterval","isMempoolConfig","zodIsFactory","asMempoolConfig","zodAsFactory","toMempoolConfig","zodToFactory","MempoolConfigContext","BaseConfigContextZod","config","isMempoolConfigContext","asMempoolConfigContext","toMempoolConfigContext","AddressZod","asAddress","zodAsFactory","zodIsFactory","zodToFactory","ActorConfigZod","BaseConfigContextZod","globalRegistry","z","DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL","ProducerConfigZod","ActorConfigZod","extend","z","object","accountIndex","ActorAccountIndexZod","allowlist","preprocess","val","split","map","s","asAddress","trim","array","AddressZod","optional","register","globalRegistry","description","title","type","blockProductionCheckInterval","coerce","number","default","disableIntentRedeclaration","boolean","heartbeatInterval","minStake","rewardAddress","string","shape","isProducerConfig","zodIsFactory","asProducerConfig","zodAsFactory","toProducerConfig","zodToFactory","ProducerConfigContext","BaseConfigContextZod","config","isProducerConfigContext","asProducerConfigContext","toProducerConfigContext","zodAsFactory","zodIsFactory","zodToFactory","BaseConfigContextZod","HostActorConfigZod","RewardRedemptionConfigZod","HostActorConfigZod","extend","accountIndex","ActorAccountIndexZod","isRewardRedemptionConfig","zodIsFactory","asRewardRedemptionConfig","zodAsFactory","toRewardRedemptionConfig","zodToFactory","RewardRedemptionConfigContext","BaseConfigContextZod","config","isRewardRedemptionConfigContext","asRewardRedemptionConfigContext","toRewardRedemptionConfigContext","deepMerge","mergeConfig","actors","baseConfig","map","actor","deepMerge","buildNextBlock","createDeclarationIntent","createProducerChainStakeIntentBlock","prevBlock","producerAccount","range","producerDeclarationPayload","createDeclarationIntent","address","buildNextBlock","GenericHost","services","start","Promise","resolve","console","log","stop","DefaultServiceProvider","_services","services","getService","serviceIdentifier","ServiceLifetime","Singleton","Transient","isDefined","DEFAULT_WALLET_PATH","generateXyoBaseWalletFromPhrase","BUILT_IN_DEV_MNEMONIC","INSECURE_GENESIS_REWARD_MNEMONIC","GENESIS_REWARD_AMOUNT","ATTO_XL1_PER_XL1","ROOT_WALLET_RUNTIME_ID","SHARED_ACCOUNT_REPORT_COUNT","RESERVED_ACTOR_INDEX","api","bridge","finalizer","mempool","producer","rewardRedemption","ACTOR_LABELS","activeWalletReport","getAccountLabel","actorName","clearResolvedWalletReport","undefined","getReservedActorIndex","getBuiltInDevMnemonic","getInsecureGenesisRewardMnemonic","resolveRootWallet","configuration","isConfigured","mnemonic","isBuiltInDevMnemonic","basePath","DEFAULT_WALLET_PATH","mnemonicKind","resolveWalletMetadata","accountIndex","source","wallet","generateXyoBaseWalletFromPhrase","derivationPath","account","derivePath","address","label","privateKey","usesBuiltInDevMnemonic","resolveActorWallet","actorConfig","root","actorMnemonic","resolveWalletReport","requestedActors","actorConfigMap","Map","actors","map","actor","name","isRootRequired","some","get","resolvedActors","Promise","all","labelMap","labels","push","set","sharedAccounts","Array","from","length","_","index","join","actorSpecificAccounts","filter","buildInsecureGenesisRewardAccounts","accounts","initializeResolvedWalletReport","getResolvedWalletReport","formatSharedAccount","showPrivateKey","lines","formatActorSpecificAccount","formatGenesisRewardAccount","balance","toString","formatWalletReport","report","sections","showRootSection","showSecrets","formatInsecureGenesisRewardWarning","resolveGenesisRewardAddress","config","chain","genesisRewardAddress","resolveWalletForActor","fromReport","find","split","includes","resolvedMnemonic","resolvedAccountIndex","actorAccountSingletons","initActorAccount","config","logger","actorName","name","isDefined","accountIndex","undefined","account","resolveWalletForActor","mnemonic","debug","address","assertEx","isString","initActorSeedPhrase","context","bios","logger","config","walletKind","name","report","getResolvedWalletReport","account","ROOT_WALLET_RUNTIME_ID","sharedAccounts","find","entry","accountIndex","actorSpecificAccounts","actorName","isString","mnemonic","root","fallback","getBuiltInDevMnemonic","debug","assertEx","assertEx","asAttachableArchivistInstance","asAttachableModuleInstance","Mutex","initMutex","Mutex","bridgedModuleDictionary","initBridgedModule","bridge","moduleName","runExclusive","existing","address","mod","assertEx","resolve","moduleInstance","asAttachableModuleInstance","moduleMap","undefined","initBridgedArchivistModule","asAttachableArchivistInstance","RuntimeStatusMonitor","initStatusReporter","logger","statusReporter","RuntimeStatusMonitor","onGlobalTransition","to","log","error","process","exit","initActorWallet","context","mnemonic","actorName","config","name","ROOT_WALLET_RUNTIME_ID","accountIndex","undefined","resolveWalletForActor","AbstractCreatable","creatable","Orchestrator","AbstractCreatable","actors","keepAliveHandle","running","registerActor","actor","start","push","startHandler","logger","warn","log","setInterval","stopHandler","stop","clearInterval","assertEx","AbstractCreatableProvider","creatableProvider","RejectedTransactionsArchivistProviderMoniker","SimpleRejectedTransactionsArchivistProvider","AbstractCreatableProvider","defaultMoniker","dependencies","monikers","moniker","archivist","params","paramsHandler","assertEx","isAccountInstance","basicRemoteRunnerLocator","sdkBasicRemoteRunnerLocator","JsonRpcAccountBalanceViewer","JsonRpcXyoSigner","SimpleXyoSigner","signerFactoryFromParam","signer","isAccountInstance","SimpleXyoSigner","factory","dependencies","account","JsonRpcXyoSigner","transport","basicRemoteRunnerLocator","name","remoteConfig","dataLakeEndpoint","validators","undefined","sdkBasicRemoteRunnerLocator","additionalProviders","JsonRpcAccountBalanceViewer","signerFactory","skipGatewayRunner","basicRemoteViewerLocator","sdkBasicRemoteViewerLocator","JsonRpcAccountBalanceViewer","basicRemoteViewerLocator","name","remoteConfig","dataLakeEndpoint","validators","sdkBasicRemoteViewerLocator","additionalProviders","JsonRpcAccountBalanceViewer","factory","dependencies","initTelemetry","telemetryContextFromConfig","config","serviceName","serviceVersion","otlpEndpoint","telemetry","otel","path","endpoint","port","metrics","scrape","initTelemetry","attributes","metricsConfig","contextFromConfigWithoutLocator","config","logger","serviceName","serviceVersion","singletons","caches","telemetryConfig","telemetryContextFromConfig","statusReporter","initStatusReporter","assertEx","validateHydratedBlock","validateHydratedBlockState","BlockCumulativeBalanceValidatorFactory","ProviderFactoryLocator","SimpleAccountBalanceViewer","SimpleBlockValidationViewer","SimpleBlockViewer","SimpleDeadLetterQueueRunner","SimpleDeadLetterQueueViewer","SimpleFinalizationRunner","SimpleFinalizationViewer","SimpleMempoolRunner","SimpleMempoolViewer","SimpleTransactionValidationViewer","SimpleTransactionViewer","SimpleWindowedBlockViewer","SimpleXyoConnectionViewer","SimpleXyoViewer","validateTransaction","BaseMongoSdk","assertEx","MongoMap","hasMongoConfig","MemoryMap","initBalanceSummaryMap","logger","config","mongoConfig","storage","mongo","hasMongoConfig","connectionString","dbConnectionString","database","dbName","domain","dbDomain","password","dbPassword","username","dbUserName","payloadSdkConfig","sdkBalanceSummaryMap","BaseMongoSdk","collection","result","MongoMap","create","sdk","getCache","enabled","maxEntries","assertEx","start","warn","MemoryMap","asEthAddress","EvmChainContractViewer","EvmStakeEventsViewer","EvmStakeTotalsViewer","EvmStakeViewer","canUseEvmProvider","initEvmProvider","SimpleChainContractViewer","SimpleStakeEventsViewer","SimpleStakeTotalsViewer","SimpleStakeViewer","SimpleTimeSyncViewer","XYO_ZERO_ADDRESS","initEvmProvidersIfAvailable","locator","context","logger","canUseEvmProvider","config","chain","id","chainId","provider","initEvmProvider","address","asEthAddress","register","EvmStakeEventsViewer","factory","dependencies","EvmStakeViewer","EvmStakeTotalsViewer","EvmChainContractViewer","SimpleTimeSyncViewer","ethProvider","warn","positions","SimpleStakeEventsViewer","SimpleStakeViewer","SimpleStakeTotalsViewer","SimpleChainContractViewer","minWithdrawalBlocks","stakingTokenAddress","XYO_ZERO_ADDRESS","rewardsContract","assertEx","createBootstrapHead","Account","asAttoXL1","findMostRecentBlock","flattenHydratedBlock","initFinalizationArchivistIfNeeded","archivist","config","account","options","configuredChainId","chain","id","possibleHead","findMostRecentBlock","Error","possibleChainId","Account","random","address","genesisRewardAddress","accounts","buildInsecureGenesisRewardAccounts","logger","warn","formatInsecureGenesisRewardWarning","onInsecureGenesisConfirm","resolveGenesisRewardAddress","createBootstrapHead","asAttoXL1","GENESIS_REWARD_AMOUNT","payloads","flatMap","block","flattenHydratedBlock","insert","head","assertEx","chainId","MongoDBArchivistV2","initMongoFinalizedArchivist","config","payloadSdkConfig","storage","mongo","collection","MongoDBArchivistV2","create","initFinalizedArchivist","finalizedArchivist","assertEx","asArchivistInstance","isDefined","LmdbArchivistConfigSchema","MongoDBArchivistV2","MongoDBArchivistV2Deletable","ViewArchivist","initTelemetry","AbstractModule","LoggerModuleStatusReporter","MemoryArchivist","MemorySentinel","ModuleFactoryLocator","hasMongoConfig","LmdbArchivist","NamedLmdbArchivist","LmdbArchivist","dbName","config","location","cfgLocation","paramsLocation","params","Error","storeName","cfg","derived","payloadSdkConfig","collection","name","getLocator","logger","config","otlpEndpoint","telemetry","otel","path","endpoint","port","metrics","scrape","traceProvider","meterProvider","initTelemetry","attributes","serviceName","serviceVersion","metricsConfig","isDefined","AbstractModule","defaultLogger","statusReporter","LoggerModuleStatusReporter","undefined","locator","ModuleFactoryLocator","mongoConfig","storage","mongo","hasMongoConfig","connectionString","dbConnectionString","database","dbName","domain","dbDomain","password","dbPassword","username","dbUserName","payloadSdkConfig","params","register","MongoDBArchivistV2","factory","MongoDBArchivistV2Deletable","root","lmdbLocation","lmdbConfig","clearStoreOnStart","location","schema","LmdbArchivistConfigSchema","NamedLmdbArchivist","MemoryArchivist","MemorySentinel","ViewArchivist","ManifestWrapper","NodeManifest","node","PrivateChildManifests","ChainNodeManifest","Chain","DeadLetterQueueNodeManifest","DeadLetterQueue","PendingNodeManifest","Pending","PublicChildManifests","nodes","loadNode","context","wallet","locator","getLocator","wrapper","ManifestWrapper","NodeManifest","PublicChildManifests","PrivateChildManifests","node","childNodes","loadNodes","length","Promise","all","map","childNode","register","attach","address","writableChainArchivistFromNode","node","asArchivistInstance","resolve","required","readonlyChainArchivistFromNode","assertEx","pendingTransactionsArchivistFromNode","pendingBlocksArchivistFromNode","rejectedBlocksArchivistFromNode","rejectedTransactionsArchivistFromNode","initServerNode","context","wallet","providedNode","loadNode","start","writableChainArchivist","readonlyChainArchivist","pendingTransactionsArchivist","pendingBlocksArchivist","rejectedBlocksArchivist","rejectedTransactionsArchivist","BaseMongoSdk","assertEx","MongoMap","hasMongoConfig","MemoryMap","initTransferSummaryMap","logger","config","mongoConfig","storage","mongo","hasMongoConfig","connectionString","dbConnectionString","database","dbName","domain","dbDomain","password","dbPassword","username","dbUserName","payloadSdkConfig","sdkTransferSummaryMap","BaseMongoSdk","collection","result","MongoMap","create","sdk","getCache","enabled","maxEntries","assertEx","start","warn","MemoryMap","cumulativeBalanceValidator","BlockCumulativeBalanceValidatorFactory","validateHydratedBlockStateWithCumulativeBalance","context","block","stateErrors","cumulativeErrors","Promise","all","validateHydratedBlockState","localLocatorFromConfig","validateDepsOnRegister","onInsecureGenesisConfirm","balancesSummaryMap","assertEx","initBalanceSummaryMap","transfersSummaryMap","initTransferSummaryMap","wallet","initActorWallet","writableChainArchivist","readonlyChainArchivist","pendingTransactionsArchivist","pendingBlocksArchivist","rejectedBlocksArchivist","rejectedTransactionsArchivist","initServerNode","initFinalizationArchivistIfNeeded","config","logger","locator","ProviderFactoryLocator","registerMany","SimpleMempoolViewer","factory","dependencies","SimpleMempoolRunner","SimpleAccountBalanceViewer","SimpleFinalizationViewer","finalizedArchivist","SimpleBlockViewer","SimpleWindowedBlockViewer","maxWindowSize","syncInterval","SimpleXyoConnectionViewer","SimpleTransactionViewer","SimpleXyoViewer","SimpleFinalizationRunner","SimpleBlockValidationViewer","state","protocol","validateHydratedBlock","SimpleTransactionValidationViewer","validateTransaction","SimpleDeadLetterQueueRunner","SimpleDeadLetterQueueViewer","SimpleRejectedTransactionsArchivistProvider","archivist","deepMerge","ProviderFactoryLocator","SimpleXyoConnectionRunner","SimpleXyoGateway","SimpleXyoRunner","apiLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","registerMany","SimpleXyoRunner","factory","dependencies","SimpleXyoConnectionRunner","SimpleXyoGateway","freeze","isDefined","JsonRpcAccountBalanceViewer","JsonRpcBlockViewer","JsonRpcFinalizationViewer","JsonRpcMempoolRunner","JsonRpcMempoolViewer","JsonRpcXyoRunner","JsonRpcXyoViewer","ProviderFactoryLocator","RestDataLakeRunner","RestDataLakeViewer","SimpleStakeEventsViewer","SimpleXyoConnectionRunner","SimpleXyoGatewayRunner","SimpleXyoRunner","SimpleXyoSigner","bridgeLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","config","dataLake","signerAccount","initActorAccount","remote","rpc","registerMany","JsonRpcMempoolViewer","factory","dependencies","JsonRpcMempoolRunner","JsonRpcAccountBalanceViewer","JsonRpcFinalizationViewer","JsonRpcBlockViewer","JsonRpcXyoRunner","JsonRpcXyoViewer","isDefined","driver","url","endpoint","RestDataLakeRunner","RestDataLakeViewer","Error","SimpleStakeEventsViewer","positions","SimpleXyoSigner","account","SimpleXyoRunner","SimpleXyoConnectionRunner","SimpleXyoGatewayRunner","freeze","ProviderFactoryLocator","finalizerLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","registerMany","freeze","ProviderFactoryLocator","mempoolLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","registerMany","freeze","asAddress","SimpleBlockRunner","ProviderFactoryLocator","producerLocatorFromConfig","context","parent","logger","config","account","initActorAccount","locator","ProviderFactoryLocator","rewardAddress","asAddress","address","info","warn","rejectedTransactionsProvider","tryGetInstance","RejectedTransactionsArchivistProviderMoniker","rejectedTransactionsArchivist","archivist","registerMany","SimpleBlockRunner","factory","dependencies","freeze","JsonRpcAccountBalanceViewer","JsonRpcBlockViewer","JsonRpcFinalizationViewer","JsonRpcMempoolRunner","JsonRpcMempoolViewer","JsonRpcXyoRunner","JsonRpcXyoViewer","ProviderFactoryLocator","SimpleXyoConnectionRunner","SimpleXyoGatewayRunner","SimpleXyoRunner","SimpleXyoSigner","rewardRedemptionLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","config","account","initActorAccount","remote","rpc","registerMany","JsonRpcMempoolViewer","factory","dependencies","JsonRpcMempoolRunner","JsonRpcAccountBalanceViewer","JsonRpcFinalizationViewer","JsonRpcBlockViewer","JsonRpcXyoRunner","JsonRpcXyoViewer","SimpleXyoSigner","SimpleXyoRunner","SimpleXyoConnectionRunner","SimpleXyoGatewayRunner","freeze","commonLocatorFromConfig","remoteLocatorFromConfig","rootLocatorFromConfig","context","validateDepsOnRegister","onInsecureGenesisConfirm","config","locator","commonLocatorFromConfig","newLocator","remote","rpc","remoteLocatorFromConfig","localLocatorFromConfig","initEvmProvidersIfAvailable","freeze","locatorsFromConfig","context","actors","config","onInsecureGenesisConfirm","rootContext","name","rootLocator","rootLocatorFromConfig","result","_root","actorConfig","producerLocatorFromConfig","ProducerConfigZod","parse","deepMerge","apiLocatorFromConfig","ApiConfigZod","mempoolLocatorFromConfig","MempoolConfigZod","finalizerLocatorFromConfig","FinalizerConfigZod","bridgeLocatorFromConfig","BridgeConfigZod","rewardRedemptionLocatorFromConfig","RewardRedemptionConfigZod","isDefined","isNull","ConfigZod","cosmiconfig","configName","configSection","ConfigFileNotFoundError","Error","configPath","name","isMissingFileError","error","code","isRecord","value","tryParseConfig","options","searchPlaces","explorer","cosmiconfig","cache","result","isDefined","load","config","isNull","search","section","parsed","ConfigZod","loose","parse","mnemonic"]}