diff --git a/contracts/IRiskManager.sol b/contracts/IRiskManager.sol index b13d33f1..b95417ca 100644 --- a/contracts/IRiskManager.sol +++ b/contracts/IRiskManager.sol @@ -26,6 +26,12 @@ interface IRiskManager { LiquidityStatus status; } + struct RiskManagerSettings { + address referenceAsset; + address uniswapFactory; + bytes32 uniswapPoolInitCodeHash; + } + function getNewMarketParameters(address underlying) external returns (NewMarketParameters memory); function requireLiquidity(address account) external view; @@ -34,4 +40,5 @@ interface IRiskManager { function getPrice(address underlying) external view returns (uint twap, uint twapPeriod); function getPriceFull(address underlying) external view returns (uint twap, uint twapPeriod, uint currPrice); + function getRiskManagerSettings() external view returns (RiskManagerSettings memory settings); } diff --git a/contracts/modules/Exec.sol b/contracts/modules/Exec.sol index dbc3a40e..6ca765f5 100644 --- a/contracts/modules/Exec.sol +++ b/contracts/modules/Exec.sol @@ -80,6 +80,15 @@ contract Exec is BaseLogic { (twap, twapPeriod, currPrice) = abi.decode(result, (uint, uint, uint)); } + /// @notice Retrieve Risk Manager Settings as per its constructor arguments used + /// @return settings RiskManagerSettings struct + function getRiskManagerSettings() external staticDelegate returns (IRiskManager.RiskManagerSettings memory settings) { + bytes memory result = callInternalModule(MODULEID__RISK_MANAGER, + abi.encodeWithSelector(IRiskManager.getRiskManagerSettings.selector)); + + (settings) = abi.decode(result, (IRiskManager.RiskManagerSettings)); + } + // Custom execution methods diff --git a/contracts/modules/RiskManager.sol b/contracts/modules/RiskManager.sol index 7b5a1dd9..3c678698 100644 --- a/contracts/modules/RiskManager.sol +++ b/contracts/modules/RiskManager.sol @@ -32,12 +32,6 @@ contract RiskManager is IRiskManager, BaseLogic { address immutable uniswapFactory; bytes32 immutable uniswapPoolInitCodeHash; - struct RiskManagerSettings { - address referenceAsset; - address uniswapFactory; - bytes32 uniswapPoolInitCodeHash; - } - constructor(bytes32 moduleGitCommit_, RiskManagerSettings memory settings) BaseLogic(MODULEID__RISK_MANAGER, moduleGitCommit_) { referenceAsset = settings.referenceAsset; uniswapFactory = settings.uniswapFactory; @@ -284,6 +278,11 @@ contract RiskManager is IRiskManager, BaseLogic { } } + // Returns Risk Manager settings as per constructor arguments + + function getRiskManagerSettings() external view override returns (RiskManagerSettings memory settings) { + settings = RiskManagerSettings(referenceAsset, uniswapFactory, uniswapPoolInitCodeHash); + } // Liquidity