kucoin-api 0.0.28__py3-none-any.whl → 0.0.29__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.
- kucoin/ccxt/__init__.py +1 -1
- kucoin/ccxt/async_support/__init__.py +1 -1
- kucoin/ccxt/async_support/base/exchange.py +2 -2
- kucoin/ccxt/base/exchange.py +76 -3
- kucoin/ccxt/pro/__init__.py +1 -1
- {kucoin_api-0.0.28.dist-info → kucoin_api-0.0.29.dist-info}/METADATA +1 -1
- {kucoin_api-0.0.28.dist-info → kucoin_api-0.0.29.dist-info}/RECORD +8 -8
- {kucoin_api-0.0.28.dist-info → kucoin_api-0.0.29.dist-info}/WHEEL +0 -0
kucoin/ccxt/__init__.py
CHANGED
@@ -26,7 +26,7 @@ sys.modules['ccxt'] = ccxt_module
|
|
26
26
|
|
27
27
|
# ----------------------------------------------------------------------------
|
28
28
|
|
29
|
-
__version__ = '4.4.
|
29
|
+
__version__ = '4.4.78'
|
30
30
|
|
31
31
|
# ----------------------------------------------------------------------------
|
32
32
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# -----------------------------------------------------------------------------
|
4
4
|
|
5
|
-
__version__ = '4.4.
|
5
|
+
__version__ = '4.4.78'
|
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
|
kucoin/ccxt/base/exchange.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.4.
|
7
|
+
__version__ = '4.4.78'
|
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.
|
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')
|
kucoin/ccxt/pro/__init__.py
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
kucoin/__init__.py,sha256=J1NNMLktlkCZKV82j8CFTVES3O3TCVk3so0ROi4E52o,246
|
2
|
-
kucoin/ccxt/__init__.py,sha256=
|
2
|
+
kucoin/ccxt/__init__.py,sha256=fsPu_LMA3jEoAVB5ivQvDbNpmaBexBo9nIbDXxbS2Ls,6048
|
3
3
|
kucoin/ccxt/kucoin.py,sha256=OycntB0gK0mI4ZfDDMmHip8n2S-AxgKX2jG9XjFeJ5A,232381
|
4
4
|
kucoin/ccxt/abstract/kucoin.py,sha256=kVrVEXiigc36arfbSS8lDUMnG7uFdKgUKHIhVb0Am_8,28626
|
5
|
-
kucoin/ccxt/async_support/__init__.py,sha256=
|
5
|
+
kucoin/ccxt/async_support/__init__.py,sha256=uhpszv7pacuj6ej5RtsLLTNWBdOOqI9-Cfku4be3Gmk,4781
|
6
6
|
kucoin/ccxt/async_support/kucoin.py,sha256=kUz1hYpOU364piOa-psqtxTm11f6KlXS0HErk9_J-xk,233531
|
7
7
|
kucoin/ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
8
|
-
kucoin/ccxt/async_support/base/exchange.py,sha256=
|
8
|
+
kucoin/ccxt/async_support/base/exchange.py,sha256=AOQnGV5CUYT2fOCko3E6JqYxa_s8_QxHDdBxbqUUOgU,117255
|
9
9
|
kucoin/ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
10
10
|
kucoin/ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
11
11
|
kucoin/ccxt/async_support/base/ws/aiohttp_client.py,sha256=Y5HxAVXyyYduj6b6SbbUZETlq3GrVMzrkW1r-TMgpb8,6329
|
@@ -19,10 +19,10 @@ kucoin/ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9pr
|
|
19
19
|
kucoin/ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
20
20
|
kucoin/ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
21
21
|
kucoin/ccxt/base/errors.py,sha256=MvCrL_sAM3de616T6RE0PSxiF2xV6Qqz5b1y1ghidbk,4888
|
22
|
-
kucoin/ccxt/base/exchange.py,sha256=
|
22
|
+
kucoin/ccxt/base/exchange.py,sha256=R0StVeXIxmXvA73by-Gqx70tT7wbJMNuenrVXgoe0Dk,326255
|
23
23
|
kucoin/ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
|
24
24
|
kucoin/ccxt/base/types.py,sha256=SfxIKDSsxP7MPHWiOVI965Nr5NSEPpAno5fuveTRi3w,11423
|
25
|
-
kucoin/ccxt/pro/__init__.py,sha256=
|
25
|
+
kucoin/ccxt/pro/__init__.py,sha256=ghHTXNyQCKzRnz9WrmN1PEF7d0V7u88F-o6Ebac4TR8,619
|
26
26
|
kucoin/ccxt/pro/kucoin.py,sha256=598XsFeIFOOAOlY2fuEenBT-pPFjoOKiqPP8lP7dzD4,60794
|
27
27
|
kucoin/ccxt/static_dependencies/README.md,sha256=3TCvhhn09_Cqf9BDDpao1V7EfKHDpQ6k9oWRsLFixpU,18
|
28
28
|
kucoin/ccxt/static_dependencies/__init__.py,sha256=tzFje8cloqmiIE6kola3EaYC0SnD1izWnri69hzHsSw,168
|
@@ -283,6 +283,6 @@ kucoin/ccxt/static_dependencies/toolz/curried/exceptions.py,sha256=gKFOHDIayAWnX
|
|
283
283
|
kucoin/ccxt/static_dependencies/toolz/curried/operator.py,sha256=ML92mknkAwzBl2NCm-4werSUmJEtSHNY9NSzhseNM9s,525
|
284
284
|
kucoin/ccxt/static_dependencies/typing_inspect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
285
285
|
kucoin/ccxt/static_dependencies/typing_inspect/typing_inspect.py,sha256=5gIWomLPfuDpgd3gX1GlnX0MuXM3VorR4j2W2qXORiQ,28269
|
286
|
-
kucoin_api-0.0.
|
287
|
-
kucoin_api-0.0.
|
288
|
-
kucoin_api-0.0.
|
286
|
+
kucoin_api-0.0.29.dist-info/METADATA,sha256=8x_zf-MZXS1nAbgWPHD-uZ_etJrNufw41jfW0zaJdeg,18571
|
287
|
+
kucoin_api-0.0.29.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
288
|
+
kucoin_api-0.0.29.dist-info/RECORD,,
|
File without changes
|