Skip to content

Commit cf72538

Browse files
authored
feat: FlashmintHYETHV2 (#179)
* First version of FlashhMintHyETHV2 contract * Run old integration tests against new version * Adjust contract logic for swapping between eth and erc4626 asset * Adjust tests to new composition including morpho * Fix arbitrum integration tests
1 parent 6477886 commit cf72538

File tree

8 files changed

+1194
-9
lines changed

8 files changed

+1194
-9
lines changed

contracts/exchangeIssuance/FlashMintHyETHV2.sol

Lines changed: 693 additions & 0 deletions
Large diffs are not rendered by default.

contracts/interfaces/IERC4626.sol

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
pragma solidity 0.6.10;
33

44
interface IERC4626 {
5+
function asset() external view returns (address);
56
function deposit(uint256 assets_, address receiver_) external returns (uint256 shares_);
67
function mint(uint256 shares_, address receiver_) external returns (uint256 assets_);
78
function redeem(uint256 shares_, address receiver_, address owner_) external returns (uint256 assetsAfterFee_);

test/integration/arbitrum/addresses.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export const PRODUCTION_ADDRESSES = {
4040
setFork: {
4141
controller: "0xCd79A0B9aeca0eCE7eA59d14338ea330cb1cb2d7",
4242
debtIssuanceModuleV2: "0x120d2f26B7ffd35a8917415A5766Fa63B2af94aa",
43+
debtIssuanceModuleV3: "0x4AC26c26116Fa976352b70700af58Bc2442489d8",
4344
aaveV3LeverageModule: "0x6D1b74e18064172D028C5EE7Af5D0ccC26f2A4Ae",
4445
extensions: {
4546
ETH2X: {

test/integration/arbitrum/flashMintLeveragedExtended.spec.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ if (process.env.INTEGRATIONTEST) {
4343
let weth: IWETH;
4444
let usdc: IERC20;
4545

46-
setBlockNumber(201830000);
46+
setBlockNumber(225770000);
4747

4848
before(async () => {
4949
[owner] = await getAccounts();
@@ -69,7 +69,7 @@ if (process.env.INTEGRATIONTEST) {
6969
addresses.dexes.uniV3.router,
7070
addresses.dexes.uniV3.quoter,
7171
addresses.setFork.controller,
72-
addresses.setFork.debtIssuanceModuleV2,
72+
addresses.setFork.debtIssuanceModuleV3,
7373
addresses.setFork.aaveV3LeverageModule,
7474
addresses.lending.aaveV3.lendingPool,
7575
addresses.dexes.curve.addressProvider,
@@ -103,7 +103,7 @@ if (process.env.INTEGRATIONTEST) {
103103

104104
it("debt issuance module address is set correctly", async () => {
105105
expect(await flashMintLeveraged.debtIssuanceModule()).to.eq(
106-
utils.getAddress(addresses.setFork.debtIssuanceModuleV2),
106+
utils.getAddress(addresses.setFork.debtIssuanceModuleV3),
107107
);
108108
});
109109

@@ -131,11 +131,11 @@ if (process.env.INTEGRATIONTEST) {
131131

132132
await aweth
133133
.connect(owner.wallet)
134-
.approve(addresses.setFork.debtIssuanceModuleV2, ether(10));
134+
.approve(addresses.setFork.debtIssuanceModuleV3, ether(10));
135135
await weth.connect(owner.wallet).approve(flashMintLeveraged.address, ether(100));
136136
const debtIssuanceModule = (await ethers.getContractAt(
137137
"IDebtIssuanceModule",
138-
addresses.setFork.debtIssuanceModuleV2,
138+
addresses.setFork.debtIssuanceModuleV3,
139139
owner.wallet,
140140
)) as IDebtIssuanceModule;
141141

@@ -173,15 +173,15 @@ if (process.env.INTEGRATIONTEST) {
173173
expect(
174174
await collateralAToken.allowance(
175175
flashMintLeveraged.address,
176-
addresses.setFork.debtIssuanceModuleV2,
176+
addresses.setFork.debtIssuanceModuleV3,
177177
),
178178
).to.equal(MAX_UINT_256);
179179
});
180180
it("should adjust debt token allowance correctly", async () => {
181181
expect(
182182
await debtToken.allowance(
183183
flashMintLeveraged.address,
184-
addresses.setFork.debtIssuanceModuleV2,
184+
addresses.setFork.debtIssuanceModuleV3,
185185
),
186186
).to.equal(MAX_UINT_256);
187187
});
@@ -198,7 +198,7 @@ if (process.env.INTEGRATIONTEST) {
198198
.transfer(owner.address, utils.parseUnits("10000", 6));
199199
}
200200
// This is done to avoid flaky "Invalid transfer in, results in undercollateralization" error
201-
// See: https://github.com/IndexCoop/index-protocol/blob/1a587d93d273d9004d03f1235c395f6f7cd147dc/test/protocol/modules/v1/debtIssuanceModuleV2.spec.ts#L730
201+
// See: https://github.com/IndexCoop/index-protocol/blob/1a587d93d273d9004d03f1235c395f6f7cd147dc/test/protocol/modules/v1/debtIssuanceModuleV3.spec.ts#L730
202202
// TODO: Review if we have to do this in production.
203203
await aweth.transfer(setToken.address, ether(0.000001));
204204
});

test/integration/ethereum/addresses.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export const PRODUCTION_ADDRESSES = {
3737
rsEth: "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7",
3838
rswEth: "0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0",
3939
acrossWethLP: "0x28F77208728B0A45cAb24c4868334581Fe86F95B",
40+
morphoRe7WETH: "0x78Fc2c2eD1A4cDb5402365934aE5648aDAd094d0",
4041
},
4142
whales: {
4243
stEth: "0xdc24316b9ae028f1497c275eb9192a3ea0f67022",

test/integration/ethereum/flashMintHyETH.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ const NO_OP_SWAP_DATA: SwapData = {
5050
};
5151

5252
if (process.env.INTEGRATIONTEST) {
53-
describe.only("FlashMintHyETH - Integration Test", async () => {
53+
describe("FlashMintHyETH - Integration Test", async () => {
5454
const addresses = PRODUCTION_ADDRESSES;
5555
let owner: Account;
5656
let deployer: DeployHelper;

0 commit comments

Comments
 (0)