@xyo-network/xl1-protocol-sdk 1.19.7 → 1.19.9

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 (35) hide show
  1. package/dist/neutral/index.mjs +98 -41
  2. package/dist/neutral/index.mjs.map +1 -1
  3. package/dist/neutral/model/viewers/ChainContract.d.ts +6 -6
  4. package/dist/neutral/model/viewers/ChainContract.d.ts.map +1 -1
  5. package/dist/neutral/simple/block/SimpleBlockViewer.d.ts +6 -2
  6. package/dist/neutral/simple/block/SimpleBlockViewer.d.ts.map +1 -1
  7. package/dist/neutral/simple/blockValidation/SimpleBlockValidationViewer.d.ts.map +1 -1
  8. package/dist/neutral/simple/chainContractViewer/SimpleChainContractViewer.d.ts +41 -0
  9. package/dist/neutral/simple/chainContractViewer/SimpleChainContractViewer.d.ts.map +1 -0
  10. package/dist/neutral/simple/chainContractViewer/index.d.ts +2 -0
  11. package/dist/neutral/simple/chainContractViewer/index.d.ts.map +1 -0
  12. package/dist/neutral/simple/index.d.ts +2 -1
  13. package/dist/neutral/simple/index.d.ts.map +1 -1
  14. package/dist/neutral/simple/timeSync2/SimpleTimeSyncViewer.d.ts.map +1 -0
  15. package/dist/neutral/simple/timeSync2/index.d.ts.map +1 -0
  16. package/dist/neutral/validation/block/HydratedBlockStateValidationFunction.d.ts +2 -2
  17. package/dist/neutral/validation/block/HydratedBlockStateValidationFunction.d.ts.map +1 -1
  18. package/dist/neutral/validation/block/HydratedBlockValidationFunction.d.ts +2 -2
  19. package/dist/neutral/validation/block/HydratedBlockValidationFunction.d.ts.map +1 -1
  20. package/package.json +2 -2
  21. package/src/model/viewers/ChainContract.ts +6 -6
  22. package/src/primitives/stake/weightedStakeForRangeByPosition.ts +1 -1
  23. package/src/simple/block/SimpleBlockViewer.ts +18 -10
  24. package/src/simple/blockValidation/SimpleBlockValidationViewer.ts +4 -3
  25. package/src/simple/chainContractViewer/SimpleChainContractViewer.ts +81 -0
  26. package/src/simple/chainContractViewer/index.ts +1 -0
  27. package/src/simple/index.ts +2 -1
  28. package/src/validation/block/HydratedBlockStateValidationFunction.ts +4 -2
  29. package/src/validation/block/HydratedBlockValidationFunction.ts +4 -2
  30. package/dist/neutral/simple/timesync/SimpleTimeSyncViewer.d.ts.map +0 -1
  31. package/dist/neutral/simple/timesync/index.d.ts.map +0 -1
  32. /package/dist/neutral/simple/{timesync → timeSync2}/SimpleTimeSyncViewer.d.ts +0 -0
  33. /package/dist/neutral/simple/{timesync → timeSync2}/index.d.ts +0 -0
  34. /package/src/simple/{timesync → timeSync2}/SimpleTimeSyncViewer.ts +0 -0
  35. /package/src/simple/{timesync → timeSync2}/index.ts +0 -0
@@ -2036,7 +2036,7 @@ async function weightedStakeForRangeByPosition(context, blockViewer, externalRan
2036
2036
  )).toSorted((a, b) => a.time - b.time);
2037
2037
  let currentTime = externalRange[0];
2038
2038
  let currentStake = 0n;
2039
- if (isDefined12(staked) && mergedEvents[0].args.staked !== staked) {
2039
+ if (isDefined12(staked) && mergedEvents.at(0)?.args.staked !== staked) {
2040
2040
  return 0n;
2041
2041
  }
2042
2042
  for (const event of mergedEvents) {
@@ -3753,6 +3753,9 @@ var SimpleBlockViewer = class extends AbstractCreatableProvider {
3753
3753
  finalizationViewer;
3754
3754
  _payloadCache;
3755
3755
  _signedHydratedBlockCache;
3756
+ get chainContractViewer() {
3757
+ return this.params.chainContractViewer;
3758
+ }
3756
3759
  get finalizedArchivist() {
3757
3760
  return this.params.finalizedArchivist;
3758
3761
  }
@@ -3774,8 +3777,14 @@ var SimpleBlockViewer = class extends AbstractCreatableProvider {
3774
3777
  return this._store;
3775
3778
  }
3776
3779
  static async paramsHandler(params) {
3777
- assertEx29(params.finalizedArchivist, () => "finalizedArchivist is required");
3778
- return { ...await super.paramsHandler(params) };
3780
+ return {
3781
+ ...await super.paramsHandler(params),
3782
+ chainContractViewer: assertEx29(
3783
+ params.chainContractViewer ?? await params.context?.locator.getInstance(ChainContractViewerMoniker),
3784
+ () => "chainContractViewer is required"
3785
+ ),
3786
+ finalizedArchivist: assertEx29(params.finalizedArchivist, () => "finalizedArchivist is required")
3787
+ };
3779
3788
  }
3780
3789
  async blockByHash(hash) {
3781
3790
  return await this.spanAsync("blockByHash", async () => {
@@ -3831,11 +3840,7 @@ var SimpleBlockViewer = class extends AbstractCreatableProvider {
3831
3840
  }
3832
3841
  async chainId(blockNumber = "latest") {
3833
3842
  return await this.spanAsync("chainId", async () => {
3834
- const block = assertEx29(
3835
- blockNumber === "latest" ? await this.currentBlock() : await this.blockByNumber(blockNumber),
3836
- () => `Could not find block for block number ${blockNumber}`
3837
- );
3838
- return block[0].chain;
3843
+ return blockNumber === "latest" ? await this.chainContractViewer.chainId() : await this.chainContractViewer.chainIdAtBlockNumber(blockNumber);
3839
3844
  }, { timeBudgetLimit: 200 });
3840
3845
  }
3841
3846
  async createHandler() {
@@ -3883,7 +3888,7 @@ var SimpleBlockViewer = class extends AbstractCreatableProvider {
3883
3888
  }
3884
3889
  };
3885
3890
  __publicField(SimpleBlockViewer, "defaultMoniker", BlockViewerMoniker);
3886
- __publicField(SimpleBlockViewer, "dependencies", [FinalizationViewerMoniker]);
3891
+ __publicField(SimpleBlockViewer, "dependencies", [FinalizationViewerMoniker, ChainContractViewerMoniker]);
3887
3892
  __publicField(SimpleBlockViewer, "monikers", [BlockViewerMoniker]);
3888
3893
  SimpleBlockViewer = __decorateClass([
3889
3894
  creatableProvider()
@@ -4014,17 +4019,68 @@ SimpleBlockValidationViewer = __decorateClass([
4014
4019
  creatableProvider()
4015
4020
  ], SimpleBlockValidationViewer);
4016
4021
 
4022
+ // src/simple/chainContractViewer/SimpleChainContractViewer.ts
4023
+ import {
4024
+ assertEx as assertEx31
4025
+ } from "@xylabs/sdk-js";
4026
+ var SimpleChainContractViewer = class extends AbstractCreatableProvider {
4027
+ moniker = SimpleChainContractViewer.defaultMoniker;
4028
+ chainId() {
4029
+ return this.params.chainId;
4030
+ }
4031
+ async chainIdAtBlockNumber(blockNumber) {
4032
+ return await withContextCacheResponse(this.context, "chainIdAtBlockNumber", `${blockNumber}`, async () => {
4033
+ let chainId = this.chainId();
4034
+ let contractViewer = this;
4035
+ let forkedAtBlockNumber = await contractViewer.forkedAtBlockNumber();
4036
+ while (forkedAtBlockNumber !== null && blockNumber <= forkedAtBlockNumber) {
4037
+ contractViewer = assertEx31(await contractViewer.forkedChainContractViewer());
4038
+ forkedAtBlockNumber = await contractViewer.forkedAtBlockNumber();
4039
+ chainId = await contractViewer.chainId();
4040
+ }
4041
+ return chainId;
4042
+ });
4043
+ }
4044
+ forkedAtBlockNumber() {
4045
+ return this.params.forkedAtBlockNumber ?? null;
4046
+ }
4047
+ forkedAtHash() {
4048
+ return this.params.forkedAtHash ?? null;
4049
+ }
4050
+ forkedChainContractViewer() {
4051
+ return this.params.forkedChainContractViewer ?? null;
4052
+ }
4053
+ forkedChainId() {
4054
+ return this.params.forkedChainId ?? null;
4055
+ }
4056
+ minWithdrawalBlocks() {
4057
+ return this.params.minWithdrawalBlocks;
4058
+ }
4059
+ rewardsContract() {
4060
+ return this.params.rewardsContract;
4061
+ }
4062
+ stakingTokenAddress() {
4063
+ return this.params.stakingTokenAddress;
4064
+ }
4065
+ };
4066
+ __publicField(SimpleChainContractViewer, "defaultMoniker", ChainContractViewerMoniker);
4067
+ __publicField(SimpleChainContractViewer, "dependencies", []);
4068
+ __publicField(SimpleChainContractViewer, "monikers", [ChainContractViewerMoniker]);
4069
+ SimpleChainContractViewer = __decorateClass([
4070
+ creatableProvider()
4071
+ ], SimpleChainContractViewer);
4072
+
4017
4073
  // src/simple/chainStake/SimpleStakeViewer.ts
4018
4074
  import {
4019
4075
  asAddress as asAddress5,
4020
4076
  toAddress as toAddress9
4021
4077
  } from "@xylabs/sdk-js";
4022
- import { assertEx as assertEx31 } from "@xylabs/sdk-js";
4078
+ import { assertEx as assertEx32 } from "@xylabs/sdk-js";
4023
4079
  var SimpleStakeViewer = class extends AbstractCreatableProvider {
4024
4080
  moniker = SimpleStakeViewer.defaultMoniker;
4025
4081
  _chainStakeEventsViewer;
4026
4082
  get stakeEvents() {
4027
- return assertEx31(this._chainStakeEventsViewer, () => "Stake events viewer not set");
4083
+ return assertEx32(this._chainStakeEventsViewer, () => "Stake events viewer not set");
4028
4084
  }
4029
4085
  get chainMap() {
4030
4086
  return this.params.chainMap;
@@ -4061,7 +4117,7 @@ var SimpleStakeViewer = class extends AbstractCreatableProvider {
4061
4117
  }
4062
4118
  async createHandler() {
4063
4119
  await super.createHandler();
4064
- this._chainStakeEventsViewer = assertEx31(
4120
+ this._chainStakeEventsViewer = assertEx32(
4065
4121
  await this.locateAndCreate(StakeEventsViewerMoniker),
4066
4122
  () => "Failed to create StakeEventsViewer"
4067
4123
  );
@@ -4091,7 +4147,7 @@ var SimpleStakeViewer = class extends AbstractCreatableProvider {
4091
4147
  return toAddress9(toAddress9(1n));
4092
4148
  }
4093
4149
  stakeById(id) {
4094
- return assertEx31(this.positions[id], () => new Error(`Stake with id ${id} not found`));
4150
+ return assertEx32(this.positions[id], () => new Error(`Stake with id ${id} not found`));
4095
4151
  }
4096
4152
  stakeByStaker(staker, slot) {
4097
4153
  return this.positions.filter((s) => asAddress5(s.staker) === asAddress5(staker))[slot];
@@ -4254,7 +4310,7 @@ SimpleFinalizationRunner = __decorateClass([
4254
4310
 
4255
4311
  // src/simple/finalization/SimpleFinalizationViewer.ts
4256
4312
  import {
4257
- assertEx as assertEx32
4313
+ assertEx as assertEx33
4258
4314
  } from "@xylabs/sdk-js";
4259
4315
  import {
4260
4316
  asSignedHydratedBlockWithStorageMeta as asSignedHydratedBlockWithStorageMeta2
@@ -4279,7 +4335,7 @@ var SimpleFinalizationViewer = class extends AbstractCreatableProvider {
4279
4335
  return this._store;
4280
4336
  }
4281
4337
  static async paramsHandler(params) {
4282
- assertEx32(params.finalizedArchivist, () => "finalizedArchivist is required");
4338
+ assertEx33(params.finalizedArchivist, () => "finalizedArchivist is required");
4283
4339
  return { ...await super.paramsHandler(params) };
4284
4340
  }
4285
4341
  async createHandler() {
@@ -4288,13 +4344,13 @@ var SimpleFinalizationViewer = class extends AbstractCreatableProvider {
4288
4344
  }
4289
4345
  async head() {
4290
4346
  return await this.spanAsync("head", async () => {
4291
- const currentHead = assertEx32(await this.getCurrentHead(), () => "Could not find most recent block [currentBlock]");
4347
+ const currentHead = assertEx33(await this.getCurrentHead(), () => "Could not find most recent block [currentBlock]");
4292
4348
  const cache = this.hydratedBlockCache;
4293
4349
  const block = await cache.get(currentHead._hash);
4294
4350
  if (!block) {
4295
4351
  console.log(`Could not find current block with hash ${currentHead._hash}`);
4296
4352
  }
4297
- return assertEx32(block, () => "Could not find current block");
4353
+ return assertEx33(block, () => "Could not find current block");
4298
4354
  }, { timeBudgetLimit: 200 });
4299
4355
  }
4300
4356
  async headBlock() {
@@ -4340,7 +4396,7 @@ var SimpleXyoGateway = class _SimpleXyoGateway extends AbstractCreatableProvider
4340
4396
 
4341
4397
  // src/simple/gateway/SimpleXyoGatewayRunner.ts
4342
4398
  import {
4343
- assertEx as assertEx33,
4399
+ assertEx as assertEx34,
4344
4400
  BigIntToJsonZod,
4345
4401
  isDefined as isDefined19
4346
4402
  } from "@xylabs/sdk-js";
@@ -4364,7 +4420,7 @@ var SimpleXyoGatewayRunner = class _SimpleXyoGatewayRunner extends AbstractCreat
4364
4420
  return this._signer;
4365
4421
  }
4366
4422
  async addPayloadsToChain(onChain, offChain, options) {
4367
- const viewer = assertEx33(this.connection.viewer, () => "No viewer available on connection");
4423
+ const viewer = assertEx34(this.connection.viewer, () => "No viewer available on connection");
4368
4424
  const {
4369
4425
  nbf,
4370
4426
  exp,
@@ -4380,7 +4436,7 @@ var SimpleXyoGatewayRunner = class _SimpleXyoGatewayRunner extends AbstractCreat
4380
4436
  async addTransactionToChain(tx) {
4381
4437
  const connection = this.connection;
4382
4438
  const signer = this.signer;
4383
- const runner = assertEx33(connection.runner, () => "No runner available on connection");
4439
+ const runner = assertEx34(connection.runner, () => "No runner available on connection");
4384
4440
  const signedTx = await signer.signTransaction(tx);
4385
4441
  await this.addPayloadsToDataLakes(signedTx[1]);
4386
4442
  return [await runner.broadcastTransaction(
@@ -4389,7 +4445,7 @@ var SimpleXyoGatewayRunner = class _SimpleXyoGatewayRunner extends AbstractCreat
4389
4445
  }
4390
4446
  async confirmSubmittedTransaction(txHash, options) {
4391
4447
  return await confirmSubmittedTransaction(
4392
- assertEx33(this.connection.viewer, () => "Connection viewer is undefined"),
4448
+ assertEx34(this.connection.viewer, () => "Connection viewer is undefined"),
4393
4449
  txHash,
4394
4450
  options
4395
4451
  );
@@ -4429,7 +4485,7 @@ var SimpleXyoGatewayRunner = class _SimpleXyoGatewayRunner extends AbstractCreat
4429
4485
  };
4430
4486
 
4431
4487
  // src/simple/mempool/SimpleMempoolRunner.ts
4432
- import { assertEx as assertEx34 } from "@xylabs/sdk-js";
4488
+ import { assertEx as assertEx35 } from "@xylabs/sdk-js";
4433
4489
  import { PayloadBuilder as PayloadBuilder18 } from "@xyo-network/payload-builder";
4434
4490
  var SimpleMempoolRunner = class extends AbstractCreatableProvider {
4435
4491
  moniker = SimpleMempoolRunner.defaultMoniker;
@@ -4442,8 +4498,8 @@ var SimpleMempoolRunner = class extends AbstractCreatableProvider {
4442
4498
  static async paramsHandler(params) {
4443
4499
  return {
4444
4500
  ...await super.paramsHandler(params),
4445
- pendingBlocksArchivist: assertEx34(params?.pendingBlocksArchivist, () => "pendingBlocksArchivist is required"),
4446
- pendingTransactionsArchivist: assertEx34(params?.pendingTransactionsArchivist, () => "pendingTransactionsArchivist is required")
4501
+ pendingBlocksArchivist: assertEx35(params?.pendingBlocksArchivist, () => "pendingBlocksArchivist is required"),
4502
+ pendingTransactionsArchivist: assertEx35(params?.pendingTransactionsArchivist, () => "pendingTransactionsArchivist is required")
4447
4503
  };
4448
4504
  }
4449
4505
  async submitBlocks(blocks) {
@@ -4676,7 +4732,7 @@ var SimpleXyoNetwork = class {
4676
4732
  };
4677
4733
 
4678
4734
  // src/simple/permissions/SimpleXyoPermissions.ts
4679
- import { assertEx as assertEx35 } from "@xylabs/sdk-js";
4735
+ import { assertEx as assertEx36 } from "@xylabs/sdk-js";
4680
4736
  var SimpleXyoPermissions = class {
4681
4737
  invoker;
4682
4738
  _store;
@@ -4685,7 +4741,7 @@ var SimpleXyoPermissions = class {
4685
4741
  this.invoker = store.invoker;
4686
4742
  }
4687
4743
  get store() {
4688
- return assertEx35(this._store, () => "Store must be defined to get permissions");
4744
+ return assertEx36(this._store, () => "Store must be defined to get permissions");
4689
4745
  }
4690
4746
  async getPermissions() {
4691
4747
  return await this.store.getPermissions();
@@ -4738,7 +4794,7 @@ var SimpleXyoPermissions = class {
4738
4794
  };
4739
4795
 
4740
4796
  // src/simple/permissions/store/MemoryPermissions.ts
4741
- import { assertEx as assertEx36 } from "@xylabs/sdk-js";
4797
+ import { assertEx as assertEx37 } from "@xylabs/sdk-js";
4742
4798
  var MemoryPermissionsStore = class {
4743
4799
  _invoker;
4744
4800
  permissions = [];
@@ -4746,7 +4802,7 @@ var MemoryPermissionsStore = class {
4746
4802
  this._invoker = invoker;
4747
4803
  }
4748
4804
  get invoker() {
4749
- return assertEx36(this._invoker, () => "Invoker must be defined to get permissions");
4805
+ return assertEx37(this._invoker, () => "Invoker must be defined to get permissions");
4750
4806
  }
4751
4807
  async getPermissions() {
4752
4808
  await Promise.resolve();
@@ -4907,10 +4963,10 @@ SimpleStakeEventsViewer = __decorateClass([
4907
4963
  creatableProvider()
4908
4964
  ], SimpleStakeEventsViewer);
4909
4965
 
4910
- // src/simple/timesync/SimpleTimeSyncViewer.ts
4966
+ // src/simple/timeSync2/SimpleTimeSyncViewer.ts
4911
4967
  import {
4912
4968
  asHash as asHash6,
4913
- assertEx as assertEx37,
4969
+ assertEx as assertEx38,
4914
4970
  isDefined as isDefined22
4915
4971
  } from "@xylabs/sdk-js";
4916
4972
  import {
@@ -4930,7 +4986,7 @@ var SimpleTimeSyncViewer = class extends AbstractCreatableProvider {
4930
4986
  async convertTime(fromDomain, toDomain, from) {
4931
4987
  switch (fromDomain) {
4932
4988
  case "xl1": {
4933
- const [block, payloads] = assertEx37(await this.blockViewer.blockByNumber(asXL1BlockNumber10(from, true)), () => "Block not found");
4989
+ const [block, payloads] = assertEx38(await this.blockViewer.blockByNumber(asXL1BlockNumber10(from, true)), () => "Block not found");
4934
4990
  const timeSchemaIndex = block.payload_schemas.indexOf(TimeSchema);
4935
4991
  const hash = timeSchemaIndex === -1 ? void 0 : block.payload_hashes[timeSchemaIndex];
4936
4992
  const timePayload = asTimePayload2(isDefined22(hash) ? payloads.find((p) => p._hash === hash) : void 0);
@@ -4985,10 +5041,10 @@ var SimpleTimeSyncViewer = class extends AbstractCreatableProvider {
4985
5041
  return [Date.now(), null];
4986
5042
  }
4987
5043
  case "ethereum": {
4988
- const provider = assertEx37(this.ethProvider, () => "Ethereum provider not configured");
5044
+ const provider = assertEx38(this.ethProvider, () => "Ethereum provider not configured");
4989
5045
  const blockNumber = await provider.getBlockNumber() ?? 0;
4990
5046
  const block = await provider.getBlock(blockNumber);
4991
- const blockHash = asHash6(assertEx37(block?.hash, () => "Block hash not found"), true);
5047
+ const blockHash = asHash6(assertEx38(block?.hash, () => "Block hash not found"), true);
4992
5048
  return [blockNumber, blockHash];
4993
5049
  }
4994
5050
  default: {
@@ -5003,7 +5059,7 @@ var SimpleTimeSyncViewer = class extends AbstractCreatableProvider {
5003
5059
  // this is for the previous block
5004
5060
  xl1,
5005
5061
  // this is for the previous block
5006
- xl1Hash: assertEx37(xl1Hash, () => "No xl1 hash available from time sync service"),
5062
+ xl1Hash: assertEx38(xl1Hash, () => "No xl1 hash available from time sync service"),
5007
5063
  epoch: Date.now()
5008
5064
  };
5009
5065
  if (isDefined22(this.ethProvider)) {
@@ -5024,7 +5080,7 @@ SimpleTimeSyncViewer = __decorateClass([
5024
5080
 
5025
5081
  // src/simple/windowedBlock/SimpleWindowedBlockViewer.ts
5026
5082
  import {
5027
- assertEx as assertEx38,
5083
+ assertEx as assertEx39,
5028
5084
  exists as exists7,
5029
5085
  isNull as isNull2
5030
5086
  } from "@xylabs/sdk-js";
@@ -5091,7 +5147,7 @@ var SimpleWindowedBlockViewer = class extends AbstractCreatableProvider {
5091
5147
  }
5092
5148
  async createHandler() {
5093
5149
  await super.createHandler();
5094
- this._blockViewer = assertEx38(
5150
+ this._blockViewer = assertEx39(
5095
5151
  this.params.blockViewer ?? await this.locator.getInstance(BlockViewerMoniker),
5096
5152
  () => "BlockViewer instance is required"
5097
5153
  );
@@ -5100,13 +5156,13 @@ var SimpleWindowedBlockViewer = class extends AbstractCreatableProvider {
5100
5156
  this._transactionHashMap = new MemoryMap();
5101
5157
  }
5102
5158
  currentBlock() {
5103
- return assertEx38(this._chain.at(-1));
5159
+ return assertEx39(this._chain.at(-1));
5104
5160
  }
5105
5161
  currentBlockHash() {
5106
- return assertEx38(this._chain.at(-1)?.[0]._hash);
5162
+ return assertEx39(this._chain.at(-1)?.[0]._hash);
5107
5163
  }
5108
5164
  currentBlockNumber() {
5109
- return assertEx38(this._chain.at(-1)?.[0].block);
5165
+ return assertEx39(this._chain.at(-1)?.[0].block);
5110
5166
  }
5111
5167
  async payloadByHash(hash) {
5112
5168
  const payloads = await this.payloadsByHash([hash]);
@@ -5265,13 +5321,13 @@ var RuntimeStatusMonitor = class extends LoggerStatusReporter {
5265
5321
  };
5266
5322
 
5267
5323
  // src/time/primitives/xl1BlockNumberToEthBlockNumber.ts
5268
- import { assertEx as assertEx39 } from "@xylabs/sdk-js";
5324
+ import { assertEx as assertEx40 } from "@xylabs/sdk-js";
5269
5325
  import { asTimePayload as asTimePayload3, TimeSchema as TimeSchema2 } from "@xyo-network/xl1-protocol";
5270
5326
  async function xl1BlockNumberToEthBlockNumber(context, xl1BlockNumber) {
5271
5327
  const blockHash = await hashFromBlockNumber(context, xl1BlockNumber);
5272
5328
  const hydratedBlock = await hydrateBlock(context.store, blockHash);
5273
5329
  const timePayload = asTimePayload3(hydratedBlock[1].find((p) => p.schema === TimeSchema2), { required: true });
5274
- return assertEx39(timePayload.ethereum, () => "No ethereum timestamp found on block");
5330
+ return assertEx40(timePayload.ethereum, () => "No ethereum timestamp found on block");
5275
5331
  }
5276
5332
 
5277
5333
  // src/wallet/generateXyoBaseWalletFromPhrase.ts
@@ -5369,6 +5425,7 @@ export {
5369
5425
  SimpleBlockRewardViewer,
5370
5426
  SimpleBlockValidationViewer,
5371
5427
  SimpleBlockViewer,
5428
+ SimpleChainContractViewer,
5372
5429
  SimpleDataLakeRunner,
5373
5430
  SimpleDataLakeViewer,
5374
5431
  SimpleFinalizationRunner,