@hyperlane-xyz/cli 27.0.0 → 27.1.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.
@@ -1,8 +1,8 @@
1
- export const id = 732;
2
- export const ids = [732];
1
+ export const id = 566;
2
+ export const ids = [566];
3
3
  export const modules = {
4
4
 
5
- /***/ 34732:
5
+ /***/ 7566:
6
6
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
7
7
 
8
8
 
@@ -2137,6 +2137,7 @@ class SvmHookArtifactManager {
2137
2137
  }
2138
2138
  // The only other supported hook on SVM is the merkle tree hook, which IS
2139
2139
  // the mailbox program. Validate the address matches before assuming.
2140
+ (0,validation/* assert */.v)(this.mailboxAddress, 'Mailbox address is required to detect merkle tree hooks on SVM');
2140
2141
  (0,validation/* assert */.v)(addr === this.mailboxAddress, `Unknown hook address ${address}: not an IGP program; expected the configured mailbox (${this.mailboxAddress}) for Merkle detection`);
2141
2142
  return this.createReader('merkleTreeHook').read(address);
2142
2143
  }
@@ -2771,62 +2772,6 @@ class SvmIsmArtifactManager {
2771
2772
  }
2772
2773
  }
2773
2774
  //# sourceMappingURL=ism-artifact-manager.js.map
2774
- ;// CONCATENATED MODULE: ../svm-sdk/dist/generated/core-addresses.js
2775
- /**
2776
- * Auto-generated SVM core deployment addresses from rust/sealevel/environments/mainnet3.
2777
- * DO NOT EDIT — regenerate with: node scripts/generate-core-addresses.mjs
2778
- */
2779
- const SVM_CORE_ADDRESSES = {
2780
- eclipsemainnet: {
2781
- mailbox: 'EitxJuv2iBjsg2d7jVy2LDC1e2zBrx4GB5Y9h2Ko3A9Y',
2782
- validatorAnnounce: 'Hqnn593pqDZWLy6bKZ4NbY767wFhUNBShDrLktuQa3Q2',
2783
- multisigIsmMessageId: 'ByNa6hu4Wuc3ytqnZdnoyacUuZGDiZpT2CujdjE2Hpth',
2784
- igpProgramId: 'Hs7KVBU67nBnWhDPZkEFwWqrFMUfJbmY2DQ4gmCZfaZp',
2785
- overheadIgpAccount: '3Wp4qKkgf4tjXz1soGyTSndCgBPLZFSrZkiDZ8Qp9EEj',
2786
- igpAccount: 'ABb3i11z7wKoGCfeRQNQbVYWjAm7jG7HzZnDLV4RKRbK',
2787
- },
2788
- solanamainnet: {
2789
- mailbox: 'E588QtVUvresuXq2KoNEwAmoifCzYGpRBdHByN9KQMbi',
2790
- validatorAnnounce: 'pRgs5vN4Pj7WvFbxf6QDHizo2njq2uksqEUbaSghVA8',
2791
- multisigIsmMessageId: 'LwNfVYMDzAe5dCJgA5CipTZcT34Eyf74zLr81K91jxk',
2792
- igpProgramId: 'BhNcatUDC2D5JTyeaqrdSukiVFsEHK7e3hVmKMztwefv',
2793
- overheadIgpAccount: 'AkeHBbE5JkwVppujCQQ6WuxsVsJtruBAjUo6fDCFp6fF',
2794
- igpAccount: 'JAvHW21tYXE9dtdG83DReqU2b4LUexFuCbtJT5tF8X6M',
2795
- },
2796
- solaxy: {
2797
- mailbox: '6VdnmP8MfYkPNMwyU2ZY9S3ickYyewF58LPC38y9FAVU',
2798
- validatorAnnounce: '28S9ToSehVxdE7rTGEAA3vAX3AchHJh1MXcq9AeM1rL8',
2799
- multisigIsmMessageId: 'BMyTd7BBTw6ewENKkvzQsmPXPBHsTDW4oLHSYkv78spP',
2800
- igpProgramId: 'VG7YDF5Am2hrgyydE2ufdusdtw5DjgzXJLFxn9p8ehU',
2801
- overheadIgpAccount: '7z1QjgLLxowA9RA9QBuiC72Tc6aC1XjtA5zdH9LJHm1a',
2802
- igpAccount: '3SDcBbfZUF9ykR3yudYN198ja3KJSq17Q3rKw7JKfJR6',
2803
- },
2804
- sonicsvm: {
2805
- mailbox: '4MaM9GQZ753NhUcXH1pPsQwof1Mf3ZnjeNF4yx6S3p3N',
2806
- validatorAnnounce: '4LxdrQjqUzueko4MEn3cYCniEtcAZ6AxuHot2Fp3jskH',
2807
- multisigIsmMessageId: '2sCw3FozxoNinZV923Q6XNvaMjRsmPSFAKnNYYnWsqD3',
2808
- igpProgramId: '3kd3K1yymsfYoqzNnktLwpKXKeB9Y2PRf9rfb31k4o13',
2809
- overheadIgpAccount: '7VResHbw6jRVUa8qfD6e1cbzGmErcLGwgx4o7mLhZief',
2810
- igpAccount: 'Bxof4ZpgLtoHoxBq6AGDCJUtVxUoE9LXkx8iizkDGQPz',
2811
- },
2812
- soon: {
2813
- mailbox: 'Mj7GE6LZiJUZFTgabmNkFoY2o6JCEwCMKopSUUC3kqj',
2814
- validatorAnnounce: 'GFqF38mSacfvbJRKkhmjJvSkzTEKemSNVoWi4Q94ZPvz',
2815
- multisigIsmMessageId: '4fPoa26ayqY1cwY3AcqUPvdLLNHpjJGdDQevtnTLAAnH',
2816
- igpProgramId: '5AAMBemjUrAprKJzi22Si9pyYhK8vTr7Jpti7LEXo6d8',
2817
- overheadIgpAccount: 'GctmRsKQM5VLPrUPpsQ7Kc7RaVKNC2Fev31n1KtLkj8A',
2818
- igpAccount: 'Dsem8R6mkrpNoNb6CRUEjEZRP2hKRC24thyCkVr8cNYZ',
2819
- },
2820
- svmbnb: {
2821
- mailbox: 'GzwNZJ2EXUWQCEoV6zoBGLxkdsnjkLvm6zHReMEC2JSA',
2822
- validatorAnnounce: 'Gh4LUk91bj4QGYWsBY4QyDGhs68n8Maf8oeTRZoQZAEf',
2823
- multisigIsmMessageId: '3aD11eiNt2ZjmgiQayNRyZfp7hXBRS9hbeyPbk7cmTyv',
2824
- igpProgramId: 'ALUFQNqrKA9FgxvzkDvp2K5M94P3bvJYzPvrB8LSe6Ee',
2825
- overheadIgpAccount: 'FcXbqeqf23ToXfFXKJisQvCnRu3GjCEunNtkqvxAcNWF',
2826
- igpAccount: '76JNRGvHbER5CL7X4Mw6qpzvvKDW3syyfZ5LNXfY53sC',
2827
- },
2828
- };
2829
- //# sourceMappingURL=core-addresses.js.map
2830
2775
  ;// CONCATENATED MODULE: ../svm-sdk/dist/hyperlane/program-bytes.js
2831
2776
  /**
2832
2777
  * Auto-generated program bytes from compiled .so binaries.
@@ -84641,7 +84586,6 @@ class SvmWarpArtifactManager {
84641
84586
 
84642
84587
 
84643
84588
 
84644
-
84645
84589
  class SvmProtocolProvider {
84646
84590
  createProvider(chainMetadata) {
84647
84591
  const rpcUrls = this.getRpcUrls(chainMetadata);
@@ -84659,10 +84603,11 @@ class SvmProtocolProvider {
84659
84603
  return new SvmIsmArtifactManager(rpc);
84660
84604
  }
84661
84605
  createHookArtifactManager(chainMetadata, context) {
84662
- const mailbox = context?.mailbox ?? SVM_CORE_ADDRESSES[chainMetadata.name]?.mailbox;
84663
- (0,validation/* assert */.v)(mailbox, 'Mailbox address is required for SVM hook artifact manager');
84664
84606
  const rpc = createRpc(this.getRpcUrls(chainMetadata)[0]);
84665
- return new SvmHookArtifactManager(rpc, (0,index_node/* address */.hl)(mailbox));
84607
+ const mailbox = context?.mailbox
84608
+ ? (0,index_node/* address */.hl)(context.mailbox)
84609
+ : undefined;
84610
+ return new SvmHookArtifactManager(rpc, mailbox);
84666
84611
  }
84667
84612
  createWarpArtifactManager(chainMetadata, _context) {
84668
84613
  const rpc = createRpc(this.getRpcUrls(chainMetadata)[0]);
package/bundle/index.js CHANGED
@@ -605228,7 +605228,7 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
605228
605228
  /* harmony export */ });
605229
605229
  /* unused harmony export getContext */
605230
605230
  /* harmony import */ var _inquirer_prompts__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(98720);
605231
- /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(78272);
605231
+ /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(24339);
605232
605232
  /* harmony import */ var _hyperlane_xyz_provider_sdk__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(18951);
605233
605233
  /* harmony import */ var _hyperlane_xyz_registry_fs__WEBPACK_IMPORTED_MODULE_12__ = __nccwpck_require__(40384);
605234
605234
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_14__ = __nccwpck_require__(97480);
@@ -606065,7 +606065,7 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
606065
606065
  /* harmony export */ d: () => (/* binding */ validateCoreConfigForAltVM),
606066
606066
  /* harmony export */ u: () => (/* reexport safe */ _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_1__.u_)
606067
606067
  /* harmony export */ });
606068
- /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(78272);
606068
+ /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(24339);
606069
606069
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(38231);
606070
606070
  var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_1__]);
606071
606071
  _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
@@ -606116,7 +606116,7 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
606116
606116
  /* harmony export */ });
606117
606117
  /* harmony import */ var yaml__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(10684);
606118
606118
  /* harmony import */ var _hyperlane_xyz_core_buildArtifact_js__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(74119);
606119
- /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(78272);
606119
+ /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(24339);
606120
606120
  /* harmony import */ var _hyperlane_xyz_provider_sdk__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(18951);
606121
606121
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(76939);
606122
606122
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(26492);
@@ -606606,7 +606606,7 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
606606
606606
  /* harmony import */ var _inquirer_prompts__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(98720);
606607
606607
  /* harmony import */ var yaml__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(10684);
606608
606608
  /* harmony import */ var _hyperlane_xyz_core_buildArtifact_js__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(74119);
606609
- /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(78272);
606609
+ /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(24339);
606610
606610
  /* harmony import */ var _hyperlane_xyz_deploy_sdk_AltVMFileSubmitter__WEBPACK_IMPORTED_MODULE_37__ = __nccwpck_require__(49988);
606611
606611
  /* harmony import */ var _hyperlane_xyz_provider_sdk__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(18951);
606612
606612
  /* harmony import */ var _hyperlane_xyz_provider_sdk_artifact__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(4287);
@@ -607965,7 +607965,7 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
607965
607965
  /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
607966
607966
  /* harmony export */ C: () => (/* binding */ readHookConfig)
607967
607967
  /* harmony export */ });
607968
- /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(78272);
607968
+ /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(24339);
607969
607969
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(69319);
607970
607970
  /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(16639);
607971
607971
  /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(73938);
@@ -607999,7 +607999,10 @@ async function readHookConfig({ context, chain, address, out, }) {
607999
607999
  }
608000
608000
  default: {
608001
608001
  const metadata = context.multiProvider.getChainMetadata(chain);
608002
- const hookReader = (0,_hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_0__/* .createHookReader */ .rz)(metadata, context.multiProvider);
608002
+ const addresses = await context.registry.getChainAddresses(chain);
608003
+ const hookReader = (0,_hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_0__/* .createHookReader */ .rz)(metadata, context.multiProvider, {
608004
+ mailbox: addresses?.mailbox,
608005
+ });
608003
608006
  const config = await hookReader.deriveHookConfig(address);
608004
608007
  const stringConfig = (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__/* .stringifyObject */ .Zm)(config, (0,_utils_files_js__WEBPACK_IMPORTED_MODULE_1__/* .resolveFileFormat */ .Gf)(out), 2);
608005
608008
  if (!out) {
@@ -608027,7 +608030,7 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
608027
608030
  /* harmony export */ E: () => (/* binding */ runIsmDeploy)
608028
608031
  /* harmony export */ });
608029
608032
  /* harmony import */ var _hyperlane_xyz_core_buildArtifact_js__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(74119);
608030
- /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(78272);
608033
+ /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(24339);
608031
608034
  /* harmony import */ var _hyperlane_xyz_provider_sdk_ism__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(96426);
608032
608035
  /* harmony import */ var _hyperlane_xyz_provider_sdk__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(18951);
608033
608036
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(69352);
@@ -608171,7 +608174,7 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
608171
608174
  /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
608172
608175
  /* harmony export */ Y: () => (/* binding */ readIsmConfig)
608173
608176
  /* harmony export */ });
608174
- /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(78272);
608177
+ /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(24339);
608175
608178
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(60715);
608176
608179
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(22887);
608177
608180
  /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(16639);
@@ -608291,7 +608294,7 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
608291
608294
  /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
608292
608295
  /* harmony export */ R: () => (/* binding */ executeCoreRead)
608293
608296
  /* harmony export */ });
608294
- /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(78272);
608297
+ /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(24339);
608295
608298
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(80031);
608296
608299
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(22887);
608297
608300
  /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(21387);
@@ -608357,7 +608360,7 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
608357
608360
  /* unused harmony export logXERC20Limits */
608358
608361
  /* harmony import */ var ethers__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(61934);
608359
608362
  /* harmony import */ var _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(9156);
608360
- /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(78272);
608363
+ /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(24339);
608361
608364
  /* harmony import */ var _hyperlane_xyz_provider_sdk__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(18951);
608362
608365
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(40945);
608363
608366
  /* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(22887);
@@ -616778,7 +616781,7 @@ __webpack_async_result__();
616778
616781
  /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
616779
616782
  /* harmony export */ x: () => (/* binding */ VERSION)
616780
616783
  /* harmony export */ });
616781
- const VERSION = '27.0.0';
616784
+ const VERSION = '27.1.0';
616782
616785
  //# sourceMappingURL=version.js.map
616783
616786
 
616784
616787
  /***/ }),
@@ -634549,7 +634552,7 @@ class AltVMFileSubmitter {
634549
634552
 
634550
634553
  /***/ }),
634551
634554
 
634552
- /***/ 78272:
634555
+ /***/ 24339:
634553
634556
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
634554
634557
 
634555
634558
 
@@ -634558,9 +634561,9 @@ __nccwpck_require__.d(__webpack_exports__, {
634558
634561
  KX: () => (/* reexport */ AltVMCoreModule_AltVMCoreModule),
634559
634562
  rX: () => (/* reexport */ AltVMCoreReader_AltVMCoreReader),
634560
634563
  lU: () => (/* reexport */ AltVMJsonRpcSubmitter),
634561
- rz: () => (/* reexport */ createHookReader),
634564
+ rz: () => (/* reexport */ hook_reader_createHookReader),
634562
634565
  JM: () => (/* reexport */ createHookWriter),
634563
- BT: () => (/* reexport */ createIsmReader),
634566
+ BT: () => (/* reexport */ generic_ism_createIsmReader),
634564
634567
  lN: () => (/* reexport */ createIsmWriter),
634565
634568
  ZJ: () => (/* reexport */ createWarpTokenReader),
634566
634569
  l5: () => (/* reexport */ createWarpTokenWriter),
@@ -634568,7 +634571,7 @@ __nccwpck_require__.d(__webpack_exports__, {
634568
634571
  mM: () => (/* reexport */ validateIsmConfig)
634569
634572
  });
634570
634573
 
634571
- // UNUSED EXPORTS: HookWriter, IsmWriter, UnsupportedIsmTypeError, WarpTokenReader, WarpTokenWriter, coreModuleProvider, validateIsmType
634574
+ // UNUSED EXPORTS: CoreArtifactReader, HookWriter, IsmWriter, UnsupportedIsmTypeError, WarpTokenReader, WarpTokenWriter, coreModuleProvider, validateIsmType
634572
634575
 
634573
634576
  // EXTERNAL MODULE: ../utils/dist/logging.js
634574
634577
  var logging = __nccwpck_require__(94523);
@@ -634632,17 +634635,18 @@ var dist = __nccwpck_require__(18951);
634632
634635
  *
634633
634636
  * @param chainMetadata Chain metadata for the target chain (protocol type is extracted from metadata.protocol)
634634
634637
  * @param chainLookup Chain lookup interface for resolving chain names and domain IDs
634638
+ * @param context Optional deployment context (e.g. mailbox address needed by SVM for merkle tree hook detection)
634635
634639
  * @returns A HookReader instance
634636
634640
  *
634637
634641
  * @example
634638
634642
  * ```typescript
634639
- * const reader = createHookReader(chainMetadata, chainLookup);
634643
+ * const reader = createHookReader(chainMetadata, chainLookup, { mailbox: mailboxAddress });
634640
634644
  * const hookConfig = await reader.read(hookAddress);
634641
634645
  * ```
634642
634646
  */
634643
- function createHookReader(chainMetadata, chainLookup) {
634647
+ function hook_reader_createHookReader(chainMetadata, chainLookup, context) {
634644
634648
  const protocolProvider = (0,dist/* getProtocolProvider */.IU)(chainMetadata.protocol);
634645
- const artifactManager = protocolProvider.createHookArtifactManager(chainMetadata);
634649
+ const artifactManager = protocolProvider.createHookArtifactManager(chainMetadata, context);
634646
634650
  return new HookReader(artifactManager, chainLookup);
634647
634651
  }
634648
634652
  /**
@@ -634677,6 +634681,7 @@ class HookReader {
634677
634681
 
634678
634682
 
634679
634683
 
634684
+
634680
634685
  /**
634681
634686
  * Factory function to create an IsmReader instance.
634682
634687
  * This helper centralizes the creation of artifact managers and ISM readers,
@@ -634692,49 +634697,11 @@ class HookReader {
634692
634697
  * const ismConfig = await reader.read(ismAddress);
634693
634698
  * ```
634694
634699
  */
634695
- function createIsmReader(chainMetadata, chainLookup) {
634700
+ function generic_ism_createIsmReader(chainMetadata, chainLookup) {
634696
634701
  const protocolProvider = (0,dist/* getProtocolProvider */.IU)(chainMetadata.protocol);
634697
634702
  const artifactManager = protocolProvider.createIsmArtifactManager(chainMetadata);
634698
634703
  return new IsmReader(artifactManager, chainLookup);
634699
634704
  }
634700
- /**
634701
- * Converts a DeployedIsmArtifact to DerivedIsmConfig format.
634702
- * This handles the conversion between the new Artifact API and the old Config API.
634703
- */
634704
- function artifactToDerivedConfig(artifact, chainLookup) {
634705
- const config = artifact.config;
634706
- const address = artifact.deployed.address;
634707
- // For routing ISMs, recursively convert nested artifacts
634708
- if (config.type === dist/* AltVM.IsmType */.bx.GO.ROUTING) {
634709
- const domains = {};
634710
- for (const [domainId, nestedArtifact] of Object.entries(config.domains)) {
634711
- // Convert numeric domain ID to chain name for the config output
634712
- const chainName = chainLookup.getChainName(parseInt(domainId));
634713
- if (!chainName) {
634714
- // Skip unknown domains (already warned during expand)
634715
- continue;
634716
- }
634717
- if ((0,dist_artifact/* isArtifactUnderived */.l2)(nestedArtifact)) {
634718
- domains[chainName] = nestedArtifact.deployed.address;
634719
- }
634720
- else if ((0,dist_artifact/* isArtifactDeployed */.R)(nestedArtifact)) {
634721
- domains[chainName] = artifactToDerivedConfig(nestedArtifact, chainLookup);
634722
- }
634723
- // Note: ArtifactState.NEW should never occur in expanded routing configs
634724
- }
634725
- return {
634726
- type: 'domainRoutingIsm',
634727
- owner: config.owner,
634728
- domains,
634729
- address,
634730
- };
634731
- }
634732
- // For other ISM types, just add the address
634733
- return {
634734
- ...config,
634735
- address,
634736
- };
634737
- }
634738
634705
  /**
634739
634706
  * Generic ISM Reader that can read any ISM type by detecting its type
634740
634707
  * and recursively expanding nested ISMs (e.g., for routing ISMs).
@@ -634802,7 +634769,7 @@ class IsmReader {
634802
634769
  */
634803
634770
  async deriveIsmConfig(address) {
634804
634771
  const artifact = await this.read(address);
634805
- return artifactToDerivedConfig(artifact, this.chainLookup);
634772
+ return (0,ism/* ismArtifactToDerivedConfig */.co)(artifact, this.chainLookup);
634806
634773
  }
634807
634774
  }
634808
634775
  //# sourceMappingURL=generic-ism.js.map
@@ -634818,13 +634785,11 @@ class AltVMCoreReader_AltVMCoreReader {
634818
634785
  module: 'AltVMCoreReader',
634819
634786
  });
634820
634787
  ismReader;
634821
- hookReader;
634822
634788
  constructor(chainMetadata, chainLookup, provider) {
634823
634789
  this.chainMetadata = chainMetadata;
634824
634790
  this.chainLookup = chainLookup;
634825
634791
  this.provider = provider;
634826
- this.hookReader = createHookReader(this.chainMetadata, this.chainLookup);
634827
- this.ismReader = createIsmReader(this.chainMetadata, this.chainLookup);
634792
+ this.ismReader = generic_ism_createIsmReader(this.chainMetadata, this.chainLookup);
634828
634793
  }
634829
634794
  async read(address) {
634830
634795
  return this.deriveCoreConfig(address);
@@ -634833,11 +634798,14 @@ class AltVMCoreReader_AltVMCoreReader {
634833
634798
  const mailbox = await this.provider.getMailbox({
634834
634799
  mailboxAddress: mailboxAddress,
634835
634800
  });
634801
+ const hookReader = hook_reader_createHookReader(this.chainMetadata, this.chainLookup, {
634802
+ mailbox: mailboxAddress,
634803
+ });
634836
634804
  return {
634837
634805
  owner: mailbox.owner,
634838
634806
  defaultIsm: await this.ismReader.deriveIsmConfig(mailbox.defaultIsm),
634839
- defaultHook: await this.hookReader.deriveHookConfig(mailbox.defaultHook),
634840
- requiredHook: await this.hookReader.deriveHookConfig(mailbox.requiredHook),
634807
+ defaultHook: await hookReader.deriveHookConfig(mailbox.defaultHook),
634808
+ requiredHook: await hookReader.deriveHookConfig(mailbox.requiredHook),
634841
634809
  };
634842
634810
  }
634843
634811
  }
@@ -635680,6 +635648,134 @@ function coreModuleProvider(chainLookup, chainMetadata) {
635680
635648
  return new CoreModuleProvider(chainLookup, chainMetadata);
635681
635649
  }
635682
635650
  //# sourceMappingURL=core-module.js.map
635651
+ ;// CONCATENATED MODULE: ../provider-sdk/dist/mailbox.js
635652
+
635653
+
635654
+ /**
635655
+ * Converts a DeployedMailboxArtifact (with fully expanded nested ISM/hook artifacts)
635656
+ * to the DerivedCoreConfig format for backward compatibility.
635657
+ *
635658
+ * This function is used by CoreArtifactReader to provide the deriveCoreConfig() method
635659
+ * that existing code expects. The conversion functions for ISM and Hook artifacts
635660
+ * must be passed in to avoid circular dependencies.
635661
+ *
635662
+ * @param artifact The deployed mailbox artifact with expanded nested configs
635663
+ * @param chainLookup Chain lookup for converting domain IDs to chain names
635664
+ * @param converters Object containing ismArtifactToDerivedConfig and hookArtifactToDerivedConfig functions
635665
+ * @returns DerivedCoreConfig in the legacy format (from core.ts)
635666
+ */
635667
+ function mailbox_mailboxArtifactToDerivedCoreConfig(artifact, chainLookup, converters) {
635668
+ const { defaultIsm, defaultHook, requiredHook, owner } = artifact.config;
635669
+ // All nested artifacts should be in DEPLOYED state after CoreArtifactReader.read()
635670
+ assert(isArtifactDeployed(defaultIsm), `Expected defaultIsm to be ${ArtifactState.DEPLOYED}, got ${defaultIsm.artifactState}`);
635671
+ assert(isArtifactDeployed(defaultHook), `Expected defaultHook to be ${ArtifactState.DEPLOYED}, got ${defaultHook.artifactState}`);
635672
+ assert(isArtifactDeployed(requiredHook), `Expected requiredHook to be ${ArtifactState.DEPLOYED}, got ${requiredHook.artifactState}`);
635673
+ return {
635674
+ owner,
635675
+ defaultIsm: converters.ismArtifactToDerivedConfig(defaultIsm, chainLookup),
635676
+ defaultHook: converters.hookArtifactToDerivedConfig(defaultHook, chainLookup),
635677
+ requiredHook: converters.hookArtifactToDerivedConfig(requiredHook, chainLookup),
635678
+ };
635679
+ }
635680
+ //# sourceMappingURL=mailbox.js.map
635681
+ ;// CONCATENATED MODULE: ../deploy-sdk/dist/core/core-artifact-reader.js
635682
+
635683
+
635684
+
635685
+
635686
+
635687
+
635688
+
635689
+ /**
635690
+ * Core Artifact Reader - composite artifact reader that orchestrates mailbox, ISM, and hook readers.
635691
+ *
635692
+ * This implements the artifact API pattern at the "composite" level in deploy-sdk.
635693
+ * It takes a mailbox address and returns a fully expanded MailboxOnChain artifact with
635694
+ * all nested ISM and hook configurations read from the chain.
635695
+ *
635696
+ * Architecture:
635697
+ * - Raw level: IRawMailboxArtifactManager (protocol-specific, in radix-sdk, cosmos-sdk, etc.)
635698
+ * - Composite level: CoreArtifactReader (this class, in deploy-sdk)
635699
+ *
635700
+ * The raw mailbox reader returns UNDERIVED ISM/hook references (just addresses).
635701
+ * This composite reader expands them into full DEPLOYED artifacts with complete configs.
635702
+ */
635703
+ class CoreArtifactReader {
635704
+ mailboxArtifactManager;
635705
+ chainMetadata;
635706
+ chainLookup;
635707
+ logger = rootLogger.child({
635708
+ module: CoreArtifactReader.name,
635709
+ });
635710
+ ismReader;
635711
+ constructor(mailboxArtifactManager, chainMetadata, chainLookup) {
635712
+ this.mailboxArtifactManager = mailboxArtifactManager;
635713
+ this.chainMetadata = chainMetadata;
635714
+ this.chainLookup = chainLookup;
635715
+ this.ismReader = createIsmReader(this.chainMetadata, this.chainLookup);
635716
+ }
635717
+ /**
635718
+ * Read mailbox configuration and expand all nested ISM/hook configs.
635719
+ *
635720
+ * Takes a mailbox address, reads the raw mailbox config (which has UNDERIVED ISM/hook references),
635721
+ * then recursively reads and expands all nested ISM and hook artifacts.
635722
+ *
635723
+ * @param mailboxAddress The deployed mailbox address
635724
+ * @returns Fully expanded mailbox artifact with all nested configs in DEPLOYED state
635725
+ */
635726
+ async read(mailboxAddress) {
635727
+ // 1. Read raw mailbox config - returns UNDERIVED ISM/hook references (just addresses)
635728
+ const rawMailbox = await this.mailboxArtifactManager.readMailbox(mailboxAddress);
635729
+ // 2. Expand nested ISM and hooks using specialized readers
635730
+ // Hook reader is created per-read with mailbox context (needed for SVM hook detection)
635731
+ // Skip reading when address is empty (undefined, null, empty string, or zeroish)
635732
+ const hookReader = createHookReader(this.chainMetadata, this.chainLookup, {
635733
+ mailbox: mailboxAddress,
635734
+ });
635735
+ const defaultIsmAddr = rawMailbox.config.defaultIsm.deployed.address;
635736
+ const defaultHookAddr = rawMailbox.config.defaultHook.deployed.address;
635737
+ const requiredHookAddr = rawMailbox.config.requiredHook.deployed.address;
635738
+ const [defaultIsmArtifact, defaultHookArtifact, requiredHookArtifact] = await Promise.all([
635739
+ isEmptyAddress(defaultIsmAddr)
635740
+ ? rawMailbox.config.defaultIsm
635741
+ : this.ismReader.read(defaultIsmAddr),
635742
+ isEmptyAddress(defaultHookAddr)
635743
+ ? rawMailbox.config.defaultHook
635744
+ : hookReader.read(defaultHookAddr),
635745
+ isEmptyAddress(requiredHookAddr)
635746
+ ? rawMailbox.config.requiredHook
635747
+ : hookReader.read(requiredHookAddr),
635748
+ ]);
635749
+ // 3. Return fully expanded mailbox artifact
635750
+ return {
635751
+ artifactState: ArtifactState.DEPLOYED,
635752
+ config: {
635753
+ owner: rawMailbox.config.owner,
635754
+ defaultIsm: defaultIsmArtifact,
635755
+ defaultHook: defaultHookArtifact,
635756
+ requiredHook: requiredHookArtifact,
635757
+ },
635758
+ deployed: rawMailbox.deployed,
635759
+ };
635760
+ }
635761
+ /**
635762
+ * Backward compatibility method: convert deployed mailbox artifact to DerivedCoreConfig.
635763
+ *
635764
+ * This allows CoreArtifactReader to be used as a drop-in replacement for AltVMCoreReader.
635765
+ * Existing code expects the deriveCoreConfig() method returning DerivedCoreConfig format.
635766
+ *
635767
+ * @param mailboxAddress The deployed mailbox address
635768
+ * @returns DerivedCoreConfig in the legacy format
635769
+ */
635770
+ async deriveCoreConfig(mailboxAddress) {
635771
+ const artifact = await this.read(mailboxAddress);
635772
+ return mailboxArtifactToDerivedCoreConfig(artifact, this.chainLookup, {
635773
+ ismArtifactToDerivedConfig,
635774
+ hookArtifactToDerivedConfig,
635775
+ });
635776
+ }
635777
+ }
635778
+ //# sourceMappingURL=core-artifact-reader.js.map
635683
635779
  // EXTERNAL MODULE: ../provider-sdk/dist/warp.js
635684
635780
  var warp = __nccwpck_require__(17791);
635685
635781
  ;// CONCATENATED MODULE: ../deploy-sdk/dist/warp/warp-reader.js
@@ -635697,21 +635793,23 @@ class WarpTokenReader {
635697
635793
  chainMetadata;
635698
635794
  chainLookup;
635699
635795
  ismReader;
635700
- hookReader;
635701
635796
  constructor(artifactManager, chainMetadata, chainLookup) {
635702
635797
  this.artifactManager = artifactManager;
635703
635798
  this.chainMetadata = chainMetadata;
635704
635799
  this.chainLookup = chainLookup;
635705
- this.ismReader = createIsmReader(chainMetadata, chainLookup);
635706
- this.hookReader = createHookReader(chainMetadata, chainLookup);
635800
+ this.ismReader = generic_ism_createIsmReader(chainMetadata, chainLookup);
635707
635801
  }
635708
635802
  async read(address) {
635709
635803
  // Read warp token via artifactManager - detects type and returns raw config
635710
635804
  const rawArtifact = await this.artifactManager.readWarpToken(address);
635805
+ // Create hook reader with mailbox context from the warp config
635806
+ const hookReader = hook_reader_createHookReader(this.chainMetadata, this.chainLookup, {
635807
+ mailbox: rawArtifact.config.mailbox,
635808
+ });
635711
635809
  // Expand nested ISM artifact if present
635712
635810
  const expandedIsmArtifact = await this.expandIsmArtifact(rawArtifact.config.interchainSecurityModule);
635713
635811
  // Expand nested Hook artifact if present
635714
- const expandedHookArtifact = await this.expandHookArtifact(rawArtifact.config.hook);
635812
+ const expandedHookArtifact = await this.expandHookArtifact(hookReader, rawArtifact.config.hook);
635715
635813
  return {
635716
635814
  ...rawArtifact,
635717
635815
  config: {
@@ -635744,13 +635842,13 @@ class WarpTokenReader {
635744
635842
  * Expands a Hook artifact by recursively reading it if underived.
635745
635843
  * Returns undefined if no Hook is configured.
635746
635844
  */
635747
- async expandHookArtifact(hookArtifact) {
635845
+ async expandHookArtifact(hookReader, hookArtifact) {
635748
635846
  if (!hookArtifact) {
635749
635847
  return undefined;
635750
635848
  }
635751
635849
  // If Hook is underived (just an address), read it recursively to get full config
635752
635850
  if ((0,dist_artifact/* isArtifactUnderived */.l2)(hookArtifact)) {
635753
- return this.hookReader.read(hookArtifact.deployed.address);
635851
+ return hookReader.read(hookArtifact.deployed.address);
635754
635852
  }
635755
635853
  // If already a full deployed artifact, use as-is
635756
635854
  if ((0,dist_artifact/* isArtifactDeployed */.R)(hookArtifact)) {
@@ -636041,7 +636139,7 @@ async function loadProtocolProviders(neededProtocols) {
636041
636139
  break;
636042
636140
  }
636043
636141
  case dist/* ProtocolType */.Hb.Radix: {
636044
- const { RadixProtocolProvider } = await Promise.resolve(/* import() */).then(__nccwpck_require__.bind(__nccwpck_require__, 26224));
636142
+ const { RadixProtocolProvider } = await Promise.resolve(/* import() */).then(__nccwpck_require__.bind(__nccwpck_require__, 37285));
636045
636143
  (0,dist/* registerProtocol */.oD)(protocol, () => new RadixProtocolProvider());
636046
636144
  break;
636047
636145
  }
@@ -636051,7 +636149,7 @@ async function loadProtocolProviders(neededProtocols) {
636051
636149
  break;
636052
636150
  }
636053
636151
  case dist/* ProtocolType */.Hb.Sealevel: {
636054
- const { SealevelProtocolProvider } = await Promise.all(/* import() */[__nccwpck_require__.e(673), __nccwpck_require__.e(732)]).then(__nccwpck_require__.bind(__nccwpck_require__, 34732));
636152
+ const { SealevelProtocolProvider } = await Promise.all(/* import() */[__nccwpck_require__.e(673), __nccwpck_require__.e(566)]).then(__nccwpck_require__.bind(__nccwpck_require__, 7566));
636055
636153
  (0,dist/* registerProtocol */.oD)(protocol, () => new SealevelProtocolProvider());
636056
636154
  break;
636057
636155
  }
@@ -636075,6 +636173,7 @@ async function loadProtocolProviders(neededProtocols) {
636075
636173
 
636076
636174
 
636077
636175
 
636176
+
636078
636177
  //# sourceMappingURL=index.js.map
636079
636178
 
636080
636179
  /***/ }),
@@ -638657,7 +638756,7 @@ function computeRemoteRoutersUpdates(currentRoutersConfig, expectedRoutersConfig
638657
638756
 
638658
638757
  /***/ }),
638659
638758
 
638660
- /***/ 26224:
638759
+ /***/ 37285:
638661
638760
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
638662
638761
 
638663
638762
 
@@ -638668,7 +638767,7 @@ __nccwpck_require__.d(__webpack_exports__, {
638668
638767
  JZ: () => (/* reexport */ RadixSigner)
638669
638768
  });
638670
638769
 
638671
- // UNUSED EXPORTS: NetworkId, RadixHookArtifactManager, RadixIsmArtifactManager, RadixWarpArtifactManager, stringToTransactionManifest, transactionManifestToString
638770
+ // UNUSED EXPORTS: NetworkId, RadixHookArtifactManager, RadixIsmArtifactManager, RadixMailboxArtifactManager, RadixValidatorAnnounceArtifactManager, RadixWarpArtifactManager, stringToTransactionManifest, transactionManifestToString
638672
638771
 
638673
638772
  ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@radixdlt+radix-engine-toolkit@1.0.5/node_modules/@radixdlt/radix-engine-toolkit/dist/radix-engine-toolkit.mjs
638674
638773
  var __defProp = Object.defineProperty;
@@ -669343,6 +669442,20 @@ function getFieldHexValueFromEntityState(fieldName, entityAddress, entityState,
669343
669442
  (0,validation/* assert */.v)(!(0,dist_typeof/* isNullish */.u)(hexValue), `Expected ${fieldName} hex field to be defined on radix component at ${entityAddress}`);
669344
669443
  return hexValue;
669345
669444
  }
669445
+ function getOptionalFieldValueFromEntityState(fieldName, entityState, formatter) {
669446
+ const field = entityState.fields.find((f) => f.field_name === fieldName);
669447
+ if (!field ||
669448
+ (field.type_name === 'Option' && field.variant_name === 'None')) {
669449
+ return undefined;
669450
+ }
669451
+ const value = field.kind === 'Enum' && field.type_name === 'Option'
669452
+ ? field.fields?.at(0)?.value
669453
+ : field.value;
669454
+ if ((0,dist_typeof/* isNullish */.u)(value)) {
669455
+ return undefined;
669456
+ }
669457
+ return formatter ? formatter(value) : value;
669458
+ }
669346
669459
  function getFieldElementsFromEntityState(fieldName, entityAddress, entityState, formatter) {
669347
669460
  const value = entityState.fields.find((f) => f.field_name === fieldName)?.elements;
669348
669461
  (0,validation/* assert */.v)(!(0,dist_typeof/* isNullish */.u)(value), `Expected ${fieldName} field to be defined on radix component at ${entityAddress}`);
@@ -676178,9 +676291,9 @@ async function getMailboxConfig(gateway, mailboxAddress) {
676178
676291
  owner,
676179
676292
  localDomain: getFieldValueFromEntityState('local_domain', mailboxAddress, mailboxState, (v) => parseInt(v, 10)),
676180
676293
  nonce: getFieldValueFromEntityState('nonce', mailboxAddress, mailboxState, (v) => parseInt(v, 10)),
676181
- defaultIsm: getFieldValueFromEntityState('default_ism', mailboxAddress, mailboxState),
676182
- defaultHook: getFieldValueFromEntityState('default_hook', mailboxAddress, mailboxState),
676183
- requiredHook: getFieldValueFromEntityState('required_hook', mailboxAddress, mailboxState),
676294
+ defaultIsm: getOptionalFieldValueFromEntityState('default_ism', mailboxState),
676295
+ defaultHook: getOptionalFieldValueFromEntityState('default_hook', mailboxState),
676296
+ requiredHook: getOptionalFieldValueFromEntityState('required_hook', mailboxState),
676184
676297
  };
676185
676298
  }
676186
676299
  async function isMessageDelivered(gateway, mailboxAddress, messageId) {
@@ -676617,7 +676730,13 @@ class RadixProvider {
676617
676730
  }
676618
676731
  // ### QUERY CORE ###
676619
676732
  async getMailbox(req) {
676620
- return getMailboxConfig(this.gateway, req.mailboxAddress);
676733
+ const config = await getMailboxConfig(this.gateway, req.mailboxAddress);
676734
+ return {
676735
+ ...config,
676736
+ defaultIsm: config.defaultIsm ?? addresses/* ZERO_ADDRESS_HEX_32 */.qx,
676737
+ defaultHook: config.defaultHook ?? addresses/* ZERO_ADDRESS_HEX_32 */.qx,
676738
+ requiredHook: config.requiredHook ?? addresses/* ZERO_ADDRESS_HEX_32 */.qx,
676739
+ };
676621
676740
  }
676622
676741
  async isMessageDelivered(req) {
676623
676742
  return isMessageDelivered(this.gateway, req.mailboxAddress, req.messageId);
@@ -677609,6 +677728,288 @@ class RadixProtocolProvider {
677609
677728
  }
677610
677729
  }
677611
677730
  //# sourceMappingURL=protocol.js.map
677731
+ ;// CONCATENATED MODULE: ../radix-sdk/dist/mailbox/mailbox.js
677732
+
677733
+
677734
+
677735
+
677736
+ class mailbox_RadixMailboxReader {
677737
+ gateway;
677738
+ constructor(gateway) {
677739
+ this.gateway = gateway;
677740
+ }
677741
+ async read(address) {
677742
+ const mailboxConfig = await getMailboxConfig(this.gateway, address);
677743
+ return {
677744
+ artifactState: dist_artifact/* ArtifactState */.O2.DEPLOYED,
677745
+ config: {
677746
+ owner: mailboxConfig.owner,
677747
+ defaultIsm: {
677748
+ artifactState: dist_artifact/* ArtifactState */.O2.UNDERIVED,
677749
+ deployed: {
677750
+ address: mailboxConfig.defaultIsm || addresses/* ZERO_ADDRESS_HEX_32 */.qx,
677751
+ },
677752
+ },
677753
+ defaultHook: {
677754
+ artifactState: dist_artifact/* ArtifactState */.O2.UNDERIVED,
677755
+ deployed: {
677756
+ address: mailboxConfig.defaultHook || addresses/* ZERO_ADDRESS_HEX_32 */.qx,
677757
+ },
677758
+ },
677759
+ requiredHook: {
677760
+ artifactState: dist_artifact/* ArtifactState */.O2.UNDERIVED,
677761
+ deployed: {
677762
+ address: mailboxConfig.requiredHook || addresses/* ZERO_ADDRESS_HEX_32 */.qx,
677763
+ },
677764
+ },
677765
+ },
677766
+ deployed: {
677767
+ address: mailboxConfig.address,
677768
+ domainId: mailboxConfig.localDomain,
677769
+ },
677770
+ };
677771
+ }
677772
+ }
677773
+ class mailbox_RadixMailboxWriter extends mailbox_RadixMailboxReader {
677774
+ signer;
677775
+ base;
677776
+ domainId;
677777
+ constructor(gateway, signer, base, domainId) {
677778
+ super(gateway);
677779
+ this.signer = signer;
677780
+ this.base = base;
677781
+ this.domainId = domainId;
677782
+ }
677783
+ async create(artifact) {
677784
+ const { config } = artifact;
677785
+ const allReceipts = [];
677786
+ // Extract addresses from artifact references
677787
+ const defaultIsmAddress = config.defaultIsm.deployed.address;
677788
+ const defaultHookAddress = config.defaultHook.deployed.address;
677789
+ const requiredHookAddress = config.requiredHook.deployed.address;
677790
+ const createTx = await getCreateMailboxTx(this.base, this.signer.getAddress(), this.domainId);
677791
+ const createReceipt = await this.signer.signAndBroadcast(createTx);
677792
+ const address = await this.base.getNewComponent(createReceipt);
677793
+ allReceipts.push(createReceipt);
677794
+ // Set default ISM (only if address is set)
677795
+ if (!(0,addresses/* isEmptyAddress */.Ae)(defaultIsmAddress)) {
677796
+ const setIsmTx = await getSetMailboxDefaultIsmTx(this.base, this.signer.getAddress(), {
677797
+ mailboxAddress: address,
677798
+ ismAddress: defaultIsmAddress,
677799
+ });
677800
+ const ismReceipt = await this.signer.signAndBroadcast(setIsmTx);
677801
+ allReceipts.push(ismReceipt);
677802
+ }
677803
+ // Set default hook (only if address is set)
677804
+ if (!(0,addresses/* isEmptyAddress */.Ae)(defaultHookAddress)) {
677805
+ const setDefaultHookTx = await getSetMailboxDefaultHookTx(this.base, this.signer.getAddress(), {
677806
+ mailboxAddress: address,
677807
+ hookAddress: defaultHookAddress,
677808
+ });
677809
+ const defaultHookReceipt = await this.signer.signAndBroadcast(setDefaultHookTx);
677810
+ allReceipts.push(defaultHookReceipt);
677811
+ }
677812
+ // Set required hook (only if address is set)
677813
+ if (!(0,addresses/* isEmptyAddress */.Ae)(requiredHookAddress)) {
677814
+ const setRequiredHookTx = await getSetMailboxRequiredHookTx(this.base, this.signer.getAddress(), {
677815
+ mailboxAddress: address,
677816
+ hookAddress: requiredHookAddress,
677817
+ });
677818
+ const requiredHookReceipt = await this.signer.signAndBroadcast(setRequiredHookTx);
677819
+ allReceipts.push(requiredHookReceipt);
677820
+ }
677821
+ // Note: Ownership is NOT transferred during creation. The deployer retains
677822
+ // ownership to allow setting ISM and hooks after initial deployment, which
677823
+ // require owner permissions. Use update() to transfer ownership to the
677824
+ // intended owner once all configuration is complete.
677825
+ const deployedArtifact = {
677826
+ artifactState: dist_artifact/* ArtifactState */.O2.DEPLOYED,
677827
+ config: {
677828
+ ...artifact.config,
677829
+ owner: this.signer.getAddress(),
677830
+ },
677831
+ deployed: {
677832
+ address,
677833
+ domainId: this.domainId,
677834
+ },
677835
+ };
677836
+ return [deployedArtifact, allReceipts];
677837
+ }
677838
+ async update(artifact) {
677839
+ const { config, deployed } = artifact;
677840
+ const updateTxs = [];
677841
+ // Read current state
677842
+ const currentState = await this.read(deployed.address);
677843
+ // Extract addresses from artifact references
677844
+ const expectedDefaultIsmAddress = config.defaultIsm.deployed.address;
677845
+ const expectedDefaultHookAddress = config.defaultHook.deployed.address;
677846
+ const expectedRequiredHookAddress = config.requiredHook.deployed.address;
677847
+ // Extract addresses from current state
677848
+ const currentDefaultIsmAddress = currentState.config.defaultIsm.deployed.address;
677849
+ const currentDefaultHookAddress = currentState.config.defaultHook.deployed.address;
677850
+ const currentRequiredHookAddress = currentState.config.requiredHook.deployed.address;
677851
+ // Update default ISM if changed
677852
+ if (!(0,addresses/* eqOptionalAddress */.le)(currentDefaultIsmAddress, expectedDefaultIsmAddress, addresses/* eqAddressRadix */.J_)) {
677853
+ const setIsmTx = await getSetMailboxDefaultIsmTx(this.base, this.signer.getAddress(), {
677854
+ mailboxAddress: deployed.address,
677855
+ ismAddress: expectedDefaultIsmAddress,
677856
+ });
677857
+ updateTxs.push({
677858
+ annotation: `Update mailbox default ISM to ${expectedDefaultIsmAddress}`,
677859
+ networkId: this.base.getNetworkId(),
677860
+ manifest: setIsmTx,
677861
+ });
677862
+ }
677863
+ // Update default hook if changed
677864
+ if (!(0,addresses/* eqOptionalAddress */.le)(currentDefaultHookAddress, expectedDefaultHookAddress, addresses/* eqAddressRadix */.J_)) {
677865
+ const setDefaultHookTx = await getSetMailboxDefaultHookTx(this.base, this.signer.getAddress(), {
677866
+ mailboxAddress: deployed.address,
677867
+ hookAddress: expectedDefaultHookAddress,
677868
+ });
677869
+ updateTxs.push({
677870
+ annotation: `Update mailbox default hook to ${expectedDefaultHookAddress}`,
677871
+ networkId: this.base.getNetworkId(),
677872
+ manifest: setDefaultHookTx,
677873
+ });
677874
+ }
677875
+ // Update required hook if changed
677876
+ if (!(0,addresses/* eqOptionalAddress */.le)(currentRequiredHookAddress, expectedRequiredHookAddress, addresses/* eqAddressRadix */.J_)) {
677877
+ const setRequiredHookTx = await getSetMailboxRequiredHookTx(this.base, this.signer.getAddress(), {
677878
+ mailboxAddress: deployed.address,
677879
+ hookAddress: expectedRequiredHookAddress,
677880
+ });
677881
+ updateTxs.push({
677882
+ annotation: `Update mailbox required hook to ${expectedRequiredHookAddress}`,
677883
+ networkId: this.base.getNetworkId(),
677884
+ manifest: setRequiredHookTx,
677885
+ });
677886
+ }
677887
+ // Update owner if changed (do this last to avoid permission issues)
677888
+ if (!(0,addresses/* eqAddressRadix */.J_)(currentState.config.owner, config.owner)) {
677889
+ const setOwnerTx = await getSetMailboxOwnerTx(this.base, this.gateway, this.signer.getAddress(), {
677890
+ mailboxAddress: deployed.address,
677891
+ newOwner: config.owner,
677892
+ });
677893
+ updateTxs.push({
677894
+ annotation: `Transfer mailbox ownership to ${config.owner}`,
677895
+ networkId: this.base.getNetworkId(),
677896
+ manifest: setOwnerTx,
677897
+ });
677898
+ }
677899
+ return updateTxs;
677900
+ }
677901
+ }
677902
+ //# sourceMappingURL=mailbox.js.map
677903
+ ;// CONCATENATED MODULE: ../radix-sdk/dist/mailbox/mailbox-artifact-manager.js
677904
+
677905
+ class RadixMailboxArtifactManager {
677906
+ gateway;
677907
+ base;
677908
+ domainId;
677909
+ constructor(gateway, base, domainId) {
677910
+ this.gateway = gateway;
677911
+ this.base = base;
677912
+ this.domainId = domainId;
677913
+ }
677914
+ async readMailbox(address) {
677915
+ const reader = this.createReader('mailbox');
677916
+ return reader.read(address);
677917
+ }
677918
+ createReader(_type) {
677919
+ return new RadixMailboxReader(this.gateway);
677920
+ }
677921
+ createWriter(_type, signer) {
677922
+ const baseSigner = signer.getBaseSigner();
677923
+ return new RadixMailboxWriter(this.gateway, baseSigner, this.base, this.domainId);
677924
+ }
677925
+ }
677926
+ //# sourceMappingURL=mailbox-artifact-manager.js.map
677927
+ ;// CONCATENATED MODULE: ../radix-sdk/dist/validator-announce/validator-announce-query.js
677928
+
677929
+ async function getValidatorAnnounceConfig(gateway, validatorAnnounceAddress) {
677930
+ const validatorAnnounceDetails = await getRadixComponentDetails(gateway, validatorAnnounceAddress, 'validator_announce');
677931
+ const validatorAnnounceState = getComponentState(validatorAnnounceAddress, validatorAnnounceDetails);
677932
+ return {
677933
+ address: validatorAnnounceAddress,
677934
+ mailboxAddress: getFieldValueFromEntityState('mailbox', validatorAnnounceAddress, validatorAnnounceState),
677935
+ };
677936
+ }
677937
+ //# sourceMappingURL=validator-announce-query.js.map
677938
+ ;// CONCATENATED MODULE: ../radix-sdk/dist/validator-announce/validator-announce.js
677939
+
677940
+
677941
+
677942
+ class validator_announce_RadixValidatorAnnounceReader {
677943
+ gateway;
677944
+ constructor(gateway) {
677945
+ this.gateway = gateway;
677946
+ }
677947
+ async read(address) {
677948
+ const validatorAnnounceConfig = await getValidatorAnnounceConfig(this.gateway, address);
677949
+ return {
677950
+ artifactState: dist_artifact/* ArtifactState */.O2.DEPLOYED,
677951
+ config: {
677952
+ mailboxAddress: validatorAnnounceConfig.mailboxAddress,
677953
+ },
677954
+ deployed: {
677955
+ address: validatorAnnounceConfig.address,
677956
+ },
677957
+ };
677958
+ }
677959
+ }
677960
+ class validator_announce_RadixValidatorAnnounceWriter extends validator_announce_RadixValidatorAnnounceReader {
677961
+ signer;
677962
+ base;
677963
+ constructor(gateway, signer, base) {
677964
+ super(gateway);
677965
+ this.signer = signer;
677966
+ this.base = base;
677967
+ }
677968
+ async create(artifact) {
677969
+ const { config } = artifact;
677970
+ const allReceipts = [];
677971
+ // Create the validator announce contract
677972
+ const createTx = await getCreateValidatorAnnounceTx(this.base, this.signer.getAddress(), config.mailboxAddress);
677973
+ const createReceipt = await this.signer.signAndBroadcast(createTx);
677974
+ const address = await this.base.getNewComponent(createReceipt);
677975
+ allReceipts.push(createReceipt);
677976
+ const deployedArtifact = {
677977
+ artifactState: dist_artifact/* ArtifactState */.O2.DEPLOYED,
677978
+ config: artifact.config,
677979
+ deployed: {
677980
+ address,
677981
+ },
677982
+ };
677983
+ return [deployedArtifact, allReceipts];
677984
+ }
677985
+ async update(_artifact) {
677986
+ // ValidatorAnnounce has no mutable state - mailbox address is set at creation
677987
+ return [];
677988
+ }
677989
+ }
677990
+ //# sourceMappingURL=validator-announce.js.map
677991
+ ;// CONCATENATED MODULE: ../radix-sdk/dist/validator-announce/validator-announce-artifact-manager.js
677992
+
677993
+ class RadixValidatorAnnounceArtifactManager {
677994
+ gateway;
677995
+ base;
677996
+ constructor(gateway, base) {
677997
+ this.gateway = gateway;
677998
+ this.base = base;
677999
+ }
678000
+ async readValidatorAnnounce(address) {
678001
+ const reader = this.createReader('validatorAnnounce');
678002
+ return reader.read(address);
678003
+ }
678004
+ createReader(_type) {
678005
+ return new RadixValidatorAnnounceReader(this.gateway);
678006
+ }
678007
+ createWriter(_type, signer) {
678008
+ const baseSigner = signer.getBaseSigner();
678009
+ return new RadixValidatorAnnounceWriter(this.gateway, baseSigner, this.base);
678010
+ }
678011
+ }
678012
+ //# sourceMappingURL=validator-announce-artifact-manager.js.map
677612
678013
  ;// CONCATENATED MODULE: ../radix-sdk/dist/index.js
677613
678014
 
677614
678015
 
@@ -677619,6 +678020,8 @@ class RadixProtocolProvider {
677619
678020
 
677620
678021
 
677621
678022
 
678023
+
678024
+
677622
678025
  //# sourceMappingURL=index.js.map
677623
678026
 
677624
678027
  /***/ }),
@@ -697888,6 +698291,15 @@ const defaultMultisigConfigs = {
697888
698291
  },
697889
698292
  ],
697890
698293
  },
698294
+ igra: {
698295
+ threshold: 1,
698296
+ validators: [
698297
+ {
698298
+ address: '0x485f0739639e46d3b06b1b92debe2ade56d8bfb1',
698299
+ alias: AW_VALIDATOR_ALIAS,
698300
+ },
698301
+ ],
698302
+ },
697891
698303
  immutablezkevmmainnet: {
697892
698304
  threshold: 2,
697893
698305
  validators: [
@@ -703647,7 +704059,7 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
703647
704059
  /* harmony export */ });
703648
704060
  /* harmony import */ var _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(9156);
703649
704061
  /* harmony import */ var _hyperlane_xyz_core_buildArtifact_js__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(74119);
703650
- /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(78272);
704062
+ /* harmony import */ var _hyperlane_xyz_deploy_sdk__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(24339);
703651
704063
  /* harmony import */ var _hyperlane_xyz_provider_sdk__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(18951);
703652
704064
  /* harmony import */ var _hyperlane_xyz_provider_sdk_artifact__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(4287);
703653
704065
  /* harmony import */ var _hyperlane_xyz_provider_sdk_hook__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(77230);
@@ -712456,7 +712868,7 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
712456
712868
  /* harmony import */ var zksync_ethers__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(37501);
712457
712869
  /* harmony import */ var _hyperlane_xyz_aleo_sdk__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(59529);
712458
712870
  /* harmony import */ var _hyperlane_xyz_cosmos_sdk__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(68185);
712459
- /* harmony import */ var _hyperlane_xyz_radix_sdk__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(26224);
712871
+ /* harmony import */ var _hyperlane_xyz_radix_sdk__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(37285);
712460
712872
  /* harmony import */ var _hyperlane_xyz_tron_sdk__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(43430);
712461
712873
  /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(73689);
712462
712874
  /* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_14__ = __nccwpck_require__(21387);
@@ -748799,6 +749211,11 @@ const chainOverrides = {
748799
749211
  multiSend: '0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761',
748800
749212
  multiSendCallOnly: '0x40A2aCCbd92BCA938b02010E17A5b8929b49130D',
748801
749213
  },
749214
+ // igra
749215
+ 38833: {
749216
+ multiSend: '0x218543288004CD07832472D464648173c77D7eB7',
749217
+ multiSendCallOnly: '0xA83c336B20401Af773B6219BA5027174338D1836',
749218
+ },
748802
749219
  };
748803
749220
  async function getSafe(chain, multiProvider, safeAddress, signer) {
748804
749221
  // Get the chain id for the given chain
@@ -749732,8 +750149,8 @@ class EvmMultiProtocolSignerAdapter {
749732
750149
  }
749733
750150
  }
749734
750151
  //# sourceMappingURL=ethersv5.js.map
749735
- // EXTERNAL MODULE: ../radix-sdk/dist/index.js + 34 modules
749736
- var radix_sdk_dist = __nccwpck_require__(26224);
750152
+ // EXTERNAL MODULE: ../radix-sdk/dist/index.js + 39 modules
750153
+ var radix_sdk_dist = __nccwpck_require__(37285);
749737
750154
  ;// CONCATENATED MODULE: ../sdk/dist/signers/radix/radix-toolkit.js
749738
750155
 
749739
750156
  class RadixMultiProtocolSignerAdapter {
@@ -750969,7 +751386,11 @@ var xerc20 = __nccwpck_require__(32892);
750969
751386
 
750970
751387
  const REBALANCING_CONTRACT_VERSION = '8.0.0';
750971
751388
  const TOKEN_FEE_CONTRACT_VERSION = '10.0.0';
751389
+ // version that introduced the fractional scale interface
750972
751390
  const SCALE_FRACTION_VERSION = '11.0.0';
751391
+ // version that introduced the legacy scale interface
751392
+ // https://github.com/hyperlane-xyz/hyperlane-monorepo/releases/tag/%40hyperlane-xyz%2Fcore%406.0.0
751393
+ const SCALE_VERSION = '6.0.0';
750973
751394
  // Version that first introduced ppm precision for CCTP V2 fee storage (was bps before)
750974
751395
  const CCTP_PPM_STORAGE_VERSION = '10.2.0';
750975
751396
  // Version that renamed maxFeeBps() to maxFeePpm() on-chain
@@ -751706,6 +752127,10 @@ class EvmWarpRouteReader extends EvmRouterReader/* EvmRouterReader */.V {
751706
752127
  async fetchScale(tokenRouterAddress) {
751707
752128
  const packageVersion = await this.fetchPackageVersion(tokenRouterAddress);
751708
752129
  const hasScaleFractionInterface = (0,umd.compareVersions)(packageVersion, SCALE_FRACTION_VERSION) >= 0;
752130
+ const hasScaleInterface = (0,umd.compareVersions)(packageVersion, SCALE_VERSION) >= 0;
752131
+ if (!hasScaleFractionInterface && !hasScaleInterface) {
752132
+ return;
752133
+ }
751709
752134
  const tokenRouter = dist/* TokenRouter__factory */.NgW.connect(tokenRouterAddress, this.provider);
751710
752135
  let result;
751711
752136
  if (hasScaleFractionInterface) {
@@ -764424,7 +764849,11 @@ class WarpCore {
764424
764849
  for (const connection of config.connections || []) {
764425
764850
  const token1 = tokens[i];
764426
764851
  const { chainName, addressOrDenom } = (0,_token_TokenConnection_js__WEBPACK_IMPORTED_MODULE_4__/* .parseTokenConnectionId */ .YD)(connection.token);
764427
- const token2 = tokens.find((t) => t.chainName === chainName && t.addressOrDenom === addressOrDenom);
764852
+ // If token1 has a warpRouteId, token2 must share it disambiguates
764853
+ // tokens at the same address (e.g. M0 Portal: mUSD, wM, USDSC)
764854
+ const token2 = tokens.find((t) => t.chainName === chainName &&
764855
+ t.addressOrDenom === addressOrDenom &&
764856
+ (!token1.warpRouteId || t.warpRouteId === token1.warpRouteId));
764428
764857
  (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_5__/* .assert */ .v)(token2, `Connected token not found: ${chainName} ${addressOrDenom}`);
764429
764858
  token1.addConnection({
764430
764859
  ...connection,
@@ -765350,6 +765779,10 @@ const TokenConfigSchema = types/* object */.Ik({
765350
765779
  .optional()
765351
765780
  .describe('The CoinGecko id of the token, used for price lookups'),
765352
765781
  scale: customZodTypes/* ZUint */.xg.lt(256).optional().describe('The scaling factor of the token'),
765782
+ warpRouteId: types/* string */.Yj()
765783
+ .min(1)
765784
+ .optional()
765785
+ .describe('Unique warp route identifier, used to disambiguate tokens that share the same addressOrDenom on the same chain (e.g. M0 Portal tokens)'),
765353
765786
  });
765354
765787
  //# sourceMappingURL=IToken.js.map
765355
765788
  ;// CONCATENATED MODULE: ../sdk/dist/warp/types.js
@@ -900035,6 +900468,7 @@ class TronProtocolProvider {
900035
900468
  /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
900036
900469
  /* harmony export */ $Q: () => (/* binding */ isPrivateKeyEvm),
900037
900470
  /* harmony export */ $m: () => (/* binding */ isValidAddress),
900471
+ /* harmony export */ Ae: () => (/* binding */ isEmptyAddress),
900038
900472
  /* harmony export */ DR: () => (/* binding */ eqAddressSol),
900039
900473
  /* harmony export */ Ek: () => (/* binding */ normalizeAddressEvm),
900040
900474
  /* harmony export */ Hi: () => (/* binding */ isZeroishAddress),
@@ -900423,6 +900857,12 @@ function isValidTransactionHash(input, protocol) {
900423
900857
  return false;
900424
900858
  }
900425
900859
  }
900860
+ /**
900861
+ * Returns true if the address is effectively not set: undefined, null, empty string, or a known zero address pattern.
900862
+ */
900863
+ function isEmptyAddress(address) {
900864
+ return !address || isZeroishAddress(address);
900865
+ }
900426
900866
  function isZeroishAddress(address) {
900427
900867
  return (EVM_ZEROISH_ADDRESS_REGEX.test(address) ||
900428
900868
  SEALEVEL_ZEROISH_ADDRESS_REGEX.test(address) ||
@@ -904448,7 +904888,7 @@ module.exports = /*#__PURE__*/JSON.parse('[{"type":"function","name":"proveL2Lea
904448
904888
  /***/ 77087:
904449
904889
  /***/ ((module) => {
904450
904890
 
904451
- module.exports = {"rE":"27.0.0"};
904891
+ module.exports = {"rE":"27.1.0"};
904452
904892
 
904453
904893
  /***/ })
904454
904894
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperlane-xyz/cli",
3
- "version": "27.0.0",
3
+ "version": "27.1.0",
4
4
  "description": "A command-line utility for common Hyperlane operations",
5
5
  "keywords": [
6
6
  "CLI",
@@ -78,20 +78,20 @@
78
78
  "zod": "^3.21.2",
79
79
  "zod-validation-error": "^3.3.0",
80
80
  "zx": "^8.1.4",
81
- "@hyperlane-xyz/aleo-sdk": "27.0.0",
81
+ "@hyperlane-xyz/aleo-sdk": "27.1.0",
82
82
  "@hyperlane-xyz/core": "11.0.2",
83
- "@hyperlane-xyz/cosmos-sdk": "27.0.0",
84
- "@hyperlane-xyz/deploy-sdk": "3.0.1",
85
- "@hyperlane-xyz/http-registry-server": "27.0.0",
86
- "@hyperlane-xyz/provider-sdk": "3.0.1",
87
- "@hyperlane-xyz/radix-sdk": "27.0.0",
88
- "@hyperlane-xyz/rebalancer": "27.0.0",
89
- "@hyperlane-xyz/relayer": "1.1.8",
90
- "@hyperlane-xyz/sdk": "27.0.0",
91
- "@hyperlane-xyz/sealevel-sdk": "27.0.0",
92
- "@hyperlane-xyz/tron-sdk": "22.1.0",
93
- "@hyperlane-xyz/tsconfig": "^27.0.0",
94
- "@hyperlane-xyz/utils": "27.0.0"
83
+ "@hyperlane-xyz/cosmos-sdk": "27.1.0",
84
+ "@hyperlane-xyz/deploy-sdk": "3.1.0",
85
+ "@hyperlane-xyz/http-registry-server": "27.1.0",
86
+ "@hyperlane-xyz/provider-sdk": "3.1.0",
87
+ "@hyperlane-xyz/radix-sdk": "27.1.0",
88
+ "@hyperlane-xyz/rebalancer": "27.1.0",
89
+ "@hyperlane-xyz/sdk": "27.1.0",
90
+ "@hyperlane-xyz/relayer": "1.1.9",
91
+ "@hyperlane-xyz/sealevel-sdk": "27.1.0",
92
+ "@hyperlane-xyz/utils": "27.1.0",
93
+ "@hyperlane-xyz/tron-sdk": "22.1.1",
94
+ "@hyperlane-xyz/tsconfig": "^27.1.0"
95
95
  },
96
96
  "engines": {
97
97
  "node": ">=16"