33// (c) Gearbox Holdings, 2024
44pragma solidity ^ 0.8.17 ;
55
6- import {IStateSerializer } from "../interfaces/IStateSerializer .sol " ;
6+ import {AdapterType } from "@gearbox-protocol/sdk-gov/contracts/AdapterType .sol " ;
77import {ContractAdapter} from "../types/MarketData.sol " ;
8- import {ICreditManagerV3 } from "@gearbox-protocol/core-v3/contracts/ interfaces/ICreditManagerV3 .sol " ;
8+ import {IAdapterCompressor } from "../ interfaces/IAdapterCompressor .sol " ;
99import {ICreditConfiguratorV3} from "@gearbox-protocol/core-v3/contracts/interfaces/ICreditConfiguratorV3.sol " ;
10- import {IAdapter} from "@gearbox-protocol/core-v3/contracts/interfaces/base/IAdapter.sol " ;
10+ import {ICreditManagerV3} from "@gearbox-protocol/core-v3/contracts/interfaces/ICreditManagerV3.sol " ;
11+ import {IStateSerializer} from "../interfaces/IStateSerializer.sol " ;
12+ import {IVersion} from "../interfaces/IVersion.sol " ;
13+
14+ interface ILegacyAdapter {
15+ function _gearboxAdapterVersion () external view returns (uint16 );
16+ function _gearboxAdapterType () external view returns (uint8 );
17+ }
1118
12- /// @title Adapter compressor 3.0.
13- /// @notice Collects data from different adapter types
14- contract AdaptgerCompressorV3 {
15- // Contract version
19+ contract AdapterCompressor is IAdapterCompressor {
1620 uint256 public constant version = 3_10 ;
21+ bytes32 public constant override contractType = "ADAPTER_COMPRESSOR " ;
22+
23+ mapping (uint8 => bytes32 ) public contractTypes;
1724
18- function getContractAdapters (
19- address creditManager
20- ) external view returns (ContractAdapter[] memory adapters ) {
21- ICreditConfiguratorV3 creditConfigurator = ICreditConfiguratorV3 (
22- ICreditManagerV3 (creditManager).creditConfigurator ()
23- );
25+ constructor () {
26+ contractTypes[uint8 (AdapterType.ABSTRACT)] = "AD_ABSTRACT " ;
27+ contractTypes[uint8 (AdapterType.UNISWAP_V2_ROUTER)] = "AD_UNISWAP_V2_ROUTER " ;
28+ contractTypes[uint8 (AdapterType.UNISWAP_V3_ROUTER)] = "AD_UNISWAP_V3_ROUTER " ;
29+ contractTypes[uint8 (AdapterType.CURVE_V1_EXCHANGE_ONLY)] = "AD_CURVE_V1_EXCHANGE_ONLY " ;
30+ contractTypes[uint8 (AdapterType.YEARN_V2)] = "AD_YEARN_V2 " ;
31+ contractTypes[uint8 (AdapterType.CURVE_V1_2ASSETS)] = "AD_CURVE_V1_2ASSETS " ;
32+ contractTypes[uint8 (AdapterType.CURVE_V1_3ASSETS)] = "AD_CURVE_V1_3ASSETS " ;
33+ contractTypes[uint8 (AdapterType.CURVE_V1_4ASSETS)] = "AD_CURVE_V1_4ASSETS " ;
34+ contractTypes[uint8 (AdapterType.CURVE_V1_STECRV_POOL)] = "AD_CURVE_V1_STECRV_POOL " ;
35+ contractTypes[uint8 (AdapterType.CURVE_V1_WRAPPER)] = "AD_CURVE_V1_WRAPPER " ;
36+ contractTypes[uint8 (AdapterType.CONVEX_V1_BASE_REWARD_POOL)] = "AD_CONVEX_V1_BASE_REWARD_POOL " ;
37+ contractTypes[uint8 (AdapterType.CONVEX_V1_BOOSTER)] = "AD_CONVEX_V1_BOOSTER " ;
38+ contractTypes[uint8 (AdapterType.CONVEX_V1_CLAIM_ZAP)] = "AD_CONVEX_V1_CLAIM_ZAP " ;
39+ contractTypes[uint8 (AdapterType.LIDO_V1)] = "AD_LIDO_V1 " ;
40+ contractTypes[uint8 (AdapterType.UNIVERSAL)] = "AD_UNIVERSAL " ;
41+ contractTypes[uint8 (AdapterType.LIDO_WSTETH_V1)] = "AD_LIDO_WSTETH_V1 " ;
42+ contractTypes[uint8 (AdapterType.BALANCER_VAULT)] = "AD_BALANCER_VAULT " ;
43+ contractTypes[uint8 (AdapterType.AAVE_V2_LENDING_POOL)] = "AD_AAVE_V2_LENDING_POOL " ;
44+ contractTypes[uint8 (AdapterType.AAVE_V2_WRAPPED_ATOKEN)] = "AD_AAVE_V2_WRAPPED_ATOKEN " ;
45+ contractTypes[uint8 (AdapterType.COMPOUND_V2_CERC20)] = "AD_COMPOUND_V2_CERC20 " ;
46+ contractTypes[uint8 (AdapterType.COMPOUND_V2_CETHER)] = "AD_COMPOUND_V2_CETHER " ;
47+ contractTypes[uint8 (AdapterType.ERC4626_VAULT )] = "AD_ERC4626_VAULT " ;
48+ contractTypes[uint8 (AdapterType.VELODROME_V2_ROUTER)] = "AD_VELODROME_V2_ROUTER " ;
49+ contractTypes[uint8 (AdapterType.CURVE_STABLE_NG)] = "AD_CURVE_STABLE_NG " ;
50+ contractTypes[uint8 (AdapterType.CAMELOT_V3_ROUTER)] = "AD_CAMELOT_V3_ROUTER " ;
51+ contractTypes[uint8 (AdapterType.CONVEX_L2_BOOSTER)] = "AD_CONVEX_L2_BOOSTER " ;
52+ contractTypes[uint8 (AdapterType.CONVEX_L2_REWARD_POOL)] = "AD_CONVEX_L2_REWARD_POOL " ;
53+ contractTypes[uint8 (AdapterType.AAVE_V3_LENDING_POOL)] = "AD_AAVE_V3_LENDING_POOL " ;
54+ contractTypes[uint8 (AdapterType.ZIRCUIT_POOL)] = "AD_ZIRCUIT_POOL " ;
55+ contractTypes[uint8 (AdapterType.SYMBIOTIC_DEFAULT_COLLATERAL)] = "AD_SYMBIOTIC_DEFAULT_COLLATERAL " ;
56+ contractTypes[uint8 (AdapterType.MELLOW_LRT_VAULT)] = "AD_MELLOW_LRT_VAULT " ;
57+ contractTypes[uint8 (AdapterType.PENDLE_ROUTER)] = "AD_PENDLE_ROUTER " ;
58+ }
59+
60+ function getContractAdapters (address creditManager ) external view returns (ContractAdapter[] memory adapters ) {
61+ ICreditConfiguratorV3 creditConfigurator =
62+ ICreditConfiguratorV3 (ICreditManagerV3 (creditManager).creditConfigurator ());
2463
2564 address [] memory allowedAdapters = creditConfigurator.allowedAdapters ();
2665 uint256 len = allowedAdapters.length ;
@@ -30,17 +69,31 @@ contract AdaptgerCompressorV3 {
3069
3170 unchecked {
3271 for (uint256 i = 0 ; i < len; ++ i) {
33- address allowedAdapter = allowedAdapters[i];
72+ address adapter = allowedAdapters[i];
73+ adapters[i].baseParams.addr = adapter;
74+ try IVersion (adapter).contractType () returns (bytes32 adapterType ) {
75+ adapters[i].baseParams.contractType = adapterType;
76+ } catch {
77+ try ILegacyAdapter (adapter)._gearboxAdapterType () returns (uint8 adapterType ) {
78+ adapters[i].baseParams.contractType = contractTypes[adapterType];
79+ } catch {
80+ adapters[i].baseParams.contractType = "AD_ABSTRACT " ;
81+ }
82+ }
83+
84+ try IVersion (adapter).version () returns (uint256 v ) {
85+ adapters[i].baseParams.version = v;
86+ } catch {
87+ try ILegacyAdapter (adapter)._gearboxAdapterVersion () returns (uint16 v ) {
88+ adapters[i].baseParams.version = uint256 (v);
89+ } catch {}
90+ }
3491
35- /// add try{} catch for serialisation
92+ try IStateSerializer (adapter).serialize () returns (bytes memory serializedParams ) {
93+ adapters[i].baseParams.serializedParams = serializedParams;
94+ } catch {}
3695
37- // adapters[i] = ContractAdapter({
38- // targetContract: ICreditManagerV3(creditManager).adapterToContract(allowedAdapter),
39- // adapter: allowedAdapter,
40- // adapterType: uint8(IAdapter(allowedAdapter)._gearboxAdapterType()),
41- // version: IAdapter(allowedAdapter)._gearboxAdapterVersion(),
42- // stateSerialised: stateSerialised
43- // });
96+ adapters[i].targetContract = ICreditManagerV3 (creditManager).adapterToContract (adapter);
4497 }
4598 }
4699 }
0 commit comments