1
1
// SPDX-License-Identifier: UNLICENSED
2
2
pragma solidity ^ 0.8.27 ;
3
3
4
- import {Ownable, Context} from "openzeppelin-contracts/access/Ownable.sol " ;
5
4
import {EVCUtil} from "evc/utils/EVCUtil.sol " ;
6
5
import {IEVC} from "evc/interfaces/IEthereumVaultConnector.sol " ;
7
6
import {IEVault, IERC20 , IBorrowing, IERC4626 , IRiskManager} from "evk/EVault/IEVault.sol " ;
8
7
import {IUniswapV2Callee} from "./interfaces/IUniswapV2Callee.sol " ;
9
8
10
- abstract contract MaglevBase is EVCUtil , Ownable {
9
+ abstract contract MaglevBase is EVCUtil {
11
10
address public immutable vault0;
12
11
address public immutable vault1;
13
12
address public immutable asset0;
@@ -21,7 +20,7 @@ abstract contract MaglevBase is EVCUtil, Ownable {
21
20
22
21
uint112 public reserve0;
23
22
uint112 public reserve1;
24
- uint32 public locked; // 0=unlocked, 1=reentrancy guard, 2=paused
23
+ uint32 public locked;
25
24
26
25
error Locked ();
27
26
error Overflow ();
@@ -37,10 +36,6 @@ abstract contract MaglevBase is EVCUtil, Ownable {
37
36
locked = 0 ;
38
37
}
39
38
40
- function _msgSender () internal view override (Context, EVCUtil) returns (address ) {
41
- return EVCUtil._msgSender ();
42
- }
43
-
44
39
struct BaseParams {
45
40
address evc;
46
41
address vault0;
@@ -51,40 +46,30 @@ abstract contract MaglevBase is EVCUtil, Ownable {
51
46
uint256 fee;
52
47
}
53
48
54
- constructor (BaseParams memory params ) EVCUtil (params.evc) Ownable ( msg . sender ) {
49
+ constructor (BaseParams memory params ) EVCUtil (params.evc) {
55
50
require (params.fee < 1e18 , BadFee ());
56
51
57
52
vault0 = params.vault0;
58
53
vault1 = params.vault1;
59
54
asset0 = IEVault (vault0).asset ();
60
55
asset1 = IEVault (vault1).asset ();
61
56
myAccount = params.myAccount;
62
- reserve0 = initialReserve0 = adjustReserve (params.debtLimit0, vault0);
63
- reserve1 = initialReserve1 = adjustReserve (params.debtLimit1, vault1);
57
+ reserve0 = initialReserve0 = offsetReserve (params.debtLimit0, vault0);
58
+ reserve1 = initialReserve1 = offsetReserve (params.debtLimit1, vault1);
64
59
feeMultiplier = 1e18 - params.fee;
65
60
}
66
61
67
62
// Owner functions
68
63
69
64
/// @dev Call *after* installing as operator
70
- function configure () external onlyOwner {
65
+ function configure () external {
71
66
IERC20 (asset0).approve (vault0, type (uint256 ).max);
72
67
IERC20 (asset1).approve (vault1, type (uint256 ).max);
73
68
74
69
IEVC (evc).enableCollateral (myAccount, vault0);
75
70
IEVC (evc).enableCollateral (myAccount, vault1);
76
71
}
77
72
78
- function pause () external onlyOwner {
79
- require (locked == 0 , Locked ());
80
- locked = 2 ;
81
- }
82
-
83
- function unpause () external onlyOwner {
84
- require (locked == 2 , Locked ());
85
- locked = 0 ;
86
- }
87
-
88
73
// Swapper interface
89
74
90
75
function swap (uint256 amount0Out , uint256 amount1Out , address to , bytes calldata data )
@@ -148,18 +133,18 @@ abstract contract MaglevBase is EVCUtil, Ownable {
148
133
return shares == 0 ? 0 : IEVault (vault).convertToAssets (shares);
149
134
}
150
135
151
- function adjustReserve (uint112 reserve , address vault ) internal view returns (uint112 ) {
152
- uint256 adjusted ;
136
+ function offsetReserve (uint112 reserve , address vault ) internal view returns (uint112 ) {
137
+ uint256 offset ;
153
138
uint256 debt = myDebt (vault);
154
139
155
140
if (debt != 0 ) {
156
- adjusted = reserve > debt ? reserve - debt : 0 ;
141
+ offset = reserve > debt ? reserve - debt : 0 ;
157
142
} else {
158
- adjusted = reserve + myBalance (vault);
143
+ offset = reserve + myBalance (vault);
159
144
}
160
145
161
- require (adjusted <= type (uint112 ).max, Overflow ());
162
- return uint112 (adjusted );
146
+ require (offset <= type (uint112 ).max, Overflow ());
147
+ return uint112 (offset );
163
148
}
164
149
165
150
function withdrawAssets (address vault , uint256 amount , address to ) internal {
0 commit comments