@xyo-network/xl1-protocol-sdk 4.0.7 → 4.0.8

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.
@@ -3089,6 +3089,45 @@ function resolveRestConnectionEndpoint(config, moniker) {
3089
3089
  return baseUrl;
3090
3090
  }
3091
3091
 
3092
+ // src/config/restConnectionFromS3Bucket.ts
3093
+ import { assertEx as assertEx22, isDefined as isDefined15 } from "@ariestools/sdk";
3094
+ function restConnectionFromS3Bucket(bucket) {
3095
+ const baseUrl = assertEx22(
3096
+ isDefined15(bucket.readUrl) && bucket.readUrl !== "" ? bucket.readUrl : void 0,
3097
+ () => "S3 bucket config has no readUrl \u2014 a public read URL is required to derive a REST connection"
3098
+ );
3099
+ return { type: "rest", baseUrl };
3100
+ }
3101
+
3102
+ // src/config/synthesizeMemoryViewerBindings.ts
3103
+ var MEMORY_CONNECTION = "memory";
3104
+ var MEMORY_MONIKERS = [
3105
+ "AccountBalanceViewer",
3106
+ "BlockRewardViewer",
3107
+ "MempoolViewer",
3108
+ "NetworkStakeViewer",
3109
+ "NetworkStakeStepRewardsByPositionViewer",
3110
+ "NetworkStakeStepRewardsByStakerViewer",
3111
+ "NetworkStakeStepRewardsByStepViewer",
3112
+ "NetworkStakeStepRewardsTotalViewer",
3113
+ "NetworkStakeStepRewardsViewer",
3114
+ "StakeEventsViewer",
3115
+ "StakeTotalsViewer",
3116
+ "StakeViewer",
3117
+ "StepViewer",
3118
+ "TimeSyncViewer",
3119
+ "TransactionViewer",
3120
+ "WindowedBlockViewer",
3121
+ "XyoViewer"
3122
+ ];
3123
+ function synthesizeMemoryViewerBindings() {
3124
+ const bindings = {};
3125
+ for (const moniker of MEMORY_MONIKERS) {
3126
+ bindings[moniker] = { connection: MEMORY_CONNECTION };
3127
+ }
3128
+ return bindings;
3129
+ }
3130
+
3092
3131
  // src/config/synthesizeRpcConnectionBindings.ts
3093
3132
  var DEFAULT_RPC_CONNECTION = "default-rpc";
3094
3133
  var RPC_MONIKERS = [
@@ -3226,7 +3265,7 @@ import { PayloadBundleSchema as PayloadBundleSchema2 } from "@xyo-network/sdk-js
3226
3265
  import { PayloadBuilder as PayloadBuilder12 } from "@xyo-network/sdk-js";
3227
3266
 
3228
3267
  // src/transaction/buildTransaction.ts
3229
- import { assertEx as assertEx22, toHex } from "@ariestools/sdk";
3268
+ import { assertEx as assertEx23, toHex } from "@ariestools/sdk";
3230
3269
  import {
3231
3270
  asAnyPayload as asAnyPayload2,
3232
3271
  BoundWitnessBuilder as BoundWitnessBuilder2,
@@ -3252,7 +3291,7 @@ async function buildTransaction(chain, onChainPayloads, offChainPayloads, signer
3252
3291
  const script = Array.from(elevatedHashes, (elevatedHash) => `elevate|${elevatedHash}`);
3253
3292
  const fields = {
3254
3293
  ...txBoundWitnessFields,
3255
- from: from ?? (Array.isArray(signer) ? assertEx22(signer.at(0)?.address) : signer.address)
3294
+ from: from ?? (Array.isArray(signer) ? assertEx23(signer.at(0)?.address) : signer.address)
3256
3295
  };
3257
3296
  if (script.length > 0) {
3258
3297
  fields.script = script;
@@ -3297,7 +3336,7 @@ async function buildUnsignedTransaction(chain, onChainPayloads, offChainPayloads
3297
3336
  // src/transaction/confirmSubmittedTransaction.ts
3298
3337
  import {
3299
3338
  delay,
3300
- isDefined as isDefined15,
3339
+ isDefined as isDefined16,
3301
3340
  isNumber
3302
3341
  } from "@ariestools/sdk";
3303
3342
  var DEFAULT_CONFIRMATION_ATTEMPTS = 20;
@@ -3319,7 +3358,7 @@ var confirmSubmittedTransaction = async (viewer, txHash, options) => {
3319
3358
  let attempts = 0;
3320
3359
  while (true) {
3321
3360
  const tx = await viewer.transaction.byHash(txHash) ?? void 0;
3322
- if (isDefined15(tx)) {
3361
+ if (isDefined16(tx)) {
3323
3362
  options?.logger?.debug("Transaction confirmed", txHash);
3324
3363
  return tx;
3325
3364
  }
@@ -3337,7 +3376,7 @@ var confirmSubmittedTransaction = async (viewer, txHash, options) => {
3337
3376
  };
3338
3377
 
3339
3378
  // src/transaction/hydrateTransaction.ts
3340
- import { assertEx as assertEx23 } from "@ariestools/sdk";
3379
+ import { assertEx as assertEx24 } from "@ariestools/sdk";
3341
3380
  import {
3342
3381
  asAnyPayload as asAnyPayload3,
3343
3382
  hydrateTypedBoundWitness,
@@ -3408,7 +3447,7 @@ var tryHydrateElevatedTransaction = async ({ chainMap }, hash) => {
3408
3447
  return void 0;
3409
3448
  };
3410
3449
  var hydrateElevatedTransaction = async (context, hash) => {
3411
- return assertEx23(await tryHydrateElevatedTransaction(context, hash), () => "Hydration failed");
3450
+ return assertEx24(await tryHydrateElevatedTransaction(context, hash), () => "Hydration failed");
3412
3451
  };
3413
3452
 
3414
3453
  // src/transaction/primitives/transactionBlockByteCount.ts
@@ -3461,7 +3500,7 @@ function transactionRequiredGas(hydratedTransaction) {
3461
3500
 
3462
3501
  // src/transaction/signTransaction.ts
3463
3502
  import {
3464
- assertEx as assertEx24,
3503
+ assertEx as assertEx25,
3465
3504
  hexFromArrayBuffer,
3466
3505
  toArrayBuffer
3467
3506
  } from "@ariestools/sdk";
@@ -3478,12 +3517,12 @@ async function signBoundWitness(bw, account) {
3478
3517
  };
3479
3518
  }
3480
3519
  async function signTransaction(tx, account) {
3481
- assertEx24(tx.from === account.address, () => "Signer address does not match transaction from address");
3520
+ assertEx25(tx.from === account.address, () => "Signer address does not match transaction from address");
3482
3521
  return await signBoundWitness(tx, account);
3483
3522
  }
3484
3523
 
3485
3524
  // src/transaction/TransactionBuilder.ts
3486
- import { assertEx as assertEx25, Base } from "@ariestools/sdk";
3525
+ import { assertEx as assertEx26, Base } from "@ariestools/sdk";
3487
3526
  import { PayloadBuilder as PayloadBuilder11 } from "@xyo-network/sdk-js";
3488
3527
  import {
3489
3528
  asXL1BlockNumber as asXL1BlockNumber4,
@@ -3503,9 +3542,9 @@ var TransactionBuilder = class extends Base {
3503
3542
  super(options);
3504
3543
  }
3505
3544
  async build() {
3506
- const chain = assertEx25(this._chain, () => "Chain must be set before building the transaction");
3507
- const fees = assertEx25(this._fees, () => "Fees must be set before building the transaction");
3508
- const blockRange = assertEx25(this._blockRange, () => "Block range must be set before building the transaction");
3545
+ const chain = assertEx26(this._chain, () => "Chain must be set before building the transaction");
3546
+ const fees = assertEx26(this._fees, () => "Fees must be set before building the transaction");
3547
+ const blockRange = assertEx26(this._blockRange, () => "Block range must be set before building the transaction");
3509
3548
  return await buildTransaction(
3510
3549
  chain,
3511
3550
  this._elevatedPayloads,
@@ -3535,7 +3574,7 @@ var TransactionBuilder = class extends Base {
3535
3574
  }
3536
3575
  elevatedPayload(payload) {
3537
3576
  const allowedPayload = isAllowedBlockPayload2(payload) ? payload : void 0;
3538
- const allowPayloadExists = assertEx25(allowedPayload, () => "Payload must be an AllowedBlockPayload");
3577
+ const allowPayloadExists = assertEx26(allowedPayload, () => "Payload must be an AllowedBlockPayload");
3539
3578
  this._elevatedPayloads.push(allowPayloadExists);
3540
3579
  return this;
3541
3580
  }
@@ -3651,7 +3690,7 @@ var toHostActorConfigContext = zodToFactory6(HostActorConfigContext, "toHostActo
3651
3690
  // src/CreatableProvider/AbstractCreatableProvider.ts
3652
3691
  import {
3653
3692
  AbstractCreatable,
3654
- assertEx as assertEx26,
3693
+ assertEx as assertEx27,
3655
3694
  IdLogger
3656
3695
  } from "@ariestools/sdk";
3657
3696
  var AbstractCreatableProvider = class extends AbstractCreatable {
@@ -3685,9 +3724,9 @@ var AbstractCreatableProvider = class extends AbstractCreatable {
3685
3724
  return factory;
3686
3725
  }
3687
3726
  static async paramsHandler(params = {}) {
3688
- const context = assertEx26(params.context, () => new Error("Context is required"));
3689
- const config = assertEx26(context.config, () => new Error("Context config is required"));
3690
- const locator = assertEx26(context.locator, () => new Error("Context locator is required"));
3727
+ const context = assertEx27(params.context, () => new Error("Context is required"));
3728
+ const config = assertEx27(context.config, () => new Error("Context config is required"));
3729
+ const locator = assertEx27(context.locator, () => new Error("Context locator is required"));
3691
3730
  return await super.paramsHandler({
3692
3731
  ...params,
3693
3732
  statusReporter: params.statusReporter ?? context.statusReporter,
@@ -3730,13 +3769,13 @@ function labeledCreatableProvider() {
3730
3769
  }
3731
3770
 
3732
3771
  // src/createDeclarationPayload.ts
3733
- import { isDefined as isDefined16 } from "@ariestools/sdk";
3772
+ import { isDefined as isDefined17 } from "@ariestools/sdk";
3734
3773
  import { PayloadBuilder as PayloadBuilder13 } from "@xyo-network/sdk-js";
3735
3774
  import {
3736
3775
  ChainStakeIntentSchema
3737
3776
  } from "@xyo-network/xl1-protocol-lib";
3738
3777
  var createDeclarationIntent = (address, intent, nbf, exp) => {
3739
- const expiration = isDefined16(exp) ? exp : nbf + 1e4;
3778
+ const expiration = isDefined17(exp) ? exp : nbf + 1e4;
3740
3779
  const payloadBuilder = new PayloadBuilder13({ schema: ChainStakeIntentSchema });
3741
3780
  const builder = payloadBuilder.fields({
3742
3781
  from: address,
@@ -3918,9 +3957,9 @@ var toPositiveBigInt = (value) => {
3918
3957
  // src/simple/accountBalance/SimpleAccountBalanceViewer.ts
3919
3958
  import {
3920
3959
  asHash as asHash4,
3921
- assertEx as assertEx34,
3960
+ assertEx as assertEx35,
3922
3961
  exists as exists3,
3923
- isDefined as isDefined17,
3962
+ isDefined as isDefined18,
3924
3963
  ZERO_ADDRESS
3925
3964
  } from "@ariestools/sdk";
3926
3965
  import {
@@ -3986,18 +4025,18 @@ var asTransfersStepSummaryWithStorageMeta = AsObjectFactory7.create(isTransfersS
3986
4025
  var balancesMaxStep = 5;
3987
4026
 
3988
4027
  // src/summary/primitives/balances/balancesStepSummaryFromRange.ts
3989
- import { assertEx as assertEx27, spanRootAsync as spanRootAsync2 } from "@ariestools/sdk";
4028
+ import { assertEx as assertEx28, spanRootAsync as spanRootAsync2 } from "@ariestools/sdk";
3990
4029
  import { isAnyPayload as isAnyPayload3 } from "@xyo-network/sdk-js";
3991
4030
  import { asXL1BlockNumber as asXL1BlockNumber5, StepSizes as StepSizes8 } from "@xyo-network/xl1-protocol-lib";
3992
4031
  async function balancesStepSummaryFromRange(context, semaphores, blockViewer, summaryMap, range) {
3993
4032
  const cacheKey = `${range[0]}|${range[1]}`;
3994
4033
  return await withContextCacheResponse(context, "balancesStepSummaryFromRange", cacheKey, async () => {
3995
4034
  return await spanRootAsync2("balancesStepSummaryFromRange", async () => {
3996
- const [frameHead] = assertEx27(await blockViewer.blockByNumber(range[1]), () => `Block not found for number: ${range[1]}`);
4035
+ const [frameHead] = assertEx28(await blockViewer.blockByNumber(range[1]), () => `Block not found for number: ${range[1]}`);
3997
4036
  const frameSize = range[1] - range[0] + 1;
3998
4037
  const key = `${frameHead._hash}|${frameSize}`;
3999
4038
  return frameSize === 1 ? await spanRootAsync2(`balancesStepSummaryFromRange.frameSize=1[${key}]`, async () => {
4000
- const [, payloads] = assertEx27(await blockViewer.blockByNumber(range[0]), () => `Block not found for number: ${range[0]}`);
4039
+ const [, payloads] = assertEx28(await blockViewer.blockByNumber(range[0]), () => `Block not found for number: ${range[0]}`);
4001
4040
  const balances = {};
4002
4041
  for (const [address, balance] of Object.entries(netBalancesForPayloads(context, payloads))) {
4003
4042
  balances[address] = toSignedBigInt(balance);
@@ -4010,7 +4049,7 @@ async function balancesStepSummaryFromRange(context, semaphores, blockViewer, su
4010
4049
  };
4011
4050
  }, { ...context, timeBudgetLimit: 500 }) : await spanRootAsync2(`balancesStepSummaryFromRange.frameSize>1[${key}]`, async () => {
4012
4051
  const step = StepSizes8.indexOf(asXL1BlockNumber5(frameSize, true));
4013
- assertEx27(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes8.join(", ")}`);
4052
+ assertEx28(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes8.join(", ")}`);
4014
4053
  const summaryResult = await summaryMap.get(`${frameHead._hash}|${frameSize}`);
4015
4054
  if (isAnyPayload3(summaryResult)) {
4016
4055
  return summaryResult;
@@ -4053,7 +4092,7 @@ async function balancesStepSummaryFromRange(context, semaphores, blockViewer, su
4053
4092
  }
4054
4093
 
4055
4094
  // src/summary/primitives/balances/balancesSummary.ts
4056
- import { assertEx as assertEx28, spanRootAsync as spanRootAsync3 } from "@ariestools/sdk";
4095
+ import { assertEx as assertEx29, spanRootAsync as spanRootAsync3 } from "@ariestools/sdk";
4057
4096
  import { asXyoAddress } from "@xyo-network/sdk-js";
4058
4097
  import {
4059
4098
  asBlockBoundWitnessWithStorageMeta as asBlockBoundWitnessWithStorageMeta3,
@@ -4064,7 +4103,7 @@ import {
4064
4103
  async function balancesSummary(context, semaphores, blockViewer, summaryMap, config) {
4065
4104
  return await spanRootAsync3("balancesSummary", async () => {
4066
4105
  const headHash = isChainQualifiedHeadConfig(config) ? config.head : await blockViewer.currentBlockHash();
4067
- const [head] = assertEx28(await blockViewer.blockByHash(headHash), () => `Block not found for hash: ${headHash}`);
4106
+ const [head] = assertEx29(await blockViewer.blockByHash(headHash), () => `Block not found for hash: ${headHash}`);
4068
4107
  const headBoundWitness = asBlockBoundWitnessWithStorageMeta3(head, () => `Found Block not a BlockWithHashMeta: ${headHash}`);
4069
4108
  const range = isChainQualifiedRangeConfig(config) ? config.range : asXL1BlockRange7([0, headBoundWitness.block], true);
4070
4109
  const ranges = deepCalculateFramesFromRange(asXL1BlockRange7(
@@ -4087,7 +4126,7 @@ async function balancesSummary(context, semaphores, blockViewer, summaryMap, con
4087
4126
  var blocksMaxStep = 3;
4088
4127
 
4089
4128
  // src/summary/primitives/blocks/blocksStepSummaryFromRange.ts
4090
- import { assertEx as assertEx29, spanRootAsync as spanRootAsync4 } from "@ariestools/sdk";
4129
+ import { assertEx as assertEx30, spanRootAsync as spanRootAsync4 } from "@ariestools/sdk";
4091
4130
  import { isAnyPayload as isAnyPayload4 } from "@xyo-network/sdk-js";
4092
4131
  import {
4093
4132
  asBlocksStepSummary,
@@ -4102,7 +4141,7 @@ async function blocksStepSummaryFromRange(context, semaphores, blockViewer, summ
4102
4141
  const cacheKey = `${range[0]}|${range[1]}`;
4103
4142
  return await withContextCacheResponse(context, "blocksStepSummaryFromRange", cacheKey, async () => {
4104
4143
  return await spanRootAsync4("blocksStepSummaryFromRange", async () => {
4105
- const frameHead = assertEx29(
4144
+ const frameHead = assertEx30(
4106
4145
  await blockViewer.blockByNumber(range[1]),
4107
4146
  () => `Block not found for number: ${range[1]}`
4108
4147
  );
@@ -4118,7 +4157,7 @@ async function blocksStepSummaryFromRange(context, semaphores, blockViewer, summ
4118
4157
  };
4119
4158
  } else {
4120
4159
  const step = StepSizes9.indexOf(asXL1BlockNumber6(frameSize, true));
4121
- assertEx29(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes9.join(", ")}`);
4160
+ assertEx30(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes9.join(", ")}`);
4122
4161
  const key = blocksStepSummaryKey(frameHeadHash, frameSize);
4123
4162
  const summaryResult = await summaryMap.get(key);
4124
4163
  if (isAnyPayload4(summaryResult)) {
@@ -4156,7 +4195,7 @@ async function blocksStepSummaryFromRange(context, semaphores, blockViewer, summ
4156
4195
  var schemasMaxStep = 5;
4157
4196
 
4158
4197
  // src/summary/primitives/schemas/schemasStepSummaryFromRange.ts
4159
- import { assertEx as assertEx30 } from "@ariestools/sdk";
4198
+ import { assertEx as assertEx31 } from "@ariestools/sdk";
4160
4199
  import {
4161
4200
  isAnyPayload as isAnyPayload5,
4162
4201
  isBoundWitness as isBoundWitness2,
@@ -4165,11 +4204,11 @@ import {
4165
4204
  } from "@xyo-network/sdk-js";
4166
4205
  import { StepSizes as StepSizes10 } from "@xyo-network/xl1-protocol-lib";
4167
4206
  async function schemasStepSummaryFromRange(context, semaphores, blockViewer, summaryMap, range) {
4168
- const [frameHead] = assertEx30(await blockViewer.blockByNumber(range[1]), () => `Block not found for number: ${range[1]}`);
4207
+ const [frameHead] = assertEx31(await blockViewer.blockByNumber(range[1]), () => `Block not found for number: ${range[1]}`);
4169
4208
  const frameSize = range[1] - range[0] + 1;
4170
4209
  let result;
4171
4210
  if (frameSize === 1) {
4172
- const [block, payloads] = assertEx30(await blockViewer.blockByNumber(range[0]), () => `Block not found for number: ${range[0]}`);
4211
+ const [block, payloads] = assertEx31(await blockViewer.blockByNumber(range[0]), () => `Block not found for number: ${range[0]}`);
4173
4212
  const boundWitnesses = [block, ...payloads.filter((x) => isBoundWitness2(x) && isHashMeta(x))];
4174
4213
  const schemas = {};
4175
4214
  for (const bw of boundWitnesses) {
@@ -4186,7 +4225,7 @@ async function schemasStepSummaryFromRange(context, semaphores, blockViewer, sum
4186
4225
  });
4187
4226
  } else {
4188
4227
  const step = StepSizes10.indexOf(frameSize);
4189
- assertEx30(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes10.join(", ")}`);
4228
+ assertEx31(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes10.join(", ")}`);
4190
4229
  const summaryResult = await summaryMap.get(`${frameHead._hash}|${frameSize}`);
4191
4230
  if (isAnyPayload5(summaryResult)) {
4192
4231
  result = summaryResult;
@@ -4225,7 +4264,7 @@ async function schemasStepSummaryFromRange(context, semaphores, blockViewer, sum
4225
4264
  }
4226
4265
 
4227
4266
  // src/summary/primitives/schemas/schemasSummary.ts
4228
- import { assertEx as assertEx31, spanRootAsync as spanRootAsync5 } from "@ariestools/sdk";
4267
+ import { assertEx as assertEx32, spanRootAsync as spanRootAsync5 } from "@ariestools/sdk";
4229
4268
  import {
4230
4269
  asBlockBoundWitnessWithStorageMeta as asBlockBoundWitnessWithStorageMeta4,
4231
4270
  asXL1BlockRange as asXL1BlockRange8,
@@ -4235,7 +4274,7 @@ import {
4235
4274
  async function schemasSummary(context, semaphores, blockViewer, summaryMap, config) {
4236
4275
  return await spanRootAsync5("schemasSummary", async () => {
4237
4276
  const headHash = isChainQualifiedHeadConfig2(config) ? config.head : await blockViewer.currentBlockHash();
4238
- const [head] = assertEx31(await blockViewer.blockByHash(headHash), () => `Block not found for hash: ${headHash}`);
4277
+ const [head] = assertEx32(await blockViewer.blockByHash(headHash), () => `Block not found for hash: ${headHash}`);
4239
4278
  const headBoundWitness = asBlockBoundWitnessWithStorageMeta4(head, () => `Found Block not a BlockWithHashMeta: ${headHash}`);
4240
4279
  const range = isChainQualifiedRangeConfig2(config) ? config.range : asXL1BlockRange8([0, headBoundWitness.block], true);
4241
4280
  const ranges = deepCalculateFramesFromRange(asXL1BlockRange8(
@@ -4258,7 +4297,7 @@ async function schemasSummary(context, semaphores, blockViewer, summaryMap, conf
4258
4297
  var transfersMaxStep = 4;
4259
4298
 
4260
4299
  // src/summary/primitives/transfers/transfersStepSummaryFromRange.ts
4261
- import { assertEx as assertEx32, spanRootAsync as spanRootAsync6 } from "@ariestools/sdk";
4300
+ import { assertEx as assertEx33, spanRootAsync as spanRootAsync6 } from "@ariestools/sdk";
4262
4301
  import { isAnyPayload as isAnyPayload6 } from "@xyo-network/sdk-js";
4263
4302
  import { asXL1BlockNumber as asXL1BlockNumber7, StepSizes as StepSizes11 } from "@xyo-network/xl1-protocol-lib";
4264
4303
  function transfersSummaryKey(frameHeadHash, frameSize) {
@@ -4268,11 +4307,11 @@ async function transfersStepSummaryFromRange(context, semaphores, blockViewer, s
4268
4307
  const cacheKey = `${range[0]}|${range[1]}`;
4269
4308
  return await withContextCacheResponse(context, "transfersStepSummaryFromRange", cacheKey, async () => {
4270
4309
  return await spanRootAsync6("transfersStepSummaryFromRange", async () => {
4271
- const [frameHead] = assertEx32(await blockViewer.blockByNumber(range[1]), () => `Block not found for number: ${range[1]}`);
4310
+ const [frameHead] = assertEx33(await blockViewer.blockByNumber(range[1]), () => `Block not found for number: ${range[1]}`);
4272
4311
  const frameSize = range[1] - range[0] + 1;
4273
4312
  let result;
4274
4313
  if (frameSize === 1) {
4275
- const [, payloads] = assertEx32(await blockViewer.blockByNumber(range[0]), () => `Block not found for number: ${range[0]}`);
4314
+ const [, payloads] = assertEx33(await blockViewer.blockByNumber(range[0]), () => `Block not found for number: ${range[0]}`);
4276
4315
  const transfers = {};
4277
4316
  for (const [from, toMap] of Object.entries(netTransfersForPayloads(context, payloads))) {
4278
4317
  transfers[from] = transfers[from] ?? {};
@@ -4288,7 +4327,7 @@ async function transfersStepSummaryFromRange(context, semaphores, blockViewer, s
4288
4327
  };
4289
4328
  } else {
4290
4329
  const step = StepSizes11.indexOf(asXL1BlockNumber7(frameSize, true));
4291
- assertEx32(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes11.join(", ")}`);
4330
+ assertEx33(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes11.join(", ")}`);
4292
4331
  const key = transfersSummaryKey(frameHead._hash, frameSize);
4293
4332
  const summaryResult = await summaryMap.get(key);
4294
4333
  if (isAnyPayload6(summaryResult)) {
@@ -4339,7 +4378,7 @@ async function transfersStepSummaryFromRange(context, semaphores, blockViewer, s
4339
4378
  }
4340
4379
 
4341
4380
  // src/summary/primitives/transfers/transfersSummary.ts
4342
- import { assertEx as assertEx33, spanRootAsync as spanRootAsync7 } from "@ariestools/sdk";
4381
+ import { assertEx as assertEx34, spanRootAsync as spanRootAsync7 } from "@ariestools/sdk";
4343
4382
  import { asXyoAddress as asXyoAddress2 } from "@xyo-network/sdk-js";
4344
4383
  import {
4345
4384
  asBlockBoundWitnessWithStorageMeta as asBlockBoundWitnessWithStorageMeta5,
@@ -4350,7 +4389,7 @@ import {
4350
4389
  async function transfersSummary(context, semaphores, blockViewer, summaryMap, config) {
4351
4390
  return await spanRootAsync7("transferSummary", async () => {
4352
4391
  const headHash = isChainQualifiedHeadConfig3(config) ? config.head : await blockViewer.currentBlockHash();
4353
- const [head] = assertEx33(await blockViewer.blockByHash(headHash), () => `Block not found for hash: ${headHash}`);
4392
+ const [head] = assertEx34(await blockViewer.blockByHash(headHash), () => `Block not found for hash: ${headHash}`);
4354
4393
  const headBoundWitness = asBlockBoundWitnessWithStorageMeta5(head, () => `Found Block not a BlockWithHashMeta: ${headHash}`);
4355
4394
  const range = isChainQualifiedRangeConfig3(config) ? config.range : asXL1BlockRange9([0, headBoundWitness.block], true);
4356
4395
  const ranges = deepCalculateFramesFromRange(asXL1BlockRange9(
@@ -4391,8 +4430,8 @@ var SimpleAccountBalanceViewer = class extends AbstractCreatableProvider {
4391
4430
  static async paramsHandler(params = {}) {
4392
4431
  return {
4393
4432
  ...await super.paramsHandler(params),
4394
- balancesSummaryMap: assertEx34(params.balancesSummaryMap, () => "balancesSummaryMap is required"),
4395
- transfersSummaryMap: assertEx34(params.transfersSummaryMap, () => "transfersSummaryMap is required")
4433
+ balancesSummaryMap: assertEx35(params.balancesSummaryMap, () => "balancesSummaryMap is required"),
4434
+ transfersSummaryMap: assertEx35(params.transfersSummaryMap, () => "transfersSummaryMap is required")
4396
4435
  };
4397
4436
  }
4398
4437
  async accountBalance(address, config) {
@@ -4415,11 +4454,11 @@ var SimpleAccountBalanceViewer = class extends AbstractCreatableProvider {
4415
4454
  const transferIndexes = block[0].payload_schemas.map((schema, index) => schema === TransferSchema2 ? index : void 0).filter(exists3);
4416
4455
  const transfers = transferIndexes.map((index) => {
4417
4456
  const hash = block[0].payload_hashes[index];
4418
- return assertEx34(
4457
+ return assertEx35(
4419
4458
  block[1].find((p) => p._hash === hash),
4420
4459
  () => `Error: Could not find Transfer with hash ${hash} in block ${block[0]._hash}`
4421
4460
  );
4422
- }).filter(exists3).filter((t) => t.from === address || isDefined17(t.transfers[address]));
4461
+ }).filter(exists3).filter((t) => t.from === address || isDefined18(t.transfers[address]));
4423
4462
  if (transfers.length === 0) {
4424
4463
  continue;
4425
4464
  }
@@ -4448,7 +4487,7 @@ var SimpleAccountBalanceViewer = class extends AbstractCreatableProvider {
4448
4487
  const head = isChainQualifiedHeadConfig4(config) ? config.head : await this.blockViewer.currentBlockHash();
4449
4488
  const range = isChainQualifiedRangeConfig4(config) ? config.range : asXL1BlockRange10([
4450
4489
  0,
4451
- assertEx34(
4490
+ assertEx35(
4452
4491
  await this.blockViewer.blockByHash(head),
4453
4492
  () => `Error: Could not find block with hash ${head}`
4454
4493
  )[0].block
@@ -4463,11 +4502,11 @@ var SimpleAccountBalanceViewer = class extends AbstractCreatableProvider {
4463
4502
  const qualifiedRange = qualifiedEntries[0][1][1].range;
4464
4503
  const qualifiedHeadHash = qualifiedEntries[0][1][1].head;
4465
4504
  for (const [_, [__, { range: range2, head: head2 }]] of qualifiedEntries) {
4466
- assertEx34(
4505
+ assertEx35(
4467
4506
  range2[0] === qualifiedRange[0] && range2[1] === qualifiedRange[1],
4468
4507
  () => "Inconsistent ranges in qualifiedAccountBalanceHistories"
4469
4508
  );
4470
- assertEx34(
4509
+ assertEx35(
4471
4510
  head2 === qualifiedHeadHash,
4472
4511
  () => "Inconsistent head hashes in qualifiedAccountBalanceHistories"
4473
4512
  );
@@ -4538,7 +4577,7 @@ var SimpleAccountBalanceViewer = class extends AbstractCreatableProvider {
4538
4577
  return await this.spanAsync("qualifiedAccountBalanceHistory", async () => {
4539
4578
  const range = asRange(headOrRange);
4540
4579
  const headHash = asHash4(headOrRange);
4541
- const [head] = assertEx34(isDefined17(headHash) ? await this.blockViewer.blockByHash(headHash) : await this.blockViewer.currentBlock(), () => "Could not resolve head block");
4580
+ const [head] = assertEx35(isDefined18(headHash) ? await this.blockViewer.blockByHash(headHash) : await this.blockViewer.currentBlock(), () => "Could not resolve head block");
4542
4581
  const startingRange = asXL1BlockRange10(range ?? [0, head.block], true);
4543
4582
  const blockNumbers = await this.distillTransferHistory(address, startingRange);
4544
4583
  const blockResults = await Promise.all(blockNumbers.map(async (bn) => await this.blockViewer.blockByNumber(bn)));
@@ -4548,11 +4587,11 @@ var SimpleAccountBalanceViewer = class extends AbstractCreatableProvider {
4548
4587
  const transferIndexes = block[0].payload_schemas.map((schema, index) => schema === TransferSchema2 ? index : void 0).filter(exists3);
4549
4588
  const transfers = transferIndexes.map((index) => {
4550
4589
  const hash = block[0].payload_hashes[index];
4551
- return assertEx34(
4590
+ return assertEx35(
4552
4591
  block[1].find((p) => p._hash === hash),
4553
4592
  () => `Error: Could not find Transfer with hash ${hash} in block ${block[0]._hash}`
4554
4593
  );
4555
- }).filter(exists3).filter((t) => t.from === address || isDefined17(t.transfers[address]));
4594
+ }).filter(exists3).filter((t) => t.from === address || isDefined18(t.transfers[address]));
4556
4595
  if (transfers.length === 0) {
4557
4596
  continue;
4558
4597
  }
@@ -4580,7 +4619,7 @@ SimpleAccountBalanceViewer = __decorateClass([
4580
4619
 
4581
4620
  // src/simple/block/SimpleBlockViewer.ts
4582
4621
  import {
4583
- assertEx as assertEx35,
4622
+ assertEx as assertEx36,
4584
4623
  exists as exists4,
4585
4624
  isUndefined as isUndefined7
4586
4625
  } from "@ariestools/sdk";
@@ -4644,7 +4683,7 @@ var SimpleBlockViewer = class extends AbstractCreatableProvider {
4644
4683
  _headPollTimer = null;
4645
4684
  _signedHydratedBlockCache;
4646
4685
  get finalizedArchivist() {
4647
- return assertEx35(this.params.finalizedArchivist, () => "finalizedArchivist is required \u2014 inject it or bind a connection");
4686
+ return assertEx36(this.params.finalizedArchivist, () => "finalizedArchivist is required \u2014 inject it or bind a connection");
4648
4687
  }
4649
4688
  get blocksSummaryMap() {
4650
4689
  this._blocksSummaryMap ??= this.params.blocksSummaryMap ?? new LruCacheMap2({ max: 32 });
@@ -4668,14 +4707,14 @@ var SimpleBlockViewer = class extends AbstractCreatableProvider {
4668
4707
  static async paramsHandler(params) {
4669
4708
  const headPollIntervalMs = params.headPollIntervalMs;
4670
4709
  if (headPollIntervalMs !== void 0) {
4671
- assertEx35(headPollIntervalMs >= MIN_HEAD_POLL_INTERVAL_MS, () => `headPollIntervalMs must be at least ${MIN_HEAD_POLL_INTERVAL_MS}ms`);
4710
+ assertEx36(headPollIntervalMs >= MIN_HEAD_POLL_INTERVAL_MS, () => `headPollIntervalMs must be at least ${MIN_HEAD_POLL_INTERVAL_MS}ms`);
4672
4711
  }
4673
4712
  const connection = params.connection;
4674
4713
  const finalizedArchivist = params.finalizedArchivist ?? (connection ? await connectArchivist(connection, { name: CHAIN_ARCHIVIST_ROLE }) : void 0);
4675
4714
  return {
4676
4715
  ...await super.paramsHandler(params),
4677
4716
  blocksSummaryMap: params.blocksSummaryMap,
4678
- finalizedArchivist: assertEx35(finalizedArchivist, () => "finalizedArchivist is required \u2014 inject it or bind a connection"),
4717
+ finalizedArchivist: assertEx36(finalizedArchivist, () => "finalizedArchivist is required \u2014 inject it or bind a connection"),
4679
4718
  headPollIntervalMs
4680
4719
  };
4681
4720
  }
@@ -4704,8 +4743,8 @@ var SimpleBlockViewer = class extends AbstractCreatableProvider {
4704
4743
  }
4705
4744
  async blocksByHash(hash, limit = 50) {
4706
4745
  return await this.spanAsync("blocksByHash", async () => {
4707
- assertEx35(limit > 0, () => "limit must be greater than 0");
4708
- assertEx35(limit <= 100, () => "limit must be less than 100");
4746
+ assertEx36(limit > 0, () => "limit must be greater than 0");
4747
+ assertEx36(limit <= 100, () => "limit must be less than 100");
4709
4748
  const blocks = [];
4710
4749
  let current = await this.blockByHash(hash);
4711
4750
  while (current && blocks.length < limit) {
@@ -4719,8 +4758,8 @@ var SimpleBlockViewer = class extends AbstractCreatableProvider {
4719
4758
  }
4720
4759
  async blocksByNumber(blockNumber, limit = 50) {
4721
4760
  return await this.spanAsync("blocksByNumber", async () => {
4722
- assertEx35(limit > 0, () => "limit must be greater than 0");
4723
- assertEx35(limit <= 100, () => "limit must be less than 100");
4761
+ assertEx36(limit > 0, () => "limit must be greater than 0");
4762
+ assertEx36(limit <= 100, () => "limit must be less than 100");
4724
4763
  const chainContext = await this.getChainContextRead();
4725
4764
  if (isUndefined7(chainContext.head)) {
4726
4765
  return [];
@@ -4738,9 +4777,9 @@ var SimpleBlockViewer = class extends AbstractCreatableProvider {
4738
4777
  }
4739
4778
  async blocksByStep(stepLevel, stepIndex) {
4740
4779
  return await this.spanAsync("blocksByStep", async () => {
4741
- assertEx35(Number.isSafeInteger(stepIndex) && stepIndex >= 0, () => "stepIndex must be a non-negative integer");
4780
+ assertEx36(Number.isSafeInteger(stepIndex) && stepIndex >= 0, () => "stepIndex must be a non-negative integer");
4742
4781
  const size = stepSize2(stepLevel);
4743
- assertEx35(
4782
+ assertEx36(
4744
4783
  stepLevel <= blocksMaxStep,
4745
4784
  () => `blocksByStep does not support step levels above ${blocksMaxStep} (requested ${stepLevel})`
4746
4785
  );
@@ -4766,7 +4805,7 @@ var SimpleBlockViewer = class extends AbstractCreatableProvider {
4766
4805
  const headBlock = await this.finalizationViewer.headBlock();
4767
4806
  return headBlock.chain;
4768
4807
  }
4769
- const block = assertEx35(await this.blockByNumber(blockNumber), () => `Block not found [${blockNumber}]`);
4808
+ const block = assertEx36(await this.blockByNumber(blockNumber), () => `Block not found [${blockNumber}]`);
4770
4809
  return block[0].chain;
4771
4810
  }, this.context);
4772
4811
  }
@@ -4902,7 +4941,7 @@ SimpleBlockRewardViewer = __decorateClass([
4902
4941
  ], SimpleBlockRewardViewer);
4903
4942
 
4904
4943
  // src/simple/blockValidation/SimpleBlockValidationViewer.ts
4905
- import { assertEx as assertEx36 } from "@ariestools/sdk";
4944
+ import { assertEx as assertEx37 } from "@ariestools/sdk";
4906
4945
  import { PayloadBuilder as PayloadBuilder18 } from "@xyo-network/sdk-js";
4907
4946
  import {
4908
4947
  AccountBalanceViewerMoniker as AccountBalanceViewerMoniker2,
@@ -4958,7 +4997,7 @@ var SimpleBlockValidationViewer = class extends AbstractCreatableProvider {
4958
4997
  let head;
4959
4998
  if (isChainQualifiedHeadConfig5(config)) {
4960
4999
  const headBlockResult = await this.blockViewer.blockByHash(config.head);
4961
- head = headBlockResult == null ? assertEx36(
5000
+ head = headBlockResult == null ? assertEx37(
4962
5001
  void 0,
4963
5002
  () => `Specified a head that is not in the chain [${config.head}]`
4964
5003
  ) : headBlockResult[0];
@@ -5046,7 +5085,7 @@ SimpleBlockValidationViewer = __decorateClass([
5046
5085
  ], SimpleBlockValidationViewer);
5047
5086
 
5048
5087
  // src/simple/chainContractViewer/SimpleChainContractViewer.ts
5049
- import { assertEx as assertEx37 } from "@ariestools/sdk";
5088
+ import { assertEx as assertEx38 } from "@ariestools/sdk";
5050
5089
  import { ChainContractViewerMoniker as ChainContractViewerMoniker2, FinalizationViewerMoniker as FinalizationViewerMoniker2 } from "@xyo-network/xl1-protocol-lib";
5051
5090
  var SimpleChainContractViewer = class extends AbstractCreatableProvider {
5052
5091
  moniker = SimpleChainContractViewer.defaultMoniker;
@@ -5063,7 +5102,7 @@ var SimpleChainContractViewer = class extends AbstractCreatableProvider {
5063
5102
  let contractViewer = this;
5064
5103
  let forkedAtBlockNumber = await contractViewer.forkedAtBlockNumber();
5065
5104
  while (forkedAtBlockNumber !== null && blockNumber <= forkedAtBlockNumber) {
5066
- contractViewer = assertEx37(await contractViewer.forkedChainContractViewer());
5105
+ contractViewer = assertEx38(await contractViewer.forkedChainContractViewer());
5067
5106
  forkedAtBlockNumber = await contractViewer.forkedAtBlockNumber();
5068
5107
  chainId = await contractViewer.chainId();
5069
5108
  }
@@ -5118,7 +5157,7 @@ var SimpleXyoClient = class {
5118
5157
  };
5119
5158
 
5120
5159
  // src/simple/datalake/RestDataLakeRunner.ts
5121
- import { assertEx as assertEx39, exists as exists6 } from "@ariestools/sdk";
5160
+ import { assertEx as assertEx40, exists as exists6 } from "@ariestools/sdk";
5122
5161
  import { isAnyPayload as isAnyPayload8, PayloadZodLoose } from "@xyo-network/sdk-js";
5123
5162
  import { DataLakeRunnerMoniker } from "@xyo-network/xl1-protocol-lib";
5124
5163
  import { z as z26 } from "zod/mini";
@@ -5126,9 +5165,9 @@ import { z as z26 } from "zod/mini";
5126
5165
  // src/simple/datalake/AbstractRestDataLake.ts
5127
5166
  import { FetchClientError, FetchJsonClient } from "@ariestools/sdk";
5128
5167
  import {
5129
- assertEx as assertEx38,
5168
+ assertEx as assertEx39,
5130
5169
  exists as exists5,
5131
- isDefined as isDefined18
5170
+ isDefined as isDefined19
5132
5171
  } from "@ariestools/sdk";
5133
5172
  import { asAnyPayload as asAnyPayload4, isAnyPayload as isAnyPayload7 } from "@xyo-network/sdk-js";
5134
5173
  var AbstractRestDataLake = class extends AbstractCreatableProvider {
@@ -5146,8 +5185,8 @@ var AbstractRestDataLake = class extends AbstractCreatableProvider {
5146
5185
  }
5147
5186
  static async paramsHandler(params = {}) {
5148
5187
  const moniker = this.defaultMoniker;
5149
- const endpoint = isDefined18(params.endpoint) && params.endpoint !== "" ? params.endpoint : resolveRestConnectionEndpoint(
5150
- assertEx38(params.context?.config, () => "Context config is required to resolve REST data lake endpoint"),
5188
+ const endpoint = isDefined19(params.endpoint) && params.endpoint !== "" ? params.endpoint : resolveRestConnectionEndpoint(
5189
+ assertEx39(params.context?.config, () => "Context config is required to resolve REST data lake endpoint"),
5151
5190
  moniker
5152
5191
  );
5153
5192
  return {
@@ -5202,7 +5241,7 @@ var RestDataLakeRunner = class extends AbstractRestDataLake {
5202
5241
  async insert(items) {
5203
5242
  const allowedItems = items.map((item) => {
5204
5243
  if (isAnyPayload8(item) && this.isAllowed(item)) {
5205
- assertEx39(typeof item === "object" && item !== null, () => "Data must be an object");
5244
+ assertEx40(typeof item === "object" && item !== null, () => "Data must be an object");
5206
5245
  return item;
5207
5246
  }
5208
5247
  return null;
@@ -5325,13 +5364,13 @@ SimpleDataLakeViewer = __decorateClass([
5325
5364
  ], SimpleDataLakeViewer);
5326
5365
 
5327
5366
  // src/simple/finalization/SimpleFinalizationRunner.ts
5328
- import { assertEx as assertEx40 } from "@ariestools/sdk";
5367
+ import { assertEx as assertEx41 } from "@ariestools/sdk";
5329
5368
  import { FinalizationRunnerMoniker } from "@xyo-network/xl1-protocol-lib";
5330
5369
  var SimpleFinalizationRunner = class extends AbstractCreatableProvider {
5331
5370
  moniker = SimpleFinalizationRunner.defaultMoniker;
5332
5371
  _store;
5333
5372
  get finalizedArchivist() {
5334
- return assertEx40(this.params.finalizedArchivist, () => "finalizedArchivist is required \u2014 inject it or bind a connection");
5373
+ return assertEx41(this.params.finalizedArchivist, () => "finalizedArchivist is required \u2014 inject it or bind a connection");
5335
5374
  }
5336
5375
  get store() {
5337
5376
  return this._store;
@@ -5341,7 +5380,7 @@ var SimpleFinalizationRunner = class extends AbstractCreatableProvider {
5341
5380
  const finalizedArchivist = params?.finalizedArchivist ?? (connection ? await connectArchivist(connection, { name: CHAIN_ARCHIVIST_ROLE }) : void 0);
5342
5381
  return {
5343
5382
  ...await super.paramsHandler(params),
5344
- finalizedArchivist: assertEx40(finalizedArchivist, () => "finalizedArchivist is required \u2014 inject it or bind a connection")
5383
+ finalizedArchivist: assertEx41(finalizedArchivist, () => "finalizedArchivist is required \u2014 inject it or bind a connection")
5345
5384
  };
5346
5385
  }
5347
5386
  async createHandler() {
@@ -5369,7 +5408,7 @@ SimpleFinalizationRunner = __decorateClass([
5369
5408
  ], SimpleFinalizationRunner);
5370
5409
 
5371
5410
  // src/simple/finalization/SimpleFinalizationViewer.ts
5372
- import { assertEx as assertEx41 } from "@ariestools/sdk";
5411
+ import { assertEx as assertEx42 } from "@ariestools/sdk";
5373
5412
  import {
5374
5413
  asSignedHydratedBlockWithStorageMeta as asSignedHydratedBlockWithStorageMeta2,
5375
5414
  ChainContractViewerMoniker as ChainContractViewerMoniker3,
@@ -5381,7 +5420,7 @@ var SimpleFinalizationViewer = class extends AbstractCreatableProvider {
5381
5420
  _store;
5382
5421
  _signedHydratedBlockCache;
5383
5422
  get finalizedArchivist() {
5384
- return assertEx41(this.params.finalizedArchivist, () => "finalizedArchivist is required \u2014 inject it or bind a connection");
5423
+ return assertEx42(this.params.finalizedArchivist, () => "finalizedArchivist is required \u2014 inject it or bind a connection");
5385
5424
  }
5386
5425
  get hydratedBlockCache() {
5387
5426
  if (this._signedHydratedBlockCache) return this._signedHydratedBlockCache;
@@ -5400,7 +5439,7 @@ var SimpleFinalizationViewer = class extends AbstractCreatableProvider {
5400
5439
  const finalizedArchivist = params.finalizedArchivist ?? (connection ? await connectArchivist(connection, { name: CHAIN_ARCHIVIST_ROLE }) : void 0);
5401
5440
  return {
5402
5441
  ...await super.paramsHandler(params),
5403
- finalizedArchivist: assertEx41(finalizedArchivist, () => "finalizedArchivist is required \u2014 inject it or bind a connection")
5442
+ finalizedArchivist: assertEx42(finalizedArchivist, () => "finalizedArchivist is required \u2014 inject it or bind a connection")
5404
5443
  };
5405
5444
  }
5406
5445
  chainId() {
@@ -5410,18 +5449,18 @@ var SimpleFinalizationViewer = class extends AbstractCreatableProvider {
5410
5449
  await super.createHandler();
5411
5450
  const finalizedArchivist = this.finalizedArchivist;
5412
5451
  const mostRecentBlock = await findMostRecentBlock(finalizedArchivist);
5413
- this._chainId = assertEx41(this.config.chain.id ?? mostRecentBlock?.chain, () => "chain.id is required if empty archivist");
5452
+ this._chainId = assertEx42(this.config.chain.id ?? mostRecentBlock?.chain, () => "chain.id is required if empty archivist");
5414
5453
  this._store = { chainMap: finalizedArchivist };
5415
5454
  }
5416
5455
  async head() {
5417
5456
  return await this.spanAsync("head", async () => {
5418
- const currentHead = assertEx41(await this.getCurrentHead(), () => "Could not find most recent block [currentBlock]");
5457
+ const currentHead = assertEx42(await this.getCurrentHead(), () => "Could not find most recent block [currentBlock]");
5419
5458
  const cache = this.hydratedBlockCache;
5420
5459
  const block = await cache.get(currentHead._hash);
5421
5460
  if (!block) {
5422
5461
  this.logger?.error(`Could not find current block with hash ${currentHead._hash}`);
5423
5462
  }
5424
- return assertEx41(block, () => "Could not find current block");
5463
+ return assertEx42(block, () => "Could not find current block");
5425
5464
  }, this.context);
5426
5465
  }
5427
5466
  async headBlock() {
@@ -5451,8 +5490,8 @@ var SimpleFinalizationViewer = class extends AbstractCreatableProvider {
5451
5490
  }
5452
5491
  async getCurrentHead() {
5453
5492
  const chainArchivist = this.finalizedArchivist;
5454
- const result = assertEx41(await findMostRecentBlock(chainArchivist), () => "Could not find most recent block [getCurrentHead]");
5455
- assertEx41(result?.chain === this._chainId, () => "Chain ID does not match head block chain ID");
5493
+ const result = assertEx42(await findMostRecentBlock(chainArchivist), () => "Could not find most recent block [getCurrentHead]");
5494
+ assertEx42(result?.chain === this._chainId, () => "Chain ID does not match head block chain ID");
5456
5495
  return result;
5457
5496
  }
5458
5497
  };
@@ -5484,9 +5523,9 @@ var SimpleXyoGateway = class _SimpleXyoGateway extends AbstractCreatableProvider
5484
5523
 
5485
5524
  // src/simple/gateway/SimpleXyoGatewayRunner.ts
5486
5525
  import {
5487
- assertEx as assertEx42,
5526
+ assertEx as assertEx43,
5488
5527
  BigIntToJsonZod,
5489
- isDefined as isDefined19
5528
+ isDefined as isDefined20
5490
5529
  } from "@ariestools/sdk";
5491
5530
  import { PayloadBuilder as PayloadBuilder20 } from "@xyo-network/sdk-js";
5492
5531
  import {
@@ -5517,23 +5556,23 @@ var SimpleXyoGatewayRunner = class _SimpleXyoGatewayRunner extends AbstractCreat
5517
5556
  return this._signer;
5518
5557
  }
5519
5558
  async addPayloadsToChain(onChain, offChain, options) {
5520
- const viewer = assertEx42(this.connection.viewer, () => "No viewer available on connection");
5559
+ const viewer = assertEx43(this.connection.viewer, () => "No viewer available on connection");
5521
5560
  const {
5522
5561
  nbf,
5523
5562
  exp,
5524
5563
  chain,
5525
5564
  fees
5526
5565
  } = options ?? {};
5527
- const resolvedChainId = isDefined19(chain) ? chain : await viewer.chainId();
5528
- const resolvedNbf = asXL1BlockNumber10(isDefined19(nbf) ? nbf : await viewer.currentBlockNumber(), true);
5529
- const resolvedExp = asXL1BlockNumber10(isDefined19(exp) ? exp : resolvedNbf + 10, true);
5566
+ const resolvedChainId = isDefined20(chain) ? chain : await viewer.chainId();
5567
+ const resolvedNbf = asXL1BlockNumber10(isDefined20(nbf) ? nbf : await viewer.currentBlockNumber(), true);
5568
+ const resolvedExp = asXL1BlockNumber10(isDefined20(exp) ? exp : resolvedNbf + 10, true);
5530
5569
  const tx = await buildUnsignedTransaction(resolvedChainId, onChain, offChain, resolvedNbf, resolvedExp, await this.signer.address(), fees);
5531
5570
  return await this.addTransactionToChain(tx, await PayloadBuilder20.addHashMeta(offChain));
5532
5571
  }
5533
5572
  async addTransactionToChain(tx, offChain = []) {
5534
5573
  const connection = this.connection;
5535
5574
  const signer = this.signer;
5536
- const runner = assertEx42(connection.runner, () => "No runner available on connection");
5575
+ const runner = assertEx43(connection.runner, () => "No runner available on connection");
5537
5576
  let signedTx;
5538
5577
  if (isSignedHydratedTransaction(tx)) {
5539
5578
  const [bw, payloads] = tx;
@@ -5548,7 +5587,7 @@ var SimpleXyoGatewayRunner = class _SimpleXyoGatewayRunner extends AbstractCreat
5548
5587
  }
5549
5588
  async confirmSubmittedTransaction(txHash, options) {
5550
5589
  return await confirmSubmittedTransaction(
5551
- assertEx42(this.connection.viewer, () => "Connection viewer is undefined"),
5590
+ assertEx43(this.connection.viewer, () => "Connection viewer is undefined"),
5552
5591
  txHash,
5553
5592
  options
5554
5593
  );
@@ -5587,7 +5626,7 @@ var SimpleXyoGatewayRunner = class _SimpleXyoGatewayRunner extends AbstractCreat
5587
5626
 
5588
5627
  // src/simple/mempool/SimpleMempoolRunner.ts
5589
5628
  import {
5590
- assertEx as assertEx43,
5629
+ assertEx as assertEx44,
5591
5630
  exists as exists8
5592
5631
  } from "@ariestools/sdk";
5593
5632
  import { isPayloadBundle, PayloadBuilder as PayloadBuilder21 } from "@xyo-network/sdk-js";
@@ -5643,10 +5682,10 @@ var SimpleMempoolRunner = class extends AbstractCreatableProvider {
5643
5682
  return this.params.maxPendingTransactions ?? 0;
5644
5683
  }
5645
5684
  get pendingBlocksArchivist() {
5646
- return assertEx43(this.params.pendingBlocksArchivist, () => "pendingBlocksArchivist is required \u2014 inject it or bind a connection");
5685
+ return assertEx44(this.params.pendingBlocksArchivist, () => "pendingBlocksArchivist is required \u2014 inject it or bind a connection");
5647
5686
  }
5648
5687
  get pendingTransactionsArchivist() {
5649
- return assertEx43(this.params.pendingTransactionsArchivist, () => "pendingTransactionsArchivist is required \u2014 inject it or bind a connection");
5688
+ return assertEx44(this.params.pendingTransactionsArchivist, () => "pendingTransactionsArchivist is required \u2014 inject it or bind a connection");
5650
5689
  }
5651
5690
  get syncInterval() {
5652
5691
  return this.params.syncInterval ?? DEFAULT_SYNC_INTERVAL;
@@ -5666,8 +5705,8 @@ var SimpleMempoolRunner = class extends AbstractCreatableProvider {
5666
5705
  const pendingTransactionsArchivist = params?.pendingTransactionsArchivist ?? (connection ? await connectArchivist(connection, { name: PENDING_TRANSACTIONS_ARCHIVIST_ROLE }) : void 0);
5667
5706
  return {
5668
5707
  ...await super.paramsHandler(params),
5669
- pendingBlocksArchivist: assertEx43(pendingBlocksArchivist, () => "pendingBlocksArchivist is required \u2014 inject it or bind a connection"),
5670
- pendingTransactionsArchivist: assertEx43(pendingTransactionsArchivist, () => "pendingTransactionsArchivist is required \u2014 inject it or bind a connection")
5708
+ pendingBlocksArchivist: assertEx44(pendingBlocksArchivist, () => "pendingBlocksArchivist is required \u2014 inject it or bind a connection"),
5709
+ pendingTransactionsArchivist: assertEx44(pendingTransactionsArchivist, () => "pendingTransactionsArchivist is required \u2014 inject it or bind a connection")
5671
5710
  };
5672
5711
  }
5673
5712
  async createHandler() {
@@ -5706,7 +5745,7 @@ var SimpleMempoolRunner = class extends AbstractCreatableProvider {
5706
5745
  remainingBlockMap.push(i);
5707
5746
  return b;
5708
5747
  }).filter(exists8);
5709
- assertEx43(
5748
+ assertEx44(
5710
5749
  remainingBlockMap.length === remainingBlocks.length,
5711
5750
  () => `remainingBlockMap length should match remainingBlocks length [${remainingBlockMap.length}/${remainingBlocks.length}]`
5712
5751
  );
@@ -5769,7 +5808,7 @@ var SimpleMempoolRunner = class extends AbstractCreatableProvider {
5769
5808
  remainingTransactionMap.push(i);
5770
5809
  return t;
5771
5810
  }).filter(exists8);
5772
- assertEx43(
5811
+ assertEx44(
5773
5812
  remainingTransactionMap.length === remainingTransactions.length,
5774
5813
  () => `remainingTransactionMap length should match remainingTransactions length [${remainingTransactionMap.length}/${remainingTransactions.length}]`
5775
5814
  );
@@ -6022,9 +6061,9 @@ SimpleMempoolRunner = __decorateClass([
6022
6061
 
6023
6062
  // src/simple/mempool/SimpleMempoolViewer.ts
6024
6063
  import {
6025
- assertEx as assertEx44,
6064
+ assertEx as assertEx45,
6026
6065
  exists as exists9,
6027
- isDefined as isDefined20,
6066
+ isDefined as isDefined21,
6028
6067
  isHash as isHash2
6029
6068
  } from "@ariestools/sdk";
6030
6069
  import { isHashMeta as isHashMeta2, isPayloadBundle as isPayloadBundle2 } from "@xyo-network/sdk-js";
@@ -6043,10 +6082,10 @@ var SimpleMempoolViewer = class extends AbstractCreatableProvider {
6043
6082
  return this.params.handoutStatsTtlBlocks ?? DEFAULT_HANDOUT_STATS_TTL_BLOCKS;
6044
6083
  }
6045
6084
  get pendingBlocksArchivist() {
6046
- return assertEx44(this.params.pendingBlocksArchivist, () => "pendingBlocksArchivist is required \u2014 inject it or bind a connection");
6085
+ return assertEx45(this.params.pendingBlocksArchivist, () => "pendingBlocksArchivist is required \u2014 inject it or bind a connection");
6047
6086
  }
6048
6087
  get pendingTransactionsArchivist() {
6049
- return assertEx44(this.params.pendingTransactionsArchivist, () => "pendingTransactionsArchivist is required \u2014 inject it or bind a connection");
6088
+ return assertEx45(this.params.pendingTransactionsArchivist, () => "pendingTransactionsArchivist is required \u2014 inject it or bind a connection");
6050
6089
  }
6051
6090
  get windowedBlockViewer() {
6052
6091
  return this._windowedBlockViewer;
@@ -6095,7 +6134,7 @@ var SimpleMempoolViewer = class extends AbstractCreatableProvider {
6095
6134
  let cursor;
6096
6135
  if (isHash2(providedCursor)) {
6097
6136
  const [p] = await this.pendingBlocksArchivist.get([providedCursor]);
6098
- if (isDefined20(p)) {
6137
+ if (isDefined21(p)) {
6099
6138
  cursor = p._sequence;
6100
6139
  }
6101
6140
  }
@@ -6115,7 +6154,7 @@ var SimpleMempoolViewer = class extends AbstractCreatableProvider {
6115
6154
  let cursor;
6116
6155
  if (isHash2(providedCursor)) {
6117
6156
  const [p] = await this.pendingTransactionsArchivist.get([providedCursor]);
6118
- if (isDefined20(p)) {
6157
+ if (isDefined21(p)) {
6119
6158
  cursor = p._sequence;
6120
6159
  }
6121
6160
  }
@@ -6188,7 +6227,7 @@ var SimpleMempoolViewer = class extends AbstractCreatableProvider {
6188
6227
  const hydratedResults = await Promise.all(
6189
6228
  filteredBundles.map(async (bundle3) => {
6190
6229
  const tx = await bundledPayloadToHydratedTransaction(bundle3);
6191
- return isDefined20(tx) ? { bundle: bundle3, tx } : void 0;
6230
+ return isDefined21(tx) ? { bundle: bundle3, tx } : void 0;
6192
6231
  })
6193
6232
  );
6194
6233
  return hydratedResults.filter(exists9);
@@ -6332,7 +6371,7 @@ var SimpleXyoNetwork = class {
6332
6371
  };
6333
6372
 
6334
6373
  // src/simple/permissions/SimpleXyoPermissions.ts
6335
- import { assertEx as assertEx45 } from "@ariestools/sdk";
6374
+ import { assertEx as assertEx46 } from "@ariestools/sdk";
6336
6375
  var SimpleXyoPermissions = class {
6337
6376
  invoker;
6338
6377
  _store;
@@ -6341,7 +6380,7 @@ var SimpleXyoPermissions = class {
6341
6380
  this.invoker = store.invoker;
6342
6381
  }
6343
6382
  get store() {
6344
- return assertEx45(this._store, () => "Store must be defined to get permissions");
6383
+ return assertEx46(this._store, () => "Store must be defined to get permissions");
6345
6384
  }
6346
6385
  async getPermissions() {
6347
6386
  return await this.store.getPermissions();
@@ -6394,7 +6433,7 @@ var SimpleXyoPermissions = class {
6394
6433
  };
6395
6434
 
6396
6435
  // src/simple/permissions/store/MemoryPermissions.ts
6397
- import { assertEx as assertEx46 } from "@ariestools/sdk";
6436
+ import { assertEx as assertEx47 } from "@ariestools/sdk";
6398
6437
  var MemoryPermissionsStore = class {
6399
6438
  _invoker;
6400
6439
  permissions = [];
@@ -6402,7 +6441,7 @@ var MemoryPermissionsStore = class {
6402
6441
  this._invoker = invoker;
6403
6442
  }
6404
6443
  get invoker() {
6405
- return assertEx46(this._invoker, () => "Invoker must be defined to get permissions");
6444
+ return assertEx47(this._invoker, () => "Invoker must be defined to get permissions");
6406
6445
  }
6407
6446
  async getPermissions() {
6408
6447
  await Promise.resolve();
@@ -6444,7 +6483,7 @@ SimpleXyoRunner = __decorateClass([
6444
6483
  ], SimpleXyoRunner);
6445
6484
 
6446
6485
  // src/simple/signer/SimpleXyoSigner.ts
6447
- import { assertEx as assertEx47 } from "@ariestools/sdk";
6486
+ import { assertEx as assertEx48 } from "@ariestools/sdk";
6448
6487
  import { Account, PayloadBuilder as PayloadBuilder23 } from "@xyo-network/sdk-js";
6449
6488
  import { asSignedHydratedTransactionWithHashMeta, XyoSignerMoniker as XyoSignerMoniker2 } from "@xyo-network/xl1-protocol-lib";
6450
6489
  var SimpleXyoSigner = class _SimpleXyoSigner extends AbstractCreatableProvider {
@@ -6478,13 +6517,13 @@ var SimpleXyoSigner = class _SimpleXyoSigner extends AbstractCreatableProvider {
6478
6517
  ];
6479
6518
  }
6480
6519
  async signTransaction(tx) {
6481
- assertEx47(tx[0].from === this.params.account.address, () => "Signer address does not match transaction from address");
6520
+ assertEx48(tx[0].from === this.params.account.address, () => "Signer address does not match transaction from address");
6482
6521
  return asSignedHydratedTransactionWithHashMeta(await this.sign(tx), true);
6483
6522
  }
6484
6523
  };
6485
6524
 
6486
6525
  // src/simple/StakeEventsViewer/SimpleStakeEventsViewer.ts
6487
- import { isDefined as isDefined21 } from "@ariestools/sdk";
6526
+ import { isDefined as isDefined22 } from "@ariestools/sdk";
6488
6527
  import { StakeEventsViewerMoniker } from "@xyo-network/xl1-protocol-lib";
6489
6528
  var SimpleStakeEventsViewer = class extends AbstractCreatableProvider {
6490
6529
  moniker = SimpleStakeEventsViewer.defaultMoniker;
@@ -6497,7 +6536,7 @@ var SimpleStakeEventsViewer = class extends AbstractCreatableProvider {
6497
6536
  stakeEvents(range, { name } = {}) {
6498
6537
  const positions = this.positionsFromRange(range);
6499
6538
  const events = this.eventsFromPositions(positions);
6500
- if (isDefined21(name)) {
6539
+ if (isDefined22(name)) {
6501
6540
  return events.filter((event) => event.name === name);
6502
6541
  }
6503
6542
  return events;
@@ -6564,7 +6603,7 @@ SimpleStakeEventsViewer = __decorateClass([
6564
6603
  ], SimpleStakeEventsViewer);
6565
6604
 
6566
6605
  // src/simple/StakeTotalsViewer/SimpleStakeTotalsViewer.ts
6567
- import { assertEx as assertEx48 } from "@ariestools/sdk";
6606
+ import { assertEx as assertEx49 } from "@ariestools/sdk";
6568
6607
  import { asXyoAddress as asXyoAddress3 } from "@xyo-network/sdk-js";
6569
6608
  import {
6570
6609
  StakeTotalsViewerMoniker,
@@ -6608,7 +6647,7 @@ var SimpleStakeTotalsViewer = class extends AbstractCreatableProvider {
6608
6647
  }
6609
6648
  async createHandler() {
6610
6649
  await super.createHandler();
6611
- this._stakeViewer = assertEx48(
6650
+ this._stakeViewer = assertEx49(
6612
6651
  await this.locateAndCreate(StakeViewerMoniker),
6613
6652
  () => "Failed to create StakeViewer"
6614
6653
  );
@@ -6664,14 +6703,14 @@ SimpleStakeTotalsViewer = __decorateClass([
6664
6703
  ], SimpleStakeTotalsViewer);
6665
6704
 
6666
6705
  // src/simple/StakeViewer/SimpleStakeViewer.ts
6667
- import { assertEx as assertEx49, toAddress } from "@ariestools/sdk";
6706
+ import { assertEx as assertEx50, toAddress } from "@ariestools/sdk";
6668
6707
  import { asXyoAddress as asXyoAddress4 } from "@xyo-network/sdk-js";
6669
6708
  import { StakeEventsViewerMoniker as StakeEventsViewerMoniker2, StakeViewerMoniker as StakeViewerMoniker2 } from "@xyo-network/xl1-protocol-lib";
6670
6709
  var SimpleStakeViewer = class extends AbstractCreatableProvider {
6671
6710
  moniker = SimpleStakeViewer.defaultMoniker;
6672
6711
  _chainStakeEventsViewer;
6673
6712
  get stakeEvents() {
6674
- return assertEx49(this._chainStakeEventsViewer, () => "Stake events viewer not set");
6713
+ return assertEx50(this._chainStakeEventsViewer, () => "Stake events viewer not set");
6675
6714
  }
6676
6715
  get positions() {
6677
6716
  return this.params.positions;
@@ -6711,7 +6750,7 @@ var SimpleStakeViewer = class extends AbstractCreatableProvider {
6711
6750
  }
6712
6751
  async createHandler() {
6713
6752
  await super.createHandler();
6714
- this._chainStakeEventsViewer = assertEx49(
6753
+ this._chainStakeEventsViewer = assertEx50(
6715
6754
  await this.locateAndCreate(StakeEventsViewerMoniker2),
6716
6755
  () => "Failed to create StakeEventsViewer"
6717
6756
  );
@@ -6746,7 +6785,7 @@ var SimpleStakeViewer = class extends AbstractCreatableProvider {
6746
6785
  return toAddress(toAddress(1n));
6747
6786
  }
6748
6787
  stakeById(id) {
6749
- return assertEx49(this.positions[id], () => new Error(`Stake with id ${id} not found`));
6788
+ return assertEx50(this.positions[id], () => new Error(`Stake with id ${id} not found`));
6750
6789
  }
6751
6790
  stakeByStaker(staker, slot) {
6752
6791
  return this.positions.filter((s) => asXyoAddress4(s.staker) === asXyoAddress4(staker))[slot];
@@ -6848,12 +6887,12 @@ RestSyncViewer = __decorateClass([
6848
6887
  ], RestSyncViewer);
6849
6888
 
6850
6889
  // src/simple/systemStatus/SimpleSystemStatusViewer.ts
6851
- import { assertEx as assertEx50 } from "@ariestools/sdk";
6890
+ import { assertEx as assertEx51 } from "@ariestools/sdk";
6852
6891
  import { SystemStatusViewerMoniker } from "@xyo-network/xl1-protocol-lib";
6853
6892
  var SimpleSystemStatusViewer = class extends AbstractCreatableProvider {
6854
6893
  moniker = SimpleSystemStatusViewer.defaultMoniker;
6855
6894
  get runner() {
6856
- return assertEx50(this.context.statusReporter, () => "SystemStatusViewer requires a SystemStatusRunner (context.statusReporter)");
6895
+ return assertEx51(this.context.statusReporter, () => "SystemStatusViewer requires a SystemStatusRunner (context.statusReporter)");
6857
6896
  }
6858
6897
  getGlobalStatus() {
6859
6898
  return this.runner.getGlobalStatus();
@@ -6883,8 +6922,8 @@ SimpleSystemStatusViewer = __decorateClass([
6883
6922
  // src/simple/timeSync2/SimpleTimeSyncViewer.ts
6884
6923
  import {
6885
6924
  asHash as asHash5,
6886
- assertEx as assertEx51,
6887
- isDefined as isDefined22
6925
+ assertEx as assertEx52,
6926
+ isDefined as isDefined23
6888
6927
  } from "@ariestools/sdk";
6889
6928
  import {
6890
6929
  asTimePayload as asTimePayload2,
@@ -6905,10 +6944,10 @@ var SimpleTimeSyncViewer = class extends AbstractCreatableProvider {
6905
6944
  async convertTime(fromDomain, toDomain, from) {
6906
6945
  switch (fromDomain) {
6907
6946
  case "xl1": {
6908
- const [block, payloads] = assertEx51(await this.blockViewer.blockByNumber(asXL1BlockNumber11(from, true)), () => "Block not found");
6947
+ const [block, payloads] = assertEx52(await this.blockViewer.blockByNumber(asXL1BlockNumber11(from, true)), () => "Block not found");
6909
6948
  const timeSchemaIndex = block.payload_schemas.indexOf(TimeSchema);
6910
6949
  const hash = timeSchemaIndex === -1 ? void 0 : block.payload_hashes[timeSchemaIndex];
6911
- const timePayload = asTimePayload2(isDefined22(hash) ? payloads.find((p) => p._hash === hash) : void 0);
6950
+ const timePayload = asTimePayload2(isDefined23(hash) ? payloads.find((p) => p._hash === hash) : void 0);
6912
6951
  if (timePayload === void 0) return 0;
6913
6952
  switch (toDomain) {
6914
6953
  case "xl1": {
@@ -6961,10 +7000,10 @@ var SimpleTimeSyncViewer = class extends AbstractCreatableProvider {
6961
7000
  return [Date.now(), null];
6962
7001
  }
6963
7002
  case "ethereum": {
6964
- const provider = assertEx51(this.ethProvider, () => "Ethereum provider not configured");
7003
+ const provider = assertEx52(this.ethProvider, () => "Ethereum provider not configured");
6965
7004
  const blockNumber = await provider.getBlockNumber() ?? 0;
6966
7005
  const block = await provider.getBlock(blockNumber);
6967
- const blockHash = asHash5(assertEx51(block?.hash, () => "Block hash not found"), true);
7006
+ const blockHash = asHash5(assertEx52(block?.hash, () => "Block hash not found"), true);
6968
7007
  return [blockNumber, blockHash];
6969
7008
  }
6970
7009
  default: {
@@ -6979,10 +7018,10 @@ var SimpleTimeSyncViewer = class extends AbstractCreatableProvider {
6979
7018
  // this is for the previous block
6980
7019
  xl1,
6981
7020
  // this is for the previous block
6982
- xl1Hash: assertEx51(xl1Hash, () => "No xl1 hash available from time sync service"),
7021
+ xl1Hash: assertEx52(xl1Hash, () => "No xl1 hash available from time sync service"),
6983
7022
  epoch: Date.now()
6984
7023
  };
6985
- if (isDefined22(this.ethProvider)) {
7024
+ if (isDefined23(this.ethProvider)) {
6986
7025
  const [ethereum, ethHashOrNull] = await this.currentTimeAndHash("ethereum");
6987
7026
  const ethereumHash = asHash5(ethHashOrNull, () => "No ethereum hash available from time sync service");
6988
7027
  timePayload.ethereum = ethereum;
@@ -7001,7 +7040,7 @@ SimpleTimeSyncViewer = __decorateClass([
7001
7040
  ], SimpleTimeSyncViewer);
7002
7041
 
7003
7042
  // src/simple/transactionValidation/SimpleTransactionValidationViewer.ts
7004
- import { assertEx as assertEx52 } from "@ariestools/sdk";
7043
+ import { assertEx as assertEx53 } from "@ariestools/sdk";
7005
7044
  import { PayloadBuilder as PayloadBuilder24 } from "@xyo-network/sdk-js";
7006
7045
  import {
7007
7046
  AccountBalanceViewerMoniker as AccountBalanceViewerMoniker3,
@@ -7055,7 +7094,7 @@ var SimpleTransactionValidationViewer = class extends AbstractCreatableProvider
7055
7094
  let head;
7056
7095
  if (isChainQualifiedHeadConfig6(config)) {
7057
7096
  const headBlockResult = await this.blockViewer.blockByHash(config.head);
7058
- head = headBlockResult == null ? assertEx52(
7097
+ head = headBlockResult == null ? assertEx53(
7059
7098
  void 0,
7060
7099
  () => `Specified a head that is not in the chain [${config.head}]`
7061
7100
  ) : headBlockResult[0];
@@ -7127,7 +7166,7 @@ SimpleTransactionValidationViewer = __decorateClass([
7127
7166
  ], SimpleTransactionValidationViewer);
7128
7167
 
7129
7168
  // src/simple/TransactionViewer/SimpleTransactionViewer.ts
7130
- import { assertEx as assertEx53, exists as exists10 } from "@ariestools/sdk";
7169
+ import { assertEx as assertEx54, exists as exists10 } from "@ariestools/sdk";
7131
7170
  import { BoundWitnessSchema } from "@xyo-network/sdk-js";
7132
7171
  import {
7133
7172
  asSignedHydratedTransactionWithHashMeta as asSignedHydratedTransactionWithHashMeta2,
@@ -7144,7 +7183,7 @@ var SimpleTransactionViewer = class extends AbstractCreatableProvider {
7144
7183
  }
7145
7184
  async byBlockHashAndIndex(blockHash, transactionIndex) {
7146
7185
  return await this.spanAsync("byBlockHashAndIndex", async () => {
7147
- assertEx53(transactionIndex >= 0, () => "transactionIndex must be greater than or equal to 0");
7186
+ assertEx54(transactionIndex >= 0, () => "transactionIndex must be greater than or equal to 0");
7148
7187
  try {
7149
7188
  const block = await this.blockViewer.blockByHash(blockHash);
7150
7189
  if (!block) return null;
@@ -7209,7 +7248,7 @@ SimpleTransactionViewer = __decorateClass([
7209
7248
 
7210
7249
  // src/simple/windowedBlock/SimpleWindowedBlockViewer.ts
7211
7250
  import {
7212
- assertEx as assertEx54,
7251
+ assertEx as assertEx55,
7213
7252
  exists as exists11,
7214
7253
  isNull as isNull2
7215
7254
  } from "@ariestools/sdk";
@@ -7291,7 +7330,7 @@ var SimpleWindowedBlockViewer = class extends AbstractCreatableProvider {
7291
7330
  }
7292
7331
  async createHandler() {
7293
7332
  await super.createHandler();
7294
- this._blockViewer = assertEx54(
7333
+ this._blockViewer = assertEx55(
7295
7334
  this.params.blockViewer ?? await this.locator.getInstance(BlockViewerMoniker7),
7296
7335
  () => "BlockViewer instance is required"
7297
7336
  );
@@ -7300,13 +7339,13 @@ var SimpleWindowedBlockViewer = class extends AbstractCreatableProvider {
7300
7339
  this._transactionHashMap = new MemoryMap2();
7301
7340
  }
7302
7341
  currentBlock() {
7303
- return assertEx54(this._chain.at(-1));
7342
+ return assertEx55(this._chain.at(-1));
7304
7343
  }
7305
7344
  currentBlockHash() {
7306
- return assertEx54(this._chain.at(-1)?.[0]._hash);
7345
+ return assertEx55(this._chain.at(-1)?.[0]._hash);
7307
7346
  }
7308
7347
  currentBlockNumber() {
7309
- return assertEx54(this._chain.at(-1)?.[0].block);
7348
+ return assertEx55(this._chain.at(-1)?.[0].block);
7310
7349
  }
7311
7350
  async payloadByHash(hash) {
7312
7351
  const payloads = await this.payloadsByHash([hash]);
@@ -7523,7 +7562,7 @@ var SimpleSystemStatusRunner = class extends LoggerStatusReporter {
7523
7562
  };
7524
7563
 
7525
7564
  // src/test/buildRandomChain.ts
7526
- import { asAddress as asAddress2, assertEx as assertEx57 } from "@ariestools/sdk";
7565
+ import { asAddress as asAddress2, assertEx as assertEx58 } from "@ariestools/sdk";
7527
7566
  import {
7528
7567
  Account as Account4,
7529
7568
  asSchema as asSchema9,
@@ -7542,7 +7581,7 @@ import {
7542
7581
  } from "@xyo-network/xl1-protocol-lib";
7543
7582
 
7544
7583
  // src/test/buildBlock.ts
7545
- import { assertEx as assertEx55, isDefined as isDefined23 } from "@ariestools/sdk";
7584
+ import { assertEx as assertEx56, isDefined as isDefined24 } from "@ariestools/sdk";
7546
7585
  import {
7547
7586
  asAnyPayload as asAnyPayload5,
7548
7587
  BoundWitnessBuilder as BoundWitnessBuilder4,
@@ -7625,8 +7664,8 @@ function buildStepHashes(blockNumber, inStepHashes, previousBlockHash, chainStep
7625
7664
  const completedStepReward = calculateCompletedStepReward(i, stepRewardPoolBalance);
7626
7665
  completedStepRewardTransfers.push(createTransferPayload(chainStepRewardAddress2, { [completedStepRewardHolderAddress]: completedStepReward }));
7627
7666
  }
7628
- step_hashes.push(assertEx55(previousBlockHash, () => `Previous block hash is required for step ${step} at block ${blockNumber}`));
7629
- } else if (isDefined23(inStepHashes.at(i))) {
7667
+ step_hashes.push(assertEx56(previousBlockHash, () => `Previous block hash is required for step ${step} at block ${blockNumber}`));
7668
+ } else if (isDefined24(inStepHashes.at(i))) {
7630
7669
  step_hashes.push(inStepHashes[i]);
7631
7670
  }
7632
7671
  }
@@ -7679,7 +7718,7 @@ async function buildBlock(options) {
7679
7718
  protocol
7680
7719
  }).meta({ $epoch: Date.now(), $signatures: [] }).signers(signers).payloads(await PayloadBuilder25.addStorageMeta(payloads));
7681
7720
  const [bw, txPayloads] = await builder.build();
7682
- assertEx55(isBlockBoundWitness(bw), () => "Build of BlockBoundWitness failed");
7721
+ assertEx56(isBlockBoundWitness(bw), () => "Build of BlockBoundWitness failed");
7683
7722
  return [await PayloadBuilder25.addStorageMeta(bw), txPayloads.map((p) => asAnyPayload5(p, true))];
7684
7723
  }
7685
7724
 
@@ -7700,7 +7739,7 @@ async function buildNextBlock(previousBlock, txs, blockPayloads, signers, chainS
7700
7739
  }
7701
7740
 
7702
7741
  // src/test/buildRandomGenesisBlock.ts
7703
- import { asAddress, assertEx as assertEx56 } from "@ariestools/sdk";
7742
+ import { asAddress, assertEx as assertEx57 } from "@ariestools/sdk";
7704
7743
  import {
7705
7744
  Account as Account3,
7706
7745
  asAnyPayload as asAnyPayload6,
@@ -7744,7 +7783,7 @@ var buildRandomTransaction = async (chain, payloads, account, nbf = asXL1BlockNu
7744
7783
  };
7745
7784
 
7746
7785
  // src/test/buildRandomGenesisBlock.ts
7747
- var TestChainId = assertEx56(asAddress("c5fe2e6F6841Cbab12d8C0618Be2DF8C6156cC44"));
7786
+ var TestChainId = assertEx57(asAddress("c5fe2e6F6841Cbab12d8C0618Be2DF8C6156cC44"));
7748
7787
 
7749
7788
  // src/test/createGenesisBlock.ts
7750
7789
  import { PayloadBuilder as PayloadBuilder28 } from "@xyo-network/sdk-js";
@@ -7799,7 +7838,7 @@ var createGenesisBlock = async (initialBlockProducer, nextContractAddress, genes
7799
7838
  };
7800
7839
 
7801
7840
  // src/test/buildRandomChain.ts
7802
- var TestGenesisBlockRewardAddress = assertEx57(asAddress2("fa7f0bb865a4bfff3d5e2c726d3e063297014da9"));
7841
+ var TestGenesisBlockRewardAddress = assertEx58(asAddress2("fa7f0bb865a4bfff3d5e2c726d3e063297014da9"));
7803
7842
  var buildRandomChain = async (blockProducer, count = 10, previousBlock, chainId, transactionAccount, receiverAddresses) => {
7804
7843
  const chainIdToUse = chainId ?? TestChainId;
7805
7844
  const blocks = [];
@@ -7843,7 +7882,7 @@ var buildRandomChain = async (blockProducer, count = 10, previousBlock, chainId,
7843
7882
  receiverAddress
7844
7883
  ));
7845
7884
  }
7846
- const previousBlock2 = assertEx57(lastBlock?.[0], () => new Error("No last block"));
7885
+ const previousBlock2 = assertEx58(lastBlock?.[0], () => new Error("No last block"));
7847
7886
  const block = await buildNextBlock(previousBlock2, txs, [], [blockProducer], transactionAccountToUse.address);
7848
7887
  blocks.push(block);
7849
7888
  remaining = remaining - 1;
@@ -7904,13 +7943,13 @@ function getTestProviderContext2(config) {
7904
7943
  }
7905
7944
 
7906
7945
  // src/time/primitives/xl1BlockNumberToEthBlockNumber.ts
7907
- import { assertEx as assertEx58 } from "@ariestools/sdk";
7946
+ import { assertEx as assertEx59 } from "@ariestools/sdk";
7908
7947
  import { asTimePayload as asTimePayload3, TimeSchema as TimeSchema2 } from "@xyo-network/xl1-protocol-lib";
7909
7948
  async function xl1BlockNumberToEthBlockNumber(context, xl1BlockNumber) {
7910
7949
  const blockHash = await hashFromBlockNumber(context, xl1BlockNumber);
7911
7950
  const hydratedBlock = await hydrateBlock(context, blockHash);
7912
7951
  const timePayload = asTimePayload3(hydratedBlock[1].find((p) => p.schema === TimeSchema2), { required: true });
7913
- return assertEx58(timePayload.ethereum, () => "No ethereum timestamp found on block");
7952
+ return assertEx59(timePayload.ethereum, () => "No ethereum timestamp found on block");
7914
7953
  }
7915
7954
 
7916
7955
  // src/validation/lib/isLocalhost.ts
@@ -8233,6 +8272,7 @@ export {
8233
8272
  resolveProviders,
8234
8273
  resolveProvidersFromConfig,
8235
8274
  resolveRestConnectionEndpoint,
8275
+ restConnectionFromS3Bucket,
8236
8276
  rewardFromBlockNumber,
8237
8277
  schemasMaxStep,
8238
8278
  schemasStepSummaryFromRange,
@@ -8252,6 +8292,7 @@ export {
8252
8292
  stepsRewardTotalGenesisPeriod,
8253
8293
  stepsRewardTotalRange,
8254
8294
  surfaceForBranch,
8295
+ synthesizeMemoryViewerBindings,
8255
8296
  synthesizeRpcConnectionBindings,
8256
8297
  timeDurations,
8257
8298
  toActorConfig,