ccxt 4.2.77__py2.py3-none-any.whl → 4.4.49__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 +3205 -937
- 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 +1525 -573
- 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 +223 -97
- 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 +639 -323
- ccxt/async_support/digifinex.py +465 -233
- ccxt/async_support/ellipx.py +1887 -0
- ccxt/async_support/exmo.py +317 -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 +433 -178
- ccxt/async_support/hollaex.py +207 -83
- ccxt/async_support/htx.py +1095 -563
- ccxt/async_support/huobijp.py +178 -56
- ccxt/async_support/hyperliquid.py +1678 -292
- ccxt/async_support/idex.py +219 -95
- ccxt/async_support/independentreserve.py +300 -31
- ccxt/async_support/indodax.py +226 -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 +198 -107
- ccxt/async_support/latoken.py +199 -79
- ccxt/async_support/lbank.py +360 -113
- ccxt/async_support/luno.py +185 -62
- ccxt/async_support/lykke.py +168 -55
- ccxt/async_support/mercado.py +101 -29
- ccxt/async_support/mexc.py +995 -429
- ccxt/async_support/myokx.py +53 -0
- ccxt/async_support/ndax.py +234 -82
- ccxt/async_support/novadax.py +195 -75
- ccxt/async_support/oceanex.py +244 -59
- ccxt/async_support/okcoin.py +301 -165
- ccxt/async_support/okx.py +1776 -454
- ccxt/async_support/onetrading.py +198 -414
- ccxt/async_support/oxfun.py +2898 -0
- ccxt/async_support/p2b.py +142 -52
- ccxt/async_support/paradex.py +2085 -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 +3205 -937
- 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 +1525 -573
- 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 +223 -97
- 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 +639 -323
- ccxt/digifinex.py +465 -233
- ccxt/ellipx.py +1887 -0
- ccxt/exmo.py +317 -128
- ccxt/gate.py +1472 -463
- ccxt/gemini.py +206 -84
- ccxt/hashkey.py +4164 -0
- ccxt/hitbtc.py +433 -178
- ccxt/hollaex.py +207 -83
- ccxt/htx.py +1095 -563
- ccxt/huobijp.py +178 -56
- ccxt/hyperliquid.py +1677 -292
- ccxt/idex.py +219 -95
- ccxt/independentreserve.py +299 -31
- ccxt/indodax.py +226 -62
- ccxt/kraken.py +871 -354
- ccxt/krakenfutures.py +324 -100
- ccxt/kucoin.py +917 -357
- ccxt/kucoinfutures.py +1004 -149
- ccxt/kuna.py +198 -107
- ccxt/latoken.py +199 -79
- ccxt/lbank.py +360 -113
- ccxt/luno.py +185 -62
- ccxt/lykke.py +168 -55
- ccxt/mercado.py +101 -29
- ccxt/mexc.py +994 -429
- ccxt/myokx.py +53 -0
- ccxt/ndax.py +234 -82
- ccxt/novadax.py +195 -75
- ccxt/oceanex.py +244 -59
- ccxt/okcoin.py +301 -165
- ccxt/okx.py +1776 -454
- ccxt/onetrading.py +198 -414
- ccxt/oxfun.py +2897 -0
- ccxt/p2b.py +142 -52
- ccxt/paradex.py +2085 -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 +143 -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.49.dist-info/LICENSE.txt +21 -0
- ccxt-4.4.49.dist-info/METADATA +646 -0
- ccxt-4.4.49.dist-info/RECORD +669 -0
- {ccxt-4.2.77.dist-info → ccxt-4.4.49.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.49.dist-info}/top_level.txt +0 -0
ccxt/hollaex.py
CHANGED
@@ -6,15 +6,15 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.hollaex 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
|
9
|
+
from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
|
10
10
|
from typing import List
|
11
|
+
from ccxt.base.errors import AuthenticationError
|
11
12
|
from ccxt.base.errors import ArgumentsRequired
|
12
13
|
from ccxt.base.errors import BadRequest
|
13
14
|
from ccxt.base.errors import InsufficientFunds
|
14
15
|
from ccxt.base.errors import OrderNotFound
|
15
16
|
from ccxt.base.errors import OrderImmediatelyFillable
|
16
17
|
from ccxt.base.errors import NetworkError
|
17
|
-
from ccxt.base.errors import AuthenticationError
|
18
18
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
19
19
|
from ccxt.base.precise import Precise
|
20
20
|
|
@@ -59,6 +59,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
59
59
|
'fetchCurrencies': True,
|
60
60
|
'fetchDepositAddress': 'emulated',
|
61
61
|
'fetchDepositAddresses': True,
|
62
|
+
'fetchDepositAddressesByNetwork': False,
|
62
63
|
'fetchDeposits': True,
|
63
64
|
'fetchFundingHistory': False,
|
64
65
|
'fetchFundingRate': False,
|
@@ -96,6 +97,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
96
97
|
'fetchWithdrawal': True,
|
97
98
|
'fetchWithdrawals': True,
|
98
99
|
'reduceMargin': False,
|
100
|
+
'sandbox': True,
|
99
101
|
'setLeverage': False,
|
100
102
|
'setMarginMode': False,
|
101
103
|
'setPositionMode': False,
|
@@ -172,6 +174,79 @@ class hollaex(Exchange, ImplicitAPI):
|
|
172
174
|
},
|
173
175
|
},
|
174
176
|
},
|
177
|
+
'features': {
|
178
|
+
'spot': {
|
179
|
+
'sandbox': True,
|
180
|
+
'createOrder': {
|
181
|
+
'marginMode': False,
|
182
|
+
'triggerPrice': True,
|
183
|
+
'triggerPriceType': None,
|
184
|
+
'triggerDirection': False,
|
185
|
+
'stopLossPrice': False, # todo
|
186
|
+
'takeProfitPrice': False, # todo
|
187
|
+
'attachedStopLossTakeProfit': None,
|
188
|
+
'timeInForce': {
|
189
|
+
'IOC': False,
|
190
|
+
'FOK': False,
|
191
|
+
'PO': True,
|
192
|
+
'GTD': False,
|
193
|
+
},
|
194
|
+
'hedged': False,
|
195
|
+
'selfTradePrevention': False,
|
196
|
+
'trailing': False,
|
197
|
+
'leverage': False,
|
198
|
+
'marketBuyByCost': False,
|
199
|
+
'marketBuyRequiresPrice': False,
|
200
|
+
'iceberg': False,
|
201
|
+
},
|
202
|
+
'createOrders': None,
|
203
|
+
'fetchMyTrades': {
|
204
|
+
'marginMode': False,
|
205
|
+
'limit': 100,
|
206
|
+
'daysBack': 100000,
|
207
|
+
'untilDays': 100000, # todo implement
|
208
|
+
},
|
209
|
+
'fetchOrder': {
|
210
|
+
'marginMode': False,
|
211
|
+
'trigger': False,
|
212
|
+
'trailing': False,
|
213
|
+
},
|
214
|
+
'fetchOpenOrders': {
|
215
|
+
'marginMode': False,
|
216
|
+
'limit': 100,
|
217
|
+
'trigger': False,
|
218
|
+
'trailing': False,
|
219
|
+
},
|
220
|
+
'fetchOrders': {
|
221
|
+
'marginMode': False,
|
222
|
+
'limit': 100,
|
223
|
+
'daysBack': 100000, # todo
|
224
|
+
'untilDays': 100000, # todo
|
225
|
+
'trigger': False,
|
226
|
+
'trailing': False,
|
227
|
+
},
|
228
|
+
'fetchClosedOrders': {
|
229
|
+
'marginMode': False,
|
230
|
+
'limit': 100,
|
231
|
+
'daysBack': 100000, # todo
|
232
|
+
'daysBackCanceled': 1, # todo
|
233
|
+
'untilDays': 100000, # todo
|
234
|
+
'trigger': False,
|
235
|
+
'trailing': False,
|
236
|
+
},
|
237
|
+
'fetchOHLCV': {
|
238
|
+
'limit': 1000, # todo: no limit in request
|
239
|
+
},
|
240
|
+
},
|
241
|
+
'swap': {
|
242
|
+
'linear': None,
|
243
|
+
'inverse': None,
|
244
|
+
},
|
245
|
+
'future': {
|
246
|
+
'linear': None,
|
247
|
+
'inverse': None,
|
248
|
+
},
|
249
|
+
},
|
175
250
|
'fees': {
|
176
251
|
'trading': {
|
177
252
|
'tierBased': True,
|
@@ -215,10 +290,12 @@ class hollaex(Exchange, ImplicitAPI):
|
|
215
290
|
},
|
216
291
|
})
|
217
292
|
|
218
|
-
def fetch_markets(self, params={}):
|
293
|
+
def fetch_markets(self, params={}) -> List[Market]:
|
219
294
|
"""
|
220
295
|
retrieves data on all markets for hollaex
|
221
|
-
|
296
|
+
|
297
|
+
https://apidocs.hollaex.com/#constants
|
298
|
+
|
222
299
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
223
300
|
:returns dict[]: an array of objects representing market data
|
224
301
|
"""
|
@@ -328,10 +405,12 @@ class hollaex(Exchange, ImplicitAPI):
|
|
328
405
|
})
|
329
406
|
return result
|
330
407
|
|
331
|
-
def fetch_currencies(self, params={}):
|
408
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
332
409
|
"""
|
333
410
|
fetches all available currencies on an exchange
|
334
|
-
|
411
|
+
|
412
|
+
https://apidocs.hollaex.com/#constants
|
413
|
+
|
335
414
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
336
415
|
:returns dict: an associative dictionary of currencies
|
337
416
|
"""
|
@@ -347,7 +426,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
347
426
|
# "verified":true,
|
348
427
|
# "allow_deposit":true,
|
349
428
|
# "allow_withdrawal":true,
|
350
|
-
# "withdrawal_fee":0.
|
429
|
+
# "withdrawal_fee":0.0002,
|
351
430
|
# "min":0.001,
|
352
431
|
# "max":100000,
|
353
432
|
# "increment_unit":0.001,
|
@@ -373,7 +452,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
373
452
|
#
|
374
453
|
coins = self.safe_value(response, 'coins', {})
|
375
454
|
keys = list(coins.keys())
|
376
|
-
result = {}
|
455
|
+
result: dict = {}
|
377
456
|
for i in range(0, len(keys)):
|
378
457
|
key = keys[i]
|
379
458
|
currency = coins[key]
|
@@ -415,7 +494,9 @@ class hollaex(Exchange, ImplicitAPI):
|
|
415
494
|
def fetch_order_books(self, symbols: Strings = None, limit: Int = None, params={}):
|
416
495
|
"""
|
417
496
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
|
418
|
-
|
497
|
+
|
498
|
+
https://apidocs.hollaex.com/#orderbooks
|
499
|
+
|
419
500
|
:param str[]|None symbols: not used by hollaex fetchOrderBooks()
|
420
501
|
:param int [limit]: not used by hollaex fetchOrderBooks()
|
421
502
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -423,7 +504,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
423
504
|
"""
|
424
505
|
self.load_markets()
|
425
506
|
response = self.publicGetOrderbooks(params)
|
426
|
-
result = {}
|
507
|
+
result: dict = {}
|
427
508
|
marketIds = list(response.keys())
|
428
509
|
for i in range(0, len(marketIds)):
|
429
510
|
marketId = marketIds[i]
|
@@ -436,7 +517,9 @@ class hollaex(Exchange, ImplicitAPI):
|
|
436
517
|
def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
437
518
|
"""
|
438
519
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
439
|
-
|
520
|
+
|
521
|
+
https://apidocs.hollaex.com/#orderbook
|
522
|
+
|
440
523
|
:param str symbol: unified symbol of the market to fetch the order book for
|
441
524
|
:param int [limit]: the maximum amount of order book entries to return
|
442
525
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -444,7 +527,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
444
527
|
"""
|
445
528
|
self.load_markets()
|
446
529
|
market = self.market(symbol)
|
447
|
-
request = {
|
530
|
+
request: dict = {
|
448
531
|
'symbol': market['id'],
|
449
532
|
}
|
450
533
|
response = self.publicGetOrderbook(self.extend(request, params))
|
@@ -474,14 +557,16 @@ class hollaex(Exchange, ImplicitAPI):
|
|
474
557
|
def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
475
558
|
"""
|
476
559
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
477
|
-
|
560
|
+
|
561
|
+
https://apidocs.hollaex.com/#ticker
|
562
|
+
|
478
563
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
479
564
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
480
565
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
481
566
|
"""
|
482
567
|
self.load_markets()
|
483
568
|
market = self.market(symbol)
|
484
|
-
request = {
|
569
|
+
request: dict = {
|
485
570
|
'symbol': market['id'],
|
486
571
|
}
|
487
572
|
response = self.publicGetTicker(self.extend(request, params))
|
@@ -501,7 +586,9 @@ class hollaex(Exchange, ImplicitAPI):
|
|
501
586
|
def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
502
587
|
"""
|
503
588
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
504
|
-
|
589
|
+
|
590
|
+
https://apidocs.hollaex.com/#tickers
|
591
|
+
|
505
592
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
506
593
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
507
594
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
@@ -526,19 +613,19 @@ class hollaex(Exchange, ImplicitAPI):
|
|
526
613
|
#
|
527
614
|
return self.parse_tickers(response, symbols)
|
528
615
|
|
529
|
-
def parse_tickers(self,
|
530
|
-
result = {}
|
531
|
-
keys = list(
|
616
|
+
def parse_tickers(self, tickers, symbols: Strings = None, params={}) -> Tickers:
|
617
|
+
result: dict = {}
|
618
|
+
keys = list(tickers.keys())
|
532
619
|
for i in range(0, len(keys)):
|
533
620
|
key = keys[i]
|
534
|
-
ticker =
|
621
|
+
ticker = tickers[key]
|
535
622
|
marketId = self.safe_string(ticker, 'symbol', key)
|
536
623
|
market = self.safe_market(marketId, None, '-')
|
537
624
|
symbol = market['symbol']
|
538
625
|
result[symbol] = self.extend(self.parse_ticker(ticker, market), params)
|
539
626
|
return self.filter_by_array_tickers(result, 'symbol', symbols)
|
540
627
|
|
541
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
628
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
542
629
|
#
|
543
630
|
# fetchTicker
|
544
631
|
#
|
@@ -596,7 +683,9 @@ class hollaex(Exchange, ImplicitAPI):
|
|
596
683
|
def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
597
684
|
"""
|
598
685
|
get the list of most recent trades for a particular symbol
|
599
|
-
|
686
|
+
|
687
|
+
https://apidocs.hollaex.com/#trades
|
688
|
+
|
600
689
|
:param str symbol: unified symbol of the market to fetch trades for
|
601
690
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
602
691
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -605,7 +694,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
605
694
|
"""
|
606
695
|
self.load_markets()
|
607
696
|
market = self.market(symbol)
|
608
|
-
request = {
|
697
|
+
request: dict = {
|
609
698
|
'symbol': market['id'],
|
610
699
|
}
|
611
700
|
response = self.publicGetTrades(self.extend(request, params))
|
@@ -622,10 +711,10 @@ class hollaex(Exchange, ImplicitAPI):
|
|
622
711
|
# ]
|
623
712
|
# }
|
624
713
|
#
|
625
|
-
trades = self.
|
714
|
+
trades = self.safe_list(response, market['id'], [])
|
626
715
|
return self.parse_trades(trades, market, since, limit)
|
627
716
|
|
628
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
717
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
629
718
|
#
|
630
719
|
# fetchTrades(public)
|
631
720
|
#
|
@@ -679,10 +768,12 @@ class hollaex(Exchange, ImplicitAPI):
|
|
679
768
|
'fee': fee,
|
680
769
|
}, market)
|
681
770
|
|
682
|
-
def fetch_trading_fees(self, params={}):
|
771
|
+
def fetch_trading_fees(self, params={}) -> TradingFees:
|
683
772
|
"""
|
684
773
|
fetch the trading fees for multiple markets
|
685
|
-
|
774
|
+
|
775
|
+
https://apidocs.hollaex.com/#tiers
|
776
|
+
|
686
777
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
687
778
|
:returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
|
688
779
|
"""
|
@@ -720,7 +811,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
720
811
|
fees = self.safe_value(firstTier, 'fees', {})
|
721
812
|
makerFees = self.safe_value(fees, 'maker', {})
|
722
813
|
takerFees = self.safe_value(fees, 'taker', {})
|
723
|
-
result = {}
|
814
|
+
result: dict = {}
|
724
815
|
for i in range(0, len(self.symbols)):
|
725
816
|
symbol = self.symbols[i]
|
726
817
|
market = self.market(symbol)
|
@@ -739,7 +830,9 @@ class hollaex(Exchange, ImplicitAPI):
|
|
739
830
|
def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
740
831
|
"""
|
741
832
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
742
|
-
|
833
|
+
|
834
|
+
https://apidocs.hollaex.com/#chart
|
835
|
+
|
743
836
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
744
837
|
:param str timeframe: the length of time each candle represents
|
745
838
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
@@ -749,7 +842,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
749
842
|
"""
|
750
843
|
self.load_markets()
|
751
844
|
market = self.market(symbol)
|
752
|
-
request = {
|
845
|
+
request: dict = {
|
753
846
|
'symbol': market['id'],
|
754
847
|
'resolution': self.safe_string(self.timeframes, timeframe, timeframe),
|
755
848
|
}
|
@@ -808,7 +901,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
808
901
|
|
809
902
|
def parse_balance(self, response) -> Balances:
|
810
903
|
timestamp = self.parse8601(self.safe_string(response, 'updated_at'))
|
811
|
-
result = {
|
904
|
+
result: dict = {
|
812
905
|
'info': response,
|
813
906
|
'timestamp': timestamp,
|
814
907
|
'datetime': self.iso8601(timestamp),
|
@@ -826,7 +919,9 @@ class hollaex(Exchange, ImplicitAPI):
|
|
826
919
|
def fetch_balance(self, params={}) -> Balances:
|
827
920
|
"""
|
828
921
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
829
|
-
|
922
|
+
|
923
|
+
https://apidocs.hollaex.com/#get-balance
|
924
|
+
|
830
925
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
831
926
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
832
927
|
"""
|
@@ -849,14 +944,16 @@ class hollaex(Exchange, ImplicitAPI):
|
|
849
944
|
def fetch_open_order(self, id: str, symbol: Str = None, params={}):
|
850
945
|
"""
|
851
946
|
fetch an open order by it's id
|
852
|
-
|
947
|
+
|
948
|
+
https://apidocs.hollaex.com/#get-order
|
949
|
+
|
853
950
|
:param str id: order id
|
854
951
|
:param str symbol: not used by hollaex fetchOpenOrder()
|
855
952
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
856
953
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
857
954
|
"""
|
858
955
|
self.load_markets()
|
859
|
-
request = {
|
956
|
+
request: dict = {
|
860
957
|
'order_id': id,
|
861
958
|
}
|
862
959
|
response = self.privateGetOrder(self.extend(request, params))
|
@@ -889,14 +986,16 @@ class hollaex(Exchange, ImplicitAPI):
|
|
889
986
|
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
890
987
|
"""
|
891
988
|
fetch all unfilled currently open orders
|
892
|
-
|
989
|
+
|
990
|
+
https://apidocs.hollaex.com/#get-all-orders
|
991
|
+
|
893
992
|
:param str symbol: unified market symbol
|
894
993
|
:param int [since]: the earliest time in ms to fetch open orders for
|
895
994
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
896
995
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
897
996
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
898
997
|
"""
|
899
|
-
request = {
|
998
|
+
request: dict = {
|
900
999
|
'open': True,
|
901
1000
|
}
|
902
1001
|
return self.fetch_orders(symbol, since, limit, self.extend(request, params))
|
@@ -904,14 +1003,16 @@ class hollaex(Exchange, ImplicitAPI):
|
|
904
1003
|
def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
905
1004
|
"""
|
906
1005
|
fetches information on multiple closed orders made by the user
|
907
|
-
|
1006
|
+
|
1007
|
+
https://apidocs.hollaex.com/#get-all-orders
|
1008
|
+
|
908
1009
|
:param str symbol: unified market symbol of the market orders were made in
|
909
1010
|
:param int [since]: the earliest time in ms to fetch orders for
|
910
1011
|
:param int [limit]: the maximum number of order structures to retrieve
|
911
1012
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
912
1013
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
913
1014
|
"""
|
914
|
-
request = {
|
1015
|
+
request: dict = {
|
915
1016
|
'open': False,
|
916
1017
|
}
|
917
1018
|
return self.fetch_orders(symbol, since, limit, self.extend(request, params))
|
@@ -919,13 +1020,16 @@ class hollaex(Exchange, ImplicitAPI):
|
|
919
1020
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
920
1021
|
"""
|
921
1022
|
fetches information on an order made by the user
|
922
|
-
|
1023
|
+
|
1024
|
+
https://apidocs.hollaex.com/#get-order
|
1025
|
+
|
1026
|
+
:param str id:
|
923
1027
|
:param str symbol: unified symbol of the market the order was made in
|
924
1028
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
925
1029
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
926
1030
|
"""
|
927
1031
|
self.load_markets()
|
928
|
-
request = {
|
1032
|
+
request: dict = {
|
929
1033
|
'order_id': id,
|
930
1034
|
}
|
931
1035
|
response = self.privateGetOrder(self.extend(request, params))
|
@@ -959,7 +1063,9 @@ class hollaex(Exchange, ImplicitAPI):
|
|
959
1063
|
def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
960
1064
|
"""
|
961
1065
|
fetches information on multiple orders made by the user
|
962
|
-
|
1066
|
+
|
1067
|
+
https://apidocs.hollaex.com/#get-all-orders
|
1068
|
+
|
963
1069
|
:param str symbol: unified market symbol of the market orders were made in
|
964
1070
|
:param int [since]: the earliest time in ms to fetch orders for
|
965
1071
|
:param int [limit]: the maximum number of order structures to retrieve
|
@@ -968,7 +1074,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
968
1074
|
"""
|
969
1075
|
self.load_markets()
|
970
1076
|
market = None
|
971
|
-
request = {
|
1077
|
+
request: dict = {
|
972
1078
|
# 'symbol': market['id'],
|
973
1079
|
# 'side': 'buy', # 'sell'
|
974
1080
|
# 'status': 'new', # 'filled', 'pfilled', 'canceled'
|
@@ -1017,11 +1123,11 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1017
1123
|
# ]
|
1018
1124
|
# }
|
1019
1125
|
#
|
1020
|
-
data = self.
|
1126
|
+
data = self.safe_list(response, 'data', [])
|
1021
1127
|
return self.parse_orders(data, market, since, limit)
|
1022
1128
|
|
1023
|
-
def parse_order_status(self, status):
|
1024
|
-
statuses = {
|
1129
|
+
def parse_order_status(self, status: Str):
|
1130
|
+
statuses: dict = {
|
1025
1131
|
'new': 'open',
|
1026
1132
|
'pfilled': 'open',
|
1027
1133
|
'filled': 'closed',
|
@@ -1029,7 +1135,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1029
1135
|
}
|
1030
1136
|
return self.safe_string(statuses, status, status)
|
1031
1137
|
|
1032
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
1138
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
1033
1139
|
#
|
1034
1140
|
# createOrder, fetchOpenOrder, fetchOpenOrders
|
1035
1141
|
#
|
@@ -1065,7 +1171,6 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1065
1171
|
type = self.safe_string(order, 'type')
|
1066
1172
|
side = self.safe_string(order, 'side')
|
1067
1173
|
price = self.safe_string(order, 'price')
|
1068
|
-
stopPrice = self.safe_string(order, 'stop')
|
1069
1174
|
amount = self.safe_string(order, 'size')
|
1070
1175
|
filled = self.safe_string(order, 'filled')
|
1071
1176
|
status = self.parse_order_status(self.safe_string(order, 'status'))
|
@@ -1084,8 +1189,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1084
1189
|
'postOnly': postOnly,
|
1085
1190
|
'side': side,
|
1086
1191
|
'price': price,
|
1087
|
-
'
|
1088
|
-
'triggerPrice': stopPrice,
|
1192
|
+
'triggerPrice': self.safe_string(order, 'stop'),
|
1089
1193
|
'amount': amount,
|
1090
1194
|
'filled': filled,
|
1091
1195
|
'remaining': None,
|
@@ -1099,12 +1203,14 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1099
1203
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
1100
1204
|
"""
|
1101
1205
|
create a trade order
|
1102
|
-
|
1206
|
+
|
1207
|
+
https://apidocs.hollaex.com/#create-order
|
1208
|
+
|
1103
1209
|
:param str symbol: unified symbol of the market to create an order in
|
1104
1210
|
:param str type: 'market' or 'limit'
|
1105
1211
|
:param str side: 'buy' or 'sell'
|
1106
1212
|
:param float amount: how much of currency you want to trade in units of base currency
|
1107
|
-
:param float [price]: the price at which the order is to be
|
1213
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
1108
1214
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1109
1215
|
:param float [params.triggerPrice]: the price at which a trigger order is triggered at
|
1110
1216
|
:param bool [params.postOnly]: if True, the order will only be posted to the order book and not executed immediately
|
@@ -1113,7 +1219,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1113
1219
|
self.load_markets()
|
1114
1220
|
market = self.market(symbol)
|
1115
1221
|
convertedAmount = float(self.amount_to_precision(symbol, amount))
|
1116
|
-
request = {
|
1222
|
+
request: dict = {
|
1117
1223
|
'symbol': market['id'],
|
1118
1224
|
'side': side,
|
1119
1225
|
'size': self.normalize_number_if_needed(convertedAmount),
|
@@ -1121,7 +1227,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1121
1227
|
# 'stop': float(self.price_to_precision(symbol, stopPrice)),
|
1122
1228
|
# 'meta': {}, # other options such
|
1123
1229
|
}
|
1124
|
-
|
1230
|
+
triggerPrice = self.safe_number_n(params, ['triggerPrice', 'stopPrice', 'stop'])
|
1125
1231
|
meta = self.safe_value(params, 'meta', {})
|
1126
1232
|
exchangeSpecificParam = self.safe_bool(meta, 'post_only', False)
|
1127
1233
|
isMarketOrder = type == 'market'
|
@@ -1129,8 +1235,8 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1129
1235
|
if not isMarketOrder:
|
1130
1236
|
convertedPrice = float(self.price_to_precision(symbol, price))
|
1131
1237
|
request['price'] = self.normalize_number_if_needed(convertedPrice)
|
1132
|
-
if
|
1133
|
-
request['stop'] = self.normalize_number_if_needed(float(self.price_to_precision(symbol,
|
1238
|
+
if triggerPrice is not None:
|
1239
|
+
request['stop'] = self.normalize_number_if_needed(float(self.price_to_precision(symbol, triggerPrice)))
|
1134
1240
|
if postOnly:
|
1135
1241
|
request['meta'] = {'post_only': True}
|
1136
1242
|
params = self.omit(params, ['postOnly', 'timeInForce', 'stopPrice', 'triggerPrice', 'stop'])
|
@@ -1163,14 +1269,16 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1163
1269
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
1164
1270
|
"""
|
1165
1271
|
cancels an open order
|
1166
|
-
|
1272
|
+
|
1273
|
+
https://apidocs.hollaex.com/#cancel-order
|
1274
|
+
|
1167
1275
|
:param str id: order id
|
1168
1276
|
:param str symbol: unified symbol of the market the order was made in
|
1169
1277
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1170
1278
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1171
1279
|
"""
|
1172
1280
|
self.load_markets()
|
1173
|
-
request = {
|
1281
|
+
request: dict = {
|
1174
1282
|
'order_id': id,
|
1175
1283
|
}
|
1176
1284
|
response = self.privateDeleteOrder(self.extend(request, params))
|
@@ -1192,7 +1300,9 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1192
1300
|
def cancel_all_orders(self, symbol: Str = None, params={}):
|
1193
1301
|
"""
|
1194
1302
|
cancel all open orders in a market
|
1195
|
-
|
1303
|
+
|
1304
|
+
https://apidocs.hollaex.com/#cancel-all-orders
|
1305
|
+
|
1196
1306
|
:param str symbol: unified market symbol of the market to cancel orders in
|
1197
1307
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1198
1308
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -1200,7 +1310,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1200
1310
|
if symbol is None:
|
1201
1311
|
raise ArgumentsRequired(self.id + ' cancelAllOrders() requires a symbol argument')
|
1202
1312
|
self.load_markets()
|
1203
|
-
request = {}
|
1313
|
+
request: dict = {}
|
1204
1314
|
market = None
|
1205
1315
|
market = self.market(symbol)
|
1206
1316
|
request['symbol'] = market['id']
|
@@ -1225,7 +1335,9 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1225
1335
|
def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1226
1336
|
"""
|
1227
1337
|
fetch all trades made by the user
|
1228
|
-
|
1338
|
+
|
1339
|
+
https://apidocs.hollaex.com/#get-trades
|
1340
|
+
|
1229
1341
|
:param str symbol: unified market symbol
|
1230
1342
|
:param int [since]: the earliest time in ms to fetch trades for
|
1231
1343
|
:param int [limit]: the maximum number of trades structures to retrieve
|
@@ -1233,7 +1345,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1233
1345
|
:returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
1234
1346
|
"""
|
1235
1347
|
self.load_markets()
|
1236
|
-
request = {
|
1348
|
+
request: dict = {
|
1237
1349
|
# 'symbol': market['id'],
|
1238
1350
|
# 'limit': 50, # default 50, max 100
|
1239
1351
|
# 'page': 1, # page of data to retrieve
|
@@ -1266,10 +1378,10 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1266
1378
|
# ]
|
1267
1379
|
# }
|
1268
1380
|
#
|
1269
|
-
data = self.
|
1381
|
+
data = self.safe_list(response, 'data', [])
|
1270
1382
|
return self.parse_trades(data, market, since, limit)
|
1271
1383
|
|
1272
|
-
def parse_deposit_address(self, depositAddress, currency: Currency = None):
|
1384
|
+
def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
|
1273
1385
|
#
|
1274
1386
|
# {
|
1275
1387
|
# "currency":"usdt",
|
@@ -1291,17 +1403,19 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1291
1403
|
currency = self.safe_currency(currencyId, currency)
|
1292
1404
|
network = self.safe_string(depositAddress, 'network')
|
1293
1405
|
return {
|
1406
|
+
'info': depositAddress,
|
1294
1407
|
'currency': currency['code'],
|
1408
|
+
'network': network,
|
1295
1409
|
'address': address,
|
1296
1410
|
'tag': tag,
|
1297
|
-
'network': network,
|
1298
|
-
'info': depositAddress,
|
1299
1411
|
}
|
1300
1412
|
|
1301
|
-
def fetch_deposit_addresses(self, codes:
|
1413
|
+
def fetch_deposit_addresses(self, codes: Strings = None, params={}) -> List[DepositAddress]:
|
1302
1414
|
"""
|
1303
1415
|
fetch deposit addresses for multiple currencies and chain types
|
1304
|
-
|
1416
|
+
|
1417
|
+
https://apidocs.hollaex.com/#get-user
|
1418
|
+
|
1305
1419
|
:param str[]|None codes: list of unified currency codes, default is None
|
1306
1420
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1307
1421
|
:returns dict: a list of `address structures <https://docs.ccxt.com/#/?id=address-structure>`
|
@@ -1362,7 +1476,9 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1362
1476
|
def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1363
1477
|
"""
|
1364
1478
|
fetch all deposits made to an account
|
1365
|
-
|
1479
|
+
|
1480
|
+
https://apidocs.hollaex.com/#get-deposits
|
1481
|
+
|
1366
1482
|
:param str code: unified currency code
|
1367
1483
|
:param int [since]: the earliest time in ms to fetch deposits for
|
1368
1484
|
:param int [limit]: the maximum number of deposits structures to retrieve
|
@@ -1370,7 +1486,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1370
1486
|
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
|
1371
1487
|
"""
|
1372
1488
|
self.load_markets()
|
1373
|
-
request = {
|
1489
|
+
request: dict = {
|
1374
1490
|
# 'currency': currency['id'],
|
1375
1491
|
# 'limit': 50, # default 50, max 100
|
1376
1492
|
# 'page': 1, # page of data to retrieve
|
@@ -1411,20 +1527,22 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1411
1527
|
# ]
|
1412
1528
|
# }
|
1413
1529
|
#
|
1414
|
-
data = self.
|
1530
|
+
data = self.safe_list(response, 'data', [])
|
1415
1531
|
return self.parse_transactions(data, currency, since, limit)
|
1416
1532
|
|
1417
1533
|
def fetch_withdrawal(self, id: str, code: Str = None, params={}):
|
1418
1534
|
"""
|
1419
1535
|
fetch data on a currency withdrawal via the withdrawal id
|
1420
|
-
|
1536
|
+
|
1537
|
+
https://apidocs.hollaex.com/#get-withdrawals
|
1538
|
+
|
1421
1539
|
:param str id: withdrawal id
|
1422
1540
|
:param str code: unified currency code of the currency withdrawn, default is None
|
1423
1541
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1424
1542
|
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
1425
1543
|
"""
|
1426
1544
|
self.load_markets()
|
1427
|
-
request = {
|
1545
|
+
request: dict = {
|
1428
1546
|
'transaction_id': id,
|
1429
1547
|
}
|
1430
1548
|
currency = None
|
@@ -1456,13 +1574,15 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1456
1574
|
# }
|
1457
1575
|
#
|
1458
1576
|
data = self.safe_value(response, 'data', [])
|
1459
|
-
transaction = self.
|
1577
|
+
transaction = self.safe_dict(data, 0, {})
|
1460
1578
|
return self.parse_transaction(transaction, currency)
|
1461
1579
|
|
1462
1580
|
def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1463
1581
|
"""
|
1464
1582
|
fetch all withdrawals made from an account
|
1465
|
-
|
1583
|
+
|
1584
|
+
https://apidocs.hollaex.com/#get-withdrawals
|
1585
|
+
|
1466
1586
|
:param str code: unified currency code
|
1467
1587
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
1468
1588
|
:param int [limit]: the maximum number of withdrawals structures to retrieve
|
@@ -1470,7 +1590,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1470
1590
|
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
|
1471
1591
|
"""
|
1472
1592
|
self.load_markets()
|
1473
|
-
request = {
|
1593
|
+
request: dict = {
|
1474
1594
|
# 'currency': currency['id'],
|
1475
1595
|
# 'limit': 50, # default 50, max 100
|
1476
1596
|
# 'page': 1, # page of data to retrieve
|
@@ -1511,10 +1631,10 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1511
1631
|
# ]
|
1512
1632
|
# }
|
1513
1633
|
#
|
1514
|
-
data = self.
|
1634
|
+
data = self.safe_list(response, 'data', [])
|
1515
1635
|
return self.parse_transactions(data, currency, since, limit)
|
1516
1636
|
|
1517
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
1637
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
1518
1638
|
#
|
1519
1639
|
# fetchWithdrawals, fetchDeposits
|
1520
1640
|
#
|
@@ -1609,10 +1729,12 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1609
1729
|
'fee': fee,
|
1610
1730
|
}
|
1611
1731
|
|
1612
|
-
def withdraw(self, code: str, amount: float, address, tag=None, params={}):
|
1732
|
+
def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
1613
1733
|
"""
|
1614
1734
|
make a withdrawal
|
1615
|
-
|
1735
|
+
|
1736
|
+
https://apidocs.hollaex.com/#withdrawal
|
1737
|
+
|
1616
1738
|
:param str code: unified currency code
|
1617
1739
|
:param float amount: the amount to withdraw
|
1618
1740
|
:param str address: the address to withdraw to
|
@@ -1630,7 +1752,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1630
1752
|
if network is None:
|
1631
1753
|
raise ArgumentsRequired(self.id + ' withdraw() requires a network parameter')
|
1632
1754
|
params = self.omit(params, 'network')
|
1633
|
-
request = {
|
1755
|
+
request: dict = {
|
1634
1756
|
'currency': currency['id'],
|
1635
1757
|
'amount': amount,
|
1636
1758
|
'address': address,
|
@@ -1680,7 +1802,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1680
1802
|
# "owner_id":1
|
1681
1803
|
# }
|
1682
1804
|
#
|
1683
|
-
result = {
|
1805
|
+
result: dict = {
|
1684
1806
|
'info': fee,
|
1685
1807
|
'withdraw': {
|
1686
1808
|
'fee': None,
|
@@ -1716,7 +1838,9 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1716
1838
|
def fetch_deposit_withdraw_fees(self, codes: Strings = None, params={}):
|
1717
1839
|
"""
|
1718
1840
|
fetch deposit and withdraw fees
|
1719
|
-
|
1841
|
+
|
1842
|
+
https://apidocs.hollaex.com/#constants
|
1843
|
+
|
1720
1844
|
:param str[]|None codes: list of unified currency codes
|
1721
1845
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1722
1846
|
:returns dict: a list of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>`
|
@@ -1757,7 +1881,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1757
1881
|
# "network":"https://api.hollaex.network"
|
1758
1882
|
# }
|
1759
1883
|
#
|
1760
|
-
coins = self.
|
1884
|
+
coins = self.safe_list(response, 'coins')
|
1761
1885
|
return self.parse_deposit_withdraw_fees(coins, codes, 'symbol')
|
1762
1886
|
|
1763
1887
|
def normalize_number_if_needed(self, number):
|
@@ -1791,7 +1915,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
1791
1915
|
headers['api-signature'] = signature
|
1792
1916
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1793
1917
|
|
1794
|
-
def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
1918
|
+
def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1795
1919
|
if response is None:
|
1796
1920
|
return None
|
1797
1921
|
if (code >= 400) and (code <= 503):
|