@xyo-network/xl1-cli 1.19.4 → 1.19.5

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 (2) hide show
  1. package/dist/cli-min.mjs +216 -179
  2. package/package.json +3 -3
package/dist/cli-min.mjs CHANGED
@@ -201982,6 +201982,44 @@ async function createChain(signer, stakingTokenAddress, initialBlockProducer, re
201982
201982
  ];
201983
201983
  }
201984
201984
  __name$e(createChain, "createChain");
201985
+ var EthHashRegEx = HexRegExMinMaxMixedCaseWithPrefix(32, 32);
201986
+ var EthHashZod = string$2().regex(EthHashRegEx, {
201987
+ message: "Invalid address format"
201988
+ });
201989
+ var EvmStakeAddedEventNameZod = literal$2("StakeAdded");
201990
+ var EvmStakeRemovedEventNameZod = literal$2("StakeRemoved");
201991
+ var EvmStakeWithdrawnEventNameZod = literal$2("StakeWithdrawn");
201992
+ var EvmStakeEventNameZod = union$1([
201993
+ EvmStakeAddedEventNameZod,
201994
+ EvmStakeRemovedEventNameZod,
201995
+ EvmStakeWithdrawnEventNameZod
201996
+ ]);
201997
+ var EvmStakeEventArgsZod = tuple([
201998
+ EthAddressZod,
201999
+ EthAddressZod,
202000
+ bigint$1(),
202001
+ bigint$1()
202002
+ ]);
202003
+ var EvmStakeEventZod = object$4({
202004
+ address: EthAddressZod,
202005
+ args: EvmStakeEventArgsZod,
202006
+ blockHash: EthHashZod,
202007
+ blockNumber: number$3(),
202008
+ eventName: EvmStakeEventNameZod,
202009
+ transactionHash: EthHashZod,
202010
+ transactionIndex: number$3()
202011
+ });
202012
+ EvmStakeEventZod.extend({
202013
+ eventName: EvmStakeAddedEventNameZod
202014
+ });
202015
+ EvmStakeEventZod.extend({
202016
+ eventName: EvmStakeRemovedEventNameZod
202017
+ });
202018
+ EvmStakeEventZod.extend({
202019
+ eventName: EvmStakeWithdrawnEventNameZod
202020
+ });
202021
+
202022
+ // src/drivers/EvmStakeEventsViewer.ts
201985
202023
  function _ts_decorate$5(decorators, target, key, desc) {
201986
202024
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
201987
202025
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -201989,6 +202027,170 @@ function _ts_decorate$5(decorators, target, key, desc) {
201989
202027
  return c > 3 && r && Object.defineProperty(target, key, r), r;
201990
202028
  }
201991
202029
  __name$e(_ts_decorate$5, "_ts_decorate");
202030
+ var EvmStakeEventsViewer = class _EvmStakeEventsViewer extends AbstractCreatableProvider {
202031
+ static {
202032
+ __name$e(this, "EvmStakeEventsViewer");
202033
+ }
202034
+ static defaultMoniker = StakeEventsViewerMoniker;
202035
+ static dependencies = [];
202036
+ static monikers = [
202037
+ StakeEventsViewerMoniker
202038
+ ];
202039
+ moniker = _EvmStakeEventsViewer.defaultMoniker;
202040
+ eventCache = /* @__PURE__ */ new Map();
202041
+ get contract() {
202042
+ return assertEx(this.params.contract, () => new Error("Contract not defined"));
202043
+ }
202044
+ get deploymentBlock() {
202045
+ return this.params.deploymentBlock ?? 0;
202046
+ }
202047
+ async positionCount(range) {
202048
+ const events = await this.stakeEvents(range);
202049
+ const positionIds = events.map((e) => e.args.id);
202050
+ return Math.max(-1, ...positionIds) + 1;
202051
+ }
202052
+ stakeEvents(range = [
202053
+ 0,
202054
+ "latest"
202055
+ ], filter) {
202056
+ const allEvents = [
202057
+ ...this.eventCache.values()
202058
+ ];
202059
+ const result = allEvents.filter((e) => {
202060
+ if (range[1] !== "latest" && e.time > range[1]) {
202061
+ return false;
202062
+ }
202063
+ if (e.time < range[0]) {
202064
+ return false;
202065
+ }
202066
+ if (isDefined(filter?.name) && e.name !== filter.name) {
202067
+ return false;
202068
+ }
202069
+ if (isDefined(filter?.args?.id) && e.args.id !== filter.args.id) {
202070
+ return false;
202071
+ }
202072
+ if (isDefined(filter?.args?.staked) && e.args.staked !== filter.args.staked) {
202073
+ return false;
202074
+ }
202075
+ if (isDefined(filter?.args?.staker) && e.args.staker !== filter.args.staker) {
202076
+ return false;
202077
+ }
202078
+ return true;
202079
+ });
202080
+ return result;
202081
+ }
202082
+ onEventHandler(staked, staker, id, amount, event, throwOnInvalid = false) {
202083
+ const validatedEventResult = EvmStakeEventZod.safeParse(event);
202084
+ if (validatedEventResult.error) {
202085
+ this.logger?.warn(`Received invalid stake event [${event.eventName}/${event.blockNumber}], ignoring...`);
202086
+ this.logger?.warn(` - ${validatedEventResult.error.message}`);
202087
+ if (throwOnInvalid) {
202088
+ throw new Error(`Invalid stake event: ${validatedEventResult.error.message}`);
202089
+ }
202090
+ return;
202091
+ }
202092
+ const validatedEvent = validatedEventResult.data;
202093
+ const { eventName, blockNumber } = validatedEvent;
202094
+ this.logger?.log(`Processing ${eventName} event for stake ID ${id} at block ${blockNumber}`);
202095
+ const cacheKey = `${Number(id)}|${eventName}|${staker}`;
202096
+ const existingStakeEvent = this.eventCache.get(cacheKey);
202097
+ const stakeEvent = {
202098
+ name: eventName,
202099
+ args: {
202100
+ id: Number(id),
202101
+ staked: toAddress(staked),
202102
+ staker: toAddress(staker),
202103
+ amount: asAttoXL1(amount)
202104
+ },
202105
+ time: blockNumber
202106
+ };
202107
+ if (isDefined(existingStakeEvent)) {
202108
+ this.logger?.warn(`Received ${eventName} event for stake ID ${id} that is already cached, updating cache...`);
202109
+ this.logger?.warn("1");
202110
+ this.logger?.warn("Previous event", existingStakeEvent);
202111
+ this.logger?.warn("2");
202112
+ this.logger?.warn("New event", stakeEvent);
202113
+ this.logger?.warn("3");
202114
+ }
202115
+ this.eventCache.set(cacheKey, stakeEvent);
202116
+ return stakeEvent;
202117
+ }
202118
+ async startHandler() {
202119
+ try {
202120
+ const currentEthBlock = assertEx(await this.contract.runner?.provider?.getBlockNumber(), () => new Error("Failed to egt currentEthBlock"));
202121
+ await this.contract.on(this.contract.getEvent("StakeAdded"), (staked, staker, id, amount, event) => {
202122
+ this.onEventHandler(staked, staker, id, amount, event);
202123
+ });
202124
+ await this.contract.on(this.contract.getEvent("StakeRemoved"), (staked, staker, id, amount, event) => {
202125
+ this.onEventHandler(staked, staker, id, amount, event);
202126
+ });
202127
+ await this.contract.on(this.contract.getEvent("StakeWithdrawn"), (staked, staker, id, amount, event) => {
202128
+ this.onEventHandler(staked, staker, id, amount, event);
202129
+ });
202130
+ await this.loadHistoricalEvents(currentEthBlock);
202131
+ } catch (error) {
202132
+ this.logger?.error("EthereumChainStakeEvents failed to start:", error);
202133
+ throw error;
202134
+ }
202135
+ }
202136
+ async loadHistoricalEvents(currentEthBlock) {
202137
+ const allStakeEvents = (await Promise.all([
202138
+ this.stakeEventsNative([
202139
+ this.deploymentBlock,
202140
+ currentEthBlock
202141
+ ], {
202142
+ name: "StakeAdded"
202143
+ }),
202144
+ this.stakeEventsNative([
202145
+ this.deploymentBlock,
202146
+ currentEthBlock
202147
+ ], {
202148
+ name: "StakeRemoved"
202149
+ }),
202150
+ this.stakeEventsNative([
202151
+ this.deploymentBlock,
202152
+ currentEthBlock
202153
+ ], {
202154
+ name: "StakeWithdrawn"
202155
+ })
202156
+ ])).flat().toSorted((a, b) => a.time - b.time);
202157
+ console.warn(`Caching ${allStakeEvents.length} stake events from chain starting at block ${this.deploymentBlock}`);
202158
+ for (const event of allStakeEvents) {
202159
+ this.eventCache.set(`${Number(event.args.id)}|${event.name}|${event.args.staker}`, event);
202160
+ }
202161
+ }
202162
+ async stakeEventsNative(range = [
202163
+ 0,
202164
+ "latest"
202165
+ ], filter) {
202166
+ const name = filter?.name;
202167
+ if (isDefined(name)) {
202168
+ const stakedFilter = filter?.args?.staked;
202169
+ const stakerFilter = filter?.args?.staker;
202170
+ const stakedFilterEth = isDefined(stakedFilter) ? toEthAddress(stakedFilter) : void 0;
202171
+ const stakerFilterEth = isDefined(stakerFilter) ? toEthAddress(stakerFilter) : void 0;
202172
+ let ethEvents = [];
202173
+ const ethFilter = this.contract.filters[name](stakedFilterEth, stakerFilterEth);
202174
+ ethEvents = await this.contract.queryFilter(ethFilter, range[0], range[1]);
202175
+ return ethEvents.map((e) => {
202176
+ assertEx(e.eventName === name, () => `Event name mismatch expected '${name}' but got '${e.eventName}'`);
202177
+ return this.onEventHandler(e.args.staked, e.args.by, e.args.id, e.args.amount, e, true);
202178
+ }).filter(exists$2);
202179
+ } else {
202180
+ throw new Error("Only filtered stake events (by name) are supported");
202181
+ }
202182
+ }
202183
+ };
202184
+ EvmStakeEventsViewer = _ts_decorate$5([
202185
+ creatableProvider()
202186
+ ], EvmStakeEventsViewer);
202187
+ function _ts_decorate2$3(decorators, target, key, desc) {
202188
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
202189
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
202190
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
202191
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
202192
+ }
202193
+ __name$e(_ts_decorate2$3, "_ts_decorate");
201992
202194
  var ethStakeToStake = /* @__PURE__ */ __name$e((ethStake) => {
201993
202195
  const stake = {
201994
202196
  id: Number(ethStake.id),
@@ -202001,16 +202203,16 @@ var ethStakeToStake = /* @__PURE__ */ __name$e((ethStake) => {
202001
202203
  };
202002
202204
  return stake;
202003
202205
  }, "ethStakeToStake");
202004
- var EthereumChainStakeViewer = class _EthereumChainStakeViewer extends AbstractCreatableProvider {
202206
+ var EvmStakeViewer = class _EvmStakeViewer extends AbstractCreatableProvider {
202005
202207
  static {
202006
- __name$e(this, "EthereumChainStakeViewer");
202208
+ __name$e(this, "EvmStakeViewer");
202007
202209
  }
202008
202210
  static defaultMoniker = StakeViewerMoniker;
202009
202211
  static dependencies = [];
202010
202212
  static monikers = [
202011
202213
  StakeViewerMoniker
202012
202214
  ];
202013
- moniker = _EthereumChainStakeViewer.defaultMoniker;
202215
+ moniker = _EvmStakeViewer.defaultMoniker;
202014
202216
  _callMutex = new Mutex$1();
202015
202217
  _deploymentBlock = 0;
202016
202218
  _stakeCache = /* @__PURE__ */ new Map();
@@ -202211,174 +202413,9 @@ var EthereumChainStakeViewer = class _EthereumChainStakeViewer extends AbstractC
202211
202413
  }
202212
202414
  }
202213
202415
  };
202214
- EthereumChainStakeViewer = _ts_decorate$5([
202215
- creatableProvider()
202216
- ], EthereumChainStakeViewer);
202217
- function _ts_decorate2$3(decorators, target, key, desc) {
202218
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
202219
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
202220
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
202221
- return c > 3 && r && Object.defineProperty(target, key, r), r;
202222
- }
202223
- __name$e(_ts_decorate2$3, "_ts_decorate");
202224
- var isStakeLogEventName = /* @__PURE__ */ __name$e((name) => {
202225
- return isString$1(name) && [
202226
- "StakeAdded",
202227
- "StakeRemoved",
202228
- "StakeWithdrawn"
202229
- ].includes(name);
202230
- }, "isStakeLogEventName");
202231
- var EthereumChainStakeEventsViewer = class _EthereumChainStakeEventsViewer extends AbstractCreatableProvider {
202232
- static {
202233
- __name$e(this, "EthereumChainStakeEventsViewer");
202234
- }
202235
- static defaultMoniker = StakeEventsViewerMoniker;
202236
- static dependencies = [];
202237
- static monikers = [
202238
- StakeEventsViewerMoniker
202239
- ];
202240
- moniker = _EthereumChainStakeEventsViewer.defaultMoniker;
202241
- eventCache = /* @__PURE__ */ new Map();
202242
- get contract() {
202243
- return assertEx(this.params.contract, () => new Error("Contract not defined"));
202244
- }
202245
- get deploymentBlock() {
202246
- return this.params.deploymentBlock ?? 0;
202247
- }
202248
- async positionCount(range) {
202249
- const events = await this.stakeEvents(range);
202250
- const positionIds = events.map((e) => e.args.id);
202251
- return Math.max(-1, ...positionIds) + 1;
202252
- }
202253
- stakeEvents(range = [
202254
- 0,
202255
- "latest"
202256
- ], filter) {
202257
- const allEvents = [
202258
- ...this.eventCache.values()
202259
- ];
202260
- const result = allEvents.filter((e) => {
202261
- if (range[1] !== "latest" && e.time > range[1]) {
202262
- return false;
202263
- }
202264
- if (e.time < range[0]) {
202265
- return false;
202266
- }
202267
- if (isDefined(filter?.name) && e.name !== filter.name) {
202268
- return false;
202269
- }
202270
- if (isDefined(filter?.args?.id) && e.args.id !== filter.args.id) {
202271
- return false;
202272
- }
202273
- if (isDefined(filter?.args?.staked) && e.args.staked !== filter.args.staked) {
202274
- return false;
202275
- }
202276
- if (isDefined(filter?.args?.staker) && e.args.staker !== filter.args.staker) {
202277
- return false;
202278
- }
202279
- return true;
202280
- });
202281
- return result;
202282
- }
202283
- onEventHandler(staked, staker, id, amount, { eventName, blockNumber }) {
202284
- if (blockNumber === void 0) {
202285
- this.logger?.warn(`Received ${eventName} event with ${blockNumber} blockNumber, ignoring...`);
202286
- return;
202287
- }
202288
- if (!isStakeLogEventName(eventName)) {
202289
- this.logger?.warn(`Received event with unsupported name '${eventName}'`);
202290
- return;
202291
- }
202292
- this.logger?.log(`Processing ${eventName} event for stake ID ${id} at block ${blockNumber}`);
202293
- const cacheKey = `${Number(id)}|${eventName}|${staker}`;
202294
- const existingStakeEvent = this.eventCache.get(cacheKey);
202295
- const stakeEvent = {
202296
- name: eventName,
202297
- args: {
202298
- id: Number(id),
202299
- staked: toAddress(staked),
202300
- staker: toAddress(staker),
202301
- amount: asAttoXL1(amount)
202302
- },
202303
- time: blockNumber
202304
- };
202305
- if (isDefined(existingStakeEvent)) {
202306
- this.logger?.warn(`Received ${eventName} event for stake ID ${id} that is already cached, updating cache...`);
202307
- this.logger?.warn("1");
202308
- this.logger?.warn("Previous event", existingStakeEvent);
202309
- this.logger?.warn("2");
202310
- this.logger?.warn("New event", stakeEvent);
202311
- this.logger?.warn("3");
202312
- }
202313
- this.eventCache.set(cacheKey, stakeEvent);
202314
- return stakeEvent;
202315
- }
202316
- async startHandler() {
202317
- try {
202318
- const currentEthBlock = assertEx(await this.contract.runner?.provider?.getBlockNumber(), () => new Error("Failed to egt currentEthBlock"));
202319
- await this.contract.on(this.contract.getEvent("StakeAdded"), (staked, staker, id, amount, event) => {
202320
- this.onEventHandler(staked, staker, id, amount, event);
202321
- });
202322
- await this.contract.on(this.contract.getEvent("StakeRemoved"), (staked, staker, id, amount, event) => {
202323
- this.onEventHandler(staked, staker, id, amount, event);
202324
- });
202325
- await this.contract.on(this.contract.getEvent("StakeWithdrawn"), (staked, staker, id, amount, event) => {
202326
- this.onEventHandler(staked, staker, id, amount, event);
202327
- });
202328
- const allStakeEvents = (await Promise.all([
202329
- this.stakeEventsNative([
202330
- this.deploymentBlock,
202331
- currentEthBlock
202332
- ], {
202333
- name: "StakeAdded"
202334
- }),
202335
- this.stakeEventsNative([
202336
- this.deploymentBlock,
202337
- currentEthBlock
202338
- ], {
202339
- name: "StakeRemoved"
202340
- }),
202341
- this.stakeEventsNative([
202342
- this.deploymentBlock,
202343
- currentEthBlock
202344
- ], {
202345
- name: "StakeWithdrawn"
202346
- })
202347
- ])).flat().toSorted((a, b) => a.time - b.time);
202348
- console.warn(`Caching ${allStakeEvents.length} stake events from chain starting at block ${this.deploymentBlock}`);
202349
- for (const event of allStakeEvents) {
202350
- this.eventCache.set(`${Number(event.args.id)}|${event.name}|${event.args.staker}`, event);
202351
- }
202352
- } catch (error) {
202353
- this.logger?.error("EthereumChainStakeEvents failed to start:", error);
202354
- throw error;
202355
- }
202356
- }
202357
- async stakeEventsNative(range = [
202358
- 0,
202359
- "latest"
202360
- ], filter) {
202361
- const name = filter?.name;
202362
- if (isDefined(name)) {
202363
- const stakedFilter = filter?.args?.staked;
202364
- const stakerFilter = filter?.args?.staker;
202365
- const stakedFilterEth = isDefined(stakedFilter) ? toEthAddress(stakedFilter) : void 0;
202366
- const stakerFilterEth = isDefined(stakerFilter) ? toEthAddress(stakerFilter) : void 0;
202367
- let ethEvents = [];
202368
- const ethFilter = this.contract.filters[name](stakedFilterEth, stakerFilterEth);
202369
- ethEvents = await this.contract.queryFilter(ethFilter, range[0], range[1]);
202370
- return ethEvents.map((e) => {
202371
- assertEx(e.eventName === name, () => `Event name mismatch expected '${name}' but got '${e.eventName}'`);
202372
- return this.onEventHandler(e.args.staked, e.args.by, e.args.id, e.args.amount, e);
202373
- }).filter(exists$2);
202374
- } else {
202375
- throw new Error("Only filtered stake events (by name) are supported");
202376
- }
202377
- }
202378
- };
202379
- EthereumChainStakeEventsViewer = _ts_decorate2$3([
202416
+ EvmStakeViewer = _ts_decorate2$3([
202380
202417
  creatableProvider()
202381
- ], EthereumChainStakeEventsViewer);
202418
+ ], EvmStakeViewer);
202382
202419
  var AbstractEvmProvider = class extends AbstractCreatableProvider {
202383
202420
  static {
202384
202421
  __name$e(this, "AbstractEvmProvider");
@@ -297899,19 +297936,19 @@ async function initEvmChainStakeViewer(context, config, logger) {
297899
297936
  });
297900
297937
  const contractAddress = assertEx(config.chain.id, () => "Missing config.evm.chainId");
297901
297938
  const contract = IStakedXyoChain__factory.connect(toEthAddress(contractAddress), provider2);
297902
- const stakeEventsViewer = await EthereumChainStakeEventsViewer.create({
297939
+ const stakeEventsViewer = await EvmStakeEventsViewer.create({
297903
297940
  contract,
297904
297941
  logger,
297905
297942
  context
297906
297943
  });
297907
- assertEx(await stakeEventsViewer.start(), () => "Failed to start EthereumChainStakeEvents reader");
297908
- const stakeChainViewer = await EthereumChainStakeViewer.create({
297944
+ assertEx(await stakeEventsViewer.start(), () => "Failed to start EvmStakeEvents reader");
297945
+ const stakeChainViewer = await EvmStakeViewer.create({
297909
297946
  contract,
297910
297947
  stakeEventsViewer,
297911
297948
  logger,
297912
297949
  context
297913
297950
  });
297914
- assertEx(await stakeChainViewer.start(), () => "Failed to start EthereumChainStake viewer");
297951
+ assertEx(await stakeChainViewer.start(), () => "Failed to start EvmStake viewer");
297915
297952
  return stakeChainViewer;
297916
297953
  }
297917
297954
  __name$6(initEvmChainStakeViewer, "initEvmChainStakeViewer");
@@ -298770,12 +298807,12 @@ async function getServer$3(params) {
298770
298807
  });
298771
298808
  const contractAddress = assertEx(config.chain.id, () => "Missing config.chain.chainId");
298772
298809
  const contract = IStakedXyoChain__factory.connect(toEthAddress(contractAddress), provider);
298773
- locator.register(EthereumChainStakeEventsViewer.factory(EthereumChainStakeEventsViewer.dependencies, {
298810
+ locator.register(EvmStakeEventsViewer.factory(EvmStakeEventsViewer.dependencies, {
298774
298811
  contract
298775
298812
  }));
298776
- const stakeEventsViewer = await locator.getInstance(EthereumChainStakeEventsViewer.defaultMoniker);
298777
- assertEx(await stakeEventsViewer.start(), () => "Failed to start EthereumChainStakeEventsViewer");
298778
- locator.register(EthereumChainStakeViewer.factory(EthereumChainStakeViewer.dependencies, {
298813
+ const stakeEventsViewer = await locator.getInstance(EvmStakeEventsViewer.defaultMoniker);
298814
+ assertEx(await stakeEventsViewer.start(), () => "Failed to start EvmStakeEventsViewer");
298815
+ locator.register(EvmStakeViewer.factory(EvmStakeViewer.dependencies, {
298779
298816
  contract,
298780
298817
  stakeEventsViewer
298781
298818
  }));
@@ -350450,7 +350487,7 @@ var waitForHostPort = /* @__PURE__ */ __name((host, port) => {
350450
350487
 
350451
350488
  // src/runCLI.ts
350452
350489
  var configuration;
350453
- var version = isDefined("1.19.3") ? "1.19.3" : "unknown";
350490
+ var version = isDefined("1.19.4") ? "1.19.4" : "unknown";
350454
350491
  var getContextFromConfig = /* @__PURE__ */ __name(async (configuration2) => {
350455
350492
  const logger = initLogger(configuration2);
350456
350493
  const orchestrator = await Orchestrator.create({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/xl1-cli",
3
- "version": "1.19.4",
3
+ "version": "1.19.5",
4
4
  "description": "XYO Layer One CLI",
5
5
  "homepage": "https://xylabs.com",
6
6
  "bugs": {
@@ -75,8 +75,8 @@
75
75
  "@xyo-network/payload-model": "~5.3.2",
76
76
  "@xyo-network/wallet": "~5.3.2",
77
77
  "@xyo-network/wallet-model": "~5.3.2",
78
- "@xyo-network/xl1-cli-lib": "~1.19.4",
79
- "@xyo-network/xl1-sdk": "~1.21.9",
78
+ "@xyo-network/xl1-cli-lib": "~1.19.5",
79
+ "@xyo-network/xl1-sdk": "~1.21.10",
80
80
  "async-mutex": "~0.5.0",
81
81
  "dotenv": "~17.2.3",
82
82
  "eslint": "^9.39.2",