@xyo-network/xl1-protocol-sdk 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.
Files changed (64) hide show
  1. package/dist/neutral/ChainServiceCollectionV2.d.ts +5 -9
  2. package/dist/neutral/ChainServiceCollectionV2.d.ts.map +1 -1
  3. package/dist/neutral/index.mjs +242 -59
  4. package/dist/neutral/index.mjs.map +1 -1
  5. package/dist/neutral/primitives/index.d.ts +1 -0
  6. package/dist/neutral/primitives/index.d.ts.map +1 -1
  7. package/dist/neutral/primitives/state/findMostRecentBlock.d.ts +11 -0
  8. package/dist/neutral/primitives/state/findMostRecentBlock.d.ts.map +1 -0
  9. package/dist/neutral/primitives/state/hydratedBlockByNumber.d.ts +4 -0
  10. package/dist/neutral/primitives/state/hydratedBlockByNumber.d.ts.map +1 -0
  11. package/dist/neutral/primitives/state/index.d.ts +3 -0
  12. package/dist/neutral/primitives/state/index.d.ts.map +1 -0
  13. package/dist/neutral/provider/viewer/XyoViewer.d.ts +4 -4
  14. package/dist/neutral/provider/viewer/XyoViewer.d.ts.map +1 -1
  15. package/dist/neutral/provider/viewer/index.d.ts +0 -1
  16. package/dist/neutral/provider/viewer/index.d.ts.map +1 -1
  17. package/dist/neutral/services/Chain/BaseChainService.d.ts +0 -2
  18. package/dist/neutral/services/Chain/BaseChainService.d.ts.map +1 -1
  19. package/dist/neutral/services/Chain/ChainService.d.ts +2 -2
  20. package/dist/neutral/services/Chain/ChainService.d.ts.map +1 -1
  21. package/dist/neutral/services/Chain/interfaces/ChainStakeViewer.d.ts +2 -2
  22. package/dist/neutral/services/Chain/interfaces/ChainStakeViewer.d.ts.map +1 -1
  23. package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts +2 -2
  24. package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts.map +1 -1
  25. package/dist/neutral/simple/block/SimpleBlockViewer.d.ts +50 -0
  26. package/dist/neutral/simple/block/SimpleBlockViewer.d.ts.map +1 -0
  27. package/dist/neutral/simple/block/index.d.ts +2 -0
  28. package/dist/neutral/simple/block/index.d.ts.map +1 -0
  29. package/dist/neutral/simple/index.d.ts +1 -0
  30. package/dist/neutral/simple/index.d.ts.map +1 -1
  31. package/dist/neutral/utils/HydratedCache.d.ts +16 -0
  32. package/dist/neutral/utils/HydratedCache.d.ts.map +1 -0
  33. package/dist/neutral/utils/index.d.ts +1 -0
  34. package/dist/neutral/utils/index.d.ts.map +1 -1
  35. package/dist/neutral/viewers/Block.d.ts +6 -5
  36. package/dist/neutral/viewers/Block.d.ts.map +1 -1
  37. package/dist/neutral/viewers/Chain.d.ts +2 -0
  38. package/dist/neutral/viewers/Chain.d.ts.map +1 -1
  39. package/dist/neutral/{provider/viewer → viewers}/StepViewer.d.ts +2 -2
  40. package/dist/neutral/viewers/StepViewer.d.ts.map +1 -0
  41. package/dist/neutral/viewers/index.d.ts +1 -0
  42. package/dist/neutral/viewers/index.d.ts.map +1 -1
  43. package/package.json +6 -6
  44. package/src/ChainServiceCollectionV2.ts +7 -10
  45. package/src/primitives/index.ts +1 -0
  46. package/src/primitives/state/findMostRecentBlock.ts +44 -0
  47. package/src/primitives/state/hydratedBlockByNumber.ts +19 -0
  48. package/src/primitives/state/index.ts +2 -0
  49. package/src/provider/viewer/XyoViewer.ts +6 -4
  50. package/src/provider/viewer/index.ts +0 -1
  51. package/src/services/Chain/BaseChainService.ts +1 -3
  52. package/src/services/Chain/ChainService.ts +2 -2
  53. package/src/services/Chain/interfaces/ChainStakeViewer.ts +4 -2
  54. package/src/simple/accountBalance/SimpleAccountBalanceViewer.ts +5 -5
  55. package/src/simple/block/SimpleBlockViewer.ts +133 -0
  56. package/src/simple/block/index.ts +1 -0
  57. package/src/simple/index.ts +1 -0
  58. package/src/utils/HydratedCache.ts +38 -0
  59. package/src/utils/index.ts +1 -0
  60. package/src/viewers/Block.ts +7 -6
  61. package/src/viewers/Chain.ts +2 -0
  62. package/src/{provider/viewer → viewers}/StepViewer.ts +2 -2
  63. package/src/viewers/index.ts +1 -0
  64. package/dist/neutral/provider/viewer/StepViewer.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import type { ArchivistInstance, WriteArchivist } from '@xyo-network/archivist-model';
2
2
  import type { WalletInstance } from '@xyo-network/wallet-model';
3
- import type { BlockProducerService, BlockRewardService, ChainStaker, ChainStakeViewer, ElectionService, EventingChainBlockNumberIteratorService, PendingTransactionsService, StakeIntentService } from './services/index.ts';
4
- import type { AccountBalanceViewer, ChainContractViewer } from './viewers/index.ts';
3
+ import type { BlockProducerService, BlockRewardService, ChainStaker, ChainStakeViewer, ElectionService, StakeIntentService } from './services/index.ts';
4
+ import type { AccountBalanceViewer, BlockViewer, ChainContractViewer, MempoolViewer } from './viewers/index.ts';
5
5
  export interface ChainServiceCollectionV2 {
6
6
  /**
7
7
  * The account which is used to sign transactions
@@ -12,18 +12,14 @@ export interface ChainServiceCollectionV2 {
12
12
  */
13
13
  balance: AccountBalanceViewer;
14
14
  /**
15
- * The archivist which the chain data is stored in
15
+ * The chain iterator
16
16
  */
17
- chainArchivist: ArchivistInstance;
17
+ blockViewer?: BlockViewer;
18
18
  /**
19
19
  * Service for viewing codified chain information
20
20
  * from a contract
21
21
  */
22
22
  chainContractViewer: ChainContractViewer;
23
- /**
24
- * The chain iterator
25
- */
26
- chainIterator?: EventingChainBlockNumberIteratorService;
27
23
  /**
28
24
  * Service for viewing stake information
29
25
  */
@@ -48,7 +44,7 @@ export interface ChainServiceCollectionV2 {
48
44
  /**
49
45
  * Service for managing pending transactions
50
46
  */
51
- pendingTransactions: PendingTransactionsService;
47
+ pendingTransactions: MempoolViewer;
52
48
  /**
53
49
  * The block producer service
54
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ChainServiceCollectionV2.d.ts","sourceRoot":"","sources":["../../src/ChainServiceCollectionV2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE/D,OAAO,KAAK,EACV,oBAAoB,EAAE,kBAAkB,EACxC,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,uCAAuC,EACvF,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAEnF,MAAM,WAAW,wBAAwB;IAEvC;;OAEG;IACH,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,OAAO,EAAE,oBAAoB,CAAA;IAC7B;;OAEG;IACH,cAAc,EAAE,iBAAiB,CAAA;IACjC;;;OAGG;IACH,mBAAmB,EAAE,mBAAmB,CAAA;IACxC;;OAEG;IACH,aAAa,CAAC,EAAE,uCAAuC,CAAA;IACvD;;OAEG;IACH,gBAAgB,EAAE,gBAAgB,CAAA;IAClC;;OAEG;IACH,WAAW,EAAE,WAAW,CAAA;IACxB;;OAEG;IACH,8BAA8B,EAAE,cAAc,CAAA;IAC9C;;OAEG;IACH,QAAQ,EAAE,eAAe,CAAA;IACzB;;;OAGG;IACH,wCAAwC,EAAE,iBAAiB,CAAA;IAC3D;;OAEG;IACH,mBAAmB,EAAE,0BAA0B,CAAA;IAC/C;;OAEG;IACH,QAAQ,EAAE,oBAAoB,CAAA;IAC9B;;OAEG;IACH,MAAM,EAAE,kBAAkB,CAAA;IAC1B;;OAEG;IACH,WAAW,EAAE,kBAAkB,CAAA;CAChC"}
1
+ {"version":3,"file":"ChainServiceCollectionV2.d.ts","sourceRoot":"","sources":["../../src/ChainServiceCollectionV2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE/D,OAAO,KAAK,EACV,oBAAoB,EAAE,kBAAkB,EACxC,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAC9C,kBAAkB,EACnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EACV,oBAAoB,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EACtE,MAAM,oBAAoB,CAAA;AAE3B,MAAM,WAAW,wBAAwB;IAEvC;;OAEG;IACH,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,OAAO,EAAE,oBAAoB,CAAA;IAC7B;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB;;;OAGG;IACH,mBAAmB,EAAE,mBAAmB,CAAA;IACxC;;OAEG;IACH,gBAAgB,EAAE,gBAAgB,CAAA;IAClC;;OAEG;IACH,WAAW,EAAE,WAAW,CAAA;IACxB;;OAEG;IACH,8BAA8B,EAAE,cAAc,CAAA;IAC9C;;OAEG;IACH,QAAQ,EAAE,eAAe,CAAA;IACzB;;;OAGG;IACH,wCAAwC,EAAE,iBAAiB,CAAA;IAC3D;;OAEG;IACH,mBAAmB,EAAE,aAAa,CAAA;IAClC;;OAEG;IACH,QAAQ,EAAE,oBAAoB,CAAA;IAC9B;;OAEG;IACH,MAAM,EAAE,kBAAkB,CAAA;IAC1B;;OAEG;IACH,WAAW,EAAE,kBAAkB,CAAA;CAChC"}
@@ -225,6 +225,49 @@ function readPayloadMapFromStore(store) {
225
225
  }
226
226
  __name(readPayloadMapFromStore, "readPayloadMapFromStore");
227
227
 
228
+ // src/primitives/state/findMostRecentBlock.ts
229
+ import { isSignedBlockBoundWitnessWithStorageMeta } from "@xyo-network/xl1-protocol";
230
+ var DEFAULT_NEXT_OPTIONS = {
231
+ limit: 50
232
+ };
233
+ var findMostRecentBlock = /* @__PURE__ */ __name(async (chainArchivist, nextOptions = DEFAULT_NEXT_OPTIONS, maxIterations = Number.POSITIVE_INFINITY) => {
234
+ let mostRecentBlock;
235
+ let cursor;
236
+ let batch;
237
+ let iterations = 0;
238
+ do {
239
+ batch = await chainArchivist.next({
240
+ ...nextOptions,
241
+ order: "desc",
242
+ cursor
243
+ });
244
+ const blocks = batch.filter(isSignedBlockBoundWitnessWithStorageMeta);
245
+ const last = blocks?.at(0);
246
+ if (last) {
247
+ mostRecentBlock = last;
248
+ break;
249
+ } else {
250
+ cursor = batch.at(-1)?._sequence;
251
+ }
252
+ iterations = iterations + 1;
253
+ } while (batch.length > 0 && iterations < maxIterations);
254
+ return mostRecentBlock;
255
+ }, "findMostRecentBlock");
256
+
257
+ // src/primitives/state/hydratedBlockByNumber.ts
258
+ import { assertEx as assertEx4 } from "@xylabs/sdk-js";
259
+ async function hydratedBlockByNumber(context, blockNumber) {
260
+ if (blockNumber < 0) throw new Error(`Block number ${blockNumber} is less than 0`);
261
+ if (blockNumber > Number.MAX_SAFE_INTEGER) throw new Error(`Block number ${blockNumber} is greater than the maximum safe integer`);
262
+ if (blockNumber % 1 !== 0) throw new Error(`Block number ${blockNumber} is not an integer`);
263
+ const cacheKey = `${blockNumber}`;
264
+ return await withContextCacheResponse(context, "hydratedBlockByNumber", cacheKey, async () => {
265
+ const block = assertEx4(await blockFromBlockNumber(context, blockNumber), () => `Could not find block for block number ${blockNumber}`);
266
+ return await hydrateBlock(context.store, block._hash);
267
+ });
268
+ }
269
+ __name(hydratedBlockByNumber, "hydratedBlockByNumber");
270
+
228
271
  // src/primitives/step/completedStepRewardAddress.ts
229
272
  import { toAddress } from "@xylabs/sdk-js";
230
273
  import { StepSizes } from "@xyo-network/xl1-protocol";
@@ -265,7 +308,7 @@ function stepBlockRange({ block, step }) {
265
308
  __name(stepBlockRange, "stepBlockRange");
266
309
 
267
310
  // src/primitives/step/stepTransferIndex.ts
268
- import { assertEx as assertEx4 } from "@xylabs/sdk-js";
311
+ import { assertEx as assertEx5 } from "@xylabs/sdk-js";
269
312
  import { StepSizes as StepSizes3 } from "@xyo-network/xl1-protocol";
270
313
  function stepTransferIndex(block, step) {
271
314
  let rewardTransferCount = 0;
@@ -279,7 +322,7 @@ function stepTransferIndex(block, step) {
279
322
  rewardTransferCount++;
280
323
  }
281
324
  }
282
- assertEx4(rewardTransferIndex >= 0, () => `Could not find step size for step ${step} at block ${block}`);
325
+ assertEx5(rewardTransferIndex >= 0, () => `Could not find step size for step ${step} at block ${block}`);
283
326
  return [
284
327
  rewardTransferIndex,
285
328
  rewardTransferCount
@@ -288,7 +331,7 @@ function stepTransferIndex(block, step) {
288
331
  __name(stepTransferIndex, "stepTransferIndex");
289
332
 
290
333
  // src/primitives/summary/balances/balancesStepSummaryFromRange.ts
291
- import { assertEx as assertEx5 } from "@xylabs/sdk-js";
334
+ import { assertEx as assertEx6 } from "@xylabs/sdk-js";
292
335
  import { PayloadBuilder } from "@xyo-network/payload-builder";
293
336
  import { isAnyPayload } from "@xyo-network/payload-model";
294
337
  import { StepSizes as StepSizes4 } from "@xyo-network/xl1-protocol";
@@ -465,7 +508,7 @@ async function balancesStepSummaryFromRange(context, range) {
465
508
  };
466
509
  } else {
467
510
  const step = StepSizes4.indexOf(frameSize);
468
- assertEx5(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes4.join(", ")}`);
511
+ assertEx6(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes4.join(", ")}`);
469
512
  const summaryResult = await context.summaryMap.get(`${frameHeadHash}|${frameSize}`);
470
513
  if (isAnyPayload(summaryResult)) {
471
514
  result = summaryResult;
@@ -532,7 +575,7 @@ async function balancesSummary(context) {
532
575
  __name(balancesSummary, "balancesSummary");
533
576
 
534
577
  // src/primitives/summary/schemas/schemasStepSummaryFromRange.ts
535
- import { assertEx as assertEx6 } from "@xylabs/sdk-js";
578
+ import { assertEx as assertEx7 } from "@xylabs/sdk-js";
536
579
  import { isBoundWitness } from "@xyo-network/boundwitness-model";
537
580
  import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
538
581
  import { isAnyPayload as isAnyPayload2, isHashMeta } from "@xyo-network/payload-model";
@@ -564,7 +607,7 @@ async function schemasStepSummaryFromRange(context, range) {
564
607
  };
565
608
  } else {
566
609
  const step = StepSizes5.indexOf(frameSize);
567
- assertEx6(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes5.join(", ")}`);
610
+ assertEx7(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes5.join(", ")}`);
568
611
  const summaryResult = await context.summaryMap.get(`${frameHeadHash}|${frameSize}`);
569
612
  if (isAnyPayload2(summaryResult)) {
570
613
  result = summaryResult;
@@ -625,7 +668,7 @@ async function schemasSummary(context) {
625
668
  __name(schemasSummary, "schemasSummary");
626
669
 
627
670
  // src/primitives/summary/transfers/transfersStepSummaryFromRange.ts
628
- import { assertEx as assertEx7 } from "@xylabs/sdk-js";
671
+ import { assertEx as assertEx8 } from "@xylabs/sdk-js";
629
672
  import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/payload-builder";
630
673
  import { isAnyPayload as isAnyPayload3 } from "@xyo-network/payload-model";
631
674
  import { StepSizes as StepSizes6 } from "@xyo-network/xl1-protocol";
@@ -691,7 +734,7 @@ async function transfersStepSummaryFromRange(context, range) {
691
734
  };
692
735
  } else {
693
736
  const step = StepSizes6.indexOf(frameSize);
694
- assertEx7(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes6.join(", ")}`);
737
+ assertEx8(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes6.join(", ")}`);
695
738
  const key = transfersSummaryKey(frameHeadHash, frameSize);
696
739
  const summaryResult = await context.summaryMap.get(key);
697
740
  if (isAnyPayload3(summaryResult)) {
@@ -822,7 +865,7 @@ import { PayloadBuilder as PayloadBuilder9 } from "@xyo-network/payload-builder"
822
865
  import { PayloadBundleSchema } from "@xyo-network/payload-model";
823
866
 
824
867
  // src/transaction/buildTransaction.ts
825
- import { assertEx as assertEx8, toHex as toHex2 } from "@xylabs/sdk-js";
868
+ import { assertEx as assertEx9, toHex as toHex2 } from "@xylabs/sdk-js";
826
869
  import { BoundWitnessBuilder } from "@xyo-network/boundwitness-builder";
827
870
  import { PayloadBuilder as PayloadBuilder5 } from "@xyo-network/payload-builder";
828
871
  import { defaultTransactionFees } from "@xyo-network/xl1-protocol";
@@ -848,7 +891,7 @@ async function buildTransaction(chain, onChainPayloads, offChainPayloads, signer
848
891
  }
849
892
  const fields = {
850
893
  ...txBoundWitnessFields,
851
- from: from ?? (Array.isArray(signer) ? assertEx8(signer.at(0)?.address) : signer.address)
894
+ from: from ?? (Array.isArray(signer) ? assertEx9(signer.at(0)?.address) : signer.address)
852
895
  };
853
896
  if (script.length > 0) {
854
897
  fields.script = script;
@@ -937,7 +980,7 @@ var confirmSubmittedTransaction = /* @__PURE__ */ __name(async (viewer, txHash,
937
980
  }, "confirmSubmittedTransaction");
938
981
 
939
982
  // src/transaction/hydrateTransaction.ts
940
- import { assertEx as assertEx9 } from "@xylabs/sdk-js";
983
+ import { assertEx as assertEx10 } from "@xylabs/sdk-js";
941
984
  import { hydrateTypedBoundWitness, tryHydrateTypedBoundWitness } from "@xyo-network/archivist-model";
942
985
  import { isAllowedBlockPayload as isAllowedBlockPayload2, isSignedTransactionBoundWitnessWithStorageMeta } from "@xyo-network/xl1-protocol";
943
986
  var tryHydrateTransaction = /* @__PURE__ */ __name(async ({ chainMap }, hash) => {
@@ -996,7 +1039,7 @@ var tryHydrateElevatedTransaction = /* @__PURE__ */ __name(async ({ chainMap },
996
1039
  return void 0;
997
1040
  }, "tryHydrateElevatedTransaction");
998
1041
  var hydrateElevatedTransaction = /* @__PURE__ */ __name(async (context, hash) => {
999
- return assertEx9(await tryHydrateElevatedTransaction(context, hash), () => "Hydration failed");
1042
+ return assertEx10(await tryHydrateElevatedTransaction(context, hash), () => "Hydration failed");
1000
1043
  }, "hydrateElevatedTransaction");
1001
1044
 
1002
1045
  // src/transaction/primitives/transactionBlockByteCount.ts
@@ -1062,7 +1105,7 @@ __name(transactionRequiredGas, "transactionRequiredGas");
1062
1105
 
1063
1106
  // src/transaction/script.ts
1064
1107
  import { asHash as asHash2 } from "@xylabs/sdk-js";
1065
- import { assertEx as assertEx10, filterAs } from "@xylabs/sdk-js";
1108
+ import { assertEx as assertEx11, filterAs } from "@xylabs/sdk-js";
1066
1109
  import { isAllowedBlockPayloadWithHashMeta } from "@xyo-network/xl1-protocol";
1067
1110
  var tryExtractElevatedHashesFromScript = /* @__PURE__ */ __name((strings) => {
1068
1111
  const hashes = strings.filter((str) => str.startsWith("elevate|")).map((str) => str.split("|")[1]);
@@ -1071,7 +1114,7 @@ var tryExtractElevatedHashesFromScript = /* @__PURE__ */ __name((strings) => {
1071
1114
  var extractElevatedHashesFromScript = /* @__PURE__ */ __name((strings) => {
1072
1115
  const hashes = strings.filter((str) => str.startsWith("elevate|")).map((str) => str.split("|")[1]);
1073
1116
  const filtered = filterAs(hashes, (h) => asHash2(h));
1074
- assertEx10(filtered.length === hashes.length, () => "Invalid elevated hashes");
1117
+ assertEx11(filtered.length === hashes.length, () => "Invalid elevated hashes");
1075
1118
  return filtered;
1076
1119
  }, "extractElevatedHashesFromScript");
1077
1120
  var tryExtractElevatedHashes = /* @__PURE__ */ __name((tx) => {
@@ -1085,15 +1128,15 @@ var extractElevatedHashes = /* @__PURE__ */ __name((tx) => {
1085
1128
  const { script } = bw;
1086
1129
  const hashes = script ? tryExtractElevatedHashesFromScript(script) : [];
1087
1130
  const filtered = payloads.filter((p) => hashes.includes(p._hash)).filter(isAllowedBlockPayloadWithHashMeta);
1088
- assertEx10(filtered.length === hashes.length, () => "Invalid elevated hashes");
1131
+ assertEx11(filtered.length === hashes.length, () => "Invalid elevated hashes");
1089
1132
  return filtered;
1090
1133
  }, "extractElevatedHashes");
1091
1134
 
1092
1135
  // src/transaction/signTransaction.ts
1093
- import { assertEx as assertEx11, hexFromArrayBuffer, toArrayBuffer } from "@xylabs/sdk-js";
1136
+ import { assertEx as assertEx12, hexFromArrayBuffer, toArrayBuffer } from "@xylabs/sdk-js";
1094
1137
  import { PayloadBuilder as PayloadBuilder8 } from "@xyo-network/payload-builder";
1095
1138
  async function signTransaction(tx, account) {
1096
- assertEx11(tx.from === account.address, () => "Signer address does not match transaction from address");
1139
+ assertEx12(tx.from === account.address, () => "Signer address does not match transaction from address");
1097
1140
  const unsignedTx = structuredClone(tx);
1098
1141
  unsignedTx.addresses = [
1099
1142
  account.address
@@ -1882,7 +1925,7 @@ var isChainIndexingServiceStateWithStorageMeta = /* @__PURE__ */ __name((value)
1882
1925
  var asChainIndexingServiceStateWithStorageMeta = AsObjectFactory7.create(isChainIndexingServiceStateWithStorageMeta);
1883
1926
 
1884
1927
  // src/simple/accountBalance/SimpleAccountBalanceViewer.ts
1885
- import { AbstractCreatable, assertEx as assertEx12, exists, isDefined as isDefined11 } from "@xylabs/sdk-js";
1928
+ import { AbstractCreatable, assertEx as assertEx13, exists, isDefined as isDefined11 } from "@xylabs/sdk-js";
1886
1929
  import { spanRootAsync as spanRootAsync4 } from "@xylabs/telemetry";
1887
1930
  import { asRange, asXL1BlockNumber as asXL1BlockNumber5, asXL1BlockRange as asXL1BlockRange5, AttoXL1 as AttoXL12, StepSizes as StepSizes9, TransferSchema } from "@xyo-network/xl1-protocol";
1888
1931
  var SimpleAccountBalanceViewer = class extends AbstractCreatable {
@@ -1895,13 +1938,13 @@ var SimpleAccountBalanceViewer = class extends AbstractCreatable {
1895
1938
  get context() {
1896
1939
  return this.params.context;
1897
1940
  }
1898
- get transferContext() {
1899
- return this.params.transferContext;
1941
+ get transfersSummaryContext() {
1942
+ return this.params.transfersSummaryContext;
1900
1943
  }
1901
1944
  static async paramsHandler(params) {
1902
- assertEx12(params.blockViewer, () => "blockViewer is required");
1903
- assertEx12(params.context, () => "context is required");
1904
- assertEx12(params.transferContext, () => "transferContext is required");
1945
+ assertEx13(params.blockViewer, () => "blockViewer is required");
1946
+ assertEx13(params.context, () => "context is required");
1947
+ assertEx13(params.transfersSummaryContext, () => "transfersSummaryContext is required");
1905
1948
  return {
1906
1949
  ...await super.paramsHandler(params)
1907
1950
  };
@@ -1925,7 +1968,7 @@ var SimpleAccountBalanceViewer = class extends AbstractCreatable {
1925
1968
  const transferIndexes = block[0].payload_schemas.map((schema, index) => schema === TransferSchema ? index : void 0).filter(exists);
1926
1969
  const transfers = transferIndexes.map((index) => {
1927
1970
  const hash = block[0].payload_hashes[index];
1928
- return assertEx12(block[1].find((p) => p._hash === hash), () => `Error: Could not find Transfer with hash ${hash} in block ${block[0]._hash}`);
1971
+ return assertEx13(block[1].find((p) => p._hash === hash), () => `Error: Could not find Transfer with hash ${hash} in block ${block[0]._hash}`);
1929
1972
  }).filter(exists).filter((t) => t.from === address || isDefined11(t.transfers[address]));
1930
1973
  if (transfers.length === 0) {
1931
1974
  continue;
@@ -1968,7 +2011,7 @@ var SimpleAccountBalanceViewer = class extends AbstractCreatable {
1968
2011
  const transferSummaryPairs = await Promise.all(frames.map(async (frame) => {
1969
2012
  return [
1970
2013
  frame,
1971
- await transfersStepSummaryFromRange(this.transferContext, frame)
2014
+ await transfersStepSummaryFromRange(this.transfersSummaryContext, frame)
1972
2015
  ];
1973
2016
  }));
1974
2017
  const filteredTransferSummaryPairs = transferSummaryPairs.filter(([_, summary]) => Object.keys(summary.transfers).includes(address));
@@ -2001,13 +2044,158 @@ var SimpleAccountBalanceViewer = class extends AbstractCreatable {
2001
2044
  }
2002
2045
  };
2003
2046
 
2047
+ // src/simple/block/SimpleBlockViewer.ts
2048
+ import { AbstractCreatable as AbstractCreatable2, assertEx as assertEx14, spanRootAsync as spanRootAsync5 } from "@xylabs/sdk-js";
2049
+ import { asSignedHydratedBlockWithHashMeta, asXL1BlockNumber as asXL1BlockNumber6 } from "@xyo-network/xl1-protocol";
2050
+
2051
+ // src/utils/HydratedCache.ts
2052
+ import { LRUCache as LRUCache2 } from "lru-cache";
2053
+ var HydratedCache = class {
2054
+ static {
2055
+ __name(this, "HydratedCache");
2056
+ }
2057
+ cache;
2058
+ chainMap;
2059
+ hydrateFunction;
2060
+ constructor(chainMap, hydrateFunction, maxSize = 200) {
2061
+ this.chainMap = chainMap;
2062
+ this.hydrateFunction = hydrateFunction;
2063
+ this.cache = new LRUCache2({
2064
+ max: maxSize
2065
+ });
2066
+ }
2067
+ async get(hash) {
2068
+ const existing = this.cache.get(hash);
2069
+ if (existing !== void 0) return existing;
2070
+ const block = await this.hydrateFunction({
2071
+ chainMap: this.chainMap
2072
+ }, hash) ?? null;
2073
+ if (block !== null) this.cache.set(hash, block);
2074
+ return block;
2075
+ }
2076
+ has(hash) {
2077
+ return this.cache.has(hash);
2078
+ }
2079
+ };
2080
+
2081
+ // src/utils/isZodError.ts
2082
+ import * as z20 from "zod";
2083
+ var isZodError = /* @__PURE__ */ __name((error) => {
2084
+ return error instanceof z20.ZodError;
2085
+ }, "isZodError");
2086
+ var prettifyZodError = /* @__PURE__ */ __name((error) => {
2087
+ return z20.prettifyError(error);
2088
+ }, "prettifyZodError");
2089
+
2090
+ // src/simple/block/SimpleBlockViewer.ts
2091
+ var SimpleBlockViewer = class extends AbstractCreatable2 {
2092
+ static {
2093
+ __name(this, "SimpleBlockViewer");
2094
+ }
2095
+ _signedHydratedBlockCache;
2096
+ get context() {
2097
+ return this.params.context;
2098
+ }
2099
+ get finalizedArchivist() {
2100
+ return this.params.finalizedArchivist;
2101
+ }
2102
+ static async paramsHandler(params) {
2103
+ assertEx14(params.context, () => "context is required");
2104
+ assertEx14(params.finalizedArchivist, () => "finalizedArchivist is required");
2105
+ return {
2106
+ ...await super.paramsHandler(params)
2107
+ };
2108
+ }
2109
+ async blockByHash(hash) {
2110
+ return await spanRootAsync5("blockByHash", async () => {
2111
+ const cache = this.getHydratedBlockCache();
2112
+ return await cache.get(hash);
2113
+ }, this.tracer);
2114
+ }
2115
+ async blockByNumber(blockNumber) {
2116
+ return await spanRootAsync5("blockByNumber", async () => {
2117
+ return asSignedHydratedBlockWithHashMeta(await hydratedBlockByNumber(this.context, blockNumber)) ?? null;
2118
+ }, this.tracer);
2119
+ }
2120
+ async blocksByHash(hash, limit = 50) {
2121
+ return await spanRootAsync5("blocksByHash", async () => {
2122
+ assertEx14(limit > 0, () => "limit must be greater than 0");
2123
+ assertEx14(limit <= 100, () => "limit must be less than 100");
2124
+ const blocks = [];
2125
+ let current = await this.blockByHash(hash);
2126
+ while (current && blocks.length < limit) {
2127
+ blocks.push(current);
2128
+ const previousHash = current[0].previous;
2129
+ if (previousHash === null) break;
2130
+ current = await this.blockByHash(previousHash);
2131
+ }
2132
+ return blocks.map((b) => asSignedHydratedBlockWithHashMeta(b, true));
2133
+ }, this.tracer);
2134
+ }
2135
+ async blocksByNumber(blockNumber, limit = 50) {
2136
+ return await spanRootAsync5("blocksByHash", async () => {
2137
+ assertEx14(limit > 0, () => "limit must be greater than 0");
2138
+ assertEx14(limit <= 100, () => "limit must be less than 100");
2139
+ const blocks = [];
2140
+ let current = await this.blockByNumber(blockNumber);
2141
+ while (current && blocks.length < limit) {
2142
+ blocks.push(current);
2143
+ if (current[0].block === 0) break;
2144
+ const previousNumber = asXL1BlockNumber6(current[0].block - 1, true);
2145
+ current = await this.blockByNumber(previousNumber);
2146
+ }
2147
+ return blocks.map((b) => asSignedHydratedBlockWithHashMeta(b, true));
2148
+ }, this.tracer);
2149
+ }
2150
+ async currentBlock() {
2151
+ return await spanRootAsync5("currentBlock", async () => {
2152
+ const currentHead = assertEx14(await this.getCurrentHead(), () => "Could not find most recent block");
2153
+ const cache = this.getHydratedBlockCache();
2154
+ const block = await cache.get(currentHead._hash);
2155
+ if (!block) {
2156
+ console.log(`Could not find current block with hash ${currentHead._hash}`);
2157
+ }
2158
+ return assertEx14(block, () => "Could not find current block");
2159
+ }, this.tracer);
2160
+ }
2161
+ async currentBlockHash() {
2162
+ return await spanRootAsync5("currentBlockHash", async () => {
2163
+ const currentHead = assertEx14(await this.getCurrentHead(), () => "Could not find most recent block");
2164
+ return currentHead._hash;
2165
+ }, this.tracer);
2166
+ }
2167
+ async currentBlockNumber() {
2168
+ return await spanRootAsync5("currentBlockNumber", async () => {
2169
+ const currentHead = assertEx14(await this.getCurrentHead(), () => "Could not find most recent block");
2170
+ return asXL1BlockNumber6(currentHead.block, {
2171
+ name: "currentBlockNumber"
2172
+ });
2173
+ }, this.tracer);
2174
+ }
2175
+ async getCurrentHead() {
2176
+ const chainArchivist = this.finalizedArchivist;
2177
+ return await findMostRecentBlock(chainArchivist);
2178
+ }
2179
+ getHydratedBlockCache() {
2180
+ if (this._signedHydratedBlockCache) return this._signedHydratedBlockCache;
2181
+ const chainMap = this.context.store.chainMap;
2182
+ this._signedHydratedBlockCache = new HydratedCache(chainMap, async ({ chainMap: chainMap2 }, hash, maxDepth, minDepth) => {
2183
+ const result = await hydrateBlock({
2184
+ chainMap: chainMap2
2185
+ }, hash, maxDepth, minDepth);
2186
+ return asSignedHydratedBlockWithHashMeta(result, true);
2187
+ }, 200);
2188
+ return this._signedHydratedBlockCache;
2189
+ }
2190
+ };
2191
+
2004
2192
  // src/simple/chainStake/SimpleChainStakeViewer.ts
2005
2193
  import { asAddress as asAddress5, toAddress as toAddress5 } from "@xylabs/sdk-js";
2006
- import { AbstractCreatable as AbstractCreatable3, assertEx as assertEx13, creatable as creatable2 } from "@xylabs/sdk-js";
2194
+ import { AbstractCreatable as AbstractCreatable4, assertEx as assertEx15, creatable as creatable2 } from "@xylabs/sdk-js";
2007
2195
  import { Account } from "@xyo-network/account";
2008
2196
 
2009
2197
  // src/simple/chainStakeEvents/SimpleChainStakeEventsViewer.ts
2010
- import { AbstractCreatable as AbstractCreatable2, creatable, isDefined as isDefined12 } from "@xylabs/sdk-js";
2198
+ import { AbstractCreatable as AbstractCreatable3, creatable, isDefined as isDefined12 } from "@xylabs/sdk-js";
2011
2199
  function _ts_decorate(decorators, target, key, desc) {
2012
2200
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2013
2201
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -2015,7 +2203,7 @@ function _ts_decorate(decorators, target, key, desc) {
2015
2203
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2016
2204
  }
2017
2205
  __name(_ts_decorate, "_ts_decorate");
2018
- var SimpleChainStakeEventsViewer = class extends AbstractCreatable2 {
2206
+ var SimpleChainStakeEventsViewer = class extends AbstractCreatable3 {
2019
2207
  static {
2020
2208
  __name(this, "SimpleChainStakeEventsViewer");
2021
2209
  }
@@ -2099,14 +2287,14 @@ function _ts_decorate2(decorators, target, key, desc) {
2099
2287
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2100
2288
  }
2101
2289
  __name(_ts_decorate2, "_ts_decorate");
2102
- var SimpleChainStakeViewer = class extends AbstractCreatable3 {
2290
+ var SimpleChainStakeViewer = class extends AbstractCreatable4 {
2103
2291
  static {
2104
2292
  __name(this, "SimpleChainStakeViewer");
2105
2293
  }
2106
2294
  _chainId;
2107
2295
  _chainStakeEventsViewer;
2108
2296
  get chainId() {
2109
- return assertEx13(this._chainId, () => "Chain ID not set");
2297
+ return assertEx15(this._chainId, () => "Chain ID not set");
2110
2298
  }
2111
2299
  get chainMap() {
2112
2300
  return this.params.chainMap;
@@ -2118,7 +2306,7 @@ var SimpleChainStakeViewer = class extends AbstractCreatable3 {
2118
2306
  return toAddress5(toAddress5(1n));
2119
2307
  }
2120
2308
  get stakeEvents() {
2121
- return assertEx13(this._chainStakeEventsViewer, () => "Stake events viewer not set");
2309
+ return assertEx15(this._chainStakeEventsViewer, () => "Stake events viewer not set");
2122
2310
  }
2123
2311
  get stakingTokenAddress() {
2124
2312
  return toAddress5("0x000000000000000000000000000011");
@@ -2172,7 +2360,7 @@ var SimpleChainStakeViewer = class extends AbstractCreatable3 {
2172
2360
  return pending;
2173
2361
  }
2174
2362
  stakeById(id) {
2175
- return assertEx13(this.positions[id], () => new Error(`Stake with id ${id} not found`));
2363
+ return assertEx15(this.positions[id], () => new Error(`Stake with id ${id} not found`));
2176
2364
  }
2177
2365
  stakeByStaker(staker, slot) {
2178
2366
  return this.positions.filter((s) => asAddress5(s.staker) === asAddress5(staker))[slot];
@@ -2339,9 +2527,9 @@ var SimpleXyoGateway = class {
2339
2527
  };
2340
2528
 
2341
2529
  // src/simple/gateway/SimpleXyoGatewayRunner.ts
2342
- import { assertEx as assertEx14, BigIntToJsonZod, isDefined as isDefined13 } from "@xylabs/sdk-js";
2530
+ import { assertEx as assertEx16, BigIntToJsonZod, isDefined as isDefined13 } from "@xylabs/sdk-js";
2343
2531
  import { PayloadBuilder as PayloadBuilder12 } from "@xyo-network/payload-builder";
2344
- import { asXL1BlockNumber as asXL1BlockNumber6, TransferSchema as TransferSchema2 } from "@xyo-network/xl1-protocol";
2532
+ import { asXL1BlockNumber as asXL1BlockNumber7, TransferSchema as TransferSchema2 } from "@xyo-network/xl1-protocol";
2345
2533
  var SimpleXyoGatewayRunner = class {
2346
2534
  static {
2347
2535
  __name(this, "SimpleXyoGatewayRunner");
@@ -2370,18 +2558,18 @@ var SimpleXyoGatewayRunner = class {
2370
2558
  return this._dataLakes.length - 1;
2371
2559
  }
2372
2560
  async addPayloadsToChain(onChain, offChain, options) {
2373
- const viewer = assertEx14(this.connectionInstance.viewer, () => "No viewer available on connection");
2561
+ const viewer = assertEx16(this.connectionInstance.viewer, () => "No viewer available on connection");
2374
2562
  const { nbf, exp, chain, fees } = options ?? {};
2375
2563
  const resolvedChainId = isDefined13(chain) ? chain : await viewer.chainId();
2376
- const resolvedNbf = asXL1BlockNumber6(isDefined13(nbf) ? nbf : await viewer.currentBlockNumber(), true);
2377
- const resolvedExp = asXL1BlockNumber6(isDefined13(exp) ? exp : resolvedNbf + 10, true);
2564
+ const resolvedNbf = asXL1BlockNumber7(isDefined13(nbf) ? nbf : await viewer.currentBlockNumber(), true);
2565
+ const resolvedExp = asXL1BlockNumber7(isDefined13(exp) ? exp : resolvedNbf + 10, true);
2378
2566
  const tx = await buildUnsignedTransaction(resolvedChainId, onChain, offChain, resolvedNbf, resolvedExp, await (await this.signer()).address(), fees);
2379
2567
  return await this.addTransactionToChain(tx);
2380
2568
  }
2381
2569
  async addTransactionToChain(tx) {
2382
2570
  const connection = this.connectionInstance;
2383
2571
  const signer = this.signerInstance;
2384
- const runner = assertEx14(connection.runner, () => "No runner available on connection");
2572
+ const runner = assertEx16(connection.runner, () => "No runner available on connection");
2385
2573
  const signedTx = await signer.signTransaction(tx);
2386
2574
  await this.addPayloadsToDataLakes(signedTx[1]);
2387
2575
  return [
@@ -2393,7 +2581,7 @@ var SimpleXyoGatewayRunner = class {
2393
2581
  ];
2394
2582
  }
2395
2583
  async confirmSubmittedTransaction(txHash, options) {
2396
- return await confirmSubmittedTransaction(assertEx14(this.connectionInstance.viewer, () => "Connection viewer is undefined"), txHash, options);
2584
+ return await confirmSubmittedTransaction(assertEx16(this.connectionInstance.viewer, () => "Connection viewer is undefined"), txHash, options);
2397
2585
  }
2398
2586
  /** @deprecated use connectionInstance instead */
2399
2587
  connection() {
@@ -2511,7 +2699,7 @@ var SimpleXyoNetwork = class {
2511
2699
  };
2512
2700
 
2513
2701
  // src/simple/permissions/SimpleXyoPermissions.ts
2514
- import { assertEx as assertEx15 } from "@xylabs/sdk-js";
2702
+ import { assertEx as assertEx17 } from "@xylabs/sdk-js";
2515
2703
  var SimpleXyoPermissions = class {
2516
2704
  static {
2517
2705
  __name(this, "SimpleXyoPermissions");
@@ -2523,7 +2711,7 @@ var SimpleXyoPermissions = class {
2523
2711
  this.invoker = store.invoker;
2524
2712
  }
2525
2713
  get store() {
2526
- return assertEx15(this._store, () => "Store must be defined to get permissions");
2714
+ return assertEx17(this._store, () => "Store must be defined to get permissions");
2527
2715
  }
2528
2716
  async getPermissions() {
2529
2717
  return await this.store.getPermissions();
@@ -2581,7 +2769,7 @@ var SimpleXyoPermissions = class {
2581
2769
  };
2582
2770
 
2583
2771
  // src/simple/permissions/store/MemoryPermissions.ts
2584
- import { assertEx as assertEx16 } from "@xylabs/sdk-js";
2772
+ import { assertEx as assertEx18 } from "@xylabs/sdk-js";
2585
2773
  var MemoryPermissionsStore = class {
2586
2774
  static {
2587
2775
  __name(this, "MemoryPermissionsStore");
@@ -2592,7 +2780,7 @@ var MemoryPermissionsStore = class {
2592
2780
  this._invoker = invoker;
2593
2781
  }
2594
2782
  get invoker() {
2595
- return assertEx16(this._invoker, () => "Invoker must be defined to get permissions");
2783
+ return assertEx18(this._invoker, () => "Invoker must be defined to get permissions");
2596
2784
  }
2597
2785
  async getPermissions() {
2598
2786
  await Promise.resolve();
@@ -2659,8 +2847,8 @@ var SimpleXyoSigner = class {
2659
2847
  };
2660
2848
 
2661
2849
  // src/simple/timesync/SimpleTimeSyncViewer.ts
2662
- import { asHash as asHash5, assertEx as assertEx17, isDefined as isDefined14 } from "@xylabs/sdk-js";
2663
- import { asTimePayload, asXL1BlockNumber as asXL1BlockNumber7, TimeSchema } from "@xyo-network/xl1-protocol";
2850
+ import { asHash as asHash5, assertEx as assertEx19, isDefined as isDefined14 } from "@xylabs/sdk-js";
2851
+ import { asTimePayload, asXL1BlockNumber as asXL1BlockNumber8, TimeSchema } from "@xyo-network/xl1-protocol";
2664
2852
  var SimpleTimeSyncViewer = class {
2665
2853
  static {
2666
2854
  __name(this, "SimpleTimeSyncViewer");
@@ -2674,7 +2862,7 @@ var SimpleTimeSyncViewer = class {
2674
2862
  async convertTime(fromDomain, toDomain, from) {
2675
2863
  switch (fromDomain) {
2676
2864
  case "xl1": {
2677
- const [block, payloads] = assertEx17(await this.blockViewer.blockByNumber(asXL1BlockNumber7(from, true)), () => "Block not found");
2865
+ const [block, payloads] = assertEx19(await this.blockViewer.blockByNumber(asXL1BlockNumber8(from, true)), () => "Block not found");
2678
2866
  const timeSchemaIndex = block.payload_schemas.indexOf(TimeSchema);
2679
2867
  const hash = timeSchemaIndex === -1 ? void 0 : block.payload_hashes[timeSchemaIndex];
2680
2868
  const timePayload = asTimePayload(isDefined14(hash) ? payloads.find((p) => p._hash === hash) : void 0);
@@ -2740,10 +2928,10 @@ var SimpleTimeSyncViewer = class {
2740
2928
  ];
2741
2929
  }
2742
2930
  case "ethereum": {
2743
- const provider = assertEx17(this.ethProvider, () => "Ethereum provider not configured");
2931
+ const provider = assertEx19(this.ethProvider, () => "Ethereum provider not configured");
2744
2932
  const blockNumber = await provider.getBlockNumber() ?? 0;
2745
2933
  const block = await provider.getBlock(blockNumber);
2746
- const blockHash = asHash5(assertEx17(block?.hash, () => "Block hash not found"), true);
2934
+ const blockHash = asHash5(assertEx19(block?.hash, () => "Block hash not found"), true);
2747
2935
  return [
2748
2936
  blockNumber,
2749
2937
  blockHash
@@ -2760,7 +2948,7 @@ var SimpleTimeSyncViewer = class {
2760
2948
  };
2761
2949
 
2762
2950
  // src/time/primitives/xl1BlockNumberToEthBlockNumber.ts
2763
- import { assertEx as assertEx18 } from "@xylabs/sdk-js";
2951
+ import { assertEx as assertEx20 } from "@xylabs/sdk-js";
2764
2952
  import { asTimePayload as asTimePayload2, TimeSchema as TimeSchema2 } from "@xyo-network/xl1-protocol";
2765
2953
  async function xl1BlockNumberToEthBlockNumber(context, xl1BlockNumber) {
2766
2954
  const blockHash = await hashFromBlockNumber(context, xl1BlockNumber);
@@ -2768,19 +2956,10 @@ async function xl1BlockNumberToEthBlockNumber(context, xl1BlockNumber) {
2768
2956
  const timePayload = asTimePayload2(hydratedBlock[1].find((p) => p.schema === TimeSchema2), {
2769
2957
  required: true
2770
2958
  });
2771
- return assertEx18(timePayload.ethereum, () => "No ethereum timestamp found on block");
2959
+ return assertEx20(timePayload.ethereum, () => "No ethereum timestamp found on block");
2772
2960
  }
2773
2961
  __name(xl1BlockNumberToEthBlockNumber, "xl1BlockNumberToEthBlockNumber");
2774
2962
 
2775
- // src/utils/isZodError.ts
2776
- import * as z20 from "zod";
2777
- var isZodError = /* @__PURE__ */ __name((error) => {
2778
- return error instanceof z20.ZodError;
2779
- }, "isZodError");
2780
- var prettifyZodError = /* @__PURE__ */ __name((error) => {
2781
- return z20.prettifyError(error);
2782
- }, "prettifyZodError");
2783
-
2784
2963
  // src/viewers/AccountBalance.ts
2785
2964
  import { WithHashMetaZod } from "@xyo-network/payload-model";
2786
2965
  import { TransferZod } from "@xyo-network/xl1-protocol";
@@ -2855,6 +3034,7 @@ export {
2855
3034
  GlobalMetaSchema,
2856
3035
  HydratedBlockStateValidationError,
2857
3036
  HydratedBlockValidationError,
3037
+ HydratedCache,
2858
3038
  JSONSchemaMetaSchema,
2859
3039
  LruCacheMap,
2860
3040
  MemoryMap,
@@ -2864,6 +3044,7 @@ export {
2864
3044
  RewardMultipliers,
2865
3045
  SchemasStepSummarySchema,
2866
3046
  SimpleAccountBalanceViewer,
3047
+ SimpleBlockViewer,
2867
3048
  SimpleChainStakeViewer,
2868
3049
  SimpleDataLakeRunner,
2869
3050
  SimpleDataLakeViewer,
@@ -2922,6 +3103,7 @@ export {
2922
3103
  elevatedPayloads,
2923
3104
  extractElevatedHashes,
2924
3105
  extractElevatedHashesFromScript,
3106
+ findMostRecentBlock,
2925
3107
  flattenHydratedBlock,
2926
3108
  flattenHydratedBlocks,
2927
3109
  flattenHydratedTransaction,
@@ -2934,6 +3116,7 @@ export {
2934
3116
  hydrateBlock,
2935
3117
  hydrateElevatedTransaction,
2936
3118
  hydrateTransaction,
3119
+ hydratedBlockByNumber,
2937
3120
  hydratedTransactionToPayloadBundle,
2938
3121
  isAddressPairPayload,
2939
3122
  isBalancesStepSummary,