Skip to content

Commit 35701ba

Browse files
authored
feat(infra): USDC/incentiv route (#7227)
1 parent 46e36c9 commit 35701ba

File tree

7 files changed

+130
-3
lines changed

7 files changed

+130
-3
lines changed

.registryrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
be6c988682d1b96f1ba7c777deaad5390080c47b
1+
bc390f0b0d4fbd52c7fc4ebb3e49b8cb88342eae
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
warpRouteId: USDC/incentiv
2+
strategy:
3+
rebalanceStrategy: weighted
4+
chains:
5+
arbitrum:
6+
weighted:
7+
weight: 20
8+
tolerance: 5 # 5% deviation on the expected balance before triggering a rebalance
9+
bridgeLockTime: 1800 # 30 mins in seconds (required for CCTP latency)
10+
bridgeMinAcceptedAmount: 3500
11+
bridge: '0x8a82186EA618b91D13A2041fb7aC31Bf01C02aD2'
12+
13+
base:
14+
weighted:
15+
weight: 20
16+
tolerance: 5 # 5% deviation on the expected balance before triggering a rebalance
17+
bridgeLockTime: 1800 # 30 mins in seconds (required for CCTP latency)
18+
bridgeMinAcceptedAmount: 3500
19+
bridge: '0x5C4aFb7e23B1Dc1B409dc1702f89C64527b25975'
20+
21+
ethereum:
22+
weighted:
23+
weight: 20
24+
tolerance: 5 # 5% deviation on the expected balance before triggering a rebalance
25+
bridgeLockTime: 1800 # 30 mins in seconds (required for CCTP latency)
26+
bridgeMinAcceptedAmount: 3500
27+
bridge: '0xedCBAa585FD0F80f20073F9958246476466205b8'
28+
29+
optimism:
30+
weighted:
31+
weight: 20
32+
tolerance: 5 # 5% deviation on the expected balance before triggering a rebalance
33+
bridgeLockTime: 1800 # 30 mins in seconds (required for CCTP latency)
34+
bridgeMinAcceptedAmount: 3500
35+
bridge: '0xfB7681ECB05F85c383A5ce4439C7dF5ED12c77DE'
36+
37+
polygon:
38+
weighted:
39+
weight: 20
40+
tolerance: 5 # 5% deviation on the expected balance before triggering a rebalance
41+
bridgeLockTime: 1800 # 30 mins in seconds (required for CCTP latency)
42+
bridgeMinAcceptedAmount: 3500
43+
bridge: '0xa62F45662809f5F6535b58bae9A572a2EC4A1f84'
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import { ChainMap, HypTokenRouterConfig } from '@hyperlane-xyz/sdk';
2+
import { Address } from '@hyperlane-xyz/utils';
3+
4+
import { RouterConfigWithoutOwner } from '../../../../../src/config/warp.js';
5+
6+
import {
7+
getRebalancingUSDCConfigForChain,
8+
getSyntheticTokenConfigForChain,
9+
getUSDCRebalancingBridgesConfigFor,
10+
} from './utils.js';
11+
12+
type DeploymentChains<T> = {
13+
arbitrum: T;
14+
base: T;
15+
ethereum: T;
16+
incentiv: T;
17+
optimism: T;
18+
polygon: T;
19+
};
20+
21+
const SAFE_OWNER_ADDRESS = '0x64F6C20eAeaF8418F73E1D399d8b86B9eA26e6F2';
22+
const INCENTIV_OWNER_ADDRESS = '0x4c1B3430ec07F2D58b07a18c53B6f92603C2eF3F';
23+
24+
// SAFE wallets from the team
25+
const ownersByChain: DeploymentChains<Address> = {
26+
arbitrum: SAFE_OWNER_ADDRESS,
27+
base: SAFE_OWNER_ADDRESS,
28+
ethereum: SAFE_OWNER_ADDRESS,
29+
incentiv: INCENTIV_OWNER_ADDRESS,
30+
optimism: SAFE_OWNER_ADDRESS,
31+
polygon: SAFE_OWNER_ADDRESS,
32+
};
33+
34+
const rebalancingConfigByChain = getUSDCRebalancingBridgesConfigFor(
35+
Object.keys(ownersByChain),
36+
);
37+
38+
export const getIncentivUSDCWarpConfig = async (
39+
routerConfig: ChainMap<RouterConfigWithoutOwner>,
40+
): Promise<ChainMap<HypTokenRouterConfig>> => {
41+
const deployConfig: DeploymentChains<HypTokenRouterConfig> = {
42+
arbitrum: getRebalancingUSDCConfigForChain(
43+
'arbitrum',
44+
routerConfig,
45+
ownersByChain,
46+
rebalancingConfigByChain,
47+
),
48+
base: getRebalancingUSDCConfigForChain(
49+
'base',
50+
routerConfig,
51+
ownersByChain,
52+
rebalancingConfigByChain,
53+
),
54+
ethereum: getRebalancingUSDCConfigForChain(
55+
'ethereum',
56+
routerConfig,
57+
ownersByChain,
58+
rebalancingConfigByChain,
59+
),
60+
incentiv: getSyntheticTokenConfigForChain(
61+
'incentiv',
62+
routerConfig,
63+
ownersByChain,
64+
),
65+
optimism: getRebalancingUSDCConfigForChain(
66+
'optimism',
67+
routerConfig,
68+
ownersByChain,
69+
rebalancingConfigByChain,
70+
),
71+
polygon: getRebalancingUSDCConfigForChain(
72+
'polygon',
73+
routerConfig,
74+
ownersByChain,
75+
rebalancingConfigByChain,
76+
),
77+
};
78+
79+
return deployConfig;
80+
};

typescript/infra/config/environments/mainnet3/warp/warpIds.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ export enum WarpRouteIds {
117117

118118
MantraUSDC = 'USDC/mantra',
119119

120+
IncentivUSDC = 'USDC/incentiv',
121+
120122
LitchainLITKEY = 'LITKEY/litchain',
121123

122124
MainnetCCTP = 'USDC/mainnet-cctp',

typescript/infra/config/warp.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ import { getEthereumVictionETHWarpConfig } from './environments/mainnet3/warp/co
6161
import { getEthereumVictionUSDCWarpConfig } from './environments/mainnet3/warp/configGetters/getEthereumVictionUSDCWarpConfig.js';
6262
import { getEthereumVictionUSDTWarpConfig } from './environments/mainnet3/warp/configGetters/getEthereumVictionUSDTWarpConfig.js';
6363
import { getEthereumZircuitRe7LRTWarpConfig } from './environments/mainnet3/warp/configGetters/getEthereumZircuitRe7LRTWarpConfig.js';
64+
import { getIncentivUSDCWarpConfig } from './environments/mainnet3/warp/configGetters/getIncentivUSDCWarpConfig.js';
6465
import { getInevmInjectiveINJWarpConfig } from './environments/mainnet3/warp/configGetters/getInevmInjectiveINJWarpConfig.js';
6566
import { getLitchainLITKEYWarpConfig } from './environments/mainnet3/warp/configGetters/getLitLitchainWarpConfig.js';
6667
import { getLumiaUSDCWarpConfig } from './environments/mainnet3/warp/configGetters/getLumiaUSDCWarpConfig.js';
@@ -179,6 +180,7 @@ export const warpConfigGetterMap: Record<string, WarpConfigGetter> = {
179180
[WarpRouteIds.PulsechainUSDC]: getPulsechainUSDCWarpConfig,
180181
[WarpRouteIds.ElectroneumUSDC]: getElectroneumUSDCWarpConfig,
181182
[WarpRouteIds.MantraUSDC]: getMantraUSDCWarpConfig,
183+
[WarpRouteIds.IncentivUSDC]: getIncentivUSDCWarpConfig,
182184
[WarpRouteIds.LitchainLITKEY]: getLitchainLITKEYWarpConfig,
183185
};
184186

typescript/infra/src/rebalancer/helm.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ export class RebalancerHelmManager extends HelmManager {
7575
return {
7676
image: {
7777
repository: 'gcr.io/abacus-labs-dev/hyperlane-monorepo',
78-
tag: '15e2d5a-20251017-141153',
78+
tag: 'e0f2a19-20251021-202631',
7979
},
8080
withMetrics: this.withMetrics,
8181
fullnameOverride: this.helmReleaseName,

typescript/infra/src/warp/helm.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ export class WarpRouteMonitorHelmManager extends HelmManager {
9696
return {
9797
image: {
9898
repository: 'gcr.io/abacus-labs-dev/hyperlane-monorepo',
99-
tag: '15e2d5a-20251017-141153',
99+
tag: 'e0f2a19-20251021-202631',
100100
},
101101
warpRouteId: this.warpRouteId,
102102
fullnameOverride: this.helmReleaseName,

0 commit comments

Comments
 (0)