Skip to content

Commit 283fa1e

Browse files
Merge branch 'master' into feat/factory
Signed-off-by: Haythem Sellami <[email protected]>
2 parents baeb174 + 8f0c306 commit 283fa1e

File tree

4 files changed

+21
-29
lines changed

4 files changed

+21
-29
lines changed

remappings.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ evc/=lib/ethereum-vault-connector/src/
33
evk/=lib/euler-vault-kit/src/
44
ethereum-vault-connector/=lib/ethereum-vault-connector/src/
55
evk-test/=lib/euler-vault-kit/test/
6+
permit2/=lib/euler-vault-kit/lib/permit2/

src/EulerSwap.sol

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {IEVC} from "evc/interfaces/IEthereumVaultConnector.sol";
55
import {IEVault, IERC20, IBorrowing, IERC4626, IRiskManager} from "evk/EVault/IEVault.sol";
66
import {IUniswapV2Callee} from "./interfaces/IUniswapV2Callee.sol";
77
import {IEulerSwap} from "./interfaces/IEulerSwap.sol";
8+
import {IAllowanceTransfer} from "permit2/src/interfaces/IAllowanceTransfer.sol";
89
import {EVCUtil} from "evc/utils/EVCUtil.sol";
910

1011
contract EulerSwap is IEulerSwap, EVCUtil {
@@ -57,14 +58,11 @@ contract EulerSwap is IEulerSwap, EVCUtil {
5758
status = 1;
5859
}
5960

60-
constructor(Params memory params, CurveParams memory curveParams) EVCUtil(params.evc) {
61+
constructor(Params memory params, CurveParams memory curveParams) EVCUtil(IEVault(params.vault0).EVC()) {
6162
// EulerSwap params
6263

6364
require(params.fee < 1e18, BadFee());
64-
65-
address vault0Evc = IEVault(params.vault0).EVC();
66-
require(vault0Evc == IEVault(params.vault1).EVC(), DifferentEVC());
67-
require(vault0Evc == params.evc, DifferentEVC());
65+
require(IEVault(params.vault0).EVC() == IEVault(params.vault1).EVC(), DifferentEVC());
6866

6967
address asset0Addr = IEVault(params.vault0).asset();
7068
address asset1Addr = IEVault(params.vault1).asset();
@@ -147,8 +145,21 @@ contract EulerSwap is IEulerSwap, EVCUtil {
147145
require(status != 2, Locked());
148146
status = 1;
149147

150-
IERC20(asset0).approve(vault0, type(uint256).max);
151-
IERC20(asset1).approve(vault1, type(uint256).max);
148+
address permit2 = IEVault(vault0).permit2Address();
149+
if (permit2 == address(0)) {
150+
IERC20(asset0).approve(vault0, type(uint256).max);
151+
} else {
152+
IERC20(asset0).approve(permit2, type(uint256).max);
153+
IAllowanceTransfer(permit2).approve(asset0, vault0, type(uint160).max, type(uint48).max);
154+
}
155+
156+
permit2 = IEVault(vault1).permit2Address();
157+
if (permit2 == address(0)) {
158+
IERC20(asset1).approve(vault1, type(uint256).max);
159+
} else {
160+
IERC20(asset1).approve(permit2, type(uint256).max);
161+
IAllowanceTransfer(permit2).approve(asset1, vault1, type(uint160).max, type(uint48).max);
162+
}
152163

153164
IEVC(evc).enableCollateral(myAccount, vault0);
154165
IEVC(evc).enableCollateral(myAccount, vault1);
@@ -183,9 +194,7 @@ contract EulerSwap is IEulerSwap, EVCUtil {
183194
function depositAssets(address vault, uint256 amount) internal {
184195
IEVault(vault).deposit(amount, myAccount);
185196

186-
uint256 debt = myDebt(vault);
187-
188-
if (debt > 0) {
197+
if (IEVC(evc).isControllerEnabled(myAccount, vault)) {
189198
IEVC(evc).call(
190199
vault, myAccount, 0, abi.encodeCall(IBorrowing.repayWithShares, (type(uint256).max, myAccount))
191200
);

test/EulerSwapTest.t.sol

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,6 @@ contract EulerSwapTest is EulerSwapTestBase {
1212
eulerSwap = createEulerSwap(50e18, 50e18, 0, 1e18, 1e18, 0.4e18, 0.85e18);
1313
}
1414

15-
function test_different_EVC() public {
16-
vm.expectRevert(EulerSwap.DifferentEVC.selector);
17-
18-
new EulerSwap(
19-
IEulerSwap.Params({
20-
evc: address(makeAddr("RANDOM_EVC")),
21-
vault0: address(eTST),
22-
vault1: address(eTST2),
23-
myAccount: holder,
24-
debtLimit0: 50e18,
25-
debtLimit1: 50e18,
26-
fee: 0
27-
}),
28-
IEulerSwap.CurveParams({priceX: 1e18, priceY: 1e18, concentrationX: 4e18, concentrationY: 0.85e18})
29-
);
30-
}
31-
3215
function test_basicSwap_exactIn() public monotonicHolderNAV {
3316
uint256 amountIn = 1e18;
3417
uint256 amountOut =

test/EulerSwapTestBase.t.sol

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,7 @@ contract EulerSwapTestBase is EVaultTestBase {
146146
view
147147
returns (EulerSwap.Params memory)
148148
{
149-
return IEulerSwap.Params({
150-
evc: address(evc),
149+
return EulerSwap.Params({
151150
vault0: address(eTST),
152151
vault1: address(eTST2),
153152
myAccount: holder,

0 commit comments

Comments
 (0)