ccxt-ir 4.3.46.0.2__py2.py3-none-any.whl → 4.5.0__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 (528) hide show
  1. ccxt/__init__.py +39 -35
  2. ccxt/abantether.py +9 -9
  3. ccxt/abstract/alpaca.py +4 -0
  4. ccxt/abstract/apex.py +31 -0
  5. ccxt/abstract/bigone.py +1 -1
  6. ccxt/abstract/binance.py +106 -48
  7. ccxt/abstract/binancecoinm.py +106 -48
  8. ccxt/abstract/binanceus.py +141 -83
  9. ccxt/abstract/binanceusdm.py +106 -48
  10. ccxt/abstract/bingx.py +50 -1
  11. ccxt/abstract/bitbank.py +5 -0
  12. ccxt/abstract/bitfinex.py +136 -65
  13. ccxt/abstract/bitflyer.py +1 -0
  14. ccxt/abstract/bitget.py +67 -0
  15. ccxt/abstract/bitmart.py +19 -1
  16. ccxt/abstract/bitopro.py +1 -0
  17. ccxt/abstract/bitrue.py +68 -68
  18. ccxt/abstract/bitstamp.py +1 -0
  19. ccxt/abstract/blofin.py +30 -0
  20. ccxt/abstract/btcbox.py +2 -0
  21. ccxt/abstract/bybit.py +28 -13
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbaseexchange.py +1 -0
  24. ccxt/abstract/coinbaseinternational.py +1 -1
  25. ccxt/abstract/cryptocom.py +16 -0
  26. ccxt/abstract/cryptomus.py +20 -0
  27. ccxt/abstract/defx.py +69 -0
  28. ccxt/abstract/deribit.py +1 -0
  29. ccxt/abstract/derive.py +117 -0
  30. ccxt/abstract/digifinex.py +1 -0
  31. ccxt/abstract/ellipx.py +25 -0
  32. ccxt/abstract/foxbit.py +26 -0
  33. ccxt/abstract/gate.py +19 -0
  34. ccxt/abstract/gateio.py +19 -0
  35. ccxt/abstract/gemini.py +1 -0
  36. ccxt/abstract/hibachi.py +26 -0
  37. ccxt/abstract/hyperliquid.py +1 -1
  38. ccxt/abstract/independentreserve.py +6 -0
  39. ccxt/abstract/kraken.py +1 -0
  40. ccxt/abstract/krakenfutures.py +4 -0
  41. ccxt/abstract/kucoin.py +10 -0
  42. ccxt/abstract/kucoinfutures.py +18 -0
  43. ccxt/abstract/lbank.py +2 -1
  44. ccxt/abstract/luno.py +1 -0
  45. ccxt/abstract/mexc.py +2 -0
  46. ccxt/abstract/modetrade.py +119 -0
  47. ccxt/abstract/myokx.py +349 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +25 -0
  50. ccxt/abstract/okxus.py +349 -0
  51. ccxt/abstract/onetrading.py +0 -12
  52. ccxt/abstract/paradex.py +23 -0
  53. ccxt/abstract/phemex.py +2 -0
  54. ccxt/abstract/poloniex.py +36 -0
  55. ccxt/abstract/tradeogre.py +3 -1
  56. ccxt/abstract/upbit.py +51 -34
  57. ccxt/abstract/whitebit.py +16 -0
  58. ccxt/abstract/woo.py +64 -6
  59. ccxt/abstract/xt.py +10 -5
  60. ccxt/afratether.py +7 -7
  61. ccxt/alpaca.py +828 -51
  62. ccxt/apex.py +1875 -0
  63. ccxt/arzinja.py +7 -7
  64. ccxt/arzplus.py +9 -9
  65. ccxt/ascendex.py +501 -306
  66. ccxt/async_support/__init__.py +39 -35
  67. ccxt/async_support/abantether.py +10 -10
  68. ccxt/async_support/afratether.py +9 -9
  69. ccxt/async_support/alpaca.py +828 -51
  70. ccxt/async_support/apex.py +1875 -0
  71. ccxt/async_support/arzinja.py +10 -10
  72. ccxt/async_support/arzplus.py +12 -12
  73. ccxt/async_support/ascendex.py +502 -306
  74. ccxt/async_support/base/exchange.py +303 -89
  75. ccxt/async_support/base/ws/cache.py +9 -3
  76. ccxt/async_support/base/ws/client.py +173 -38
  77. ccxt/async_support/base/ws/future.py +25 -37
  78. ccxt/async_support/bequant.py +5 -3
  79. ccxt/async_support/bigone.py +279 -144
  80. ccxt/async_support/binance.py +2347 -1158
  81. ccxt/async_support/binancecoinm.py +9 -3
  82. ccxt/async_support/binanceus.py +17 -3
  83. ccxt/async_support/binanceusdm.py +9 -4
  84. ccxt/async_support/bingx.py +2962 -920
  85. ccxt/async_support/bit2c.py +147 -27
  86. ccxt/async_support/bitbank.py +151 -23
  87. ccxt/async_support/bitbns.py +104 -30
  88. ccxt/async_support/bitfinex.py +3291 -1113
  89. ccxt/async_support/bitflyer.py +202 -27
  90. ccxt/async_support/bitget.py +3683 -1538
  91. ccxt/async_support/bithumb.py +195 -38
  92. ccxt/async_support/bitimen.py +12 -12
  93. ccxt/async_support/bitir.py +38 -38
  94. ccxt/async_support/bitmart.py +1288 -350
  95. ccxt/async_support/bitmex.py +260 -75
  96. ccxt/async_support/bitopro.py +262 -62
  97. ccxt/async_support/bitpin.py +17 -16
  98. ccxt/async_support/bitrue.py +459 -290
  99. ccxt/async_support/bitso.py +199 -54
  100. ccxt/async_support/bitstamp.py +230 -96
  101. ccxt/async_support/bitteam.py +167 -25
  102. ccxt/async_support/{huobijp.py → bittrade.py} +158 -30
  103. ccxt/async_support/bitvavo.py +213 -49
  104. ccxt/async_support/blockchaincom.py +160 -46
  105. ccxt/async_support/blofin.py +502 -120
  106. ccxt/async_support/btcalpha.py +169 -31
  107. ccxt/async_support/btcbox.py +292 -23
  108. ccxt/async_support/btcmarkets.py +211 -58
  109. ccxt/async_support/btcturk.py +161 -38
  110. ccxt/async_support/bybit.py +1775 -1030
  111. ccxt/async_support/cex.py +1440 -1303
  112. ccxt/async_support/coinbase.py +724 -212
  113. ccxt/async_support/coinbaseadvanced.py +2 -1
  114. ccxt/async_support/coinbaseexchange.py +388 -89
  115. ccxt/async_support/coinbaseinternational.py +412 -57
  116. ccxt/async_support/coincatch.py +177 -78
  117. ccxt/async_support/coincheck.py +135 -19
  118. ccxt/async_support/coinex.py +606 -232
  119. ccxt/async_support/coinmate.py +189 -63
  120. ccxt/async_support/coinmetro.py +195 -54
  121. ccxt/async_support/coinone.py +158 -51
  122. ccxt/async_support/coinsph.py +336 -61
  123. ccxt/async_support/coinspot.py +151 -52
  124. ccxt/async_support/cryptocom.py +661 -111
  125. ccxt/async_support/cryptomus.py +1137 -0
  126. ccxt/async_support/defx.py +2071 -0
  127. ccxt/async_support/delta.py +299 -99
  128. ccxt/async_support/deribit.py +348 -126
  129. ccxt/async_support/derive.py +2572 -0
  130. ccxt/async_support/digifinex.py +430 -214
  131. ccxt/async_support/ellipx.py +2029 -0
  132. ccxt/async_support/eterex.py +10 -10
  133. ccxt/async_support/excoino.py +31 -31
  134. ccxt/async_support/exir.py +14 -14
  135. ccxt/async_support/exmo.py +344 -131
  136. ccxt/async_support/exnovin.py +10 -10
  137. ccxt/async_support/farhadexchange.py +12 -12
  138. ccxt/async_support/fmfwio.py +2 -1
  139. ccxt/async_support/foxbit.py +1935 -0
  140. ccxt/async_support/gate.py +1351 -529
  141. ccxt/async_support/gateio.py +2 -1
  142. ccxt/async_support/gemini.py +144 -39
  143. ccxt/async_support/hashkey.py +152 -109
  144. ccxt/async_support/hibachi.py +2080 -0
  145. ccxt/async_support/hitbtc.py +395 -167
  146. ccxt/async_support/hitobit.py +12 -12
  147. ccxt/async_support/hollaex.py +307 -119
  148. ccxt/async_support/htx.py +851 -383
  149. ccxt/async_support/huobi.py +2 -1
  150. ccxt/async_support/hyperliquid.py +1848 -536
  151. ccxt/async_support/independentreserve.py +288 -15
  152. ccxt/async_support/indodax.py +190 -33
  153. ccxt/async_support/jibitex.py +12 -12
  154. ccxt/async_support/kraken.py +795 -351
  155. ccxt/async_support/krakenfutures.py +214 -62
  156. ccxt/async_support/kucoin.py +715 -396
  157. ccxt/async_support/kucoinfutures.py +652 -89
  158. ccxt/async_support/latoken.py +217 -113
  159. ccxt/async_support/lbank.py +425 -97
  160. ccxt/async_support/luno.py +382 -35
  161. ccxt/async_support/mercado.py +113 -6
  162. ccxt/async_support/mexc.py +874 -437
  163. ccxt/async_support/modetrade.py +2818 -0
  164. ccxt/async_support/myokx.py +54 -0
  165. ccxt/async_support/ndax.py +221 -64
  166. ccxt/async_support/nobitex.py +31 -37
  167. ccxt/async_support/novadax.py +190 -34
  168. ccxt/async_support/oceanex.py +217 -28
  169. ccxt/async_support/okcoin.py +253 -145
  170. ccxt/async_support/okexchange.py +11 -11
  171. ccxt/async_support/okx.py +1088 -351
  172. ccxt/async_support/okxus.py +54 -0
  173. ccxt/async_support/ompfinex.py +25 -24
  174. ccxt/async_support/onetrading.py +213 -392
  175. ccxt/async_support/oxfun.py +245 -166
  176. ccxt/async_support/p2b.py +151 -29
  177. ccxt/async_support/paradex.py +562 -49
  178. ccxt/async_support/paymium.py +82 -19
  179. ccxt/async_support/phemex.py +713 -172
  180. ccxt/async_support/poloniex.py +1602 -283
  181. ccxt/async_support/probit.py +224 -95
  182. ccxt/async_support/ramzinex.py +30 -27
  183. ccxt/async_support/sarmayex.py +9 -9
  184. ccxt/async_support/sarrafex.py +13 -13
  185. ccxt/async_support/tabdeal.py +14 -13
  186. ccxt/async_support/tetherland.py +9 -9
  187. ccxt/async_support/timex.py +210 -51
  188. ccxt/async_support/tokocrypto.py +167 -47
  189. ccxt/async_support/tradeogre.py +266 -31
  190. ccxt/async_support/twox.py +9 -9
  191. ccxt/async_support/ubitex.py +12 -12
  192. ccxt/async_support/upbit.py +568 -165
  193. ccxt/async_support/vertex.py +160 -32
  194. ccxt/async_support/wallex.py +12 -12
  195. ccxt/async_support/wavesexchange.py +165 -30
  196. ccxt/async_support/whitebit.py +975 -127
  197. ccxt/async_support/woo.py +1918 -1016
  198. ccxt/async_support/woofipro.py +433 -141
  199. ccxt/async_support/xt.py +649 -193
  200. ccxt/async_support/yobit.py +195 -70
  201. ccxt/async_support/zaif.py +91 -15
  202. ccxt/async_support/zonda.py +151 -36
  203. ccxt/base/decimal_to_precision.py +14 -10
  204. ccxt/base/errors.py +49 -18
  205. ccxt/base/exchange.py +1556 -450
  206. ccxt/base/precise.py +10 -0
  207. ccxt/base/types.py +114 -6
  208. ccxt/bequant.py +5 -3
  209. ccxt/bigone.py +279 -144
  210. ccxt/binance.py +2347 -1158
  211. ccxt/binancecoinm.py +9 -3
  212. ccxt/binanceus.py +17 -3
  213. ccxt/binanceusdm.py +9 -4
  214. ccxt/bingx.py +2962 -920
  215. ccxt/bit2c.py +147 -27
  216. ccxt/bitbank.py +151 -23
  217. ccxt/bitbns.py +104 -30
  218. ccxt/bitfinex.py +3290 -1113
  219. ccxt/bitflyer.py +202 -27
  220. ccxt/bitget.py +3683 -1538
  221. ccxt/bithumb.py +194 -38
  222. ccxt/bitimen.py +9 -9
  223. ccxt/bitir.py +35 -35
  224. ccxt/bitmart.py +1288 -350
  225. ccxt/bitmex.py +260 -75
  226. ccxt/bitopro.py +262 -62
  227. ccxt/bitpin.py +15 -14
  228. ccxt/bitrue.py +459 -290
  229. ccxt/bitso.py +199 -54
  230. ccxt/bitstamp.py +230 -96
  231. ccxt/bitteam.py +167 -25
  232. ccxt/{huobijp.py → bittrade.py} +158 -30
  233. ccxt/bitvavo.py +213 -49
  234. ccxt/blockchaincom.py +160 -46
  235. ccxt/blofin.py +502 -120
  236. ccxt/btcalpha.py +169 -31
  237. ccxt/btcbox.py +291 -23
  238. ccxt/btcmarkets.py +211 -58
  239. ccxt/btcturk.py +161 -38
  240. ccxt/bybit.py +1775 -1030
  241. ccxt/cex.py +1439 -1303
  242. ccxt/coinbase.py +724 -212
  243. ccxt/coinbaseadvanced.py +2 -1
  244. ccxt/coinbaseexchange.py +388 -89
  245. ccxt/coinbaseinternational.py +412 -57
  246. ccxt/coincatch.py +177 -78
  247. ccxt/coincheck.py +135 -19
  248. ccxt/coinex.py +606 -232
  249. ccxt/coinmate.py +189 -63
  250. ccxt/coinmetro.py +194 -54
  251. ccxt/coinone.py +158 -51
  252. ccxt/coinsph.py +336 -61
  253. ccxt/coinspot.py +151 -52
  254. ccxt/cryptocom.py +661 -111
  255. ccxt/cryptomus.py +1137 -0
  256. ccxt/defx.py +2070 -0
  257. ccxt/delta.py +299 -99
  258. ccxt/deribit.py +348 -126
  259. ccxt/derive.py +2571 -0
  260. ccxt/digifinex.py +430 -214
  261. ccxt/ellipx.py +2029 -0
  262. ccxt/eterex.py +7 -7
  263. ccxt/excoino.py +29 -29
  264. ccxt/exir.py +11 -11
  265. ccxt/exmo.py +343 -131
  266. ccxt/exnovin.py +8 -8
  267. ccxt/farhadexchange.py +10 -10
  268. ccxt/fmfwio.py +2 -1
  269. ccxt/foxbit.py +1935 -0
  270. ccxt/gate.py +1351 -529
  271. ccxt/gateio.py +2 -1
  272. ccxt/gemini.py +144 -39
  273. ccxt/hashkey.py +152 -109
  274. ccxt/hibachi.py +2079 -0
  275. ccxt/hitbtc.py +395 -167
  276. ccxt/hitobit.py +9 -9
  277. ccxt/hollaex.py +307 -119
  278. ccxt/htx.py +851 -383
  279. ccxt/huobi.py +2 -1
  280. ccxt/hyperliquid.py +1848 -536
  281. ccxt/independentreserve.py +287 -15
  282. ccxt/indodax.py +190 -33
  283. ccxt/jibitex.py +9 -9
  284. ccxt/kraken.py +794 -351
  285. ccxt/krakenfutures.py +214 -62
  286. ccxt/kucoin.py +715 -396
  287. ccxt/kucoinfutures.py +652 -89
  288. ccxt/latoken.py +217 -113
  289. ccxt/lbank.py +425 -97
  290. ccxt/luno.py +382 -35
  291. ccxt/mercado.py +113 -6
  292. ccxt/mexc.py +873 -437
  293. ccxt/modetrade.py +2818 -0
  294. ccxt/myokx.py +54 -0
  295. ccxt/ndax.py +221 -64
  296. ccxt/nobitex.py +29 -35
  297. ccxt/novadax.py +190 -34
  298. ccxt/oceanex.py +217 -28
  299. ccxt/okcoin.py +253 -145
  300. ccxt/okexchange.py +9 -9
  301. ccxt/okx.py +1088 -351
  302. ccxt/okxus.py +54 -0
  303. ccxt/ompfinex.py +22 -21
  304. ccxt/onetrading.py +213 -392
  305. ccxt/oxfun.py +245 -166
  306. ccxt/p2b.py +151 -29
  307. ccxt/paradex.py +562 -49
  308. ccxt/paymium.py +82 -19
  309. ccxt/phemex.py +712 -172
  310. ccxt/poloniex.py +1601 -283
  311. ccxt/pro/__init__.py +76 -17
  312. ccxt/pro/alpaca.py +21 -6
  313. ccxt/pro/apex.py +984 -0
  314. ccxt/pro/ascendex.py +58 -10
  315. ccxt/pro/bequant.py +6 -1
  316. ccxt/pro/binance.py +728 -156
  317. ccxt/pro/binancecoinm.py +6 -2
  318. ccxt/pro/binanceus.py +8 -4
  319. ccxt/pro/binanceusdm.py +7 -2
  320. ccxt/pro/bingx.py +333 -142
  321. ccxt/pro/bitfinex.py +727 -262
  322. ccxt/pro/bitget.py +570 -79
  323. ccxt/pro/bithumb.py +20 -6
  324. ccxt/pro/bitmart.py +216 -87
  325. ccxt/pro/bitmex.py +47 -9
  326. ccxt/pro/bitopro.py +26 -14
  327. ccxt/pro/bitrue.py +22 -22
  328. ccxt/pro/bitstamp.py +54 -21
  329. ccxt/pro/{huobijp.py → bittrade.py} +7 -6
  330. ccxt/pro/bitvavo.py +191 -67
  331. ccxt/pro/blockchaincom.py +21 -8
  332. ccxt/pro/blofin.py +9 -1
  333. ccxt/pro/bybit.py +632 -245
  334. ccxt/pro/cex.py +59 -24
  335. ccxt/pro/coinbase.py +102 -73
  336. ccxt/pro/coinbaseadvanced.py +2 -1
  337. ccxt/pro/coinbaseexchange.py +8 -8
  338. ccxt/pro/coinbaseinternational.py +181 -25
  339. ccxt/pro/coincatch.py +6 -7
  340. ccxt/pro/coincheck.py +11 -6
  341. ccxt/pro/coinex.py +967 -665
  342. ccxt/pro/coinone.py +16 -9
  343. ccxt/pro/cryptocom.py +448 -45
  344. ccxt/pro/defx.py +831 -0
  345. ccxt/pro/deribit.py +150 -14
  346. ccxt/pro/derive.py +704 -0
  347. ccxt/pro/exmo.py +239 -6
  348. ccxt/pro/gate.py +623 -65
  349. ccxt/pro/gateio.py +2 -1
  350. ccxt/pro/gemini.py +27 -11
  351. ccxt/pro/hashkey.py +2 -2
  352. ccxt/pro/hitbtc.py +196 -91
  353. ccxt/pro/hollaex.py +23 -7
  354. ccxt/pro/htx.py +51 -14
  355. ccxt/pro/huobi.py +2 -1
  356. ccxt/pro/hyperliquid.py +591 -27
  357. ccxt/pro/independentreserve.py +9 -6
  358. ccxt/pro/kraken.py +640 -320
  359. ccxt/pro/krakenfutures.py +62 -35
  360. ccxt/pro/kucoin.py +267 -46
  361. ccxt/pro/kucoinfutures.py +165 -21
  362. ccxt/pro/lbank.py +102 -21
  363. ccxt/pro/luno.py +12 -8
  364. ccxt/pro/mexc.py +877 -111
  365. ccxt/pro/modetrade.py +1271 -0
  366. ccxt/pro/myokx.py +38 -0
  367. ccxt/pro/ndax.py +15 -2
  368. ccxt/pro/okcoin.py +23 -4
  369. ccxt/pro/okx.py +573 -98
  370. ccxt/pro/okxus.py +38 -0
  371. ccxt/pro/onetrading.py +30 -13
  372. ccxt/pro/oxfun.py +131 -27
  373. ccxt/pro/p2b.py +88 -22
  374. ccxt/pro/paradex.py +3 -3
  375. ccxt/pro/phemex.py +75 -21
  376. ccxt/pro/poloniex.py +124 -41
  377. ccxt/pro/probit.py +87 -80
  378. ccxt/pro/tradeogre.py +272 -0
  379. ccxt/pro/upbit.py +152 -12
  380. ccxt/pro/vertex.py +8 -3
  381. ccxt/pro/whitebit.py +58 -5
  382. ccxt/pro/woo.py +228 -37
  383. ccxt/pro/woofipro.py +106 -18
  384. ccxt/pro/xt.py +111 -5
  385. ccxt/probit.py +224 -95
  386. ccxt/protobuf/__init__.py +0 -0
  387. ccxt/protobuf/mexc/PrivateAccountV3Api_pb2.py +37 -0
  388. ccxt/protobuf/mexc/PrivateDealsV3Api_pb2.py +37 -0
  389. ccxt/protobuf/mexc/PrivateOrdersV3Api_pb2.py +37 -0
  390. ccxt/protobuf/mexc/PublicAggreBookTickerV3Api_pb2.py +37 -0
  391. ccxt/protobuf/mexc/PublicAggreDealsV3Api_pb2.py +39 -0
  392. ccxt/protobuf/mexc/PublicAggreDepthsV3Api_pb2.py +39 -0
  393. ccxt/protobuf/mexc/PublicBookTickerBatchV3Api_pb2.py +38 -0
  394. ccxt/protobuf/mexc/PublicBookTickerV3Api_pb2.py +37 -0
  395. ccxt/protobuf/mexc/PublicDealsV3Api_pb2.py +39 -0
  396. ccxt/protobuf/mexc/PublicIncreaseDepthsBatchV3Api_pb2.py +38 -0
  397. ccxt/protobuf/mexc/PublicIncreaseDepthsV3Api_pb2.py +39 -0
  398. ccxt/protobuf/mexc/PublicLimitDepthsV3Api_pb2.py +39 -0
  399. ccxt/protobuf/mexc/PublicMiniTickerV3Api_pb2.py +37 -0
  400. ccxt/protobuf/mexc/PublicMiniTickersV3Api_pb2.py +38 -0
  401. ccxt/protobuf/mexc/PublicSpotKlineV3Api_pb2.py +37 -0
  402. ccxt/protobuf/mexc/PushDataV3ApiWrapper_pb2.py +52 -0
  403. ccxt/protobuf/mexc/__init__.py +0 -0
  404. ccxt/ramzinex.py +28 -25
  405. ccxt/sarmayex.py +7 -7
  406. ccxt/sarrafex.py +10 -10
  407. ccxt/static_dependencies/__init__.py +1 -1
  408. ccxt/static_dependencies/lark/py.typed +0 -0
  409. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  410. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  411. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  412. ccxt/tabdeal.py +12 -11
  413. ccxt/test/tests_async.py +261 -57
  414. ccxt/test/tests_helpers.py +1 -3
  415. ccxt/test/tests_init.py +4 -3
  416. ccxt/test/tests_sync.py +261 -57
  417. ccxt/tetherland.py +7 -7
  418. ccxt/timex.py +210 -51
  419. ccxt/tokocrypto.py +167 -47
  420. ccxt/tradeogre.py +266 -31
  421. ccxt/twox.py +7 -7
  422. ccxt/ubitex.py +9 -9
  423. ccxt/upbit.py +568 -165
  424. ccxt/vertex.py +160 -32
  425. ccxt/wallex.py +9 -9
  426. ccxt/wavesexchange.py +165 -30
  427. ccxt/whitebit.py +975 -127
  428. ccxt/woo.py +1917 -1016
  429. ccxt/woofipro.py +432 -141
  430. ccxt/xt.py +649 -193
  431. ccxt/yobit.py +194 -70
  432. ccxt/zaif.py +91 -15
  433. ccxt/zonda.py +151 -36
  434. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/METADATA +225 -73
  435. ccxt_ir-4.5.0.dist-info/RECORD +743 -0
  436. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/WHEEL +1 -1
  437. ccxt/abstract/ace.py +0 -15
  438. ccxt/abstract/bitbay.py +0 -53
  439. ccxt/abstract/bitcoincom.py +0 -115
  440. ccxt/abstract/bitfinex2.py +0 -139
  441. ccxt/abstract/bitpanda.py +0 -35
  442. ccxt/abstract/bl3p.py +0 -19
  443. ccxt/abstract/coinlist.py +0 -54
  444. ccxt/abstract/currencycom.py +0 -68
  445. ccxt/abstract/hitbtc3.py +0 -115
  446. ccxt/abstract/idex.py +0 -26
  447. ccxt/abstract/kuna.py +0 -182
  448. ccxt/abstract/lykke.py +0 -29
  449. ccxt/abstract/poloniexfutures.py +0 -48
  450. ccxt/abstract/wazirx.py +0 -30
  451. ccxt/ace.py +0 -1012
  452. ccxt/async_support/ace.py +0 -1012
  453. ccxt/async_support/base/ws/aiohttp_client.py +0 -125
  454. ccxt/async_support/base/ws/fast_client.py +0 -96
  455. ccxt/async_support/bitbay.py +0 -17
  456. ccxt/async_support/bitcoincom.py +0 -17
  457. ccxt/async_support/bitfinex2.py +0 -3552
  458. ccxt/async_support/bitpanda.py +0 -16
  459. ccxt/async_support/bl3p.py +0 -485
  460. ccxt/async_support/coinlist.py +0 -2243
  461. ccxt/async_support/currencycom.py +0 -1950
  462. ccxt/async_support/hitbtc3.py +0 -16
  463. ccxt/async_support/idex.py +0 -1766
  464. ccxt/async_support/kuna.py +0 -1841
  465. ccxt/async_support/lykke.py +0 -1270
  466. ccxt/async_support/poloniexfutures.py +0 -1717
  467. ccxt/async_support/wazirx.py +0 -1224
  468. ccxt/bitbay.py +0 -17
  469. ccxt/bitcoincom.py +0 -17
  470. ccxt/bitfinex2.py +0 -3552
  471. ccxt/bitpanda.py +0 -16
  472. ccxt/bl3p.py +0 -485
  473. ccxt/coinlist.py +0 -2243
  474. ccxt/currencycom.py +0 -1950
  475. ccxt/hitbtc3.py +0 -16
  476. ccxt/idex.py +0 -1766
  477. ccxt/kuna.py +0 -1841
  478. ccxt/lykke.py +0 -1270
  479. ccxt/poloniexfutures.py +0 -1717
  480. ccxt/pro/bitcoincom.py +0 -34
  481. ccxt/pro/bitfinex2.py +0 -1083
  482. ccxt/pro/bitpanda.py +0 -15
  483. ccxt/pro/currencycom.py +0 -536
  484. ccxt/pro/idex.py +0 -672
  485. ccxt/pro/poloniexfutures.py +0 -990
  486. ccxt/pro/wazirx.py +0 -749
  487. ccxt/test/base/__init__.py +0 -29
  488. ccxt/test/base/test_account.py +0 -26
  489. ccxt/test/base/test_balance.py +0 -56
  490. ccxt/test/base/test_borrow_interest.py +0 -35
  491. ccxt/test/base/test_borrow_rate.py +0 -32
  492. ccxt/test/base/test_calculate_fee.py +0 -51
  493. ccxt/test/base/test_crypto.py +0 -127
  494. ccxt/test/base/test_currency.py +0 -76
  495. ccxt/test/base/test_datetime.py +0 -109
  496. ccxt/test/base/test_decimal_to_precision.py +0 -392
  497. ccxt/test/base/test_deep_extend.py +0 -68
  498. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  499. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  500. ccxt/test/base/test_funding_rate_history.py +0 -29
  501. ccxt/test/base/test_last_price.py +0 -31
  502. ccxt/test/base/test_ledger_entry.py +0 -45
  503. ccxt/test/base/test_ledger_item.py +0 -48
  504. ccxt/test/base/test_leverage_tier.py +0 -33
  505. ccxt/test/base/test_liquidation.py +0 -50
  506. ccxt/test/base/test_margin_mode.py +0 -24
  507. ccxt/test/base/test_margin_modification.py +0 -35
  508. ccxt/test/base/test_market.py +0 -193
  509. ccxt/test/base/test_number.py +0 -411
  510. ccxt/test/base/test_ohlcv.py +0 -33
  511. ccxt/test/base/test_open_interest.py +0 -32
  512. ccxt/test/base/test_order.py +0 -64
  513. ccxt/test/base/test_order_book.py +0 -69
  514. ccxt/test/base/test_position.py +0 -60
  515. ccxt/test/base/test_shared_methods.py +0 -353
  516. ccxt/test/base/test_status.py +0 -24
  517. ccxt/test/base/test_throttle.py +0 -126
  518. ccxt/test/base/test_ticker.py +0 -92
  519. ccxt/test/base/test_trade.py +0 -47
  520. ccxt/test/base/test_trading_fee.py +0 -26
  521. ccxt/test/base/test_transaction.py +0 -39
  522. ccxt/test/test_async.py +0 -1649
  523. ccxt/test/test_sync.py +0 -1648
  524. ccxt/wazirx.py +0 -1224
  525. ccxt_ir-4.3.46.0.2.dist-info/RECORD +0 -772
  526. /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
  527. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info/licenses}/LICENSE.txt +0 -0
  528. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.bitflyer import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currency, Int, Market, MarketInterface, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Trade, TradingFeeInterface, Transaction
9
+ from ccxt.base.types import Any, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, FundingRate, Trade, TradingFeeInterface, Transaction, MarketInterface
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import ArgumentsRequired
@@ -18,7 +18,7 @@ from ccxt.base.precise import Precise
18
18
 
19
19
  class bitflyer(Exchange, ImplicitAPI):
20
20
 
21
- def describe(self):
21
+ def describe(self) -> Any:
22
22
  return self.deep_extend(super(bitflyer, self).describe(), {
23
23
  'id': 'bitflyer',
24
24
  'name': 'bitFlyer',
@@ -39,6 +39,9 @@ class bitflyer(Exchange, ImplicitAPI):
39
39
  'fetchBalance': True,
40
40
  'fetchClosedOrders': 'emulated',
41
41
  'fetchDeposits': True,
42
+ 'fetchFundingRate': True,
43
+ 'fetchFundingRateHistory': False,
44
+ 'fetchFundingRates': False,
42
45
  'fetchMarginMode': False,
43
46
  'fetchMarkets': True,
44
47
  'fetchMyTrades': True,
@@ -59,7 +62,7 @@ class bitflyer(Exchange, ImplicitAPI):
59
62
  'withdraw': True,
60
63
  },
61
64
  'urls': {
62
- 'logo': 'https://user-images.githubusercontent.com/1294454/28051642-56154182-660e-11e7-9b0d-6042d1e6edd8.jpg',
65
+ 'logo': 'https://github.com/user-attachments/assets/d0217747-e54d-4533-8416-0d553dca74bb',
63
66
  'api': {
64
67
  'rest': 'https://api.{hostname}',
65
68
  },
@@ -78,6 +81,7 @@ class bitflyer(Exchange, ImplicitAPI):
78
81
  'gethealth',
79
82
  'getboardstate',
80
83
  'getchats',
84
+ 'getfundingrate',
81
85
  ],
82
86
  },
83
87
  'private': {
@@ -119,6 +123,82 @@ class bitflyer(Exchange, ImplicitAPI):
119
123
  },
120
124
  },
121
125
  'precisionMode': TICK_SIZE,
126
+ 'features': {
127
+ 'spot': {
128
+ 'sandbox': False,
129
+ 'createOrder': {
130
+ 'marginMode': False,
131
+ 'triggerPrice': False,
132
+ 'triggerPriceType': None,
133
+ 'triggerDirection': False,
134
+ 'stopLossPrice': False,
135
+ 'takeProfitPrice': False,
136
+ 'attachedStopLossTakeProfit': None,
137
+ 'timeInForce': {
138
+ 'IOC': True,
139
+ 'FOK': True,
140
+ 'PO': True,
141
+ 'GTD': True, # todo implement
142
+ },
143
+ 'hedged': False,
144
+ 'trailing': False, # todo recheck
145
+ 'leverage': False,
146
+ 'marketBuyRequiresPrice': False,
147
+ 'marketBuyByCost': False,
148
+ 'selfTradePrevention': False,
149
+ 'iceberg': False,
150
+ },
151
+ 'createOrders': None,
152
+ 'fetchMyTrades': {
153
+ 'marginMode': False,
154
+ 'limit': 100,
155
+ 'daysBack': None,
156
+ 'untilDays': None,
157
+ 'symbolRequired': True,
158
+ },
159
+ 'fetchOrder': {
160
+ 'marginMode': False,
161
+ 'trigger': False,
162
+ 'trailing': False,
163
+ 'symbolRequired': True,
164
+ },
165
+ 'fetchOpenOrders': {
166
+ 'marginMode': False,
167
+ 'limit': 100,
168
+ 'trigger': False,
169
+ 'trailing': False,
170
+ 'symbolRequired': True,
171
+ },
172
+ 'fetchOrders': {
173
+ 'marginMode': False,
174
+ 'limit': 100,
175
+ 'daysBack': None,
176
+ 'untilDays': None,
177
+ 'trigger': False,
178
+ 'trailing': False,
179
+ 'symbolRequired': True,
180
+ },
181
+ 'fetchClosedOrders': {
182
+ 'marginMode': False,
183
+ 'limit': 100,
184
+ 'daysBack': None,
185
+ 'daysBackCanceled': None,
186
+ 'untilDays': None,
187
+ 'trigger': False,
188
+ 'trailing': False,
189
+ 'symbolRequired': True,
190
+ },
191
+ 'fetchOHLCV': None,
192
+ },
193
+ 'swap': {
194
+ 'linear': None,
195
+ 'inverse': None,
196
+ },
197
+ 'future': {
198
+ 'linear': None,
199
+ 'inverse': None,
200
+ },
201
+ },
122
202
  'exceptions': {
123
203
  'exact': {
124
204
  '-2': OnMaintenance, # {"status":-2,"error_message":"Under maintenance","data":null}
@@ -156,7 +236,9 @@ class bitflyer(Exchange, ImplicitAPI):
156
236
  async def fetch_markets(self, params={}) -> List[Market]:
157
237
  """
158
238
  retrieves data on all markets for bitflyer
159
- :see: https://lightning.bitflyer.com/docs?lang=en#market-list
239
+
240
+ https://lightning.bitflyer.com/docs?lang=en#market-list
241
+
160
242
  :param dict [params]: extra parameters specific to the exchange API endpoint
161
243
  :returns dict[]: an array of objects representing market data
162
244
  """
@@ -168,6 +250,7 @@ class bitflyer(Exchange, ImplicitAPI):
168
250
  # {"product_code": "BCH_BTC", "market_type": "Spot"},
169
251
  # # forex swap
170
252
  # {"product_code": "FX_BTC_JPY", "market_type": "FX"},
253
+ #
171
254
  # # future
172
255
  # {
173
256
  # "product_code": "BTCJPY11FEB2022",
@@ -314,7 +397,9 @@ class bitflyer(Exchange, ImplicitAPI):
314
397
  async def fetch_balance(self, params={}) -> Balances:
315
398
  """
316
399
  query for balance and get the amount of funds available for trading or funds locked in orders
317
- :see: https://lightning.bitflyer.com/docs?lang=en#get-account-asset-balance
400
+
401
+ https://lightning.bitflyer.com/docs?lang=en#get-account-asset-balance
402
+
318
403
  :param dict [params]: extra parameters specific to the exchange API endpoint
319
404
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
320
405
  """
@@ -344,7 +429,9 @@ class bitflyer(Exchange, ImplicitAPI):
344
429
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
345
430
  """
346
431
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
347
- :see: https://lightning.bitflyer.com/docs?lang=en#order-book
432
+
433
+ https://lightning.bitflyer.com/docs?lang=en#order-book
434
+
348
435
  :param str symbol: unified symbol of the market to fetch the order book for
349
436
  :param int [limit]: the maximum amount of order book entries to return
350
437
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -388,7 +475,9 @@ class bitflyer(Exchange, ImplicitAPI):
388
475
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
389
476
  """
390
477
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
391
- :see: https://lightning.bitflyer.com/docs?lang=en#ticker
478
+
479
+ https://lightning.bitflyer.com/docs?lang=en#ticker
480
+
392
481
  :param str symbol: unified symbol of the market to fetch the ticker for
393
482
  :param dict [params]: extra parameters specific to the exchange API endpoint
394
483
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -463,7 +552,9 @@ class bitflyer(Exchange, ImplicitAPI):
463
552
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
464
553
  """
465
554
  get the list of most recent trades for a particular symbol
466
- :see: https://lightning.bitflyer.com/docs?lang=en#list-executions
555
+
556
+ https://lightning.bitflyer.com/docs?lang=en#list-executions
557
+
467
558
  :param str symbol: unified symbol of the market to fetch trades for
468
559
  :param int [since]: timestamp in ms of the earliest trade to fetch
469
560
  :param int [limit]: the maximum amount of trades to fetch
@@ -496,7 +587,9 @@ class bitflyer(Exchange, ImplicitAPI):
496
587
  async def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
497
588
  """
498
589
  fetch the trading fees for a market
499
- :see: https://lightning.bitflyer.com/docs?lang=en#get-trading-commission
590
+
591
+ https://lightning.bitflyer.com/docs?lang=en#get-trading-commission
592
+
500
593
  :param str symbol: unified market symbol
501
594
  :param dict [params]: extra parameters specific to the exchange API endpoint
502
595
  :returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
@@ -525,12 +618,14 @@ class bitflyer(Exchange, ImplicitAPI):
525
618
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
526
619
  """
527
620
  create a trade order
528
- :see: https://lightning.bitflyer.com/docs?lang=en#send-a-new-order
621
+
622
+ https://lightning.bitflyer.com/docs?lang=en#send-a-new-order
623
+
529
624
  :param str symbol: unified symbol of the market to create an order in
530
625
  :param str type: 'market' or 'limit'
531
626
  :param str side: 'buy' or 'sell'
532
627
  :param float amount: how much of currency you want to trade in units of base currency
533
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
628
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
534
629
  :param dict [params]: extra parameters specific to the exchange API endpoint
535
630
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
536
631
  """
@@ -553,7 +648,9 @@ class bitflyer(Exchange, ImplicitAPI):
553
648
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
554
649
  """
555
650
  cancels an open order
556
- :see: https://lightning.bitflyer.com/docs?lang=en#cancel-order
651
+
652
+ https://lightning.bitflyer.com/docs?lang=en#cancel-order
653
+
557
654
  :param str id: order id
558
655
  :param str symbol: unified symbol of the market the order was made in
559
656
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -566,7 +663,13 @@ class bitflyer(Exchange, ImplicitAPI):
566
663
  'product_code': self.market_id(symbol),
567
664
  'child_order_acceptance_id': id,
568
665
  }
569
- return await self.privatePostCancelchildorder(self.extend(request, params))
666
+ response = await self.privatePostCancelchildorder(self.extend(request, params))
667
+ #
668
+ # 200 OK.
669
+ #
670
+ return self.safe_order({
671
+ 'info': response,
672
+ })
570
673
 
571
674
  def parse_order_status(self, status: Str):
572
675
  statuses: dict = {
@@ -612,7 +715,6 @@ class bitflyer(Exchange, ImplicitAPI):
612
715
  'postOnly': None,
613
716
  'side': side,
614
717
  'price': price,
615
- 'stopPrice': None,
616
718
  'triggerPrice': None,
617
719
  'cost': None,
618
720
  'amount': amount,
@@ -626,7 +728,9 @@ class bitflyer(Exchange, ImplicitAPI):
626
728
  async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = 100, params={}) -> List[Order]:
627
729
  """
628
730
  fetches information on multiple orders made by the user
629
- :see: https://lightning.bitflyer.com/docs?lang=en#list-orders
731
+
732
+ https://lightning.bitflyer.com/docs?lang=en#list-orders
733
+
630
734
  :param str symbol: unified market symbol of the market orders were made in
631
735
  :param int [since]: the earliest time in ms to fetch orders for
632
736
  :param int [limit]: the maximum number of order structures to retrieve
@@ -650,7 +754,9 @@ class bitflyer(Exchange, ImplicitAPI):
650
754
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = 100, params={}) -> List[Order]:
651
755
  """
652
756
  fetch all unfilled currently open orders
653
- :see: https://lightning.bitflyer.com/docs?lang=en#list-orders
757
+
758
+ https://lightning.bitflyer.com/docs?lang=en#list-orders
759
+
654
760
  :param str symbol: unified market symbol
655
761
  :param int [since]: the earliest time in ms to fetch open orders for
656
762
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -665,7 +771,9 @@ class bitflyer(Exchange, ImplicitAPI):
665
771
  async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = 100, params={}) -> List[Order]:
666
772
  """
667
773
  fetches information on multiple closed orders made by the user
668
- :see: https://lightning.bitflyer.com/docs?lang=en#list-orders
774
+
775
+ https://lightning.bitflyer.com/docs?lang=en#list-orders
776
+
669
777
  :param str symbol: unified market symbol of the market orders were made in
670
778
  :param int [since]: the earliest time in ms to fetch orders for
671
779
  :param int [limit]: the maximum number of order structures to retrieve
@@ -680,7 +788,10 @@ class bitflyer(Exchange, ImplicitAPI):
680
788
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
681
789
  """
682
790
  fetches information on an order made by the user
683
- :see: https://lightning.bitflyer.com/docs?lang=en#list-orders
791
+
792
+ https://lightning.bitflyer.com/docs?lang=en#list-orders
793
+
794
+ :param str id: the order id
684
795
  :param str symbol: unified symbol of the market the order was made in
685
796
  :param dict [params]: extra parameters specific to the exchange API endpoint
686
797
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -696,7 +807,9 @@ class bitflyer(Exchange, ImplicitAPI):
696
807
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
697
808
  """
698
809
  fetch all trades made by the user
699
- :see: https://lightning.bitflyer.com/docs?lang=en#list-executions
810
+
811
+ https://lightning.bitflyer.com/docs?lang=en#list-executions
812
+
700
813
  :param str symbol: unified market symbol
701
814
  :param int [since]: the earliest time in ms to fetch trades for
702
815
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -729,10 +842,12 @@ class bitflyer(Exchange, ImplicitAPI):
729
842
  #
730
843
  return self.parse_trades(response, market, since, limit)
731
844
 
732
- async def fetch_positions(self, symbols: Strings = None, params={}):
845
+ async def fetch_positions(self, symbols: Strings = None, params={}) -> List[Position]:
733
846
  """
734
847
  fetch all open positions
735
- :see: https://lightning.bitflyer.com/docs?lang=en#get-open-interest-summary
848
+
849
+ https://lightning.bitflyer.com/docs?lang=en#get-open-interest-summary
850
+
736
851
  :param str[] symbols: list of unified market symbols
737
852
  :param dict [params]: extra parameters specific to the exchange API endpoint
738
853
  :returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
@@ -764,10 +879,12 @@ class bitflyer(Exchange, ImplicitAPI):
764
879
  # todo unify parsePosition/parsePositions
765
880
  return response
766
881
 
767
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
882
+ async def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
768
883
  """
769
884
  make a withdrawal
770
- :see: https://lightning.bitflyer.com/docs?lang=en#withdrawing-funds
885
+
886
+ https://lightning.bitflyer.com/docs?lang=en#withdrawing-funds
887
+
771
888
  :param str code: unified currency code
772
889
  :param float amount: the amount to withdraw
773
890
  :param str address: the address to withdraw to
@@ -796,7 +913,9 @@ class bitflyer(Exchange, ImplicitAPI):
796
913
  async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
797
914
  """
798
915
  fetch all deposits made to an account
799
- :see: https://lightning.bitflyer.com/docs?lang=en#get-crypto-assets-deposit-history
916
+
917
+ https://lightning.bitflyer.com/docs?lang=en#get-crypto-assets-deposit-history
918
+
800
919
  :param str code: unified currency code
801
920
  :param int [since]: the earliest time in ms to fetch deposits for
802
921
  :param int [limit]: the maximum number of deposits structures to retrieve
@@ -830,7 +949,9 @@ class bitflyer(Exchange, ImplicitAPI):
830
949
  async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
831
950
  """
832
951
  fetch all withdrawals made from an account
833
- :see: https://lightning.bitflyer.com/docs?lang=en#get-crypto-assets-transaction-history
952
+
953
+ https://lightning.bitflyer.com/docs?lang=en#get-crypto-assets-transaction-history
954
+
834
955
  :param str code: unified currency code
835
956
  :param int [since]: the earliest time in ms to fetch withdrawals for
836
957
  :param int [limit]: the maximum number of withdrawals structures to retrieve
@@ -956,6 +1077,60 @@ class bitflyer(Exchange, ImplicitAPI):
956
1077
  'fee': fee,
957
1078
  }
958
1079
 
1080
+ async def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
1081
+ """
1082
+ fetch the current funding rate
1083
+
1084
+ https://lightning.bitflyer.com/docs#funding-rate
1085
+
1086
+ :param str symbol: unified market symbol
1087
+ :param dict [params]: extra parameters specific to the exchange API endpoint
1088
+ :returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
1089
+ """
1090
+ await self.load_markets()
1091
+ market = self.market(symbol)
1092
+ request: dict = {
1093
+ 'product_code': market['id'],
1094
+ }
1095
+ response = await self.publicGetGetfundingrate(self.extend(request, params))
1096
+ #
1097
+ # {
1098
+ # "current_funding_rate": -0.003750000000
1099
+ # "next_funding_rate_settledate": "2024-04-15T13:00:00"
1100
+ # }
1101
+ #
1102
+ return self.parse_funding_rate(response, market)
1103
+
1104
+ def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
1105
+ #
1106
+ # {
1107
+ # "current_funding_rate": -0.003750000000
1108
+ # "next_funding_rate_settledate": "2024-04-15T13:00:00"
1109
+ # }
1110
+ #
1111
+ nextFundingDatetime = self.safe_string(contract, 'next_funding_rate_settledate')
1112
+ nextFundingTimestamp = self.parse8601(nextFundingDatetime)
1113
+ return {
1114
+ 'info': contract,
1115
+ 'symbol': self.safe_string(market, 'symbol'),
1116
+ 'markPrice': None,
1117
+ 'indexPrice': None,
1118
+ 'interestRate': None,
1119
+ 'estimatedSettlePrice': None,
1120
+ 'timestamp': None,
1121
+ 'datetime': None,
1122
+ 'fundingRate': None,
1123
+ 'fundingTimestamp': None,
1124
+ 'fundingDatetime': None,
1125
+ 'nextFundingRate': self.safe_number(contract, 'current_funding_rate'),
1126
+ 'nextFundingTimestamp': nextFundingTimestamp,
1127
+ 'nextFundingDatetime': self.iso8601(nextFundingTimestamp),
1128
+ 'previousFundingRate': None,
1129
+ 'previousFundingTimestamp': None,
1130
+ 'previousFundingDatetime': None,
1131
+ 'interval': None,
1132
+ }
1133
+
959
1134
  def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
960
1135
  request = '/' + self.version + '/'
961
1136
  if api == 'private':
@@ -988,8 +1163,8 @@ class bitflyer(Exchange, ImplicitAPI):
988
1163
  feedback = self.id + ' ' + body
989
1164
  # i.e. {"status":-2,"error_message":"Under maintenance","data":null}
990
1165
  errorMessage = self.safe_string(response, 'error_message')
991
- statusCode = self.safe_number(response, 'status')
1166
+ statusCode = self.safe_integer(response, 'status')
992
1167
  if errorMessage is not None:
993
1168
  self.throw_exactly_matched_exception(self.exceptions['exact'], statusCode, feedback)
994
- self.throw_broadly_matched_exception(self.exceptions['broad'], errorMessage, feedback)
1169
+ raise ExchangeError(feedback)
995
1170
  return None