Skip to content
This repository was archived by the owner on May 24, 2024. It is now read-only.

Commit b1a7093

Browse files
added doQueryEulerConfig for general Euler config fetching
1 parent af57f36 commit b1a7093

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

contracts/views/EulerGeneralView.sol

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,22 @@ import "../modules/EToken.sol";
88
import "../modules/Markets.sol";
99
import "../BaseIRMLinearKink.sol";
1010
import "../vendor/RPow.sol";
11+
import "../IRiskManager.sol";
1112

1213
interface IExec {
1314
function getPriceFull(address underlying) external view returns (uint twap, uint twapPeriod, uint currPrice);
1415
function getPrice(address underlying) external view returns (uint twap, uint twapPeriod);
1516
function detailedLiquidity(address account) external view returns (IRiskManager.AssetLiquidity[] memory assets);
1617
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);
1727
}
1828

1929
contract EulerGeneralView is Constants {
@@ -84,10 +94,54 @@ contract EulerGeneralView is Constants {
8494
address[] enteredMarkets;
8595
}
8696

97+
struct ResponseModule {
98+
uint moduleId;
99+
address proxyAddress;
100+
bytes32 gitCommit;
101+
}
102+
103+
struct ResponseConfig {
104+
uint defaultReserveFee;
105+
uint defaultTWAPWindowSeconds;
106+
uint defaultBorrowFactor;
107+
address upgradeAdmin;
108+
address governorAdmin;
109+
IRiskManager.RiskManagerSettings riskManagerSettings;
110+
111+
ResponseModule[] modules;
112+
}
87113

88114

89115
// Implementation
90116

117+
function doQueryEulerConfig(address eulerContract) external view returns (ResponseConfig memory r) {
118+
uint[7] memory moduleIds = [
119+
MODULEID__INSTALLER,
120+
MODULEID__MARKETS,
121+
MODULEID__LIQUIDATION,
122+
MODULEID__GOVERNANCE,
123+
MODULEID__EXEC,
124+
MODULEID__SWAP,
125+
MODULEID__SWAPHUB
126+
];
127+
128+
r.defaultReserveFee = DEFAULT_RESERVE_FEE;
129+
r.defaultTWAPWindowSeconds = DEFAULT_TWAP_WINDOW_SECONDS;
130+
r.defaultBorrowFactor = DEFAULT_BORROW_FACTOR;
131+
r.modules = new ResponseModule[](moduleIds.length);
132+
133+
Euler eulerProxy = Euler(eulerContract);
134+
for (uint i = 0; i < moduleIds.length; ++i) {
135+
address currentProxy = eulerProxy.moduleIdToProxy(moduleIds[i]);
136+
bytes32 currentGitCommit = BaseModule(currentProxy).moduleGitCommit();
137+
r.modules[i] = ResponseModule(moduleIds[i], currentProxy, currentGitCommit);
138+
}
139+
140+
r.upgradeAdmin = IInstaller(r.modules[0].proxyAddress).getUpgradeAdmin();
141+
r.governorAdmin = IGovernance(r.modules[3].proxyAddress).getGovernorAdmin();
142+
r.riskManagerSettings = IExec(r.modules[4].proxyAddress).getRiskManagerSettings();
143+
}
144+
91145
function doQueryBatch(Query[] memory qs) external view returns (Response[] memory r) {
92146
r = new Response[](qs.length);
93147

0 commit comments

Comments
 (0)