@@ -3,11 +3,16 @@ pragma solidity ^0.8.0;
33
44import 'solidity-utils/contracts/utils/ScriptUtils.sol ' ;
55import {MiscEthereum} from 'aave-address-book/MiscEthereum.sol ' ;
6+ import {MiscLinea} from 'aave-address-book/MiscLinea.sol ' ;
67import {AaveV3EthereumLido, AaveV3EthereumLidoAssets} from 'aave-address-book/AaveV3EthereumLido.sol ' ;
8+ import {AaveV3Ethereum, AaveV3EthereumAssets} from 'aave-address-book/AaveV3Ethereum.sol ' ;
9+ import {AaveV3Linea, AaveV3LineaAssets} from 'aave-address-book/AaveV3Linea.sol ' ;
710import {GovernanceV3Ethereum} from 'aave-address-book/GovernanceV3Ethereum.sol ' ;
11+ import {GovernanceV3Linea} from 'aave-address-book/GovernanceV3Linea.sol ' ;
812import {ICreate3Factory} from 'solidity-utils/contracts/create3/interfaces/ICreate3Factory.sol ' ;
913import {EdgeRiskStewardRates, IRiskSteward} from '../../src/contracts/EdgeRiskStewardRates.sol ' ;
1014import {AaveStewardInjectorRates} from '../../src/contracts/AaveStewardInjectorRates.sol ' ;
15+ import {GelatoAaveStewardInjectorRates} from '../../src/contracts/gelato/GelatoAaveStewardInjectorRates.sol ' ;
1116
1217library DeployStewardContracts {
1318 function _deployRiskStewards (
@@ -22,7 +27,7 @@ library DeployStewardContracts {
2227 configEngine,
2328 riskCouncil,
2429 governance,
25- _getRiskConfig ()
30+ _getSlope2RiskConfig ()
2631 )
2732 );
2833 return riskSteward;
@@ -35,21 +40,29 @@ library DeployStewardContracts {
3540 address edgeRiskOracle ,
3641 address owner ,
3742 address guardian ,
38- address whitelistedAsset
43+ address [] memory markets ,
44+ bool isGelatoInjector
3945 ) internal returns (address ) {
40- address [] memory markets = new address []( 1 );
41- markets[ 0 ] = whitelistedAsset ;
46+ bytes memory injectorCode = isGelatoInjector ?
47+ type (GelatoAaveStewardInjectorRates).creationCode : type (AaveStewardInjectorRates).creationCode ;
4248
4349 address stewardInjector = ICreate3Factory (create3Factory).create (
4450 salt,
4551 abi.encodePacked (
46- type (AaveStewardInjectorRates).creationCode ,
52+ injectorCode ,
4753 abi.encode (edgeRiskOracle, riskSteward, markets, owner, guardian)
4854 )
4955 );
5056 return stewardInjector;
5157 }
5258
59+ function _getSlope2RiskConfig () internal pure returns (IRiskSteward.Config memory ) {
60+ IRiskSteward.Config memory config;
61+ config.rateConfig.variableRateSlope2 = IRiskSteward.RiskParamConfig ({minDelay: 8 hours, maxPercentChange: 4_00 });
62+
63+ return config;
64+ }
65+
5366 function _getRiskConfig () internal pure returns (IRiskSteward.Config memory ) {
5467 return
5568 IRiskSteward.Config ({
@@ -101,14 +114,94 @@ contract DeployEthereumLido is EthereumScript {
101114 GovernanceV3Ethereum.EXECUTOR_LVL_1
102115 );
103116
117+ address [] memory whitelistedAssets = new address [](1 );
118+ whitelistedAssets[0 ] = AaveV3EthereumLidoAssets.WETH_UNDERLYING;
119+
120+ DeployStewardContracts._deployRatesStewardInjector (
121+ MiscEthereum.CREATE_3_FACTORY,
122+ salt,
123+ riskSteward,
124+ EDGE_RISK_ORACLE,
125+ GovernanceV3Ethereum.EXECUTOR_LVL_1,
126+ GUARDIAN,
127+ whitelistedAssets,
128+ false
129+ );
130+ vm.stopBroadcast ();
131+ }
132+ }
133+
134+ // make deploy-ledger contract=scripts/deploy/DeployRateInjector.s.sol:DeployEthereum chain=mainnet
135+ contract DeployEthereum is EthereumScript {
136+ address constant GUARDIAN = 0xff37939808EcF199A2D599ef91D699Fb13dab7F7 ;
137+ address constant EDGE_RISK_ORACLE = 0x7ABB46C690C52E919687D19ebF89C81A6136C1F2 ;
138+
139+ function run () external {
140+ vm.startBroadcast ();
141+ bytes32 salt = 'StewardInjectorCoreV1 ' ;
142+ address predictedStewardsInjector = ICreate3Factory (MiscEthereum.CREATE_3_FACTORY)
143+ .predictAddress (msg .sender , salt);
144+
145+ address riskSteward = DeployStewardContracts._deployRiskStewards (
146+ address (AaveV3Ethereum.POOL),
147+ AaveV3Ethereum.CONFIG_ENGINE,
148+ predictedStewardsInjector,
149+ GovernanceV3Ethereum.EXECUTOR_LVL_1
150+ );
151+
152+ address [] memory whitelistedAssets = new address [](4 );
153+ whitelistedAssets[0 ] = AaveV3EthereumAssets.WETH_UNDERLYING;
154+ whitelistedAssets[1 ] = AaveV3EthereumAssets.USDC_UNDERLYING;
155+ whitelistedAssets[2 ] = AaveV3EthereumAssets.USDT_UNDERLYING;
156+ whitelistedAssets[3 ] = AaveV3EthereumAssets.USDe_UNDERLYING;
157+
104158 DeployStewardContracts._deployRatesStewardInjector (
105159 MiscEthereum.CREATE_3_FACTORY,
106160 salt,
107161 riskSteward,
108162 EDGE_RISK_ORACLE,
109163 GovernanceV3Ethereum.EXECUTOR_LVL_1,
110164 GUARDIAN,
111- AaveV3EthereumLidoAssets.WETH_UNDERLYING
165+ whitelistedAssets,
166+ false
167+ );
168+ vm.stopBroadcast ();
169+ }
170+ }
171+
172+ // make deploy-ledger contract=scripts/deploy/DeployRateInjector.s.sol:DeployLinea chain=linea
173+ contract DeployLinea is LineaScript {
174+ address constant GUARDIAN = 0x0c28C535CE08345851F150dFC9c737978d726aEc ;
175+ address constant EDGE_RISK_ORACLE = 0xa6C229d3a1D4D31708B16C0ad2f14337aE4E7893 ;
176+ address constant CREATE_3_FACTORY = 0x194a5828Fddf8782e6570149f0B2d31F8a1B89b6 ;
177+
178+ function run () external {
179+ vm.startBroadcast ();
180+ bytes32 salt = 'StewardInjectorV3 ' ;
181+ address predictedStewardsInjector = ICreate3Factory (CREATE_3_FACTORY)
182+ .predictAddress (msg .sender , salt);
183+
184+ address riskSteward = DeployStewardContracts._deployRiskStewards (
185+ address (AaveV3Linea.POOL),
186+ AaveV3Linea.CONFIG_ENGINE,
187+ predictedStewardsInjector,
188+ GovernanceV3Linea.EXECUTOR_LVL_1
189+ );
190+
191+ address [] memory whitelistedAssets = new address [](3 );
192+ whitelistedAssets[0 ] = AaveV3LineaAssets.WETH_UNDERLYING;
193+ whitelistedAssets[1 ] = AaveV3LineaAssets.USDC_UNDERLYING;
194+ whitelistedAssets[2 ] = AaveV3LineaAssets.USDT_UNDERLYING;
195+
196+ DeployStewardContracts._deployRatesStewardInjector (
197+ CREATE_3_FACTORY,
198+ salt,
199+ riskSteward,
200+ EDGE_RISK_ORACLE,
201+ GovernanceV3Linea.EXECUTOR_LVL_1,
202+ GUARDIAN,
203+ whitelistedAssets,
204+ true
112205 );
113206 vm.stopBroadcast ();
114207 }
0 commit comments