@@ -6,6 +6,8 @@ pragma experimental ABIEncoderV2;
66
77import "@gearbox-protocol/core-v3/contracts/interfaces/IAddressProviderV3.sol " ;
88import {IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol " ;
9+ import {IERC20Metadata } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol " ;
10+
911import {PERCENTAGE_FACTOR, RAY} from "@gearbox-protocol/core-v2/contracts/libraries/Constants.sol " ;
1012
1113import {ContractsRegisterTrait} from "@gearbox-protocol/core-v3/contracts/traits/ContractsRegisterTrait.sol " ;
@@ -54,7 +56,8 @@ import {
5456 GaugeQuotaParams,
5557 CreditManagerDebtParams,
5658 GaugeVote,
57- ZapperInfo
59+ ZapperInfo,
60+ LinearModel
5861} from "./Types.sol " ;
5962
6063// EXCEPTIONS
@@ -165,22 +168,22 @@ contract DataCompressorV3_00 is IDataCompressorV3_00, ContractsRegisterTrait, Li
165168 {
166169 ICreditAccountV3 creditAccount = ICreditAccountV3 (_creditAccount);
167170
168- address _pool = creditAccount.creditManager ();
169- _ensureRegisteredCreditManager (_pool );
171+ address _cm = creditAccount.creditManager ();
172+ _ensureRegisteredCreditManager (_cm );
170173
171- if (! _isContractV3 (_pool )) revert CreditManagerIsNotV3Exception ();
174+ if (! _isContractV3 (_cm )) revert CreditManagerIsNotV3Exception ();
172175
173- _updatePrices (_pool , priceUpdates);
176+ _updatePrices (_cm , priceUpdates);
174177
175- return _getCreditAccountData (_pool , _creditAccount);
178+ return _getCreditAccountData (_cm , _creditAccount);
176179 }
177180
178- function _getCreditAccountData (address _pool , address _creditAccount )
181+ function _getCreditAccountData (address _cm , address _creditAccount )
179182 internal
180183 view
181184 returns (CreditAccountData memory result )
182185 {
183- ICreditManagerV3 creditManager = ICreditManagerV3 (_pool );
186+ ICreditManagerV3 creditManager = ICreditManagerV3 (_cm );
184187 ICreditFacadeV3 creditFacade = _getCreditFacade (address (creditManager));
185188 // ICreditConfiguratorV3 creditConfigurator = ICreditConfiguratorV3(creditManager.creditConfigurator());
186189
@@ -189,15 +192,15 @@ contract DataCompressorV3_00 is IDataCompressorV3_00, ContractsRegisterTrait, Li
189192 address borrower = _getBorrowerOrRevert (address (creditManager), _creditAccount);
190193
191194 result.borrower = borrower;
192- result.creditManager = _pool ;
195+ result.creditManager = _cm ;
193196 result.addr = _creditAccount;
194197
195198 result.underlying = creditManager.underlying ();
196199
197- address pool = creditManager. pool ( );
200+ address pool = _getPool (_cm );
198201 result.baseBorrowRate = _getBaseInterestRate (pool);
199202
200- uint256 collateralTokenCount = creditManager. collateralTokensCount ( );
203+ uint256 collateralTokenCount = _getCollateralTokensCount ( address (creditManager) );
201204
202205 result.enabledTokensMask = creditManager.enabledTokensMaskOf (_creditAccount);
203206
@@ -259,7 +262,7 @@ contract DataCompressorV3_00 is IDataCompressorV3_00, ContractsRegisterTrait, Li
259262 result.totalValue = collateralDebtData.totalValue;
260263 result.isSuccessful = true ;
261264 } catch {
262- _getPriceFeedFailedList (_pool , result.balances);
265+ _getPriceFeedFailedList (_cm , result.balances);
263266 result.isSuccessful = false ;
264267 }
265268
@@ -276,13 +279,13 @@ contract DataCompressorV3_00 is IDataCompressorV3_00, ContractsRegisterTrait, Li
276279 // address borrower;
277280
278281 (result.debt, result.cumulativeIndexLastUpdate, result.cumulativeQuotaInterest,,,, result.since,) =
279- CreditManagerV3 (_pool ).creditAccountInfo (_creditAccount);
282+ CreditManagerV3 (_cm ).creditAccountInfo (_creditAccount);
280283
281284 result.expirationDate = creditFacade.expirationDate ();
282285 result.maxApprovedBots = CreditFacadeV3 (address (creditFacade)).maxApprovedBots ();
283286
284287 result.activeBots =
285- IBotListV3 (CreditFacadeV3 (address (creditFacade)).botList ()).getActiveBots (_pool , _creditAccount);
288+ IBotListV3 (CreditFacadeV3 (address (creditFacade)).botList ()).getActiveBots (_cm , _creditAccount);
286289
287290 // QuotaInfo[] quotas;
288291 result.schedultedWithdrawals = IWithdrawalManagerV3 (CreditFacadeV3 (address (creditFacade)).withdrawalManager ())
@@ -303,19 +306,19 @@ contract DataCompressorV3_00 is IDataCompressorV3_00, ContractsRegisterTrait, Li
303306 }
304307
305308 for (uint256 i = 0 ; i < len; ++ i) {
306- address _pool = IContractsRegister (contractsRegister).creditManagers (i);
309+ address _cm = IContractsRegister (contractsRegister).creditManagers (i);
307310
308- if (_isContractV3 (_pool )) {
309- if (op == QUERY) result[index] = _pool ;
311+ if (_isContractV3 (_cm )) {
312+ if (op == QUERY) result[index] = _cm ;
310313 ++ index;
311314 }
312315 }
313316 }
314317 }
315318 }
316319
317- function _isContractV3 (address _pool ) internal view returns (bool ) {
318- uint256 cmVersion = _getVersion (_pool );
320+ function _isContractV3 (address _cm ) internal view returns (bool ) {
321+ uint256 cmVersion = _getVersion (_cm );
319322 return cmVersion >= 3_00 && cmVersion < 3_99 ;
320323 }
321324
@@ -341,22 +344,23 @@ contract DataCompressorV3_00 is IDataCompressorV3_00, ContractsRegisterTrait, Li
341344 ICreditFacadeV3 creditFacade = _getCreditFacade (address (creditManager));
342345
343346 result.addr = _cm;
347+ result.description = _getDescription (_cm);
344348 result.cfVersion = _getVersion (address (creditFacade));
345349
346350 result.underlying = creditManager.underlying ();
347351
348352 {
349- result.pool = creditManager. pool ( );
353+ result.pool = _getPool (_cm );
350354 IPoolV3 pool = IPoolV3 (result.pool);
351355 result.baseBorrowRate = _getBaseInterestRate (address (pool));
352356 result.availableToBorrow = pool.creditManagerBorrowable (_cm);
353- result.lirm = getLIRMData (pool. interestRateModel ( ));
357+ result.lirm = _getInterestRateModel ( address (pool ));
354358 }
355359
356360 (result.minDebt, result.maxDebt) = creditFacade.debtLimits ();
357361
358362 {
359- uint256 collateralTokenCount = creditManager. collateralTokensCount ( );
363+ uint256 collateralTokenCount = _getCollateralTokensCount ( address (creditManager) );
360364
361365 result.collateralTokens = new address [](collateralTokenCount);
362366 result.liquidationThresholds = new uint256 [](collateralTokenCount);
@@ -419,6 +423,7 @@ contract DataCompressorV3_00 is IDataCompressorV3_00, ContractsRegisterTrait, Li
419423 result.baseInterestRate = _getBaseInterestRate (address (pool));
420424 result.underlying = pool.underlyingToken ();
421425 result.dieselToken = address (pool);
426+ (result.symbol, result.name) = _getSymbolAndName (_pool);
422427
423428 result.dieselRate_RAY = pool.convertToAssets (RAY);
424429 result.withdrawFee = pool.withdrawFee ();
@@ -435,7 +440,6 @@ contract DataCompressorV3_00 is IDataCompressorV3_00, ContractsRegisterTrait, Li
435440
436441 unchecked {
437442 for (uint256 i; i < len; ++ i) {
438- console.log ("i: " , i);
439443 address creditManager = creditManagers[i];
440444 result.creditManagerDebtParams[i] = CreditManagerDebtParams ({
441445 creditManager: creditManager,
@@ -454,7 +458,8 @@ contract DataCompressorV3_00 is IDataCompressorV3_00, ContractsRegisterTrait, Li
454458 result.version = _getVersion (address (pool));
455459
456460 result.quotas = _getQuotas (_pool);
457- result.lirm = getLIRMData (pool.interestRateModel ());
461+ result.lirm = _getInterestRateModel (_pool);
462+
458463 result.isPaused = pool.paused ();
459464
460465 address [] memory zappers = zapperRegister.zappers (address (pool));
@@ -584,10 +589,35 @@ contract DataCompressorV3_00 is IDataCompressorV3_00, ContractsRegisterTrait, Li
584589 return ICreditFacadeV3 (ICreditManagerV3 (cm).creditFacade ());
585590 }
586591
592+ function _getSymbolAndName (address token ) internal view returns (string memory symbol , string memory name ) {
593+ symbol = IERC20Metadata (token).symbol ();
594+ name = IERC20Metadata (token).name ();
595+ }
596+
597+ function _getInterestRateModel (address pool ) internal view returns (LinearModel memory ) {
598+ return getLIRMData (IPoolV3 (pool).interestRateModel ());
599+ }
600+
601+ function _getQuotedTokens (IPoolQuotaKeeperV3 pqk ) internal view returns (address [] memory result ) {
602+ result = pqk.quotedTokens ();
603+ }
604+
605+ function _getPool (address cnt ) internal view returns (address ) {
606+ return ICreditManagerV3 (cnt).pool ();
607+ }
608+
609+ function _getDescription (address _cm ) internal view returns (string memory ) {
610+ return ICreditManagerV3 (_cm).description ();
611+ }
612+
613+ function _getCollateralTokensCount (address _cm ) internal view returns (uint256 ) {
614+ return ICreditManagerV3 (_cm).collateralTokensCount ();
615+ }
616+
587617 function _getQuotas (address _pool ) internal view returns (QuotaInfo[] memory quotas ) {
588618 IPoolQuotaKeeperV3 pqk = _getPoolQuotaKeeper (_pool);
589619
590- address [] memory quotaTokens = pqk. quotedTokens ( );
620+ address [] memory quotaTokens = _getQuotedTokens (pqk );
591621 uint256 len = quotaTokens.length ;
592622 quotas = new QuotaInfo [](len);
593623 unchecked {
@@ -616,8 +646,10 @@ contract DataCompressorV3_00 is IDataCompressorV3_00, ContractsRegisterTrait, Li
616646 IPoolQuotaKeeperV3 pqk = _getPoolQuotaKeeper (poolsV3[i]);
617647 address gauge = pqk.gauge ();
618648 gaugeInfo.addr = gauge;
649+ gaugeInfo.pool = _getPool (gauge);
650+ (gaugeInfo.symbol, gaugeInfo.name) = _getSymbolAndName (gaugeInfo.pool);
619651
620- address [] memory quotaTokens = pqk. quotedTokens ( );
652+ address [] memory quotaTokens = _getQuotedTokens (pqk );
621653 uint256 quotaTokensLen = quotaTokens.length ;
622654 gaugeInfo.quotaParams = new GaugeQuotaParams [](quotaTokensLen);
623655
@@ -666,7 +698,7 @@ contract DataCompressorV3_00 is IDataCompressorV3_00, ContractsRegisterTrait, Li
666698 IPoolQuotaKeeperV3 pqk = _getPoolQuotaKeeper (poolsV3[i]);
667699 gauge = pqk.gauge ();
668700
669- quotaTokens = pqk. quotedTokens ( );
701+ quotaTokens = _getQuotedTokens (pqk );
670702 }
671703 uint256 quotaTokensLen = quotaTokens.length ;
672704
0 commit comments