Skip to content

Commit f684196

Browse files
authored
chore: Add yield route Checker fixes (#7216)
1 parent 1dc869f commit f684196

File tree

4 files changed

+28
-2
lines changed

4 files changed

+28
-2
lines changed

.changeset/empty-dolls-pay.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@hyperlane-xyz/sdk": minor
3+
---
4+
5+
Update Warp Reader to set `token` to underlying `vault` instead of `wrappedToken` for yield routes. Update Checker to return the vault's `asset` as the collateral token.

typescript/sdk/src/token/EvmERC20WarpRouteReader.hardhat-test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ describe('ERC20WarpRouterReader', async () => {
421421
expect(derivedConfig.type).to.equal(config[chain].type);
422422
expect(derivedConfig.mailbox).to.equal(config[chain].mailbox);
423423
expect(derivedConfig.owner).to.equal(config[chain].owner);
424-
expect(derivedConfig.token).to.equal(token.address);
424+
expect(derivedConfig.token).to.equal(vault.address);
425425
});
426426

427427
it('should derive rebase collateral vault config correctly', async () => {
@@ -447,7 +447,7 @@ describe('ERC20WarpRouterReader', async () => {
447447
expect(derivedConfig.type).to.equal(config[chain].type);
448448
expect(derivedConfig.mailbox).to.equal(config[chain].mailbox);
449449
expect(derivedConfig.owner).to.equal(config[chain].owner);
450-
expect(derivedConfig.token).to.equal(token.address);
450+
expect(derivedConfig.token).to.equal(vault.address);
451451
});
452452

453453
// FiatTokenTest

typescript/sdk/src/token/EvmERC20WarpRouteReader.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,10 @@ export class EvmERC20WarpRouteReader extends EvmRouterReader {
606606

607607
return {
608608
...erc20TokenMetadata,
609+
token: await HypERC4626OwnerCollateral__factory.connect(
610+
hypToken,
611+
this.provider,
612+
).vault(),
609613
type: TokenType.collateralVault,
610614
};
611615
}
@@ -618,6 +622,10 @@ export class EvmERC20WarpRouteReader extends EvmRouterReader {
618622

619623
return {
620624
...erc20TokenMetadata,
625+
token: await HypERC4626Collateral__factory.connect(
626+
hypToken,
627+
this.provider,
628+
).vault(),
621629
type: TokenType.collateralVaultRebase,
622630
};
623631
}

typescript/sdk/src/token/checker.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
ERC20,
55
ERC20__factory,
66
HypERC20Collateral,
7+
IERC4626__factory,
78
IXERC20Lockbox__factory,
89
Ownable,
910
Ownable__factory,
@@ -273,6 +274,18 @@ export class HypERC20Checker extends ProxiedRouterChecker<
273274
collateralTokenAddress,
274275
provider,
275276
);
277+
} else if (
278+
expectedConfig.type === TokenType.collateralVault ||
279+
expectedConfig.type === TokenType.collateralVaultRebase
280+
) {
281+
const collateralTokenAddress = await IERC4626__factory.connect(
282+
expectedConfig.token,
283+
provider,
284+
).callStatic.asset();
285+
collateralToken = ERC20__factory.connect(
286+
collateralTokenAddress,
287+
provider,
288+
);
276289
} else {
277290
collateralToken = ERC20__factory.connect(
278291
expectedConfig.token,

0 commit comments

Comments
 (0)