@xyo-network/chain-services 1.16.22 → 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 (28) hide show
  1. package/dist/neutral/AccountBalance/BaseAccountBalanceService.d.ts +8 -7
  2. package/dist/neutral/AccountBalance/BaseAccountBalanceService.d.ts.map +1 -1
  3. package/dist/neutral/AccountBalance/accountBalanceServiceFromArchivist.d.ts +2 -2
  4. package/dist/neutral/AccountBalance/accountBalanceServiceFromArchivist.d.ts.map +1 -1
  5. package/dist/neutral/BlockProducer/BaseBlockProducerService.d.ts +3 -3
  6. package/dist/neutral/BlockProducer/BaseBlockProducerService.d.ts.map +1 -1
  7. package/dist/neutral/ChainService/Memory/Memory.d.ts +3 -0
  8. package/dist/neutral/ChainService/Memory/Memory.d.ts.map +1 -1
  9. package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts.map +1 -1
  10. package/dist/neutral/Schemas/BaseSchemasService.d.ts +13 -0
  11. package/dist/neutral/Schemas/BaseSchemasService.d.ts.map +1 -0
  12. package/dist/neutral/Schemas/index.d.ts +2 -0
  13. package/dist/neutral/Schemas/index.d.ts.map +1 -0
  14. package/dist/neutral/StakeIntent/XyoStakeIntentService.d.ts.map +1 -1
  15. package/dist/neutral/index.d.ts +1 -0
  16. package/dist/neutral/index.d.ts.map +1 -1
  17. package/dist/neutral/index.mjs +151 -95
  18. package/dist/neutral/index.mjs.map +1 -1
  19. package/package.json +14 -14
  20. package/src/AccountBalance/BaseAccountBalanceService.ts +13 -8
  21. package/src/AccountBalance/accountBalanceServiceFromArchivist.ts +2 -2
  22. package/src/BlockProducer/BaseBlockProducerService.ts +4 -4
  23. package/src/ChainService/Memory/Memory.ts +14 -4
  24. package/src/PendingTransactions/BasePendingTransactions.ts +12 -0
  25. package/src/Schemas/BaseSchemasService.ts +34 -0
  26. package/src/Schemas/index.ts +1 -0
  27. package/src/StakeIntent/XyoStakeIntentService.ts +47 -42
  28. package/src/index.ts +1 -0
@@ -159,8 +159,11 @@ var BaseAccountBalanceService = class extends BaseService {
159
159
  return result;
160
160
  });
161
161
  }
162
- async accountBalancesHistories(addresses, headOrRange) {
163
- return await this.accountBalanceViewer.accountBalancesHistories(addresses, headOrRange);
162
+ accountsBalances(address, headOrRange) {
163
+ throw new Error("Method not implemented.");
164
+ }
165
+ async accountsBalancesHistory(addresses, headOrRange) {
166
+ return await this.accountBalanceViewer.accountsBalancesHistory(addresses, headOrRange);
164
167
  }
165
168
  createHandler() {
166
169
  this.blockViewer = blockViewerFromChainIteratorAndArchivist(this.params.chainIterator, this.params.chainArchivist);
@@ -441,7 +444,7 @@ var BaseBlockProducerService = class _BaseBlockProducerService extends BaseServi
441
444
  blockPayloads.push(...fundedTransfers, timePayload);
442
445
  this.logger?.info(`Building block ${head.block + 1}`);
443
446
  const startBuild = Date.now();
444
- const stepRewardPoolBalance = (await this.balanceService.accountBalances([
447
+ const stepRewardPoolBalance = (await this.balanceService.accountsBalances([
445
448
  XYO_STEP_REWARD_ADDRESS
446
449
  ]))[XYO_STEP_REWARD_ADDRESS];
447
450
  const block = await buildNextBlock(head, fundedNextBlockTransactions, blockPayloads, [
@@ -471,7 +474,7 @@ var BaseBlockProducerService = class _BaseBlockProducerService extends BaseServi
471
474
  if (!transfer) return;
472
475
  const totalTransferCost = Object.values(transfer?.transfers).reduce((acc, t) => acc + hexToBigInt(t ?? "00"), 0n);
473
476
  if (validateBalances) {
474
- const balance = (await this.balanceService.accountBalances([
477
+ const balance = (await this.balanceService.accountsBalances([
475
478
  transfer.from
476
479
  ]))[transfer.from] ?? AttoXL13(0n);
477
480
  if (balance >= totalTransferCost) {
@@ -807,14 +810,15 @@ var EvmChainService = class extends BaseService {
807
810
  };
808
811
 
809
812
  // src/ChainService/Memory/Memory.ts
810
- import { ZERO_ADDRESS } from "@xylabs/sdk-js";
813
+ import { assertEx as assertEx8, toAddress as toAddress2, ZERO_ADDRESS } from "@xylabs/sdk-js";
811
814
  var MemoryChainService = class extends BaseService {
812
815
  static {
813
816
  __name(this, "MemoryChainService");
814
817
  }
818
+ _chainId;
815
819
  _simulatedStake = 1n;
816
820
  get chainId() {
817
- return ZERO_ADDRESS;
821
+ return assertEx8(this._chainId, () => "Chain ID not set");
818
822
  }
819
823
  async active() {
820
824
  return await Promise.resolve(this._simulatedStake);
@@ -829,7 +833,7 @@ var MemoryChainService = class extends BaseService {
829
833
  return await Promise.resolve(true);
830
834
  }
831
835
  createHandler() {
832
- const { minStake } = this.params.config.producer;
836
+ const { minStake = 1 } = this.params.config.producer ?? {};
833
837
  this._simulatedStake = BigInt(minStake);
834
838
  }
835
839
  async forkedAtBlockNumber() {
@@ -868,10 +872,14 @@ var MemoryChainService = class extends BaseService {
868
872
  async withdrawnByStaker(_staker) {
869
873
  return await Promise.resolve(0n);
870
874
  }
875
+ async startHandler() {
876
+ await super.startHandler();
877
+ this._chainId = this.params.chainId ?? toAddress2(1n);
878
+ }
871
879
  };
872
880
 
873
881
  // src/ChainValidator/XyoValidator.ts
874
- import { assertEx as assertEx8, creatable as creatable8 } from "@xylabs/sdk-js";
882
+ import { assertEx as assertEx9, creatable as creatable8 } from "@xylabs/sdk-js";
875
883
  function _ts_decorate8(decorators, target, key, desc) {
876
884
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
877
885
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -887,22 +895,22 @@ var XyoValidator = class extends BaseService {
887
895
  return this.account.address;
888
896
  }
889
897
  get account() {
890
- return assertEx8(this.params.account, () => "account is required");
898
+ return assertEx9(this.params.account, () => "account is required");
891
899
  }
892
900
  get chainArchivist() {
893
- return assertEx8(this.params.chainArchivist, () => "chainArchivist is required");
901
+ return assertEx9(this.params.chainArchivist, () => "chainArchivist is required");
894
902
  }
895
903
  get chainInfo() {
896
- return assertEx8(this.params.chainId, () => "chainInfo is required");
904
+ return assertEx9(this.params.chainId, () => "chainInfo is required");
897
905
  }
898
906
  get electionService() {
899
- return assertEx8(this.params.electionService, () => "electionService is required");
907
+ return assertEx9(this.params.electionService, () => "electionService is required");
900
908
  }
901
909
  get pendingBundledTransactionsArchivist() {
902
- return assertEx8(this.params.pendingBundledTransactionsArchivist, () => "pendingBundledTransactions is required");
910
+ return assertEx9(this.params.pendingBundledTransactionsArchivist, () => "pendingBundledTransactions is required");
903
911
  }
904
912
  get rewardService() {
905
- return assertEx8(this.params.rewardService, () => "rewardService is required");
913
+ return assertEx9(this.params.rewardService, () => "rewardService is required");
906
914
  }
907
915
  validatePendingBlock(_block) {
908
916
  return [];
@@ -921,7 +929,7 @@ XyoValidator = _ts_decorate8([
921
929
  ], XyoValidator);
922
930
 
923
931
  // src/Election/BaseElectionService.ts
924
- import { assertEx as assertEx9, creatable as creatable9 } from "@xylabs/sdk-js";
932
+ import { assertEx as assertEx10, creatable as creatable9 } from "@xylabs/sdk-js";
925
933
  import { hexToLast4BytesInt, shuffleWithSeed } from "@xyo-network/chain-utils";
926
934
  function _ts_decorate9(decorators, target, key, desc) {
927
935
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -935,13 +943,13 @@ var BaseElectionService = class extends BaseService {
935
943
  __name(this, "BaseElectionService");
936
944
  }
937
945
  get chainIterator() {
938
- return assertEx9(this.params.chainIterator, () => "No chain iterator");
946
+ return assertEx10(this.params.chainIterator, () => "No chain iterator");
939
947
  }
940
948
  get chainStakeViewer() {
941
- return assertEx9(this.params.chainStakeViewer, () => "No chain stake viewer");
949
+ return assertEx10(this.params.chainStakeViewer, () => "No chain stake viewer");
942
950
  }
943
951
  get stakeIntentService() {
944
- return assertEx9(this.params.stakeIntentService, () => "No staked intent service");
952
+ return assertEx10(this.params.stakeIntentService, () => "No staked intent service");
945
953
  }
946
954
  async getCreatorCommitteeForNextBlock(current) {
947
955
  return await this.spanAsync("getCreatorCommitteeForNextBlock", async () => {
@@ -1036,7 +1044,7 @@ BaseNetworkStakeStepRewardService = _ts_decorate10([
1036
1044
 
1037
1045
  // src/PendingTransactions/BasePendingTransactions.ts
1038
1046
  import { ValueType } from "@opentelemetry/api";
1039
- import { assertEx as assertEx10, creatable as creatable11, exists as exists2, filterAs, filterAsync, forget, isDefined as isDefined4, isUndefined as isUndefined2 } from "@xylabs/sdk-js";
1047
+ import { assertEx as assertEx11, creatable as creatable11, exists as exists2, filterAs, filterAsync, forget, isDefined as isDefined4, isUndefined as isUndefined2 } from "@xylabs/sdk-js";
1040
1048
  import { MemoryArchivist } from "@xyo-network/archivist-memory";
1041
1049
  import { findMostRecentBlock as findMostRecentBlock2 } from "@xyo-network/chain-protocol";
1042
1050
  import { asBlockBoundWitnessWithHashMeta, isTransactionBoundWitnessWithStorageMeta } from "@xyo-network/xl1-protocol";
@@ -1130,23 +1138,23 @@ var BasePendingTransactionsService = class _BasePendingTransactionsService exten
1130
1138
  return this.params.additionalPendingTransactionValidators ?? [];
1131
1139
  }
1132
1140
  get chainArchivist() {
1133
- return assertEx10(this.params.chainArchivist, () => "No completed blocks with data archivist");
1141
+ return assertEx11(this.params.chainArchivist, () => "No completed blocks with data archivist");
1134
1142
  }
1135
1143
  get chainId() {
1136
- return assertEx10(this.params.chainId, () => "No chain id");
1144
+ return assertEx11(this.params.chainId, () => "No chain id");
1137
1145
  }
1138
1146
  get pendingBundledTransactionsArchivist() {
1139
- return assertEx10(this.params.pendingBundledTransactionsArchivist, () => "No pending bundled transactions archivist");
1147
+ return assertEx11(this.params.pendingBundledTransactionsArchivist, () => "No pending bundled transactions archivist");
1140
1148
  }
1141
1149
  get pendingBundledTransactionsLocalArchivist() {
1142
- return assertEx10(this._curatedPendingBundledTransactionsArchivist, () => "No pending bundled transactions curated archivist");
1150
+ return assertEx11(this._curatedPendingBundledTransactionsArchivist, () => "No pending bundled transactions curated archivist");
1143
1151
  }
1144
1152
  get pendingTransactionsCount() {
1145
1153
  forget(this.countPendingTransactions());
1146
1154
  return this._pendingTransactionsCount;
1147
1155
  }
1148
1156
  get rejectedTransactionsArchivist() {
1149
- return assertEx10(this.params.rejectedTransactionsArchivist, () => "No rejected transactions archivist");
1157
+ return assertEx11(this.params.rejectedTransactionsArchivist, () => "No rejected transactions archivist");
1150
1158
  }
1151
1159
  async createHandler() {
1152
1160
  await super.createHandler();
@@ -1201,6 +1209,13 @@ var BasePendingTransactionsService = class _BasePendingTransactionsService exten
1201
1209
  }, this.additionalPendingTransactionValidators)
1202
1210
  ]));
1203
1211
  const validTransactions = txValidationResults.filter(([, errors]) => errors.length === 0).map(([tx]) => tx);
1212
+ const invalidTransactions = txValidationResults.filter(([, errors]) => errors.length > 0).map(([tx]) => tx);
1213
+ if (invalidTransactions.length > 0) {
1214
+ this.logger?.warn(`getPendingTransactions: Found ${invalidTransactions.length} invalid pending transactions`);
1215
+ for (const tx of invalidTransactions) {
1216
+ this.logger?.warn(tx[0]._hash);
1217
+ }
1218
+ }
1204
1219
  foundPendingTransactions.push(...validTransactions);
1205
1220
  }
1206
1221
  if (foundPendingTransactions.length > 0) {
@@ -1318,6 +1333,42 @@ BasePendingTransactionsService = _ts_decorate11([
1318
1333
  var isTransactionExpired = /* @__PURE__ */ __name((block) => ([txBw]) => txBw.exp < block, "isTransactionExpired");
1319
1334
  var isTransactionActive = /* @__PURE__ */ __name((block) => ([txBw]) => txBw.nbf <= block && txBw.exp >= block, "isTransactionActive");
1320
1335
 
1336
+ // src/Schemas/BaseSchemasService.ts
1337
+ import { creatable as creatable12 } from "@xylabs/sdk-js";
1338
+ import { spanRootAsync as spanRootAsync4 } from "@xylabs/telemetry";
1339
+ import { schemasSummary } from "@xyo-network/xl1-protocol-sdk";
1340
+ function _ts_decorate12(decorators, target, key, desc) {
1341
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1342
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1343
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1344
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1345
+ }
1346
+ __name(_ts_decorate12, "_ts_decorate");
1347
+ var BaseSchemasService = class extends BaseService {
1348
+ static {
1349
+ __name(this, "BaseSchemasService");
1350
+ }
1351
+ async schema(head, schema) {
1352
+ return (await this.schemas(head, [
1353
+ schema
1354
+ ]))[schema] ?? 0;
1355
+ }
1356
+ async schemas(head, schemas) {
1357
+ return await spanRootAsync4("transfers", async () => {
1358
+ const summary = await schemasSummary(this.params.context);
1359
+ const result = {};
1360
+ for (const schema of schemas) {
1361
+ const count = summary[schema] ?? 0;
1362
+ result[schema] = count;
1363
+ }
1364
+ return result;
1365
+ });
1366
+ }
1367
+ };
1368
+ BaseSchemasService = _ts_decorate12([
1369
+ creatable12()
1370
+ ], BaseSchemasService);
1371
+
1321
1372
  // src/StakeIntent/lib/getBlockSignedStakeDeclarations.ts
1322
1373
  import { exists as exists3, filterAs as filterAs2 } from "@xylabs/sdk-js";
1323
1374
  import { asOptionalBoundWitness } from "@xyo-network/boundwitness-model";
@@ -1345,21 +1396,21 @@ var mapBoundWitnessToStakeIntentHashes = /* @__PURE__ */ __name((bw) => {
1345
1396
  }, "mapBoundWitnessToStakeIntentHashes");
1346
1397
 
1347
1398
  // src/StakeIntent/XyoStakeIntentService.ts
1348
- import { asAddress, assertEx as assertEx11, creatable as creatable12, filterAs as filterAs3, isUndefined as isUndefined3 } from "@xylabs/sdk-js";
1399
+ import { asAddress, assertEx as assertEx12, creatable as creatable13, filterAs as filterAs3, isUndefined as isUndefined3 } from "@xylabs/sdk-js";
1349
1400
  import { analyzeChain, ChainStakeIntentAnalyzer, isChainSummaryStakeIntent } from "@xyo-network/chain-analyze";
1350
1401
  import { DEFAULT_FIND_FIRST_MATCHING_NEXT_OPTIONS, findFirstMatching, IntervalMap } from "@xyo-network/chain-utils";
1351
1402
  import { PayloadBuilder as PayloadBuilder7 } from "@xyo-network/payload-builder";
1352
1403
  import { asBlockBoundWitness as asBlockBoundWitness3, asBlockBoundWitnessWithStorageMeta as asBlockBoundWitnessWithStorageMeta3, asChainStakeIntent as asChainStakeIntent2 } from "@xyo-network/xl1-protocol";
1353
- import { asChainIndexingServiceStateWithStorageMeta, ChainIndexingServiceStateSchema, isChainIndexingServiceState, readPayloadMapFromStore as readPayloadMapFromStore2 } from "@xyo-network/xl1-protocol-sdk";
1404
+ import { asChainIndexingServiceStateWithStorageMeta, ChainIndexingServiceStateSchema, isChainIndexingServiceState, readPayloadMapFromStore as readPayloadMapFromStore2, timeBudget } from "@xyo-network/xl1-protocol-sdk";
1354
1405
  import { Mutex as Mutex3 } from "async-mutex";
1355
1406
  import { LRUCache as LRUCache2 } from "lru-cache";
1356
- function _ts_decorate12(decorators, target, key, desc) {
1407
+ function _ts_decorate13(decorators, target, key, desc) {
1357
1408
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1358
1409
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1359
1410
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1360
1411
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1361
1412
  }
1362
- __name(_ts_decorate12, "_ts_decorate");
1413
+ __name(_ts_decorate13, "_ts_decorate");
1363
1414
  var ACTIVE_STAKE_TTL = 1e3 * 60 * 60 * 2;
1364
1415
  var NO_ACTIVE_STAKE_TTL = 1e3 * 2;
1365
1416
  var STAKE_CACHE_MAX_ENTRIES = 1e4;
@@ -1382,16 +1433,16 @@ var XyoStakeIntentService = class extends BaseService {
1382
1433
  });
1383
1434
  _updateMutex = new Mutex3();
1384
1435
  get chainArchivist() {
1385
- return assertEx11(this.params.chainArchivist, () => "chainArchivist not set");
1436
+ return assertEx12(this.params.chainArchivist, () => "chainArchivist not set");
1386
1437
  }
1387
1438
  get chainIterator() {
1388
- return assertEx11(this.params.chainIterator, () => "chainIterator not set");
1439
+ return assertEx12(this.params.chainIterator, () => "chainIterator not set");
1389
1440
  }
1390
1441
  get chainStakeViewer() {
1391
- return assertEx11(this.params.chainStakeViewer, () => "chainStakeViewer not set");
1442
+ return assertEx12(this.params.chainStakeViewer, () => "chainStakeViewer not set");
1392
1443
  }
1393
1444
  get stakeIntentStateArchivist() {
1394
- return assertEx11(this.params.stakeIntentStateArchivist, () => "stakeIntentStateArchivist not set");
1445
+ return assertEx12(this.params.stakeIntentStateArchivist, () => "stakeIntentStateArchivist not set");
1395
1446
  }
1396
1447
  async createHandler() {
1397
1448
  this.chainIterator.on("headUpdated", async () => {
@@ -1404,13 +1455,13 @@ var XyoStakeIntentService = class extends BaseService {
1404
1455
  }
1405
1456
  async getDeclaredCandidateRanges(address, intent) {
1406
1457
  await Promise.resolve();
1407
- assertEx11(intent === "producer", () => `Support not yet added for intent ${intent}`);
1458
+ assertEx12(intent === "producer", () => `Support not yet added for intent ${intent}`);
1408
1459
  const results = this._producers.get(address);
1409
1460
  return results ?? [];
1410
1461
  }
1411
1462
  async getDeclaredCandidatesForBlock(block, intent) {
1412
1463
  return await this.spanAsync("getDeclaredCandidatesForBlock", async () => {
1413
- assertEx11(intent === "producer", () => `Support not yet added for intent ${intent}`);
1464
+ assertEx12(intent === "producer", () => `Support not yet added for intent ${intent}`);
1414
1465
  const results = this._producers.findAllContaining(block);
1415
1466
  const candidates = [
1416
1467
  ...results
@@ -1475,38 +1526,40 @@ var XyoStakeIntentService = class extends BaseService {
1475
1526
  ]);
1476
1527
  }
1477
1528
  async recoverState(current) {
1478
- const currentBlock = assertEx11(asBlockBoundWitness3((await this.chainArchivist.get([
1479
- current
1480
- ]))?.[0]), () => `Block ${current} not found`);
1481
- const currentBlockNum = currentBlock.block;
1482
- const opts = {
1483
- ...DEFAULT_FIND_FIRST_MATCHING_NEXT_OPTIONS
1484
- };
1485
- while (true) {
1486
- const predicate = /* @__PURE__ */ __name((p) => {
1487
- const state2 = asChainIndexingServiceStateWithStorageMeta(p);
1488
- return state2 ? true : false;
1489
- }, "predicate");
1490
- const state = await findFirstMatching(this.stakeIntentStateArchivist, predicate, opts);
1491
- if (isChainIndexingServiceState(state)) {
1492
- const indexed = (await this.chainArchivist.get([
1493
- state.endBlockHash
1494
- ]))?.[0];
1495
- const indexedBlock = asBlockBoundWitnessWithStorageMeta3(indexed);
1496
- if (indexedBlock) {
1497
- const indexedBlockNum = indexedBlock.block;
1498
- if (indexedBlockNum <= currentBlockNum) {
1499
- const data = state.state;
1500
- this._producers = new IntervalMap(data);
1501
- this._lastIndexedBlockHash = indexedBlock._hash;
1502
- break;
1529
+ return await timeBudget("XyoStakeIntentService.recoverState", console, async () => {
1530
+ const currentBlock = assertEx12(asBlockBoundWitness3((await this.chainArchivist.get([
1531
+ current
1532
+ ]))?.[0]), () => `Block ${current} not found`);
1533
+ const currentBlockNum = currentBlock.block;
1534
+ const opts = {
1535
+ ...DEFAULT_FIND_FIRST_MATCHING_NEXT_OPTIONS
1536
+ };
1537
+ while (true) {
1538
+ const predicate = /* @__PURE__ */ __name((p) => {
1539
+ const state2 = asChainIndexingServiceStateWithStorageMeta(p);
1540
+ return state2 ? true : false;
1541
+ }, "predicate");
1542
+ const state = await findFirstMatching(this.stakeIntentStateArchivist, predicate, opts);
1543
+ if (isChainIndexingServiceState(state)) {
1544
+ const indexed = (await this.chainArchivist.get([
1545
+ state.endBlockHash
1546
+ ]))?.[0];
1547
+ const indexedBlock = asBlockBoundWitnessWithStorageMeta3(indexed);
1548
+ if (indexedBlock) {
1549
+ const indexedBlockNum = indexedBlock.block;
1550
+ if (indexedBlockNum <= currentBlockNum) {
1551
+ const data = state.state;
1552
+ this._producers = new IntervalMap(data);
1553
+ this._lastIndexedBlockHash = indexedBlock._hash;
1554
+ break;
1555
+ }
1503
1556
  }
1557
+ } else {
1558
+ break;
1504
1559
  }
1505
- } else {
1506
- break;
1560
+ opts.open = true;
1507
1561
  }
1508
- opts.open = true;
1509
- }
1562
+ }, 2e3, true);
1510
1563
  }
1511
1564
  async updateIndex(displayProgress = false) {
1512
1565
  if (this._updateMutex.isLocked()) {
@@ -1516,44 +1569,46 @@ var XyoStakeIntentService = class extends BaseService {
1516
1569
  return await this.spanAsync("updateIndex", async () => {
1517
1570
  const currentHead = await this.chainIterator.head();
1518
1571
  if (isUndefined3(currentHead)) return;
1519
- const currentHeadHash = await PayloadBuilder7.hash(currentHead);
1520
- const chainMap = readPayloadMapFromStore2(this.chainArchivist);
1521
- const result = await analyzeChain({
1522
- chainMap
1523
- }, [
1524
- new ChainStakeIntentAnalyzer("producer")
1525
- ], currentHeadHash, this._lastIndexedBlockHash);
1526
- const signedDeclarations = filterAs3(result.find(isChainSummaryStakeIntent)?.intents ?? [], asChainStakeIntent2);
1527
- if (currentHead.block === void 0) return;
1528
- const currentHeadBlockNum = currentHead.block;
1529
- if (displayProgress) this.logger?.log(`Updating index through 0x${currentHeadBlockNum}`);
1530
- for (const signedDeclaration of signedDeclarations) {
1531
- const { exp, nbf } = signedDeclaration;
1532
- const start = nbf;
1533
- const stop = exp;
1534
- const address = asAddress(signedDeclaration?.from);
1535
- if (start !== void 0 && stop !== void 0 && address !== void 0) {
1536
- this._producers.insert(address, start, stop);
1572
+ return await timeBudget("XyoStakeIntentService.updateIndex", console, async () => {
1573
+ const currentHeadHash = currentHead._hash;
1574
+ const chainMap = readPayloadMapFromStore2(this.chainArchivist);
1575
+ const result = await analyzeChain({
1576
+ chainMap
1577
+ }, [
1578
+ new ChainStakeIntentAnalyzer("producer")
1579
+ ], currentHeadHash, this._lastIndexedBlockHash);
1580
+ const signedDeclarations = filterAs3(result.find(isChainSummaryStakeIntent)?.intents ?? [], asChainStakeIntent2);
1581
+ if (currentHead.block === void 0) return;
1582
+ const currentHeadBlockNum = currentHead.block;
1583
+ if (displayProgress) this.logger?.log(`Updating index through 0x${currentHeadBlockNum}`);
1584
+ for (const signedDeclaration of signedDeclarations) {
1585
+ const { exp, nbf } = signedDeclaration;
1586
+ const start = nbf;
1587
+ const stop = exp;
1588
+ const address = asAddress(signedDeclaration?.from);
1589
+ if (start !== void 0 && stop !== void 0 && address !== void 0) {
1590
+ this._producers.insert(address, start, stop);
1591
+ }
1537
1592
  }
1538
- }
1539
- this._lastIndexedBlockHash = currentHeadHash;
1593
+ this._lastIndexedBlockHash = currentHeadHash;
1594
+ }, 2e3, true);
1540
1595
  });
1541
1596
  });
1542
1597
  }
1543
1598
  };
1544
- XyoStakeIntentService = _ts_decorate12([
1545
- creatable12()
1599
+ XyoStakeIntentService = _ts_decorate13([
1600
+ creatable13()
1546
1601
  ], XyoStakeIntentService);
1547
1602
 
1548
1603
  // src/StepStake/BaseStepStakeService.ts
1549
- import { creatable as creatable13 } from "@xylabs/sdk-js";
1550
- function _ts_decorate13(decorators, target, key, desc) {
1604
+ import { creatable as creatable14 } from "@xylabs/sdk-js";
1605
+ function _ts_decorate14(decorators, target, key, desc) {
1551
1606
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1552
1607
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1553
1608
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1554
1609
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1555
1610
  }
1556
- __name(_ts_decorate13, "_ts_decorate");
1611
+ __name(_ts_decorate14, "_ts_decorate");
1557
1612
  var BaseStepStakeService = class extends BaseService {
1558
1613
  static {
1559
1614
  __name(this, "BaseStepStakeService");
@@ -1565,20 +1620,20 @@ var BaseStepStakeService = class extends BaseService {
1565
1620
  throw new Error("Method not implemented.");
1566
1621
  }
1567
1622
  };
1568
- BaseStepStakeService = _ts_decorate13([
1569
- creatable13()
1623
+ BaseStepStakeService = _ts_decorate14([
1624
+ creatable14()
1570
1625
  ], BaseStepStakeService);
1571
1626
 
1572
1627
  // src/Time/BaseTimeSyncService.ts
1573
- import { creatable as creatable14 } from "@xylabs/sdk-js";
1628
+ import { creatable as creatable15 } from "@xylabs/sdk-js";
1574
1629
  import { SimpleTimeSyncViewer } from "@xyo-network/xl1-protocol-sdk";
1575
- function _ts_decorate14(decorators, target, key, desc) {
1630
+ function _ts_decorate15(decorators, target, key, desc) {
1576
1631
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1577
1632
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1578
1633
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1579
1634
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1580
1635
  }
1581
- __name(_ts_decorate14, "_ts_decorate");
1636
+ __name(_ts_decorate15, "_ts_decorate");
1582
1637
  var BaseTimeSyncService = class extends BaseService {
1583
1638
  static {
1584
1639
  __name(this, "BaseTimeSyncService");
@@ -1611,8 +1666,8 @@ var BaseTimeSyncService = class extends BaseService {
1611
1666
  return await this.timeSyncViewer.currentTimePayload();
1612
1667
  }
1613
1668
  };
1614
- BaseTimeSyncService = _ts_decorate14([
1615
- creatable14()
1669
+ BaseTimeSyncService = _ts_decorate15([
1670
+ creatable15()
1616
1671
  ], BaseTimeSyncService);
1617
1672
  export {
1618
1673
  BaseAccountBalanceService,
@@ -1623,6 +1678,7 @@ export {
1623
1678
  BaseElectionService,
1624
1679
  BaseNetworkStakeStepRewardService,
1625
1680
  BasePendingTransactionsService,
1681
+ BaseSchemasService,
1626
1682
  BaseService,
1627
1683
  BaseStepStakeService,
1628
1684
  BaseTimeSyncService,