defi-state-querier 0.5.15__py3-none-any.whl → 0.5.16__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.
@@ -1,5 +1,5 @@
1
1
  class Vault:
2
2
  # service
3
3
  trava_vault = "trava-vault"
4
-
5
- all = [trava_vault]
4
+ tcv_vault = "tcv-vault"
5
+ all = [trava_vault, tcv_vault]
@@ -1,5 +1,6 @@
1
1
  from defi_services.constants.chain_constant import Chain
2
2
  from defi_services.constants.entities.vault_constant import Vault
3
+ from defi_services.services.vault.tcv_vault_services import TCVVaultStateService
3
4
  from defi_services.services.vault.trava_vault_services import TravaVaultStateService
4
5
 
5
6
 
@@ -17,8 +18,13 @@ class VaultServices:
17
18
  Vault.trava_vault: TravaVaultStateService
18
19
  }
19
20
 
21
+ arbitrum = {
22
+ Vault.tcv_vault: TCVVaultStateService
23
+ }
24
+
20
25
  mapping = {
21
26
  Chain.bsc: bsc,
22
27
  Chain.ethereum: ethereum,
23
- Chain.fantom: fantom
28
+ Chain.fantom: fantom,
29
+ Chain.arbitrum: arbitrum
24
30
  }
@@ -26,6 +26,9 @@ class StateQuerier:
26
26
  def get_client_querier(self):
27
27
  return self.client_querier
28
28
 
29
+ def get_provider(self):
30
+ return self.provider_uri
31
+
29
32
  @staticmethod
30
33
  def get_function_info(address: str, abi: list, fn_name: str, fn_paras: list = None, block_number: int = 'latest'):
31
34
  if fn_paras is None:
@@ -0,0 +1,110 @@
1
+ from defi_services.constants.entities.dex_constant import Dex
2
+ from defi_services.constants.query_constant import Query
3
+ from defi_services.jobs.processors.state_processor import StateProcessor
4
+ from defi_services.services.vault.vault_info.arbitrum.tcv_arb import TCV_VAULT_ARBITRUM
5
+
6
+ class TCV:
7
+ def __init__(self, provider_uri, chain_id):
8
+ self.state_processor = StateProcessor(provider_uri, chain_id)
9
+
10
+ def get_tvl_info(
11
+ self,
12
+ address,
13
+ reserves_info,
14
+ block_number: int = "latest",
15
+ ):
16
+ queries = [
17
+ {
18
+ "query_id": "tcv-vault",
19
+ "entity_id": "tcv-vault",
20
+ "query_type": Query.staking_reward
21
+ },
22
+ ]
23
+ res = self.state_processor.run(address, queries, block_number)
24
+ result = res[0].get("staking_reward")
25
+ for token, information in reserves_info.items():
26
+ pool = information.get("pool")
27
+ lp_token_dict = {
28
+ pool: reserves_info[token]["poolInfo"]
29
+ }
30
+ dex_lp_info = self.get_lp_token_info(token, Dex.uniswap_v3, lp_token_dict)
31
+ token_nfts = self.get_user_nft(token, Dex.uniswap_v3)
32
+ token_info = self.get_user_info(token, Dex.uniswap_v3, token_nfts)
33
+ token_balance = self.get_user_token_balance(token, Dex.uniswap_v3, token_info, dex_lp_info)
34
+ tvl = {}
35
+ for balance_info in token_balance:
36
+ for token_id, info in balance_info['dex_user_token_balance'].items():
37
+ if info['token0'] not in tvl:
38
+ tvl[info['token0']] = 0
39
+ if info['token1'] not in tvl:
40
+ tvl[info['token1']] = 0
41
+ tvl[info['token0']] += info['token0_amount']
42
+ tvl[info['token1']] += info['token1_amount']
43
+ result[token].update(tvl)
44
+ return result
45
+
46
+ def get_user_nft(self, wallet, dex_protocol):
47
+ queries = [
48
+ {
49
+ 'query_id': f'{dex_protocol}_usernft',
50
+ "entity_id": dex_protocol,
51
+ 'query_type': Query.dex_user_nft
52
+ }
53
+ ]
54
+
55
+ res = self.state_processor.run(wallet, queries, batch_size=100, max_workers=8, ignore_error=True)
56
+ return res
57
+
58
+ def get_user_info(self, wallet, dex_protocol, user_nfts):
59
+ queries = [
60
+ {
61
+ 'query_id': f'{dex_protocol}_userinfo',
62
+ "entity_id": dex_protocol,
63
+ 'query_type': Query.dex_user_info,
64
+ 'supplied_data': {
65
+ 'user_data': user_nfts[0][Query.dex_user_nft],
66
+ }
67
+ }
68
+ ]
69
+
70
+ res = self.state_processor.run(wallet, queries, batch_size=100, max_workers=8, ignore_error=True)
71
+ return res
72
+
73
+ def get_user_token_balance(self, wallet, dex_protocol, user_info, dex_lp_info):
74
+ queries = [
75
+ {
76
+ 'query_id': f'{dex_protocol}_usertokenbalance',
77
+ "entity_id": dex_protocol,
78
+ 'query_type': Query.dex_user_token_balance,
79
+ 'supplied_data': {
80
+ 'user_data': user_info[0][Query.dex_user_info],
81
+ 'lp_token_info': dex_lp_info[0][Query.lp_token_info]
82
+
83
+ }
84
+ }
85
+ ]
86
+
87
+ res = self.state_processor.run(wallet, queries, batch_size=100, max_workers=8, ignore_error=True)
88
+ return res
89
+
90
+ def get_lp_token_info(self, wallet, dex_protocol, lp_token_list):
91
+ queries = [
92
+ {
93
+ 'query_id': f'{dex_protocol}_lptokeninfo',
94
+ "entity_id": dex_protocol,
95
+ 'query_type': Query.lp_token_info,
96
+ 'supplied_data': {
97
+ 'lp_token_info': lp_token_list}
98
+ },
99
+ {
100
+ 'query_id': f'{dex_protocol}_lptokenbalance',
101
+ "entity_id": dex_protocol,
102
+ 'query_type': Query.token_pair_balance,
103
+ 'supplied_data': {
104
+ 'lp_token_info': lp_token_list}
105
+ }
106
+ ]
107
+ res = self.state_processor.run(wallet, queries, batch_size=100, max_workers=8, ignore_error=True)
108
+ return res
109
+
110
+
@@ -0,0 +1,109 @@
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.trava_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.trava_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
+
98
+ # REWARDS BALANCE
99
+ def get_rewards_balance_function_info(
100
+ self,
101
+ wallet,
102
+ reserves_info: dict = None,
103
+ block_number: int = "latest"
104
+ ):
105
+ pass
106
+
107
+ def calculate_rewards_balance(
108
+ self, wallet: str, reserves_info: dict, decoded_data: dict, block_number: int = "latest"):
109
+ pass
@@ -0,0 +1,58 @@
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
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: defi-state-querier
3
- Version: 0.5.15
3
+ Version: 0.5.16
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=L6LoKMlJx-n68Agaz17S4PydD7S5Z4lwW3o79dy3l1c,23
1
+ defi_services/__init__.py,sha256=n5QSM4vnUUdmglsGavjALmg_0KNH7BfHYHUyz2Houzs,23
2
2
  defi_services/abis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  defi_services/abis/multicall_v3_abi.py,sha256=0aPxjrJJFU17fODjvYFRDn5Y5J1yi_AJKc8v1uohNGY,12352
4
4
  defi_services/abis/dex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -231,6 +231,7 @@ defi_services/abis/token/erc20_abi.py,sha256=BQKzaRjwCdc7Pt1X0GqHlnXTmec6f67wIpW
231
231
  defi_services/abis/token/erc721_abi.py,sha256=VXopcqKiof1ZH05WsKmDH7YA9RaPGzCYGts7XxxSnY4,6354
232
232
  defi_services/abis/vault/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
233
233
  defi_services/abis/vault/incentive_abi.py,sha256=dstg33YRuAtqdM4r77fOhP15Cda-tQexL8U9i1fph68,12332
234
+ defi_services/abis/vault/tcv_abi.py,sha256=uyqQ5b_EAVCnXP5PBMzYxb_5jsPRRiuziDrCD7Ov0j8,34157
234
235
  defi_services/abis/vault/trava_vault_abi.py,sha256=eiAc8ImfAQ1lSkN0gRN4T4YlxCxmAC649LYvuujnErc,31318
235
236
  defi_services/abis/vault/valuator_abi.py,sha256=j44uj0hqmKj7lY0ajfUaY4N3xjVEaSBYaWilploBlDI,598
236
237
  defi_services/abis/vault/ve_abi.py,sha256=uoc08LyW9_Y7xxDVIgXOzLjo_kOy1YGP3cUAOZhyizw,38341
@@ -309,9 +310,10 @@ defi_services/constants/entities/dex_info_constant.py,sha256=gFjF6gWLZ-e_iLoUeSF
309
310
  defi_services/constants/entities/dex_services.py,sha256=OWY_Q7m8R0_Gz_ficgCH497_SFZvd84TYuKOfSNZQ08,2201
310
311
  defi_services/constants/entities/lending_constant.py,sha256=uUb3CnIlZP0lqdVPUt4IdlUXZwNpsMVDTmqMw0NK47g,1009
311
312
  defi_services/constants/entities/lending_services.py,sha256=EeCRUi-K4O3MlB6m5f9QKMYlTtPb5VtYd7hVSkAh_38,4958
312
- defi_services/constants/entities/vault_constant.py,sha256=IGGd4--T-BQcm8mlU8XAJ_hkZglrdAeZff5h-oMcMqg,84
313
- defi_services/constants/entities/vault_services.py,sha256=IMmQc15wS1KA7EuQqM_AraQtCthnZ7hoNee0E_DOyw8,567
313
+ defi_services/constants/entities/vault_constant.py,sha256=XaFp2VpmePfym42Gn-5IeT8qnQBq1JcRNrH7r2_tWxo,122
314
+ defi_services/constants/entities/vault_services.py,sha256=uwcvxwnyXNU3_3mcI6PGWyvGe40tzHmTrmigotLWeMM,752
314
315
  defi_services/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
316
+ defi_services/jobs/tcv.py,sha256=sL1VgKgTytl3PlyWxtcuASHJnxY6jc_2xJnbW9TExVM,4236
315
317
  defi_services/jobs/processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
316
318
  defi_services/jobs/processors/call_state_processor.py,sha256=WseX0OaMA5D_ANYofrz7W2BooSMdHlGRay4NuiABmM4,436
317
319
  defi_services/jobs/processors/cosmos_state_processor.py,sha256=eVAs_-dSjlR7ijHAG9ytAysGesiyQYyK-sAMg8rUPYw,1898
@@ -324,7 +326,7 @@ defi_services/jobs/processors/ton_state_processor.py,sha256=YcNZqMlZI-7UDL4Cxxa8
324
326
  defi_services/jobs/queriers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
325
327
  defi_services/jobs/queriers/call_state_querier.py,sha256=1aTPFwX28dY6SDQ7wHDAdwSGxYHMR7sZzaIJl8bJqZw,4880
326
328
  defi_services/jobs/queriers/solana_state_querier.py,sha256=TQELYo6GUoF8s-LfetqYbclNaH8bakQqC7y2ifACIb8,3239
327
- defi_services/jobs/queriers/state_querier.py,sha256=q7cAW395urZjcWTpqw8m_nDunLyyTuAXJ3DRx_1HOxo,7384
329
+ defi_services/jobs/queriers/state_querier.py,sha256=kvZv0UTUTcGCpBk-YqWSJt6gh_luit46FHP1Ycfvbi0,7446
328
330
  defi_services/jobs/queriers/substrate_state_querier.py,sha256=_T0Dk06sP_uBKaxgj2J_EBtJDoq-hi8jU7Np4iuO0LA,3858
329
331
  defi_services/jobs/queriers/ton_state_querier.py,sha256=IkCMGwFgERcX7M_DzBxHxD-nKzbwSWrg8gxuKSERiJw,1148
330
332
  defi_services/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -448,8 +450,11 @@ defi_services/services/multicall/batch_queries_service.py,sha256=HzgKOdkP6kpjR7g
448
450
  defi_services/services/multicall/multicall_v2.py,sha256=5JAqb3Jn5Z-23-Gwz5lMa5DokES-Pf7WtigHMGlG-7k,18695
449
451
  defi_services/services/multicall/state_query_service.py,sha256=1Ob5NX0tXmVUrSB1_mOvFBkOUA8KZJPwH2DMiHwlGhI,23709
450
452
  defi_services/services/vault/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
453
+ defi_services/services/vault/tcv_vault_services.py,sha256=AijdbNloHqsod1_YEsUtZgQVsRjB08p-nLa-0AMFqqs,3831
451
454
  defi_services/services/vault/trava_vault_services.py,sha256=9Sj5W6o7o478MKu7ZOUdqkTtPUzT59eS9yBcU8O4UrM,7705
452
455
  defi_services/services/vault/vault_info/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
456
+ defi_services/services/vault/vault_info/arbitrum/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
457
+ defi_services/services/vault/vault_info/arbitrum/tcv_arb.py,sha256=7e4oAi_EFaLwlpyLmFARbG3iRfNu2yQKcH82lq2bqRo,2467
453
458
  defi_services/services/vault/vault_info/bsc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
454
459
  defi_services/services/vault/vault_info/bsc/trava_bsc.py,sha256=v1Nv5SmjDYLvCke_H5ZtgdjNXo0_9X-P5OQldezP0XM,1586
455
460
  defi_services/services/vault/vault_info/ethereum/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -470,8 +475,8 @@ defi_services/utils/memory_storage.py,sha256=BOT8laB0iVSCGE-oDlpWJQLbSC6X2blKX4z
470
475
  defi_services/utils/sqrt_price_math.py,sha256=9lgUeWFT4wjl3Vq3b7-jZ2bGvvZx7dDBSfVnM3lsZ8o,5575
471
476
  defi_services/utils/thread_proxy.py,sha256=5Z8biAyEReUkh3vfJSvEv7GwMe3CsE5M8CbghkQtePw,2951
472
477
  defi_services/utils/ton_decode_address.py,sha256=EWKwmC7KtbXpdKgiNK-5j-5lX7fCr17I4EWYs9b43eU,443
473
- defi_state_querier-0.5.15.dist-info/LICENSE,sha256=6jmfxa8nUIwfKnzZUxAHJSJ_IS7h7mpbJq26cWjoo-o,1063
474
- defi_state_querier-0.5.15.dist-info/METADATA,sha256=x9nO764DZ3Z7pZoNwEe1dpEUd2LLFgS9lyUAY1ppH2A,4413
475
- defi_state_querier-0.5.15.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
476
- defi_state_querier-0.5.15.dist-info/top_level.txt,sha256=C-OTxHK6MknKK-nAbEzCPDUl1M6pktRhgJrmsozdf6g,14
477
- defi_state_querier-0.5.15.dist-info/RECORD,,
478
+ defi_state_querier-0.5.16.dist-info/LICENSE,sha256=6jmfxa8nUIwfKnzZUxAHJSJ_IS7h7mpbJq26cWjoo-o,1063
479
+ defi_state_querier-0.5.16.dist-info/METADATA,sha256=YJjyozTQuZZr3p0qc5V27OhH8KSF0LAmGOEo2oL82i0,4413
480
+ defi_state_querier-0.5.16.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
481
+ defi_state_querier-0.5.16.dist-info/top_level.txt,sha256=C-OTxHK6MknKK-nAbEzCPDUl1M6pktRhgJrmsozdf6g,14
482
+ defi_state_querier-0.5.16.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.5.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5