@hyperlane-xyz/sdk 8.8.1 → 8.9.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 (143) hide show
  1. package/dist/block-explorer/etherscan.d.ts +41 -0
  2. package/dist/block-explorer/etherscan.d.ts.map +1 -0
  3. package/dist/block-explorer/etherscan.js +53 -0
  4. package/dist/block-explorer/etherscan.js.map +1 -0
  5. package/dist/ccip/HyperlaneCCIPDeployer.d.ts +18 -0
  6. package/dist/ccip/HyperlaneCCIPDeployer.d.ts.map +1 -0
  7. package/dist/ccip/HyperlaneCCIPDeployer.js +122 -0
  8. package/dist/ccip/HyperlaneCCIPDeployer.js.map +1 -0
  9. package/dist/ccip/consts.d.ts +24 -0
  10. package/dist/ccip/consts.d.ts.map +1 -0
  11. package/dist/ccip/consts.js +691 -0
  12. package/dist/ccip/consts.js.map +1 -0
  13. package/dist/ccip/utils.d.ts +46 -0
  14. package/dist/ccip/utils.d.ts.map +1 -0
  15. package/dist/ccip/utils.js +95 -0
  16. package/dist/ccip/utils.js.map +1 -0
  17. package/dist/consts/multisigIsm.d.ts.map +1 -1
  18. package/dist/consts/multisigIsm.js +27 -9
  19. package/dist/consts/multisigIsm.js.map +1 -1
  20. package/dist/contracts/contracts.d.ts +2 -2
  21. package/dist/contracts/contracts.d.ts.map +1 -1
  22. package/dist/contracts/contracts.js +4 -13
  23. package/dist/contracts/contracts.js.map +1 -1
  24. package/dist/core/HyperlaneRelayer.d.ts +43 -3
  25. package/dist/core/HyperlaneRelayer.d.ts.map +1 -1
  26. package/dist/core/types.d.ts +3558 -2040
  27. package/dist/core/types.d.ts.map +1 -1
  28. package/dist/deploy/proxy.d.ts.map +1 -1
  29. package/dist/deploy/proxy.js +4 -0
  30. package/dist/deploy/proxy.js.map +1 -1
  31. package/dist/deploy/verify/utils.d.ts.map +1 -1
  32. package/dist/deploy/verify/utils.js +3 -9
  33. package/dist/deploy/verify/utils.js.map +1 -1
  34. package/dist/hook/EvmHookModule.d.ts +12 -4
  35. package/dist/hook/EvmHookModule.d.ts.map +1 -1
  36. package/dist/hook/EvmHookModule.hardhat-test.js +2 -106
  37. package/dist/hook/EvmHookModule.hardhat-test.js.map +1 -1
  38. package/dist/hook/EvmHookModule.js +38 -10
  39. package/dist/hook/EvmHookModule.js.map +1 -1
  40. package/dist/hook/EvmHookReader.d.ts +7 -1
  41. package/dist/hook/EvmHookReader.d.ts.map +1 -1
  42. package/dist/hook/EvmHookReader.js +69 -4
  43. package/dist/hook/EvmHookReader.js.map +1 -1
  44. package/dist/hook/EvmHookReader.test.js +50 -1
  45. package/dist/hook/EvmHookReader.test.js.map +1 -1
  46. package/dist/hook/HyperlaneHookDeployer.d.ts +4 -2
  47. package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
  48. package/dist/hook/HyperlaneHookDeployer.js +34 -5
  49. package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
  50. package/dist/hook/contracts.d.ts +4 -1
  51. package/dist/hook/contracts.d.ts.map +1 -1
  52. package/dist/hook/contracts.js +4 -1
  53. package/dist/hook/contracts.js.map +1 -1
  54. package/dist/hook/types.d.ts +2012 -3
  55. package/dist/hook/types.d.ts.map +1 -1
  56. package/dist/hook/types.js +28 -0
  57. package/dist/hook/types.js.map +1 -1
  58. package/dist/index.d.ts +11 -5
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +10 -4
  61. package/dist/index.js.map +1 -1
  62. package/dist/ism/EvmIsmModule.d.ts +4 -2
  63. package/dist/ism/EvmIsmModule.d.ts.map +1 -1
  64. package/dist/ism/EvmIsmModule.hardhat-test.js +10 -71
  65. package/dist/ism/EvmIsmModule.hardhat-test.js.map +1 -1
  66. package/dist/ism/EvmIsmModule.js +4 -4
  67. package/dist/ism/EvmIsmModule.js.map +1 -1
  68. package/dist/ism/EvmIsmReader.d.ts +1 -0
  69. package/dist/ism/EvmIsmReader.d.ts.map +1 -1
  70. package/dist/ism/EvmIsmReader.js +45 -7
  71. package/dist/ism/EvmIsmReader.js.map +1 -1
  72. package/dist/ism/EvmIsmReader.test.js +4 -1
  73. package/dist/ism/EvmIsmReader.test.js.map +1 -1
  74. package/dist/ism/HyperlaneIsmFactory.d.ts +9 -4
  75. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  76. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +15 -0
  77. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
  78. package/dist/ism/HyperlaneIsmFactory.js +43 -4
  79. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  80. package/dist/ism/metadata/builder.d.ts.map +1 -1
  81. package/dist/ism/metadata/builder.js +1 -0
  82. package/dist/ism/metadata/builder.js.map +1 -1
  83. package/dist/ism/metadata/routing.d.ts.map +1 -1
  84. package/dist/ism/metadata/routing.js +8 -2
  85. package/dist/ism/metadata/routing.js.map +1 -1
  86. package/dist/ism/types.d.ts +34 -5
  87. package/dist/ism/types.d.ts.map +1 -1
  88. package/dist/ism/types.js +15 -0
  89. package/dist/ism/types.js.map +1 -1
  90. package/dist/ism/utils.d.ts.map +1 -1
  91. package/dist/ism/utils.js +30 -2
  92. package/dist/ism/utils.js.map +1 -1
  93. package/dist/metadata/agentConfig.d.ts +276 -276
  94. package/dist/metadata/deploymentArtifacts.d.ts +2 -2
  95. package/dist/router/types.d.ts +129 -9
  96. package/dist/router/types.d.ts.map +1 -1
  97. package/dist/test/testUtils.d.ts +8 -0
  98. package/dist/test/testUtils.d.ts.map +1 -1
  99. package/dist/test/testUtils.js +191 -1
  100. package/dist/test/testUtils.js.map +1 -1
  101. package/dist/token/EvmERC20WarpModule.d.ts +4 -1
  102. package/dist/token/EvmERC20WarpModule.d.ts.map +1 -1
  103. package/dist/token/EvmERC20WarpModule.js +12 -8
  104. package/dist/token/EvmERC20WarpModule.js.map +1 -1
  105. package/dist/token/EvmERC20WarpRouteReader.d.ts +4 -3
  106. package/dist/token/EvmERC20WarpRouteReader.d.ts.map +1 -1
  107. package/dist/token/EvmERC20WarpRouteReader.hardhat-test.js +72 -3
  108. package/dist/token/EvmERC20WarpRouteReader.hardhat-test.js.map +1 -1
  109. package/dist/token/EvmERC20WarpRouteReader.js +84 -15
  110. package/dist/token/EvmERC20WarpRouteReader.js.map +1 -1
  111. package/dist/token/adapters/EvmTokenAdapter.d.ts +49 -15
  112. package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
  113. package/dist/token/adapters/EvmTokenAdapter.js +152 -42
  114. package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
  115. package/dist/token/adapters/ITokenAdapter.d.ts +19 -0
  116. package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -1
  117. package/dist/token/checker.d.ts +4 -1
  118. package/dist/token/checker.d.ts.map +1 -1
  119. package/dist/token/checker.js +33 -5
  120. package/dist/token/checker.js.map +1 -1
  121. package/dist/token/config.d.ts +1 -0
  122. package/dist/token/config.d.ts.map +1 -1
  123. package/dist/token/config.js +1 -0
  124. package/dist/token/config.js.map +1 -1
  125. package/dist/token/configUtils.d.ts +10 -0
  126. package/dist/token/configUtils.d.ts.map +1 -0
  127. package/dist/token/configUtils.js +48 -0
  128. package/dist/token/configUtils.js.map +1 -0
  129. package/dist/token/deploy.d.ts.map +1 -1
  130. package/dist/token/deploy.hardhat-test.js +69 -6
  131. package/dist/token/deploy.hardhat-test.js.map +1 -1
  132. package/dist/token/deploy.js +6 -4
  133. package/dist/token/deploy.js.map +1 -1
  134. package/dist/token/types.d.ts +1333 -220
  135. package/dist/token/types.d.ts.map +1 -1
  136. package/dist/token/types.js +117 -2
  137. package/dist/token/types.js.map +1 -1
  138. package/dist/token/xerc20.d.ts +13 -0
  139. package/dist/token/xerc20.d.ts.map +1 -0
  140. package/dist/token/xerc20.js +174 -0
  141. package/dist/token/xerc20.js.map +1 -0
  142. package/dist/warp/types.d.ts +14 -14
  143. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/token/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,iCAAiC;;;CAG7C,CAAC;AACF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;EAO9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,eAAO,MAAM,eAAe;;;;;;;CAAmC,CAAC;AAEhE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;EAElC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,eAAO,MAAM,mBAAmB;;;;;;;;CAAuC,CAAC;AAExE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBvC,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,eAAO,MAAM,uBAAuB;;;;;;;;;CAA2C,CAAC;AAEhF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;EAM1C,CAAC;AACL,eAAO,MAAM,6BAA6B;;;;;;;CAEzC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;EAMrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAC/E,eAAO,MAAM,sBAAsB;;;;;;;;CAA0C,CAAC;AAE9E,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIzC,CAAC;AACL,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,2BAA2B,CACnC,CAAC;AACF,eAAO,MAAM,4BAA4B;;;;;;;;;CAExC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAK/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEtC,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CpC,CAAC;AACL,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/token/types.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0FpC,CAAC;AAEL,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
@@ -1,5 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { objMap } from '@hyperlane-xyz/utils';
3
+ import { HookType } from '../hook/types.js';
4
+ import { IsmType } from '../ism/types.js';
3
5
  import { GasRouterConfigSchema } from '../router/types.js';
4
6
  import { isCompliant } from '../utils/schemas.js';
5
7
  import { TokenType } from './config.js';
@@ -25,8 +27,6 @@ export const CollateralTokenConfigSchema = TokenMetadataSchema.partial().extend(
25
27
  TokenType.collateral,
26
28
  TokenType.collateralVault,
27
29
  TokenType.collateralVaultRebase,
28
- TokenType.XERC20,
29
- TokenType.XERC20Lockbox,
30
30
  TokenType.collateralFiat,
31
31
  TokenType.fastCollateral,
32
32
  TokenType.collateralUri,
@@ -36,6 +36,26 @@ export const CollateralTokenConfigSchema = TokenMetadataSchema.partial().extend(
36
36
  .describe('Existing token address to extend with Warp Route functionality'),
37
37
  });
38
38
  export const isCollateralTokenConfig = isCompliant(CollateralTokenConfigSchema);
39
+ const xERC20LimitConfigSchema = z.object({
40
+ bufferCap: z.string().optional(),
41
+ rateLimitPerSecond: z.string().optional(),
42
+ });
43
+ const xERC20ExtraBridgesLimitConfigsSchema = z.object({
44
+ lockbox: z.string(),
45
+ limits: xERC20LimitConfigSchema,
46
+ });
47
+ const xERC20TokenMetadataSchema = z.object({
48
+ xERC20: z
49
+ .object({
50
+ extraBridges: z.array(xERC20ExtraBridgesLimitConfigsSchema).optional(),
51
+ warpRouteLimits: xERC20LimitConfigSchema,
52
+ })
53
+ .optional(),
54
+ });
55
+ export const XERC20TokenConfigSchema = CollateralTokenConfigSchema.merge(z.object({
56
+ type: z.enum([TokenType.XERC20, TokenType.XERC20Lockbox]),
57
+ })).merge(xERC20TokenMetadataSchema);
58
+ export const isXERC20TokenConfig = isCompliant(XERC20TokenConfigSchema);
39
59
  export const CollateralRebaseTokenConfigSchema = TokenMetadataSchema.omit({
40
60
  totalSupply: true,
41
61
  })
@@ -65,6 +85,7 @@ export const isSyntheticRebaseTokenConfig = isCompliant(SyntheticRebaseTokenConf
65
85
  export const HypTokenConfigSchema = z.discriminatedUnion('type', [
66
86
  NativeTokenConfigSchema,
67
87
  CollateralTokenConfigSchema,
88
+ XERC20TokenConfigSchema,
68
89
  SyntheticTokenConfigSchema,
69
90
  SyntheticRebaseTokenConfigSchema,
70
91
  ]);
@@ -75,8 +96,10 @@ export const WarpRouteDeployConfigSchema = z
75
96
  const entries = Object.entries(configMap);
76
97
  return (entries.some(([_, config]) => isCollateralTokenConfig(config) ||
77
98
  isCollateralRebaseTokenConfig(config) ||
99
+ isXERC20TokenConfig(config) ||
78
100
  isNativeTokenConfig(config)) || entries.every(([_, config]) => isTokenMetadata(config)));
79
101
  }, WarpRouteDeployConfigSchemaErrors.NO_SYNTHETIC_ONLY)
102
+ // Verify synthetic rebase tokens config
80
103
  .transform((warpRouteDeployConfig, ctx) => {
81
104
  const collateralRebaseEntry = Object.entries(warpRouteDeployConfig).find(([_, config]) => isCollateralRebaseTokenConfig(config));
82
105
  const syntheticRebaseEntry = Object.entries(warpRouteDeployConfig).find(([_, config]) => isSyntheticRebaseTokenConfig(config));
@@ -99,6 +122,37 @@ export const WarpRouteDeployConfigSchema = z
99
122
  message: WarpRouteDeployConfigSchemaErrors.ONLY_SYNTHETIC_REBASE,
100
123
  });
101
124
  return z.NEVER; // Causes schema validation to throw with above issue
125
+ })
126
+ // Verify that CCIP hooks are paired with CCIP ISMs
127
+ .transform((warpRouteDeployConfig, ctx) => {
128
+ const { ccipHookMap, ccipIsmMap } = getCCIPConfigMaps(warpRouteDeployConfig);
129
+ // Check hooks have corresponding ISMs
130
+ const hookConfigHasMissingIsms = Object.entries(ccipHookMap).some(([originChain, destinationChains]) => Array.from(destinationChains).some((chain) => {
131
+ if (!ccipIsmMap[originChain]?.has(chain)) {
132
+ ctx.addIssue({
133
+ code: z.ZodIssueCode.custom,
134
+ path: [chain, 'interchainSecurityModule', '...'],
135
+ message: `Required CCIP ISM not found in config for CCIP Hook with origin chain ${originChain} and destination chain ${chain}`,
136
+ });
137
+ return true;
138
+ }
139
+ return false;
140
+ }));
141
+ // Check ISMs have corresponding hooks
142
+ const ismConfigHasMissingHooks = Object.entries(ccipIsmMap).some(([originChain, destinationChains]) => Array.from(destinationChains).some((chain) => {
143
+ if (!ccipHookMap[originChain]?.has(chain)) {
144
+ ctx.addIssue({
145
+ code: z.ZodIssueCode.custom,
146
+ path: [originChain, 'hook', '...'],
147
+ message: `Required CCIP Hook not found in config for CCIP ISM with origin chain ${originChain} and destination chain ${chain}`,
148
+ });
149
+ return true;
150
+ }
151
+ return false;
152
+ }));
153
+ return hookConfigHasMissingIsms || ismConfigHasMissingHooks
154
+ ? z.NEVER
155
+ : warpRouteDeployConfig;
102
156
  });
103
157
  function isCollateralRebasePairedCorrectly(warpRouteDeployConfig) {
104
158
  // Filter out all the non-collateral rebase configs to check if they are only synthetic rebase tokens
@@ -109,4 +163,65 @@ function isCollateralRebasePairedCorrectly(warpRouteDeployConfig) {
109
163
  const allOthersSynthetic = otherConfigs.every(([_, config], _index) => isSyntheticRebaseTokenConfig(config));
110
164
  return allOthersSynthetic;
111
165
  }
166
+ function getCCIPConfigMaps(warpRouteDeployConfig) {
167
+ const ccipHookMap = {};
168
+ const ccipIsmMap = {};
169
+ Object.entries(warpRouteDeployConfig).forEach(([chainName, config]) => {
170
+ extractCCIPHookMap(chainName, config.hook, ccipHookMap);
171
+ extractCCIPIsmMap(chainName, config.interchainSecurityModule, ccipIsmMap);
172
+ });
173
+ return { ccipHookMap, ccipIsmMap };
174
+ }
175
+ function extractCCIPHookMap(currentChain, hookConfig, existsCCIPHookMap) {
176
+ if (!hookConfig || typeof hookConfig === 'string') {
177
+ return;
178
+ }
179
+ switch (hookConfig.type) {
180
+ case HookType.AGGREGATION:
181
+ hookConfig.hooks.forEach((hook) => extractCCIPHookMap(currentChain, hook, existsCCIPHookMap));
182
+ break;
183
+ case HookType.ARB_L2_TO_L1:
184
+ extractCCIPHookMap(currentChain, hookConfig.childHook, existsCCIPHookMap);
185
+ break;
186
+ case HookType.CCIP:
187
+ if (!existsCCIPHookMap[currentChain]) {
188
+ existsCCIPHookMap[currentChain] = new Set();
189
+ }
190
+ existsCCIPHookMap[currentChain].add(hookConfig.destinationChain);
191
+ break;
192
+ case HookType.FALLBACK_ROUTING:
193
+ case HookType.ROUTING:
194
+ Object.entries(hookConfig.domains).forEach(([_, hook]) => {
195
+ extractCCIPHookMap(currentChain, hook, existsCCIPHookMap);
196
+ });
197
+ break;
198
+ default:
199
+ break;
200
+ }
201
+ }
202
+ function extractCCIPIsmMap(currentChain, ismConfig, existsCCIPIsmMap) {
203
+ if (!ismConfig || typeof ismConfig === 'string') {
204
+ return;
205
+ }
206
+ switch (ismConfig.type) {
207
+ case IsmType.AGGREGATION:
208
+ case IsmType.STORAGE_AGGREGATION:
209
+ ismConfig.modules.forEach((hook) => extractCCIPIsmMap(currentChain, hook, existsCCIPIsmMap));
210
+ break;
211
+ case IsmType.CCIP:
212
+ if (!existsCCIPIsmMap[ismConfig.originChain]) {
213
+ existsCCIPIsmMap[ismConfig.originChain] = new Set();
214
+ }
215
+ existsCCIPIsmMap[ismConfig.originChain].add(currentChain);
216
+ break;
217
+ case IsmType.FALLBACK_ROUTING:
218
+ case IsmType.ROUTING:
219
+ Object.entries(ismConfig.domains).forEach(([_, hook]) => {
220
+ extractCCIPIsmMap(currentChain, hook, existsCCIPIsmMap);
221
+ });
222
+ break;
223
+ default:
224
+ break;
225
+ }
226
+ }
112
227
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/token/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/token/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Logger } from 'pino';
2
+ import { Address } from '@hyperlane-xyz/utils';
3
+ import { MultiProvider } from '../providers/MultiProvider.js';
4
+ import { ChainNameOrId } from '../types.js';
5
+ import { XERC20TokenExtraBridgesLimits } from './types.js';
6
+ export type GetExtraLockboxesOptions = {
7
+ chain: ChainNameOrId;
8
+ xERC20Address: Address;
9
+ multiProvider: MultiProvider;
10
+ logger?: Logger;
11
+ };
12
+ export declare function getExtraLockBoxConfigs({ xERC20Address, chain, multiProvider, logger, }: GetExtraLockboxesOptions): Promise<XERC20TokenExtraBridgesLimits[]>;
13
+ //# sourceMappingURL=xerc20.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xerc20.d.ts","sourceRoot":"","sources":["../../src/token/xerc20.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAI9B,OAAO,EAAE,OAAO,EAAqB,MAAM,sBAAsB,CAAC;AAQlE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAqC3D,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,EAC3C,aAAa,EACb,KAAK,EACL,aAAa,EACb,MAAmB,GACpB,EAAE,wBAAwB,GAAG,OAAO,CAAC,6BAA6B,EAAE,CAAC,CA6CrE"}
@@ -0,0 +1,174 @@
1
+ import { getAbiItem, parseEventLogs, toEventSelector } from 'viem';
2
+ import { IXERC20Lockbox__factory } from '@hyperlane-xyz/core';
3
+ import { rootLogger, sleep } from '@hyperlane-xyz/utils';
4
+ import { getContractDeploymentTransaction, getLogsFromEtherscanLikeExplorerAPI, } from '../block-explorer/etherscan.js';
5
+ import { ExplorerFamily } from '../metadata/chainMetadataTypes.js';
6
+ const minimalXERC20VSABI = [
7
+ {
8
+ anonymous: false,
9
+ inputs: [
10
+ {
11
+ indexed: true,
12
+ internalType: 'address',
13
+ name: 'bridge',
14
+ type: 'address',
15
+ },
16
+ {
17
+ indexed: false,
18
+ internalType: 'uint112',
19
+ name: 'bufferCap',
20
+ type: 'uint112',
21
+ },
22
+ {
23
+ indexed: false,
24
+ internalType: 'uint128',
25
+ name: 'rateLimitPerSecond',
26
+ type: 'uint128',
27
+ },
28
+ ],
29
+ name: 'ConfigurationChanged',
30
+ type: 'event',
31
+ },
32
+ ];
33
+ const CONFIGURATION_CHANGED_EVENT_SELECTOR = toEventSelector(getAbiItem({
34
+ abi: minimalXERC20VSABI,
35
+ name: 'ConfigurationChanged',
36
+ }));
37
+ export async function getExtraLockBoxConfigs({ xERC20Address, chain, multiProvider, logger = rootLogger, }) {
38
+ const { family, apiKey } = multiProvider.getExplorerApi(chain);
39
+ // Fallback to use the rpc if the user has not provided an API key and the explorer family is Etherscan
40
+ // because the endpoint requires it or the explorer family is not known
41
+ const isExplorerConfiguredCorrectly = family === ExplorerFamily.Etherscan ? !!apiKey : true;
42
+ const canUseExplorerApi = family !== ExplorerFamily.Other && isExplorerConfiguredCorrectly;
43
+ const provider = multiProvider.getProvider(chain);
44
+ let logs;
45
+ if (canUseExplorerApi) {
46
+ logs = await getConfigurationChangedLogsFromExplorerApi({
47
+ chain,
48
+ multiProvider,
49
+ xERC20Address,
50
+ });
51
+ }
52
+ else {
53
+ logger.debug(`Using rpc request to retrieve bridges on on lockbox contract ${xERC20Address} on chain ${chain}`);
54
+ // Should be safe to use even with public RPCs as the total number of events in this topic should be low
55
+ logs = await getConfigurationChangedLogsFromRpc({
56
+ chain,
57
+ multiProvider,
58
+ xERC20Address,
59
+ });
60
+ }
61
+ const viemLogs = logs.map((log) => ({
62
+ address: log.address,
63
+ data: log.data,
64
+ blockNumber: BigInt(log.blockNumber),
65
+ transactionHash: log.transactionHash,
66
+ logIndex: Number(log.logIndex),
67
+ transactionIndex: Number(log.transactionIndex),
68
+ topics: log.topics,
69
+ }));
70
+ return getLockboxesFromLogs(viemLogs, provider, chain, logger);
71
+ }
72
+ async function getConfigurationChangedLogsFromExplorerApi({ xERC20Address, chain, multiProvider, }) {
73
+ const { apiUrl, apiKey } = multiProvider.getExplorerApi(chain);
74
+ const contractDeploymentTx = await getContractDeploymentTransaction({ apiUrl, apiKey }, { contractAddress: xERC20Address });
75
+ const provider = multiProvider.getProvider(chain);
76
+ const [currentBlockNumber, deploymentTransactionReceipt] = await Promise.all([
77
+ provider.getBlockNumber(),
78
+ provider.getTransactionReceipt(contractDeploymentTx.txHash),
79
+ ]);
80
+ return getLogsFromEtherscanLikeExplorerAPI({ apiUrl, apiKey }, {
81
+ address: xERC20Address,
82
+ fromBlock: deploymentTransactionReceipt.blockNumber,
83
+ toBlock: currentBlockNumber,
84
+ topic0: CONFIGURATION_CHANGED_EVENT_SELECTOR,
85
+ });
86
+ }
87
+ async function getConfigurationChangedLogsFromRpc({ xERC20Address, chain, multiProvider, }) {
88
+ const provider = multiProvider.getProvider(chain);
89
+ const endBlock = await provider.getBlockNumber();
90
+ let currentStartBlock = await getContractCreationBlockFromRpc(xERC20Address, provider);
91
+ const logs = [];
92
+ const range = 5000;
93
+ while (currentStartBlock < endBlock) {
94
+ const currentLogs = await provider.getLogs({
95
+ address: xERC20Address,
96
+ fromBlock: currentStartBlock,
97
+ toBlock: currentStartBlock + range,
98
+ topics: [CONFIGURATION_CHANGED_EVENT_SELECTOR],
99
+ });
100
+ logs.push(...currentLogs);
101
+ currentStartBlock += range;
102
+ // Sleep to avoid being rate limited with public RPCs
103
+ await sleep(350);
104
+ }
105
+ return logs;
106
+ }
107
+ // Retrieves the contract deployment number by performing a binary search
108
+ // calling getCode until the creation block is found
109
+ async function getContractCreationBlockFromRpc(contractAddress, provider) {
110
+ const latestBlock = await provider.getBlockNumber();
111
+ const latestCode = await provider.getCode(contractAddress, latestBlock);
112
+ if (latestCode === '0x') {
113
+ throw new Error('Provided address is not a contract');
114
+ }
115
+ let low = 0;
116
+ let high = latestBlock;
117
+ let creationBlock = latestBlock;
118
+ while (low <= high) {
119
+ const mid = Math.floor((low + high) / 2);
120
+ const code = await provider.getCode(contractAddress, mid);
121
+ if (code !== '0x') {
122
+ creationBlock = mid;
123
+ high = mid - 1;
124
+ }
125
+ else {
126
+ low = mid + 1;
127
+ }
128
+ }
129
+ return creationBlock;
130
+ }
131
+ async function getLockboxesFromLogs(logs, provider, chain, logger) {
132
+ const parsedLogs = parseEventLogs({
133
+ abi: minimalXERC20VSABI,
134
+ eventName: 'ConfigurationChanged',
135
+ logs,
136
+ });
137
+ // A bridge might appear more than once in the event logs, we are only
138
+ // interested in the most recent one for each bridge so we deduplicate
139
+ // entries here
140
+ const dedupedBridges = parsedLogs.reduce((acc, log) => {
141
+ const bridgeAddress = log.args.bridge;
142
+ const isMostRecentLogForBridge = log.blockNumber > (acc[bridgeAddress]?.blockNumber ?? 0n);
143
+ if (isMostRecentLogForBridge) {
144
+ acc[bridgeAddress] = log;
145
+ }
146
+ return acc;
147
+ }, {});
148
+ const lockboxPromises = Object.values(dedupedBridges)
149
+ // Removing bridges where the limits are set to 0 because it is equivalent of being deactivated
150
+ .filter((log) => log.args.bufferCap !== 0n && log.args.rateLimitPerSecond !== 0n)
151
+ .map(async (log) => {
152
+ try {
153
+ const maybeXERC20Lockbox = IXERC20Lockbox__factory.connect(log.args.bridge, provider);
154
+ await maybeXERC20Lockbox.callStatic.XERC20();
155
+ return log;
156
+ }
157
+ catch {
158
+ logger.debug(`Contract at address ${log.args.bridge} on chain ${chain} is not a XERC20Lockbox contract.`);
159
+ return undefined;
160
+ }
161
+ });
162
+ const lockboxes = await Promise.all(lockboxPromises);
163
+ return lockboxes
164
+ .filter((log) => log !== undefined)
165
+ .map((log) => log)
166
+ .map((log) => ({
167
+ lockbox: log.args.bridge,
168
+ limits: {
169
+ bufferCap: log.args.bufferCap.toString(),
170
+ rateLimitPerSecond: log.args.rateLimitPerSecond.toString(),
171
+ },
172
+ }));
173
+ }
174
+ //# sourceMappingURL=xerc20.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xerc20.js","sourceRoot":"","sources":["../../src/token/xerc20.ts"],"names":[],"mappings":"AAEA,OAAO,EAAO,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAExE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAW,UAAU,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAEL,gCAAgC,EAChC,mCAAmC,GACpC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAMnE,MAAM,kBAAkB,GAAG;IACzB;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,OAAO;KACd;CACO,CAAC;AAEX,MAAM,oCAAoC,GAAG,eAAe,CAC1D,UAAU,CAAC;IACT,GAAG,EAAE,kBAAkB;IACvB,IAAI,EAAE,sBAAsB;CAC7B,CAAC,CACH,CAAC;AASF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,aAAa,EACb,KAAK,EACL,aAAa,EACb,MAAM,GAAG,UAAU,GACM;IACzB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAE/D,uGAAuG;IACvG,uEAAuE;IACvE,MAAM,6BAA6B,GACjC,MAAM,KAAK,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,MAAM,iBAAiB,GACrB,MAAM,KAAK,cAAc,CAAC,KAAK,IAAI,6BAA6B,CAAC;IAEnE,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,IAAqD,CAAC;IAC1D,IAAI,iBAAiB,EAAE,CAAC;QACtB,IAAI,GAAG,MAAM,0CAA0C,CAAC;YACtD,KAAK;YACL,aAAa;YACb,aAAa;SACd,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CACV,gEAAgE,aAAa,aAAa,KAAK,EAAE,CAClG,CAAC;QAEF,wGAAwG;QACxG,IAAI,GAAG,MAAM,kCAAkC,CAAC;YAC9C,KAAK;YACL,aAAa;YACb,aAAa;SACd,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,CAAC,GAAG,EAAE,EAAE,CACN,CAAC;QACC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QACpC,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC9B,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC9C,MAAM,EAAE,GAAG,CAAC,MAAM;KACX,CAAA,CACZ,CAAC;IAEF,OAAO,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC;AAED,KAAK,UAAU,0CAA0C,CAAC,EACxD,aAAa,EACb,KAAK,EACL,aAAa,GACY;IACzB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAE/D,MAAM,oBAAoB,GAAG,MAAM,gCAAgC,CACjE,EAAE,MAAM,EAAE,MAAM,EAAE,EAClB,EAAE,eAAe,EAAE,aAAa,EAAE,CACnC,CAAC;IAEF,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,kBAAkB,EAAE,4BAA4B,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3E,QAAQ,CAAC,cAAc,EAAE;QACzB,QAAQ,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,MAAM,CAAC;KAC5D,CAAC,CAAC;IAEH,OAAO,mCAAmC,CACxC,EAAE,MAAM,EAAE,MAAM,EAAE,EAClB;QACE,OAAO,EAAE,aAAa;QACtB,SAAS,EAAE,4BAA4B,CAAC,WAAW;QACnD,OAAO,EAAE,kBAAkB;QAC3B,MAAM,EAAE,oCAAoC;KAC7C,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kCAAkC,CAAC,EAChD,aAAa,EACb,KAAK,EACL,aAAa,GACY;IACzB,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAElD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;IACjD,IAAI,iBAAiB,GAAG,MAAM,+BAA+B,CAC3D,aAAa,EACb,QAAQ,CACT,CAAC;IAEF,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,MAAM,KAAK,GAAG,IAAI,CAAC;IACnB,OAAO,iBAAiB,GAAG,QAAQ,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YACzC,OAAO,EAAE,aAAa;YACtB,SAAS,EAAE,iBAAiB;YAC5B,OAAO,EAAE,iBAAiB,GAAG,KAAK;YAClC,MAAM,EAAE,CAAC,oCAAoC,CAAC;SAC/C,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAC1B,iBAAiB,IAAI,KAAK,CAAC;QAE3B,qDAAqD;QACrD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yEAAyE;AACzE,oDAAoD;AACpD,KAAK,UAAU,+BAA+B,CAC5C,eAAwB,EACxB,QAAmC;IAEnC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;IACpD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IACxE,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,WAAW,CAAC;IACvB,IAAI,aAAa,GAAG,WAAW,CAAC;IAChC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAE1D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,aAAa,GAAG,GAAG,CAAC;YACpB,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAYD,KAAK,UAAU,oBAAoB,CACjC,IAAW,EACX,QAAmC,EACnC,KAAoB,EACpB,MAAc;IAEd,MAAM,UAAU,GAAG,cAAc,CAAC;QAChC,GAAG,EAAE,kBAAkB;QACvB,SAAS,EAAE,sBAAsB;QACjC,IAAI;KACL,CAAC,CAAC;IAEH,sEAAsE;IACtE,sEAAsE;IACtE,eAAe;IACf,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACpD,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QACtC,MAAM,wBAAwB,GAC5B,GAAG,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;QAE5D,IAAI,wBAAwB,EAAE,CAAC;YAC7B,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;QAC3B,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA6C,CAAC,CAAC;IAElD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;QACnD,+FAA+F;SAC9F,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,kBAAkB,KAAK,EAAE,CACzE;SACA,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,OAAO,CACxD,GAAG,CAAC,IAAI,CAAC,MAAM,EACf,QAAQ,CACT,CAAC;YAEF,MAAM,kBAAkB,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC7C,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,KAAK,CACV,uBAAuB,GAAG,CAAC,IAAI,CAAC,MAAM,aAAa,KAAK,mCAAmC,CAC5F,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACrD,OAAO,SAAS;SACb,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC;SAClC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAA8B,CAAC;SAC5C,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACb,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM;QACxB,MAAM,EAAE;YACN,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACxC,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;SAC3D;KACF,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -12,13 +12,13 @@ declare const FeeConstantConfigSchema: z.ZodArray<z.ZodObject<{
12
12
  amount: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBigInt]>;
13
13
  addressOrDenom: z.ZodOptional<z.ZodString>;
14
14
  }, "strip", z.ZodTypeAny, {
15
- amount: string | number | bigint;
16
15
  origin: string;
16
+ amount: string | number | bigint;
17
17
  destination: string;
18
18
  addressOrDenom?: string | undefined;
19
19
  }, {
20
- amount: string | number | bigint;
21
20
  origin: string;
21
+ amount: string | number | bigint;
22
22
  destination: string;
23
23
  addressOrDenom?: string | undefined;
24
24
  }>, "many">;
@@ -147,13 +147,13 @@ export declare const WarpCoreConfigSchema: z.ZodObject<{
147
147
  amount: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBigInt]>;
148
148
  addressOrDenom: z.ZodOptional<z.ZodString>;
149
149
  }, "strip", z.ZodTypeAny, {
150
- amount: string | number | bigint;
151
150
  origin: string;
151
+ amount: string | number | bigint;
152
152
  destination: string;
153
153
  addressOrDenom?: string | undefined;
154
154
  }, {
155
- amount: string | number | bigint;
156
155
  origin: string;
156
+ amount: string | number | bigint;
157
157
  destination: string;
158
158
  addressOrDenom?: string | undefined;
159
159
  }>, "many">>;
@@ -163,13 +163,13 @@ export declare const WarpCoreConfigSchema: z.ZodObject<{
163
163
  amount: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBigInt]>;
164
164
  addressOrDenom: z.ZodOptional<z.ZodString>;
165
165
  }, "strip", z.ZodTypeAny, {
166
- amount: string | number | bigint;
167
166
  origin: string;
167
+ amount: string | number | bigint;
168
168
  destination: string;
169
169
  addressOrDenom?: string | undefined;
170
170
  }, {
171
- amount: string | number | bigint;
172
171
  origin: string;
172
+ amount: string | number | bigint;
173
173
  destination: string;
174
174
  addressOrDenom?: string | undefined;
175
175
  }>, "many">>;
@@ -185,14 +185,14 @@ export declare const WarpCoreConfigSchema: z.ZodObject<{
185
185
  }>, "many">>;
186
186
  }, "strip", z.ZodTypeAny, {
187
187
  localFeeConstants?: {
188
- amount: string | number | bigint;
189
188
  origin: string;
189
+ amount: string | number | bigint;
190
190
  destination: string;
191
191
  addressOrDenom?: string | undefined;
192
192
  }[] | undefined;
193
193
  interchainFeeConstants?: {
194
- amount: string | number | bigint;
195
194
  origin: string;
195
+ amount: string | number | bigint;
196
196
  destination: string;
197
197
  addressOrDenom?: string | undefined;
198
198
  }[] | undefined;
@@ -202,14 +202,14 @@ export declare const WarpCoreConfigSchema: z.ZodObject<{
202
202
  }[] | undefined;
203
203
  }, {
204
204
  localFeeConstants?: {
205
- amount: string | number | bigint;
206
205
  origin: string;
206
+ amount: string | number | bigint;
207
207
  destination: string;
208
208
  addressOrDenom?: string | undefined;
209
209
  }[] | undefined;
210
210
  interchainFeeConstants?: {
211
- amount: string | number | bigint;
212
211
  origin: string;
212
+ amount: string | number | bigint;
213
213
  destination: string;
214
214
  addressOrDenom?: string | undefined;
215
215
  }[] | undefined;
@@ -250,14 +250,14 @@ export declare const WarpCoreConfigSchema: z.ZodObject<{
250
250
  }[];
251
251
  options?: {
252
252
  localFeeConstants?: {
253
- amount: string | number | bigint;
254
253
  origin: string;
254
+ amount: string | number | bigint;
255
255
  destination: string;
256
256
  addressOrDenom?: string | undefined;
257
257
  }[] | undefined;
258
258
  interchainFeeConstants?: {
259
- amount: string | number | bigint;
260
259
  origin: string;
260
+ amount: string | number | bigint;
261
261
  destination: string;
262
262
  addressOrDenom?: string | undefined;
263
263
  }[] | undefined;
@@ -298,14 +298,14 @@ export declare const WarpCoreConfigSchema: z.ZodObject<{
298
298
  }[];
299
299
  options?: {
300
300
  localFeeConstants?: {
301
- amount: string | number | bigint;
302
301
  origin: string;
302
+ amount: string | number | bigint;
303
303
  destination: string;
304
304
  addressOrDenom?: string | undefined;
305
305
  }[] | undefined;
306
306
  interchainFeeConstants?: {
307
- amount: string | number | bigint;
308
307
  origin: string;
308
+ amount: string | number | bigint;
309
309
  destination: string;
310
310
  addressOrDenom?: string | undefined;
311
311
  }[] | undefined;
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@hyperlane-xyz/sdk",
3
3
  "description": "The official SDK for the Hyperlane Network",
4
- "version": "8.8.1",
4
+ "version": "8.9.0",
5
5
  "dependencies": {
6
6
  "@arbitrum/sdk": "^4.0.0",
7
7
  "@aws-sdk/client-s3": "^3.577.0",
8
8
  "@chain-registry/types": "^0.50.14",
9
9
  "@cosmjs/cosmwasm-stargate": "^0.32.4",
10
10
  "@cosmjs/stargate": "^0.32.4",
11
- "@hyperlane-xyz/core": "5.11.6",
12
- "@hyperlane-xyz/utils": "8.8.1",
11
+ "@hyperlane-xyz/core": "5.12.0",
12
+ "@hyperlane-xyz/utils": "8.9.0",
13
13
  "@safe-global/api-kit": "1.3.0",
14
14
  "@safe-global/protocol-kit": "1.3.0",
15
15
  "@safe-global/safe-deployments": "1.37.23",