defi-state-querier 0.5.5__py3-none-any.whl → 0.5.7__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.
defi_services/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.5.5"
1
+ __version__ = "0.5.7"
@@ -28,6 +28,8 @@ class Chain:
28
28
  okc = '0x42'
29
29
  aurora = '0x4e454152'
30
30
  moonriver = '0x505'
31
+ blast = '0xee'
32
+ oasis_sapphire = '0x5afe'
31
33
 
32
34
  native_decimals = {
33
35
  tron: 6,
@@ -292,3 +292,13 @@ class Denoms:
292
292
  "decimal": 6
293
293
  }
294
294
  }
295
+ all = {**orai, **cosmos}
296
+
297
+
298
+ class MulticallContract:
299
+ mapping = {
300
+ "orai": {
301
+ "multicall_balance": "orai1dyljypavg7qpt5d72a48a4pyg38d580aat55qql6tdcwfgydy6jsznk0h5",
302
+ "multicall": "orai1q7x644gmf7h8u8y6y8t9z9nnwl8djkmspypr6mxavsk9ual7dj0sxpmgwd"
303
+ }
304
+ }
@@ -43,7 +43,9 @@ class Token:
43
43
  Chain.linea: '0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f',
44
44
  Chain.okc: '0x8f8526dbfd6e38e3d8307702ca8469bae6c56c15',
45
45
  Chain.aurora: '0xc9bdeed33cd01541e1eed10f90519d2c06fe3feb',
46
- Chain.moonriver: '0x98878b06940ae243284ca214f92bb71a2b032b8a'
46
+ Chain.moonriver: '0x98878b06940ae243284ca214f92bb71a2b032b8a',
47
+ Chain.blast: '0x4300000000000000000000000000000000000004',
48
+ Chain.oasis_sapphire: '0x8bc2b030b299964eefb5e1e0b36991352e56d2d3'
47
49
  }
48
50
 
49
51
 
@@ -1,15 +1,26 @@
1
- from defi_services.constants.cosmos_decimals_constant import Denoms
1
+ from defi_services.constants.cosmos_decimals_constant import Denoms, MulticallContract
2
+ from defi_services.constants.network_constants import Chains
2
3
  from defi_services.services.cosmos_token_services import CosmosTokenServices
3
4
 
4
5
 
5
6
  class CosmosStateProcessor:
6
- def __init__(self, lcd: str, rest_uri: str):
7
+ def __init__(self, lcd: str, rest_uri: str = None, chain_id: str = Chains.oraichain):
8
+ self.chain_id = chain_id
7
9
  self.lcd = lcd
8
10
  self.rest_uri = rest_uri
9
11
 
10
12
  def get_token_balance(self, address, tokens):
11
- cosmos = CosmosTokenServices(self.lcd, self.rest_uri)
12
- data = cosmos.query_balances(address, tokens)
13
+ cosmos = CosmosTokenServices(self.lcd, self.rest_uri, self.chain_id)
14
+ if self.chain_id in MulticallContract.mapping:
15
+ data = cosmos.query_balances(address, tokens)
16
+ else:
17
+ data = cosmos.query_coin_balances(address=address)
18
+ result = {}
19
+ for item in data:
20
+ denom = item.get('denom', "").lower()
21
+ amount = int(item.get('amount', None))
22
+ decimal = Denoms.all.get(denom, {}).get("decimal", 0)
23
+ result[denom] = amount / 10 ** decimal
13
24
  return data
14
25
 
15
26
  def run(self, address: str, queries: list):
@@ -7,11 +7,12 @@ from cosmpy.cosmwasm.rest_client import RestClient
7
7
  from cosmpy.cosmwasm.rest_client import CosmWasmRestClient
8
8
  from cosmpy.protos.cosmwasm.wasm.v1.query_pb2 import QuerySmartContractStateRequest
9
9
 
10
- from defi_services.constants.cosmos_decimals_constant import Denoms
10
+ from defi_services.constants.cosmos_decimals_constant import Denoms, MulticallContract
11
11
 
12
12
 
13
13
  class CosmosTokenServices:
14
- def __init__(self, lcd: str, rest_uri: str):
14
+ def __init__(self, lcd: str, rest_uri: str, chain_id: str):
15
+ self.chain_id = chain_id
15
16
  self.lcd = lcd
16
17
  self.rest_uri = rest_uri
17
18
  self.client = CosmWasmRestClient(RestClient(rest_address=rest_uri))
@@ -60,7 +61,7 @@ class CosmosTokenServices:
60
61
  "data": self.encode_data({"token_info": {}})
61
62
  })
62
63
  queries.append({
63
- "address": "orai1dyljypavg7qpt5d72a48a4pyg38d580aat55qql6tdcwfgydy6jsznk0h5",
64
+ "address": MulticallContract.mapping.get(self.chain_id).get("multicall_balance"),
64
65
  "data": self.encode_data(balance_query)
65
66
  })
66
67
  query = {
@@ -70,7 +71,7 @@ class CosmosTokenServices:
70
71
  }
71
72
  query = json.dumps(query).encode('utf-8')
72
73
  request_ = QuerySmartContractStateRequest(
73
- address="orai1q7x644gmf7h8u8y6y8t9z9nnwl8djkmspypr6mxavsk9ual7dj0sxpmgwd", query_data=query)
74
+ address=MulticallContract.mapping.get(self.chain_id).get("multicall"), query_data=query)
74
75
  response_ = self.client.SmartContractState(request_)
75
76
  decoded_data = self.decode_response_data(response_, cw20_tokens, tokens)
76
77
  return decoded_data
@@ -61,5 +61,10 @@ class TokenServices:
61
61
  decimals_token = token
62
62
  if token == Token.native_token:
63
63
  decimals_token = Token.wrapped_token.get(self.chain_id)
64
+
65
+ # Ignore decimals of missing native's wrapped token
66
+ if not decimals_token:
67
+ return {}
68
+
64
69
  key = f"decimals_{token}_{block_number}".lower()
65
70
  return {key: self.state_service.get_function_info(decimals_token, ERC20_ABI, "decimals", [], block_number)}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: defi-state-querier
3
- Version: 0.5.5
3
+ Version: 0.5.7
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=78mfpLewKVki6c9UONSUdlVme_JsN9ZwIfp4Hf4jmG0,22
1
+ defi_services/__init__.py,sha256=KiyyYbyEe0O858kmiWcg1RdmqGUYtk_JqRmc3_Ev2Q8,22
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
@@ -294,14 +294,14 @@ defi_services/abis/vault/lido/lido_withdrawl_queue.py,sha256=qKdsXQLKlNU3a_Nk68q
294
294
  defi_services/abis/vault/lido/lido_wsteth.py,sha256=DJhMToJS43vV2r5WP2kZSiagt7R8MtKFT8u1xJBjZKU,8780
295
295
  defi_services/abis/vault/lido/lidor_accounting_oracle_hash_consensus.py,sha256=TWCLaccDgvWJZZKLAeoznYgGi3g3M_hFqoo3KE_L7K8,21039
296
296
  defi_services/constants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
297
- defi_services/constants/chain_constant.py,sha256=aU7xLaQYLro-7sI5Jpyi0tEHhEQcchyxlxEEJaotFMM,1018
298
- defi_services/constants/cosmos_decimals_constant.py,sha256=dWhP6QRbvatuV5j2qEZMq2b4WXSFnU6DTWN4khQ2ac8,13338
297
+ defi_services/constants/chain_constant.py,sha256=llTCq697jtt64a_6QRxZK71Q3SMeoIyOY8RJXw5i5s8,1067
298
+ defi_services/constants/cosmos_decimals_constant.py,sha256=SjFkFbkvxVAk0jtok_1EaBh69ZE8S1fFAbVn6bdJO4s,13635
299
299
  defi_services/constants/db_constant.py,sha256=gDMFFjhPOgQHuS9sPOTFbsfSdIfdWQEE4tGlxHQhNsE,2566
300
300
  defi_services/constants/mongo_constant.py,sha256=qsDIq2Gg5MkBGaEOh4Fd9y6fOOidF4gGPnQwtaPon3E,398
301
301
  defi_services/constants/network_constants.py,sha256=aCUhPFOA9oAMXrIrw67wfEvc4B3HcTlCCz9U1Ku4o50,13574
302
302
  defi_services/constants/query_constant.py,sha256=6HSK5IToUQpKLqmTeCgKf0npwmog7GWFUmQpz_mbkgY,1088
303
303
  defi_services/constants/time_constant.py,sha256=bC-0pYnfIFFR_0iVvkxhfyHfOclWNw9O3DbdO_nh258,181
304
- defi_services/constants/token_constant.py,sha256=4iDWis589XF4_OIcBOqA7_qIfCde-nV6fDaV__5c2D4,4822
304
+ defi_services/constants/token_constant.py,sha256=dGO_i-L_LLx4mSA0wIG4FoaL-OWOAd5bp6k7VucUjUQ,4965
305
305
  defi_services/constants/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
306
306
  defi_services/constants/entities/dex_constant.py,sha256=oCt8RS-0KjFW5zR5IU1Ys49nYCCAraY8pTivOpXoyvs,343
307
307
  defi_services/constants/entities/dex_info_constant.py,sha256=6sLHxCmRz_6HW8WRe27FkOS-FGR-zC354iCTcEIjp78,1604
@@ -313,7 +313,7 @@ defi_services/constants/entities/vault_services.py,sha256=IMmQc15wS1KA7EuQqM_Ara
313
313
  defi_services/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
314
314
  defi_services/jobs/processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
315
315
  defi_services/jobs/processors/call_state_processor.py,sha256=WseX0OaMA5D_ANYofrz7W2BooSMdHlGRay4NuiABmM4,436
316
- defi_services/jobs/processors/cosmos_state_processor.py,sha256=yGC0RRcSKslzUbAxfZzvQm0mRfBO4YWa7a8V1kKQ_RI,1220
316
+ defi_services/jobs/processors/cosmos_state_processor.py,sha256=eZa2fO5Vh4n_VTJjKSHTud325KjHvFA_e8NcywDEun4,1813
317
317
  defi_services/jobs/processors/multi_call_state_processor.py,sha256=AksswGMSyStbnvkQcBVb0Y2tdpkUgc1CWoeSiMpGy8U,462
318
318
  defi_services/jobs/processors/multi_state_processor.py,sha256=Od7Y8zPz7xj0L-_0YuK4wg_94fX8Q1PquuKUUYteIJU,5731
319
319
  defi_services/jobs/processors/solana_state_processor.py,sha256=szsBYrkEV8kBzuA_iaSVescnwKJ2MHoTbut5kORbWTs,4065
@@ -325,13 +325,13 @@ defi_services/jobs/queriers/solana_state_querier.py,sha256=TQELYo6GUoF8s-LfetqYb
325
325
  defi_services/jobs/queriers/state_querier.py,sha256=q7cAW395urZjcWTpqw8m_nDunLyyTuAXJ3DRx_1HOxo,7384
326
326
  defi_services/jobs/queriers/substrate_state_querier.py,sha256=_T0Dk06sP_uBKaxgj2J_EBtJDoq-hi8jU7Np4iuO0LA,3858
327
327
  defi_services/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
328
- defi_services/services/cosmos_token_services.py,sha256=8LfaKUxcaj9IMQm31a_UY5Zqayo0AmkvgIWXsgTcCjY,5181
328
+ defi_services/services/cosmos_token_services.py,sha256=-QGmhS-WtwJbOnOFQ7CuM10glPgzZvYPtPlCE6IZIKM,5248
329
329
  defi_services/services/dex_protocol_services.py,sha256=J93P7kwy1v98aeA95ErT7jDCCOAelFuCNiTXl3PVFFo,6656
330
330
  defi_services/services/nft_services.py,sha256=vKva0OJQTTxgP1lrZ5ij2sw2N44JxN5dfLLtvNJB6aA,2188
331
331
  defi_services/services/protocol_services.py,sha256=3Yca433xGXowcV4EjFoQ90AJHg-SfuOBsDF7aMCJ8Zk,7626
332
332
  defi_services/services/solana_token_services.py,sha256=NQKUHGMBe9eQciOaY3N20rPbIuNz108akrysX-mXfJU,1865
333
333
  defi_services/services/substrate_token_services.py,sha256=HsjceBHo0fxQIcXgDaV0OBANLuggRwXAEPt7ASB0BKk,2904
334
- defi_services/services/token_services.py,sha256=t6eJYemNyiG_4TObjKnQOz8MmSqXBKjsC0A3fPBeDuM,2800
334
+ defi_services/services/token_services.py,sha256=vISaOgwHsokpwWENGshRssvq2xuCVeL5gtr20SSYX78,2927
335
335
  defi_services/services/dex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
336
336
  defi_services/services/dex/pancakeswap_service.py,sha256=cN_L7897l8dh7DnNuHo6fcnYa-JLHI7yLLzBW1C9RlI,4637
337
337
  defi_services/services/dex/pancakeswap_v2_service.py,sha256=ppRruxXHKeY3BQY5DxBQoNDjNIc6kqo3Wjgd6mO9CcA,13098
@@ -464,8 +464,8 @@ defi_services/utils/market_service.py,sha256=imPtPHBkpEx5JnhqeIWYqbCjsIEm8IKBYHN
464
464
  defi_services/utils/memory_storage.py,sha256=BOT8laB0iVSCGE-oDlpWJQLbSC6X2blKX4zuQbs4inc,851
465
465
  defi_services/utils/sqrt_price_math.py,sha256=9lgUeWFT4wjl3Vq3b7-jZ2bGvvZx7dDBSfVnM3lsZ8o,5575
466
466
  defi_services/utils/thread_proxy.py,sha256=5Z8biAyEReUkh3vfJSvEv7GwMe3CsE5M8CbghkQtePw,2951
467
- defi_state_querier-0.5.5.dist-info/LICENSE,sha256=6jmfxa8nUIwfKnzZUxAHJSJ_IS7h7mpbJq26cWjoo-o,1063
468
- defi_state_querier-0.5.5.dist-info/METADATA,sha256=djRcAZmtLY0cG2hmAVNZoR7fnOYwhpMj43OuFucjMnI,4417
469
- defi_state_querier-0.5.5.dist-info/WHEEL,sha256=mguMlWGMX-VHnMpKOjjQidIo1ssRlCFu4a4mBpz1s2M,91
470
- defi_state_querier-0.5.5.dist-info/top_level.txt,sha256=C-OTxHK6MknKK-nAbEzCPDUl1M6pktRhgJrmsozdf6g,14
471
- defi_state_querier-0.5.5.dist-info/RECORD,,
467
+ defi_state_querier-0.5.7.dist-info/LICENSE,sha256=6jmfxa8nUIwfKnzZUxAHJSJ_IS7h7mpbJq26cWjoo-o,1063
468
+ defi_state_querier-0.5.7.dist-info/METADATA,sha256=2jNWm8RrkBwLUcc5rH05G4bzi4I98wrRKdKw6dyAttw,4417
469
+ defi_state_querier-0.5.7.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
470
+ defi_state_querier-0.5.7.dist-info/top_level.txt,sha256=C-OTxHK6MknKK-nAbEzCPDUl1M6pktRhgJrmsozdf6g,14
471
+ defi_state_querier-0.5.7.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.1.1)
2
+ Generator: setuptools (70.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5