@@ -8,12 +8,22 @@ import "../modules/EToken.sol";
8
8
import "../modules/Markets.sol " ;
9
9
import "../BaseIRMLinearKink.sol " ;
10
10
import "../vendor/RPow.sol " ;
11
+ import "../IRiskManager.sol " ;
11
12
12
13
interface IExec {
13
14
function getPriceFull (address underlying ) external view returns (uint twap , uint twapPeriod , uint currPrice );
14
15
function getPrice (address underlying ) external view returns (uint twap , uint twapPeriod );
15
16
function detailedLiquidity (address account ) external view returns (IRiskManager.AssetLiquidity[] memory assets );
16
17
function liquidity (address account ) external view returns (IRiskManager.LiquidityStatus memory status );
18
+ function getRiskManagerSettings () external view returns (IRiskManager.RiskManagerSettings memory settings );
19
+ }
20
+
21
+ interface IInstaller {
22
+ function getUpgradeAdmin () external view returns (address );
23
+ }
24
+
25
+ interface IGovernance {
26
+ function getGovernorAdmin () external view returns (address );
17
27
}
18
28
19
29
contract EulerGeneralView is Constants {
@@ -84,10 +94,45 @@ contract EulerGeneralView is Constants {
84
94
address [] enteredMarkets;
85
95
}
86
96
97
+ struct ResponseModule {
98
+ uint moduleId;
99
+ address proxyAddress;
100
+ }
101
+
102
+ struct ResponseConfig {
103
+ uint defaultReserveFee;
104
+ uint defaultTWAPWindowSeconds;
105
+ uint defaultBorrowFactor;
106
+ address upgradeAdmin;
107
+ address governorAdmin;
108
+ IRiskManager.RiskManagerSettings riskManagerSettings;
109
+
110
+ ResponseModule[] modules;
111
+ }
87
112
88
113
89
114
// Implementation
90
115
116
+ function doQueryEulerConfig (address eulerContract ) external view returns (ResponseConfig memory r ) {
117
+ r.defaultReserveFee = DEFAULT_RESERVE_FEE;
118
+ r.defaultTWAPWindowSeconds = DEFAULT_TWAP_WINDOW_SECONDS;
119
+ r.defaultBorrowFactor = DEFAULT_BORROW_FACTOR;
120
+ r.modules = new ResponseModule [](7 );
121
+
122
+ Euler eulerProxy = Euler (eulerContract);
123
+ r.modules[0 ] = ResponseModule (MODULEID__INSTALLER, eulerProxy.moduleIdToProxy (MODULEID__INSTALLER));
124
+ r.modules[1 ] = ResponseModule (MODULEID__MARKETS, eulerProxy.moduleIdToProxy (MODULEID__MARKETS));
125
+ r.modules[2 ] = ResponseModule (MODULEID__LIQUIDATION, eulerProxy.moduleIdToProxy (MODULEID__LIQUIDATION));
126
+ r.modules[3 ] = ResponseModule (MODULEID__GOVERNANCE, eulerProxy.moduleIdToProxy (MODULEID__GOVERNANCE));
127
+ r.modules[4 ] = ResponseModule (MODULEID__EXEC, eulerProxy.moduleIdToProxy (MODULEID__EXEC));
128
+ r.modules[5 ] = ResponseModule (MODULEID__SWAP, eulerProxy.moduleIdToProxy (MODULEID__SWAP));
129
+ r.modules[6 ] = ResponseModule (MODULEID__SWAPHUB, eulerProxy.moduleIdToProxy (MODULEID__SWAPHUB));
130
+
131
+ r.upgradeAdmin = IInstaller (r.modules[0 ].proxyAddress).getUpgradeAdmin ();
132
+ r.governorAdmin = IGovernance (r.modules[3 ].proxyAddress).getGovernorAdmin ();
133
+ r.riskManagerSettings = IExec (r.modules[4 ].proxyAddress).getRiskManagerSettings ();
134
+ }
135
+
91
136
function doQueryBatch (Query[] memory qs ) external view returns (Response[] memory r ) {
92
137
r = new Response [](qs.length );
93
138
0 commit comments