defi-state-querier 0.5.15__py3-none-any.whl → 0.5.16__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -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