crypto-com-sdk 0.0.24__py3-none-any.whl → 0.0.26__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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crypto-com-sdk
3
- Version: 0.0.24
3
+ Version: 0.0.26
4
4
  Summary: cryptocom crypto exchange api client
5
5
  Project-URL: Homepage, https://github.com/ccxt/ccxt
6
6
  Project-URL: Issues, https://github.com/ccxt/ccxt
@@ -1,11 +1,11 @@
1
1
  cryptocom/__init__.py,sha256=Ei5wz00g_3ERgN2Gsu1ZcccyL4tByDvfxR8qKkPxAgc,282
2
- cryptocom/ccxt/__init__.py,sha256=IDbzKZ51lwvLdQGDwKI7hdXscoib8j5tQKLOMbDITLw,6054
3
- cryptocom/ccxt/cryptocom.py,sha256=MqHql1i3rEqSdJHunGVHlqv6gl4p68YyPENMnseYJiU,141103
2
+ cryptocom/ccxt/__init__.py,sha256=duHwYj7deLusC9fbjCVZJgol-rYYGTnuvhJIsCDVhTc,6054
3
+ cryptocom/ccxt/cryptocom.py,sha256=DLZbnrVBED4KmdX9aEPEx3LZvCKZ0UI9wlpziF2lQIU,141131
4
4
  cryptocom/ccxt/abstract/cryptocom.py,sha256=VdIfedBhx9Oym8fQ06c4Xmip7iT02hiVNBQA0E0rXU8,20915
5
- cryptocom/ccxt/async_support/__init__.py,sha256=szrlbHxHvpk8AS850qgMnpIsW6mA8lSa7YeY-OCJJRk,4787
6
- cryptocom/ccxt/async_support/cryptocom.py,sha256=GCtbWxu0SD3kW4SuECPYKP-ZQiV0VuIhVswWjuCmikE,141711
5
+ cryptocom/ccxt/async_support/__init__.py,sha256=rhKI9QXqBa75sfZWHpIV2xOjrZZKW6Fgm99aa1Tvi7I,4787
6
+ cryptocom/ccxt/async_support/cryptocom.py,sha256=6X7gz7uJuWgYv5YWCMfgwoAmP6ci88YMxRsHU3FGlG4,141739
7
7
  cryptocom/ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
8
- cryptocom/ccxt/async_support/base/exchange.py,sha256=X4BrbR9Oo-33uUotlodYrIW7ucESwmoHYnUmWAkS8ck,117223
8
+ cryptocom/ccxt/async_support/base/exchange.py,sha256=X_oV71iDNfd2c96pnNJ-e2mniQx-1px-iIXkE-bNUTk,117255
9
9
  cryptocom/ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
10
10
  cryptocom/ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
11
11
  cryptocom/ccxt/async_support/base/ws/aiohttp_client.py,sha256=Y5HxAVXyyYduj6b6SbbUZETlq3GrVMzrkW1r-TMgpb8,6329
@@ -19,10 +19,10 @@ cryptocom/ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq
19
19
  cryptocom/ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
20
20
  cryptocom/ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
21
21
  cryptocom/ccxt/base/errors.py,sha256=MvCrL_sAM3de616T6RE0PSxiF2xV6Qqz5b1y1ghidbk,4888
22
- cryptocom/ccxt/base/exchange.py,sha256=ZvK4GMhsYIvcZ7KloZD22dcBDOWtroMR88T5mu7zQ7E,322633
22
+ cryptocom/ccxt/base/exchange.py,sha256=Nc1YifSOr1D3QRVQiSJu59SP76gActUUZIsgusjoTss,326255
23
23
  cryptocom/ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
24
24
  cryptocom/ccxt/base/types.py,sha256=SfxIKDSsxP7MPHWiOVI965Nr5NSEPpAno5fuveTRi3w,11423
25
- cryptocom/ccxt/pro/__init__.py,sha256=uTUe8N3w8oG5SWZvcr2bMOh_NAF4Wln2-Bmvo2_mt3U,625
25
+ cryptocom/ccxt/pro/__init__.py,sha256=y_pE4xRN87eFKeI5_LqFRLGR6uEC4F4UjZlRfK5eECY,625
26
26
  cryptocom/ccxt/pro/cryptocom.py,sha256=HxORVyDV1R0ILS-fl8ikRvF0D7pW9AqPaZNxVVeOTYI,60160
27
27
  cryptocom/ccxt/static_dependencies/README.md,sha256=3TCvhhn09_Cqf9BDDpao1V7EfKHDpQ6k9oWRsLFixpU,18
28
28
  cryptocom/ccxt/static_dependencies/__init__.py,sha256=tzFje8cloqmiIE6kola3EaYC0SnD1izWnri69hzHsSw,168
@@ -283,6 +283,6 @@ cryptocom/ccxt/static_dependencies/toolz/curried/exceptions.py,sha256=gKFOHDIayA
283
283
  cryptocom/ccxt/static_dependencies/toolz/curried/operator.py,sha256=ML92mknkAwzBl2NCm-4werSUmJEtSHNY9NSzhseNM9s,525
284
284
  cryptocom/ccxt/static_dependencies/typing_inspect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
285
285
  cryptocom/ccxt/static_dependencies/typing_inspect/typing_inspect.py,sha256=5gIWomLPfuDpgd3gX1GlnX0MuXM3VorR4j2W2qXORiQ,28269
286
- crypto_com_sdk-0.0.24.dist-info/METADATA,sha256=9HM2QAEV48cIgIMamgGtvTTyAA4TjYiM7ghZfL7ONl0,14813
287
- crypto_com_sdk-0.0.24.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
288
- crypto_com_sdk-0.0.24.dist-info/RECORD,,
286
+ crypto_com_sdk-0.0.26.dist-info/METADATA,sha256=8tOPuVWBMRXUbra--F5gMLjCFCZw9c3RsLBOh7kZysc,14813
287
+ crypto_com_sdk-0.0.26.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
288
+ crypto_com_sdk-0.0.26.dist-info/RECORD,,
@@ -26,7 +26,7 @@ sys.modules['ccxt'] = ccxt_module
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
29
- __version__ = '4.4.75'
29
+ __version__ = '4.4.79'
30
30
 
31
31
  # ----------------------------------------------------------------------------
32
32
 
@@ -8,7 +8,7 @@ sys.modules['ccxt'] = ccxt_module
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
11
- __version__ = '4.4.75'
11
+ __version__ = '4.4.79'
12
12
 
13
13
  # -----------------------------------------------------------------------------
14
14
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.4.75'
5
+ __version__ = '4.4.79'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -154,7 +154,7 @@ class Exchange(BaseExchange):
154
154
  proxyUrl = self.check_proxy_url_settings(url, method, headers, body)
155
155
  if proxyUrl is not None:
156
156
  request_headers.update({'Origin': self.origin})
157
- url = proxyUrl + url
157
+ url = proxyUrl + self.url_encoder_for_proxy_url(url)
158
158
  # proxy agents
159
159
  final_proxy = None # set default
160
160
  proxy_session = None
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.cryptocom import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Account, Any, Balances, Currency, DepositAddress, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction
9
+ from ccxt.base.types import Account, Any, Balances, Currency, DepositAddress, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -2789,7 +2789,7 @@ class cryptocom(Exchange, ImplicitAPI):
2789
2789
  data = self.safe_list(result, 'data', [])
2790
2790
  return self.parse_position(self.safe_dict(data, 0), market)
2791
2791
 
2792
- async def fetch_positions(self, symbols: Strings = None, params={}):
2792
+ async def fetch_positions(self, symbols: Strings = None, params={}) -> List[Position]:
2793
2793
  """
2794
2794
  fetch all open positions
2795
2795
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.75'
7
+ __version__ = '4.4.79'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -67,6 +67,10 @@ from ccxt.static_dependencies.starknet.hash.address import compute_address
67
67
  from ccxt.static_dependencies.starknet.hash.selector import get_selector_from_name
68
68
  from ccxt.static_dependencies.starknet.hash.utils import message_signature, private_to_stark_key
69
69
  from ccxt.static_dependencies.starknet.utils.typed_data import TypedData as TypedDataDataclass
70
+ try:
71
+ import apexpro.zklink_sdk as zklink_sdk
72
+ except ImportError:
73
+ zklink_sdk = None
70
74
 
71
75
  # -----------------------------------------------------------------------------
72
76
 
@@ -509,7 +513,7 @@ class Exchange(object):
509
513
  proxyUrl = self.check_proxy_url_settings(url, method, headers, body)
510
514
  if proxyUrl is not None:
511
515
  request_headers.update({'Origin': self.origin})
512
- url = proxyUrl + url
516
+ url = proxyUrl + self.url_encoder_for_proxy_url(url)
513
517
  # proxy agents
514
518
  proxies = None # set default
515
519
  httpProxy, httpsProxy, socksProxy = self.check_proxy_settings(url, method, headers, body)
@@ -1755,6 +1759,69 @@ class Exchange(object):
1755
1759
  def binary_length(self, binary):
1756
1760
  return len(binary)
1757
1761
 
1762
+ def get_zk_contract_signature_obj(self, seeds: str, params={}):
1763
+ if zklink_sdk is None:
1764
+ raise Exception('zklink_sdk is not installed, please do pip3 install apexomni-arm or apexomni-x86-mac or apexomni-x86-windows-linux')
1765
+
1766
+ slotId = self.safe_string(params, 'slotId')
1767
+ nonceInt = int(self.remove0x_prefix(self.hash(self.encode(slotId), 'sha256', 'hex')), 16)
1768
+
1769
+ maxUint64 = 18446744073709551615
1770
+ maxUint32 = 4294967295
1771
+
1772
+ slotId = (nonceInt % maxUint64) / maxUint32
1773
+ nonce = nonceInt % maxUint32
1774
+ accountId = int(self.safe_string(params, 'accountId'), 10) % maxUint32
1775
+
1776
+ priceStr = (Decimal(self.safe_string(params, 'price')) * Decimal(10) ** Decimal('18')).quantize(Decimal(0), rounding='ROUND_DOWN')
1777
+ sizeStr = (Decimal(self.safe_string(params, 'size')) * Decimal(10) ** Decimal('18')).quantize(Decimal(0), rounding='ROUND_DOWN')
1778
+
1779
+ takerFeeRateStr = (Decimal(self.safe_string(params, 'takerFeeRate')) * Decimal(10000)).quantize(Decimal(0), rounding='ROUND_UP')
1780
+ makerFeeRateStr = (Decimal(self.safe_string(params, 'makerFeeRate')) * Decimal(10000)).quantize(Decimal(0), rounding='ROUND_UP')
1781
+
1782
+ builder = zklink_sdk.ContractBuilder(
1783
+ int(accountId), int(0), int(slotId), int(nonce), int(self.safe_number(params, 'pairId')),
1784
+ sizeStr.__str__(), priceStr.__str__(), self.safe_string(params, 'direction') == "BUY",
1785
+ int(takerFeeRateStr), int(makerFeeRateStr), False)
1786
+
1787
+
1788
+ tx = zklink_sdk.Contract(builder)
1789
+ seedsByte = bytes.fromhex(seeds.removeprefix('0x'))
1790
+ signerSeed = zklink_sdk.ZkLinkSigner().new_from_seed(seedsByte)
1791
+ auth_data = signerSeed.sign_musig(tx.get_bytes())
1792
+ signature = auth_data.signature
1793
+ return signature
1794
+
1795
+ def get_zk_transfer_signature_obj(self, seeds: str, params={}):
1796
+ if zklink_sdk is None:
1797
+ raise Exception('zklink_sdk is not installed, please do pip3 install apexomni-arm or apexomni-x86-mac or apexomni-x86-windows-linux')
1798
+
1799
+ nonce = self.safe_string(params, 'nonce', '0')
1800
+ if self.safe_bool(params, 'isContract'):
1801
+ formattedUint32 = '4294967295'
1802
+ formattedNonce = int(self.remove0x_prefix(self.hash(self.encode(nonce), 'sha256', 'hex')), 16)
1803
+ nonce = Precise.string_mod(str(formattedNonce), formattedUint32)
1804
+
1805
+ tx_builder = zklink_sdk.TransferBuilder(
1806
+ int(self.safe_number(params, 'zkAccountId', 0)),
1807
+ self.safe_string(params, 'receiverAddress'),
1808
+ int(self.safe_number(params, 'subAccountId', 0)),
1809
+ int(self.safe_number(params, 'receiverSubAccountId', 0)),
1810
+ int(self.safe_number(params, 'tokenId', 0)),
1811
+ self.safe_string(params, 'amount', '0'),
1812
+ self.safe_string(params, 'fee', '0'),
1813
+ self.parse_to_int(nonce),
1814
+ int(self.safe_number(params, 'timestampSeconds', 0))
1815
+ )
1816
+
1817
+ tx = zklink_sdk.Transfer(tx_builder)
1818
+ seedsByte = bytes.fromhex(seeds.removeprefix('0x'))
1819
+ signerSeed = zklink_sdk.ZkLinkSigner().new_from_seed(seedsByte)
1820
+ auth_data = signerSeed.sign_musig(tx.get_bytes())
1821
+ signature = auth_data.signature
1822
+ return signature
1823
+
1824
+
1758
1825
  # ########################################################################
1759
1826
  # ########################################################################
1760
1827
  # ########################################################################
@@ -2254,6 +2321,12 @@ class Exchange(object):
2254
2321
  raise InvalidProxySettings(self.id + ' you have multiple conflicting proxy settings(' + joinedProxyNames + '), please use only one from : proxyUrl, proxy_url, proxyUrlCallback, proxy_url_callback')
2255
2322
  return proxyUrl
2256
2323
 
2324
+ def url_encoder_for_proxy_url(self, targetUrl: str):
2325
+ # to be overriden
2326
+ includesQuery = targetUrl.find('?') >= 0
2327
+ finalUrl = self.encode_uri_component(targetUrl) if includesQuery else targetUrl
2328
+ return finalUrl
2329
+
2257
2330
  def check_proxy_settings(self, url: Str = None, method: Str = None, headers=None, body=None):
2258
2331
  usedProxies = []
2259
2332
  httpProxy = None
@@ -2947,7 +3020,7 @@ class Exchange(object):
2947
3020
  # find lowest precision(which is more desired)
2948
3021
  precision = self.safe_string(network, 'precision')
2949
3022
  precisionMain = self.safe_string(currency, 'precision')
2950
- if precisionMain is None or Precise.string_lt(precision, precisionMain):
3023
+ if precisionMain is None or Precise.string_gt(precision, precisionMain):
2951
3024
  currency['precision'] = self.parse_number(precision)
2952
3025
  # limits
2953
3026
  limits = self.safe_dict(network, 'limits')
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.cryptocom import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Account, Any, Balances, Currency, DepositAddress, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction
9
+ from ccxt.base.types import Account, Any, Balances, Currency, DepositAddress, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -2789,7 +2789,7 @@ class cryptocom(Exchange, ImplicitAPI):
2789
2789
  data = self.safe_list(result, 'data', [])
2790
2790
  return self.parse_position(self.safe_dict(data, 0), market)
2791
2791
 
2792
- def fetch_positions(self, symbols: Strings = None, params={}):
2792
+ def fetch_positions(self, symbols: Strings = None, params={}) -> List[Position]:
2793
2793
  """
2794
2794
  fetch all open positions
2795
2795
 
@@ -8,7 +8,7 @@ sys.modules['ccxt'] = ccxt_module
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
11
- __version__ = '4.4.75'
11
+ __version__ = '4.4.79'
12
12
 
13
13
  # ----------------------------------------------------------------------------
14
14