ccxt 4.2.76__py2.py3-none-any.whl → 4.4.48__py2.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.
- ccxt/__init__.py +36 -14
- ccxt/abstract/alpaca.py +4 -0
- ccxt/abstract/bigone.py +1 -1
- ccxt/abstract/binance.py +112 -48
- ccxt/abstract/binancecoinm.py +112 -48
- ccxt/abstract/binanceus.py +147 -83
- ccxt/abstract/binanceusdm.py +112 -48
- ccxt/abstract/bingx.py +133 -78
- ccxt/abstract/bitbank.py +5 -0
- ccxt/abstract/bitfinex.py +136 -65
- ccxt/abstract/bitfinex1.py +69 -0
- ccxt/abstract/bitflyer.py +1 -0
- ccxt/abstract/bitget.py +8 -1
- ccxt/abstract/bitmart.py +13 -1
- ccxt/abstract/bitopro.py +1 -0
- ccxt/abstract/bitpanda.py +0 -12
- ccxt/abstract/bitrue.py +3 -3
- ccxt/abstract/bitstamp.py +26 -3
- ccxt/abstract/blofin.py +24 -0
- ccxt/abstract/btcbox.py +1 -0
- ccxt/abstract/bybit.py +29 -14
- ccxt/abstract/cex.py +28 -29
- ccxt/abstract/coinbase.py +6 -0
- ccxt/abstract/coinbaseadvanced.py +94 -0
- ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
- ccxt/abstract/coinbaseinternational.py +1 -1
- ccxt/abstract/coincatch.py +94 -0
- ccxt/abstract/coinex.py +233 -123
- ccxt/abstract/coinmetro.py +1 -0
- ccxt/abstract/cryptocom.py +14 -0
- ccxt/abstract/defx.py +69 -0
- ccxt/abstract/deribit.py +1 -0
- ccxt/abstract/digifinex.py +1 -0
- ccxt/abstract/ellipx.py +25 -0
- ccxt/abstract/gate.py +20 -0
- ccxt/abstract/gateio.py +20 -0
- ccxt/abstract/gemini.py +1 -0
- ccxt/abstract/hashkey.py +67 -0
- ccxt/abstract/hyperliquid.py +1 -1
- ccxt/abstract/independentreserve.py +6 -0
- ccxt/abstract/kraken.py +4 -3
- ccxt/abstract/krakenfutures.py +4 -0
- ccxt/abstract/kucoin.py +25 -0
- ccxt/abstract/kucoinfutures.py +35 -0
- ccxt/abstract/luno.py +2 -0
- ccxt/abstract/mexc.py +4 -0
- ccxt/abstract/myokx.py +340 -0
- ccxt/abstract/oceanex.py +5 -0
- ccxt/abstract/okx.py +30 -0
- ccxt/abstract/onetrading.py +0 -12
- ccxt/abstract/oxfun.py +34 -0
- ccxt/abstract/paradex.py +40 -0
- ccxt/abstract/phemex.py +1 -0
- ccxt/abstract/upbit.py +4 -0
- ccxt/abstract/vertex.py +19 -0
- ccxt/abstract/whitebit.py +31 -1
- ccxt/abstract/woo.py +6 -2
- ccxt/abstract/woofipro.py +119 -0
- ccxt/abstract/xt.py +153 -0
- ccxt/abstract/zonda.py +6 -0
- ccxt/ace.py +164 -60
- ccxt/alpaca.py +727 -63
- ccxt/ascendex.py +395 -249
- ccxt/async_support/__init__.py +36 -14
- ccxt/async_support/ace.py +164 -60
- ccxt/async_support/alpaca.py +727 -63
- ccxt/async_support/ascendex.py +396 -249
- ccxt/async_support/base/exchange.py +531 -155
- ccxt/async_support/base/ws/aiohttp_client.py +28 -5
- ccxt/async_support/base/ws/cache.py +3 -2
- ccxt/async_support/base/ws/client.py +26 -5
- ccxt/async_support/base/ws/fast_client.py +4 -3
- ccxt/async_support/base/ws/functions.py +1 -1
- ccxt/async_support/base/ws/future.py +40 -31
- ccxt/async_support/base/ws/order_book_side.py +3 -0
- ccxt/async_support/bequant.py +1 -1
- ccxt/async_support/bigone.py +329 -202
- ccxt/async_support/binance.py +3513 -1511
- ccxt/async_support/binancecoinm.py +2 -1
- ccxt/async_support/binanceus.py +12 -1
- ccxt/async_support/binanceusdm.py +3 -1
- ccxt/async_support/bingx.py +3105 -881
- ccxt/async_support/bit2c.py +119 -38
- ccxt/async_support/bitbank.py +215 -76
- ccxt/async_support/bitbns.py +124 -53
- ccxt/async_support/bitfinex.py +3236 -1078
- ccxt/async_support/bitfinex1.py +1711 -0
- ccxt/async_support/bitflyer.py +239 -50
- ccxt/async_support/bitget.py +1513 -563
- ccxt/async_support/bithumb.py +201 -67
- ccxt/async_support/bitmart.py +1320 -435
- ccxt/async_support/bitmex.py +308 -111
- ccxt/async_support/bitopro.py +256 -96
- ccxt/async_support/bitrue.py +365 -233
- ccxt/async_support/bitso.py +201 -89
- ccxt/async_support/bitstamp.py +438 -269
- ccxt/async_support/bitteam.py +179 -73
- ccxt/async_support/bitvavo.py +180 -70
- ccxt/async_support/bl3p.py +92 -25
- ccxt/async_support/blockchaincom.py +193 -79
- ccxt/async_support/blofin.py +403 -150
- ccxt/async_support/btcalpha.py +161 -55
- ccxt/async_support/btcbox.py +250 -34
- ccxt/async_support/btcmarkets.py +232 -85
- ccxt/async_support/btcturk.py +159 -60
- ccxt/async_support/bybit.py +2326 -1255
- ccxt/async_support/cex.py +1409 -1329
- ccxt/async_support/coinbase.py +1455 -288
- ccxt/async_support/coinbaseadvanced.py +17 -0
- ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/async_support/coinbaseinternational.py +428 -88
- ccxt/async_support/coincatch.py +5152 -0
- ccxt/async_support/coincheck.py +121 -38
- ccxt/async_support/coinex.py +4020 -3339
- ccxt/async_support/coinlist.py +273 -116
- ccxt/async_support/coinmate.py +204 -97
- ccxt/async_support/coinmetro.py +203 -110
- ccxt/async_support/coinone.py +142 -68
- ccxt/async_support/coinsph.py +206 -89
- ccxt/async_support/coinspot.py +137 -62
- ccxt/async_support/cryptocom.py +515 -185
- ccxt/async_support/currencycom.py +203 -85
- ccxt/async_support/defx.py +2066 -0
- ccxt/async_support/delta.py +467 -158
- ccxt/async_support/deribit.py +558 -324
- ccxt/async_support/digifinex.py +340 -223
- ccxt/async_support/ellipx.py +1826 -0
- ccxt/async_support/exmo.py +259 -128
- ccxt/async_support/gate.py +1473 -464
- ccxt/async_support/gemini.py +206 -84
- ccxt/async_support/hashkey.py +4164 -0
- ccxt/async_support/hitbtc.py +334 -178
- ccxt/async_support/hollaex.py +134 -83
- ccxt/async_support/htx.py +1095 -563
- ccxt/async_support/huobijp.py +105 -56
- ccxt/async_support/hyperliquid.py +1634 -269
- ccxt/async_support/idex.py +148 -95
- ccxt/async_support/independentreserve.py +236 -31
- ccxt/async_support/indodax.py +165 -62
- ccxt/async_support/kraken.py +871 -354
- ccxt/async_support/krakenfutures.py +324 -100
- ccxt/async_support/kucoin.py +1050 -355
- ccxt/async_support/kucoinfutures.py +1004 -149
- ccxt/async_support/kuna.py +138 -106
- ccxt/async_support/latoken.py +135 -79
- ccxt/async_support/lbank.py +290 -113
- ccxt/async_support/luno.py +112 -62
- ccxt/async_support/lykke.py +104 -55
- ccxt/async_support/mercado.py +36 -29
- ccxt/async_support/mexc.py +995 -429
- ccxt/async_support/myokx.py +43 -0
- ccxt/async_support/ndax.py +163 -82
- ccxt/async_support/novadax.py +121 -75
- ccxt/async_support/oceanex.py +175 -59
- ccxt/async_support/okcoin.py +222 -163
- ccxt/async_support/okx.py +1777 -455
- ccxt/async_support/onetrading.py +132 -414
- ccxt/async_support/oxfun.py +2832 -0
- ccxt/async_support/p2b.py +79 -51
- ccxt/async_support/paradex.py +2017 -0
- ccxt/async_support/paymium.py +56 -32
- ccxt/async_support/phemex.py +572 -196
- ccxt/async_support/poloniex.py +218 -95
- ccxt/async_support/poloniexfutures.py +260 -92
- ccxt/async_support/probit.py +143 -110
- ccxt/async_support/timex.py +123 -70
- ccxt/async_support/tokocrypto.py +129 -93
- ccxt/async_support/tradeogre.py +39 -25
- ccxt/async_support/upbit.py +322 -113
- ccxt/async_support/vertex.py +2983 -0
- ccxt/async_support/wavesexchange.py +227 -173
- ccxt/async_support/wazirx.py +145 -65
- ccxt/async_support/whitebit.py +533 -138
- ccxt/async_support/woo.py +1155 -295
- ccxt/async_support/woofipro.py +2716 -0
- ccxt/async_support/xt.py +4628 -0
- ccxt/async_support/yobit.py +160 -92
- ccxt/async_support/zaif.py +80 -33
- ccxt/async_support/zonda.py +140 -69
- ccxt/base/errors.py +51 -20
- ccxt/base/exchange.py +1729 -482
- ccxt/base/precise.py +10 -0
- ccxt/base/types.py +223 -4
- ccxt/bequant.py +1 -1
- ccxt/bigone.py +329 -202
- ccxt/binance.py +3513 -1511
- ccxt/binancecoinm.py +2 -1
- ccxt/binanceus.py +12 -1
- ccxt/binanceusdm.py +3 -1
- ccxt/bingx.py +3105 -881
- ccxt/bit2c.py +119 -38
- ccxt/bitbank.py +215 -76
- ccxt/bitbns.py +124 -53
- ccxt/bitfinex.py +3235 -1078
- ccxt/bitfinex1.py +1710 -0
- ccxt/bitflyer.py +239 -50
- ccxt/bitget.py +1513 -563
- ccxt/bithumb.py +200 -67
- ccxt/bitmart.py +1320 -435
- ccxt/bitmex.py +308 -111
- ccxt/bitopro.py +256 -96
- ccxt/bitrue.py +365 -233
- ccxt/bitso.py +201 -89
- ccxt/bitstamp.py +438 -269
- ccxt/bitteam.py +179 -73
- ccxt/bitvavo.py +180 -70
- ccxt/bl3p.py +92 -25
- ccxt/blockchaincom.py +193 -79
- ccxt/blofin.py +403 -150
- ccxt/btcalpha.py +161 -55
- ccxt/btcbox.py +250 -34
- ccxt/btcmarkets.py +232 -85
- ccxt/btcturk.py +159 -60
- ccxt/bybit.py +2326 -1255
- ccxt/cex.py +1408 -1329
- ccxt/coinbase.py +1455 -288
- ccxt/coinbaseadvanced.py +17 -0
- ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/coinbaseinternational.py +428 -88
- ccxt/coincatch.py +5152 -0
- ccxt/coincheck.py +121 -38
- ccxt/coinex.py +4020 -3339
- ccxt/coinlist.py +273 -116
- ccxt/coinmate.py +204 -97
- ccxt/coinmetro.py +203 -110
- ccxt/coinone.py +142 -68
- ccxt/coinsph.py +206 -89
- ccxt/coinspot.py +137 -62
- ccxt/cryptocom.py +515 -185
- ccxt/currencycom.py +203 -85
- ccxt/defx.py +2065 -0
- ccxt/delta.py +467 -158
- ccxt/deribit.py +558 -324
- ccxt/digifinex.py +340 -223
- ccxt/ellipx.py +1826 -0
- ccxt/exmo.py +259 -128
- ccxt/gate.py +1473 -464
- ccxt/gemini.py +206 -84
- ccxt/hashkey.py +4164 -0
- ccxt/hitbtc.py +334 -178
- ccxt/hollaex.py +134 -83
- ccxt/htx.py +1095 -563
- ccxt/huobijp.py +105 -56
- ccxt/hyperliquid.py +1633 -269
- ccxt/idex.py +148 -95
- ccxt/independentreserve.py +235 -31
- ccxt/indodax.py +165 -62
- ccxt/kraken.py +871 -354
- ccxt/krakenfutures.py +324 -100
- ccxt/kucoin.py +1050 -355
- ccxt/kucoinfutures.py +1004 -149
- ccxt/kuna.py +138 -106
- ccxt/latoken.py +135 -79
- ccxt/lbank.py +290 -113
- ccxt/luno.py +112 -62
- ccxt/lykke.py +104 -55
- ccxt/mercado.py +36 -29
- ccxt/mexc.py +994 -429
- ccxt/myokx.py +43 -0
- ccxt/ndax.py +163 -82
- ccxt/novadax.py +121 -75
- ccxt/oceanex.py +175 -59
- ccxt/okcoin.py +222 -163
- ccxt/okx.py +1777 -455
- ccxt/onetrading.py +132 -414
- ccxt/oxfun.py +2831 -0
- ccxt/p2b.py +79 -51
- ccxt/paradex.py +2017 -0
- ccxt/paymium.py +56 -32
- ccxt/phemex.py +572 -196
- ccxt/poloniex.py +218 -95
- ccxt/poloniexfutures.py +260 -92
- ccxt/pro/__init__.py +29 -5
- ccxt/pro/alpaca.py +32 -17
- ccxt/pro/ascendex.py +63 -15
- ccxt/pro/bequant.py +4 -0
- ccxt/pro/binance.py +1596 -329
- ccxt/pro/binancecoinm.py +1 -0
- ccxt/pro/binanceus.py +2 -9
- ccxt/pro/binanceusdm.py +2 -0
- ccxt/pro/bingx.py +527 -134
- ccxt/pro/bitcoincom.py +4 -1
- ccxt/pro/bitfinex.py +731 -266
- ccxt/pro/bitfinex1.py +635 -0
- ccxt/pro/bitget.py +726 -357
- ccxt/pro/bithumb.py +380 -0
- ccxt/pro/bitmart.py +138 -39
- ccxt/pro/bitmex.py +199 -40
- ccxt/pro/bitopro.py +25 -13
- ccxt/pro/bitrue.py +31 -32
- ccxt/pro/bitstamp.py +7 -6
- ccxt/pro/bitvavo.py +204 -82
- ccxt/pro/blockchaincom.py +30 -17
- ccxt/pro/blofin.py +692 -0
- ccxt/pro/bybit.py +791 -82
- ccxt/pro/cex.py +99 -51
- ccxt/pro/coinbase.py +220 -30
- ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
- ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
- ccxt/pro/coinbaseinternational.py +193 -30
- ccxt/pro/coincatch.py +1464 -0
- ccxt/pro/coincheck.py +11 -6
- ccxt/pro/coinex.py +967 -661
- ccxt/pro/coinone.py +17 -10
- ccxt/pro/cryptocom.py +446 -66
- ccxt/pro/currencycom.py +11 -10
- ccxt/pro/defx.py +832 -0
- ccxt/pro/deribit.py +168 -32
- ccxt/pro/exmo.py +253 -21
- ccxt/pro/gate.py +729 -64
- ccxt/pro/gemini.py +44 -26
- ccxt/pro/hashkey.py +802 -0
- ccxt/pro/hitbtc.py +208 -103
- ccxt/pro/hollaex.py +25 -9
- ccxt/pro/htx.py +83 -39
- ccxt/pro/huobijp.py +17 -16
- ccxt/pro/hyperliquid.py +502 -31
- ccxt/pro/idex.py +28 -13
- ccxt/pro/independentreserve.py +21 -16
- ccxt/pro/kraken.py +298 -51
- ccxt/pro/krakenfutures.py +166 -75
- ccxt/pro/kucoin.py +395 -77
- ccxt/pro/kucoinfutures.py +400 -99
- ccxt/pro/lbank.py +52 -31
- ccxt/pro/luno.py +12 -10
- ccxt/pro/mexc.py +400 -50
- ccxt/pro/myokx.py +28 -0
- ccxt/pro/ndax.py +25 -12
- ccxt/pro/okcoin.py +28 -9
- ccxt/pro/okx.py +935 -124
- ccxt/pro/onetrading.py +41 -24
- ccxt/pro/oxfun.py +1054 -0
- ccxt/pro/p2b.py +100 -24
- ccxt/pro/paradex.py +352 -0
- ccxt/pro/phemex.py +93 -34
- ccxt/pro/poloniex.py +129 -50
- ccxt/pro/poloniexfutures.py +53 -32
- ccxt/pro/probit.py +93 -86
- ccxt/pro/upbit.py +401 -8
- ccxt/pro/vertex.py +943 -0
- ccxt/pro/wazirx.py +46 -28
- ccxt/pro/whitebit.py +65 -12
- ccxt/pro/woo.py +486 -70
- ccxt/pro/woofipro.py +1271 -0
- ccxt/pro/xt.py +1067 -0
- ccxt/probit.py +143 -110
- ccxt/static_dependencies/__init__.py +1 -1
- ccxt/static_dependencies/lark/__init__.py +38 -0
- ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
- ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
- ccxt/static_dependencies/lark/ast_utils.py +59 -0
- ccxt/static_dependencies/lark/common.py +86 -0
- ccxt/static_dependencies/lark/exceptions.py +292 -0
- ccxt/static_dependencies/lark/grammar.py +130 -0
- ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
- ccxt/static_dependencies/lark/indenter.py +143 -0
- ccxt/static_dependencies/lark/lark.py +658 -0
- ccxt/static_dependencies/lark/lexer.py +678 -0
- ccxt/static_dependencies/lark/load_grammar.py +1428 -0
- ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
- ccxt/static_dependencies/lark/parser_frontends.py +257 -0
- ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
- ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
- ccxt/static_dependencies/lark/parsers/earley.py +314 -0
- ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
- ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
- ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
- ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
- ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
- ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
- ccxt/static_dependencies/lark/py.typed +0 -0
- ccxt/static_dependencies/lark/reconstruct.py +107 -0
- ccxt/static_dependencies/lark/tools/__init__.py +70 -0
- ccxt/static_dependencies/lark/tools/nearley.py +202 -0
- ccxt/static_dependencies/lark/tools/serialize.py +32 -0
- ccxt/static_dependencies/lark/tools/standalone.py +196 -0
- ccxt/static_dependencies/lark/tree.py +267 -0
- ccxt/static_dependencies/lark/tree_matcher.py +186 -0
- ccxt/static_dependencies/lark/tree_templates.py +180 -0
- ccxt/static_dependencies/lark/utils.py +343 -0
- ccxt/static_dependencies/lark/visitors.py +596 -0
- ccxt/static_dependencies/marshmallow/__init__.py +81 -0
- ccxt/static_dependencies/marshmallow/base.py +65 -0
- ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
- ccxt/static_dependencies/marshmallow/decorators.py +231 -0
- ccxt/static_dependencies/marshmallow/error_store.py +60 -0
- ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
- ccxt/static_dependencies/marshmallow/fields.py +2114 -0
- ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
- ccxt/static_dependencies/marshmallow/py.typed +0 -0
- ccxt/static_dependencies/marshmallow/schema.py +1228 -0
- ccxt/static_dependencies/marshmallow/types.py +12 -0
- ccxt/static_dependencies/marshmallow/utils.py +378 -0
- ccxt/static_dependencies/marshmallow/validate.py +678 -0
- ccxt/static_dependencies/marshmallow/warnings.py +2 -0
- ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
- ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
- ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
- ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
- ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
- ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
- ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
- ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
- ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- ccxt/static_dependencies/starknet/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
- ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
- ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
- ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
- ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
- ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
- ccxt/static_dependencies/starknet/common.py +15 -0
- ccxt/static_dependencies/starknet/constants.py +39 -0
- ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
- ccxt/static_dependencies/starknet/hash/address.py +79 -0
- ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
- ccxt/static_dependencies/starknet/hash/selector.py +16 -0
- ccxt/static_dependencies/starknet/hash/storage.py +12 -0
- ccxt/static_dependencies/starknet/hash/utils.py +78 -0
- ccxt/static_dependencies/starknet/models/__init__.py +0 -0
- ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
- ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
- ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
- ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
- ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
- ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
- ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
- ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
- ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
- ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
- ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
- ccxt/static_dependencies/starknet/utils/schema.py +13 -0
- ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
- ccxt/static_dependencies/starkware/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
- ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
- ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
- ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
- ccxt/static_dependencies/sympy/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
- ccxt/static_dependencies/sympy/external/__init__.py +0 -0
- ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
- ccxt/static_dependencies/sympy/external/importtools.py +187 -0
- ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
- ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
- ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
- ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
- ccxt/test/{test_async.py → tests_async.py} +465 -407
- ccxt/test/tests_helpers.py +285 -0
- ccxt/test/tests_init.py +39 -0
- ccxt/test/{test_sync.py → tests_sync.py} +465 -409
- ccxt/timex.py +123 -70
- ccxt/tokocrypto.py +129 -93
- ccxt/tradeogre.py +39 -25
- ccxt/upbit.py +322 -113
- ccxt/vertex.py +2983 -0
- ccxt/wavesexchange.py +227 -173
- ccxt/wazirx.py +145 -65
- ccxt/whitebit.py +533 -138
- ccxt/woo.py +1155 -295
- ccxt/woofipro.py +2716 -0
- ccxt/xt.py +4627 -0
- ccxt/yobit.py +159 -92
- ccxt/zaif.py +80 -33
- ccxt/zonda.py +140 -69
- ccxt-4.4.48.dist-info/LICENSE.txt +21 -0
- ccxt-4.4.48.dist-info/METADATA +646 -0
- ccxt-4.4.48.dist-info/RECORD +669 -0
- {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/WHEEL +1 -1
- ccxt/abstract/bitbay.py +0 -47
- ccxt/abstract/bitfinex2.py +0 -139
- ccxt/abstract/hitbtc3.py +0 -115
- ccxt/async_support/bitbay.py +0 -17
- ccxt/async_support/bitfinex2.py +0 -3496
- ccxt/async_support/flowbtc.py +0 -34
- ccxt/bitbay.py +0 -17
- ccxt/bitfinex2.py +0 -3496
- ccxt/flowbtc.py +0 -34
- ccxt/hitbtc3.py +0 -16
- ccxt/pro/bitfinex2.py +0 -1081
- ccxt/test/base/__init__.py +0 -28
- ccxt/test/base/test_account.py +0 -26
- ccxt/test/base/test_balance.py +0 -56
- ccxt/test/base/test_borrow_interest.py +0 -35
- ccxt/test/base/test_borrow_rate.py +0 -32
- ccxt/test/base/test_calculate_fee.py +0 -51
- ccxt/test/base/test_crypto.py +0 -127
- ccxt/test/base/test_currency.py +0 -76
- ccxt/test/base/test_datetime.py +0 -103
- ccxt/test/base/test_decimal_to_precision.py +0 -392
- ccxt/test/base/test_deep_extend.py +0 -68
- ccxt/test/base/test_deposit_withdrawal.py +0 -50
- ccxt/test/base/test_exchange_datetime_functions.py +0 -76
- ccxt/test/base/test_funding_rate_history.py +0 -29
- ccxt/test/base/test_last_price.py +0 -32
- ccxt/test/base/test_ledger_entry.py +0 -45
- ccxt/test/base/test_ledger_item.py +0 -48
- ccxt/test/base/test_leverage_tier.py +0 -33
- ccxt/test/base/test_margin_mode.py +0 -24
- ccxt/test/base/test_margin_modification.py +0 -35
- ccxt/test/base/test_market.py +0 -190
- ccxt/test/base/test_number.py +0 -411
- ccxt/test/base/test_ohlcv.py +0 -32
- ccxt/test/base/test_open_interest.py +0 -32
- ccxt/test/base/test_order.py +0 -64
- ccxt/test/base/test_order_book.py +0 -63
- ccxt/test/base/test_position.py +0 -60
- ccxt/test/base/test_shared_methods.py +0 -345
- ccxt/test/base/test_status.py +0 -24
- ccxt/test/base/test_throttle.py +0 -126
- ccxt/test/base/test_ticker.py +0 -86
- ccxt/test/base/test_trade.py +0 -47
- ccxt/test/base/test_trading_fee.py +0 -26
- ccxt/test/base/test_transaction.py +0 -39
- ccxt-4.2.76.dist-info/METADATA +0 -626
- ccxt-4.2.76.dist-info/RECORD +0 -534
- {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
ccxt/async_support/latoken.py
CHANGED
@@ -6,9 +6,10 @@
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.latoken import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
|
+
from ccxt.base.errors import AuthenticationError
|
12
13
|
from ccxt.base.errors import PermissionDenied
|
13
14
|
from ccxt.base.errors import AccountSuspended
|
14
15
|
from ccxt.base.errors import ArgumentsRequired
|
@@ -20,7 +21,6 @@ from ccxt.base.errors import NotSupported
|
|
20
21
|
from ccxt.base.errors import RateLimitExceeded
|
21
22
|
from ccxt.base.errors import ExchangeNotAvailable
|
22
23
|
from ccxt.base.errors import InvalidNonce
|
23
|
-
from ccxt.base.errors import AuthenticationError
|
24
24
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
25
25
|
|
26
26
|
|
@@ -60,6 +60,12 @@ class latoken(Exchange, ImplicitAPI):
|
|
60
60
|
'fetchDepositAddressesByNetwork': False,
|
61
61
|
'fetchDepositsWithdrawals': True,
|
62
62
|
'fetchDepositWithdrawFees': False,
|
63
|
+
'fetchFundingHistory': False,
|
64
|
+
'fetchFundingInterval': False,
|
65
|
+
'fetchFundingIntervals': False,
|
66
|
+
'fetchFundingRate': False,
|
67
|
+
'fetchFundingRateHistory': False,
|
68
|
+
'fetchFundingRates': False,
|
63
69
|
'fetchIsolatedBorrowRate': False,
|
64
70
|
'fetchIsolatedBorrowRates': False,
|
65
71
|
'fetchMarginMode': False,
|
@@ -69,7 +75,13 @@ class latoken(Exchange, ImplicitAPI):
|
|
69
75
|
'fetchOrder': True,
|
70
76
|
'fetchOrderBook': True,
|
71
77
|
'fetchOrders': True,
|
78
|
+
'fetchPosition': False,
|
79
|
+
'fetchPositionHistory': False,
|
72
80
|
'fetchPositionMode': False,
|
81
|
+
'fetchPositions': False,
|
82
|
+
'fetchPositionsForSymbol': False,
|
83
|
+
'fetchPositionsHistory': False,
|
84
|
+
'fetchPositionsRisk': False,
|
73
85
|
'fetchTicker': True,
|
74
86
|
'fetchTickers': True,
|
75
87
|
'fetchTime': True,
|
@@ -244,7 +256,9 @@ class latoken(Exchange, ImplicitAPI):
|
|
244
256
|
async def fetch_time(self, params={}):
|
245
257
|
"""
|
246
258
|
fetches the current integer timestamp in milliseconds from the exchange server
|
247
|
-
|
259
|
+
|
260
|
+
https://api.latoken.com/doc/v2/#tag/Time/operation/currentTime
|
261
|
+
|
248
262
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
249
263
|
:returns int: the current integer timestamp in milliseconds from the exchange server
|
250
264
|
"""
|
@@ -256,10 +270,12 @@ class latoken(Exchange, ImplicitAPI):
|
|
256
270
|
#
|
257
271
|
return self.safe_integer(response, 'serverTime')
|
258
272
|
|
259
|
-
async def fetch_markets(self, params={}):
|
273
|
+
async def fetch_markets(self, params={}) -> List[Market]:
|
260
274
|
"""
|
261
275
|
retrieves data on all markets for latoken
|
262
|
-
|
276
|
+
|
277
|
+
https://api.latoken.com/doc/v2/#tag/Pair/operation/getActivePairs
|
278
|
+
|
263
279
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
264
280
|
:returns dict[]: an array of objects representing market data
|
265
281
|
"""
|
@@ -401,7 +417,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
401
417
|
})
|
402
418
|
return self.safe_value(self.options['fetchCurrencies'], 'response')
|
403
419
|
|
404
|
-
async def fetch_currencies(self, params={}):
|
420
|
+
async def fetch_currencies(self, params={}) -> Currencies:
|
405
421
|
"""
|
406
422
|
fetches all available currencies on an exchange
|
407
423
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -440,7 +456,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
440
456
|
# },
|
441
457
|
# ]
|
442
458
|
#
|
443
|
-
result = {}
|
459
|
+
result: dict = {}
|
444
460
|
for i in range(0, len(response)):
|
445
461
|
currency = response[i]
|
446
462
|
id = self.safe_string(currency, 'id')
|
@@ -485,7 +501,9 @@ class latoken(Exchange, ImplicitAPI):
|
|
485
501
|
async def fetch_balance(self, params={}) -> Balances:
|
486
502
|
"""
|
487
503
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
488
|
-
|
504
|
+
|
505
|
+
https://api.latoken.com/doc/v2/#tag/Account/operation/getBalancesByUser
|
506
|
+
|
489
507
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
490
508
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
491
509
|
"""
|
@@ -513,7 +531,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
513
531
|
# }
|
514
532
|
# ]
|
515
533
|
#
|
516
|
-
result = {
|
534
|
+
result: dict = {
|
517
535
|
'info': response,
|
518
536
|
'timestamp': None,
|
519
537
|
'datetime': None,
|
@@ -546,7 +564,9 @@ class latoken(Exchange, ImplicitAPI):
|
|
546
564
|
async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
547
565
|
"""
|
548
566
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
549
|
-
|
567
|
+
|
568
|
+
https://api.latoken.com/doc/v2/#tag/Order-Book/operation/getOrderBook
|
569
|
+
|
550
570
|
:param str symbol: unified symbol of the market to fetch the order book for
|
551
571
|
:param int [limit]: the maximum amount of order book entries to return
|
552
572
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -554,7 +574,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
554
574
|
"""
|
555
575
|
await self.load_markets()
|
556
576
|
market = self.market(symbol)
|
557
|
-
request = {
|
577
|
+
request: dict = {
|
558
578
|
'currency': market['baseId'],
|
559
579
|
'quote': market['quoteId'],
|
560
580
|
}
|
@@ -579,7 +599,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
579
599
|
#
|
580
600
|
return self.parse_order_book(response, symbol, None, 'bid', 'ask', 'price', 'quantity')
|
581
601
|
|
582
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
602
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
583
603
|
#
|
584
604
|
# {
|
585
605
|
# "symbol": "92151d82-df98-4d88-9a4d-284fa9eca49f/0c3a106d-bde3-4c13-a26e-3fd2394529e5",
|
@@ -602,7 +622,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
602
622
|
#
|
603
623
|
marketId = self.safe_string(ticker, 'symbol')
|
604
624
|
last = self.safe_string(ticker, 'lastPrice')
|
605
|
-
timestamp = self.
|
625
|
+
timestamp = self.safe_integer_omit_zero(ticker, 'updateTimestamp') # sometimes latoken provided '0' ts from /ticker endpoint
|
606
626
|
return self.safe_ticker({
|
607
627
|
'symbol': self.safe_symbol(marketId, market),
|
608
628
|
'timestamp': timestamp,
|
@@ -629,14 +649,16 @@ class latoken(Exchange, ImplicitAPI):
|
|
629
649
|
async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
630
650
|
"""
|
631
651
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
632
|
-
|
652
|
+
|
653
|
+
https://api.latoken.com/doc/v2/#tag/Ticker/operation/getTicker
|
654
|
+
|
633
655
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
634
656
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
635
657
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
636
658
|
"""
|
637
659
|
await self.load_markets()
|
638
660
|
market = self.market(symbol)
|
639
|
-
request = {
|
661
|
+
request: dict = {
|
640
662
|
'base': market['baseId'],
|
641
663
|
'quote': market['quoteId'],
|
642
664
|
}
|
@@ -666,7 +688,9 @@ class latoken(Exchange, ImplicitAPI):
|
|
666
688
|
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
667
689
|
"""
|
668
690
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
669
|
-
|
691
|
+
|
692
|
+
https://api.latoken.com/doc/v2/#tag/Ticker/operation/getAllTickers
|
693
|
+
|
670
694
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
671
695
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
672
696
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
@@ -697,7 +721,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
697
721
|
#
|
698
722
|
return self.parse_tickers(response, symbols)
|
699
723
|
|
700
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
724
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
701
725
|
#
|
702
726
|
# fetchTrades(public)
|
703
727
|
#
|
@@ -781,7 +805,9 @@ class latoken(Exchange, ImplicitAPI):
|
|
781
805
|
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
782
806
|
"""
|
783
807
|
get the list of most recent trades for a particular symbol
|
784
|
-
|
808
|
+
|
809
|
+
https://api.latoken.com/doc/v2/#tag/Trade/operation/getTradesByPair
|
810
|
+
|
785
811
|
:param str symbol: unified symbol of the market to fetch trades for
|
786
812
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
787
813
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -790,7 +816,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
790
816
|
"""
|
791
817
|
await self.load_markets()
|
792
818
|
market = self.market(symbol)
|
793
|
-
request = {
|
819
|
+
request: dict = {
|
794
820
|
'currency': market['baseId'],
|
795
821
|
'quote': market['quoteId'],
|
796
822
|
# 'from': str(since), # milliseconds
|
@@ -808,11 +834,13 @@ class latoken(Exchange, ImplicitAPI):
|
|
808
834
|
#
|
809
835
|
return self.parse_trades(response, market, since, limit)
|
810
836
|
|
811
|
-
async def fetch_trading_fee(self, symbol: str, params={}):
|
837
|
+
async def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
|
812
838
|
"""
|
813
839
|
fetch the trading fees for a market
|
814
|
-
|
815
|
-
|
840
|
+
|
841
|
+
https://api.latoken.com/doc/v2/#tag/Trade/operation/getFeeByPair
|
842
|
+
https://api.latoken.com/doc/v2/#tag/Trade/operation/getAuthFeeByPair
|
843
|
+
|
816
844
|
:param str symbol: unified market symbol
|
817
845
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
818
846
|
:returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
|
@@ -831,7 +859,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
831
859
|
async def fetch_public_trading_fee(self, symbol: str, params={}):
|
832
860
|
await self.load_markets()
|
833
861
|
market = self.market(symbol)
|
834
|
-
request = {
|
862
|
+
request: dict = {
|
835
863
|
'currency': market['baseId'],
|
836
864
|
'quote': market['quoteId'],
|
837
865
|
}
|
@@ -849,12 +877,14 @@ class latoken(Exchange, ImplicitAPI):
|
|
849
877
|
'symbol': market['symbol'],
|
850
878
|
'maker': self.safe_number(response, 'makerFee'),
|
851
879
|
'taker': self.safe_number(response, 'takerFee'),
|
880
|
+
'percentage': None,
|
881
|
+
'tierBased': None,
|
852
882
|
}
|
853
883
|
|
854
884
|
async def fetch_private_trading_fee(self, symbol: str, params={}):
|
855
885
|
await self.load_markets()
|
856
886
|
market = self.market(symbol)
|
857
|
-
request = {
|
887
|
+
request: dict = {
|
858
888
|
'currency': market['baseId'],
|
859
889
|
'quote': market['quoteId'],
|
860
890
|
}
|
@@ -872,13 +902,17 @@ class latoken(Exchange, ImplicitAPI):
|
|
872
902
|
'symbol': market['symbol'],
|
873
903
|
'maker': self.safe_number(response, 'makerFee'),
|
874
904
|
'taker': self.safe_number(response, 'takerFee'),
|
905
|
+
'percentage': None,
|
906
|
+
'tierBased': None,
|
875
907
|
}
|
876
908
|
|
877
909
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
878
910
|
"""
|
879
911
|
fetch all trades made by the user
|
880
|
-
|
881
|
-
|
912
|
+
|
913
|
+
https://api.latoken.com/doc/v2/#tag/Trade/operation/getTradesByTrader
|
914
|
+
https://api.latoken.com/doc/v2/#tag/Trade/operation/getTradesByAssetAndTrader
|
915
|
+
|
882
916
|
:param str symbol: unified market symbol
|
883
917
|
:param int [since]: the earliest time in ms to fetch trades for
|
884
918
|
:param int [limit]: the maximum number of trades structures to retrieve
|
@@ -886,7 +920,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
886
920
|
:returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
887
921
|
"""
|
888
922
|
await self.load_markets()
|
889
|
-
request = {
|
923
|
+
request: dict = {
|
890
924
|
# 'currency': market['baseId'],
|
891
925
|
# 'quote': market['quoteId'],
|
892
926
|
# 'from': self.milliseconds(),
|
@@ -923,8 +957,8 @@ class latoken(Exchange, ImplicitAPI):
|
|
923
957
|
#
|
924
958
|
return self.parse_trades(response, market, since, limit)
|
925
959
|
|
926
|
-
def parse_order_status(self, status):
|
927
|
-
statuses = {
|
960
|
+
def parse_order_status(self, status: Str):
|
961
|
+
statuses: dict = {
|
928
962
|
'ORDER_STATUS_PLACED': 'open',
|
929
963
|
'ORDER_STATUS_CLOSED': 'closed',
|
930
964
|
'ORDER_STATUS_CANCELLED': 'canceled',
|
@@ -932,21 +966,21 @@ class latoken(Exchange, ImplicitAPI):
|
|
932
966
|
return self.safe_string(statuses, status, status)
|
933
967
|
|
934
968
|
def parse_order_type(self, status):
|
935
|
-
statuses = {
|
969
|
+
statuses: dict = {
|
936
970
|
'ORDER_TYPE_MARKET': 'market',
|
937
971
|
'ORDER_TYPE_LIMIT': 'limit',
|
938
972
|
}
|
939
973
|
return self.safe_string(statuses, status, status)
|
940
974
|
|
941
|
-
def parse_time_in_force(self, timeInForce):
|
942
|
-
timeInForces = {
|
975
|
+
def parse_time_in_force(self, timeInForce: Str):
|
976
|
+
timeInForces: dict = {
|
943
977
|
'ORDER_CONDITION_GOOD_TILL_CANCELLED': 'GTC',
|
944
978
|
'ORDER_CONDITION_IMMEDIATE_OR_CANCEL': 'IOC',
|
945
979
|
'ORDER_CONDITION_FILL_OR_KILL': 'FOK',
|
946
980
|
}
|
947
981
|
return self.safe_string(timeInForces, timeInForce, timeInForce)
|
948
982
|
|
949
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
983
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
950
984
|
#
|
951
985
|
# createOrder
|
952
986
|
#
|
@@ -1021,7 +1055,6 @@ class latoken(Exchange, ImplicitAPI):
|
|
1021
1055
|
status = 'open'
|
1022
1056
|
clientOrderId = self.safe_string(order, 'clientOrderId')
|
1023
1057
|
timeInForce = self.parse_time_in_force(self.safe_string(order, 'condition'))
|
1024
|
-
triggerPrice = self.safe_string(order, 'stopPrice')
|
1025
1058
|
return self.safe_order({
|
1026
1059
|
'id': id,
|
1027
1060
|
'clientOrderId': clientOrderId,
|
@@ -1036,8 +1069,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1036
1069
|
'postOnly': None,
|
1037
1070
|
'side': side,
|
1038
1071
|
'price': price,
|
1039
|
-
'
|
1040
|
-
'triggerPrice': triggerPrice,
|
1072
|
+
'triggerPrice': self.safe_string(order, 'stopPrice'),
|
1041
1073
|
'cost': cost,
|
1042
1074
|
'amount': amount,
|
1043
1075
|
'filled': filled,
|
@@ -1050,8 +1082,10 @@ class latoken(Exchange, ImplicitAPI):
|
|
1050
1082
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1051
1083
|
"""
|
1052
1084
|
fetch all unfilled currently open orders
|
1053
|
-
|
1054
|
-
|
1085
|
+
|
1086
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/getMyActiveOrdersByPair
|
1087
|
+
https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getMyActiveStopOrdersByPair # stop
|
1088
|
+
|
1055
1089
|
:param str symbol: unified market symbol
|
1056
1090
|
:param int [since]: the earliest time in ms to fetch open orders for
|
1057
1091
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
@@ -1067,7 +1101,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1067
1101
|
params = self.omit(params, 'stop')
|
1068
1102
|
# privateGetAuthOrderActive doesn't work even though its listed at https://api.latoken.com/doc/v2/#tag/Order/operation/getMyActiveOrders
|
1069
1103
|
market = self.market(symbol)
|
1070
|
-
request = {
|
1104
|
+
request: dict = {
|
1071
1105
|
'currency': market['baseId'],
|
1072
1106
|
'quote': market['quoteId'],
|
1073
1107
|
}
|
@@ -1102,10 +1136,12 @@ class latoken(Exchange, ImplicitAPI):
|
|
1102
1136
|
async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1103
1137
|
"""
|
1104
1138
|
fetches information on multiple orders made by the user
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1139
|
+
|
1140
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/getMyOrders
|
1141
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/getMyOrdersByPair
|
1142
|
+
https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getMyStopOrders # stop
|
1143
|
+
https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getMyStopOrdersByPair # stop
|
1144
|
+
|
1109
1145
|
:param str symbol: unified market symbol of the market orders were made in
|
1110
1146
|
:param int [since]: the earliest time in ms to fetch orders for
|
1111
1147
|
:param int [limit]: the maximum number of order structures to retrieve
|
@@ -1114,7 +1150,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1114
1150
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1115
1151
|
"""
|
1116
1152
|
await self.load_markets()
|
1117
|
-
request = {
|
1153
|
+
request: dict = {
|
1118
1154
|
# 'currency': market['baseId'],
|
1119
1155
|
# 'quote': market['quoteId'],
|
1120
1156
|
# 'from': self.milliseconds(),
|
@@ -1166,15 +1202,18 @@ class latoken(Exchange, ImplicitAPI):
|
|
1166
1202
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
1167
1203
|
"""
|
1168
1204
|
fetches information on an order made by the user
|
1169
|
-
|
1170
|
-
|
1205
|
+
|
1206
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/getOrderById
|
1207
|
+
https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getStopOrderById
|
1208
|
+
|
1209
|
+
:param str id: order id
|
1171
1210
|
:param str [symbol]: not used by latoken fetchOrder
|
1172
1211
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1173
1212
|
:param boolean [params.trigger]: True if fetching a trigger order
|
1174
1213
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1175
1214
|
"""
|
1176
1215
|
await self.load_markets()
|
1177
|
-
request = {
|
1216
|
+
request: dict = {
|
1178
1217
|
'id': id,
|
1179
1218
|
}
|
1180
1219
|
isTrigger = self.safe_value_2(params, 'trigger', 'stop')
|
@@ -1209,17 +1248,19 @@ class latoken(Exchange, ImplicitAPI):
|
|
1209
1248
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
1210
1249
|
"""
|
1211
1250
|
create a trade order
|
1212
|
-
|
1213
|
-
|
1251
|
+
|
1252
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/placeOrder
|
1253
|
+
https://api.latoken.com/doc/v2/#tag/StopOrder/operation/placeStopOrder # stop
|
1254
|
+
|
1214
1255
|
:param str symbol: unified symbol of the market to create an order in
|
1215
1256
|
:param str type: 'market' or 'limit'
|
1216
1257
|
:param str side: 'buy' or 'sell'
|
1217
1258
|
:param float amount: how much of currency you want to trade in units of base currency
|
1218
|
-
:param float [price]: the price at which the order is to be
|
1259
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
1219
1260
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1220
1261
|
:param float [params.triggerPrice]: the price at which a trigger order is triggered at
|
1221
|
-
|
1222
|
-
|
1262
|
+
|
1263
|
+
EXCHANGE SPECIFIC PARAMETERS
|
1223
1264
|
:param str [params.condition]: "GTC", "IOC", or "FOK"
|
1224
1265
|
:param str [params.clientOrderId]: [0 .. 50] characters, client's custom order id(free field for your convenience)
|
1225
1266
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -1227,7 +1268,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1227
1268
|
await self.load_markets()
|
1228
1269
|
market = self.market(symbol)
|
1229
1270
|
uppercaseType = type.upper()
|
1230
|
-
request = {
|
1271
|
+
request: dict = {
|
1231
1272
|
'baseCurrency': market['baseId'],
|
1232
1273
|
'quoteCurrency': market['quoteId'],
|
1233
1274
|
'side': side.upper(), # "BUY", "BID", "SELL", "ASK"
|
@@ -1266,8 +1307,10 @@ class latoken(Exchange, ImplicitAPI):
|
|
1266
1307
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
1267
1308
|
"""
|
1268
1309
|
cancels an open order
|
1269
|
-
|
1270
|
-
|
1310
|
+
|
1311
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/cancelOrder
|
1312
|
+
https://api.latoken.com/doc/v2/#tag/StopOrder/operation/cancelStopOrder # stop
|
1313
|
+
|
1271
1314
|
:param str id: order id
|
1272
1315
|
:param str symbol: not used by latoken cancelOrder()
|
1273
1316
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -1275,7 +1318,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1275
1318
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1276
1319
|
"""
|
1277
1320
|
await self.load_markets()
|
1278
|
-
request = {
|
1321
|
+
request: dict = {
|
1279
1322
|
'id': id,
|
1280
1323
|
}
|
1281
1324
|
isTrigger = self.safe_value_2(params, 'trigger', 'stop')
|
@@ -1299,15 +1342,17 @@ class latoken(Exchange, ImplicitAPI):
|
|
1299
1342
|
async def cancel_all_orders(self, symbol: Str = None, params={}):
|
1300
1343
|
"""
|
1301
1344
|
cancel all open orders in a market
|
1302
|
-
|
1303
|
-
|
1345
|
+
|
1346
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/cancelAllOrders
|
1347
|
+
https://api.latoken.com/doc/v2/#tag/Order/operation/cancelAllOrdersByPair
|
1348
|
+
|
1304
1349
|
:param str symbol: unified market symbol of the market to cancel orders in
|
1305
1350
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1306
1351
|
:param boolean [params.trigger]: True if cancelling trigger orders
|
1307
1352
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1308
1353
|
"""
|
1309
1354
|
await self.load_markets()
|
1310
|
-
request = {
|
1355
|
+
request: dict = {
|
1311
1356
|
# 'currency': market['baseId'],
|
1312
1357
|
# 'quote': market['quoteId'],
|
1313
1358
|
}
|
@@ -1334,13 +1379,19 @@ class latoken(Exchange, ImplicitAPI):
|
|
1334
1379
|
# "status":"SUCCESS"
|
1335
1380
|
# }
|
1336
1381
|
#
|
1337
|
-
return
|
1382
|
+
return [
|
1383
|
+
self.safe_order({
|
1384
|
+
'info': response,
|
1385
|
+
}),
|
1386
|
+
]
|
1338
1387
|
|
1339
1388
|
async def fetch_transactions(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
1340
1389
|
"""
|
1341
|
-
|
1390
|
+
@deprecated
|
1342
1391
|
use fetchDepositsWithdrawals instead
|
1343
|
-
|
1392
|
+
|
1393
|
+
https://api.latoken.com/doc/v2/#tag/Transaction/operation/getUserTransactions
|
1394
|
+
|
1344
1395
|
:param str code: unified currency code for the currency of the transactions, default is None
|
1345
1396
|
:param int [since]: timestamp in ms of the earliest transaction, default is None
|
1346
1397
|
:param int [limit]: max number of transactions to return, default is None
|
@@ -1348,7 +1399,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1348
1399
|
:returns dict: a list of `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
1349
1400
|
"""
|
1350
1401
|
await self.load_markets()
|
1351
|
-
request = {
|
1402
|
+
request: dict = {
|
1352
1403
|
# 'page': '1',
|
1353
1404
|
# 'size': 100,
|
1354
1405
|
}
|
@@ -1382,10 +1433,10 @@ class latoken(Exchange, ImplicitAPI):
|
|
1382
1433
|
currency = None
|
1383
1434
|
if code is not None:
|
1384
1435
|
currency = self.currency(code)
|
1385
|
-
content = self.
|
1436
|
+
content = self.safe_list(response, 'content', [])
|
1386
1437
|
return self.parse_transactions(content, currency, since, limit)
|
1387
1438
|
|
1388
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
1439
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
1389
1440
|
#
|
1390
1441
|
# {
|
1391
1442
|
# "id":"fbf7d0d1-2629-4ad8-9def-7a1dba423362",
|
@@ -1447,25 +1498,28 @@ class latoken(Exchange, ImplicitAPI):
|
|
1447
1498
|
'fee': fee,
|
1448
1499
|
}
|
1449
1500
|
|
1450
|
-
def parse_transaction_status(self, status):
|
1451
|
-
statuses = {
|
1501
|
+
def parse_transaction_status(self, status: Str):
|
1502
|
+
statuses: dict = {
|
1452
1503
|
'TRANSACTION_STATUS_CONFIRMED': 'ok',
|
1453
1504
|
'TRANSACTION_STATUS_EXECUTED': 'ok',
|
1505
|
+
'TRANSACTION_STATUS_CHECKING': 'pending',
|
1454
1506
|
'TRANSACTION_STATUS_CANCELLED': 'canceled',
|
1455
1507
|
}
|
1456
1508
|
return self.safe_string(statuses, status, status)
|
1457
1509
|
|
1458
1510
|
def parse_transaction_type(self, type):
|
1459
|
-
types = {
|
1511
|
+
types: dict = {
|
1460
1512
|
'TRANSACTION_TYPE_DEPOSIT': 'deposit',
|
1461
1513
|
'TRANSACTION_TYPE_WITHDRAWAL': 'withdrawal',
|
1462
1514
|
}
|
1463
1515
|
return self.safe_string(types, type, type)
|
1464
1516
|
|
1465
|
-
async def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
1517
|
+
async def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[TransferEntry]:
|
1466
1518
|
"""
|
1467
1519
|
fetch a history of internal transfers made on an account
|
1468
|
-
|
1520
|
+
|
1521
|
+
https://api.latoken.com/doc/v2/#tag/Transfer/operation/getUsersTransfers
|
1522
|
+
|
1469
1523
|
:param str code: unified currency code of the currency transferred
|
1470
1524
|
:param int [since]: the earliest time in ms to fetch transfers for
|
1471
1525
|
:param int [limit]: the maximum number of transfers structures to retrieve
|
@@ -1506,15 +1560,17 @@ class latoken(Exchange, ImplicitAPI):
|
|
1506
1560
|
# "hasContent": True
|
1507
1561
|
# }
|
1508
1562
|
#
|
1509
|
-
transfers = self.
|
1563
|
+
transfers = self.safe_list(response, 'content', [])
|
1510
1564
|
return self.parse_transfers(transfers, currency, since, limit)
|
1511
1565
|
|
1512
1566
|
async def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
|
1513
1567
|
"""
|
1514
1568
|
transfer currency internally between wallets on the same account
|
1515
|
-
|
1516
|
-
|
1517
|
-
|
1569
|
+
|
1570
|
+
https://api.latoken.com/doc/v2/#tag/Transfer/operation/transferByEmail
|
1571
|
+
https://api.latoken.com/doc/v2/#tag/Transfer/operation/transferById
|
1572
|
+
https://api.latoken.com/doc/v2/#tag/Transfer/operation/transferByPhone
|
1573
|
+
|
1518
1574
|
:param str code: unified currency code
|
1519
1575
|
:param float amount: amount to transfer
|
1520
1576
|
:param str fromAccount: account to transfer from
|
@@ -1524,7 +1580,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1524
1580
|
"""
|
1525
1581
|
await self.load_markets()
|
1526
1582
|
currency = self.currency(code)
|
1527
|
-
request = {
|
1583
|
+
request: dict = {
|
1528
1584
|
'currency': currency['id'],
|
1529
1585
|
'recipient': toAccount,
|
1530
1586
|
'value': self.currency_to_precision(code, amount),
|
@@ -1560,7 +1616,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1560
1616
|
#
|
1561
1617
|
return self.parse_transfer(response)
|
1562
1618
|
|
1563
|
-
def parse_transfer(self, transfer, currency: Currency = None):
|
1619
|
+
def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
|
1564
1620
|
#
|
1565
1621
|
# {
|
1566
1622
|
# "id": "e6fc4ace-7750-44e4-b7e9-6af038ac7107",
|
@@ -1598,8 +1654,8 @@ class latoken(Exchange, ImplicitAPI):
|
|
1598
1654
|
'status': self.parse_transfer_status(status),
|
1599
1655
|
}
|
1600
1656
|
|
1601
|
-
def parse_transfer_status(self, status):
|
1602
|
-
statuses = {
|
1657
|
+
def parse_transfer_status(self, status: Str) -> Str:
|
1658
|
+
statuses: dict = {
|
1603
1659
|
'TRANSFER_STATUS_COMPLETED': 'ok',
|
1604
1660
|
'TRANSFER_STATUS_PENDING': 'pending',
|
1605
1661
|
'TRANSFER_STATUS_REJECTED': 'failed',
|
@@ -1631,7 +1687,7 @@ class latoken(Exchange, ImplicitAPI):
|
|
1631
1687
|
url = self.urls['api']['rest'] + requestString
|
1632
1688
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1633
1689
|
|
1634
|
-
def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
1690
|
+
def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1635
1691
|
if not response:
|
1636
1692
|
return None
|
1637
1693
|
#
|