ccxt 4.2.77__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 +24 -0
- ccxt/abstract/kucoinfutures.py +34 -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 +3030 -1087
- 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 +3104 -880
- 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 +238 -49
- ccxt/async_support/bitget.py +1513 -563
- ccxt/async_support/bithumb.py +199 -65
- 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 +392 -148
- 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 +2231 -1193
- ccxt/async_support/cex.py +1409 -1329
- ccxt/async_support/coinbase.py +1454 -287
- 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 +404 -109
- ccxt/async_support/deribit.py +557 -323
- 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 +1472 -463
- 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 +1633 -268
- 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 +917 -357
- 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 +1776 -454
- 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 +1137 -296
- 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 +1722 -480
- 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 +3030 -1087
- ccxt/binancecoinm.py +2 -1
- ccxt/binanceus.py +12 -1
- ccxt/binanceusdm.py +3 -1
- ccxt/bingx.py +3104 -880
- 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 +238 -49
- ccxt/bitget.py +1513 -563
- ccxt/bithumb.py +198 -65
- 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 +392 -148
- ccxt/btcalpha.py +161 -55
- ccxt/btcbox.py +250 -34
- ccxt/btcmarkets.py +232 -85
- ccxt/btcturk.py +159 -60
- ccxt/bybit.py +2231 -1193
- ccxt/cex.py +1408 -1329
- ccxt/coinbase.py +1454 -287
- 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 +404 -109
- ccxt/deribit.py +557 -323
- ccxt/digifinex.py +340 -223
- ccxt/ellipx.py +1826 -0
- ccxt/exmo.py +259 -128
- ccxt/gate.py +1472 -463
- 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 +1632 -268
- 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 +917 -357
- 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 +1776 -454
- 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 +62 -14
- 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 +203 -81
- 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 +965 -665
- 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 +167 -31
- ccxt/pro/exmo.py +252 -20
- 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 +92 -33
- ccxt/pro/poloniex.py +128 -49
- ccxt/pro/poloniexfutures.py +53 -32
- ccxt/pro/probit.py +92 -85
- 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 +437 -65
- 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} +456 -391
- ccxt/test/tests_helpers.py +285 -0
- ccxt/test/tests_init.py +39 -0
- ccxt/test/{test_sync.py → tests_sync.py} +456 -393
- 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 +1137 -296
- 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.77.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.77.dist-info/METADATA +0 -626
- ccxt-4.2.77.dist-info/RECORD +0 -534
- {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
ccxt/ndax.py
CHANGED
@@ -7,13 +7,13 @@ from ccxt.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.ndax import ImplicitAPI
|
8
8
|
import hashlib
|
9
9
|
import json
|
10
|
-
from ccxt.base.types import Account, Balances, Currency, IndexType, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, Transaction
|
10
|
+
from ccxt.base.types import Account, Balances, Currencies, Currency, DepositAddress, IndexType, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, Transaction
|
11
11
|
from typing import List
|
12
12
|
from ccxt.base.errors import ExchangeError
|
13
|
+
from ccxt.base.errors import AuthenticationError
|
13
14
|
from ccxt.base.errors import BadSymbol
|
14
15
|
from ccxt.base.errors import InsufficientFunds
|
15
16
|
from ccxt.base.errors import OrderNotFound
|
16
|
-
from ccxt.base.errors import AuthenticationError
|
17
17
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
18
18
|
from ccxt.base.precise import Precise
|
19
19
|
|
@@ -48,46 +48,79 @@ class ndax(Exchange, ImplicitAPI):
|
|
48
48
|
'editOrder': True,
|
49
49
|
'fetchAccounts': True,
|
50
50
|
'fetchBalance': True,
|
51
|
+
'fetchBorrowInterest': False,
|
52
|
+
'fetchBorrowRate': False,
|
51
53
|
'fetchBorrowRateHistories': False,
|
52
54
|
'fetchBorrowRateHistory': False,
|
55
|
+
'fetchBorrowRates': False,
|
56
|
+
'fetchBorrowRatesPerSymbol': False,
|
53
57
|
'fetchCrossBorrowRate': False,
|
54
58
|
'fetchCrossBorrowRates': False,
|
55
59
|
'fetchCurrencies': True,
|
56
60
|
'fetchDepositAddress': True,
|
61
|
+
'fetchDepositAddresses': False,
|
62
|
+
'fetchDepositAddressesByNetwork': False,
|
57
63
|
'fetchDeposits': True,
|
58
64
|
'fetchFundingHistory': False,
|
65
|
+
'fetchFundingInterval': False,
|
66
|
+
'fetchFundingIntervals': False,
|
59
67
|
'fetchFundingRate': False,
|
60
68
|
'fetchFundingRateHistory': False,
|
61
69
|
'fetchFundingRates': False,
|
70
|
+
'fetchGreeks': False,
|
62
71
|
'fetchIndexOHLCV': False,
|
63
72
|
'fetchIsolatedBorrowRate': False,
|
64
73
|
'fetchIsolatedBorrowRates': False,
|
74
|
+
'fetchIsolatedPositions': False,
|
65
75
|
'fetchLedger': True,
|
66
76
|
'fetchLeverage': False,
|
77
|
+
'fetchLeverages': False,
|
67
78
|
'fetchLeverageTiers': False,
|
79
|
+
'fetchLiquidations': False,
|
80
|
+
'fetchMarginAdjustmentHistory': False,
|
81
|
+
'fetchMarginMode': False,
|
82
|
+
'fetchMarginModes': False,
|
83
|
+
'fetchMarketLeverageTiers': False,
|
68
84
|
'fetchMarkets': True,
|
69
85
|
'fetchMarkOHLCV': False,
|
86
|
+
'fetchMarkPrices': False,
|
87
|
+
'fetchMyLiquidations': False,
|
88
|
+
'fetchMySettlementHistory': False,
|
70
89
|
'fetchMyTrades': True,
|
71
90
|
'fetchOHLCV': True,
|
91
|
+
'fetchOpenInterest': False,
|
72
92
|
'fetchOpenInterestHistory': False,
|
73
93
|
'fetchOpenOrders': True,
|
94
|
+
'fetchOption': False,
|
95
|
+
'fetchOptionChain': False,
|
74
96
|
'fetchOrder': True,
|
75
97
|
'fetchOrderBook': True,
|
76
98
|
'fetchOrders': True,
|
77
99
|
'fetchOrderTrades': True,
|
78
100
|
'fetchPosition': False,
|
101
|
+
'fetchPositionHistory': False,
|
102
|
+
'fetchPositionMode': False,
|
79
103
|
'fetchPositions': False,
|
104
|
+
'fetchPositionsForSymbol': False,
|
105
|
+
'fetchPositionsHistory': False,
|
80
106
|
'fetchPositionsRisk': False,
|
81
107
|
'fetchPremiumIndexOHLCV': False,
|
108
|
+
'fetchSettlementHistory': False,
|
82
109
|
'fetchTicker': True,
|
83
110
|
'fetchTickers': False,
|
84
111
|
'fetchTime': False,
|
85
112
|
'fetchTrades': True,
|
86
113
|
'fetchTradingFee': False,
|
87
114
|
'fetchTradingFees': False,
|
115
|
+
'fetchUnderlyingAssets': False,
|
116
|
+
'fetchVolatilityHistory': False,
|
88
117
|
'fetchWithdrawals': True,
|
89
118
|
'reduceMargin': False,
|
119
|
+
'repayCrossMargin': False,
|
120
|
+
'repayIsolatedMargin': False,
|
121
|
+
'sandbox': True,
|
90
122
|
'setLeverage': False,
|
123
|
+
'setMargin': False,
|
91
124
|
'setMarginMode': False,
|
92
125
|
'setPositionMode': False,
|
93
126
|
'signIn': True,
|
@@ -284,14 +317,16 @@ class ndax(Exchange, ImplicitAPI):
|
|
284
317
|
def sign_in(self, params={}):
|
285
318
|
"""
|
286
319
|
sign in, must be called prior to using other authenticated methods
|
287
|
-
|
320
|
+
|
321
|
+
https://apidoc.ndax.io/#authenticate2fa
|
322
|
+
|
288
323
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
289
324
|
:returns: response from exchange
|
290
325
|
"""
|
291
326
|
self.check_required_credentials()
|
292
327
|
if self.login is None or self.password is None:
|
293
328
|
raise AuthenticationError(self.id + ' signIn() requires exchange.login, exchange.password')
|
294
|
-
request = {
|
329
|
+
request: dict = {
|
295
330
|
'grant_type': 'client_credentials', # the only supported value
|
296
331
|
}
|
297
332
|
response = self.publicGetAuthenticate(self.extend(request, params))
|
@@ -320,7 +355,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
320
355
|
#
|
321
356
|
# {
|
322
357
|
# "Authenticated": True,
|
323
|
-
# "UserId":
|
358
|
+
# "UserId":57764,
|
324
359
|
# "SessionToken":"4a2a5857-c4e5-4fac-b09e-2c4c30b591a0"
|
325
360
|
# }
|
326
361
|
#
|
@@ -329,15 +364,17 @@ class ndax(Exchange, ImplicitAPI):
|
|
329
364
|
return responseInner
|
330
365
|
return response
|
331
366
|
|
332
|
-
def fetch_currencies(self, params={}):
|
367
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
333
368
|
"""
|
334
369
|
fetches all available currencies on an exchange
|
335
|
-
|
370
|
+
|
371
|
+
https://apidoc.ndax.io/#getproduct
|
372
|
+
|
336
373
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
337
374
|
:returns dict: an associative dictionary of currencies
|
338
375
|
"""
|
339
376
|
omsId = self.safe_integer(self.options, 'omsId', 1)
|
340
|
-
request = {
|
377
|
+
request: dict = {
|
341
378
|
'omsId': omsId,
|
342
379
|
}
|
343
380
|
response = self.publicGetGetProducts(self.extend(request, params))
|
@@ -357,7 +394,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
357
394
|
# },
|
358
395
|
# ]
|
359
396
|
#
|
360
|
-
result = {}
|
397
|
+
result: dict = {}
|
361
398
|
for i in range(0, len(response)):
|
362
399
|
currency = response[i]
|
363
400
|
id = self.safe_string(currency, 'ProductId')
|
@@ -395,15 +432,17 @@ class ndax(Exchange, ImplicitAPI):
|
|
395
432
|
}
|
396
433
|
return result
|
397
434
|
|
398
|
-
def fetch_markets(self, params={}):
|
435
|
+
def fetch_markets(self, params={}) -> List[Market]:
|
399
436
|
"""
|
400
437
|
retrieves data on all markets for ndax
|
401
|
-
|
438
|
+
|
439
|
+
https://apidoc.ndax.io/#getinstruments
|
440
|
+
|
402
441
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
403
442
|
:returns dict[]: an array of objects representing market data
|
404
443
|
"""
|
405
444
|
omsId = self.safe_integer(self.options, 'omsId', 1)
|
406
|
-
request = {
|
445
|
+
request: dict = {
|
407
446
|
'omsId': omsId,
|
408
447
|
}
|
409
448
|
response = self.publicGetGetInstruments(self.extend(request, params))
|
@@ -455,7 +494,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
455
494
|
#
|
456
495
|
return self.parse_markets(response)
|
457
496
|
|
458
|
-
def parse_market(self, market) -> Market:
|
497
|
+
def parse_market(self, market: dict) -> Market:
|
459
498
|
id = self.safe_string(market, 'InstrumentId')
|
460
499
|
# lowercaseId = self.safe_string_lower(market, 'symbol')
|
461
500
|
baseId = self.safe_string(market, 'Product1')
|
@@ -517,7 +556,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
517
556
|
|
518
557
|
def parse_order_book(self, orderbook, symbol, timestamp=None, bidsKey='bids', asksKey='asks', priceKey: IndexType = 6, amountKey: IndexType = 8, countOrIdKey: IndexType = 2):
|
519
558
|
nonce = None
|
520
|
-
result = {
|
559
|
+
result: dict = {
|
521
560
|
'symbol': symbol,
|
522
561
|
'bids': [],
|
523
562
|
'asks': [],
|
@@ -551,7 +590,9 @@ class ndax(Exchange, ImplicitAPI):
|
|
551
590
|
def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
552
591
|
"""
|
553
592
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
554
|
-
|
593
|
+
|
594
|
+
https://apidoc.ndax.io/#getl2snapshot
|
595
|
+
|
555
596
|
:param str symbol: unified symbol of the market to fetch the order book for
|
556
597
|
:param int [limit]: the maximum amount of order book entries to return
|
557
598
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -561,7 +602,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
561
602
|
self.load_markets()
|
562
603
|
market = self.market(symbol)
|
563
604
|
limit = 100 if (limit is None) else limit # default 100
|
564
|
-
request = {
|
605
|
+
request: dict = {
|
565
606
|
'omsId': omsId,
|
566
607
|
'InstrumentId': market['id'],
|
567
608
|
'Depth': limit, # default 100
|
@@ -591,7 +632,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
591
632
|
#
|
592
633
|
return self.parse_order_book(response, symbol)
|
593
634
|
|
594
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
635
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
595
636
|
#
|
596
637
|
# fetchTicker
|
597
638
|
#
|
@@ -660,7 +701,9 @@ class ndax(Exchange, ImplicitAPI):
|
|
660
701
|
def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
661
702
|
"""
|
662
703
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
663
|
-
|
704
|
+
|
705
|
+
https://apidoc.ndax.io/#getlevel1
|
706
|
+
|
664
707
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
665
708
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
666
709
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
@@ -668,7 +711,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
668
711
|
omsId = self.safe_integer(self.options, 'omsId', 1)
|
669
712
|
self.load_markets()
|
670
713
|
market = self.market(symbol)
|
671
|
-
request = {
|
714
|
+
request: dict = {
|
672
715
|
'omsId': omsId,
|
673
716
|
'InstrumentId': market['id'],
|
674
717
|
}
|
@@ -731,7 +774,9 @@ class ndax(Exchange, ImplicitAPI):
|
|
731
774
|
def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
732
775
|
"""
|
733
776
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
734
|
-
|
777
|
+
|
778
|
+
https://apidoc.ndax.io/#gettickerhistory
|
779
|
+
|
735
780
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
736
781
|
:param str timeframe: the length of time each candle represents
|
737
782
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
@@ -742,7 +787,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
742
787
|
omsId = self.safe_integer(self.options, 'omsId', 1)
|
743
788
|
self.load_markets()
|
744
789
|
market = self.market(symbol)
|
745
|
-
request = {
|
790
|
+
request: dict = {
|
746
791
|
'omsId': omsId,
|
747
792
|
'InstrumentId': market['id'],
|
748
793
|
'Interval': self.safe_string(self.timeframes, timeframe, timeframe),
|
@@ -769,7 +814,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
769
814
|
#
|
770
815
|
return self.parse_ohlcvs(response, market, timeframe, since, limit)
|
771
816
|
|
772
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
817
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
773
818
|
#
|
774
819
|
# fetchTrades(public)
|
775
820
|
#
|
@@ -946,7 +991,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
946
991
|
omsId = self.safe_integer(self.options, 'omsId', 1)
|
947
992
|
self.load_markets()
|
948
993
|
market = self.market(symbol)
|
949
|
-
request = {
|
994
|
+
request: dict = {
|
950
995
|
'omsId': omsId,
|
951
996
|
'InstrumentId': market['id'],
|
952
997
|
}
|
@@ -965,7 +1010,9 @@ class ndax(Exchange, ImplicitAPI):
|
|
965
1010
|
def fetch_accounts(self, params={}) -> List[Account]:
|
966
1011
|
"""
|
967
1012
|
fetch all the accounts associated with a profile
|
968
|
-
|
1013
|
+
|
1014
|
+
https://apidoc.ndax.io/#getuseraccounts
|
1015
|
+
|
969
1016
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
970
1017
|
:returns dict: a dictionary of `account structures <https://docs.ccxt.com/#/?id=account-structure>` indexed by the account type
|
971
1018
|
"""
|
@@ -973,7 +1020,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
973
1020
|
raise AuthenticationError(self.id + ' fetchAccounts() requires exchange.login email credential')
|
974
1021
|
omsId = self.safe_integer(self.options, 'omsId', 1)
|
975
1022
|
self.check_required_credentials()
|
976
|
-
request = {
|
1023
|
+
request: dict = {
|
977
1024
|
'omsId': omsId,
|
978
1025
|
'UserId': self.uid,
|
979
1026
|
'UserName': self.login,
|
@@ -994,7 +1041,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
994
1041
|
return result
|
995
1042
|
|
996
1043
|
def parse_balance(self, response) -> Balances:
|
997
|
-
result = {
|
1044
|
+
result: dict = {
|
998
1045
|
'info': response,
|
999
1046
|
'timestamp': None,
|
1000
1047
|
'datetime': None,
|
@@ -1013,17 +1060,21 @@ class ndax(Exchange, ImplicitAPI):
|
|
1013
1060
|
def fetch_balance(self, params={}) -> Balances:
|
1014
1061
|
"""
|
1015
1062
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
1016
|
-
|
1063
|
+
|
1064
|
+
https://apidoc.ndax.io/#getaccountpositions
|
1065
|
+
|
1017
1066
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1018
1067
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
1019
1068
|
"""
|
1020
1069
|
omsId = self.safe_integer(self.options, 'omsId', 1)
|
1021
1070
|
self.load_markets()
|
1022
1071
|
self.load_accounts()
|
1023
|
-
defaultAccountId = self.safe_integer_2(self.options, 'accountId', 'AccountId'
|
1072
|
+
defaultAccountId = self.safe_integer_2(self.options, 'accountId', 'AccountId')
|
1024
1073
|
accountId = self.safe_integer_2(params, 'accountId', 'AccountId', defaultAccountId)
|
1074
|
+
if accountId is None:
|
1075
|
+
accountId = int(self.accounts[0]['id'])
|
1025
1076
|
params = self.omit(params, ['accountId', 'AccountId'])
|
1026
|
-
request = {
|
1077
|
+
request: dict = {
|
1027
1078
|
'omsId': omsId,
|
1028
1079
|
'AccountId': accountId,
|
1029
1080
|
}
|
@@ -1062,7 +1113,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1062
1113
|
return self.parse_balance(response)
|
1063
1114
|
|
1064
1115
|
def parse_ledger_entry_type(self, type):
|
1065
|
-
types = {
|
1116
|
+
types: dict = {
|
1066
1117
|
'Trade': 'trade',
|
1067
1118
|
'Deposit': 'transaction',
|
1068
1119
|
'Withdraw': 'transaction',
|
@@ -1079,7 +1130,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1079
1130
|
}
|
1080
1131
|
return self.safe_string(types, type, type)
|
1081
1132
|
|
1082
|
-
def parse_ledger_entry(self, item, currency: Currency = None):
|
1133
|
+
def parse_ledger_entry(self, item: dict, currency: Currency = None) -> LedgerEntry:
|
1083
1134
|
#
|
1084
1135
|
# {
|
1085
1136
|
# "TransactionId": 2663709493,
|
@@ -1097,6 +1148,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1097
1148
|
# }
|
1098
1149
|
#
|
1099
1150
|
currencyId = self.safe_string(item, 'ProductId')
|
1151
|
+
currency = self.safe_currency(currencyId, currency)
|
1100
1152
|
credit = self.safe_string(item, 'CR')
|
1101
1153
|
debit = self.safe_string(item, 'DR')
|
1102
1154
|
amount = None
|
@@ -1114,7 +1166,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1114
1166
|
elif direction == 'in':
|
1115
1167
|
before = Precise.string_max('0', Precise.string_sub(after, amount))
|
1116
1168
|
timestamp = self.safe_integer(item, 'TimeStamp')
|
1117
|
-
return {
|
1169
|
+
return self.safe_ledger_entry({
|
1118
1170
|
'info': item,
|
1119
1171
|
'id': self.safe_string(item, 'TransactionId'),
|
1120
1172
|
'direction': direction,
|
@@ -1130,17 +1182,19 @@ class ndax(Exchange, ImplicitAPI):
|
|
1130
1182
|
'timestamp': timestamp,
|
1131
1183
|
'datetime': self.iso8601(timestamp),
|
1132
1184
|
'fee': None,
|
1133
|
-
}
|
1185
|
+
}, currency)
|
1134
1186
|
|
1135
|
-
def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
1187
|
+
def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[LedgerEntry]:
|
1136
1188
|
"""
|
1137
|
-
fetch the history of changes, actions done by the user or operations that altered balance of the user
|
1138
|
-
|
1139
|
-
|
1189
|
+
fetch the history of changes, actions done by the user or operations that altered the balance of the user
|
1190
|
+
|
1191
|
+
https://apidoc.ndax.io/#getaccounttransactions
|
1192
|
+
|
1193
|
+
:param str [code]: unified currency code, default is None
|
1140
1194
|
:param int [since]: timestamp in ms of the earliest ledger entry, default is None
|
1141
|
-
:param int [limit]: max number of ledger
|
1195
|
+
:param int [limit]: max number of ledger entries to return, default is None
|
1142
1196
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1143
|
-
:returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger
|
1197
|
+
:returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
|
1144
1198
|
"""
|
1145
1199
|
omsId = self.safe_integer(self.options, 'omsId', 1)
|
1146
1200
|
self.load_markets()
|
@@ -1148,7 +1202,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1148
1202
|
defaultAccountId = self.safe_integer_2(self.options, 'accountId', 'AccountId', int(self.accounts[0]['id']))
|
1149
1203
|
accountId = self.safe_integer_2(params, 'accountId', 'AccountId', defaultAccountId)
|
1150
1204
|
params = self.omit(params, ['accountId', 'AccountId'])
|
1151
|
-
request = {
|
1205
|
+
request: dict = {
|
1152
1206
|
'omsId': omsId,
|
1153
1207
|
'AccountId': accountId,
|
1154
1208
|
}
|
@@ -1178,8 +1232,8 @@ class ndax(Exchange, ImplicitAPI):
|
|
1178
1232
|
currency = self.currency(code)
|
1179
1233
|
return self.parse_ledger(response, currency, since, limit)
|
1180
1234
|
|
1181
|
-
def parse_order_status(self, status):
|
1182
|
-
statuses = {
|
1235
|
+
def parse_order_status(self, status: Str):
|
1236
|
+
statuses: dict = {
|
1183
1237
|
'Accepted': 'open',
|
1184
1238
|
'Rejected': 'rejected',
|
1185
1239
|
'Working': 'open',
|
@@ -1189,7 +1243,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1189
1243
|
}
|
1190
1244
|
return self.safe_string(statuses, status, status)
|
1191
1245
|
|
1192
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
1246
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
1193
1247
|
#
|
1194
1248
|
# createOrder
|
1195
1249
|
#
|
@@ -1273,7 +1327,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1273
1327
|
'postOnly': None,
|
1274
1328
|
'side': self.safe_string_lower(order, 'Side'),
|
1275
1329
|
'price': self.safe_string(order, 'Price'),
|
1276
|
-
'
|
1330
|
+
'triggerPrice': self.parse_number(self.omit_zero(self.safe_string(order, 'StopPrice'))),
|
1277
1331
|
'cost': self.safe_string(order, 'GrossValueExecuted'),
|
1278
1332
|
'amount': self.safe_string(order, 'OrigQuantity'),
|
1279
1333
|
'filled': self.safe_string(order, 'QuantityExecuted'),
|
@@ -1286,14 +1340,17 @@ class ndax(Exchange, ImplicitAPI):
|
|
1286
1340
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
1287
1341
|
"""
|
1288
1342
|
create a trade order
|
1289
|
-
|
1343
|
+
|
1344
|
+
https://apidoc.ndax.io/#sendorder
|
1345
|
+
|
1290
1346
|
:param str symbol: unified symbol of the market to create an order in
|
1291
1347
|
:param str type: 'market' or 'limit'
|
1292
1348
|
:param str side: 'buy' or 'sell'
|
1293
1349
|
:param float amount: how much of currency you want to trade in units of base currency
|
1294
|
-
:param float [price]: the price at which the order is to be
|
1350
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
1295
1351
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1296
1352
|
:param float [params.triggerPrice]: the price at which a trigger order would be triggered
|
1353
|
+
:param str [params.clientOrderId]: a unique id for the order
|
1297
1354
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1298
1355
|
"""
|
1299
1356
|
omsId = self.safe_integer(self.options, 'omsId', 1)
|
@@ -1312,7 +1369,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1312
1369
|
params = self.omit(params, ['accountId', 'AccountId', 'clientOrderId', 'ClientOrderId', 'triggerPrice'])
|
1313
1370
|
market = self.market(symbol)
|
1314
1371
|
orderSide = 0 if (side == 'buy') else 1
|
1315
|
-
request = {
|
1372
|
+
request: dict = {
|
1316
1373
|
'InstrumentId': int(market['id']),
|
1317
1374
|
'omsId': omsId,
|
1318
1375
|
'AccountId': accountId,
|
@@ -1357,7 +1414,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1357
1414
|
params = self.omit(params, ['accountId', 'AccountId', 'clientOrderId', 'ClientOrderId'])
|
1358
1415
|
market = self.market(symbol)
|
1359
1416
|
orderSide = 0 if (side == 'buy') else 1
|
1360
|
-
request = {
|
1417
|
+
request: dict = {
|
1361
1418
|
'OrderIdToReplace': int(id),
|
1362
1419
|
'InstrumentId': int(market['id']),
|
1363
1420
|
'omsId': omsId,
|
@@ -1395,7 +1452,9 @@ class ndax(Exchange, ImplicitAPI):
|
|
1395
1452
|
def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1396
1453
|
"""
|
1397
1454
|
fetch all trades made by the user
|
1398
|
-
|
1455
|
+
|
1456
|
+
https://apidoc.ndax.io/#gettradeshistory
|
1457
|
+
|
1399
1458
|
:param str symbol: unified market symbol
|
1400
1459
|
:param int [since]: the earliest time in ms to fetch trades for
|
1401
1460
|
:param int [limit]: the maximum number of trades structures to retrieve
|
@@ -1408,7 +1467,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1408
1467
|
defaultAccountId = self.safe_integer_2(self.options, 'accountId', 'AccountId', int(self.accounts[0]['id']))
|
1409
1468
|
accountId = self.safe_integer_2(params, 'accountId', 'AccountId', defaultAccountId)
|
1410
1469
|
params = self.omit(params, ['accountId', 'AccountId'])
|
1411
|
-
request = {
|
1470
|
+
request: dict = {
|
1412
1471
|
'omsId': omsId,
|
1413
1472
|
'AccountId': accountId,
|
1414
1473
|
# 'InstrumentId': market['id'],
|
@@ -1478,7 +1537,9 @@ class ndax(Exchange, ImplicitAPI):
|
|
1478
1537
|
def cancel_all_orders(self, symbol: Str = None, params={}):
|
1479
1538
|
"""
|
1480
1539
|
cancel all open orders
|
1481
|
-
|
1540
|
+
|
1541
|
+
https://apidoc.ndax.io/#cancelallorders
|
1542
|
+
|
1482
1543
|
:param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
|
1483
1544
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1484
1545
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -1489,7 +1550,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1489
1550
|
defaultAccountId = self.safe_integer_2(self.options, 'accountId', 'AccountId', int(self.accounts[0]['id']))
|
1490
1551
|
accountId = self.safe_integer_2(params, 'accountId', 'AccountId', defaultAccountId)
|
1491
1552
|
params = self.omit(params, ['accountId', 'AccountId'])
|
1492
|
-
request = {
|
1553
|
+
request: dict = {
|
1493
1554
|
'omsId': omsId,
|
1494
1555
|
'AccountId': accountId,
|
1495
1556
|
}
|
@@ -1505,15 +1566,22 @@ class ndax(Exchange, ImplicitAPI):
|
|
1505
1566
|
# "detail":null
|
1506
1567
|
# }
|
1507
1568
|
#
|
1508
|
-
return
|
1569
|
+
return [
|
1570
|
+
self.safe_order({
|
1571
|
+
'info': response,
|
1572
|
+
}),
|
1573
|
+
]
|
1509
1574
|
|
1510
1575
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
1511
1576
|
"""
|
1512
1577
|
cancels an open order
|
1513
|
-
|
1578
|
+
|
1579
|
+
https://apidoc.ndax.io/#cancelorder
|
1580
|
+
|
1514
1581
|
:param str id: order id
|
1515
1582
|
:param str symbol: unified symbol of the market the order was made in
|
1516
1583
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1584
|
+
:param str [params.clientOrderId]: a unique id for the order
|
1517
1585
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1518
1586
|
"""
|
1519
1587
|
omsId = self.safe_integer(self.options, 'omsId', 1)
|
@@ -1525,7 +1593,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1525
1593
|
market = None
|
1526
1594
|
if symbol is not None:
|
1527
1595
|
market = self.market(symbol)
|
1528
|
-
request = {
|
1596
|
+
request: dict = {
|
1529
1597
|
'omsId': omsId,
|
1530
1598
|
# 'AccountId': accountId,
|
1531
1599
|
}
|
@@ -1545,7 +1613,9 @@ class ndax(Exchange, ImplicitAPI):
|
|
1545
1613
|
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1546
1614
|
"""
|
1547
1615
|
fetch all unfilled currently open orders
|
1548
|
-
|
1616
|
+
|
1617
|
+
https://apidoc.ndax.io/#getopenorders
|
1618
|
+
|
1549
1619
|
:param str symbol: unified market symbol
|
1550
1620
|
:param int [since]: the earliest time in ms to fetch open orders for
|
1551
1621
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
@@ -1561,7 +1631,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1561
1631
|
market = None
|
1562
1632
|
if symbol is not None:
|
1563
1633
|
market = self.market(symbol)
|
1564
|
-
request = {
|
1634
|
+
request: dict = {
|
1565
1635
|
'omsId': omsId,
|
1566
1636
|
'AccountId': accountId,
|
1567
1637
|
}
|
@@ -1621,7 +1691,9 @@ class ndax(Exchange, ImplicitAPI):
|
|
1621
1691
|
def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1622
1692
|
"""
|
1623
1693
|
fetches information on multiple orders made by the user
|
1624
|
-
|
1694
|
+
|
1695
|
+
https://apidoc.ndax.io/#getorderhistory
|
1696
|
+
|
1625
1697
|
:param str symbol: unified market symbol of the market orders were made in
|
1626
1698
|
:param int [since]: the earliest time in ms to fetch orders for
|
1627
1699
|
:param int [limit]: the maximum number of order structures to retrieve
|
@@ -1634,7 +1706,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1634
1706
|
defaultAccountId = self.safe_integer_2(self.options, 'accountId', 'AccountId', int(self.accounts[0]['id']))
|
1635
1707
|
accountId = self.safe_integer_2(params, 'accountId', 'AccountId', defaultAccountId)
|
1636
1708
|
params = self.omit(params, ['accountId', 'AccountId'])
|
1637
|
-
request = {
|
1709
|
+
request: dict = {
|
1638
1710
|
'omsId': omsId,
|
1639
1711
|
'AccountId': accountId,
|
1640
1712
|
# 'ClientOrderId': clientOrderId,
|
@@ -1711,7 +1783,10 @@ class ndax(Exchange, ImplicitAPI):
|
|
1711
1783
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
1712
1784
|
"""
|
1713
1785
|
fetches information on an order made by the user
|
1714
|
-
|
1786
|
+
|
1787
|
+
https://apidoc.ndax.io/#getorderstatus
|
1788
|
+
|
1789
|
+
:param str id: order id
|
1715
1790
|
:param str symbol: unified symbol of the market the order was made in
|
1716
1791
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1717
1792
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -1725,7 +1800,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1725
1800
|
market = None
|
1726
1801
|
if symbol is not None:
|
1727
1802
|
market = self.market(symbol)
|
1728
|
-
request = {
|
1803
|
+
request: dict = {
|
1729
1804
|
'omsId': omsId,
|
1730
1805
|
'AccountId': accountId,
|
1731
1806
|
'OrderId': int(id),
|
@@ -1784,7 +1859,9 @@ class ndax(Exchange, ImplicitAPI):
|
|
1784
1859
|
def fetch_order_trades(self, id: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1785
1860
|
"""
|
1786
1861
|
fetch all the trades made from a single order
|
1787
|
-
|
1862
|
+
|
1863
|
+
https://apidoc.ndax.io/#getorderhistorybyorderid
|
1864
|
+
|
1788
1865
|
:param str id: order id
|
1789
1866
|
:param str symbol: unified market symbol
|
1790
1867
|
:param int [since]: the earliest time in ms to fetch trades for
|
@@ -1801,7 +1878,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1801
1878
|
market = None
|
1802
1879
|
if symbol is not None:
|
1803
1880
|
market = self.market(symbol)
|
1804
|
-
request = {
|
1881
|
+
request: dict = {
|
1805
1882
|
'OMSId': self.parse_to_int(omsId),
|
1806
1883
|
# 'AccountId': accountId,
|
1807
1884
|
'OrderId': int(id),
|
@@ -1858,10 +1935,10 @@ class ndax(Exchange, ImplicitAPI):
|
|
1858
1935
|
# ]
|
1859
1936
|
#
|
1860
1937
|
grouped = self.group_by(response, 'ChangeReason')
|
1861
|
-
trades = self.
|
1938
|
+
trades = self.safe_list(grouped, 'Trade', [])
|
1862
1939
|
return self.parse_trades(trades, market, since, limit)
|
1863
1940
|
|
1864
|
-
def fetch_deposit_address(self, code: str, params={}):
|
1941
|
+
def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
1865
1942
|
"""
|
1866
1943
|
fetch the deposit address for a currency associated with self account
|
1867
1944
|
:param str code: unified currency code
|
@@ -1875,7 +1952,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1875
1952
|
accountId = self.safe_integer_2(params, 'accountId', 'AccountId', defaultAccountId)
|
1876
1953
|
params = self.omit(params, ['accountId', 'AccountId'])
|
1877
1954
|
currency = self.currency(code)
|
1878
|
-
request = {
|
1955
|
+
request: dict = {
|
1879
1956
|
'omsId': omsId,
|
1880
1957
|
'AccountId': accountId,
|
1881
1958
|
'ProductId': currency['id'],
|
@@ -1896,7 +1973,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1896
1973
|
#
|
1897
1974
|
return self.parse_deposit_address(response, currency)
|
1898
1975
|
|
1899
|
-
def parse_deposit_address(self, depositAddress, currency: Currency = None):
|
1976
|
+
def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
|
1900
1977
|
#
|
1901
1978
|
# fetchDepositAddress, createDepositAddress
|
1902
1979
|
#
|
@@ -1923,11 +2000,11 @@ class ndax(Exchange, ImplicitAPI):
|
|
1923
2000
|
code = currency['code']
|
1924
2001
|
self.check_address(address)
|
1925
2002
|
return {
|
2003
|
+
'info': depositAddress,
|
1926
2004
|
'currency': code,
|
2005
|
+
'network': None,
|
1927
2006
|
'address': address,
|
1928
2007
|
'tag': tag,
|
1929
|
-
'network': None,
|
1930
|
-
'info': depositAddress,
|
1931
2008
|
}
|
1932
2009
|
|
1933
2010
|
def create_deposit_address(self, code: str, params={}):
|
@@ -1937,7 +2014,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1937
2014
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1938
2015
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
1939
2016
|
"""
|
1940
|
-
request = {
|
2017
|
+
request: dict = {
|
1941
2018
|
'GenerateNewKey': True,
|
1942
2019
|
}
|
1943
2020
|
return self.fetch_deposit_address(code, self.extend(request, params))
|
@@ -1945,7 +2022,9 @@ class ndax(Exchange, ImplicitAPI):
|
|
1945
2022
|
def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1946
2023
|
"""
|
1947
2024
|
fetch all deposits made to an account
|
1948
|
-
|
2025
|
+
|
2026
|
+
https://apidoc.ndax.io/#getdeposits
|
2027
|
+
|
1949
2028
|
:param str code: unified currency code
|
1950
2029
|
:param int [since]: not used by ndax fetchDeposits
|
1951
2030
|
:param int [limit]: the maximum number of deposits structures to retrieve
|
@@ -1961,7 +2040,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
1961
2040
|
currency = None
|
1962
2041
|
if code is not None:
|
1963
2042
|
currency = self.currency(code)
|
1964
|
-
request = {
|
2043
|
+
request: dict = {
|
1965
2044
|
'omsId': omsId,
|
1966
2045
|
'AccountId': accountId,
|
1967
2046
|
}
|
@@ -2001,7 +2080,9 @@ class ndax(Exchange, ImplicitAPI):
|
|
2001
2080
|
def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
2002
2081
|
"""
|
2003
2082
|
fetch all withdrawals made from an account
|
2004
|
-
|
2083
|
+
|
2084
|
+
https://apidoc.ndax.io/#getwithdraws
|
2085
|
+
|
2005
2086
|
:param str code: unified currency code
|
2006
2087
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
2007
2088
|
:param int [limit]: the maximum number of withdrawals structures to retrieve
|
@@ -2017,7 +2098,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
2017
2098
|
currency = None
|
2018
2099
|
if code is not None:
|
2019
2100
|
currency = self.currency(code)
|
2020
|
-
request = {
|
2101
|
+
request: dict = {
|
2021
2102
|
'omsId': omsId,
|
2022
2103
|
'AccountId': accountId,
|
2023
2104
|
}
|
@@ -2049,7 +2130,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
2049
2130
|
return self.parse_transactions(response, currency, since, limit)
|
2050
2131
|
|
2051
2132
|
def parse_transaction_status_by_type(self, status, type=None):
|
2052
|
-
statusesByType = {
|
2133
|
+
statusesByType: dict = {
|
2053
2134
|
'deposit': {
|
2054
2135
|
'New': 'pending', # new ticket awaiting operator review
|
2055
2136
|
'AdminProcessing': 'pending', # an admin is looking at the ticket
|
@@ -2096,7 +2177,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
2096
2177
|
statuses = self.safe_value(statusesByType, type, {})
|
2097
2178
|
return self.safe_string(statuses, status, status)
|
2098
2179
|
|
2099
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
2180
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
2100
2181
|
#
|
2101
2182
|
# fetchDeposits
|
2102
2183
|
#
|
@@ -2191,7 +2272,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
2191
2272
|
'network': None,
|
2192
2273
|
}
|
2193
2274
|
|
2194
|
-
def withdraw(self, code: str, amount: float, address, tag=None, params={}):
|
2275
|
+
def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
2195
2276
|
"""
|
2196
2277
|
make a withdrawal
|
2197
2278
|
:param str code: unified currency code
|
@@ -2216,7 +2297,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
2216
2297
|
accountId = self.safe_integer_2(params, 'accountId', 'AccountId', defaultAccountId)
|
2217
2298
|
params = self.omit(params, ['accountId', 'AccountId'])
|
2218
2299
|
currency = self.currency(code)
|
2219
|
-
withdrawTemplateTypesRequest = {
|
2300
|
+
withdrawTemplateTypesRequest: dict = {
|
2220
2301
|
'omsId': omsId,
|
2221
2302
|
'AccountId': accountId,
|
2222
2303
|
'ProductId': currency['id'],
|
@@ -2239,7 +2320,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
2239
2320
|
if firstTemplateType is None:
|
2240
2321
|
raise ExchangeError(self.id + ' withdraw() could not find a withdraw template type for ' + currency['code'])
|
2241
2322
|
templateName = self.safe_string(firstTemplateType, 'TemplateName')
|
2242
|
-
withdrawTemplateRequest = {
|
2323
|
+
withdrawTemplateRequest: dict = {
|
2243
2324
|
'omsId': omsId,
|
2244
2325
|
'AccountId': accountId,
|
2245
2326
|
'ProductId': currency['id'],
|
@@ -2263,14 +2344,14 @@ class ndax(Exchange, ImplicitAPI):
|
|
2263
2344
|
if tag is not None:
|
2264
2345
|
if 'Memo' in withdrawTemplate:
|
2265
2346
|
withdrawTemplate['Memo'] = tag
|
2266
|
-
withdrawPayload = {
|
2347
|
+
withdrawPayload: dict = {
|
2267
2348
|
'omsId': omsId,
|
2268
2349
|
'AccountId': accountId,
|
2269
2350
|
'ProductId': currency['id'],
|
2270
2351
|
'TemplateForm': self.json(withdrawTemplate),
|
2271
2352
|
'TemplateType': templateName,
|
2272
2353
|
}
|
2273
|
-
withdrawRequest = {
|
2354
|
+
withdrawRequest: dict = {
|
2274
2355
|
'TfaType': 'Google',
|
2275
2356
|
'TFaCode': self.totp(self.twofa),
|
2276
2357
|
'Payload': self.json(withdrawPayload),
|
@@ -2327,7 +2408,7 @@ class ndax(Exchange, ImplicitAPI):
|
|
2327
2408
|
url += '?' + self.urlencode(query)
|
2328
2409
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
2329
2410
|
|
2330
|
-
def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
2411
|
+
def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
2331
2412
|
if code == 404:
|
2332
2413
|
raise AuthenticationError(self.id + ' ' + body)
|
2333
2414
|
if response is None:
|