@@ -64,6 +64,71 @@ contract HorizonPhaseOneListing is AaveV3Payload {
6464 USYC_PRICE_FEED = 0xE8E65Fb9116875012F5990Ecaab290B3531DbeB9 ;
6565 }
6666
67+ function eModeCategoriesUpdates ()
68+ public
69+ pure
70+ override
71+ returns (IEngine.EModeCategoryUpdate[] memory )
72+ {
73+ IEngine.EModeCategoryUpdate[] memory eModeCategories = new IEngine.EModeCategoryUpdate [](6 );
74+
75+ // USTB Stablecoins
76+ eModeCategories[0 ] = IEngine.EModeCategoryUpdate ({
77+ eModeCategory: 1 ,
78+ ltv: 83_00 ,
79+ liqThreshold: 88_00 ,
80+ liqBonus: 3_00 ,
81+ label: 'USTB Stablecoins '
82+ });
83+
84+ // USTB GHO
85+ eModeCategories[1 ] = IEngine.EModeCategoryUpdate ({
86+ eModeCategory: 2 ,
87+ ltv: 84_00 ,
88+ liqThreshold: 88_00 ,
89+ liqBonus: 3_00 ,
90+ label: 'USTB GHO '
91+ });
92+
93+ // USCC Stablecoins
94+ eModeCategories[2 ] = IEngine.EModeCategoryUpdate ({
95+ eModeCategory: 3 ,
96+ ltv: 72_00 ,
97+ liqThreshold: 79_00 ,
98+ liqBonus: 7_50 ,
99+ label: 'USCC Stablecoins '
100+ });
101+
102+ // USCC GHO
103+ eModeCategories[3 ] = IEngine.EModeCategoryUpdate ({
104+ eModeCategory: 4 ,
105+ ltv: 73_00 ,
106+ liqThreshold: 80_00 ,
107+ liqBonus: 7_50 ,
108+ label: 'USCC GHO '
109+ });
110+
111+ // USYC Stablecoins
112+ eModeCategories[4 ] = IEngine.EModeCategoryUpdate ({
113+ eModeCategory: 5 ,
114+ ltv: 85_00 ,
115+ liqThreshold: 89_00 ,
116+ liqBonus: 3_10 ,
117+ label: 'USYC Stablecoins '
118+ });
119+
120+ // USYC GHO
121+ eModeCategories[5 ] = IEngine.EModeCategoryUpdate ({
122+ eModeCategory: 6 ,
123+ ltv: 86_00 ,
124+ liqThreshold: 90_00 ,
125+ liqBonus: 3_10 ,
126+ label: 'USYC GHO '
127+ });
128+
129+ return eModeCategories;
130+ }
131+
67132 function newListingsCustom ()
68133 public
69134 view
@@ -78,21 +143,21 @@ contract HorizonPhaseOneListing is AaveV3Payload {
78143 assetSymbol: 'GHO ' ,
79144 priceFeed: GHO_PRICE_FEED,
80145 rateStrategyParams: IEngine.InterestRateInputData ({
81- optimalUsageRatio: 92_00 ,
82- baseVariableBorrowRate: 3_50 ,
83- variableRateSlope1: 1_25 ,
84- variableRateSlope2: 35_00
146+ optimalUsageRatio: 99_00 ,
147+ baseVariableBorrowRate: 4_75 ,
148+ variableRateSlope1: 0 ,
149+ variableRateSlope2: 0
85150 }),
86151 enabledToBorrow: EngineFlags.ENABLED,
87152 borrowableInIsolation: EngineFlags.DISABLED,
88153 withSiloedBorrowing: EngineFlags.DISABLED,
89- flashloanable: EngineFlags.ENABLED ,
154+ flashloanable: EngineFlags.DISABLED ,
90155 ltv: 0 ,
91156 liqThreshold: 0 ,
92157 liqBonus: 0 ,
93- reserveFactor: 15_00 ,
94- supplyCap: 5_000_000 ,
95- borrowCap: 4_000_000 ,
158+ reserveFactor: 10_00 ,
159+ supplyCap: 25_000_000 ,
160+ borrowCap: 22_500_000 ,
96161 debtCeiling: 0 ,
97162 liqProtocolFee: 0
98163 }),
@@ -108,21 +173,21 @@ contract HorizonPhaseOneListing is AaveV3Payload {
108173 assetSymbol: 'USDC ' ,
109174 priceFeed: USDC_PRICE_FEED,
110175 rateStrategyParams: IEngine.InterestRateInputData ({
111- optimalUsageRatio: 92_50 ,
176+ optimalUsageRatio: 90_00 ,
112177 baseVariableBorrowRate: 0 ,
113- variableRateSlope1: 5_50 ,
114- variableRateSlope2: 35_00
178+ variableRateSlope1: 5_00 ,
179+ variableRateSlope2: 15_00
115180 }),
116181 enabledToBorrow: EngineFlags.ENABLED,
117182 borrowableInIsolation: EngineFlags.DISABLED,
118183 withSiloedBorrowing: EngineFlags.DISABLED,
119- flashloanable: EngineFlags.ENABLED ,
184+ flashloanable: EngineFlags.DISABLED ,
120185 ltv: 0 ,
121186 liqThreshold: 0 ,
122187 liqBonus: 0 ,
123188 reserveFactor: 15_00 ,
124- supplyCap: 5_000_000 ,
125- borrowCap: 4_000_000 ,
189+ supplyCap: 35_000_000 ,
190+ borrowCap: 31_500_000 ,
126191 debtCeiling: 0 ,
127192 liqProtocolFee: 0
128193 }),
@@ -138,21 +203,21 @@ contract HorizonPhaseOneListing is AaveV3Payload {
138203 assetSymbol: 'RLUSD ' ,
139204 priceFeed: RLUSD_PRICE_FEED,
140205 rateStrategyParams: IEngine.InterestRateInputData ({
141- optimalUsageRatio: 80_00 ,
142- baseVariableBorrowRate: 4_00 ,
143- variableRateSlope1: 2_50 ,
144- variableRateSlope2: 50_00
206+ optimalUsageRatio: 90_00 ,
207+ baseVariableBorrowRate: 0 ,
208+ variableRateSlope1: 5_00 ,
209+ variableRateSlope2: 15_00
145210 }),
146211 enabledToBorrow: EngineFlags.ENABLED,
147212 borrowableInIsolation: EngineFlags.DISABLED,
148213 withSiloedBorrowing: EngineFlags.DISABLED,
149- flashloanable: EngineFlags.ENABLED ,
214+ flashloanable: EngineFlags.DISABLED ,
150215 ltv: 0 ,
151216 liqThreshold: 0 ,
152217 liqBonus: 0 ,
153218 reserveFactor: 15_00 ,
154- supplyCap: 5_000_000 ,
155- borrowCap: 4_000_000 ,
219+ supplyCap: 35_000_000 ,
220+ borrowCap: 31_500_000 ,
156221 debtCeiling: 0 ,
157222 liqProtocolFee: 0
158223 }),
@@ -177,11 +242,11 @@ contract HorizonPhaseOneListing is AaveV3Payload {
177242 borrowableInIsolation: EngineFlags.DISABLED,
178243 withSiloedBorrowing: EngineFlags.DISABLED,
179244 flashloanable: EngineFlags.DISABLED,
180- ltv: 75_00 ,
181- liqThreshold: 80_00 ,
182- liqBonus: 12_00 ,
245+ ltv: 10 ,
246+ liqThreshold: 50 ,
247+ liqBonus: 3_00 ,
183248 reserveFactor: EngineFlags.KEEP_CURRENT,
184- supplyCap: 3_000_000 ,
249+ supplyCap: 46_090_000 ,
185250 borrowCap: 0 ,
186251 debtCeiling: 0 ,
187252 liqProtocolFee: 0
@@ -207,11 +272,11 @@ contract HorizonPhaseOneListing is AaveV3Payload {
207272 borrowableInIsolation: EngineFlags.DISABLED,
208273 withSiloedBorrowing: EngineFlags.DISABLED,
209274 flashloanable: EngineFlags.DISABLED,
210- ltv: 75_00 ,
211- liqThreshold: 80_00 ,
212- liqBonus: 12_00 ,
275+ ltv: 10 ,
276+ liqThreshold: 50 ,
277+ liqBonus: 7_50 ,
213278 reserveFactor: EngineFlags.KEEP_CURRENT,
214- supplyCap: 3_000_000 ,
279+ supplyCap: 15_400_000 ,
215280 borrowCap: 0 ,
216281 debtCeiling: 0 ,
217282 liqProtocolFee: 0
@@ -237,11 +302,11 @@ contract HorizonPhaseOneListing is AaveV3Payload {
237302 borrowableInIsolation: EngineFlags.DISABLED,
238303 withSiloedBorrowing: EngineFlags.DISABLED,
239304 flashloanable: EngineFlags.DISABLED,
240- ltv: 75_00 ,
241- liqThreshold: 80_00 ,
242- liqBonus: 12_00 ,
305+ ltv: 10 ,
306+ liqThreshold: 50 ,
307+ liqBonus: 3_10 ,
243308 reserveFactor: EngineFlags.KEEP_CURRENT,
244- supplyCap: 3_000_000 ,
309+ supplyCap: 28_050_000 ,
245310 borrowCap: 0 ,
246311 debtCeiling: 0 ,
247312 liqProtocolFee: 0
@@ -255,6 +320,118 @@ contract HorizonPhaseOneListing is AaveV3Payload {
255320 return listingsCustom;
256321 }
257322
323+ function assetsEModeUpdates () public view override returns (IEngine.AssetEModeUpdate[] memory ) {
324+ IEngine.AssetEModeUpdate[] memory assetsEMode = new IEngine.AssetEModeUpdate [](15 );
325+
326+ uint256 index = 0 ;
327+
328+ // USTB Stablecoins
329+ assetsEMode[index++ ] = IEngine.AssetEModeUpdate ({
330+ asset: USTB_ADDRESS,
331+ eModeCategory: 1 ,
332+ collateral: EngineFlags.ENABLED,
333+ borrowable: EngineFlags.DISABLED
334+ });
335+ assetsEMode[index++ ] = IEngine.AssetEModeUpdate ({
336+ asset: USDC_ADDRESS,
337+ eModeCategory: 1 ,
338+ collateral: EngineFlags.DISABLED,
339+ borrowable: EngineFlags.ENABLED
340+ });
341+ assetsEMode[index++ ] = IEngine.AssetEModeUpdate ({
342+ asset: RLUSD_ADDRESS,
343+ eModeCategory: 1 ,
344+ collateral: EngineFlags.DISABLED,
345+ borrowable: EngineFlags.ENABLED
346+ });
347+
348+ // USTB GHO
349+ assetsEMode[index++ ] = IEngine.AssetEModeUpdate ({
350+ asset: USTB_ADDRESS,
351+ eModeCategory: 2 ,
352+ collateral: EngineFlags.ENABLED,
353+ borrowable: EngineFlags.DISABLED
354+ });
355+ assetsEMode[index++ ] = IEngine.AssetEModeUpdate ({
356+ asset: GHO_ADDRESS,
357+ eModeCategory: 2 ,
358+ collateral: EngineFlags.DISABLED,
359+ borrowable: EngineFlags.ENABLED
360+ });
361+
362+ // USCC Stablecoins
363+ assetsEMode[index++ ] = IEngine.AssetEModeUpdate ({
364+ asset: USCC_ADDRESS,
365+ eModeCategory: 3 ,
366+ collateral: EngineFlags.ENABLED,
367+ borrowable: EngineFlags.DISABLED
368+ });
369+ assetsEMode[index++ ] = IEngine.AssetEModeUpdate ({
370+ asset: USDC_ADDRESS,
371+ eModeCategory: 3 ,
372+ collateral: EngineFlags.DISABLED,
373+ borrowable: EngineFlags.ENABLED
374+ });
375+ assetsEMode[index++ ] = IEngine.AssetEModeUpdate ({
376+ asset: RLUSD_ADDRESS,
377+ eModeCategory: 3 ,
378+ collateral: EngineFlags.DISABLED,
379+ borrowable: EngineFlags.ENABLED
380+ });
381+
382+ // USCC GHO
383+ assetsEMode[index++ ] = IEngine.AssetEModeUpdate ({
384+ asset: USCC_ADDRESS,
385+ eModeCategory: 4 ,
386+ collateral: EngineFlags.ENABLED,
387+ borrowable: EngineFlags.DISABLED
388+ });
389+ assetsEMode[index++ ] = IEngine.AssetEModeUpdate ({
390+ asset: GHO_ADDRESS,
391+ eModeCategory: 4 ,
392+ collateral: EngineFlags.DISABLED,
393+ borrowable: EngineFlags.ENABLED
394+ });
395+
396+ // USYC Stablecoins
397+ assetsEMode[index++ ] = IEngine.AssetEModeUpdate ({
398+ asset: USYC_ADDRESS,
399+ eModeCategory: 5 ,
400+ collateral: EngineFlags.ENABLED,
401+ borrowable: EngineFlags.DISABLED
402+ });
403+ assetsEMode[index++ ] = IEngine.AssetEModeUpdate ({
404+ asset: USDC_ADDRESS,
405+ eModeCategory: 5 ,
406+ collateral: EngineFlags.DISABLED,
407+ borrowable: EngineFlags.ENABLED
408+ });
409+ assetsEMode[index++ ] = IEngine.AssetEModeUpdate ({
410+ asset: RLUSD_ADDRESS,
411+ eModeCategory: 5 ,
412+ collateral: EngineFlags.DISABLED,
413+ borrowable: EngineFlags.ENABLED
414+ });
415+
416+ // USYC GHO
417+ assetsEMode[index++ ] = IEngine.AssetEModeUpdate ({
418+ asset: USYC_ADDRESS,
419+ eModeCategory: 6 ,
420+ collateral: EngineFlags.ENABLED,
421+ borrowable: EngineFlags.DISABLED
422+ });
423+ assetsEMode[index++ ] = IEngine.AssetEModeUpdate ({
424+ asset: GHO_ADDRESS,
425+ eModeCategory: 6 ,
426+ collateral: EngineFlags.DISABLED,
427+ borrowable: EngineFlags.ENABLED
428+ });
429+
430+ assert (index == assetsEMode.length );
431+
432+ return assetsEMode;
433+ }
434+
258435 function getPoolContext () public pure override returns (IEngine.PoolContext memory ) {
259436 return IEngine.PoolContext ({networkName: 'Horizon RWA ' , networkAbbreviation: 'HorRwa ' });
260437 }
0 commit comments