Skip to content

Commit a7a1b95

Browse files
committed
Switch to EulerSwap2
1 parent eeef15f commit a7a1b95

File tree

7 files changed

+45
-210
lines changed

7 files changed

+45
-210
lines changed

POOL_CREATION.md

Lines changed: 0 additions & 113 deletions
This file was deleted.

libflat/euler-swap

Submodule euler-swap updated 59 files

remappings.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ openzeppelin-contracts/=libflat/openzeppelin-contracts/contracts/
55
@uniswap/v4-periphery/=libflat/v4-periphery/
66
v4-periphery/=libflat/v4-periphery/
77
v4-core/=libflat/v4-core/src/
8-
solmate/=libflat/solmate/
8+
solmate/=libflat/solmate/src/
99

1010
ethereum-vault-connector/=libflat/ethereum-vault-connector/src/
1111
evc/=libflat/ethereum-vault-connector/src/

script/DeployScenario.s.sol

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,10 @@ import {TestERC20} from "evk-test/unit/evault/EVaultTestBase.t.sol";
4242
import {IEVault} from "evk/EVault/IEVault.sol";
4343
import {IEulerSwap, IEVC, EulerSwap} from "euler-swap/EulerSwap.sol";
4444
import {EulerSwapFactory} from "euler-swap/EulerSwapFactory.sol";
45+
import {EulerSwapRegistry} from "euler-swap/EulerSwapRegistry.sol";
4546
import {EulerSwapPeriphery} from "euler-swap/EulerSwapPeriphery.sol";
4647
import {PoolManagerDeployer} from "euler-swap/../test/utils/PoolManagerDeployer.sol";
48+
import {PerspectiveMock} from "euler-swap/../test/utils/PerspectiveMock.sol";
4749

4850
// Maglev stuff
4951

@@ -123,7 +125,9 @@ contract DeployScenario is Script {
123125
address poolManager;
124126
address eulerSwapImpl;
125127
EulerSwapFactory eulerSwapFactory;
128+
EulerSwapRegistry eulerSwapRegistry;
126129
EulerSwapPeriphery eulerSwapPeriphery;
130+
PerspectiveMock perspectiveMock;
127131

128132
//////// Maglev
129133

@@ -268,9 +272,14 @@ contract DeployScenario is Script {
268272
}
269273

270274
function deployEulerSwap() internal {
275+
// Mocks
271276
poolManager = address(PoolManagerDeployer.deploy(address(0)));
277+
perspectiveMock = new PerspectiveMock();
278+
279+
// EulerSwap contracts
272280
eulerSwapImpl = address(new EulerSwap(address(evc), poolManager));
273-
eulerSwapFactory = new EulerSwapFactory(address(evc), address(factory), eulerSwapImpl, address(0), address(0));
281+
eulerSwapFactory = new EulerSwapFactory(address(evc), eulerSwapImpl, address(0), address(0));
282+
eulerSwapRegistry = new EulerSwapRegistry(address(evc), address(eulerSwapFactory), address(perspectiveMock), address(0));
274283
eulerSwapPeriphery = new EulerSwapPeriphery();
275284

276285
string memory result = vm.serializeAddress("eulerSwap", "eulerSwapFactory", address(eulerSwapFactory));

script/MineSaltForPool.s.sol

Lines changed: 0 additions & 75 deletions
This file was deleted.

script/scenarios/EulerSwapPoolCreation.s.sol

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,25 +39,37 @@ contract EulerSwapPoolCreation is DeployScenario, Test {
3939
}
4040

4141
// Prepare pool parameters
42-
IEulerSwap.Params memory poolParams = IEulerSwap.Params({
43-
vault0: vault0,
44-
vault1: vault1,
42+
IEulerSwap.StaticParams memory sParams = IEulerSwap.StaticParams({
43+
supplyVault0: vault0,
44+
supplyVault1: vault1,
45+
borrowVault0: vault0,
46+
borrowVault1: vault1,
4547
eulerAccount: user0,
48+
feeRecipient: user0,
49+
protocolFee: 0,
50+
protocolFeeRecipient: address(0)
51+
});
52+
53+
IEulerSwap.DynamicParams memory dParams = IEulerSwap.DynamicParams({
4654
equilibriumReserve0: 10000e18, // 10k virtual reserves
4755
equilibriumReserve1: 10000e18, // 10k virtual reserves
56+
minReserve0: 0,
57+
minReserve1: 0,
4858
priceX: 1e18, // 1:1 price
4959
priceY: 1e18,
5060
concentrationX: 0.5e18, // 50% concentration
5161
concentrationY: 0.5e18, // 50% concentration
52-
fee: 0.003e18, // 0.3% fee
53-
protocolFee: 0,
54-
protocolFeeRecipient: address(0)
62+
fee0: 0.003e18, // 0.3% fee
63+
fee1: 0.003e18, // 0.3% fee
64+
expiration: 0,
65+
swapHookedOperations: 0,
66+
swapHook: address(0)
5567
});
5668

5769
// Prepare initial state
5870
IEulerSwap.InitialState memory initialState = IEulerSwap.InitialState({
59-
currReserve0: 10000e18,
60-
currReserve1: 10000e18
71+
reserve0: 10000e18,
72+
reserve1: 10000e18
6173
});
6274

6375
// Mine salt using HookMiner to find a valid hook address
@@ -71,7 +83,7 @@ contract EulerSwapPoolCreation is DeployScenario, Test {
7183
);
7284

7385
// Prepare creation code
74-
bytes memory creationCode = MetaProxyDeployer.creationCodeMetaProxy(eulerSwapImpl, abi.encode(poolParams));
86+
bytes memory creationCode = MetaProxyDeployer.creationCodeMetaProxy(eulerSwapImpl, abi.encode(sParams));
7587
(address hookAddress, bytes32 salt) = HookMiner.find(address(eulerSwapFactory), flags, creationCode);
7688

7789
console.log("Found salt:", uint256(salt));
@@ -91,7 +103,7 @@ contract EulerSwapPoolCreation is DeployScenario, Test {
91103
onBehalfOfAccount: user0,
92104
targetContract: address(eulerSwapFactory),
93105
value: 0,
94-
data: abi.encodeCall(IEulerSwapFactory.deployPool, (poolParams, initialState, salt))
106+
data: abi.encodeCall(IEulerSwapFactory.deployPool, (sParams, dParams, initialState, salt))
95107
});
96108
console.log("\nDeploying EulerSwap pool...");
97109
console.log("Pool manager address:", address(poolManager));
@@ -115,7 +127,7 @@ contract EulerSwapPoolCreation is DeployScenario, Test {
115127
console.log("- USDT Vault:", vault1);
116128

117129
// Check if pool exists
118-
address deployedPool = eulerSwapFactory.poolByEulerAccount(user0);
130+
address deployedPool = eulerSwapRegistry.poolByEulerAccount(user0);
119131
if (deployedPool != address(0)) {
120132
console.log("- Pool deployed at:", deployedPool);
121133
console.log("");
@@ -125,4 +137,4 @@ contract EulerSwapPoolCreation is DeployScenario, Test {
125137
console.log("Error: Pool deployment may have failed!");
126138
}
127139
}
128-
}
140+
}

src/MaglevLens.sol

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ pragma solidity ^0.8.13;
44
import {IEVC} from "evc/interfaces/IEthereumVaultConnector.sol";
55
import {IEVault, IERC20} from "evk/EVault/IEVault.sol";
66
import {RPow} from "evk/EVault/shared/lib/RPow.sol";
7-
import {IEulerSwapFactory} from "euler-swap/interfaces/IEulerSwapFactory.sol";
7+
import {IEulerSwapRegistry} from "euler-swap/interfaces/IEulerSwapRegistry.sol";
88
import {IEulerSwap} from "euler-swap/interfaces/IEulerSwap.sol";
99

1010
contract MaglevLens {
@@ -189,7 +189,8 @@ contract MaglevLens {
189189

190190
struct EulerSwapData {
191191
address addr;
192-
IEulerSwap.Params params;
192+
IEulerSwap.StaticParams sParams;
193+
IEulerSwap.DynamicParams dParams;
193194
address asset0;
194195
address asset1;
195196
uint256 reserve0;
@@ -203,7 +204,8 @@ contract MaglevLens {
203204
function getEulerSwapData(address poolAddr) internal view returns (EulerSwapData memory output) {
204205
IEulerSwap pool = IEulerSwap(poolAddr);
205206
output.addr = poolAddr;
206-
output.params = pool.getParams();
207+
output.sParams = pool.getStaticParams();
208+
output.dParams = pool.getDynamicParams();
207209
{
208210
(uint112 reserve0, uint112 reserve1,) = pool.getReserves();
209211
output.reserve0 = reserve0;
@@ -216,13 +218,13 @@ contract MaglevLens {
216218
(output.inLimit10, output.outLimit10) = pool.getLimits(asset1, asset0);
217219
}
218220

219-
function getMyEulerSwap(address eulerSwapFactory, address me) external view returns (EulerSwapData memory output) {
220-
address poolAddr = IEulerSwapFactory(eulerSwapFactory).poolByEulerAccount(me);
221+
function getMyEulerSwap(address eulerSwapRegistry, address me) external view returns (EulerSwapData memory output) {
222+
address poolAddr = IEulerSwapRegistry(eulerSwapRegistry).poolByEulerAccount(me);
221223
if (poolAddr != address(0)) output = getEulerSwapData(poolAddr);
222224
}
223225

224-
function getEulerSwaps(address eulerSwapFactory) external view returns (EulerSwapData[] memory output) {
225-
address[] memory addrs = IEulerSwapFactory(eulerSwapFactory).pools();
226+
function getEulerSwaps(address eulerSwapRegistry) external view returns (EulerSwapData[] memory output) {
227+
address[] memory addrs = IEulerSwapRegistry(eulerSwapRegistry).pools();
226228

227229
output = new EulerSwapData[](addrs.length);
228230

0 commit comments

Comments
 (0)