defi-state-querier 0.4.1__py3-none-any.whl → 0.4.3__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 (48) hide show
  1. defi_services/__init__.py +1 -1
  2. defi_services/constants/chain_constant.py +4 -1
  3. defi_services/constants/entities/vault_constant.py +5 -0
  4. defi_services/constants/entities/vault_services.py +24 -0
  5. defi_services/constants/query_constant.py +1 -0
  6. defi_services/jobs/processors/state_processor.py +4 -2
  7. defi_services/services/lending/aave_v2_services.py +1 -1
  8. defi_services/services/lending/aave_v3_services.py +1 -1
  9. defi_services/services/lending/apeswap_services.py +5 -2
  10. defi_services/services/lending/compound_service.py +7 -2
  11. defi_services/services/lending/compound_v3_services.py +1 -4
  12. defi_services/services/lending/flux_services.py +6 -5
  13. defi_services/services/lending/granary_services.py +1 -4
  14. defi_services/services/lending/iron_bank_service.py +17 -6
  15. defi_services/services/lending/justlend_service.py +21 -6
  16. defi_services/services/lending/lending_info/bsc/liqee_bsc.py +154 -106
  17. defi_services/services/lending/lending_info/ethereum/liqee_eth.py +160 -110
  18. defi_services/services/lending/liqee_service.py +7 -4
  19. defi_services/services/lending/morpho_aave_v2_services.py +1 -1
  20. defi_services/services/lending/morpho_aave_v3_services.py +1 -4
  21. defi_services/services/lending/morpho_compound_services.py +1 -5
  22. defi_services/services/lending/onyx_service.py +7 -5
  23. defi_services/services/lending/radiant_v2_services.py +1 -4
  24. defi_services/services/lending/silo_services.py +1 -1
  25. defi_services/services/lending/strike_service.py +7 -2
  26. defi_services/services/lending/trava_services.py +5 -5
  27. defi_services/services/lending/uwu_services.py +1 -1
  28. defi_services/services/lending/valas_services.py +1 -1
  29. defi_services/services/lending/venus_services.py +28 -16
  30. defi_services/services/lending/wepiggy_services.py +7 -2
  31. defi_services/services/protocol_services.py +34 -2
  32. defi_services/services/vault/__init__.py +0 -0
  33. defi_services/services/vault/trava_vault_services.py +196 -0
  34. defi_services/services/vault/vault_info/__init__.py +0 -0
  35. defi_services/services/vault/vault_info/bsc/__init__.py +0 -0
  36. defi_services/services/vault/vault_info/bsc/trava_bsc.py +41 -0
  37. defi_services/services/vault/vault_info/ethereum/__init__.py +0 -0
  38. defi_services/services/vault/vault_info/ethereum/trava_eth.py +22 -0
  39. defi_services/services/vault/vault_info/fantom/__init__.py +0 -0
  40. defi_services/services/vault/vault_info/fantom/trava_ftm.py +31 -0
  41. defi_services/utils/init_services.py +5 -0
  42. {defi_state_querier-0.4.1.dist-info → defi_state_querier-0.4.3.dist-info}/METADATA +1 -1
  43. {defi_state_querier-0.4.1.dist-info → defi_state_querier-0.4.3.dist-info}/RECORD +46 -37
  44. defi_services/jobs/queriers/cosmos_state_querier.py +0 -83
  45. defi_services/services/cosmos_token_services.py +0 -46
  46. {defi_state_querier-0.4.1.dist-info → defi_state_querier-0.4.3.dist-info}/LICENSE +0 -0
  47. {defi_state_querier-0.4.1.dist-info → defi_state_querier-0.4.3.dist-info}/WHEEL +0 -0
  48. {defi_state_querier-0.4.1.dist-info → defi_state_querier-0.4.3.dist-info}/top_level.txt +0 -0
@@ -67,6 +67,11 @@ class ProtocolServices:
67
67
  if Query.protocol_apy in query_types:
68
68
  rpc_calls.update(self.get_apy_lending_pool_function_info(reserves_info, block_number))
69
69
 
70
+ if Query.staking_reward in query_types and wallet and wallet != Token.native_token:
71
+ rpc_calls.update(self.get_wallet_staking_balance_function_info(
72
+ wallet, reserves_info, block_number, return_reward=True
73
+ ))
74
+
70
75
  logger.info(f"Get encoded rpc calls in {time.time() - begin}s")
71
76
  return rpc_calls
72
77
 
@@ -92,7 +97,7 @@ class ProtocolServices:
92
97
 
93
98
  if Query.protocol_reward in query_types and wallet and wallet != Token.native_token:
94
99
  result.update(self.calculate_rewards_balance(
95
- decoded_data, wallet, block_number
100
+ wallet, reserves_info, decoded_data, block_number
96
101
  ))
97
102
 
98
103
  if Query.health_factor in query_types:
@@ -109,6 +114,11 @@ class ProtocolServices:
109
114
  result.update(self.calculate_apy_lending_pool_function_call(
110
115
  reserves_info, decoded_data, token_prices, pool_token_price, pool_decimals, block_number))
111
116
 
117
+ if Query.staking_reward in query_types and wallet and wallet != Token.native_token:
118
+ result.update(self.calculate_wallet_staking_balance(
119
+ wallet, reserves_info, decoded_data, token_prices, block_number, return_reward=True
120
+ ))
121
+
112
122
  logger.info(f"Process protocol data in {time.time() - begin}")
113
123
  return result
114
124
 
@@ -123,8 +133,9 @@ class ProtocolServices:
123
133
 
124
134
  def calculate_rewards_balance(
125
135
  self,
126
- decoded_data: dict,
127
136
  wallet: str,
137
+ reserves_info: dict,
138
+ decoded_data: dict,
128
139
  block_number: int = "latest"
129
140
  ) -> dict:
130
141
  return {}
@@ -189,3 +200,24 @@ class ProtocolServices:
189
200
  block_number: int = 'latest',
190
201
  ) -> dict:
191
202
  ...
203
+
204
+ # CALCULATE WALLET STAKING BALANCE
205
+ def get_wallet_staking_balance_function_info(
206
+ self,
207
+ wallet: str,
208
+ reserves_info: dict,
209
+ block_number: int = "latest",
210
+ return_reward: bool = False
211
+ ) -> dict:
212
+ ...
213
+
214
+ def calculate_wallet_staking_balance(
215
+ self,
216
+ wallet: str,
217
+ reserves_info: dict,
218
+ decoded_data: dict,
219
+ token_prices: dict,
220
+ block_number: int = 'latest',
221
+ return_reward: bool = False
222
+ ) -> dict:
223
+ ...
File without changes
@@ -0,0 +1,196 @@
1
+ import logging
2
+
3
+ from defi_services.abis.token.erc20_abi import ERC20_ABI
4
+ from defi_services.abis.vault.trava_vault_abi import TRAVA_VAULT_ABI
5
+ from defi_services.constants.chain_constant import Chain
6
+ from defi_services.constants.entities.vault_constant import Vault
7
+ from defi_services.constants.token_constant import Token
8
+ from defi_services.jobs.queriers.state_querier import StateQuerier
9
+ from defi_services.services.protocol_services import ProtocolServices
10
+ from defi_services.services.vault.vault_info.bsc.trava_bsc import TRAVA_VAULT_BSC
11
+ from defi_services.services.vault.vault_info.ethereum.trava_eth import TRAVA_VAULT_ETH
12
+ from defi_services.services.vault.vault_info.fantom.trava_ftm import TRAVA_VAULT_FTM
13
+
14
+ logger = logging.getLogger("Trava Vault State Service")
15
+
16
+
17
+ class TravaVaultInfo:
18
+ mapping = {
19
+ Chain.bsc: TRAVA_VAULT_BSC,
20
+ Chain.ethereum: TRAVA_VAULT_ETH,
21
+ Chain.fantom: TRAVA_VAULT_FTM
22
+ }
23
+
24
+
25
+ class TravaVaultStateService(ProtocolServices):
26
+ def __init__(self, state_service: StateQuerier, chain_id: str = "0x1"):
27
+ super().__init__()
28
+ self.name = f"{chain_id}_{Vault.trava_vault}"
29
+ self.chain_id = chain_id
30
+ self.pool_info = TravaVaultInfo.mapping.get(chain_id)
31
+
32
+ self.vault_abi = TRAVA_VAULT_ABI
33
+ self.state_service = state_service
34
+
35
+ # BASIC FUNCTION
36
+ def get_service_info(self):
37
+ info = {
38
+ Vault.trava_vault: {
39
+ "chain_id": self.chain_id,
40
+ "type": "vault",
41
+ "protocol_info": self.pool_info
42
+ }
43
+ }
44
+ return info
45
+
46
+ def get_token_list(self):
47
+ reward_token = self.pool_info.get('rewardToken')
48
+
49
+ tokens = []
50
+ if isinstance(reward_token, list):
51
+ tokens += reward_token
52
+ elif isinstance(reward_token, str):
53
+ tokens.append(reward_token)
54
+
55
+ for token, info in self.pool_info.get("reservesList", {}).items():
56
+ asset_address = info['tokenIn']
57
+ if asset_address == Token.native_token:
58
+ tokens.append(Token.wrapped_token.get(self.chain_id))
59
+ else:
60
+ tokens.append(asset_address)
61
+
62
+ tokens = list(set(tokens))
63
+ return tokens
64
+
65
+ # WALLET STAKING BALANCE
66
+ def get_wallet_staking_balance_function_info(
67
+ self,
68
+ wallet: str,
69
+ reserves_info: dict,
70
+ block_number: int = "latest",
71
+ return_reward: bool = False
72
+ ):
73
+ rpc_calls = {}
74
+ for token in reserves_info:
75
+ rpc_calls[f'balanceOf_{token}_{wallet}_{block_number}'.lower()] = self.state_service.get_function_info(
76
+ token, ERC20_ABI, "balanceOf", [wallet], block_number=block_number)
77
+ rpc_calls[f'decimals_{token}_{block_number}'.lower()] = self.state_service.get_function_info(
78
+ token, ERC20_ABI, "decimals", block_number=block_number)
79
+
80
+ if return_reward:
81
+ query_reward_id = f'getTotalRewardsBalance_{token}_{wallet}_{block_number}'.lower()
82
+ rpc_calls[query_reward_id] = self.state_service.get_function_info(
83
+ token, self.vault_abi, "getTotalRewardsBalance", [wallet], block_number=block_number)
84
+
85
+ if return_reward:
86
+ reward_token = self.pool_info["rewardToken"]
87
+ rpc_calls[f'decimals_{reward_token}_{block_number}'.lower()] = self.state_service.get_function_info(
88
+ reward_token, ERC20_ABI, "decimals", block_number=block_number)
89
+
90
+ return rpc_calls
91
+
92
+ def get_wallet_staking_balance(
93
+ self,
94
+ reserves_info: dict,
95
+ token_prices,
96
+ decimals,
97
+ staking_amount,
98
+ return_reward: bool = False,
99
+ rewards: dict = None
100
+ ):
101
+ reward_token = self.pool_info['rewardToken']
102
+
103
+ result = {}
104
+ for token in reserves_info:
105
+ value = reserves_info[token]
106
+ asset_address = value['tokenIn']
107
+
108
+ decimals_token = decimals.get(token)
109
+ staking_amount_wallet = staking_amount.get(token) / 10 ** decimals_token
110
+ result[token] = {
111
+ asset_address: {
112
+ "staking_amount": staking_amount_wallet
113
+ }
114
+ }
115
+ if return_reward:
116
+ result[token][asset_address].update({
117
+ "rewards": {
118
+ reward_token: {'amount': rewards.get(token, 0)}
119
+ }
120
+ })
121
+
122
+ if token_prices:
123
+ staking_amount_in_usd = staking_amount_wallet * token_prices.get(asset_address, 0)
124
+ result[token][asset_address].update({
125
+ "staking_amount_in_usd": staking_amount_in_usd
126
+ })
127
+ if return_reward:
128
+ reward_amount = rewards.get(token, 0)
129
+ reward_in_usd = reward_amount * token_prices.get(reward_token, 0)
130
+ result[token][asset_address]['rewards'][reward_token].update({'value_in_usd': reward_in_usd})
131
+
132
+ return result
133
+
134
+ def calculate_wallet_staking_balance(
135
+ self,
136
+ wallet: str,
137
+ reserves_info: dict,
138
+ decoded_data: dict,
139
+ token_prices: dict,
140
+ block_number: int = 'latest',
141
+ return_reward: bool = False
142
+ ):
143
+ reward_token = self.pool_info['rewardToken']
144
+ get_decimals_id = f"decimals_{reward_token}_{block_number}".lower()
145
+ reward_decimals = decoded_data.get(get_decimals_id, 18)
146
+
147
+ decimals, staking_amount, rewards = {}, {}, {}
148
+ for token in reserves_info:
149
+ get_user_data_id = f"balanceOf_{token}_{wallet}_{block_number}".lower()
150
+ get_decimals_id = f"decimals_{token}_{block_number}".lower()
151
+ staking_amount[token] = decoded_data[get_user_data_id]
152
+ decimals[token] = decoded_data[get_decimals_id]
153
+
154
+ if return_reward:
155
+ get_reward_id = f"getTotalRewardsBalance_{token}_{wallet}_{block_number}".lower()
156
+ rewards[token] = decoded_data[get_reward_id] / 10 ** reward_decimals
157
+
158
+ data = self.get_wallet_staking_balance(
159
+ reserves_info, token_prices, decimals, staking_amount, return_reward=return_reward, rewards=rewards)
160
+
161
+ return data
162
+
163
+ # REWARDS BALANCE
164
+ def get_rewards_balance_function_info(
165
+ self,
166
+ wallet,
167
+ reserves_info: dict = None,
168
+ block_number: int = "latest"
169
+ ):
170
+ rpc_calls = {}
171
+ for token, value in reserves_info.items():
172
+ rpc_calls[f'getTotalRewardsBalance_{token}_{wallet}_{block_number}'.lower()] = self.state_service.get_function_info(
173
+ token, self.vault_abi, "getTotalRewardsBalance", [wallet], block_number=block_number)
174
+
175
+ reward_token = self.pool_info["rewardToken"]
176
+ rpc_calls[f'decimals_{reward_token}_{block_number}'.lower()] = self.state_service.get_function_info(
177
+ reward_token, ERC20_ABI, "decimals", block_number=block_number)
178
+
179
+ return rpc_calls
180
+
181
+ def calculate_rewards_balance(
182
+ self, wallet: str, reserves_info: dict, decoded_data: dict, block_number: int = "latest"):
183
+
184
+ reward_token = self.pool_info['rewardToken']
185
+
186
+ get_decimals_id = f"decimals_{reward_token}_{block_number}".lower()
187
+ decimals = decoded_data[get_decimals_id]
188
+
189
+ reward_amount = 0
190
+ for token in reserves_info:
191
+ get_reward_id = f"getTotalRewardsBalance_{token}_{wallet}_{block_number}".lower()
192
+ reward_amount += decoded_data[get_reward_id] / 10 ** decimals
193
+
194
+ return {
195
+ reward_token: {"amount": reward_amount}
196
+ }
File without changes
@@ -0,0 +1,41 @@
1
+ TRAVA_VAULT_BSC = {
2
+ "name": "Trava Vault",
3
+ "rewardToken": "0x0391be54e72f7e001f6bbc331777710b4f2999ef",
4
+ "reservesList": {
5
+ "0x17b173d4b80b0b5bb7e0f1e99f5962f2d51799eb": {
6
+ "vaultName": "rtrava",
7
+ "tokenIn": "0x170772a06affc0d375ce90ef59c8ec04c7ebf5d2",
8
+ "metadata": {
9
+ "vaultType": "base",
10
+ "token": "0x170772a06affc0d375ce90ef59c8ec04c7ebf5d2"
11
+ }
12
+ },
13
+ "0xc5f0137ce42437d8f5ef25da110f7fd7386178ec": {
14
+ "vaultName": "trava",
15
+ "tokenIn": "0x0391be54e72f7e001f6bbc331777710b4f2999ef",
16
+ "metadata": {
17
+ "vaultType": "base",
18
+ "token": "0x0391be54e72f7e001f6bbc331777710b4f2999ef"
19
+ }
20
+ },
21
+ "0xf04fee30118fdb83c0957c4f6abdfdde977b9aeb": {
22
+ "vaultName": "trava/bnb",
23
+ "tokenIn": "0x865c77d4ff6383e06c58350a2cfb95cca2c0f056",
24
+ "metadata": {
25
+ "vaultType": "lp",
26
+ "base": "0x0391be54e72f7e001f6bbc331777710b4f2999ef",
27
+ "token": "0x865c77d4ff6383e06c58350a2cfb95cca2c0f056"
28
+ }
29
+ },
30
+ "0xd5cc214621395686b972dde8481a7463a0dab962": {
31
+ "vaultName": "orai",
32
+ "tokenIn": "0xa325ad6d9c92b55a3fc5ad7e412b1518f96441c0",
33
+ "metadata": {
34
+ "vaultType": "normal",
35
+ "token_coin_id": "oraichain-token",
36
+ "reward_coin_id": "trava-finance",
37
+ "token": "0xa325ad6d9c92b55a3fc5ad7e412b1518f96441c0"
38
+ }
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,22 @@
1
+ TRAVA_VAULT_ETH = {
2
+ "name": "Trava Vault",
3
+ "rewardToken": "0x186d0ba3dfc3386c464eecd96a61fbb1e2da00bf",
4
+ "reservesList": {
5
+ "0xbf576c63c30e1ebb637138ee1c67a570ff70223d": {
6
+ "vaultName": "rtrava",
7
+ "tokenIn": "0x044ede67afdb0f56d7451bb3aaccaeab3f772fad",
8
+ "metadata": {
9
+ "vaultType": "base",
10
+ "token": "0x044ede67afdb0f56d7451bb3aaccaeab3f772fad"
11
+ }
12
+ },
13
+ "0x84d92a3d61ec158dcf878ff24ebdcf6b2b5ec1fa": {
14
+ "vaultName": "trava",
15
+ "tokenIn": "0x186d0ba3dfc3386c464eecd96a61fbb1e2da00bf",
16
+ "metadata": {
17
+ "vaultType": "base",
18
+ "token": "0x186d0ba3dfc3386c464eecd96a61fbb1e2da00bf"
19
+ }
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,31 @@
1
+ TRAVA_VAULT_FTM = {
2
+ "name": "Trava Vault",
3
+ "rewardToken": "0x477a9d5df9beda06f6b021136a2efe7be242fcc9",
4
+ "reservesList": {
5
+ "0x9709730aad5878040f382968dcb9e66f2f0a964f": {
6
+ "vaultName": "rtrava",
7
+ "tokenIn": "0x1ddec3377347cba814027fbf13a86b6000f201fb",
8
+ "metadata": {
9
+ "vaultType": "base",
10
+ "token": "0x1ddec3377347cba814027fbf13a86b6000f201fb"
11
+ }
12
+ },
13
+ "0x182d67287fda8a7248851ac657e74d5a048310ae": {
14
+ "vaultName": "trava",
15
+ "tokenIn": "0x477a9d5df9beda06f6b021136a2efe7be242fcc9",
16
+ "metadata": {
17
+ "vaultType": "base",
18
+ "token": "0x477a9d5df9beda06f6b021136a2efe7be242fcc9"
19
+ }
20
+ },
21
+ "0xe7c81531db9b13046358e53cca7e16bac80ddd88": {
22
+ "vaultName": "ftm/trava",
23
+ "tokenIn": "0x7af19103e0ecf20acd414d365b1d966c58fe3799",
24
+ "metadata": {
25
+ "vaultType": "lp",
26
+ "base": "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83",
27
+ "token": "0x477a9d5df9beda06f6b021136a2efe7be242fcc9"
28
+ }
29
+ }
30
+ }
31
+ }
@@ -1,10 +1,15 @@
1
1
  from defi_services.constants.entities.lending_services import LendingServices
2
+ from defi_services.constants.entities.vault_services import VaultServices
2
3
  from defi_services.jobs.queriers.state_querier import StateQuerier
3
4
 
4
5
 
5
6
  def init_services(state_querier: StateQuerier, chain_id: str):
6
7
  services = {}
8
+
7
9
  for protocol, value in LendingServices.mapping.get(chain_id, {}).items():
8
10
  services[protocol] = value(state_querier, chain_id)
9
11
 
12
+ for protocol, value in VaultServices.mapping.get(chain_id, {}).items():
13
+ services[protocol] = value(state_querier, chain_id)
14
+
10
15
  return services
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: defi-state-querier
3
- Version: 0.4.1
3
+ Version: 0.4.3
4
4
  Summary: Calculate apy, apr, and wallet information,... in decentralized applications.
5
5
  Home-page: https://github.com/Centic-io/defi-state-querier
6
6
  Author: Viet-Bang Pham
@@ -1,4 +1,4 @@
1
- defi_services/__init__.py,sha256=pMtTmSUht-XtbR_7Doz6bsQqopJJd8rZ8I8zy2HwwoA,22
1
+ defi_services/__init__.py,sha256=Nyg0pmk5ea9-SLCAFEIF96ByFx4-TJFtrqYPN-Zn6g4,22
2
2
  defi_services/abis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  defi_services/abis/dex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  defi_services/abis/dex/biswap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -208,59 +208,59 @@ defi_services/abis/vault/trava_vault_abi.py,sha256=eiAc8ImfAQ1lSkN0gRN4T4YlxCxmA
208
208
  defi_services/abis/vault/valuator_abi.py,sha256=j44uj0hqmKj7lY0ajfUaY4N3xjVEaSBYaWilploBlDI,598
209
209
  defi_services/abis/vault/ve_abi.py,sha256=uoc08LyW9_Y7xxDVIgXOzLjo_kOy1YGP3cUAOZhyizw,38341
210
210
  defi_services/constants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
211
- defi_services/constants/chain_constant.py,sha256=1v8BP5qTQjiG77SWRJXNv69_3xFxpi5g8y6TJshNeZE,576
211
+ defi_services/constants/chain_constant.py,sha256=mufCUn3cyDEEFk2Z2x2okBsjQM5AvMwESrVEmdgXLkI,643
212
212
  defi_services/constants/db_constant.py,sha256=gDMFFjhPOgQHuS9sPOTFbsfSdIfdWQEE4tGlxHQhNsE,2566
213
213
  defi_services/constants/mongo_constant.py,sha256=7EjyDPn7lIkjJTRqQ_xeD4zt4zG_Pazc2XKLl8Uhobg,394
214
- defi_services/constants/query_constant.py,sha256=h5burTZ5k-WgMxm9nNQF3IFEEOwin6d-jciYQwqMEgg,701
214
+ defi_services/constants/query_constant.py,sha256=shSnMQVgPvTXvN_TGxeM0JO5grwp-WxgRqJeEHGBwes,739
215
215
  defi_services/constants/time_constant.py,sha256=bC-0pYnfIFFR_0iVvkxhfyHfOclWNw9O3DbdO_nh258,181
216
216
  defi_services/constants/token_constant.py,sha256=K0fm4p2qEmNm54MGinfxsjV0dG1Pi-y3-1TGv_rdBnU,2685
217
217
  defi_services/constants/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
218
  defi_services/constants/entities/lending_constant.py,sha256=uUb3CnIlZP0lqdVPUt4IdlUXZwNpsMVDTmqMw0NK47g,1009
219
219
  defi_services/constants/entities/lending_services.py,sha256=XP-Ck9bKmvNvKGOXBx_Xrg8wbD-CkCQHDFpWNjPbyHM,4909
220
+ defi_services/constants/entities/vault_constant.py,sha256=IGGd4--T-BQcm8mlU8XAJ_hkZglrdAeZff5h-oMcMqg,84
221
+ defi_services/constants/entities/vault_services.py,sha256=IMmQc15wS1KA7EuQqM_AraQtCthnZ7hoNee0E_DOyw8,567
220
222
  defi_services/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
221
223
  defi_services/jobs/processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
222
224
  defi_services/jobs/processors/multi_state_processor.py,sha256=20pYx-vpOvJwYNM4NvRrc149V4DM_RZGhJ6EQDQ0oJw,4749
223
225
  defi_services/jobs/processors/solana_state_processor.py,sha256=szsBYrkEV8kBzuA_iaSVescnwKJ2MHoTbut5kORbWTs,4065
224
- defi_services/jobs/processors/state_processor.py,sha256=u_-veX8SUm-h129lAMpI_MMiyqFz6HB7q_JWRqe4-iI,6463
226
+ defi_services/jobs/processors/state_processor.py,sha256=NTGL_77yddrdRf3sLCQOIAiy8BqeQRcLcBLHGibdbPQ,6622
225
227
  defi_services/jobs/processors/substrate_state_processor.py,sha256=KkiY1NkaxnizNJBTfn4twB-zuQo3fT3akOlbie8VF5g,3940
226
228
  defi_services/jobs/queriers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
227
- defi_services/jobs/queriers/cosmos_state_querier.py,sha256=S5DGxuCDlqCE_9cuT_Z5WV816wv8nzVn-hKaB-NiM-Y,3263
228
229
  defi_services/jobs/queriers/solana_state_querier.py,sha256=TQELYo6GUoF8s-LfetqYbclNaH8bakQqC7y2ifACIb8,3239
229
230
  defi_services/jobs/queriers/state_querier.py,sha256=uXY73-Zp0bnSszcgvCXB-ptoDpv_JUSJxKbUIatWke0,6829
230
231
  defi_services/jobs/queriers/substrate_state_querier.py,sha256=_T0Dk06sP_uBKaxgj2J_EBtJDoq-hi8jU7Np4iuO0LA,3858
231
232
  defi_services/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
- defi_services/services/cosmos_token_services.py,sha256=784oykjx3LOOIoSlBGVMnvxdja3L2CyaA4U38JGavAU,1753
233
233
  defi_services/services/nft_services.py,sha256=vKva0OJQTTxgP1lrZ5ij2sw2N44JxN5dfLLtvNJB6aA,2188
234
- defi_services/services/protocol_services.py,sha256=JzdFTLdLthABYJ8MROX_VPYaR2j9aea7-U2g4ukJJJ8,6482
234
+ defi_services/services/protocol_services.py,sha256=3Yca433xGXowcV4EjFoQ90AJHg-SfuOBsDF7aMCJ8Zk,7626
235
235
  defi_services/services/solana_token_services.py,sha256=NQKUHGMBe9eQciOaY3N20rPbIuNz108akrysX-mXfJU,1865
236
236
  defi_services/services/substrate_token_services.py,sha256=HsjceBHo0fxQIcXgDaV0OBANLuggRwXAEPt7ASB0BKk,2904
237
237
  defi_services/services/token_services.py,sha256=ncGdOpATIb9tGFa9cY1dQq3hFRwbhcYwIz0we9tNWNY,2766
238
238
  defi_services/services/lending/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
239
- defi_services/services/lending/aave_v2_services.py,sha256=fZpRfDUe0MnLzJw0_25t1z49p7H0ZKBsCea2VD3zQ1U,21483
240
- defi_services/services/lending/aave_v3_services.py,sha256=IGU9Es_-N6yMM8Vs4RN-cCTBGIFgDKOrWTY7msfXXO8,16126
241
- defi_services/services/lending/apeswap_services.py,sha256=C6nfW1PmeJ1gvXrzg1a32vJN6kTzaVb2MeWF3v7ZU2E,4610
242
- defi_services/services/lending/compound_service.py,sha256=bXV5lxPovwj0VfyMTTD2q8JDxbVSQV0mOffpld3KmYc,21130
243
- defi_services/services/lending/compound_v3_services.py,sha256=YBSWUq0WvAioV2IYpij_WLIsrHaxpv-G-N4uqhs_FE8,17049
239
+ defi_services/services/lending/aave_v2_services.py,sha256=yiz12kPSExj8AkTBA3WHzvA9DjSja_Hu0Vju5uJK2BY,21504
240
+ defi_services/services/lending/aave_v3_services.py,sha256=3Kwxa2dBiYv52qFZohC8RoCHVRU9ik33KpgniM4d8UU,16147
241
+ defi_services/services/lending/apeswap_services.py,sha256=pum1i3rcAbpd7HY7WYGHlUNoXsaiIzyi17um1qnt4Eg,4731
242
+ defi_services/services/lending/compound_service.py,sha256=fIvi66X_vL28AKKe5lYYomqCk4LIDQx5s7VRv0LjZU0,21302
243
+ defi_services/services/lending/compound_v3_services.py,sha256=BQ8f6-q_f1JuHwCj1m-FR_pnV6p77K3551GSTnYc7Mc,17034
244
244
  defi_services/services/lending/cream_services.py,sha256=vtah0kMHAxztenWbJp4CxEcBMF0XUBglGRk6p9d-oiU,1644
245
- defi_services/services/lending/flux_services.py,sha256=YeLZj37xsMgkQLV8zYtU_1Xvc5yRw8-vc993-SwVMq4,11871
245
+ defi_services/services/lending/flux_services.py,sha256=eipqDK38186YBWYAQJncP6ganBTZRVtIoNX7FQLlJmw,12006
246
246
  defi_services/services/lending/geist_services.py,sha256=UI5D-MbMqplrt7D4krSFdpaREKOT81k8boD_XhGGpUQ,1035
247
- defi_services/services/lending/granary_services.py,sha256=37W6dVoW8tPGvSssqa8pH3C7uoAU6yzdlf2NboGbpiM,16373
248
- defi_services/services/lending/iron_bank_service.py,sha256=faBrSB7FBpLW7TDN1i9NmBAFHkkGBaoenApMqcO7aWc,14260
249
- defi_services/services/lending/justlend_service.py,sha256=TjtTnl-yB6OdOdR6oIQGaJwsHASQozRYfRwT0f5y6Z8,7433
250
- defi_services/services/lending/liqee_service.py,sha256=6PQ3Js58N7yyJqOvaTkmYATDPc-tXKBI13z0YmmOXP8,16781
251
- defi_services/services/lending/morpho_aave_v2_services.py,sha256=YXuRI5yPj1U2okM9uXFfMBu3w09e-hzPufKtqooo6Ak,8449
252
- defi_services/services/lending/morpho_aave_v3_services.py,sha256=8nIHPRk2q3rrWPdvAXBkmYVkehQFmgFBr98ulYEoHWU,8191
253
- defi_services/services/lending/morpho_compound_services.py,sha256=DpqocgrPxStNf3bVazjvJG_h9EirbjLpsdZrEwqx4NY,14851
254
- defi_services/services/lending/onyx_service.py,sha256=FBGyPQa8Y3feO3kNMRrD9a35--XPyFeX2oT5SKU0wjA,14673
255
- defi_services/services/lending/radiant_v2_services.py,sha256=U23LB571IxZcK11O5_vVEkB1BGDeI03MPN4uI-aSXOg,3036
256
- defi_services/services/lending/silo_services.py,sha256=5xGBVbT_ZsWxf2Q7e_hDd9WaYJ_xFBdfAQW7s9xETcI,16653
247
+ defi_services/services/lending/granary_services.py,sha256=a99xPdsWKY2MwYETamtR4rGuMijcVUx3DyZSMK_b6uQ,16358
248
+ defi_services/services/lending/iron_bank_service.py,sha256=1oJgUlKGn8te2SgmWe1yNOKp8xO0XCjkt1mgXj0GxNA,14971
249
+ defi_services/services/lending/justlend_service.py,sha256=2jCAbHljtE3XllZTOOjAMIzB_6icowV78bWlAv6BoCw,8262
250
+ defi_services/services/lending/liqee_service.py,sha256=qd1va1w4r6B1-nb8hYB4HMQRtypIMsXjroQUrx6JWPU,16991
251
+ defi_services/services/lending/morpho_aave_v2_services.py,sha256=qUaSVisEck6dqj5f_eETxZseaBNQqvNFZNrOkInphPg,8470
252
+ defi_services/services/lending/morpho_aave_v3_services.py,sha256=yBMXUmWBnJO04idysXu6wNbtmvOfVpVPHE7gV4j_jhE,8176
253
+ defi_services/services/lending/morpho_compound_services.py,sha256=McMcOEFyr4ByeBjnL543LQ3d9bPmDqhKYxUdkdQSJpA,14831
254
+ defi_services/services/lending/onyx_service.py,sha256=WskvimXJ4iVLq6vZOB4RV645bKh5NCH3_Lf3rHx_CVY,14809
255
+ defi_services/services/lending/radiant_v2_services.py,sha256=ywjZ4sb2UQlbc4wBWz7mn9P6y19AvGVsgroDXl46fgc,3021
256
+ defi_services/services/lending/silo_services.py,sha256=xP2RYTl_eOwV5tVX4Von_T5FwwoDWlejCrEl7rZkQgM,16674
257
257
  defi_services/services/lending/spark_services.py,sha256=68_egY0yOT7YIOVbd8rbHJBJEsL0sOr0zSsTSdw0BUY,1042
258
- defi_services/services/lending/strike_service.py,sha256=jID9FXcbOi5zY1V3DKZK-wbTqjwg7vACFRoYP7tIKNQ,13013
259
- defi_services/services/lending/trava_services.py,sha256=r2sxrz7R8BPgtKiFNxeRkXlbehpRmOfqDf2xlPc7oCM,19013
260
- defi_services/services/lending/uwu_services.py,sha256=ZEGUQNTOuBTpjh4P78Quuf1pu9PonD3kJ5PRj8CG5oc,13715
261
- defi_services/services/lending/valas_services.py,sha256=LfOfzj5ZweWzpMRacpeyMwiIsoqeVI36rWSwZ3X1ok4,22321
262
- defi_services/services/lending/venus_services.py,sha256=ne8mclup0NZleuxtYr2qpun6Q6-y1RmqwbWIbE56g_o,14652
263
- defi_services/services/lending/wepiggy_services.py,sha256=5GwZ0viNl0MkwXto7jst-8b5yYaIehTpo5RcOAj4XlI,14880
258
+ defi_services/services/lending/strike_service.py,sha256=XqKxfPGIDdwmzzWHqhe2KVcm6v83-lCtlH3nOxNYB44,13185
259
+ defi_services/services/lending/trava_services.py,sha256=j1gpZdJSudyAYRHAeQKX7iTKLGahIANDRvsMrz0bmZs,18994
260
+ defi_services/services/lending/uwu_services.py,sha256=IIaFFg1gJ3cqpQbvkglN_sWLQLy8qSBNR_1Zc3DC1TY,13736
261
+ defi_services/services/lending/valas_services.py,sha256=L_eWgziQm0qtL3-WBsRyCikYndSwKCrEo0ch8uT-WNc,22342
262
+ defi_services/services/lending/venus_services.py,sha256=QazU-GQf-DF8izle8yru1eKfjXkz-vpP7vCHjU1l8nk,15450
263
+ defi_services/services/lending/wepiggy_services.py,sha256=BMbP5Wtm571EyfKVytAL4NnTI6OR8_Xuu6HXaart2Vk,15051
264
264
  defi_services/services/lending/lending_info/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
265
265
  defi_services/services/lending/lending_info/arbitrum/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
266
266
  defi_services/services/lending/lending_info/arbitrum/aave_v3_arbitrum.py,sha256=8lpLYjXE2bKijTeWjRQH4XUFhG3s7df3J3r5oZEZcjA,3556
@@ -278,7 +278,7 @@ defi_services/services/lending/lending_info/bsc/__init__.py,sha256=47DEQpj8HBSa-
278
278
  defi_services/services/lending/lending_info/bsc/apeswap_bsc.py,sha256=cbS9R3ArW2ckZBiZOysOAlu3FoRX7xla8GUlUA6C0Q8,2110
279
279
  defi_services/services/lending/lending_info/bsc/cream_bsc.py,sha256=X7CoQxOfRQjsRjsxKhiSBm5W-MO9TXKTXP93oxtwA_c,8372
280
280
  defi_services/services/lending/lending_info/bsc/granary_bsc.py,sha256=OrD7P_YNRtDu0PN5QtCUYVTMojrIKfjQO-YKet_ZN0c,2322
281
- defi_services/services/lending/lending_info/bsc/liqee_bsc.py,sha256=tnsb1Hbl8uw3vlZhTqwlxi-rSDJQr_Ts8u7r8LnuX2o,4659
281
+ defi_services/services/lending/lending_info/bsc/liqee_bsc.py,sha256=eah38sX4DBwQTw-kPUEE_dP-VC8JDodwBDTkLuMEEns,5703
282
282
  defi_services/services/lending/lending_info/bsc/radiant_bsc.py,sha256=1hVXd78h1o_ckoWFtHVnLJB3w0dcORMAUeZor7RcRsk,2415
283
283
  defi_services/services/lending/lending_info/bsc/trava_bsc.py,sha256=TKV62KPn8kxZ3OB6q_aN7wedrmKdNO8_i8Xv000baLA,3845
284
284
  defi_services/services/lending/lending_info/bsc/valas_bsc.py,sha256=Fg6RwssuVflWVUHX_OIf0e2xVDz8zZHnzLA_r-7U4-4,3728
@@ -292,7 +292,7 @@ defi_services/services/lending/lending_info/ethereum/compound_v3_eth.py,sha256=m
292
292
  defi_services/services/lending/lending_info/ethereum/flux_eth.py,sha256=Iw-hvmFc5g9_--drvZCWxtoscvMIkr1mna4pTStrA-g,1270
293
293
  defi_services/services/lending/lending_info/ethereum/granary_eth.py,sha256=AAW4fzyFAUrdaJ86cUk6OJFQnbRghgun70ScWVUXAUM,2059
294
294
  defi_services/services/lending/lending_info/ethereum/iron_bank_eth.py,sha256=PfubpeLx1_qePdXcxUS8o6oN7SdB433eDSX3Njxyoa4,4606
295
- defi_services/services/lending/lending_info/ethereum/liqee_eth.py,sha256=1AqVijItk8yeSIbOwKje8jDrlL4GOF06SE_gzIYtwHo,4839
295
+ defi_services/services/lending/lending_info/ethereum/liqee_eth.py,sha256=hDdPEz6XxNq8ODPoNwiJLOtTXZiQaR9J5ZE5qiGyyqo,5718
296
296
  defi_services/services/lending/lending_info/ethereum/morpho_aave_v2_eth.py,sha256=WDIoK0HtEOVDVGdQ6ok22W-aTapTmQt3C5wvVnM2iC8,2595
297
297
  defi_services/services/lending/lending_info/ethereum/morpho_aave_v3_eth.py,sha256=8yATd43QS8mXPVTx6aME6G6x3BkmnsWKPrudEB_pbpI,3095
298
298
  defi_services/services/lending/lending_info/ethereum/morpho_compound_eth.py,sha256=q9ZpCb0qLi5amKtL7EL27NDxJ6FBkF14iXYEPhMebfo,1879
@@ -321,17 +321,26 @@ defi_services/services/lending/lending_info/polygon/compound_v3_polygon.py,sha25
321
321
  defi_services/services/lending/lending_info/polygon/wepiggy_polygon.py,sha256=2yj2M-VVNbxkGL4zEErIQGUdDIqlnA9gLOqGVX0stWM,2227
322
322
  defi_services/services/lending/lending_info/tron/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
323
323
  defi_services/services/lending/lending_info/tron/justlend_tron.py,sha256=2F4M8zFEE6-gqDKi82M-Xd6kcb2HP8-qmpNzDYorpXE,3741
324
+ defi_services/services/vault/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
325
+ defi_services/services/vault/trava_vault_services.py,sha256=9Sj5W6o7o478MKu7ZOUdqkTtPUzT59eS9yBcU8O4UrM,7705
326
+ defi_services/services/vault/vault_info/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
327
+ defi_services/services/vault/vault_info/bsc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
328
+ defi_services/services/vault/vault_info/bsc/trava_bsc.py,sha256=v1Nv5SmjDYLvCke_H5ZtgdjNXo0_9X-P5OQldezP0XM,1586
329
+ defi_services/services/vault/vault_info/ethereum/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
330
+ defi_services/services/vault/vault_info/ethereum/trava_eth.py,sha256=mHdKDZCMOnjHyf5-sLLAGcPtWhviJpVnmiQrcGeoKcs,776
331
+ defi_services/services/vault/vault_info/fantom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
332
+ defi_services/services/vault/vault_info/fantom/trava_ftm.py,sha256=dy8us4Lt0jrS9ZfaeXD4qz3OA4QwDPMRDkkxyNrJUUU,1165
324
333
  defi_services/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
325
334
  defi_services/utils/apy.py,sha256=zQ9wrID79uccLj9pJI5Q9KhTDWXeBt9JaEVjNnYmnyg,356
326
335
  defi_services/utils/convert_address.py,sha256=UdElOSrUKsKIB90sYbrRPUlO6KfIruf3Q6KiMaL8_4k,1070
327
336
  defi_services/utils/graph_operations.py,sha256=2-onMqflUqOrbVsy7JGFyeTMOcwTgPoZ3uGWruWMA_k,6271
328
- defi_services/utils/init_services.py,sha256=by5TgYBY3Dyl9Fqbf-FCeCYe5FmU28SJNxNWDjElvHY,387
337
+ defi_services/utils/init_services.py,sha256=RRJOLJzbpFPjQTzY4xIYcoQC_zKSY4cpETTePPnzLTk,599
329
338
  defi_services/utils/logger_utils.py,sha256=KxDlmaK9aoMOI1gdroRYjMm383myvFiWqW0iKV0SabY,777
330
339
  defi_services/utils/market_service.py,sha256=imPtPHBkpEx5JnhqeIWYqbCjsIEm8IKBYHNEy6rKjdU,723
331
340
  defi_services/utils/memory_storage.py,sha256=BOT8laB0iVSCGE-oDlpWJQLbSC6X2blKX4zuQbs4inc,851
332
341
  defi_services/utils/thread_proxy.py,sha256=5Z8biAyEReUkh3vfJSvEv7GwMe3CsE5M8CbghkQtePw,2951
333
- defi_state_querier-0.4.1.dist-info/LICENSE,sha256=6jmfxa8nUIwfKnzZUxAHJSJ_IS7h7mpbJq26cWjoo-o,1063
334
- defi_state_querier-0.4.1.dist-info/METADATA,sha256=fWWrhwRpnSgYzUUZE66shLnW3Yju7kWc0dJy5Yz4STs,4375
335
- defi_state_querier-0.4.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
336
- defi_state_querier-0.4.1.dist-info/top_level.txt,sha256=C-OTxHK6MknKK-nAbEzCPDUl1M6pktRhgJrmsozdf6g,14
337
- defi_state_querier-0.4.1.dist-info/RECORD,,
342
+ defi_state_querier-0.4.3.dist-info/LICENSE,sha256=6jmfxa8nUIwfKnzZUxAHJSJ_IS7h7mpbJq26cWjoo-o,1063
343
+ defi_state_querier-0.4.3.dist-info/METADATA,sha256=5WmD2szkqUcteZjpptzafAxkIdYecDoeGqywl-nbtxI,4375
344
+ defi_state_querier-0.4.3.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
345
+ defi_state_querier-0.4.3.dist-info/top_level.txt,sha256=C-OTxHK6MknKK-nAbEzCPDUl1M6pktRhgJrmsozdf6g,14
346
+ defi_state_querier-0.4.3.dist-info/RECORD,,
@@ -1,83 +0,0 @@
1
- import logging
2
-
3
- from query_state_lib.base.mappers.eth_json_rpc_mapper import EthJsonRpc
4
- from query_state_lib.client.client_querier import ClientQuerier
5
-
6
- from defi_services.constants.query_constant import Query
7
- from pycosmicwrap import CosmicWrap
8
-
9
- logger = logging.getLogger("CosmosStateQuerier")
10
-
11
-
12
- class CosmosStateQuerier:
13
- def __init__(self, rpc_uri, lcd_uri, denom="cosmos"):
14
- self.client_querier = CosmicWrap(rpc=rpc_uri, lcd=lcd_uri, denom=denom)
15
-
16
- @staticmethod
17
- def get_function_info(fn_name: str, fn_paras: list = None):
18
- if fn_paras is None:
19
- fn_paras = []
20
- data = {
21
- "function": fn_name,
22
- "params": fn_paras
23
- }
24
-
25
- return data
26
-
27
- def query_state_data(self, queries: dict, batch_size: int = 100, workers: int = 5, ignore_error: bool = False):
28
- """
29
- Args:
30
- queries: dict - defi state queries
31
- - key: str - id of query
32
- - value: dict - input of query
33
- {
34
- function: str - name of the function,
35
- params: list - list parameters of function
36
- }
37
- batch_size: int - number of query in each batch queries
38
- workers: int - maximum number of vCPU used in queries
39
- ignore_error: bool - ignore error when decode result or not
40
-
41
- Return:
42
- + A dictionary result of queries
43
- - key: str - id of query
44
- - value: result of query
45
- """
46
- list_rpc_call, list_call_id = [], []
47
- for key, value in queries.items():
48
- fn_paras = value.get(Query.params)
49
- fn_name = value.get(Query.function)
50
- eth_call = self.add_rpc_call(fn_name=fn_name, fn_paras=fn_paras, call_id=key)
51
- list_call_id.append(key)
52
- list_rpc_call.append(eth_call)
53
-
54
- response_data = self.client_querier.sent_batch_to_provider(list_rpc_call, batch_size, workers)
55
- decoded_data = self.decode_response_data(response_data, list_call_id, ignore_error=ignore_error)
56
- return decoded_data
57
-
58
- @staticmethod
59
- def add_rpc_call(fn_name: str, fn_paras: list = None, call_id: str = None):
60
- solana_call = EthJsonRpc(method=fn_name, params=fn_paras, id=call_id)
61
- return solana_call
62
-
63
- @staticmethod
64
- def decode_response_data(response_data: dict, list_call_id: list, ignore_error=False):
65
- decoded_data = {}
66
- for call_id in list_call_id:
67
- try:
68
- response_datum = response_data.get(call_id)
69
- decoded_datum = response_datum.decode_result()
70
- except Exception as e:
71
- if not ignore_error:
72
- logger.error(f"An exception when decode data from provider: {e}")
73
- raise
74
- else:
75
- logger.error(f"[Ignored] An exception when decode data from provider: {e}")
76
- continue
77
- if isinstance(decoded_datum, int):
78
- decoded_data[call_id] = decoded_datum
79
- elif len(decoded_datum) == 1:
80
- decoded_data[call_id] = decoded_datum[0]
81
- else:
82
- decoded_data[call_id] = decoded_datum
83
- return decoded_data