From 8a4e92a910b3b3b8eb97d4ad53f15fa43bee1902 Mon Sep 17 00:00:00 2001 From: tiago-hansen Date: Wed, 27 May 2026 11:20:03 -0300 Subject: [PATCH] add Clearstar Euler fork tests on HyperEVM (csUSDC, csUSDH, csUSDT0) Co-Authored-By: Claude Opus 4.7 (1M context) --- .../ERC4626HyperEvmEulerClearstarUSDC.t.sol | 26 +++++++++++++++++++ .../ERC4626HyperEvmEulerClearstarUSDH.t.sol | 26 +++++++++++++++++++ .../ERC4626HyperEvmEulerClearstarUSDT0.t.sol | 26 +++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 test/hyperevm/ERC4626HyperEvmEulerClearstarUSDC.t.sol create mode 100644 test/hyperevm/ERC4626HyperEvmEulerClearstarUSDH.t.sol create mode 100644 test/hyperevm/ERC4626HyperEvmEulerClearstarUSDT0.t.sol diff --git a/test/hyperevm/ERC4626HyperEvmEulerClearstarUSDC.t.sol b/test/hyperevm/ERC4626HyperEvmEulerClearstarUSDC.t.sol new file mode 100644 index 0000000..54c6860 --- /dev/null +++ b/test/hyperevm/ERC4626HyperEvmEulerClearstarUSDC.t.sol @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity ^0.8.24; + +import "forge-std/Test.sol"; + +import { IERC4626 } from "@openzeppelin/contracts/interfaces/IERC4626.sol"; + +import { ERC4626WrapperBaseTest, ERC4626SetupState, ForkState } from "../ERC4626WrapperBase.t.sol"; + +contract ERC4626HyperEvmEulerClearstarUSDCTest is ERC4626WrapperBaseTest { + function _setupFork() internal pure override returns (ForkState memory forkState) { + // Notice that when executing this function, the fork has not yet been created, so all chain states are empty. + forkState.network = "hyperevm"; + forkState.blockNumber = 36228000; + } + + function _setUpForkTestVariables() internal pure override returns (ERC4626SetupState memory erc4626State) { + // csUSDC (Clearstar Earn USDC) + erc4626State.wrapper = IERC4626(0xF868A2B30854FE13e26F7AB7a92609cCb6b9c0e1); + + // Donor of USDC + erc4626State.underlyingDonor = 0x02631682AA6039b096B7A764Ba0AE555F658fC24; + erc4626State.amountToDonate = 1e4 * 1e6; + } +} diff --git a/test/hyperevm/ERC4626HyperEvmEulerClearstarUSDH.t.sol b/test/hyperevm/ERC4626HyperEvmEulerClearstarUSDH.t.sol new file mode 100644 index 0000000..04f99d9 --- /dev/null +++ b/test/hyperevm/ERC4626HyperEvmEulerClearstarUSDH.t.sol @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity ^0.8.24; + +import "forge-std/Test.sol"; + +import { IERC4626 } from "@openzeppelin/contracts/interfaces/IERC4626.sol"; + +import { ERC4626WrapperBaseTest, ERC4626SetupState, ForkState } from "../ERC4626WrapperBase.t.sol"; + +contract ERC4626HyperEvmEulerClearstarUSDHTest is ERC4626WrapperBaseTest { + function _setupFork() internal pure override returns (ForkState memory forkState) { + // Notice that when executing this function, the fork has not yet been created, so all chain states are empty. + forkState.network = "hyperevm"; + forkState.blockNumber = 36228000; + } + + function _setUpForkTestVariables() internal pure override returns (ERC4626SetupState memory erc4626State) { + // csUSDH (Clearstar Earn USDH) + erc4626State.wrapper = IERC4626(0xF38eA9DE758a8F6be08B6E65bc0Ff2f3e3aB741b); + + // Donor of USDH + erc4626State.underlyingDonor = 0x4c2c0F0bB2631B02aC9299C59690914ee7A200B8; + erc4626State.amountToDonate = 1e4 * 1e6; + } +} diff --git a/test/hyperevm/ERC4626HyperEvmEulerClearstarUSDT0.t.sol b/test/hyperevm/ERC4626HyperEvmEulerClearstarUSDT0.t.sol new file mode 100644 index 0000000..abfe349 --- /dev/null +++ b/test/hyperevm/ERC4626HyperEvmEulerClearstarUSDT0.t.sol @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity ^0.8.24; + +import "forge-std/Test.sol"; + +import { IERC4626 } from "@openzeppelin/contracts/interfaces/IERC4626.sol"; + +import { ERC4626WrapperBaseTest, ERC4626SetupState, ForkState } from "../ERC4626WrapperBase.t.sol"; + +contract ERC4626HyperEvmEulerClearstarUSDT0Test is ERC4626WrapperBaseTest { + function _setupFork() internal pure override returns (ForkState memory forkState) { + // Notice that when executing this function, the fork has not yet been created, so all chain states are empty. + forkState.network = "hyperevm"; + forkState.blockNumber = 36228000; + } + + function _setUpForkTestVariables() internal pure override returns (ERC4626SetupState memory erc4626State) { + // csUSDT0 (Clearstar Earn USDT0) + erc4626State.wrapper = IERC4626(0x6dd448d5cb73DC96788d5BE605DD3C5c83864a36); + + // Donor of USDT0 + erc4626State.underlyingDonor = 0xBD151BeF567dAbf712A811402A27839768a13D70; + erc4626State.amountToDonate = 1e4 * 1e6; + } +}