defi-state-querier 0.5.27__py3-none-any.whl → 0.5.28__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. defi_services/__init__.py +1 -1
  2. defi_services/constants/chain_constant.py +1 -8
  3. defi_services/constants/entities/dex_info_constant.py +2 -2
  4. defi_services/constants/entities/dex_services.py +1 -13
  5. defi_services/constants/entities/lending_constant.py +5 -11
  6. defi_services/constants/entities/lending_services.py +4 -31
  7. defi_services/constants/entities/vault_constant.py +2 -2
  8. defi_services/constants/entities/vault_services.py +1 -7
  9. defi_services/constants/network_constants.py +361 -20
  10. defi_services/constants/token_constant.py +1 -3
  11. defi_services/jobs/processors/cosmos_state_processor.py +2 -3
  12. defi_services/jobs/processors/ton_state_processor.py +4 -5
  13. defi_services/jobs/queriers/call_state_querier.py +0 -2
  14. defi_services/jobs/queriers/state_querier.py +0 -3
  15. defi_services/services/dex/dex_info/uniswap_info.py +1 -29
  16. defi_services/services/dex/uniswap_v3_service.py +2 -6
  17. defi_services/services/lending/aave_v2_services.py +29 -44
  18. defi_services/services/lending/aave_v3_services.py +20 -41
  19. defi_services/services/lending/compound_v3_services.py +5 -9
  20. defi_services/services/lending/granary_services.py +4 -6
  21. defi_services/services/lending/justlend_service.py +3 -4
  22. defi_services/services/lending/lending_info/arbitrum/aave_v3_arbitrum.py +1 -1
  23. defi_services/services/lending/lending_info/arbitrum/compound_v3_arbitrum.py +6 -96
  24. defi_services/services/lending/lending_info/ethereum/aave_v3_eth.py +140 -1
  25. defi_services/services/lending/lending_info/ethereum/compound_v3_eth.py +5 -180
  26. defi_services/services/lending/lending_info/polygon/compound_v3_polygon.py +5 -35
  27. defi_services/services/lending/morpho_aave_v2_services.py +3 -3
  28. defi_services/services/lending/morpho_aave_v3_services.py +2 -2
  29. defi_services/services/lending/radiant_v2_services.py +10 -52
  30. defi_services/services/lending/trava_services.py +2 -2
  31. defi_services/services/lending/uwu_services.py +3 -3
  32. defi_services/services/lending/valas_services.py +2 -2
  33. defi_services/services/lending/venus_services.py +3 -9
  34. defi_services/services/multicall/multicall_v2.py +317 -0
  35. {defi_state_querier-0.5.27.dist-info → defi_state_querier-0.5.28.dist-info}/METADATA +3 -2
  36. {defi_state_querier-0.5.27.dist-info → defi_state_querier-0.5.28.dist-info}/RECORD +46 -83
  37. {defi_state_querier-0.5.27.dist-info → defi_state_querier-0.5.28.dist-info}/WHEEL +1 -1
  38. defi_services/abis/lending/ionic/__init__.py +0 -0
  39. defi_services/abis/lending/ionic/ionic_ctoken_abi.py +0 -1108
  40. defi_services/abis/lending/moonwell/__init__.py +0 -0
  41. defi_services/abis/lending/moonwell/moonwell_comptroller_abi.py +0 -1500
  42. defi_services/abis/lending/moonwell/moonwell_ctoken_abi.py +0 -1431
  43. defi_services/abis/lending/radiant_v2/radiant_reward_converter.py +0 -817
  44. defi_services/abis/token/trc20_abi.py +0 -304
  45. defi_services/abis/vault/tcv_abi.py +0 -1523
  46. defi_services/jobs/tcv.py +0 -144
  47. defi_services/services/lending/ionic_service.py +0 -167
  48. defi_services/services/lending/lending_info/arbitrum/venus_arbitrum.py +0 -10
  49. defi_services/services/lending/lending_info/base/__init__.py +0 -0
  50. defi_services/services/lending/lending_info/base/aave_v3_base.py +0 -61
  51. defi_services/services/lending/lending_info/base/compound_v3_base.py +0 -116
  52. defi_services/services/lending/lending_info/base/granary_base.py +0 -62
  53. defi_services/services/lending/lending_info/base/ionic_base.py +0 -173
  54. defi_services/services/lending/lending_info/base/moonwell_base.py +0 -89
  55. defi_services/services/lending/lending_info/base/radiant_v2_base.py +0 -57
  56. defi_services/services/lending/lending_info/base/sonne_base.py +0 -53
  57. defi_services/services/lending/lending_info/base/zerolend_base.py +0 -109
  58. defi_services/services/lending/lending_info/bsc/aave_v3_bsc.py +0 -68
  59. defi_services/services/lending/lending_info/ethereum/old_aave_v3_eth.py +0 -150
  60. defi_services/services/lending/lending_info/ethereum/radiant_eth.py +0 -69
  61. defi_services/services/lending/lending_info/ethereum/venus_eth.py +0 -10
  62. defi_services/services/lending/lending_info/ethereum/zerolend_eth.py +0 -96
  63. defi_services/services/lending/lending_info/optimism/compound_v3_optimism.py +0 -116
  64. defi_services/services/lending/lending_info/optimism/moonwell_optimism.py +0 -9
  65. defi_services/services/lending/lending_info/zksync/__init__.py +0 -0
  66. defi_services/services/lending/lending_info/zksync/aave_v3_zksync.py +0 -47
  67. defi_services/services/lending/lending_info/zksync/venus_zksync.py +0 -10
  68. defi_services/services/lending/lending_info/zksync/zerolend_zksync.py +0 -138
  69. defi_services/services/lending/moonwell_service.py +0 -120
  70. defi_services/services/lending/sonne_service.py +0 -64
  71. defi_services/services/lending/zerolend_services.py +0 -36
  72. defi_services/services/vault/tcv_vault_services.py +0 -108
  73. defi_services/services/vault/vault_info/arbitrum/__init__.py +0 -0
  74. defi_services/services/vault/vault_info/arbitrum/tcv_arb.py +0 -58
  75. /defi_services/abis/lending/{aave_v2_and_forks → aave_v2_and_forlks}/__init__.py +0 -0
  76. /defi_services/abis/lending/{aave_v2_and_forks → aave_v2_and_forlks}/aave_v2_event_abi.py +0 -0
  77. /defi_services/abis/lending/{aave_v2_and_forks → aave_v2_and_forlks}/aave_v2_incentives_abi.py +0 -0
  78. /defi_services/abis/lending/{aave_v2_and_forks → aave_v2_and_forlks}/lending_pool_abi.py +0 -0
  79. /defi_services/abis/lending/{aave_v2_and_forks → aave_v2_and_forlks}/oracle_abi.py +0 -0
  80. /defi_services/abis/lending/{aave_v2_and_forks → aave_v2_and_forlks}/staked_incentives_abi.py +0 -0
  81. /defi_services/abis/lending/{aave_v2_and_forks → aave_v2_and_forlks}/uwu_incentives_abi.py +0 -0
  82. {defi_state_querier-0.5.27.dist-info → defi_state_querier-0.5.28.dist-info/licenses}/LICENSE +0 -0
  83. {defi_state_querier-0.5.27.dist-info → defi_state_querier-0.5.28.dist-info}/top_level.txt +0 -0
@@ -1,120 +0,0 @@
1
- import logging
2
-
3
- from defi_services.abis.lending.moonwell.moonwell_comptroller_abi import MOONWELL_COMPTROLLER_ABI
4
- from defi_services.abis.lending.moonwell.moonwell_ctoken_abi import MOONWELL_CTOKEN_ABI
5
- from defi_services.abis.token.erc20_abi import ERC20_ABI
6
- from defi_services.constants.chain_constant import Chain
7
- from defi_services.constants.entities.lending_constant import Lending
8
- from defi_services.constants.token_constant import Token
9
- from defi_services.jobs.queriers.state_querier import StateQuerier
10
- from defi_services.services.lending.lending_info.base.moonwell_base import MOONWELL_BASE
11
- from defi_services.services.lending.venus_services import VenusStateService
12
-
13
- logger = logging.getLogger("MoonWell Lending Pool State Service")
14
-
15
-
16
- class MoonWellInfo:
17
- mapping = {
18
- Chain.base: MOONWELL_BASE
19
- }
20
-
21
-
22
- class MoonWellStateService(VenusStateService):
23
- def __init__(self, state_service: StateQuerier, chain_id: str = "0x38"):
24
- super().__init__(state_service, chain_id)
25
- self.name = f"{chain_id}_{Lending.moonwell}"
26
- self.chain_id = chain_id
27
- self.pool_info = MoonWellInfo.mapping.get(chain_id)
28
- self.state_service = state_service
29
- self.comptroller_abi = MOONWELL_COMPTROLLER_ABI
30
- self.vtoken_abi = MOONWELL_CTOKEN_ABI
31
-
32
- def get_service_info(self):
33
- info = {
34
- Lending.moonwell: {
35
- "chain_id": self.chain_id,
36
- "type": "lending",
37
- "protocol_info": self.pool_info
38
- }
39
- }
40
- return info
41
-
42
- def get_apy_lending_pool_function_info(
43
- self,
44
- reserves_info: dict,
45
- block_number: int = "latest"
46
- ):
47
- rpc_calls = {}
48
- for token_address, reserve_info in reserves_info.items():
49
- if token_address != Token.native_token:
50
- query_id = f"decimals_{token_address}_{block_number}".lower()
51
- rpc_calls[query_id] = self.state_service.get_function_info(token_address, ERC20_ABI, "decimals", [], block_number)
52
-
53
- ctoken = reserve_info.get("cToken")
54
- for fn_name in ['decimals', 'totalSupply', 'totalBorrows', 'supplyRatePerTimestamp', 'borrowRatePerTimestamp', 'exchangeRateStored']:
55
- query_id = f"{fn_name}_{ctoken}_{block_number}".lower()
56
- rpc_calls[query_id] = self.get_ctoken_function_info(
57
- ctoken=ctoken,
58
- fn_name=fn_name,
59
- block_number=block_number
60
- )
61
-
62
- return rpc_calls
63
-
64
- def get_reserve_tokens_metadata(
65
- self,
66
- decoded_data: dict,
67
- reserves_info: dict,
68
- block_number: int = "latest"
69
- ):
70
- reserve_tokens_info = []
71
- for token_address, reserve_info in reserves_info.items():
72
- if token_address != Token.native_token:
73
- underlying_decimals_query_id = f"decimals_{token_address}_{block_number}".lower()
74
- underlying_decimals = decoded_data.get(underlying_decimals_query_id)
75
- else:
76
- underlying_decimals = Chain.native_decimals.get(self.chain_id, 18)
77
-
78
- ctoken = reserve_info.get("cToken")
79
- ctoken_decimals_query_id = f"decimals_{ctoken}_{block_number}".lower()
80
- total_supply_query_id = f"totalSupply_{ctoken}_{block_number}".lower()
81
- total_borrow_query_id = f"totalBorrows_{ctoken}_{block_number}".lower()
82
- supply_rate_query_id = f"supplyRatePerTimestamp_{ctoken}_{block_number}".lower()
83
- borrow_rate_query_id = f"borrowRatePerTimestamp_{ctoken}_{block_number}".lower()
84
- exchange_rate_query_id = f"exchangeRateStored_{ctoken}_{block_number}".lower()
85
-
86
- reserve_tokens_info.append({
87
- "token": ctoken,
88
- "token_decimals": decoded_data.get(ctoken_decimals_query_id),
89
- "borrow_rate": decoded_data.get(borrow_rate_query_id),
90
- "supply_rate": decoded_data.get(supply_rate_query_id),
91
- "supply": decoded_data.get(total_supply_query_id),
92
- "borrow": decoded_data.get(total_borrow_query_id),
93
- "exchange_rate": decoded_data.get(exchange_rate_query_id),
94
- "underlying_decimals": underlying_decimals,
95
- "underlying": token_address
96
- })
97
- return reserve_tokens_info
98
-
99
- @classmethod
100
- def _calculate_interest_rates(
101
- cls, token_info: dict, pool_decimals: int, apx_block_speed_in_seconds: float):
102
- exchange_rate = float(token_info["exchange_rate"]) / 10 ** (18 - 8 + token_info["underlying_decimals"])
103
-
104
- total_borrow = float(token_info["borrow"]) / 10 ** int(token_info["underlying_decimals"])
105
- total_supply = float(token_info["supply"]) * exchange_rate / 10 ** int(token_info["token_decimals"])
106
-
107
- supply_apy = ((token_info["supply_rate"] / 10 ** pool_decimals) * 86400 + 1) ** 365 - 1
108
- borrow_apy = ((token_info["borrow_rate"] / 10 ** pool_decimals) * 86400 + 1) ** 365 - 1
109
-
110
- return {
111
- 'deposit_apy': supply_apy,
112
- 'borrow_apy': borrow_apy,
113
- 'total_deposit': total_supply,
114
- 'total_borrow': total_borrow
115
- }
116
-
117
- def get_ctoken_function_info(self, ctoken: str, fn_name: str, fn_paras: list = None, block_number: int = "latest"):
118
- return self.state_service.get_function_info(
119
- ctoken, self.vtoken_abi, fn_name, fn_paras, block_number
120
- )
@@ -1,64 +0,0 @@
1
- import logging
2
-
3
- from defi_services.abis.lending.venus.venus_comptroller_abi import VENUS_COMPTROLLER_ABI
4
- from defi_services.abis.lending.venus.vtoken_abi import VTOKEN_ABI
5
- from defi_services.constants.chain_constant import Chain
6
- from defi_services.constants.entities.lending_constant import Lending
7
- from defi_services.jobs.queriers.state_querier import StateQuerier
8
- from defi_services.services.lending.lending_info.base.sonne_base import SONNE_BASE
9
- from defi_services.services.lending.venus_services import VenusStateService
10
-
11
- logger = logging.getLogger("Ionic Lending Pool State Service")
12
-
13
-
14
- class SonneInfo:
15
- mapping = {
16
- Chain.base: SONNE_BASE
17
- }
18
-
19
-
20
- class SonneStateService(VenusStateService):
21
- def __init__(self, state_service: StateQuerier, chain_id: str = "0x38"):
22
- super().__init__(state_service, chain_id)
23
- self.name = f"{chain_id}_{Lending.sonne}"
24
- self.chain_id = chain_id
25
- self.pool_info = SonneInfo.mapping.get(chain_id)
26
- self.state_service = state_service
27
- self.comptroller_abi = VENUS_COMPTROLLER_ABI
28
- self.vtoken_abi = VTOKEN_ABI
29
-
30
- def get_service_info(self):
31
- info = {
32
- Lending.sonne: {
33
- "chain_id": self.chain_id,
34
- "type": "lending",
35
- "protocol_info": self.pool_info
36
- }
37
- }
38
- return info
39
-
40
- def calculate_apy_lending_pool_function_call(
41
- self,
42
- reserves_info: dict,
43
- decoded_data: dict,
44
- token_prices: dict,
45
- pool_token_price: float,
46
- pool_decimals: int = 18,
47
- block_number: int = "latest",
48
- ):
49
- reserve_tokens_info = self.get_reserve_tokens_metadata(decoded_data, reserves_info, block_number)
50
-
51
- data = {}
52
- for token_info in reserve_tokens_info:
53
- underlying_token = token_info['underlying']
54
- c_token = token_info['token']
55
-
56
- assets = {
57
- underlying_token: self._calculate_interest_rates(
58
- token_info, pool_decimals=pool_decimals,
59
- apx_block_speed_in_seconds=1
60
- )
61
- }
62
- data[c_token] = assets
63
-
64
- return data
@@ -1,36 +0,0 @@
1
- import logging
2
-
3
- from defi_services.constants.chain_constant import Chain
4
- from defi_services.constants.entities.lending_constant import Lending
5
- from defi_services.jobs.queriers.state_querier import StateQuerier
6
- from defi_services.services.lending.aave_v3_services import AaveV3StateService
7
- from defi_services.services.lending.lending_info.base.zerolend_base import ZEROLEND_BASE
8
- from defi_services.services.lending.lending_info.ethereum.zerolend_eth import ZEROLEND_ETH
9
- from defi_services.services.lending.lending_info.zksync.zerolend_zksync import ZEROLEND_ZKSYNC
10
-
11
- logger = logging.getLogger("ZeroLend Lending Pool State Service")
12
-
13
-
14
- class ZeroLendInfo:
15
- mapping = {
16
- Chain.zksync: ZEROLEND_ZKSYNC,
17
- Chain.ethereum: ZEROLEND_ETH,
18
- Chain.base: ZEROLEND_BASE
19
- }
20
-
21
-
22
- class ZeroLendStateService(AaveV3StateService):
23
- def __init__(self, state_service: StateQuerier, chain_id: str = Chain.zksync):
24
- super().__init__(state_service, chain_id)
25
- self.name = f"{chain_id}_{Lending.zerolend}"
26
- self.pool_info = ZeroLendInfo.mapping.get(chain_id)
27
-
28
- def get_service_info(self):
29
- info = {
30
- Lending.zerolend: {
31
- "chain_id": self.chain_id,
32
- "type": "lending",
33
- "protocol_info": self.pool_info
34
- }
35
- }
36
- return info
@@ -1,108 +0,0 @@
1
- import logging
2
-
3
- from defi_services.abis.vault.tcv_abi import TCV_ABI
4
- from defi_services.constants.chain_constant import Chain
5
- from defi_services.constants.entities.vault_constant import Vault
6
- from defi_services.constants.token_constant import Token
7
- from defi_services.jobs.queriers.state_querier import StateQuerier
8
- from defi_services.services.protocol_services import ProtocolServices
9
- from defi_services.services.vault.vault_info.arbitrum.tcv_arb import TCV_VAULT_ARBITRUM
10
-
11
- logger = logging.getLogger("Trava Vault State Service")
12
-
13
-
14
- class TCVVaultInfo:
15
- mapping = {
16
- Chain.arbitrum: TCV_VAULT_ARBITRUM
17
- }
18
-
19
-
20
- class TCVVaultStateService(ProtocolServices):
21
- def __init__(self, state_service: StateQuerier, chain_id: str = "0xa4b1"):
22
- super().__init__()
23
- self.name = f"{chain_id}_{Vault.tcv_vault}"
24
- self.chain_id = chain_id
25
- self.pool_info = TCVVaultInfo.mapping.get(chain_id)
26
- self.vault_abi = TCV_ABI
27
- self.state_service = state_service
28
-
29
- # BASIC FUNCTION
30
- def get_service_info(self):
31
- info = {
32
- Vault.tcv_vault: {
33
- "chain_id": self.chain_id,
34
- "type": "vault",
35
- "protocol_info": self.pool_info
36
- }
37
- }
38
- return info
39
-
40
- def get_token_list(self):
41
- reward_token = self.pool_info.get('rewardToken')
42
-
43
- tokens = []
44
- if isinstance(reward_token, list):
45
- tokens += reward_token
46
- elif isinstance(reward_token, str):
47
- tokens.append(reward_token)
48
-
49
- for token, info in self.pool_info.get("reservesList", {}).items():
50
- asset_address = info['tokenIn']
51
- if asset_address == Token.native_token:
52
- tokens.append(Token.wrapped_token.get(self.chain_id))
53
- else:
54
- tokens.append(asset_address)
55
-
56
- tokens = list(set(tokens))
57
- return tokens
58
-
59
- # WALLET STAKING BALANCE
60
- def get_wallet_staking_balance_function_info(
61
- self,
62
- wallet: str,
63
- reserves_info: dict,
64
- block_number: int = "latest",
65
- return_reward: bool = False
66
- ):
67
- rpc_calls = {}
68
- for token in reserves_info:
69
- rpc_calls[f'currentNow_{token}_{wallet}_{block_number}'.lower()] = self.state_service.get_function_info(
70
- token, TCV_ABI, "currentNow", [wallet], block_number=block_number)
71
- rpc_calls[f'totalLiquidityNFT_{token}_{wallet}_{block_number}'.lower()] = self.state_service.get_function_info(
72
- token, TCV_ABI, "totalLiquidityNFT", block_number=block_number)
73
-
74
- return rpc_calls
75
-
76
- def calculate_wallet_staking_balance(
77
- self,
78
- wallet: str,
79
- reserves_info: dict,
80
- decoded_data: dict,
81
- token_prices: dict,
82
- block_number: int = 'latest',
83
- return_reward: bool = False
84
- ):
85
- result = {}
86
- for token, information in reserves_info.items():
87
- liquidity_user_key = f'currentNow_{token}_{wallet}_{block_number}'.lower()
88
- liquidity_of_vault_key = f'totalLiquidityNFT_{token}_{wallet}_{block_number}'.lower()
89
- liquidity_user = decoded_data[liquidity_user_key]
90
- liquidity_of_vault = decoded_data[liquidity_of_vault_key]
91
- result[token] = {
92
- "liquidity_user": liquidity_user,
93
- "liquidity_of_vault": liquidity_of_vault
94
- }
95
- return result
96
-
97
- # REWARDS BALANCE
98
- def get_rewards_balance_function_info(
99
- self,
100
- wallet,
101
- reserves_info: dict = None,
102
- block_number: int = "latest"
103
- ):
104
- pass
105
-
106
- def calculate_rewards_balance(
107
- self, wallet: str, reserves_info: dict, decoded_data: dict, block_number: int = "latest"):
108
- pass
@@ -1,58 +0,0 @@
1
- TCV_VAULT_ARBITRUM = {
2
- "name": "TCV Vault",
3
- "rewardToken": "0x3cd16d9372fc938ac84444d1f47701bb4faa97ec",
4
- "airdropAddress": "0x9094264783f48880c12e703cdd1f11c4dff7f1ac",
5
- "reservesList": {
6
- "0xe467db55710cf35e2dc0402104e23221f0e12e66": {
7
- "vaultName": "eth/usdc",
8
- "tokenIn": "0xe467db55710cf35e2dc0402104e23221f0e12e66",
9
- "pool": '0xc6962004f452be9203591991d15f6b388e09e8d0',
10
- "poolInfo": {
11
- "token0": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1",
12
- "token1": "0xaf88d065e77c8cc2239327c5edb3a432268e5831",
13
- "fee": 500
14
- }
15
- },
16
- "0x9403be93fddedf88a3ed7d11bfb643b13e5cbc27": {
17
- "vaultName": "eth/usdt",
18
- "tokenIn": "0x9403be93fddedf88a3ed7d11bfb643b13e5cbc27",
19
- "pool": '0x641c00a822e8b671738d32a431a4fb6074e5c79d',
20
- "poolInfo": {
21
- "token0": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1",
22
- "token1": "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9",
23
- "fee": 500
24
- }
25
-
26
- },
27
- "0xae83866e6b48e29b225a10bc236f2665cc4f081e": {
28
- "vaultName": "eth/arb",
29
- "tokenIn": "0xae83866e6b48e29b225a10bc236f2665cc4f081e",
30
- "pool": '0xc6f780497a95e246eb9449f5e4770916dcd6396a',
31
- "poolInfo": {
32
- "token0": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1",
33
- "token1": "0x912ce59144191c1204e64559fe8253a0e49e6548",
34
- "fee": 500
35
- }
36
- },
37
- "0xaae3866f0233aec20580c21a3c10791afd38c8c1": {
38
- "vaultName": "eth/usdc(bridgeusdc)",
39
- "tokenIn": "0xaae3866f0233aec20580c21a3c10791afd38c8c1",
40
- "pool": '0xc31e54c7a869b9fcbecc14363cf510d1c41fa443',
41
- "poolInfo": {
42
- "token0": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1",
43
- "token1": "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8",
44
- "fee": 500
45
- }
46
- },
47
- "0xa02d1ecbe8eefaf7d64871ee0ae6404318df9702": {
48
- "vaultName": "eth/usdc",
49
- "tokenIn": "0xa02d1ecbe8eefaf7d64871ee0ae6404318df9702",
50
- "pool": '0xc473e2aee3441bf9240be85eb122abb059a3b57c',
51
- "poolInfo": {
52
- "token0": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1",
53
- "token1": "0xaf88d065e77c8cc2239327c5edb3a432268e5831",
54
- "fee": 3000
55
- }
56
- }
57
- }
58
- }