defi-state-querier 0.5.5__py3-none-any.whl → 0.5.7__py3-none-any.whl

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