@xyo-network/chain-orchestration 1.16.25 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/neutral/index.mjs +9 -9
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/init/initServerNode.d.ts +3 -3
- package/dist/neutral/init/initServerNode.d.ts.map +1 -1
- package/dist/neutral/init/iterator.d.ts +2 -2
- package/dist/neutral/init/iterator.d.ts.map +1 -1
- package/dist/neutral/manifest/getLocator.d.ts +3 -3
- package/dist/neutral/manifest/getLocator.d.ts.map +1 -1
- package/dist/neutral/manifest/loadNode.d.ts +3 -3
- package/dist/neutral/manifest/loadNode.d.ts.map +1 -1
- package/package.json +11 -11
- package/src/init/initServerNode.ts +4 -4
- package/src/init/iterator.ts +6 -5
- package/src/manifest/getLocator.ts +5 -5
- package/src/manifest/loadNode.ts +4 -4
package/dist/neutral/index.mjs
CHANGED
|
@@ -395,7 +395,7 @@ import { MemorySentinel as MemorySentinel2 } from "@xyo-network/sentinel-memory"
|
|
|
395
395
|
import { StepSizes } from "@xyo-network/xl1-protocol";
|
|
396
396
|
import { hasMongoConfig as hasMongoConfig2 } from "@xyo-network/xl1-protocol-sdk";
|
|
397
397
|
import { Semaphore } from "async-mutex";
|
|
398
|
-
var getLocator = /* @__PURE__ */ __name(async ({ config, logger,
|
|
398
|
+
var getLocator = /* @__PURE__ */ __name(async ({ config, logger, balancesSummaryMap, transfersSummaryMap }) => {
|
|
399
399
|
const { otlpEndpoint } = config.telemetry?.otel ?? {};
|
|
400
400
|
const { path: endpoint = "/metrics", port = 9465 } = config.telemetry?.metrics?.scrape ?? {};
|
|
401
401
|
const { traceProvider, meterProvider } = await initTelemetry({
|
|
@@ -434,14 +434,14 @@ var getLocator = /* @__PURE__ */ __name(async ({ config, logger, balanceSummaryM
|
|
|
434
434
|
traceProvider,
|
|
435
435
|
meterProvider,
|
|
436
436
|
statusReporter,
|
|
437
|
-
summaryMap:
|
|
437
|
+
summaryMap: balancesSummaryMap,
|
|
438
438
|
stepSemaphores: StepSizes.map(() => new Semaphore(20))
|
|
439
439
|
}));
|
|
440
440
|
locator.register(AddressTransferDiviner.factory({
|
|
441
441
|
traceProvider,
|
|
442
442
|
meterProvider,
|
|
443
443
|
statusReporter,
|
|
444
|
-
summaryMap:
|
|
444
|
+
summaryMap: transfersSummaryMap,
|
|
445
445
|
stepSemaphores: StepSizes.map(() => new Semaphore(20))
|
|
446
446
|
}));
|
|
447
447
|
const chainId = isDefined4(config.chain.id) ? assertEx9(asAddress2(config.chain.id), () => "chain.id must be an Address") : ZERO_ADDRESS;
|
|
@@ -870,13 +870,13 @@ var PublicChildManifestsWithoutMempool = [
|
|
|
870
870
|
];
|
|
871
871
|
|
|
872
872
|
// src/manifest/loadNode.ts
|
|
873
|
-
var loadNode = /* @__PURE__ */ __name(async ({ wallet, config,
|
|
873
|
+
var loadNode = /* @__PURE__ */ __name(async ({ wallet, config, balancesSummaryMap, transfersSummaryMap }) => {
|
|
874
874
|
const { enabled: mempoolEnabled } = config.mempool;
|
|
875
875
|
const PublicChildManifests = mempoolEnabled ? PublicChildManifestsWithoutMempool : PublicChildManifestsWithMempool;
|
|
876
876
|
const locator = await getLocator({
|
|
877
877
|
config,
|
|
878
|
-
|
|
879
|
-
|
|
878
|
+
balancesSummaryMap,
|
|
879
|
+
transfersSummaryMap
|
|
880
880
|
});
|
|
881
881
|
const wrapper = new ManifestWrapper(NodeManifest, wallet, locator, PublicChildManifests, PrivateChildManifests);
|
|
882
882
|
const [node, ...childNodes] = await wrapper.loadNodes();
|
|
@@ -902,13 +902,13 @@ async function pendingArchivistFromNode(node) {
|
|
|
902
902
|
return pendingArchivist;
|
|
903
903
|
}
|
|
904
904
|
__name(pendingArchivistFromNode, "pendingArchivistFromNode");
|
|
905
|
-
async function initServerNode({ wallet, logger, config, node: providedNode,
|
|
905
|
+
async function initServerNode({ wallet, logger, config, node: providedNode, transfersSummaryMap, balancesSummaryMap }) {
|
|
906
906
|
const node = providedNode ?? await loadNode({
|
|
907
907
|
wallet,
|
|
908
908
|
logger,
|
|
909
909
|
config,
|
|
910
|
-
|
|
911
|
-
|
|
910
|
+
transfersSummaryMap,
|
|
911
|
+
balancesSummaryMap
|
|
912
912
|
});
|
|
913
913
|
const chainArchivist = await chainArchivistFromNode(node);
|
|
914
914
|
const pendingArchivist = await pendingArchivistFromNode(node);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/archivist/initArchivistSync.ts","../../src/archivist/wrapWithReadCachingArchivist.ts","../../src/bridge.ts","../../src/createDeclarationIntentBlock.ts","../../src/init/initBalanceSummaryMap.ts","../../src/init/initBridgedModule.ts","../../src/init/initChainStakeViewer.ts","../../src/evm/initEvmProvider.ts","../../src/evm/initInfuraProvider.ts","../../src/evm/initChainId.ts","../../src/evm/initJsonRpcProvider.ts","../../src/init/initProducerAccount.ts","../../src/init/initSeedPhrase.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/WithMempool/Chain.json","../../src/manifest/public/WithMempool/Pending.json","../../src/manifest/public/WithMempool/index.ts","../../src/manifest/public/WithoutMempool/Chain.json","../../src/manifest/public/WithoutMempool/Pending.json","../../src/manifest/public/WithoutMempool/index.ts","../../src/init/initServerWallet.ts","../../src/init/initTransferSummaryMap.ts","../../src/init/iterator.ts"],"sourcesContent":["import type { TracerProvider } from '@opentelemetry/api'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { ArchivistSyncDiviner } from '@xyo-network/chain-modules'\nimport { DivinerConfigSchema } from '@xyo-network/diviner-model'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\n\nexport const initArchivistSync = async (\n name: ModuleIdentifier,\n inArchivist: ArchivistInstance,\n outArchivist: ArchivistInstance,\n frequency = 1000,\n max = 1000,\n traceProvider?: TracerProvider,\n) => {\n const node = await MemoryNode.create({ account: 'random' })\n const finalizedArchivistSyncDiviner = await ArchivistSyncDiviner.create({\n account: 'random',\n inArchivist,\n outArchivist,\n traceProvider,\n config: {\n schema: DivinerConfigSchema, name, max,\n },\n })\n\n await node.register(finalizedArchivistSyncDiviner)\n await node.attach(finalizedArchivistSyncDiviner.address)\n\n const sentinel = await MemorySentinel.create({\n account: 'random',\n config: {\n name,\n synchronous: true,\n schema: SentinelConfigSchema,\n tasks: [\n {\n required: true,\n mod: finalizedArchivistSyncDiviner.address,\n endPoint: 'divine',\n },\n ],\n automations: [\n {\n frequency,\n frequencyUnits: 'millis',\n schema: 'network.xyo.automation.interval',\n start: Date.now(),\n type: 'interval',\n },\n ],\n },\n })\n\n await node.register(sentinel)\n await node.attach(sentinel.address)\n\n return node\n}\n","import type { MemoryArchivistConfig } from '@xyo-network/archivist-memory'\nimport { MemoryArchivist, MemoryArchivistConfigSchema } from '@xyo-network/archivist-memory'\nimport type { AttachableArchivistInstance } from '@xyo-network/archivist-model'\n\nimport { initArchivistSync } from './initArchivistSync.ts'\n\nexport const DefaultReadCachingArchivistConfig: MemoryArchivistConfig = {\n max: 100_000,\n // requireAllParents: true,\n schema: MemoryArchivistConfigSchema,\n}\n\nconst getDynamicDefaultReadCachingArchivistConfig = (archivist: AttachableArchivistInstance): Partial<MemoryArchivistConfig> => {\n const { id } = archivist\n const name = `${id}-CachingArchivist`\n const dynamicDefaults: Partial<MemoryArchivistConfig> = { name }\n return dynamicDefaults\n}\n\nconst getDynamicReadCachingArchivistConfig = (_archivist: AttachableArchivistInstance): Partial<MemoryArchivistConfig> => {\n // const parents = {\n // read: [archivist.address], write: [], commit: [],\n // }\n // const dynamicConfig: Partial<MemoryArchivistConfig> = { parents }\n const dynamicConfig: Partial<MemoryArchivistConfig> = {}\n return dynamicConfig\n}\n\nexport const wrapWithReadCachingArchivist = async (\n archivist: AttachableArchivistInstance,\n config: Partial<MemoryArchivistConfig> = DefaultReadCachingArchivistConfig,\n): Promise<AttachableArchivistInstance> => {\n const dynamicDefaultReadCachingArchivistConfig = getDynamicDefaultReadCachingArchivistConfig(archivist)\n const dynamicReadCachingArchivistConfig = getDynamicReadCachingArchivistConfig(archivist)\n\n // Create a materialized config with precedence\n const materializedConfig: MemoryArchivistConfig = {\n // Use the static defaults\n ...DefaultReadCachingArchivistConfig,\n // Use the dynamic defaults\n ...dynamicDefaultReadCachingArchivistConfig,\n // Use the supplied config\n ...config,\n // Use they dynamic config\n ...dynamicReadCachingArchivistConfig,\n }\n const cachingArchivist = await MemoryArchivist.create({ account: 'random', config: materializedConfig })\n await initArchivistSync(\n `${cachingArchivist.id}-Sync`,\n archivist,\n cachingArchivist,\n 1000,\n )\n\n return cachingArchivist\n}\n","import { HttpBridge, HttpBridgeConfigSchema } from '@xyo-network/bridge-http'\nimport type { AttachableBridgeInstance } from '@xyo-network/bridge-model'\nimport { Mutex } from 'async-mutex'\n\nconst initMutex = new Mutex()\nconst bridgeSingletonMap = new Map<string, AttachableBridgeInstance>()\n\nexport const initBridge = async (nodeUrl: string): Promise<AttachableBridgeInstance> => {\n return await initMutex.runExclusive(async () => {\n const existing = bridgeSingletonMap.get(nodeUrl)\n if (existing) return existing\n const bridge = await HttpBridge.create({\n account: 'random',\n config: {\n name: 'HttpBridge',\n client: { url: nodeUrl, discoverRoots: 'start' },\n schema: HttpBridgeConfigSchema,\n security: { allowAnonymous: true },\n },\n })\n await bridge.start()\n bridgeSingletonMap.set(nodeUrl, bridge)\n return bridge\n })\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport { buildNextBlock, createDeclarationIntent } from '@xyo-network/chain-sdk'\nimport type { WithHashMeta } from '@xyo-network/payload-model'\nimport type { BlockBoundWitness, XL1BlockRange } from '@xyo-network/xl1-protocol'\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 { 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/payload-model'\nimport type { BalancesStepSummary, MapType } from '@xyo-network/xl1-protocol-sdk'\nimport { hasMongoConfig, MemoryMap } from '@xyo-network/xl1-protocol-sdk'\n\nimport type { ConfigContext } from '../ConfigContext.ts'\n\nexport async function initBalanceSummaryMap({ config, logger }: ConfigContext): 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, Logger } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport type { AttachableArchivistInstance } from '@xyo-network/archivist-model'\nimport { asAttachableArchivistInstance } from '@xyo-network/archivist-model'\nimport type { BridgeInstance } from '@xyo-network/bridge-model'\nimport type { AttachableModuleInstance, ModuleIdentifier } from '@xyo-network/module-model'\nimport { asAttachableModuleInstance } from '@xyo-network/module-model'\nimport type { Initializable } from '@xyo-network/xl1-protocol'\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 const initBridgedModule: Initializable<\n { bridge: BridgeInstance; moduleName: ModuleIdentifier }, AttachableModuleInstance\n> = async ({ bridge, moduleName }): 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 const initBridgedArchivistModule: Initializable<\n { bridge: BridgeInstance; logger?: Logger; moduleName: ModuleIdentifier }, AttachableArchivistInstance\n> = async ({ bridge, moduleName }): Promise<AttachableArchivistInstance> => {\n return assertEx(\n asAttachableArchivistInstance(await initBridgedModule({ bridge, moduleName })),\n () => `Could not convert ${moduleName} to attachable archivist instance`,\n )\n}\n","import {\n asAddress,\n assertEx, type Logger, toAddress, toEthAddress,\n} from '@xylabs/sdk-js'\nimport { EthereumChainStakeEvents, EthereumChainStakeViewer } from '@xyo-network/chain-sdk'\nimport { StakedXyoChainV2__factory } from '@xyo-network/typechain'\nimport type { ChainId } from '@xyo-network/xl1-protocol'\nimport {\n type Config, SimpleChainStakeViewer, type StakeViewer,\n} from '@xyo-network/xl1-protocol-sdk'\n\nimport { canUseEvmProvider, initEvmProvider } from '../evm/index.ts'\n\nexport async function initEvmChainStakeViewer(config: Config, logger?: Logger): Promise<StakeViewer> {\n const provider = await initEvmProvider({ config, logger })\n const contractAddress = assertEx(config.chain.id, () => 'Missing config.evm.chainId') as ChainId\n const contract = StakedXyoChainV2__factory.connect(toEthAddress(contractAddress), provider)\n const stakeEventsViewer = await EthereumChainStakeEvents.create({ contract, logger })\n assertEx(await stakeEventsViewer.start(), () => 'Failed to start EthereumChainStakeEvents reader')\n const stakeChainViewer = await EthereumChainStakeViewer.create({\n contract, stakeEventsViewer, logger,\n })\n assertEx(await stakeChainViewer.start(), () => 'Failed to start EthereumChainStake viewer')\n return stakeChainViewer\n}\n\nexport async function initSimpleStakeViewer(config: Config, logger?: Logger): Promise<StakeViewer> {\n const stakeChainViewer = await SimpleChainStakeViewer.create({\n chainId: asAddress(toAddress(1n), true), logger, positions: [],\n })\n assertEx(await stakeChainViewer.start(), () => 'Failed to start SimpleChainStake viewer')\n return stakeChainViewer\n}\n\nexport async function initChainStakeViewer(config: Config, logger?: Logger): Promise<StakeViewer> {\n if (canUseEvmProvider({ config })) {\n return await initEvmChainStakeViewer(config, logger)\n } else {\n console.warn('[API] Infura configuration not found. Using SimpleChainStakeViewer with no positions. This means no staking data will be available.')\n return await initSimpleStakeViewer(config, logger)\n }\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\nimport type { Provider } from 'ethers'\nimport type { JsonRpcProvider } from 'ethers/providers'\n\nimport { canUseInfuraProvider, initInfuraProvider } from './initInfuraProvider.ts'\nimport { canUseJsonRpcProvider, initJsonRpcProvider } from './initJsonRpcProvider.ts'\n\nlet provider: Promise<JsonRpcProvider> | undefined\n\nexport const initEvmProvider = async ({ config }: { config: Pick<Config, 'evm'>; logger?: Logger }): Promise<Provider> => {\n if (provider) return provider\n if (canUseInfuraProvider(config)) {\n provider = initInfuraProvider(config)\n } else if (canUseJsonRpcProvider(config)) {\n provider = initJsonRpcProvider(config)\n }\n return assertEx(await provider, () => 'No provider available')\n}\n\nexport const canUseEvmProvider = ({ config }: { config: Pick<Config, 'evm'> }) => {\n return canUseInfuraProvider(config) || canUseJsonRpcProvider(config)\n}\n","import { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\nimport { InfuraProvider } from 'ethers/providers'\n\nimport { canUseChainId, getChainId } from './initChainId.ts'\n\nlet instance: Promise<InfuraProvider> | undefined\n\nexport const initInfuraProvider = (config: Pick<Config, 'evm'>) => {\n if (instance) return instance\n const providerConfig = getInfuraProviderConfig(config)\n instance = Promise.resolve(new InfuraProvider(...providerConfig))\n return instance\n}\n\nexport const canUseInfuraProvider = (config: Pick<Config, 'evm'>): boolean => {\n return canUseChainId(config)\n && isDefined(config.evm?.infura?.projectId)\n && isDefined(config.evm?.infura?.projectSecret)\n}\n\nexport const getInfuraProviderConfig = (config: Pick<Config, 'evm'>) => {\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(config), projectId, projectSecret] as const\n}\n","import {\n assertEx, hexFrom, isDefined, isHex,\n} from '@xylabs/sdk-js'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\nexport const canUseChainId = (config: Pick<Config, 'evm'>): boolean => {\n return isDefined(config.evm.chainId)\n}\n\nexport const getChainId = (config: Pick<Config, 'evm'>) => {\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, isDefined } from '@xylabs/sdk-js'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\nimport { JsonRpcProvider } from 'ethers/providers'\n\nimport { canUseChainId, getChainId } from './initChainId.ts'\n\nexport const initJsonRpcProvider = (config: Pick<Config, 'evm'>) => {\n const providerConfig = getJsonRpcProviderConfig(config)\n return Promise.resolve(new JsonRpcProvider(...providerConfig))\n}\n\nexport const canUseJsonRpcProvider = (config: Pick<Config, 'evm'>) => {\n return canUseChainId(config)\n && isDefined(config.evm.jsonRpc?.url)\n}\n\nexport const getJsonRpcProviderConfig = (config: Pick<Config, 'evm'>) => {\n const jsonRpcUrl = assertEx(config.evm.jsonRpc?.url, () => 'Missing config.evm.jsonRpc.url')\n return [jsonRpcUrl, getChainId(config)] as const\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport { isUndefined } from '@xylabs/sdk-js'\nimport { HDWallet } from '@xyo-network/wallet'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type { Initializable, InitializableParams } from '@xyo-network/xl1-protocol'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\nimport { ADDRESS_INDEX, generateXyoBaseWalletFromPhrase } from '@xyo-network/xl1-protocol-sdk'\n\nlet accountServiceSingleton: Promisable<WalletInstance> | undefined\n\nexport const initProducerAccount: Initializable<InitializableParams<{ config: Config }>, WalletInstance>\n = async ({ config, logger }): Promise<WalletInstance> => {\n if (accountServiceSingleton) return accountServiceSingleton\n let walletPhrase = config.producer.mnemonic\n if (isUndefined(walletPhrase)) {\n logger?.warn('[Producer] No wallet mnemonic specified!')\n const randomMnemonic = HDWallet.generateMnemonic()\n logger?.warn(`[Producer] 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 accountServiceSingleton = account\n return accountServiceSingleton\n }\n","import { assertEx, isString } from '@xylabs/sdk-js'\nimport type { BiosExternalInterface } from '@xyo-network/bios-model'\nimport { HDWallet } from '@xyo-network/wallet'\n\nimport type { ConfigContext } from '../ConfigContext.ts'\n\n// TODO: Make nodejs version of bios support round tripping mnemonic between boots\nexport async function initSeedPhrase({\n config, logger, bios,\n}: ConfigContext<{ bios: BiosExternalInterface }>): Promise<string> {\n const storedSeedPhrase = await bios.seedPhraseStore.get('os')\n logger?.debug(`[API] Stored mnemonic: ${storedSeedPhrase}`)\n const { mnemonic } = config.api\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('os', 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('os', seedPhrase)\n }\n return assertEx(await bios.seedPhraseStore.get('os'), () => 'Unable to acquire mnemonic from bios')\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type {\n BalancesStepSummary, MapType, TransfersStepSummary,\n} from '@xyo-network/xl1-protocol-sdk'\n\nimport type { ConfigContext } from '../ConfigContext.ts'\nimport { loadNode } from '../manifest/index.ts'\n\nasync function chainArchivistFromNode(node: NodeInstance) {\n const chainArchivist = assertEx(asArchivistInstance(\n await node.resolve('Chain:Validated'),\n { required: true },\n ), () => 'FinalizedArchivist not found in node')\n return chainArchivist\n}\n\nasync function pendingArchivistFromNode(node: NodeInstance) {\n const pendingArchivist = assertEx(asArchivistInstance(\n await node.resolve('XYOChain:Pending:PendingTransactions'),\n { required: true },\n ), () => 'PendingArchivist not found in node')\n return pendingArchivist\n}\n\nexport async function initServerNode({\n wallet, logger, config, node: providedNode, transferSummaryMap, balanceSummaryMap,\n}: ConfigContext<{\n balanceSummaryMap: MapType<string, WithStorageMeta<BalancesStepSummary>>\n node?: NodeInstance\n transferSummaryMap: MapType<string, WithStorageMeta<TransfersStepSummary>>\n wallet: WalletInstance\n}>) {\n const node: NodeInstance = providedNode ?? await loadNode({\n wallet, logger, config, transferSummaryMap, balanceSummaryMap,\n })\n const chainArchivist = await chainArchivistFromNode(node)\n const pendingArchivist = await pendingArchivistFromNode(node)\n return {\n node, chainArchivist, pendingArchivist,\n }\n}\n","import { type BaseMongoSdkPrivateConfig } from '@xylabs/mongo'\nimport {\n asAddress, assertEx, isDefined,\n ZERO_ADDRESS,\n} from '@xylabs/sdk-js'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { MongoDBArchivistV2 } from '@xyo-network/archivist-mongodb'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport {\n AddressBalanceDivinerV2, AddressTransferDiviner, ArchivistSyncDiviner, HeadValidationDiviner,\n} from '@xyo-network/chain-modules'\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 type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { StepSizes } from '@xyo-network/xl1-protocol'\nimport type {\n BalancesStepSummary, MapType, TransfersStepSummary,\n} from '@xyo-network/xl1-protocol-sdk'\nimport { hasMongoConfig } from '@xyo-network/xl1-protocol-sdk'\nimport { Semaphore } from 'async-mutex'\n\nimport type { ConfigContext } from '../ConfigContext.ts'\n\n/**\n * Used for retrieving a locator with the necessary modules registered for testing\n * operation of the node (entirely in memory)\n * @returns A locator with the necessary modules registered\n */\nexport const getLocator = async ({\n config, logger, balanceSummaryMap, transferSummaryMap,\n}: ConfigContext<{\n balanceSummaryMap: MapType<string, WithStorageMeta<BalancesStepSummary>>\n transferSummaryMap: MapType<string, WithStorageMeta<TransfersStepSummary>>\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 }\n\n locator.register(AddressBalanceDivinerV2.factory<AddressBalanceDivinerV2>({\n traceProvider, meterProvider, statusReporter, summaryMap: balanceSummaryMap, stepSemaphores: StepSizes.map(() => new Semaphore(20)),\n }))\n\n locator.register(AddressTransferDiviner.factory<AddressTransferDiviner>({\n traceProvider, meterProvider, statusReporter, summaryMap: transferSummaryMap, stepSemaphores: StepSizes.map(() => new Semaphore(20)),\n }))\n\n const chainId = isDefined(config.chain.id)\n ? assertEx(asAddress(config.chain.id), () => 'chain.id must be an Address')\n : ZERO_ADDRESS\n locator.register(HeadValidationDiviner.factory<HeadValidationDiviner>({\n traceProvider,\n meterProvider,\n statusReporter,\n chainId,\n allowedProducers: config.producer.allowlist,\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 locator.register(ArchivistSyncDiviner.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n return locator\n}\n","import { ManifestWrapper } from '@xyo-network/manifest-wrapper'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type {\n BalancesStepSummary, MapType, TransfersStepSummary,\n} from '@xyo-network/xl1-protocol-sdk'\n\nimport type { ConfigContext } from '../ConfigContext.ts'\nimport { getLocator } from './getLocator.ts'\nimport { NodeManifest } from './nodeManifest.ts'\nimport { PrivateChildManifests } from './private/index.ts'\nimport { PublicChildManifestsWithMempool, PublicChildManifestsWithoutMempool } 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 wallet, config, balanceSummaryMap, transferSummaryMap,\n}: ConfigContext<{\n balanceSummaryMap: MapType<string, WithStorageMeta<BalancesStepSummary>>\n transferSummaryMap: MapType<string, WithStorageMeta<TransfersStepSummary>>\n wallet: WalletInstance\n}>) => {\n const { enabled: mempoolEnabled } = config.mempool\n const PublicChildManifests = mempoolEnabled ? PublicChildManifestsWithoutMempool : PublicChildManifestsWithMempool\n const locator = await getLocator({\n config, balanceSummaryMap, transferSummaryMap,\n })\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 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 \"config\": {\n \"accountPath\": \"1/1'/2'\",\n \"schema\": \"network.xyo.diviner.chain.head.validation.config\",\n \"eventSubscriptions\": [\n {\n \"sourceEvent\": \"inserted\",\n \"sourceModule\": \"Submissions\",\n \"targetModuleFunction\": \"divine\"\n }\n ],\n \"inArchivist\": \"Submissions\",\n \"outArchivist\": \"Validated\",\n \"name\": \"HeadValidationDiviner\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1'/3'\",\n \"automations\": [\n {\n \"frequency\": 1000,\n \"frequencyUnits\": \"millis\",\n \"schema\": \"network.xyo.automation.interval\",\n \"type\": \"interval\"\n }\n ],\n \"name\": \"ChainValidationSentinel\",\n \"schema\": \"network.xyo.sentinel.config\",\n \"synchronous\": true,\n \"tasks\": [\n {\n \"mod\": \"HeadValidationDiviner\",\n \"endPoint\": \"divine\"\n }\n ]\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1'/4'\",\n \"automations\": [\n {\n \"frequency\": 10000,\n \"frequencyUnits\": \"millis\",\n \"schema\": \"network.xyo.automation.interval\",\n \"type\": \"interval\"\n }\n ],\n \"name\": \"AddressBalancePollingSentinel\",\n \"schema\": \"network.xyo.sentinel.config\",\n \"synchronous\": true,\n \"tasks\": [\n {\n \"mod\": \"AddressBalanceDiviner\",\n \"endPoint\": \"divine\"\n }\n ]\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1'/5'\",\n \"automations\": [\n {\n \"frequency\": 10000,\n \"frequencyUnits\": \"millis\",\n \"schema\": \"network.xyo.automation.interval\",\n \"type\": \"interval\"\n }\n ],\n \"name\": \"AddressTransferPollingSentinel\",\n \"schema\": \"network.xyo.sentinel.config\",\n \"synchronous\": true,\n \"tasks\": [\n {\n \"mod\": \"AddressTransferDiviner\",\n \"endPoint\": \"divine\"\n }\n ]\n }\n }\n ],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"1/1/1\",\n \"name\": \"Submissions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"payloadSdkConfig\": {\n \"collection\": \"chain_submissions\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1/2\",\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 \"config\": {\n \"accountPath\": \"1/1/3'\",\n \"name\": \"AddressBalanceDiviner\",\n \"schema\": \"network.xyo.diviner.chain.address.balance.config\",\n \"map\": {\n \"lmdb\": {\n \"dbName\": \"summaries\",\n \"storeName\": \"address_balance\",\n \"location\": \".store\"\n }\n },\n \"archivist\": \"Validated\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1/4'\",\n \"name\": \"AddressTransferDiviner\",\n \"schema\": \"network.xyo.diviner.chain.address.transfer.config\",\n \"map\": {\n \"lmdb\": {\n \"dbName\": \"summaries\",\n \"storeName\": \"address_transfer\",\n \"location\": \".store\"\n }\n },\n \"archivist\": \"Validated\"\n }\n }\n ]\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"2\",\n \"name\": \"Pending\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"2/1/1\",\n \"name\": \"PendingTransactions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"labels\": {\n \"network.xyo.storage.class\": \"mongodb\"\n },\n \"payloadSdkConfig\": {\n \"collection\": \"pending_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 PackageManifestPayload\n/**\n * Pending Node Manifest\n */\nconst PendingNodeManifest = Pending as PackageManifestPayload\n/**\n * Public Child Manifests\n */\nexport const PublicChildManifestsWithMempool: ModuleManifest[] = [\n ...ChainNodeManifest.nodes,\n ...PendingNodeManifest.nodes,\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\": \"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 \"allowedQueries\": [\n \"network.xyo.query.archivist.get\",\n \"network.xyo.query.archivist.next\"\n ],\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\": \"Submissions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"payloadSdkConfig\": {\n \"collection\": \"chain_submissions\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1/2\",\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 \"config\": {\n \"accountPath\": \"1/1/3'\",\n \"name\": \"AddressBalanceDiviner\",\n \"schema\": \"network.xyo.diviner.chain.address.balance.config\",\n \"map\": {\n \"lmdb\": {\n \"dbName\": \"summaries\",\n \"storeName\": \"address_balance\",\n \"location\": \".store\"\n }\n },\n \"archivist\": \"Validated\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1/4'\",\n \"name\": \"AddressTransferDiviner\",\n \"schema\": \"network.xyo.diviner.chain.address.transfer.config\",\n \"map\": {\n \"lmdb\": {\n \"dbName\": \"summaries\",\n \"storeName\": \"address_transfer\",\n \"location\": \".store\"\n }\n },\n \"archivist\": \"Validated\"\n }\n }\n ]\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"2\",\n \"name\": \"Pending\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"2/1/1\",\n \"name\": \"PendingTransactions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"labels\": {\n \"network.xyo.storage.class\": \"mongodb\"\n },\n \"payloadSdkConfig\": {\n \"collection\": \"pending_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 */\n const ChainNodeManifest = Chain as PackageManifestPayload\n/**\n * Pending Node Manifest\n */\n const PendingNodeManifest = Pending as PackageManifestPayload\n/**\n * Public Child Manifests\n */\nexport const PublicChildManifestsWithoutMempool: ModuleManifest[] = [\n ...ChainNodeManifest.nodes,\n ...PendingNodeManifest.nodes,\n]\n","import { isDefined } from '@xylabs/sdk-js'\nimport { boot } from '@xyo-network/bios'\nimport { HDWallet } from '@xyo-network/wallet'\n\nimport type { ConfigContext } from '../ConfigContext.ts'\nimport { initSeedPhrase } from './initSeedPhrase.ts'\n\nexport async function initServerWallet({ config, logger }: ConfigContext) {\n const { mnemonic } = config.api\n const bios = await boot()\n const seedPhrase = isDefined(mnemonic)\n ? mnemonic\n : await initSeedPhrase({\n bios, config, logger,\n })\n return await HDWallet.fromPhrase(seedPhrase)\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/payload-model'\nimport type { MapType, TransfersStepSummary } from '@xyo-network/xl1-protocol-sdk'\nimport { hasMongoConfig, MemoryMap } from '@xyo-network/xl1-protocol-sdk'\n\nimport type { ConfigContext } from '../ConfigContext.ts'\n\nexport async function initTransferSummaryMap({ config, logger }: ConfigContext): 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 {\n BaseElectionService,\n type BaseElectionServicesParams,\n ChainBlockNumberIterationService,\n type XyoChainIteratorParams, XyoStakeIntentService, type XyoStakeIntentServiceParams,\n} from '@xyo-network/chain-services'\nimport type { Initializable } from '@xyo-network/xl1-protocol'\nimport {\n type ElectionService, type EventingChainBlockNumberIteratorService, type StakeIntentService,\n timeBudget,\n} from '@xyo-network/xl1-protocol-sdk'\n\nlet chainIteratorServiceSingleton: Promise<EventingChainBlockNumberIteratorService> | undefined\nlet stakeIntentServiceSingleton: Promise<StakeIntentService> | undefined\nlet electionServiceSingleton: Promise<ElectionService> | undefined\n\nexport const initChainIterator: Initializable<XyoChainIteratorParams, EventingChainBlockNumberIteratorService> = (params) => {\n if (chainIteratorServiceSingleton) return chainIteratorServiceSingleton\n return timeBudget('initChainIterator', params.logger, () => {\n chainIteratorServiceSingleton = ChainBlockNumberIterationService.create(params)\n return chainIteratorServiceSingleton\n }, 2000, true)\n}\n\nexport const initStakeIntentService: Initializable<XyoStakeIntentServiceParams, StakeIntentService>\n = (params) => {\n if (stakeIntentServiceSingleton) return stakeIntentServiceSingleton\n return timeBudget('initStakeIntentService', params.logger, () => {\n stakeIntentServiceSingleton = XyoStakeIntentService.create(params)\n return stakeIntentServiceSingleton\n }, 2000, true)\n }\n\nexport const initElectionService: Initializable<BaseElectionServicesParams, ElectionService>\n = (params) => {\n if (electionServiceSingleton) return electionServiceSingleton\n return timeBudget('initElectionService', params.logger, () => {\n electionServiceSingleton = BaseElectionService.create(params)\n return electionServiceSingleton\n }, 2000, true)\n }\n"],"mappings":";;;;AAEA,SAASA,4BAA4B;AACrC,SAASC,2BAA2B;AAEpC,SAASC,kBAAkB;AAC3B,SAASC,sBAAsB;AAC/B,SAASC,4BAA4B;AAE9B,IAAMC,oBAAoB,8BAC/BC,MACAC,aACAC,cACAC,YAAY,KACZC,MAAM,KACNC,kBAAAA;AAEA,QAAMC,OAAO,MAAMC,WAAWC,OAAO;IAAEC,SAAS;EAAS,CAAA;AACzD,QAAMC,gCAAgC,MAAMC,qBAAqBH,OAAO;IACtEC,SAAS;IACTR;IACAC;IACAG;IACAO,QAAQ;MACNC,QAAQC;MAAqBd;MAAMI;IACrC;EACF,CAAA;AAEA,QAAME,KAAKS,SAASL,6BAAAA;AACpB,QAAMJ,KAAKU,OAAON,8BAA8BO,OAAO;AAEvD,QAAMC,WAAW,MAAMC,eAAeX,OAAO;IAC3CC,SAAS;IACTG,QAAQ;MACNZ;MACAoB,aAAa;MACbP,QAAQQ;MACRC,OAAO;QACL;UACEC,UAAU;UACVC,KAAKd,8BAA8BO;UACnCQ,UAAU;QACZ;;MAEFC,aAAa;QACX;UACEvB;UACAwB,gBAAgB;UAChBd,QAAQ;UACRe,OAAOC,KAAKC,IAAG;UACfC,MAAM;QACR;;IAEJ;EACF,CAAA;AAEA,QAAMzB,KAAKS,SAASG,QAAAA;AACpB,QAAMZ,KAAKU,OAAOE,SAASD,OAAO;AAElC,SAAOX;AACT,GAnDiC;;;ACRjC,SAAS0B,iBAAiBC,mCAAmC;AAKtD,IAAMC,oCAA2D;EACtEC,KAAK;;EAELC,QAAQC;AACV;AAEA,IAAMC,8CAA8C,wBAACC,cAAAA;AACnD,QAAM,EAAEC,GAAE,IAAKD;AACf,QAAME,OAAO,GAAGD,EAAAA;AAChB,QAAME,kBAAkD;IAAED;EAAK;AAC/D,SAAOC;AACT,GALoD;AAOpD,IAAMC,uCAAuC,wBAACC,eAAAA;AAK5C,QAAMC,gBAAgD,CAAC;AACvD,SAAOA;AACT,GAP6C;AAStC,IAAMC,+BAA+B,8BAC1CP,WACAQ,SAAyCb,sCAAiC;AAE1E,QAAMc,2CAA2CV,4CAA4CC,SAAAA;AAC7F,QAAMU,oCAAoCN,qCAAqCJ,SAAAA;AAG/E,QAAMW,qBAA4C;;IAEhD,GAAGhB;;IAEH,GAAGc;;IAEH,GAAGD;;IAEH,GAAGE;EACL;AACA,QAAME,mBAAmB,MAAMC,gBAAgBC,OAAO;IAAEC,SAAS;IAAUP,QAAQG;EAAmB,CAAA;AACtG,QAAMK,kBACJ,GAAGJ,iBAAiBX,EAAE,SACtBD,WACAY,kBACA,GAAA;AAGF,SAAOA;AACT,GA3B4C;;;AC5B5C,SAASK,YAAYC,8BAA8B;AAEnD,SAASC,aAAa;AAEtB,IAAMC,YAAY,IAAIC,MAAAA;AACtB,IAAMC,qBAAqB,oBAAIC,IAAAA;AAExB,IAAMC,aAAa,8BAAOC,YAAAA;AAC/B,SAAO,MAAML,UAAUM,aAAa,YAAA;AAClC,UAAMC,WAAWL,mBAAmBM,IAAIH,OAAAA;AACxC,QAAIE,SAAU,QAAOA;AACrB,UAAME,SAAS,MAAMC,WAAWC,OAAO;MACrCC,SAAS;MACTC,QAAQ;QACNC,MAAM;QACNC,QAAQ;UAAEC,KAAKX;UAASY,eAAe;QAAQ;QAC/CC,QAAQC;QACRC,UAAU;UAAEC,gBAAgB;QAAK;MACnC;IACF,CAAA;AACA,UAAMZ,OAAOa,MAAK;AAClBpB,uBAAmBqB,IAAIlB,SAASI,MAAAA;AAChC,WAAOA;EACT,CAAA;AACF,GAjB0B;;;ACN1B,SAASe,gBAAgBC,+BAA+B;AAIxD,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,SAASQ,oBAAoD;AAE7D,SAASC,gBAAgB;AACzB,SAASC,gBAAgB;AAGzB,SAASC,gBAAgBC,iBAAiB;AAI1C,eAAsBC,sBAAsB,EAAEC,QAAQC,OAAM,GAAiB;AAC3E,QAAMC,cAAcF,OAAOG,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,aAAS,MAAMP,OAAOQ,MAAK,GAAI,MAAM,sCAAA;AACrC,WAAOR;EACT,OAAO;AACLnB,YAAQ4B,KAAK,6EAAA;AACb,WAAO,IAAIC,UAAAA;EACb;AACF;AAtBsB/B;;;ACTtB,SAASgC,YAAAA,iBAAgB;AAEzB,SAASC,qCAAqC;AAG9C,SAASC,kCAAkC;AAE3C,SAASC,SAAAA,cAAa;AAEtB,IAAMC,aAAY,IAAIC,OAAAA;AAGtB,IAAMC,0BAAmD,CAAC;AAEnD,IAAMC,oBAET,8BAAO,EAAEC,QAAQC,WAAU,MAAE;AAC/B,SAAO,MAAML,WAAUM,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,GAhBI;AAkBG,IAAMI,6BAET,8BAAO,EAAEZ,QAAQC,WAAU,MAAE;AAC/B,SAAOK,UACLO,8BAA8B,MAAMd,kBAAkB;IAAEC;IAAQC;EAAW,CAAA,CAAA,GAC3E,MAAM,qBAAqBA,UAAAA,mCAA6C;AAE5E,GALI;;;ACrCJ,SACEa,WACAC,YAAAA,WAAuBC,WAAWC,oBAC7B;AACP,SAASC,0BAA0BC,gCAAgC;AACnE,SAASC,iCAAiC;AAE1C,SACeC,8BACR;;;ACRP,SAASC,YAAAA,iBAAgB;;;ACDzB,SAASC,YAAAA,WAAUC,aAAAA,kBAAiB;AAEpC,SAASC,sBAAsB;;;ACF/B,SACEC,YAAAA,WAAUC,SAASC,WAAWC,aACzB;AAGA,IAAMC,gBAAgB,wBAACC,WAAAA;AAC5B,SAAOC,UAAUD,OAAOE,IAAIC,OAAO;AACrC,GAF6B;AAItB,IAAMC,aAAa,wBAACJ,WAAAA;AACzB,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;;;ADH1B,IAAIG;AAEG,IAAMC,qBAAqB,wBAACC,WAAAA;AACjC,MAAIF,SAAU,QAAOA;AACrB,QAAMG,iBAAiBC,wBAAwBF,MAAAA;AAC/CF,aAAWK,QAAQC,QAAQ,IAAIC,eAAAA,GAAkBJ,cAAAA,CAAAA;AACjD,SAAOH;AACT,GALkC;AAO3B,IAAMQ,uBAAuB,wBAACN,WAAAA;AACnC,SAAOO,cAAcP,MAAAA,KAChBQ,WAAUR,OAAOS,KAAKC,QAAQC,SAAAA,KAC9BH,WAAUR,OAAOS,KAAKC,QAAQE,aAAAA;AACrC,GAJoC;AAM7B,IAAMV,0BAA0B,wBAACF,WAAAA;AACtC,QAAMW,YAAYE,UAASb,OAAOS,KAAKC,QAAQC,WAAW,MAAM,qCAAA;AAChE,QAAMC,gBAAgBC,UAASb,OAAOS,KAAKC,QAAQE,eAAe,MAAM,yCAAA;AACxE,SAAO;IAACE,WAAWd,MAAAA;IAASW;IAAWC;;AACzC,GAJuC;;;AErBvC,SAASG,YAAAA,WAAUC,aAAAA,kBAAiB;AAEpC,SAASC,uBAAuB;AAIzB,IAAMC,sBAAsB,wBAACC,WAAAA;AAClC,QAAMC,iBAAiBC,yBAAyBF,MAAAA;AAChD,SAAOG,QAAQC,QAAQ,IAAIC,gBAAAA,GAAmBJ,cAAAA,CAAAA;AAChD,GAHmC;AAK5B,IAAMK,wBAAwB,wBAACN,WAAAA;AACpC,SAAOO,cAAcP,MAAAA,KAChBQ,WAAUR,OAAOS,IAAIC,SAASC,GAAAA;AACrC,GAHqC;AAK9B,IAAMT,2BAA2B,wBAACF,WAAAA;AACvC,QAAMY,aAAaC,UAASb,OAAOS,IAAIC,SAASC,KAAK,MAAM,gCAAA;AAC3D,SAAO;IAACC;IAAYE,WAAWd,MAAAA;;AACjC,GAHwC;;;AHPxC,IAAIe;AAEG,IAAMC,kBAAkB,8BAAO,EAAEC,OAAM,MAAoD;AAChG,MAAIF,SAAU,QAAOA;AACrB,MAAIG,qBAAqBD,MAAAA,GAAS;AAChCF,eAAWI,mBAAmBF,MAAAA;EAChC,WAAWG,sBAAsBH,MAAAA,GAAS;AACxCF,eAAWM,oBAAoBJ,MAAAA;EACjC;AACA,SAAOK,UAAS,MAAMP,UAAU,MAAM,uBAAA;AACxC,GAR+B;AAUxB,IAAMQ,oBAAoB,wBAAC,EAAEN,OAAM,MAAmC;AAC3E,SAAOC,qBAAqBD,MAAAA,KAAWG,sBAAsBH,MAAAA;AAC/D,GAFiC;;;ADRjC,eAAsBO,wBAAwBC,QAAgBC,QAAe;AAC3E,QAAMC,YAAW,MAAMC,gBAAgB;IAAEH;IAAQC;EAAO,CAAA;AACxD,QAAMG,kBAAkBC,UAASL,OAAOM,MAAMC,IAAI,MAAM,4BAAA;AACxD,QAAMC,WAAWC,0BAA0BC,QAAQC,aAAaP,eAAAA,GAAkBF,SAAAA;AAClF,QAAMU,oBAAoB,MAAMC,yBAAyBC,OAAO;IAAEN;IAAUP;EAAO,CAAA;AACnFI,EAAAA,UAAS,MAAMO,kBAAkBG,MAAK,GAAI,MAAM,iDAAA;AAChD,QAAMC,mBAAmB,MAAMC,yBAAyBH,OAAO;IAC7DN;IAAUI;IAAmBX;EAC/B,CAAA;AACAI,EAAAA,UAAS,MAAMW,iBAAiBD,MAAK,GAAI,MAAM,2CAAA;AAC/C,SAAOC;AACT;AAXsBjB;AAatB,eAAsBmB,sBAAsBlB,QAAgBC,QAAe;AACzE,QAAMe,mBAAmB,MAAMG,uBAAuBL,OAAO;IAC3DM,SAASC,UAAUC,UAAU,EAAE,GAAG,IAAA;IAAOrB;IAAQsB,WAAW,CAAA;EAC9D,CAAA;AACAlB,EAAAA,UAAS,MAAMW,iBAAiBD,MAAK,GAAI,MAAM,yCAAA;AAC/C,SAAOC;AACT;AANsBE;AAQtB,eAAsBM,qBAAqBxB,QAAgBC,QAAe;AACxE,MAAIwB,kBAAkB;IAAEzB;EAAO,CAAA,GAAI;AACjC,WAAO,MAAMD,wBAAwBC,QAAQC,MAAAA;EAC/C,OAAO;AACLyB,YAAQC,KAAK,qIAAA;AACb,WAAO,MAAMT,sBAAsBlB,QAAQC,MAAAA;EAC7C;AACF;AAPsBuB;;;AKjCtB,SAASI,mBAAmB;AAC5B,SAASC,gBAAgB;AAIzB,SAASC,eAAeC,uCAAuC;AAE/D,IAAIC;AAEG,IAAMC,sBACT,8BAAO,EAAEC,QAAQC,OAAM,MAAE;AACzB,MAAIH,wBAAyB,QAAOA;AACpC,MAAII,eAAeF,OAAOG,SAASC;AACnC,MAAIC,YAAYH,YAAAA,GAAe;AAC7BD,YAAQK,KAAK,0CAAA;AACb,UAAMC,iBAAiBC,SAASC,iBAAgB;AAChDR,YAAQK,KAAK;;EAEjBC,cAAAA;;KAEG;AACCL,mBAAeK;EACjB;AACA,QAAMG,SAAS,MAAMC,gCAAgCT,YAAAA;AACrD,QAAMU,UAAU,MAAMF,OAAOG,WAAWC,cAAcC,GAAG;AACzDjB,4BAA0Bc;AAC1B,SAAOd;AACT,GAjBE;;;ACXJ,SAASkB,YAAAA,WAAUC,gBAAgB;AAEnC,SAASC,YAAAA,iBAAgB;AAKzB,eAAsBC,eAAe,EACnCC,QAAQC,QAAQC,KAAI,GAC2B;AAC/C,QAAMC,mBAAmB,MAAMD,KAAKE,gBAAgBC,IAAI,IAAA;AACxDJ,UAAQK,MAAM,0BAA0BH,gBAAAA,EAAkB;AAC1D,QAAM,EAAEI,SAAQ,IAAKP,OAAOQ;AAC5B,MAAIC,SAASN,gBAAAA,KAAqBM,SAASF,QAAAA,GAAW;AACpDN,YAAQS,KAAK,sFAAA;AACb,UAAMR,KAAKE,gBAAgBO,IAAI,MAAMJ,QAAAA;EACvC,OAAO;AACL,QAAIK;AACJ,QAAIH,SAASF,QAAAA,GAAW;AACtBK,mBAAaL;IACf,OAAO;AACLK,mBAAaC,UAASC,iBAAgB;AACtCb,cAAQc,IAAI,gGAAA;AACZd,cAAQc,IAAI,mBAAmBH,UAAAA,EAAY;IAC7C;AACA,UAAMV,KAAKE,gBAAgBO,IAAI,MAAMC,UAAAA;EACvC;AACA,SAAOI,UAAS,MAAMd,KAAKE,gBAAgBC,IAAI,IAAA,GAAO,MAAM,sCAAA;AAC9D;AArBsBN;;;ACPtB,SAASkB,YAAAA,kBAAgB;AACzB,SAASC,2BAA2B;;;ACApC,SACEC,aAAAA,YAAWC,YAAAA,WAAUC,aAAAA,YACrBC,oBACK;AACP,SAASC,mBAAAA,wBAAuB;AAChC,SAASC,0BAA0B;AACnC,SAASC,qBAAqB;AAC9B,SACEC,yBAAyBC,wBAAwBC,wBAAAA,uBAAsBC,6BAClE;AACP,SAASC,qBAAqB;AAC9B,SAASC,gBAAgBC,kCAAkC;AAC3D,SAASC,4BAA4B;AAGrC,SAASC,kBAAAA,uBAAsB;AAC/B,SAASC,iBAAiB;AAI1B,SAASC,kBAAAA,uBAAsB;AAC/B,SAASC,iBAAiB;AASnB,IAAMC,aAAa,8BAAO,EAC/BC,QAAQC,QAAQC,mBAAmBC,mBAAkB,MAIrD;AACA,QAAM,EAAEC,aAAY,IAAKJ,OAAOK,WAAWC,QAAQ,CAAC;AACpD,QAAM,EAAEC,MAAMC,WAAW,YAAYC,OAAa,KAAI,IAAKT,OAAOK,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,WAAUlB,MAAAA,EAASmB,gBAAeC,gBAAgBpB;AACtD,QAAMqB,iBAAiBrB,SAAS,IAAIsB,2BAA2BtB,MAAAA,IAAUuB;AAEzE,QAAMC,UAAU,IAAIC,qBAAAA;AAEpB,QAAMC,cAAc3B,OAAO4B,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,mBAAmBC,QAAQH,MAAAA,GAASlB,QAAW,IAAA;EAClE;AAEAC,UAAQkB,SAASG,wBAAwBD,QAAiC;IACxEjC;IAAeC;IAAeS;IAAgByB,YAAY7C;IAAmB8C,gBAAgBC,UAAUC,IAAI,MAAM,IAAIC,UAAU,EAAA,CAAA;EACjI,CAAA,CAAA;AAEA1B,UAAQkB,SAASS,uBAAuBP,QAAgC;IACtEjC;IAAeC;IAAeS;IAAgByB,YAAY5C;IAAoB6C,gBAAgBC,UAAUC,IAAI,MAAM,IAAIC,UAAU,EAAA,CAAA;EAClI,CAAA,CAAA;AAEA,QAAME,UAAUlC,WAAUnB,OAAOsD,MAAMC,EAAE,IACrCC,UAASC,WAAUzD,OAAOsD,MAAMC,EAAE,GAAG,MAAM,6BAAA,IAC3CG;AACJjC,UAAQkB,SAASgB,sBAAsBd,QAA+B;IACpEjC;IACAC;IACAS;IACA+B;IACAO,kBAAkB5D,OAAO6D,SAASC;EACpC,CAAA,CAAA;AACArC,UAAQkB,SAASoB,iBAAgBlB,QAAQ;IACvCjC;IAAeC;IAAeS;EAChC,CAAA,CAAA;AACAG,UAAQkB,SAASqB,gBAAenB,QAAQ;IACtCjC;IAAeC;IAAeS;EAChC,CAAA,CAAA;AACAG,UAAQkB,SAASsB,cAAcpB,QAAQ;IACrCjC;IAAeC;IAAeS;EAChC,CAAA,CAAA;AACAG,UAAQkB,SAASuB,sBAAqBrB,QAAQ;IAC5CjC;IAAeC;IAAeS;EAChC,CAAA,CAAA;AACA,SAAOG;AACT,GArE0B;;;AC/B1B,SAAS0C,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,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,QAAU;AAAA,cACV,oBAAsB;AAAA,gBACpB;AAAA,kBACE,aAAe;AAAA,kBACf,cAAgB;AAAA,kBAChB,sBAAwB;AAAA,gBAC1B;AAAA,cACF;AAAA,cACA,aAAe;AAAA,cACf,cAAgB;AAAA,cAChB,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,aAAe;AAAA,gBACb;AAAA,kBACE,WAAa;AAAA,kBACb,gBAAkB;AAAA,kBAClB,QAAU;AAAA,kBACV,MAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,MAAQ;AAAA,cACR,QAAU;AAAA,cACV,aAAe;AAAA,cACf,OAAS;AAAA,gBACP;AAAA,kBACE,KAAO;AAAA,kBACP,UAAY;AAAA,gBACd;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,aAAe;AAAA,gBACb;AAAA,kBACE,WAAa;AAAA,kBACb,gBAAkB;AAAA,kBAClB,QAAU;AAAA,kBACV,MAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,MAAQ;AAAA,cACR,QAAU;AAAA,cACV,aAAe;AAAA,cACf,OAAS;AAAA,gBACP;AAAA,kBACE,KAAO;AAAA,kBACP,UAAY;AAAA,gBACd;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,aAAe;AAAA,gBACb;AAAA,kBACE,WAAa;AAAA,kBACb,gBAAkB;AAAA,kBAClB,QAAU;AAAA,kBACV,MAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,MAAQ;AAAA,cACR,QAAU;AAAA,cACV,aAAe;AAAA,cACf,OAAS;AAAA,gBACP;AAAA,kBACE,KAAO;AAAA,kBACP,UAAY;AAAA,gBACd;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA,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,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,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,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,MAAQ;AAAA,cACR,QAAU;AAAA,cACV,KAAO;AAAA,gBACL,MAAQ;AAAA,kBACN,QAAU;AAAA,kBACV,WAAa;AAAA,kBACb,UAAY;AAAA,gBACd;AAAA,cACF;AAAA,cACA,WAAa;AAAA,YACf;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,MAAQ;AAAA,cACR,QAAU;AAAA,cACV,KAAO;AAAA,gBACL,MAAQ;AAAA,kBACN,QAAU;AAAA,kBACV,WAAa;AAAA,kBACb,UAAY;AAAA,gBACd;AAAA,cACF;AAAA,cACA,WAAa;AAAA,YACf;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAU;AACZ;;;AC9KA;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,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;;;AC1BA,IAAMC,oBAAoBC;AAI1B,IAAMC,sBAAsBC;AAIrB,IAAMC,kCAAoD;KAC5DJ,kBAAkBK;KAClBH,oBAAoBG;;;;AClBzB,IAAAC,iBAAA;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,gBAAkB;AAAA,gBAChB;AAAA,gBACA;AAAA,cACF;AAAA,cACA,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,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,UACA;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,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,MAAQ;AAAA,cACR,QAAU;AAAA,cACV,KAAO;AAAA,gBACL,MAAQ;AAAA,kBACN,QAAU;AAAA,kBACV,WAAa;AAAA,kBACb,UAAY;AAAA,gBACd;AAAA,cACF;AAAA,cACA,WAAa;AAAA,YACf;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,MAAQ;AAAA,cACR,QAAU;AAAA,cACV,KAAO;AAAA,gBACL,MAAQ;AAAA,kBACN,QAAU;AAAA,kBACV,WAAa;AAAA,kBACb,UAAY;AAAA,gBACd;AAAA,cACF;AAAA,cACA,WAAa;AAAA,YACf;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAU;AACZ;;;AChGA,IAAAC,mBAAA;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,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;;;AC1BC,IAAMC,qBAAoBC;AAI1B,IAAMC,uBAAsBC;AAItB,IAAMC,qCAAuD;KAC/DJ,mBAAkBK;KAClBH,qBAAoBG;;;;ATDlB,IAAMC,WAAW,8BAAO,EAC7BC,QAAQC,QAAQC,mBAAmBC,mBAAkB,MAKrD;AACA,QAAM,EAAEC,SAASC,eAAc,IAAKJ,OAAOK;AAC3C,QAAMC,uBAAuBF,iBAAiBG,qCAAqCC;AACnF,QAAMC,UAAU,MAAMC,WAAW;IAC/BV;IAAQC;IAAmBC;EAC7B,CAAA;AACA,QAAMS,UAAU,IAAIC,gBAAgBC,cAAcd,QAAQU,SAASH,sBAAsBQ,qBAAAA;AACzF,QAAM,CAACC,MAAM,GAAGC,UAAAA,IAAc,MAAML,QAAQM,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,GAnBwB;;;AFLxB,eAAeW,uBAAuBC,MAAkB;AACtD,QAAMC,iBAAiBC,WAASC,oBAC9B,MAAMH,KAAKI,QAAQ,iBAAA,GACnB;IAAEC,UAAU;EAAK,CAAA,GAChB,MAAM,sCAAA;AACT,SAAOJ;AACT;AANeF;AAQf,eAAeO,yBAAyBN,MAAkB;AACxD,QAAMO,mBAAmBL,WAASC,oBAChC,MAAMH,KAAKI,QAAQ,sCAAA,GACnB;IAAEC,UAAU;EAAK,CAAA,GAChB,MAAM,oCAAA;AACT,SAAOE;AACT;AANeD;AAQf,eAAsBE,eAAe,EACnCC,QAAQC,QAAQC,QAAQX,MAAMY,cAAcC,oBAAoBC,kBAAiB,GAMjF;AACA,QAAMd,OAAqBY,gBAAgB,MAAMG,SAAS;IACxDN;IAAQC;IAAQC;IAAQE;IAAoBC;EAC9C,CAAA;AACA,QAAMb,iBAAiB,MAAMF,uBAAuBC,IAAAA;AACpD,QAAMO,mBAAmB,MAAMD,yBAAyBN,IAAAA;AACxD,SAAO;IACLA;IAAMC;IAAgBM;EACxB;AACF;AAhBsBC;;;AY5BtB,SAASQ,aAAAA,kBAAiB;AAC1B,SAASC,YAAY;AACrB,SAASC,YAAAA,iBAAgB;AAKzB,eAAsBC,iBAAiB,EAAEC,QAAQC,OAAM,GAAiB;AACtE,QAAM,EAAEC,SAAQ,IAAKF,OAAOG;AAC5B,QAAMC,OAAO,MAAMC,KAAAA;AACnB,QAAMC,aAAaC,WAAUL,QAAAA,IACzBA,WACA,MAAMM,eAAe;IACnBJ;IAAMJ;IAAQC;EAChB,CAAA;AACJ,SAAO,MAAMQ,UAASC,WAAWJ,UAAAA;AACnC;AATsBP;;;ACPtB,SAASY,gBAAAA,qBAAoD;AAE7D,SAASC,YAAAA,kBAAgB;AACzB,SAASC,YAAAA,iBAAgB;AAGzB,SAASC,kBAAAA,iBAAgBC,aAAAA,kBAAiB;AAI1C,eAAsBC,uBAAuB,EAAEC,QAAQC,OAAM,GAAiB;AAC5E,QAAMC,cAAcF,OAAOG,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;AACLnB,YAAQ4B,KAAK,8EAAA;AACb,WAAO,IAAIC,WAAAA;EACb;AACF;AAtBsB/B;;;ACVtB,SACEgC,qBAEAC,kCAC6BC,6BACxB;AAEP,SAEEC,kBACK;AAEP,IAAIC;AACJ,IAAIC;AACJ,IAAIC;AAEG,IAAMC,oBAAoG,wBAACC,WAAAA;AAChH,MAAIJ,8BAA+B,QAAOA;AAC1C,SAAOK,WAAW,qBAAqBD,OAAOE,QAAQ,MAAA;AACpDN,oCAAgCO,iCAAiCC,OAAOJ,MAAAA;AACxE,WAAOJ;EACT,GAAG,KAAM,IAAA;AACX,GANiH;AAQ1G,IAAMS,yBACT,wBAACL,WAAAA;AACD,MAAIH,4BAA6B,QAAOA;AACxC,SAAOI,WAAW,0BAA0BD,OAAOE,QAAQ,MAAA;AACzDL,kCAA8BS,sBAAsBF,OAAOJ,MAAAA;AAC3D,WAAOH;EACT,GAAG,KAAM,IAAA;AACX,GANE;AAQG,IAAMU,sBACT,wBAACP,WAAAA;AACD,MAAIF,yBAA0B,QAAOA;AACrC,SAAOG,WAAW,uBAAuBD,OAAOE,QAAQ,MAAA;AACtDJ,+BAA2BU,oBAAoBJ,OAAOJ,MAAAA;AACtD,WAAOF;EACT,GAAG,KAAM,IAAA;AACX,GANE;","names":["ArchivistSyncDiviner","DivinerConfigSchema","MemoryNode","MemorySentinel","SentinelConfigSchema","initArchivistSync","name","inArchivist","outArchivist","frequency","max","traceProvider","node","MemoryNode","create","account","finalizedArchivistSyncDiviner","ArchivistSyncDiviner","config","schema","DivinerConfigSchema","register","attach","address","sentinel","MemorySentinel","synchronous","SentinelConfigSchema","tasks","required","mod","endPoint","automations","frequencyUnits","start","Date","now","type","MemoryArchivist","MemoryArchivistConfigSchema","DefaultReadCachingArchivistConfig","max","schema","MemoryArchivistConfigSchema","getDynamicDefaultReadCachingArchivistConfig","archivist","id","name","dynamicDefaults","getDynamicReadCachingArchivistConfig","_archivist","dynamicConfig","wrapWithReadCachingArchivist","config","dynamicDefaultReadCachingArchivistConfig","dynamicReadCachingArchivistConfig","materializedConfig","cachingArchivist","MemoryArchivist","create","account","initArchivistSync","HttpBridge","HttpBridgeConfigSchema","Mutex","initMutex","Mutex","bridgeSingletonMap","Map","initBridge","nodeUrl","runExclusive","existing","get","bridge","HttpBridge","create","account","config","name","client","url","discoverRoots","schema","HttpBridgeConfigSchema","security","allowAnonymous","start","set","buildNextBlock","createDeclarationIntent","createProducerChainStakeIntentBlock","prevBlock","producerAccount","range","producerDeclarationPayload","createDeclarationIntent","address","buildNextBlock","BaseMongoSdk","assertEx","MongoMap","hasMongoConfig","MemoryMap","initBalanceSummaryMap","config","logger","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","asAddress","assertEx","toAddress","toEthAddress","EthereumChainStakeEvents","EthereumChainStakeViewer","StakedXyoChainV2__factory","SimpleChainStakeViewer","assertEx","assertEx","isDefined","InfuraProvider","assertEx","hexFrom","isDefined","isHex","canUseChainId","config","isDefined","evm","chainId","getChainId","assertEx","isHex","prefix","hex","hexFrom","parsed","Number","parseInt","instance","initInfuraProvider","config","providerConfig","getInfuraProviderConfig","Promise","resolve","InfuraProvider","canUseInfuraProvider","canUseChainId","isDefined","evm","infura","projectId","projectSecret","assertEx","getChainId","assertEx","isDefined","JsonRpcProvider","initJsonRpcProvider","config","providerConfig","getJsonRpcProviderConfig","Promise","resolve","JsonRpcProvider","canUseJsonRpcProvider","canUseChainId","isDefined","evm","jsonRpc","url","jsonRpcUrl","assertEx","getChainId","provider","initEvmProvider","config","canUseInfuraProvider","initInfuraProvider","canUseJsonRpcProvider","initJsonRpcProvider","assertEx","canUseEvmProvider","initEvmChainStakeViewer","config","logger","provider","initEvmProvider","contractAddress","assertEx","chain","id","contract","StakedXyoChainV2__factory","connect","toEthAddress","stakeEventsViewer","EthereumChainStakeEvents","create","start","stakeChainViewer","EthereumChainStakeViewer","initSimpleStakeViewer","SimpleChainStakeViewer","chainId","asAddress","toAddress","positions","initChainStakeViewer","canUseEvmProvider","console","warn","isUndefined","HDWallet","ADDRESS_INDEX","generateXyoBaseWalletFromPhrase","accountServiceSingleton","initProducerAccount","config","logger","walletPhrase","producer","mnemonic","isUndefined","warn","randomMnemonic","HDWallet","generateMnemonic","wallet","generateXyoBaseWalletFromPhrase","account","derivePath","ADDRESS_INDEX","XYO","assertEx","isString","HDWallet","initSeedPhrase","config","logger","bios","storedSeedPhrase","seedPhraseStore","get","debug","mnemonic","api","isString","warn","set","seedPhrase","HDWallet","generateMnemonic","log","assertEx","assertEx","asArchivistInstance","asAddress","assertEx","isDefined","ZERO_ADDRESS","MemoryArchivist","MongoDBArchivistV2","ViewArchivist","AddressBalanceDivinerV2","AddressTransferDiviner","ArchivistSyncDiviner","HeadValidationDiviner","initTelemetry","AbstractModule","LoggerModuleStatusReporter","ModuleFactoryLocator","MemorySentinel","StepSizes","hasMongoConfig","Semaphore","getLocator","config","logger","balanceSummaryMap","transferSummaryMap","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","AddressBalanceDivinerV2","summaryMap","stepSemaphores","StepSizes","map","Semaphore","AddressTransferDiviner","chainId","chain","id","assertEx","asAddress","ZERO_ADDRESS","HeadValidationDiviner","allowedProducers","producer","allowlist","MemoryArchivist","MemorySentinel","ViewArchivist","ArchivistSyncDiviner","ManifestWrapper","NodeManifest","node","PrivateChildManifests","ChainNodeManifest","Chain","PendingNodeManifest","Pending","PublicChildManifestsWithMempool","nodes","Chain_default","Pending_default","ChainNodeManifest","Chain","PendingNodeManifest","Pending","PublicChildManifestsWithoutMempool","nodes","loadNode","wallet","config","balanceSummaryMap","transferSummaryMap","enabled","mempoolEnabled","mempool","PublicChildManifests","PublicChildManifestsWithoutMempool","PublicChildManifestsWithMempool","locator","getLocator","wrapper","ManifestWrapper","NodeManifest","PrivateChildManifests","node","childNodes","loadNodes","length","Promise","all","map","childNode","register","attach","address","chainArchivistFromNode","node","chainArchivist","assertEx","asArchivistInstance","resolve","required","pendingArchivistFromNode","pendingArchivist","initServerNode","wallet","logger","config","providedNode","transferSummaryMap","balanceSummaryMap","loadNode","isDefined","boot","HDWallet","initServerWallet","config","logger","mnemonic","api","bios","boot","seedPhrase","isDefined","initSeedPhrase","HDWallet","fromPhrase","BaseMongoSdk","assertEx","MongoMap","hasMongoConfig","MemoryMap","initTransferSummaryMap","config","logger","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","BaseElectionService","ChainBlockNumberIterationService","XyoStakeIntentService","timeBudget","chainIteratorServiceSingleton","stakeIntentServiceSingleton","electionServiceSingleton","initChainIterator","params","timeBudget","logger","ChainBlockNumberIterationService","create","initStakeIntentService","XyoStakeIntentService","initElectionService","BaseElectionService"]}
|
|
1
|
+
{"version":3,"sources":["../../src/archivist/initArchivistSync.ts","../../src/archivist/wrapWithReadCachingArchivist.ts","../../src/bridge.ts","../../src/createDeclarationIntentBlock.ts","../../src/init/initBalanceSummaryMap.ts","../../src/init/initBridgedModule.ts","../../src/init/initChainStakeViewer.ts","../../src/evm/initEvmProvider.ts","../../src/evm/initInfuraProvider.ts","../../src/evm/initChainId.ts","../../src/evm/initJsonRpcProvider.ts","../../src/init/initProducerAccount.ts","../../src/init/initSeedPhrase.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/WithMempool/Chain.json","../../src/manifest/public/WithMempool/Pending.json","../../src/manifest/public/WithMempool/index.ts","../../src/manifest/public/WithoutMempool/Chain.json","../../src/manifest/public/WithoutMempool/Pending.json","../../src/manifest/public/WithoutMempool/index.ts","../../src/init/initServerWallet.ts","../../src/init/initTransferSummaryMap.ts","../../src/init/iterator.ts"],"sourcesContent":["import type { TracerProvider } from '@opentelemetry/api'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { ArchivistSyncDiviner } from '@xyo-network/chain-modules'\nimport { DivinerConfigSchema } from '@xyo-network/diviner-model'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\n\nexport const initArchivistSync = async (\n name: ModuleIdentifier,\n inArchivist: ArchivistInstance,\n outArchivist: ArchivistInstance,\n frequency = 1000,\n max = 1000,\n traceProvider?: TracerProvider,\n) => {\n const node = await MemoryNode.create({ account: 'random' })\n const finalizedArchivistSyncDiviner = await ArchivistSyncDiviner.create({\n account: 'random',\n inArchivist,\n outArchivist,\n traceProvider,\n config: {\n schema: DivinerConfigSchema, name, max,\n },\n })\n\n await node.register(finalizedArchivistSyncDiviner)\n await node.attach(finalizedArchivistSyncDiviner.address)\n\n const sentinel = await MemorySentinel.create({\n account: 'random',\n config: {\n name,\n synchronous: true,\n schema: SentinelConfigSchema,\n tasks: [\n {\n required: true,\n mod: finalizedArchivistSyncDiviner.address,\n endPoint: 'divine',\n },\n ],\n automations: [\n {\n frequency,\n frequencyUnits: 'millis',\n schema: 'network.xyo.automation.interval',\n start: Date.now(),\n type: 'interval',\n },\n ],\n },\n })\n\n await node.register(sentinel)\n await node.attach(sentinel.address)\n\n return node\n}\n","import type { MemoryArchivistConfig } from '@xyo-network/archivist-memory'\nimport { MemoryArchivist, MemoryArchivistConfigSchema } from '@xyo-network/archivist-memory'\nimport type { AttachableArchivistInstance } from '@xyo-network/archivist-model'\n\nimport { initArchivistSync } from './initArchivistSync.ts'\n\nexport const DefaultReadCachingArchivistConfig: MemoryArchivistConfig = {\n max: 100_000,\n // requireAllParents: true,\n schema: MemoryArchivistConfigSchema,\n}\n\nconst getDynamicDefaultReadCachingArchivistConfig = (archivist: AttachableArchivistInstance): Partial<MemoryArchivistConfig> => {\n const { id } = archivist\n const name = `${id}-CachingArchivist`\n const dynamicDefaults: Partial<MemoryArchivistConfig> = { name }\n return dynamicDefaults\n}\n\nconst getDynamicReadCachingArchivistConfig = (_archivist: AttachableArchivistInstance): Partial<MemoryArchivistConfig> => {\n // const parents = {\n // read: [archivist.address], write: [], commit: [],\n // }\n // const dynamicConfig: Partial<MemoryArchivistConfig> = { parents }\n const dynamicConfig: Partial<MemoryArchivistConfig> = {}\n return dynamicConfig\n}\n\nexport const wrapWithReadCachingArchivist = async (\n archivist: AttachableArchivistInstance,\n config: Partial<MemoryArchivistConfig> = DefaultReadCachingArchivistConfig,\n): Promise<AttachableArchivistInstance> => {\n const dynamicDefaultReadCachingArchivistConfig = getDynamicDefaultReadCachingArchivistConfig(archivist)\n const dynamicReadCachingArchivistConfig = getDynamicReadCachingArchivistConfig(archivist)\n\n // Create a materialized config with precedence\n const materializedConfig: MemoryArchivistConfig = {\n // Use the static defaults\n ...DefaultReadCachingArchivistConfig,\n // Use the dynamic defaults\n ...dynamicDefaultReadCachingArchivistConfig,\n // Use the supplied config\n ...config,\n // Use they dynamic config\n ...dynamicReadCachingArchivistConfig,\n }\n const cachingArchivist = await MemoryArchivist.create({ account: 'random', config: materializedConfig })\n await initArchivistSync(\n `${cachingArchivist.id}-Sync`,\n archivist,\n cachingArchivist,\n 1000,\n )\n\n return cachingArchivist\n}\n","import { HttpBridge, HttpBridgeConfigSchema } from '@xyo-network/bridge-http'\nimport type { AttachableBridgeInstance } from '@xyo-network/bridge-model'\nimport { Mutex } from 'async-mutex'\n\nconst initMutex = new Mutex()\nconst bridgeSingletonMap = new Map<string, AttachableBridgeInstance>()\n\nexport const initBridge = async (nodeUrl: string): Promise<AttachableBridgeInstance> => {\n return await initMutex.runExclusive(async () => {\n const existing = bridgeSingletonMap.get(nodeUrl)\n if (existing) return existing\n const bridge = await HttpBridge.create({\n account: 'random',\n config: {\n name: 'HttpBridge',\n client: { url: nodeUrl, discoverRoots: 'start' },\n schema: HttpBridgeConfigSchema,\n security: { allowAnonymous: true },\n },\n })\n await bridge.start()\n bridgeSingletonMap.set(nodeUrl, bridge)\n return bridge\n })\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport { buildNextBlock, createDeclarationIntent } from '@xyo-network/chain-sdk'\nimport type { WithHashMeta } from '@xyo-network/payload-model'\nimport type { BlockBoundWitness, XL1BlockRange } from '@xyo-network/xl1-protocol'\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 { 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/payload-model'\nimport type { BalancesStepSummary, MapType } from '@xyo-network/xl1-protocol-sdk'\nimport { hasMongoConfig, MemoryMap } from '@xyo-network/xl1-protocol-sdk'\n\nimport type { ConfigContext } from '../ConfigContext.ts'\n\nexport async function initBalanceSummaryMap({ config, logger }: ConfigContext): 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, Logger } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport type { AttachableArchivistInstance } from '@xyo-network/archivist-model'\nimport { asAttachableArchivistInstance } from '@xyo-network/archivist-model'\nimport type { BridgeInstance } from '@xyo-network/bridge-model'\nimport type { AttachableModuleInstance, ModuleIdentifier } from '@xyo-network/module-model'\nimport { asAttachableModuleInstance } from '@xyo-network/module-model'\nimport type { Initializable } from '@xyo-network/xl1-protocol'\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 const initBridgedModule: Initializable<\n { bridge: BridgeInstance; moduleName: ModuleIdentifier }, AttachableModuleInstance\n> = async ({ bridge, moduleName }): 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 const initBridgedArchivistModule: Initializable<\n { bridge: BridgeInstance; logger?: Logger; moduleName: ModuleIdentifier }, AttachableArchivistInstance\n> = async ({ bridge, moduleName }): Promise<AttachableArchivistInstance> => {\n return assertEx(\n asAttachableArchivistInstance(await initBridgedModule({ bridge, moduleName })),\n () => `Could not convert ${moduleName} to attachable archivist instance`,\n )\n}\n","import {\n asAddress,\n assertEx, type Logger, toAddress, toEthAddress,\n} from '@xylabs/sdk-js'\nimport { EthereumChainStakeEvents, EthereumChainStakeViewer } from '@xyo-network/chain-sdk'\nimport { StakedXyoChainV2__factory } from '@xyo-network/typechain'\nimport type { ChainId } from '@xyo-network/xl1-protocol'\nimport {\n type Config, SimpleChainStakeViewer, type StakeViewer,\n} from '@xyo-network/xl1-protocol-sdk'\n\nimport { canUseEvmProvider, initEvmProvider } from '../evm/index.ts'\n\nexport async function initEvmChainStakeViewer(config: Config, logger?: Logger): Promise<StakeViewer> {\n const provider = await initEvmProvider({ config, logger })\n const contractAddress = assertEx(config.chain.id, () => 'Missing config.evm.chainId') as ChainId\n const contract = StakedXyoChainV2__factory.connect(toEthAddress(contractAddress), provider)\n const stakeEventsViewer = await EthereumChainStakeEvents.create({ contract, logger })\n assertEx(await stakeEventsViewer.start(), () => 'Failed to start EthereumChainStakeEvents reader')\n const stakeChainViewer = await EthereumChainStakeViewer.create({\n contract, stakeEventsViewer, logger,\n })\n assertEx(await stakeChainViewer.start(), () => 'Failed to start EthereumChainStake viewer')\n return stakeChainViewer\n}\n\nexport async function initSimpleStakeViewer(config: Config, logger?: Logger): Promise<StakeViewer> {\n const stakeChainViewer = await SimpleChainStakeViewer.create({\n chainId: asAddress(toAddress(1n), true), logger, positions: [],\n })\n assertEx(await stakeChainViewer.start(), () => 'Failed to start SimpleChainStake viewer')\n return stakeChainViewer\n}\n\nexport async function initChainStakeViewer(config: Config, logger?: Logger): Promise<StakeViewer> {\n if (canUseEvmProvider({ config })) {\n return await initEvmChainStakeViewer(config, logger)\n } else {\n console.warn('[API] Infura configuration not found. Using SimpleChainStakeViewer with no positions. This means no staking data will be available.')\n return await initSimpleStakeViewer(config, logger)\n }\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\nimport type { Provider } from 'ethers'\nimport type { JsonRpcProvider } from 'ethers/providers'\n\nimport { canUseInfuraProvider, initInfuraProvider } from './initInfuraProvider.ts'\nimport { canUseJsonRpcProvider, initJsonRpcProvider } from './initJsonRpcProvider.ts'\n\nlet provider: Promise<JsonRpcProvider> | undefined\n\nexport const initEvmProvider = async ({ config }: { config: Pick<Config, 'evm'>; logger?: Logger }): Promise<Provider> => {\n if (provider) return provider\n if (canUseInfuraProvider(config)) {\n provider = initInfuraProvider(config)\n } else if (canUseJsonRpcProvider(config)) {\n provider = initJsonRpcProvider(config)\n }\n return assertEx(await provider, () => 'No provider available')\n}\n\nexport const canUseEvmProvider = ({ config }: { config: Pick<Config, 'evm'> }) => {\n return canUseInfuraProvider(config) || canUseJsonRpcProvider(config)\n}\n","import { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\nimport { InfuraProvider } from 'ethers/providers'\n\nimport { canUseChainId, getChainId } from './initChainId.ts'\n\nlet instance: Promise<InfuraProvider> | undefined\n\nexport const initInfuraProvider = (config: Pick<Config, 'evm'>) => {\n if (instance) return instance\n const providerConfig = getInfuraProviderConfig(config)\n instance = Promise.resolve(new InfuraProvider(...providerConfig))\n return instance\n}\n\nexport const canUseInfuraProvider = (config: Pick<Config, 'evm'>): boolean => {\n return canUseChainId(config)\n && isDefined(config.evm?.infura?.projectId)\n && isDefined(config.evm?.infura?.projectSecret)\n}\n\nexport const getInfuraProviderConfig = (config: Pick<Config, 'evm'>) => {\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(config), projectId, projectSecret] as const\n}\n","import {\n assertEx, hexFrom, isDefined, isHex,\n} from '@xylabs/sdk-js'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\nexport const canUseChainId = (config: Pick<Config, 'evm'>): boolean => {\n return isDefined(config.evm.chainId)\n}\n\nexport const getChainId = (config: Pick<Config, 'evm'>) => {\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, isDefined } from '@xylabs/sdk-js'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\nimport { JsonRpcProvider } from 'ethers/providers'\n\nimport { canUseChainId, getChainId } from './initChainId.ts'\n\nexport const initJsonRpcProvider = (config: Pick<Config, 'evm'>) => {\n const providerConfig = getJsonRpcProviderConfig(config)\n return Promise.resolve(new JsonRpcProvider(...providerConfig))\n}\n\nexport const canUseJsonRpcProvider = (config: Pick<Config, 'evm'>) => {\n return canUseChainId(config)\n && isDefined(config.evm.jsonRpc?.url)\n}\n\nexport const getJsonRpcProviderConfig = (config: Pick<Config, 'evm'>) => {\n const jsonRpcUrl = assertEx(config.evm.jsonRpc?.url, () => 'Missing config.evm.jsonRpc.url')\n return [jsonRpcUrl, getChainId(config)] as const\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport { isUndefined } from '@xylabs/sdk-js'\nimport { HDWallet } from '@xyo-network/wallet'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type { Initializable, InitializableParams } from '@xyo-network/xl1-protocol'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\nimport { ADDRESS_INDEX, generateXyoBaseWalletFromPhrase } from '@xyo-network/xl1-protocol-sdk'\n\nlet accountServiceSingleton: Promisable<WalletInstance> | undefined\n\nexport const initProducerAccount: Initializable<InitializableParams<{ config: Config }>, WalletInstance>\n = async ({ config, logger }): Promise<WalletInstance> => {\n if (accountServiceSingleton) return accountServiceSingleton\n let walletPhrase = config.producer.mnemonic\n if (isUndefined(walletPhrase)) {\n logger?.warn('[Producer] No wallet mnemonic specified!')\n const randomMnemonic = HDWallet.generateMnemonic()\n logger?.warn(`[Producer] 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 accountServiceSingleton = account\n return accountServiceSingleton\n }\n","import { assertEx, isString } from '@xylabs/sdk-js'\nimport type { BiosExternalInterface } from '@xyo-network/bios-model'\nimport { HDWallet } from '@xyo-network/wallet'\n\nimport type { ConfigContext } from '../ConfigContext.ts'\n\n// TODO: Make nodejs version of bios support round tripping mnemonic between boots\nexport async function initSeedPhrase({\n config, logger, bios,\n}: ConfigContext<{ bios: BiosExternalInterface }>): Promise<string> {\n const storedSeedPhrase = await bios.seedPhraseStore.get('os')\n logger?.debug(`[API] Stored mnemonic: ${storedSeedPhrase}`)\n const { mnemonic } = config.api\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('os', 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('os', seedPhrase)\n }\n return assertEx(await bios.seedPhraseStore.get('os'), () => 'Unable to acquire mnemonic from bios')\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type {\n BalancesStepSummary, MapType, TransfersStepSummary,\n} from '@xyo-network/xl1-protocol-sdk'\n\nimport type { ConfigContext } from '../ConfigContext.ts'\nimport { loadNode } from '../manifest/index.ts'\n\nasync function chainArchivistFromNode(node: NodeInstance) {\n const chainArchivist = assertEx(asArchivistInstance(\n await node.resolve('Chain:Validated'),\n { required: true },\n ), () => 'FinalizedArchivist not found in node')\n return chainArchivist\n}\n\nasync function pendingArchivistFromNode(node: NodeInstance) {\n const pendingArchivist = assertEx(asArchivistInstance(\n await node.resolve('XYOChain:Pending:PendingTransactions'),\n { required: true },\n ), () => 'PendingArchivist not found in node')\n return pendingArchivist\n}\n\nexport async function initServerNode({\n wallet, logger, config, node: providedNode, transfersSummaryMap, balancesSummaryMap,\n}: ConfigContext<{\n balancesSummaryMap: MapType<string, WithStorageMeta<BalancesStepSummary>>\n node?: NodeInstance\n transfersSummaryMap: MapType<string, WithStorageMeta<TransfersStepSummary>>\n wallet: WalletInstance\n}>) {\n const node: NodeInstance = providedNode ?? await loadNode({\n wallet, logger, config, transfersSummaryMap, balancesSummaryMap,\n })\n const chainArchivist = await chainArchivistFromNode(node)\n const pendingArchivist = await pendingArchivistFromNode(node)\n return {\n node, chainArchivist, pendingArchivist,\n }\n}\n","import { type BaseMongoSdkPrivateConfig } from '@xylabs/mongo'\nimport {\n asAddress, assertEx, isDefined,\n ZERO_ADDRESS,\n} from '@xylabs/sdk-js'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { MongoDBArchivistV2 } from '@xyo-network/archivist-mongodb'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport {\n AddressBalanceDivinerV2, AddressTransferDiviner, ArchivistSyncDiviner, HeadValidationDiviner,\n} from '@xyo-network/chain-modules'\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 type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { StepSizes } from '@xyo-network/xl1-protocol'\nimport type {\n BalancesStepSummary, MapType, TransfersStepSummary,\n} from '@xyo-network/xl1-protocol-sdk'\nimport { hasMongoConfig } from '@xyo-network/xl1-protocol-sdk'\nimport { Semaphore } from 'async-mutex'\n\nimport type { ConfigContext } from '../ConfigContext.ts'\n\n/**\n * Used for retrieving a locator with the necessary modules registered for testing\n * operation of the node (entirely in memory)\n * @returns A locator with the necessary modules registered\n */\nexport const getLocator = async ({\n config, logger, balancesSummaryMap, transfersSummaryMap,\n}: ConfigContext<{\n balancesSummaryMap: MapType<string, WithStorageMeta<BalancesStepSummary>>\n transfersSummaryMap: MapType<string, WithStorageMeta<TransfersStepSummary>>\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 }\n\n locator.register(AddressBalanceDivinerV2.factory<AddressBalanceDivinerV2>({\n traceProvider, meterProvider, statusReporter, summaryMap: balancesSummaryMap, stepSemaphores: StepSizes.map(() => new Semaphore(20)),\n }))\n\n locator.register(AddressTransferDiviner.factory<AddressTransferDiviner>({\n traceProvider, meterProvider, statusReporter, summaryMap: transfersSummaryMap, stepSemaphores: StepSizes.map(() => new Semaphore(20)),\n }))\n\n const chainId = isDefined(config.chain.id)\n ? assertEx(asAddress(config.chain.id), () => 'chain.id must be an Address')\n : ZERO_ADDRESS\n locator.register(HeadValidationDiviner.factory<HeadValidationDiviner>({\n traceProvider,\n meterProvider,\n statusReporter,\n chainId,\n allowedProducers: config.producer.allowlist,\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 locator.register(ArchivistSyncDiviner.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n return locator\n}\n","import { ManifestWrapper } from '@xyo-network/manifest-wrapper'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type {\n BalancesStepSummary, MapType, TransfersStepSummary,\n} from '@xyo-network/xl1-protocol-sdk'\n\nimport type { ConfigContext } from '../ConfigContext.ts'\nimport { getLocator } from './getLocator.ts'\nimport { NodeManifest } from './nodeManifest.ts'\nimport { PrivateChildManifests } from './private/index.ts'\nimport { PublicChildManifestsWithMempool, PublicChildManifestsWithoutMempool } 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 wallet, config, balancesSummaryMap, transfersSummaryMap,\n}: ConfigContext<{\n balancesSummaryMap: MapType<string, WithStorageMeta<BalancesStepSummary>>\n transfersSummaryMap: MapType<string, WithStorageMeta<TransfersStepSummary>>\n wallet: WalletInstance\n}>) => {\n const { enabled: mempoolEnabled } = config.mempool\n const PublicChildManifests = mempoolEnabled ? PublicChildManifestsWithoutMempool : PublicChildManifestsWithMempool\n const locator = await getLocator({\n config, balancesSummaryMap, transfersSummaryMap,\n })\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 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 \"config\": {\n \"accountPath\": \"1/1'/2'\",\n \"schema\": \"network.xyo.diviner.chain.head.validation.config\",\n \"eventSubscriptions\": [\n {\n \"sourceEvent\": \"inserted\",\n \"sourceModule\": \"Submissions\",\n \"targetModuleFunction\": \"divine\"\n }\n ],\n \"inArchivist\": \"Submissions\",\n \"outArchivist\": \"Validated\",\n \"name\": \"HeadValidationDiviner\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1'/3'\",\n \"automations\": [\n {\n \"frequency\": 1000,\n \"frequencyUnits\": \"millis\",\n \"schema\": \"network.xyo.automation.interval\",\n \"type\": \"interval\"\n }\n ],\n \"name\": \"ChainValidationSentinel\",\n \"schema\": \"network.xyo.sentinel.config\",\n \"synchronous\": true,\n \"tasks\": [\n {\n \"mod\": \"HeadValidationDiviner\",\n \"endPoint\": \"divine\"\n }\n ]\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1'/4'\",\n \"automations\": [\n {\n \"frequency\": 10000,\n \"frequencyUnits\": \"millis\",\n \"schema\": \"network.xyo.automation.interval\",\n \"type\": \"interval\"\n }\n ],\n \"name\": \"AddressBalancePollingSentinel\",\n \"schema\": \"network.xyo.sentinel.config\",\n \"synchronous\": true,\n \"tasks\": [\n {\n \"mod\": \"AddressBalanceDiviner\",\n \"endPoint\": \"divine\"\n }\n ]\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1'/5'\",\n \"automations\": [\n {\n \"frequency\": 10000,\n \"frequencyUnits\": \"millis\",\n \"schema\": \"network.xyo.automation.interval\",\n \"type\": \"interval\"\n }\n ],\n \"name\": \"AddressTransferPollingSentinel\",\n \"schema\": \"network.xyo.sentinel.config\",\n \"synchronous\": true,\n \"tasks\": [\n {\n \"mod\": \"AddressTransferDiviner\",\n \"endPoint\": \"divine\"\n }\n ]\n }\n }\n ],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"1/1/1\",\n \"name\": \"Submissions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"payloadSdkConfig\": {\n \"collection\": \"chain_submissions\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1/2\",\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 \"config\": {\n \"accountPath\": \"1/1/3'\",\n \"name\": \"AddressBalanceDiviner\",\n \"schema\": \"network.xyo.diviner.chain.address.balance.config\",\n \"map\": {\n \"lmdb\": {\n \"dbName\": \"summaries\",\n \"storeName\": \"address_balance\",\n \"location\": \".store\"\n }\n },\n \"archivist\": \"Validated\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1/4'\",\n \"name\": \"AddressTransferDiviner\",\n \"schema\": \"network.xyo.diviner.chain.address.transfer.config\",\n \"map\": {\n \"lmdb\": {\n \"dbName\": \"summaries\",\n \"storeName\": \"address_transfer\",\n \"location\": \".store\"\n }\n },\n \"archivist\": \"Validated\"\n }\n }\n ]\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"2\",\n \"name\": \"Pending\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"2/1/1\",\n \"name\": \"PendingTransactions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"labels\": {\n \"network.xyo.storage.class\": \"mongodb\"\n },\n \"payloadSdkConfig\": {\n \"collection\": \"pending_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 PackageManifestPayload\n/**\n * Pending Node Manifest\n */\nconst PendingNodeManifest = Pending as PackageManifestPayload\n/**\n * Public Child Manifests\n */\nexport const PublicChildManifestsWithMempool: ModuleManifest[] = [\n ...ChainNodeManifest.nodes,\n ...PendingNodeManifest.nodes,\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\": \"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 \"allowedQueries\": [\n \"network.xyo.query.archivist.get\",\n \"network.xyo.query.archivist.next\"\n ],\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\": \"Submissions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"payloadSdkConfig\": {\n \"collection\": \"chain_submissions\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1/2\",\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 \"config\": {\n \"accountPath\": \"1/1/3'\",\n \"name\": \"AddressBalanceDiviner\",\n \"schema\": \"network.xyo.diviner.chain.address.balance.config\",\n \"map\": {\n \"lmdb\": {\n \"dbName\": \"summaries\",\n \"storeName\": \"address_balance\",\n \"location\": \".store\"\n }\n },\n \"archivist\": \"Validated\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1/4'\",\n \"name\": \"AddressTransferDiviner\",\n \"schema\": \"network.xyo.diviner.chain.address.transfer.config\",\n \"map\": {\n \"lmdb\": {\n \"dbName\": \"summaries\",\n \"storeName\": \"address_transfer\",\n \"location\": \".store\"\n }\n },\n \"archivist\": \"Validated\"\n }\n }\n ]\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"2\",\n \"name\": \"Pending\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"2/1/1\",\n \"name\": \"PendingTransactions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"labels\": {\n \"network.xyo.storage.class\": \"mongodb\"\n },\n \"payloadSdkConfig\": {\n \"collection\": \"pending_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 */\n const ChainNodeManifest = Chain as PackageManifestPayload\n/**\n * Pending Node Manifest\n */\n const PendingNodeManifest = Pending as PackageManifestPayload\n/**\n * Public Child Manifests\n */\nexport const PublicChildManifestsWithoutMempool: ModuleManifest[] = [\n ...ChainNodeManifest.nodes,\n ...PendingNodeManifest.nodes,\n]\n","import { isDefined } from '@xylabs/sdk-js'\nimport { boot } from '@xyo-network/bios'\nimport { HDWallet } from '@xyo-network/wallet'\n\nimport type { ConfigContext } from '../ConfigContext.ts'\nimport { initSeedPhrase } from './initSeedPhrase.ts'\n\nexport async function initServerWallet({ config, logger }: ConfigContext) {\n const { mnemonic } = config.api\n const bios = await boot()\n const seedPhrase = isDefined(mnemonic)\n ? mnemonic\n : await initSeedPhrase({\n bios, config, logger,\n })\n return await HDWallet.fromPhrase(seedPhrase)\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/payload-model'\nimport type { MapType, TransfersStepSummary } from '@xyo-network/xl1-protocol-sdk'\nimport { hasMongoConfig, MemoryMap } from '@xyo-network/xl1-protocol-sdk'\n\nimport type { ConfigContext } from '../ConfigContext.ts'\n\nexport async function initTransferSummaryMap({ config, logger }: ConfigContext): 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 {\n BaseElectionService,\n type BaseElectionServicesParams,\n ChainBlockNumberIterationService,\n type XyoChainIteratorParams, XyoStakeIntentService, type XyoStakeIntentServiceParams,\n} from '@xyo-network/chain-services'\nimport type { Initializable } from '@xyo-network/xl1-protocol'\nimport type {\n BlockViewer,\n ElectionService, StakeIntentService,\n} from '@xyo-network/xl1-protocol-sdk'\nimport { timeBudget } from '@xyo-network/xl1-protocol-sdk'\n\nlet chainIteratorServiceSingleton: Promise<BlockViewer> | undefined\nlet stakeIntentServiceSingleton: Promise<StakeIntentService> | undefined\nlet electionServiceSingleton: Promise<ElectionService> | undefined\n\nexport const initChainIterator: Initializable<XyoChainIteratorParams, BlockViewer> = (params) => {\n if (chainIteratorServiceSingleton) return chainIteratorServiceSingleton\n return timeBudget('initChainIterator', params.logger, () => {\n chainIteratorServiceSingleton = ChainBlockNumberIterationService.create(params)\n return chainIteratorServiceSingleton\n }, 2000, true)\n}\n\nexport const initStakeIntentService: Initializable<XyoStakeIntentServiceParams, StakeIntentService>\n = (params) => {\n if (stakeIntentServiceSingleton) return stakeIntentServiceSingleton\n return timeBudget('initStakeIntentService', params.logger, () => {\n stakeIntentServiceSingleton = XyoStakeIntentService.create(params)\n return stakeIntentServiceSingleton\n }, 2000, true)\n }\n\nexport const initElectionService: Initializable<BaseElectionServicesParams, ElectionService>\n = (params) => {\n if (electionServiceSingleton) return electionServiceSingleton\n return timeBudget('initElectionService', params.logger, () => {\n electionServiceSingleton = BaseElectionService.create(params)\n return electionServiceSingleton\n }, 2000, true)\n }\n"],"mappings":";;;;AAEA,SAASA,4BAA4B;AACrC,SAASC,2BAA2B;AAEpC,SAASC,kBAAkB;AAC3B,SAASC,sBAAsB;AAC/B,SAASC,4BAA4B;AAE9B,IAAMC,oBAAoB,8BAC/BC,MACAC,aACAC,cACAC,YAAY,KACZC,MAAM,KACNC,kBAAAA;AAEA,QAAMC,OAAO,MAAMC,WAAWC,OAAO;IAAEC,SAAS;EAAS,CAAA;AACzD,QAAMC,gCAAgC,MAAMC,qBAAqBH,OAAO;IACtEC,SAAS;IACTR;IACAC;IACAG;IACAO,QAAQ;MACNC,QAAQC;MAAqBd;MAAMI;IACrC;EACF,CAAA;AAEA,QAAME,KAAKS,SAASL,6BAAAA;AACpB,QAAMJ,KAAKU,OAAON,8BAA8BO,OAAO;AAEvD,QAAMC,WAAW,MAAMC,eAAeX,OAAO;IAC3CC,SAAS;IACTG,QAAQ;MACNZ;MACAoB,aAAa;MACbP,QAAQQ;MACRC,OAAO;QACL;UACEC,UAAU;UACVC,KAAKd,8BAA8BO;UACnCQ,UAAU;QACZ;;MAEFC,aAAa;QACX;UACEvB;UACAwB,gBAAgB;UAChBd,QAAQ;UACRe,OAAOC,KAAKC,IAAG;UACfC,MAAM;QACR;;IAEJ;EACF,CAAA;AAEA,QAAMzB,KAAKS,SAASG,QAAAA;AACpB,QAAMZ,KAAKU,OAAOE,SAASD,OAAO;AAElC,SAAOX;AACT,GAnDiC;;;ACRjC,SAAS0B,iBAAiBC,mCAAmC;AAKtD,IAAMC,oCAA2D;EACtEC,KAAK;;EAELC,QAAQC;AACV;AAEA,IAAMC,8CAA8C,wBAACC,cAAAA;AACnD,QAAM,EAAEC,GAAE,IAAKD;AACf,QAAME,OAAO,GAAGD,EAAAA;AAChB,QAAME,kBAAkD;IAAED;EAAK;AAC/D,SAAOC;AACT,GALoD;AAOpD,IAAMC,uCAAuC,wBAACC,eAAAA;AAK5C,QAAMC,gBAAgD,CAAC;AACvD,SAAOA;AACT,GAP6C;AAStC,IAAMC,+BAA+B,8BAC1CP,WACAQ,SAAyCb,sCAAiC;AAE1E,QAAMc,2CAA2CV,4CAA4CC,SAAAA;AAC7F,QAAMU,oCAAoCN,qCAAqCJ,SAAAA;AAG/E,QAAMW,qBAA4C;;IAEhD,GAAGhB;;IAEH,GAAGc;;IAEH,GAAGD;;IAEH,GAAGE;EACL;AACA,QAAME,mBAAmB,MAAMC,gBAAgBC,OAAO;IAAEC,SAAS;IAAUP,QAAQG;EAAmB,CAAA;AACtG,QAAMK,kBACJ,GAAGJ,iBAAiBX,EAAE,SACtBD,WACAY,kBACA,GAAA;AAGF,SAAOA;AACT,GA3B4C;;;AC5B5C,SAASK,YAAYC,8BAA8B;AAEnD,SAASC,aAAa;AAEtB,IAAMC,YAAY,IAAIC,MAAAA;AACtB,IAAMC,qBAAqB,oBAAIC,IAAAA;AAExB,IAAMC,aAAa,8BAAOC,YAAAA;AAC/B,SAAO,MAAML,UAAUM,aAAa,YAAA;AAClC,UAAMC,WAAWL,mBAAmBM,IAAIH,OAAAA;AACxC,QAAIE,SAAU,QAAOA;AACrB,UAAME,SAAS,MAAMC,WAAWC,OAAO;MACrCC,SAAS;MACTC,QAAQ;QACNC,MAAM;QACNC,QAAQ;UAAEC,KAAKX;UAASY,eAAe;QAAQ;QAC/CC,QAAQC;QACRC,UAAU;UAAEC,gBAAgB;QAAK;MACnC;IACF,CAAA;AACA,UAAMZ,OAAOa,MAAK;AAClBpB,uBAAmBqB,IAAIlB,SAASI,MAAAA;AAChC,WAAOA;EACT,CAAA;AACF,GAjB0B;;;ACN1B,SAASe,gBAAgBC,+BAA+B;AAIxD,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,SAASQ,oBAAoD;AAE7D,SAASC,gBAAgB;AACzB,SAASC,gBAAgB;AAGzB,SAASC,gBAAgBC,iBAAiB;AAI1C,eAAsBC,sBAAsB,EAAEC,QAAQC,OAAM,GAAiB;AAC3E,QAAMC,cAAcF,OAAOG,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,aAAS,MAAMP,OAAOQ,MAAK,GAAI,MAAM,sCAAA;AACrC,WAAOR;EACT,OAAO;AACLnB,YAAQ4B,KAAK,6EAAA;AACb,WAAO,IAAIC,UAAAA;EACb;AACF;AAtBsB/B;;;ACTtB,SAASgC,YAAAA,iBAAgB;AAEzB,SAASC,qCAAqC;AAG9C,SAASC,kCAAkC;AAE3C,SAASC,SAAAA,cAAa;AAEtB,IAAMC,aAAY,IAAIC,OAAAA;AAGtB,IAAMC,0BAAmD,CAAC;AAEnD,IAAMC,oBAET,8BAAO,EAAEC,QAAQC,WAAU,MAAE;AAC/B,SAAO,MAAML,WAAUM,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,GAhBI;AAkBG,IAAMI,6BAET,8BAAO,EAAEZ,QAAQC,WAAU,MAAE;AAC/B,SAAOK,UACLO,8BAA8B,MAAMd,kBAAkB;IAAEC;IAAQC;EAAW,CAAA,CAAA,GAC3E,MAAM,qBAAqBA,UAAAA,mCAA6C;AAE5E,GALI;;;ACrCJ,SACEa,WACAC,YAAAA,WAAuBC,WAAWC,oBAC7B;AACP,SAASC,0BAA0BC,gCAAgC;AACnE,SAASC,iCAAiC;AAE1C,SACeC,8BACR;;;ACRP,SAASC,YAAAA,iBAAgB;;;ACDzB,SAASC,YAAAA,WAAUC,aAAAA,kBAAiB;AAEpC,SAASC,sBAAsB;;;ACF/B,SACEC,YAAAA,WAAUC,SAASC,WAAWC,aACzB;AAGA,IAAMC,gBAAgB,wBAACC,WAAAA;AAC5B,SAAOC,UAAUD,OAAOE,IAAIC,OAAO;AACrC,GAF6B;AAItB,IAAMC,aAAa,wBAACJ,WAAAA;AACzB,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;;;ADH1B,IAAIG;AAEG,IAAMC,qBAAqB,wBAACC,WAAAA;AACjC,MAAIF,SAAU,QAAOA;AACrB,QAAMG,iBAAiBC,wBAAwBF,MAAAA;AAC/CF,aAAWK,QAAQC,QAAQ,IAAIC,eAAAA,GAAkBJ,cAAAA,CAAAA;AACjD,SAAOH;AACT,GALkC;AAO3B,IAAMQ,uBAAuB,wBAACN,WAAAA;AACnC,SAAOO,cAAcP,MAAAA,KAChBQ,WAAUR,OAAOS,KAAKC,QAAQC,SAAAA,KAC9BH,WAAUR,OAAOS,KAAKC,QAAQE,aAAAA;AACrC,GAJoC;AAM7B,IAAMV,0BAA0B,wBAACF,WAAAA;AACtC,QAAMW,YAAYE,UAASb,OAAOS,KAAKC,QAAQC,WAAW,MAAM,qCAAA;AAChE,QAAMC,gBAAgBC,UAASb,OAAOS,KAAKC,QAAQE,eAAe,MAAM,yCAAA;AACxE,SAAO;IAACE,WAAWd,MAAAA;IAASW;IAAWC;;AACzC,GAJuC;;;AErBvC,SAASG,YAAAA,WAAUC,aAAAA,kBAAiB;AAEpC,SAASC,uBAAuB;AAIzB,IAAMC,sBAAsB,wBAACC,WAAAA;AAClC,QAAMC,iBAAiBC,yBAAyBF,MAAAA;AAChD,SAAOG,QAAQC,QAAQ,IAAIC,gBAAAA,GAAmBJ,cAAAA,CAAAA;AAChD,GAHmC;AAK5B,IAAMK,wBAAwB,wBAACN,WAAAA;AACpC,SAAOO,cAAcP,MAAAA,KAChBQ,WAAUR,OAAOS,IAAIC,SAASC,GAAAA;AACrC,GAHqC;AAK9B,IAAMT,2BAA2B,wBAACF,WAAAA;AACvC,QAAMY,aAAaC,UAASb,OAAOS,IAAIC,SAASC,KAAK,MAAM,gCAAA;AAC3D,SAAO;IAACC;IAAYE,WAAWd,MAAAA;;AACjC,GAHwC;;;AHPxC,IAAIe;AAEG,IAAMC,kBAAkB,8BAAO,EAAEC,OAAM,MAAoD;AAChG,MAAIF,SAAU,QAAOA;AACrB,MAAIG,qBAAqBD,MAAAA,GAAS;AAChCF,eAAWI,mBAAmBF,MAAAA;EAChC,WAAWG,sBAAsBH,MAAAA,GAAS;AACxCF,eAAWM,oBAAoBJ,MAAAA;EACjC;AACA,SAAOK,UAAS,MAAMP,UAAU,MAAM,uBAAA;AACxC,GAR+B;AAUxB,IAAMQ,oBAAoB,wBAAC,EAAEN,OAAM,MAAmC;AAC3E,SAAOC,qBAAqBD,MAAAA,KAAWG,sBAAsBH,MAAAA;AAC/D,GAFiC;;;ADRjC,eAAsBO,wBAAwBC,QAAgBC,QAAe;AAC3E,QAAMC,YAAW,MAAMC,gBAAgB;IAAEH;IAAQC;EAAO,CAAA;AACxD,QAAMG,kBAAkBC,UAASL,OAAOM,MAAMC,IAAI,MAAM,4BAAA;AACxD,QAAMC,WAAWC,0BAA0BC,QAAQC,aAAaP,eAAAA,GAAkBF,SAAAA;AAClF,QAAMU,oBAAoB,MAAMC,yBAAyBC,OAAO;IAAEN;IAAUP;EAAO,CAAA;AACnFI,EAAAA,UAAS,MAAMO,kBAAkBG,MAAK,GAAI,MAAM,iDAAA;AAChD,QAAMC,mBAAmB,MAAMC,yBAAyBH,OAAO;IAC7DN;IAAUI;IAAmBX;EAC/B,CAAA;AACAI,EAAAA,UAAS,MAAMW,iBAAiBD,MAAK,GAAI,MAAM,2CAAA;AAC/C,SAAOC;AACT;AAXsBjB;AAatB,eAAsBmB,sBAAsBlB,QAAgBC,QAAe;AACzE,QAAMe,mBAAmB,MAAMG,uBAAuBL,OAAO;IAC3DM,SAASC,UAAUC,UAAU,EAAE,GAAG,IAAA;IAAOrB;IAAQsB,WAAW,CAAA;EAC9D,CAAA;AACAlB,EAAAA,UAAS,MAAMW,iBAAiBD,MAAK,GAAI,MAAM,yCAAA;AAC/C,SAAOC;AACT;AANsBE;AAQtB,eAAsBM,qBAAqBxB,QAAgBC,QAAe;AACxE,MAAIwB,kBAAkB;IAAEzB;EAAO,CAAA,GAAI;AACjC,WAAO,MAAMD,wBAAwBC,QAAQC,MAAAA;EAC/C,OAAO;AACLyB,YAAQC,KAAK,qIAAA;AACb,WAAO,MAAMT,sBAAsBlB,QAAQC,MAAAA;EAC7C;AACF;AAPsBuB;;;AKjCtB,SAASI,mBAAmB;AAC5B,SAASC,gBAAgB;AAIzB,SAASC,eAAeC,uCAAuC;AAE/D,IAAIC;AAEG,IAAMC,sBACT,8BAAO,EAAEC,QAAQC,OAAM,MAAE;AACzB,MAAIH,wBAAyB,QAAOA;AACpC,MAAII,eAAeF,OAAOG,SAASC;AACnC,MAAIC,YAAYH,YAAAA,GAAe;AAC7BD,YAAQK,KAAK,0CAAA;AACb,UAAMC,iBAAiBC,SAASC,iBAAgB;AAChDR,YAAQK,KAAK;;EAEjBC,cAAAA;;KAEG;AACCL,mBAAeK;EACjB;AACA,QAAMG,SAAS,MAAMC,gCAAgCT,YAAAA;AACrD,QAAMU,UAAU,MAAMF,OAAOG,WAAWC,cAAcC,GAAG;AACzDjB,4BAA0Bc;AAC1B,SAAOd;AACT,GAjBE;;;ACXJ,SAASkB,YAAAA,WAAUC,gBAAgB;AAEnC,SAASC,YAAAA,iBAAgB;AAKzB,eAAsBC,eAAe,EACnCC,QAAQC,QAAQC,KAAI,GAC2B;AAC/C,QAAMC,mBAAmB,MAAMD,KAAKE,gBAAgBC,IAAI,IAAA;AACxDJ,UAAQK,MAAM,0BAA0BH,gBAAAA,EAAkB;AAC1D,QAAM,EAAEI,SAAQ,IAAKP,OAAOQ;AAC5B,MAAIC,SAASN,gBAAAA,KAAqBM,SAASF,QAAAA,GAAW;AACpDN,YAAQS,KAAK,sFAAA;AACb,UAAMR,KAAKE,gBAAgBO,IAAI,MAAMJ,QAAAA;EACvC,OAAO;AACL,QAAIK;AACJ,QAAIH,SAASF,QAAAA,GAAW;AACtBK,mBAAaL;IACf,OAAO;AACLK,mBAAaC,UAASC,iBAAgB;AACtCb,cAAQc,IAAI,gGAAA;AACZd,cAAQc,IAAI,mBAAmBH,UAAAA,EAAY;IAC7C;AACA,UAAMV,KAAKE,gBAAgBO,IAAI,MAAMC,UAAAA;EACvC;AACA,SAAOI,UAAS,MAAMd,KAAKE,gBAAgBC,IAAI,IAAA,GAAO,MAAM,sCAAA;AAC9D;AArBsBN;;;ACPtB,SAASkB,YAAAA,kBAAgB;AACzB,SAASC,2BAA2B;;;ACApC,SACEC,aAAAA,YAAWC,YAAAA,WAAUC,aAAAA,YACrBC,oBACK;AACP,SAASC,mBAAAA,wBAAuB;AAChC,SAASC,0BAA0B;AACnC,SAASC,qBAAqB;AAC9B,SACEC,yBAAyBC,wBAAwBC,wBAAAA,uBAAsBC,6BAClE;AACP,SAASC,qBAAqB;AAC9B,SAASC,gBAAgBC,kCAAkC;AAC3D,SAASC,4BAA4B;AAGrC,SAASC,kBAAAA,uBAAsB;AAC/B,SAASC,iBAAiB;AAI1B,SAASC,kBAAAA,uBAAsB;AAC/B,SAASC,iBAAiB;AASnB,IAAMC,aAAa,8BAAO,EAC/BC,QAAQC,QAAQC,oBAAoBC,oBAAmB,MAIvD;AACA,QAAM,EAAEC,aAAY,IAAKJ,OAAOK,WAAWC,QAAQ,CAAC;AACpD,QAAM,EAAEC,MAAMC,WAAW,YAAYC,OAAa,KAAI,IAAKT,OAAOK,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,WAAUlB,MAAAA,EAASmB,gBAAeC,gBAAgBpB;AACtD,QAAMqB,iBAAiBrB,SAAS,IAAIsB,2BAA2BtB,MAAAA,IAAUuB;AAEzE,QAAMC,UAAU,IAAIC,qBAAAA;AAEpB,QAAMC,cAAc3B,OAAO4B,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,mBAAmBC,QAAQH,MAAAA,GAASlB,QAAW,IAAA;EAClE;AAEAC,UAAQkB,SAASG,wBAAwBD,QAAiC;IACxEjC;IAAeC;IAAeS;IAAgByB,YAAY7C;IAAoB8C,gBAAgBC,UAAUC,IAAI,MAAM,IAAIC,UAAU,EAAA,CAAA;EAClI,CAAA,CAAA;AAEA1B,UAAQkB,SAASS,uBAAuBP,QAAgC;IACtEjC;IAAeC;IAAeS;IAAgByB,YAAY5C;IAAqB6C,gBAAgBC,UAAUC,IAAI,MAAM,IAAIC,UAAU,EAAA,CAAA;EACnI,CAAA,CAAA;AAEA,QAAME,UAAUlC,WAAUnB,OAAOsD,MAAMC,EAAE,IACrCC,UAASC,WAAUzD,OAAOsD,MAAMC,EAAE,GAAG,MAAM,6BAAA,IAC3CG;AACJjC,UAAQkB,SAASgB,sBAAsBd,QAA+B;IACpEjC;IACAC;IACAS;IACA+B;IACAO,kBAAkB5D,OAAO6D,SAASC;EACpC,CAAA,CAAA;AACArC,UAAQkB,SAASoB,iBAAgBlB,QAAQ;IACvCjC;IAAeC;IAAeS;EAChC,CAAA,CAAA;AACAG,UAAQkB,SAASqB,gBAAenB,QAAQ;IACtCjC;IAAeC;IAAeS;EAChC,CAAA,CAAA;AACAG,UAAQkB,SAASsB,cAAcpB,QAAQ;IACrCjC;IAAeC;IAAeS;EAChC,CAAA,CAAA;AACAG,UAAQkB,SAASuB,sBAAqBrB,QAAQ;IAC5CjC;IAAeC;IAAeS;EAChC,CAAA,CAAA;AACA,SAAOG;AACT,GArE0B;;;AC/B1B,SAAS0C,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,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,QAAU;AAAA,cACV,oBAAsB;AAAA,gBACpB;AAAA,kBACE,aAAe;AAAA,kBACf,cAAgB;AAAA,kBAChB,sBAAwB;AAAA,gBAC1B;AAAA,cACF;AAAA,cACA,aAAe;AAAA,cACf,cAAgB;AAAA,cAChB,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,aAAe;AAAA,gBACb;AAAA,kBACE,WAAa;AAAA,kBACb,gBAAkB;AAAA,kBAClB,QAAU;AAAA,kBACV,MAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,MAAQ;AAAA,cACR,QAAU;AAAA,cACV,aAAe;AAAA,cACf,OAAS;AAAA,gBACP;AAAA,kBACE,KAAO;AAAA,kBACP,UAAY;AAAA,gBACd;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,aAAe;AAAA,gBACb;AAAA,kBACE,WAAa;AAAA,kBACb,gBAAkB;AAAA,kBAClB,QAAU;AAAA,kBACV,MAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,MAAQ;AAAA,cACR,QAAU;AAAA,cACV,aAAe;AAAA,cACf,OAAS;AAAA,gBACP;AAAA,kBACE,KAAO;AAAA,kBACP,UAAY;AAAA,gBACd;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,aAAe;AAAA,gBACb;AAAA,kBACE,WAAa;AAAA,kBACb,gBAAkB;AAAA,kBAClB,QAAU;AAAA,kBACV,MAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,MAAQ;AAAA,cACR,QAAU;AAAA,cACV,aAAe;AAAA,cACf,OAAS;AAAA,gBACP;AAAA,kBACE,KAAO;AAAA,kBACP,UAAY;AAAA,gBACd;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA,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,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,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,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,MAAQ;AAAA,cACR,QAAU;AAAA,cACV,KAAO;AAAA,gBACL,MAAQ;AAAA,kBACN,QAAU;AAAA,kBACV,WAAa;AAAA,kBACb,UAAY;AAAA,gBACd;AAAA,cACF;AAAA,cACA,WAAa;AAAA,YACf;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,MAAQ;AAAA,cACR,QAAU;AAAA,cACV,KAAO;AAAA,gBACL,MAAQ;AAAA,kBACN,QAAU;AAAA,kBACV,WAAa;AAAA,kBACb,UAAY;AAAA,gBACd;AAAA,cACF;AAAA,cACA,WAAa;AAAA,YACf;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAU;AACZ;;;AC9KA;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,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;;;AC1BA,IAAMC,oBAAoBC;AAI1B,IAAMC,sBAAsBC;AAIrB,IAAMC,kCAAoD;KAC5DJ,kBAAkBK;KAClBH,oBAAoBG;;;;AClBzB,IAAAC,iBAAA;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,gBAAkB;AAAA,gBAChB;AAAA,gBACA;AAAA,cACF;AAAA,cACA,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,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,UACA;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,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,MAAQ;AAAA,cACR,QAAU;AAAA,cACV,KAAO;AAAA,gBACL,MAAQ;AAAA,kBACN,QAAU;AAAA,kBACV,WAAa;AAAA,kBACb,UAAY;AAAA,gBACd;AAAA,cACF;AAAA,cACA,WAAa;AAAA,YACf;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAU;AAAA,cACR,aAAe;AAAA,cACf,MAAQ;AAAA,cACR,QAAU;AAAA,cACV,KAAO;AAAA,gBACL,MAAQ;AAAA,kBACN,QAAU;AAAA,kBACV,WAAa;AAAA,kBACb,UAAY;AAAA,gBACd;AAAA,cACF;AAAA,cACA,WAAa;AAAA,YACf;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAU;AACZ;;;AChGA,IAAAC,mBAAA;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,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;;;AC1BC,IAAMC,qBAAoBC;AAI1B,IAAMC,uBAAsBC;AAItB,IAAMC,qCAAuD;KAC/DJ,mBAAkBK;KAClBH,qBAAoBG;;;;ATDlB,IAAMC,WAAW,8BAAO,EAC7BC,QAAQC,QAAQC,oBAAoBC,oBAAmB,MAKvD;AACA,QAAM,EAAEC,SAASC,eAAc,IAAKJ,OAAOK;AAC3C,QAAMC,uBAAuBF,iBAAiBG,qCAAqCC;AACnF,QAAMC,UAAU,MAAMC,WAAW;IAC/BV;IAAQC;IAAoBC;EAC9B,CAAA;AACA,QAAMS,UAAU,IAAIC,gBAAgBC,cAAcd,QAAQU,SAASH,sBAAsBQ,qBAAAA;AACzF,QAAM,CAACC,MAAM,GAAGC,UAAAA,IAAc,MAAML,QAAQM,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,GAnBwB;;;AFLxB,eAAeW,uBAAuBC,MAAkB;AACtD,QAAMC,iBAAiBC,WAASC,oBAC9B,MAAMH,KAAKI,QAAQ,iBAAA,GACnB;IAAEC,UAAU;EAAK,CAAA,GAChB,MAAM,sCAAA;AACT,SAAOJ;AACT;AANeF;AAQf,eAAeO,yBAAyBN,MAAkB;AACxD,QAAMO,mBAAmBL,WAASC,oBAChC,MAAMH,KAAKI,QAAQ,sCAAA,GACnB;IAAEC,UAAU;EAAK,CAAA,GAChB,MAAM,oCAAA;AACT,SAAOE;AACT;AANeD;AAQf,eAAsBE,eAAe,EACnCC,QAAQC,QAAQC,QAAQX,MAAMY,cAAcC,qBAAqBC,mBAAkB,GAMnF;AACA,QAAMd,OAAqBY,gBAAgB,MAAMG,SAAS;IACxDN;IAAQC;IAAQC;IAAQE;IAAqBC;EAC/C,CAAA;AACA,QAAMb,iBAAiB,MAAMF,uBAAuBC,IAAAA;AACpD,QAAMO,mBAAmB,MAAMD,yBAAyBN,IAAAA;AACxD,SAAO;IACLA;IAAMC;IAAgBM;EACxB;AACF;AAhBsBC;;;AY5BtB,SAASQ,aAAAA,kBAAiB;AAC1B,SAASC,YAAY;AACrB,SAASC,YAAAA,iBAAgB;AAKzB,eAAsBC,iBAAiB,EAAEC,QAAQC,OAAM,GAAiB;AACtE,QAAM,EAAEC,SAAQ,IAAKF,OAAOG;AAC5B,QAAMC,OAAO,MAAMC,KAAAA;AACnB,QAAMC,aAAaC,WAAUL,QAAAA,IACzBA,WACA,MAAMM,eAAe;IACnBJ;IAAMJ;IAAQC;EAChB,CAAA;AACJ,SAAO,MAAMQ,UAASC,WAAWJ,UAAAA;AACnC;AATsBP;;;ACPtB,SAASY,gBAAAA,qBAAoD;AAE7D,SAASC,YAAAA,kBAAgB;AACzB,SAASC,YAAAA,iBAAgB;AAGzB,SAASC,kBAAAA,iBAAgBC,aAAAA,kBAAiB;AAI1C,eAAsBC,uBAAuB,EAAEC,QAAQC,OAAM,GAAiB;AAC5E,QAAMC,cAAcF,OAAOG,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;AACLnB,YAAQ4B,KAAK,8EAAA;AACb,WAAO,IAAIC,WAAAA;EACb;AACF;AAtBsB/B;;;ACVtB,SACEgC,qBAEAC,kCAC6BC,6BACxB;AAMP,SAASC,kBAAkB;AAE3B,IAAIC;AACJ,IAAIC;AACJ,IAAIC;AAEG,IAAMC,oBAAwE,wBAACC,WAAAA;AACpF,MAAIJ,8BAA+B,QAAOA;AAC1C,SAAOK,WAAW,qBAAqBD,OAAOE,QAAQ,MAAA;AACpDN,oCAAgCO,iCAAiCC,OAAOJ,MAAAA;AACxE,WAAOJ;EACT,GAAG,KAAM,IAAA;AACX,GANqF;AAQ9E,IAAMS,yBACT,wBAACL,WAAAA;AACD,MAAIH,4BAA6B,QAAOA;AACxC,SAAOI,WAAW,0BAA0BD,OAAOE,QAAQ,MAAA;AACzDL,kCAA8BS,sBAAsBF,OAAOJ,MAAAA;AAC3D,WAAOH;EACT,GAAG,KAAM,IAAA;AACX,GANE;AAQG,IAAMU,sBACT,wBAACP,WAAAA;AACD,MAAIF,yBAA0B,QAAOA;AACrC,SAAOG,WAAW,uBAAuBD,OAAOE,QAAQ,MAAA;AACtDJ,+BAA2BU,oBAAoBJ,OAAOJ,MAAAA;AACtD,WAAOF;EACT,GAAG,KAAM,IAAA;AACX,GANE;","names":["ArchivistSyncDiviner","DivinerConfigSchema","MemoryNode","MemorySentinel","SentinelConfigSchema","initArchivistSync","name","inArchivist","outArchivist","frequency","max","traceProvider","node","MemoryNode","create","account","finalizedArchivistSyncDiviner","ArchivistSyncDiviner","config","schema","DivinerConfigSchema","register","attach","address","sentinel","MemorySentinel","synchronous","SentinelConfigSchema","tasks","required","mod","endPoint","automations","frequencyUnits","start","Date","now","type","MemoryArchivist","MemoryArchivistConfigSchema","DefaultReadCachingArchivistConfig","max","schema","MemoryArchivistConfigSchema","getDynamicDefaultReadCachingArchivistConfig","archivist","id","name","dynamicDefaults","getDynamicReadCachingArchivistConfig","_archivist","dynamicConfig","wrapWithReadCachingArchivist","config","dynamicDefaultReadCachingArchivistConfig","dynamicReadCachingArchivistConfig","materializedConfig","cachingArchivist","MemoryArchivist","create","account","initArchivistSync","HttpBridge","HttpBridgeConfigSchema","Mutex","initMutex","Mutex","bridgeSingletonMap","Map","initBridge","nodeUrl","runExclusive","existing","get","bridge","HttpBridge","create","account","config","name","client","url","discoverRoots","schema","HttpBridgeConfigSchema","security","allowAnonymous","start","set","buildNextBlock","createDeclarationIntent","createProducerChainStakeIntentBlock","prevBlock","producerAccount","range","producerDeclarationPayload","createDeclarationIntent","address","buildNextBlock","BaseMongoSdk","assertEx","MongoMap","hasMongoConfig","MemoryMap","initBalanceSummaryMap","config","logger","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","asAddress","assertEx","toAddress","toEthAddress","EthereumChainStakeEvents","EthereumChainStakeViewer","StakedXyoChainV2__factory","SimpleChainStakeViewer","assertEx","assertEx","isDefined","InfuraProvider","assertEx","hexFrom","isDefined","isHex","canUseChainId","config","isDefined","evm","chainId","getChainId","assertEx","isHex","prefix","hex","hexFrom","parsed","Number","parseInt","instance","initInfuraProvider","config","providerConfig","getInfuraProviderConfig","Promise","resolve","InfuraProvider","canUseInfuraProvider","canUseChainId","isDefined","evm","infura","projectId","projectSecret","assertEx","getChainId","assertEx","isDefined","JsonRpcProvider","initJsonRpcProvider","config","providerConfig","getJsonRpcProviderConfig","Promise","resolve","JsonRpcProvider","canUseJsonRpcProvider","canUseChainId","isDefined","evm","jsonRpc","url","jsonRpcUrl","assertEx","getChainId","provider","initEvmProvider","config","canUseInfuraProvider","initInfuraProvider","canUseJsonRpcProvider","initJsonRpcProvider","assertEx","canUseEvmProvider","initEvmChainStakeViewer","config","logger","provider","initEvmProvider","contractAddress","assertEx","chain","id","contract","StakedXyoChainV2__factory","connect","toEthAddress","stakeEventsViewer","EthereumChainStakeEvents","create","start","stakeChainViewer","EthereumChainStakeViewer","initSimpleStakeViewer","SimpleChainStakeViewer","chainId","asAddress","toAddress","positions","initChainStakeViewer","canUseEvmProvider","console","warn","isUndefined","HDWallet","ADDRESS_INDEX","generateXyoBaseWalletFromPhrase","accountServiceSingleton","initProducerAccount","config","logger","walletPhrase","producer","mnemonic","isUndefined","warn","randomMnemonic","HDWallet","generateMnemonic","wallet","generateXyoBaseWalletFromPhrase","account","derivePath","ADDRESS_INDEX","XYO","assertEx","isString","HDWallet","initSeedPhrase","config","logger","bios","storedSeedPhrase","seedPhraseStore","get","debug","mnemonic","api","isString","warn","set","seedPhrase","HDWallet","generateMnemonic","log","assertEx","assertEx","asArchivistInstance","asAddress","assertEx","isDefined","ZERO_ADDRESS","MemoryArchivist","MongoDBArchivistV2","ViewArchivist","AddressBalanceDivinerV2","AddressTransferDiviner","ArchivistSyncDiviner","HeadValidationDiviner","initTelemetry","AbstractModule","LoggerModuleStatusReporter","ModuleFactoryLocator","MemorySentinel","StepSizes","hasMongoConfig","Semaphore","getLocator","config","logger","balancesSummaryMap","transfersSummaryMap","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","AddressBalanceDivinerV2","summaryMap","stepSemaphores","StepSizes","map","Semaphore","AddressTransferDiviner","chainId","chain","id","assertEx","asAddress","ZERO_ADDRESS","HeadValidationDiviner","allowedProducers","producer","allowlist","MemoryArchivist","MemorySentinel","ViewArchivist","ArchivistSyncDiviner","ManifestWrapper","NodeManifest","node","PrivateChildManifests","ChainNodeManifest","Chain","PendingNodeManifest","Pending","PublicChildManifestsWithMempool","nodes","Chain_default","Pending_default","ChainNodeManifest","Chain","PendingNodeManifest","Pending","PublicChildManifestsWithoutMempool","nodes","loadNode","wallet","config","balancesSummaryMap","transfersSummaryMap","enabled","mempoolEnabled","mempool","PublicChildManifests","PublicChildManifestsWithoutMempool","PublicChildManifestsWithMempool","locator","getLocator","wrapper","ManifestWrapper","NodeManifest","PrivateChildManifests","node","childNodes","loadNodes","length","Promise","all","map","childNode","register","attach","address","chainArchivistFromNode","node","chainArchivist","assertEx","asArchivistInstance","resolve","required","pendingArchivistFromNode","pendingArchivist","initServerNode","wallet","logger","config","providedNode","transfersSummaryMap","balancesSummaryMap","loadNode","isDefined","boot","HDWallet","initServerWallet","config","logger","mnemonic","api","bios","boot","seedPhrase","isDefined","initSeedPhrase","HDWallet","fromPhrase","BaseMongoSdk","assertEx","MongoMap","hasMongoConfig","MemoryMap","initTransferSummaryMap","config","logger","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","BaseElectionService","ChainBlockNumberIterationService","XyoStakeIntentService","timeBudget","chainIteratorServiceSingleton","stakeIntentServiceSingleton","electionServiceSingleton","initChainIterator","params","timeBudget","logger","ChainBlockNumberIterationService","create","initStakeIntentService","XyoStakeIntentService","initElectionService","BaseElectionService"]}
|
|
@@ -3,10 +3,10 @@ import type { WithStorageMeta } from '@xyo-network/payload-model';
|
|
|
3
3
|
import type { WalletInstance } from '@xyo-network/wallet-model';
|
|
4
4
|
import type { BalancesStepSummary, MapType, TransfersStepSummary } from '@xyo-network/xl1-protocol-sdk';
|
|
5
5
|
import type { ConfigContext } from '../ConfigContext.ts';
|
|
6
|
-
export declare function initServerNode({ wallet, logger, config, node: providedNode,
|
|
7
|
-
|
|
6
|
+
export declare function initServerNode({ wallet, logger, config, node: providedNode, transfersSummaryMap, balancesSummaryMap, }: ConfigContext<{
|
|
7
|
+
balancesSummaryMap: MapType<string, WithStorageMeta<BalancesStepSummary>>;
|
|
8
8
|
node?: NodeInstance;
|
|
9
|
-
|
|
9
|
+
transfersSummaryMap: MapType<string, WithStorageMeta<TransfersStepSummary>>;
|
|
10
10
|
wallet: WalletInstance;
|
|
11
11
|
}>): Promise<{
|
|
12
12
|
node: NodeInstance<import("@xyo-network/node-model").NodeParams<import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/node-model").NodeConfig>>, import("@xyo-network/node-model").NodeModuleEventData>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initServerNode.d.ts","sourceRoot":"","sources":["../../../src/init/initServerNode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,KAAK,EACV,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EACnD,MAAM,+BAA+B,CAAA;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAmBxD,wBAAsB,cAAc,CAAC,EACnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"initServerNode.d.ts","sourceRoot":"","sources":["../../../src/init/initServerNode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,KAAK,EACV,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EACnD,MAAM,+BAA+B,CAAA;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAmBxD,wBAAsB,cAAc,CAAC,EACnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,GACpF,EAAE,aAAa,CAAC;IACf,kBAAkB,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACzE,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAA;IAC3E,MAAM,EAAE,cAAc,CAAA;CACvB,CAAC;;;;GASD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type BaseElectionServicesParams, type XyoChainIteratorParams, type XyoStakeIntentServiceParams } from '@xyo-network/chain-services';
|
|
2
2
|
import type { Initializable } from '@xyo-network/xl1-protocol';
|
|
3
|
-
import {
|
|
4
|
-
export declare const initChainIterator: Initializable<XyoChainIteratorParams,
|
|
3
|
+
import type { BlockViewer, ElectionService, StakeIntentService } from '@xyo-network/xl1-protocol-sdk';
|
|
4
|
+
export declare const initChainIterator: Initializable<XyoChainIteratorParams, BlockViewer>;
|
|
5
5
|
export declare const initStakeIntentService: Initializable<XyoStakeIntentServiceParams, StakeIntentService>;
|
|
6
6
|
export declare const initElectionService: Initializable<BaseElectionServicesParams, ElectionService>;
|
|
7
7
|
//# sourceMappingURL=iterator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iterator.d.ts","sourceRoot":"","sources":["../../../src/init/iterator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,0BAA0B,EAE/B,KAAK,sBAAsB,EAAyB,KAAK,2BAA2B,EACrF,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"iterator.d.ts","sourceRoot":"","sources":["../../../src/init/iterator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,0BAA0B,EAE/B,KAAK,sBAAsB,EAAyB,KAAK,2BAA2B,EACrF,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EAAE,kBAAkB,EACpC,MAAM,+BAA+B,CAAA;AAOtC,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,sBAAsB,EAAE,WAAW,CAMhF,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,2BAA2B,EAAE,kBAAkB,CAO/F,CAAA;AAEH,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,0BAA0B,EAAE,eAAe,CAOxF,CAAA"}
|
|
@@ -7,8 +7,8 @@ import type { ConfigContext } from '../ConfigContext.ts';
|
|
|
7
7
|
* operation of the node (entirely in memory)
|
|
8
8
|
* @returns A locator with the necessary modules registered
|
|
9
9
|
*/
|
|
10
|
-
export declare const getLocator: ({ config, logger,
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
export declare const getLocator: ({ config, logger, balancesSummaryMap, transfersSummaryMap, }: ConfigContext<{
|
|
11
|
+
balancesSummaryMap: MapType<string, WithStorageMeta<BalancesStepSummary>>;
|
|
12
|
+
transfersSummaryMap: MapType<string, WithStorageMeta<TransfersStepSummary>>;
|
|
13
13
|
}>) => Promise<ModuleFactoryLocator>;
|
|
14
14
|
//# sourceMappingURL=getLocator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLocator.d.ts","sourceRoot":"","sources":["../../../src/manifest/getLocator.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAE1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAGjE,OAAO,KAAK,EACV,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EACnD,MAAM,+BAA+B,CAAA;AAItC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExD;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAU,
|
|
1
|
+
{"version":3,"file":"getLocator.d.ts","sourceRoot":"","sources":["../../../src/manifest/getLocator.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAE1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAGjE,OAAO,KAAK,EACV,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EACnD,MAAM,+BAA+B,CAAA;AAItC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExD;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAU,8DAE9B,aAAa,CAAC;IACf,kBAAkB,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACzE,mBAAmB,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAA;CAC5E,CAAC,kCAgED,CAAA"}
|
|
@@ -6,9 +6,9 @@ import type { ConfigContext } from '../ConfigContext.ts';
|
|
|
6
6
|
* Creates a node with the xyo-chain modules registered
|
|
7
7
|
* @returns A node with the xyo-chain modules registered
|
|
8
8
|
*/
|
|
9
|
-
export declare const loadNode: ({ wallet, config,
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
export declare const loadNode: ({ wallet, config, balancesSummaryMap, transfersSummaryMap, }: ConfigContext<{
|
|
10
|
+
balancesSummaryMap: MapType<string, WithStorageMeta<BalancesStepSummary>>;
|
|
11
|
+
transfersSummaryMap: MapType<string, WithStorageMeta<TransfersStepSummary>>;
|
|
12
12
|
wallet: WalletInstance;
|
|
13
13
|
}>) => Promise<import("@xyo-network/node-memory").MemoryNode<import("@xyo-network/node-memory").MemoryNodeParams, import("@xyo-network/node-model").NodeModuleEventData>>;
|
|
14
14
|
//# sourceMappingURL=loadNode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadNode.d.ts","sourceRoot":"","sources":["../../../src/manifest/loadNode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,KAAK,EACV,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EACnD,MAAM,+BAA+B,CAAA;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAMxD;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAU,
|
|
1
|
+
{"version":3,"file":"loadNode.d.ts","sourceRoot":"","sources":["../../../src/manifest/loadNode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,KAAK,EACV,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EACnD,MAAM,+BAA+B,CAAA;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAMxD;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAU,8DAE5B,aAAa,CAAC;IACf,kBAAkB,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACzE,mBAAmB,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAA;IAC3E,MAAM,EAAE,cAAc,CAAA;CACvB,CAAC,uKAaD,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@xyo-network/chain-orchestration",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.17.0",
|
|
5
5
|
"description": "XYO Layer One SDK Orchestration",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@opentelemetry/api": "~1.9.0",
|
|
43
|
-
"@xylabs/mongo": "~5.0.
|
|
44
|
-
"@xylabs/sdk-js": "~5.0.
|
|
43
|
+
"@xylabs/mongo": "~5.0.46",
|
|
44
|
+
"@xylabs/sdk-js": "~5.0.46",
|
|
45
45
|
"@xyo-network/archivist-memory": "~5.2.10",
|
|
46
46
|
"@xyo-network/archivist-model": "~5.2.10",
|
|
47
47
|
"@xyo-network/archivist-mongodb": "~5.2.10",
|
|
@@ -49,11 +49,11 @@
|
|
|
49
49
|
"@xyo-network/bios": "~7.2.0",
|
|
50
50
|
"@xyo-network/bridge-http": "~5.2.10",
|
|
51
51
|
"@xyo-network/bridge-model": "~5.2.10",
|
|
52
|
-
"@xyo-network/chain-modules": "~1.
|
|
53
|
-
"@xyo-network/chain-protocol": "~1.
|
|
54
|
-
"@xyo-network/chain-sdk": "~1.
|
|
55
|
-
"@xyo-network/chain-services": "~1.
|
|
56
|
-
"@xyo-network/chain-telemetry": "~1.
|
|
52
|
+
"@xyo-network/chain-modules": "~1.17.0",
|
|
53
|
+
"@xyo-network/chain-protocol": "~1.17.0",
|
|
54
|
+
"@xyo-network/chain-sdk": "~1.17.0",
|
|
55
|
+
"@xyo-network/chain-services": "~1.17.0",
|
|
56
|
+
"@xyo-network/chain-telemetry": "~1.17.0",
|
|
57
57
|
"@xyo-network/diviner-model": "~5.2.10",
|
|
58
58
|
"@xyo-network/manifest-wrapper": "~5.2.10",
|
|
59
59
|
"@xyo-network/module-abstract": "~5.2.10",
|
|
@@ -64,14 +64,14 @@
|
|
|
64
64
|
"@xyo-network/sentinel-model": "~5.2.10",
|
|
65
65
|
"@xyo-network/typechain": "~4.0.10",
|
|
66
66
|
"@xyo-network/wallet": "~5.2.10",
|
|
67
|
-
"@xyo-network/xl1-protocol": "~1.14.
|
|
68
|
-
"@xyo-network/xl1-protocol-sdk": "~1.
|
|
67
|
+
"@xyo-network/xl1-protocol": "~1.14.15",
|
|
68
|
+
"@xyo-network/xl1-protocol-sdk": "~1.17.0",
|
|
69
69
|
"async-mutex": "~0.5.0",
|
|
70
70
|
"ethers": "~6.15.0"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
73
|
"@types/node": "~24.10.1",
|
|
74
|
-
"@xylabs/sdk-js": "~5.0.
|
|
74
|
+
"@xylabs/sdk-js": "~5.0.46",
|
|
75
75
|
"@xylabs/ts-scripts-yarn3": "~7.2.8",
|
|
76
76
|
"@xylabs/tsconfig": "~7.2.8",
|
|
77
77
|
"@xyo-network/account-model": "~5.2.10",
|
|
@@ -27,15 +27,15 @@ async function pendingArchivistFromNode(node: NodeInstance) {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export async function initServerNode({
|
|
30
|
-
wallet, logger, config, node: providedNode,
|
|
30
|
+
wallet, logger, config, node: providedNode, transfersSummaryMap, balancesSummaryMap,
|
|
31
31
|
}: ConfigContext<{
|
|
32
|
-
|
|
32
|
+
balancesSummaryMap: MapType<string, WithStorageMeta<BalancesStepSummary>>
|
|
33
33
|
node?: NodeInstance
|
|
34
|
-
|
|
34
|
+
transfersSummaryMap: MapType<string, WithStorageMeta<TransfersStepSummary>>
|
|
35
35
|
wallet: WalletInstance
|
|
36
36
|
}>) {
|
|
37
37
|
const node: NodeInstance = providedNode ?? await loadNode({
|
|
38
|
-
wallet, logger, config,
|
|
38
|
+
wallet, logger, config, transfersSummaryMap, balancesSummaryMap,
|
|
39
39
|
})
|
|
40
40
|
const chainArchivist = await chainArchivistFromNode(node)
|
|
41
41
|
const pendingArchivist = await pendingArchivistFromNode(node)
|
package/src/init/iterator.ts
CHANGED
|
@@ -5,16 +5,17 @@ import {
|
|
|
5
5
|
type XyoChainIteratorParams, XyoStakeIntentService, type XyoStakeIntentServiceParams,
|
|
6
6
|
} from '@xyo-network/chain-services'
|
|
7
7
|
import type { Initializable } from '@xyo-network/xl1-protocol'
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
import type {
|
|
9
|
+
BlockViewer,
|
|
10
|
+
ElectionService, StakeIntentService,
|
|
11
11
|
} from '@xyo-network/xl1-protocol-sdk'
|
|
12
|
+
import { timeBudget } from '@xyo-network/xl1-protocol-sdk'
|
|
12
13
|
|
|
13
|
-
let chainIteratorServiceSingleton: Promise<
|
|
14
|
+
let chainIteratorServiceSingleton: Promise<BlockViewer> | undefined
|
|
14
15
|
let stakeIntentServiceSingleton: Promise<StakeIntentService> | undefined
|
|
15
16
|
let electionServiceSingleton: Promise<ElectionService> | undefined
|
|
16
17
|
|
|
17
|
-
export const initChainIterator: Initializable<XyoChainIteratorParams,
|
|
18
|
+
export const initChainIterator: Initializable<XyoChainIteratorParams, BlockViewer> = (params) => {
|
|
18
19
|
if (chainIteratorServiceSingleton) return chainIteratorServiceSingleton
|
|
19
20
|
return timeBudget('initChainIterator', params.logger, () => {
|
|
20
21
|
chainIteratorServiceSingleton = ChainBlockNumberIterationService.create(params)
|
|
@@ -30,10 +30,10 @@ import type { ConfigContext } from '../ConfigContext.ts'
|
|
|
30
30
|
* @returns A locator with the necessary modules registered
|
|
31
31
|
*/
|
|
32
32
|
export const getLocator = async ({
|
|
33
|
-
config, logger,
|
|
33
|
+
config, logger, balancesSummaryMap, transfersSummaryMap,
|
|
34
34
|
}: ConfigContext<{
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
balancesSummaryMap: MapType<string, WithStorageMeta<BalancesStepSummary>>
|
|
36
|
+
transfersSummaryMap: MapType<string, WithStorageMeta<TransfersStepSummary>>
|
|
37
37
|
}>) => {
|
|
38
38
|
const { otlpEndpoint } = config.telemetry?.otel ?? {}
|
|
39
39
|
const { path: endpoint = '/metrics', port: port = 9465 } = config.telemetry?.metrics?.scrape ?? {}
|
|
@@ -68,11 +68,11 @@ export const getLocator = async ({
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
locator.register(AddressBalanceDivinerV2.factory<AddressBalanceDivinerV2>({
|
|
71
|
-
traceProvider, meterProvider, statusReporter, summaryMap:
|
|
71
|
+
traceProvider, meterProvider, statusReporter, summaryMap: balancesSummaryMap, stepSemaphores: StepSizes.map(() => new Semaphore(20)),
|
|
72
72
|
}))
|
|
73
73
|
|
|
74
74
|
locator.register(AddressTransferDiviner.factory<AddressTransferDiviner>({
|
|
75
|
-
traceProvider, meterProvider, statusReporter, summaryMap:
|
|
75
|
+
traceProvider, meterProvider, statusReporter, summaryMap: transfersSummaryMap, stepSemaphores: StepSizes.map(() => new Semaphore(20)),
|
|
76
76
|
}))
|
|
77
77
|
|
|
78
78
|
const chainId = isDefined(config.chain.id)
|
package/src/manifest/loadNode.ts
CHANGED
|
@@ -16,16 +16,16 @@ import { PublicChildManifestsWithMempool, PublicChildManifestsWithoutMempool } f
|
|
|
16
16
|
* @returns A node with the xyo-chain modules registered
|
|
17
17
|
*/
|
|
18
18
|
export const loadNode = async ({
|
|
19
|
-
wallet, config,
|
|
19
|
+
wallet, config, balancesSummaryMap, transfersSummaryMap,
|
|
20
20
|
}: ConfigContext<{
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
balancesSummaryMap: MapType<string, WithStorageMeta<BalancesStepSummary>>
|
|
22
|
+
transfersSummaryMap: MapType<string, WithStorageMeta<TransfersStepSummary>>
|
|
23
23
|
wallet: WalletInstance
|
|
24
24
|
}>) => {
|
|
25
25
|
const { enabled: mempoolEnabled } = config.mempool
|
|
26
26
|
const PublicChildManifests = mempoolEnabled ? PublicChildManifestsWithoutMempool : PublicChildManifestsWithMempool
|
|
27
27
|
const locator = await getLocator({
|
|
28
|
-
config,
|
|
28
|
+
config, balancesSummaryMap, transfersSummaryMap,
|
|
29
29
|
})
|
|
30
30
|
const wrapper = new ManifestWrapper(NodeManifest, wallet, locator, PublicChildManifests, PrivateChildManifests)
|
|
31
31
|
const [node, ...childNodes] = await wrapper.loadNodes()
|