ccxt 4.2.77__py2.py3-none-any.whl → 4.4.49__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 +24 -0
  44. ccxt/abstract/kucoinfutures.py +34 -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 +3030 -1087
  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 +3205 -937
  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 +238 -49
  89. ccxt/async_support/bitget.py +1525 -573
  90. ccxt/async_support/bithumb.py +199 -65
  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 +392 -148
  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 +2231 -1193
  107. ccxt/async_support/cex.py +1409 -1329
  108. ccxt/async_support/coinbase.py +1454 -287
  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 +223 -97
  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 +404 -109
  125. ccxt/async_support/deribit.py +639 -323
  126. ccxt/async_support/digifinex.py +465 -233
  127. ccxt/async_support/ellipx.py +1887 -0
  128. ccxt/async_support/exmo.py +317 -128
  129. ccxt/async_support/gate.py +1472 -463
  130. ccxt/async_support/gemini.py +206 -84
  131. ccxt/async_support/hashkey.py +4164 -0
  132. ccxt/async_support/hitbtc.py +433 -178
  133. ccxt/async_support/hollaex.py +207 -83
  134. ccxt/async_support/htx.py +1095 -563
  135. ccxt/async_support/huobijp.py +178 -56
  136. ccxt/async_support/hyperliquid.py +1678 -292
  137. ccxt/async_support/idex.py +219 -95
  138. ccxt/async_support/independentreserve.py +300 -31
  139. ccxt/async_support/indodax.py +226 -62
  140. ccxt/async_support/kraken.py +871 -354
  141. ccxt/async_support/krakenfutures.py +324 -100
  142. ccxt/async_support/kucoin.py +917 -357
  143. ccxt/async_support/kucoinfutures.py +1004 -149
  144. ccxt/async_support/kuna.py +198 -107
  145. ccxt/async_support/latoken.py +199 -79
  146. ccxt/async_support/lbank.py +360 -113
  147. ccxt/async_support/luno.py +185 -62
  148. ccxt/async_support/lykke.py +168 -55
  149. ccxt/async_support/mercado.py +101 -29
  150. ccxt/async_support/mexc.py +995 -429
  151. ccxt/async_support/myokx.py +53 -0
  152. ccxt/async_support/ndax.py +234 -82
  153. ccxt/async_support/novadax.py +195 -75
  154. ccxt/async_support/oceanex.py +244 -59
  155. ccxt/async_support/okcoin.py +301 -165
  156. ccxt/async_support/okx.py +1776 -454
  157. ccxt/async_support/onetrading.py +198 -414
  158. ccxt/async_support/oxfun.py +2898 -0
  159. ccxt/async_support/p2b.py +142 -52
  160. ccxt/async_support/paradex.py +2085 -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 +1137 -296
  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 +1722 -480
  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 +3030 -1087
  187. ccxt/binancecoinm.py +2 -1
  188. ccxt/binanceus.py +12 -1
  189. ccxt/binanceusdm.py +3 -1
  190. ccxt/bingx.py +3205 -937
  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 +238 -49
  197. ccxt/bitget.py +1525 -573
  198. ccxt/bithumb.py +198 -65
  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 +392 -148
  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 +2231 -1193
  215. ccxt/cex.py +1408 -1329
  216. ccxt/coinbase.py +1454 -287
  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 +223 -97
  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 +404 -109
  233. ccxt/deribit.py +639 -323
  234. ccxt/digifinex.py +465 -233
  235. ccxt/ellipx.py +1887 -0
  236. ccxt/exmo.py +317 -128
  237. ccxt/gate.py +1472 -463
  238. ccxt/gemini.py +206 -84
  239. ccxt/hashkey.py +4164 -0
  240. ccxt/hitbtc.py +433 -178
  241. ccxt/hollaex.py +207 -83
  242. ccxt/htx.py +1095 -563
  243. ccxt/huobijp.py +178 -56
  244. ccxt/hyperliquid.py +1677 -292
  245. ccxt/idex.py +219 -95
  246. ccxt/independentreserve.py +299 -31
  247. ccxt/indodax.py +226 -62
  248. ccxt/kraken.py +871 -354
  249. ccxt/krakenfutures.py +324 -100
  250. ccxt/kucoin.py +917 -357
  251. ccxt/kucoinfutures.py +1004 -149
  252. ccxt/kuna.py +198 -107
  253. ccxt/latoken.py +199 -79
  254. ccxt/lbank.py +360 -113
  255. ccxt/luno.py +185 -62
  256. ccxt/lykke.py +168 -55
  257. ccxt/mercado.py +101 -29
  258. ccxt/mexc.py +994 -429
  259. ccxt/myokx.py +53 -0
  260. ccxt/ndax.py +234 -82
  261. ccxt/novadax.py +195 -75
  262. ccxt/oceanex.py +244 -59
  263. ccxt/okcoin.py +301 -165
  264. ccxt/okx.py +1776 -454
  265. ccxt/onetrading.py +198 -414
  266. ccxt/oxfun.py +2897 -0
  267. ccxt/p2b.py +142 -52
  268. ccxt/paradex.py +2085 -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 +62 -14
  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 +143 -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 +203 -81
  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 +965 -665
  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 +167 -31
  309. ccxt/pro/exmo.py +252 -20
  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 +92 -33
  336. ccxt/pro/poloniex.py +128 -49
  337. ccxt/pro/poloniexfutures.py +53 -32
  338. ccxt/pro/probit.py +92 -85
  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 +437 -65
  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} +456 -391
  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} +456 -393
  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 +1137 -296
  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.49.dist-info/LICENSE.txt +21 -0
  496. ccxt-4.4.49.dist-info/METADATA +646 -0
  497. ccxt-4.4.49.dist-info/RECORD +669 -0
  498. {ccxt-4.2.77.dist-info → ccxt-4.4.49.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.77.dist-info/METADATA +0 -626
  545. ccxt-4.2.77.dist-info/RECORD +0 -534
  546. {ccxt-4.2.77.dist-info → ccxt-4.4.49.dist-info}/top_level.txt +0 -0
@@ -4,11 +4,12 @@
4
4
  # https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
- from ccxt.abstract.coinbasepro import ImplicitAPI
7
+ from ccxt.abstract.coinbaseexchange import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Account, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
9
+ from ccxt.base.types import Account, Balances, Currencies, Currency, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import ArgumentsRequired
14
15
  from ccxt.base.errors import InsufficientFunds
@@ -17,17 +18,16 @@ from ccxt.base.errors import InvalidOrder
17
18
  from ccxt.base.errors import OrderNotFound
18
19
  from ccxt.base.errors import RateLimitExceeded
19
20
  from ccxt.base.errors import OnMaintenance
20
- from ccxt.base.errors import AuthenticationError
21
21
  from ccxt.base.decimal_to_precision import TICK_SIZE
22
22
  from ccxt.base.precise import Precise
23
23
 
24
24
 
25
- class coinbasepro(Exchange, ImplicitAPI):
25
+ class coinbaseexchange(Exchange, ImplicitAPI):
26
26
 
27
27
  def describe(self):
28
- return self.deep_extend(super(coinbasepro, self).describe(), {
29
- 'id': 'coinbasepro',
30
- 'name': 'Coinbase Pro',
28
+ return self.deep_extend(super(coinbaseexchange, self).describe(), {
29
+ 'id': 'coinbaseexchange',
30
+ 'name': 'Coinbase Exchange',
31
31
  'countries': ['US'],
32
32
  'rateLimit': 100,
33
33
  'userAgent': self.userAgents['chrome'],
@@ -53,7 +53,10 @@ class coinbasepro(Exchange, ImplicitAPI):
53
53
  'fetchDepositAddress': False, # the exchange does not have self method, only createDepositAddress, see https://github.com/ccxt/ccxt/pull/7405
54
54
  'fetchDeposits': True,
55
55
  'fetchDepositsWithdrawals': True,
56
+ 'fetchFundingHistory': False,
56
57
  'fetchFundingRate': False,
58
+ 'fetchFundingRateHistory': False,
59
+ 'fetchFundingRates': False,
57
60
  'fetchLedger': True,
58
61
  'fetchMarginMode': False,
59
62
  'fetchMarkets': True,
@@ -64,7 +67,13 @@ class coinbasepro(Exchange, ImplicitAPI):
64
67
  'fetchOrderBook': True,
65
68
  'fetchOrders': True,
66
69
  'fetchOrderTrades': True,
70
+ 'fetchPosition': False,
71
+ 'fetchPositionHistory': False,
67
72
  'fetchPositionMode': False,
73
+ 'fetchPositions': False,
74
+ 'fetchPositionsForSymbol': False,
75
+ 'fetchPositionsHistory': False,
76
+ 'fetchPositionsRisk': False,
68
77
  'fetchTicker': True,
69
78
  'fetchTickers': True,
70
79
  'fetchTime': True,
@@ -83,19 +92,19 @@ class coinbasepro(Exchange, ImplicitAPI):
83
92
  '6h': 21600,
84
93
  '1d': 86400,
85
94
  },
86
- 'hostname': 'pro.coinbase.com',
95
+ 'hostname': 'exchange.coinbase.com',
87
96
  'urls': {
88
97
  'test': {
89
- 'public': 'https://api-public.sandbox.pro.coinbase.com',
90
- 'private': 'https://api-public.sandbox.pro.coinbase.com',
98
+ 'public': 'https://api-public.sandbox.exchange.coinbase.com',
99
+ 'private': 'https://api-public.sandbox.exchange.coinbase.com',
91
100
  },
92
- 'logo': 'https://user-images.githubusercontent.com/1294454/41764625-63b7ffde-760a-11e8-996d-a6328fa9347a.jpg',
101
+ 'logo': 'https://github.com/ccxt/ccxt/assets/43336371/34a65553-88aa-4a38-a714-064bd228b97e',
93
102
  'api': {
94
103
  'public': 'https://api.{hostname}',
95
104
  'private': 'https://api.{hostname}',
96
105
  },
97
- 'www': 'https://pro.coinbase.com/',
98
- 'doc': 'https://docs.pro.coinbase.com',
106
+ 'www': 'https://coinbase.com/',
107
+ 'doc': 'https://docs.cloud.coinbase.com/exchange/docs/',
99
108
  'fees': [
100
109
  'https://docs.pro.coinbase.com/#fees',
101
110
  'https://support.pro.coinbase.com/customer/en/portal/articles/2945310-fees',
@@ -118,7 +127,8 @@ class coinbasepro(Exchange, ImplicitAPI):
118
127
  'products/{id}/ticker',
119
128
  'products/{id}/trades',
120
129
  'time',
121
- 'products/spark-lines', # experimental
130
+ 'products/spark-lines', # experimental,
131
+ 'products/volume-summary',
122
132
  ],
123
133
  },
124
134
  'private': {
@@ -215,6 +225,82 @@ class coinbasepro(Exchange, ImplicitAPI):
215
225
  },
216
226
  },
217
227
  },
228
+ 'features': {
229
+ 'default': {
230
+ 'sandbox': True,
231
+ 'createOrder': {
232
+ 'marginMode': True,
233
+ 'triggerPrice': True,
234
+ 'triggerPriceType': None,
235
+ 'triggerDirection': False,
236
+ 'stopLossPrice': False, # todo
237
+ 'takeProfitPrice': False, # todo
238
+ 'attachedStopLossTakeProfit': None,
239
+ 'timeInForce': {
240
+ 'IOC': True,
241
+ 'FOK': True,
242
+ 'PO': True,
243
+ 'GTD': True,
244
+ },
245
+ 'hedged': False,
246
+ 'trailing': False,
247
+ 'leverage': False,
248
+ 'marketBuyByCost': False,
249
+ 'marketBuyRequiresPrice': False,
250
+ 'selfTradePrevention': False,
251
+ 'iceberg': True, # todo: implement
252
+ },
253
+ 'createOrders': None,
254
+ 'fetchMyTrades': {
255
+ 'marginMode': False,
256
+ 'limit': 100,
257
+ 'daysBack': 100000,
258
+ 'untilDays': 100000,
259
+ },
260
+ 'fetchOrder': {
261
+ 'marginMode': False,
262
+ 'trigger': False,
263
+ 'trailing': False,
264
+ },
265
+ 'fetchOpenOrders': {
266
+ 'marginMode': False,
267
+ 'limit': 100,
268
+ 'trigger': False,
269
+ 'trailing': False,
270
+ },
271
+ 'fetchOrders': {
272
+ 'marginMode': False,
273
+ 'limit': 100,
274
+ 'daysBack': 100000,
275
+ 'untilDays': 100000,
276
+ 'trigger': False,
277
+ 'trailing': False,
278
+ },
279
+ 'fetchClosedOrders': {
280
+ 'marginMode': False,
281
+ 'limit': 100,
282
+ 'daysBack': 100000,
283
+ 'daysBackCanceled': 1,
284
+ 'untilDays': 100000,
285
+ 'trigger': False,
286
+ 'trailing': False,
287
+ },
288
+ 'fetchOHLCV': {
289
+ 'limit': 300,
290
+ },
291
+ },
292
+ 'spot': {
293
+ 'extends': 'default',
294
+ },
295
+ 'swap': {
296
+ 'linear': None,
297
+ 'inverse': None,
298
+ },
299
+ 'future': {
300
+ 'linear': None,
301
+ 'inverse': None,
302
+ },
303
+ },
218
304
  'exceptions': {
219
305
  'exact': {
220
306
  'Insufficient funds': InsufficientFunds,
@@ -239,10 +325,12 @@ class coinbasepro(Exchange, ImplicitAPI):
239
325
  },
240
326
  })
241
327
 
242
- async def fetch_currencies(self, params={}):
328
+ async def fetch_currencies(self, params={}) -> Currencies:
243
329
  """
244
330
  fetches all available currencies on an exchange
245
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getcurrencies
331
+
332
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getcurrencies
333
+
246
334
  :param dict [params]: extra parameters specific to the exchange API endpoint
247
335
  :returns dict: an associative dictionary of currencies
248
336
  """
@@ -273,7 +361,7 @@ class coinbasepro(Exchange, ImplicitAPI):
273
361
  # }
274
362
  # ]
275
363
  #
276
- result = {}
364
+ result: dict = {}
277
365
  for i in range(0, len(response)):
278
366
  currency = response[i]
279
367
  id = self.safe_string(currency, 'id')
@@ -307,10 +395,12 @@ class coinbasepro(Exchange, ImplicitAPI):
307
395
  }
308
396
  return result
309
397
 
310
- async def fetch_markets(self, params={}):
398
+ async def fetch_markets(self, params={}) -> List[Market]:
311
399
  """
312
- retrieves data on all markets for coinbasepro
313
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproducts
400
+ retrieves data on all markets for coinbaseexchange
401
+
402
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproducts
403
+
314
404
  :param dict [params]: extra parameters specific to the exchange API endpoint
315
405
  :returns dict[]: an array of objects representing market data
316
406
  """
@@ -428,7 +518,9 @@ class coinbasepro(Exchange, ImplicitAPI):
428
518
  async def fetch_accounts(self, params={}) -> List[Account]:
429
519
  """
430
520
  fetch all the accounts associated with a profile
431
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounts
521
+
522
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounts
523
+
432
524
  :param dict [params]: extra parameters specific to the exchange API endpoint
433
525
  :returns dict: a dictionary of `account structures <https://docs.ccxt.com/#/?id=account-structure>` indexed by the account type
434
526
  """
@@ -476,7 +568,7 @@ class coinbasepro(Exchange, ImplicitAPI):
476
568
  }
477
569
 
478
570
  def parse_balance(self, response) -> Balances:
479
- result = {'info': response}
571
+ result: dict = {'info': response}
480
572
  for i in range(0, len(response)):
481
573
  balance = response[i]
482
574
  currencyId = self.safe_string(balance, 'currency')
@@ -491,7 +583,9 @@ class coinbasepro(Exchange, ImplicitAPI):
491
583
  async def fetch_balance(self, params={}) -> Balances:
492
584
  """
493
585
  query for balance and get the amount of funds available for trading or funds locked in orders
494
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounts
586
+
587
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounts
588
+
495
589
  :param dict [params]: extra parameters specific to the exchange API endpoint
496
590
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
497
591
  """
@@ -501,7 +595,9 @@ class coinbasepro(Exchange, ImplicitAPI):
501
595
 
502
596
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
503
597
  """
504
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductbook
598
+
599
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductbook
600
+
505
601
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
506
602
  :param str symbol: unified symbol of the market to fetch the order book for
507
603
  :param int [limit]: the maximum amount of order book entries to return
@@ -512,7 +608,7 @@ class coinbasepro(Exchange, ImplicitAPI):
512
608
  # level 1 - only the best bid and ask
513
609
  # level 2 - top 50 bids and asks(aggregated)
514
610
  # level 3 - full order book(non aggregated)
515
- request = {
611
+ request: dict = {
516
612
  'id': self.market_id(symbol),
517
613
  'level': 2, # 1 best bidask, 2 aggregated, 3 full
518
614
  }
@@ -536,7 +632,7 @@ class coinbasepro(Exchange, ImplicitAPI):
536
632
  orderbook['nonce'] = self.safe_integer(response, 'sequence')
537
633
  return orderbook
538
634
 
539
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
635
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
540
636
  #
541
637
  # fetchTickers
542
638
  #
@@ -618,14 +714,16 @@ class coinbasepro(Exchange, ImplicitAPI):
618
714
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
619
715
  """
620
716
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
621
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproduct
717
+
718
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproduct
719
+
622
720
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
623
721
  :param dict [params]: extra parameters specific to the exchange API endpoint
624
722
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
625
723
  """
626
724
  await self.load_markets()
627
725
  symbols = self.market_symbols(symbols)
628
- request = {}
726
+ request: dict = {}
629
727
  response = await self.publicGetProductsSparkLines(self.extend(request, params))
630
728
  #
631
729
  # {
@@ -647,7 +745,7 @@ class coinbasepro(Exchange, ImplicitAPI):
647
745
  # ]
648
746
  # }
649
747
  #
650
- result = {}
748
+ result: dict = {}
651
749
  marketIds = list(response.keys())
652
750
  delimiter = '-'
653
751
  for i in range(0, len(marketIds)):
@@ -661,7 +759,9 @@ class coinbasepro(Exchange, ImplicitAPI):
661
759
 
662
760
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
663
761
  """
664
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductticker
762
+
763
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductticker
764
+
665
765
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
666
766
  :param str symbol: unified symbol of the market to fetch the ticker for
667
767
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -669,7 +769,7 @@ class coinbasepro(Exchange, ImplicitAPI):
669
769
  """
670
770
  await self.load_markets()
671
771
  market = self.market(symbol)
672
- request = {
772
+ request: dict = {
673
773
  'id': market['id'],
674
774
  }
675
775
  # publicGetProductsIdTicker or publicGetProductsIdStats
@@ -699,7 +799,7 @@ class coinbasepro(Exchange, ImplicitAPI):
699
799
  #
700
800
  return self.parse_ticker(response, market)
701
801
 
702
- def parse_trade(self, trade, market: Market = None) -> Trade:
802
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
703
803
  #
704
804
  # {
705
805
  # "type": "match",
@@ -770,7 +870,9 @@ class coinbasepro(Exchange, ImplicitAPI):
770
870
 
771
871
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
772
872
  """
773
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getfills
873
+
874
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getfills
875
+
774
876
  fetch all trades made by the user
775
877
  :param str symbol: unified market symbol
776
878
  :param int [since]: the earliest time in ms to fetch trades for
@@ -788,7 +890,7 @@ class coinbasepro(Exchange, ImplicitAPI):
788
890
  return await self.fetch_paginated_call_dynamic('fetchMyTrades', symbol, since, limit, params, 100)
789
891
  await self.load_markets()
790
892
  market = self.market(symbol)
791
- request = {
893
+ request: dict = {
792
894
  'product_id': market['id'],
793
895
  }
794
896
  if limit is not None:
@@ -804,7 +906,9 @@ class coinbasepro(Exchange, ImplicitAPI):
804
906
 
805
907
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
806
908
  """
807
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproducttrades
909
+
910
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproducttrades
911
+
808
912
  get the list of most recent trades for a particular symbol
809
913
  :param str symbol: unified symbol of the market to fetch trades for
810
914
  :param int [since]: timestamp in ms of the earliest trade to fetch
@@ -814,7 +918,7 @@ class coinbasepro(Exchange, ImplicitAPI):
814
918
  """
815
919
  await self.load_markets()
816
920
  market = self.market(symbol)
817
- request = {
921
+ request: dict = {
818
922
  'id': market['id'], # fixes issue #2
819
923
  }
820
924
  if limit is not None:
@@ -833,10 +937,12 @@ class coinbasepro(Exchange, ImplicitAPI):
833
937
  #
834
938
  return self.parse_trades(response, market, since, limit)
835
939
 
836
- async def fetch_trading_fees(self, params={}):
940
+ async def fetch_trading_fees(self, params={}) -> TradingFees:
837
941
  """
838
942
  fetch the trading fees for multiple markets
839
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getfees
943
+
944
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getfees
945
+
840
946
  :param dict [params]: extra parameters specific to the exchange API endpoint
841
947
  :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
842
948
  """
@@ -851,7 +957,7 @@ class coinbasepro(Exchange, ImplicitAPI):
851
957
  #
852
958
  maker = self.safe_number(response, 'maker_fee_rate')
853
959
  taker = self.safe_number(response, 'taker_fee_rate')
854
- result = {}
960
+ result: dict = {}
855
961
  for i in range(0, len(self.symbols)):
856
962
  symbol = self.symbols[i]
857
963
  result[symbol] = {
@@ -886,7 +992,9 @@ class coinbasepro(Exchange, ImplicitAPI):
886
992
 
887
993
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
888
994
  """
889
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductcandles
995
+
996
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductcandles
997
+
890
998
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
891
999
  :param str symbol: unified symbol of the market to fetch OHLCV data for
892
1000
  :param str timeframe: the length of time each candle represents
@@ -904,7 +1012,7 @@ class coinbasepro(Exchange, ImplicitAPI):
904
1012
  return await self.fetch_paginated_call_deterministic('fetchOHLCV', symbol, since, limit, timeframe, params, 300)
905
1013
  market = self.market(symbol)
906
1014
  parsedTimeframe = self.safe_integer(self.timeframes, timeframe)
907
- request = {
1015
+ request: dict = {
908
1016
  'id': market['id'],
909
1017
  }
910
1018
  if parsedTimeframe is not None:
@@ -953,8 +1061,8 @@ class coinbasepro(Exchange, ImplicitAPI):
953
1061
  #
954
1062
  return self.safe_timestamp(response, 'epoch')
955
1063
 
956
- def parse_order_status(self, status):
957
- statuses = {
1064
+ def parse_order_status(self, status: Str):
1065
+ statuses: dict = {
958
1066
  'pending': 'open',
959
1067
  'active': 'open',
960
1068
  'open': 'open',
@@ -964,7 +1072,7 @@ class coinbasepro(Exchange, ImplicitAPI):
964
1072
  }
965
1073
  return self.safe_string(statuses, status, status)
966
1074
 
967
- def parse_order(self, order, market: Market = None) -> Order:
1075
+ def parse_order(self, order: dict, market: Market = None) -> Order:
968
1076
  #
969
1077
  # createOrder
970
1078
  #
@@ -1010,7 +1118,7 @@ class coinbasepro(Exchange, ImplicitAPI):
1010
1118
  side = self.safe_string(order, 'side')
1011
1119
  timeInForce = self.safe_string(order, 'time_in_force')
1012
1120
  postOnly = self.safe_value(order, 'post_only')
1013
- stopPrice = self.safe_number(order, 'stop_price')
1121
+ triggerPrice = self.safe_number(order, 'stop_price')
1014
1122
  clientOrderId = self.safe_string(order, 'client_oid')
1015
1123
  return self.safe_order({
1016
1124
  'id': id,
@@ -1026,8 +1134,7 @@ class coinbasepro(Exchange, ImplicitAPI):
1026
1134
  'postOnly': postOnly,
1027
1135
  'side': side,
1028
1136
  'price': price,
1029
- 'stopPrice': stopPrice,
1030
- 'triggerPrice': stopPrice,
1137
+ 'triggerPrice': triggerPrice,
1031
1138
  'cost': cost,
1032
1139
  'amount': amount,
1033
1140
  'filled': filled,
@@ -1039,14 +1146,17 @@ class coinbasepro(Exchange, ImplicitAPI):
1039
1146
 
1040
1147
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
1041
1148
  """
1042
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorder
1149
+
1150
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorder
1151
+
1043
1152
  fetches information on an order made by the user
1044
- :param str symbol: not used by coinbasepro fetchOrder
1153
+ :param str id: the order id
1154
+ :param str symbol: not used by coinbaseexchange fetchOrder
1045
1155
  :param dict [params]: extra parameters specific to the exchange API endpoint
1046
1156
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1047
1157
  """
1048
1158
  await self.load_markets()
1049
- request = {}
1159
+ request: dict = {}
1050
1160
  clientOrderId = self.safe_string_2(params, 'clientOrderId', 'client_oid')
1051
1161
  method = None
1052
1162
  if clientOrderId is None:
@@ -1073,7 +1183,7 @@ class coinbasepro(Exchange, ImplicitAPI):
1073
1183
  market = None
1074
1184
  if symbol is not None:
1075
1185
  market = self.market(symbol)
1076
- request = {
1186
+ request: dict = {
1077
1187
  'order_id': id,
1078
1188
  }
1079
1189
  response = await self.privateGetFills(self.extend(request, params))
@@ -1081,7 +1191,9 @@ class coinbasepro(Exchange, ImplicitAPI):
1081
1191
 
1082
1192
  async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1083
1193
  """
1084
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorders
1194
+
1195
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorders
1196
+
1085
1197
  fetches information on multiple orders made by the user
1086
1198
  :param str symbol: unified market symbol of the market orders were made in
1087
1199
  :param int [since]: the earliest time in ms to fetch orders for
@@ -1090,14 +1202,16 @@ class coinbasepro(Exchange, ImplicitAPI):
1090
1202
  :param int [params.until]: the latest time in ms to fetch open orders for
1091
1203
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1092
1204
  """
1093
- request = {
1205
+ request: dict = {
1094
1206
  'status': 'all',
1095
1207
  }
1096
1208
  return await self.fetch_open_orders(symbol, since, limit, self.extend(request, params))
1097
1209
 
1098
1210
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1099
1211
  """
1100
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorders
1212
+
1213
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorders
1214
+
1101
1215
  fetch all unfilled currently open orders
1102
1216
  :param str symbol: unified market symbol
1103
1217
  :param int [since]: the earliest time in ms to fetch open orders for
@@ -1112,7 +1226,7 @@ class coinbasepro(Exchange, ImplicitAPI):
1112
1226
  paginate, params = self.handle_option_and_params(params, 'fetchOpenOrders', 'paginate')
1113
1227
  if paginate:
1114
1228
  return await self.fetch_paginated_call_dynamic('fetchOpenOrders', symbol, since, limit, params, 100)
1115
- request = {}
1229
+ request: dict = {}
1116
1230
  market = None
1117
1231
  if symbol is not None:
1118
1232
  market = self.market(symbol)
@@ -1130,7 +1244,9 @@ class coinbasepro(Exchange, ImplicitAPI):
1130
1244
 
1131
1245
  async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1132
1246
  """
1133
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorders
1247
+
1248
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorders
1249
+
1134
1250
  fetches information on multiple closed orders made by the user
1135
1251
  :param str symbol: unified market symbol of the market orders were made in
1136
1252
  :param int [since]: the earliest time in ms to fetch orders for
@@ -1139,26 +1255,28 @@ class coinbasepro(Exchange, ImplicitAPI):
1139
1255
  :param int [params.until]: the latest time in ms to fetch open orders for
1140
1256
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1141
1257
  """
1142
- request = {
1258
+ request: dict = {
1143
1259
  'status': 'done',
1144
1260
  }
1145
1261
  return await self.fetch_open_orders(symbol, since, limit, self.extend(request, params))
1146
1262
 
1147
1263
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1148
1264
  """
1149
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postorders
1265
+
1266
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postorders
1267
+
1150
1268
  create a trade order
1151
1269
  :param str symbol: unified symbol of the market to create an order in
1152
1270
  :param str type: 'market' or 'limit'
1153
1271
  :param str side: 'buy' or 'sell'
1154
1272
  :param float amount: how much of currency you want to trade in units of base currency
1155
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1273
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1156
1274
  :param dict [params]: extra parameters specific to the exchange API endpoint
1157
1275
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1158
1276
  """
1159
1277
  await self.load_markets()
1160
1278
  market = self.market(symbol)
1161
- request = {
1279
+ request: dict = {
1162
1280
  # common params --------------------------------------------------
1163
1281
  # 'client_oid': clientOrderId,
1164
1282
  'type': type,
@@ -1181,9 +1299,9 @@ class coinbasepro(Exchange, ImplicitAPI):
1181
1299
  clientOrderId = self.safe_string_2(params, 'clientOrderId', 'client_oid')
1182
1300
  if clientOrderId is not None:
1183
1301
  request['client_oid'] = clientOrderId
1184
- stopPrice = self.safe_number_n(params, ['stopPrice', 'stop_price', 'triggerPrice'])
1185
- if stopPrice is not None:
1186
- request['stop_price'] = self.price_to_precision(symbol, stopPrice)
1302
+ triggerPrice = self.safe_number_n(params, ['stopPrice', 'stop_price', 'triggerPrice'])
1303
+ if triggerPrice is not None:
1304
+ request['stop_price'] = self.price_to_precision(symbol, triggerPrice)
1187
1305
  timeInForce = self.safe_string_2(params, 'timeInForce', 'time_in_force')
1188
1306
  if timeInForce is not None:
1189
1307
  request['time_in_force'] = timeInForce
@@ -1229,7 +1347,9 @@ class coinbasepro(Exchange, ImplicitAPI):
1229
1347
 
1230
1348
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
1231
1349
  """
1232
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_deleteorder
1350
+
1351
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_deleteorder
1352
+
1233
1353
  cancels an open order
1234
1354
  :param str id: order id
1235
1355
  :param str symbol: unified symbol of the market the order was made in
@@ -1237,7 +1357,7 @@ class coinbasepro(Exchange, ImplicitAPI):
1237
1357
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1238
1358
  """
1239
1359
  await self.load_markets()
1240
- request = {
1360
+ request: dict = {
1241
1361
  # 'product_id': market['id'], # the request will be more performant if you include it
1242
1362
  }
1243
1363
  clientOrderId = self.safe_string_2(params, 'clientOrderId', 'client_oid')
@@ -1257,14 +1377,16 @@ class coinbasepro(Exchange, ImplicitAPI):
1257
1377
 
1258
1378
  async def cancel_all_orders(self, symbol: Str = None, params={}):
1259
1379
  """
1260
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_deleteorders
1380
+
1381
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_deleteorders
1382
+
1261
1383
  cancel all open orders
1262
1384
  :param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
1263
1385
  :param dict [params]: extra parameters specific to the exchange API endpoint
1264
1386
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1265
1387
  """
1266
1388
  await self.load_markets()
1267
- request = {}
1389
+ request: dict = {}
1268
1390
  market = None
1269
1391
  if symbol is not None:
1270
1392
  market = self.market(symbol)
@@ -1274,11 +1396,13 @@ class coinbasepro(Exchange, ImplicitAPI):
1274
1396
  async def fetch_payment_methods(self, params={}):
1275
1397
  return await self.privateGetPaymentMethods(params)
1276
1398
 
1277
- async def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1399
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1278
1400
  """
1279
1401
  make a withdrawal
1280
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postwithdrawpaymentmethod
1281
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postwithdrawcoinbaseaccount
1402
+
1403
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postwithdrawpaymentmethod
1404
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postwithdrawcoinbaseaccount
1405
+
1282
1406
  :param str code: unified currency code
1283
1407
  :param float amount: the amount to withdraw
1284
1408
  :param str address: the address to withdraw to
@@ -1290,7 +1414,7 @@ class coinbasepro(Exchange, ImplicitAPI):
1290
1414
  self.check_address(address)
1291
1415
  await self.load_markets()
1292
1416
  currency = self.currency(code)
1293
- request = {
1417
+ request: dict = {
1294
1418
  'currency': currency['id'],
1295
1419
  'amount': amount,
1296
1420
  }
@@ -1310,7 +1434,7 @@ class coinbasepro(Exchange, ImplicitAPI):
1310
1434
  return self.parse_transaction(response, currency)
1311
1435
 
1312
1436
  def parse_ledger_entry_type(self, type):
1313
- types = {
1437
+ types: dict = {
1314
1438
  'transfer': 'transfer', # Funds moved between portfolios
1315
1439
  'match': 'trade', # Funds moved result of a trade
1316
1440
  'fee': 'fee', # Fee result of a trade
@@ -1319,7 +1443,7 @@ class coinbasepro(Exchange, ImplicitAPI):
1319
1443
  }
1320
1444
  return self.safe_string(types, type, type)
1321
1445
 
1322
- def parse_ledger_entry(self, item, currency: Currency = None):
1446
+ def parse_ledger_entry(self, item: dict, currency: Currency = None) -> LedgerEntry:
1323
1447
  # {
1324
1448
  # "id": "12087495079",
1325
1449
  # "amount": "-0.0100000000000000",
@@ -1371,34 +1495,36 @@ class coinbasepro(Exchange, ImplicitAPI):
1371
1495
  else:
1372
1496
  referenceId = self.safe_string(details, 'order_id')
1373
1497
  status = 'ok'
1374
- return {
1498
+ return self.safe_ledger_entry({
1499
+ 'info': item,
1375
1500
  'id': id,
1376
- 'currency': code,
1501
+ 'timestamp': timestamp,
1502
+ 'datetime': self.iso8601(timestamp),
1503
+ 'direction': direction,
1377
1504
  'account': account,
1378
1505
  'referenceAccount': referenceAccount,
1379
1506
  'referenceId': referenceId,
1380
- 'status': status,
1507
+ 'type': type,
1508
+ 'currency': code,
1381
1509
  'amount': amount,
1382
1510
  'before': before,
1383
1511
  'after': after,
1512
+ 'status': status,
1384
1513
  'fee': None,
1385
- 'direction': direction,
1386
- 'timestamp': timestamp,
1387
- 'datetime': self.iso8601(timestamp),
1388
- 'type': type,
1389
- 'info': item,
1390
- }
1514
+ }, currency)
1391
1515
 
1392
- async def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1516
+ async def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[LedgerEntry]:
1393
1517
  """
1394
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccountledger
1395
- fetch the history of changes, actions done by the user or operations that altered balance of the user
1518
+ fetch the history of changes, actions done by the user or operations that altered the balance of the user
1519
+
1520
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccountledger
1521
+
1396
1522
  :param str code: unified currency code, default is None
1397
1523
  :param int [since]: timestamp in ms of the earliest ledger entry, default is None
1398
- :param int [limit]: max number of ledger entrys to return, default is None
1524
+ :param int [limit]: max number of ledger entries to return, default is None
1399
1525
  :param dict [params]: extra parameters specific to the exchange API endpoint
1400
1526
  :param int [params.until]: the latest time in ms to fetch trades for
1401
- :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger-structure>`
1527
+ :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
1402
1528
  """
1403
1529
  # https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccountledger
1404
1530
  if code is None:
@@ -1410,7 +1536,7 @@ class coinbasepro(Exchange, ImplicitAPI):
1410
1536
  account = self.safe_value(accountsByCurrencyCode, code)
1411
1537
  if account is None:
1412
1538
  raise ExchangeError(self.id + ' fetchLedger() could not find account id for ' + code)
1413
- request = {
1539
+ request: dict = {
1414
1540
  'id': account['id'],
1415
1541
  # 'start_date': self.iso8601(since),
1416
1542
  # 'end_date': self.iso8601(self.milliseconds()),
@@ -1435,8 +1561,10 @@ class coinbasepro(Exchange, ImplicitAPI):
1435
1561
  async def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1436
1562
  """
1437
1563
  fetch history of deposits and withdrawals
1438
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_gettransfers
1439
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounttransfers
1564
+
1565
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_gettransfers
1566
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounttransfers
1567
+
1440
1568
  :param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
1441
1569
  :param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
1442
1570
  :param int [limit]: max number of deposit/withdrawals to return, default is None
@@ -1456,7 +1584,7 @@ class coinbasepro(Exchange, ImplicitAPI):
1456
1584
  if account is None:
1457
1585
  raise ExchangeError(self.id + ' fetchDepositsWithdrawals() could not find account id for ' + code)
1458
1586
  id = account['id']
1459
- request = {}
1587
+ request: dict = {}
1460
1588
  if id is not None:
1461
1589
  request['id'] = id
1462
1590
  if limit is not None:
@@ -1532,8 +1660,10 @@ class coinbasepro(Exchange, ImplicitAPI):
1532
1660
  async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1533
1661
  """
1534
1662
  fetch all deposits made to an account
1535
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_gettransfers
1536
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounttransfers
1663
+
1664
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_gettransfers
1665
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounttransfers
1666
+
1537
1667
  :param str code: unified currency code
1538
1668
  :param int [since]: the earliest time in ms to fetch deposits for
1539
1669
  :param int [limit]: the maximum number of deposits structures to retrieve
@@ -1545,8 +1675,10 @@ class coinbasepro(Exchange, ImplicitAPI):
1545
1675
  async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1546
1676
  """
1547
1677
  fetch all withdrawals made from an account
1548
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_gettransfers
1549
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounttransfers
1678
+
1679
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_gettransfers
1680
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounttransfers
1681
+
1550
1682
  :param str code: unified currency code
1551
1683
  :param int [since]: the earliest time in ms to fetch withdrawals for
1552
1684
  :param int [limit]: the maximum number of withdrawals structures to retrieve
@@ -1568,7 +1700,7 @@ class coinbasepro(Exchange, ImplicitAPI):
1568
1700
  else:
1569
1701
  return 'pending'
1570
1702
 
1571
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
1703
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
1572
1704
  #
1573
1705
  # privateGetTransfers
1574
1706
  #
@@ -1648,7 +1780,9 @@ class coinbasepro(Exchange, ImplicitAPI):
1648
1780
  async def create_deposit_address(self, code: str, params={}):
1649
1781
  """
1650
1782
  create a currency deposit address
1651
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postcoinbaseaccountaddresses
1783
+
1784
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postcoinbaseaccountaddresses
1785
+
1652
1786
  :param str code: unified currency code of the currency for the deposit address
1653
1787
  :param dict [params]: extra parameters specific to the exchange API endpoint
1654
1788
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
@@ -1665,7 +1799,7 @@ class coinbasepro(Exchange, ImplicitAPI):
1665
1799
  if account is None:
1666
1800
  # eslint-disable-next-line quotes
1667
1801
  raise InvalidAddress(self.id + " createDepositAddress() could not find currency code " + code + " with id = " + currencyId + " in self.options['coinbaseAccountsByCurrencyId']")
1668
- request = {
1802
+ request: dict = {
1669
1803
  'id': account['id'],
1670
1804
  }
1671
1805
  response = await self.privatePostCoinbaseAccountsIdAddresses(self.extend(request, params))
@@ -1709,7 +1843,7 @@ class coinbasepro(Exchange, ImplicitAPI):
1709
1843
  }
1710
1844
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1711
1845
 
1712
- def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
1846
+ def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1713
1847
  if (code == 400) or (code == 404):
1714
1848
  if body[0] == '{':
1715
1849
  message = self.safe_string(response, 'message')