Skip to content

Commit 390429a

Browse files
committed
fix: symbol, name and description added
1 parent 32f4624 commit 390429a

File tree

4 files changed

+72
-156
lines changed

4 files changed

+72
-156
lines changed

contracts/data/DataCompressor_2_1.sol

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ pragma experimental ABIEncoderV2;
77
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
88

99
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
10+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
11+
1012
import {Pausable} from "@openzeppelin/contracts/security/Pausable.sol";
1113

1214
import {PERCENTAGE_FACTOR} from "@gearbox-protocol/core-v2/contracts/libraries/PercentageMath.sol";
@@ -257,6 +259,10 @@ contract DataCompressorV2_10 is IDataCompressorV2_10, ContractsRegisterTrait, Li
257259
result.baseInterestRate = pool.borrowAPY_RAY();
258260
result.underlying = pool.underlyingToken();
259261
result.dieselToken = pool.dieselToken();
262+
263+
result.symbol = IERC20Metadata(result.dieselToken).symbol();
264+
result.name = IERC20Metadata(result.dieselToken).name();
265+
260266
result.dieselRate_RAY = pool.getDieselRate_RAY();
261267
result.withdrawFee = pool.withdrawFee();
262268
result.baseInterestIndexLU = pool._timestampLU();

contracts/data/DataCompressor_3_0.sol

Lines changed: 59 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ pragma experimental ABIEncoderV2;
66

77
import "@gearbox-protocol/core-v3/contracts/interfaces/IAddressProviderV3.sol";
88
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
9+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
10+
911
import {PERCENTAGE_FACTOR, RAY} from "@gearbox-protocol/core-v2/contracts/libraries/Constants.sol";
1012

1113
import {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

contracts/data/Types.sol

Lines changed: 7 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ struct CreditAccountData {
4444
address addr;
4545
address borrower;
4646
address creditManager;
47+
string cmDescription;
4748
address creditFacade;
4849
address underlying;
4950
uint256 debt;
@@ -85,6 +86,7 @@ struct LinearModel {
8586

8687
struct CreditManagerData {
8788
address addr;
89+
string description;
8890
uint256 cfVersion;
8991
address creditFacade; // V2 only: address of creditFacade
9092
address creditConfigurator; // V2 only: address of creditConfigurator
@@ -126,6 +128,8 @@ struct PoolData {
126128
address addr;
127129
address underlying;
128130
address dieselToken;
131+
string symbol;
132+
string name;
129133
///
130134
uint256 linearCumulativeIndex;
131135
uint256 availableLiquidity;
@@ -166,6 +170,9 @@ struct GaugeQuotaParams {
166170

167171
struct GaugeInfo {
168172
address addr;
173+
address pool;
174+
string symbol;
175+
string name;
169176
GaugeQuotaParams[] quotaParams;
170177
}
171178

@@ -175,79 +182,3 @@ struct GaugeVote {
175182
uint96 totalVotesLpSide;
176183
uint96 totalVotesCaSide;
177184
}
178-
179-
struct CreditManagerDataV2 {
180-
address addr;
181-
address underlying;
182-
address pool;
183-
bool isWETH;
184-
bool canBorrow;
185-
uint256 borrowRate;
186-
uint256 minAmount;
187-
uint256 maxAmount;
188-
uint256 maxLeverageFactor; // for V1 only
189-
uint256 availableLiquidity;
190-
address[] collateralTokens;
191-
ContractAdapter[] adapters;
192-
uint256[] liquidationThresholds;
193-
uint8 version;
194-
address creditFacade; // V2 only: address of creditFacade
195-
address creditConfigurator; // V2 only: address of creditConfigurator
196-
bool isDegenMode; // V2 only: true if contract is in Degen mode
197-
address degenNFT; // V2 only: degenNFT, address(0) if not in degen mode
198-
bool isIncreaseDebtForbidden; // V2 only: true if increasing debt is forbidden
199-
uint256 forbiddenTokenMask; // V2 only: mask which forbids some particular tokens
200-
uint8 maxEnabledTokensLength; // V2 only: in V1 as many tokens as the CM can support (256)
201-
uint16 feeInterest; // Interest fee protocol charges: fee = interest accrues * feeInterest
202-
uint16 feeLiquidation; // Liquidation fee protocol charges: fee = totalValue * feeLiquidation
203-
uint16 liquidationDiscount; // Miltiplier to get amount which liquidator should pay: amount = totalValue * liquidationDiscount
204-
uint16 feeLiquidationExpired; // Liquidation fee protocol charges on expired accounts
205-
uint16 liquidationDiscountExpired; // Multiplier for the amount the liquidator has to pay when closing an expired account
206-
}
207-
208-
struct CreditAccountDataV2 {
209-
address addr;
210-
address borrower;
211-
bool inUse;
212-
address creditManager;
213-
address underlying;
214-
uint256 borrowedAmountPlusInterest;
215-
uint256 borrowedAmountPlusInterestAndFees;
216-
uint256 totalValue;
217-
uint256 healthFactor;
218-
uint256 borrowRate;
219-
TokenBalance[] balances;
220-
uint256 repayAmount; // for v1 accounts only
221-
uint256 liquidationAmount; // for v1 accounts only
222-
bool canBeClosed; // for v1 accounts only
223-
uint256 borrowedAmount;
224-
uint256 cumulativeIndexAtOpen;
225-
uint256 since;
226-
uint8 version;
227-
uint256 enabledTokenMask;
228-
}
229-
230-
struct PoolDataV2 {
231-
address addr;
232-
bool isWETH;
233-
address underlying;
234-
address dieselToken;
235-
uint256 linearCumulativeIndex;
236-
uint256 availableLiquidity;
237-
uint256 expectedLiquidity;
238-
uint256 expectedLiquidityLimit;
239-
uint256 totalBorrowed;
240-
uint256 depositAPY_RAY;
241-
uint256 borrowAPY_RAY;
242-
uint256 dieselRate_RAY;
243-
uint256 withdrawFee;
244-
uint256 cumulativeIndex_RAY;
245-
uint256 timestampLU;
246-
uint8 version;
247-
}
248-
249-
struct TokenInfoV2 {
250-
address addr;
251-
string symbol;
252-
uint8 decimals;
253-
}

0 commit comments

Comments
 (0)