Skip to content

Commit 80daa1f

Browse files
feat: permit2 support
1 parent a54cf8e commit 80daa1f

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
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: 16 additions & 2 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 {
@@ -164,8 +165,21 @@ contract EulerSwap is IEulerSwap, EVCUtil {
164165
require(status != 2, Locked());
165166
status = 1;
166167

167-
IERC20(asset0).approve(vault0, type(uint256).max);
168-
IERC20(asset1).approve(vault1, type(uint256).max);
168+
address permit2 = IEVault(vault0).permit2Address();
169+
if (permit2 == address(0)) {
170+
IERC20(asset0).approve(vault0, type(uint256).max);
171+
} else {
172+
IERC20(asset0).approve(permit2, type(uint256).max);
173+
IAllowanceTransfer(permit2).approve(asset0, vault0, type(uint160).max, type(uint48).max);
174+
}
175+
176+
permit2 = IEVault(vault1).permit2Address();
177+
if (permit2 == address(0)) {
178+
IERC20(asset1).approve(vault1, type(uint256).max);
179+
} else {
180+
IERC20(asset1).approve(permit2, type(uint256).max);
181+
IAllowanceTransfer(permit2).approve(asset1, vault1, type(uint160).max, type(uint48).max);
182+
}
169183

170184
IEVC(evc).enableCollateral(myAccount, vault0);
171185
IEVC(evc).enableCollateral(myAccount, vault1);

0 commit comments

Comments
 (0)