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/independentreserve.py
CHANGED
@@ -6,8 +6,9 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.independentreserve import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade
|
9
|
+
from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees, Transaction
|
10
10
|
from typing import List
|
11
|
+
from ccxt.base.errors import BadRequest
|
11
12
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
12
13
|
from ccxt.base.precise import Precise
|
13
14
|
|
@@ -64,8 +65,11 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
64
65
|
'fetchOrder': True,
|
65
66
|
'fetchOrderBook': True,
|
66
67
|
'fetchPosition': False,
|
68
|
+
'fetchPositionHistory': False,
|
67
69
|
'fetchPositionMode': False,
|
68
70
|
'fetchPositions': False,
|
71
|
+
'fetchPositionsForSymbol': False,
|
72
|
+
'fetchPositionsHistory': False,
|
69
73
|
'fetchPositionsRisk': False,
|
70
74
|
'fetchPremiumIndexOHLCV': False,
|
71
75
|
'fetchTicker': True,
|
@@ -76,6 +80,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
76
80
|
'setLeverage': False,
|
77
81
|
'setMarginMode': False,
|
78
82
|
'setPositionMode': False,
|
83
|
+
'withdraw': True,
|
79
84
|
},
|
80
85
|
'urls': {
|
81
86
|
'logo': 'https://user-images.githubusercontent.com/51840849/87182090-1e9e9080-c2ec-11ea-8e49-563db9a38f37.jpg',
|
@@ -102,7 +107,10 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
102
107
|
'GetRecentTrades',
|
103
108
|
'GetFxRates',
|
104
109
|
'GetOrderMinimumVolumes',
|
105
|
-
'GetCryptoWithdrawalFees',
|
110
|
+
'GetCryptoWithdrawalFees', # deprecated - replaced by GetCryptoWithdrawalFees2(docs removed)
|
111
|
+
'GetCryptoWithdrawalFees2',
|
112
|
+
'GetNetworks',
|
113
|
+
'GetPrimaryCurrencyConfig2',
|
106
114
|
],
|
107
115
|
},
|
108
116
|
'private': {
|
@@ -114,8 +122,10 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
114
122
|
'GetAccounts',
|
115
123
|
'GetTransactions',
|
116
124
|
'GetFiatBankAccounts',
|
117
|
-
'GetDigitalCurrencyDepositAddress',
|
118
|
-
'
|
125
|
+
'GetDigitalCurrencyDepositAddress', # deprecated - replaced by GetDigitalCurrencyDepositAddress2(docs removed)
|
126
|
+
'GetDigitalCurrencyDepositAddress2',
|
127
|
+
'GetDigitalCurrencyDepositAddresses', # deprecated - replaced by GetDigitalCurrencyDepositAddresses2(docs removed)
|
128
|
+
'GetDigitalCurrencyDepositAddresses2',
|
119
129
|
'GetTrades',
|
120
130
|
'GetBrokerageFees',
|
121
131
|
'GetDigitalCurrencyWithdrawal',
|
@@ -125,7 +135,8 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
125
135
|
'SynchDigitalCurrencyDepositAddressWithBlockchain',
|
126
136
|
'RequestFiatWithdrawal',
|
127
137
|
'WithdrawFiatCurrency',
|
128
|
-
'WithdrawDigitalCurrency',
|
138
|
+
'WithdrawDigitalCurrency', # deprecated - replaced by WithdrawCrypto(docs removed)
|
139
|
+
'WithdrawCrypto',
|
129
140
|
],
|
130
141
|
},
|
131
142
|
},
|
@@ -141,19 +152,74 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
141
152
|
'PLA': 'PlayChip',
|
142
153
|
},
|
143
154
|
'precisionMode': TICK_SIZE,
|
155
|
+
'options': {
|
156
|
+
'defaultNetworks': {
|
157
|
+
'USDT': 'Ethereum',
|
158
|
+
'USDC': 'Ethereum',
|
159
|
+
'BTC': 'Bitcoin',
|
160
|
+
'BCH': 'BitcoinCash',
|
161
|
+
'ETH': 'Ethereum',
|
162
|
+
'LTC': 'Litecoin',
|
163
|
+
'XRP': 'XrpLedger',
|
164
|
+
'ZRX': 'Ethereum',
|
165
|
+
'EOS': 'EosIo',
|
166
|
+
'XLM': 'Stellar',
|
167
|
+
'BAT': 'Ethereum',
|
168
|
+
'ETC': 'EthereumClassic',
|
169
|
+
'LINK': 'Ethereum',
|
170
|
+
'MKR': 'Ethereum',
|
171
|
+
'DAI': 'Ethereum',
|
172
|
+
'COMP': 'Ethereum',
|
173
|
+
'SNX': 'Ethereum',
|
174
|
+
'YFI': 'Ethereum',
|
175
|
+
'AAVE': 'Ethereum',
|
176
|
+
'GRT': 'Ethereum',
|
177
|
+
'DOT': 'Polkadot',
|
178
|
+
'UNI': 'Ethereum',
|
179
|
+
'ADA': 'Cardano',
|
180
|
+
'MATIC': 'Ethereum',
|
181
|
+
'DOGE': 'Dogecoin',
|
182
|
+
'SOL': 'Solana',
|
183
|
+
'MANA': 'Ethereum',
|
184
|
+
'SAND': 'Ethereum',
|
185
|
+
'SHIB': 'Ethereum',
|
186
|
+
'TRX': 'Tron',
|
187
|
+
'RENDER': 'Solana',
|
188
|
+
'WIF': 'Solana',
|
189
|
+
'RLUSD': 'Ethereum',
|
190
|
+
'PEPE': 'Ethereum',
|
191
|
+
},
|
192
|
+
'networks': {
|
193
|
+
'BTC': 'Bitcoin',
|
194
|
+
'ETH': 'Ethereum',
|
195
|
+
'BCH': 'BitcoinCash',
|
196
|
+
'LTC': 'Litecoin',
|
197
|
+
'XRP': 'XrpLedger',
|
198
|
+
'EOS': 'EosIo',
|
199
|
+
'XLM': 'Stellar',
|
200
|
+
'ETC': 'EthereumClassic',
|
201
|
+
'BSV': 'BitcoinSV',
|
202
|
+
'DOGE': 'Dogecoin',
|
203
|
+
'DOT': 'Polkadot',
|
204
|
+
'ADA': 'Cardano',
|
205
|
+
'SOL': 'Solana',
|
206
|
+
'TRX': 'Tron',
|
207
|
+
},
|
208
|
+
},
|
144
209
|
})
|
145
210
|
|
146
|
-
def fetch_markets(self, params={}):
|
211
|
+
def fetch_markets(self, params={}) -> List[Market]:
|
147
212
|
"""
|
148
213
|
retrieves data on all markets for independentreserve
|
149
214
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
150
215
|
:returns dict[]: an array of objects representing market data
|
151
216
|
"""
|
152
|
-
|
217
|
+
baseCurrenciesPromise = self.publicGetGetValidPrimaryCurrencyCodes(params)
|
153
218
|
# ['Xbt', 'Eth', 'Usdt', ...]
|
154
|
-
|
219
|
+
quoteCurrenciesPromise = self.publicGetGetValidSecondaryCurrencyCodes(params)
|
155
220
|
# ['Aud', 'Usd', 'Nzd', 'Sgd']
|
156
|
-
|
221
|
+
limitsPromise = self.publicGetGetOrderMinimumVolumes(params)
|
222
|
+
baseCurrencies, quoteCurrencies, limits = [baseCurrenciesPromise, quoteCurrenciesPromise, limitsPromise]
|
157
223
|
#
|
158
224
|
# {
|
159
225
|
# "Xbt": 0.0001,
|
@@ -223,7 +289,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
223
289
|
return result
|
224
290
|
|
225
291
|
def parse_balance(self, response) -> Balances:
|
226
|
-
result = {'info': response}
|
292
|
+
result: dict = {'info': response}
|
227
293
|
for i in range(0, len(response)):
|
228
294
|
balance = response[i]
|
229
295
|
currencyId = self.safe_string(balance, 'CurrencyCode')
|
@@ -254,7 +320,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
254
320
|
"""
|
255
321
|
self.load_markets()
|
256
322
|
market = self.market(symbol)
|
257
|
-
request = {
|
323
|
+
request: dict = {
|
258
324
|
'primaryCurrencyCode': market['baseId'],
|
259
325
|
'secondaryCurrencyCode': market['quoteId'],
|
260
326
|
}
|
@@ -262,7 +328,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
262
328
|
timestamp = self.parse8601(self.safe_string(response, 'CreatedTimestampUtc'))
|
263
329
|
return self.parse_order_book(response, market['symbol'], timestamp, 'BuyOrders', 'SellOrders', 'Price', 'Volume')
|
264
330
|
|
265
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
331
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
266
332
|
# {
|
267
333
|
# "DayHighestPrice":43489.49,
|
268
334
|
# "DayLowestPrice":41998.32,
|
@@ -317,7 +383,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
317
383
|
"""
|
318
384
|
self.load_markets()
|
319
385
|
market = self.market(symbol)
|
320
|
-
request = {
|
386
|
+
request: dict = {
|
321
387
|
'primaryCurrencyCode': market['baseId'],
|
322
388
|
'secondaryCurrencyCode': market['quoteId'],
|
323
389
|
}
|
@@ -337,7 +403,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
337
403
|
# }
|
338
404
|
return self.parse_ticker(response, market)
|
339
405
|
|
340
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
406
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
341
407
|
#
|
342
408
|
# fetchOrder
|
343
409
|
#
|
@@ -372,6 +438,21 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
372
438
|
# "FeePercent": 0.005,
|
373
439
|
# }
|
374
440
|
#
|
441
|
+
# cancelOrder
|
442
|
+
#
|
443
|
+
# {
|
444
|
+
# "AvgPrice": 455.48,
|
445
|
+
# "CreatedTimestampUtc": "2022-08-05T06:42:11.3032208Z",
|
446
|
+
# "OrderGuid": "719c495c-a39e-4884-93ac-280b37245037",
|
447
|
+
# "Price": 485.76,
|
448
|
+
# "PrimaryCurrencyCode": "Xbt",
|
449
|
+
# "ReservedAmount": 0.358,
|
450
|
+
# "SecondaryCurrencyCode": "Usd",
|
451
|
+
# "Status": "Cancelled",
|
452
|
+
# "Type": "LimitOffer",
|
453
|
+
# "VolumeFilled": 0,
|
454
|
+
# "VolumeOrdered": 0.358
|
455
|
+
# }
|
375
456
|
symbol = None
|
376
457
|
baseId = self.safe_string(order, 'PrimaryCurrencyCode')
|
377
458
|
quoteId = self.safe_string(order, 'SecondaryCurrencyCode')
|
@@ -415,7 +496,6 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
415
496
|
'postOnly': None,
|
416
497
|
'side': side,
|
417
498
|
'price': self.safe_string(order, 'Price'),
|
418
|
-
'stopPrice': None,
|
419
499
|
'triggerPrice': None,
|
420
500
|
'cost': self.safe_string(order, 'Value'),
|
421
501
|
'average': self.safe_string(order, 'AvgPrice'),
|
@@ -431,8 +511,8 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
431
511
|
'trades': None,
|
432
512
|
}, market)
|
433
513
|
|
434
|
-
def parse_order_status(self, status):
|
435
|
-
statuses = {
|
514
|
+
def parse_order_status(self, status: Str):
|
515
|
+
statuses: dict = {
|
436
516
|
'Open': 'open',
|
437
517
|
'PartiallyFilled': 'open',
|
438
518
|
'Filled': 'closed',
|
@@ -446,6 +526,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
446
526
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
447
527
|
"""
|
448
528
|
fetches information on an order made by the user
|
529
|
+
:param str id: order id
|
449
530
|
:param str symbol: unified symbol of the market the order was made in
|
450
531
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
451
532
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -480,7 +561,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
480
561
|
request['pageIndex'] = 1
|
481
562
|
request['pageSize'] = limit
|
482
563
|
response = self.privatePostGetOpenOrders(self.extend(request, params))
|
483
|
-
data = self.
|
564
|
+
data = self.safe_list(response, 'Data', [])
|
484
565
|
return self.parse_orders(data, market, since, limit)
|
485
566
|
|
486
567
|
def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
@@ -504,7 +585,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
504
585
|
request['pageIndex'] = 1
|
505
586
|
request['pageSize'] = limit
|
506
587
|
response = self.privatePostGetClosedOrders(self.extend(request, params))
|
507
|
-
data = self.
|
588
|
+
data = self.safe_list(response, 'Data', [])
|
508
589
|
return self.parse_orders(data, market, since, limit)
|
509
590
|
|
510
591
|
def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = 50, params={}):
|
@@ -530,7 +611,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
530
611
|
market = self.market(symbol)
|
531
612
|
return self.parse_trades(response['Data'], market, since, limit)
|
532
613
|
|
533
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
614
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
534
615
|
timestamp = self.parse8601(trade['TradeTimestampUtc'])
|
535
616
|
id = self.safe_string(trade, 'TradeGuid')
|
536
617
|
orderId = self.safe_string(trade, 'OrderGuid')
|
@@ -578,7 +659,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
578
659
|
"""
|
579
660
|
self.load_markets()
|
580
661
|
market = self.market(symbol)
|
581
|
-
request = {
|
662
|
+
request: dict = {
|
582
663
|
'primaryCurrencyCode': market['baseId'],
|
583
664
|
'secondaryCurrencyCode': market['quoteId'],
|
584
665
|
'numberOfRecentTradesToRetrieve': 50, # max = 50
|
@@ -586,7 +667,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
586
667
|
response = self.publicGetGetRecentTrades(self.extend(request, params))
|
587
668
|
return self.parse_trades(response['Trades'], market, since, limit)
|
588
669
|
|
589
|
-
def fetch_trading_fees(self, params={}):
|
670
|
+
def fetch_trading_fees(self, params={}) -> TradingFees:
|
590
671
|
"""
|
591
672
|
fetch the trading fees for multiple markets
|
592
673
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -603,7 +684,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
603
684
|
# ...
|
604
685
|
# ]
|
605
686
|
#
|
606
|
-
fees = {}
|
687
|
+
fees: dict = {}
|
607
688
|
for i in range(0, len(response)):
|
608
689
|
fee = response[i]
|
609
690
|
currencyId = self.safe_string(fee, 'CurrencyCode')
|
@@ -613,7 +694,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
613
694
|
'info': fee,
|
614
695
|
'fee': tradingFee,
|
615
696
|
}
|
616
|
-
result = {}
|
697
|
+
result: dict = {}
|
617
698
|
for i in range(0, len(self.symbols)):
|
618
699
|
symbol = self.symbols[i]
|
619
700
|
market = self.market(symbol)
|
@@ -635,7 +716,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
635
716
|
:param str type: 'market' or 'limit'
|
636
717
|
:param str side: 'buy' or 'sell'
|
637
718
|
:param float amount: how much of currency you want to trade in units of base currency
|
638
|
-
:param float [price]: the price at which the order is to be
|
719
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
639
720
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
640
721
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
641
722
|
"""
|
@@ -663,28 +744,49 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
663
744
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
664
745
|
"""
|
665
746
|
cancels an open order
|
747
|
+
|
748
|
+
https://www.independentreserve.com/features/api#CancelOrder
|
749
|
+
|
666
750
|
:param str id: order id
|
667
751
|
:param str symbol: unified symbol of the market the order was made in
|
668
752
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
669
753
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
670
754
|
"""
|
671
755
|
self.load_markets()
|
672
|
-
request = {
|
756
|
+
request: dict = {
|
673
757
|
'orderGuid': id,
|
674
758
|
}
|
675
|
-
|
759
|
+
response = self.privatePostCancelOrder(self.extend(request, params))
|
760
|
+
#
|
761
|
+
# {
|
762
|
+
# "AvgPrice": 455.48,
|
763
|
+
# "CreatedTimestampUtc": "2022-08-05T06:42:11.3032208Z",
|
764
|
+
# "OrderGuid": "719c495c-a39e-4884-93ac-280b37245037",
|
765
|
+
# "Price": 485.76,
|
766
|
+
# "PrimaryCurrencyCode": "Xbt",
|
767
|
+
# "ReservedAmount": 0.358,
|
768
|
+
# "SecondaryCurrencyCode": "Usd",
|
769
|
+
# "Status": "Cancelled",
|
770
|
+
# "Type": "LimitOffer",
|
771
|
+
# "VolumeFilled": 0,
|
772
|
+
# "VolumeOrdered": 0.358
|
773
|
+
# }
|
774
|
+
#
|
775
|
+
return self.parse_order(response)
|
676
776
|
|
677
|
-
def fetch_deposit_address(self, code: str, params={}):
|
777
|
+
def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
678
778
|
"""
|
679
779
|
fetch the deposit address for a currency associated with self account
|
680
|
-
|
780
|
+
|
781
|
+
https://www.independentreserve.com/features/api#GetDigitalCurrencyDepositAddress
|
782
|
+
|
681
783
|
:param str code: unified currency code
|
682
784
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
683
785
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
684
786
|
"""
|
685
787
|
self.load_markets()
|
686
788
|
currency = self.currency(code)
|
687
|
-
request = {
|
789
|
+
request: dict = {
|
688
790
|
'primaryCurrencyCode': currency['id'],
|
689
791
|
}
|
690
792
|
response = self.privatePostGetDigitalCurrencyDepositAddress(self.extend(request, params))
|
@@ -698,7 +800,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
698
800
|
#
|
699
801
|
return self.parse_deposit_address(response)
|
700
802
|
|
701
|
-
def parse_deposit_address(self, depositAddress, currency: Currency = None):
|
803
|
+
def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
|
702
804
|
#
|
703
805
|
# {
|
704
806
|
# Tag: '3307446684',
|
@@ -712,9 +814,111 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
712
814
|
return {
|
713
815
|
'info': depositAddress,
|
714
816
|
'currency': self.safe_string(currency, 'code'),
|
817
|
+
'network': None,
|
715
818
|
'address': address,
|
716
819
|
'tag': self.safe_string(depositAddress, 'Tag'),
|
820
|
+
}
|
821
|
+
|
822
|
+
def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
823
|
+
"""
|
824
|
+
make a withdrawal
|
825
|
+
|
826
|
+
https://www.independentreserve.com/features/api#WithdrawDigitalCurrency
|
827
|
+
|
828
|
+
:param str code: unified currency code
|
829
|
+
:param float amount: the amount to withdraw
|
830
|
+
:param str address: the address to withdraw to
|
831
|
+
:param str tag:
|
832
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
833
|
+
|
834
|
+
EXCHANGE SPECIFIC PARAMETERS
|
835
|
+
:param dict [params.comment]: withdrawal comment, should not exceed 500 characters
|
836
|
+
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
837
|
+
"""
|
838
|
+
tag, params = self.handle_withdraw_tag_and_params(tag, params)
|
839
|
+
self.load_markets()
|
840
|
+
currency = self.currency(code)
|
841
|
+
request: dict = {
|
842
|
+
'primaryCurrencyCode': currency['id'],
|
843
|
+
'withdrawalAddress': address,
|
844
|
+
'amount': self.currency_to_precision(code, amount),
|
845
|
+
}
|
846
|
+
if tag is not None:
|
847
|
+
request['destinationTag'] = tag
|
848
|
+
networkCode = None
|
849
|
+
networkCode, params = self.handle_network_code_and_params(params)
|
850
|
+
if networkCode is not None:
|
851
|
+
raise BadRequest(self.id + ' withdraw() does not accept params["networkCode"]')
|
852
|
+
response = self.privatePostWithdrawDigitalCurrency(self.extend(request, params))
|
853
|
+
#
|
854
|
+
# {
|
855
|
+
# "TransactionGuid": "dc932e19-562b-4c50-821e-a73fd048b93b",
|
856
|
+
# "PrimaryCurrencyCode": "Bch",
|
857
|
+
# "CreatedTimestampUtc": "2020-04-01T05:26:30.5093622+00:00",
|
858
|
+
# "Amount": {
|
859
|
+
# "Total": 0.1231,
|
860
|
+
# "Fee": 0.0001
|
861
|
+
# },
|
862
|
+
# "Destination": {
|
863
|
+
# "Address": "bc1qhpqxkjpvgkckw530yfmxyr53c94q8f4273a7ez",
|
864
|
+
# "Tag": null
|
865
|
+
# },
|
866
|
+
# "Status": "Pending",
|
867
|
+
# "Transaction": null
|
868
|
+
# }
|
869
|
+
#
|
870
|
+
return self.parse_transaction(response, currency)
|
871
|
+
|
872
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
873
|
+
#
|
874
|
+
# {
|
875
|
+
# "TransactionGuid": "dc932e19-562b-4c50-821e-a73fd048b93b",
|
876
|
+
# "PrimaryCurrencyCode": "Bch",
|
877
|
+
# "CreatedTimestampUtc": "2020-04-01T05:26:30.5093622+00:00",
|
878
|
+
# "Amount": {
|
879
|
+
# "Total": 0.1231,
|
880
|
+
# "Fee": 0.0001
|
881
|
+
# },
|
882
|
+
# "Destination": {
|
883
|
+
# "Address": "bc1qhpqxkjpvgkckw530yfmxyr53c94q8f4273a7ez",
|
884
|
+
# "Tag": null
|
885
|
+
# },
|
886
|
+
# "Status": "Pending",
|
887
|
+
# "Transaction": null
|
888
|
+
# }
|
889
|
+
#
|
890
|
+
amount = self.safe_dict(transaction, 'Amount')
|
891
|
+
destination = self.safe_dict(transaction, 'Destination')
|
892
|
+
currencyId = self.safe_string(transaction, 'PrimaryCurrencyCode')
|
893
|
+
datetime = self.safe_string(transaction, 'CreatedTimestampUtc')
|
894
|
+
address = self.safe_string(destination, 'Address')
|
895
|
+
tag = self.safe_string(destination, 'Tag')
|
896
|
+
code = self.safe_currency_code(currencyId, currency)
|
897
|
+
return {
|
898
|
+
'info': transaction,
|
899
|
+
'id': self.safe_string(transaction, 'TransactionGuid'),
|
900
|
+
'txid': None,
|
901
|
+
'type': 'withdraw',
|
902
|
+
'currency': code,
|
717
903
|
'network': None,
|
904
|
+
'amount': self.safe_number(amount, 'Total'),
|
905
|
+
'status': self.safe_string(transaction, 'Status'),
|
906
|
+
'timestamp': self.parse8601(datetime),
|
907
|
+
'datetime': datetime,
|
908
|
+
'address': address,
|
909
|
+
'addressFrom': None,
|
910
|
+
'addressTo': address,
|
911
|
+
'tag': tag,
|
912
|
+
'tagFrom': None,
|
913
|
+
'tagTo': tag,
|
914
|
+
'updated': None,
|
915
|
+
'comment': None,
|
916
|
+
'fee': {
|
917
|
+
'currency': code,
|
918
|
+
'cost': self.safe_number(amount, 'Fee'),
|
919
|
+
'rate': None,
|
920
|
+
},
|
921
|
+
'internal': False,
|
718
922
|
}
|
719
923
|
|
720
924
|
def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
|