Skip to content

Commit 1bf1f40

Browse files
committed
Merge branch 'next' of https://github.com/Gearbox-protocol/periphery-v3 into next
2 parents 5798bbe + 456204e commit 1bf1f40

File tree

13 files changed

+135
-55
lines changed

13 files changed

+135
-55
lines changed

contracts/compressors/AdapterCompressor.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
pragma solidity ^0.8.17;
55

66
import {IVersion} from "@gearbox-protocol/core-v3/contracts/interfaces/base/IVersion.sol";
7+
import {IStateSerializer} from "@gearbox-protocol/core-v3/contracts/interfaces/base/IStateSerializer.sol";
78
import {AdapterType} from "@gearbox-protocol/sdk-gov/contracts/AdapterType.sol";
89
import {AdapterState} from "../types/CreditSuiteData.sol";
910
import {IAdapterCompressor} from "../interfaces/IAdapterCompressor.sol";
1011
import {ICreditConfiguratorV3} from "@gearbox-protocol/core-v3/contracts/interfaces/ICreditConfiguratorV3.sol";
1112
import {ICreditManagerV3} from "@gearbox-protocol/core-v3/contracts/interfaces/ICreditManagerV3.sol";
12-
import {IStateSerializer} from "../interfaces/IStateSerializer.sol";
1313
import {AP_ADAPTER_COMPRESSOR} from "../libraries/Literals.sol";
1414

1515
interface ILegacyAdapter {

contracts/compressors/CreditSuiteCompressor.sol

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,40 +7,43 @@ import {ICreditConfiguratorV3} from "@gearbox-protocol/core-v3/contracts/interfa
77
import {CreditFacadeV3} from "@gearbox-protocol/core-v3/contracts/credit/CreditFacadeV3.sol";
88
import {ICreditManagerV3} from "@gearbox-protocol/core-v3/contracts/interfaces/ICreditManagerV3.sol";
99

10-
import {BaseLib} from "../libraries/BaseLib.sol";
11-
1210
import {BaseParams, BaseState} from "../types/BaseState.sol";
1311
import {CreditFacadeState} from "../types/CreditFacadeState.sol";
1412
import {CollateralToken, CreditManagerState} from "../types/CreditManagerState.sol";
1513
import {CreditSuiteData} from "../types/CreditSuiteData.sol";
1614

1715
import {AdapterCompressor} from "./AdapterCompressor.sol";
16+
import {ICreditSuiteCompressor} from "../interfaces/ICreditSuiteCompressor.sol";
1817

18+
import {BaseLib} from "../libraries/BaseLib.sol";
1919
import {AP_CREDIT_SUITE_COMPRESSOR} from "../libraries/Literals.sol";
2020

21-
contract CreditSuiteCompressor {
22-
AdapterCompressor adapterCompressor;
21+
contract CreditSuiteCompressor is ICreditSuiteCompressor {
22+
uint256 public constant override version = 3_10;
23+
bytes32 public constant override contractType = AP_CREDIT_SUITE_COMPRESSOR;
2324

24-
uint256 public constant version = 3_10;
25-
bytes32 public constant contractType = AP_CREDIT_SUITE_COMPRESSOR;
25+
AdapterCompressor internal immutable _adapterCompressor;
2626

2727
constructor() {
28-
adapterCompressor = new AdapterCompressor();
28+
// FIXME: this one should be read from the address provider
29+
// but it must be deployed before CreditSuiteCompressor then, which is a bit tricky
30+
// QUESTION: shall we allow to update it maybe? because it's kinda volatile
31+
_adapterCompressor = new AdapterCompressor();
2932
}
3033

31-
function getCreditSuiteData(address creditManager) public view returns (CreditSuiteData memory result) {
34+
function getCreditSuiteData(address creditManager) external view override returns (CreditSuiteData memory result) {
3235
result.creditManager = getCreditManagerState(creditManager);
3336
result.creditFacade = getCreditFacadeState(ICreditManagerV3(creditManager).creditFacade());
3437
result.creditConfigurator = BaseLib.getBaseState(
3538
ICreditManagerV3(creditManager).creditConfigurator(), "CREDIT_CONFIGURATOR", address(0)
3639
);
3740

38-
result.adapters = adapterCompressor.getAdapters(creditManager);
41+
result.adapters = _adapterCompressor.getAdapters(creditManager);
3942
}
4043

4144
/// @dev Returns CreditManagerData for a particular _cm
4245
/// @param _cm CreditManager address
43-
function getCreditManagerState(address _cm) public view returns (CreditManagerState memory result) {
46+
function getCreditManagerState(address _cm) public view override returns (CreditManagerState memory result) {
4447
ICreditManagerV3 creditManager = ICreditManagerV3(_cm);
4548
ICreditConfiguratorV3 creditConfigurator = ICreditConfiguratorV3(creditManager.creditConfigurator());
4649
CreditFacadeV3 creditFacade = CreditFacadeV3(creditManager.creditFacade());
@@ -80,7 +83,7 @@ contract CreditSuiteCompressor {
8083

8184
/// @dev Returns CreditManagerData for a particular _cm
8285
/// @param _cf CreditFacade address
83-
function getCreditFacadeState(address _cf) public view returns (CreditFacadeState memory result) {
86+
function getCreditFacadeState(address _cf) public view override returns (CreditFacadeState memory result) {
8487
CreditFacadeV3 creditFacade = CreditFacadeV3(_cf);
8588

8689
result.baseParams = BaseLib.getBaseParams(_cf, "CREDIT_FACADE", address(0));

contracts/compressors/PoolCompressor.sol

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
// SPDX-License-Identifier: BUSL-1.1
1+
// SPDX-License-Identifier: MIT
22
// Gearbox Protocol. Generalized leverage for DeFi protocols
3-
// (c) Gearbox Holdings, 2024
3+
// (c) Gearbox Foundation, 2024.
44
pragma solidity ^0.8.23;
55

66
import {IVersion} from "@gearbox-protocol/core-v3/contracts/interfaces/base/IVersion.sol";
@@ -18,28 +18,29 @@ import {RateKeeperState, Rate} from "../types/RateKeeperState.sol";
1818
import {RAY} from "@gearbox-protocol/core-v3/contracts/libraries/Constants.sol";
1919
import {IRateKeeper} from "@gearbox-protocol/core-v3/contracts/interfaces/base/IRateKeeper.sol";
2020

21-
// Serializers
21+
import {IPoolCompressor} from "../interfaces/IPoolCompressor.sol";
2222
import {BaseLib} from "../libraries/BaseLib.sol";
23+
import {AP_POOL_COMPRESSOR} from "../libraries/Literals.sol";
2324
import {GaugeSerializer} from "../serializers/pool/GaugeSerializer.sol";
2425
import {LinearInterestRateModelSerializer} from "../serializers/pool/LinearInterestRateModelSerializer.sol";
2526

2627
/// @title Pool compressor
2728
/// @notice Collects data from pool related contracts
2829
/// Do not use for data from data compressor for state-changing functions
29-
contract PoolCompressor {
30+
contract PoolCompressor is IPoolCompressor {
3031
// Contract version
31-
uint256 public constant version = 3_10;
32-
bytes32 public constant contractType = "POOL_COMPRESSOR";
32+
uint256 public constant override version = 3_10;
33+
bytes32 public constant override contractType = AP_POOL_COMPRESSOR;
3334

34-
address public immutable gaugeSerializer;
35-
address public immutable linearInterestRateModelSerializer;
35+
address internal immutable _gaugeSerializer;
36+
address internal immutable _linearInterestRateModelSerializer;
3637

3738
constructor() {
38-
gaugeSerializer = address(new GaugeSerializer());
39-
linearInterestRateModelSerializer = address(new LinearInterestRateModelSerializer());
39+
_gaugeSerializer = address(new GaugeSerializer());
40+
_linearInterestRateModelSerializer = address(new LinearInterestRateModelSerializer());
4041
}
4142

42-
function getPoolState(address pool) public view returns (PoolState memory result) {
43+
function getPoolState(address pool) external view override returns (PoolState memory result) {
4344
PoolV3 _pool = PoolV3(pool);
4445
//
4546
// CONTRACT PARAMETERS
@@ -130,10 +131,15 @@ contract PoolCompressor {
130131
result.isPaused = _pool.paused();
131132
}
132133

133-
function getPoolQuotaKeeperState(address pqk) external view returns (PoolQuotaKeeperState memory result) {
134-
IPoolQuotaKeeperV3 _pqk = IPoolQuotaKeeperV3(pqk);
134+
function getPoolQuotaKeeperState(address quotaKeeper)
135+
external
136+
view
137+
override
138+
returns (PoolQuotaKeeperState memory result)
139+
{
140+
IPoolQuotaKeeperV3 _pqk = IPoolQuotaKeeperV3(quotaKeeper);
135141

136-
result.baseParams = BaseLib.getBaseParams(pqk, "POOL_QUOTA_KEEPER", address(0));
142+
result.baseParams = BaseLib.getBaseParams(quotaKeeper, "POOL_QUOTA_KEEPER", address(0));
137143

138144
// address rateKeeper;
139145
result.rateKeeper = _pqk.gauge();
@@ -162,13 +168,13 @@ contract PoolCompressor {
162168
result.lastQuotaRateUpdate = _pqk.lastQuotaRateUpdate();
163169
}
164170

165-
function getRateKeeperState(address rateKeeper) external view returns (RateKeeperState memory result) {
171+
function getRateKeeperState(address rateKeeper) external view override returns (RateKeeperState memory result) {
166172
IRateKeeper _rateKeeper = IRateKeeper(rateKeeper);
167173

168174
address serializer;
169175
try IVersion(rateKeeper).contractType() {}
170176
catch {
171-
serializer = gaugeSerializer;
177+
serializer = _gaugeSerializer;
172178
}
173179
result.baseParams = BaseLib.getBaseParams(rateKeeper, "RATE_KEEPER::GAUGE", serializer);
174180

@@ -186,16 +192,16 @@ contract PoolCompressor {
186192
}
187193
}
188194

189-
function getInterestRateModelState(address irm) public view returns (BaseState memory) {
195+
function getInterestRateModelState(address interestRateModel) external view override returns (BaseState memory) {
190196
address serializer;
191-
try IVersion(irm).contractType() {}
197+
try IVersion(interestRateModel).contractType() {}
192198
catch {
193-
serializer = linearInterestRateModelSerializer;
199+
serializer = _linearInterestRateModelSerializer;
194200
}
195-
return BaseLib.getBaseState(irm, "IRM::LINEAR", serializer);
201+
return BaseLib.getBaseState(interestRateModel, "IRM::LINEAR", serializer);
196202
}
197203

198-
function getLossPolicyState(address lossPolicy) public view returns (BaseState memory) {
204+
function getLossPolicyState(address lossPolicy) public view override returns (BaseState memory) {
199205
return BaseLib.getBaseState(lossPolicy, "LOSS_POLICY::DEFAULT", address(0));
200206
}
201207
}

contracts/compressors/PriceFeedCompressor.sol

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import {BaseLib} from "../libraries/BaseLib.sol";
1414
import {AP_PRICE_FEED_COMPRESSOR} from "../libraries/Literals.sol";
1515

1616
import {IStateSerializerLegacy} from "../interfaces/IStateSerializerLegacy.sol";
17-
import {IStateSerializer} from "../interfaces/IStateSerializer.sol";
1817
import {NestedPriceFeeds} from "../libraries/NestedPriceFeeds.sol";
1918
import {BoundedPriceFeedSerializer} from "../serializers/oracles/BoundedPriceFeedSerializer.sol";
2019
import {BPTWeightedPriceFeedSerializer} from "../serializers/oracles/BPTWeightedPriceFeedSerializer.sol";
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// SPDX-License-Identifier: MIT
2+
// Gearbox Protocol. Generalized leverage for DeFi protocols
3+
// (c) Gearbox Foundation, 2024.
4+
pragma solidity ^0.8.23;
5+
6+
import {IVersion} from "@gearbox-protocol/core-v3/contracts/interfaces/base/IVersion.sol";
7+
8+
import {CreditSuiteData} from "../types/CreditSuiteData.sol";
9+
import {CreditManagerState} from "../types/CreditManagerState.sol";
10+
import {CreditFacadeState} from "../types/CreditFacadeState.sol";
11+
12+
interface ICreditSuiteCompressor is IVersion {
13+
function getCreditSuiteData(address creditManager) external view returns (CreditSuiteData memory);
14+
15+
function getCreditManagerState(address creditManager) external view returns (CreditManagerState memory);
16+
17+
function getCreditFacadeState(address creditFacade) external view returns (CreditFacadeState memory);
18+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// SPDX-License-Identifier: MIT
2+
// Gearbox Protocol. Generalized leverage for DeFi protocols
3+
// (c) Gearbox Foundation, 2024.
4+
pragma solidity ^0.8.23;
5+
6+
import {IVersion} from "@gearbox-protocol/core-v3/contracts/interfaces/base/IVersion.sol";
7+
8+
import {BaseState} from "../types/BaseState.sol";
9+
import {PoolQuotaKeeperState} from "../types/PoolQuotaKeeperState.sol";
10+
import {PoolState} from "../types/PoolState.sol";
11+
import {RateKeeperState} from "../types/RateKeeperState.sol";
12+
13+
interface IPoolCompressor is IVersion {
14+
function getPoolState(address pool) external view returns (PoolState memory);
15+
16+
function getPoolQuotaKeeperState(address quotaKeeper) external view returns (PoolQuotaKeeperState memory);
17+
18+
function getRateKeeperState(address rateKeeper) external view returns (RateKeeperState memory);
19+
20+
function getInterestRateModelState(address interestRateModel) external view returns (BaseState memory);
21+
22+
function getLossPolicyState(address lossPolicy) external view returns (BaseState memory);
23+
}

contracts/interfaces/IStateSerializer.sol

Lines changed: 0 additions & 10 deletions
This file was deleted.

contracts/libraries/BaseLib.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
pragma solidity ^0.8.17;
55

66
import {IVersion} from "@gearbox-protocol/core-v3/contracts/interfaces/base/IVersion.sol";
7+
import {IStateSerializer} from "@gearbox-protocol/core-v3/contracts/interfaces/base/IStateSerializer.sol";
78
import {BaseParams, BaseState} from "../types/BaseState.sol";
8-
import {IStateSerializer} from "../interfaces/IStateSerializer.sol";
99
import {IStateSerializerLegacy} from "../interfaces/IStateSerializerLegacy.sol";
1010

1111
library BaseLib {

lib/@gearbox-protocol/core-v3

Submodule core-v3 updated 39 files

lib/@gearbox-protocol/governance

Submodule governance updated 32 files

0 commit comments

Comments
 (0)