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.
Files changed (546) hide show
  1. ccxt/__init__.py +36 -14
  2. ccxt/abstract/alpaca.py +4 -0
  3. ccxt/abstract/bigone.py +1 -1
  4. ccxt/abstract/binance.py +112 -48
  5. ccxt/abstract/binancecoinm.py +112 -48
  6. ccxt/abstract/binanceus.py +147 -83
  7. ccxt/abstract/binanceusdm.py +112 -48
  8. ccxt/abstract/bingx.py +133 -78
  9. ccxt/abstract/bitbank.py +5 -0
  10. ccxt/abstract/bitfinex.py +136 -65
  11. ccxt/abstract/bitfinex1.py +69 -0
  12. ccxt/abstract/bitflyer.py +1 -0
  13. ccxt/abstract/bitget.py +8 -1
  14. ccxt/abstract/bitmart.py +13 -1
  15. ccxt/abstract/bitopro.py +1 -0
  16. ccxt/abstract/bitpanda.py +0 -12
  17. ccxt/abstract/bitrue.py +3 -3
  18. ccxt/abstract/bitstamp.py +26 -3
  19. ccxt/abstract/blofin.py +24 -0
  20. ccxt/abstract/btcbox.py +1 -0
  21. ccxt/abstract/bybit.py +29 -14
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbase.py +6 -0
  24. ccxt/abstract/coinbaseadvanced.py +94 -0
  25. ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
  26. ccxt/abstract/coinbaseinternational.py +1 -1
  27. ccxt/abstract/coincatch.py +94 -0
  28. ccxt/abstract/coinex.py +233 -123
  29. ccxt/abstract/coinmetro.py +1 -0
  30. ccxt/abstract/cryptocom.py +14 -0
  31. ccxt/abstract/defx.py +69 -0
  32. ccxt/abstract/deribit.py +1 -0
  33. ccxt/abstract/digifinex.py +1 -0
  34. ccxt/abstract/ellipx.py +25 -0
  35. ccxt/abstract/gate.py +20 -0
  36. ccxt/abstract/gateio.py +20 -0
  37. ccxt/abstract/gemini.py +1 -0
  38. ccxt/abstract/hashkey.py +67 -0
  39. ccxt/abstract/hyperliquid.py +1 -1
  40. ccxt/abstract/independentreserve.py +6 -0
  41. ccxt/abstract/kraken.py +4 -3
  42. ccxt/abstract/krakenfutures.py +4 -0
  43. ccxt/abstract/kucoin.py +25 -0
  44. ccxt/abstract/kucoinfutures.py +35 -0
  45. ccxt/abstract/luno.py +2 -0
  46. ccxt/abstract/mexc.py +4 -0
  47. ccxt/abstract/myokx.py +340 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +30 -0
  50. ccxt/abstract/onetrading.py +0 -12
  51. ccxt/abstract/oxfun.py +34 -0
  52. ccxt/abstract/paradex.py +40 -0
  53. ccxt/abstract/phemex.py +1 -0
  54. ccxt/abstract/upbit.py +4 -0
  55. ccxt/abstract/vertex.py +19 -0
  56. ccxt/abstract/whitebit.py +31 -1
  57. ccxt/abstract/woo.py +6 -2
  58. ccxt/abstract/woofipro.py +119 -0
  59. ccxt/abstract/xt.py +153 -0
  60. ccxt/abstract/zonda.py +6 -0
  61. ccxt/ace.py +164 -60
  62. ccxt/alpaca.py +727 -63
  63. ccxt/ascendex.py +395 -249
  64. ccxt/async_support/__init__.py +36 -14
  65. ccxt/async_support/ace.py +164 -60
  66. ccxt/async_support/alpaca.py +727 -63
  67. ccxt/async_support/ascendex.py +396 -249
  68. ccxt/async_support/base/exchange.py +531 -155
  69. ccxt/async_support/base/ws/aiohttp_client.py +28 -5
  70. ccxt/async_support/base/ws/cache.py +3 -2
  71. ccxt/async_support/base/ws/client.py +26 -5
  72. ccxt/async_support/base/ws/fast_client.py +4 -3
  73. ccxt/async_support/base/ws/functions.py +1 -1
  74. ccxt/async_support/base/ws/future.py +40 -31
  75. ccxt/async_support/base/ws/order_book_side.py +3 -0
  76. ccxt/async_support/bequant.py +1 -1
  77. ccxt/async_support/bigone.py +329 -202
  78. ccxt/async_support/binance.py +3513 -1511
  79. ccxt/async_support/binancecoinm.py +2 -1
  80. ccxt/async_support/binanceus.py +12 -1
  81. ccxt/async_support/binanceusdm.py +3 -1
  82. ccxt/async_support/bingx.py +3105 -881
  83. ccxt/async_support/bit2c.py +119 -38
  84. ccxt/async_support/bitbank.py +215 -76
  85. ccxt/async_support/bitbns.py +124 -53
  86. ccxt/async_support/bitfinex.py +3236 -1078
  87. ccxt/async_support/bitfinex1.py +1711 -0
  88. ccxt/async_support/bitflyer.py +239 -50
  89. ccxt/async_support/bitget.py +1513 -563
  90. ccxt/async_support/bithumb.py +201 -67
  91. ccxt/async_support/bitmart.py +1320 -435
  92. ccxt/async_support/bitmex.py +308 -111
  93. ccxt/async_support/bitopro.py +256 -96
  94. ccxt/async_support/bitrue.py +365 -233
  95. ccxt/async_support/bitso.py +201 -89
  96. ccxt/async_support/bitstamp.py +438 -269
  97. ccxt/async_support/bitteam.py +179 -73
  98. ccxt/async_support/bitvavo.py +180 -70
  99. ccxt/async_support/bl3p.py +92 -25
  100. ccxt/async_support/blockchaincom.py +193 -79
  101. ccxt/async_support/blofin.py +403 -150
  102. ccxt/async_support/btcalpha.py +161 -55
  103. ccxt/async_support/btcbox.py +250 -34
  104. ccxt/async_support/btcmarkets.py +232 -85
  105. ccxt/async_support/btcturk.py +159 -60
  106. ccxt/async_support/bybit.py +2326 -1255
  107. ccxt/async_support/cex.py +1409 -1329
  108. ccxt/async_support/coinbase.py +1455 -288
  109. ccxt/async_support/coinbaseadvanced.py +17 -0
  110. ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
  111. ccxt/async_support/coinbaseinternational.py +428 -88
  112. ccxt/async_support/coincatch.py +5152 -0
  113. ccxt/async_support/coincheck.py +121 -38
  114. ccxt/async_support/coinex.py +4020 -3339
  115. ccxt/async_support/coinlist.py +273 -116
  116. ccxt/async_support/coinmate.py +204 -97
  117. ccxt/async_support/coinmetro.py +203 -110
  118. ccxt/async_support/coinone.py +142 -68
  119. ccxt/async_support/coinsph.py +206 -89
  120. ccxt/async_support/coinspot.py +137 -62
  121. ccxt/async_support/cryptocom.py +515 -185
  122. ccxt/async_support/currencycom.py +203 -85
  123. ccxt/async_support/defx.py +2066 -0
  124. ccxt/async_support/delta.py +467 -158
  125. ccxt/async_support/deribit.py +558 -324
  126. ccxt/async_support/digifinex.py +340 -223
  127. ccxt/async_support/ellipx.py +1826 -0
  128. ccxt/async_support/exmo.py +259 -128
  129. ccxt/async_support/gate.py +1473 -464
  130. ccxt/async_support/gemini.py +206 -84
  131. ccxt/async_support/hashkey.py +4164 -0
  132. ccxt/async_support/hitbtc.py +334 -178
  133. ccxt/async_support/hollaex.py +134 -83
  134. ccxt/async_support/htx.py +1095 -563
  135. ccxt/async_support/huobijp.py +105 -56
  136. ccxt/async_support/hyperliquid.py +1634 -269
  137. ccxt/async_support/idex.py +148 -95
  138. ccxt/async_support/independentreserve.py +236 -31
  139. ccxt/async_support/indodax.py +165 -62
  140. ccxt/async_support/kraken.py +871 -354
  141. ccxt/async_support/krakenfutures.py +324 -100
  142. ccxt/async_support/kucoin.py +1050 -355
  143. ccxt/async_support/kucoinfutures.py +1004 -149
  144. ccxt/async_support/kuna.py +138 -106
  145. ccxt/async_support/latoken.py +135 -79
  146. ccxt/async_support/lbank.py +290 -113
  147. ccxt/async_support/luno.py +112 -62
  148. ccxt/async_support/lykke.py +104 -55
  149. ccxt/async_support/mercado.py +36 -29
  150. ccxt/async_support/mexc.py +995 -429
  151. ccxt/async_support/myokx.py +43 -0
  152. ccxt/async_support/ndax.py +163 -82
  153. ccxt/async_support/novadax.py +121 -75
  154. ccxt/async_support/oceanex.py +175 -59
  155. ccxt/async_support/okcoin.py +222 -163
  156. ccxt/async_support/okx.py +1777 -455
  157. ccxt/async_support/onetrading.py +132 -414
  158. ccxt/async_support/oxfun.py +2832 -0
  159. ccxt/async_support/p2b.py +79 -51
  160. ccxt/async_support/paradex.py +2017 -0
  161. ccxt/async_support/paymium.py +56 -32
  162. ccxt/async_support/phemex.py +572 -196
  163. ccxt/async_support/poloniex.py +218 -95
  164. ccxt/async_support/poloniexfutures.py +260 -92
  165. ccxt/async_support/probit.py +143 -110
  166. ccxt/async_support/timex.py +123 -70
  167. ccxt/async_support/tokocrypto.py +129 -93
  168. ccxt/async_support/tradeogre.py +39 -25
  169. ccxt/async_support/upbit.py +322 -113
  170. ccxt/async_support/vertex.py +2983 -0
  171. ccxt/async_support/wavesexchange.py +227 -173
  172. ccxt/async_support/wazirx.py +145 -65
  173. ccxt/async_support/whitebit.py +533 -138
  174. ccxt/async_support/woo.py +1155 -295
  175. ccxt/async_support/woofipro.py +2716 -0
  176. ccxt/async_support/xt.py +4628 -0
  177. ccxt/async_support/yobit.py +160 -92
  178. ccxt/async_support/zaif.py +80 -33
  179. ccxt/async_support/zonda.py +140 -69
  180. ccxt/base/errors.py +51 -20
  181. ccxt/base/exchange.py +1729 -482
  182. ccxt/base/precise.py +10 -0
  183. ccxt/base/types.py +223 -4
  184. ccxt/bequant.py +1 -1
  185. ccxt/bigone.py +329 -202
  186. ccxt/binance.py +3513 -1511
  187. ccxt/binancecoinm.py +2 -1
  188. ccxt/binanceus.py +12 -1
  189. ccxt/binanceusdm.py +3 -1
  190. ccxt/bingx.py +3105 -881
  191. ccxt/bit2c.py +119 -38
  192. ccxt/bitbank.py +215 -76
  193. ccxt/bitbns.py +124 -53
  194. ccxt/bitfinex.py +3235 -1078
  195. ccxt/bitfinex1.py +1710 -0
  196. ccxt/bitflyer.py +239 -50
  197. ccxt/bitget.py +1513 -563
  198. ccxt/bithumb.py +200 -67
  199. ccxt/bitmart.py +1320 -435
  200. ccxt/bitmex.py +308 -111
  201. ccxt/bitopro.py +256 -96
  202. ccxt/bitrue.py +365 -233
  203. ccxt/bitso.py +201 -89
  204. ccxt/bitstamp.py +438 -269
  205. ccxt/bitteam.py +179 -73
  206. ccxt/bitvavo.py +180 -70
  207. ccxt/bl3p.py +92 -25
  208. ccxt/blockchaincom.py +193 -79
  209. ccxt/blofin.py +403 -150
  210. ccxt/btcalpha.py +161 -55
  211. ccxt/btcbox.py +250 -34
  212. ccxt/btcmarkets.py +232 -85
  213. ccxt/btcturk.py +159 -60
  214. ccxt/bybit.py +2326 -1255
  215. ccxt/cex.py +1408 -1329
  216. ccxt/coinbase.py +1455 -288
  217. ccxt/coinbaseadvanced.py +17 -0
  218. ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
  219. ccxt/coinbaseinternational.py +428 -88
  220. ccxt/coincatch.py +5152 -0
  221. ccxt/coincheck.py +121 -38
  222. ccxt/coinex.py +4020 -3339
  223. ccxt/coinlist.py +273 -116
  224. ccxt/coinmate.py +204 -97
  225. ccxt/coinmetro.py +203 -110
  226. ccxt/coinone.py +142 -68
  227. ccxt/coinsph.py +206 -89
  228. ccxt/coinspot.py +137 -62
  229. ccxt/cryptocom.py +515 -185
  230. ccxt/currencycom.py +203 -85
  231. ccxt/defx.py +2065 -0
  232. ccxt/delta.py +467 -158
  233. ccxt/deribit.py +558 -324
  234. ccxt/digifinex.py +340 -223
  235. ccxt/ellipx.py +1826 -0
  236. ccxt/exmo.py +259 -128
  237. ccxt/gate.py +1473 -464
  238. ccxt/gemini.py +206 -84
  239. ccxt/hashkey.py +4164 -0
  240. ccxt/hitbtc.py +334 -178
  241. ccxt/hollaex.py +134 -83
  242. ccxt/htx.py +1095 -563
  243. ccxt/huobijp.py +105 -56
  244. ccxt/hyperliquid.py +1633 -269
  245. ccxt/idex.py +148 -95
  246. ccxt/independentreserve.py +235 -31
  247. ccxt/indodax.py +165 -62
  248. ccxt/kraken.py +871 -354
  249. ccxt/krakenfutures.py +324 -100
  250. ccxt/kucoin.py +1050 -355
  251. ccxt/kucoinfutures.py +1004 -149
  252. ccxt/kuna.py +138 -106
  253. ccxt/latoken.py +135 -79
  254. ccxt/lbank.py +290 -113
  255. ccxt/luno.py +112 -62
  256. ccxt/lykke.py +104 -55
  257. ccxt/mercado.py +36 -29
  258. ccxt/mexc.py +994 -429
  259. ccxt/myokx.py +43 -0
  260. ccxt/ndax.py +163 -82
  261. ccxt/novadax.py +121 -75
  262. ccxt/oceanex.py +175 -59
  263. ccxt/okcoin.py +222 -163
  264. ccxt/okx.py +1777 -455
  265. ccxt/onetrading.py +132 -414
  266. ccxt/oxfun.py +2831 -0
  267. ccxt/p2b.py +79 -51
  268. ccxt/paradex.py +2017 -0
  269. ccxt/paymium.py +56 -32
  270. ccxt/phemex.py +572 -196
  271. ccxt/poloniex.py +218 -95
  272. ccxt/poloniexfutures.py +260 -92
  273. ccxt/pro/__init__.py +29 -5
  274. ccxt/pro/alpaca.py +32 -17
  275. ccxt/pro/ascendex.py +63 -15
  276. ccxt/pro/bequant.py +4 -0
  277. ccxt/pro/binance.py +1596 -329
  278. ccxt/pro/binancecoinm.py +1 -0
  279. ccxt/pro/binanceus.py +2 -9
  280. ccxt/pro/binanceusdm.py +2 -0
  281. ccxt/pro/bingx.py +527 -134
  282. ccxt/pro/bitcoincom.py +4 -1
  283. ccxt/pro/bitfinex.py +731 -266
  284. ccxt/pro/bitfinex1.py +635 -0
  285. ccxt/pro/bitget.py +726 -357
  286. ccxt/pro/bithumb.py +380 -0
  287. ccxt/pro/bitmart.py +138 -39
  288. ccxt/pro/bitmex.py +199 -40
  289. ccxt/pro/bitopro.py +25 -13
  290. ccxt/pro/bitrue.py +31 -32
  291. ccxt/pro/bitstamp.py +7 -6
  292. ccxt/pro/bitvavo.py +204 -82
  293. ccxt/pro/blockchaincom.py +30 -17
  294. ccxt/pro/blofin.py +692 -0
  295. ccxt/pro/bybit.py +791 -82
  296. ccxt/pro/cex.py +99 -51
  297. ccxt/pro/coinbase.py +220 -30
  298. ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
  299. ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
  300. ccxt/pro/coinbaseinternational.py +193 -30
  301. ccxt/pro/coincatch.py +1464 -0
  302. ccxt/pro/coincheck.py +11 -6
  303. ccxt/pro/coinex.py +967 -661
  304. ccxt/pro/coinone.py +17 -10
  305. ccxt/pro/cryptocom.py +446 -66
  306. ccxt/pro/currencycom.py +11 -10
  307. ccxt/pro/defx.py +832 -0
  308. ccxt/pro/deribit.py +168 -32
  309. ccxt/pro/exmo.py +253 -21
  310. ccxt/pro/gate.py +729 -64
  311. ccxt/pro/gemini.py +44 -26
  312. ccxt/pro/hashkey.py +802 -0
  313. ccxt/pro/hitbtc.py +208 -103
  314. ccxt/pro/hollaex.py +25 -9
  315. ccxt/pro/htx.py +83 -39
  316. ccxt/pro/huobijp.py +17 -16
  317. ccxt/pro/hyperliquid.py +502 -31
  318. ccxt/pro/idex.py +28 -13
  319. ccxt/pro/independentreserve.py +21 -16
  320. ccxt/pro/kraken.py +298 -51
  321. ccxt/pro/krakenfutures.py +166 -75
  322. ccxt/pro/kucoin.py +395 -77
  323. ccxt/pro/kucoinfutures.py +400 -99
  324. ccxt/pro/lbank.py +52 -31
  325. ccxt/pro/luno.py +12 -10
  326. ccxt/pro/mexc.py +400 -50
  327. ccxt/pro/myokx.py +28 -0
  328. ccxt/pro/ndax.py +25 -12
  329. ccxt/pro/okcoin.py +28 -9
  330. ccxt/pro/okx.py +935 -124
  331. ccxt/pro/onetrading.py +41 -24
  332. ccxt/pro/oxfun.py +1054 -0
  333. ccxt/pro/p2b.py +100 -24
  334. ccxt/pro/paradex.py +352 -0
  335. ccxt/pro/phemex.py +93 -34
  336. ccxt/pro/poloniex.py +129 -50
  337. ccxt/pro/poloniexfutures.py +53 -32
  338. ccxt/pro/probit.py +93 -86
  339. ccxt/pro/upbit.py +401 -8
  340. ccxt/pro/vertex.py +943 -0
  341. ccxt/pro/wazirx.py +46 -28
  342. ccxt/pro/whitebit.py +65 -12
  343. ccxt/pro/woo.py +486 -70
  344. ccxt/pro/woofipro.py +1271 -0
  345. ccxt/pro/xt.py +1067 -0
  346. ccxt/probit.py +143 -110
  347. ccxt/static_dependencies/__init__.py +1 -1
  348. ccxt/static_dependencies/lark/__init__.py +38 -0
  349. ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
  350. ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
  351. ccxt/static_dependencies/lark/ast_utils.py +59 -0
  352. ccxt/static_dependencies/lark/common.py +86 -0
  353. ccxt/static_dependencies/lark/exceptions.py +292 -0
  354. ccxt/static_dependencies/lark/grammar.py +130 -0
  355. ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  356. ccxt/static_dependencies/lark/indenter.py +143 -0
  357. ccxt/static_dependencies/lark/lark.py +658 -0
  358. ccxt/static_dependencies/lark/lexer.py +678 -0
  359. ccxt/static_dependencies/lark/load_grammar.py +1428 -0
  360. ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
  361. ccxt/static_dependencies/lark/parser_frontends.py +257 -0
  362. ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  363. ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
  364. ccxt/static_dependencies/lark/parsers/earley.py +314 -0
  365. ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
  366. ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
  367. ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
  368. ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
  369. ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
  370. ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
  371. ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
  372. ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
  373. ccxt/static_dependencies/lark/py.typed +0 -0
  374. ccxt/static_dependencies/lark/reconstruct.py +107 -0
  375. ccxt/static_dependencies/lark/tools/__init__.py +70 -0
  376. ccxt/static_dependencies/lark/tools/nearley.py +202 -0
  377. ccxt/static_dependencies/lark/tools/serialize.py +32 -0
  378. ccxt/static_dependencies/lark/tools/standalone.py +196 -0
  379. ccxt/static_dependencies/lark/tree.py +267 -0
  380. ccxt/static_dependencies/lark/tree_matcher.py +186 -0
  381. ccxt/static_dependencies/lark/tree_templates.py +180 -0
  382. ccxt/static_dependencies/lark/utils.py +343 -0
  383. ccxt/static_dependencies/lark/visitors.py +596 -0
  384. ccxt/static_dependencies/marshmallow/__init__.py +81 -0
  385. ccxt/static_dependencies/marshmallow/base.py +65 -0
  386. ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
  387. ccxt/static_dependencies/marshmallow/decorators.py +231 -0
  388. ccxt/static_dependencies/marshmallow/error_store.py +60 -0
  389. ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
  390. ccxt/static_dependencies/marshmallow/fields.py +2114 -0
  391. ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
  392. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  393. ccxt/static_dependencies/marshmallow/schema.py +1228 -0
  394. ccxt/static_dependencies/marshmallow/types.py +12 -0
  395. ccxt/static_dependencies/marshmallow/utils.py +378 -0
  396. ccxt/static_dependencies/marshmallow/validate.py +678 -0
  397. ccxt/static_dependencies/marshmallow/warnings.py +2 -0
  398. ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
  399. ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
  400. ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
  401. ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
  402. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  403. ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
  404. ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
  405. ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
  406. ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
  407. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  408. ccxt/static_dependencies/starknet/__init__.py +0 -0
  409. ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  410. ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
  411. ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  412. ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
  413. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
  414. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
  415. ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
  416. ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
  417. ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  418. ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
  419. ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  420. ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
  421. ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
  422. ccxt/static_dependencies/starknet/common.py +15 -0
  423. ccxt/static_dependencies/starknet/constants.py +39 -0
  424. ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  425. ccxt/static_dependencies/starknet/hash/address.py +79 -0
  426. ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
  427. ccxt/static_dependencies/starknet/hash/selector.py +16 -0
  428. ccxt/static_dependencies/starknet/hash/storage.py +12 -0
  429. ccxt/static_dependencies/starknet/hash/utils.py +78 -0
  430. ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  431. ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
  432. ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
  433. ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
  434. ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
  435. ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
  436. ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
  437. ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
  438. ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
  439. ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
  440. ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
  441. ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
  442. ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
  443. ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
  444. ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
  445. ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
  446. ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
  447. ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
  448. ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
  449. ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
  450. ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
  451. ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
  452. ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
  453. ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
  454. ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
  455. ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
  456. ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  457. ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
  458. ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
  459. ccxt/static_dependencies/starknet/utils/schema.py +13 -0
  460. ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
  461. ccxt/static_dependencies/starkware/__init__.py +0 -0
  462. ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  463. ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
  464. ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
  465. ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
  466. ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
  467. ccxt/static_dependencies/sympy/__init__.py +0 -0
  468. ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  469. ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
  470. ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  471. ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
  472. ccxt/static_dependencies/sympy/external/importtools.py +187 -0
  473. ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
  474. ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
  475. ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  476. ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
  477. ccxt/test/{test_async.py → tests_async.py} +465 -407
  478. ccxt/test/tests_helpers.py +285 -0
  479. ccxt/test/tests_init.py +39 -0
  480. ccxt/test/{test_sync.py → tests_sync.py} +465 -409
  481. ccxt/timex.py +123 -70
  482. ccxt/tokocrypto.py +129 -93
  483. ccxt/tradeogre.py +39 -25
  484. ccxt/upbit.py +322 -113
  485. ccxt/vertex.py +2983 -0
  486. ccxt/wavesexchange.py +227 -173
  487. ccxt/wazirx.py +145 -65
  488. ccxt/whitebit.py +533 -138
  489. ccxt/woo.py +1155 -295
  490. ccxt/woofipro.py +2716 -0
  491. ccxt/xt.py +4627 -0
  492. ccxt/yobit.py +159 -92
  493. ccxt/zaif.py +80 -33
  494. ccxt/zonda.py +140 -69
  495. ccxt-4.4.48.dist-info/LICENSE.txt +21 -0
  496. ccxt-4.4.48.dist-info/METADATA +646 -0
  497. ccxt-4.4.48.dist-info/RECORD +669 -0
  498. {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/WHEEL +1 -1
  499. ccxt/abstract/bitbay.py +0 -47
  500. ccxt/abstract/bitfinex2.py +0 -139
  501. ccxt/abstract/hitbtc3.py +0 -115
  502. ccxt/async_support/bitbay.py +0 -17
  503. ccxt/async_support/bitfinex2.py +0 -3496
  504. ccxt/async_support/flowbtc.py +0 -34
  505. ccxt/bitbay.py +0 -17
  506. ccxt/bitfinex2.py +0 -3496
  507. ccxt/flowbtc.py +0 -34
  508. ccxt/hitbtc3.py +0 -16
  509. ccxt/pro/bitfinex2.py +0 -1081
  510. ccxt/test/base/__init__.py +0 -28
  511. ccxt/test/base/test_account.py +0 -26
  512. ccxt/test/base/test_balance.py +0 -56
  513. ccxt/test/base/test_borrow_interest.py +0 -35
  514. ccxt/test/base/test_borrow_rate.py +0 -32
  515. ccxt/test/base/test_calculate_fee.py +0 -51
  516. ccxt/test/base/test_crypto.py +0 -127
  517. ccxt/test/base/test_currency.py +0 -76
  518. ccxt/test/base/test_datetime.py +0 -103
  519. ccxt/test/base/test_decimal_to_precision.py +0 -392
  520. ccxt/test/base/test_deep_extend.py +0 -68
  521. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  522. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  523. ccxt/test/base/test_funding_rate_history.py +0 -29
  524. ccxt/test/base/test_last_price.py +0 -32
  525. ccxt/test/base/test_ledger_entry.py +0 -45
  526. ccxt/test/base/test_ledger_item.py +0 -48
  527. ccxt/test/base/test_leverage_tier.py +0 -33
  528. ccxt/test/base/test_margin_mode.py +0 -24
  529. ccxt/test/base/test_margin_modification.py +0 -35
  530. ccxt/test/base/test_market.py +0 -190
  531. ccxt/test/base/test_number.py +0 -411
  532. ccxt/test/base/test_ohlcv.py +0 -32
  533. ccxt/test/base/test_open_interest.py +0 -32
  534. ccxt/test/base/test_order.py +0 -64
  535. ccxt/test/base/test_order_book.py +0 -63
  536. ccxt/test/base/test_position.py +0 -60
  537. ccxt/test/base/test_shared_methods.py +0 -345
  538. ccxt/test/base/test_status.py +0 -24
  539. ccxt/test/base/test_throttle.py +0 -126
  540. ccxt/test/base/test_ticker.py +0 -86
  541. ccxt/test/base/test_trade.py +0 -47
  542. ccxt/test/base/test_trading_fee.py +0 -26
  543. ccxt/test/base/test_transaction.py +0 -39
  544. ccxt-4.2.76.dist-info/METADATA +0 -626
  545. ccxt-4.2.76.dist-info/RECORD +0 -534
  546. {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://user-images.githubusercontent.com/1294454/117201933-e7a6e780-adf5-11eb-9d80-98fc2a21c3d6.jpg',
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.safe_value(market, 'precision', {})
228
- marketLimits = self.safe_value(market, 'limits', {})
229
- amountLimits = self.safe_value(marketLimits, 'amount', {})
230
- priceLimits = self.safe_value(marketLimits, 'price', {})
231
- costLimits = self.safe_value(marketLimits, 'cost', {})
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.safe_value(response, 'data', {})
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
- :see: https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/place-orders
571
- :see: https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-1/market-orders-quantity # market orders
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 fullfilled, in units of the quote currency, ignored in market orders
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
- * EXCHANGE SPECIFIC PARAMETERS
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
- :see: https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/cancel-orders
627
- :see: https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-1/cancel-stop-loss-orders
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.safe_value_2(params, 'trigger', 'stop')
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
- :see: https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-1/order-status
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.safe_value_2(params, 'trigger', 'stop')
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.safe_value(response, 'data', [])
699
- first = self.safe_value(data, 0)
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
- :see: https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/order-status-limit
706
- :see: https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/order-status-limit/order-status-stop-limit
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.safe_value_2(params, 'trigger', 'stop')
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.safe_value(response, 'data', [])
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.safe_value(response, 'data', [])
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.safe_value(response, 'data', [])
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.safe_value(response, 'data', [])
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.safe_value(statusesByType, type, {})
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.safe_value(response, 'data', {})
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
  #