ccxt 4.2.76__py2.py3-none-any.whl → 4.4.48__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ccxt/__init__.py +36 -14
- ccxt/abstract/alpaca.py +4 -0
- ccxt/abstract/bigone.py +1 -1
- ccxt/abstract/binance.py +112 -48
- ccxt/abstract/binancecoinm.py +112 -48
- ccxt/abstract/binanceus.py +147 -83
- ccxt/abstract/binanceusdm.py +112 -48
- ccxt/abstract/bingx.py +133 -78
- ccxt/abstract/bitbank.py +5 -0
- ccxt/abstract/bitfinex.py +136 -65
- ccxt/abstract/bitfinex1.py +69 -0
- ccxt/abstract/bitflyer.py +1 -0
- ccxt/abstract/bitget.py +8 -1
- ccxt/abstract/bitmart.py +13 -1
- ccxt/abstract/bitopro.py +1 -0
- ccxt/abstract/bitpanda.py +0 -12
- ccxt/abstract/bitrue.py +3 -3
- ccxt/abstract/bitstamp.py +26 -3
- ccxt/abstract/blofin.py +24 -0
- ccxt/abstract/btcbox.py +1 -0
- ccxt/abstract/bybit.py +29 -14
- ccxt/abstract/cex.py +28 -29
- ccxt/abstract/coinbase.py +6 -0
- ccxt/abstract/coinbaseadvanced.py +94 -0
- ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
- ccxt/abstract/coinbaseinternational.py +1 -1
- ccxt/abstract/coincatch.py +94 -0
- ccxt/abstract/coinex.py +233 -123
- ccxt/abstract/coinmetro.py +1 -0
- ccxt/abstract/cryptocom.py +14 -0
- ccxt/abstract/defx.py +69 -0
- ccxt/abstract/deribit.py +1 -0
- ccxt/abstract/digifinex.py +1 -0
- ccxt/abstract/ellipx.py +25 -0
- ccxt/abstract/gate.py +20 -0
- ccxt/abstract/gateio.py +20 -0
- ccxt/abstract/gemini.py +1 -0
- ccxt/abstract/hashkey.py +67 -0
- ccxt/abstract/hyperliquid.py +1 -1
- ccxt/abstract/independentreserve.py +6 -0
- ccxt/abstract/kraken.py +4 -3
- ccxt/abstract/krakenfutures.py +4 -0
- ccxt/abstract/kucoin.py +25 -0
- ccxt/abstract/kucoinfutures.py +35 -0
- ccxt/abstract/luno.py +2 -0
- ccxt/abstract/mexc.py +4 -0
- ccxt/abstract/myokx.py +340 -0
- ccxt/abstract/oceanex.py +5 -0
- ccxt/abstract/okx.py +30 -0
- ccxt/abstract/onetrading.py +0 -12
- ccxt/abstract/oxfun.py +34 -0
- ccxt/abstract/paradex.py +40 -0
- ccxt/abstract/phemex.py +1 -0
- ccxt/abstract/upbit.py +4 -0
- ccxt/abstract/vertex.py +19 -0
- ccxt/abstract/whitebit.py +31 -1
- ccxt/abstract/woo.py +6 -2
- ccxt/abstract/woofipro.py +119 -0
- ccxt/abstract/xt.py +153 -0
- ccxt/abstract/zonda.py +6 -0
- ccxt/ace.py +164 -60
- ccxt/alpaca.py +727 -63
- ccxt/ascendex.py +395 -249
- ccxt/async_support/__init__.py +36 -14
- ccxt/async_support/ace.py +164 -60
- ccxt/async_support/alpaca.py +727 -63
- ccxt/async_support/ascendex.py +396 -249
- ccxt/async_support/base/exchange.py +531 -155
- ccxt/async_support/base/ws/aiohttp_client.py +28 -5
- ccxt/async_support/base/ws/cache.py +3 -2
- ccxt/async_support/base/ws/client.py +26 -5
- ccxt/async_support/base/ws/fast_client.py +4 -3
- ccxt/async_support/base/ws/functions.py +1 -1
- ccxt/async_support/base/ws/future.py +40 -31
- ccxt/async_support/base/ws/order_book_side.py +3 -0
- ccxt/async_support/bequant.py +1 -1
- ccxt/async_support/bigone.py +329 -202
- ccxt/async_support/binance.py +3513 -1511
- ccxt/async_support/binancecoinm.py +2 -1
- ccxt/async_support/binanceus.py +12 -1
- ccxt/async_support/binanceusdm.py +3 -1
- ccxt/async_support/bingx.py +3105 -881
- ccxt/async_support/bit2c.py +119 -38
- ccxt/async_support/bitbank.py +215 -76
- ccxt/async_support/bitbns.py +124 -53
- ccxt/async_support/bitfinex.py +3236 -1078
- ccxt/async_support/bitfinex1.py +1711 -0
- ccxt/async_support/bitflyer.py +239 -50
- ccxt/async_support/bitget.py +1513 -563
- ccxt/async_support/bithumb.py +201 -67
- ccxt/async_support/bitmart.py +1320 -435
- ccxt/async_support/bitmex.py +308 -111
- ccxt/async_support/bitopro.py +256 -96
- ccxt/async_support/bitrue.py +365 -233
- ccxt/async_support/bitso.py +201 -89
- ccxt/async_support/bitstamp.py +438 -269
- ccxt/async_support/bitteam.py +179 -73
- ccxt/async_support/bitvavo.py +180 -70
- ccxt/async_support/bl3p.py +92 -25
- ccxt/async_support/blockchaincom.py +193 -79
- ccxt/async_support/blofin.py +403 -150
- ccxt/async_support/btcalpha.py +161 -55
- ccxt/async_support/btcbox.py +250 -34
- ccxt/async_support/btcmarkets.py +232 -85
- ccxt/async_support/btcturk.py +159 -60
- ccxt/async_support/bybit.py +2326 -1255
- ccxt/async_support/cex.py +1409 -1329
- ccxt/async_support/coinbase.py +1455 -288
- ccxt/async_support/coinbaseadvanced.py +17 -0
- ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/async_support/coinbaseinternational.py +428 -88
- ccxt/async_support/coincatch.py +5152 -0
- ccxt/async_support/coincheck.py +121 -38
- ccxt/async_support/coinex.py +4020 -3339
- ccxt/async_support/coinlist.py +273 -116
- ccxt/async_support/coinmate.py +204 -97
- ccxt/async_support/coinmetro.py +203 -110
- ccxt/async_support/coinone.py +142 -68
- ccxt/async_support/coinsph.py +206 -89
- ccxt/async_support/coinspot.py +137 -62
- ccxt/async_support/cryptocom.py +515 -185
- ccxt/async_support/currencycom.py +203 -85
- ccxt/async_support/defx.py +2066 -0
- ccxt/async_support/delta.py +467 -158
- ccxt/async_support/deribit.py +558 -324
- ccxt/async_support/digifinex.py +340 -223
- ccxt/async_support/ellipx.py +1826 -0
- ccxt/async_support/exmo.py +259 -128
- ccxt/async_support/gate.py +1473 -464
- ccxt/async_support/gemini.py +206 -84
- ccxt/async_support/hashkey.py +4164 -0
- ccxt/async_support/hitbtc.py +334 -178
- ccxt/async_support/hollaex.py +134 -83
- ccxt/async_support/htx.py +1095 -563
- ccxt/async_support/huobijp.py +105 -56
- ccxt/async_support/hyperliquid.py +1634 -269
- ccxt/async_support/idex.py +148 -95
- ccxt/async_support/independentreserve.py +236 -31
- ccxt/async_support/indodax.py +165 -62
- ccxt/async_support/kraken.py +871 -354
- ccxt/async_support/krakenfutures.py +324 -100
- ccxt/async_support/kucoin.py +1050 -355
- ccxt/async_support/kucoinfutures.py +1004 -149
- ccxt/async_support/kuna.py +138 -106
- ccxt/async_support/latoken.py +135 -79
- ccxt/async_support/lbank.py +290 -113
- ccxt/async_support/luno.py +112 -62
- ccxt/async_support/lykke.py +104 -55
- ccxt/async_support/mercado.py +36 -29
- ccxt/async_support/mexc.py +995 -429
- ccxt/async_support/myokx.py +43 -0
- ccxt/async_support/ndax.py +163 -82
- ccxt/async_support/novadax.py +121 -75
- ccxt/async_support/oceanex.py +175 -59
- ccxt/async_support/okcoin.py +222 -163
- ccxt/async_support/okx.py +1777 -455
- ccxt/async_support/onetrading.py +132 -414
- ccxt/async_support/oxfun.py +2832 -0
- ccxt/async_support/p2b.py +79 -51
- ccxt/async_support/paradex.py +2017 -0
- ccxt/async_support/paymium.py +56 -32
- ccxt/async_support/phemex.py +572 -196
- ccxt/async_support/poloniex.py +218 -95
- ccxt/async_support/poloniexfutures.py +260 -92
- ccxt/async_support/probit.py +143 -110
- ccxt/async_support/timex.py +123 -70
- ccxt/async_support/tokocrypto.py +129 -93
- ccxt/async_support/tradeogre.py +39 -25
- ccxt/async_support/upbit.py +322 -113
- ccxt/async_support/vertex.py +2983 -0
- ccxt/async_support/wavesexchange.py +227 -173
- ccxt/async_support/wazirx.py +145 -65
- ccxt/async_support/whitebit.py +533 -138
- ccxt/async_support/woo.py +1155 -295
- ccxt/async_support/woofipro.py +2716 -0
- ccxt/async_support/xt.py +4628 -0
- ccxt/async_support/yobit.py +160 -92
- ccxt/async_support/zaif.py +80 -33
- ccxt/async_support/zonda.py +140 -69
- ccxt/base/errors.py +51 -20
- ccxt/base/exchange.py +1729 -482
- ccxt/base/precise.py +10 -0
- ccxt/base/types.py +223 -4
- ccxt/bequant.py +1 -1
- ccxt/bigone.py +329 -202
- ccxt/binance.py +3513 -1511
- ccxt/binancecoinm.py +2 -1
- ccxt/binanceus.py +12 -1
- ccxt/binanceusdm.py +3 -1
- ccxt/bingx.py +3105 -881
- ccxt/bit2c.py +119 -38
- ccxt/bitbank.py +215 -76
- ccxt/bitbns.py +124 -53
- ccxt/bitfinex.py +3235 -1078
- ccxt/bitfinex1.py +1710 -0
- ccxt/bitflyer.py +239 -50
- ccxt/bitget.py +1513 -563
- ccxt/bithumb.py +200 -67
- ccxt/bitmart.py +1320 -435
- ccxt/bitmex.py +308 -111
- ccxt/bitopro.py +256 -96
- ccxt/bitrue.py +365 -233
- ccxt/bitso.py +201 -89
- ccxt/bitstamp.py +438 -269
- ccxt/bitteam.py +179 -73
- ccxt/bitvavo.py +180 -70
- ccxt/bl3p.py +92 -25
- ccxt/blockchaincom.py +193 -79
- ccxt/blofin.py +403 -150
- ccxt/btcalpha.py +161 -55
- ccxt/btcbox.py +250 -34
- ccxt/btcmarkets.py +232 -85
- ccxt/btcturk.py +159 -60
- ccxt/bybit.py +2326 -1255
- ccxt/cex.py +1408 -1329
- ccxt/coinbase.py +1455 -288
- ccxt/coinbaseadvanced.py +17 -0
- ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/coinbaseinternational.py +428 -88
- ccxt/coincatch.py +5152 -0
- ccxt/coincheck.py +121 -38
- ccxt/coinex.py +4020 -3339
- ccxt/coinlist.py +273 -116
- ccxt/coinmate.py +204 -97
- ccxt/coinmetro.py +203 -110
- ccxt/coinone.py +142 -68
- ccxt/coinsph.py +206 -89
- ccxt/coinspot.py +137 -62
- ccxt/cryptocom.py +515 -185
- ccxt/currencycom.py +203 -85
- ccxt/defx.py +2065 -0
- ccxt/delta.py +467 -158
- ccxt/deribit.py +558 -324
- ccxt/digifinex.py +340 -223
- ccxt/ellipx.py +1826 -0
- ccxt/exmo.py +259 -128
- ccxt/gate.py +1473 -464
- ccxt/gemini.py +206 -84
- ccxt/hashkey.py +4164 -0
- ccxt/hitbtc.py +334 -178
- ccxt/hollaex.py +134 -83
- ccxt/htx.py +1095 -563
- ccxt/huobijp.py +105 -56
- ccxt/hyperliquid.py +1633 -269
- ccxt/idex.py +148 -95
- ccxt/independentreserve.py +235 -31
- ccxt/indodax.py +165 -62
- ccxt/kraken.py +871 -354
- ccxt/krakenfutures.py +324 -100
- ccxt/kucoin.py +1050 -355
- ccxt/kucoinfutures.py +1004 -149
- ccxt/kuna.py +138 -106
- ccxt/latoken.py +135 -79
- ccxt/lbank.py +290 -113
- ccxt/luno.py +112 -62
- ccxt/lykke.py +104 -55
- ccxt/mercado.py +36 -29
- ccxt/mexc.py +994 -429
- ccxt/myokx.py +43 -0
- ccxt/ndax.py +163 -82
- ccxt/novadax.py +121 -75
- ccxt/oceanex.py +175 -59
- ccxt/okcoin.py +222 -163
- ccxt/okx.py +1777 -455
- ccxt/onetrading.py +132 -414
- ccxt/oxfun.py +2831 -0
- ccxt/p2b.py +79 -51
- ccxt/paradex.py +2017 -0
- ccxt/paymium.py +56 -32
- ccxt/phemex.py +572 -196
- ccxt/poloniex.py +218 -95
- ccxt/poloniexfutures.py +260 -92
- ccxt/pro/__init__.py +29 -5
- ccxt/pro/alpaca.py +32 -17
- ccxt/pro/ascendex.py +63 -15
- ccxt/pro/bequant.py +4 -0
- ccxt/pro/binance.py +1596 -329
- ccxt/pro/binancecoinm.py +1 -0
- ccxt/pro/binanceus.py +2 -9
- ccxt/pro/binanceusdm.py +2 -0
- ccxt/pro/bingx.py +527 -134
- ccxt/pro/bitcoincom.py +4 -1
- ccxt/pro/bitfinex.py +731 -266
- ccxt/pro/bitfinex1.py +635 -0
- ccxt/pro/bitget.py +726 -357
- ccxt/pro/bithumb.py +380 -0
- ccxt/pro/bitmart.py +138 -39
- ccxt/pro/bitmex.py +199 -40
- ccxt/pro/bitopro.py +25 -13
- ccxt/pro/bitrue.py +31 -32
- ccxt/pro/bitstamp.py +7 -6
- ccxt/pro/bitvavo.py +204 -82
- ccxt/pro/blockchaincom.py +30 -17
- ccxt/pro/blofin.py +692 -0
- ccxt/pro/bybit.py +791 -82
- ccxt/pro/cex.py +99 -51
- ccxt/pro/coinbase.py +220 -30
- ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
- ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
- ccxt/pro/coinbaseinternational.py +193 -30
- ccxt/pro/coincatch.py +1464 -0
- ccxt/pro/coincheck.py +11 -6
- ccxt/pro/coinex.py +967 -661
- ccxt/pro/coinone.py +17 -10
- ccxt/pro/cryptocom.py +446 -66
- ccxt/pro/currencycom.py +11 -10
- ccxt/pro/defx.py +832 -0
- ccxt/pro/deribit.py +168 -32
- ccxt/pro/exmo.py +253 -21
- ccxt/pro/gate.py +729 -64
- ccxt/pro/gemini.py +44 -26
- ccxt/pro/hashkey.py +802 -0
- ccxt/pro/hitbtc.py +208 -103
- ccxt/pro/hollaex.py +25 -9
- ccxt/pro/htx.py +83 -39
- ccxt/pro/huobijp.py +17 -16
- ccxt/pro/hyperliquid.py +502 -31
- ccxt/pro/idex.py +28 -13
- ccxt/pro/independentreserve.py +21 -16
- ccxt/pro/kraken.py +298 -51
- ccxt/pro/krakenfutures.py +166 -75
- ccxt/pro/kucoin.py +395 -77
- ccxt/pro/kucoinfutures.py +400 -99
- ccxt/pro/lbank.py +52 -31
- ccxt/pro/luno.py +12 -10
- ccxt/pro/mexc.py +400 -50
- ccxt/pro/myokx.py +28 -0
- ccxt/pro/ndax.py +25 -12
- ccxt/pro/okcoin.py +28 -9
- ccxt/pro/okx.py +935 -124
- ccxt/pro/onetrading.py +41 -24
- ccxt/pro/oxfun.py +1054 -0
- ccxt/pro/p2b.py +100 -24
- ccxt/pro/paradex.py +352 -0
- ccxt/pro/phemex.py +93 -34
- ccxt/pro/poloniex.py +129 -50
- ccxt/pro/poloniexfutures.py +53 -32
- ccxt/pro/probit.py +93 -86
- ccxt/pro/upbit.py +401 -8
- ccxt/pro/vertex.py +943 -0
- ccxt/pro/wazirx.py +46 -28
- ccxt/pro/whitebit.py +65 -12
- ccxt/pro/woo.py +486 -70
- ccxt/pro/woofipro.py +1271 -0
- ccxt/pro/xt.py +1067 -0
- ccxt/probit.py +143 -110
- ccxt/static_dependencies/__init__.py +1 -1
- ccxt/static_dependencies/lark/__init__.py +38 -0
- ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
- ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
- ccxt/static_dependencies/lark/ast_utils.py +59 -0
- ccxt/static_dependencies/lark/common.py +86 -0
- ccxt/static_dependencies/lark/exceptions.py +292 -0
- ccxt/static_dependencies/lark/grammar.py +130 -0
- ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
- ccxt/static_dependencies/lark/indenter.py +143 -0
- ccxt/static_dependencies/lark/lark.py +658 -0
- ccxt/static_dependencies/lark/lexer.py +678 -0
- ccxt/static_dependencies/lark/load_grammar.py +1428 -0
- ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
- ccxt/static_dependencies/lark/parser_frontends.py +257 -0
- ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
- ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
- ccxt/static_dependencies/lark/parsers/earley.py +314 -0
- ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
- ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
- ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
- ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
- ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
- ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
- ccxt/static_dependencies/lark/py.typed +0 -0
- ccxt/static_dependencies/lark/reconstruct.py +107 -0
- ccxt/static_dependencies/lark/tools/__init__.py +70 -0
- ccxt/static_dependencies/lark/tools/nearley.py +202 -0
- ccxt/static_dependencies/lark/tools/serialize.py +32 -0
- ccxt/static_dependencies/lark/tools/standalone.py +196 -0
- ccxt/static_dependencies/lark/tree.py +267 -0
- ccxt/static_dependencies/lark/tree_matcher.py +186 -0
- ccxt/static_dependencies/lark/tree_templates.py +180 -0
- ccxt/static_dependencies/lark/utils.py +343 -0
- ccxt/static_dependencies/lark/visitors.py +596 -0
- ccxt/static_dependencies/marshmallow/__init__.py +81 -0
- ccxt/static_dependencies/marshmallow/base.py +65 -0
- ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
- ccxt/static_dependencies/marshmallow/decorators.py +231 -0
- ccxt/static_dependencies/marshmallow/error_store.py +60 -0
- ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
- ccxt/static_dependencies/marshmallow/fields.py +2114 -0
- ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
- ccxt/static_dependencies/marshmallow/py.typed +0 -0
- ccxt/static_dependencies/marshmallow/schema.py +1228 -0
- ccxt/static_dependencies/marshmallow/types.py +12 -0
- ccxt/static_dependencies/marshmallow/utils.py +378 -0
- ccxt/static_dependencies/marshmallow/validate.py +678 -0
- ccxt/static_dependencies/marshmallow/warnings.py +2 -0
- ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
- ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
- ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
- ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
- ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
- ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
- ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
- ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
- ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- ccxt/static_dependencies/starknet/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
- ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
- ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
- ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
- ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
- ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
- ccxt/static_dependencies/starknet/common.py +15 -0
- ccxt/static_dependencies/starknet/constants.py +39 -0
- ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
- ccxt/static_dependencies/starknet/hash/address.py +79 -0
- ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
- ccxt/static_dependencies/starknet/hash/selector.py +16 -0
- ccxt/static_dependencies/starknet/hash/storage.py +12 -0
- ccxt/static_dependencies/starknet/hash/utils.py +78 -0
- ccxt/static_dependencies/starknet/models/__init__.py +0 -0
- ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
- ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
- ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
- ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
- ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
- ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
- ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
- ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
- ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
- ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
- ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
- ccxt/static_dependencies/starknet/utils/schema.py +13 -0
- ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
- ccxt/static_dependencies/starkware/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
- ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
- ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
- ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
- ccxt/static_dependencies/sympy/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
- ccxt/static_dependencies/sympy/external/__init__.py +0 -0
- ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
- ccxt/static_dependencies/sympy/external/importtools.py +187 -0
- ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
- ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
- ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
- ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
- ccxt/test/{test_async.py → tests_async.py} +465 -407
- ccxt/test/tests_helpers.py +285 -0
- ccxt/test/tests_init.py +39 -0
- ccxt/test/{test_sync.py → tests_sync.py} +465 -409
- ccxt/timex.py +123 -70
- ccxt/tokocrypto.py +129 -93
- ccxt/tradeogre.py +39 -25
- ccxt/upbit.py +322 -113
- ccxt/vertex.py +2983 -0
- ccxt/wavesexchange.py +227 -173
- ccxt/wazirx.py +145 -65
- ccxt/whitebit.py +533 -138
- ccxt/woo.py +1155 -295
- ccxt/woofipro.py +2716 -0
- ccxt/xt.py +4627 -0
- ccxt/yobit.py +159 -92
- ccxt/zaif.py +80 -33
- ccxt/zonda.py +140 -69
- ccxt-4.4.48.dist-info/LICENSE.txt +21 -0
- ccxt-4.4.48.dist-info/METADATA +646 -0
- ccxt-4.4.48.dist-info/RECORD +669 -0
- {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/WHEEL +1 -1
- ccxt/abstract/bitbay.py +0 -47
- ccxt/abstract/bitfinex2.py +0 -139
- ccxt/abstract/hitbtc3.py +0 -115
- ccxt/async_support/bitbay.py +0 -17
- ccxt/async_support/bitfinex2.py +0 -3496
- ccxt/async_support/flowbtc.py +0 -34
- ccxt/bitbay.py +0 -17
- ccxt/bitfinex2.py +0 -3496
- ccxt/flowbtc.py +0 -34
- ccxt/hitbtc3.py +0 -16
- ccxt/pro/bitfinex2.py +0 -1081
- ccxt/test/base/__init__.py +0 -28
- ccxt/test/base/test_account.py +0 -26
- ccxt/test/base/test_balance.py +0 -56
- ccxt/test/base/test_borrow_interest.py +0 -35
- ccxt/test/base/test_borrow_rate.py +0 -32
- ccxt/test/base/test_calculate_fee.py +0 -51
- ccxt/test/base/test_crypto.py +0 -127
- ccxt/test/base/test_currency.py +0 -76
- ccxt/test/base/test_datetime.py +0 -103
- ccxt/test/base/test_decimal_to_precision.py +0 -392
- ccxt/test/base/test_deep_extend.py +0 -68
- ccxt/test/base/test_deposit_withdrawal.py +0 -50
- ccxt/test/base/test_exchange_datetime_functions.py +0 -76
- ccxt/test/base/test_funding_rate_history.py +0 -29
- ccxt/test/base/test_last_price.py +0 -32
- ccxt/test/base/test_ledger_entry.py +0 -45
- ccxt/test/base/test_ledger_item.py +0 -48
- ccxt/test/base/test_leverage_tier.py +0 -33
- ccxt/test/base/test_margin_mode.py +0 -24
- ccxt/test/base/test_margin_modification.py +0 -35
- ccxt/test/base/test_market.py +0 -190
- ccxt/test/base/test_number.py +0 -411
- ccxt/test/base/test_ohlcv.py +0 -32
- ccxt/test/base/test_open_interest.py +0 -32
- ccxt/test/base/test_order.py +0 -64
- ccxt/test/base/test_order_book.py +0 -63
- ccxt/test/base/test_position.py +0 -60
- ccxt/test/base/test_shared_methods.py +0 -345
- ccxt/test/base/test_status.py +0 -24
- ccxt/test/base/test_throttle.py +0 -126
- ccxt/test/base/test_ticker.py +0 -86
- ccxt/test/base/test_trade.py +0 -47
- ccxt/test/base/test_trading_fee.py +0 -26
- ccxt/test/base/test_transaction.py +0 -39
- ccxt-4.2.76.dist-info/METADATA +0 -626
- ccxt-4.2.76.dist-info/RECORD +0 -534
- {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
ccxt/bitbns.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.bitbns 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, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import ArgumentsRequired
|
@@ -39,8 +39,12 @@ class bitbns(Exchange, ImplicitAPI):
|
|
39
39
|
'cancelAllOrders': False,
|
40
40
|
'cancelOrder': True,
|
41
41
|
'createOrder': True,
|
42
|
+
'createStopOrder': True,
|
43
|
+
'createTriggerOrder': True,
|
42
44
|
'fetchBalance': True,
|
43
45
|
'fetchDepositAddress': True,
|
46
|
+
'fetchDepositAddresses': False,
|
47
|
+
'fetchDepositAddressesByNetwork': False,
|
44
48
|
'fetchDeposits': True,
|
45
49
|
'fetchFundingHistory': False,
|
46
50
|
'fetchFundingRate': False,
|
@@ -72,7 +76,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
72
76
|
},
|
73
77
|
'hostname': 'bitbns.com',
|
74
78
|
'urls': {
|
75
|
-
'logo': 'https://
|
79
|
+
'logo': 'https://github.com/user-attachments/assets/a5b9a562-cdd8-4bea-9fa7-fd24c1dad3d9',
|
76
80
|
'api': {
|
77
81
|
'www': 'https://{hostname}',
|
78
82
|
'v1': 'https://api.{hostname}/api/trade/v1',
|
@@ -147,6 +151,66 @@ class bitbns(Exchange, ImplicitAPI):
|
|
147
151
|
},
|
148
152
|
},
|
149
153
|
'precisionMode': TICK_SIZE,
|
154
|
+
'features': {
|
155
|
+
'spot': {
|
156
|
+
'sandbox': False,
|
157
|
+
'createOrder': {
|
158
|
+
'marginMode': False,
|
159
|
+
'triggerPrice': True,
|
160
|
+
'triggerPriceType': None,
|
161
|
+
'triggerDirection': False,
|
162
|
+
'stopLossPrice': False, # todo with triggerPrice
|
163
|
+
'takeProfitPrice': False, # todo with triggerPrice
|
164
|
+
'attachedStopLossTakeProfit': None,
|
165
|
+
'timeInForce': {
|
166
|
+
'IOC': False,
|
167
|
+
'FOK': False,
|
168
|
+
'PO': False,
|
169
|
+
'GTD': False,
|
170
|
+
},
|
171
|
+
'hedged': False,
|
172
|
+
'trailing': False, # todo recheck
|
173
|
+
'leverage': False,
|
174
|
+
'marketBuyRequiresPrice': False,
|
175
|
+
'marketBuyByCost': False,
|
176
|
+
'selfTradePrevention': False,
|
177
|
+
'iceberg': False,
|
178
|
+
},
|
179
|
+
'createOrders': None,
|
180
|
+
'fetchMyTrades': {
|
181
|
+
'marginMode': False,
|
182
|
+
'limit': None,
|
183
|
+
'daysBack': None,
|
184
|
+
'untilDays': None,
|
185
|
+
},
|
186
|
+
'fetchOrder': {
|
187
|
+
'marginMode': False,
|
188
|
+
'trigger': False,
|
189
|
+
'trailing': False,
|
190
|
+
},
|
191
|
+
'fetchOpenOrders': {
|
192
|
+
'marginMode': False,
|
193
|
+
'limit': None,
|
194
|
+
'trigger': True,
|
195
|
+
'trailing': False,
|
196
|
+
},
|
197
|
+
'fetchOrders': None,
|
198
|
+
'fetchClosedOrders': None,
|
199
|
+
# todo: implement fetchOHLCV
|
200
|
+
'fetchOHLCV': {
|
201
|
+
'limit': 100,
|
202
|
+
},
|
203
|
+
},
|
204
|
+
# todo: implement swap methods
|
205
|
+
'swap': {
|
206
|
+
'linear': None,
|
207
|
+
'inverse': None,
|
208
|
+
},
|
209
|
+
'future': {
|
210
|
+
'linear': None,
|
211
|
+
'inverse': None,
|
212
|
+
},
|
213
|
+
},
|
150
214
|
'exceptions': {
|
151
215
|
'exact': {
|
152
216
|
'400': BadRequest, # {"msg":"Invalid Request","status":-1,"code":400}
|
@@ -186,7 +250,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
186
250
|
'info': response,
|
187
251
|
}
|
188
252
|
|
189
|
-
def fetch_markets(self, params={}):
|
253
|
+
def fetch_markets(self, params={}) -> List[Market]:
|
190
254
|
"""
|
191
255
|
retrieves data on all markets for bitbns
|
192
256
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -224,11 +288,11 @@ class bitbns(Exchange, ImplicitAPI):
|
|
224
288
|
quoteId = self.safe_string(market, 'quote')
|
225
289
|
base = self.safe_currency_code(baseId)
|
226
290
|
quote = self.safe_currency_code(quoteId)
|
227
|
-
marketPrecision = self.
|
228
|
-
marketLimits = self.
|
229
|
-
amountLimits = self.
|
230
|
-
priceLimits = self.
|
231
|
-
costLimits = self.
|
291
|
+
marketPrecision = self.safe_dict(market, 'precision', {})
|
292
|
+
marketLimits = self.safe_dict(market, 'limits', {})
|
293
|
+
amountLimits = self.safe_dict(marketLimits, 'amount', {})
|
294
|
+
priceLimits = self.safe_dict(marketLimits, 'price', {})
|
295
|
+
costLimits = self.safe_dict(marketLimits, 'cost', {})
|
232
296
|
usdt = (quoteId == 'USDT')
|
233
297
|
# INR markets don't need a _INR prefix
|
234
298
|
uppercaseId = (baseId + '_' + quoteId) if usdt else baseId
|
@@ -294,7 +358,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
294
358
|
"""
|
295
359
|
self.load_markets()
|
296
360
|
market = self.market(symbol)
|
297
|
-
request = {
|
361
|
+
request: dict = {
|
298
362
|
'symbol': market['id'],
|
299
363
|
}
|
300
364
|
if limit is not None:
|
@@ -320,7 +384,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
320
384
|
timestamp = self.safe_integer(response, 'timestamp')
|
321
385
|
return self.parse_order_book(response, market['symbol'], timestamp)
|
322
386
|
|
323
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
387
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
324
388
|
#
|
325
389
|
# {
|
326
390
|
# "symbol":"BTC/INR",
|
@@ -423,12 +487,12 @@ class bitbns(Exchange, ImplicitAPI):
|
|
423
487
|
|
424
488
|
def parse_balance(self, response) -> Balances:
|
425
489
|
timestamp = None
|
426
|
-
result = {
|
490
|
+
result: dict = {
|
427
491
|
'info': response,
|
428
492
|
'timestamp': timestamp,
|
429
493
|
'datetime': self.iso8601(timestamp),
|
430
494
|
}
|
431
|
-
data = self.
|
495
|
+
data = self.safe_dict(response, 'data', {})
|
432
496
|
keys = list(data.keys())
|
433
497
|
for i in range(0, len(keys)):
|
434
498
|
key = keys[i]
|
@@ -474,7 +538,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
474
538
|
return self.parse_balance(response)
|
475
539
|
|
476
540
|
def parse_status(self, status):
|
477
|
-
statuses = {
|
541
|
+
statuses: dict = {
|
478
542
|
'-1': 'cancelled',
|
479
543
|
'0': 'open',
|
480
544
|
'1': 'open',
|
@@ -488,7 +552,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
488
552
|
}
|
489
553
|
return self.safe_string(statuses, status, status)
|
490
554
|
|
491
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
555
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
492
556
|
#
|
493
557
|
# createOrder
|
494
558
|
#
|
@@ -548,7 +612,6 @@ class bitbns(Exchange, ImplicitAPI):
|
|
548
612
|
'postOnly': None,
|
549
613
|
'side': side,
|
550
614
|
'price': self.safe_string(order, 'rate'),
|
551
|
-
'stopPrice': triggerPrice,
|
552
615
|
'triggerPrice': triggerPrice,
|
553
616
|
'amount': self.safe_string(order, 'btc'),
|
554
617
|
'cost': None,
|
@@ -567,17 +630,19 @@ class bitbns(Exchange, ImplicitAPI):
|
|
567
630
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
568
631
|
"""
|
569
632
|
create a trade order
|
570
|
-
|
571
|
-
|
633
|
+
|
634
|
+
https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/place-orders
|
635
|
+
https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-1/market-orders-quantity # market orders
|
636
|
+
|
572
637
|
:param str symbol: unified symbol of the market to create an order in
|
573
638
|
:param str type: 'market' or 'limit'
|
574
639
|
:param str side: 'buy' or 'sell'
|
575
640
|
:param float amount: how much of currency you want to trade in units of base currency
|
576
|
-
:param float [price]: the price at which the order is to be
|
641
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
577
642
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
578
643
|
:param float [params.triggerPrice]: the price at which a trigger order is triggered at
|
579
|
-
|
580
|
-
|
644
|
+
|
645
|
+
EXCHANGE SPECIFIC PARAMETERS
|
581
646
|
:param float [params.target_rate]: *requires params.trail_rate when set, type must be 'limit'* a bracket order is placed when set
|
582
647
|
:param float [params.trail_rate]: *requires params.target_rate when set, type must be 'limit'* a bracket order is placed when set
|
583
648
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -588,7 +653,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
588
653
|
targetRate = self.safe_string(params, 'target_rate')
|
589
654
|
trailRate = self.safe_string(params, 'trail_rate')
|
590
655
|
params = self.omit(params, ['triggerPrice', 'stopPrice', 'trail_rate', 'target_rate', 't_rate'])
|
591
|
-
request = {
|
656
|
+
request: dict = {
|
592
657
|
'side': side.upper(),
|
593
658
|
'symbol': market['uppercaseId'],
|
594
659
|
'quantity': self.amount_to_precision(symbol, amount),
|
@@ -623,8 +688,10 @@ class bitbns(Exchange, ImplicitAPI):
|
|
623
688
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
624
689
|
"""
|
625
690
|
cancels an open order
|
626
|
-
|
627
|
-
|
691
|
+
|
692
|
+
https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/cancel-orders
|
693
|
+
https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-1/cancel-stop-loss-orders
|
694
|
+
|
628
695
|
:param str id: order id
|
629
696
|
:param str symbol: unified symbol of the market the order was made in
|
630
697
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -635,9 +702,9 @@ class bitbns(Exchange, ImplicitAPI):
|
|
635
702
|
raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol argument')
|
636
703
|
self.load_markets()
|
637
704
|
market = self.market(symbol)
|
638
|
-
isTrigger = self.
|
705
|
+
isTrigger = self.safe_bool_2(params, 'trigger', 'stop')
|
639
706
|
params = self.omit(params, ['trigger', 'stop'])
|
640
|
-
request = {
|
707
|
+
request: dict = {
|
641
708
|
'entry_id': id,
|
642
709
|
'symbol': market['uppercaseId'],
|
643
710
|
}
|
@@ -652,7 +719,9 @@ class bitbns(Exchange, ImplicitAPI):
|
|
652
719
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
653
720
|
"""
|
654
721
|
fetches information on an order made by the user
|
655
|
-
|
722
|
+
|
723
|
+
https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-1/order-status
|
724
|
+
|
656
725
|
:param str id: order id
|
657
726
|
:param str symbol: unified symbol of the market the order was made in
|
658
727
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -662,11 +731,11 @@ class bitbns(Exchange, ImplicitAPI):
|
|
662
731
|
raise ArgumentsRequired(self.id + ' fetchOrder() requires a symbol argument')
|
663
732
|
self.load_markets()
|
664
733
|
market = self.market(symbol)
|
665
|
-
request = {
|
734
|
+
request: dict = {
|
666
735
|
'symbol': market['id'],
|
667
736
|
'entry_id': id,
|
668
737
|
}
|
669
|
-
trigger = self.
|
738
|
+
trigger = self.safe_bool_2(params, 'trigger', 'stop')
|
670
739
|
if trigger:
|
671
740
|
raise BadRequest(self.id + ' fetchOrder cannot fetch stop orders')
|
672
741
|
response = self.v1PostOrderStatusSymbol(self.extend(request, params))
|
@@ -695,15 +764,17 @@ class bitbns(Exchange, ImplicitAPI):
|
|
695
764
|
# "code":200
|
696
765
|
# }
|
697
766
|
#
|
698
|
-
data = self.
|
699
|
-
first = self.
|
767
|
+
data = self.safe_list(response, 'data', [])
|
768
|
+
first = self.safe_dict(data, 0)
|
700
769
|
return self.parse_order(first, market)
|
701
770
|
|
702
771
|
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
703
772
|
"""
|
704
773
|
fetch all unfilled currently open orders
|
705
|
-
|
706
|
-
|
774
|
+
|
775
|
+
https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/order-status-limit
|
776
|
+
https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/order-status-limit/order-status-stop-limit
|
777
|
+
|
707
778
|
:param str symbol: unified market symbol
|
708
779
|
:param int [since]: the earliest time in ms to fetch open orders for
|
709
780
|
:param int [limit]: the maximum number of open orders structures to retrieve
|
@@ -715,10 +786,10 @@ class bitbns(Exchange, ImplicitAPI):
|
|
715
786
|
raise ArgumentsRequired(self.id + ' fetchOpenOrders() requires a symbol argument')
|
716
787
|
self.load_markets()
|
717
788
|
market = self.market(symbol)
|
718
|
-
isTrigger = self.
|
789
|
+
isTrigger = self.safe_bool_2(params, 'trigger', 'stop')
|
719
790
|
params = self.omit(params, ['trigger', 'stop'])
|
720
791
|
quoteSide = 'usdtListOpen' if (market['quoteId'] == 'USDT') else 'listOpen'
|
721
|
-
request = {
|
792
|
+
request: dict = {
|
722
793
|
'symbol': market['uppercaseId'],
|
723
794
|
'page': 0,
|
724
795
|
'side': (quoteSide + 'StopOrders') if isTrigger else (quoteSide + 'Orders'),
|
@@ -744,10 +815,10 @@ class bitbns(Exchange, ImplicitAPI):
|
|
744
815
|
# "code":200
|
745
816
|
# }
|
746
817
|
#
|
747
|
-
data = self.
|
818
|
+
data = self.safe_list(response, 'data', [])
|
748
819
|
return self.parse_orders(data, market, since, limit)
|
749
820
|
|
750
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
821
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
751
822
|
#
|
752
823
|
# fetchMyTrades
|
753
824
|
#
|
@@ -836,7 +907,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
836
907
|
raise ArgumentsRequired(self.id + ' fetchMyTrades() requires a symbol argument')
|
837
908
|
self.load_markets()
|
838
909
|
market = self.market(symbol)
|
839
|
-
request = {
|
910
|
+
request: dict = {
|
840
911
|
'symbol': market['id'],
|
841
912
|
'page': 0,
|
842
913
|
}
|
@@ -884,7 +955,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
884
955
|
# "code": 200
|
885
956
|
# }
|
886
957
|
#
|
887
|
-
data = self.
|
958
|
+
data = self.safe_list(response, 'data', [])
|
888
959
|
return self.parse_trades(data, market, since, limit)
|
889
960
|
|
890
961
|
def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
@@ -900,7 +971,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
900
971
|
raise ArgumentsRequired(self.id + ' fetchTrades() requires a symbol argument')
|
901
972
|
self.load_markets()
|
902
973
|
market = self.market(symbol)
|
903
|
-
request = {
|
974
|
+
request: dict = {
|
904
975
|
'coin': market['baseId'],
|
905
976
|
'market': market['quoteId'],
|
906
977
|
}
|
@@ -927,7 +998,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
927
998
|
raise ArgumentsRequired(self.id + ' fetchDeposits() requires a currency code argument')
|
928
999
|
self.load_markets()
|
929
1000
|
currency = self.currency(code)
|
930
|
-
request = {
|
1001
|
+
request: dict = {
|
931
1002
|
'symbol': currency['id'],
|
932
1003
|
'page': 0,
|
933
1004
|
}
|
@@ -955,7 +1026,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
955
1026
|
# "code":200
|
956
1027
|
# }
|
957
1028
|
#
|
958
|
-
data = self.
|
1029
|
+
data = self.safe_list(response, 'data', [])
|
959
1030
|
return self.parse_transactions(data, currency, since, limit)
|
960
1031
|
|
961
1032
|
def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
@@ -971,7 +1042,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
971
1042
|
raise ArgumentsRequired(self.id + ' fetchWithdrawals() requires a currency code argument')
|
972
1043
|
self.load_markets()
|
973
1044
|
currency = self.currency(code)
|
974
|
-
request = {
|
1045
|
+
request: dict = {
|
975
1046
|
'symbol': currency['id'],
|
976
1047
|
'page': 0,
|
977
1048
|
}
|
@@ -979,11 +1050,11 @@ class bitbns(Exchange, ImplicitAPI):
|
|
979
1050
|
#
|
980
1051
|
# ...
|
981
1052
|
#
|
982
|
-
data = self.
|
1053
|
+
data = self.safe_list(response, 'data', [])
|
983
1054
|
return self.parse_transactions(data, currency, since, limit)
|
984
1055
|
|
985
1056
|
def parse_transaction_status_by_type(self, status, type=None):
|
986
|
-
statusesByType = {
|
1057
|
+
statusesByType: dict = {
|
987
1058
|
'deposit': {
|
988
1059
|
'0': 'pending',
|
989
1060
|
'1': 'ok',
|
@@ -998,10 +1069,10 @@ class bitbns(Exchange, ImplicitAPI):
|
|
998
1069
|
'6': 'ok', # Completed
|
999
1070
|
},
|
1000
1071
|
}
|
1001
|
-
statuses = self.
|
1072
|
+
statuses = self.safe_dict(statusesByType, type, {})
|
1002
1073
|
return self.safe_string(statuses, status, status)
|
1003
1074
|
|
1004
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
1075
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
1005
1076
|
#
|
1006
1077
|
# fetchDeposits
|
1007
1078
|
#
|
@@ -1065,7 +1136,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
1065
1136
|
'fee': fee,
|
1066
1137
|
}
|
1067
1138
|
|
1068
|
-
def fetch_deposit_address(self, code: str, params={}):
|
1139
|
+
def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
1069
1140
|
"""
|
1070
1141
|
fetch the deposit address for a currency associated with self account
|
1071
1142
|
:param str code: unified currency code
|
@@ -1074,7 +1145,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
1074
1145
|
"""
|
1075
1146
|
self.load_markets()
|
1076
1147
|
currency = self.currency(code)
|
1077
|
-
request = {
|
1148
|
+
request: dict = {
|
1078
1149
|
'symbol': currency['id'],
|
1079
1150
|
}
|
1080
1151
|
response = self.v1PostGetCoinAddressSymbol(self.extend(request, params))
|
@@ -1088,16 +1159,16 @@ class bitbns(Exchange, ImplicitAPI):
|
|
1088
1159
|
# "error":null
|
1089
1160
|
# }
|
1090
1161
|
#
|
1091
|
-
data = self.
|
1162
|
+
data = self.safe_dict(response, 'data', {})
|
1092
1163
|
address = self.safe_string(data, 'token')
|
1093
1164
|
tag = self.safe_string(data, 'tag')
|
1094
1165
|
self.check_address(address)
|
1095
1166
|
return {
|
1167
|
+
'info': response,
|
1096
1168
|
'currency': code,
|
1169
|
+
'network': None,
|
1097
1170
|
'address': address,
|
1098
1171
|
'tag': tag,
|
1099
|
-
'network': None,
|
1100
|
-
'info': response,
|
1101
1172
|
}
|
1102
1173
|
|
1103
1174
|
def nonce(self):
|
@@ -1124,7 +1195,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
1124
1195
|
body = self.json(query)
|
1125
1196
|
else:
|
1126
1197
|
body = '{}'
|
1127
|
-
auth = {
|
1198
|
+
auth: dict = {
|
1128
1199
|
'timeStamp_nonce': nonce,
|
1129
1200
|
'body': body,
|
1130
1201
|
}
|
@@ -1135,7 +1206,7 @@ class bitbns(Exchange, ImplicitAPI):
|
|
1135
1206
|
headers['Content-Type'] = 'application/x-www-form-urlencoded'
|
1136
1207
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1137
1208
|
|
1138
|
-
def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
1209
|
+
def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1139
1210
|
if response is None:
|
1140
1211
|
return None # fallback to default error handler
|
1141
1212
|
#
|