@hyperlane-xyz/sdk 14.0.0 → 14.2.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 (116) hide show
  1. package/dist/ccip/consts.d.ts.map +1 -1
  2. package/dist/ccip/consts.js +0 -20
  3. package/dist/ccip/consts.js.map +1 -1
  4. package/dist/consts/multisigIsm.d.ts.map +1 -1
  5. package/dist/consts/multisigIsm.js +27 -22
  6. package/dist/consts/multisigIsm.js.map +1 -1
  7. package/dist/contracts/contracts.d.ts +2 -0
  8. package/dist/contracts/contracts.d.ts.map +1 -1
  9. package/dist/contracts/contracts.hardhat-test.d.ts +2 -0
  10. package/dist/contracts/contracts.hardhat-test.d.ts.map +1 -0
  11. package/dist/contracts/contracts.hardhat-test.js +34 -0
  12. package/dist/contracts/contracts.hardhat-test.js.map +1 -0
  13. package/dist/contracts/contracts.js +7 -0
  14. package/dist/contracts/contracts.js.map +1 -1
  15. package/dist/core/CosmosNativeCoreModule.d.ts +5 -5
  16. package/dist/core/CosmosNativeCoreModule.d.ts.map +1 -1
  17. package/dist/core/CosmosNativeCoreModule.js +10 -10
  18. package/dist/core/CosmosNativeCoreModule.js.map +1 -1
  19. package/dist/core/EvmCoreModule.d.ts +3 -1
  20. package/dist/core/EvmCoreModule.d.ts.map +1 -1
  21. package/dist/core/EvmCoreModule.hardhat-test.js +85 -1
  22. package/dist/core/EvmCoreModule.hardhat-test.js.map +1 -1
  23. package/dist/core/EvmCoreModule.js +32 -2
  24. package/dist/core/EvmCoreModule.js.map +1 -1
  25. package/dist/core/HyperlaneRelayer.d.ts +43 -0
  26. package/dist/core/HyperlaneRelayer.d.ts.map +1 -1
  27. package/dist/core/types.d.ts +741 -18
  28. package/dist/core/types.d.ts.map +1 -1
  29. package/dist/core/types.js.map +1 -1
  30. package/dist/deploy/proxy.d.ts +9 -2
  31. package/dist/deploy/proxy.d.ts.map +1 -1
  32. package/dist/deploy/proxy.js +21 -0
  33. package/dist/deploy/proxy.js.map +1 -1
  34. package/dist/deploy/verify/ContractVerifier.d.ts.map +1 -1
  35. package/dist/deploy/verify/ContractVerifier.js +0 -6
  36. package/dist/deploy/verify/ContractVerifier.js.map +1 -1
  37. package/dist/gas/oracle/types.d.ts +51 -0
  38. package/dist/gas/oracle/types.d.ts.map +1 -1
  39. package/dist/gas/oracle/types.js +8 -0
  40. package/dist/gas/oracle/types.js.map +1 -1
  41. package/dist/gas/utils.d.ts +3 -2
  42. package/dist/gas/utils.d.ts.map +1 -1
  43. package/dist/gas/utils.js +4 -1
  44. package/dist/gas/utils.js.map +1 -1
  45. package/dist/hook/CosmosNativeHookModule.d.ts +3 -2
  46. package/dist/hook/CosmosNativeHookModule.d.ts.map +1 -1
  47. package/dist/hook/CosmosNativeHookModule.js +10 -10
  48. package/dist/hook/CosmosNativeHookModule.js.map +1 -1
  49. package/dist/hook/CosmosNativeHookReader.d.ts +2 -2
  50. package/dist/hook/CosmosNativeHookReader.d.ts.map +1 -1
  51. package/dist/hook/EvmHookModule.d.ts +6 -15
  52. package/dist/hook/EvmHookModule.d.ts.map +1 -1
  53. package/dist/hook/EvmHookModule.js +74 -71
  54. package/dist/hook/EvmHookModule.js.map +1 -1
  55. package/dist/hook/types.d.ts +318 -0
  56. package/dist/hook/types.d.ts.map +1 -1
  57. package/dist/hook/types.js +2 -2
  58. package/dist/hook/types.js.map +1 -1
  59. package/dist/hook/updates.d.ts +28 -0
  60. package/dist/hook/updates.d.ts.map +1 -0
  61. package/dist/hook/updates.js +34 -0
  62. package/dist/hook/updates.js.map +1 -0
  63. package/dist/ica/types.d.ts +88 -2
  64. package/dist/ica/types.d.ts.map +1 -1
  65. package/dist/index.d.ts +5 -3
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +5 -3
  68. package/dist/index.js.map +1 -1
  69. package/dist/ism/CosmosNativeIsmModule.d.ts +3 -2
  70. package/dist/ism/CosmosNativeIsmModule.d.ts.map +1 -1
  71. package/dist/ism/CosmosNativeIsmModule.js +12 -12
  72. package/dist/ism/CosmosNativeIsmModule.js.map +1 -1
  73. package/dist/metadata/ChainMetadataManager.d.ts +1 -0
  74. package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
  75. package/dist/metadata/ChainMetadataManager.js +5 -0
  76. package/dist/metadata/ChainMetadataManager.js.map +1 -1
  77. package/dist/metadata/agentConfig.d.ts +1560 -1560
  78. package/dist/metadata/chainMetadataTypes.d.ts +6 -6
  79. package/dist/providers/transactions/submitter/builder/types.d.ts +25 -25
  80. package/dist/providers/transactions/submitter/ethersV5/types.d.ts +2 -2
  81. package/dist/providers/transactions/submitter/types.d.ts +9 -9
  82. package/dist/router/types.d.ts +130 -1
  83. package/dist/router/types.d.ts.map +1 -1
  84. package/dist/token/CosmosNativeWarpModule.d.ts +95 -0
  85. package/dist/token/CosmosNativeWarpModule.d.ts.map +1 -0
  86. package/dist/token/CosmosNativeWarpModule.js +296 -0
  87. package/dist/token/CosmosNativeWarpModule.js.map +1 -0
  88. package/dist/token/EvmERC20WarpModule.d.ts +0 -17
  89. package/dist/token/EvmERC20WarpModule.d.ts.map +1 -1
  90. package/dist/token/EvmERC20WarpModule.hardhat-test.js +7 -7
  91. package/dist/token/EvmERC20WarpModule.hardhat-test.js.map +1 -1
  92. package/dist/token/EvmERC20WarpModule.js +19 -71
  93. package/dist/token/EvmERC20WarpModule.js.map +1 -1
  94. package/dist/token/EvmERC20WarpRouteReader.d.ts +3 -1
  95. package/dist/token/EvmERC20WarpRouteReader.d.ts.map +1 -1
  96. package/dist/token/EvmERC20WarpRouteReader.hardhat-test.js +123 -5
  97. package/dist/token/EvmERC20WarpRouteReader.hardhat-test.js.map +1 -1
  98. package/dist/token/EvmERC20WarpRouteReader.js +68 -10
  99. package/dist/token/EvmERC20WarpRouteReader.js.map +1 -1
  100. package/dist/token/adapters/StarknetTokenAdapter.js +2 -2
  101. package/dist/token/adapters/StarknetTokenAdapter.js.map +1 -1
  102. package/dist/token/configUtils.d.ts.map +1 -1
  103. package/dist/token/configUtils.js +29 -6
  104. package/dist/token/configUtils.js.map +1 -1
  105. package/dist/token/cosmosnativeDeploy.d.ts +16 -0
  106. package/dist/token/cosmosnativeDeploy.d.ts.map +1 -0
  107. package/dist/token/cosmosnativeDeploy.js +58 -0
  108. package/dist/token/cosmosnativeDeploy.js.map +1 -0
  109. package/dist/token/deploy.d.ts.map +1 -1
  110. package/dist/token/deploy.js +7 -7
  111. package/dist/token/deploy.js.map +1 -1
  112. package/dist/token/types.d.ts +273 -8
  113. package/dist/token/types.d.ts.map +1 -1
  114. package/dist/token/types.js +20 -6
  115. package/dist/token/types.js.map +1 -1
  116. package/package.json +5 -5
@@ -0,0 +1,95 @@
1
+ import { SigningHyperlaneModuleClient } from '@hyperlane-xyz/cosmos-sdk';
2
+ import { Address, Domain, ProtocolType } from '@hyperlane-xyz/utils';
3
+ import { HyperlaneModule, HyperlaneModuleParams } from '../core/AbstractHyperlaneModule.js';
4
+ import { ChainMetadataManager } from '../metadata/ChainMetadataManager.js';
5
+ import { MultiProvider } from '../providers/MultiProvider.js';
6
+ import { AnnotatedCosmJsNativeTransaction } from '../providers/ProviderType.js';
7
+ import { ChainName, ChainNameOrId } from '../types.js';
8
+ import { CosmosNativeWarpRouteReader } from './CosmosNativeWarpRouteReader.js';
9
+ import { DerivedTokenRouterConfig, HypTokenRouterConfig } from './types.js';
10
+ type WarpRouteAddresses = {
11
+ deployedTokenRoute: Address;
12
+ };
13
+ export declare class CosmosNativeWarpModule extends HyperlaneModule<ProtocolType.CosmosNative, HypTokenRouterConfig, WarpRouteAddresses> {
14
+ protected readonly metadataManager: ChainMetadataManager;
15
+ protected readonly signer: SigningHyperlaneModuleClient;
16
+ protected logger: import("pino").default.Logger<never>;
17
+ reader: CosmosNativeWarpRouteReader;
18
+ readonly chainName: ChainName;
19
+ readonly chainId: string;
20
+ readonly domainId: Domain;
21
+ constructor(metadataManager: ChainMetadataManager, args: HyperlaneModuleParams<HypTokenRouterConfig, WarpRouteAddresses>, signer: SigningHyperlaneModuleClient);
22
+ /**
23
+ * Retrieves the token router configuration for the specified address.
24
+ *
25
+ * @param address - The address to derive the token router configuration from.
26
+ * @returns A promise that resolves to the token router configuration.
27
+ */
28
+ read(): Promise<DerivedTokenRouterConfig>;
29
+ /**
30
+ * Updates the Warp Route contract with the provided configuration.
31
+ *
32
+ * @param expectedConfig - The configuration for the token router to be updated.
33
+ * @returns An array of Cosmos transactions that were executed to update the contract, or an error if the update failed.
34
+ */
35
+ update(expectedConfig: HypTokenRouterConfig): Promise<AnnotatedCosmJsNativeTransaction[]>;
36
+ /**
37
+ * Create a transaction to update the remote routers for the Warp Route contract.
38
+ *
39
+ * @param actualConfig - The on-chain router configuration, including the remoteRouters array.
40
+ * @param expectedConfig - The expected token router configuration.
41
+ * @returns An array with Cosmos Native transactions that need to be executed to enroll the routers
42
+ */
43
+ createEnrollRemoteRoutersUpdateTxs(actualConfig: DerivedTokenRouterConfig, expectedConfig: HypTokenRouterConfig): AnnotatedCosmJsNativeTransaction[];
44
+ createUnenrollRemoteRoutersUpdateTxs(actualConfig: DerivedTokenRouterConfig, expectedConfig: HypTokenRouterConfig): AnnotatedCosmJsNativeTransaction[];
45
+ /**
46
+ * Create a transaction to update the remote routers for the Warp Route contract.
47
+ *
48
+ * @param actualConfig - The on-chain router configuration, including the remoteRouters array.
49
+ * @param expectedConfig - The expected token router configuration.
50
+ * @returns A array with Cosmos transactions that need to be executed to update the destination gas
51
+ */
52
+ createSetDestinationGasUpdateTxs(actualConfig: DerivedTokenRouterConfig, expectedConfig: HypTokenRouterConfig): Promise<AnnotatedCosmJsNativeTransaction[]>;
53
+ /**
54
+ * Create transactions to update an existing ISM config, or deploy a new ISM and return a tx to setInterchainSecurityModule
55
+ *
56
+ * @param actualConfig - The on-chain router configuration, including the ISM configuration, and address.
57
+ * @param expectedConfig - The expected token router configuration, including the ISM configuration.
58
+ * @returns Cosmos transaction that need to be executed to update the ISM configuration.
59
+ */
60
+ createIsmUpdateTxs(actualConfig: DerivedTokenRouterConfig, expectedConfig: HypTokenRouterConfig): Promise<AnnotatedCosmJsNativeTransaction[]>;
61
+ /**
62
+ * Transfer ownership of an existing Warp route with a given config.
63
+ *
64
+ * @param actualConfig - The on-chain router configuration.
65
+ * @param expectedConfig - The expected token router configuration.
66
+ * @returns Cosmos transaction that need to be executed to update the owner.
67
+ */
68
+ createOwnershipUpdateTxs(actualConfig: DerivedTokenRouterConfig, expectedConfig: HypTokenRouterConfig): AnnotatedCosmJsNativeTransaction[];
69
+ /**
70
+ * Updates or deploys the ISM using the provided configuration.
71
+ *
72
+ * @returns Object with deployedIsm address, and update Transactions
73
+ */
74
+ deployOrUpdateIsm(actualConfig: DerivedTokenRouterConfig, expectedConfig: HypTokenRouterConfig): Promise<{
75
+ deployedIsm: Address;
76
+ updateTransactions: AnnotatedCosmJsNativeTransaction[];
77
+ }>;
78
+ /**
79
+ * Deploys the Warp Route.
80
+ *
81
+ * @param chain - The chain to deploy the module on.
82
+ * @param config - The configuration for the token router.
83
+ * @param multiProvider - The multi-provider instance to use.
84
+ * @param signer - The Cosmos signing client
85
+ * @returns A new instance of the CosmosNativeWarpModule.
86
+ */
87
+ static create(params: {
88
+ chain: ChainNameOrId;
89
+ config: HypTokenRouterConfig;
90
+ multiProvider: MultiProvider;
91
+ signer: SigningHyperlaneModuleClient;
92
+ }): Promise<CosmosNativeWarpModule>;
93
+ }
94
+ export {};
95
+ //# sourceMappingURL=CosmosNativeWarpModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CosmosNativeWarpModule.d.ts","sourceRoot":"","sources":["../../src/token/CosmosNativeWarpModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,4BAA4B,EAC7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,OAAO,EACP,MAAM,EACN,YAAY,EAQb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,qBAAqB,EACtB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAEpB,KAAK,kBAAkB,GAAG;IACxB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,eAAe,CACzD,YAAY,CAAC,YAAY,EACzB,oBAAoB,EACpB,kBAAkB,CACnB;IAUG,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,oBAAoB;IAExD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,4BAA4B;IAXzD,SAAS,CAAC,MAAM,uCAEb;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAGZ,eAAe,EAAE,oBAAoB,EACxD,IAAI,EAAE,qBAAqB,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,EAClD,MAAM,EAAE,4BAA4B;IAazD;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAM/C;;;;;OAKG;IACG,MAAM,CACV,cAAc,EAAE,oBAAoB,GACnC,OAAO,CAAC,gCAAgC,EAAE,CAAC;IA6B9C;;;;;;OAMG;IACH,kCAAkC,CAChC,YAAY,EAAE,wBAAwB,EACtC,cAAc,EAAE,oBAAoB,GACnC,gCAAgC,EAAE;IAmDrC,oCAAoC,CAClC,YAAY,EAAE,wBAAwB,EACtC,cAAc,EAAE,oBAAoB,GACnC,gCAAgC,EAAE;IAsCrC;;;;;;OAMG;IACG,gCAAgC,CACpC,YAAY,EAAE,wBAAwB,EACtC,cAAc,EAAE,oBAAoB,GACnC,OAAO,CAAC,gCAAgC,EAAE,CAAC;IA0E9C;;;;;;OAMG;IACG,kBAAkB,CACtB,YAAY,EAAE,wBAAwB,EACtC,cAAc,EAAE,oBAAoB,GACnC,OAAO,CAAC,gCAAgC,EAAE,CAAC;IAsC9C;;;;;;OAMG;IACH,wBAAwB,CACtB,YAAY,EAAE,wBAAwB,EACtC,cAAc,EAAE,oBAAoB,GACnC,gCAAgC,EAAE;IAkBrC;;;;OAIG;IACG,iBAAiB,CACrB,YAAY,EAAE,wBAAwB,EACtC,cAAc,EAAE,oBAAoB,GACnC,OAAO,CAAC;QACT,WAAW,EAAE,OAAO,CAAC;QACrB,kBAAkB,EAAE,gCAAgC,EAAE,CAAC;KACxD,CAAC;IA6BF;;;;;;;;OAQG;WACU,MAAM,CAAC,MAAM,EAAE;QAC1B,KAAK,EAAE,aAAa,CAAC;QACrB,MAAM,EAAE,oBAAoB,CAAC;QAC7B,aAAa,EAAE,aAAa,CAAC;QAC7B,MAAM,EAAE,4BAA4B,CAAC;KACtC,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAyBpC"}
@@ -0,0 +1,296 @@
1
+ import { zeroAddress } from 'viem';
2
+ import { COSMOS_MODULE_MESSAGE_REGISTRY as R, } from '@hyperlane-xyz/cosmos-sdk';
3
+ import { addressToBytes32, assert, deepEquals, difference, eqAddress, objMap, rootLogger, } from '@hyperlane-xyz/utils';
4
+ import { HyperlaneModule, } from '../core/AbstractHyperlaneModule.js';
5
+ import { CosmosNativeIsmModule } from '../ism/CosmosNativeIsmModule.js';
6
+ import { CosmosNativeWarpRouteReader } from './CosmosNativeWarpRouteReader.js';
7
+ import { CosmosNativeDeployer } from './cosmosnativeDeploy.js';
8
+ import { HypTokenRouterConfigSchema, } from './types.js';
9
+ export class CosmosNativeWarpModule extends HyperlaneModule {
10
+ metadataManager;
11
+ signer;
12
+ logger = rootLogger.child({
13
+ module: 'CosmosNativeWarpModule',
14
+ });
15
+ reader;
16
+ chainName;
17
+ chainId;
18
+ domainId;
19
+ constructor(metadataManager, args, signer) {
20
+ super(args);
21
+ this.metadataManager = metadataManager;
22
+ this.signer = signer;
23
+ this.reader = new CosmosNativeWarpRouteReader(metadataManager, args.chain, signer);
24
+ this.chainName = this.metadataManager.getChainName(args.chain);
25
+ this.chainId = metadataManager.getChainId(args.chain).toString();
26
+ this.domainId = metadataManager.getDomainId(args.chain);
27
+ }
28
+ /**
29
+ * Retrieves the token router configuration for the specified address.
30
+ *
31
+ * @param address - The address to derive the token router configuration from.
32
+ * @returns A promise that resolves to the token router configuration.
33
+ */
34
+ async read() {
35
+ return this.reader.deriveWarpRouteConfig(this.args.addresses.deployedTokenRoute);
36
+ }
37
+ /**
38
+ * Updates the Warp Route contract with the provided configuration.
39
+ *
40
+ * @param expectedConfig - The configuration for the token router to be updated.
41
+ * @returns An array of Cosmos transactions that were executed to update the contract, or an error if the update failed.
42
+ */
43
+ async update(expectedConfig) {
44
+ HypTokenRouterConfigSchema.parse(expectedConfig);
45
+ const actualConfig = await this.read();
46
+ const transactions = [];
47
+ /**
48
+ * @remark
49
+ * The order of operations matter
50
+ * 1. createOwnershipUpdateTxs() must always be LAST because no updates possible after ownership transferred
51
+ * 2. createRemoteRoutersUpdateTxs() must always be BEFORE createSetDestinationGasUpdateTxs() because gas enumeration depends on domains
52
+ */
53
+ transactions.push(...(await this.createIsmUpdateTxs(actualConfig, expectedConfig)), ...this.createEnrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig), ...this.createUnenrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig), ...(await this.createSetDestinationGasUpdateTxs(actualConfig, expectedConfig)), ...this.createOwnershipUpdateTxs(actualConfig, expectedConfig));
54
+ return transactions;
55
+ }
56
+ /**
57
+ * Create a transaction to update the remote routers for the Warp Route contract.
58
+ *
59
+ * @param actualConfig - The on-chain router configuration, including the remoteRouters array.
60
+ * @param expectedConfig - The expected token router configuration.
61
+ * @returns An array with Cosmos Native transactions that need to be executed to enroll the routers
62
+ */
63
+ createEnrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig) {
64
+ const updateTransactions = [];
65
+ if (!expectedConfig.remoteRouters) {
66
+ return [];
67
+ }
68
+ assert(actualConfig.remoteRouters, 'actualRemoteRouters is undefined');
69
+ assert(expectedConfig.remoteRouters, 'expectedRemoteRouters is undefined');
70
+ const { remoteRouters: actualRemoteRouters } = actualConfig;
71
+ const { remoteRouters: expectedRemoteRouters } = expectedConfig;
72
+ const routesToEnroll = Object.entries(expectedRemoteRouters)
73
+ .filter(([domain, expectedRouter]) => {
74
+ const actualRouter = actualRemoteRouters[domain];
75
+ // Enroll if router doesn't exist for domain or has different address
76
+ return (!actualRouter ||
77
+ !eqAddress(actualRouter.address, expectedRouter.address));
78
+ })
79
+ .map(([domain]) => domain);
80
+ if (routesToEnroll.length === 0) {
81
+ return updateTransactions;
82
+ }
83
+ // in cosmos the gas is attached to the remote router. we set
84
+ // it to zero for now and set the real value later during the
85
+ // createSetDestinationGasUpdateTxs step
86
+ routesToEnroll.forEach((domainId) => {
87
+ updateTransactions.push({
88
+ annotation: `Enrolling Router ${this.args.addresses.deployedTokenRoute} on ${this.args.chain}`,
89
+ typeUrl: R.MsgEnrollRemoteRouter.proto.type,
90
+ value: R.MsgEnrollRemoteRouter.proto.converter.create({
91
+ owner: actualConfig.owner,
92
+ token_id: this.args.addresses.deployedTokenRoute,
93
+ remote_router: {
94
+ receiver_domain: parseInt(domainId),
95
+ receiver_contract: addressToBytes32(expectedRemoteRouters[domainId].address),
96
+ gas: '0',
97
+ },
98
+ }),
99
+ });
100
+ });
101
+ return updateTransactions;
102
+ }
103
+ createUnenrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig) {
104
+ const updateTransactions = [];
105
+ if (!expectedConfig.remoteRouters) {
106
+ return [];
107
+ }
108
+ assert(actualConfig.remoteRouters, 'actualRemoteRouters is undefined');
109
+ assert(expectedConfig.remoteRouters, 'expectedRemoteRouters is undefined');
110
+ const { remoteRouters: actualRemoteRouters } = actualConfig;
111
+ const { remoteRouters: expectedRemoteRouters } = expectedConfig;
112
+ const routesToUnenroll = Array.from(difference(new Set(Object.keys(actualRemoteRouters)), new Set(Object.keys(expectedRemoteRouters))));
113
+ if (routesToUnenroll.length === 0) {
114
+ return updateTransactions;
115
+ }
116
+ routesToUnenroll.forEach((domainId) => {
117
+ updateTransactions.push({
118
+ annotation: `Unenrolling Router ${this.args.addresses.deployedTokenRoute} on ${this.args.chain}`,
119
+ typeUrl: R.MsgUnrollRemoteRouter.proto.type,
120
+ value: R.MsgUnrollRemoteRouter.proto.converter.create({
121
+ owner: actualConfig.owner,
122
+ token_id: this.args.addresses.deployedTokenRoute,
123
+ receiver_domain: parseInt(domainId),
124
+ }),
125
+ });
126
+ });
127
+ return updateTransactions;
128
+ }
129
+ /**
130
+ * Create a transaction to update the remote routers for the Warp Route contract.
131
+ *
132
+ * @param actualConfig - The on-chain router configuration, including the remoteRouters array.
133
+ * @param expectedConfig - The expected token router configuration.
134
+ * @returns A array with Cosmos transactions that need to be executed to update the destination gas
135
+ */
136
+ async createSetDestinationGasUpdateTxs(actualConfig, expectedConfig) {
137
+ const updateTransactions = [];
138
+ if (!expectedConfig.destinationGas) {
139
+ return [];
140
+ }
141
+ assert(actualConfig.destinationGas, 'actualDestinationGas is undefined');
142
+ assert(expectedConfig.destinationGas, 'expectedDestinationGas is undefined');
143
+ assert(expectedConfig.remoteRouters, 'expectedRemoteRouters is undefined');
144
+ const { destinationGas: actualDestinationGas } = actualConfig;
145
+ const { destinationGas: expectedDestinationGas } = expectedConfig;
146
+ const { remoteRouters: expectedRemoteRouters } = expectedConfig;
147
+ // refetch after routes have been previously enrolled without the "actualConfig"
148
+ // updating
149
+ const { remote_routers: actualRemoteRouters } = await this.signer.query.warp.RemoteRouters({
150
+ id: this.args.addresses.deployedTokenRoute,
151
+ });
152
+ const alreadyEnrolledDomains = actualRemoteRouters.map((router) => router.receiver_domain);
153
+ if (!deepEquals(actualDestinationGas, expectedDestinationGas)) {
154
+ // Convert { 1: 2, 2: 3, ... } to [{ 1: 2 }, { 2: 3 }]
155
+ const gasRouterConfigs = [];
156
+ objMap(expectedDestinationGas, (domain, gas) => {
157
+ gasRouterConfigs.push({
158
+ domain,
159
+ gas,
160
+ });
161
+ });
162
+ // in cosmos updating the gas config is done by unenrolling the router and then
163
+ // enrolling it with the updating value again
164
+ gasRouterConfigs.forEach(({ domain, gas }) => {
165
+ if (alreadyEnrolledDomains.includes(parseInt(domain))) {
166
+ updateTransactions.push({
167
+ annotation: `Unenrolling ${this.args.addresses.deployedTokenRoute} on ${this.args.chain}`,
168
+ typeUrl: R.MsgUnrollRemoteRouter.proto.type,
169
+ value: R.MsgUnrollRemoteRouter.proto.converter.create({
170
+ owner: actualConfig.owner,
171
+ token_id: this.args.addresses.deployedTokenRoute,
172
+ receiver_domain: parseInt(domain),
173
+ }),
174
+ });
175
+ }
176
+ updateTransactions.push({
177
+ annotation: `Setting destination gas for ${this.args.addresses.deployedTokenRoute} on ${this.args.chain}`,
178
+ typeUrl: R.MsgEnrollRemoteRouter.proto.type,
179
+ value: R.MsgEnrollRemoteRouter.proto.converter.create({
180
+ owner: actualConfig.owner,
181
+ token_id: this.args.addresses.deployedTokenRoute,
182
+ remote_router: {
183
+ receiver_domain: parseInt(domain),
184
+ receiver_contract: addressToBytes32(expectedRemoteRouters[domain].address),
185
+ gas,
186
+ },
187
+ }),
188
+ });
189
+ });
190
+ }
191
+ return updateTransactions;
192
+ }
193
+ /**
194
+ * Create transactions to update an existing ISM config, or deploy a new ISM and return a tx to setInterchainSecurityModule
195
+ *
196
+ * @param actualConfig - The on-chain router configuration, including the ISM configuration, and address.
197
+ * @param expectedConfig - The expected token router configuration, including the ISM configuration.
198
+ * @returns Cosmos transaction that need to be executed to update the ISM configuration.
199
+ */
200
+ async createIsmUpdateTxs(actualConfig, expectedConfig) {
201
+ const updateTransactions = [];
202
+ if (!expectedConfig.interchainSecurityModule ||
203
+ expectedConfig.interchainSecurityModule === zeroAddress) {
204
+ return [];
205
+ }
206
+ const actualDeployedIsm = actualConfig.interchainSecurityModule.address;
207
+ // Try to update (may also deploy) Ism with the expected config
208
+ const { deployedIsm: expectedDeployedIsm, updateTransactions: ismUpdateTransactions, } = await this.deployOrUpdateIsm(actualConfig, expectedConfig);
209
+ // If an ISM is updated in-place, push the update txs
210
+ updateTransactions.push(...ismUpdateTransactions);
211
+ // If a new ISM is deployed, push the setInterchainSecurityModule tx
212
+ if (actualDeployedIsm !== expectedDeployedIsm) {
213
+ updateTransactions.push({
214
+ annotation: `Setting ISM for Warp Route to ${expectedDeployedIsm}`,
215
+ typeUrl: R.MsgSetToken.proto.type,
216
+ value: R.MsgSetToken.proto.converter.create({
217
+ owner: actualConfig.owner,
218
+ token_id: this.args.addresses.deployedTokenRoute,
219
+ ism_id: expectedDeployedIsm,
220
+ }),
221
+ });
222
+ }
223
+ return updateTransactions;
224
+ }
225
+ /**
226
+ * Transfer ownership of an existing Warp route with a given config.
227
+ *
228
+ * @param actualConfig - The on-chain router configuration.
229
+ * @param expectedConfig - The expected token router configuration.
230
+ * @returns Cosmos transaction that need to be executed to update the owner.
231
+ */
232
+ createOwnershipUpdateTxs(actualConfig, expectedConfig) {
233
+ if (eqAddress(actualConfig.owner, expectedConfig.owner)) {
234
+ return [];
235
+ }
236
+ return [
237
+ {
238
+ annotation: `Transferring ownership of ${this.args.addresses.deployedTokenRoute} from ${actualConfig.owner} to ${expectedConfig.owner}`,
239
+ typeUrl: R.MsgSetToken.proto.type,
240
+ value: R.MsgSetToken.proto.converter.create({
241
+ owner: actualConfig.owner,
242
+ token_id: this.args.addresses.deployedTokenRoute,
243
+ new_owner: expectedConfig.owner,
244
+ }),
245
+ },
246
+ ];
247
+ }
248
+ /**
249
+ * Updates or deploys the ISM using the provided configuration.
250
+ *
251
+ * @returns Object with deployedIsm address, and update Transactions
252
+ */
253
+ async deployOrUpdateIsm(actualConfig, expectedConfig) {
254
+ assert(expectedConfig.interchainSecurityModule, 'Ism derived incorrectly');
255
+ const ismModule = new CosmosNativeIsmModule(this.metadataManager, {
256
+ chain: this.args.chain,
257
+ config: expectedConfig.interchainSecurityModule,
258
+ addresses: {
259
+ ...this.args.addresses,
260
+ mailbox: expectedConfig.mailbox,
261
+ deployedIsm: actualConfig.interchainSecurityModule.address,
262
+ },
263
+ }, this.signer);
264
+ this.logger.info(`Comparing target ISM config with ${this.args.chain} chain`);
265
+ const updateTransactions = await ismModule.update(expectedConfig.interchainSecurityModule);
266
+ const { deployedIsm } = ismModule.serialize();
267
+ return { deployedIsm, updateTransactions };
268
+ }
269
+ /**
270
+ * Deploys the Warp Route.
271
+ *
272
+ * @param chain - The chain to deploy the module on.
273
+ * @param config - The configuration for the token router.
274
+ * @param multiProvider - The multi-provider instance to use.
275
+ * @param signer - The Cosmos signing client
276
+ * @returns A new instance of the CosmosNativeWarpModule.
277
+ */
278
+ static async create(params) {
279
+ const { chain, config, multiProvider, signer } = params;
280
+ const deployer = new CosmosNativeDeployer(multiProvider, {
281
+ [chain]: signer,
282
+ });
283
+ const { [chain]: deployedTokenRoute } = await deployer.deploy({
284
+ [chain]: config,
285
+ });
286
+ const warpModule = new CosmosNativeWarpModule(multiProvider, {
287
+ addresses: {
288
+ deployedTokenRoute,
289
+ },
290
+ chain,
291
+ config,
292
+ }, signer);
293
+ return warpModule;
294
+ }
295
+ }
296
+ //# sourceMappingURL=CosmosNativeWarpModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CosmosNativeWarpModule.js","sourceRoot":"","sources":["../../src/token/CosmosNativeWarpModule.ts"],"names":[],"mappings":"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"}
@@ -84,23 +84,6 @@ export declare class EvmERC20WarpModule extends HyperlaneModule<ProtocolType.Eth
84
84
  deployedIsm: Address;
85
85
  updateTransactions: AnnotatedEV5Transaction[];
86
86
  }>;
87
- /**
88
- * Updates or deploys the hook using the provided configuration.
89
- *
90
- * @returns Object with deployedHook address, and update Transactions
91
- */
92
- deployOrUpdateHook(actualConfig: DerivedTokenRouterConfig, expectedConfig: HypTokenRouterConfig): Promise<{
93
- deployedHook: Address;
94
- updateTransactions: AnnotatedEV5Transaction[];
95
- }>;
96
- deployNewHook(expectedConfig: HypTokenRouterConfig): Promise<{
97
- deployedHook: Address;
98
- updateTransactions: AnnotatedEV5Transaction[];
99
- }>;
100
- updateExistingHook(expectedConfig: HypTokenRouterConfig, actualConfig: DerivedTokenRouterConfig): Promise<{
101
- deployedHook: Address;
102
- updateTransactions: AnnotatedEV5Transaction[];
103
- }>;
104
87
  /**
105
88
  * Creates a transaction to upgrade the Warp Route implementation if the package version is below specified version.
106
89
  *
@@ -1 +1 @@
1
- {"version":3,"file":"EvmERC20WarpModule.d.ts","sourceRoot":"","sources":["../../src/token/EvmERC20WarpModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EvmERC20WarpModule.d.ts","sourceRoot":"","sources":["../../src/token/EvmERC20WarpModule.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import chaiAsPromised from 'chai-as-promised';
3
3
  import hre from 'hardhat';
4
4
  import sinon from 'sinon';
5
5
  import { UINT_256_MAX } from 'starknet';
6
- import { ERC20Test__factory, ERC4626Test__factory, HypERC20__factory, HypERC4626Collateral__factory, HypNative__factory, MailboxClient__factory, Mailbox__factory, MovableCollateralRouter__factory, } from '@hyperlane-xyz/core';
6
+ import { CONTRACTS_PACKAGE_VERSION, ERC20Test__factory, ERC4626Test__factory, HypERC20__factory, HypERC4626Collateral__factory, HypNative__factory, MailboxClient__factory, Mailbox__factory, MovableCollateralRouter__factory, } from '@hyperlane-xyz/core';
7
7
  import { EvmIsmModule, HookType, IsmType, TestChainName, proxyAdmin, proxyImplementation, serializeContracts, } from '@hyperlane-xyz/sdk';
8
8
  import { addressToBytes32, assert, deepCopy, eqAddress, normalizeAddressEvm, randomInt, } from '@hyperlane-xyz/utils';
9
9
  import { TestCoreDeployer } from '../core/TestCoreDeployer.js';
@@ -14,7 +14,7 @@ import { randomAddress } from '../test/testUtils.js';
14
14
  import { normalizeConfig } from '../utils/ism.js';
15
15
  import { EvmERC20WarpModule } from './EvmERC20WarpModule.js';
16
16
  import { TokenType, isMovableCollateralTokenType, } from './config.js';
17
- import { CONTRACTS_VERSION, HypTokenRouterConfigSchema, derivedHookAddress, isMovableCollateralTokenConfig, } from './types.js';
17
+ import { HypTokenRouterConfigSchema, derivedHookAddress, isMovableCollateralTokenConfig, } from './types.js';
18
18
  chai.use(chaiAsPromised);
19
19
  const { expect } = chai;
20
20
  const randomRemoteRouters = (n) => {
@@ -868,12 +868,12 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
868
868
  // If it is, we deploy a new implementation and run upgradeTo
869
869
  await sendTxs(await evmERC20WarpModule.update({
870
870
  ...config,
871
- contractVersion: CONTRACTS_VERSION,
871
+ contractVersion: CONTRACTS_PACKAGE_VERSION,
872
872
  }));
873
873
  versionStub.restore();
874
874
  const updatedConfig = await evmERC20WarpModule.read();
875
875
  // Assert
876
- expect(updatedConfig.contractVersion).to.eq(CONTRACTS_VERSION);
876
+ expect(updatedConfig.contractVersion).to.eq(CONTRACTS_PACKAGE_VERSION);
877
877
  const newImpl = await proxyImplementation(multiProvider.getProvider(chain), deployedTokenRoute);
878
878
  expect(origImpl).to.not.eq(newImpl);
879
879
  });
@@ -906,12 +906,12 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
906
906
  // This will throw an error
907
907
  await expect(evmERC20WarpModule.update({
908
908
  ...config,
909
- contractVersion: CONTRACTS_VERSION,
910
- })).to.be.rejectedWith(`Expected contract version ${CONTRACTS_VERSION} is lower than actual contract version ${reallyHighVersion}`);
909
+ contractVersion: CONTRACTS_PACKAGE_VERSION,
910
+ })).to.be.rejectedWith(`Expected contract version ${CONTRACTS_PACKAGE_VERSION} is lower than actual contract version ${reallyHighVersion}`);
911
911
  versionStub.restore();
912
912
  const updatedConfig = await evmERC20WarpModule.read();
913
913
  // Assert
914
- expect(updatedConfig.contractVersion).to.eq(CONTRACTS_VERSION);
914
+ expect(updatedConfig.contractVersion).to.eq(CONTRACTS_PACKAGE_VERSION);
915
915
  });
916
916
  });
917
917
  });