@xyo-network/chain-orchestration 1.19.16 → 1.19.18

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 (44) hide show
  1. package/dist/neutral/archivists/RejectedTransactions/local.d.ts.map +1 -1
  2. package/dist/neutral/config/actors/Api.d.ts +22 -22
  3. package/dist/neutral/config/actors/Bridge.d.ts.map +1 -1
  4. package/dist/neutral/config/actors/Mempool.d.ts +22 -22
  5. package/dist/neutral/config/actors/RewardRedemption.d.ts +22 -22
  6. package/dist/neutral/config/locators/actors/bridgeLocatorFromConfig.d.ts.map +1 -1
  7. package/dist/neutral/config/locators/localLocatorFromConfig.d.ts +2 -2
  8. package/dist/neutral/config/locators/localLocatorFromConfig.d.ts.map +1 -1
  9. package/dist/neutral/config/locators/remoteLocatorFromConfig.d.ts +3 -2
  10. package/dist/neutral/config/locators/remoteLocatorFromConfig.d.ts.map +1 -1
  11. package/dist/neutral/config/locators/rootLocatorFromConfig.d.ts.map +1 -1
  12. package/dist/neutral/index.mjs +47 -55
  13. package/dist/neutral/index.mjs.map +1 -1
  14. package/dist/neutral/init/initEvmProvidersIfAvailable.d.ts +2 -2
  15. package/dist/neutral/init/initEvmProvidersIfAvailable.d.ts.map +1 -1
  16. package/dist/neutral/init/initWallet.d.ts +1 -1
  17. package/dist/neutral/init/initWallet.d.ts.map +1 -1
  18. package/dist/neutral/manifest/getLocator.d.ts +1 -1
  19. package/dist/neutral/manifest/getLocator.d.ts.map +1 -1
  20. package/dist/neutral/manifest/loadNode.d.ts +1 -1
  21. package/dist/neutral/manifest/loadNode.d.ts.map +1 -1
  22. package/dist/neutral/manifest/nodeManifest.d.ts +1 -1
  23. package/dist/neutral/manifest/nodeManifest.d.ts.map +1 -1
  24. package/dist/neutral/manifest/public/index.d.ts +1 -1
  25. package/dist/neutral/manifest/public/index.d.ts.map +1 -1
  26. package/package.json +21 -27
  27. package/src/archivists/RejectedTransactions/local.ts +1 -1
  28. package/src/config/actors/Api.ts +1 -1
  29. package/src/config/actors/Bridge.ts +1 -3
  30. package/src/config/actors/Mempool.ts +1 -1
  31. package/src/config/actors/Producer.ts +2 -2
  32. package/src/config/actors/RewardRedemption.ts +1 -1
  33. package/src/config/locators/actors/bridgeLocatorFromConfig.ts +7 -1
  34. package/src/config/locators/localLocatorFromConfig.ts +8 -5
  35. package/src/config/locators/remoteLocatorFromConfig.ts +21 -35
  36. package/src/config/locators/rootLocatorFromConfig.ts +5 -2
  37. package/src/init/initActorAccount.ts +1 -1
  38. package/src/init/initActorSeedPhrase.ts +1 -1
  39. package/src/init/initEvmProvidersIfAvailable.ts +6 -2
  40. package/src/init/initWallet.ts +1 -1
  41. package/src/manifest/getLocator.ts +1 -2
  42. package/src/manifest/loadNode.ts +1 -1
  43. package/src/manifest/nodeManifest.ts +1 -1
  44. package/src/manifest/public/index.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/actor/ValidatorActor.ts","../../src/archivists/ChainFinalized/archivist.ts","../../src/archivists/ChainFinalized/local.ts","../../src/archivists/lib/localPersistentArchivist.ts","../../src/archivists/PendingBlocks/archivist.ts","../../src/archivists/PendingBlocks/local.ts","../../src/archivists/RejectedTransactions/archivist.ts","../../src/archivists/RejectedTransactions/local.ts","../../src/archivists/StakeIntentState/archivist.ts","../../src/archivists/StakeIntentState/local.ts","../../src/buildTelemetryConfig.ts","../../src/config/actors/Api.ts","../../src/config/actors/Bridge.ts","../../src/config/actors/Mempool.ts","../../src/config/actors/Producer.ts","../../src/config/actors/RewardRedemption.ts","../../src/config/locators/actors/apiLocatorFromConfig.ts","../../src/config/locators/actors/bridgeLocatorFromConfig.ts","../../src/config/locators/actors/mempoolLocatorFromConfig.ts","../../src/config/locators/actors/producerLocatorFromConfig.ts","../../src/init/initActorAccount.ts","../../src/init/initActorSeedPhrase.ts","../../src/init/initBalanceSummaryMap.ts","../../src/init/initBridgedModule.ts","../../src/init/initEvmProvidersIfAvailable.ts","../../src/evm/initChainId.ts","../../src/evm/initEvmProvider.ts","../../src/evm/initInfuraProvider.ts","../../src/evm/initJsonRpcProvider.ts","../../src/init/initFinalizationArchivistIfNeeded.ts","../../src/init/initFinalizedArchivist.ts","../../src/init/initServerNode.ts","../../src/manifest/getLocator.ts","../../src/manifest/loadNode.ts","../../src/manifest/node.json","../../src/manifest/nodeManifest.ts","../../src/manifest/private/index.ts","../../src/manifest/public/Chain.json","../../src/manifest/public/Pending.json","../../src/manifest/public/index.ts","../../src/init/initStatusReporter.ts","../../src/init/initTransferSummaryMap.ts","../../src/init/initWallet.ts","../../src/config/locators/actors/rewardRedemptionLocatorFromConfig.ts","../../src/config/locators/actors/validatorLocatorFromConfig.ts","../../src/config/locators/telemetryContextFromConfig.ts","../../src/config/locators/contextFromConfigWithoutLocator.ts","../../src/config/locators/localLocatorFromConfig.ts","../../src/config/locators/locatorsFromConfig.ts","../../src/config/locators/rootLocatorFromConfig.ts","../../src/config/locators/remoteLocatorFromConfig.ts","../../src/config/mergeConfig.ts","../../src/config/tryParseConfig.ts","../../src/createDeclarationIntentBlock.ts","../../src/health/initHealthEndpoints.ts","../../src/host/implementation/DefaultHost.ts","../../src/host/implementation/DefaultServiceProvider.ts","../../src/host/model/ServiceCollection.ts","../../src/orchestrator/Orchestrator.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 ActorConfig,\n ActorParamsV3, BlockBoundWitness, BlockViewer,\n FinalizationRunner,\n MempoolViewer,\n} from '@xyo-network/xl1-sdk'\nimport {\n ActorV3, BlockViewerMoniker, FinalizationRunnerMoniker,\n MempoolViewerMoniker,\n} from '@xyo-network/xl1-sdk'\n\nexport type ValidatorActorParams = ActorParamsV3<\n {\n config: ActorConfig\n }>\n\n@creatable()\nexport class ValidatorActor extends ActorV3<ValidatorActorParams> {\n protected _blockViewer!: BlockViewer\n protected _finalizationRunner!: FinalizationRunner\n protected _lastValidatedBlock: BlockBoundWitness | undefined\n protected _lastValidatedBlockHash: Hash | undefined\n protected _mempoolViewer!: MempoolViewer\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 override async createHandler() {\n await super.startHandler()\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 }\n\n override async startHandler(): Promise<void> {\n await super.startHandler()\n this.registerTimer('ValidatorActor', async () => {\n await this.spanAsync('processPendingBlocks', async () => {\n console.log('ValidatorActor: Processing pending blocks...')\n await processPendingBlocks({\n context: this.context,\n logger: this.logger,\n mempoolViewer: this.mempoolViewer,\n blockViewer: this.blockViewer,\n finalizationRunner: this.finalizationRunner,\n })\n }, { ...this.context, timeBudgetLimit: 1500 })\n }, 2000, 1500/* 500 */)\n }\n}\n","import { timeBudget } from '@xylabs/sdk-js'\nimport { startupSpanAsync } from '@xyo-network/chain-utils'\nimport type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport { Mutex } from 'async-mutex'\n\nimport type { ChainInitializableParams } from '../../ChainInitializableParams.ts'\nimport { initLocalChainFinalizedArchivist } from './local.ts'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initChainFinalizedArchivist(context: ChainInitializableParams) {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n return await timeBudget('initChainFinalizedArchivist', context.logger, async () => {\n const local = await startupSpanAsync('ChainFinalizedArchivist:initLocal', () => initLocalChainFinalizedArchivist(context))\n singleton = local\n return singleton\n }, 2000, true)\n })\n}\n","import type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport type { CreatableProviderContext } from '@xyo-network/xl1-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport { getLocalPersistentArchivist } from '../lib/index.ts'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initLocalChainFinalizedArchivist({ config }: CreatableProviderContext): Promise<ArchivistInstance> {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n const { root } = config.storage\n singleton = await getLocalPersistentArchivist('local-finalized-chain', 'chain', 'finalized', root)\n return singleton\n })\n}\n","import { rm } from 'node:fs/promises'\nimport Path from 'node:path'\n\nimport { LmdbArchivist, LmdbArchivistConfigSchema } from '@xyo-network/archivist-lmdb'\nimport { getStoreDirectory, type StoreKind } from '@xyo-network/chain-protocol'\nimport type { ArchivistInstance } from '@xyo-network/sdk-js'\n\nconst DEFAULT_STORAGE_ROOT = Path.join(process.cwd(), '.store')\n\n/**\n * Returns a local persistent archivist\n * @param name The name of the archivist\n * @param dbName The name of the database\n * @param storeName The name of the store\n * @param storageRoot The root directory for storage (default is '.store' in the current working directory)\n * @param kind The kind of the archivist\n * @returns an archivist instance\n */\nexport const getLocalPersistentArchivist = (\n name: string,\n dbName: string,\n storeName: string,\n storageRoot?: string,\n kind: StoreKind = 'lmdb',\n): Promise<ArchivistInstance> => {\n switch (kind) {\n case 'lmdb': {\n const root = storageRoot ?? DEFAULT_STORAGE_ROOT\n return LmdbArchivist.create({\n account: 'random',\n config: {\n name,\n clearStoreOnStart: false,\n dbName,\n location: getStoreDirectory(dbName, root, 'lmdb'),\n schema: LmdbArchivistConfigSchema,\n storeName,\n },\n })\n }\n }\n}\n\n/**\n * Deletes a local persistent archivist\n * @param dbName The name of the database\n * @param storageRoot The root directory for storage (default is '.store' in the current working directory)\n * @param kind The kind of the archivist\n * @returns A promise that resolves when the archivist is deleted\n */\nexport const deleteLocalPersistentArchivist = async (dbName: string, storageRoot?: string, kind: StoreKind = 'lmdb'): Promise<void> => {\n await Promise.resolve()\n console.warn(`Deleting local persistent archivist for ${dbName} of kind ${kind}.`)\n let location = ''\n switch (kind) {\n case 'lmdb': {\n const root = storageRoot ?? DEFAULT_STORAGE_ROOT\n location = getStoreDirectory(dbName, root, 'lmdb')\n break\n }\n }\n await rm(location, { recursive: true, force: true })\n}\n","import { timeBudget } from '@xylabs/sdk-js'\nimport { startupSpanAsync } from '@xyo-network/chain-utils'\nimport type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport { initLocalPendingBlocksArchivist } from './local.ts'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initPendingBlocksArchivist(context: BaseConfigContext) {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n return await timeBudget('initPendingBlocksArchivist', context.logger, async () => {\n const local = await startupSpanAsync('PendingBlocksArchivist:initLocal', () => initLocalPendingBlocksArchivist(context))\n singleton = local\n return singleton\n }, 2000, true)\n })\n}\n","import type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport { getLocalPersistentArchivist } from '../lib/index.ts'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initLocalPendingBlocksArchivist({ config }: BaseConfigContext): Promise<ArchivistInstance> {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n const { root } = config.storage\n singleton = await getLocalPersistentArchivist('local-pending-blocks', 'chain', 'pending_block_bundles', root)\n return singleton\n })\n}\n","import { timeBudget } from '@xylabs/sdk-js'\nimport { startupSpanAsync } from '@xyo-network/chain-utils'\nimport type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport type { BaseContext } from '@xyo-network/xl1-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport { initLocalRejectedTransactionsArchivist } from './local.ts'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initRejectedTransactionsArchivist({ logger }: BaseContext) {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n return await timeBudget('initRejectedTransactionsArchivist', logger, async () => {\n const local = await startupSpanAsync('RejectedTransactionsArchivist:initLocal', () => initLocalRejectedTransactionsArchivist())\n singleton = local\n return singleton\n }, 2000, true)\n })\n}\n","import { MemoryArchivist, MemoryArchivistConfigSchema } from '@xyo-network/archivist-memory'\nimport type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport { Mutex } from 'async-mutex'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initLocalRejectedTransactionsArchivist(): Promise<ArchivistInstance> {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n singleton = await MemoryArchivist.create({\n account: 'random',\n config: {\n schema: MemoryArchivistConfigSchema, max: 1000, name: 'localRejectedTransactions',\n },\n })\n return singleton\n })\n}\n","import { assertEx, timeBudget } from '@xylabs/sdk-js'\nimport { startupSpanAsync } from '@xyo-network/chain-utils'\nimport type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport { initLocalStakeIntentStateArchivist } from './local.ts'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initStakeIntentStateArchivist(context: BaseConfigContext): Promise<ArchivistInstance> {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n return await timeBudget('initStakeIntentStateArchivist', context.logger, async () => {\n const local = await startupSpanAsync('StakeIntentStateArchivist:initLocal', () => initLocalStakeIntentStateArchivist(context))\n singleton = local\n return assertEx(singleton, () => 'StakeIntentStateArchivist is undefined')\n }, 2000, true)\n })\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport { getLocalPersistentArchivist } from '../lib/index.ts'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initLocalStakeIntentStateArchivist({ config }: BaseConfigContext): Promise<ArchivistInstance> {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n const { root } = config.storage\n singleton = await getLocalPersistentArchivist('local-stake-intent-state', 'stakeIntent', 'state', root)\n return assertEx(singleton, () => new Error('Failed to initialize stake intent state archivist'))\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/zod'\nimport { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nexport const ApiConfigZod = HostActorConfigZod.extend(z.object({\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 const ApiConfigContext = BaseConfigContextZod.extend({ config: ApiConfigZod })\n\nexport type ApiConfigContext = z.infer<typeof ApiConfigContext>\n\nexport const isApiConfigContext = zodIsFactory(ApiConfigContext)\nexport const asApiConfigContext = zodAsFactory(ApiConfigContext, 'asApiConfigContext')\nexport const toApiConfigContext = zodToFactory(ApiConfigContext, 'toApiConfigContext')\n","import {\n AddressZod, HexZod, toAddress, toHex,\n} from '@xylabs/sdk-js'\nimport {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/zod'\nimport type { ChainId } from '@xyo-network/xl1-sdk'\nimport {\n AttoXL1ConvertFactor, BaseConfigContextZod, HostActorConfigZod, XL1,\n} from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nconst DEFAULT_FIXED_FEE = toHex(XL1(1n) * AttoXL1ConvertFactor.xl1)\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(100_000n) * AttoXL1ConvertFactor.xl1)\nconst DEFAULT_MIN_BRIDGE_AMOUNT = toHex(XL1(10n) * 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 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(500).register(globalRegistry, {\n default: 500,\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 const BridgeConfigContext = BaseConfigContextZod.extend({ config: BridgeConfigZod })\n\nexport type BridgeConfigContext = z.infer<typeof BridgeConfigContext>\n\nexport const isBridgeConfigContext = zodIsFactory(BridgeConfigContext)\nexport const asBridgeConfigContext = zodAsFactory(BridgeConfigContext, 'asBridgeConfigContext')\nexport const toBridgeConfigContext = zodToFactory(BridgeConfigContext, 'toBridgeConfigContext')\n","import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/zod'\nimport { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nexport const MempoolConfigZod = HostActorConfigZod.extend({\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})\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 const MempoolConfigContext = BaseConfigContextZod.extend({ config: MempoolConfigZod })\n\nexport type MempoolConfigContext = z.infer<typeof MempoolConfigContext>\n\nexport const isMempoolConfigContext = zodIsFactory(MempoolConfigContext)\nexport const asMempoolConfigContext = zodAsFactory(MempoolConfigContext, 'asMempoolConfigContext')\nexport const toMempoolConfigContext = zodToFactory(MempoolConfigContext, 'toMempoolConfigContext')\n","import { AddressZod, asAddress } from '@xylabs/sdk-js'\nimport {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/zod'\nimport { ActorConfigZod, BaseConfigContextZod } from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nexport const ProducerConfigZod = ActorConfigZod.extend(z.object({\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 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 const ProducerConfigContext = BaseConfigContextZod.extend({ config: ProducerConfigZod })\n\nexport type ProducerConfigContext = z.infer<typeof ProducerConfigContext>\n\nexport const isProducerConfigContext = zodIsFactory(ProducerConfigContext)\nexport const asProducerConfigContext = zodAsFactory(ProducerConfigContext, 'asProducerConfigContext')\nexport const toProducerConfigContext = zodToFactory(ProducerConfigContext, 'toProducerConfigContext')\n","import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/zod'\nimport { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'\nimport type { z } from 'zod'\n\nexport const RewardRedemptionConfigZod = HostActorConfigZod.extend({})\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 const RewardRedemptionConfigContext = BaseConfigContextZod.extend({ config: RewardRedemptionConfigZod })\n\nexport type RewardRedemptionConfigContext = z.infer<typeof RewardRedemptionConfigContext>\n\nexport const isRewardRedemptionConfigContext = zodIsFactory(RewardRedemptionConfigContext)\nexport const asRewardRedemptionConfigContext = zodAsFactory(RewardRedemptionConfigContext, 'asRewardRedemptionConfigContext')\nexport const toRewardRedemptionConfigContext = zodToFactory(RewardRedemptionConfigContext, 'toRewardRedemptionConfigContext')\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 '../../actors/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, isString } from '@xylabs/sdk-js'\nimport { HDWallet } from '@xyo-network/wallet'\nimport type {\n ProviderFactoryLocatorInstance, RpcSchemaMap, TransportFactory,\n} from '@xyo-network/xl1-sdk'\nimport {\n AccountBalanceViewerRpcSchemas,\n ADDRESS_INDEX,\n BlockViewerRpcSchemas,\n FinalizationViewerRpcSchemas,\n generateXyoBaseWalletFromPhrase,\n HttpRpcTransport,\n JsonRpcAccountBalanceViewer,\n JsonRpcBlockViewer,\n JsonRpcFinalizationViewer,\n JsonRpcMempoolRunner,\n JsonRpcMempoolViewer,\n MempoolRunnerRpcSchemas,\n MempoolViewerRpcSchemas,\n ProviderFactoryLocator,\n SimpleXyoConnectionRunner,\n SimpleXyoGatewayRunner,\n SimpleXyoRunner,\n SimpleXyoSigner,\n} from '@xyo-network/xl1-sdk'\n\nimport type { BridgeConfigContext } from '../../actors/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 { mnemonic } = config\n const walletPhrase = isDefined(mnemonic) ? mnemonic : HDWallet.generateMnemonic()\n const wallet = await generateXyoBaseWalletFromPhrase(walletPhrase)\n const signerAccount = await wallet.derivePath(ADDRESS_INDEX.XYO)\n\n const remoteUrl = config.remote.rpc?.url\n\n if (isString(remoteUrl)) {\n const transportFactory: TransportFactory = (schemas: RpcSchemaMap) => new HttpRpcTransport(remoteUrl, schemas)\n\n locator.registerMany([\n JsonRpcMempoolViewer.factory<JsonRpcMempoolViewer>(JsonRpcMempoolViewer.dependencies, { transport: await transportFactory(MempoolViewerRpcSchemas) }),\n JsonRpcMempoolRunner.factory<JsonRpcMempoolRunner>(JsonRpcMempoolRunner.dependencies, { transport: await transportFactory(MempoolRunnerRpcSchemas) }),\n JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>(\n JsonRpcAccountBalanceViewer.dependencies,\n { transport: await transportFactory(AccountBalanceViewerRpcSchemas) },\n ),\n JsonRpcFinalizationViewer.factory<JsonRpcFinalizationViewer>(\n JsonRpcFinalizationViewer.dependencies,\n { transport: await transportFactory(FinalizationViewerRpcSchemas) },\n ),\n JsonRpcBlockViewer.factory<JsonRpcBlockViewer>(JsonRpcBlockViewer.dependencies, { transport: await transportFactory(BlockViewerRpcSchemas) }),\n ])\n }\n\n locator.registerMany([\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 {\n ProviderFactoryLocator,\n SimpleBlockValidationViewer,\n} from '@xyo-network/xl1-sdk'\n\nimport type { MempoolConfigContext } from '../../actors/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 SimpleBlockValidationViewer.factory<SimpleBlockValidationViewer>(SimpleBlockValidationViewer.dependencies, {}),\n ])\n locator.freeze()\n return locator\n}\n","import { asAddress, isString } from '@xylabs/sdk-js'\nimport { SimpleBlockRunner } from '@xyo-network/chain-services'\nimport type {\n ProviderFactoryLocatorInstance, RpcSchemaMap, TransportFactory,\n} from '@xyo-network/xl1-sdk'\nimport {\n AccountBalanceViewerRpcSchemas,\n BlockViewerRpcSchemas,\n FinalizationViewerRpcSchemas,\n HttpRpcTransport,\n JsonRpcAccountBalanceViewer,\n JsonRpcBlockViewer,\n JsonRpcFinalizationViewer,\n JsonRpcMempoolRunner,\n JsonRpcMempoolViewer,\n MempoolRunnerRpcSchemas,\n MempoolViewerRpcSchemas,\n ProviderFactoryLocator,\n SimpleBlockRewardViewer,\n} from '@xyo-network/xl1-sdk'\n\nimport { initActorAccount } from '../../../init/index.ts'\nimport type { ProducerConfigContext } from '../../actors/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 const remoteUrl = config.remote.rpc?.url\n\n if (isString(remoteUrl)) {\n const transportFactory: TransportFactory = (schemas: RpcSchemaMap) => new HttpRpcTransport(remoteUrl, schemas)\n\n locator.registerMany([\n JsonRpcMempoolViewer.factory<JsonRpcMempoolViewer>(JsonRpcMempoolViewer.dependencies, { transport: await transportFactory(MempoolViewerRpcSchemas) }),\n JsonRpcMempoolRunner.factory<JsonRpcMempoolRunner>(JsonRpcMempoolRunner.dependencies, { transport: await transportFactory(MempoolRunnerRpcSchemas) }),\n JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>(\n JsonRpcAccountBalanceViewer.dependencies,\n { transport: await transportFactory(AccountBalanceViewerRpcSchemas) },\n ),\n JsonRpcFinalizationViewer.factory<JsonRpcFinalizationViewer>(\n JsonRpcFinalizationViewer.dependencies,\n { transport: await transportFactory(FinalizationViewerRpcSchemas) },\n ),\n JsonRpcBlockViewer.factory<JsonRpcBlockViewer>(JsonRpcBlockViewer.dependencies, { transport: await transportFactory(BlockViewerRpcSchemas) }),\n ])\n }\n\n locator.registerMany([\n SimpleBlockRewardViewer.factory<SimpleBlockRewardViewer>(SimpleBlockRewardViewer.dependencies, {}),\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 { isDefined, isUndefined } from '@xylabs/sdk-js'\nimport { HDWallet } from '@xyo-network/wallet'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type { ActorConfigContext } from '@xyo-network/xl1-sdk'\nimport { ADDRESS_INDEX, generateXyoBaseWalletFromPhrase } from '@xyo-network/xl1-sdk'\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 let walletPhrase = config.mnemonic\n if (isUndefined(walletPhrase)) {\n logger?.warn(`[${actorName}}] No wallet mnemonic specified!`)\n const randomMnemonic = HDWallet.generateMnemonic()\n logger?.warn(`[${actorName}}] Using randomly generated mnemonic:\n \n${randomMnemonic}\n \n `)\n walletPhrase = randomMnemonic\n }\n const wallet = await generateXyoBaseWalletFromPhrase(walletPhrase)\n const account = await wallet.derivePath(ADDRESS_INDEX.XYO)\n actorAccountSingletons[actorName] = account\n return actorAccountSingletons[actorName]\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 { HDWallet } from '@xyo-network/wallet'\nimport type { ActorConfigContext } from '@xyo-network/xl1-sdk'\n\n// TODO: Make nodejs version of bios support round tripping mnemonic between boots\nexport async function initActorSeedPhrase(context: ActorConfigContext, bios: BiosExternalInterface): Promise<string> {\n const { logger, config } = context\n const walletKind = config.name as WalletKind\n const storedSeedPhrase = await bios.seedPhraseStore.get(walletKind)\n logger?.debug(`[API] Stored mnemonic: ${storedSeedPhrase}`)\n const { mnemonic } = config\n if (isString(storedSeedPhrase) && isString(mnemonic)) {\n logger?.warn('[API] Stored mnemonic does not match supplied. Updating stored mnemonic to supplied.')\n await bios.seedPhraseStore.set(walletKind, mnemonic)\n } else {\n let seedPhrase: string\n if (isString(mnemonic)) {\n seedPhrase = mnemonic\n } else {\n seedPhrase = HDWallet.generateMnemonic()\n logger?.log('[API] No mnemonic provided, using random mnemonic. This is not recommended for production use.')\n logger?.log(`[API] Mnemonic: ${seedPhrase}`)\n }\n await bios.seedPhraseStore.set(walletKind, seedPhrase)\n }\n return assertEx(await bios.seedPhraseStore.get(walletKind), () => 'Unable to acquire mnemonic from bios')\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'\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 type { Address } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport type { BridgeInstance } from '@xyo-network/bridge-model'\nimport type {\n AttachableArchivistInstance, AttachableModuleInstance, 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 { asEthAddress, assertEx } from '@xylabs/sdk-js'\nimport {\n EvmChainContractViewer, EvmStakeEventsViewer, EvmStakeTotalsViewer, EvmStakeViewer,\n} from '@xyo-network/chain-ethereum'\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\nimport { canUseEvmProvider, initEvmProvider } from '../evm/index.ts'\n\nexport async function initEvmProvidersIfAvailable(locator: ProviderFactoryLocatorInstance) {\n const context = locator.context\n const { logger, config } = context\n if (canUseEvmProvider(context)) {\n const chainId = assertEx(context.config.chain.id as ChainId, () => 'Missing config.chain.id (required for EVM providers)')\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 const chainId = assertEx(config.chain.id, () => 'Missing config.chain.chainId (required for non-EVM providers)')\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 chainId, 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 {\n assertEx, hexFrom, isDefined, isHex,\n} from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\n\nexport const canUseChainId = ({ config }: BaseConfigContext): boolean => {\n return isDefined(config.evm.chainId)\n}\n\nexport const getChainId = ({ config }: BaseConfigContext) => {\n const chainId = assertEx(config.evm.chainId, () => 'Missing config.evm.chainId')\n if (isHex(chainId, { prefix: true })) {\n const hex = hexFrom(chainId)\n const parsed = Number.parseInt(hex, 16)\n return parsed\n } else {\n const parsed = Number.parseInt(chainId, 10)\n return parsed\n }\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport type { Provider } from 'ethers'\n\nimport { canUseInfuraProvider, initInfuraProvider } from './initInfuraProvider.ts'\nimport { canUseJsonRpcProvider, initJsonRpcProvider } from './initJsonRpcProvider.ts'\n\nlet provider: Promise<Provider> | undefined\n\nexport const initEvmProvider = async (context: BaseConfigContext): Promise<Provider> => {\n if (provider) return provider\n if (canUseInfuraProvider(context)) {\n provider = initInfuraProvider(context)\n } else if (canUseJsonRpcProvider(context)) {\n provider = initJsonRpcProvider(context)\n }\n return assertEx(await provider, () => 'No provider available')\n}\n\nexport const canUseEvmProvider = (context: BaseConfigContext) => {\n return canUseInfuraProvider(context) || canUseJsonRpcProvider(context)\n}\n","import { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport type { Provider } from 'ethers'\nimport { InfuraProvider } from 'ethers/providers'\n\nimport { canUseChainId, getChainId } from './initChainId.ts'\n\nlet instance: Promise<InfuraProvider> | undefined\n\nexport const initInfuraProvider = (context: BaseConfigContext): Promise<Provider> => {\n if (instance) return instance\n const providerConfig = getInfuraProviderConfig(context)\n instance = Promise.resolve(new InfuraProvider(providerConfig[0], providerConfig[1]))\n return instance\n}\n\nexport const canUseInfuraProvider = (context: BaseConfigContext): boolean => {\n const { config } = context\n return canUseChainId(context)\n && isDefined(config.evm?.infura?.projectId)\n && isDefined(config.evm?.infura?.projectSecret)\n}\n\nexport const getInfuraProviderConfig = (context: BaseConfigContext) => {\n const { config } = context\n const projectId = assertEx(config.evm?.infura?.projectId, () => 'Missing config.evm.infura.projectId')\n const projectSecret = assertEx(config.evm?.infura?.projectSecret, () => 'Missing config.evm.infura.projectSecret')\n return [getChainId(context), projectId, projectSecret] as const\n}\n","import { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { JsonRpcProvider } from 'ethers/providers'\n\nimport { canUseChainId, getChainId } from './initChainId.ts'\n\nexport const initJsonRpcProvider = (context: BaseConfigContext) => {\n const providerConfig = getJsonRpcProviderConfig(context)\n return Promise.resolve(new JsonRpcProvider(...providerConfig))\n}\n\nexport const canUseJsonRpcProvider = (context: BaseConfigContext) => {\n const { config } = context\n return canUseChainId(context)\n && isDefined(config.evm.jsonRpc?.url)\n}\n\nexport const getJsonRpcProviderConfig = (context: BaseConfigContext) => {\n const { config } = context\n const jsonRpcUrl = assertEx(config.evm.jsonRpc?.url, () => 'Missing config.evm.jsonRpc.url')\n return [jsonRpcUrl, getChainId(context)] as const\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport { createBootstrapHead } from '@xyo-network/chain-sdk'\nimport type { 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\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 // If there is no head, create one\n const chain = await createBootstrapHead(\n account,\n possibleChainId,\n asAttoXL1(20_000_000_000_000_000_000_000n),\n config.chain.genesisRewardAddress ?? account.address,\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\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 return {\n node, writableChainArchivist, readonlyChainArchivist, pendingTransactionsArchivist, pendingBlocksArchivist,\n }\n}\n","import { type BaseMongoSdkPrivateConfig } from '@xylabs/mongo'\nimport { isDefined } from '@xylabs/sdk-js'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { MongoDBArchivistV2, MongoDBArchivistV2Deletable } from '@xyo-network/archivist-mongodb'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { initTelemetry } from '@xyo-network/chain-telemetry'\nimport { AbstractModule, LoggerModuleStatusReporter } from '@xyo-network/module-abstract'\nimport { ModuleFactoryLocator } from '@xyo-network/module-factory-locator'\nimport type { MongoDBModuleParamsV2 } from '@xyo-network/module-model-mongodb'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { hasMongoConfig } from '@xyo-network/xl1-sdk'\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 }\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 { ManifestWrapper } from '@xyo-network/manifest-wrapper'\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/manifest-model'\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\": \"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/manifest-model'\n\nimport Chain from './Chain.json' with { type: 'json' }\nimport Pending from './Pending.json' with { type: 'json' }\n\n/**\n * Chain Node Manifest\n */\nconst ChainNodeManifest = Chain as unknown as PackageManifestPayload\n/**\n * Pending Node Manifest\n */\nconst PendingNodeManifest = Pending as unknown as PackageManifestPayload\n/**\n * Public Child Manifests\n */\nexport const PublicChildManifests: ModuleManifest[] = [\n ...ChainNodeManifest.nodes,\n ...PendingNodeManifest.nodes,\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 { 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'\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 { isDefined } from '@xylabs/sdk-js'\nimport { boot } from '@xyo-network/bios'\nimport { HDWallet } from '@xyo-network/wallet'\nimport type { ActorConfigContext } from '@xyo-network/xl1-sdk'\n\nimport { initActorSeedPhrase } from './initActorSeedPhrase.ts'\n\nexport async function initActorWallet(context: ActorConfigContext, mnemonic?: string) {\n const bios = await boot()\n const seedPhrase = isDefined(mnemonic)\n ? mnemonic\n : await initActorSeedPhrase(context, bios)\n return await HDWallet.fromPhrase(seedPhrase)\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 { Promisable } from '@xylabs/sdk-js'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport {\n ProviderFactoryLocator,\n SimpleXyoGatewayRunner,\n} from '@xyo-network/xl1-sdk'\n\nimport type { RewardRedemptionConfigContext } from '../../actors/index.ts'\n\nexport function rewardRedemptionLocatorFromConfig(\n context: RewardRedemptionConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promisable<ProviderFactoryLocatorInstance> {\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\n\n locator.registerMany([\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 { 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 '../../init/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 type { ActorConfigContext, ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport {\n ProviderFactoryLocator,\n SimpleAccountBalanceViewer,\n SimpleBlockViewer,\n SimpleFinalizationRunner,\n SimpleFinalizationViewer,\n SimpleMempoolRunner,\n SimpleMempoolViewer,\n SimpleWindowedBlockViewer,\n SimpleXyoConnectionViewer,\n SimpleXyoViewer,\n} from '@xyo-network/xl1-sdk'\n\nimport {\n initActorWallet, initBalanceSummaryMap, initFinalizationArchivistIfNeeded,\n initServerNode, initTransferSummaryMap,\n} from '../../init/index.ts'\n\nexport async function localLocatorFromConfig(\n context: ActorConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promise<ProviderFactoryLocatorInstance> {\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, readonlyChainArchivist, pendingTransactionsArchivist, pendingBlocksArchivist,\n } = await initServerNode(\n context,\n wallet,\n )\n\n await initFinalizationArchivistIfNeeded(writableChainArchivist, context.config, wallet)\n\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\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: 10_000, syncInterval: 10_000 }),\n SimpleXyoConnectionViewer.factory<SimpleXyoConnectionViewer>(SimpleXyoConnectionViewer.dependencies, {}),\n SimpleXyoViewer.factory<SimpleXyoViewer>(SimpleXyoViewer.dependencies, { finalizedArchivist: readonlyChainArchivist }),\n SimpleFinalizationViewer.factory<SimpleFinalizationViewer>(SimpleFinalizationViewer.dependencies, { finalizedArchivist: readonlyChainArchivist }),\n SimpleFinalizationRunner.factory<SimpleFinalizationRunner>(SimpleFinalizationRunner.dependencies, { finalizedArchivist: writableChainArchivist }),\n\n ])\n locator.freeze()\n return locator\n}\n","import { deepMerge } from '@xylabs/sdk-js'\nimport {\n ActorConfigZod,\n type CachingContext,\n type Config, type ProviderFactoryLocatorInstance,\n} from '@xyo-network/xl1-sdk'\n\nimport {\n ApiConfigZod, BridgeConfigZod,\n MempoolConfigZod, ProducerConfigZod, RewardRedemptionConfigZod,\n} from '../actors/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,\n config: ApiConfigZod.parse(deepMerge(config, actorConfig)),\n }, result._root)\n\n break\n }\n case 'mempool': {\n result[actorConfig.name] = await mempoolLocatorFromConfig({ ...context, config: MempoolConfigZod.parse(deepMerge(config, actorConfig)) }, result._root)\n break\n }\n case 'validator': {\n result[actorConfig.name] = await validatorLocatorFromConfig({ ...context, config: ActorConfigZod.parse(deepMerge(config, actorConfig)) }, result._root)\n break\n }\n case 'bridge': {\n result[actorConfig.name] = await bridgeLocatorFromConfig({ ...context, config: BridgeConfigZod.parse(deepMerge(config, actorConfig)) }, result._root)\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 { isString } from '@xylabs/sdk-js'\nimport { validateHydratedBlock, validateHydratedBlockState } from '@xyo-network/chain-validation'\nimport type { ActorConfigContext, ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport {\n ProviderFactoryLocator,\n SimpleBlockValidationViewer,\n SimpleNetworkStakeViewer,\n SimpleStepRewardsByPositionViewer,\n SimpleStepRewardsByStakerViewer,\n SimpleStepRewardsByStepViewer,\n SimpleStepRewardsTotalViewer,\n SimpleStepRewardsViewer,\n SimpleStepViewer,\n SimpleTimeSyncViewer,\n} from '@xyo-network/xl1-sdk'\n\nimport { initEvmProvidersIfAvailable } from '../../init/index.ts'\nimport { localLocatorFromConfig } from './localLocatorFromConfig.ts'\nimport { remoteLocatorFromConfig } from './remoteLocatorFromConfig.ts'\n\nexport async function rootLocatorFromConfig(\n context: ActorConfigContext,\n): Promise<ProviderFactoryLocatorInstance> {\n const { config } = context\n let locator: ProviderFactoryLocatorInstance = new ProviderFactoryLocator(context)\n\n locator.registerMany([\n SimpleNetworkStakeViewer.factory<SimpleNetworkStakeViewer>(SimpleNetworkStakeViewer.dependencies, {}),\n SimpleTimeSyncViewer.factory<SimpleTimeSyncViewer>(SimpleTimeSyncViewer.dependencies, {}),\n SimpleStepViewer.factory<SimpleStepViewer>(SimpleStepViewer.dependencies, {}),\n SimpleStepRewardsViewer.factory<SimpleStepRewardsViewer>(SimpleStepRewardsViewer.dependencies, {}),\n SimpleStepRewardsByPositionViewer.factory<SimpleStepRewardsByPositionViewer>(SimpleStepRewardsByPositionViewer.dependencies, {}),\n SimpleStepRewardsByStakerViewer.factory<SimpleStepRewardsByStakerViewer>(SimpleStepRewardsByStakerViewer.dependencies, {}),\n SimpleStepRewardsByStepViewer.factory<SimpleStepRewardsByStepViewer>(SimpleStepRewardsByStepViewer.dependencies, {}),\n SimpleStepRewardsTotalViewer.factory<SimpleStepRewardsTotalViewer>(SimpleStepRewardsTotalViewer.dependencies, {}),\n SimpleBlockValidationViewer.factory<SimpleBlockValidationViewer>(\n SimpleBlockValidationViewer.dependencies,\n { state: validateHydratedBlockState, protocol: validateHydratedBlock },\n ),\n ])\n locator = await initEvmProvidersIfAvailable(locator)\n locator = await (isString(config.remote.rpc?.url)\n ? remoteLocatorFromConfig(context, locator)\n : localLocatorFromConfig(context, locator))\n locator.freeze()\n return locator\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport type { ActorConfigContext, ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport {\n ProviderFactoryLocator,\n SimpleAccountBalanceViewer,\n SimpleBlockViewer,\n SimpleFinalizationViewer,\n SimpleMempoolRunner,\n SimpleMempoolViewer,\n SimpleWindowedBlockViewer,\n SimpleXyoViewer,\n} from '@xyo-network/xl1-sdk'\n\nimport {\n initActorWallet, initBalanceSummaryMap,\n initServerNode, initTransferSummaryMap,\n} from '../../init/index.ts'\n\nexport async function remoteLocatorFromConfig(\n context: ActorConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promise<ProviderFactoryLocatorInstance> {\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 readonlyChainArchivist, pendingTransactionsArchivist, pendingBlocksArchivist,\n } = await initServerNode(\n context,\n wallet,\n )\n\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\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: 10_000, syncInterval: 10_000 }),\n SimpleXyoViewer.factory<SimpleXyoViewer>(SimpleXyoViewer.dependencies, { finalizedArchivist: readonlyChainArchivist }),\n ])\n locator.freeze()\n return locator\n}\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 { 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 * @returns The parsed configuration object if found and valid, otherwise undefined.\n */\nexport async function tryParseConfig(searchPlaces?: string[]) {\n const explorer = cosmiconfig(\n configName,\n {\n cache: true,\n // loaders: { '.ts': TypeScriptLoader() },\n searchPlaces,\n },\n )\n const result = (await explorer.search())?.config\n if (isDefined(result) && !isNull(result)) {\n const section = result[configSection]\n if (isDefined(section) && typeof section === 'object') {\n return ConfigZod.loose().parse(section)\n }\n }\n return ConfigZod.parse({})\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport { buildNextBlock } from '@xyo-network/chain-sdk'\nimport type { 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 { IncomingMessage, ServerResponse } from 'node:http'\nimport http from 'node:http'\n\nimport type { CreatableStatus } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { ActorConfigContext, RuntimeStatusMonitor } from '@xyo-network/xl1-sdk'\n\nconst sendStatus = (res: ServerResponse, status: CreatableStatus, errorCode: number) => {\n const statusCode = status === 'started' ? 200 : errorCode\n res.writeHead(statusCode, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify({ status }))\n}\n\nconst notFound = (res: ServerResponse) => {\n res.writeHead(404, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify({ status: 'not found' }))\n}\n\n/**\n * Starts an HTTP server with Kubernetes health endpoints:\n * - /healthz\n * - /livez\n * - /readyz\n * @param context The actor configuration context\n * @param port The port to listen on (default: 8080)\n * @param statusMonitor The runtime status monitor to determine the health status\n */\nconst createHealthServer = (context: ActorConfigContext, port: number, statusMonitor: RuntimeStatusMonitor) => {\n const { logger } = context\n const server = http.createServer((req: IncomingMessage, res: ServerResponse) => {\n const url = req.url ?? ''\n\n const status = statusMonitor.getGlobalStatus()\n\n switch (url) {\n case '/healthz': {\n sendStatus(res, status, 500)\n break\n }\n case '/livez': {\n sendStatus(res, status, 503)\n break\n }\n case '/readyz': {\n sendStatus(res, status, 503)\n break\n }\n default: {\n notFound(res)\n }\n }\n })\n\n server.listen(port, () => {\n logger?.log(`Health server running on http://localhost:${port}`)\n logger?.log(' - /healthz')\n logger?.log(' - /livez')\n logger?.log(' - /readyz')\n })\n return server\n}\n\nexport function initHealthEndpoints(context: ActorConfigContext, statusMonitor: RuntimeStatusMonitor) {\n const { config } = context\n const { healthCheckPort } = config\n return isDefined(healthCheckPort) ? createHealthServer(context, healthCheckPort, statusMonitor) : undefined\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 { CreatableInstance } from '@xylabs/sdk-js'\nimport { AbstractCreatable, creatable } from '@xylabs/sdk-js'\nimport { 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"],"mappings":";;;;AACA,SAASA,iBAAiB;AAC1B,SAASC,4BAA4B;AAOrC,SACEC,SAASC,oBAAoBC,2BAC7BC,4BACK;;;;;;;;AAQA,IAAMC,iBAAN,cAA6BC,QAAAA;SAAAA;;;EACxBC;EACAC;EACAC;EACAC;EACAC;EAEV,IAAcC,cAAc;AAC1B,WAAO,KAAKL;EACd;EAEA,IAAcM,qBAAqB;AACjC,WAAO,KAAKL;EACd;EAEA,IAAcM,gBAAgB;AAC5B,WAAO,KAAKH;EACd;EAEA,MAAeI,gBAAgB;AAC7B,UAAM,MAAMC,aAAAA;AACZ,SAAKT,eAAe,MAAM,KAAKU,QAAQC,YAAYC,kBAAAA;AACnD,SAAKX,sBAAsB,MAAM,KAAKS,QAAQC,YAAYE,yBAAAA;AAC1D,SAAKT,iBAAiB,MAAM,KAAKM,QAAQC,YAAYG,oBAAAA;EACvD;EAEA,MAAeL,eAA8B;AAC3C,UAAM,MAAMA,aAAAA;AACZ,SAAKM;MAAc;MAAkB,YAAA;AACnC,cAAM,KAAKC,UAAU,wBAAwB,YAAA;AAC3CC,kBAAQC,IAAI,8CAAA;AACZ,gBAAMC,qBAAqB;YACzBC,SAAS,KAAKA;YACdC,QAAQ,KAAKA;YACbd,eAAe,KAAKA;YACpBF,aAAa,KAAKA;YAClBC,oBAAoB,KAAKA;UAC3B,CAAA;QACF,GAAG;UAAE,GAAG,KAAKc;UAASE,iBAAiB;QAAK,CAAA;MAC9C;MAAG;MAAM;;IAAW;EACtB;AACF;;;;;;AC7DA,SAASC,kBAAkB;AAC3B,SAASC,wBAAwB;AAEjC,SAASC,SAAAA,cAAa;;;ACDtB,SAASC,aAAa;;;ACFtB,SAASC,UAAU;AACnB,OAAOC,UAAU;AAEjB,SAASC,eAAeC,iCAAiC;AACzD,SAASC,yBAAyC;AAGlD,IAAMC,uBAAuBC,KAAKC,KAAKC,QAAQC,IAAG,GAAI,QAAA;AAW/C,IAAMC,8BAA8B,wBACzCC,MACAC,QACAC,WACAC,aACAC,OAAkB,WAAM;AAExB,UAAQA,MAAAA;IACN,KAAK,QAAQ;AACX,YAAMC,OAAOF,eAAeT;AAC5B,aAAOY,cAAcC,OAAO;QAC1BC,SAAS;QACTC,QAAQ;UACNT;UACAU,mBAAmB;UACnBT;UACAU,UAAUC,kBAAkBX,QAAQI,MAAM,MAAA;UAC1CQ,QAAQC;UACRZ;QACF;MACF,CAAA;IACF;EACF;AACF,GAvB2C;;;ADZ3C,IAAMa,QAAQ,IAAIC,MAAAA;AAClB,IAAIC;AAEJ,eAAsBC,iCAAiC,EAAEC,OAAM,GAA4B;AACzF,SAAO,MAAMJ,MAAMK,aAAa,YAAA;AAC9B,QAAIH,UAAW,QAAOA;AACtB,UAAM,EAAEI,KAAI,IAAKF,OAAOG;AACxBL,gBAAY,MAAMM,4BAA4B,yBAAyB,SAAS,aAAaF,IAAAA;AAC7F,WAAOJ;EACT,CAAA;AACF;AAPsBC;;;ADDtB,IAAMM,SAAQ,IAAIC,OAAAA;AAClB,IAAIC;AAEJ,eAAsBC,4BAA4BC,SAAiC;AACjF,SAAO,MAAMJ,OAAMK,aAAa,YAAA;AAC9B,QAAIH,WAAW,QAAOA;AACtB,WAAO,MAAMI,WAAW,+BAA+BF,QAAQG,QAAQ,YAAA;AACrE,YAAMC,QAAQ,MAAMC,iBAAiB,qCAAqC,MAAMC,iCAAiCN,OAAAA,CAAAA;AACjHF,MAAAA,aAAYM;AACZ,aAAON;IACT,GAAG,KAAM,IAAA;EACX,CAAA;AACF;AATsBC;;;AGXtB,SAASQ,cAAAA,mBAAkB;AAC3B,SAASC,oBAAAA,yBAAwB;AAGjC,SAASC,SAAAA,cAAa;;;ACFtB,SAASC,SAAAA,cAAa;AAItB,IAAMC,SAAQ,IAAIC,OAAAA;AAClB,IAAIC;AAEJ,eAAsBC,gCAAgC,EAAEC,OAAM,GAAqB;AACjF,SAAO,MAAMJ,OAAMK,aAAa,YAAA;AAC9B,QAAIH,WAAW,QAAOA;AACtB,UAAM,EAAEI,KAAI,IAAKF,OAAOG;AACxBL,IAAAA,aAAY,MAAMM,4BAA4B,wBAAwB,SAAS,yBAAyBF,IAAAA;AACxG,WAAOJ;EACT,CAAA;AACF;AAPsBC;;;ADDtB,IAAMM,SAAQ,IAAIC,OAAAA;AAClB,IAAIC;AAEJ,eAAsBC,2BAA2BC,SAA0B;AACzE,SAAO,MAAMJ,OAAMK,aAAa,YAAA;AAC9B,QAAIH,WAAW,QAAOA;AACtB,WAAO,MAAMI,YAAW,8BAA8BF,QAAQG,QAAQ,YAAA;AACpE,YAAMC,QAAQ,MAAMC,kBAAiB,oCAAoC,MAAMC,gCAAgCN,OAAAA,CAAAA;AAC/GF,MAAAA,aAAYM;AACZ,aAAON;IACT,GAAG,KAAM,IAAA;EACX,CAAA;AACF;AATsBC;;;AEXtB,SAASQ,cAAAA,mBAAkB;AAC3B,SAASC,oBAAAA,yBAAwB;AAGjC,SAASC,SAAAA,cAAa;;;ACJtB,SAASC,iBAAiBC,mCAAmC;AAE7D,SAASC,SAAAA,cAAa;AAEtB,IAAMC,SAAQ,IAAIC,OAAAA;AAClB,IAAIC;AAEJ,eAAsBC,yCAAAA;AACpB,SAAO,MAAMH,OAAMI,aAAa,YAAA;AAC9B,QAAIF,WAAW,QAAOA;AACtBA,IAAAA,aAAY,MAAMG,gBAAgBC,OAAO;MACvCC,SAAS;MACTC,QAAQ;QACNC,QAAQC;QAA6BC,KAAK;QAAMC,MAAM;MACxD;IACF,CAAA;AACA,WAAOV;EACT,CAAA;AACF;AAXsBC;;;ADCtB,IAAMU,SAAQ,IAAIC,OAAAA;AAClB,IAAIC;AAEJ,eAAsBC,kCAAkC,EAAEC,OAAM,GAAe;AAC7E,SAAO,MAAMJ,OAAMK,aAAa,YAAA;AAC9B,QAAIH,WAAW,QAAOA;AACtB,WAAO,MAAMI,YAAW,qCAAqCF,QAAQ,YAAA;AACnE,YAAMG,QAAQ,MAAMC,kBAAiB,2CAA2C,MAAMC,uCAAAA,CAAAA;AACtFP,MAAAA,aAAYK;AACZ,aAAOL;IACT,GAAG,KAAM,IAAA;EACX,CAAA;AACF;AATsBC;;;AEXtB,SAASO,YAAAA,WAAUC,cAAAA,mBAAkB;AACrC,SAASC,oBAAAA,yBAAwB;AAGjC,SAASC,SAAAA,cAAa;;;ACJtB,SAASC,gBAAgB;AAGzB,SAASC,SAAAA,cAAa;AAItB,IAAMC,SAAQ,IAAIC,OAAAA;AAClB,IAAIC;AAEJ,eAAsBC,mCAAmC,EAAEC,OAAM,GAAqB;AACpF,SAAO,MAAMJ,OAAMK,aAAa,YAAA;AAC9B,QAAIH,WAAW,QAAOA;AACtB,UAAM,EAAEI,KAAI,IAAKF,OAAOG;AACxBL,IAAAA,aAAY,MAAMM,4BAA4B,4BAA4B,eAAe,SAASF,IAAAA;AAClG,WAAOG,SAASP,YAAW,MAAM,IAAIQ,MAAM,mDAAA,CAAA;EAC7C,CAAA;AACF;AAPsBP;;;ADFtB,IAAMQ,SAAQ,IAAIC,OAAAA;AAClB,IAAIC;AAEJ,eAAsBC,8BAA8BC,SAA0B;AAC5E,SAAO,MAAMJ,OAAMK,aAAa,YAAA;AAC9B,QAAIH,WAAW,QAAOA;AACtB,WAAO,MAAMI,YAAW,iCAAiCF,QAAQG,QAAQ,YAAA;AACvE,YAAMC,QAAQ,MAAMC,kBAAiB,uCAAuC,MAAMC,mCAAmCN,OAAAA,CAAAA;AACrHF,MAAAA,aAAYM;AACZ,aAAOG,UAAST,YAAW,MAAM,wCAAA;IACnC,GAAG,KAAM,IAAA;EACX,CAAA;AACF;AATsBC;;;AETf,SAASS,qBAAqBC,QAAgBC,aAAqBC,gBAAwBC,2BAA2B,MAAI;AAC/H,QAAM,EAAEC,aAAY,IAAKJ,OAAOK,WAAWC,QAAQ,CAAC;AACpD,QAAM,EAAEC,MAAMC,WAAW,YAAYC,OAAON,yBAAwB,IAAKH,OAAOK,WAAWK,SAASC,UAAU,CAAC;AAC/G,QAAMC,kBAAkB;IACtBC,YAAY;MAAEZ;MAAaC;IAAe;IAAGE;IAAcU,eAAe;MAAEN;MAAUC;IAAK;EAC7F;AACA,SAAOG;AACT;AAPgBb;;;ACFhB,SACEgB,cAAcC,cAAcC,oBACvB;AACP,SAASC,sBAAsBC,0BAA0B;AACzD,SAASC,gBAAgBC,SAAS;AAE3B,IAAMC,eAAeH,mBAAmBI,OAAOF,EAAEG,OAAO;EAC7DC,kBAAkBJ,EAAEK,MAAM;IAACL,EAAEM,OAAM;IAAIN,EAAEO,OAAM;IAAIP,EAAEQ,QAAO;GAAG,EAAEC,UAC/DC,CAAAA,MAAKA,MAAM,OAAOA,MAAM,WAAWA,MAAM,SAASA,KAAK,CAAA,EACvDC,QAAQ,IAAA,EAAMC,SAASb,gBAAgB;IACvCc,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;AACF,CAAA,EAAGC,KAAK;AAID,IAAMC,cAActB,aAAaM,YAAAA;AACjC,IAAMiB,cAAcxB,aAAaO,cAAc,aAAA;AAC/C,IAAMkB,cAAcvB,aAAaK,cAAc,aAAA;AAE/C,IAAMmB,mBAAmBvB,qBAAqBK,OAAO;EAAEmB,QAAQpB;AAAa,CAAA;AAI5E,IAAMqB,qBAAqB3B,aAAayB,gBAAAA;AACxC,IAAMG,qBAAqB7B,aAAa0B,kBAAkB,oBAAA;AAC1D,IAAMI,qBAAqB5B,aAAawB,kBAAkB,oBAAA;;;AC5BjE,SACEK,YAAYC,QAAQC,WAAWC,aAC1B;AACP,SACEC,gBAAAA,eAAcC,gBAAAA,eAAcC,gBAAAA,qBACvB;AAEP,SACEC,sBAAsBC,wBAAAA,uBAAsBC,sBAAAA,qBAAoBC,WAC3D;AACP,SAASC,kBAAAA,iBAAgBC,KAAAA,UAAS;AAElC,IAAMC,oBAAoBV,MAAMO,IAAI,EAAE,IAAIH,qBAAqBO,GAAG;AAClE,IAAMC,kCAAkCb,UAAU,0CAAA;AAClD,IAAMc,2BAAoCb,MAAM,MAAA;AAChD,IAAMc,kDAAkDd,MAAM,oEAAA;AAC9D,IAAMe,iCAAiChB,UAAU,0CAAA;AACjD,IAAMiB,4BAA4BhB,MAAMO,IAAI,OAAQ,IAAIH,qBAAqBO,GAAG;AAChF,IAAMM,4BAA4BjB,MAAMO,IAAI,GAAG,IAAIH,qBAAqBO,GAAG;AAEpE,IAAMO,iBAAiBT,GAAEU,OAAOC,OAAM,EAAGC,IAAG,EAAGC,YAAW,EAAGC,IAAI,GAAA;AAGjE,IAAMC,kBAAkBlB,oBAAmBmB,OAAO;EACvDC,eAAe7B,WAAW8B,SAAQ,EAAGC,SAASpB,iBAAgB;IAC5DqB,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAC,aAAanC,WAAW8B,SAAQ,EAAGC,SAASpB,iBAAgB;IAC1DqB,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAE,UAAUnC,OAAOoC,QAAQxB,iBAAAA,EAAmBkB,SAASpB,iBAAgB;IACnE0B,SAASxB;IACTmB,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAI,oBAAoBjB,eAAegB,QAAQ,GAAA,EAAKN,SAASpB,iBAAgB;IACvE0B,SAAS;IACTL,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAK,iBAAiBtC,OAAOoC,QAAQlB,yBAAAA,EAA2BY,SAASpB,iBAAgB;IAClF0B,SAASlB;IACTa,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAM,iBAAiBvC,OAAOoC,QAAQjB,yBAAAA,EAA2BW,SAASpB,iBAAgB;IAClF0B,SAASjB;IACTY,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAO,WAAW7B,GAAE8B,OAAM,EAAGL,QAAQ,WAAA,EAAaN,SAASpB,iBAAgB;IAClE0B,SAAS;IACTL,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAS,WAAW/B,GAAEU,OAAOC,OAAM,EAAGC,IAAG,EAAGoB,SAAQ,EAAGP,QAAQ,IAAA,EAAMN,SAASpB,iBAAgB;IACnF0B,SAAS;IACTL,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAW,6BAA6B7C,WAAWqC,QAAQtB,+BAAAA,EAAiCgB,SAASpB,iBAAgB;IACxG0B,SAAStB;IACTiB,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAY,eAAe7C,OAAOoC,QAAQrB,wBAAAA,EAA0Be,SAASpB,iBAAgB;IAC/E0B,SAASrB;IACTgB,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAa,oBAAoB9C,OAAOoC,QAAQnB,8BAAAA,EAAgCa,SAASpB,iBAAgB;IAC1F0B,SAASnB;IACTc,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAc,6BAA6B/C,OAAOoC,QAAQpB,+CAAAA,EAAiDc,SAASpB,iBAAgB;IACpHqB,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAe,YAAYhD,OAAO6B,SAAQ,EAAGC,SAASpB,iBAAgB;IACrDqB,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAgB,iBAAiBjD,OAAO6B,SAAQ,EAAGC,SAASpB,iBAAgB;IAC1DqB,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;AACF,CAAA;AAIO,IAAMiB,oBAAoBxB,gBAAgByB,KAAK;EACpDhB,UAAU;EACVE,oBAAoB;EACpBH,aAAa;EACbN,eAAe;EACfU,iBAAiB;EACjBC,iBAAiB;EACjBM,eAAe;EACfC,oBAAoB;EACpBG,iBAAiB;EACjBD,YAAY;AACd,CAAA,EAAGI,SAAQ;AAIJ,IAAMC,iBAAiBjD,cAAasB,eAAAA;AACpC,IAAM4B,iBAAiBnD,cAAauB,iBAAiB,gBAAA;AACrD,IAAM6B,iBAAiBlD,cAAaqB,iBAAiB,gBAAA;AAErD,IAAM8B,sBAAsBjD,sBAAqBoB,OAAO;EAAE8B,QAAQ/B;AAAgB,CAAA;AAIlF,IAAMgC,wBAAwBtD,cAAaoD,mBAAAA;AAC3C,IAAMG,wBAAwBxD,cAAaqD,qBAAqB,uBAAA;AAChE,IAAMI,wBAAwBvD,cAAamD,qBAAqB,uBAAA;;;ACpIvE,SACEK,gBAAAA,eAAcC,gBAAAA,eAAcC,gBAAAA,qBACvB;AACP,SAASC,wBAAAA,uBAAsBC,sBAAAA,2BAA0B;AACzD,SAASC,kBAAAA,iBAAgBC,KAAAA,UAAS;AAE3B,IAAMC,mBAAmBH,oBAAmBI,OAAO;EACxDC,SAASH,GAAEI,MAAM;IAACJ,GAAEK,OAAM;IAAIL,GAAEM,QAAO;GAAG,EAAEC,QAAQ,OAAA,EAASC,UAAU,CAACC,KAAKC,QAAAA;AAC3E,QAAI,OAAOD,QAAQ,UAAW,QAAOA;AACrC,UAAME,aAAaF,IAAIG,YAAW,EAAGC,KAAI;AACzC,QAAI;MAAC;MAAQ;MAAK;MAAO;MAAMC,SAASH,UAAAA,EAAa,QAAO;AAC5D,QAAI;MAAC;MAAS;MAAK;MAAM;MAAOG,SAASH,UAAAA,EAAa,QAAO;AAC7DD,QAAIK,SAAS;MACXC,MAAM;MACNC,UAAU;MACVC,SAAS,2BAA2BT,GAAAA;IACtC,CAAA;AACA,WAAOT,GAAEmB;EACX,CAAA,EAAGC,SAASrB,iBAAgB;IAC1BQ,SAAS;IACTc,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;AACF,CAAA;AAIO,IAAMC,kBAAkB7B,cAAaM,gBAAAA;AACrC,IAAMwB,kBAAkB/B,cAAaO,kBAAkB,iBAAA;AACvD,IAAMyB,kBAAkB9B,cAAaK,kBAAkB,iBAAA;AAEvD,IAAM0B,uBAAuB9B,sBAAqBK,OAAO;EAAE0B,QAAQ3B;AAAiB,CAAA;AAIpF,IAAM4B,yBAAyBlC,cAAagC,oBAAAA;AAC5C,IAAMG,yBAAyBpC,cAAaiC,sBAAsB,wBAAA;AAClE,IAAMI,yBAAyBnC,cAAa+B,sBAAsB,wBAAA;;;ACtCzE,SAASK,cAAAA,aAAYC,iBAAiB;AACtC,SACEC,gBAAAA,eAAcC,gBAAAA,eAAcC,gBAAAA,qBACvB;AACP,SAASC,gBAAgBC,wBAAAA,6BAA4B;AACrD,SAASC,kBAAAA,iBAAgBC,KAAAA,UAAS;AAE3B,IAAMC,oBAAoBJ,eAAeK,OAAOF,GAAEG,OAAO;EAC9DC,WAAWJ,GAAEK,WAAW,CAACC,QAAAA;AACvB,QAAI,OAAOA,QAAQ,UAAU;AAC3B,aAAOA,IAAIC,MAAM,GAAA,EAAKC,IAAIC,CAAAA,MAAKhB,UAAUgB,EAAEC,KAAI,CAAA,CAAA;IACjD;AACA,WAAOJ;EACT,GAAGN,GAAEW,MAAMnB,WAAAA,EAAYoB,SAAQ,EAAGC,SAASd,iBAAgB;IACzDe,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA,CAAA;EAEAC,4BAA4BjB,GAAEkB,QAAO,EAAGN,SAAQ,EAAGC,SAASd,iBAAgB;IAC1Ee,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAG,mBAAmBnB,GAAEoB,OAAOC,OAAM,EAAGC,QAAQ,IAAA,EAAWT,SAASd,iBAAgB;IAC/Ee,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;;EAEAO,UAAUvB,GAAEoB,OAAOC,OAAM,EAAGC,QAAQ,CAAA,EAAGT,SAASd,iBAAgB;IAC9De,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;;EAEAQ,eAAexB,GAAEyB,OAAM,EAAGb,SAAQ,EAAGC,SAASd,iBAAgB;IAC5De,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;AACF,CAAA,EAAGU,KAAK;AAID,IAAMC,mBAAmBhC,cAAaM,iBAAAA;AACtC,IAAM2B,mBAAmBlC,cAAaO,mBAAmB,kBAAA;AACzD,IAAM4B,mBAAmBjC,cAAaK,mBAAmB,kBAAA;AAEzD,IAAM6B,wBAAwBhC,sBAAqBI,OAAO;EAAE6B,QAAQ9B;AAAkB,CAAA;AAItF,IAAM+B,0BAA0BrC,cAAamC,qBAAAA;AAC7C,IAAMG,0BAA0BvC,cAAaoC,uBAAuB,yBAAA;AACpE,IAAMI,0BAA0BtC,cAAakC,uBAAuB,yBAAA;;;ACvD3E,SACEK,gBAAAA,eAAcC,gBAAAA,eAAcC,gBAAAA,qBACvB;AACP,SAASC,wBAAAA,uBAAsBC,sBAAAA,2BAA0B;AAGlD,IAAMC,4BAA4BD,oBAAmBE,OAAO,CAAC,CAAA;AAI7D,IAAMC,2BAA2BN,cAAaI,yBAAAA;AAC9C,IAAMG,2BAA2BR,cAAaK,2BAA2B,0BAAA;AACzE,IAAMI,2BAA2BP,cAAaG,2BAA2B,0BAAA;AAEzE,IAAMK,gCAAgCP,sBAAqBG,OAAO;EAAEK,QAAQN;AAA0B,CAAA;AAItG,IAAMO,kCAAkCX,cAAaS,6BAAAA;AACrD,IAAMG,kCAAkCb,cAAaU,+BAA+B,iCAAA;AACpF,IAAMI,kCAAkCZ,cAAaQ,+BAA+B,iCAAA;;;AClB3F,SACEK,wBACAC,2BACAC,kBACAC,uBACK;AAIA,SAASC,qBACdC,SACAC,QAAuC;AAEvC,QAAMC,UAAU,IAAIC,uBAAuB;IAAE,GAAGH;IAASE,SAASD;EAAO,CAAA;AAEzEC,UAAQE,aAAa;IACnBC,gBAAgBC,QAAyBD,gBAAgBE,cAAc,CAAC,CAAA;IACxEC,0BAA0BF,QAAmCE,0BAA0BD,cAAc,CAAC,CAAA;IACtGE,iBAAiBH,QAA0BG,iBAAiBF,cAAc,CAAC,CAAA;GAC5E;AACDL,UAAQQ,OAAM;AACd,SAAOR;AACT;AAbgBH;;;ACVhB,SAASY,WAAWC,gBAAgB;AACpC,SAASC,gBAAgB;AAIzB,SACEC,gCACAC,eACAC,uBACAC,8BACAC,iCACAC,kBACAC,6BACAC,oBACAC,2BACAC,sBACAC,sBACAC,yBACAC,yBACAC,0BAAAA,yBACAC,6BAAAA,4BACAC,wBACAC,mBAAAA,kBACAC,uBACK;AAIP,eAAsBC,wBACpBC,SACAC,QAAuC;AAEvC,QAAMC,UAAU,IAAIC,wBAAuB;IAAE,GAAGH;IAASE,SAASD;EAAO,CAAA;AAEzE,QAAM,EAAEG,OAAM,IAAKJ;AAEnB,QAAM,EAAEK,SAAQ,IAAKD;AACrB,QAAME,eAAeC,UAAUF,QAAAA,IAAYA,WAAWG,SAASC,iBAAgB;AAC/E,QAAMC,SAAS,MAAMC,gCAAgCL,YAAAA;AACrD,QAAMM,gBAAgB,MAAMF,OAAOG,WAAWC,cAAcC,GAAG;AAE/D,QAAMC,YAAYZ,OAAOa,OAAOC,KAAKC;AAErC,MAAIC,SAASJ,SAAAA,GAAY;AACvB,UAAMK,mBAAqC,wBAACC,YAA0B,IAAIC,iBAAiBP,WAAWM,OAAAA,GAA3D;AAE3CpB,YAAQsB,aAAa;MACnBC,qBAAqBC,QAA8BD,qBAAqBE,cAAc;QAAEC,WAAW,MAAMP,iBAAiBQ,uBAAAA;MAAyB,CAAA;MACnJC,qBAAqBJ,QAA8BI,qBAAqBH,cAAc;QAAEC,WAAW,MAAMP,iBAAiBU,uBAAAA;MAAyB,CAAA;MACnJC,4BAA4BN,QAC1BM,4BAA4BL,cAC5B;QAAEC,WAAW,MAAMP,iBAAiBY,8BAAAA;MAAgC,CAAA;MAEtEC,0BAA0BR,QACxBQ,0BAA0BP,cAC1B;QAAEC,WAAW,MAAMP,iBAAiBc,4BAAAA;MAA8B,CAAA;MAEpEC,mBAAmBV,QAA4BU,mBAAmBT,cAAc;QAAEC,WAAW,MAAMP,iBAAiBgB,qBAAAA;MAAuB,CAAA;KAC5I;EACH;AAEAnC,UAAQsB,aAAa;IACnBc,gBAAgBZ,QAAyBY,gBAAgBX,cAAc;MAAEY,SAAS3B;IAAc,CAAA;IAChG4B,iBAAgBd,QAAyBc,iBAAgBb,cAAc,CAAC,CAAA;IACxEc,2BAA0Bf,QAAmCe,2BAA0Bd,cAAc,CAAC,CAAA;IACtGe,uBAAuBhB,QAAgCgB,uBAAuBf,cAAc,CAAC,CAAA;GAC9F;AACDzB,UAAQyC,OAAM;AACd,SAAOzC;AACT;AAzCsBH;;;AC3BtB,SACE6C,0BAAAA,yBACAC,mCACK;AAIA,SAASC,yBACdC,SACAC,QAAuC;AAEvC,QAAMC,UAAU,IAAIC,wBAAuB;IAAE,GAAGH;IAASE,SAASD;EAAO,CAAA;AAEzEC,UAAQE,aAAa;IACnBC,4BAA4BC,QAAqCD,4BAA4BE,cAAc,CAAC,CAAA;GAC7G;AACDL,UAAQM,OAAM;AACd,SAAON;AACT;AAXgBH;;;ACThB,SAASU,aAAAA,YAAWC,YAAAA,iBAAgB;AACpC,SAASC,yBAAyB;AAIlC,SACEC,kCAAAA,iCACAC,yBAAAA,wBACAC,gCAAAA,+BACAC,oBAAAA,mBACAC,+BAAAA,8BACAC,sBAAAA,qBACAC,6BAAAA,4BACAC,wBAAAA,uBACAC,wBAAAA,uBACAC,2BAAAA,0BACAC,2BAAAA,0BACAC,0BAAAA,yBACAC,+BACK;;;AClBP,SAASC,aAAAA,YAAWC,mBAAmB;AACvC,SAASC,YAAAA,iBAAgB;AAGzB,SAASC,iBAAAA,gBAAeC,mCAAAA,wCAAuC;AAE/D,IAAMC,yBAAqE,CAAC;AAE5E,eAAsBC,iBAAiB,EAAEC,QAAQC,OAAM,GAAiD;AACtG,QAAMC,YAAYF,OAAOG;AACzB,MAAIC,WAAUN,uBAAuBI,SAAAA,CAAU,EAAG,QAAOJ,uBAAuBI,SAAAA;AAChF,MAAIG,eAAeL,OAAOM;AAC1B,MAAIC,YAAYF,YAAAA,GAAe;AAC7BJ,YAAQO,KAAK,IAAIN,SAAAA,kCAA2C;AAC5D,UAAMO,iBAAiBC,UAASC,iBAAgB;AAChDV,YAAQO,KAAK,IAAIN,SAAAA;;EAEnBO,cAAAA;;KAEG;AACDJ,mBAAeI;EACjB;AACA,QAAMG,SAAS,MAAMC,iCAAgCR,YAAAA;AACrD,QAAMS,UAAU,MAAMF,OAAOG,WAAWC,eAAcC,GAAG;AACzDnB,yBAAuBI,SAAAA,IAAaY;AACpC,SAAOhB,uBAAuBI,SAAAA;AAChC;AAlBsBH;;;ACTtB,SAASmB,YAAAA,WAAUC,YAAAA,iBAAgB;AAGnC,SAASC,YAAAA,iBAAgB;AAIzB,eAAsBC,oBAAoBC,SAA6BC,MAA2B;AAChG,QAAM,EAAEC,QAAQC,OAAM,IAAKH;AAC3B,QAAMI,aAAaD,OAAOE;AAC1B,QAAMC,mBAAmB,MAAML,KAAKM,gBAAgBC,IAAIJ,UAAAA;AACxDF,UAAQO,MAAM,0BAA0BH,gBAAAA,EAAkB;AAC1D,QAAM,EAAEI,SAAQ,IAAKP;AACrB,MAAIQ,UAASL,gBAAAA,KAAqBK,UAASD,QAAAA,GAAW;AACpDR,YAAQU,KAAK,sFAAA;AACb,UAAMX,KAAKM,gBAAgBM,IAAIT,YAAYM,QAAAA;EAC7C,OAAO;AACL,QAAII;AACJ,QAAIH,UAASD,QAAAA,GAAW;AACtBI,mBAAaJ;IACf,OAAO;AACLI,mBAAaC,UAASC,iBAAgB;AACtCd,cAAQe,IAAI,gGAAA;AACZf,cAAQe,IAAI,mBAAmBH,UAAAA,EAAY;IAC7C;AACA,UAAMb,KAAKM,gBAAgBM,IAAIT,YAAYU,UAAAA;EAC7C;AACA,SAAOI,UAAS,MAAMjB,KAAKM,gBAAgBC,IAAIJ,UAAAA,GAAa,MAAM,sCAAA;AACpE;AArBsBL;;;ACPtB,SAASoB,oBAAoD;AAE7D,SAASC,YAAAA,iBAAgB;AACzB,SAASC,gBAAgB;AAKzB,SAASC,gBAAgBC,iBAAiB;AAE1C,eAAsBC,sBAAsB,EAAEC,QAAQC,OAAM,GAAqB;AAC/E,QAAMC,cAAcD,OAAOE,SAASC;AACpC,MAAIC,eAAeH,WAAAA,GAAc;AAE/B,UAAM,EACJI,kBAAkBC,oBAAoBC,UAAUC,QAAQC,QAAQC,UAAUC,UAAUC,YAAYC,UAAUC,WAAU,IAClHb;AACJ,UAAMc,mBAA8C;MAClDT;MAAoBI;MAAUF;MAAQI;MAAYE;IACpD;AAEA,UAAME,uBAAuB,IAAIC,aAAmD;MAAE,GAAGF;MAAkBG,YAAY;IAAsB,CAAA;AAC7I,UAAMC,SAAS,MAAMC,SAASC,OAA6D;MACzFC,KAAKN;MACLO,UAAU;QAAEC,SAAS;QAAMC,YAAY;MAAK;IAC9C,CAAA;AACAC,IAAAA,UAAS,MAAMP,OAAOQ,MAAK,GAAI,MAAM,sCAAA;AACrC,WAAOR;EACT,OAAO;AACLpB,YAAQ6B,KAAK,6EAAA;AACb,WAAO,IAAIC,UAAAA;EACb;AACF;AAtBsB/B;;;ACTtB,SAASgC,YAAAA,iBAAgB;AAKzB,SAASC,+BAA+BC,kCAAkC;AAC1E,SAASC,SAAAA,cAAa;AAEtB,IAAMC,YAAY,IAAIC,OAAAA;AAGtB,IAAMC,0BAAmD,CAAC;AAE1D,eAAsBC,kBAAkB,EAAEC,QAAQC,WAAU,GAA4D;AACtH,SAAO,MAAML,UAAUM,aAAa,YAAA;AAClC,UAAMC,WAAWL,0BAA0BE,OAAOI,OAAO,IAAIH,UAAAA;AAC7D,QAAIE,SAAU,QAAOA;AACrB,UAAME,MAAMC,UAAS,MAAMN,OAAOO,QAAQN,UAAAA,GAAa,MAAM,qBAAqBA,UAAAA,EAAY;AAC9F,UAAMO,iBAAiBF,UAASG,2BAA2BJ,GAAAA,GAAM,MAAM,qBAAqBJ,UAAAA,gCAA0C;AAEtI,QAAIS,YAAYZ,wBAAwBE,OAAOI,OAAO;AACtD,QAAIM,cAAcC,QAAW;AAC3BD,kBAAY,CAAC;AACbZ,8BAAwBE,OAAOI,OAAO,IAAIM;IAC5C;AAEAA,cAAUT,UAAAA,IAAcO;AACxB,WAAOA;EACT,CAAA;AACF;AAhBsBT;AAkBtB,eAAsBa,2BAA2B,EAAEZ,QAAQC,WAAU,GAGpE;AACC,SAAOK,UACLO,8BAA8B,MAAMd,kBAAkB;IAAEC;IAAQC;EAAW,CAAA,CAAA,GAC3E,MAAM,qBAAqBA,UAAAA,mCAA6C;AAE5E;AARsBW;;;AChCtB,SAASE,cAAcC,YAAAA,kBAAgB;AACvC,SACEC,wBAAwBC,sBAAsBC,sBAAsBC,sBAC/D;AAMP,SACEC,2BACAC,yBAAyBC,yBAAyBC,mBAAmBC,sBACrEC,wBACK;;;ACbP,SACEC,YAAAA,WAAUC,SAASC,aAAAA,YAAWC,aACzB;AAGA,IAAMC,gBAAgB,wBAAC,EAAEC,OAAM,MAAqB;AACzD,SAAOC,WAAUD,OAAOE,IAAIC,OAAO;AACrC,GAF6B;AAItB,IAAMC,aAAa,wBAAC,EAAEJ,OAAM,MAAqB;AACtD,QAAMG,UAAUE,UAASL,OAAOE,IAAIC,SAAS,MAAM,4BAAA;AACnD,MAAIG,MAAMH,SAAS;IAAEI,QAAQ;EAAK,CAAA,GAAI;AACpC,UAAMC,MAAMC,QAAQN,OAAAA;AACpB,UAAMO,SAASC,OAAOC,SAASJ,KAAK,EAAA;AACpC,WAAOE;EACT,OAAO;AACL,UAAMA,SAASC,OAAOC,SAAST,SAAS,EAAA;AACxC,WAAOO;EACT;AACF,GAV0B;;;ACT1B,SAASG,YAAAA,iBAAgB;;;ACAzB,SAASC,YAAAA,WAAUC,aAAAA,kBAAiB;AAGpC,SAASC,sBAAsB;AAI/B,IAAIC;AAEG,IAAMC,qBAAqB,wBAACC,YAAAA;AACjC,MAAIF,SAAU,QAAOA;AACrB,QAAMG,iBAAiBC,wBAAwBF,OAAAA;AAC/CF,aAAWK,QAAQC,QAAQ,IAAIC,eAAeJ,eAAe,CAAA,GAAIA,eAAe,CAAA,CAAE,CAAA;AAClF,SAAOH;AACT,GALkC;AAO3B,IAAMQ,uBAAuB,wBAACN,YAAAA;AACnC,QAAM,EAAEO,OAAM,IAAKP;AACnB,SAAOQ,cAAcR,OAAAA,KAChBS,WAAUF,OAAOG,KAAKC,QAAQC,SAAAA,KAC9BH,WAAUF,OAAOG,KAAKC,QAAQE,aAAAA;AACrC,GALoC;AAO7B,IAAMX,0BAA0B,wBAACF,YAAAA;AACtC,QAAM,EAAEO,OAAM,IAAKP;AACnB,QAAMY,YAAYE,UAASP,OAAOG,KAAKC,QAAQC,WAAW,MAAM,qCAAA;AAChE,QAAMC,gBAAgBC,UAASP,OAAOG,KAAKC,QAAQE,eAAe,MAAM,yCAAA;AACxE,SAAO;IAACE,WAAWf,OAAAA;IAAUY;IAAWC;;AAC1C,GALuC;;;ACvBvC,SAASG,YAAAA,WAAUC,aAAAA,kBAAiB;AAEpC,SAASC,uBAAuB;AAIzB,IAAMC,sBAAsB,wBAACC,YAAAA;AAClC,QAAMC,iBAAiBC,yBAAyBF,OAAAA;AAChD,SAAOG,QAAQC,QAAQ,IAAIC,gBAAAA,GAAmBJ,cAAAA,CAAAA;AAChD,GAHmC;AAK5B,IAAMK,wBAAwB,wBAACN,YAAAA;AACpC,QAAM,EAAEO,OAAM,IAAKP;AACnB,SAAOQ,cAAcR,OAAAA,KAChBS,WAAUF,OAAOG,IAAIC,SAASC,GAAAA;AACrC,GAJqC;AAM9B,IAAMV,2BAA2B,wBAACF,YAAAA;AACvC,QAAM,EAAEO,OAAM,IAAKP;AACnB,QAAMa,aAAaC,UAASP,OAAOG,IAAIC,SAASC,KAAK,MAAM,gCAAA;AAC3D,SAAO;IAACC;IAAYE,WAAWf,OAAAA;;AACjC,GAJwC;;;AFVxC,IAAIgB;AAEG,IAAMC,kBAAkB,8BAAOC,YAAAA;AACpC,MAAIF,SAAU,QAAOA;AACrB,MAAIG,qBAAqBD,OAAAA,GAAU;AACjCF,eAAWI,mBAAmBF,OAAAA;EAChC,WAAWG,sBAAsBH,OAAAA,GAAU;AACzCF,eAAWM,oBAAoBJ,OAAAA;EACjC;AACA,SAAOK,UAAS,MAAMP,UAAU,MAAM,uBAAA;AACxC,GAR+B;AAUxB,IAAMQ,oBAAoB,wBAACN,YAAAA;AAChC,SAAOC,qBAAqBD,OAAAA,KAAYG,sBAAsBH,OAAAA;AAChE,GAFiC;;;AFFjC,eAAsBO,4BAA4BC,SAAuC;AACvF,QAAMC,UAAUD,QAAQC;AACxB,QAAM,EAAEC,QAAQC,OAAM,IAAKF;AAC3B,MAAIG,kBAAkBH,OAAAA,GAAU;AAC9B,UAAMI,UAAUC,WAASL,QAAQE,OAAOI,MAAMC,IAAe,MAAM,sDAAA;AACnE,UAAMC,YAAW,MAAMC,gBAAgBT,OAAAA;AACvC,UAAMU,UAAUC,aAAaP,SAAS,IAAA;AAGtCL,YAAQa,SAASC,qBAAqBC,QACpCD,qBAAqBE,cACrB;MAAEL;MAASF,UAAAA;IAAS,CAAA,CAAA;AAItBT,YAAQa,SAASI,eAAeF,QAC9BE,eAAeD,cACf;MAAEL;MAASF,UAAAA;IAAS,CAAA,CAAA;AAItBT,YAAQa,SAASK,qBAAqBH,QACpCG,qBAAqBF,cACrB;MAAEL;MAASF,UAAAA;IAAS,CAAA,CAAA;AAItBT,YAAQa,SAASM,uBAAuBJ,QACtCI,uBAAuBH,cACvB;MAAEL;MAASF,UAAAA;IAAS,CAAA,CAAA;AAGtBT,YAAQa,SAASO,qBAAqBL,QACpCK,qBAAqBJ,cACrB;MAAEK,aAAaZ;IAAS,CAAA,CAAA;EAE5B,OAAO;AACLP,YAAQoB,KAAK,+EAAA;AACb,UAAMC,YAAwB,CAAA;AAC9B,UAAMlB,UAAUC,WAASH,OAAOI,MAAMC,IAAI,MAAM,+DAAA;AAGhDR,YAAQa,SAASW,wBAAwBT,QACvCS,wBAAwBR,cACxB;MAAEO;IAAU,CAAA,CAAA;AAIdvB,YAAQa,SAASY,kBAAkBV,QACjCU,kBAAkBT,cAClB;MAAEO;IAAU,CAAA,CAAA;AAIdvB,YAAQa,SAASa,wBAAwBX,QACvCW,wBAAwBV,cACxB,CAAC,CAAA,CAAA;AAIHhB,YAAQa,SAASc,0BAA0BZ,QACzCY,0BAA0BX,cAC1B;MACEX;MAASuB,qBAAqB;MAAIC,qBAAqBC;MAAkBC,iBAAiBD;IAC5F,CAAA,CAAA;AAGF9B,YAAQa,SAASO,qBAAqBL,QACpCK,qBAAqBJ,cACrB,CAAC,CAAA,CAAA;EAEL;AACA,SAAOhB;AACT;AAzEsBD;;;AKjBtB,SAASiC,YAAAA,kBAAgB;AAEzB,SAASC,2BAA2B;AAEpC,SAASC,eAAe;AAMxB,SACEC,WAAWC,qBACXC,4BACK;AAEP,eAAsBC,kCACpBC,WACAC,QACAC,SAAwB;AAExB,QAAMC,oBAAoBF,OAAOG,MAAMC;AACvC,QAAMC,eAAe,MAAMC,oBAAoBP,SAAAA;AAC/C,MAAIG,qBAAqBG,gBAAgBA,aAAaF,UAAUD,mBAAmB;AACjF,UAAM,IAAIK,MAAM,wBAAwBL,iBAAAA,2CAA4DG,aAAaF,KAAK,GAAG;EAC3H;AAEA,MAAIK,kBAAuCN;AAG3C,MAAI,CAACG,cAAc;AACjBG,sBAAkBA,oBAAoB,MAAMC,QAAQC,OAAM,GAAIC;AAE9D,UAAMR,QAAQ,MAAMS,oBAClBX,SACAO,iBACAK,UAAU,wBAA+B,GACzCb,OAAOG,MAAMW,wBAAwBb,QAAQU,OAAO;AAEtD,UAAMI,WAAWZ,MAAMa,QAAQC,CAAAA,UAASC,qBAAqBD,KAAAA,CAAAA;AAC7D,UAAMlB,UAAUoB,OAAOJ,QAAAA;EACzB;AACA,QAAMK,OAAOf,gBAAgBgB,WAAS,MAAMf,oBAAoBP,SAAAA,GAAY,MAAM,oCAAA;AAClF,QAAMuB,UAAUD,WAASb,iBAAiB,MAAM,kCAAA;AAChD,SAAO;IAACY;IAAME;;AAChB;AA7BsBxB;;;ACftB,SAASyB,0BAA0B;AAInC,eAAeC,4BAA4BC,QAAc;AACvD,QAAMC,mBAAmB;IACvB,GAAGD,OAAOE,QAAQC;IAClBC,YAAY;EACd;AACA,SAAO,MAAMC,mBAAmBC,OAAO;IAAEL;EAAiB,CAAA;AAC5D;AANeF;AAQf,eAAsBQ,uBAAuBP,QAAc;AACzD,QAAMQ,qBAAqB,MAAMT,4BAA4BC,MAAAA;AAC7D,SAAOQ;AACT;AAHsBD;;;ACZtB,SAASE,YAAAA,kBAAgB;AAEzB,SAASC,2BAA2B;;;ACDpC,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,mBAAAA,wBAAuB;AAChC,SAASC,sBAAAA,qBAAoBC,mCAAmC;AAChE,SAASC,qBAAqB;AAC9B,SAASC,qBAAqB;AAC9B,SAASC,gBAAgBC,kCAAkC;AAC3D,SAASC,4BAA4B;AAErC,SAASC,sBAAsB;AAE/B,SAASC,kBAAAA,uBAAsB;AAOxB,IAAMC,aAAa,8BACxB,EAAEC,QAAQC,OAAM,MAAqB;AAErC,QAAM,EAAEC,aAAY,IAAKD,OAAOE,WAAWC,QAAQ,CAAC;AACpD,QAAM,EAAEC,MAAMC,WAAW,YAAYC,OAAa,KAAI,IAAKN,OAAOE,WAAWK,SAASC,UAAU,CAAC;AACjG,QAAM,EAAEC,eAAeC,cAAa,IAAK,MAAMC,cAAc;IAC3DC,YAAY;MACVC,aAAa;MACbC,gBAAgB;IAClB;IACAb;IACAc,eAAe;MAAEV;MAAUC;IAAK;EAClC,CAAA;AAEA,MAAIU,WAAUjB,MAAAA,EAASkB,gBAAeC,gBAAgBnB;AACtD,QAAMoB,iBAAiBpB,SAAS,IAAIqB,2BAA2BrB,MAAAA,IAAUsB;AAEzE,QAAMC,UAAU,IAAIC,qBAAAA;AAEpB,QAAMC,cAAcxB,OAAOyB,SAASC;AACpC,MAAIC,gBAAeH,WAAAA,GAAc;AAE/B,UAAM,EACJI,kBAAkBC,oBAAoBC,UAAUC,QAAQC,QAAQC,UAAUC,UAAUC,YAAYC,UAAUC,WAAU,IAClHb;AACJ,UAAMc,mBAA8C;MAClDT;MAAoBI;MAAUF;MAAQI;MAAYE;IACpD;AACA,UAAME,SAAyC;MAC7C7B;MAAe4B;MAAkBnB;MAAgBV;IACnD;AAEAa,YAAQkB,SAASC,oBAAmBC,QAAQH,MAAAA,GAASlB,QAAW,IAAA;AAChEC,YAAQkB,SAASG,4BAA4BD,QAAQH,MAAAA,GAAS;MAAE,2CAA2C;IAAU,GAAG,KAAA;EAC1H;AAEAjB,UAAQkB,SAASI,iBAAgBF,QAAQ;IACvCjC;IAAeC;IAAeS;EAChC,CAAA,CAAA;AACAG,UAAQkB,SAASK,eAAeH,QAAQ;IACtCjC;IAAeC;IAAeS;EAChC,CAAA,CAAA;AACAG,UAAQkB,SAASM,cAAcJ,QAAQ;IACrCjC;IAAeC;IAAeS;EAChC,CAAA,CAAA;AACA,SAAOG;AACT,GA9C0B;;;AClB1B,SAASyB,uBAAuB;;;ACAhC;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,IACP;AAAA,MACE,QAAU;AAAA,QACR,aAAe;AAAA,QACf,MAAQ;AAAA,QACR,QAAU;AAAA,MACZ;AAAA,MACA,SAAW;AAAA,QACT,SAAW,CAAC;AAAA,QACZ,QAAU,CAAC;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAU;AACZ;;;ACTO,IAAMC,eAAeC;;;ACJrB,IAAMC,wBAAwB,CAAA;;;ACHrC;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,IACP;AAAA,MACE,QAAU;AAAA,QACR,aAAe;AAAA,QACf,MAAQ;AAAA,QACR,QAAU;AAAA,MACZ;AAAA,MACA,SAAW;AAAA,QACT,SAAW;AAAA,UACT;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,MAAQ;AAAA,cACR,UAAY;AAAA,gBACV,SAAW;AAAA,gBACX,YAAc;AAAA,cAChB;AAAA,cACA,kBAAoB;AAAA,gBAClB,YAAc;AAAA,cAChB;AAAA,cACA,QAAU;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAAA,QACA,QAAU;AAAA,UACR;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,MAAQ;AAAA,cACR,gBAAkB;AAAA,gBAChB;AAAA,gBACA;AAAA,cACF;AAAA,cACA,UAAY;AAAA,gBACV,SAAW;AAAA,gBACX,YAAc;AAAA,cAChB;AAAA,cACA,iBAAmB;AAAA,cACnB,QAAU;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAU;AACZ;;;AChDA;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,IACP;AAAA,MACE,QAAU;AAAA,QACR,aAAe;AAAA,QACf,MAAQ;AAAA,QACR,QAAU;AAAA,MACZ;AAAA,MACA,SAAW;AAAA,QACT,SAAW,CAAC;AAAA,QACZ,QAAU;AAAA,UACR;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,MAAQ;AAAA,cACR,UAAY;AAAA,gBACV,SAAW;AAAA,gBACX,YAAc;AAAA,cAChB;AAAA,cACA,QAAU;AAAA,gBACR,2CAA2C;AAAA,gBAC3C,6BAA6B;AAAA,cAC/B;AAAA,cACA,kBAAoB;AAAA,gBAClB,YAAc;AAAA,cAChB;AAAA,cACA,QAAU;AAAA,YACZ;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,MAAQ;AAAA,cACR,UAAY;AAAA,gBACV,SAAW;AAAA,gBACX,YAAc;AAAA,cAChB;AAAA,cACA,QAAU;AAAA,gBACR,2CAA2C;AAAA,gBAC3C,6BAA6B;AAAA,cAC/B;AAAA,cACA,kBAAoB;AAAA,gBAClB,YAAc;AAAA,cAChB;AAAA,cACA,QAAU;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAU;AACZ;;;AC7CA,IAAMC,oBAAoBC;AAI1B,IAAMC,sBAAsBC;AAIrB,IAAMC,uBAAyC;KACjDJ,kBAAkBK;KAClBH,oBAAoBG;;;;ANLlB,IAAMC,WAAW,8BACtBC,SACAC,WAAAA;AAEA,QAAMC,UAAU,MAAMC,WAAWH,OAAAA;AACjC,QAAMI,UAAU,IAAIC,gBAAgBC,cAAcL,QAAQC,SAASK,sBAAsBC,qBAAAA;AACzF,QAAM,CAACC,MAAM,GAAGC,UAAAA,IAAc,MAAMN,QAAQO,UAAS;AACrD,MAAID,YAAYE,SAAS,GAAG;AAC1B,UAAMC,QAAQC,IAAIJ,WAAWK,IAAIC,CAAAA,cAAaP,KAAKQ,SAASD,SAAAA,CAAAA,CAAAA;AAC5D,UAAMH,QAAQC,IAAIJ,WAAWK,IAAIC,CAAAA,cAAaP,KAAKS,OAAOF,UAAUG,SAAS,IAAA,CAAA,CAAA;EAC/E;AACA,SAAOV;AACT,GAZwB;;;AFLxB,eAAeW,+BAA+BC,MAAkB;AAC9D,SAAOC,oBACL,MAAMD,KAAKE,QAAQ,iBAAA,GACnB;IAAEC,UAAU;EAAK,CAAA;AAErB;AALeJ;AAOf,eAAeK,+BAA+BJ,MAAkB;AAC9D,SAAOK,WAASJ,oBACd,MAAMD,KAAKE,QAAQ,iBAAA,GACnB;IAAEC,UAAU;EAAK,CAAA,CAAA;AAErB;AALeC;AAOf,eAAeE,qCAAqCN,MAAkB;AACpE,SAAOC,oBACL,MAAMD,KAAKE,QAAQ,+BAAA,GACnB;IAAEC,UAAU;EAAK,CAAA;AAErB;AALeG;AAOf,eAAeC,+BAA+BP,MAAkB;AAC9D,SAAOC,oBACL,MAAMD,KAAKE,QAAQ,yBAAA,GACnB;IAAEC,UAAU;EAAK,CAAA;AAErB;AALeI;AAOf,eAAsBC,eACpBC,SACAC,QACAC,cAA2B;AAE3B,QAAMX,OAAqBW,gBAAgB,MAAMC,SAASH,SAASC,MAAAA;AACnEL,EAAAA,WAAS,MAAML,KAAKa,MAAK,GAAI,MAAM,sBAAA;AACnC,QAAMC,yBAAyB,MAAMf,+BAA+BC,IAAAA;AACpE,QAAMe,yBAAyB,MAAMX,+BAA+BJ,IAAAA;AACpE,QAAMgB,+BAA+B,MAAMV,qCAAqCN,IAAAA;AAChF,QAAMiB,yBAAyB,MAAMV,+BAA+BP,IAAAA;AACpE,SAAO;IACLA;IAAMc;IAAwBC;IAAwBC;IAA8BC;EACtF;AACF;AAdsBT;;;ASnCtB,SAASU,4BAA4B;AAE9B,SAASC,mBAAmB,EAAEC,OAAM,GAAsB;AAC/D,QAAMC,iBAAiB,IAAIC,qBAAqBF,MAAAA;AAChDC,iBAAeE,mBAAmB;IAAEC,IAAI;EAAU,GAAG,MAAA;AACnDJ,WAAOK,IAAI,uBAAA;EACb,CAAA;AACAJ,iBAAeE,mBAAmB;IAAEC,IAAI;EAAQ,GAAG,MAAA;AACjDJ,WAAOM,MAAM,0CAAA;AAEbC,YAAQC,KAAK,CAAA;EACf,CAAA;AACA,SAAOP;AACT;AAXgBF;;;ACHhB,SAASU,gBAAAA,qBAAoD;AAE7D,SAASC,YAAAA,kBAAgB;AACzB,SAASC,YAAAA,iBAAgB;AAKzB,SAASC,kBAAAA,iBAAgBC,aAAAA,kBAAiB;AAE1C,eAAsBC,uBAAuB,EAAEC,QAAQC,OAAM,GAAqB;AAChF,QAAMC,cAAcD,OAAOE,SAASC;AACpC,MAAIC,gBAAeH,WAAAA,GAAc;AAE/B,UAAM,EACJI,kBAAkBC,oBAAoBC,UAAUC,QAAQC,QAAQC,UAAUC,UAAUC,YAAYC,UAAUC,WAAU,IAClHb;AACJ,UAAMc,mBAA8C;MAClDT;MAAoBI;MAAUF;MAAQI;MAAYE;IACpD;AAEA,UAAME,wBAAwB,IAAIC,cAAoD;MAAE,GAAGF;MAAkBG,YAAY;IAAuB,CAAA;AAChJ,UAAMC,SAAS,MAAMC,UAASC,OAA8D;MAC1FC,KAAKN;MACLO,UAAU;QAAEC,SAAS;QAAMC,YAAY;MAAK;IAC9C,CAAA;AACAC,IAAAA,WAAS,MAAMP,OAAOQ,MAAK,GAAI,MAAM,sCAAA;AACrC,WAAOR;EACT,OAAO;AACLpB,YAAQ6B,KAAK,8EAAA;AACb,WAAO,IAAIC,WAAAA;EACb;AACF;AAtBsB/B;;;ACVtB,SAASgC,aAAAA,kBAAiB;AAC1B,SAASC,YAAY;AACrB,SAASC,YAAAA,iBAAgB;AAKzB,eAAsBC,gBAAgBC,SAA6BC,UAAiB;AAClF,QAAMC,OAAO,MAAMC,KAAAA;AACnB,QAAMC,aAAaC,WAAUJ,QAAAA,IACzBA,WACA,MAAMK,oBAAoBN,SAASE,IAAAA;AACvC,SAAO,MAAMK,UAASC,WAAWJ,UAAAA;AACnC;AANsBL;;;AvBiBtB,eAAsBU,0BACpBC,SACAC,QAAuC;AAEvC,QAAM,EAAEC,QAAQC,OAAM,IAAKH;AAC3B,QAAMI,UAAU,MAAMC,iBAAiBL,OAAAA;AACvC,QAAMM,UAAU,IAAIC,wBAAuB;IAAE,GAAGP;IAASM,SAASL;EAAO,CAAA;AACzE,QAAMO,gBAAgBC,WAAUN,OAAOK,iBAAiBJ,QAAQM,SAAS,IAAA;AACzER,UAAQS,KAAK,wBAAwBH,aAAAA,EAAe;AACpD,MAAIA,kBAAkBJ,QAAQM,SAAS;AACrCR,YAAQU,KAAK,qDAAqDR,QAAQM,OAAO,EAAE;EACrF;AAEA,QAAMG,YAAYV,OAAOW,OAAOC,KAAKC;AAErC,MAAIC,UAASJ,SAAAA,GAAY;AACvB,UAAMK,mBAAqC,wBAACC,YAA0B,IAAIC,kBAAiBP,WAAWM,OAAAA,GAA3D;AAE3Cb,YAAQe,aAAa;MACnBC,sBAAqBC,QAA8BD,sBAAqBE,cAAc;QAAEC,WAAW,MAAMP,iBAAiBQ,wBAAAA;MAAyB,CAAA;MACnJC,sBAAqBJ,QAA8BI,sBAAqBH,cAAc;QAAEC,WAAW,MAAMP,iBAAiBU,wBAAAA;MAAyB,CAAA;MACnJC,6BAA4BN,QAC1BM,6BAA4BL,cAC5B;QAAEC,WAAW,MAAMP,iBAAiBY,+BAAAA;MAAgC,CAAA;MAEtEC,2BAA0BR,QACxBQ,2BAA0BP,cAC1B;QAAEC,WAAW,MAAMP,iBAAiBc,6BAAAA;MAA8B,CAAA;MAEpEC,oBAAmBV,QAA4BU,oBAAmBT,cAAc;QAAEC,WAAW,MAAMP,iBAAiBgB,sBAAAA;MAAuB,CAAA;KAC5I;EACH;AAEA5B,UAAQe,aAAa;IACnBc,wBAAwBZ,QAAiCY,wBAAwBX,cAAc,CAAC,CAAA;IAChGY,kBAAkBb,QAChBa,kBAAkBZ,cAClB;MAAEpB;MAASI;IAAc,CAAA;GACzB;AACJF,UAAQ+B,OAAM;AACd,SAAO/B;AACT;AAzCsBP;;;AwBtBtB,SACEuC,0BAAAA,yBACAC,0BAAAA,+BACK;AAIA,SAASC,kCACdC,SACAC,QAAuC;AAEvC,QAAMC,UAAU,IAAIC,wBAAuB;IAAE,GAAGH;IAASE,SAASD;EAAO,CAAA;AAEzEC,UAAQE,aAAa;IACnBC,wBAAuBC,QAAgCD,wBAAuBE,cAAc,CAAC,CAAA;GAC9F;AACDL,UAAQM,OAAM;AACd,SAAON;AACT;AAXgBH;;;ACPhB,SAASU,0BAAAA,+BAA8B;AAEhC,SAASC,2BACdC,SACAC,QAAuC;AAEvC,QAAMC,UAAU,IAAIC,wBAAuB;IAAE,GAAGH;IAASE,SAASD;EAAO,CAAA;AAEzEC,UAAQE,aAAa,CAAA,CACpB;AACDF,UAAQG,OAAM;AACd,SAAOH;AACT;AAVgBH;;;ACJhB,SAASO,iBAAAA,sBAAqB;AAG9B,eAAsBC,2BAA2BC,QAAgBC,aAAqBC,gBAAsB;AAC1G,QAAM,EAAEC,aAAY,IAAKH,OAAOI,WAAWC,QAAQ,CAAC;AACpD,QAAM,EAAEC,MAAMC,WAAW,YAAYC,OAAa,KAAI,IAAKR,OAAOI,WAAWK,SAASC,UAAU,CAAC;AACjG,SAAO,MAAMC,eAAc;IACzBC,YAAY;MACVX;MACAC;IACF;IACAC;IACAU,eAAe;MAAEN;MAAUC;IAAK;EAClC,CAAA;AACF;AAXsBT;;;ACGtB,eAAsBe,gCACpBC,QACAC,QACAC,aACAC,gBAAsB;AAEtB,QAAMC,aAAa,CAAC;AACpB,QAAMC,SAAS,CAAC;AAChB,QAAMC,kBAAkB,MAAMC,2BAA2BP,QAAQE,aAAaC,cAAAA;AAC9E,QAAMK,iBAAiBC,mBAAmB;IAAER;EAAO,CAAA;AACnD,SAAO;IACL,GAAGK;IACHN;IACAI;IACAC;IACAJ;IACAO;EACF;AACF;AAlBsBT;;;ACNtB,SAASW,YAAAA,kBAAgB;AAEzB,SACEC,0BAAAA,yBACAC,4BACAC,mBACAC,0BACAC,0BACAC,qBACAC,qBACAC,2BACAC,2BACAC,uBACK;AAOP,eAAsBC,uBACpBC,SACAC,QAAuC;AAEvC,QAAMC,qBAAqBC,WAAS,MAAMC,sBAAsBJ,OAAAA,GAAU,MAAM,qCAAA;AAChF,QAAMK,sBAAsBF,WAAS,MAAMG,uBAAuBN,OAAAA,GAAU,MAAM,sCAAA;AAGlF,QAAMO,SAAS,MAAMC,gBAAgBR,OAAAA;AAErC,QAAM,EACJS,wBAAwBC,wBAAwBC,8BAA8BC,uBAAsB,IAClG,MAAMC,eACRb,SACAO,MAAAA;AAGF,QAAMO,kCAAkCL,wBAAwBT,QAAQe,QAAQR,MAAAA;AAEhF,QAAMS,UAAU,IAAIC,wBAAuB;IAAE,GAAGjB;IAASgB,SAASf;EAAO,CAAA;AACzEe,UAAQE,aAAa;IACnBC,oBAAoBC,QAA6BD,oBAAoBE,cAAc;MAAEV;MAA8BC;IAAuB,CAAA;IAC1IU,oBAAoBF,QAA6BE,oBAAoBD,cAAc;MAAEV;MAA8BC;IAAuB,CAAA;IAC1IW,2BAA2BH,QAAoCG,2BAA2BF,cAAc;MAAEnB;MAAoBG;IAAoB,CAAA;IAClJmB,yBAAyBJ,QAAkCI,yBAAyBH,cAAc;MAAEI,oBAAoBf;IAAuB,CAAA;IAC/IgB,kBAAkBN,QAA2BM,kBAAkBL,cAAc;MAAEI,oBAAoBf;IAAuB,CAAA;IAC1HiB,0BAA0BP,QAAmCO,0BAA0BN,cAAc;MAAEO,eAAe;MAAQC,cAAc;IAAO,CAAA;IACnJC,0BAA0BV,QAAmCU,0BAA0BT,cAAc,CAAC,CAAA;IACtGU,gBAAgBX,QAAyBW,gBAAgBV,cAAc;MAAEI,oBAAoBf;IAAuB,CAAA;IACpHc,yBAAyBJ,QAAkCI,yBAAyBH,cAAc;MAAEI,oBAAoBf;IAAuB,CAAA;IAC/IsB,yBAAyBZ,QAAkCY,yBAAyBX,cAAc;MAAEI,oBAAoBhB;IAAuB,CAAA;GAEhJ;AACDO,UAAQiB,OAAM;AACd,SAAOjB;AACT;AAnCsBjB;;;ACpBtB,SAASmC,iBAAiB;AAC1B,SACEC,kBAAAA,uBAGK;;;ACLP,SAASC,YAAAA,iBAAgB;AACzB,SAASC,uBAAuBC,kCAAkC;AAElE,SACEC,0BAAAA,yBACAC,+BAAAA,8BACAC,0BACAC,mCACAC,iCACAC,+BACAC,8BACAC,yBACAC,kBACAC,wBAAAA,6BACK;;;ACdP,SAASC,YAAAA,kBAAgB;AAEzB,SACEC,0BAAAA,yBACAC,8BAAAA,6BACAC,qBAAAA,oBACAC,4BAAAA,2BACAC,uBAAAA,sBACAC,uBAAAA,sBACAC,6BAAAA,4BACAC,mBAAAA,wBACK;AAOP,eAAsBC,wBACpBC,SACAC,QAAuC;AAEvC,QAAMC,qBAAqBC,WAAS,MAAMC,sBAAsBJ,OAAAA,GAAU,MAAM,qCAAA;AAChF,QAAMK,sBAAsBF,WAAS,MAAMG,uBAAuBN,OAAAA,GAAU,MAAM,sCAAA;AAGlF,QAAMO,SAAS,MAAMC,gBAAgBR,OAAAA;AAErC,QAAM,EACJS,wBAAwBC,8BAA8BC,uBAAsB,IAC1E,MAAMC,eACRZ,SACAO,MAAAA;AAGF,QAAMM,UAAU,IAAIC,wBAAuB;IAAE,GAAGd;IAASa,SAASZ;EAAO,CAAA;AACzEY,UAAQE,aAAa;IACnBC,qBAAoBC,QAA6BD,qBAAoBE,cAAc;MAAER;MAA8BC;IAAuB,CAAA;IAC1IQ,qBAAoBF,QAA6BE,qBAAoBD,cAAc;MAAER;MAA8BC;IAAuB,CAAA;IAC1IS,4BAA2BH,QAAoCG,4BAA2BF,cAAc;MAAEhB;MAAoBG;IAAoB,CAAA;IAClJgB,0BAAyBJ,QAAkCI,0BAAyBH,cAAc;MAAEI,oBAAoBb;IAAuB,CAAA;IAC/Ic,mBAAkBN,QAA2BM,mBAAkBL,cAAc;MAAEI,oBAAoBb;IAAuB,CAAA;IAC1He,2BAA0BP,QAAmCO,2BAA0BN,cAAc;MAAEO,eAAe;MAAQC,cAAc;IAAO,CAAA;IACnJC,iBAAgBV,QAAyBU,iBAAgBT,cAAc;MAAEI,oBAAoBb;IAAuB,CAAA;GACrH;AACDI,UAAQe,OAAM;AACd,SAAOf;AACT;AA7BsBd;;;ADEtB,eAAsB8B,sBACpBC,SAA2B;AAE3B,QAAM,EAAEC,OAAM,IAAKD;AACnB,MAAIE,UAA0C,IAAIC,wBAAuBH,OAAAA;AAEzEE,UAAQE,aAAa;IACnBC,yBAAyBC,QAAkCD,yBAAyBE,cAAc,CAAC,CAAA;IACnGC,sBAAqBF,QAA8BE,sBAAqBD,cAAc,CAAC,CAAA;IACvFE,iBAAiBH,QAA0BG,iBAAiBF,cAAc,CAAC,CAAA;IAC3EG,wBAAwBJ,QAAiCI,wBAAwBH,cAAc,CAAC,CAAA;IAChGI,kCAAkCL,QAA2CK,kCAAkCJ,cAAc,CAAC,CAAA;IAC9HK,gCAAgCN,QAAyCM,gCAAgCL,cAAc,CAAC,CAAA;IACxHM,8BAA8BP,QAAuCO,8BAA8BN,cAAc,CAAC,CAAA;IAClHO,6BAA6BR,QAAsCQ,6BAA6BP,cAAc,CAAC,CAAA;IAC/GQ,6BAA4BT,QAC1BS,6BAA4BR,cAC5B;MAAES,OAAOC;MAA4BC,UAAUC;IAAsB,CAAA;GAExE;AACDjB,YAAU,MAAMkB,4BAA4BlB,OAAAA;AAC5CA,YAAU,OAAOmB,UAASpB,OAAOqB,OAAOC,KAAKC,GAAAA,IACzCC,wBAAwBzB,SAASE,OAAAA,IACjCwB,uBAAuB1B,SAASE,OAAAA;AACpCA,UAAQyB,OAAM;AACd,SAAOzB;AACT;AA1BsBH;;;ADHtB,eAAsB6B,mBACpBC,SACA,EAAEC,QAAQ,GAAGC,OAAAA,GAAgB;AAE7B,QAAMC,SAAyD;IAAEC,OAAO,MAAMC,sBAAsB;MAAE,GAAGL;MAASE,QAAQ;QAAE,GAAGA;QAAQI,MAAM;MAAQ;IAAE,CAAA;EAAG;AAC1J,aAAWC,eAAeN,QAAQ;AAChC,YAAQM,YAAYD,MAAI;MACtB,KAAK,YAAY;AACfH,eAAOI,YAAYD,IAAI,IAAI,MAAME,0BAC/B;UAAE,GAAGR;UAASE,QAAQO,kBAAkBC,MAAMC,UAAUT,QAAQK,WAAAA,CAAAA;QAAc,GAC9EJ,OAAOC,KAAK;AAEd;MACF;MACA,KAAK,OAAO;AACVD,eAAOI,YAAYD,IAAI,IAAI,MAAMM,qBAAqB;UACpD,GAAGZ;UACHE,QAAQW,aAAaH,MAAMC,UAAUT,QAAQK,WAAAA,CAAAA;QAC/C,GAAGJ,OAAOC,KAAK;AAEf;MACF;MACA,KAAK,WAAW;AACdD,eAAOI,YAAYD,IAAI,IAAI,MAAMQ,yBAAyB;UAAE,GAAGd;UAASE,QAAQa,iBAAiBL,MAAMC,UAAUT,QAAQK,WAAAA,CAAAA;QAAc,GAAGJ,OAAOC,KAAK;AACtJ;MACF;MACA,KAAK,aAAa;AAChBD,eAAOI,YAAYD,IAAI,IAAI,MAAMU,2BAA2B;UAAE,GAAGhB;UAASE,QAAQe,gBAAeP,MAAMC,UAAUT,QAAQK,WAAAA,CAAAA;QAAc,GAAGJ,OAAOC,KAAK;AACtJ;MACF;MACA,KAAK,UAAU;AACbD,eAAOI,YAAYD,IAAI,IAAI,MAAMY,wBAAwB;UAAE,GAAGlB;UAASE,QAAQiB,gBAAgBT,MAAMC,UAAUT,QAAQK,WAAAA,CAAAA;QAAc,GAAGJ,OAAOC,KAAK;AAEpJ;MACF;MACA,KAAK,oBAAoB;AACvBD,eAAOI,YAAYD,IAAI,IAAI,MAAMc,kCAC/B;UACE,GAAGpB;UACHE,QAAQmB,0BAA0BX,MAAMC,UAAUT,QAAQK,WAAAA,CAAAA;QAC5D,GACAJ,OAAOC,KAAK;AAEd;MACF;IAEF;EACF;AACA,SAAOD;AACT;AAjDsBJ;;;AGjBtB,SAASuB,aAAAA,kBAAiB;AAGnB,SAASC,YAAY,EAAEC,QAAQ,GAAGC,WAAAA,GAAoB;AAC3D,SAAO;IACL,GAAGA;IACHD,QAAQA,OAAOE,IAAI,CAACC,UAAAA;AAClB,aAAOC,WAAUH,YAAYE,KAAAA;IAC/B,CAAA;EACF;AACF;AAPgBJ;;;ACHhB,SAASM,aAAAA,YAAWC,cAAc;AAClC,SAASC,iBAAiB;AAC1B,SAASC,mBAAmB;AAK5B,IAAMC,aAAa;AAKnB,IAAMC,gBAAgB;AAMtB,eAAsBC,eAAeC,cAAuB;AAC1D,QAAMC,WAAWC,YACfL,YACA;IACEM,OAAO;;IAEPH;EACF,CAAA;AAEF,QAAMI,UAAU,MAAMH,SAASI,OAAM,IAAKC;AAC1C,MAAIC,WAAUH,MAAAA,KAAW,CAACI,OAAOJ,MAAAA,GAAS;AACxC,UAAMK,UAAUL,OAAON,aAAAA;AACvB,QAAIS,WAAUE,OAAAA,KAAY,OAAOA,YAAY,UAAU;AACrD,aAAOC,UAAUC,MAAK,EAAGC,MAAMH,OAAAA;IACjC;EACF;AACA,SAAOC,UAAUE,MAAM,CAAC,CAAA;AAC1B;AAjBsBb;;;ACjBtB,SAASc,sBAAsB;AAG/B,SAASC,+BAA+B;AAExC,eAAsBC,oCAAoCC,WAA4CC,iBAAkCC,OAAoB;AAC1J,QAAMC,6BAA6BC,wBACjCH,gBAAgBI,SAChB,YACAH,MAAM,CAAA,GACNA,MAAM,CAAA,CAAE;AAEV,SAAO,MAAMI,eACXN,WACA,CAAA,GACA;IAACG;KACD;IAACF;GAAgB;AAErB;AAbsBF;;;ACLtB,OAAOQ,UAAU;AAGjB,SAASC,aAAAA,kBAAiB;AAG1B,IAAMC,aAAa,wBAACC,KAAqBC,QAAyBC,cAAAA;AAChE,QAAMC,aAAaF,WAAW,YAAY,MAAMC;AAChDF,MAAII,UAAUD,YAAY;IAAE,gBAAgB;EAAmB,CAAA;AAC/DH,MAAIK,IAAIC,KAAKC,UAAU;IAAEN;EAAO,CAAA,CAAA;AAClC,GAJmB;AAMnB,IAAMO,WAAW,wBAACR,QAAAA;AAChBA,MAAII,UAAU,KAAK;IAAE,gBAAgB;EAAmB,CAAA;AACxDJ,MAAIK,IAAIC,KAAKC,UAAU;IAAEN,QAAQ;EAAY,CAAA,CAAA;AAC/C,GAHiB;AAcjB,IAAMQ,qBAAqB,wBAACC,SAA6BC,MAAcC,kBAAAA;AACrE,QAAM,EAAEC,OAAM,IAAKH;AACnB,QAAMI,SAASC,KAAKC,aAAa,CAACC,KAAsBjB,QAAAA;AACtD,UAAMkB,MAAMD,IAAIC,OAAO;AAEvB,UAAMjB,SAASW,cAAcO,gBAAe;AAE5C,YAAQD,KAAAA;MACN,KAAK,YAAY;AACfnB,mBAAWC,KAAKC,QAAQ,GAAA;AACxB;MACF;MACA,KAAK,UAAU;AACbF,mBAAWC,KAAKC,QAAQ,GAAA;AACxB;MACF;MACA,KAAK,WAAW;AACdF,mBAAWC,KAAKC,QAAQ,GAAA;AACxB;MACF;MACA,SAAS;AACPO,iBAASR,GAAAA;MACX;IACF;EACF,CAAA;AAEAc,SAAOM,OAAOT,MAAM,MAAA;AAClBE,YAAQQ,IAAI,6CAA6CV,IAAAA,EAAM;AAC/DE,YAAQQ,IAAI,aAAA;AACZR,YAAQQ,IAAI,WAAA;AACZR,YAAQQ,IAAI,YAAA;EACd,CAAA;AACA,SAAOP;AACT,GAjC2B;AAmCpB,SAASQ,oBAAoBZ,SAA6BE,eAAmC;AAClG,QAAM,EAAEW,OAAM,IAAKb;AACnB,QAAM,EAAEc,gBAAe,IAAKD;AAC5B,SAAOE,WAAUD,eAAAA,IAAmBf,mBAAmBC,SAASc,iBAAiBZ,aAAAA,IAAiBc;AACpG;AAJgBJ;;;ACxDT,IAAMK,cAAN,MAAMA;EAJb,OAIaA;;;EACXC;EAEA,YAAYA,UAA2B;AACrC,SAAKA,WAAWA;EAClB;EAEA,MAAMC,QAAuB;AAC3B,UAAMC,QAAQC,QAAO;AAErBC,YAAQC,IAAI,qBAAA;EACd;EAEA,MAAMC,OAAsB;AAC1B,UAAMJ,QAAQC,QAAO;AAErBC,YAAQC,IAAI,qBAAA;EACd;AACF;;;ACtBO,IAAME,yBAAN,MAAMA;EAAb,OAAaA;;;EACDC;EACV,YAAYC,UAAmC;AAC7C,SAAKD,YAAYC;EACnB;EAEAC,WAAcC,mBAA0C;AACtD,WAAO,KAAKH,UAAUG,iBAAAA;EACxB;AACF;;;ACFO,IAAMC,kBAAkB;EAC7BC,WAAW;EACXC,WAAW;AACb;;;ACXA,SAASC,mBAAmBC,aAAAA,kBAAiB;;;;;;;;AAQtC,IAAMC,eAAN,cAA2BC,kBAAAA;SAAAA;;;EACtBC,SAA8B,CAAA;EAC9BC,kBAAyC;EACzCC,UAAU;;;;;EAMpB,MAAMC,cAAcC,OAAwB;AAC1C,QAAI,KAAKF,SAAS;AAEhB,YAAME,MAAMC,MAAK;IACnB;AACA,SAAKL,OAAOM,KAAKF,KAAAA;EACnB;;;;EAKA,MAAeG,eAAe;AAC5B,UAAM,MAAMA,aAAAA;AACZ,QAAI,KAAKL,SAAS;AAChB,WAAKM,QAAQC,KAAK,iCAAA;AAClB;IACF;AAEA,SAAKD,QAAQE,IAAI,4BAAA;AACjB,SAAKR,UAAU;AACf,eAAWE,SAAS,KAAKJ,QAAQ;AAC/B,YAAMI,MAAMC,MAAK;IACnB;AAEA,SAAKJ,kBAAkBU,YAAY,MAAA;IAEnC,GAAG,UAAA;EACL;;;;EAKA,MAAeC,cAAc;AAC3B,UAAM,MAAMA,YAAAA;AACZ,QAAI,CAAC,KAAKV,SAAS;AACjB,WAAKM,QAAQE,IAAI,iCAAA;AACjB;IACF;AAEA,SAAKF,QAAQE,IAAI,4BAAA;AACjB,eAAWN,SAAS,KAAKJ,QAAQ;AAC/B,YAAMI,MAAMS,KAAI;IAClB;AACA,SAAKX,UAAU;AACf,QAAI,KAAKD,gBAAiBa,eAAc,KAAKb,eAAe;AAC5D,SAAKO,QAAQE,IAAI,2BAAA;EACnB;AACF;;;;","names":["creatable","processPendingBlocks","ActorV3","BlockViewerMoniker","FinalizationRunnerMoniker","MempoolViewerMoniker","ValidatorActor","ActorV3","_blockViewer","_finalizationRunner","_lastValidatedBlock","_lastValidatedBlockHash","_mempoolViewer","blockViewer","finalizationRunner","mempoolViewer","createHandler","startHandler","locator","getInstance","BlockViewerMoniker","FinalizationRunnerMoniker","MempoolViewerMoniker","registerTimer","spanAsync","console","log","processPendingBlocks","context","logger","timeBudgetLimit","timeBudget","startupSpanAsync","Mutex","Mutex","rm","Path","LmdbArchivist","LmdbArchivistConfigSchema","getStoreDirectory","DEFAULT_STORAGE_ROOT","Path","join","process","cwd","getLocalPersistentArchivist","name","dbName","storeName","storageRoot","kind","root","LmdbArchivist","create","account","config","clearStoreOnStart","location","getStoreDirectory","schema","LmdbArchivistConfigSchema","mutex","Mutex","singleton","initLocalChainFinalizedArchivist","config","runExclusive","root","storage","getLocalPersistentArchivist","mutex","Mutex","singleton","initChainFinalizedArchivist","context","runExclusive","timeBudget","logger","local","startupSpanAsync","initLocalChainFinalizedArchivist","timeBudget","startupSpanAsync","Mutex","Mutex","mutex","Mutex","singleton","initLocalPendingBlocksArchivist","config","runExclusive","root","storage","getLocalPersistentArchivist","mutex","Mutex","singleton","initPendingBlocksArchivist","context","runExclusive","timeBudget","logger","local","startupSpanAsync","initLocalPendingBlocksArchivist","timeBudget","startupSpanAsync","Mutex","MemoryArchivist","MemoryArchivistConfigSchema","Mutex","mutex","Mutex","singleton","initLocalRejectedTransactionsArchivist","runExclusive","MemoryArchivist","create","account","config","schema","MemoryArchivistConfigSchema","max","name","mutex","Mutex","singleton","initRejectedTransactionsArchivist","logger","runExclusive","timeBudget","local","startupSpanAsync","initLocalRejectedTransactionsArchivist","assertEx","timeBudget","startupSpanAsync","Mutex","assertEx","Mutex","mutex","Mutex","singleton","initLocalStakeIntentStateArchivist","config","runExclusive","root","storage","getLocalPersistentArchivist","assertEx","Error","mutex","Mutex","singleton","initStakeIntentStateArchivist","context","runExclusive","timeBudget","logger","local","startupSpanAsync","initLocalStakeIntentStateArchivist","assertEx","buildTelemetryConfig","config","serviceName","serviceVersion","defaultMetricsScrapePort","otlpEndpoint","telemetry","otel","path","endpoint","port","metrics","scrape","telemetryConfig","attributes","metricsConfig","zodAsFactory","zodIsFactory","zodToFactory","BaseConfigContextZod","HostActorConfigZod","globalRegistry","z","ApiConfigZod","extend","object","initRewardsCache","union","number","string","boolean","transform","v","default","register","description","title","type","shape","isApiConfig","asApiConfig","toApiConfig","ApiConfigContext","config","isApiConfigContext","asApiConfigContext","toApiConfigContext","AddressZod","HexZod","toAddress","toHex","zodAsFactory","zodIsFactory","zodToFactory","AttoXL1ConvertFactor","BaseConfigContextZod","HostActorConfigZod","XL1","globalRegistry","z","DEFAULT_FIXED_FEE","xl1","DEFAULT_HARDHAT_BRIDGE_CONTRACT","DEFAULT_HARDHAT_CHAIN_ID","DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY","DEFAULT_HARDHAT_TOKEN_CONTRACT","DEFAULT_MAX_BRIDGE_AMOUNT","DEFAULT_MIN_BRIDGE_AMOUNT","BasisPointsZod","coerce","number","int","nonnegative","max","BridgeConfigZod","extend","escrowAddress","optional","register","description","title","type","feesAddress","feeFixed","default","feeRateBasisPoints","maxBridgeAmount","minBridgeAmount","redisHost","string","redisPort","positive","remoteBridgeContractAddress","remoteChainId","remoteTokenAddress","remoteChainWalletPrivateKey","xl1ChainId","xl1TokenAddress","BridgeSettingsZod","pick","required","isBridgeConfig","asBridgeConfig","toBridgeConfig","BridgeConfigContext","config","isBridgeConfigContext","asBridgeConfigContext","toBridgeConfigContext","zodAsFactory","zodIsFactory","zodToFactory","BaseConfigContextZod","HostActorConfigZod","globalRegistry","z","MempoolConfigZod","extend","enabled","union","string","boolean","default","transform","val","ctx","normalized","toLowerCase","trim","includes","addIssue","code","expected","message","NEVER","register","description","title","type","isMempoolConfig","asMempoolConfig","toMempoolConfig","MempoolConfigContext","config","isMempoolConfigContext","asMempoolConfigContext","toMempoolConfigContext","AddressZod","asAddress","zodAsFactory","zodIsFactory","zodToFactory","ActorConfigZod","BaseConfigContextZod","globalRegistry","z","ProducerConfigZod","extend","object","allowlist","preprocess","val","split","map","s","trim","array","optional","register","description","title","type","disableIntentRedeclaration","boolean","heartbeatInterval","coerce","number","default","minStake","rewardAddress","string","shape","isProducerConfig","asProducerConfig","toProducerConfig","ProducerConfigContext","config","isProducerConfigContext","asProducerConfigContext","toProducerConfigContext","zodAsFactory","zodIsFactory","zodToFactory","BaseConfigContextZod","HostActorConfigZod","RewardRedemptionConfigZod","extend","isRewardRedemptionConfig","asRewardRedemptionConfig","toRewardRedemptionConfig","RewardRedemptionConfigContext","config","isRewardRedemptionConfigContext","asRewardRedemptionConfigContext","toRewardRedemptionConfigContext","ProviderFactoryLocator","SimpleXyoConnectionRunner","SimpleXyoGateway","SimpleXyoRunner","apiLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","registerMany","SimpleXyoRunner","factory","dependencies","SimpleXyoConnectionRunner","SimpleXyoGateway","freeze","isDefined","isString","HDWallet","AccountBalanceViewerRpcSchemas","ADDRESS_INDEX","BlockViewerRpcSchemas","FinalizationViewerRpcSchemas","generateXyoBaseWalletFromPhrase","HttpRpcTransport","JsonRpcAccountBalanceViewer","JsonRpcBlockViewer","JsonRpcFinalizationViewer","JsonRpcMempoolRunner","JsonRpcMempoolViewer","MempoolRunnerRpcSchemas","MempoolViewerRpcSchemas","ProviderFactoryLocator","SimpleXyoConnectionRunner","SimpleXyoGatewayRunner","SimpleXyoRunner","SimpleXyoSigner","bridgeLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","config","mnemonic","walletPhrase","isDefined","HDWallet","generateMnemonic","wallet","generateXyoBaseWalletFromPhrase","signerAccount","derivePath","ADDRESS_INDEX","XYO","remoteUrl","remote","rpc","url","isString","transportFactory","schemas","HttpRpcTransport","registerMany","JsonRpcMempoolViewer","factory","dependencies","transport","MempoolViewerRpcSchemas","JsonRpcMempoolRunner","MempoolRunnerRpcSchemas","JsonRpcAccountBalanceViewer","AccountBalanceViewerRpcSchemas","JsonRpcFinalizationViewer","FinalizationViewerRpcSchemas","JsonRpcBlockViewer","BlockViewerRpcSchemas","SimpleXyoSigner","account","SimpleXyoRunner","SimpleXyoConnectionRunner","SimpleXyoGatewayRunner","freeze","ProviderFactoryLocator","SimpleBlockValidationViewer","mempoolLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","registerMany","SimpleBlockValidationViewer","factory","dependencies","freeze","asAddress","isString","SimpleBlockRunner","AccountBalanceViewerRpcSchemas","BlockViewerRpcSchemas","FinalizationViewerRpcSchemas","HttpRpcTransport","JsonRpcAccountBalanceViewer","JsonRpcBlockViewer","JsonRpcFinalizationViewer","JsonRpcMempoolRunner","JsonRpcMempoolViewer","MempoolRunnerRpcSchemas","MempoolViewerRpcSchemas","ProviderFactoryLocator","SimpleBlockRewardViewer","isDefined","isUndefined","HDWallet","ADDRESS_INDEX","generateXyoBaseWalletFromPhrase","actorAccountSingletons","initActorAccount","config","logger","actorName","name","isDefined","walletPhrase","mnemonic","isUndefined","warn","randomMnemonic","HDWallet","generateMnemonic","wallet","generateXyoBaseWalletFromPhrase","account","derivePath","ADDRESS_INDEX","XYO","assertEx","isString","HDWallet","initActorSeedPhrase","context","bios","logger","config","walletKind","name","storedSeedPhrase","seedPhraseStore","get","debug","mnemonic","isString","warn","set","seedPhrase","HDWallet","generateMnemonic","log","assertEx","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","assertEx","asAttachableArchivistInstance","asAttachableModuleInstance","Mutex","initMutex","Mutex","bridgedModuleDictionary","initBridgedModule","bridge","moduleName","runExclusive","existing","address","mod","assertEx","resolve","moduleInstance","asAttachableModuleInstance","moduleMap","undefined","initBridgedArchivistModule","asAttachableArchivistInstance","asEthAddress","assertEx","EvmChainContractViewer","EvmStakeEventsViewer","EvmStakeTotalsViewer","EvmStakeViewer","SimpleChainContractViewer","SimpleStakeEventsViewer","SimpleStakeTotalsViewer","SimpleStakeViewer","SimpleTimeSyncViewer","XYO_ZERO_ADDRESS","assertEx","hexFrom","isDefined","isHex","canUseChainId","config","isDefined","evm","chainId","getChainId","assertEx","isHex","prefix","hex","hexFrom","parsed","Number","parseInt","assertEx","assertEx","isDefined","InfuraProvider","instance","initInfuraProvider","context","providerConfig","getInfuraProviderConfig","Promise","resolve","InfuraProvider","canUseInfuraProvider","config","canUseChainId","isDefined","evm","infura","projectId","projectSecret","assertEx","getChainId","assertEx","isDefined","JsonRpcProvider","initJsonRpcProvider","context","providerConfig","getJsonRpcProviderConfig","Promise","resolve","JsonRpcProvider","canUseJsonRpcProvider","config","canUseChainId","isDefined","evm","jsonRpc","url","jsonRpcUrl","assertEx","getChainId","provider","initEvmProvider","context","canUseInfuraProvider","initInfuraProvider","canUseJsonRpcProvider","initJsonRpcProvider","assertEx","canUseEvmProvider","initEvmProvidersIfAvailable","locator","context","logger","config","canUseEvmProvider","chainId","assertEx","chain","id","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","createBootstrapHead","asAttoXL1","genesisRewardAddress","payloads","flatMap","block","flattenHydratedBlock","insert","head","assertEx","chainId","MongoDBArchivistV2","initMongoFinalizedArchivist","config","payloadSdkConfig","storage","mongo","collection","MongoDBArchivistV2","create","initFinalizedArchivist","finalizedArchivist","assertEx","asArchivistInstance","isDefined","MemoryArchivist","MongoDBArchivistV2","MongoDBArchivistV2Deletable","ViewArchivist","initTelemetry","AbstractModule","LoggerModuleStatusReporter","ModuleFactoryLocator","MemorySentinel","hasMongoConfig","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","MemoryArchivist","MemorySentinel","ViewArchivist","ManifestWrapper","NodeManifest","node","PrivateChildManifests","ChainNodeManifest","Chain","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","initServerNode","context","wallet","providedNode","loadNode","start","writableChainArchivist","readonlyChainArchivist","pendingTransactionsArchivist","pendingBlocksArchivist","RuntimeStatusMonitor","initStatusReporter","logger","statusReporter","RuntimeStatusMonitor","onGlobalTransition","to","log","error","process","exit","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","isDefined","boot","HDWallet","initActorWallet","context","mnemonic","bios","boot","seedPhrase","isDefined","initActorSeedPhrase","HDWallet","fromPhrase","producerLocatorFromConfig","context","parent","logger","config","account","initActorAccount","locator","ProviderFactoryLocator","rewardAddress","asAddress","address","info","warn","remoteUrl","remote","rpc","url","isString","transportFactory","schemas","HttpRpcTransport","registerMany","JsonRpcMempoolViewer","factory","dependencies","transport","MempoolViewerRpcSchemas","JsonRpcMempoolRunner","MempoolRunnerRpcSchemas","JsonRpcAccountBalanceViewer","AccountBalanceViewerRpcSchemas","JsonRpcFinalizationViewer","FinalizationViewerRpcSchemas","JsonRpcBlockViewer","BlockViewerRpcSchemas","SimpleBlockRewardViewer","SimpleBlockRunner","freeze","ProviderFactoryLocator","SimpleXyoGatewayRunner","rewardRedemptionLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","registerMany","SimpleXyoGatewayRunner","factory","dependencies","freeze","ProviderFactoryLocator","validatorLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","registerMany","freeze","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","ProviderFactoryLocator","SimpleAccountBalanceViewer","SimpleBlockViewer","SimpleFinalizationRunner","SimpleFinalizationViewer","SimpleMempoolRunner","SimpleMempoolViewer","SimpleWindowedBlockViewer","SimpleXyoConnectionViewer","SimpleXyoViewer","localLocatorFromConfig","context","parent","balancesSummaryMap","assertEx","initBalanceSummaryMap","transfersSummaryMap","initTransferSummaryMap","wallet","initActorWallet","writableChainArchivist","readonlyChainArchivist","pendingTransactionsArchivist","pendingBlocksArchivist","initServerNode","initFinalizationArchivistIfNeeded","config","locator","ProviderFactoryLocator","registerMany","SimpleMempoolViewer","factory","dependencies","SimpleMempoolRunner","SimpleAccountBalanceViewer","SimpleFinalizationViewer","finalizedArchivist","SimpleBlockViewer","SimpleWindowedBlockViewer","maxWindowSize","syncInterval","SimpleXyoConnectionViewer","SimpleXyoViewer","SimpleFinalizationRunner","freeze","deepMerge","ActorConfigZod","isString","validateHydratedBlock","validateHydratedBlockState","ProviderFactoryLocator","SimpleBlockValidationViewer","SimpleNetworkStakeViewer","SimpleStepRewardsByPositionViewer","SimpleStepRewardsByStakerViewer","SimpleStepRewardsByStepViewer","SimpleStepRewardsTotalViewer","SimpleStepRewardsViewer","SimpleStepViewer","SimpleTimeSyncViewer","assertEx","ProviderFactoryLocator","SimpleAccountBalanceViewer","SimpleBlockViewer","SimpleFinalizationViewer","SimpleMempoolRunner","SimpleMempoolViewer","SimpleWindowedBlockViewer","SimpleXyoViewer","remoteLocatorFromConfig","context","parent","balancesSummaryMap","assertEx","initBalanceSummaryMap","transfersSummaryMap","initTransferSummaryMap","wallet","initActorWallet","readonlyChainArchivist","pendingTransactionsArchivist","pendingBlocksArchivist","initServerNode","locator","ProviderFactoryLocator","registerMany","SimpleMempoolViewer","factory","dependencies","SimpleMempoolRunner","SimpleAccountBalanceViewer","SimpleFinalizationViewer","finalizedArchivist","SimpleBlockViewer","SimpleWindowedBlockViewer","maxWindowSize","syncInterval","SimpleXyoViewer","freeze","rootLocatorFromConfig","context","config","locator","ProviderFactoryLocator","registerMany","SimpleNetworkStakeViewer","factory","dependencies","SimpleTimeSyncViewer","SimpleStepViewer","SimpleStepRewardsViewer","SimpleStepRewardsByPositionViewer","SimpleStepRewardsByStakerViewer","SimpleStepRewardsByStepViewer","SimpleStepRewardsTotalViewer","SimpleBlockValidationViewer","state","validateHydratedBlockState","protocol","validateHydratedBlock","initEvmProvidersIfAvailable","isString","remote","rpc","url","remoteLocatorFromConfig","localLocatorFromConfig","freeze","locatorsFromConfig","context","actors","config","result","_root","rootLocatorFromConfig","name","actorConfig","producerLocatorFromConfig","ProducerConfigZod","parse","deepMerge","apiLocatorFromConfig","ApiConfigZod","mempoolLocatorFromConfig","MempoolConfigZod","validatorLocatorFromConfig","ActorConfigZod","bridgeLocatorFromConfig","BridgeConfigZod","rewardRedemptionLocatorFromConfig","RewardRedemptionConfigZod","deepMerge","mergeConfig","actors","baseConfig","map","actor","deepMerge","isDefined","isNull","ConfigZod","cosmiconfig","configName","configSection","tryParseConfig","searchPlaces","explorer","cosmiconfig","cache","result","search","config","isDefined","isNull","section","ConfigZod","loose","parse","buildNextBlock","createDeclarationIntent","createProducerChainStakeIntentBlock","prevBlock","producerAccount","range","producerDeclarationPayload","createDeclarationIntent","address","buildNextBlock","http","isDefined","sendStatus","res","status","errorCode","statusCode","writeHead","end","JSON","stringify","notFound","createHealthServer","context","port","statusMonitor","logger","server","http","createServer","req","url","getGlobalStatus","listen","log","initHealthEndpoints","config","healthCheckPort","isDefined","undefined","GenericHost","services","start","Promise","resolve","console","log","stop","DefaultServiceProvider","_services","services","getService","serviceIdentifier","ServiceLifetime","Singleton","Transient","AbstractCreatable","creatable","Orchestrator","AbstractCreatable","actors","keepAliveHandle","running","registerActor","actor","start","push","startHandler","logger","warn","log","setInterval","stopHandler","stop","clearInterval"]}
1
+ {"version":3,"sources":["../../src/actor/ValidatorActor.ts","../../src/archivists/ChainFinalized/archivist.ts","../../src/archivists/ChainFinalized/local.ts","../../src/archivists/lib/localPersistentArchivist.ts","../../src/archivists/PendingBlocks/archivist.ts","../../src/archivists/PendingBlocks/local.ts","../../src/archivists/RejectedTransactions/archivist.ts","../../src/archivists/RejectedTransactions/local.ts","../../src/archivists/StakeIntentState/archivist.ts","../../src/archivists/StakeIntentState/local.ts","../../src/buildTelemetryConfig.ts","../../src/config/actors/Api.ts","../../src/config/actors/Bridge.ts","../../src/config/actors/Mempool.ts","../../src/config/actors/Producer.ts","../../src/config/actors/RewardRedemption.ts","../../src/config/locators/actors/apiLocatorFromConfig.ts","../../src/config/locators/actors/bridgeLocatorFromConfig.ts","../../src/config/locators/actors/mempoolLocatorFromConfig.ts","../../src/config/locators/actors/producerLocatorFromConfig.ts","../../src/init/initActorAccount.ts","../../src/init/initActorSeedPhrase.ts","../../src/init/initBalanceSummaryMap.ts","../../src/init/initBridgedModule.ts","../../src/init/initEvmProvidersIfAvailable.ts","../../src/evm/initChainId.ts","../../src/evm/initEvmProvider.ts","../../src/evm/initInfuraProvider.ts","../../src/evm/initJsonRpcProvider.ts","../../src/init/initFinalizationArchivistIfNeeded.ts","../../src/init/initFinalizedArchivist.ts","../../src/init/initServerNode.ts","../../src/manifest/getLocator.ts","../../src/manifest/loadNode.ts","../../src/manifest/node.json","../../src/manifest/nodeManifest.ts","../../src/manifest/private/index.ts","../../src/manifest/public/Chain.json","../../src/manifest/public/Pending.json","../../src/manifest/public/index.ts","../../src/init/initStatusReporter.ts","../../src/init/initTransferSummaryMap.ts","../../src/init/initWallet.ts","../../src/config/locators/actors/rewardRedemptionLocatorFromConfig.ts","../../src/config/locators/actors/validatorLocatorFromConfig.ts","../../src/config/locators/telemetryContextFromConfig.ts","../../src/config/locators/contextFromConfigWithoutLocator.ts","../../src/config/locators/localLocatorFromConfig.ts","../../src/config/locators/locatorsFromConfig.ts","../../src/config/locators/rootLocatorFromConfig.ts","../../src/config/locators/remoteLocatorFromConfig.ts","../../src/config/mergeConfig.ts","../../src/config/tryParseConfig.ts","../../src/createDeclarationIntentBlock.ts","../../src/health/initHealthEndpoints.ts","../../src/host/implementation/DefaultHost.ts","../../src/host/implementation/DefaultServiceProvider.ts","../../src/host/model/ServiceCollection.ts","../../src/orchestrator/Orchestrator.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 ActorConfig,\n ActorParamsV3, BlockBoundWitness, BlockViewer,\n FinalizationRunner,\n MempoolViewer,\n} from '@xyo-network/xl1-sdk'\nimport {\n ActorV3, BlockViewerMoniker, FinalizationRunnerMoniker,\n MempoolViewerMoniker,\n} from '@xyo-network/xl1-sdk'\n\nexport type ValidatorActorParams = ActorParamsV3<\n {\n config: ActorConfig\n }>\n\n@creatable()\nexport class ValidatorActor extends ActorV3<ValidatorActorParams> {\n protected _blockViewer!: BlockViewer\n protected _finalizationRunner!: FinalizationRunner\n protected _lastValidatedBlock: BlockBoundWitness | undefined\n protected _lastValidatedBlockHash: Hash | undefined\n protected _mempoolViewer!: MempoolViewer\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 override async createHandler() {\n await super.startHandler()\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 }\n\n override async startHandler(): Promise<void> {\n await super.startHandler()\n this.registerTimer('ValidatorActor', async () => {\n await this.spanAsync('processPendingBlocks', async () => {\n console.log('ValidatorActor: Processing pending blocks...')\n await processPendingBlocks({\n context: this.context,\n logger: this.logger,\n mempoolViewer: this.mempoolViewer,\n blockViewer: this.blockViewer,\n finalizationRunner: this.finalizationRunner,\n })\n }, { ...this.context, timeBudgetLimit: 1500 })\n }, 2000, 1500/* 500 */)\n }\n}\n","import { timeBudget } from '@xylabs/sdk-js'\nimport { startupSpanAsync } from '@xyo-network/chain-utils'\nimport type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport { Mutex } from 'async-mutex'\n\nimport type { ChainInitializableParams } from '../../ChainInitializableParams.ts'\nimport { initLocalChainFinalizedArchivist } from './local.ts'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initChainFinalizedArchivist(context: ChainInitializableParams) {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n return await timeBudget('initChainFinalizedArchivist', context.logger, async () => {\n const local = await startupSpanAsync('ChainFinalizedArchivist:initLocal', () => initLocalChainFinalizedArchivist(context))\n singleton = local\n return singleton\n }, 2000, true)\n })\n}\n","import type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport type { CreatableProviderContext } from '@xyo-network/xl1-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport { getLocalPersistentArchivist } from '../lib/index.ts'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initLocalChainFinalizedArchivist({ config }: CreatableProviderContext): Promise<ArchivistInstance> {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n const { root } = config.storage\n singleton = await getLocalPersistentArchivist('local-finalized-chain', 'chain', 'finalized', root)\n return singleton\n })\n}\n","import { rm } from 'node:fs/promises'\nimport Path from 'node:path'\n\nimport { LmdbArchivist, LmdbArchivistConfigSchema } from '@xyo-network/archivist-lmdb'\nimport { getStoreDirectory, type StoreKind } from '@xyo-network/chain-protocol'\nimport type { ArchivistInstance } from '@xyo-network/sdk-js'\n\nconst DEFAULT_STORAGE_ROOT = Path.join(process.cwd(), '.store')\n\n/**\n * Returns a local persistent archivist\n * @param name The name of the archivist\n * @param dbName The name of the database\n * @param storeName The name of the store\n * @param storageRoot The root directory for storage (default is '.store' in the current working directory)\n * @param kind The kind of the archivist\n * @returns an archivist instance\n */\nexport const getLocalPersistentArchivist = (\n name: string,\n dbName: string,\n storeName: string,\n storageRoot?: string,\n kind: StoreKind = 'lmdb',\n): Promise<ArchivistInstance> => {\n switch (kind) {\n case 'lmdb': {\n const root = storageRoot ?? DEFAULT_STORAGE_ROOT\n return LmdbArchivist.create({\n account: 'random',\n config: {\n name,\n clearStoreOnStart: false,\n dbName,\n location: getStoreDirectory(dbName, root, 'lmdb'),\n schema: LmdbArchivistConfigSchema,\n storeName,\n },\n })\n }\n }\n}\n\n/**\n * Deletes a local persistent archivist\n * @param dbName The name of the database\n * @param storageRoot The root directory for storage (default is '.store' in the current working directory)\n * @param kind The kind of the archivist\n * @returns A promise that resolves when the archivist is deleted\n */\nexport const deleteLocalPersistentArchivist = async (dbName: string, storageRoot?: string, kind: StoreKind = 'lmdb'): Promise<void> => {\n await Promise.resolve()\n console.warn(`Deleting local persistent archivist for ${dbName} of kind ${kind}.`)\n let location = ''\n switch (kind) {\n case 'lmdb': {\n const root = storageRoot ?? DEFAULT_STORAGE_ROOT\n location = getStoreDirectory(dbName, root, 'lmdb')\n break\n }\n }\n await rm(location, { recursive: true, force: true })\n}\n","import { timeBudget } from '@xylabs/sdk-js'\nimport { startupSpanAsync } from '@xyo-network/chain-utils'\nimport type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport { initLocalPendingBlocksArchivist } from './local.ts'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initPendingBlocksArchivist(context: BaseConfigContext) {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n return await timeBudget('initPendingBlocksArchivist', context.logger, async () => {\n const local = await startupSpanAsync('PendingBlocksArchivist:initLocal', () => initLocalPendingBlocksArchivist(context))\n singleton = local\n return singleton\n }, 2000, true)\n })\n}\n","import type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport { getLocalPersistentArchivist } from '../lib/index.ts'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initLocalPendingBlocksArchivist({ config }: BaseConfigContext): Promise<ArchivistInstance> {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n const { root } = config.storage\n singleton = await getLocalPersistentArchivist('local-pending-blocks', 'chain', 'pending_block_bundles', root)\n return singleton\n })\n}\n","import { timeBudget } from '@xylabs/sdk-js'\nimport { startupSpanAsync } from '@xyo-network/chain-utils'\nimport type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport type { BaseContext } from '@xyo-network/xl1-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport { initLocalRejectedTransactionsArchivist } from './local.ts'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initRejectedTransactionsArchivist({ logger }: BaseContext) {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n return await timeBudget('initRejectedTransactionsArchivist', logger, async () => {\n const local = await startupSpanAsync('RejectedTransactionsArchivist:initLocal', () => initLocalRejectedTransactionsArchivist())\n singleton = local\n return singleton\n }, 2000, true)\n })\n}\n","import type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport { MemoryArchivist, MemoryArchivistConfigSchema } from '@xyo-network/sdk-js'\nimport { Mutex } from 'async-mutex'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initLocalRejectedTransactionsArchivist(): Promise<ArchivistInstance> {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n singleton = await MemoryArchivist.create({\n account: 'random',\n config: {\n schema: MemoryArchivistConfigSchema, max: 1000, name: 'localRejectedTransactions',\n },\n })\n return singleton\n })\n}\n","import { assertEx, timeBudget } from '@xylabs/sdk-js'\nimport { startupSpanAsync } from '@xyo-network/chain-utils'\nimport type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport { initLocalStakeIntentStateArchivist } from './local.ts'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initStakeIntentStateArchivist(context: BaseConfigContext): Promise<ArchivistInstance> {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n return await timeBudget('initStakeIntentStateArchivist', context.logger, async () => {\n const local = await startupSpanAsync('StakeIntentStateArchivist:initLocal', () => initLocalStakeIntentStateArchivist(context))\n singleton = local\n return assertEx(singleton, () => 'StakeIntentStateArchivist is undefined')\n }, 2000, true)\n })\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport type { ArchivistInstance } from '@xyo-network/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport { getLocalPersistentArchivist } from '../lib/index.ts'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initLocalStakeIntentStateArchivist({ config }: BaseConfigContext): Promise<ArchivistInstance> {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n const { root } = config.storage\n singleton = await getLocalPersistentArchivist('local-stake-intent-state', 'stakeIntent', 'state', root)\n return assertEx(singleton, () => new Error('Failed to initialize stake intent state archivist'))\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 { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nexport const ApiConfigZod = HostActorConfigZod.extend(z.object({\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 const ApiConfigContext = BaseConfigContextZod.extend({ config: ApiConfigZod })\n\nexport type ApiConfigContext = z.infer<typeof ApiConfigContext>\n\nexport const isApiConfigContext = zodIsFactory(ApiConfigContext)\nexport const asApiConfigContext = zodAsFactory(ApiConfigContext, 'asApiConfigContext')\nexport const toApiConfigContext = zodToFactory(ApiConfigContext, 'toApiConfigContext')\n","import {\n AddressZod, HexZod, toAddress, toHex,\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport type { ChainId } from '@xyo-network/xl1-sdk'\nimport {\n AttoXL1ConvertFactor, BaseConfigContextZod, HostActorConfigZod, XL1,\n} from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nconst DEFAULT_FIXED_FEE = toHex(XL1(1n) * AttoXL1ConvertFactor.xl1)\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(100_000n) * AttoXL1ConvertFactor.xl1)\nconst DEFAULT_MIN_BRIDGE_AMOUNT = toHex(XL1(10n) * 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 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(500).register(globalRegistry, {\n default: 500,\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 const BridgeConfigContext = BaseConfigContextZod.extend({ config: BridgeConfigZod })\n\nexport type BridgeConfigContext = z.infer<typeof BridgeConfigContext>\n\nexport const isBridgeConfigContext = zodIsFactory(BridgeConfigContext)\nexport const asBridgeConfigContext = zodAsFactory(BridgeConfigContext, 'asBridgeConfigContext')\nexport const toBridgeConfigContext = zodToFactory(BridgeConfigContext, 'toBridgeConfigContext')\n","import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nexport const MempoolConfigZod = HostActorConfigZod.extend({\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})\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 const MempoolConfigContext = BaseConfigContextZod.extend({ config: MempoolConfigZod })\n\nexport type MempoolConfigContext = z.infer<typeof MempoolConfigContext>\n\nexport const isMempoolConfigContext = zodIsFactory(MempoolConfigContext)\nexport const asMempoolConfigContext = zodAsFactory(MempoolConfigContext, 'asMempoolConfigContext')\nexport const toMempoolConfigContext = zodToFactory(MempoolConfigContext, 'toMempoolConfigContext')\n","import {\n AddressZod, asAddress,\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport { ActorConfigZod, BaseConfigContextZod } from '@xyo-network/xl1-sdk'\nimport { globalRegistry, z } from 'zod'\n\nexport const ProducerConfigZod = ActorConfigZod.extend(z.object({\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 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 const ProducerConfigContext = BaseConfigContextZod.extend({ config: ProducerConfigZod })\n\nexport type ProducerConfigContext = z.infer<typeof ProducerConfigContext>\n\nexport const isProducerConfigContext = zodIsFactory(ProducerConfigContext)\nexport const asProducerConfigContext = zodAsFactory(ProducerConfigContext, 'asProducerConfigContext')\nexport const toProducerConfigContext = zodToFactory(ProducerConfigContext, 'toProducerConfigContext')\n","import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'\nimport type { z } from 'zod'\n\nexport const RewardRedemptionConfigZod = HostActorConfigZod.extend({})\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 const RewardRedemptionConfigContext = BaseConfigContextZod.extend({ config: RewardRedemptionConfigZod })\n\nexport type RewardRedemptionConfigContext = z.infer<typeof RewardRedemptionConfigContext>\n\nexport const isRewardRedemptionConfigContext = zodIsFactory(RewardRedemptionConfigContext)\nexport const asRewardRedemptionConfigContext = zodAsFactory(RewardRedemptionConfigContext, 'asRewardRedemptionConfigContext')\nexport const toRewardRedemptionConfigContext = zodToFactory(RewardRedemptionConfigContext, 'toRewardRedemptionConfigContext')\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 '../../actors/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, isString } from '@xylabs/sdk-js'\nimport { HDWallet } from '@xyo-network/sdk-js'\nimport type {\n ProviderFactoryLocatorInstance, RpcSchemaMap, TransportFactory,\n} from '@xyo-network/xl1-sdk'\nimport {\n AccountBalanceViewerRpcSchemas,\n ADDRESS_INDEX,\n BlockViewerRpcSchemas,\n FinalizationViewerRpcSchemas,\n generateXyoBaseWalletFromPhrase,\n HttpRpcTransport,\n JsonRpcAccountBalanceViewer,\n JsonRpcBlockViewer,\n JsonRpcFinalizationViewer,\n JsonRpcMempoolRunner,\n JsonRpcMempoolViewer,\n JsonRpcXyoRunner,\n JsonRpcXyoViewer,\n MempoolRunnerRpcSchemas,\n MempoolViewerRpcSchemas,\n ProviderFactoryLocator,\n SimpleXyoConnectionRunner,\n SimpleXyoGatewayRunner,\n SimpleXyoRunner,\n SimpleXyoSigner,\n XyoRunnerRpcSchemas,\n XyoViewerRpcSchemas,\n} from '@xyo-network/xl1-sdk'\n\nimport type { BridgeConfigContext } from '../../actors/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 { mnemonic } = config\n const walletPhrase = isDefined(mnemonic) ? mnemonic : HDWallet.generateMnemonic()\n const wallet = await generateXyoBaseWalletFromPhrase(walletPhrase)\n const signerAccount = await wallet.derivePath(ADDRESS_INDEX.XYO)\n\n const remoteUrl = config.remote.rpc?.url\n\n if (isString(remoteUrl)) {\n const transportFactory: TransportFactory = (schemas: RpcSchemaMap) => new HttpRpcTransport(remoteUrl, schemas)\n\n locator.registerMany([\n JsonRpcMempoolViewer.factory<JsonRpcMempoolViewer>(JsonRpcMempoolViewer.dependencies, { transport: await transportFactory(MempoolViewerRpcSchemas) }),\n JsonRpcMempoolRunner.factory<JsonRpcMempoolRunner>(JsonRpcMempoolRunner.dependencies, { transport: await transportFactory(MempoolRunnerRpcSchemas) }),\n JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>(\n JsonRpcAccountBalanceViewer.dependencies,\n { transport: await transportFactory(AccountBalanceViewerRpcSchemas) },\n ),\n JsonRpcFinalizationViewer.factory<JsonRpcFinalizationViewer>(\n JsonRpcFinalizationViewer.dependencies,\n { transport: await transportFactory(FinalizationViewerRpcSchemas) },\n ),\n JsonRpcBlockViewer.factory<JsonRpcBlockViewer>(JsonRpcBlockViewer.dependencies, { transport: await transportFactory(BlockViewerRpcSchemas) }),\n JsonRpcXyoRunner.factory<JsonRpcXyoRunner>(JsonRpcXyoRunner.dependencies, { transport: await transportFactory(XyoRunnerRpcSchemas) }),\n JsonRpcXyoViewer.factory<JsonRpcXyoViewer>(JsonRpcXyoViewer.dependencies, { transport: await transportFactory(XyoViewerRpcSchemas) }),\n ])\n }\n\n locator.registerMany([\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 {\n ProviderFactoryLocator,\n SimpleBlockValidationViewer,\n} from '@xyo-network/xl1-sdk'\n\nimport type { MempoolConfigContext } from '../../actors/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 SimpleBlockValidationViewer.factory<SimpleBlockValidationViewer>(SimpleBlockValidationViewer.dependencies, {}),\n ])\n locator.freeze()\n return locator\n}\n","import { asAddress, isString } from '@xylabs/sdk-js'\nimport { SimpleBlockRunner } from '@xyo-network/chain-services'\nimport type {\n ProviderFactoryLocatorInstance, RpcSchemaMap, TransportFactory,\n} from '@xyo-network/xl1-sdk'\nimport {\n AccountBalanceViewerRpcSchemas,\n BlockViewerRpcSchemas,\n FinalizationViewerRpcSchemas,\n HttpRpcTransport,\n JsonRpcAccountBalanceViewer,\n JsonRpcBlockViewer,\n JsonRpcFinalizationViewer,\n JsonRpcMempoolRunner,\n JsonRpcMempoolViewer,\n MempoolRunnerRpcSchemas,\n MempoolViewerRpcSchemas,\n ProviderFactoryLocator,\n SimpleBlockRewardViewer,\n} from '@xyo-network/xl1-sdk'\n\nimport { initActorAccount } from '../../../init/index.ts'\nimport type { ProducerConfigContext } from '../../actors/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 const remoteUrl = config.remote.rpc?.url\n\n if (isString(remoteUrl)) {\n const transportFactory: TransportFactory = (schemas: RpcSchemaMap) => new HttpRpcTransport(remoteUrl, schemas)\n\n locator.registerMany([\n JsonRpcMempoolViewer.factory<JsonRpcMempoolViewer>(JsonRpcMempoolViewer.dependencies, { transport: await transportFactory(MempoolViewerRpcSchemas) }),\n JsonRpcMempoolRunner.factory<JsonRpcMempoolRunner>(JsonRpcMempoolRunner.dependencies, { transport: await transportFactory(MempoolRunnerRpcSchemas) }),\n JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>(\n JsonRpcAccountBalanceViewer.dependencies,\n { transport: await transportFactory(AccountBalanceViewerRpcSchemas) },\n ),\n JsonRpcFinalizationViewer.factory<JsonRpcFinalizationViewer>(\n JsonRpcFinalizationViewer.dependencies,\n { transport: await transportFactory(FinalizationViewerRpcSchemas) },\n ),\n JsonRpcBlockViewer.factory<JsonRpcBlockViewer>(JsonRpcBlockViewer.dependencies, { transport: await transportFactory(BlockViewerRpcSchemas) }),\n ])\n }\n\n locator.registerMany([\n SimpleBlockRewardViewer.factory<SimpleBlockRewardViewer>(SimpleBlockRewardViewer.dependencies, {}),\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 { isDefined, isUndefined } from '@xylabs/sdk-js'\nimport { HDWallet } from '@xyo-network/sdk-js'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type { ActorConfigContext } from '@xyo-network/xl1-sdk'\nimport { ADDRESS_INDEX, generateXyoBaseWalletFromPhrase } from '@xyo-network/xl1-sdk'\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 let walletPhrase = config.mnemonic\n if (isUndefined(walletPhrase)) {\n logger?.warn(`[${actorName}}] No wallet mnemonic specified!`)\n const randomMnemonic = HDWallet.generateMnemonic()\n logger?.warn(`[${actorName}}] Using randomly generated mnemonic:\n \n${randomMnemonic}\n \n `)\n walletPhrase = randomMnemonic\n }\n const wallet = await generateXyoBaseWalletFromPhrase(walletPhrase)\n const account = await wallet.derivePath(ADDRESS_INDEX.XYO)\n actorAccountSingletons[actorName] = account\n return actorAccountSingletons[actorName]\n}\n","import { assertEx, isString } from '@xylabs/sdk-js'\nimport type { BiosExternalInterface } from '@xyo-network/bios-model'\nimport { HDWallet } from '@xyo-network/sdk-js'\nimport type { WalletKind } from '@xyo-network/storage-model'\nimport type { ActorConfigContext } from '@xyo-network/xl1-sdk'\n\n// TODO: Make nodejs version of bios support round tripping mnemonic between boots\nexport async function initActorSeedPhrase(context: ActorConfigContext, bios: BiosExternalInterface): Promise<string> {\n const { logger, config } = context\n const walletKind = config.name as WalletKind\n const storedSeedPhrase = await bios.seedPhraseStore.get(walletKind)\n logger?.debug(`[API] Stored mnemonic: ${storedSeedPhrase}`)\n const { mnemonic } = config\n if (isString(storedSeedPhrase) && isString(mnemonic)) {\n logger?.warn('[API] Stored mnemonic does not match supplied. Updating stored mnemonic to supplied.')\n await bios.seedPhraseStore.set(walletKind, mnemonic)\n } else {\n let seedPhrase: string\n if (isString(mnemonic)) {\n seedPhrase = mnemonic\n } else {\n seedPhrase = HDWallet.generateMnemonic()\n logger?.log('[API] No mnemonic provided, using random mnemonic. This is not recommended for production use.')\n logger?.log(`[API] Mnemonic: ${seedPhrase}`)\n }\n await bios.seedPhraseStore.set(walletKind, seedPhrase)\n }\n return assertEx(await bios.seedPhraseStore.get(walletKind), () => 'Unable to acquire mnemonic from bios')\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'\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 type { Address } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport type { BridgeInstance } from '@xyo-network/bridge-model'\nimport type {\n AttachableArchivistInstance, AttachableModuleInstance, 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 { asEthAddress, assertEx } from '@xylabs/sdk-js'\nimport {\n EvmChainContractViewer, EvmStakeEventsViewer, EvmStakeTotalsViewer, EvmStakeViewer,\n} from '@xyo-network/chain-ethereum'\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\nimport { canUseEvmProvider, initEvmProvider } from '../evm/index.ts'\n\n/* TODO: Rename function since it initializes both EVM and non-EVM providers */\nexport async function initEvmProvidersIfAvailable(\n locator: ProviderFactoryLocatorInstance,\n defaultChainId: ChainId | null,\n): Promise<ProviderFactoryLocatorInstance> {\n const context = locator.context\n const { logger, config } = context\n if (canUseEvmProvider(context)) {\n const chainId = assertEx(context.config.chain.id as ChainId, () => 'Missing config.chain.id (required for EVM providers)')\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 const chainId = assertEx(config.chain.id ?? defaultChainId, () => 'Missing config.chain.id or defaultChainId (required for non-EVM providers)')\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 chainId, 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 {\n assertEx, hexFrom, isDefined, isHex,\n} from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\n\nexport const canUseChainId = ({ config }: BaseConfigContext): boolean => {\n return isDefined(config.evm.chainId)\n}\n\nexport const getChainId = ({ config }: BaseConfigContext) => {\n const chainId = assertEx(config.evm.chainId, () => 'Missing config.evm.chainId')\n if (isHex(chainId, { prefix: true })) {\n const hex = hexFrom(chainId)\n const parsed = Number.parseInt(hex, 16)\n return parsed\n } else {\n const parsed = Number.parseInt(chainId, 10)\n return parsed\n }\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport type { Provider } from 'ethers'\n\nimport { canUseInfuraProvider, initInfuraProvider } from './initInfuraProvider.ts'\nimport { canUseJsonRpcProvider, initJsonRpcProvider } from './initJsonRpcProvider.ts'\n\nlet provider: Promise<Provider> | undefined\n\nexport const initEvmProvider = async (context: BaseConfigContext): Promise<Provider> => {\n if (provider) return provider\n if (canUseInfuraProvider(context)) {\n provider = initInfuraProvider(context)\n } else if (canUseJsonRpcProvider(context)) {\n provider = initJsonRpcProvider(context)\n }\n return assertEx(await provider, () => 'No provider available')\n}\n\nexport const canUseEvmProvider = (context: BaseConfigContext) => {\n return canUseInfuraProvider(context) || canUseJsonRpcProvider(context)\n}\n","import { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport type { Provider } from 'ethers'\nimport { InfuraProvider } from 'ethers/providers'\n\nimport { canUseChainId, getChainId } from './initChainId.ts'\n\nlet instance: Promise<InfuraProvider> | undefined\n\nexport const initInfuraProvider = (context: BaseConfigContext): Promise<Provider> => {\n if (instance) return instance\n const providerConfig = getInfuraProviderConfig(context)\n instance = Promise.resolve(new InfuraProvider(providerConfig[0], providerConfig[1]))\n return instance\n}\n\nexport const canUseInfuraProvider = (context: BaseConfigContext): boolean => {\n const { config } = context\n return canUseChainId(context)\n && isDefined(config.evm?.infura?.projectId)\n && isDefined(config.evm?.infura?.projectSecret)\n}\n\nexport const getInfuraProviderConfig = (context: BaseConfigContext) => {\n const { config } = context\n const projectId = assertEx(config.evm?.infura?.projectId, () => 'Missing config.evm.infura.projectId')\n const projectSecret = assertEx(config.evm?.infura?.projectSecret, () => 'Missing config.evm.infura.projectSecret')\n return [getChainId(context), projectId, projectSecret] as const\n}\n","import { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { JsonRpcProvider } from 'ethers/providers'\n\nimport { canUseChainId, getChainId } from './initChainId.ts'\n\nexport const initJsonRpcProvider = (context: BaseConfigContext) => {\n const providerConfig = getJsonRpcProviderConfig(context)\n return Promise.resolve(new JsonRpcProvider(...providerConfig))\n}\n\nexport const canUseJsonRpcProvider = (context: BaseConfigContext) => {\n const { config } = context\n return canUseChainId(context)\n && isDefined(config.evm.jsonRpc?.url)\n}\n\nexport const getJsonRpcProviderConfig = (context: BaseConfigContext) => {\n const { config } = context\n const jsonRpcUrl = assertEx(config.evm.jsonRpc?.url, () => 'Missing config.evm.jsonRpc.url')\n return [jsonRpcUrl, getChainId(context)] as const\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport { createBootstrapHead } from '@xyo-network/chain-sdk'\nimport type { 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\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 // If there is no head, create one\n const chain = await createBootstrapHead(\n account,\n possibleChainId,\n asAttoXL1(20_000_000_000_000_000_000_000n),\n config.chain.genesisRewardAddress ?? account.address,\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\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 return {\n node, writableChainArchivist, readonlyChainArchivist, pendingTransactionsArchivist, pendingBlocksArchivist,\n }\n}\n","import { type BaseMongoSdkPrivateConfig } from '@xylabs/mongo'\nimport { isDefined } from '@xylabs/sdk-js'\nimport { MongoDBArchivistV2, MongoDBArchivistV2Deletable } from '@xyo-network/archivist-mongodb'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { initTelemetry } from '@xyo-network/chain-telemetry'\nimport { AbstractModule, LoggerModuleStatusReporter } from '@xyo-network/module-abstract'\nimport type { MongoDBModuleParamsV2 } from '@xyo-network/module-model-mongodb'\nimport { MemoryArchivist, ModuleFactoryLocator } from '@xyo-network/sdk-js'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport type { BaseConfigContext } from '@xyo-network/xl1-sdk'\nimport { hasMongoConfig } from '@xyo-network/xl1-sdk'\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 }\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 { 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\": \"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 Pending from './Pending.json' with { type: 'json' }\n\n/**\n * Chain Node Manifest\n */\nconst ChainNodeManifest = Chain as unknown as PackageManifestPayload\n/**\n * Pending Node Manifest\n */\nconst PendingNodeManifest = Pending as unknown as PackageManifestPayload\n/**\n * Public Child Manifests\n */\nexport const PublicChildManifests: ModuleManifest[] = [\n ...ChainNodeManifest.nodes,\n ...PendingNodeManifest.nodes,\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 { 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'\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 { isDefined } from '@xylabs/sdk-js'\nimport { boot } from '@xyo-network/bios'\nimport { HDWallet } from '@xyo-network/sdk-js'\nimport type { ActorConfigContext } from '@xyo-network/xl1-sdk'\n\nimport { initActorSeedPhrase } from './initActorSeedPhrase.ts'\n\nexport async function initActorWallet(context: ActorConfigContext, mnemonic?: string) {\n const bios = await boot()\n const seedPhrase = isDefined(mnemonic)\n ? mnemonic\n : await initActorSeedPhrase(context, bios)\n return await HDWallet.fromPhrase(seedPhrase)\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 { Promisable } from '@xylabs/sdk-js'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport {\n ProviderFactoryLocator,\n SimpleXyoGatewayRunner,\n} from '@xyo-network/xl1-sdk'\n\nimport type { RewardRedemptionConfigContext } from '../../actors/index.ts'\n\nexport function rewardRedemptionLocatorFromConfig(\n context: RewardRedemptionConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promisable<ProviderFactoryLocatorInstance> {\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\n\n locator.registerMany([\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 { 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 '../../init/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 type {\n ActorConfigContext, ChainId, ProviderFactoryLocatorInstance,\n} from '@xyo-network/xl1-sdk'\nimport {\n ProviderFactoryLocator,\n SimpleAccountBalanceViewer,\n SimpleBlockViewer,\n SimpleFinalizationRunner,\n SimpleFinalizationViewer,\n SimpleMempoolRunner,\n SimpleMempoolViewer,\n SimpleTransactionViewer,\n SimpleWindowedBlockViewer,\n SimpleXyoConnectionViewer,\n SimpleXyoViewer,\n} from '@xyo-network/xl1-sdk'\n\nimport {\n initActorWallet, initBalanceSummaryMap, initFinalizationArchivistIfNeeded,\n initServerNode, initTransferSummaryMap,\n} from '../../init/index.ts'\n\nexport async function localLocatorFromConfig(\n context: ActorConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promise<[ProviderFactoryLocatorInstance, ChainId | null]> {\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, readonlyChainArchivist, pendingTransactionsArchivist, pendingBlocksArchivist,\n } = await initServerNode(\n context,\n wallet,\n )\n\n const [_head, chainId] = await initFinalizationArchivistIfNeeded(writableChainArchivist, context.config, wallet)\n\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\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: 10_000, syncInterval: 10_000 }),\n SimpleXyoConnectionViewer.factory<SimpleXyoConnectionViewer>(SimpleXyoConnectionViewer.dependencies, {}),\n SimpleTransactionViewer.factory<SimpleTransactionViewer>(SimpleTransactionViewer.dependencies, {}),\n SimpleXyoViewer.factory<SimpleXyoViewer>(SimpleXyoViewer.dependencies, { finalizedArchivist: readonlyChainArchivist }),\n SimpleFinalizationViewer.factory<SimpleFinalizationViewer>(SimpleFinalizationViewer.dependencies, { finalizedArchivist: readonlyChainArchivist }),\n SimpleFinalizationRunner.factory<SimpleFinalizationRunner>(SimpleFinalizationRunner.dependencies, { finalizedArchivist: writableChainArchivist }),\n\n ])\n return [locator, chainId]\n}\n","import { deepMerge } from '@xylabs/sdk-js'\nimport {\n ActorConfigZod,\n type CachingContext,\n type Config, type ProviderFactoryLocatorInstance,\n} from '@xyo-network/xl1-sdk'\n\nimport {\n ApiConfigZod, BridgeConfigZod,\n MempoolConfigZod, ProducerConfigZod, RewardRedemptionConfigZod,\n} from '../actors/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,\n config: ApiConfigZod.parse(deepMerge(config, actorConfig)),\n }, result._root)\n\n break\n }\n case 'mempool': {\n result[actorConfig.name] = await mempoolLocatorFromConfig({ ...context, config: MempoolConfigZod.parse(deepMerge(config, actorConfig)) }, result._root)\n break\n }\n case 'validator': {\n result[actorConfig.name] = await validatorLocatorFromConfig({ ...context, config: ActorConfigZod.parse(deepMerge(config, actorConfig)) }, result._root)\n break\n }\n case 'bridge': {\n result[actorConfig.name] = await bridgeLocatorFromConfig({ ...context, config: BridgeConfigZod.parse(deepMerge(config, actorConfig)) }, result._root)\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 { isString } from '@xylabs/sdk-js'\nimport { validateHydratedBlock, validateHydratedBlockState } from '@xyo-network/chain-validation'\nimport type { ActorConfigContext, ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport {\n ProviderFactoryLocator,\n SimpleBlockValidationViewer,\n SimpleNetworkStakeViewer,\n SimpleStepRewardsByPositionViewer,\n SimpleStepRewardsByStakerViewer,\n SimpleStepRewardsByStepViewer,\n SimpleStepRewardsTotalViewer,\n SimpleStepRewardsViewer,\n SimpleStepViewer,\n SimpleTimeSyncViewer,\n SimpleTransactionViewer,\n} from '@xyo-network/xl1-sdk'\n\nimport { initEvmProvidersIfAvailable } from '../../init/index.ts'\nimport { localLocatorFromConfig } from './localLocatorFromConfig.ts'\nimport { remoteLocatorFromConfig } from './remoteLocatorFromConfig.ts'\n\nexport async function rootLocatorFromConfig(\n context: ActorConfigContext,\n): Promise<ProviderFactoryLocatorInstance> {\n const { config } = context\n let locator: ProviderFactoryLocatorInstance = new ProviderFactoryLocator(context)\n\n locator.registerMany([\n SimpleNetworkStakeViewer.factory<SimpleNetworkStakeViewer>(SimpleNetworkStakeViewer.dependencies, {}),\n SimpleTimeSyncViewer.factory<SimpleTimeSyncViewer>(SimpleTimeSyncViewer.dependencies, {}),\n SimpleStepViewer.factory<SimpleStepViewer>(SimpleStepViewer.dependencies, {}),\n SimpleStepRewardsViewer.factory<SimpleStepRewardsViewer>(SimpleStepRewardsViewer.dependencies, {}),\n SimpleStepRewardsByPositionViewer.factory<SimpleStepRewardsByPositionViewer>(SimpleStepRewardsByPositionViewer.dependencies, {}),\n SimpleStepRewardsByStakerViewer.factory<SimpleStepRewardsByStakerViewer>(SimpleStepRewardsByStakerViewer.dependencies, {}),\n SimpleStepRewardsByStepViewer.factory<SimpleStepRewardsByStepViewer>(SimpleStepRewardsByStepViewer.dependencies, {}),\n SimpleStepRewardsTotalViewer.factory<SimpleStepRewardsTotalViewer>(SimpleStepRewardsTotalViewer.dependencies, {}),\n SimpleBlockValidationViewer.factory<SimpleBlockValidationViewer>(\n SimpleBlockValidationViewer.dependencies,\n { state: validateHydratedBlockState, protocol: validateHydratedBlock },\n ),\n SimpleTransactionViewer.factory<SimpleTransactionViewer>(SimpleTransactionViewer.dependencies, {}),\n ])\n const [newLocator, chainId] = await (isString(config.remote.rpc?.url)\n ? remoteLocatorFromConfig(context, locator)\n : localLocatorFromConfig(context, locator))\n locator = newLocator\n locator = await initEvmProvidersIfAvailable(locator, chainId)\n locator.freeze()\n return locator\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport type {\n ActorConfigContext, ChainId, ProviderFactoryLocatorInstance,\n} from '@xyo-network/xl1-sdk'\nimport {\n JsonRpcAccountBalanceViewer,\n JsonRpcBlockViewer,\n JsonRpcFinalizationViewer,\n JsonRpcMempoolRunner,\n JsonRpcMempoolViewer,\n JsonRpcTransactionViewer,\n JsonRpcXyoViewer,\n ProviderFactoryLocator,\n SimpleWindowedBlockViewer,\n} from '@xyo-network/xl1-sdk'\n\nexport function remoteLocatorFromConfig(\n context: ActorConfigContext,\n parent?: ProviderFactoryLocatorInstance,\n): Promisable<[ProviderFactoryLocatorInstance, ChainId | null]> {\n const locator = new ProviderFactoryLocator({ ...context, locator: parent })\n locator.registerMany([\n JsonRpcMempoolViewer.factory<JsonRpcMempoolViewer>(JsonRpcMempoolViewer.dependencies, {}),\n JsonRpcMempoolRunner.factory<JsonRpcMempoolRunner>(JsonRpcMempoolRunner.dependencies, {}),\n JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>(JsonRpcAccountBalanceViewer.dependencies, {}),\n JsonRpcFinalizationViewer.factory<JsonRpcFinalizationViewer>(JsonRpcFinalizationViewer.dependencies, {}),\n JsonRpcBlockViewer.factory<JsonRpcBlockViewer>(JsonRpcBlockViewer.dependencies, {}),\n SimpleWindowedBlockViewer.factory<SimpleWindowedBlockViewer>(SimpleWindowedBlockViewer.dependencies, { maxWindowSize: 10_000, syncInterval: 10_000 }),\n JsonRpcTransactionViewer.factory<JsonRpcTransactionViewer>(JsonRpcTransactionViewer.dependencies, {}),\n JsonRpcXyoViewer.factory<JsonRpcXyoViewer>(JsonRpcXyoViewer.dependencies, {}),\n ])\n locator.freeze()\n return [locator, null]\n}\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 { 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 * @returns The parsed configuration object if found and valid, otherwise undefined.\n */\nexport async function tryParseConfig(searchPlaces?: string[]) {\n const explorer = cosmiconfig(\n configName,\n {\n cache: true,\n // loaders: { '.ts': TypeScriptLoader() },\n searchPlaces,\n },\n )\n const result = (await explorer.search())?.config\n if (isDefined(result) && !isNull(result)) {\n const section = result[configSection]\n if (isDefined(section) && typeof section === 'object') {\n return ConfigZod.loose().parse(section)\n }\n }\n return ConfigZod.parse({})\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport { buildNextBlock } from '@xyo-network/chain-sdk'\nimport type { 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 { IncomingMessage, ServerResponse } from 'node:http'\nimport http from 'node:http'\n\nimport type { CreatableStatus } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { ActorConfigContext, RuntimeStatusMonitor } from '@xyo-network/xl1-sdk'\n\nconst sendStatus = (res: ServerResponse, status: CreatableStatus, errorCode: number) => {\n const statusCode = status === 'started' ? 200 : errorCode\n res.writeHead(statusCode, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify({ status }))\n}\n\nconst notFound = (res: ServerResponse) => {\n res.writeHead(404, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify({ status: 'not found' }))\n}\n\n/**\n * Starts an HTTP server with Kubernetes health endpoints:\n * - /healthz\n * - /livez\n * - /readyz\n * @param context The actor configuration context\n * @param port The port to listen on (default: 8080)\n * @param statusMonitor The runtime status monitor to determine the health status\n */\nconst createHealthServer = (context: ActorConfigContext, port: number, statusMonitor: RuntimeStatusMonitor) => {\n const { logger } = context\n const server = http.createServer((req: IncomingMessage, res: ServerResponse) => {\n const url = req.url ?? ''\n\n const status = statusMonitor.getGlobalStatus()\n\n switch (url) {\n case '/healthz': {\n sendStatus(res, status, 500)\n break\n }\n case '/livez': {\n sendStatus(res, status, 503)\n break\n }\n case '/readyz': {\n sendStatus(res, status, 503)\n break\n }\n default: {\n notFound(res)\n }\n }\n })\n\n server.listen(port, () => {\n logger?.log(`Health server running on http://localhost:${port}`)\n logger?.log(' - /healthz')\n logger?.log(' - /livez')\n logger?.log(' - /readyz')\n })\n return server\n}\n\nexport function initHealthEndpoints(context: ActorConfigContext, statusMonitor: RuntimeStatusMonitor) {\n const { config } = context\n const { healthCheckPort } = config\n return isDefined(healthCheckPort) ? createHealthServer(context, healthCheckPort, statusMonitor) : undefined\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 { CreatableInstance } from '@xylabs/sdk-js'\nimport { AbstractCreatable, creatable } from '@xylabs/sdk-js'\nimport { 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"],"mappings":"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","names":["creatable","processPendingBlocks","ActorV3","BlockViewerMoniker","FinalizationRunnerMoniker","MempoolViewerMoniker","ValidatorActor","ActorV3","_blockViewer","_finalizationRunner","_lastValidatedBlock","_lastValidatedBlockHash","_mempoolViewer","blockViewer","finalizationRunner","mempoolViewer","createHandler","startHandler","locator","getInstance","BlockViewerMoniker","FinalizationRunnerMoniker","MempoolViewerMoniker","registerTimer","spanAsync","console","log","processPendingBlocks","context","logger","timeBudgetLimit","timeBudget","startupSpanAsync","Mutex","Mutex","rm","Path","LmdbArchivist","LmdbArchivistConfigSchema","getStoreDirectory","DEFAULT_STORAGE_ROOT","Path","join","process","cwd","getLocalPersistentArchivist","name","dbName","storeName","storageRoot","kind","root","LmdbArchivist","create","account","config","clearStoreOnStart","location","getStoreDirectory","schema","LmdbArchivistConfigSchema","mutex","Mutex","singleton","initLocalChainFinalizedArchivist","config","runExclusive","root","storage","getLocalPersistentArchivist","mutex","Mutex","singleton","initChainFinalizedArchivist","context","runExclusive","timeBudget","logger","local","startupSpanAsync","initLocalChainFinalizedArchivist","timeBudget","startupSpanAsync","Mutex","Mutex","mutex","Mutex","singleton","initLocalPendingBlocksArchivist","config","runExclusive","root","storage","getLocalPersistentArchivist","mutex","Mutex","singleton","initPendingBlocksArchivist","context","runExclusive","timeBudget","logger","local","startupSpanAsync","initLocalPendingBlocksArchivist","timeBudget","startupSpanAsync","Mutex","MemoryArchivist","MemoryArchivistConfigSchema","Mutex","mutex","Mutex","singleton","initLocalRejectedTransactionsArchivist","runExclusive","MemoryArchivist","create","account","config","schema","MemoryArchivistConfigSchema","max","name","mutex","Mutex","singleton","initRejectedTransactionsArchivist","logger","runExclusive","timeBudget","local","startupSpanAsync","initLocalRejectedTransactionsArchivist","assertEx","timeBudget","startupSpanAsync","Mutex","assertEx","Mutex","mutex","Mutex","singleton","initLocalStakeIntentStateArchivist","config","runExclusive","root","storage","getLocalPersistentArchivist","assertEx","Error","mutex","Mutex","singleton","initStakeIntentStateArchivist","context","runExclusive","timeBudget","logger","local","startupSpanAsync","initLocalStakeIntentStateArchivist","assertEx","buildTelemetryConfig","config","serviceName","serviceVersion","defaultMetricsScrapePort","otlpEndpoint","telemetry","otel","path","endpoint","port","metrics","scrape","telemetryConfig","attributes","metricsConfig","zodAsFactory","zodIsFactory","zodToFactory","BaseConfigContextZod","HostActorConfigZod","globalRegistry","z","ApiConfigZod","extend","object","initRewardsCache","union","number","string","boolean","transform","v","default","register","description","title","type","shape","isApiConfig","asApiConfig","toApiConfig","ApiConfigContext","config","isApiConfigContext","asApiConfigContext","toApiConfigContext","AddressZod","HexZod","toAddress","toHex","zodAsFactory","zodIsFactory","zodToFactory","AttoXL1ConvertFactor","BaseConfigContextZod","HostActorConfigZod","XL1","globalRegistry","z","DEFAULT_FIXED_FEE","xl1","DEFAULT_HARDHAT_BRIDGE_CONTRACT","DEFAULT_HARDHAT_CHAIN_ID","DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY","DEFAULT_HARDHAT_TOKEN_CONTRACT","DEFAULT_MAX_BRIDGE_AMOUNT","DEFAULT_MIN_BRIDGE_AMOUNT","BasisPointsZod","coerce","number","int","nonnegative","max","BridgeConfigZod","extend","escrowAddress","optional","register","description","title","type","feesAddress","feeFixed","default","feeRateBasisPoints","maxBridgeAmount","minBridgeAmount","redisHost","string","redisPort","positive","remoteBridgeContractAddress","remoteChainId","remoteTokenAddress","remoteChainWalletPrivateKey","xl1ChainId","xl1TokenAddress","BridgeSettingsZod","pick","required","isBridgeConfig","asBridgeConfig","toBridgeConfig","BridgeConfigContext","config","isBridgeConfigContext","asBridgeConfigContext","toBridgeConfigContext","zodAsFactory","zodIsFactory","zodToFactory","BaseConfigContextZod","HostActorConfigZod","globalRegistry","z","MempoolConfigZod","extend","enabled","union","string","boolean","default","transform","val","ctx","normalized","toLowerCase","trim","includes","addIssue","code","expected","message","NEVER","register","description","title","type","isMempoolConfig","asMempoolConfig","toMempoolConfig","MempoolConfigContext","config","isMempoolConfigContext","asMempoolConfigContext","toMempoolConfigContext","AddressZod","asAddress","zodAsFactory","zodIsFactory","zodToFactory","ActorConfigZod","BaseConfigContextZod","globalRegistry","z","ProducerConfigZod","extend","object","allowlist","preprocess","val","split","map","s","trim","array","optional","register","description","title","type","disableIntentRedeclaration","boolean","heartbeatInterval","coerce","number","default","minStake","rewardAddress","string","shape","isProducerConfig","asProducerConfig","toProducerConfig","ProducerConfigContext","config","isProducerConfigContext","asProducerConfigContext","toProducerConfigContext","zodAsFactory","zodIsFactory","zodToFactory","BaseConfigContextZod","HostActorConfigZod","RewardRedemptionConfigZod","extend","isRewardRedemptionConfig","asRewardRedemptionConfig","toRewardRedemptionConfig","RewardRedemptionConfigContext","config","isRewardRedemptionConfigContext","asRewardRedemptionConfigContext","toRewardRedemptionConfigContext","ProviderFactoryLocator","SimpleXyoConnectionRunner","SimpleXyoGateway","SimpleXyoRunner","apiLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","registerMany","SimpleXyoRunner","factory","dependencies","SimpleXyoConnectionRunner","SimpleXyoGateway","freeze","isDefined","isString","HDWallet","AccountBalanceViewerRpcSchemas","ADDRESS_INDEX","BlockViewerRpcSchemas","FinalizationViewerRpcSchemas","generateXyoBaseWalletFromPhrase","HttpRpcTransport","JsonRpcAccountBalanceViewer","JsonRpcBlockViewer","JsonRpcFinalizationViewer","JsonRpcMempoolRunner","JsonRpcMempoolViewer","JsonRpcXyoRunner","JsonRpcXyoViewer","MempoolRunnerRpcSchemas","MempoolViewerRpcSchemas","ProviderFactoryLocator","SimpleXyoConnectionRunner","SimpleXyoGatewayRunner","SimpleXyoRunner","SimpleXyoSigner","XyoRunnerRpcSchemas","XyoViewerRpcSchemas","bridgeLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","config","mnemonic","walletPhrase","isDefined","HDWallet","generateMnemonic","wallet","generateXyoBaseWalletFromPhrase","signerAccount","derivePath","ADDRESS_INDEX","XYO","remoteUrl","remote","rpc","url","isString","transportFactory","schemas","HttpRpcTransport","registerMany","JsonRpcMempoolViewer","factory","dependencies","transport","MempoolViewerRpcSchemas","JsonRpcMempoolRunner","MempoolRunnerRpcSchemas","JsonRpcAccountBalanceViewer","AccountBalanceViewerRpcSchemas","JsonRpcFinalizationViewer","FinalizationViewerRpcSchemas","JsonRpcBlockViewer","BlockViewerRpcSchemas","JsonRpcXyoRunner","XyoRunnerRpcSchemas","JsonRpcXyoViewer","XyoViewerRpcSchemas","SimpleXyoSigner","account","SimpleXyoRunner","SimpleXyoConnectionRunner","SimpleXyoGatewayRunner","freeze","ProviderFactoryLocator","SimpleBlockValidationViewer","mempoolLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","registerMany","SimpleBlockValidationViewer","factory","dependencies","freeze","asAddress","isString","SimpleBlockRunner","AccountBalanceViewerRpcSchemas","BlockViewerRpcSchemas","FinalizationViewerRpcSchemas","HttpRpcTransport","JsonRpcAccountBalanceViewer","JsonRpcBlockViewer","JsonRpcFinalizationViewer","JsonRpcMempoolRunner","JsonRpcMempoolViewer","MempoolRunnerRpcSchemas","MempoolViewerRpcSchemas","ProviderFactoryLocator","SimpleBlockRewardViewer","isDefined","isUndefined","HDWallet","ADDRESS_INDEX","generateXyoBaseWalletFromPhrase","actorAccountSingletons","initActorAccount","config","logger","actorName","name","isDefined","walletPhrase","mnemonic","isUndefined","warn","randomMnemonic","HDWallet","generateMnemonic","wallet","generateXyoBaseWalletFromPhrase","account","derivePath","ADDRESS_INDEX","XYO","assertEx","isString","HDWallet","initActorSeedPhrase","context","bios","logger","config","walletKind","name","storedSeedPhrase","seedPhraseStore","get","debug","mnemonic","isString","warn","set","seedPhrase","HDWallet","generateMnemonic","log","assertEx","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","assertEx","asAttachableArchivistInstance","asAttachableModuleInstance","Mutex","initMutex","Mutex","bridgedModuleDictionary","initBridgedModule","bridge","moduleName","runExclusive","existing","address","mod","assertEx","resolve","moduleInstance","asAttachableModuleInstance","moduleMap","undefined","initBridgedArchivistModule","asAttachableArchivistInstance","asEthAddress","assertEx","EvmChainContractViewer","EvmStakeEventsViewer","EvmStakeTotalsViewer","EvmStakeViewer","SimpleChainContractViewer","SimpleStakeEventsViewer","SimpleStakeTotalsViewer","SimpleStakeViewer","SimpleTimeSyncViewer","XYO_ZERO_ADDRESS","assertEx","hexFrom","isDefined","isHex","canUseChainId","config","isDefined","evm","chainId","getChainId","assertEx","isHex","prefix","hex","hexFrom","parsed","Number","parseInt","assertEx","assertEx","isDefined","InfuraProvider","instance","initInfuraProvider","context","providerConfig","getInfuraProviderConfig","Promise","resolve","InfuraProvider","canUseInfuraProvider","config","canUseChainId","isDefined","evm","infura","projectId","projectSecret","assertEx","getChainId","assertEx","isDefined","JsonRpcProvider","initJsonRpcProvider","context","providerConfig","getJsonRpcProviderConfig","Promise","resolve","JsonRpcProvider","canUseJsonRpcProvider","config","canUseChainId","isDefined","evm","jsonRpc","url","jsonRpcUrl","assertEx","getChainId","provider","initEvmProvider","context","canUseInfuraProvider","initInfuraProvider","canUseJsonRpcProvider","initJsonRpcProvider","assertEx","canUseEvmProvider","initEvmProvidersIfAvailable","locator","defaultChainId","context","logger","config","canUseEvmProvider","chainId","assertEx","chain","id","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","createBootstrapHead","asAttoXL1","genesisRewardAddress","payloads","flatMap","block","flattenHydratedBlock","insert","head","assertEx","chainId","MongoDBArchivistV2","initMongoFinalizedArchivist","config","payloadSdkConfig","storage","mongo","collection","MongoDBArchivistV2","create","initFinalizedArchivist","finalizedArchivist","assertEx","asArchivistInstance","isDefined","MongoDBArchivistV2","MongoDBArchivistV2Deletable","ViewArchivist","initTelemetry","AbstractModule","LoggerModuleStatusReporter","MemoryArchivist","ModuleFactoryLocator","MemorySentinel","hasMongoConfig","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","MemoryArchivist","MemorySentinel","ViewArchivist","ManifestWrapper","NodeManifest","node","PrivateChildManifests","ChainNodeManifest","Chain","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","initServerNode","context","wallet","providedNode","loadNode","start","writableChainArchivist","readonlyChainArchivist","pendingTransactionsArchivist","pendingBlocksArchivist","RuntimeStatusMonitor","initStatusReporter","logger","statusReporter","RuntimeStatusMonitor","onGlobalTransition","to","log","error","process","exit","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","isDefined","boot","HDWallet","initActorWallet","context","mnemonic","bios","boot","seedPhrase","isDefined","initActorSeedPhrase","HDWallet","fromPhrase","producerLocatorFromConfig","context","parent","logger","config","account","initActorAccount","locator","ProviderFactoryLocator","rewardAddress","asAddress","address","info","warn","remoteUrl","remote","rpc","url","isString","transportFactory","schemas","HttpRpcTransport","registerMany","JsonRpcMempoolViewer","factory","dependencies","transport","MempoolViewerRpcSchemas","JsonRpcMempoolRunner","MempoolRunnerRpcSchemas","JsonRpcAccountBalanceViewer","AccountBalanceViewerRpcSchemas","JsonRpcFinalizationViewer","FinalizationViewerRpcSchemas","JsonRpcBlockViewer","BlockViewerRpcSchemas","SimpleBlockRewardViewer","SimpleBlockRunner","freeze","ProviderFactoryLocator","SimpleXyoGatewayRunner","rewardRedemptionLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","registerMany","SimpleXyoGatewayRunner","factory","dependencies","freeze","ProviderFactoryLocator","validatorLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","registerMany","freeze","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","ProviderFactoryLocator","SimpleAccountBalanceViewer","SimpleBlockViewer","SimpleFinalizationRunner","SimpleFinalizationViewer","SimpleMempoolRunner","SimpleMempoolViewer","SimpleTransactionViewer","SimpleWindowedBlockViewer","SimpleXyoConnectionViewer","SimpleXyoViewer","localLocatorFromConfig","context","parent","balancesSummaryMap","assertEx","initBalanceSummaryMap","transfersSummaryMap","initTransferSummaryMap","wallet","initActorWallet","writableChainArchivist","readonlyChainArchivist","pendingTransactionsArchivist","pendingBlocksArchivist","initServerNode","_head","chainId","initFinalizationArchivistIfNeeded","config","locator","ProviderFactoryLocator","registerMany","SimpleMempoolViewer","factory","dependencies","SimpleMempoolRunner","SimpleAccountBalanceViewer","SimpleFinalizationViewer","finalizedArchivist","SimpleBlockViewer","SimpleWindowedBlockViewer","maxWindowSize","syncInterval","SimpleXyoConnectionViewer","SimpleTransactionViewer","SimpleXyoViewer","SimpleFinalizationRunner","deepMerge","ActorConfigZod","isString","validateHydratedBlock","validateHydratedBlockState","ProviderFactoryLocator","SimpleBlockValidationViewer","SimpleNetworkStakeViewer","SimpleStepRewardsByPositionViewer","SimpleStepRewardsByStakerViewer","SimpleStepRewardsByStepViewer","SimpleStepRewardsTotalViewer","SimpleStepRewardsViewer","SimpleStepViewer","SimpleTimeSyncViewer","SimpleTransactionViewer","JsonRpcAccountBalanceViewer","JsonRpcBlockViewer","JsonRpcFinalizationViewer","JsonRpcMempoolRunner","JsonRpcMempoolViewer","JsonRpcTransactionViewer","JsonRpcXyoViewer","ProviderFactoryLocator","SimpleWindowedBlockViewer","remoteLocatorFromConfig","context","parent","locator","ProviderFactoryLocator","registerMany","JsonRpcMempoolViewer","factory","dependencies","JsonRpcMempoolRunner","JsonRpcAccountBalanceViewer","JsonRpcFinalizationViewer","JsonRpcBlockViewer","SimpleWindowedBlockViewer","maxWindowSize","syncInterval","JsonRpcTransactionViewer","JsonRpcXyoViewer","freeze","rootLocatorFromConfig","context","config","locator","ProviderFactoryLocator","registerMany","SimpleNetworkStakeViewer","factory","dependencies","SimpleTimeSyncViewer","SimpleStepViewer","SimpleStepRewardsViewer","SimpleStepRewardsByPositionViewer","SimpleStepRewardsByStakerViewer","SimpleStepRewardsByStepViewer","SimpleStepRewardsTotalViewer","SimpleBlockValidationViewer","state","validateHydratedBlockState","protocol","validateHydratedBlock","SimpleTransactionViewer","newLocator","chainId","isString","remote","rpc","url","remoteLocatorFromConfig","localLocatorFromConfig","initEvmProvidersIfAvailable","freeze","locatorsFromConfig","context","actors","config","result","_root","rootLocatorFromConfig","name","actorConfig","producerLocatorFromConfig","ProducerConfigZod","parse","deepMerge","apiLocatorFromConfig","ApiConfigZod","mempoolLocatorFromConfig","MempoolConfigZod","validatorLocatorFromConfig","ActorConfigZod","bridgeLocatorFromConfig","BridgeConfigZod","rewardRedemptionLocatorFromConfig","RewardRedemptionConfigZod","deepMerge","mergeConfig","actors","baseConfig","map","actor","deepMerge","isDefined","isNull","ConfigZod","cosmiconfig","configName","configSection","tryParseConfig","searchPlaces","explorer","cosmiconfig","cache","result","search","config","isDefined","isNull","section","ConfigZod","loose","parse","buildNextBlock","createDeclarationIntent","createProducerChainStakeIntentBlock","prevBlock","producerAccount","range","producerDeclarationPayload","createDeclarationIntent","address","buildNextBlock","http","isDefined","sendStatus","res","status","errorCode","statusCode","writeHead","end","JSON","stringify","notFound","createHealthServer","context","port","statusMonitor","logger","server","http","createServer","req","url","getGlobalStatus","listen","log","initHealthEndpoints","config","healthCheckPort","isDefined","undefined","GenericHost","services","start","Promise","resolve","console","log","stop","DefaultServiceProvider","_services","services","getService","serviceIdentifier","ServiceLifetime","Singleton","Transient","AbstractCreatable","creatable","Orchestrator","AbstractCreatable","actors","keepAliveHandle","running","registerActor","actor","start","push","startHandler","logger","warn","log","setInterval","stopHandler","stop","clearInterval"]}