ccxt 4.2.77__py2.py3-none-any.whl → 4.4.48__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ccxt/__init__.py +36 -14
- ccxt/abstract/alpaca.py +4 -0
- ccxt/abstract/bigone.py +1 -1
- ccxt/abstract/binance.py +112 -48
- ccxt/abstract/binancecoinm.py +112 -48
- ccxt/abstract/binanceus.py +147 -83
- ccxt/abstract/binanceusdm.py +112 -48
- ccxt/abstract/bingx.py +133 -78
- ccxt/abstract/bitbank.py +5 -0
- ccxt/abstract/bitfinex.py +136 -65
- ccxt/abstract/bitfinex1.py +69 -0
- ccxt/abstract/bitflyer.py +1 -0
- ccxt/abstract/bitget.py +8 -1
- ccxt/abstract/bitmart.py +13 -1
- ccxt/abstract/bitopro.py +1 -0
- ccxt/abstract/bitpanda.py +0 -12
- ccxt/abstract/bitrue.py +3 -3
- ccxt/abstract/bitstamp.py +26 -3
- ccxt/abstract/blofin.py +24 -0
- ccxt/abstract/btcbox.py +1 -0
- ccxt/abstract/bybit.py +29 -14
- ccxt/abstract/cex.py +28 -29
- ccxt/abstract/coinbase.py +6 -0
- ccxt/abstract/coinbaseadvanced.py +94 -0
- ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
- ccxt/abstract/coinbaseinternational.py +1 -1
- ccxt/abstract/coincatch.py +94 -0
- ccxt/abstract/coinex.py +233 -123
- ccxt/abstract/coinmetro.py +1 -0
- ccxt/abstract/cryptocom.py +14 -0
- ccxt/abstract/defx.py +69 -0
- ccxt/abstract/deribit.py +1 -0
- ccxt/abstract/digifinex.py +1 -0
- ccxt/abstract/ellipx.py +25 -0
- ccxt/abstract/gate.py +20 -0
- ccxt/abstract/gateio.py +20 -0
- ccxt/abstract/gemini.py +1 -0
- ccxt/abstract/hashkey.py +67 -0
- ccxt/abstract/hyperliquid.py +1 -1
- ccxt/abstract/independentreserve.py +6 -0
- ccxt/abstract/kraken.py +4 -3
- ccxt/abstract/krakenfutures.py +4 -0
- ccxt/abstract/kucoin.py +24 -0
- ccxt/abstract/kucoinfutures.py +34 -0
- ccxt/abstract/luno.py +2 -0
- ccxt/abstract/mexc.py +4 -0
- ccxt/abstract/myokx.py +340 -0
- ccxt/abstract/oceanex.py +5 -0
- ccxt/abstract/okx.py +30 -0
- ccxt/abstract/onetrading.py +0 -12
- ccxt/abstract/oxfun.py +34 -0
- ccxt/abstract/paradex.py +40 -0
- ccxt/abstract/phemex.py +1 -0
- ccxt/abstract/upbit.py +4 -0
- ccxt/abstract/vertex.py +19 -0
- ccxt/abstract/whitebit.py +31 -1
- ccxt/abstract/woo.py +6 -2
- ccxt/abstract/woofipro.py +119 -0
- ccxt/abstract/xt.py +153 -0
- ccxt/abstract/zonda.py +6 -0
- ccxt/ace.py +164 -60
- ccxt/alpaca.py +727 -63
- ccxt/ascendex.py +395 -249
- ccxt/async_support/__init__.py +36 -14
- ccxt/async_support/ace.py +164 -60
- ccxt/async_support/alpaca.py +727 -63
- ccxt/async_support/ascendex.py +396 -249
- ccxt/async_support/base/exchange.py +531 -155
- ccxt/async_support/base/ws/aiohttp_client.py +28 -5
- ccxt/async_support/base/ws/cache.py +3 -2
- ccxt/async_support/base/ws/client.py +26 -5
- ccxt/async_support/base/ws/fast_client.py +4 -3
- ccxt/async_support/base/ws/functions.py +1 -1
- ccxt/async_support/base/ws/future.py +40 -31
- ccxt/async_support/base/ws/order_book_side.py +3 -0
- ccxt/async_support/bequant.py +1 -1
- ccxt/async_support/bigone.py +329 -202
- ccxt/async_support/binance.py +3030 -1087
- ccxt/async_support/binancecoinm.py +2 -1
- ccxt/async_support/binanceus.py +12 -1
- ccxt/async_support/binanceusdm.py +3 -1
- ccxt/async_support/bingx.py +3104 -880
- ccxt/async_support/bit2c.py +119 -38
- ccxt/async_support/bitbank.py +215 -76
- ccxt/async_support/bitbns.py +124 -53
- ccxt/async_support/bitfinex.py +3236 -1078
- ccxt/async_support/bitfinex1.py +1711 -0
- ccxt/async_support/bitflyer.py +238 -49
- ccxt/async_support/bitget.py +1513 -563
- ccxt/async_support/bithumb.py +199 -65
- ccxt/async_support/bitmart.py +1320 -435
- ccxt/async_support/bitmex.py +308 -111
- ccxt/async_support/bitopro.py +256 -96
- ccxt/async_support/bitrue.py +365 -233
- ccxt/async_support/bitso.py +201 -89
- ccxt/async_support/bitstamp.py +438 -269
- ccxt/async_support/bitteam.py +179 -73
- ccxt/async_support/bitvavo.py +180 -70
- ccxt/async_support/bl3p.py +92 -25
- ccxt/async_support/blockchaincom.py +193 -79
- ccxt/async_support/blofin.py +392 -148
- ccxt/async_support/btcalpha.py +161 -55
- ccxt/async_support/btcbox.py +250 -34
- ccxt/async_support/btcmarkets.py +232 -85
- ccxt/async_support/btcturk.py +159 -60
- ccxt/async_support/bybit.py +2231 -1193
- ccxt/async_support/cex.py +1409 -1329
- ccxt/async_support/coinbase.py +1454 -287
- ccxt/async_support/coinbaseadvanced.py +17 -0
- ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/async_support/coinbaseinternational.py +428 -88
- ccxt/async_support/coincatch.py +5152 -0
- ccxt/async_support/coincheck.py +121 -38
- ccxt/async_support/coinex.py +4020 -3339
- ccxt/async_support/coinlist.py +273 -116
- ccxt/async_support/coinmate.py +204 -97
- ccxt/async_support/coinmetro.py +203 -110
- ccxt/async_support/coinone.py +142 -68
- ccxt/async_support/coinsph.py +206 -89
- ccxt/async_support/coinspot.py +137 -62
- ccxt/async_support/cryptocom.py +515 -185
- ccxt/async_support/currencycom.py +203 -85
- ccxt/async_support/defx.py +2066 -0
- ccxt/async_support/delta.py +404 -109
- ccxt/async_support/deribit.py +557 -323
- ccxt/async_support/digifinex.py +340 -223
- ccxt/async_support/ellipx.py +1826 -0
- ccxt/async_support/exmo.py +259 -128
- ccxt/async_support/gate.py +1472 -463
- ccxt/async_support/gemini.py +206 -84
- ccxt/async_support/hashkey.py +4164 -0
- ccxt/async_support/hitbtc.py +334 -178
- ccxt/async_support/hollaex.py +134 -83
- ccxt/async_support/htx.py +1095 -563
- ccxt/async_support/huobijp.py +105 -56
- ccxt/async_support/hyperliquid.py +1633 -268
- ccxt/async_support/idex.py +148 -95
- ccxt/async_support/independentreserve.py +236 -31
- ccxt/async_support/indodax.py +165 -62
- ccxt/async_support/kraken.py +871 -354
- ccxt/async_support/krakenfutures.py +324 -100
- ccxt/async_support/kucoin.py +917 -357
- ccxt/async_support/kucoinfutures.py +1004 -149
- ccxt/async_support/kuna.py +138 -106
- ccxt/async_support/latoken.py +135 -79
- ccxt/async_support/lbank.py +290 -113
- ccxt/async_support/luno.py +112 -62
- ccxt/async_support/lykke.py +104 -55
- ccxt/async_support/mercado.py +36 -29
- ccxt/async_support/mexc.py +995 -429
- ccxt/async_support/myokx.py +43 -0
- ccxt/async_support/ndax.py +163 -82
- ccxt/async_support/novadax.py +121 -75
- ccxt/async_support/oceanex.py +175 -59
- ccxt/async_support/okcoin.py +222 -163
- ccxt/async_support/okx.py +1776 -454
- ccxt/async_support/onetrading.py +132 -414
- ccxt/async_support/oxfun.py +2832 -0
- ccxt/async_support/p2b.py +79 -51
- ccxt/async_support/paradex.py +2017 -0
- ccxt/async_support/paymium.py +56 -32
- ccxt/async_support/phemex.py +572 -196
- ccxt/async_support/poloniex.py +218 -95
- ccxt/async_support/poloniexfutures.py +260 -92
- ccxt/async_support/probit.py +143 -110
- ccxt/async_support/timex.py +123 -70
- ccxt/async_support/tokocrypto.py +129 -93
- ccxt/async_support/tradeogre.py +39 -25
- ccxt/async_support/upbit.py +322 -113
- ccxt/async_support/vertex.py +2983 -0
- ccxt/async_support/wavesexchange.py +227 -173
- ccxt/async_support/wazirx.py +145 -65
- ccxt/async_support/whitebit.py +533 -138
- ccxt/async_support/woo.py +1137 -296
- ccxt/async_support/woofipro.py +2716 -0
- ccxt/async_support/xt.py +4628 -0
- ccxt/async_support/yobit.py +160 -92
- ccxt/async_support/zaif.py +80 -33
- ccxt/async_support/zonda.py +140 -69
- ccxt/base/errors.py +51 -20
- ccxt/base/exchange.py +1722 -480
- ccxt/base/precise.py +10 -0
- ccxt/base/types.py +223 -4
- ccxt/bequant.py +1 -1
- ccxt/bigone.py +329 -202
- ccxt/binance.py +3030 -1087
- ccxt/binancecoinm.py +2 -1
- ccxt/binanceus.py +12 -1
- ccxt/binanceusdm.py +3 -1
- ccxt/bingx.py +3104 -880
- ccxt/bit2c.py +119 -38
- ccxt/bitbank.py +215 -76
- ccxt/bitbns.py +124 -53
- ccxt/bitfinex.py +3235 -1078
- ccxt/bitfinex1.py +1710 -0
- ccxt/bitflyer.py +238 -49
- ccxt/bitget.py +1513 -563
- ccxt/bithumb.py +198 -65
- ccxt/bitmart.py +1320 -435
- ccxt/bitmex.py +308 -111
- ccxt/bitopro.py +256 -96
- ccxt/bitrue.py +365 -233
- ccxt/bitso.py +201 -89
- ccxt/bitstamp.py +438 -269
- ccxt/bitteam.py +179 -73
- ccxt/bitvavo.py +180 -70
- ccxt/bl3p.py +92 -25
- ccxt/blockchaincom.py +193 -79
- ccxt/blofin.py +392 -148
- ccxt/btcalpha.py +161 -55
- ccxt/btcbox.py +250 -34
- ccxt/btcmarkets.py +232 -85
- ccxt/btcturk.py +159 -60
- ccxt/bybit.py +2231 -1193
- ccxt/cex.py +1408 -1329
- ccxt/coinbase.py +1454 -287
- ccxt/coinbaseadvanced.py +17 -0
- ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/coinbaseinternational.py +428 -88
- ccxt/coincatch.py +5152 -0
- ccxt/coincheck.py +121 -38
- ccxt/coinex.py +4020 -3339
- ccxt/coinlist.py +273 -116
- ccxt/coinmate.py +204 -97
- ccxt/coinmetro.py +203 -110
- ccxt/coinone.py +142 -68
- ccxt/coinsph.py +206 -89
- ccxt/coinspot.py +137 -62
- ccxt/cryptocom.py +515 -185
- ccxt/currencycom.py +203 -85
- ccxt/defx.py +2065 -0
- ccxt/delta.py +404 -109
- ccxt/deribit.py +557 -323
- ccxt/digifinex.py +340 -223
- ccxt/ellipx.py +1826 -0
- ccxt/exmo.py +259 -128
- ccxt/gate.py +1472 -463
- ccxt/gemini.py +206 -84
- ccxt/hashkey.py +4164 -0
- ccxt/hitbtc.py +334 -178
- ccxt/hollaex.py +134 -83
- ccxt/htx.py +1095 -563
- ccxt/huobijp.py +105 -56
- ccxt/hyperliquid.py +1632 -268
- ccxt/idex.py +148 -95
- ccxt/independentreserve.py +235 -31
- ccxt/indodax.py +165 -62
- ccxt/kraken.py +871 -354
- ccxt/krakenfutures.py +324 -100
- ccxt/kucoin.py +917 -357
- ccxt/kucoinfutures.py +1004 -149
- ccxt/kuna.py +138 -106
- ccxt/latoken.py +135 -79
- ccxt/lbank.py +290 -113
- ccxt/luno.py +112 -62
- ccxt/lykke.py +104 -55
- ccxt/mercado.py +36 -29
- ccxt/mexc.py +994 -429
- ccxt/myokx.py +43 -0
- ccxt/ndax.py +163 -82
- ccxt/novadax.py +121 -75
- ccxt/oceanex.py +175 -59
- ccxt/okcoin.py +222 -163
- ccxt/okx.py +1776 -454
- ccxt/onetrading.py +132 -414
- ccxt/oxfun.py +2831 -0
- ccxt/p2b.py +79 -51
- ccxt/paradex.py +2017 -0
- ccxt/paymium.py +56 -32
- ccxt/phemex.py +572 -196
- ccxt/poloniex.py +218 -95
- ccxt/poloniexfutures.py +260 -92
- ccxt/pro/__init__.py +29 -5
- ccxt/pro/alpaca.py +32 -17
- ccxt/pro/ascendex.py +62 -14
- ccxt/pro/bequant.py +4 -0
- ccxt/pro/binance.py +1596 -329
- ccxt/pro/binancecoinm.py +1 -0
- ccxt/pro/binanceus.py +2 -9
- ccxt/pro/binanceusdm.py +2 -0
- ccxt/pro/bingx.py +527 -134
- ccxt/pro/bitcoincom.py +4 -1
- ccxt/pro/bitfinex.py +731 -266
- ccxt/pro/bitfinex1.py +635 -0
- ccxt/pro/bitget.py +726 -357
- ccxt/pro/bithumb.py +380 -0
- ccxt/pro/bitmart.py +138 -39
- ccxt/pro/bitmex.py +199 -40
- ccxt/pro/bitopro.py +25 -13
- ccxt/pro/bitrue.py +31 -32
- ccxt/pro/bitstamp.py +7 -6
- ccxt/pro/bitvavo.py +203 -81
- ccxt/pro/blockchaincom.py +30 -17
- ccxt/pro/blofin.py +692 -0
- ccxt/pro/bybit.py +791 -82
- ccxt/pro/cex.py +99 -51
- ccxt/pro/coinbase.py +220 -30
- ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
- ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
- ccxt/pro/coinbaseinternational.py +193 -30
- ccxt/pro/coincatch.py +1464 -0
- ccxt/pro/coincheck.py +11 -6
- ccxt/pro/coinex.py +965 -665
- ccxt/pro/coinone.py +17 -10
- ccxt/pro/cryptocom.py +446 -66
- ccxt/pro/currencycom.py +11 -10
- ccxt/pro/defx.py +832 -0
- ccxt/pro/deribit.py +167 -31
- ccxt/pro/exmo.py +252 -20
- ccxt/pro/gate.py +729 -64
- ccxt/pro/gemini.py +44 -26
- ccxt/pro/hashkey.py +802 -0
- ccxt/pro/hitbtc.py +208 -103
- ccxt/pro/hollaex.py +25 -9
- ccxt/pro/htx.py +83 -39
- ccxt/pro/huobijp.py +17 -16
- ccxt/pro/hyperliquid.py +502 -31
- ccxt/pro/idex.py +28 -13
- ccxt/pro/independentreserve.py +21 -16
- ccxt/pro/kraken.py +298 -51
- ccxt/pro/krakenfutures.py +166 -75
- ccxt/pro/kucoin.py +395 -77
- ccxt/pro/kucoinfutures.py +400 -99
- ccxt/pro/lbank.py +52 -31
- ccxt/pro/luno.py +12 -10
- ccxt/pro/mexc.py +400 -50
- ccxt/pro/myokx.py +28 -0
- ccxt/pro/ndax.py +25 -12
- ccxt/pro/okcoin.py +28 -9
- ccxt/pro/okx.py +935 -124
- ccxt/pro/onetrading.py +41 -24
- ccxt/pro/oxfun.py +1054 -0
- ccxt/pro/p2b.py +100 -24
- ccxt/pro/paradex.py +352 -0
- ccxt/pro/phemex.py +92 -33
- ccxt/pro/poloniex.py +128 -49
- ccxt/pro/poloniexfutures.py +53 -32
- ccxt/pro/probit.py +92 -85
- ccxt/pro/upbit.py +401 -8
- ccxt/pro/vertex.py +943 -0
- ccxt/pro/wazirx.py +46 -28
- ccxt/pro/whitebit.py +65 -12
- ccxt/pro/woo.py +437 -65
- ccxt/pro/woofipro.py +1271 -0
- ccxt/pro/xt.py +1067 -0
- ccxt/probit.py +143 -110
- ccxt/static_dependencies/__init__.py +1 -1
- ccxt/static_dependencies/lark/__init__.py +38 -0
- ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
- ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
- ccxt/static_dependencies/lark/ast_utils.py +59 -0
- ccxt/static_dependencies/lark/common.py +86 -0
- ccxt/static_dependencies/lark/exceptions.py +292 -0
- ccxt/static_dependencies/lark/grammar.py +130 -0
- ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
- ccxt/static_dependencies/lark/indenter.py +143 -0
- ccxt/static_dependencies/lark/lark.py +658 -0
- ccxt/static_dependencies/lark/lexer.py +678 -0
- ccxt/static_dependencies/lark/load_grammar.py +1428 -0
- ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
- ccxt/static_dependencies/lark/parser_frontends.py +257 -0
- ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
- ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
- ccxt/static_dependencies/lark/parsers/earley.py +314 -0
- ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
- ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
- ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
- ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
- ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
- ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
- ccxt/static_dependencies/lark/py.typed +0 -0
- ccxt/static_dependencies/lark/reconstruct.py +107 -0
- ccxt/static_dependencies/lark/tools/__init__.py +70 -0
- ccxt/static_dependencies/lark/tools/nearley.py +202 -0
- ccxt/static_dependencies/lark/tools/serialize.py +32 -0
- ccxt/static_dependencies/lark/tools/standalone.py +196 -0
- ccxt/static_dependencies/lark/tree.py +267 -0
- ccxt/static_dependencies/lark/tree_matcher.py +186 -0
- ccxt/static_dependencies/lark/tree_templates.py +180 -0
- ccxt/static_dependencies/lark/utils.py +343 -0
- ccxt/static_dependencies/lark/visitors.py +596 -0
- ccxt/static_dependencies/marshmallow/__init__.py +81 -0
- ccxt/static_dependencies/marshmallow/base.py +65 -0
- ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
- ccxt/static_dependencies/marshmallow/decorators.py +231 -0
- ccxt/static_dependencies/marshmallow/error_store.py +60 -0
- ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
- ccxt/static_dependencies/marshmallow/fields.py +2114 -0
- ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
- ccxt/static_dependencies/marshmallow/py.typed +0 -0
- ccxt/static_dependencies/marshmallow/schema.py +1228 -0
- ccxt/static_dependencies/marshmallow/types.py +12 -0
- ccxt/static_dependencies/marshmallow/utils.py +378 -0
- ccxt/static_dependencies/marshmallow/validate.py +678 -0
- ccxt/static_dependencies/marshmallow/warnings.py +2 -0
- ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
- ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
- ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
- ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
- ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
- ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
- ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
- ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
- ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- ccxt/static_dependencies/starknet/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
- ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
- ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
- ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
- ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
- ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
- ccxt/static_dependencies/starknet/common.py +15 -0
- ccxt/static_dependencies/starknet/constants.py +39 -0
- ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
- ccxt/static_dependencies/starknet/hash/address.py +79 -0
- ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
- ccxt/static_dependencies/starknet/hash/selector.py +16 -0
- ccxt/static_dependencies/starknet/hash/storage.py +12 -0
- ccxt/static_dependencies/starknet/hash/utils.py +78 -0
- ccxt/static_dependencies/starknet/models/__init__.py +0 -0
- ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
- ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
- ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
- ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
- ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
- ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
- ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
- ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
- ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
- ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
- ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
- ccxt/static_dependencies/starknet/utils/schema.py +13 -0
- ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
- ccxt/static_dependencies/starkware/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
- ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
- ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
- ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
- ccxt/static_dependencies/sympy/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
- ccxt/static_dependencies/sympy/external/__init__.py +0 -0
- ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
- ccxt/static_dependencies/sympy/external/importtools.py +187 -0
- ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
- ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
- ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
- ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
- ccxt/test/{test_async.py → tests_async.py} +456 -391
- ccxt/test/tests_helpers.py +285 -0
- ccxt/test/tests_init.py +39 -0
- ccxt/test/{test_sync.py → tests_sync.py} +456 -393
- ccxt/timex.py +123 -70
- ccxt/tokocrypto.py +129 -93
- ccxt/tradeogre.py +39 -25
- ccxt/upbit.py +322 -113
- ccxt/vertex.py +2983 -0
- ccxt/wavesexchange.py +227 -173
- ccxt/wazirx.py +145 -65
- ccxt/whitebit.py +533 -138
- ccxt/woo.py +1137 -296
- ccxt/woofipro.py +2716 -0
- ccxt/xt.py +4627 -0
- ccxt/yobit.py +159 -92
- ccxt/zaif.py +80 -33
- ccxt/zonda.py +140 -69
- ccxt-4.4.48.dist-info/LICENSE.txt +21 -0
- ccxt-4.4.48.dist-info/METADATA +646 -0
- ccxt-4.4.48.dist-info/RECORD +669 -0
- {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/WHEEL +1 -1
- ccxt/abstract/bitbay.py +0 -47
- ccxt/abstract/bitfinex2.py +0 -139
- ccxt/abstract/hitbtc3.py +0 -115
- ccxt/async_support/bitbay.py +0 -17
- ccxt/async_support/bitfinex2.py +0 -3496
- ccxt/async_support/flowbtc.py +0 -34
- ccxt/bitbay.py +0 -17
- ccxt/bitfinex2.py +0 -3496
- ccxt/flowbtc.py +0 -34
- ccxt/hitbtc3.py +0 -16
- ccxt/pro/bitfinex2.py +0 -1081
- ccxt/test/base/__init__.py +0 -28
- ccxt/test/base/test_account.py +0 -26
- ccxt/test/base/test_balance.py +0 -56
- ccxt/test/base/test_borrow_interest.py +0 -35
- ccxt/test/base/test_borrow_rate.py +0 -32
- ccxt/test/base/test_calculate_fee.py +0 -51
- ccxt/test/base/test_crypto.py +0 -127
- ccxt/test/base/test_currency.py +0 -76
- ccxt/test/base/test_datetime.py +0 -103
- ccxt/test/base/test_decimal_to_precision.py +0 -392
- ccxt/test/base/test_deep_extend.py +0 -68
- ccxt/test/base/test_deposit_withdrawal.py +0 -50
- ccxt/test/base/test_exchange_datetime_functions.py +0 -76
- ccxt/test/base/test_funding_rate_history.py +0 -29
- ccxt/test/base/test_last_price.py +0 -32
- ccxt/test/base/test_ledger_entry.py +0 -45
- ccxt/test/base/test_ledger_item.py +0 -48
- ccxt/test/base/test_leverage_tier.py +0 -33
- ccxt/test/base/test_margin_mode.py +0 -24
- ccxt/test/base/test_margin_modification.py +0 -35
- ccxt/test/base/test_market.py +0 -190
- ccxt/test/base/test_number.py +0 -411
- ccxt/test/base/test_ohlcv.py +0 -32
- ccxt/test/base/test_open_interest.py +0 -32
- ccxt/test/base/test_order.py +0 -64
- ccxt/test/base/test_order_book.py +0 -63
- ccxt/test/base/test_position.py +0 -60
- ccxt/test/base/test_shared_methods.py +0 -345
- ccxt/test/base/test_status.py +0 -24
- ccxt/test/base/test_throttle.py +0 -126
- ccxt/test/base/test_ticker.py +0 -86
- ccxt/test/base/test_trade.py +0 -47
- ccxt/test/base/test_trading_fee.py +0 -26
- ccxt/test/base/test_transaction.py +0 -39
- ccxt-4.2.77.dist-info/METADATA +0 -626
- ccxt-4.2.77.dist-info/RECORD +0 -534
- {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
@@ -5,9 +5,11 @@
|
|
5
5
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.independentreserve import ImplicitAPI
|
8
|
+
import asyncio
|
8
9
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade
|
10
|
+
from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees, Transaction
|
10
11
|
from typing import List
|
12
|
+
from ccxt.base.errors import BadRequest
|
11
13
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
12
14
|
from ccxt.base.precise import Precise
|
13
15
|
|
@@ -64,8 +66,11 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
64
66
|
'fetchOrder': True,
|
65
67
|
'fetchOrderBook': True,
|
66
68
|
'fetchPosition': False,
|
69
|
+
'fetchPositionHistory': False,
|
67
70
|
'fetchPositionMode': False,
|
68
71
|
'fetchPositions': False,
|
72
|
+
'fetchPositionsForSymbol': False,
|
73
|
+
'fetchPositionsHistory': False,
|
69
74
|
'fetchPositionsRisk': False,
|
70
75
|
'fetchPremiumIndexOHLCV': False,
|
71
76
|
'fetchTicker': True,
|
@@ -76,6 +81,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
76
81
|
'setLeverage': False,
|
77
82
|
'setMarginMode': False,
|
78
83
|
'setPositionMode': False,
|
84
|
+
'withdraw': True,
|
79
85
|
},
|
80
86
|
'urls': {
|
81
87
|
'logo': 'https://user-images.githubusercontent.com/51840849/87182090-1e9e9080-c2ec-11ea-8e49-563db9a38f37.jpg',
|
@@ -102,7 +108,10 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
102
108
|
'GetRecentTrades',
|
103
109
|
'GetFxRates',
|
104
110
|
'GetOrderMinimumVolumes',
|
105
|
-
'GetCryptoWithdrawalFees',
|
111
|
+
'GetCryptoWithdrawalFees', # deprecated - replaced by GetCryptoWithdrawalFees2(docs removed)
|
112
|
+
'GetCryptoWithdrawalFees2',
|
113
|
+
'GetNetworks',
|
114
|
+
'GetPrimaryCurrencyConfig2',
|
106
115
|
],
|
107
116
|
},
|
108
117
|
'private': {
|
@@ -114,8 +123,10 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
114
123
|
'GetAccounts',
|
115
124
|
'GetTransactions',
|
116
125
|
'GetFiatBankAccounts',
|
117
|
-
'GetDigitalCurrencyDepositAddress',
|
118
|
-
'
|
126
|
+
'GetDigitalCurrencyDepositAddress', # deprecated - replaced by GetDigitalCurrencyDepositAddress2(docs removed)
|
127
|
+
'GetDigitalCurrencyDepositAddress2',
|
128
|
+
'GetDigitalCurrencyDepositAddresses', # deprecated - replaced by GetDigitalCurrencyDepositAddresses2(docs removed)
|
129
|
+
'GetDigitalCurrencyDepositAddresses2',
|
119
130
|
'GetTrades',
|
120
131
|
'GetBrokerageFees',
|
121
132
|
'GetDigitalCurrencyWithdrawal',
|
@@ -125,7 +136,8 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
125
136
|
'SynchDigitalCurrencyDepositAddressWithBlockchain',
|
126
137
|
'RequestFiatWithdrawal',
|
127
138
|
'WithdrawFiatCurrency',
|
128
|
-
'WithdrawDigitalCurrency',
|
139
|
+
'WithdrawDigitalCurrency', # deprecated - replaced by WithdrawCrypto(docs removed)
|
140
|
+
'WithdrawCrypto',
|
129
141
|
],
|
130
142
|
},
|
131
143
|
},
|
@@ -141,19 +153,74 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
141
153
|
'PLA': 'PlayChip',
|
142
154
|
},
|
143
155
|
'precisionMode': TICK_SIZE,
|
156
|
+
'options': {
|
157
|
+
'defaultNetworks': {
|
158
|
+
'USDT': 'Ethereum',
|
159
|
+
'USDC': 'Ethereum',
|
160
|
+
'BTC': 'Bitcoin',
|
161
|
+
'BCH': 'BitcoinCash',
|
162
|
+
'ETH': 'Ethereum',
|
163
|
+
'LTC': 'Litecoin',
|
164
|
+
'XRP': 'XrpLedger',
|
165
|
+
'ZRX': 'Ethereum',
|
166
|
+
'EOS': 'EosIo',
|
167
|
+
'XLM': 'Stellar',
|
168
|
+
'BAT': 'Ethereum',
|
169
|
+
'ETC': 'EthereumClassic',
|
170
|
+
'LINK': 'Ethereum',
|
171
|
+
'MKR': 'Ethereum',
|
172
|
+
'DAI': 'Ethereum',
|
173
|
+
'COMP': 'Ethereum',
|
174
|
+
'SNX': 'Ethereum',
|
175
|
+
'YFI': 'Ethereum',
|
176
|
+
'AAVE': 'Ethereum',
|
177
|
+
'GRT': 'Ethereum',
|
178
|
+
'DOT': 'Polkadot',
|
179
|
+
'UNI': 'Ethereum',
|
180
|
+
'ADA': 'Cardano',
|
181
|
+
'MATIC': 'Ethereum',
|
182
|
+
'DOGE': 'Dogecoin',
|
183
|
+
'SOL': 'Solana',
|
184
|
+
'MANA': 'Ethereum',
|
185
|
+
'SAND': 'Ethereum',
|
186
|
+
'SHIB': 'Ethereum',
|
187
|
+
'TRX': 'Tron',
|
188
|
+
'RENDER': 'Solana',
|
189
|
+
'WIF': 'Solana',
|
190
|
+
'RLUSD': 'Ethereum',
|
191
|
+
'PEPE': 'Ethereum',
|
192
|
+
},
|
193
|
+
'networks': {
|
194
|
+
'BTC': 'Bitcoin',
|
195
|
+
'ETH': 'Ethereum',
|
196
|
+
'BCH': 'BitcoinCash',
|
197
|
+
'LTC': 'Litecoin',
|
198
|
+
'XRP': 'XrpLedger',
|
199
|
+
'EOS': 'EosIo',
|
200
|
+
'XLM': 'Stellar',
|
201
|
+
'ETC': 'EthereumClassic',
|
202
|
+
'BSV': 'BitcoinSV',
|
203
|
+
'DOGE': 'Dogecoin',
|
204
|
+
'DOT': 'Polkadot',
|
205
|
+
'ADA': 'Cardano',
|
206
|
+
'SOL': 'Solana',
|
207
|
+
'TRX': 'Tron',
|
208
|
+
},
|
209
|
+
},
|
144
210
|
})
|
145
211
|
|
146
|
-
async def fetch_markets(self, params={}):
|
212
|
+
async def fetch_markets(self, params={}) -> List[Market]:
|
147
213
|
"""
|
148
214
|
retrieves data on all markets for independentreserve
|
149
215
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
150
216
|
:returns dict[]: an array of objects representing market data
|
151
217
|
"""
|
152
|
-
|
218
|
+
baseCurrenciesPromise = self.publicGetGetValidPrimaryCurrencyCodes(params)
|
153
219
|
# ['Xbt', 'Eth', 'Usdt', ...]
|
154
|
-
|
220
|
+
quoteCurrenciesPromise = self.publicGetGetValidSecondaryCurrencyCodes(params)
|
155
221
|
# ['Aud', 'Usd', 'Nzd', 'Sgd']
|
156
|
-
|
222
|
+
limitsPromise = self.publicGetGetOrderMinimumVolumes(params)
|
223
|
+
baseCurrencies, quoteCurrencies, limits = await asyncio.gather(*[baseCurrenciesPromise, quoteCurrenciesPromise, limitsPromise])
|
157
224
|
#
|
158
225
|
# {
|
159
226
|
# "Xbt": 0.0001,
|
@@ -223,7 +290,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
223
290
|
return result
|
224
291
|
|
225
292
|
def parse_balance(self, response) -> Balances:
|
226
|
-
result = {'info': response}
|
293
|
+
result: dict = {'info': response}
|
227
294
|
for i in range(0, len(response)):
|
228
295
|
balance = response[i]
|
229
296
|
currencyId = self.safe_string(balance, 'CurrencyCode')
|
@@ -254,7 +321,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
254
321
|
"""
|
255
322
|
await self.load_markets()
|
256
323
|
market = self.market(symbol)
|
257
|
-
request = {
|
324
|
+
request: dict = {
|
258
325
|
'primaryCurrencyCode': market['baseId'],
|
259
326
|
'secondaryCurrencyCode': market['quoteId'],
|
260
327
|
}
|
@@ -262,7 +329,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
262
329
|
timestamp = self.parse8601(self.safe_string(response, 'CreatedTimestampUtc'))
|
263
330
|
return self.parse_order_book(response, market['symbol'], timestamp, 'BuyOrders', 'SellOrders', 'Price', 'Volume')
|
264
331
|
|
265
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
332
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
266
333
|
# {
|
267
334
|
# "DayHighestPrice":43489.49,
|
268
335
|
# "DayLowestPrice":41998.32,
|
@@ -317,7 +384,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
317
384
|
"""
|
318
385
|
await self.load_markets()
|
319
386
|
market = self.market(symbol)
|
320
|
-
request = {
|
387
|
+
request: dict = {
|
321
388
|
'primaryCurrencyCode': market['baseId'],
|
322
389
|
'secondaryCurrencyCode': market['quoteId'],
|
323
390
|
}
|
@@ -337,7 +404,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
337
404
|
# }
|
338
405
|
return self.parse_ticker(response, market)
|
339
406
|
|
340
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
407
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
341
408
|
#
|
342
409
|
# fetchOrder
|
343
410
|
#
|
@@ -372,6 +439,21 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
372
439
|
# "FeePercent": 0.005,
|
373
440
|
# }
|
374
441
|
#
|
442
|
+
# cancelOrder
|
443
|
+
#
|
444
|
+
# {
|
445
|
+
# "AvgPrice": 455.48,
|
446
|
+
# "CreatedTimestampUtc": "2022-08-05T06:42:11.3032208Z",
|
447
|
+
# "OrderGuid": "719c495c-a39e-4884-93ac-280b37245037",
|
448
|
+
# "Price": 485.76,
|
449
|
+
# "PrimaryCurrencyCode": "Xbt",
|
450
|
+
# "ReservedAmount": 0.358,
|
451
|
+
# "SecondaryCurrencyCode": "Usd",
|
452
|
+
# "Status": "Cancelled",
|
453
|
+
# "Type": "LimitOffer",
|
454
|
+
# "VolumeFilled": 0,
|
455
|
+
# "VolumeOrdered": 0.358
|
456
|
+
# }
|
375
457
|
symbol = None
|
376
458
|
baseId = self.safe_string(order, 'PrimaryCurrencyCode')
|
377
459
|
quoteId = self.safe_string(order, 'SecondaryCurrencyCode')
|
@@ -415,7 +497,6 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
415
497
|
'postOnly': None,
|
416
498
|
'side': side,
|
417
499
|
'price': self.safe_string(order, 'Price'),
|
418
|
-
'stopPrice': None,
|
419
500
|
'triggerPrice': None,
|
420
501
|
'cost': self.safe_string(order, 'Value'),
|
421
502
|
'average': self.safe_string(order, 'AvgPrice'),
|
@@ -431,8 +512,8 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
431
512
|
'trades': None,
|
432
513
|
}, market)
|
433
514
|
|
434
|
-
def parse_order_status(self, status):
|
435
|
-
statuses = {
|
515
|
+
def parse_order_status(self, status: Str):
|
516
|
+
statuses: dict = {
|
436
517
|
'Open': 'open',
|
437
518
|
'PartiallyFilled': 'open',
|
438
519
|
'Filled': 'closed',
|
@@ -446,6 +527,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
446
527
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
447
528
|
"""
|
448
529
|
fetches information on an order made by the user
|
530
|
+
:param str id: order id
|
449
531
|
:param str symbol: unified symbol of the market the order was made in
|
450
532
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
451
533
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -480,7 +562,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
480
562
|
request['pageIndex'] = 1
|
481
563
|
request['pageSize'] = limit
|
482
564
|
response = await self.privatePostGetOpenOrders(self.extend(request, params))
|
483
|
-
data = self.
|
565
|
+
data = self.safe_list(response, 'Data', [])
|
484
566
|
return self.parse_orders(data, market, since, limit)
|
485
567
|
|
486
568
|
async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
@@ -504,7 +586,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
504
586
|
request['pageIndex'] = 1
|
505
587
|
request['pageSize'] = limit
|
506
588
|
response = await self.privatePostGetClosedOrders(self.extend(request, params))
|
507
|
-
data = self.
|
589
|
+
data = self.safe_list(response, 'Data', [])
|
508
590
|
return self.parse_orders(data, market, since, limit)
|
509
591
|
|
510
592
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = 50, params={}):
|
@@ -530,7 +612,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
530
612
|
market = self.market(symbol)
|
531
613
|
return self.parse_trades(response['Data'], market, since, limit)
|
532
614
|
|
533
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
615
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
534
616
|
timestamp = self.parse8601(trade['TradeTimestampUtc'])
|
535
617
|
id = self.safe_string(trade, 'TradeGuid')
|
536
618
|
orderId = self.safe_string(trade, 'OrderGuid')
|
@@ -578,7 +660,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
578
660
|
"""
|
579
661
|
await self.load_markets()
|
580
662
|
market = self.market(symbol)
|
581
|
-
request = {
|
663
|
+
request: dict = {
|
582
664
|
'primaryCurrencyCode': market['baseId'],
|
583
665
|
'secondaryCurrencyCode': market['quoteId'],
|
584
666
|
'numberOfRecentTradesToRetrieve': 50, # max = 50
|
@@ -586,7 +668,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
586
668
|
response = await self.publicGetGetRecentTrades(self.extend(request, params))
|
587
669
|
return self.parse_trades(response['Trades'], market, since, limit)
|
588
670
|
|
589
|
-
async def fetch_trading_fees(self, params={}):
|
671
|
+
async def fetch_trading_fees(self, params={}) -> TradingFees:
|
590
672
|
"""
|
591
673
|
fetch the trading fees for multiple markets
|
592
674
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -603,7 +685,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
603
685
|
# ...
|
604
686
|
# ]
|
605
687
|
#
|
606
|
-
fees = {}
|
688
|
+
fees: dict = {}
|
607
689
|
for i in range(0, len(response)):
|
608
690
|
fee = response[i]
|
609
691
|
currencyId = self.safe_string(fee, 'CurrencyCode')
|
@@ -613,7 +695,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
613
695
|
'info': fee,
|
614
696
|
'fee': tradingFee,
|
615
697
|
}
|
616
|
-
result = {}
|
698
|
+
result: dict = {}
|
617
699
|
for i in range(0, len(self.symbols)):
|
618
700
|
symbol = self.symbols[i]
|
619
701
|
market = self.market(symbol)
|
@@ -635,7 +717,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
635
717
|
:param str type: 'market' or 'limit'
|
636
718
|
:param str side: 'buy' or 'sell'
|
637
719
|
: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
|
720
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
639
721
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
640
722
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
641
723
|
"""
|
@@ -663,28 +745,49 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
663
745
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
664
746
|
"""
|
665
747
|
cancels an open order
|
748
|
+
|
749
|
+
https://www.independentreserve.com/features/api#CancelOrder
|
750
|
+
|
666
751
|
:param str id: order id
|
667
752
|
:param str symbol: unified symbol of the market the order was made in
|
668
753
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
669
754
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
670
755
|
"""
|
671
756
|
await self.load_markets()
|
672
|
-
request = {
|
757
|
+
request: dict = {
|
673
758
|
'orderGuid': id,
|
674
759
|
}
|
675
|
-
|
760
|
+
response = await self.privatePostCancelOrder(self.extend(request, params))
|
761
|
+
#
|
762
|
+
# {
|
763
|
+
# "AvgPrice": 455.48,
|
764
|
+
# "CreatedTimestampUtc": "2022-08-05T06:42:11.3032208Z",
|
765
|
+
# "OrderGuid": "719c495c-a39e-4884-93ac-280b37245037",
|
766
|
+
# "Price": 485.76,
|
767
|
+
# "PrimaryCurrencyCode": "Xbt",
|
768
|
+
# "ReservedAmount": 0.358,
|
769
|
+
# "SecondaryCurrencyCode": "Usd",
|
770
|
+
# "Status": "Cancelled",
|
771
|
+
# "Type": "LimitOffer",
|
772
|
+
# "VolumeFilled": 0,
|
773
|
+
# "VolumeOrdered": 0.358
|
774
|
+
# }
|
775
|
+
#
|
776
|
+
return self.parse_order(response)
|
676
777
|
|
677
|
-
async def fetch_deposit_address(self, code: str, params={}):
|
778
|
+
async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
678
779
|
"""
|
679
780
|
fetch the deposit address for a currency associated with self account
|
680
|
-
|
781
|
+
|
782
|
+
https://www.independentreserve.com/features/api#GetDigitalCurrencyDepositAddress
|
783
|
+
|
681
784
|
:param str code: unified currency code
|
682
785
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
683
786
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
684
787
|
"""
|
685
788
|
await self.load_markets()
|
686
789
|
currency = self.currency(code)
|
687
|
-
request = {
|
790
|
+
request: dict = {
|
688
791
|
'primaryCurrencyCode': currency['id'],
|
689
792
|
}
|
690
793
|
response = await self.privatePostGetDigitalCurrencyDepositAddress(self.extend(request, params))
|
@@ -698,7 +801,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
698
801
|
#
|
699
802
|
return self.parse_deposit_address(response)
|
700
803
|
|
701
|
-
def parse_deposit_address(self, depositAddress, currency: Currency = None):
|
804
|
+
def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
|
702
805
|
#
|
703
806
|
# {
|
704
807
|
# Tag: '3307446684',
|
@@ -712,9 +815,111 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
712
815
|
return {
|
713
816
|
'info': depositAddress,
|
714
817
|
'currency': self.safe_string(currency, 'code'),
|
818
|
+
'network': None,
|
715
819
|
'address': address,
|
716
820
|
'tag': self.safe_string(depositAddress, 'Tag'),
|
821
|
+
}
|
822
|
+
|
823
|
+
async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
824
|
+
"""
|
825
|
+
make a withdrawal
|
826
|
+
|
827
|
+
https://www.independentreserve.com/features/api#WithdrawDigitalCurrency
|
828
|
+
|
829
|
+
:param str code: unified currency code
|
830
|
+
:param float amount: the amount to withdraw
|
831
|
+
:param str address: the address to withdraw to
|
832
|
+
:param str tag:
|
833
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
834
|
+
|
835
|
+
EXCHANGE SPECIFIC PARAMETERS
|
836
|
+
:param dict [params.comment]: withdrawal comment, should not exceed 500 characters
|
837
|
+
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
838
|
+
"""
|
839
|
+
tag, params = self.handle_withdraw_tag_and_params(tag, params)
|
840
|
+
await self.load_markets()
|
841
|
+
currency = self.currency(code)
|
842
|
+
request: dict = {
|
843
|
+
'primaryCurrencyCode': currency['id'],
|
844
|
+
'withdrawalAddress': address,
|
845
|
+
'amount': self.currency_to_precision(code, amount),
|
846
|
+
}
|
847
|
+
if tag is not None:
|
848
|
+
request['destinationTag'] = tag
|
849
|
+
networkCode = None
|
850
|
+
networkCode, params = self.handle_network_code_and_params(params)
|
851
|
+
if networkCode is not None:
|
852
|
+
raise BadRequest(self.id + ' withdraw() does not accept params["networkCode"]')
|
853
|
+
response = await self.privatePostWithdrawDigitalCurrency(self.extend(request, params))
|
854
|
+
#
|
855
|
+
# {
|
856
|
+
# "TransactionGuid": "dc932e19-562b-4c50-821e-a73fd048b93b",
|
857
|
+
# "PrimaryCurrencyCode": "Bch",
|
858
|
+
# "CreatedTimestampUtc": "2020-04-01T05:26:30.5093622+00:00",
|
859
|
+
# "Amount": {
|
860
|
+
# "Total": 0.1231,
|
861
|
+
# "Fee": 0.0001
|
862
|
+
# },
|
863
|
+
# "Destination": {
|
864
|
+
# "Address": "bc1qhpqxkjpvgkckw530yfmxyr53c94q8f4273a7ez",
|
865
|
+
# "Tag": null
|
866
|
+
# },
|
867
|
+
# "Status": "Pending",
|
868
|
+
# "Transaction": null
|
869
|
+
# }
|
870
|
+
#
|
871
|
+
return self.parse_transaction(response, currency)
|
872
|
+
|
873
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
874
|
+
#
|
875
|
+
# {
|
876
|
+
# "TransactionGuid": "dc932e19-562b-4c50-821e-a73fd048b93b",
|
877
|
+
# "PrimaryCurrencyCode": "Bch",
|
878
|
+
# "CreatedTimestampUtc": "2020-04-01T05:26:30.5093622+00:00",
|
879
|
+
# "Amount": {
|
880
|
+
# "Total": 0.1231,
|
881
|
+
# "Fee": 0.0001
|
882
|
+
# },
|
883
|
+
# "Destination": {
|
884
|
+
# "Address": "bc1qhpqxkjpvgkckw530yfmxyr53c94q8f4273a7ez",
|
885
|
+
# "Tag": null
|
886
|
+
# },
|
887
|
+
# "Status": "Pending",
|
888
|
+
# "Transaction": null
|
889
|
+
# }
|
890
|
+
#
|
891
|
+
amount = self.safe_dict(transaction, 'Amount')
|
892
|
+
destination = self.safe_dict(transaction, 'Destination')
|
893
|
+
currencyId = self.safe_string(transaction, 'PrimaryCurrencyCode')
|
894
|
+
datetime = self.safe_string(transaction, 'CreatedTimestampUtc')
|
895
|
+
address = self.safe_string(destination, 'Address')
|
896
|
+
tag = self.safe_string(destination, 'Tag')
|
897
|
+
code = self.safe_currency_code(currencyId, currency)
|
898
|
+
return {
|
899
|
+
'info': transaction,
|
900
|
+
'id': self.safe_string(transaction, 'TransactionGuid'),
|
901
|
+
'txid': None,
|
902
|
+
'type': 'withdraw',
|
903
|
+
'currency': code,
|
717
904
|
'network': None,
|
905
|
+
'amount': self.safe_number(amount, 'Total'),
|
906
|
+
'status': self.safe_string(transaction, 'Status'),
|
907
|
+
'timestamp': self.parse8601(datetime),
|
908
|
+
'datetime': datetime,
|
909
|
+
'address': address,
|
910
|
+
'addressFrom': None,
|
911
|
+
'addressTo': address,
|
912
|
+
'tag': tag,
|
913
|
+
'tagFrom': None,
|
914
|
+
'tagTo': tag,
|
915
|
+
'updated': None,
|
916
|
+
'comment': None,
|
917
|
+
'fee': {
|
918
|
+
'currency': code,
|
919
|
+
'cost': self.safe_number(amount, 'Fee'),
|
920
|
+
'rate': None,
|
921
|
+
},
|
922
|
+
'internal': False,
|
718
923
|
}
|
719
924
|
|
720
925
|
def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
|