@xyo-network/chain-orchestration 1.16.21 → 1.16.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/neutral/ConfigContext.d.ts +8 -0
  2. package/dist/neutral/ConfigContext.d.ts.map +1 -0
  3. package/dist/neutral/index.d.ts +3 -3
  4. package/dist/neutral/index.d.ts.map +1 -1
  5. package/dist/neutral/index.mjs +687 -21
  6. package/dist/neutral/index.mjs.map +1 -1
  7. package/dist/neutral/init/index.d.ts +9 -0
  8. package/dist/neutral/init/index.d.ts.map +1 -0
  9. package/dist/neutral/init/initBalanceSummaryMap.d.ts +5 -0
  10. package/dist/neutral/init/initBalanceSummaryMap.d.ts.map +1 -0
  11. package/dist/neutral/init/initBridgedModule.d.ts.map +1 -0
  12. package/dist/neutral/init/initChainStakeViewer.d.ts.map +1 -0
  13. package/dist/neutral/init/initProducerAccount.d.ts.map +1 -0
  14. package/dist/neutral/init/initSeedPhrase.d.ts +6 -0
  15. package/dist/neutral/init/initSeedPhrase.d.ts.map +1 -0
  16. package/dist/neutral/init/initServerNode.d.ts +16 -0
  17. package/dist/neutral/init/initServerNode.d.ts.map +1 -0
  18. package/dist/neutral/init/initServerWallet.d.ts +3 -0
  19. package/dist/neutral/init/initServerWallet.d.ts.map +1 -0
  20. package/dist/neutral/init/initTransferSummaryMap.d.ts +5 -0
  21. package/dist/neutral/init/initTransferSummaryMap.d.ts.map +1 -0
  22. package/dist/neutral/manifest/getLocator.d.ts +14 -0
  23. package/dist/neutral/manifest/getLocator.d.ts.map +1 -0
  24. package/dist/neutral/manifest/index.d.ts +6 -0
  25. package/dist/neutral/manifest/index.d.ts.map +1 -0
  26. package/dist/neutral/manifest/loadNode.d.ts +14 -0
  27. package/dist/neutral/manifest/loadNode.d.ts.map +1 -0
  28. package/dist/neutral/manifest/nodeManifest.d.ts +6 -0
  29. package/dist/neutral/manifest/nodeManifest.d.ts.map +1 -0
  30. package/dist/neutral/manifest/private/index.d.ts +5 -0
  31. package/dist/neutral/manifest/private/index.d.ts.map +1 -0
  32. package/dist/neutral/manifest/public/WithMempool/index.d.ts +6 -0
  33. package/dist/neutral/manifest/public/WithMempool/index.d.ts.map +1 -0
  34. package/dist/neutral/manifest/public/WithoutMempool/index.d.ts +6 -0
  35. package/dist/neutral/manifest/public/WithoutMempool/index.d.ts.map +1 -0
  36. package/dist/neutral/manifest/public/index.d.ts +3 -0
  37. package/dist/neutral/manifest/public/index.d.ts.map +1 -0
  38. package/package.json +24 -7
  39. package/src/ConfigContext.ts +9 -0
  40. package/src/index.ts +3 -3
  41. package/src/init/index.ts +8 -0
  42. package/src/init/initBalanceSummaryMap.ts +33 -0
  43. package/src/{initChainStakeViewer.ts → init/initChainStakeViewer.ts} +6 -3
  44. package/src/init/initSeedPhrase.ts +29 -0
  45. package/src/init/initServerNode.ts +45 -0
  46. package/src/init/initServerWallet.ts +17 -0
  47. package/src/init/initTransferSummaryMap.ts +33 -0
  48. package/src/manifest/getLocator.ts +103 -0
  49. package/src/manifest/index.ts +5 -0
  50. package/src/manifest/loadNode.ts +37 -0
  51. package/src/manifest/node.json +17 -0
  52. package/src/manifest/nodeManifest.ts +8 -0
  53. package/src/manifest/private/index.ts +4 -0
  54. package/src/manifest/public/WithMempool/Chain.json +175 -0
  55. package/src/manifest/public/WithMempool/Pending.json +35 -0
  56. package/src/manifest/public/WithMempool/index.ts +20 -0
  57. package/src/manifest/public/WithoutMempool/Chain.json +97 -0
  58. package/src/manifest/public/WithoutMempool/Pending.json +35 -0
  59. package/src/manifest/public/WithoutMempool/index.ts +20 -0
  60. package/src/manifest/public/index.ts +2 -0
  61. package/dist/neutral/initBridgedModule.d.ts.map +0 -1
  62. package/dist/neutral/initChainStakeViewer.d.ts.map +0 -1
  63. package/dist/neutral/initProducerAccount.d.ts.map +0 -1
  64. /package/dist/neutral/{initBridgedModule.d.ts → init/initBridgedModule.d.ts} +0 -0
  65. /package/dist/neutral/{initChainStakeViewer.d.ts → init/initChainStakeViewer.d.ts} +0 -0
  66. /package/dist/neutral/{initProducerAccount.d.ts → init/initProducerAccount.d.ts} +0 -0
  67. /package/src/{initBridgedModule.ts → init/initBridgedModule.ts} +0 -0
  68. /package/src/{initProducerAccount.ts → init/initProducerAccount.ts} +0 -0
@@ -134,8 +134,44 @@ async function createProducerChainStakeIntentBlock(prevBlock, producerAccount, r
134
134
  }
135
135
  __name(createProducerChainStakeIntentBlock, "createProducerChainStakeIntentBlock");
136
136
 
137
- // src/initBridgedModule.ts
137
+ // src/init/initBalanceSummaryMap.ts
138
+ import { BaseMongoSdk } from "@xylabs/mongo";
138
139
  import { assertEx } from "@xylabs/sdk-js";
140
+ import { MongoMap } from "@xyo-network/chain-protocol";
141
+ import { hasMongoConfig, MemoryMap } from "@xyo-network/xl1-protocol-sdk";
142
+ async function initBalanceSummaryMap({ config, logger }) {
143
+ const mongoConfig = config.storage?.mongo;
144
+ if (hasMongoConfig(mongoConfig)) {
145
+ const { connectionString: dbConnectionString, database: dbName, domain: dbDomain, password: dbPassword, username: dbUserName } = mongoConfig;
146
+ const payloadSdkConfig = {
147
+ dbConnectionString,
148
+ dbDomain,
149
+ dbName,
150
+ dbPassword,
151
+ dbUserName
152
+ };
153
+ const sdkBalanceSummaryMap = new BaseMongoSdk({
154
+ ...payloadSdkConfig,
155
+ collection: "balance_summary_map"
156
+ });
157
+ const result = await MongoMap.create({
158
+ sdk: sdkBalanceSummaryMap,
159
+ getCache: {
160
+ enabled: true,
161
+ maxEntries: 5e3
162
+ }
163
+ });
164
+ assertEx(await result.start(), () => "Failed to start transfer summary map");
165
+ return result;
166
+ } else {
167
+ logger?.warn("[API] Mongo configuration not found. Using MemoryMap for BalanceSummaryMap.");
168
+ return new MemoryMap();
169
+ }
170
+ }
171
+ __name(initBalanceSummaryMap, "initBalanceSummaryMap");
172
+
173
+ // src/init/initBridgedModule.ts
174
+ import { assertEx as assertEx2 } from "@xylabs/sdk-js";
139
175
  import { asAttachableArchivistInstance } from "@xyo-network/archivist-model";
140
176
  import { asAttachableModuleInstance } from "@xyo-network/module-model";
141
177
  import { Mutex as Mutex2 } from "async-mutex";
@@ -145,8 +181,8 @@ var initBridgedModule = /* @__PURE__ */ __name(async ({ bridge, moduleName }) =>
145
181
  return await initMutex2.runExclusive(async () => {
146
182
  const existing = bridgedModuleDictionary?.[bridge.address]?.[moduleName];
147
183
  if (existing) return existing;
148
- const mod = assertEx(await bridge.resolve(moduleName), () => `Could not resolve ${moduleName}`);
149
- const moduleInstance = assertEx(asAttachableModuleInstance(mod), () => `Could not convert ${moduleName} to attachable module instance`);
184
+ const mod = assertEx2(await bridge.resolve(moduleName), () => `Could not resolve ${moduleName}`);
185
+ const moduleInstance = assertEx2(asAttachableModuleInstance(mod), () => `Could not convert ${moduleName} to attachable module instance`);
150
186
  let moduleMap = bridgedModuleDictionary[bridge.address];
151
187
  if (moduleMap === void 0) {
152
188
  moduleMap = {};
@@ -157,32 +193,32 @@ var initBridgedModule = /* @__PURE__ */ __name(async ({ bridge, moduleName }) =>
157
193
  });
158
194
  }, "initBridgedModule");
159
195
  var initBridgedArchivistModule = /* @__PURE__ */ __name(async ({ bridge, moduleName }) => {
160
- return assertEx(asAttachableArchivistInstance(await initBridgedModule({
196
+ return assertEx2(asAttachableArchivistInstance(await initBridgedModule({
161
197
  bridge,
162
198
  moduleName
163
199
  })), () => `Could not convert ${moduleName} to attachable archivist instance`);
164
200
  }, "initBridgedArchivistModule");
165
201
 
166
- // src/initChainStakeViewer.ts
167
- import { assertEx as assertEx6, toEthAddress } from "@xylabs/sdk-js";
202
+ // src/init/initChainStakeViewer.ts
203
+ import { asAddress, assertEx as assertEx7, toAddress, toEthAddress } from "@xylabs/sdk-js";
168
204
  import { EthereumChainStakeEvents, EthereumChainStakeViewer } from "@xyo-network/chain-sdk";
169
205
  import { StakedXyoChainV2__factory } from "@xyo-network/typechain";
170
206
  import { SimpleChainStakeViewer } from "@xyo-network/xl1-protocol-sdk";
171
207
 
172
208
  // src/evm/initEvmProvider.ts
173
- import { assertEx as assertEx5 } from "@xylabs/sdk-js";
209
+ import { assertEx as assertEx6 } from "@xylabs/sdk-js";
174
210
 
175
211
  // src/evm/initInfuraProvider.ts
176
- import { assertEx as assertEx3, isDefined as isDefined2 } from "@xylabs/sdk-js";
212
+ import { assertEx as assertEx4, isDefined as isDefined2 } from "@xylabs/sdk-js";
177
213
  import { InfuraProvider } from "ethers/providers";
178
214
 
179
215
  // src/evm/initChainId.ts
180
- import { assertEx as assertEx2, hexFrom, isDefined, isHex } from "@xylabs/sdk-js";
216
+ import { assertEx as assertEx3, hexFrom, isDefined, isHex } from "@xylabs/sdk-js";
181
217
  var canUseChainId = /* @__PURE__ */ __name((config) => {
182
218
  return isDefined(config.evm.chainId);
183
219
  }, "canUseChainId");
184
220
  var getChainId = /* @__PURE__ */ __name((config) => {
185
- const chainId = assertEx2(config.evm.chainId, () => "Missing config.evm.chainId");
221
+ const chainId = assertEx3(config.evm.chainId, () => "Missing config.evm.chainId");
186
222
  if (isHex(chainId, {
187
223
  prefix: true
188
224
  })) {
@@ -207,8 +243,8 @@ var canUseInfuraProvider = /* @__PURE__ */ __name((config) => {
207
243
  return canUseChainId(config) && isDefined2(config.evm?.infura?.projectId) && isDefined2(config.evm?.infura?.projectSecret);
208
244
  }, "canUseInfuraProvider");
209
245
  var getInfuraProviderConfig = /* @__PURE__ */ __name((config) => {
210
- const projectId = assertEx3(config.evm?.infura?.projectId, () => "Missing config.evm.infura.projectId");
211
- const projectSecret = assertEx3(config.evm?.infura?.projectSecret, () => "Missing config.evm.infura.projectSecret");
246
+ const projectId = assertEx4(config.evm?.infura?.projectId, () => "Missing config.evm.infura.projectId");
247
+ const projectSecret = assertEx4(config.evm?.infura?.projectSecret, () => "Missing config.evm.infura.projectSecret");
212
248
  return [
213
249
  getChainId(config),
214
250
  projectId,
@@ -217,7 +253,7 @@ var getInfuraProviderConfig = /* @__PURE__ */ __name((config) => {
217
253
  }, "getInfuraProviderConfig");
218
254
 
219
255
  // src/evm/initJsonRpcProvider.ts
220
- import { assertEx as assertEx4, isDefined as isDefined3 } from "@xylabs/sdk-js";
256
+ import { assertEx as assertEx5, isDefined as isDefined3 } from "@xylabs/sdk-js";
221
257
  import { JsonRpcProvider } from "ethers/providers";
222
258
  var initJsonRpcProvider = /* @__PURE__ */ __name((config) => {
223
259
  const providerConfig = getJsonRpcProviderConfig(config);
@@ -227,7 +263,7 @@ var canUseJsonRpcProvider = /* @__PURE__ */ __name((config) => {
227
263
  return canUseChainId(config) && isDefined3(config.evm.jsonRpc?.url);
228
264
  }, "canUseJsonRpcProvider");
229
265
  var getJsonRpcProviderConfig = /* @__PURE__ */ __name((config) => {
230
- const jsonRpcUrl = assertEx4(config.evm.jsonRpc?.url, () => "Missing config.evm.jsonRpc.url");
266
+ const jsonRpcUrl = assertEx5(config.evm.jsonRpc?.url, () => "Missing config.evm.jsonRpc.url");
231
267
  return [
232
268
  jsonRpcUrl,
233
269
  getChainId(config)
@@ -243,40 +279,41 @@ var initEvmProvider = /* @__PURE__ */ __name(async ({ config }) => {
243
279
  } else if (canUseJsonRpcProvider(config)) {
244
280
  provider = initJsonRpcProvider(config);
245
281
  }
246
- return assertEx5(await provider, () => "No provider available");
282
+ return assertEx6(await provider, () => "No provider available");
247
283
  }, "initEvmProvider");
248
284
  var canUseEvmProvider = /* @__PURE__ */ __name(({ config }) => {
249
285
  return canUseInfuraProvider(config) || canUseJsonRpcProvider(config);
250
286
  }, "canUseEvmProvider");
251
287
 
252
- // src/initChainStakeViewer.ts
288
+ // src/init/initChainStakeViewer.ts
253
289
  async function initEvmChainStakeViewer(config, logger) {
254
290
  const provider2 = await initEvmProvider({
255
291
  config,
256
292
  logger
257
293
  });
258
- const contractAddress = assertEx6(config.chain.id, () => "Missing config.evm.chainId");
294
+ const contractAddress = assertEx7(config.chain.id, () => "Missing config.evm.chainId");
259
295
  const contract = StakedXyoChainV2__factory.connect(toEthAddress(contractAddress), provider2);
260
296
  const stakeEventsViewer = await EthereumChainStakeEvents.create({
261
297
  contract,
262
298
  logger
263
299
  });
264
- assertEx6(await stakeEventsViewer.start(), () => "Failed to start EthereumChainStakeEvents reader");
300
+ assertEx7(await stakeEventsViewer.start(), () => "Failed to start EthereumChainStakeEvents reader");
265
301
  const stakeChainViewer = await EthereumChainStakeViewer.create({
266
302
  contract,
267
303
  stakeEventsViewer,
268
304
  logger
269
305
  });
270
- assertEx6(await stakeChainViewer.start(), () => "Failed to start EthereumChainStake viewer");
306
+ assertEx7(await stakeChainViewer.start(), () => "Failed to start EthereumChainStake viewer");
271
307
  return stakeChainViewer;
272
308
  }
273
309
  __name(initEvmChainStakeViewer, "initEvmChainStakeViewer");
274
310
  async function initSimpleStakeViewer(config, logger) {
275
311
  const stakeChainViewer = await SimpleChainStakeViewer.create({
312
+ chainId: asAddress(toAddress(1n), true),
276
313
  logger,
277
314
  positions: []
278
315
  });
279
- assertEx6(await stakeChainViewer.start(), () => "Failed to start SimpleChainStake viewer");
316
+ assertEx7(await stakeChainViewer.start(), () => "Failed to start SimpleChainStake viewer");
280
317
  return stakeChainViewer;
281
318
  }
282
319
  __name(initSimpleStakeViewer, "initSimpleStakeViewer");
@@ -292,7 +329,7 @@ async function initChainStakeViewer(config, logger) {
292
329
  }
293
330
  __name(initChainStakeViewer, "initChainStakeViewer");
294
331
 
295
- // src/initProducerAccount.ts
332
+ // src/init/initProducerAccount.ts
296
333
  import { isUndefined } from "@xylabs/sdk-js";
297
334
  import { HDWallet } from "@xyo-network/wallet";
298
335
  import { ADDRESS_INDEX, generateXyoBaseWalletFromPhrase } from "@xyo-network/xl1-protocol-sdk";
@@ -315,17 +352,646 @@ ${randomMnemonic}
315
352
  accountServiceSingleton = account;
316
353
  return accountServiceSingleton;
317
354
  }, "initProducerAccount");
355
+
356
+ // src/init/initSeedPhrase.ts
357
+ import { assertEx as assertEx8, isString } from "@xylabs/sdk-js";
358
+ import { HDWallet as HDWallet2 } from "@xyo-network/wallet";
359
+ async function initSeedPhrase({ config, logger, bios }) {
360
+ const storedSeedPhrase = await bios.seedPhraseStore.get("os");
361
+ logger?.debug(`[API] Stored mnemonic: ${storedSeedPhrase}`);
362
+ const { mnemonic } = config.api;
363
+ if (isString(storedSeedPhrase) && isString(mnemonic)) {
364
+ logger?.warn("[API] Stored mnemonic does not match supplied. Updating stored mnemonic to supplied.");
365
+ await bios.seedPhraseStore.set("os", mnemonic);
366
+ } else {
367
+ let seedPhrase;
368
+ if (isString(mnemonic)) {
369
+ seedPhrase = mnemonic;
370
+ } else {
371
+ seedPhrase = HDWallet2.generateMnemonic();
372
+ logger?.log("[API] No mnemonic provided, using random mnemonic. This is not recommended for production use.");
373
+ logger?.log(`[API] Mnemonic: ${seedPhrase}`);
374
+ }
375
+ await bios.seedPhraseStore.set("os", seedPhrase);
376
+ }
377
+ return assertEx8(await bios.seedPhraseStore.get("os"), () => "Unable to acquire mnemonic from bios");
378
+ }
379
+ __name(initSeedPhrase, "initSeedPhrase");
380
+
381
+ // src/init/initServerNode.ts
382
+ import { assertEx as assertEx10 } from "@xylabs/sdk-js";
383
+ import { asArchivistInstance } from "@xyo-network/archivist-model";
384
+
385
+ // src/manifest/getLocator.ts
386
+ import { asAddress as asAddress2, assertEx as assertEx9, isDefined as isDefined4, ZERO_ADDRESS } from "@xylabs/sdk-js";
387
+ import { MemoryArchivist as MemoryArchivist2 } from "@xyo-network/archivist-memory";
388
+ import { MongoDBArchivistV2 } from "@xyo-network/archivist-mongodb";
389
+ import { ViewArchivist } from "@xyo-network/archivist-view";
390
+ import { AddressBalanceDivinerV2, AddressTransferDiviner, ArchivistSyncDiviner as ArchivistSyncDiviner2, HeadValidationDiviner } from "@xyo-network/chain-modules";
391
+ import { initTelemetry } from "@xyo-network/chain-telemetry";
392
+ import { AbstractModule, LoggerModuleStatusReporter } from "@xyo-network/module-abstract";
393
+ import { ModuleFactoryLocator } from "@xyo-network/module-factory-locator";
394
+ import { MemorySentinel as MemorySentinel2 } from "@xyo-network/sentinel-memory";
395
+ import { StepSizes } from "@xyo-network/xl1-protocol";
396
+ import { hasMongoConfig as hasMongoConfig2 } from "@xyo-network/xl1-protocol-sdk";
397
+ import { Semaphore } from "async-mutex";
398
+ var getLocator = /* @__PURE__ */ __name(async ({ config, logger, balanceSummaryMap, transferSummaryMap }) => {
399
+ const { otlpEndpoint } = config.telemetry?.otel ?? {};
400
+ const { traceProvider, meterProvider } = await initTelemetry({
401
+ attributes: {
402
+ serviceName: "xl1-api",
403
+ serviceVersion: "1.0.0"
404
+ },
405
+ otlpEndpoint,
406
+ metricsConfig: {
407
+ endpoint: "/metrics",
408
+ port: 9465
409
+ }
410
+ });
411
+ if (isDefined4(logger)) AbstractModule.defaultLogger = logger;
412
+ const statusReporter = logger ? new LoggerModuleStatusReporter(logger) : void 0;
413
+ const locator = new ModuleFactoryLocator();
414
+ const mongoConfig = config.storage?.mongo;
415
+ if (hasMongoConfig2(mongoConfig)) {
416
+ const { connectionString: dbConnectionString, database: dbName, domain: dbDomain, password: dbPassword, username: dbUserName } = mongoConfig;
417
+ const payloadSdkConfig = {
418
+ dbConnectionString,
419
+ dbDomain,
420
+ dbName,
421
+ dbPassword,
422
+ dbUserName
423
+ };
424
+ const params = {
425
+ meterProvider,
426
+ payloadSdkConfig,
427
+ statusReporter,
428
+ traceProvider
429
+ };
430
+ locator.register(MongoDBArchivistV2.factory(params), void 0, true);
431
+ }
432
+ locator.register(AddressBalanceDivinerV2.factory({
433
+ traceProvider,
434
+ meterProvider,
435
+ statusReporter,
436
+ summaryMap: balanceSummaryMap,
437
+ stepSemaphores: StepSizes.map(() => new Semaphore(20))
438
+ }));
439
+ locator.register(AddressTransferDiviner.factory({
440
+ traceProvider,
441
+ meterProvider,
442
+ statusReporter,
443
+ summaryMap: transferSummaryMap,
444
+ stepSemaphores: StepSizes.map(() => new Semaphore(20))
445
+ }));
446
+ const chainId = isDefined4(config.chain.id) ? assertEx9(asAddress2(config.chain.id), () => "chain.id must be an Address") : ZERO_ADDRESS;
447
+ locator.register(HeadValidationDiviner.factory({
448
+ traceProvider,
449
+ meterProvider,
450
+ statusReporter,
451
+ chainId,
452
+ allowedProducers: config.producer.allowlist
453
+ }));
454
+ locator.register(MemoryArchivist2.factory({
455
+ traceProvider,
456
+ meterProvider,
457
+ statusReporter
458
+ }));
459
+ locator.register(MemorySentinel2.factory({
460
+ traceProvider,
461
+ meterProvider,
462
+ statusReporter
463
+ }));
464
+ locator.register(ViewArchivist.factory({
465
+ traceProvider,
466
+ meterProvider,
467
+ statusReporter
468
+ }));
469
+ locator.register(ArchivistSyncDiviner2.factory({
470
+ traceProvider,
471
+ meterProvider,
472
+ statusReporter
473
+ }));
474
+ return locator;
475
+ }, "getLocator");
476
+
477
+ // src/manifest/loadNode.ts
478
+ import { ManifestWrapper } from "@xyo-network/manifest-wrapper";
479
+
480
+ // src/manifest/node.json
481
+ var node_default = {
482
+ $schema: "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
483
+ nodes: [
484
+ {
485
+ config: {
486
+ accountPath: "44'/60'/1",
487
+ name: "XYOChain",
488
+ schema: "network.xyo.node.config"
489
+ },
490
+ modules: {
491
+ private: [],
492
+ public: []
493
+ }
494
+ }
495
+ ],
496
+ schema: "network.xyo.manifest"
497
+ };
498
+
499
+ // src/manifest/nodeManifest.ts
500
+ var NodeManifest = node_default;
501
+
502
+ // src/manifest/private/index.ts
503
+ var PrivateChildManifests = [];
504
+
505
+ // src/manifest/public/WithMempool/Chain.json
506
+ var Chain_default = {
507
+ $schema: "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
508
+ nodes: [
509
+ {
510
+ config: {
511
+ accountPath: "1",
512
+ name: "Chain",
513
+ schema: "network.xyo.node.config"
514
+ },
515
+ modules: {
516
+ private: [
517
+ {
518
+ config: {
519
+ accountPath: "1/1'/1'",
520
+ name: "Validated",
521
+ getCache: {
522
+ enabled: true,
523
+ maxEntries: 5e3
524
+ },
525
+ payloadSdkConfig: {
526
+ collection: "chain_validated"
527
+ },
528
+ schema: "network.xyo.archivist.config"
529
+ }
530
+ },
531
+ {
532
+ config: {
533
+ accountPath: "1/1'/2'",
534
+ schema: "network.xyo.diviner.chain.head.validation.config",
535
+ eventSubscriptions: [
536
+ {
537
+ sourceEvent: "inserted",
538
+ sourceModule: "Submissions",
539
+ targetModuleFunction: "divine"
540
+ }
541
+ ],
542
+ inArchivist: "Submissions",
543
+ outArchivist: "Validated",
544
+ name: "HeadValidationDiviner"
545
+ }
546
+ },
547
+ {
548
+ config: {
549
+ accountPath: "1/1'/3'",
550
+ automations: [
551
+ {
552
+ frequency: 1e3,
553
+ frequencyUnits: "millis",
554
+ schema: "network.xyo.automation.interval",
555
+ type: "interval"
556
+ }
557
+ ],
558
+ name: "ChainValidationSentinel",
559
+ schema: "network.xyo.sentinel.config",
560
+ synchronous: true,
561
+ tasks: [
562
+ {
563
+ mod: "HeadValidationDiviner",
564
+ endPoint: "divine"
565
+ }
566
+ ]
567
+ }
568
+ },
569
+ {
570
+ config: {
571
+ accountPath: "1/1'/4'",
572
+ automations: [
573
+ {
574
+ frequency: 1e4,
575
+ frequencyUnits: "millis",
576
+ schema: "network.xyo.automation.interval",
577
+ type: "interval"
578
+ }
579
+ ],
580
+ name: "AddressBalancePollingSentinel",
581
+ schema: "network.xyo.sentinel.config",
582
+ synchronous: true,
583
+ tasks: [
584
+ {
585
+ mod: "AddressBalanceDiviner",
586
+ endPoint: "divine"
587
+ }
588
+ ]
589
+ }
590
+ },
591
+ {
592
+ config: {
593
+ accountPath: "1/1'/5'",
594
+ automations: [
595
+ {
596
+ frequency: 1e4,
597
+ frequencyUnits: "millis",
598
+ schema: "network.xyo.automation.interval",
599
+ type: "interval"
600
+ }
601
+ ],
602
+ name: "AddressTransferPollingSentinel",
603
+ schema: "network.xyo.sentinel.config",
604
+ synchronous: true,
605
+ tasks: [
606
+ {
607
+ mod: "AddressTransferDiviner",
608
+ endPoint: "divine"
609
+ }
610
+ ]
611
+ }
612
+ }
613
+ ],
614
+ public: [
615
+ {
616
+ config: {
617
+ accountPath: "1/1/1",
618
+ name: "Submissions",
619
+ getCache: {
620
+ enabled: true,
621
+ maxEntries: 5e3
622
+ },
623
+ payloadSdkConfig: {
624
+ collection: "chain_submissions"
625
+ },
626
+ schema: "network.xyo.archivist.config"
627
+ }
628
+ },
629
+ {
630
+ config: {
631
+ accountPath: "1/1/2",
632
+ name: "Finalized",
633
+ allowedQueries: [
634
+ "network.xyo.query.archivist.get",
635
+ "network.xyo.query.archivist.next"
636
+ ],
637
+ getCache: {
638
+ enabled: true,
639
+ maxEntries: 5e4
640
+ },
641
+ originArchivist: "Validated",
642
+ schema: "network.xyo.archivist.view.config"
643
+ }
644
+ },
645
+ {
646
+ config: {
647
+ accountPath: "1/1/3'",
648
+ name: "AddressBalanceDiviner",
649
+ schema: "network.xyo.diviner.chain.address.balance.config",
650
+ map: {
651
+ lmdb: {
652
+ dbName: "summaries",
653
+ storeName: "address_balance",
654
+ location: ".store"
655
+ }
656
+ },
657
+ archivist: "Validated"
658
+ }
659
+ },
660
+ {
661
+ config: {
662
+ accountPath: "1/1/4'",
663
+ name: "AddressTransferDiviner",
664
+ schema: "network.xyo.diviner.chain.address.transfer.config",
665
+ map: {
666
+ lmdb: {
667
+ dbName: "summaries",
668
+ storeName: "address_transfer",
669
+ location: ".store"
670
+ }
671
+ },
672
+ archivist: "Validated"
673
+ }
674
+ }
675
+ ]
676
+ }
677
+ }
678
+ ],
679
+ schema: "network.xyo.manifest"
680
+ };
681
+
682
+ // src/manifest/public/WithMempool/Pending.json
683
+ var Pending_default = {
684
+ $schema: "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
685
+ nodes: [
686
+ {
687
+ config: {
688
+ accountPath: "2",
689
+ name: "Pending",
690
+ schema: "network.xyo.node.config"
691
+ },
692
+ modules: {
693
+ private: [],
694
+ public: [
695
+ {
696
+ config: {
697
+ accountPath: "2/1/1",
698
+ name: "PendingTransactions",
699
+ getCache: {
700
+ enabled: true,
701
+ maxEntries: 5e3
702
+ },
703
+ labels: {
704
+ "network.xyo.storage.class": "mongodb"
705
+ },
706
+ payloadSdkConfig: {
707
+ collection: "pending_bundles"
708
+ },
709
+ schema: "network.xyo.archivist.config"
710
+ }
711
+ }
712
+ ]
713
+ }
714
+ }
715
+ ],
716
+ schema: "network.xyo.manifest"
717
+ };
718
+
719
+ // src/manifest/public/WithMempool/index.ts
720
+ var ChainNodeManifest = Chain_default;
721
+ var PendingNodeManifest = Pending_default;
722
+ var PublicChildManifestsWithMempool = [
723
+ ...ChainNodeManifest.nodes,
724
+ ...PendingNodeManifest.nodes
725
+ ];
726
+
727
+ // src/manifest/public/WithoutMempool/Chain.json
728
+ var Chain_default2 = {
729
+ $schema: "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
730
+ nodes: [
731
+ {
732
+ config: {
733
+ accountPath: "1",
734
+ name: "Chain",
735
+ schema: "network.xyo.node.config"
736
+ },
737
+ modules: {
738
+ private: [
739
+ {
740
+ config: {
741
+ accountPath: "1/1'/1'",
742
+ name: "Validated",
743
+ allowedQueries: [
744
+ "network.xyo.query.archivist.get",
745
+ "network.xyo.query.archivist.next"
746
+ ],
747
+ getCache: {
748
+ enabled: true,
749
+ maxEntries: 5e3
750
+ },
751
+ payloadSdkConfig: {
752
+ collection: "chain_validated"
753
+ },
754
+ schema: "network.xyo.archivist.config"
755
+ }
756
+ }
757
+ ],
758
+ public: [
759
+ {
760
+ config: {
761
+ accountPath: "1/1/1",
762
+ name: "Submissions",
763
+ getCache: {
764
+ enabled: true,
765
+ maxEntries: 5e3
766
+ },
767
+ payloadSdkConfig: {
768
+ collection: "chain_submissions"
769
+ },
770
+ schema: "network.xyo.archivist.config"
771
+ }
772
+ },
773
+ {
774
+ config: {
775
+ accountPath: "1/1/2",
776
+ name: "Finalized",
777
+ allowedQueries: [
778
+ "network.xyo.query.archivist.get",
779
+ "network.xyo.query.archivist.next"
780
+ ],
781
+ getCache: {
782
+ enabled: true,
783
+ maxEntries: 5e4
784
+ },
785
+ originArchivist: "Validated",
786
+ schema: "network.xyo.archivist.view.config"
787
+ }
788
+ },
789
+ {
790
+ config: {
791
+ accountPath: "1/1/3'",
792
+ name: "AddressBalanceDiviner",
793
+ schema: "network.xyo.diviner.chain.address.balance.config",
794
+ map: {
795
+ lmdb: {
796
+ dbName: "summaries",
797
+ storeName: "address_balance",
798
+ location: ".store"
799
+ }
800
+ },
801
+ archivist: "Validated"
802
+ }
803
+ },
804
+ {
805
+ config: {
806
+ accountPath: "1/1/4'",
807
+ name: "AddressTransferDiviner",
808
+ schema: "network.xyo.diviner.chain.address.transfer.config",
809
+ map: {
810
+ lmdb: {
811
+ dbName: "summaries",
812
+ storeName: "address_transfer",
813
+ location: ".store"
814
+ }
815
+ },
816
+ archivist: "Validated"
817
+ }
818
+ }
819
+ ]
820
+ }
821
+ }
822
+ ],
823
+ schema: "network.xyo.manifest"
824
+ };
825
+
826
+ // src/manifest/public/WithoutMempool/Pending.json
827
+ var Pending_default2 = {
828
+ $schema: "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
829
+ nodes: [
830
+ {
831
+ config: {
832
+ accountPath: "2",
833
+ name: "Pending",
834
+ schema: "network.xyo.node.config"
835
+ },
836
+ modules: {
837
+ private: [],
838
+ public: [
839
+ {
840
+ config: {
841
+ accountPath: "2/1/1",
842
+ name: "PendingTransactions",
843
+ getCache: {
844
+ enabled: true,
845
+ maxEntries: 5e3
846
+ },
847
+ labels: {
848
+ "network.xyo.storage.class": "mongodb"
849
+ },
850
+ payloadSdkConfig: {
851
+ collection: "pending_bundles"
852
+ },
853
+ schema: "network.xyo.archivist.config"
854
+ }
855
+ }
856
+ ]
857
+ }
858
+ }
859
+ ],
860
+ schema: "network.xyo.manifest"
861
+ };
862
+
863
+ // src/manifest/public/WithoutMempool/index.ts
864
+ var ChainNodeManifest2 = Chain_default2;
865
+ var PendingNodeManifest2 = Pending_default2;
866
+ var PublicChildManifestsWithoutMempool = [
867
+ ...ChainNodeManifest2.nodes,
868
+ ...PendingNodeManifest2.nodes
869
+ ];
870
+
871
+ // src/manifest/loadNode.ts
872
+ var loadNode = /* @__PURE__ */ __name(async ({ wallet, config, balanceSummaryMap, transferSummaryMap }) => {
873
+ const { enabled: mempoolEnabled } = config.mempool;
874
+ const PublicChildManifests = mempoolEnabled ? PublicChildManifestsWithoutMempool : PublicChildManifestsWithMempool;
875
+ const locator = await getLocator({
876
+ config,
877
+ balanceSummaryMap,
878
+ transferSummaryMap
879
+ });
880
+ const wrapper = new ManifestWrapper(NodeManifest, wallet, locator, PublicChildManifests, PrivateChildManifests);
881
+ const [node, ...childNodes] = await wrapper.loadNodes();
882
+ if (childNodes?.length > 0) {
883
+ await Promise.all(childNodes.map((childNode) => node.register(childNode)));
884
+ await Promise.all(childNodes.map((childNode) => node.attach(childNode.address, true)));
885
+ }
886
+ return node;
887
+ }, "loadNode");
888
+
889
+ // src/init/initServerNode.ts
890
+ async function chainArchivistFromNode(node) {
891
+ const chainArchivist = assertEx10(asArchivistInstance(await node.resolve("Chain:Validated"), {
892
+ required: true
893
+ }), () => "FinalizedArchivist not found in node");
894
+ return chainArchivist;
895
+ }
896
+ __name(chainArchivistFromNode, "chainArchivistFromNode");
897
+ async function pendingArchivistFromNode(node) {
898
+ const pendingArchivist = assertEx10(asArchivistInstance(await node.resolve("XYOChain:Pending:PendingTransactions"), {
899
+ required: true
900
+ }), () => "PendingArchivist not found in node");
901
+ return pendingArchivist;
902
+ }
903
+ __name(pendingArchivistFromNode, "pendingArchivistFromNode");
904
+ async function initServerNode({ wallet, logger, config, node: providedNode, transferSummaryMap, balanceSummaryMap }) {
905
+ const node = providedNode ?? await loadNode({
906
+ wallet,
907
+ logger,
908
+ config,
909
+ transferSummaryMap,
910
+ balanceSummaryMap
911
+ });
912
+ const chainArchivist = await chainArchivistFromNode(node);
913
+ const pendingArchivist = await pendingArchivistFromNode(node);
914
+ return {
915
+ node,
916
+ chainArchivist,
917
+ pendingArchivist
918
+ };
919
+ }
920
+ __name(initServerNode, "initServerNode");
921
+
922
+ // src/init/initServerWallet.ts
923
+ import { isDefined as isDefined5 } from "@xylabs/sdk-js";
924
+ import { boot } from "@xyo-network/bios";
925
+ import { HDWallet as HDWallet3 } from "@xyo-network/wallet";
926
+ async function initServerWallet({ config, logger }) {
927
+ const { mnemonic } = config.api;
928
+ const bios = await boot();
929
+ const seedPhrase = isDefined5(mnemonic) ? mnemonic : await initSeedPhrase({
930
+ bios,
931
+ config,
932
+ logger
933
+ });
934
+ return await HDWallet3.fromPhrase(seedPhrase);
935
+ }
936
+ __name(initServerWallet, "initServerWallet");
937
+
938
+ // src/init/initTransferSummaryMap.ts
939
+ import { BaseMongoSdk as BaseMongoSdk2 } from "@xylabs/mongo";
940
+ import { assertEx as assertEx11 } from "@xylabs/sdk-js";
941
+ import { MongoMap as MongoMap2 } from "@xyo-network/chain-protocol";
942
+ import { hasMongoConfig as hasMongoConfig3, MemoryMap as MemoryMap2 } from "@xyo-network/xl1-protocol-sdk";
943
+ async function initTransferSummaryMap({ config, logger }) {
944
+ const mongoConfig = config.storage?.mongo;
945
+ if (hasMongoConfig3(mongoConfig)) {
946
+ const { connectionString: dbConnectionString, database: dbName, domain: dbDomain, password: dbPassword, username: dbUserName } = mongoConfig;
947
+ const payloadSdkConfig = {
948
+ dbConnectionString,
949
+ dbDomain,
950
+ dbName,
951
+ dbPassword,
952
+ dbUserName
953
+ };
954
+ const sdkTransferSummaryMap = new BaseMongoSdk2({
955
+ ...payloadSdkConfig,
956
+ collection: "transfer_summary_map"
957
+ });
958
+ const result = await MongoMap2.create({
959
+ sdk: sdkTransferSummaryMap,
960
+ getCache: {
961
+ enabled: true,
962
+ maxEntries: 5e3
963
+ }
964
+ });
965
+ assertEx11(await result.start(), () => "Failed to start transfer summary map");
966
+ return result;
967
+ } else {
968
+ logger?.warn("[API] Mongo configuration not found. Using MemoryMap for TransferSummaryMap.");
969
+ return new MemoryMap2();
970
+ }
971
+ }
972
+ __name(initTransferSummaryMap, "initTransferSummaryMap");
318
973
  export {
319
974
  DefaultReadCachingArchivistConfig,
975
+ NodeManifest,
976
+ PrivateChildManifests,
977
+ PublicChildManifestsWithMempool,
978
+ PublicChildManifestsWithoutMempool,
320
979
  createProducerChainStakeIntentBlock,
980
+ getLocator,
321
981
  initArchivistSync,
982
+ initBalanceSummaryMap,
322
983
  initBridge,
323
984
  initBridgedArchivistModule,
324
985
  initBridgedModule,
325
986
  initChainStakeViewer,
326
987
  initEvmChainStakeViewer,
327
988
  initProducerAccount,
989
+ initSeedPhrase,
990
+ initServerNode,
991
+ initServerWallet,
328
992
  initSimpleStakeViewer,
993
+ initTransferSummaryMap,
994
+ loadNode,
329
995
  wrapWithReadCachingArchivist
330
996
  };
331
997
  //# sourceMappingURL=index.mjs.map