Skip to content

Commit ec70167

Browse files
fix: cctp transfer validation (#8621)
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
1 parent a8caeb5 commit ec70167

4 files changed

Lines changed: 12 additions & 6 deletions

File tree

.changeset/little-boxes-yawn.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@hyperlane-xyz/cli": patch
3+
"@hyperlane-xyz/sdk": patch
4+
---
5+
6+
Fixed cctp transfer validation

typescript/cli/src/deploy/warp.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,7 @@ import {
5050
getRouterAddressesFromWarpCoreConfig,
5151
getSubmitterBuilder,
5252
getTokenConnectionId,
53-
isCollateralTokenConfig,
5453
isCrossCollateralTokenConfig,
55-
isXERC20TokenConfig,
5654
normalizeScale,
5755
splitWarpCoreAndExtendedConfigs,
5856
tokenTypeToStandard,
@@ -370,10 +368,8 @@ function generateTokenConfigs(
370368
for (const chainName of Object.keys(contracts)) {
371369
const config = warpDeployConfig[chainName];
372370
const collateralAddressOrDenom =
373-
isCollateralTokenConfig(config) ||
374-
isXERC20TokenConfig(config) ||
375-
isCrossCollateralTokenConfig(config)
376-
? (config as { token: string }).token // gets set in the above deriveTokenMetadata()
371+
'token' in config && typeof config.token === 'string'
372+
? config.token
377373
: undefined;
378374

379375
const protocol = multiProvider.getProtocol(chainName);

typescript/sdk/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -850,6 +850,7 @@ export {
850850
HypTokenRouterConfigSchema,
851851
HypTokenRouterVirtualConfig,
852852
isCollateralRebaseTokenConfig,
853+
isCctpTokenConfig,
853854
isCollateralTokenConfig,
854855
isMovableCollateralTokenConfig,
855856
isNativeTokenConfig,

typescript/sdk/src/token/TokenMetadata.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,11 @@ function matchesUnderlyingAsset(
4545
return true;
4646
}
4747

48+
// Only HypNative collateral legitimately lacks collateralAddressOrDenom;
49+
// any other collateralized token missing it is a config bug, not a native match.
4850
if (
4951
!source.collateralAddressOrDenom &&
52+
source.isHypNative() &&
5053
(target.isNative() || target.isHypNative())
5154
) {
5255
return true;

0 commit comments

Comments
 (0)