@hyperlane-xyz/cli 24.0.0 → 25.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/bundle/index.js +1181 -378
  2. package/package.json +12 -12
package/bundle/index.js CHANGED
@@ -553756,6 +553756,12 @@ class AleoProvider extends _base_js__WEBPACK_IMPORTED_MODULE_9__/* .AleoBase */
553756
553756
  inputs: [address, `${localDomain}u32`],
553757
553757
  };
553758
553758
  }
553759
+ async getCreateProxyAdminTransaction(_req) {
553760
+ throw new Error('ProxyAdmin is not supported on Aleo');
553761
+ }
553762
+ async getSetProxyAdminOwnerTransaction(_req) {
553763
+ throw new Error('ProxyAdmin is not supported on Aleo');
553764
+ }
553759
553765
  // ### GET WARP TXS ###
553760
553766
  async getCreateNativeTokenTransaction(_req) {
553761
553767
  return {
@@ -554063,6 +554069,9 @@ class AleoSigner extends _provider_js__WEBPACK_IMPORTED_MODULE_1__/* .AleoProvid
554063
554069
  }
554064
554070
  // ### TX CORE ###
554065
554071
  async createMailbox(req) {
554072
+ if (req.proxyAdminAddress) {
554073
+ throw new Error('ProxyAdmin is not supported on Aleo. Remove proxyAdmin from config.');
554074
+ }
554066
554075
  const mailboxSuffix = this.generateSuffix(_utils_helper_js__WEBPACK_IMPORTED_MODULE_0__/* .SUFFIX_LENGTH_LONG */ .SO);
554067
554076
  const programs = await this.deployProgram('dispatch_proxy', mailboxSuffix);
554068
554077
  const tx = await this.getCreateMailboxTransaction({
@@ -554344,8 +554353,17 @@ class AleoSigner extends _provider_js__WEBPACK_IMPORTED_MODULE_1__/* .AleoProvid
554344
554353
  validatorAnnounceId: (0,_utils_helper_js__WEBPACK_IMPORTED_MODULE_0__/* .toAleoAddress */ .j2)(validatorAnnounceId),
554345
554354
  };
554346
554355
  }
554356
+ async createProxyAdmin(_req) {
554357
+ throw new Error('ProxyAdmin is not supported on Aleo');
554358
+ }
554359
+ async setProxyAdminOwner(_req) {
554360
+ throw new Error('ProxyAdmin is not supported on Aleo');
554361
+ }
554347
554362
  // ### TX WARP ###
554348
554363
  async createNativeToken(req) {
554364
+ if (req.proxyAdminAddress) {
554365
+ throw new Error('ProxyAdmin is not supported on Aleo. Remove proxyAdmin from config.');
554366
+ }
554349
554367
  const suffix = req.warpSuffix || this.warpSuffix;
554350
554368
  if (suffix) {
554351
554369
  const isAlreadyDeployed = await this.isProgramDeployed(`${this.prefix}_native_${suffix}.aleo`);
@@ -554370,6 +554388,9 @@ class AleoSigner extends _provider_js__WEBPACK_IMPORTED_MODULE_1__/* .AleoProvid
554370
554388
  };
554371
554389
  }
554372
554390
  async createCollateralToken(req) {
554391
+ if (req.proxyAdminAddress) {
554392
+ throw new Error('ProxyAdmin is not supported on Aleo. Remove proxyAdmin from config.');
554393
+ }
554373
554394
  const suffix = req.warpSuffix || this.warpSuffix;
554374
554395
  if (suffix) {
554375
554396
  const isAlreadyDeployed = await this.isProgramDeployed(`${this.prefix}_collateral_${suffix}.aleo`);
@@ -554394,6 +554415,9 @@ class AleoSigner extends _provider_js__WEBPACK_IMPORTED_MODULE_1__/* .AleoProvid
554394
554415
  };
554395
554416
  }
554396
554417
  async createSyntheticToken(req) {
554418
+ if (req.proxyAdminAddress) {
554419
+ throw new Error('ProxyAdmin is not supported on Aleo. Remove proxyAdmin from config.');
554420
+ }
554397
554421
  const suffix = req.warpSuffix || this.warpSuffix;
554398
554422
  if (suffix) {
554399
554423
  const isAlreadyDeployed = await this.isProgramDeployed(`${this.prefix}_synthetic_${suffix}.aleo`);
@@ -560912,18 +560936,20 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
560912
560936
  /* harmony export */ H: () => (/* binding */ resolveChains)
560913
560937
  /* harmony export */ });
560914
560938
  /* harmony import */ var _hyperlane_xyz_rebalancer__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(97772);
560915
- /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(6374);
560916
- /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(29459);
560917
- /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(21387);
560918
- /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(16639);
560939
+ /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(6374);
560940
+ /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(29459);
560941
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(21387);
560942
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(16639);
560919
560943
  /* harmony import */ var _commands_signCommands_js__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(29781);
560920
560944
  /* harmony import */ var _config_core_js__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(36789);
560921
- /* harmony import */ var _config_warp_js__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(10392);
560922
- /* harmony import */ var _utils_chains_js__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(80881);
560923
- /* harmony import */ var _utils_warp_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(85361);
560924
- /* harmony import */ var _context_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(94986);
560925
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_hyperlane_xyz_rebalancer__WEBPACK_IMPORTED_MODULE_0__, _config_core_js__WEBPACK_IMPORTED_MODULE_2__, _config_warp_js__WEBPACK_IMPORTED_MODULE_3__, _utils_chains_js__WEBPACK_IMPORTED_MODULE_4__, _utils_warp_js__WEBPACK_IMPORTED_MODULE_5__, _context_js__WEBPACK_IMPORTED_MODULE_6__]);
560926
- ([_hyperlane_xyz_rebalancer__WEBPACK_IMPORTED_MODULE_0__, _config_core_js__WEBPACK_IMPORTED_MODULE_2__, _config_warp_js__WEBPACK_IMPORTED_MODULE_3__, _utils_chains_js__WEBPACK_IMPORTED_MODULE_4__, _utils_warp_js__WEBPACK_IMPORTED_MODULE_5__, _context_js__WEBPACK_IMPORTED_MODULE_6__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
560945
+ /* harmony import */ var _config_submit_js__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(21106);
560946
+ /* harmony import */ var _config_warp_js__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(10392);
560947
+ /* harmony import */ var _utils_chains_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(80881);
560948
+ /* harmony import */ var _utils_warp_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(85361);
560949
+ /* harmony import */ var _context_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(94986);
560950
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_hyperlane_xyz_rebalancer__WEBPACK_IMPORTED_MODULE_0__, _config_core_js__WEBPACK_IMPORTED_MODULE_2__, _config_submit_js__WEBPACK_IMPORTED_MODULE_3__, _config_warp_js__WEBPACK_IMPORTED_MODULE_4__, _utils_chains_js__WEBPACK_IMPORTED_MODULE_5__, _utils_warp_js__WEBPACK_IMPORTED_MODULE_6__, _context_js__WEBPACK_IMPORTED_MODULE_7__]);
560951
+ ([_hyperlane_xyz_rebalancer__WEBPACK_IMPORTED_MODULE_0__, _config_core_js__WEBPACK_IMPORTED_MODULE_2__, _config_submit_js__WEBPACK_IMPORTED_MODULE_3__, _config_warp_js__WEBPACK_IMPORTED_MODULE_4__, _utils_chains_js__WEBPACK_IMPORTED_MODULE_5__, _utils_warp_js__WEBPACK_IMPORTED_MODULE_6__, _context_js__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
560952
+
560927
560953
 
560928
560954
 
560929
560955
 
@@ -560957,7 +560983,7 @@ async function resolveChains(argv) {
560957
560983
  case _commands_signCommands_js__WEBPACK_IMPORTED_MODULE_1__/* .CommandType */ .g4.WARP_REBALANCER:
560958
560984
  return resolveWarpRebalancerChains(argv);
560959
560985
  case _commands_signCommands_js__WEBPACK_IMPORTED_MODULE_1__/* .CommandType */ .g4.SUBMIT:
560960
- return resolveWarpRouteConfigChains(argv); // Same as WARP_DEPLOY
560986
+ return resolveSubmitChains(argv);
560961
560987
  case _commands_signCommands_js__WEBPACK_IMPORTED_MODULE_1__/* .CommandType */ .g4.CORE_APPLY:
560962
560988
  return resolveCoreApplyChains(argv);
560963
560989
  case _commands_signCommands_js__WEBPACK_IMPORTED_MODULE_1__/* .CommandType */ .g4.CORE_DEPLOY:
@@ -560974,7 +561000,7 @@ async function resolveChains(argv) {
560974
561000
  }
560975
561001
  }
560976
561002
  async function resolveWarpRouteConfigChains(argv) {
560977
- const warpDeployConfig = await (0,_config_warp_js__WEBPACK_IMPORTED_MODULE_3__/* .getWarpRouteDeployConfig */ .Rj)({
561003
+ const warpDeployConfig = await (0,_config_warp_js__WEBPACK_IMPORTED_MODULE_4__/* .getWarpRouteDeployConfig */ .Rj)({
560978
561004
  context: argv.context,
560979
561005
  warpRouteDeployConfigPath: argv.config,
560980
561006
  warpRouteId: argv.warpRouteId,
@@ -560982,7 +561008,7 @@ async function resolveWarpRouteConfigChains(argv) {
560982
561008
  });
560983
561009
  argv.context.warpDeployConfig = warpDeployConfig;
560984
561010
  argv.context.chains = Object.keys(warpDeployConfig);
560985
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__/* .assert */ .v)(argv.context.chains.length !== 0, 'No chains found in warp route deployment config');
561011
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__/* .assert */ .v)(argv.context.chains.length !== 0, 'No chains found in warp route deployment config');
560986
561012
  return argv.context.chains;
560987
561013
  }
560988
561014
  async function resolveWarpReadChains(argv) {
@@ -560990,23 +561016,23 @@ async function resolveWarpReadChains(argv) {
560990
561016
  argv.context.chains = await resolveChain(argv);
560991
561017
  }
560992
561018
  if (argv.symbol || argv.warpRouteId) {
560993
- const warpCoreConfig = await (0,_utils_warp_js__WEBPACK_IMPORTED_MODULE_5__/* .getWarpCoreConfigOrExit */ .ff)({
561019
+ const warpCoreConfig = await (0,_utils_warp_js__WEBPACK_IMPORTED_MODULE_6__/* .getWarpCoreConfigOrExit */ .ff)({
560994
561020
  context: argv.context,
560995
561021
  symbol: argv.symbol,
560996
561022
  warpRouteId: argv.warpRouteId,
560997
561023
  });
560998
561024
  argv.context.chains = warpCoreConfig.tokens.map((token) => token.chainName);
560999
561025
  }
561000
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__/* .assert */ .v)(argv.context.chains && argv.context.chains.length !== 0, 'No chains found set in parameters');
561026
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__/* .assert */ .v)(argv.context.chains && argv.context.chains.length !== 0, 'No chains found set in parameters');
561001
561027
  return argv.context.chains;
561002
561028
  }
561003
561029
  async function resolveChain(argv) {
561004
561030
  const chains = argv.chain ? [argv.chain] : [];
561005
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__/* .assert */ .v)(chains.length !== 0, 'No chains found set in parameters');
561031
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__/* .assert */ .v)(chains.length !== 0, 'No chains found set in parameters');
561006
561032
  return chains;
561007
561033
  }
561008
561034
  async function resolveWarpConfigChains(argv) {
561009
- const { warpCoreConfig, warpDeployConfig } = await (0,_utils_warp_js__WEBPACK_IMPORTED_MODULE_5__/* .getWarpConfigs */ .Yb)({
561035
+ const { warpCoreConfig, warpDeployConfig } = await (0,_utils_warp_js__WEBPACK_IMPORTED_MODULE_6__/* .getWarpConfigs */ .Yb)({
561010
561036
  context: argv.context,
561011
561037
  warpRouteId: argv.warpRouteId,
561012
561038
  symbol: argv.symbol,
@@ -561016,7 +561042,7 @@ async function resolveWarpConfigChains(argv) {
561016
561042
  argv.context.warpCoreConfig = warpCoreConfig;
561017
561043
  argv.context.warpDeployConfig = warpDeployConfig;
561018
561044
  argv.context.chains = Object.keys(warpDeployConfig);
561019
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__/* .assert */ .v)(argv.context.chains.length !== 0, 'No chains found in warp route deployment config');
561045
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__/* .assert */ .v)(argv.context.chains.length !== 0, 'No chains found in warp route deployment config');
561020
561046
  return argv.context.chains;
561021
561047
  }
561022
561048
  async function resolveWarpRebalancerChains(argv) {
@@ -561025,7 +561051,7 @@ async function resolveWarpRebalancerChains(argv) {
561025
561051
  // Extract chain names from all strategies in the rebalancer config
561026
561052
  // This ensures we only create signers for chains we can actually rebalance
561027
561053
  const chains = (0,_hyperlane_xyz_rebalancer__WEBPACK_IMPORTED_MODULE_0__/* .getStrategyChainNames */ .zj)(rebalancerConfig.strategyConfig);
561028
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__/* .assert */ .v)(chains.length !== 0, 'No chains configured in rebalancer config');
561054
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__/* .assert */ .v)(chains.length !== 0, 'No chains configured in rebalancer config');
561029
561055
  return chains;
561030
561056
  }
561031
561057
  /**
@@ -561038,7 +561064,7 @@ async function resolveSendMessageChains(argv) {
561038
561064
  const { multiProvider } = argv.context;
561039
561065
  const selectedChains = [argv.origin, argv.destination].filter(Boolean);
561040
561066
  if (selectedChains.length > 0) {
561041
- const nonEvmChains = selectedChains.filter((chain) => multiProvider.getProtocol(chain) !== _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__/* .ProtocolType */ .Hb.Ethereum);
561067
+ const nonEvmChains = selectedChains.filter((chain) => multiProvider.getProtocol(chain) !== _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_9__/* .ProtocolType */ .Hb.Ethereum);
561042
561068
  if (nonEvmChains.length > 0) {
561043
561069
  const chainDetails = nonEvmChains
561044
561070
  .map((chain) => `'${chain}' (${multiProvider.getProtocol(chain)})`)
@@ -561064,8 +561090,8 @@ async function resolveRelayerChains(argv) {
561064
561090
  }
561065
561091
  // If no destination is specified, return all EVM chains only
561066
561092
  if (!argv.destination) {
561067
- const chains = Object.keys((0,_utils_chains_js__WEBPACK_IMPORTED_MODULE_4__/* .filterOutDisabledChains */ .zC)(chainMetadata));
561068
- return chains.filter((chain) => _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__/* .ProtocolType */ .Hb.Ethereum === multiProvider.getProtocol(chain));
561093
+ const chains = Object.keys((0,_utils_chains_js__WEBPACK_IMPORTED_MODULE_5__/* .filterOutDisabledChains */ .zC)(chainMetadata));
561094
+ return chains.filter((chain) => _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_9__/* .ProtocolType */ .Hb.Ethereum === multiProvider.getProtocol(chain));
561069
561095
  }
561070
561096
  chains.add(argv.destination);
561071
561097
  return Array.from(chains);
@@ -561077,11 +561103,11 @@ async function resolveCoreApplyChains(argv) {
561077
561103
  return [argv.chain];
561078
561104
  }
561079
561105
  const addresses = await argv.context.registry.getChainAddresses(argv.chain);
561080
- const coreAddresses = _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_9__/* .DeployedCoreAddressesSchema */ .Vd.parse(addresses);
561106
+ const coreAddresses = _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_10__/* .DeployedCoreAddressesSchema */ .Vd.parse(addresses);
561081
561107
  const protocolType = argv.context.multiProvider.getProtocol(argv.chain);
561082
561108
  switch (protocolType) {
561083
- case _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__/* .ProtocolType */ .Hb.Ethereum: {
561084
- const evmCoreModule = new _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_10__/* .EvmCoreModule */ .a(argv.context.multiProvider, {
561109
+ case _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_9__/* .ProtocolType */ .Hb.Ethereum: {
561110
+ const evmCoreModule = new _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_11__/* .EvmCoreModule */ .a(argv.context.multiProvider, {
561085
561111
  chain: argv.chain,
561086
561112
  config,
561087
561113
  addresses: coreAddresses,
@@ -561110,10 +561136,10 @@ async function resolveCoreDeployChains(argv) {
561110
561136
  else {
561111
561137
  if (skipConfirmation)
561112
561138
  throw new Error('No chain provided');
561113
- chain = await (0,_utils_chains_js__WEBPACK_IMPORTED_MODULE_4__/* .runSingleChainSelectionStep */ .jZ)(chainMetadata, 'Select chain to connect:');
561139
+ chain = await (0,_utils_chains_js__WEBPACK_IMPORTED_MODULE_5__/* .runSingleChainSelectionStep */ .jZ)(chainMetadata, 'Select chain to connect:');
561114
561140
  }
561115
561141
  if (!skipConfirmation) {
561116
- argv.context.apiKeys = await (0,_context_js__WEBPACK_IMPORTED_MODULE_6__/* .requestAndSaveApiKeys */ .SH)([chain], chainMetadata, registry);
561142
+ argv.context.apiKeys = await (0,_context_js__WEBPACK_IMPORTED_MODULE_7__/* .requestAndSaveApiKeys */ .SH)([chain], chainMetadata, registry);
561117
561143
  }
561118
561144
  argv.chain = chain;
561119
561145
  return [chain];
@@ -561130,9 +561156,26 @@ async function resolveIcaDeployChains(argv) {
561130
561156
  chains.add(argv.origin);
561131
561157
  if (argv.chains?.length)
561132
561158
  argv.chains.forEach((c) => chains.add(c));
561133
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__/* .assert */ .v)(chains.size > 0, 'No chains provided for ICA deploy');
561159
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__/* .assert */ .v)(chains.size > 0, 'No chains provided for ICA deploy');
561134
561160
  return Array.from(chains);
561135
561161
  }
561162
+ async function resolveSubmitChains(argv) {
561163
+ try {
561164
+ const { multiProvider } = argv.context;
561165
+ const transactionFilePath = argv.transactions;
561166
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__/* .assert */ .v)(transactionFilePath, 'Expected transactions file path to be provided for submit command');
561167
+ const transactions = (0,_config_submit_js__WEBPACK_IMPORTED_MODULE_3__/* .getTransactions */ .I)(transactionFilePath);
561168
+ const chainIds = new Set(transactions.map((tx) => tx.chainId));
561169
+ const chains = Array.from(chainIds).map((chainId) => multiProvider.getChainName(chainId));
561170
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__/* .assert */ .v)(chains.length > 0, 'No transactions found in file');
561171
+ return chains;
561172
+ }
561173
+ catch (error) {
561174
+ throw new Error(`Failed to resolve submit command chains`, {
561175
+ cause: error,
561176
+ });
561177
+ }
561178
+ }
561136
561179
  //# sourceMappingURL=chainResolver.js.map
561137
561180
  __webpack_async_result__();
561138
561181
  } catch(e) { __webpack_async_result__(e); } });
@@ -562052,8 +562095,8 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
562052
562095
  /* harmony import */ var _utils_relay_js__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(92941);
562053
562096
  /* harmony import */ var _configValidation_js__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(34804);
562054
562097
  /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_12__ = __nccwpck_require__(62356);
562055
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_context_context_js__WEBPACK_IMPORTED_MODULE_5__, _send_transfer_js__WEBPACK_IMPORTED_MODULE_6__, _submitters_EV5FileSubmitter_js__WEBPACK_IMPORTED_MODULE_7__, _submitters_types_js__WEBPACK_IMPORTED_MODULE_8__, _utils_relay_js__WEBPACK_IMPORTED_MODULE_10__, _configValidation_js__WEBPACK_IMPORTED_MODULE_11__, _utils_js__WEBPACK_IMPORTED_MODULE_12__, _hyperlane_xyz_registry__WEBPACK_IMPORTED_MODULE_16__]);
562056
- ([_context_context_js__WEBPACK_IMPORTED_MODULE_5__, _send_transfer_js__WEBPACK_IMPORTED_MODULE_6__, _submitters_EV5FileSubmitter_js__WEBPACK_IMPORTED_MODULE_7__, _submitters_types_js__WEBPACK_IMPORTED_MODULE_8__, _utils_relay_js__WEBPACK_IMPORTED_MODULE_10__, _configValidation_js__WEBPACK_IMPORTED_MODULE_11__, _utils_js__WEBPACK_IMPORTED_MODULE_12__, _hyperlane_xyz_registry__WEBPACK_IMPORTED_MODULE_16__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
562098
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_context_context_js__WEBPACK_IMPORTED_MODULE_5__, _send_transfer_js__WEBPACK_IMPORTED_MODULE_6__, _submitters_EV5FileSubmitter_js__WEBPACK_IMPORTED_MODULE_7__, _submitters_types_js__WEBPACK_IMPORTED_MODULE_8__, _utils_relay_js__WEBPACK_IMPORTED_MODULE_10__, _configValidation_js__WEBPACK_IMPORTED_MODULE_11__, _utils_js__WEBPACK_IMPORTED_MODULE_12__, _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_13__, _hyperlane_xyz_registry__WEBPACK_IMPORTED_MODULE_16__, _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_28__]);
562099
+ ([_context_context_js__WEBPACK_IMPORTED_MODULE_5__, _send_transfer_js__WEBPACK_IMPORTED_MODULE_6__, _submitters_EV5FileSubmitter_js__WEBPACK_IMPORTED_MODULE_7__, _submitters_types_js__WEBPACK_IMPORTED_MODULE_8__, _utils_relay_js__WEBPACK_IMPORTED_MODULE_10__, _configValidation_js__WEBPACK_IMPORTED_MODULE_11__, _utils_js__WEBPACK_IMPORTED_MODULE_12__, _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_13__, _hyperlane_xyz_registry__WEBPACK_IMPORTED_MODULE_16__, _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_28__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
562057
562100
 
562058
562101
 
562059
562102
 
@@ -563579,7 +563622,7 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
563579
563622
  /* harmony import */ var _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(71711);
563580
563623
  /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(41724);
563581
563624
  /* harmony import */ var _hyperlane_xyz_provider_sdk__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(18951);
563582
- /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(98362);
563625
+ /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(40945);
563583
563626
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(22887);
563584
563627
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(4879);
563585
563628
  /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(73938);
@@ -571872,7 +571915,7 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
571872
571915
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(1330);
571873
571916
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(2202);
571874
571917
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(26492);
571875
- /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(98362);
571918
+ /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(40945);
571876
571919
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(4169);
571877
571920
  /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(21387);
571878
571921
  /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(73938);
@@ -571956,7 +571999,7 @@ __webpack_async_result__();
571956
571999
  /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
571957
572000
  /* harmony export */ x: () => (/* binding */ VERSION)
571958
572001
  /* harmony export */ });
571959
- const VERSION = '24.0.0';
572002
+ const VERSION = '25.0.0';
571960
572003
  //# sourceMappingURL=version.js.map
571961
572004
 
571962
572005
  /***/ }),
@@ -571981,6 +572024,8 @@ var build = __nccwpck_require__(69403);
571981
572024
  var tendermint_rpc_build = __nccwpck_require__(83071);
571982
572025
  // EXTERNAL MODULE: ../provider-sdk/dist/index.js + 2 modules
571983
572026
  var dist = __nccwpck_require__(18951);
572027
+ // EXTERNAL MODULE: ../utils/dist/async.js
572028
+ var dist_async = __nccwpck_require__(14918);
571984
572029
  // EXTERNAL MODULE: ../../node_modules/.pnpm/protobufjs@7.5.4/node_modules/protobufjs/minimal.js
571985
572030
  var minimal = __nccwpck_require__(98942);
571986
572031
  ;// CONCATENATED MODULE: ../cosmos-types/dist/types/hyperlane/core/v1/events.js
@@ -587353,7 +587398,7 @@ class CosmosMerkleTreeHookWriter extends CosmosMerkleTreeHookReader {
587353
587398
  */
587354
587399
  class CosmosHookArtifactManager {
587355
587400
  config;
587356
- queryPromise;
587401
+ query = new dist_async/* LazyAsync */.Ru(() => this.createQuery());
587357
587402
  constructor(config) {
587358
587403
  this.config = config;
587359
587404
  }
@@ -587361,11 +587406,8 @@ class CosmosHookArtifactManager {
587361
587406
  * Lazy initialization - creates query client on first use.
587362
587407
  * Subsequent calls return the cached promise.
587363
587408
  */
587364
- async getQuery() {
587365
- if (!this.queryPromise) {
587366
- this.queryPromise = this.createQuery();
587367
- }
587368
- return this.queryPromise;
587409
+ getQuery() {
587410
+ return this.query.get();
587369
587411
  }
587370
587412
  /**
587371
587413
  * Creates a Cosmos query client with PostDispatch extension.
@@ -588042,6 +588084,7 @@ class CosmosTestIsmWriter extends CosmosTestIsmReader {
588042
588084
 
588043
588085
 
588044
588086
 
588087
+
588045
588088
  /**
588046
588089
  * Cosmos ISM Artifact Manager implementing IRawIsmArtifactManager.
588047
588090
  *
@@ -588055,7 +588098,7 @@ class CosmosTestIsmWriter extends CosmosTestIsmReader {
588055
588098
  */
588056
588099
  class CosmosIsmArtifactManager {
588057
588100
  rpcUrls;
588058
- queryPromise;
588101
+ query = new dist_async/* LazyAsync */.Ru(() => this.createQuery());
588059
588102
  constructor(rpcUrls) {
588060
588103
  this.rpcUrls = rpcUrls;
588061
588104
  }
@@ -588063,11 +588106,8 @@ class CosmosIsmArtifactManager {
588063
588106
  * Lazy initialization - creates query client on first use.
588064
588107
  * Subsequent calls return the cached promise.
588065
588108
  */
588066
- async getQuery() {
588067
- if (!this.queryPromise) {
588068
- this.queryPromise = this.createQuery();
588069
- }
588070
- return this.queryPromise;
588109
+ getQuery() {
588110
+ return this.query.get();
588071
588111
  }
588072
588112
  /**
588073
588113
  * Creates a Cosmos query client with ISM extension.
@@ -588546,6 +588586,12 @@ class CosmosNativeProvider {
588546
588586
  async getCreateValidatorAnnounceTransaction(_req) {
588547
588587
  throw new Error('Cosmos Native does not support populateCreateValidatorAnnounce');
588548
588588
  }
588589
+ async getCreateProxyAdminTransaction(_req) {
588590
+ throw new Error('ProxyAdmin is not supported on Cosmos Native');
588591
+ }
588592
+ async getSetProxyAdminOwnerTransaction(_req) {
588593
+ throw new Error('ProxyAdmin is not supported on Cosmos Native');
588594
+ }
588549
588595
  // ### GET WARP TXS ###
588550
588596
  async getCreateNativeTokenTransaction(_req) {
588551
588597
  throw new Error(`Native Token is not supported on Cosmos Native`);
@@ -588781,6 +588827,9 @@ class CosmosNativeSigner extends CosmosNativeProvider {
588781
588827
  }
588782
588828
  // ### TX CORE ###
588783
588829
  async createMailbox(req) {
588830
+ if (req.proxyAdminAddress) {
588831
+ throw new Error('ProxyAdmin is not supported on Cosmos. Remove proxyAdmin from config.');
588832
+ }
588784
588833
  const msg = await this.getCreateMailboxTransaction({
588785
588834
  ...req,
588786
588835
  signer: this.account.address,
@@ -588958,11 +589007,20 @@ class CosmosNativeSigner extends CosmosNativeProvider {
588958
589007
  // Cosmos Native has no validator announce
588959
589008
  return { validatorAnnounceId: '' };
588960
589009
  }
589010
+ async createProxyAdmin(_req) {
589011
+ throw new Error('ProxyAdmin is not supported on Cosmos Native');
589012
+ }
589013
+ async setProxyAdminOwner(_req) {
589014
+ throw new Error('ProxyAdmin is not supported on Cosmos Native');
589015
+ }
588961
589016
  // ### TX WARP ###
588962
589017
  async createNativeToken(_req) {
588963
589018
  throw new Error(`Native Token is not supported on Cosmos Native`);
588964
589019
  }
588965
589020
  async createCollateralToken(req) {
589021
+ if (req.proxyAdminAddress) {
589022
+ throw new Error('ProxyAdmin is not supported on Cosmos Native. Remove proxyAdmin from config.');
589023
+ }
588966
589024
  const msg = await this.getCreateCollateralTokenTransaction({
588967
589025
  ...req,
588968
589026
  signer: this.account.address,
@@ -588973,6 +589031,9 @@ class CosmosNativeSigner extends CosmosNativeProvider {
588973
589031
  };
588974
589032
  }
588975
589033
  async createSyntheticToken(req) {
589034
+ if (req.proxyAdminAddress) {
589035
+ throw new Error('ProxyAdmin is not supported on Cosmos Native. Remove proxyAdmin from config.');
589036
+ }
588976
589037
  const msg = await this.getCreateSyntheticTokenTransaction({
588977
589038
  ...req,
588978
589039
  signer: this.account.address,
@@ -591704,8 +591765,9 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
591704
591765
  /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
591705
591766
  /* harmony export */ x: () => (/* binding */ RegistryService)
591706
591767
  /* harmony export */ });
591707
- /* harmony import */ var _hyperlane_xyz_registry__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(97031);
591708
- /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(21387);
591768
+ /* harmony import */ var _hyperlane_xyz_registry__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(97031);
591769
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(14918);
591770
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(21387);
591709
591771
 
591710
591772
 
591711
591773
  class RegistryService {
@@ -591715,9 +591777,9 @@ class RegistryService {
591715
591777
  fileRegistryWatcher;
591716
591778
  registry = null;
591717
591779
  lastRefresh = Date.now();
591718
- refreshPromise = null;
591719
591780
  isDirty = false;
591720
591781
  isWatcherActive = false;
591782
+ registryRefresh = new _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_0__/* .LazyAsync */ .Ru(() => this.getRegistry());
591721
591783
  constructor(getRegistry, refreshInterval, logger, fileRegistryWatcher) {
591722
591784
  this.getRegistry = getRegistry;
591723
591785
  this.refreshInterval = refreshInterval;
@@ -591725,21 +591787,28 @@ class RegistryService {
591725
591787
  this.fileRegistryWatcher = fileRegistryWatcher;
591726
591788
  }
591727
591789
  async initialize() {
591728
- this.registry = await this.getRegistry();
591790
+ try {
591791
+ this.registry = await this.registryRefresh.get();
591792
+ this.lastRefresh = Date.now();
591793
+ }
591794
+ catch (err) {
591795
+ this.logger.error({ err }, 'Registry initialization failed');
591796
+ throw err;
591797
+ }
591729
591798
  this.startWatching();
591730
591799
  }
591731
591800
  getFileSystemRegistryUri() {
591732
591801
  if (!this.registry)
591733
591802
  return null;
591734
- if (this.registry.type === _hyperlane_xyz_registry__WEBPACK_IMPORTED_MODULE_0__/* .RegistryType */ .o.FileSystem) {
591803
+ if (this.registry.type === _hyperlane_xyz_registry__WEBPACK_IMPORTED_MODULE_1__/* .RegistryType */ .o.FileSystem) {
591735
591804
  return this.registry.uri;
591736
591805
  }
591737
- if (this.registry.type === _hyperlane_xyz_registry__WEBPACK_IMPORTED_MODULE_0__/* .RegistryType */ .o.Merged) {
591806
+ if (this.registry.type === _hyperlane_xyz_registry__WEBPACK_IMPORTED_MODULE_1__/* .RegistryType */ .o.Merged) {
591738
591807
  // Return the first FileSystem registry within a MergedRegistry
591739
591808
  // TODO: Add support for multiple File registries when needed
591740
591809
  // We should also consider using a better watcher for performances reasons
591741
591810
  const merged = this.registry;
591742
- const fsRegistry = merged.registries.find((r) => r.type === _hyperlane_xyz_registry__WEBPACK_IMPORTED_MODULE_0__/* .RegistryType */ .o.FileSystem);
591811
+ const fsRegistry = merged.registries.find((r) => r.type === _hyperlane_xyz_registry__WEBPACK_IMPORTED_MODULE_1__/* .RegistryType */ .o.FileSystem);
591743
591812
  return fsRegistry?.uri ?? null;
591744
591813
  }
591745
591814
  return null;
@@ -591776,21 +591845,19 @@ class RegistryService {
591776
591845
  now - this.lastRefresh > this.refreshInterval) ||
591777
591846
  !this.registry;
591778
591847
  if (shouldRefresh) {
591779
- if (this.refreshPromise) {
591780
- return this.refreshPromise;
591781
- }
591782
591848
  this.logger.info('Refreshing registry cache...');
591783
- this.refreshPromise = this.getRegistry();
591849
+ this.registryRefresh.reset();
591784
591850
  try {
591785
- this.registry = await this.refreshPromise;
591851
+ this.registry = await this.registryRefresh.get();
591786
591852
  this.isDirty = false;
591787
591853
  this.lastRefresh = now;
591788
591854
  }
591789
- finally {
591790
- this.refreshPromise = null;
591855
+ catch (err) {
591856
+ this.logger.error({ err }, 'Registry refresh failed');
591857
+ throw err;
591791
591858
  }
591792
591859
  }
591793
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_1__/* .assert */ .v)(this.registry, 'Could not fetch current registry');
591860
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_2__/* .assert */ .v)(this.registry, 'Could not fetch current registry');
591794
591861
  return this.registry;
591795
591862
  }
591796
591863
  async withRegistry(operation) {
@@ -630845,6 +630912,12 @@ class RadixProvider {
630845
630912
  manifest: await getCreateValidatorAnnounceTx(this.base, req.signer, req.mailboxAddress),
630846
630913
  };
630847
630914
  }
630915
+ async getCreateProxyAdminTransaction(_req) {
630916
+ throw new Error('ProxyAdmin is not supported on Radix');
630917
+ }
630918
+ async getSetProxyAdminOwnerTransaction(_req) {
630919
+ throw new Error('ProxyAdmin is not supported on Radix');
630920
+ }
630848
630921
  // ### GET WARP TXS ###
630849
630922
  async getCreateNativeTokenTransaction(_req) {
630850
630923
  throw new Error(`Native Token is not supported on Radix`);
@@ -631170,6 +631243,9 @@ class RadixSigner extends RadixProvider {
631170
631243
  }
631171
631244
  // ### TX CORE ###
631172
631245
  async createMailbox(req) {
631246
+ if (req.proxyAdminAddress) {
631247
+ throw new Error('ProxyAdmin is not supported on Radix. Remove proxyAdmin from config.');
631248
+ }
631173
631249
  const transactionManifest = await getCreateMailboxTx(this.base, this.account.address, req.domainId);
631174
631250
  const receipt = await this.signer.signAndBroadcast(transactionManifest);
631175
631251
  const mailboxAddress = await this.base.getNewComponent(receipt);
@@ -631336,11 +631412,20 @@ class RadixSigner extends RadixProvider {
631336
631412
  validatorAnnounceId,
631337
631413
  };
631338
631414
  }
631415
+ async createProxyAdmin(_req) {
631416
+ throw new Error('ProxyAdmin is not supported on Radix');
631417
+ }
631418
+ async setProxyAdminOwner(_req) {
631419
+ throw new Error('ProxyAdmin is not supported on Radix');
631420
+ }
631339
631421
  // ### TX WARP ###
631340
631422
  async createNativeToken(_req) {
631341
631423
  throw new Error(`Native Token is not supported on Radix`);
631342
631424
  }
631343
631425
  async createCollateralToken(req) {
631426
+ if (req.proxyAdminAddress) {
631427
+ throw new Error('ProxyAdmin is not supported on Radix. Remove proxyAdmin from config.');
631428
+ }
631344
631429
  return {
631345
631430
  tokenAddress: await this.tx.warp.createCollateralToken({
631346
631431
  mailbox: req.mailboxAddress,
@@ -631349,6 +631434,9 @@ class RadixSigner extends RadixProvider {
631349
631434
  };
631350
631435
  }
631351
631436
  async createSyntheticToken(req) {
631437
+ if (req.proxyAdminAddress) {
631438
+ throw new Error('ProxyAdmin is not supported on Radix. Remove proxyAdmin from config.');
631439
+ }
631352
631440
  return {
631353
631441
  tokenAddress: await this.tx.warp.createSyntheticToken({
631354
631442
  mailbox: req.mailboxAddress,
@@ -644802,8 +644890,9 @@ async function getImplementationInput({ bytecode, chainName, contractName, imple
644802
644890
  /***/ }),
644803
644891
 
644804
644892
  /***/ 38231:
644805
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
644893
+ /***/ ((__webpack_module__, __webpack_exports__, __nccwpck_require__) => {
644806
644894
 
644895
+ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
644807
644896
  /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
644808
644897
  /* harmony export */ $: () => (/* binding */ executeWarpDeploy),
644809
644898
  /* harmony export */ A: () => (/* binding */ enrollCrossChainRouters)
@@ -644830,6 +644919,8 @@ async function getImplementationInput({ bytecode, chainName, contractName, imple
644830
644919
  /* harmony import */ var _utils_ism_js__WEBPACK_IMPORTED_MODULE_14__ = __nccwpck_require__(764);
644831
644920
  /* harmony import */ var _HyperlaneProxyFactoryDeployer_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(84387);
644832
644921
  /* harmony import */ var _verify_ContractVerifier_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(76939);
644922
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_token_EvmWarpModule_js__WEBPACK_IMPORTED_MODULE_20__]);
644923
+ _token_EvmWarpModule_js__WEBPACK_IMPORTED_MODULE_20__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
644833
644924
 
644834
644925
 
644835
644926
 
@@ -645116,6 +645207,8 @@ function getRouter(contracts) {
645116
645207
  throw new Error('No matching contract found.');
645117
645208
  }
645118
645209
  //# sourceMappingURL=warp.js.map
645210
+ __webpack_async_result__();
645211
+ } catch(e) { __webpack_async_result__(e); } });
645119
645212
 
645120
645213
  /***/ }),
645121
645214
 
@@ -693300,38 +693393,42 @@ const GasRouterConfigSchema = RouterConfigSchema.extend({
693300
693393
  /***/ }),
693301
693394
 
693302
693395
  /***/ 48807:
693303
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
693396
+ /***/ ((__webpack_module__, __webpack_exports__, __nccwpck_require__) => {
693304
693397
 
693398
+ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
693305
693399
  /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
693306
693400
  /* harmony export */ N: () => (/* binding */ EvmWarpModule)
693307
693401
  /* harmony export */ });
693308
- /* harmony import */ var compare_versions__WEBPACK_IMPORTED_MODULE_24__ = __nccwpck_require__(95416);
693309
- /* harmony import */ var ethers__WEBPACK_IMPORTED_MODULE_20__ = __nccwpck_require__(61934);
693402
+ /* harmony import */ var compare_versions__WEBPACK_IMPORTED_MODULE_25__ = __nccwpck_require__(95416);
693403
+ /* harmony import */ var ethers__WEBPACK_IMPORTED_MODULE_21__ = __nccwpck_require__(61934);
693310
693404
  /* harmony import */ var starknet__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(98954);
693311
693405
  /* harmony import */ var _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(71711);
693312
693406
  /* harmony import */ var _hyperlane_xyz_core_buildArtifact_js__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(74119);
693313
693407
  /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(73938);
693314
693408
  /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(93142);
693315
693409
  /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(94523);
693316
- /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_12__ = __nccwpck_require__(21387);
693317
- /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__ = __nccwpck_require__(52193);
693318
- /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_15__ = __nccwpck_require__(73689);
693410
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__ = __nccwpck_require__(21387);
693411
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_14__ = __nccwpck_require__(52193);
693412
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_16__ = __nccwpck_require__(73689);
693319
693413
  /* harmony import */ var _block_explorer_etherscan_js__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(26492);
693320
- /* harmony import */ var _contracts_contracts_js__WEBPACK_IMPORTED_MODULE_21__ = __nccwpck_require__(15570);
693414
+ /* harmony import */ var _contracts_contracts_js__WEBPACK_IMPORTED_MODULE_22__ = __nccwpck_require__(15570);
693321
693415
  /* harmony import */ var _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(53387);
693322
- /* harmony import */ var _deploy_proxy_js__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(83697);
693416
+ /* harmony import */ var _deploy_proxy_js__WEBPACK_IMPORTED_MODULE_12__ = __nccwpck_require__(83697);
693323
693417
  /* harmony import */ var _deploy_verify_ContractVerifier_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(76939);
693324
- /* harmony import */ var _fee_EvmTokenFeeModule_js__WEBPACK_IMPORTED_MODULE_19__ = __nccwpck_require__(43313);
693325
- /* harmony import */ var _hook_updates_js__WEBPACK_IMPORTED_MODULE_16__ = __nccwpck_require__(69203);
693326
- /* harmony import */ var _ism_EvmIsmModule_js__WEBPACK_IMPORTED_MODULE_22__ = __nccwpck_require__(3612);
693327
- /* harmony import */ var _router_types_js__WEBPACK_IMPORTED_MODULE_14__ = __nccwpck_require__(38230);
693328
- /* harmony import */ var _utils_ism_js__WEBPACK_IMPORTED_MODULE_17__ = __nccwpck_require__(764);
693329
- /* harmony import */ var _EvmWarpRouteReader_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(98362);
693330
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_23__ = __nccwpck_require__(4169);
693331
- /* harmony import */ var _configUtils_js__WEBPACK_IMPORTED_MODULE_18__ = __nccwpck_require__(63776);
693332
- /* harmony import */ var _contracts_js__WEBPACK_IMPORTED_MODULE_26__ = __nccwpck_require__(81504);
693333
- /* harmony import */ var _deploy_js__WEBPACK_IMPORTED_MODULE_25__ = __nccwpck_require__(90162);
693418
+ /* harmony import */ var _fee_EvmTokenFeeModule_js__WEBPACK_IMPORTED_MODULE_20__ = __nccwpck_require__(43313);
693419
+ /* harmony import */ var _hook_updates_js__WEBPACK_IMPORTED_MODULE_17__ = __nccwpck_require__(69203);
693420
+ /* harmony import */ var _ism_EvmIsmModule_js__WEBPACK_IMPORTED_MODULE_23__ = __nccwpck_require__(3612);
693421
+ /* harmony import */ var _router_types_js__WEBPACK_IMPORTED_MODULE_15__ = __nccwpck_require__(38230);
693422
+ /* harmony import */ var _utils_ism_js__WEBPACK_IMPORTED_MODULE_18__ = __nccwpck_require__(764);
693423
+ /* harmony import */ var _EvmWarpRouteReader_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(40945);
693424
+ /* harmony import */ var _EvmXERC20Module_js__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(5715);
693425
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_24__ = __nccwpck_require__(4169);
693426
+ /* harmony import */ var _configUtils_js__WEBPACK_IMPORTED_MODULE_19__ = __nccwpck_require__(63776);
693427
+ /* harmony import */ var _contracts_js__WEBPACK_IMPORTED_MODULE_27__ = __nccwpck_require__(81504);
693428
+ /* harmony import */ var _deploy_js__WEBPACK_IMPORTED_MODULE_26__ = __nccwpck_require__(90162);
693334
693429
  /* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(38466);
693430
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_EvmXERC20Module_js__WEBPACK_IMPORTED_MODULE_11__]);
693431
+ _EvmXERC20Module_js__WEBPACK_IMPORTED_MODULE_11__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
693335
693432
  // import { expect } from 'chai';
693336
693433
 
693337
693434
 
@@ -693353,6 +693450,7 @@ const GasRouterConfigSchema = RouterConfigSchema.extend({
693353
693450
 
693354
693451
 
693355
693452
 
693453
+
693356
693454
 
693357
693455
 
693358
693456
  const getAllowedRebalancingBridgesByDomain = (allowedRebalancingBridgesByDomain) => {
@@ -693402,13 +693500,18 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693402
693500
  _types_js__WEBPACK_IMPORTED_MODULE_10__/* .HypTokenRouterConfigSchema */ .db.parse(expectedConfig);
693403
693501
  const actualConfig = await this.read();
693404
693502
  const transactions = [];
693503
+ let xerc20Txs = [];
693504
+ if ((0,_types_js__WEBPACK_IMPORTED_MODULE_10__/* .isXERC20TokenConfig */ .Kh)(expectedConfig)) {
693505
+ const { module, config } = await _EvmXERC20Module_js__WEBPACK_IMPORTED_MODULE_11__/* .EvmXERC20Module */ .J.fromWarpRouteConfig(this.multiProvider, this.chainName, expectedConfig, this.args.addresses.deployedTokenRoute);
693506
+ xerc20Txs = await module.update(config);
693507
+ }
693405
693508
  /**
693406
693509
  * @remark
693407
693510
  * The order of operations matter
693408
693511
  * 1. createOwnershipUpdateTxs() must always be LAST because no updates possible after ownership transferred
693409
693512
  * 2. createRemoteRoutersUpdateTxs() must always be BEFORE createSetDestinationGasUpdateTxs() because gas enumeration depends on domains
693410
693513
  */
693411
- transactions.push(...(await this.upgradeWarpRouteImplementationTx(actualConfig, expectedConfig)), ...(await this.createIsmUpdateTxs(actualConfig, expectedConfig)), ...(await this.createHookUpdateTxs(actualConfig, expectedConfig)), ...(await this.createTokenFeeUpdateTxs(actualConfig, expectedConfig, tokenReaderParams)), ...this.createEnrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig), ...this.createUnenrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig), ...this.createSetDestinationGasUpdateTxs(actualConfig, expectedConfig), ...this.createAddRebalancersUpdateTxs(actualConfig, expectedConfig), ...this.createRemoveRebalancersUpdateTxs(actualConfig, expectedConfig), ...(await this.createAddAllowedBridgesUpdateTxs(actualConfig, expectedConfig)), ...this.createRemoveBridgesTxs(actualConfig, expectedConfig), ...this.createAddRemoteOutputAssetsTxs(actualConfig, expectedConfig), ...this.createRemoveRemoteOutputAssetsTxs(actualConfig, expectedConfig), ...this.createUpdateEverclearFeeParamsTxs(actualConfig, expectedConfig), ...this.createRemoveEverclearFeeParamsTxs(actualConfig, expectedConfig), ...this.createOwnershipUpdateTxs(actualConfig, expectedConfig), ...(0,_deploy_proxy_js__WEBPACK_IMPORTED_MODULE_11__/* .proxyAdminUpdateTxs */ .CK)(this.chainId, this.args.addresses.deployedTokenRoute, actualConfig, expectedConfig));
693514
+ transactions.push(...(await this.upgradeWarpRouteImplementationTx(actualConfig, expectedConfig)), ...(await this.createIsmUpdateTxs(actualConfig, expectedConfig)), ...(await this.createHookUpdateTxs(actualConfig, expectedConfig)), ...(await this.createTokenFeeUpdateTxs(actualConfig, expectedConfig, tokenReaderParams)), ...this.createEnrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig), ...this.createUnenrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig), ...this.createSetDestinationGasUpdateTxs(actualConfig, expectedConfig), ...this.createAddRebalancersUpdateTxs(actualConfig, expectedConfig), ...this.createRemoveRebalancersUpdateTxs(actualConfig, expectedConfig), ...(await this.createAddAllowedBridgesUpdateTxs(actualConfig, expectedConfig)), ...this.createRemoveBridgesTxs(actualConfig, expectedConfig), ...this.createAddRemoteOutputAssetsTxs(actualConfig, expectedConfig), ...this.createRemoveRemoteOutputAssetsTxs(actualConfig, expectedConfig), ...this.createUpdateEverclearFeeParamsTxs(actualConfig, expectedConfig), ...this.createRemoveEverclearFeeParamsTxs(actualConfig, expectedConfig), ...xerc20Txs, ...this.createOwnershipUpdateTxs(actualConfig, expectedConfig), ...(0,_deploy_proxy_js__WEBPACK_IMPORTED_MODULE_12__/* .proxyAdminUpdateTxs */ .CK)(this.chainId, this.args.addresses.deployedTokenRoute, actualConfig, expectedConfig));
693412
693515
  return transactions;
693413
693516
  }
693414
693517
  /**
@@ -693423,8 +693526,8 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693423
693526
  if (!expectedConfig.remoteRouters) {
693424
693527
  return [];
693425
693528
  }
693426
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_12__/* .assert */ .v)(actualConfig.remoteRouters, 'actualRemoteRouters is undefined');
693427
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_12__/* .assert */ .v)(expectedConfig.remoteRouters, 'actualRemoteRouters is undefined');
693529
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .assert */ .v)(actualConfig.remoteRouters, 'actualRemoteRouters is undefined');
693530
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .assert */ .v)(expectedConfig.remoteRouters, 'actualRemoteRouters is undefined');
693428
693531
  const { remoteRouters: actualRemoteRouters } = actualConfig;
693429
693532
  const { remoteRouters: expectedRemoteRouters } = expectedConfig;
693430
693533
  const routesToEnroll = Object.entries(expectedRemoteRouters)
@@ -693458,11 +693561,11 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693458
693561
  if (!expectedConfig.remoteRouters) {
693459
693562
  return [];
693460
693563
  }
693461
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_12__/* .assert */ .v)(actualConfig.remoteRouters, 'actualRemoteRouters is undefined');
693462
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_12__/* .assert */ .v)(expectedConfig.remoteRouters, 'actualRemoteRouters is undefined');
693564
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .assert */ .v)(actualConfig.remoteRouters, 'actualRemoteRouters is undefined');
693565
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .assert */ .v)(expectedConfig.remoteRouters, 'actualRemoteRouters is undefined');
693463
693566
  const { remoteRouters: actualRemoteRouters } = actualConfig;
693464
693567
  const { remoteRouters: expectedRemoteRouters } = expectedConfig;
693465
- const routesToUnenroll = Array.from((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .difference */ .iv)(new Set(Object.keys(actualRemoteRouters)), new Set(Object.keys(expectedRemoteRouters))));
693568
+ const routesToUnenroll = Array.from((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_14__/* .difference */ .iv)(new Set(Object.keys(actualRemoteRouters)), new Set(Object.keys(expectedRemoteRouters))));
693466
693569
  if (routesToUnenroll.length === 0) {
693467
693570
  return updateTransactions;
693468
693571
  }
@@ -693486,7 +693589,7 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693486
693589
  }
693487
693590
  const formattedExpectedRebalancers = new Set(expectedConfig.allowedRebalancers.map(_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__/* .normalizeAddressEvm */ .Ek));
693488
693591
  const formattedActualRebalancers = new Set((actualConfig.allowedRebalancers ?? []).map(_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__/* .normalizeAddressEvm */ .Ek));
693489
- const rebalancersToAdd = Array.from((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .difference */ .iv)(formattedExpectedRebalancers, formattedActualRebalancers));
693592
+ const rebalancersToAdd = Array.from((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_14__/* .difference */ .iv)(formattedExpectedRebalancers, formattedActualRebalancers));
693490
693593
  if (rebalancersToAdd.length === 0) {
693491
693594
  return [];
693492
693595
  }
@@ -693508,7 +693611,7 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693508
693611
  }
693509
693612
  const formattedExpectedRebalancers = new Set(expectedConfig.allowedRebalancers.map(_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__/* .normalizeAddressEvm */ .Ek));
693510
693613
  const formattedActualRebalancers = new Set((actualConfig.allowedRebalancers ?? []).map(_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__/* .normalizeAddressEvm */ .Ek));
693511
- const rebalancersToRemove = Array.from((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .difference */ .iv)(formattedActualRebalancers, formattedExpectedRebalancers));
693614
+ const rebalancersToRemove = Array.from((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_14__/* .difference */ .iv)(formattedActualRebalancers, formattedExpectedRebalancers));
693512
693615
  if (rebalancersToRemove.length === 0) {
693513
693616
  return [];
693514
693617
  }
@@ -693562,11 +693665,11 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693562
693665
  if (!expectedConfig.allowedRebalancingBridges) {
693563
693666
  return [];
693564
693667
  }
693565
- const actualAllowedBridges = getAllowedRebalancingBridgesByDomain((0,_router_types_js__WEBPACK_IMPORTED_MODULE_14__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, actualConfig.allowedRebalancingBridges ?? {}));
693566
- const expectedAllowedBridges = getAllowedRebalancingBridgesByDomain((0,_router_types_js__WEBPACK_IMPORTED_MODULE_14__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, expectedConfig.allowedRebalancingBridges));
693668
+ const actualAllowedBridges = getAllowedRebalancingBridgesByDomain((0,_router_types_js__WEBPACK_IMPORTED_MODULE_15__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, actualConfig.allowedRebalancingBridges ?? {}));
693669
+ const expectedAllowedBridges = getAllowedRebalancingBridgesByDomain((0,_router_types_js__WEBPACK_IMPORTED_MODULE_15__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, expectedConfig.allowedRebalancingBridges));
693567
693670
  const rebalancingBridgesToAddByDomain = (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .objMap */ .Yp)(expectedAllowedBridges, (domain, bridges) => {
693568
693671
  const actualBridges = actualAllowedBridges[domain] ?? new Set();
693569
- return Array.from((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .difference */ .iv)(bridges, actualBridges));
693672
+ return Array.from((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_14__/* .difference */ .iv)(bridges, actualBridges));
693570
693673
  });
693571
693674
  const bridgesToAllow = Object.entries(rebalancingBridgesToAddByDomain).flatMap(([domain, allowedBridgesToAdd]) => {
693572
693675
  return allowedBridgesToAdd.map((bridgeToAdd) => {
@@ -693589,11 +693692,11 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693589
693692
  if (!expectedConfig.allowedRebalancingBridges) {
693590
693693
  return [];
693591
693694
  }
693592
- const actualAllowedBridges = getAllowedRebalancingBridgesByDomain((0,_router_types_js__WEBPACK_IMPORTED_MODULE_14__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, actualConfig.allowedRebalancingBridges ?? {}));
693593
- const expectedAllowedBridges = getAllowedRebalancingBridgesByDomain((0,_router_types_js__WEBPACK_IMPORTED_MODULE_14__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, expectedConfig.allowedRebalancingBridges));
693695
+ const actualAllowedBridges = getAllowedRebalancingBridgesByDomain((0,_router_types_js__WEBPACK_IMPORTED_MODULE_15__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, actualConfig.allowedRebalancingBridges ?? {}));
693696
+ const expectedAllowedBridges = getAllowedRebalancingBridgesByDomain((0,_router_types_js__WEBPACK_IMPORTED_MODULE_15__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, expectedConfig.allowedRebalancingBridges));
693594
693697
  const rebalancingBridgesToAddByDomain = (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .objMap */ .Yp)(actualAllowedBridges, (domain, bridges) => {
693595
693698
  const expectedBridges = expectedAllowedBridges[domain] ?? new Set();
693596
- return Array.from((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .difference */ .iv)(bridges, expectedBridges));
693699
+ return Array.from((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_14__/* .difference */ .iv)(bridges, expectedBridges));
693597
693700
  });
693598
693701
  return Object.entries(rebalancingBridgesToAddByDomain).flatMap(([domain, allowedBridgesToAdd]) => {
693599
693702
  return allowedBridgesToAdd.map((bridgeToAdd) => {
@@ -693611,8 +693714,8 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693611
693714
  !(0,_types_js__WEBPACK_IMPORTED_MODULE_10__/* .isEverclearTokenBridgeConfig */ .e6)(actualConfig)) {
693612
693715
  return [];
693613
693716
  }
693614
- const actualOutputAssets = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_14__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, actualConfig.outputAssets);
693615
- const expectedOutputAssets = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_14__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, expectedConfig.outputAssets);
693717
+ const actualOutputAssets = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_15__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, actualConfig.outputAssets);
693718
+ const expectedOutputAssets = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_15__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, expectedConfig.outputAssets);
693616
693719
  const outputAssetsToAdd = (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .objDiff */ .bJ)(expectedOutputAssets, actualOutputAssets, (address, address2) => (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__/* .addressToBytes32 */ .In)(address) === (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__/* .addressToBytes32 */ .In)(address2));
693617
693720
  if ((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .isObjEmpty */ .XY)(outputAssetsToAdd)) {
693618
693721
  return [];
@@ -693635,9 +693738,9 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693635
693738
  !(0,_types_js__WEBPACK_IMPORTED_MODULE_10__/* .isEverclearTokenBridgeConfig */ .e6)(actualConfig)) {
693636
693739
  return [];
693637
693740
  }
693638
- const actualOutputAssets = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_14__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, actualConfig.outputAssets);
693639
- const expectedOutputAssets = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_14__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, expectedConfig.outputAssets);
693640
- const outputAssetsToRemove = Array.from((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .difference */ .iv)(new Set((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .objKeys */ .cG)(actualOutputAssets)), new Set((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .objKeys */ .cG)(expectedOutputAssets))));
693741
+ const actualOutputAssets = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_15__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, actualConfig.outputAssets);
693742
+ const expectedOutputAssets = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_15__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, expectedConfig.outputAssets);
693743
+ const outputAssetsToRemove = Array.from((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_14__/* .difference */ .iv)(new Set((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .objKeys */ .cG)(actualOutputAssets)), new Set((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .objKeys */ .cG)(expectedOutputAssets))));
693641
693744
  if (outputAssetsToRemove.length === 0) {
693642
693745
  return [];
693643
693746
  }
@@ -693662,10 +693765,10 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693662
693765
  if ((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .deepEquals */ .c2)(expectedConfig.everclearFeeParams, actualConfig.everclearFeeParams)) {
693663
693766
  return [];
693664
693767
  }
693665
- const resolvedEverclearExpectedFeeConfig = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_14__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, expectedConfig.everclearFeeParams);
693666
- const resolvedActualEverclearFeeConfig = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_14__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, actualConfig.everclearFeeParams);
693768
+ const resolvedEverclearExpectedFeeConfig = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_15__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, expectedConfig.everclearFeeParams);
693769
+ const resolvedActualEverclearFeeConfig = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_15__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, actualConfig.everclearFeeParams);
693667
693770
  const feesToSet = (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .objFilter */ .s3)(resolvedEverclearExpectedFeeConfig, (domainId, currentDomainConfig) => {
693668
- return ((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_15__/* .isNullish */ .u)(resolvedActualEverclearFeeConfig[Number(domainId)]) ||
693771
+ return ((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_16__/* .isNullish */ .u)(resolvedActualEverclearFeeConfig[Number(domainId)]) ||
693669
693772
  !(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .deepEquals */ .c2)(currentDomainConfig, resolvedActualEverclearFeeConfig[Number(domainId)]));
693670
693773
  });
693671
693774
  return Object.entries(feesToSet).map(([domainId, feeConfig]) => {
@@ -693685,9 +693788,9 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693685
693788
  !(0,_types_js__WEBPACK_IMPORTED_MODULE_10__/* .isEverclearTokenBridgeConfig */ .e6)(actualConfig)) {
693686
693789
  return [];
693687
693790
  }
693688
- const resolvedEverclearExpectedFeeConfig = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_14__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, expectedConfig.everclearFeeParams);
693689
- const resolvedActualEverclearFeeConfig = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_14__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, actualConfig.everclearFeeParams);
693690
- const outputAssetsToRemove = Array.from((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .difference */ .iv)(new Set((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .objKeys */ .cG)(resolvedActualEverclearFeeConfig)), new Set((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .objKeys */ .cG)(resolvedEverclearExpectedFeeConfig))));
693791
+ const resolvedEverclearExpectedFeeConfig = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_15__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, expectedConfig.everclearFeeParams);
693792
+ const resolvedActualEverclearFeeConfig = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_15__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, actualConfig.everclearFeeParams);
693793
+ const outputAssetsToRemove = Array.from((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_14__/* .difference */ .iv)(new Set((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .objKeys */ .cG)(resolvedActualEverclearFeeConfig)), new Set((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .objKeys */ .cG)(resolvedEverclearExpectedFeeConfig))));
693691
693794
  if (outputAssetsToRemove.length === 0) {
693692
693795
  return [];
693693
693796
  }
@@ -693714,10 +693817,10 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693714
693817
  if (!expectedConfig.destinationGas) {
693715
693818
  return [];
693716
693819
  }
693717
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_12__/* .assert */ .v)(actualConfig.destinationGas, 'actualDestinationGas is undefined');
693718
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_12__/* .assert */ .v)(expectedConfig.destinationGas, 'expectedDestinationGas is undefined');
693719
- const actualDestinationGas = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_14__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, actualConfig.destinationGas);
693720
- const expectedDestinationGas = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_14__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, expectedConfig.destinationGas);
693820
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .assert */ .v)(actualConfig.destinationGas, 'actualDestinationGas is undefined');
693821
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .assert */ .v)(expectedConfig.destinationGas, 'expectedDestinationGas is undefined');
693822
+ const actualDestinationGas = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_15__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, actualConfig.destinationGas);
693823
+ const expectedDestinationGas = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_15__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, expectedConfig.destinationGas);
693721
693824
  if (!(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .deepEquals */ .c2)(actualDestinationGas, expectedDestinationGas)) {
693722
693825
  const contractToUpdate = _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_1__/* .GasRouter__factory */ .rFD.connect(this.args.addresses.deployedTokenRoute, this.multiProvider.getProvider(this.domainId));
693723
693826
  // Convert { 1: 2, 2: 3, ... } to [{ 1: 2 }, { 2: 3 }]
@@ -693771,14 +693874,14 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693771
693874
  return [];
693772
693875
  }
693773
693876
  const proxyAdminAddress = expectedConfig.proxyAdmin?.address ?? actualConfig.proxyAdmin?.address;
693774
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_12__/* .assert */ .v)(proxyAdminAddress, 'ProxyAdmin address is undefined');
693775
- return (0,_hook_updates_js__WEBPACK_IMPORTED_MODULE_16__/* .getEvmHookUpdateTransactions */ .m)(this.args.addresses.deployedTokenRoute, {
693877
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .assert */ .v)(proxyAdminAddress, 'ProxyAdmin address is undefined');
693878
+ return (0,_hook_updates_js__WEBPACK_IMPORTED_MODULE_17__/* .getEvmHookUpdateTransactions */ .m)(this.args.addresses.deployedTokenRoute, {
693776
693879
  actualConfig: actualConfig.hook,
693777
693880
  expectedConfig: expectedConfig.hook,
693778
693881
  ccipContractCache: this.ccipContractCache,
693779
693882
  contractVerifier: this.contractVerifier,
693780
693883
  evmChainName: this.chainName,
693781
- hookAndIsmFactories: (0,_utils_ism_js__WEBPACK_IMPORTED_MODULE_17__/* .extractIsmAndHookFactoryAddresses */ .zs)(this.args.addresses),
693884
+ hookAndIsmFactories: (0,_utils_ism_js__WEBPACK_IMPORTED_MODULE_18__/* .extractIsmAndHookFactoryAddresses */ .zs)(this.args.addresses),
693782
693885
  setHookFunctionCallEncoder: (newHookAddress) => _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_1__/* .MailboxClient__factory */ .mG7.createInterface().encodeFunctionData('setHook', [newHookAddress]),
693783
693886
  logger: this.logger,
693784
693887
  mailbox: actualConfig.mailbox,
@@ -693798,16 +693901,16 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693798
693901
  return [];
693799
693902
  }
693800
693903
  const routerAddress = this.args.addresses.deployedTokenRoute;
693801
- const resolvedTokenFee = (0,_configUtils_js__WEBPACK_IMPORTED_MODULE_18__/* .resolveTokenFeeAddress */ .i0)(expectedConfig.tokenFee, routerAddress, expectedConfig);
693904
+ const resolvedTokenFee = (0,_configUtils_js__WEBPACK_IMPORTED_MODULE_19__/* .resolveTokenFeeAddress */ .i0)(expectedConfig.tokenFee, routerAddress, expectedConfig);
693802
693905
  const currentTokenFee = actualConfig.tokenFee;
693803
693906
  if (!currentTokenFee) {
693804
693907
  this.logger.info('No existing token fee found, creating new one');
693805
- const expandedExpectedConfig = await _fee_EvmTokenFeeModule_js__WEBPACK_IMPORTED_MODULE_19__/* .EvmTokenFeeModule */ .e.expandConfig({
693908
+ const expandedExpectedConfig = await _fee_EvmTokenFeeModule_js__WEBPACK_IMPORTED_MODULE_20__/* .EvmTokenFeeModule */ .e.expandConfig({
693806
693909
  config: resolvedTokenFee,
693807
693910
  multiProvider: this.multiProvider,
693808
693911
  chainName: this.chainName,
693809
693912
  });
693810
- const tokenFeeModule = await _fee_EvmTokenFeeModule_js__WEBPACK_IMPORTED_MODULE_19__/* .EvmTokenFeeModule */ .e.create({
693913
+ const tokenFeeModule = await _fee_EvmTokenFeeModule_js__WEBPACK_IMPORTED_MODULE_20__/* .EvmTokenFeeModule */ .e.create({
693811
693914
  multiProvider: this.multiProvider,
693812
693915
  chain: this.chainName,
693813
693916
  config: expandedExpectedConfig,
@@ -693820,7 +693923,7 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693820
693923
  .feeRecipient()
693821
693924
  .catch((error) => {
693822
693925
  this.logger.warn(`Failed to read feeRecipient, defaulting to generate setFeeRecipient tx`, error);
693823
- return ethers__WEBPACK_IMPORTED_MODULE_20__.constants.AddressZero;
693926
+ return ethers__WEBPACK_IMPORTED_MODULE_21__.constants.AddressZero;
693824
693927
  });
693825
693928
  if ((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__/* .eqAddress */ .fv)(currentFeeRecipient, deployedFee)) {
693826
693929
  return [];
@@ -693835,7 +693938,7 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693835
693938
  ];
693836
693939
  }
693837
693940
  this.logger.info('Updating existing token fee configuration');
693838
- const tokenFeeModule = new _fee_EvmTokenFeeModule_js__WEBPACK_IMPORTED_MODULE_19__/* .EvmTokenFeeModule */ .e(this.multiProvider, {
693941
+ const tokenFeeModule = new _fee_EvmTokenFeeModule_js__WEBPACK_IMPORTED_MODULE_20__/* .EvmTokenFeeModule */ .e(this.multiProvider, {
693839
693942
  chain: this.chainName,
693840
693943
  config: currentTokenFee,
693841
693944
  addresses: {
@@ -693863,7 +693966,7 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693863
693966
  * @returns Ethereum transaction that need to be executed to update the owner.
693864
693967
  */
693865
693968
  createOwnershipUpdateTxs(actualConfig, expectedConfig) {
693866
- return (0,_contracts_contracts_js__WEBPACK_IMPORTED_MODULE_21__/* .transferOwnershipTransactions */ .Yg)(this.multiProvider.getEvmChainId(this.args.chain), this.args.addresses.deployedTokenRoute, actualConfig, expectedConfig, `${expectedConfig.type} Warp Route`);
693969
+ return (0,_contracts_contracts_js__WEBPACK_IMPORTED_MODULE_22__/* .transferOwnershipTransactions */ .Yg)(this.multiProvider.getEvmChainId(this.args.chain), this.args.addresses.deployedTokenRoute, actualConfig, expectedConfig, `${expectedConfig.type} Warp Route`);
693867
693970
  }
693868
693971
  /**
693869
693972
  * Updates or deploys the ISM using the provided configuration.
@@ -693871,7 +693974,7 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693871
693974
  * @returns Object with deployedIsm address, and update Transactions
693872
693975
  */
693873
693976
  async deployOrUpdateIsm(actualConfig, expectedConfig) {
693874
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_12__/* .assert */ .v)(expectedConfig.interchainSecurityModule, 'Ism derived incorrectly');
693977
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .assert */ .v)(expectedConfig.interchainSecurityModule, 'Ism derived incorrectly');
693875
693978
  if (typeof expectedConfig.interchainSecurityModule === 'string' &&
693876
693979
  (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__/* .isZeroishAddress */ .Hi)(expectedConfig.interchainSecurityModule)) {
693877
693980
  return {
@@ -693879,7 +693982,7 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693879
693982
  updateTransactions: [],
693880
693983
  };
693881
693984
  }
693882
- const ismModule = new _ism_EvmIsmModule_js__WEBPACK_IMPORTED_MODULE_22__/* .EvmIsmModule */ .a(this.multiProvider, {
693985
+ const ismModule = new _ism_EvmIsmModule_js__WEBPACK_IMPORTED_MODULE_23__/* .EvmIsmModule */ .a(this.multiProvider, {
693883
693986
  chain: this.args.chain,
693884
693987
  config: actualConfig.interchainSecurityModule,
693885
693988
  addresses: {
@@ -693902,15 +694005,15 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693902
694005
  */
693903
694006
  async upgradeWarpRouteImplementationTx(actualConfig, expectedConfig) {
693904
694007
  const updateTransactions = [];
693905
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_12__/* .assert */ .v)(expectedConfig.type !== _config_js__WEBPACK_IMPORTED_MODULE_23__/* .TokenType */ .ks.unknown, 'Cannot upgrade warp route with unknown token type');
694008
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .assert */ .v)(expectedConfig.type !== _config_js__WEBPACK_IMPORTED_MODULE_24__/* .TokenType */ .ks.unknown, 'Cannot upgrade warp route with unknown token type');
693906
694009
  // This should be impossible since we try catch the call to `PACKAGE_VERSION`
693907
694010
  // in `EvmWarpRouteReader.fetchPackageVersion`
693908
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_12__/* .assert */ .v)(actualConfig.contractVersion, 'Actual contract version is undefined');
694011
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .assert */ .v)(actualConfig.contractVersion, 'Actual contract version is undefined');
693909
694012
  // Only upgrade if the user specifies a version
693910
694013
  if (!expectedConfig.contractVersion) {
693911
694014
  return [];
693912
694015
  }
693913
- const comparisonValue = (0,compare_versions__WEBPACK_IMPORTED_MODULE_24__.compareVersions)(expectedConfig.contractVersion, actualConfig.contractVersion);
694016
+ const comparisonValue = (0,compare_versions__WEBPACK_IMPORTED_MODULE_25__.compareVersions)(expectedConfig.contractVersion, actualConfig.contractVersion);
693914
694017
  // Expected version is lower than actual version, no upgrade is possible
693915
694018
  if (comparisonValue === -1) {
693916
694019
  throw new Error(`Expected contract version ${expectedConfig.contractVersion} is lower than actual contract version ${actualConfig.contractVersion}`);
@@ -693921,16 +694024,16 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693921
694024
  }
693922
694025
  // You can only upgrade to the contract version (see `PackageVersioned`)
693923
694026
  // defined by the @hyperlane-xyz/core package
693924
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_12__/* .assert */ .v)((0,_types_js__WEBPACK_IMPORTED_MODULE_10__/* .contractVersionMatchesDependency */ .Vx)(expectedConfig.contractVersion), _types_js__WEBPACK_IMPORTED_MODULE_10__/* .VERSION_ERROR_MESSAGE */ .eh);
694027
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .assert */ .v)((0,_types_js__WEBPACK_IMPORTED_MODULE_10__/* .contractVersionMatchesDependency */ .Vx)(expectedConfig.contractVersion), _types_js__WEBPACK_IMPORTED_MODULE_10__/* .VERSION_ERROR_MESSAGE */ .eh);
693925
694028
  this.logger.info(`Upgrading Warp Route implementation on ${this.args.chain} from ${actualConfig.contractVersion} to ${expectedConfig.contractVersion}`);
693926
- const deployer = new _deploy_js__WEBPACK_IMPORTED_MODULE_25__/* .HypERC20Deployer */ .A7(this.multiProvider);
694029
+ const deployer = new _deploy_js__WEBPACK_IMPORTED_MODULE_26__/* .HypERC20Deployer */ .A7(this.multiProvider);
693927
694030
  const constructorArgs = await deployer.constructorArgs(this.chainName, expectedConfig);
693928
694031
  const tokenType = expectedConfig.type;
693929
- const implementation = await deployer.deployContractWithName(this.chainName, tokenType, _contracts_js__WEBPACK_IMPORTED_MODULE_26__/* .hypERC20contracts */ .LW[tokenType], constructorArgs, undefined, false);
694032
+ const implementation = await deployer.deployContractWithName(this.chainName, tokenType, _contracts_js__WEBPACK_IMPORTED_MODULE_27__/* .hypERC20contracts */ .LW[tokenType], constructorArgs, undefined, false);
693930
694033
  const provider = this.multiProvider.getProvider(this.domainId);
693931
694034
  const proxyAddress = this.args.addresses.deployedTokenRoute;
693932
- const proxyAdminAddress = await (0,_deploy_proxy_js__WEBPACK_IMPORTED_MODULE_11__/* .proxyAdmin */ .Ey)(provider, proxyAddress);
693933
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_12__/* .assert */ .v)(await (0,_deploy_proxy_js__WEBPACK_IMPORTED_MODULE_11__/* .isInitialized */ .Dp)(provider, proxyAddress), 'Proxy is not initialized');
694035
+ const proxyAdminAddress = await (0,_deploy_proxy_js__WEBPACK_IMPORTED_MODULE_12__/* .proxyAdmin */ .Ey)(provider, proxyAddress);
694036
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_13__/* .assert */ .v)(await (0,_deploy_proxy_js__WEBPACK_IMPORTED_MODULE_12__/* .isInitialized */ .Dp)(provider, proxyAddress), 'Proxy is not initialized');
693934
694037
  updateTransactions.push({
693935
694038
  chainId: this.chainId,
693936
694039
  annotation: `Upgrading Warp Route implementation on ${this.args.chain}`,
@@ -693950,7 +694053,7 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693950
694053
  static async create(params) {
693951
694054
  const { chain, config, multiProvider, ccipContractCache, contractVerifier, proxyFactoryFactories, } = params;
693952
694055
  const chainName = multiProvider.getChainName(chain);
693953
- const deployer = new _deploy_js__WEBPACK_IMPORTED_MODULE_25__/* .HypERC20Deployer */ .A7(multiProvider);
694056
+ const deployer = new _deploy_js__WEBPACK_IMPORTED_MODULE_26__/* .HypERC20Deployer */ .A7(multiProvider);
693954
694057
  const deployedContracts = await deployer.deployContracts(chainName, config);
693955
694058
  const warpModule = new EvmWarpModule(multiProvider, {
693956
694059
  addresses: {
@@ -693997,10 +694100,12 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
693997
694100
  }
693998
694101
  }
693999
694102
  //# sourceMappingURL=EvmWarpModule.js.map
694103
+ __webpack_async_result__();
694104
+ } catch(e) { __webpack_async_result__(e); } });
694000
694105
 
694001
694106
  /***/ }),
694002
694107
 
694003
- /***/ 98362:
694108
+ /***/ 40945:
694004
694109
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
694005
694110
 
694006
694111
 
@@ -694059,193 +694164,8 @@ var proxy = __nccwpck_require__(83697);
694059
694164
  var token_config = __nccwpck_require__(4169);
694060
694165
  // EXTERNAL MODULE: ../sdk/dist/token/types.js
694061
694166
  var types = __nccwpck_require__(38466);
694062
- // EXTERNAL MODULE: ../../node_modules/.pnpm/viem@2.39.3_bufferutil@4.0.9_typescript@5.8.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/utils/hash/toEventSelector.js
694063
- var toEventSelector = __nccwpck_require__(83698);
694064
- // EXTERNAL MODULE: ../../node_modules/.pnpm/viem@2.39.3_bufferutil@4.0.9_typescript@5.8.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/utils/abi/getAbiItem.js
694065
- var getAbiItem = __nccwpck_require__(60613);
694066
- // EXTERNAL MODULE: ../../node_modules/.pnpm/viem@2.39.3_bufferutil@4.0.9_typescript@5.8.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/utils/abi/parseEventLogs.js
694067
- var parseEventLogs = __nccwpck_require__(94762);
694068
- ;// CONCATENATED MODULE: ../sdk/dist/rpc/evm/utils.js
694069
-
694070
- // calling getCode until the creation block is found
694071
- async function getContractCreationBlockFromRpc(chain, contractAddress, multiProvider) {
694072
- await assertIsContractAddress(multiProvider, chain, contractAddress);
694073
- const provider = multiProvider.getProvider(chain);
694074
- const latestBlock = await provider.getBlockNumber();
694075
- let low = 0;
694076
- let high = latestBlock;
694077
- let creationBlock = latestBlock;
694078
- while (low <= high) {
694079
- const mid = Math.floor((low + high) / 2);
694080
- const isContract = await isContractAddress(multiProvider, chain, contractAddress, mid);
694081
- if (isContract) {
694082
- creationBlock = mid;
694083
- high = mid - 1;
694084
- }
694085
- else {
694086
- low = mid + 1;
694087
- }
694088
- }
694089
- return creationBlock;
694090
- }
694091
- async function getLogsFromRpc({ chain, contractAddress, multiProvider, fromBlock, topic, toBlock, range = 500, }) {
694092
- const provider = multiProvider.getProvider(chain);
694093
- let currentStartBlock = fromBlock;
694094
- const endBlock = toBlock ?? (await provider.getBlockNumber());
694095
- const logs = [];
694096
- while (currentStartBlock <= endBlock) {
694097
- const currentEndBlock = currentStartBlock + range < endBlock
694098
- ? currentStartBlock + range
694099
- : endBlock;
694100
- const currentLogs = await provider.getLogs({
694101
- address: contractAddress,
694102
- fromBlock: currentStartBlock,
694103
- toBlock: currentEndBlock,
694104
- topics: [topic],
694105
- });
694106
- logs.push(...currentLogs);
694107
- // +1 because getLogs range is inclusive
694108
- currentStartBlock += range + 1;
694109
- }
694110
- return logs.map((rawLog) => {
694111
- return {
694112
- address: rawLog.address,
694113
- blockNumber: rawLog.blockNumber,
694114
- data: rawLog.data,
694115
- logIndex: rawLog.logIndex,
694116
- topics: rawLog.topics,
694117
- transactionHash: rawLog.transactionHash,
694118
- transactionIndex: rawLog.transactionIndex,
694119
- };
694120
- });
694121
- }
694122
- function viemLogFromGetEventLogsResponse(log) {
694123
- return {
694124
- address: log.address,
694125
- data: log.data,
694126
- blockNumber: BigInt(log.blockNumber),
694127
- transactionHash: log.transactionHash,
694128
- logIndex: Number(log.logIndex),
694129
- transactionIndex: Number(log.transactionIndex),
694130
- topics: log.topics,
694131
- blockHash: null,
694132
- removed: false,
694133
- };
694134
- }
694135
- //# sourceMappingURL=utils.js.map
694136
- ;// CONCATENATED MODULE: ../sdk/dist/token/xerc20.js
694137
-
694138
-
694139
-
694140
-
694141
-
694142
-
694143
- const minimalXERC20VSABI = [
694144
- {
694145
- anonymous: false,
694146
- inputs: [
694147
- {
694148
- indexed: true,
694149
- internalType: 'address',
694150
- name: 'bridge',
694151
- type: 'address',
694152
- },
694153
- {
694154
- indexed: false,
694155
- internalType: 'uint112',
694156
- name: 'bufferCap',
694157
- type: 'uint112',
694158
- },
694159
- {
694160
- indexed: false,
694161
- internalType: 'uint128',
694162
- name: 'rateLimitPerSecond',
694163
- type: 'uint128',
694164
- },
694165
- ],
694166
- name: 'ConfigurationChanged',
694167
- type: 'event',
694168
- },
694169
- ];
694170
- const CONFIGURATION_CHANGED_EVENT_SELECTOR = (0,toEventSelector/* toEventSelector */.h)((0,getAbiItem/* getAbiItem */.iY)({
694171
- abi: minimalXERC20VSABI,
694172
- name: 'ConfigurationChanged',
694173
- }));
694174
- async function getExtraLockBoxConfigs({ xERC20Address, chain, multiProvider, logger = logging/* rootLogger */.Jk, }) {
694175
- const explorer = multiProvider.tryGetEvmExplorerMetadata(chain);
694176
- if (!explorer) {
694177
- logger.warn(`No block explorer was configured correctly, skipping lockbox derivation on chain ${chain}`);
694178
- return [];
694179
- }
694180
- const logs = await getConfigurationChangedLogsFromExplorerApi({
694181
- chain,
694182
- multiProvider,
694183
- xERC20Address,
694184
- explorerUrl: explorer.apiUrl,
694185
- apiKey: explorer.apiKey,
694186
- });
694187
- const viemLogs = logs.map(viemLogFromGetEventLogsResponse);
694188
- return getLockboxesFromLogs(viemLogs, multiProvider.getProvider(chain), chain, logger);
694189
- }
694190
- async function getConfigurationChangedLogsFromExplorerApi({ xERC20Address, chain, multiProvider, explorerUrl, apiKey, }) {
694191
- const contractDeploymentTx = await (0,etherscan/* getContractDeploymentTransaction */.sG)({ apiUrl: explorerUrl, apiKey }, { contractAddress: xERC20Address });
694192
- const provider = multiProvider.getProvider(chain);
694193
- const [currentBlockNumber, deploymentTransactionReceipt] = await Promise.all([
694194
- provider.getBlockNumber(),
694195
- provider.getTransactionReceipt(contractDeploymentTx.txHash),
694196
- ]);
694197
- return (0,etherscan/* getLogsFromEtherscanLikeExplorerAPI */.Bf)({ apiUrl: explorerUrl, apiKey }, {
694198
- address: xERC20Address,
694199
- fromBlock: deploymentTransactionReceipt.blockNumber,
694200
- toBlock: currentBlockNumber,
694201
- topic0: CONFIGURATION_CHANGED_EVENT_SELECTOR,
694202
- });
694203
- }
694204
- async function getLockboxesFromLogs(logs, provider, chain, logger) {
694205
- const parsedLogs = (0,parseEventLogs/* parseEventLogs */.p)({
694206
- abi: minimalXERC20VSABI,
694207
- eventName: 'ConfigurationChanged',
694208
- logs,
694209
- });
694210
- // A bridge might appear more than once in the event logs, we are only
694211
- // interested in the most recent one for each bridge so we deduplicate
694212
- // entries here
694213
- const dedupedBridges = parsedLogs.reduce((acc, log) => {
694214
- const bridgeAddress = log.args.bridge;
694215
- const isMostRecentLogForBridge = log.blockNumber > (acc[bridgeAddress]?.blockNumber ?? 0n);
694216
- if (isMostRecentLogForBridge) {
694217
- acc[bridgeAddress] = log;
694218
- }
694219
- return acc;
694220
- }, {});
694221
- const lockboxPromises = Object.values(dedupedBridges)
694222
- // Removing bridges where the limits are set to 0 because it is equivalent of being deactivated
694223
- .filter((log) => log.args.bufferCap !== 0n && log.args.rateLimitPerSecond !== 0n)
694224
- .map(async (log) => {
694225
- try {
694226
- const maybeXERC20Lockbox = dist/* IXERC20Lockbox__factory */.Cns.connect(log.args.bridge, provider);
694227
- await maybeXERC20Lockbox.callStatic.XERC20();
694228
- return log;
694229
- }
694230
- catch {
694231
- logger.debug(`Contract at address ${log.args.bridge} on chain ${chain} is not a XERC20Lockbox contract.`);
694232
- return undefined;
694233
- }
694234
- });
694235
- const lockboxes = await Promise.all(lockboxPromises);
694236
- return lockboxes
694237
- .filter((log) => log !== undefined)
694238
- .map((log) => log)
694239
- .map((log) => ({
694240
- lockbox: log.args.bridge,
694241
- limits: {
694242
- type: types/* XERC20Type */.FT.Velo,
694243
- bufferCap: log.args.bufferCap.toString(),
694244
- rateLimitPerSecond: log.args.rateLimitPerSecond.toString(),
694245
- },
694246
- }));
694247
- }
694248
- //# sourceMappingURL=xerc20.js.map
694167
+ // EXTERNAL MODULE: ../sdk/dist/token/xerc20.js + 1 modules
694168
+ var xerc20 = __nccwpck_require__(32892);
694249
694169
  ;// CONCATENATED MODULE: ../sdk/dist/token/EvmWarpRouteReader.js
694250
694170
 
694251
694171
 
@@ -694628,7 +694548,7 @@ class EvmWarpRouteReader extends EvmRouterReader/* EvmRouterReader */.V {
694628
694548
  ];
694629
694549
  const xERC20 = new lib.Contract(xERC20Address, rateLimitsABI, this.provider);
694630
694550
  try {
694631
- const extraBridgesLimits = await getExtraLockBoxConfigs({
694551
+ const extraBridgesLimits = await (0,xerc20/* getExtraLockBoxConfigs */.g5)({
694632
694552
  chain: this.chain,
694633
694553
  multiProvider: this.multiProvider,
694634
694554
  xERC20Address,
@@ -694938,6 +694858,426 @@ class EvmWarpRouteReader extends EvmRouterReader/* EvmRouterReader */.V {
694938
694858
 
694939
694859
  /***/ }),
694940
694860
 
694861
+ /***/ 5715:
694862
+ /***/ ((__webpack_module__, __webpack_exports__, __nccwpck_require__) => {
694863
+
694864
+ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
694865
+ /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
694866
+ /* harmony export */ J: () => (/* binding */ EvmXERC20Module)
694867
+ /* harmony export */ });
694868
+ /* harmony import */ var _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(71711);
694869
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(94523);
694870
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(21387);
694871
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(93142);
694872
+ /* harmony import */ var _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(53387);
694873
+ /* harmony import */ var _providers_MultiProtocolProvider_js__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(95176);
694874
+ /* harmony import */ var _EvmXERC20Reader_js__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(60116);
694875
+ /* harmony import */ var _adapters_EvmTokenAdapter_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(58686);
694876
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(4169);
694877
+ /* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(38466);
694878
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_EvmXERC20Reader_js__WEBPACK_IMPORTED_MODULE_3__, _providers_MultiProtocolProvider_js__WEBPACK_IMPORTED_MODULE_4__]);
694879
+ ([_EvmXERC20Reader_js__WEBPACK_IMPORTED_MODULE_3__, _providers_MultiProtocolProvider_js__WEBPACK_IMPORTED_MODULE_4__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
694880
+
694881
+
694882
+
694883
+
694884
+
694885
+
694886
+
694887
+
694888
+ /**
694889
+ * Module for managing XERC20 mint/burn limits and bridges.
694890
+ * Follows HyperlaneModule pattern with read() and update() methods.
694891
+ * Supports both Standard XERC20 (setLimits) and Velodrome XERC20 (setBufferCap/addBridge/removeBridge).
694892
+ */
694893
+ class EvmXERC20Module extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_MODULE_1__/* .HyperlaneModule */ .x {
694894
+ multiProvider;
694895
+ logger = _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_2__/* .rootLogger */ .Jk.child({ module: 'EvmXERC20Module' });
694896
+ reader;
694897
+ multiProtocolProvider;
694898
+ chainName;
694899
+ constructor(multiProvider, args) {
694900
+ super(args);
694901
+ this.multiProvider = multiProvider;
694902
+ this.chainName = this.multiProvider.getChainName(args.chain);
694903
+ this.reader = new _EvmXERC20Reader_js__WEBPACK_IMPORTED_MODULE_3__/* .EvmXERC20Reader */ .gx(multiProvider, args.chain);
694904
+ this.multiProtocolProvider =
694905
+ _providers_MultiProtocolProvider_js__WEBPACK_IMPORTED_MODULE_4__/* .MultiProtocolProvider */ .f.fromMultiProvider(multiProvider);
694906
+ }
694907
+ async read() {
694908
+ const type = await this.reader.deriveXERC20TokenType(this.args.addresses.xERC20);
694909
+ let bridges = this.getExpectedBridges();
694910
+ if (type === _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Velo) {
694911
+ const onChainBridges = await this.reader.readOnChainBridges(this.args.addresses.xERC20, type);
694912
+ bridges = [...new Set([...bridges, ...onChainBridges])];
694913
+ }
694914
+ const limits = await this.reader.readLimits(this.args.addresses.xERC20, bridges, type);
694915
+ return { type, limits };
694916
+ }
694917
+ /**
694918
+ * Generate transactions to update XERC20 limits to match expected config.
694919
+ * Detects drift and generates correction transactions.
694920
+ */
694921
+ async update(expectedConfig) {
694922
+ const actualConfig = await this.read();
694923
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_6__/* .assert */ .v)(expectedConfig.type === actualConfig.type, `XERC20 type mismatch: expected ${expectedConfig.type} but on-chain is ${actualConfig.type}`);
694924
+ const transactions = [];
694925
+ const { missingBridges, extraBridges, limitMismatches } = this.detectDriftFromConfigs(expectedConfig, actualConfig);
694926
+ for (const bridge of missingBridges) {
694927
+ const limits = expectedConfig.limits[bridge];
694928
+ if (limits) {
694929
+ const txs = await this.generateAddBridgeTxs(bridge, limits);
694930
+ transactions.push(...txs);
694931
+ }
694932
+ }
694933
+ for (const { bridge, expected } of limitMismatches) {
694934
+ const txs = await this.generateSetLimitsTxs(bridge, expected);
694935
+ transactions.push(...txs);
694936
+ }
694937
+ if (expectedConfig.type === _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Velo) {
694938
+ for (const bridge of extraBridges) {
694939
+ const txs = await this.generateRemoveBridgeTxs(bridge);
694940
+ transactions.push(...txs);
694941
+ }
694942
+ }
694943
+ if (transactions.length > 0) {
694944
+ this.logger.info(`Generated ${transactions.length} XERC20 correction txs: ` +
694945
+ `${missingBridges.length} missing, ${limitMismatches.length} mismatches, ${extraBridges.length} extra`);
694946
+ }
694947
+ return transactions;
694948
+ }
694949
+ /**
694950
+ * Detect drift between expected and actual configurations.
694951
+ */
694952
+ detectDriftFromConfigs(expected, actual) {
694953
+ const missingBridges = [];
694954
+ const limitMismatches = [];
694955
+ const expectedBridges = Object.keys(expected.limits).map((addr) => (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__/* .normalizeAddress */ .Qh)(addr));
694956
+ const expectedBridgesSet = new Set(expectedBridges);
694957
+ for (const [bridge, expectedLimits] of Object.entries(expected.limits)) {
694958
+ const normalizedBridge = (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__/* .normalizeAddress */ .Qh)(bridge);
694959
+ const actualLimits = actual.limits[normalizedBridge] ?? actual.limits[bridge];
694960
+ if (!actualLimits || (0,_EvmXERC20Reader_js__WEBPACK_IMPORTED_MODULE_3__/* .limitsAreZero */ .JT)(actualLimits)) {
694961
+ missingBridges.push(bridge);
694962
+ continue;
694963
+ }
694964
+ if (!(0,_EvmXERC20Reader_js__WEBPACK_IMPORTED_MODULE_3__/* .limitsMatch */ .EE)(expectedLimits, actualLimits)) {
694965
+ limitMismatches.push({
694966
+ bridge,
694967
+ expected: expectedLimits,
694968
+ actual: actualLimits,
694969
+ });
694970
+ }
694971
+ }
694972
+ let extraBridges = [];
694973
+ if (expected.type === _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Velo) {
694974
+ extraBridges = Object.keys(actual.limits)
694975
+ .filter((addr) => {
694976
+ const normalized = (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__/* .normalizeAddress */ .Qh)(addr);
694977
+ return (!expectedBridgesSet.has(normalized) &&
694978
+ !(0,_EvmXERC20Reader_js__WEBPACK_IMPORTED_MODULE_3__/* .limitsAreZero */ .JT)(actual.limits[addr]));
694979
+ })
694980
+ .map((addr) => (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__/* .normalizeAddress */ .Qh)(addr));
694981
+ }
694982
+ return { missingBridges, extraBridges, limitMismatches };
694983
+ }
694984
+ /**
694985
+ * Get expected bridge addresses from config.
694986
+ */
694987
+ getExpectedBridges() {
694988
+ return Object.keys(this.args.config.limits);
694989
+ }
694990
+ /**
694991
+ * Generate transactions to set limits for a bridge.
694992
+ */
694993
+ async generateSetLimitsTxs(bridge, limits) {
694994
+ const xERC20Address = this.args.addresses.xERC20;
694995
+ const chainId = this.multiProvider.getEvmChainId(this.chainName);
694996
+ const transactions = [];
694997
+ if (limits.type === _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Standard) {
694998
+ const adapter = new _adapters_EvmTokenAdapter_js__WEBPACK_IMPORTED_MODULE_8__/* .EvmXERC20Adapter */ .EE(this.chainName, this.multiProtocolProvider, { token: xERC20Address });
694999
+ const tx = await adapter.populateSetLimitsTx(bridge, BigInt(limits.mint), BigInt(limits.burn));
695000
+ transactions.push(this.annotateTransaction(tx, chainId, xERC20Address));
695001
+ }
695002
+ else {
695003
+ const adapter = new _adapters_EvmTokenAdapter_js__WEBPACK_IMPORTED_MODULE_8__/* .EvmXERC20VSAdapter */ .rQ(this.chainName, this.multiProtocolProvider, { token: xERC20Address });
695004
+ const bufferCapTx = await adapter.populateSetBufferCapTx(bridge, BigInt(limits.bufferCap));
695005
+ transactions.push(this.annotateTransaction(bufferCapTx, chainId, xERC20Address));
695006
+ const rateLimitTx = await adapter.populateSetRateLimitPerSecondTx(bridge, BigInt(limits.rateLimitPerSecond));
695007
+ transactions.push(this.annotateTransaction(rateLimitTx, chainId, xERC20Address));
695008
+ }
695009
+ return transactions;
695010
+ }
695011
+ /**
695012
+ * Generate transactions to add a bridge.
695013
+ * For Standard XERC20, equivalent to setLimits.
695014
+ * For Velodrome, uses addBridge function.
695015
+ */
695016
+ async generateAddBridgeTxs(bridge, limits) {
695017
+ if (limits.type === _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Standard) {
695018
+ return this.generateSetLimitsTxs(bridge, limits);
695019
+ }
695020
+ const xERC20Address = this.args.addresses.xERC20;
695021
+ const chainId = this.multiProvider.getEvmChainId(this.chainName);
695022
+ const adapter = new _adapters_EvmTokenAdapter_js__WEBPACK_IMPORTED_MODULE_8__/* .EvmXERC20VSAdapter */ .rQ(this.chainName, this.multiProtocolProvider, { token: xERC20Address });
695023
+ const tx = await adapter.populateAddBridgeTx(BigInt(limits.bufferCap), BigInt(limits.rateLimitPerSecond), bridge);
695024
+ return [this.annotateTransaction(tx, chainId, xERC20Address)];
695025
+ }
695026
+ /**
695027
+ * Generate transactions to remove a bridge (Velodrome only).
695028
+ */
695029
+ async generateRemoveBridgeTxs(bridge) {
695030
+ const xERC20Address = this.args.addresses.xERC20;
695031
+ const chainId = this.multiProvider.getEvmChainId(this.chainName);
695032
+ const adapter = new _adapters_EvmTokenAdapter_js__WEBPACK_IMPORTED_MODULE_8__/* .EvmXERC20VSAdapter */ .rQ(this.chainName, this.multiProtocolProvider, { token: xERC20Address });
695033
+ const tx = await adapter.populateRemoveBridgeTx(bridge);
695034
+ return [this.annotateTransaction(tx, chainId, xERC20Address)];
695035
+ }
695036
+ annotateTransaction(tx, chainId, to) {
695037
+ return {
695038
+ ...tx,
695039
+ chainId,
695040
+ to,
695041
+ annotation: `XERC20 limit update for ${to}`,
695042
+ };
695043
+ }
695044
+ static async fromWarpRouteConfig(multiProvider, chain, warpRouteConfig, warpRouteAddress) {
695045
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_6__/* .assert */ .v)(warpRouteConfig.type === _config_js__WEBPACK_IMPORTED_MODULE_9__/* .TokenType */ .ks.XERC20 ||
695046
+ warpRouteConfig.type === _config_js__WEBPACK_IMPORTED_MODULE_9__/* .TokenType */ .ks.XERC20Lockbox, `Expected XERC20 or XERC20Lockbox token type, got ${warpRouteConfig.type}`);
695047
+ let xERC20Address = warpRouteConfig.token;
695048
+ if (warpRouteConfig.type === _config_js__WEBPACK_IMPORTED_MODULE_9__/* .TokenType */ .ks.XERC20Lockbox) {
695049
+ const provider = multiProvider.getProvider(chain);
695050
+ const hypXERC20Lockbox = _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_0__/* .HypXERC20Lockbox__factory */ .OK0.connect(warpRouteConfig.token, provider);
695051
+ xERC20Address = await hypXERC20Lockbox.xERC20();
695052
+ }
695053
+ const limits = {};
695054
+ const xERC20Config = warpRouteConfig.xERC20;
695055
+ if (xERC20Config?.warpRouteLimits) {
695056
+ const warpRouteLimits = xERC20Config.warpRouteLimits;
695057
+ if (warpRouteLimits.type === _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Standard) {
695058
+ if (warpRouteLimits.mint != null && warpRouteLimits.burn != null) {
695059
+ limits[warpRouteAddress] = {
695060
+ type: _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Standard,
695061
+ mint: warpRouteLimits.mint,
695062
+ burn: warpRouteLimits.burn,
695063
+ };
695064
+ }
695065
+ }
695066
+ else if (warpRouteLimits.type === _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Velo) {
695067
+ if (warpRouteLimits.bufferCap != null &&
695068
+ warpRouteLimits.rateLimitPerSecond != null) {
695069
+ limits[warpRouteAddress] = {
695070
+ type: _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Velo,
695071
+ bufferCap: warpRouteLimits.bufferCap,
695072
+ rateLimitPerSecond: warpRouteLimits.rateLimitPerSecond,
695073
+ };
695074
+ }
695075
+ }
695076
+ }
695077
+ if (xERC20Config?.extraBridges) {
695078
+ for (const extraBridge of xERC20Config.extraBridges) {
695079
+ const { lockbox, limits: bridgeLimits } = extraBridge;
695080
+ if (bridgeLimits.type === _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Standard) {
695081
+ if (bridgeLimits.mint != null && bridgeLimits.burn != null) {
695082
+ limits[lockbox] = {
695083
+ type: _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Standard,
695084
+ mint: bridgeLimits.mint,
695085
+ burn: bridgeLimits.burn,
695086
+ };
695087
+ }
695088
+ }
695089
+ else if (bridgeLimits.type === _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Velo) {
695090
+ if (bridgeLimits.bufferCap != null &&
695091
+ bridgeLimits.rateLimitPerSecond != null) {
695092
+ limits[lockbox] = {
695093
+ type: _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Velo,
695094
+ bufferCap: bridgeLimits.bufferCap,
695095
+ rateLimitPerSecond: bridgeLimits.rateLimitPerSecond,
695096
+ };
695097
+ }
695098
+ }
695099
+ }
695100
+ }
695101
+ const type = xERC20Config?.warpRouteLimits?.type === _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Velo
695102
+ ? _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Velo
695103
+ : _types_js__WEBPACK_IMPORTED_MODULE_5__/* .XERC20Type */ .FT.Standard;
695104
+ const config = { type, limits };
695105
+ const module = new EvmXERC20Module(multiProvider, {
695106
+ addresses: { xERC20: xERC20Address, warpRoute: warpRouteAddress },
695107
+ chain,
695108
+ config,
695109
+ });
695110
+ return { module, config };
695111
+ }
695112
+ }
695113
+ //# sourceMappingURL=EvmXERC20Module.js.map
695114
+ __webpack_async_result__();
695115
+ } catch(e) { __webpack_async_result__(e); } });
695116
+
695117
+ /***/ }),
695118
+
695119
+ /***/ 60116:
695120
+ /***/ ((__webpack_module__, __webpack_exports__, __nccwpck_require__) => {
695121
+
695122
+ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
695123
+ /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
695124
+ /* harmony export */ EE: () => (/* binding */ limitsMatch),
695125
+ /* harmony export */ JT: () => (/* binding */ limitsAreZero),
695126
+ /* harmony export */ gx: () => (/* binding */ EvmXERC20Reader)
695127
+ /* harmony export */ });
695128
+ /* harmony import */ var viem__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(94762);
695129
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(94523);
695130
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(93142);
695131
+ /* harmony import */ var _providers_MultiProtocolProvider_js__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(95176);
695132
+ /* harmony import */ var _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(49680);
695133
+ /* harmony import */ var _adapters_EvmTokenAdapter_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(58686);
695134
+ /* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(38466);
695135
+ /* harmony import */ var _xerc20_abi_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(48798);
695136
+ /* harmony import */ var _xerc20_js__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(32892);
695137
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_providers_MultiProtocolProvider_js__WEBPACK_IMPORTED_MODULE_2__]);
695138
+ _providers_MultiProtocolProvider_js__WEBPACK_IMPORTED_MODULE_2__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
695139
+
695140
+
695141
+
695142
+
695143
+
695144
+
695145
+
695146
+
695147
+ /**
695148
+ * Reader for on-chain XERC20 state.
695149
+ * Reads limits and bridge configurations from XERC20 contracts.
695150
+ */
695151
+ class EvmXERC20Reader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_0__/* .HyperlaneReader */ .S {
695152
+ multiProvider;
695153
+ logger = _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_1__/* .rootLogger */ .Jk.child({ module: 'EvmXERC20Reader' });
695154
+ multiProtocolProvider;
695155
+ constructor(multiProvider, chain) {
695156
+ super(multiProvider, chain);
695157
+ this.multiProvider = multiProvider;
695158
+ this.multiProtocolProvider =
695159
+ _providers_MultiProtocolProvider_js__WEBPACK_IMPORTED_MODULE_2__/* .MultiProtocolProvider */ .f.fromMultiProvider(multiProvider);
695160
+ }
695161
+ async deriveXERC20TokenType(xERC20Address) {
695162
+ return (0,_xerc20_js__WEBPACK_IMPORTED_MODULE_3__/* .deriveXERC20TokenType */ .bL)(this.multiProvider, this.chain, xERC20Address);
695163
+ }
695164
+ /**
695165
+ * Read current limits for the specified bridges.
695166
+ */
695167
+ async readLimits(xERC20Address, bridges, type) {
695168
+ const limitsMap = {};
695169
+ const chainName = this.multiProvider.getChainName(this.chain);
695170
+ if (type === _types_js__WEBPACK_IMPORTED_MODULE_4__/* .XERC20Type */ .FT.Standard) {
695171
+ const adapter = new _adapters_EvmTokenAdapter_js__WEBPACK_IMPORTED_MODULE_5__/* .EvmXERC20Adapter */ .EE(chainName, this.multiProtocolProvider, { token: xERC20Address });
695172
+ for (const bridge of bridges) {
695173
+ const limits = await adapter.getLimits(bridge);
695174
+ limitsMap[bridge] = this.toStandardLimits(limits);
695175
+ }
695176
+ }
695177
+ else {
695178
+ const adapter = new _adapters_EvmTokenAdapter_js__WEBPACK_IMPORTED_MODULE_5__/* .EvmXERC20VSAdapter */ .rQ(chainName, this.multiProtocolProvider, { token: xERC20Address });
695179
+ for (const bridge of bridges) {
695180
+ const rateLimits = await adapter.getRateLimits(bridge);
695181
+ limitsMap[bridge] = this.toVeloLimits(rateLimits);
695182
+ }
695183
+ }
695184
+ return limitsMap;
695185
+ }
695186
+ /**
695187
+ * Read all bridges configured on-chain for a Velodrome XERC20 by parsing ConfigurationChanged events.
695188
+ * Returns empty array for Standard XERC20 since it has no event-based bridge enumeration.
695189
+ * Note: Queries from block 0 which may be slow on chains with long histories.
695190
+ */
695191
+ async readOnChainBridges(xERC20Address, type) {
695192
+ if (type === _types_js__WEBPACK_IMPORTED_MODULE_4__/* .XERC20Type */ .FT.Standard) {
695193
+ this.logger.debug('Standard XERC20 does not support on-chain bridge enumeration');
695194
+ return [];
695195
+ }
695196
+ const filter = {
695197
+ address: xERC20Address,
695198
+ topics: [_xerc20_abi_js__WEBPACK_IMPORTED_MODULE_6__/* .CONFIGURATION_CHANGED_EVENT_SELECTOR */ .v],
695199
+ fromBlock: 0,
695200
+ toBlock: 'latest',
695201
+ };
695202
+ const rawLogs = await this.provider.getLogs(filter);
695203
+ const logs = rawLogs.map((log) => ({
695204
+ address: log.address,
695205
+ blockHash: log.blockHash,
695206
+ blockNumber: BigInt(log.blockNumber),
695207
+ data: log.data,
695208
+ logIndex: log.logIndex,
695209
+ transactionHash: log.transactionHash,
695210
+ transactionIndex: log.transactionIndex,
695211
+ removed: log.removed,
695212
+ topics: log.topics,
695213
+ }));
695214
+ const parsedLogs = (0,viem__WEBPACK_IMPORTED_MODULE_7__/* .parseEventLogs */ .p)({
695215
+ abi: _xerc20_abi_js__WEBPACK_IMPORTED_MODULE_6__/* .XERC20_VS_ABI */ .y,
695216
+ eventName: 'ConfigurationChanged',
695217
+ logs,
695218
+ });
695219
+ // Track latest log per bridge (use logIndex as tiebreaker for same block)
695220
+ const bridgeToLatestLog = new Map();
695221
+ for (const log of parsedLogs) {
695222
+ const bridge = (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__/* .normalizeAddress */ .Qh)(log.args.bridge);
695223
+ const existing = bridgeToLatestLog.get(bridge);
695224
+ const isMoreRecent = !existing ||
695225
+ log.blockNumber > existing.blockNumber ||
695226
+ (log.blockNumber === existing.blockNumber &&
695227
+ log.logIndex > existing.logIndex);
695228
+ if (isMoreRecent) {
695229
+ bridgeToLatestLog.set(bridge, log);
695230
+ }
695231
+ }
695232
+ // Filter to active bridges (non-zero limits)
695233
+ const activeBridges = [];
695234
+ for (const [bridge, log] of bridgeToLatestLog) {
695235
+ const hasNonZeroLimits = log.args.bufferCap !== 0n || log.args.rateLimitPerSecond !== 0n;
695236
+ if (hasNonZeroLimits) {
695237
+ activeBridges.push(bridge);
695238
+ }
695239
+ }
695240
+ return activeBridges;
695241
+ }
695242
+ toStandardLimits(limits) {
695243
+ return {
695244
+ type: _types_js__WEBPACK_IMPORTED_MODULE_4__/* .XERC20Type */ .FT.Standard,
695245
+ mint: limits.mint.toString(),
695246
+ burn: limits.burn.toString(),
695247
+ };
695248
+ }
695249
+ toVeloLimits(rateLimits) {
695250
+ return {
695251
+ type: _types_js__WEBPACK_IMPORTED_MODULE_4__/* .XERC20Type */ .FT.Velo,
695252
+ bufferCap: rateLimits.bufferCap.toString(),
695253
+ rateLimitPerSecond: rateLimits.rateLimitPerSecond.toString(),
695254
+ };
695255
+ }
695256
+ }
695257
+ function limitsAreZero(limits) {
695258
+ if (limits.type === _types_js__WEBPACK_IMPORTED_MODULE_4__/* .XERC20Type */ .FT.Standard) {
695259
+ return limits.mint === '0' && limits.burn === '0';
695260
+ }
695261
+ return limits.bufferCap === '0' && limits.rateLimitPerSecond === '0';
695262
+ }
695263
+ function limitsMatch(a, b) {
695264
+ if (a.type !== b.type)
695265
+ return false;
695266
+ if (a.type === _types_js__WEBPACK_IMPORTED_MODULE_4__/* .XERC20Type */ .FT.Standard && b.type === _types_js__WEBPACK_IMPORTED_MODULE_4__/* .XERC20Type */ .FT.Standard) {
695267
+ return a.mint === b.mint && a.burn === b.burn;
695268
+ }
695269
+ if (a.type === _types_js__WEBPACK_IMPORTED_MODULE_4__/* .XERC20Type */ .FT.Velo && b.type === _types_js__WEBPACK_IMPORTED_MODULE_4__/* .XERC20Type */ .FT.Velo) {
695270
+ return (a.bufferCap === b.bufferCap &&
695271
+ a.rateLimitPerSecond === b.rateLimitPerSecond);
695272
+ }
695273
+ return false;
695274
+ }
695275
+ //# sourceMappingURL=EvmXERC20Reader.js.map
695276
+ __webpack_async_result__();
695277
+ } catch(e) { __webpack_async_result__(e); } });
695278
+
695279
+ /***/ }),
695280
+
694941
695281
  /***/ 97518:
694942
695282
  /***/ ((__webpack_module__, __webpack_exports__, __nccwpck_require__) => {
694943
695283
 
@@ -696838,10 +697178,12 @@ __nccwpck_require__.d(__webpack_exports__, {
696838
697178
  D8: () => (/* binding */ EvmHypXERC20LockboxAdapter),
696839
697179
  vo: () => (/* binding */ EvmMovableCollateralAdapter),
696840
697180
  L8: () => (/* binding */ EvmNativeTokenAdapter),
696841
- d8: () => (/* binding */ EvmTokenAdapter)
697181
+ d8: () => (/* binding */ EvmTokenAdapter),
697182
+ EE: () => (/* binding */ EvmXERC20Adapter),
697183
+ rQ: () => (/* binding */ EvmXERC20VSAdapter)
696842
697184
  });
696843
697185
 
696844
- // UNUSED EXPORTS: EvmHypCollateralAdapter, EvmHypVSXERC20Adapter, EvmHypVSXERC20LockboxAdapter, EvmXERC20Adapter, EvmXERC20VSAdapter
697186
+ // UNUSED EXPORTS: EvmHypCollateralAdapter, EvmHypVSXERC20Adapter, EvmHypVSXERC20LockboxAdapter
696845
697187
 
696846
697188
  // EXTERNAL MODULE: ../../node_modules/.pnpm/ethers@5.8.0_bufferutil@4.0.9_utf-8-validate@5.0.10/node_modules/ethers/lib/index.js
696847
697189
  var lib = __nccwpck_require__(61934);
@@ -696853,6 +697195,8 @@ var validation = __nccwpck_require__(21387);
696853
697195
  var addresses = __nccwpck_require__(93142);
696854
697196
  // EXTERNAL MODULE: ../utils/dist/typeof.js
696855
697197
  var dist_typeof = __nccwpck_require__(73689);
697198
+ // EXTERNAL MODULE: ../utils/dist/async.js
697199
+ var dist_async = __nccwpck_require__(14918);
696856
697200
  // EXTERNAL MODULE: ../sdk/dist/app/MultiProtocolApp.js
696857
697201
  var MultiProtocolApp = __nccwpck_require__(48381);
696858
697202
  ;// CONCATENATED MODULE: ../sdk/dist/consts/numbers.js
@@ -697075,7 +697419,7 @@ class BaseEvmHypCollateralAdapter extends EvmHypSyntheticAdapter {
697075
697419
  multiProvider;
697076
697420
  addresses;
697077
697421
  collateralContract;
697078
- wrappedTokenAddress;
697422
+ wrappedTokenAddress = new dist_async/* LazyAsync */.Ru(() => this.loadWrappedTokenAddress());
697079
697423
  constructor(chainName, multiProvider, addresses) {
697080
697424
  super(chainName, multiProvider, addresses);
697081
697425
  this.chainName = chainName;
@@ -697084,10 +697428,10 @@ class BaseEvmHypCollateralAdapter extends EvmHypSyntheticAdapter {
697084
697428
  this.collateralContract = dist/* TokenRouter__factory */.NgW.connect(addresses.token, this.getProvider());
697085
697429
  }
697086
697430
  async getWrappedTokenAddress() {
697087
- if (!this.wrappedTokenAddress) {
697088
- this.wrappedTokenAddress = await this.collateralContract.token();
697089
- }
697090
- return this.wrappedTokenAddress;
697431
+ return this.wrappedTokenAddress.get();
697432
+ }
697433
+ async loadWrappedTokenAddress() {
697434
+ return this.collateralContract.token();
697091
697435
  }
697092
697436
  async getWrappedTokenAdapter() {
697093
697437
  return new EvmTokenAdapter(this.chainName, this.multiProvider, {
@@ -697135,11 +697479,8 @@ class EvmHypCollateralAdapter extends BaseEvmHypCollateralAdapter {
697135
697479
  this.addresses = addresses;
697136
697480
  this.collateralContract = dist/* HypERC20Collateral__factory */.Nfu.connect(addresses.token, this.getProvider());
697137
697481
  }
697138
- async getWrappedTokenAddress() {
697139
- if (!this.wrappedTokenAddress) {
697140
- this.wrappedTokenAddress = await this.collateralContract.wrappedToken();
697141
- }
697142
- return this.wrappedTokenAddress;
697482
+ async loadWrappedTokenAddress() {
697483
+ return this.collateralContract.wrappedToken();
697143
697484
  }
697144
697485
  }
697145
697486
  class EvmMovableCollateralAdapter extends EvmHypCollateralAdapter {
@@ -697233,11 +697574,8 @@ class EvmHypRebaseCollateralAdapter extends BaseEvmHypCollateralAdapter {
697233
697574
  this.addresses = addresses;
697234
697575
  this.collateralContract = dist/* HypERC4626Collateral__factory */.ns7.connect(addresses.token, this.getProvider());
697235
697576
  }
697236
- async getWrappedTokenAddress() {
697237
- if (!this.wrappedTokenAddress) {
697238
- this.wrappedTokenAddress = await this.collateralContract.wrappedToken();
697239
- }
697240
- return this.wrappedTokenAddress;
697577
+ async loadWrappedTokenAddress() {
697578
+ return this.collateralContract.wrappedToken();
697241
697579
  }
697242
697580
  async getBridgedSupply(options) {
697243
697581
  const vault = dist/* ERC4626__factory */.RTL.connect(await this.collateralContract.vault(), this.getProvider());
@@ -701616,6 +701954,8 @@ function decodeTransferInstructionUnchecked({ programId, keys: [source, destinat
701616
701954
  var lib = __nccwpck_require__(95932);
701617
701955
  // EXTERNAL MODULE: ../utils/dist/validation.js
701618
701956
  var validation = __nccwpck_require__(21387);
701957
+ // EXTERNAL MODULE: ../utils/dist/async.js
701958
+ var dist_async = __nccwpck_require__(14918);
701619
701959
  // EXTERNAL MODULE: ../utils/dist/typeof.js
701620
701960
  var dist_typeof = __nccwpck_require__(73689);
701621
701961
  // EXTERNAL MODULE: ../utils/dist/addresses.js
@@ -702965,7 +703305,7 @@ class SealevelHypTokenAdapter extends SealevelTokenAdapter {
702965
703305
  multiProvider;
702966
703306
  warpProgramPubKey;
702967
703307
  addresses;
702968
- cachedTokenAccountData;
703308
+ tokenAccountData = new dist_async/* LazyAsync */.Ru(() => this.loadTokenAccountData());
702969
703309
  constructor(chainName, multiProvider, addresses) {
702970
703310
  super(chainName, multiProvider, { token: addresses.token });
702971
703311
  this.chainName = chainName;
@@ -702974,16 +703314,15 @@ class SealevelHypTokenAdapter extends SealevelTokenAdapter {
702974
703314
  this.warpProgramPubKey = new index_cjs/* PublicKey */.J3(addresses.warpRouter);
702975
703315
  }
702976
703316
  async getTokenAccountData() {
702977
- if (!this.cachedTokenAccountData) {
702978
- const tokenPda = this.deriveHypTokenAccount();
702979
- const accountInfo = await this.getProvider().getAccountInfo(tokenPda);
702980
- if (!accountInfo)
702981
- throw new Error(`No account info found for ${tokenPda}`);
702982
- const wrappedData = (0,lib.deserializeUnchecked)(SealevelHyperlaneTokenDataSchema, sealevelSerialization/* SealevelAccountDataWrapper */.aU, accountInfo.data);
702983
- this.cachedTokenAccountData =
702984
- wrappedData.data;
702985
- }
702986
- return this.cachedTokenAccountData;
703317
+ return this.tokenAccountData.get();
703318
+ }
703319
+ async loadTokenAccountData() {
703320
+ const tokenPda = this.deriveHypTokenAccount();
703321
+ const accountInfo = await this.getProvider().getAccountInfo(tokenPda);
703322
+ if (!accountInfo)
703323
+ throw new Error(`No account info found for ${tokenPda}`);
703324
+ const wrappedData = (0,lib.deserializeUnchecked)(SealevelHyperlaneTokenDataSchema, sealevelSerialization/* SealevelAccountDataWrapper */.aU, accountInfo.data);
703325
+ return wrappedData.data;
702987
703326
  }
702988
703327
  async getMetadata() {
702989
703328
  const tokenData = await this.getTokenAccountData();
@@ -703409,15 +703748,16 @@ class SealevelHypSyntheticAdapter extends SealevelHypTokenAdapter {
703409
703748
  /* harmony export */ r9: () => (/* binding */ StarknetTokenAdapter),
703410
703749
  /* harmony export */ zR: () => (/* binding */ StarknetHypFeeAdapter)
703411
703750
  /* harmony export */ });
703412
- /* harmony import */ var ethers__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(61934);
703751
+ /* harmony import */ var ethers__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(61934);
703413
703752
  /* harmony import */ var starknet__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(98954);
703414
703753
  /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(93142);
703415
- /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(73689);
703416
- /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(16639);
703417
- /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(21387);
703754
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(14918);
703755
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(73689);
703756
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(16639);
703757
+ /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(21387);
703418
703758
  /* harmony import */ var _app_MultiProtocolApp_js__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(48381);
703419
- /* harmony import */ var _utils_starknet_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(84779);
703420
- /* harmony import */ var _nativeTokenMetadata_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(50302);
703759
+ /* harmony import */ var _utils_starknet_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(84779);
703760
+ /* harmony import */ var _nativeTokenMetadata_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(50302);
703421
703761
 
703422
703762
 
703423
703763
 
@@ -703429,7 +703769,7 @@ class StarknetTokenAdapter extends _app_MultiProtocolApp_js__WEBPACK_IMPORTED_MO
703429
703769
  chainName;
703430
703770
  multiProvider;
703431
703771
  addresses;
703432
- tokenContract;
703772
+ tokenContract = new _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .LazyAsync */ .Ru(() => this.createContractInstance());
703433
703773
  constructor(chainName, multiProvider, addresses) {
703434
703774
  super(chainName, multiProvider, addresses);
703435
703775
  this.chainName = chainName;
@@ -703439,10 +703779,10 @@ class StarknetTokenAdapter extends _app_MultiProtocolApp_js__WEBPACK_IMPORTED_MO
703439
703779
  // This function returns the Contract instance for the given token
703440
703780
  // If the contract is a Proxy: retrieves the implementation contract ABI and returns that Contract
703441
703781
  // If the contract is not a Proxy: returns the contract with the token address ABI
703442
- async getContractInstance() {
703443
- if (this.tokenContract) {
703444
- return this.tokenContract;
703445
- }
703782
+ getContractInstance() {
703783
+ return this.tokenContract.get();
703784
+ }
703785
+ async createContractInstance() {
703446
703786
  const provider = this.getProvider();
703447
703787
  const { abi } = await provider.getClassAt(this.addresses.tokenAddress);
703448
703788
  const contractInstance = new starknet__WEBPACK_IMPORTED_MODULE_0__/* .Contract */ .NZ(abi, this.addresses.tokenAddress, provider);
@@ -703450,9 +703790,8 @@ class StarknetTokenAdapter extends _app_MultiProtocolApp_js__WEBPACK_IMPORTED_MO
703450
703790
  const { implementation } = await contractInstance.get_implementation();
703451
703791
  const contractClass = await provider.getClassByHash(implementation);
703452
703792
  const implementationContract = new starknet__WEBPACK_IMPORTED_MODULE_0__/* .Contract */ .NZ(contractClass.abi, this.addresses.tokenAddress, provider);
703453
- return (this.tokenContract = implementationContract);
703793
+ return implementationContract;
703454
703794
  }
703455
- this.tokenContract = contractInstance;
703456
703795
  return contractInstance;
703457
703796
  }
703458
703797
  async getBalance(address) {
@@ -703460,7 +703799,7 @@ class StarknetTokenAdapter extends _app_MultiProtocolApp_js__WEBPACK_IMPORTED_MO
703460
703799
  if (contract.balance_of)
703461
703800
  return contract.balance_of(address);
703462
703801
  const response = await contract.balanceOf(address);
703463
- if (!(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .isNullish */ .u)(response.balance?.low)) {
703802
+ if (!(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__/* .isNullish */ .u)(response.balance?.low)) {
703464
703803
  return starknet__WEBPACK_IMPORTED_MODULE_0__/* .uint256 */ .iN.uint256ToBN(response.balance);
703465
703804
  }
703466
703805
  return response;
@@ -703487,7 +703826,7 @@ class StarknetTokenAdapter extends _app_MultiProtocolApp_js__WEBPACK_IMPORTED_MO
703487
703826
  async isApproveRequired(owner, spender, weiAmountOrId) {
703488
703827
  const contract = await this.getContractInstance();
703489
703828
  const allowance = await contract.allowance(owner, spender);
703490
- return ethers__WEBPACK_IMPORTED_MODULE_4__.BigNumber.from(allowance.toString()).lt(ethers__WEBPACK_IMPORTED_MODULE_4__.BigNumber.from(weiAmountOrId));
703829
+ return ethers__WEBPACK_IMPORTED_MODULE_5__.BigNumber.from(allowance.toString()).lt(ethers__WEBPACK_IMPORTED_MODULE_5__.BigNumber.from(weiAmountOrId));
703491
703830
  }
703492
703831
  async isRevokeApprovalRequired(_owner, _spender) {
703493
703832
  return false;
@@ -703515,7 +703854,7 @@ class BaseStarknetHypTokenAdapter extends _app_MultiProtocolApp_js__WEBPACK_IMPO
703515
703854
  this.chainName = chainName;
703516
703855
  this.multiProvider = multiProvider;
703517
703856
  this.addresses = addresses;
703518
- this.contract = (0,_utils_starknet_js__WEBPACK_IMPORTED_MODULE_5__/* .getStarknetHypERC20Contract */ .ei)(addresses.warpRouter, multiProvider.getStarknetProvider(chainName));
703857
+ this.contract = (0,_utils_starknet_js__WEBPACK_IMPORTED_MODULE_6__/* .getStarknetHypERC20Contract */ .ei)(addresses.warpRouter, multiProvider.getStarknetProvider(chainName));
703519
703858
  }
703520
703859
  async getBalance(address) {
703521
703860
  if (this.contract.balance_of)
@@ -703535,7 +703874,7 @@ class BaseStarknetHypTokenAdapter extends _app_MultiProtocolApp_js__WEBPACK_IMPO
703535
703874
  }
703536
703875
  async isApproveRequired(owner, spender, weiAmountOrId) {
703537
703876
  const allowance = await this.contract.allowance(owner, spender);
703538
- return ethers__WEBPACK_IMPORTED_MODULE_4__.BigNumber.from(allowance.toString()).lt(ethers__WEBPACK_IMPORTED_MODULE_4__.BigNumber.from(weiAmountOrId));
703877
+ return ethers__WEBPACK_IMPORTED_MODULE_5__.BigNumber.from(allowance.toString()).lt(ethers__WEBPACK_IMPORTED_MODULE_5__.BigNumber.from(weiAmountOrId));
703539
703878
  }
703540
703879
  async isRevokeApprovalRequired(_owner, _spender) {
703541
703880
  return false;
@@ -703593,16 +703932,16 @@ class StarknetHypSyntheticAdapter extends BaseStarknetHypTokenAdapter {
703593
703932
  }
703594
703933
  class StarknetHypCollateralAdapter extends StarknetHypSyntheticAdapter {
703595
703934
  collateralContract;
703596
- wrappedTokenAddress;
703935
+ wrappedTokenAddress = new _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .LazyAsync */ .Ru(() => this.loadWrappedTokenAddress());
703597
703936
  constructor(chainName, multiProvider, addresses) {
703598
703937
  super(chainName, multiProvider, addresses);
703599
- this.collateralContract = (0,_utils_starknet_js__WEBPACK_IMPORTED_MODULE_5__/* .getStarknetHypERC20CollateralContract */ .fF)(addresses.warpRouter, multiProvider.getStarknetProvider(chainName));
703938
+ this.collateralContract = (0,_utils_starknet_js__WEBPACK_IMPORTED_MODULE_6__/* .getStarknetHypERC20CollateralContract */ .fF)(addresses.warpRouter, multiProvider.getStarknetProvider(chainName));
703600
703939
  }
703601
703940
  async getWrappedTokenAddress() {
703602
- if (!this.wrappedTokenAddress) {
703603
- this.wrappedTokenAddress = starknet__WEBPACK_IMPORTED_MODULE_0__/* .num */ .bu.toHex64(await this.collateralContract.get_wrapped_token());
703604
- }
703605
- return this.wrappedTokenAddress;
703941
+ return this.wrappedTokenAddress.get();
703942
+ }
703943
+ async loadWrappedTokenAddress() {
703944
+ return starknet__WEBPACK_IMPORTED_MODULE_0__/* .num */ .bu.toHex64(await this.collateralContract.get_wrapped_token());
703606
703945
  }
703607
703946
  async getWrappedTokenAdapter() {
703608
703947
  return new StarknetTokenAdapter(this.chainName, this.multiProvider, {
@@ -703634,19 +703973,19 @@ class StarknetHypNativeAdapter extends StarknetHypSyntheticAdapter {
703634
703973
  nativeContract;
703635
703974
  constructor(chainName, multiProvider, addresses) {
703636
703975
  super(chainName, multiProvider, addresses);
703637
- this.collateralContract = (0,_utils_starknet_js__WEBPACK_IMPORTED_MODULE_5__/* .getStarknetHypERC20CollateralContract */ .fF)(addresses.warpRouter, multiProvider.getStarknetProvider(chainName));
703976
+ this.collateralContract = (0,_utils_starknet_js__WEBPACK_IMPORTED_MODULE_6__/* .getStarknetHypERC20CollateralContract */ .fF)(addresses.warpRouter, multiProvider.getStarknetProvider(chainName));
703638
703977
  const nativeAddress = multiProvider.getChainMetadata(chainName)?.nativeToken?.denom;
703639
703978
  const tokenAddress = nativeAddress ??
703640
- _nativeTokenMetadata_js__WEBPACK_IMPORTED_MODULE_6__/* .PROTOCOL_TO_DEFAULT_NATIVE_TOKEN */ .V[_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__/* .ProtocolType */ .Hb.Starknet].denom;
703641
- (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__/* .assert */ .v)(tokenAddress, `Native address not found for chain ${chainName}`);
703642
- this.nativeContract = (0,_utils_starknet_js__WEBPACK_IMPORTED_MODULE_5__/* .getStarknetEtherContract */ .Rd)(tokenAddress, multiProvider.getStarknetProvider(chainName));
703979
+ _nativeTokenMetadata_js__WEBPACK_IMPORTED_MODULE_7__/* .PROTOCOL_TO_DEFAULT_NATIVE_TOKEN */ .V[_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__/* .ProtocolType */ .Hb.Starknet].denom;
703980
+ (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_9__/* .assert */ .v)(tokenAddress, `Native address not found for chain ${chainName}`);
703981
+ this.nativeContract = (0,_utils_starknet_js__WEBPACK_IMPORTED_MODULE_6__/* .getStarknetEtherContract */ .Rd)(tokenAddress, multiProvider.getStarknetProvider(chainName));
703643
703982
  }
703644
703983
  async getBalance(address) {
703645
703984
  return this.nativeContract.balanceOf(address);
703646
703985
  }
703647
703986
  async isApproveRequired(owner, spender, weiAmountOrId) {
703648
703987
  const allowance = await this.nativeContract.allowance(owner, spender);
703649
- return ethers__WEBPACK_IMPORTED_MODULE_4__.BigNumber.from(allowance.toString()).lt(ethers__WEBPACK_IMPORTED_MODULE_4__.BigNumber.from(weiAmountOrId));
703988
+ return ethers__WEBPACK_IMPORTED_MODULE_5__.BigNumber.from(allowance.toString()).lt(ethers__WEBPACK_IMPORTED_MODULE_5__.BigNumber.from(weiAmountOrId));
703650
703989
  }
703651
703990
  async populateApproveTx({ weiAmountOrId, recipient, }) {
703652
703991
  return this.nativeContract.populateTransaction.approve(recipient, weiAmountOrId);
@@ -703664,15 +704003,15 @@ class StarknetHypFeeAdapter extends StarknetHypSyntheticAdapter {
703664
704003
  feeTokenContract;
703665
704004
  constructor(chainName, multiProvider, addresses) {
703666
704005
  super(chainName, multiProvider, addresses);
703667
- this.collateralContract = (0,_utils_starknet_js__WEBPACK_IMPORTED_MODULE_5__/* .getStarknetHypERC20CollateralContract */ .fF)(addresses.warpRouter, multiProvider.getStarknetProvider(chainName));
703668
- this.feeTokenContract = (0,_utils_starknet_js__WEBPACK_IMPORTED_MODULE_5__/* .getStarknetEtherContract */ .Rd)(addresses.warpRouter, multiProvider.getStarknetProvider(chainName));
704006
+ this.collateralContract = (0,_utils_starknet_js__WEBPACK_IMPORTED_MODULE_6__/* .getStarknetHypERC20CollateralContract */ .fF)(addresses.warpRouter, multiProvider.getStarknetProvider(chainName));
704007
+ this.feeTokenContract = (0,_utils_starknet_js__WEBPACK_IMPORTED_MODULE_6__/* .getStarknetEtherContract */ .Rd)(addresses.warpRouter, multiProvider.getStarknetProvider(chainName));
703669
704008
  }
703670
704009
  async getBalance(address) {
703671
704010
  return this.feeTokenContract.balanceOf(address);
703672
704011
  }
703673
704012
  async isApproveRequired(owner, spender, weiAmountOrId) {
703674
704013
  const allowance = await this.feeTokenContract.allowance(owner, spender);
703675
- return ethers__WEBPACK_IMPORTED_MODULE_4__.BigNumber.from(allowance.toString()).lt(ethers__WEBPACK_IMPORTED_MODULE_4__.BigNumber.from(weiAmountOrId));
704014
+ return ethers__WEBPACK_IMPORTED_MODULE_5__.BigNumber.from(allowance.toString()).lt(ethers__WEBPACK_IMPORTED_MODULE_5__.BigNumber.from(weiAmountOrId));
703676
704015
  }
703677
704016
  async populateApproveTx({ weiAmountOrId, recipient, }) {
703678
704017
  return this.feeTokenContract.populateTransaction.approve(recipient, weiAmountOrId);
@@ -703783,7 +704122,7 @@ const NON_ZERO_SENDER_ADDRESS = '0xa7ECcdb9Be08178f896c26b7BbD8C3D4E844d9Ba';
703783
704122
  /* harmony import */ var _fee_types_js__WEBPACK_IMPORTED_MODULE_13__ = __nccwpck_require__(52555);
703784
704123
  /* harmony import */ var _hook_EvmHookReader_js__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(69319);
703785
704124
  /* harmony import */ var _ism_EvmIsmReader_js__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(60715);
703786
- /* harmony import */ var _EvmWarpRouteReader_js__WEBPACK_IMPORTED_MODULE_14__ = __nccwpck_require__(98362);
704125
+ /* harmony import */ var _EvmWarpRouteReader_js__WEBPACK_IMPORTED_MODULE_14__ = __nccwpck_require__(40945);
703787
704126
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(4169);
703788
704127
  /* harmony import */ var _deploy_js__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(90162);
703789
704128
  /* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(38466);
@@ -705342,6 +705681,417 @@ const isMovableCollateralTokenConfig = (0,_utils_schemas_js__WEBPACK_IMPORTED_MO
705342
705681
 
705343
705682
  /***/ }),
705344
705683
 
705684
+ /***/ 48798:
705685
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
705686
+
705687
+ /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
705688
+ /* harmony export */ v: () => (/* binding */ CONFIGURATION_CHANGED_EVENT_SELECTOR),
705689
+ /* harmony export */ y: () => (/* binding */ XERC20_VS_ABI)
705690
+ /* harmony export */ });
705691
+ /* harmony import */ var viem__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(83698);
705692
+ /* harmony import */ var viem__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(60613);
705693
+
705694
+ /**
705695
+ * Minimal ABI for parsing ConfigurationChanged events from Velodrome XERC20.
705696
+ * Shared between EvmXERC20Reader and xerc20 utilities.
705697
+ */
705698
+ const XERC20_VS_ABI = [
705699
+ {
705700
+ anonymous: false,
705701
+ inputs: [
705702
+ {
705703
+ indexed: true,
705704
+ internalType: 'address',
705705
+ name: 'bridge',
705706
+ type: 'address',
705707
+ },
705708
+ {
705709
+ indexed: false,
705710
+ internalType: 'uint112',
705711
+ name: 'bufferCap',
705712
+ type: 'uint112',
705713
+ },
705714
+ {
705715
+ indexed: false,
705716
+ internalType: 'uint128',
705717
+ name: 'rateLimitPerSecond',
705718
+ type: 'uint128',
705719
+ },
705720
+ ],
705721
+ name: 'ConfigurationChanged',
705722
+ type: 'event',
705723
+ },
705724
+ ];
705725
+ const CONFIGURATION_CHANGED_EVENT_SELECTOR = (0,viem__WEBPACK_IMPORTED_MODULE_0__/* .toEventSelector */ .h)((0,viem__WEBPACK_IMPORTED_MODULE_1__/* .getAbiItem */ .iY)({
705726
+ abi: XERC20_VS_ABI,
705727
+ name: 'ConfigurationChanged',
705728
+ }));
705729
+ //# sourceMappingURL=xerc20-abi.js.map
705730
+
705731
+ /***/ }),
705732
+
705733
+ /***/ 32892:
705734
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
705735
+
705736
+
705737
+ // EXPORTS
705738
+ __nccwpck_require__.d(__webpack_exports__, {
705739
+ bL: () => (/* binding */ deriveXERC20TokenType),
705740
+ g5: () => (/* binding */ getExtraLockBoxConfigs)
705741
+ });
705742
+
705743
+ // UNUSED EXPORTS: deriveBridgesConfig, deriveStandardBridgesConfig
705744
+
705745
+ // EXTERNAL MODULE: ../../node_modules/.pnpm/ethers@5.8.0_bufferutil@4.0.9_utf-8-validate@5.0.10/node_modules/ethers/lib/index.js
705746
+ var lib = __nccwpck_require__(61934);
705747
+ // EXTERNAL MODULE: ../../node_modules/.pnpm/viem@2.39.3_bufferutil@4.0.9_typescript@5.8.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/utils/abi/parseEventLogs.js
705748
+ var parseEventLogs = __nccwpck_require__(94762);
705749
+ // EXTERNAL MODULE: ../../solidity/dist/index.js + 417 modules
705750
+ var dist = __nccwpck_require__(71711);
705751
+ // EXTERNAL MODULE: ../utils/dist/logging.js
705752
+ var logging = __nccwpck_require__(94523);
705753
+ // EXTERNAL MODULE: ../sdk/dist/block-explorer/etherscan.js
705754
+ var etherscan = __nccwpck_require__(26492);
705755
+ // EXTERNAL MODULE: ../sdk/dist/contracts/contracts.js
705756
+ var contracts = __nccwpck_require__(15570);
705757
+ ;// CONCATENATED MODULE: ../sdk/dist/rpc/evm/utils.js
705758
+
705759
+ // calling getCode until the creation block is found
705760
+ async function getContractCreationBlockFromRpc(chain, contractAddress, multiProvider) {
705761
+ await assertIsContractAddress(multiProvider, chain, contractAddress);
705762
+ const provider = multiProvider.getProvider(chain);
705763
+ const latestBlock = await provider.getBlockNumber();
705764
+ let low = 0;
705765
+ let high = latestBlock;
705766
+ let creationBlock = latestBlock;
705767
+ while (low <= high) {
705768
+ const mid = Math.floor((low + high) / 2);
705769
+ const isContract = await isContractAddress(multiProvider, chain, contractAddress, mid);
705770
+ if (isContract) {
705771
+ creationBlock = mid;
705772
+ high = mid - 1;
705773
+ }
705774
+ else {
705775
+ low = mid + 1;
705776
+ }
705777
+ }
705778
+ return creationBlock;
705779
+ }
705780
+ async function getLogsFromRpc({ chain, contractAddress, multiProvider, fromBlock, topic, toBlock, range = 500, }) {
705781
+ const provider = multiProvider.getProvider(chain);
705782
+ let currentStartBlock = fromBlock;
705783
+ const endBlock = toBlock ?? (await provider.getBlockNumber());
705784
+ const logs = [];
705785
+ while (currentStartBlock <= endBlock) {
705786
+ const currentEndBlock = currentStartBlock + range < endBlock
705787
+ ? currentStartBlock + range
705788
+ : endBlock;
705789
+ const currentLogs = await provider.getLogs({
705790
+ address: contractAddress,
705791
+ fromBlock: currentStartBlock,
705792
+ toBlock: currentEndBlock,
705793
+ topics: [topic],
705794
+ });
705795
+ logs.push(...currentLogs);
705796
+ // +1 because getLogs range is inclusive
705797
+ currentStartBlock += range + 1;
705798
+ }
705799
+ return logs.map((rawLog) => {
705800
+ return {
705801
+ address: rawLog.address,
705802
+ blockNumber: rawLog.blockNumber,
705803
+ data: rawLog.data,
705804
+ logIndex: rawLog.logIndex,
705805
+ topics: rawLog.topics,
705806
+ transactionHash: rawLog.transactionHash,
705807
+ transactionIndex: rawLog.transactionIndex,
705808
+ };
705809
+ });
705810
+ }
705811
+ function viemLogFromGetEventLogsResponse(log) {
705812
+ return {
705813
+ address: log.address,
705814
+ data: log.data,
705815
+ blockNumber: BigInt(log.blockNumber),
705816
+ transactionHash: log.transactionHash,
705817
+ logIndex: Number(log.logIndex),
705818
+ transactionIndex: Number(log.transactionIndex),
705819
+ topics: log.topics,
705820
+ blockHash: null,
705821
+ removed: false,
705822
+ };
705823
+ }
705824
+ //# sourceMappingURL=utils.js.map
705825
+ // EXTERNAL MODULE: ../sdk/dist/token/types.js
705826
+ var types = __nccwpck_require__(38466);
705827
+ // EXTERNAL MODULE: ../sdk/dist/token/xerc20-abi.js
705828
+ var xerc20_abi = __nccwpck_require__(48798);
705829
+ ;// CONCATENATED MODULE: ../sdk/dist/token/xerc20.js
705830
+
705831
+
705832
+
705833
+
705834
+
705835
+
705836
+
705837
+
705838
+
705839
+
705840
+ async function getExtraLockBoxConfigs({ xERC20Address, chain, multiProvider, logger = logging/* rootLogger */.Jk, }) {
705841
+ const explorer = multiProvider.tryGetEvmExplorerMetadata(chain);
705842
+ if (!explorer) {
705843
+ logger.warn(`No block explorer was configured correctly, skipping lockbox derivation on chain ${chain}`);
705844
+ return [];
705845
+ }
705846
+ const logs = await getConfigurationChangedLogsFromExplorerApi({
705847
+ chain,
705848
+ multiProvider,
705849
+ xERC20Address,
705850
+ explorerUrl: explorer.apiUrl,
705851
+ apiKey: explorer.apiKey,
705852
+ });
705853
+ const viemLogs = logs.map(viemLogFromGetEventLogsResponse);
705854
+ return getLockboxesFromLogs(viemLogs, multiProvider.getProvider(chain), chain, logger);
705855
+ }
705856
+ async function getConfigurationChangedLogsFromExplorerApi({ xERC20Address, chain, multiProvider, explorerUrl, apiKey, }) {
705857
+ const contractDeploymentTx = await (0,etherscan/* getContractDeploymentTransaction */.sG)({ apiUrl: explorerUrl, apiKey }, { contractAddress: xERC20Address });
705858
+ const provider = multiProvider.getProvider(chain);
705859
+ const [currentBlockNumber, deploymentTransactionReceipt] = await Promise.all([
705860
+ provider.getBlockNumber(),
705861
+ provider.getTransactionReceipt(contractDeploymentTx.txHash),
705862
+ ]);
705863
+ return (0,etherscan/* getLogsFromEtherscanLikeExplorerAPI */.Bf)({ apiUrl: explorerUrl, apiKey }, {
705864
+ address: xERC20Address,
705865
+ fromBlock: deploymentTransactionReceipt.blockNumber,
705866
+ toBlock: currentBlockNumber,
705867
+ topic0: xerc20_abi/* CONFIGURATION_CHANGED_EVENT_SELECTOR */.v,
705868
+ });
705869
+ }
705870
+ async function getLockboxesFromLogs(logs, provider, chain, logger) {
705871
+ const parsedLogs = (0,parseEventLogs/* parseEventLogs */.p)({
705872
+ abi: xerc20_abi/* XERC20_VS_ABI */.y,
705873
+ eventName: 'ConfigurationChanged',
705874
+ logs,
705875
+ });
705876
+ // A bridge might appear more than once in the event logs, we are only
705877
+ // interested in the most recent one for each bridge so we deduplicate
705878
+ // entries here
705879
+ const dedupedBridges = parsedLogs.reduce((acc, log) => {
705880
+ const bridgeAddress = log.args.bridge;
705881
+ const isMostRecentLogForBridge = log.blockNumber > (acc[bridgeAddress]?.blockNumber ?? 0n);
705882
+ if (isMostRecentLogForBridge) {
705883
+ acc[bridgeAddress] = log;
705884
+ }
705885
+ return acc;
705886
+ }, {});
705887
+ const lockboxPromises = Object.values(dedupedBridges)
705888
+ // Removing bridges where the limits are set to 0 because it is equivalent of being deactivated
705889
+ // A bridge is active if EITHER bufferCap OR rateLimitPerSecond is non-zero
705890
+ .filter((log) => log.args.bufferCap !== 0n || log.args.rateLimitPerSecond !== 0n)
705891
+ .map(async (log) => {
705892
+ try {
705893
+ const maybeXERC20Lockbox = dist/* IXERC20Lockbox__factory */.Cns.connect(log.args.bridge, provider);
705894
+ await maybeXERC20Lockbox.callStatic.XERC20();
705895
+ return log;
705896
+ }
705897
+ catch {
705898
+ logger.debug(`Contract at address ${log.args.bridge} on chain ${chain} is not a XERC20Lockbox contract.`);
705899
+ return undefined;
705900
+ }
705901
+ });
705902
+ const lockboxes = await Promise.all(lockboxPromises);
705903
+ return lockboxes
705904
+ .filter((log) => log !== undefined)
705905
+ .map((log) => log)
705906
+ .map((log) => ({
705907
+ lockbox: log.args.bridge,
705908
+ limits: {
705909
+ type: types/* XERC20Type */.FT.Velo,
705910
+ bufferCap: log.args.bufferCap.toString(),
705911
+ rateLimitPerSecond: log.args.rateLimitPerSecond.toString(),
705912
+ },
705913
+ }));
705914
+ }
705915
+ /**
705916
+ * Derives bridge configurations for Velodrome XERC20 tokens.
705917
+ * Extracts bufferCap and rateLimitPerSecond limits from warp deploy config.
705918
+ * @param warpDeployConfig - Warp route deployment configuration
705919
+ * @param warpCoreConfig - Warp core configuration with token metadata
705920
+ * @param multiProvider - Multi-chain provider for contract interactions
705921
+ * @returns Array of bridge configurations for Velodrome XERC20
705922
+ */
705923
+ async function deriveBridgesConfig(warpDeployConfig, warpCoreConfig, multiProvider) {
705924
+ const bridgesConfig = [];
705925
+ for (const [chainName, chainConfig] of Object.entries(warpDeployConfig)) {
705926
+ if (!isXERC20TokenConfig(chainConfig)) {
705927
+ throw new Error(`Chain "${chainName}" is not an xERC20 compliant deployment`);
705928
+ }
705929
+ const { token, type, owner, xERC20 } = chainConfig;
705930
+ const decimals = warpCoreConfig.tokens.find((t) => t.chainName === chainName)?.decimals;
705931
+ if (!decimals) {
705932
+ throw new Error(`Missing "decimals" for chain: ${chainName}`);
705933
+ }
705934
+ if (!xERC20 || xERC20.warpRouteLimits.type !== XERC20Type.Velo) {
705935
+ rootLogger.debug(`Skip deriving bridges config because ${XERC20Type.Velo} type is expected`);
705936
+ continue;
705937
+ }
705938
+ if (!xERC20.warpRouteLimits.bufferCap ||
705939
+ !xERC20.warpRouteLimits.rateLimitPerSecond) {
705940
+ throw new Error(`Missing "limits" for chain: ${chainName}`);
705941
+ }
705942
+ let xERC20Address = token;
705943
+ const bridgeAddress = warpCoreConfig.tokens.find((t) => t.chainName === chainName)?.addressOrDenom;
705944
+ if (!bridgeAddress) {
705945
+ throw new Error(`Missing router address for chain ${chainName} and type ${type}`);
705946
+ }
705947
+ const { bufferCap: bufferCapStr, rateLimitPerSecond: rateLimitPerSecondStr, } = xERC20.warpRouteLimits;
705948
+ const bufferCap = Number(bufferCapStr);
705949
+ const rateLimitPerSecond = Number(rateLimitPerSecondStr);
705950
+ if (type === TokenType.XERC20Lockbox) {
705951
+ const provider = multiProvider.getProvider(chainName);
705952
+ const hypXERC20Lockbox = HypXERC20Lockbox__factory.connect(bridgeAddress, provider);
705953
+ xERC20Address = await hypXERC20Lockbox.xERC20();
705954
+ }
705955
+ if (xERC20.extraBridges) {
705956
+ for (const extraLockboxLimit of xERC20.extraBridges) {
705957
+ const { lockbox, limits } = extraLockboxLimit;
705958
+ assert(limits.type === XERC20Type.Velo, `Only supports ${XERC20Type.Velo}`);
705959
+ const { bufferCap: extraBufferCap, rateLimitPerSecond: extraRateLimit, } = limits;
705960
+ if (!extraBufferCap || !extraRateLimit) {
705961
+ throw new Error(`Missing "bufferCap" or "rateLimitPerSecond" limits for extra lockbox: ${lockbox} on chain: ${chainName}`);
705962
+ }
705963
+ bridgesConfig.push({
705964
+ chain: chainName,
705965
+ type,
705966
+ xERC20Address,
705967
+ bridgeAddress: lockbox,
705968
+ owner,
705969
+ decimals,
705970
+ bufferCap: Number(extraBufferCap),
705971
+ rateLimitPerSecond: Number(extraRateLimit),
705972
+ });
705973
+ }
705974
+ }
705975
+ bridgesConfig.push({
705976
+ chain: chainName,
705977
+ type,
705978
+ xERC20Address,
705979
+ bridgeAddress,
705980
+ owner,
705981
+ decimals,
705982
+ bufferCap,
705983
+ rateLimitPerSecond,
705984
+ });
705985
+ }
705986
+ return bridgesConfig;
705987
+ }
705988
+ /**
705989
+ * Derives bridge configurations for Standard XERC20 tokens.
705990
+ * Extracts mint and burn limits from warp deploy config.
705991
+ * @param chains - Optional list of chains to filter by
705992
+ * @param warpDeployConfig - Warp route deployment configuration
705993
+ * @param warpCoreConfig - Warp core configuration with token metadata
705994
+ * @param multiProvider - Multi-chain provider for contract interactions
705995
+ * @returns Array of bridge configurations for Standard XERC20
705996
+ */
705997
+ async function deriveStandardBridgesConfig(chains = [], warpDeployConfig, warpCoreConfig, multiProvider) {
705998
+ const bridgesConfig = [];
705999
+ for (const [chainName, chainConfig] of Object.entries(warpDeployConfig)) {
706000
+ if (chains.length > 0 && !chains.includes(chainName)) {
706001
+ rootLogger.debug(`Skipping ${chainName} because its not included in chains`);
706002
+ continue;
706003
+ }
706004
+ if (!isXERC20TokenConfig(chainConfig)) {
706005
+ throw new Error(`Chain "${chainName}" is not an xERC20 compliant deployment`);
706006
+ }
706007
+ const { token, type, owner, xERC20 } = chainConfig;
706008
+ const decimals = warpCoreConfig.tokens.find((t) => t.chainName === chainName)?.decimals;
706009
+ if (!decimals) {
706010
+ throw new Error(`Missing "decimals" for chain: ${chainName}`);
706011
+ }
706012
+ if (!xERC20 || xERC20.warpRouteLimits.type !== XERC20Type.Standard) {
706013
+ rootLogger.debug(`Skip deriving bridges config because ${XERC20Type.Standard} type is expected`);
706014
+ continue;
706015
+ }
706016
+ if (!xERC20.warpRouteLimits.mint || !xERC20.warpRouteLimits.burn) {
706017
+ throw new Error(`Missing "limits" for chain: ${chainName}`);
706018
+ }
706019
+ let xERC20Address = token;
706020
+ const bridgeAddress = warpCoreConfig.tokens.find((t) => t.chainName === chainName)?.addressOrDenom;
706021
+ if (!bridgeAddress) {
706022
+ throw new Error(`Missing router address for chain ${chainName} and type ${type}`);
706023
+ }
706024
+ const mint = Number(xERC20.warpRouteLimits.mint);
706025
+ const burn = Number(xERC20.warpRouteLimits.burn);
706026
+ if (type === TokenType.XERC20Lockbox) {
706027
+ const provider = multiProvider.getProvider(chainName);
706028
+ const hypXERC20Lockbox = HypXERC20Lockbox__factory.connect(bridgeAddress, provider);
706029
+ xERC20Address = await hypXERC20Lockbox.xERC20();
706030
+ }
706031
+ if (xERC20.extraBridges) {
706032
+ for (const extraLockboxLimit of xERC20.extraBridges) {
706033
+ const { lockbox, limits } = extraLockboxLimit;
706034
+ assert(limits.type === XERC20Type.Standard, `Only supports ${XERC20Type.Standard}`);
706035
+ const extraBridgeMint = Number(limits.mint);
706036
+ const extraBridgeBurn = Number(limits.burn);
706037
+ if (!extraBridgeMint || !extraBridgeBurn) {
706038
+ throw new Error(`Missing "extraBridgeMint" or "extraBridgeBurn" limits for extra lockbox: ${lockbox} on chain: ${chainName}`);
706039
+ }
706040
+ bridgesConfig.push({
706041
+ chain: chainName,
706042
+ type,
706043
+ xERC20Address,
706044
+ bridgeAddress: lockbox,
706045
+ owner,
706046
+ decimals,
706047
+ mint: extraBridgeMint,
706048
+ burn: extraBridgeBurn,
706049
+ });
706050
+ }
706051
+ }
706052
+ bridgesConfig.push({
706053
+ chain: chainName,
706054
+ type,
706055
+ xERC20Address,
706056
+ bridgeAddress,
706057
+ owner,
706058
+ decimals,
706059
+ mint,
706060
+ burn,
706061
+ });
706062
+ }
706063
+ return bridgesConfig;
706064
+ }
706065
+ async function deriveXERC20TokenType(multiProvider, chain, address) {
706066
+ const isContract = await (0,contracts/* isContractAddress */.Dj)(multiProvider, chain, address);
706067
+ if (!isContract) {
706068
+ throw new Error(`Unable to detect XERC20 type for ${address}. Contract has no bytecode.`);
706069
+ }
706070
+ const provider = multiProvider.getProvider(chain);
706071
+ const code = await provider.getCode(address);
706072
+ const normalizedCode = code.toLowerCase();
706073
+ const setBufferCapSelector = lib.ethers.utils
706074
+ .id('setBufferCap(address,uint256)')
706075
+ .slice(2, 10)
706076
+ .toLowerCase();
706077
+ const setLimitsSelector = lib.ethers.utils
706078
+ .id('setLimits(address,uint256,uint256)')
706079
+ .slice(2, 10)
706080
+ .toLowerCase();
706081
+ // Prefer Velodrome if both selectors are present.
706082
+ if (normalizedCode.includes(setBufferCapSelector)) {
706083
+ return types/* XERC20Type */.FT.Velo;
706084
+ }
706085
+ if (normalizedCode.includes(setLimitsSelector)) {
706086
+ return types/* XERC20Type */.FT.Standard;
706087
+ }
706088
+ // Neither type detected
706089
+ throw new Error(`Unable to detect XERC20 type for ${address}. Contract does not implement Standard or Velodrome XERC20 interface.`);
706090
+ }
706091
+ //# sourceMappingURL=xerc20.js.map
706092
+
706093
+ /***/ }),
706094
+
705345
706095
  /***/ 88832:
705346
706096
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
705347
706097
 
@@ -707875,6 +708625,7 @@ function arrayEqual(a, b) {
707875
708625
 
707876
708626
  /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
707877
708627
  /* harmony export */ F2: () => (/* binding */ runWithTimeout),
708628
+ /* harmony export */ Ru: () => (/* binding */ LazyAsync),
707878
708629
  /* harmony export */ bh: () => (/* binding */ mapAllSettled),
707879
708630
  /* harmony export */ kp: () => (/* binding */ pollAsync),
707880
708631
  /* harmony export */ q1: () => (/* binding */ concurrentMap),
@@ -707889,6 +708640,58 @@ function arrayEqual(a, b) {
707889
708640
  /* harmony import */ var _validation_js__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(21387);
707890
708641
 
707891
708642
 
708643
+ /**
708644
+ * Lazily initialized async value with deduplication.
708645
+ * Concurrent callers share the same initialization promise.
708646
+ * After successful init, returns cached value immediately.
708647
+ * On error, clears state to allow retry on next call.
708648
+ */
708649
+ class LazyAsync {
708650
+ initializer;
708651
+ promise;
708652
+ value;
708653
+ hasValue = false;
708654
+ generation = 0;
708655
+ constructor(initializer) {
708656
+ this.initializer = initializer;
708657
+ }
708658
+ get() {
708659
+ if (this.hasValue)
708660
+ return Promise.resolve(this.value);
708661
+ this.promise ??= this.initialize(this.generation);
708662
+ return this.promise;
708663
+ }
708664
+ reset() {
708665
+ this.generation++;
708666
+ this.promise = undefined;
708667
+ this.value = undefined;
708668
+ this.hasValue = false;
708669
+ }
708670
+ isInitialized() {
708671
+ return this.hasValue;
708672
+ }
708673
+ peek() {
708674
+ return this.hasValue ? this.value : undefined;
708675
+ }
708676
+ async initialize(gen) {
708677
+ try {
708678
+ const result = await this.initializer();
708679
+ // Only store if generation hasn't changed (no reset during init)
708680
+ if (gen === this.generation) {
708681
+ this.value = result;
708682
+ this.hasValue = true;
708683
+ }
708684
+ return result;
708685
+ }
708686
+ catch (error) {
708687
+ // Only clear promise if generation hasn't changed
708688
+ if (gen === this.generation) {
708689
+ this.promise = undefined;
708690
+ }
708691
+ throw error;
708692
+ }
708693
+ }
708694
+ }
707892
708695
  /**
707893
708696
  * Return a promise that resolves in ms milliseconds.
707894
708697
  * @param ms Time to wait
@@ -711355,7 +712158,7 @@ module.exports = /*#__PURE__*/JSON.parse('[{"type":"function","name":"proveL2Lea
711355
712158
  /***/ 77087:
711356
712159
  /***/ ((module) => {
711357
712160
 
711358
- module.exports = {"rE":"24.0.0"};
712161
+ module.exports = {"rE":"25.0.0"};
711359
712162
 
711360
712163
  /***/ })
711361
712164