ccxt 4.1.51 → 4.1.53

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 (319) hide show
  1. package/README.md +108 -113
  2. package/dist/ccxt.browser.js +2295 -5268
  3. package/dist/ccxt.browser.min.js +3 -3
  4. package/dist/cjs/ccxt.js +1 -13
  5. package/dist/cjs/src/ace.js +56 -59
  6. package/dist/cjs/src/alpaca.js +62 -64
  7. package/dist/cjs/src/ascendex.js +1 -0
  8. package/dist/cjs/src/base/Exchange.js +11 -11
  9. package/dist/cjs/src/bigone.js +60 -77
  10. package/dist/cjs/src/binance.js +1 -0
  11. package/dist/cjs/src/bingx.js +52 -19
  12. package/dist/cjs/src/bitbank.js +58 -59
  13. package/dist/cjs/src/bitbns.js +1 -0
  14. package/dist/cjs/src/bitfinex.js +1 -0
  15. package/dist/cjs/src/bitfinex2.js +1 -0
  16. package/dist/cjs/src/bitflyer.js +1 -0
  17. package/dist/cjs/src/bitget.js +3 -8
  18. package/dist/cjs/src/bithumb.js +1 -0
  19. package/dist/cjs/src/bitmart.js +10 -1
  20. package/dist/cjs/src/bitmex.js +114 -119
  21. package/dist/cjs/src/bitopro.js +63 -65
  22. package/dist/cjs/src/bitpanda.js +60 -60
  23. package/dist/cjs/src/bitrue.js +67 -71
  24. package/dist/cjs/src/bitso.js +1 -0
  25. package/dist/cjs/src/bitstamp.js +1 -0
  26. package/dist/cjs/src/bittrex.js +57 -57
  27. package/dist/cjs/src/bitvavo.js +10 -2
  28. package/dist/cjs/src/blockchaincom.js +2 -2
  29. package/dist/cjs/src/btcalpha.js +59 -60
  30. package/dist/cjs/src/btcmarkets.js +68 -69
  31. package/dist/cjs/src/btcturk.js +72 -74
  32. package/dist/cjs/src/bybit.js +5 -12
  33. package/dist/cjs/src/coinbase.js +7 -2
  34. package/dist/cjs/src/coinbasepro.js +1 -0
  35. package/dist/cjs/src/coincheck.js +1 -0
  36. package/dist/cjs/src/coinex.js +4 -0
  37. package/dist/cjs/src/coinlist.js +60 -60
  38. package/dist/cjs/src/coinmate.js +1 -0
  39. package/dist/cjs/src/coinsph.js +2 -4
  40. package/dist/cjs/src/cryptocom.js +2 -0
  41. package/dist/cjs/src/currencycom.js +2 -2
  42. package/dist/cjs/src/deribit.js +2 -0
  43. package/dist/cjs/src/digifinex.js +11 -5
  44. package/dist/cjs/src/exmo.js +1 -0
  45. package/dist/cjs/src/gate.js +2 -0
  46. package/dist/cjs/src/gemini.js +2 -0
  47. package/dist/cjs/src/hitbtc.js +4 -0
  48. package/dist/cjs/src/hollaex.js +2 -0
  49. package/dist/cjs/src/htx.js +4 -0
  50. package/dist/cjs/src/huobijp.js +2 -0
  51. package/dist/cjs/src/idex.js +2 -0
  52. package/dist/cjs/src/indodax.js +1 -0
  53. package/dist/cjs/src/kraken.js +3 -3
  54. package/dist/cjs/src/kucoin.js +6 -5
  55. package/dist/cjs/src/kuna.js +3 -1
  56. package/dist/cjs/src/latoken.js +1 -0
  57. package/dist/cjs/src/lbank.js +2333 -442
  58. package/dist/cjs/src/lykke.js +2 -0
  59. package/dist/cjs/src/mercado.js +1 -0
  60. package/dist/cjs/src/mexc.js +2 -0
  61. package/dist/cjs/src/ndax.js +61 -61
  62. package/dist/cjs/src/novadax.js +58 -59
  63. package/dist/cjs/src/oceanex.js +58 -60
  64. package/dist/cjs/src/okcoin.js +3 -9
  65. package/dist/cjs/src/okx.js +2 -7
  66. package/dist/cjs/src/phemex.js +2 -0
  67. package/dist/cjs/src/poloniex.js +56 -57
  68. package/dist/cjs/src/poloniexfutures.js +67 -70
  69. package/dist/cjs/src/pro/binance.js +5 -3
  70. package/dist/cjs/src/pro/bingx.js +18 -11
  71. package/dist/cjs/src/pro/coinbase.js +12 -3
  72. package/dist/cjs/src/pro/cryptocom.js +17 -17
  73. package/dist/cjs/src/pro/krakenfutures.js +15 -15
  74. package/dist/cjs/src/pro/poloniexfutures.js +9 -0
  75. package/dist/cjs/src/probit.js +64 -65
  76. package/dist/cjs/src/tidex.js +1 -0
  77. package/dist/cjs/src/timex.js +3 -5
  78. package/dist/cjs/src/upbit.js +58 -58
  79. package/dist/cjs/src/wavesexchange.js +2 -1
  80. package/dist/cjs/src/wazirx.js +72 -74
  81. package/dist/cjs/src/whitebit.js +89 -91
  82. package/dist/cjs/src/woo.js +76 -77
  83. package/dist/cjs/src/zaif.js +58 -71
  84. package/dist/cjs/src/zonda.js +68 -70
  85. package/js/ccxt.d.ts +2 -14
  86. package/js/ccxt.js +2 -10
  87. package/js/src/abstract/bybit.d.ts +1 -0
  88. package/js/src/abstract/lbank.d.ts +57 -15
  89. package/js/src/ace.d.ts +8 -7
  90. package/js/src/ace.js +56 -59
  91. package/js/src/alpaca.d.ts +6 -5
  92. package/js/src/alpaca.js +62 -64
  93. package/js/src/ascendex.d.ts +12 -12
  94. package/js/src/ascendex.js +1 -0
  95. package/js/src/base/Exchange.d.ts +2 -0
  96. package/js/src/base/Exchange.js +11 -11
  97. package/js/src/base/types.d.ts +76 -71
  98. package/js/src/bigone.d.ts +12 -12
  99. package/js/src/bigone.js +60 -77
  100. package/js/src/binance.d.ts +27 -27
  101. package/js/src/binance.js +1 -0
  102. package/js/src/bingx.d.ts +17 -17
  103. package/js/src/bingx.js +52 -19
  104. package/js/src/bit2c.d.ts +5 -5
  105. package/js/src/bitbank.d.ts +7 -6
  106. package/js/src/bitbank.js +58 -59
  107. package/js/src/bitbns.d.ts +7 -7
  108. package/js/src/bitbns.js +1 -0
  109. package/js/src/bitfinex.d.ts +8 -8
  110. package/js/src/bitfinex.js +1 -0
  111. package/js/src/bitfinex2.d.ts +12 -12
  112. package/js/src/bitfinex2.js +1 -0
  113. package/js/src/bitflyer.d.ts +9 -9
  114. package/js/src/bitflyer.js +1 -0
  115. package/js/src/bitforex.d.ts +6 -6
  116. package/js/src/bitget.d.ts +25 -26
  117. package/js/src/bitget.js +3 -8
  118. package/js/src/bithumb.d.ts +4 -4
  119. package/js/src/bithumb.js +1 -0
  120. package/js/src/bitmart.d.ts +21 -21
  121. package/js/src/bitmart.js +10 -1
  122. package/js/src/bitmex.d.ts +16 -15
  123. package/js/src/bitmex.js +114 -119
  124. package/js/src/bitopro.d.ts +14 -13
  125. package/js/src/bitopro.js +63 -65
  126. package/js/src/bitpanda.d.ts +13 -12
  127. package/js/src/bitpanda.js +60 -60
  128. package/js/src/bitrue.d.ts +10 -9
  129. package/js/src/bitrue.js +67 -71
  130. package/js/src/bitso.d.ts +11 -11
  131. package/js/src/bitso.js +1 -0
  132. package/js/src/bitstamp.d.ts +10 -10
  133. package/js/src/bitstamp.js +1 -0
  134. package/js/src/bitstamp1.d.ts +4 -4
  135. package/js/src/bittrex.d.ts +16 -15
  136. package/js/src/bittrex.js +57 -57
  137. package/js/src/bitvavo.d.ts +9 -9
  138. package/js/src/bitvavo.js +10 -2
  139. package/js/src/bl3p.d.ts +2 -2
  140. package/js/src/blockchaincom.d.ts +13 -13
  141. package/js/src/blockchaincom.js +2 -2
  142. package/js/src/btcalpha.d.ts +11 -10
  143. package/js/src/btcalpha.js +59 -60
  144. package/js/src/btcbox.d.ts +6 -6
  145. package/js/src/btcmarkets.d.ts +14 -13
  146. package/js/src/btcmarkets.js +68 -69
  147. package/js/src/btcturk.d.ts +7 -6
  148. package/js/src/btcturk.js +72 -74
  149. package/js/src/bybit.d.ts +28 -28
  150. package/js/src/bybit.js +5 -12
  151. package/js/src/cex.d.ts +6 -6
  152. package/js/src/coinbase.d.ts +17 -17
  153. package/js/src/coinbase.js +7 -2
  154. package/js/src/coinbasepro.d.ts +13 -13
  155. package/js/src/coinbasepro.js +1 -0
  156. package/js/src/coincheck.d.ts +6 -6
  157. package/js/src/coincheck.js +1 -0
  158. package/js/src/coinex.d.ts +18 -18
  159. package/js/src/coinex.js +4 -0
  160. package/js/src/coinlist.d.ts +16 -15
  161. package/js/src/coinlist.js +60 -60
  162. package/js/src/coinmate.d.ts +7 -7
  163. package/js/src/coinmate.js +1 -0
  164. package/js/src/coinone.d.ts +5 -5
  165. package/js/src/coinsph.d.ts +10 -10
  166. package/js/src/coinsph.js +2 -4
  167. package/js/src/coinspot.d.ts +3 -3
  168. package/js/src/cryptocom.d.ts +16 -16
  169. package/js/src/cryptocom.js +2 -0
  170. package/js/src/currencycom.d.ts +10 -10
  171. package/js/src/currencycom.js +2 -2
  172. package/js/src/delta.d.ts +10 -10
  173. package/js/src/deribit.d.ts +13 -13
  174. package/js/src/deribit.js +2 -0
  175. package/js/src/digifinex.d.ts +17 -17
  176. package/js/src/digifinex.js +11 -5
  177. package/js/src/exmo.d.ts +12 -12
  178. package/js/src/exmo.js +1 -0
  179. package/js/src/gate.d.ts +20 -20
  180. package/js/src/gate.js +2 -0
  181. package/js/src/gemini.d.ts +6 -6
  182. package/js/src/gemini.js +2 -0
  183. package/js/src/hitbtc.d.ts +15 -15
  184. package/js/src/hitbtc.js +4 -0
  185. package/js/src/hollaex.d.ts +12 -12
  186. package/js/src/hollaex.js +2 -0
  187. package/js/src/htx.d.ts +27 -27
  188. package/js/src/htx.js +4 -0
  189. package/js/src/huobijp.d.ts +16 -16
  190. package/js/src/huobijp.js +2 -0
  191. package/js/src/idex.d.ts +13 -13
  192. package/js/src/idex.js +2 -0
  193. package/js/src/independentreserve.d.ts +6 -6
  194. package/js/src/indodax.d.ts +6 -6
  195. package/js/src/indodax.js +1 -0
  196. package/js/src/kraken.d.ts +16 -16
  197. package/js/src/kraken.js +3 -3
  198. package/js/src/krakenfutures.d.ts +9 -9
  199. package/js/src/kucoin.d.ts +15 -15
  200. package/js/src/kucoin.js +6 -5
  201. package/js/src/kucoinfutures.d.ts +11 -11
  202. package/js/src/kuna.d.ts +12 -12
  203. package/js/src/kuna.js +3 -1
  204. package/js/src/latoken.d.ts +9 -9
  205. package/js/src/latoken.js +1 -0
  206. package/js/src/lbank.d.ts +65 -12
  207. package/js/src/lbank.js +2334 -443
  208. package/js/src/lbank2.d.ts +11 -11
  209. package/js/src/luno.d.ts +10 -10
  210. package/js/src/lykke.d.ts +8 -8
  211. package/js/src/lykke.js +2 -0
  212. package/js/src/mercado.d.ts +6 -6
  213. package/js/src/mercado.js +1 -0
  214. package/js/src/mexc.d.ts +23 -23
  215. package/js/src/mexc.js +2 -0
  216. package/js/src/ndax.d.ts +13 -12
  217. package/js/src/ndax.js +61 -61
  218. package/js/src/novadax.d.ts +13 -12
  219. package/js/src/novadax.js +58 -59
  220. package/js/src/oceanex.d.ts +10 -9
  221. package/js/src/oceanex.js +58 -60
  222. package/js/src/okcoin.d.ts +12 -13
  223. package/js/src/okcoin.js +3 -9
  224. package/js/src/okx.d.ts +26 -27
  225. package/js/src/okx.js +2 -7
  226. package/js/src/paymium.d.ts +2 -2
  227. package/js/src/phemex.d.ts +16 -16
  228. package/js/src/phemex.js +2 -0
  229. package/js/src/poloniex.d.ts +15 -14
  230. package/js/src/poloniex.js +56 -57
  231. package/js/src/poloniexfutures.d.ts +11 -10
  232. package/js/src/poloniexfutures.js +67 -70
  233. package/js/src/pro/alpaca.d.ts +3 -3
  234. package/js/src/pro/ascendex.d.ts +2 -2
  235. package/js/src/pro/binance.d.ts +9 -9
  236. package/js/src/pro/binance.js +5 -3
  237. package/js/src/pro/bingx.d.ts +3 -3
  238. package/js/src/pro/bingx.js +19 -12
  239. package/js/src/pro/bitfinex.d.ts +3 -3
  240. package/js/src/pro/bitfinex2.d.ts +3 -3
  241. package/js/src/pro/bitget.d.ts +3 -3
  242. package/js/src/pro/bitmart.d.ts +2 -2
  243. package/js/src/pro/bitmex.d.ts +3 -3
  244. package/js/src/pro/bitpanda.d.ts +3 -3
  245. package/js/src/pro/bitrue.d.ts +2 -2
  246. package/js/src/pro/bitstamp.d.ts +2 -2
  247. package/js/src/pro/bittrex.d.ts +3 -3
  248. package/js/src/pro/bitvavo.d.ts +3 -3
  249. package/js/src/pro/blockchaincom.d.ts +2 -2
  250. package/js/src/pro/bybit.d.ts +4 -4
  251. package/js/src/pro/cex.d.ts +3 -3
  252. package/js/src/pro/coinbase.js +12 -3
  253. package/js/src/pro/coinbasepro.d.ts +3 -3
  254. package/js/src/pro/coinex.d.ts +2 -2
  255. package/js/src/pro/cryptocom.d.ts +5 -5
  256. package/js/src/pro/cryptocom.js +17 -17
  257. package/js/src/pro/deribit.d.ts +3 -3
  258. package/js/src/pro/exmo.d.ts +2 -2
  259. package/js/src/pro/gate.d.ts +3 -3
  260. package/js/src/pro/gemini.d.ts +2 -2
  261. package/js/src/pro/hitbtc.d.ts +3 -3
  262. package/js/src/pro/hollaex.d.ts +3 -3
  263. package/js/src/pro/htx.d.ts +3 -3
  264. package/js/src/pro/idex.d.ts +3 -3
  265. package/js/src/pro/kraken.d.ts +7 -7
  266. package/js/src/pro/krakenfutures.d.ts +4 -4
  267. package/js/src/pro/krakenfutures.js +15 -15
  268. package/js/src/pro/kucoin.d.ts +3 -3
  269. package/js/src/pro/kucoinfutures.d.ts +3 -3
  270. package/js/src/pro/mexc.d.ts +3 -3
  271. package/js/src/pro/okcoin.d.ts +2 -2
  272. package/js/src/pro/okx.d.ts +6 -6
  273. package/js/src/pro/phemex.d.ts +3 -3
  274. package/js/src/pro/poloniex.d.ts +3 -3
  275. package/js/src/pro/poloniexfutures.d.ts +3 -3
  276. package/js/src/pro/poloniexfutures.js +9 -0
  277. package/js/src/pro/probit.d.ts +3 -3
  278. package/js/src/pro/wazirx.d.ts +3 -3
  279. package/js/src/pro/whitebit.d.ts +3 -3
  280. package/js/src/pro/woo.d.ts +2 -2
  281. package/js/src/probit.d.ts +11 -10
  282. package/js/src/probit.js +64 -65
  283. package/js/src/tidex.d.ts +5 -5
  284. package/js/src/tidex.js +1 -0
  285. package/js/src/timex.d.ts +10 -10
  286. package/js/src/timex.js +3 -5
  287. package/js/src/tokocrypto.d.ts +9 -9
  288. package/js/src/upbit.d.ts +11 -10
  289. package/js/src/upbit.js +58 -58
  290. package/js/src/wavesexchange.d.ts +7 -7
  291. package/js/src/wavesexchange.js +2 -1
  292. package/js/src/wazirx.d.ts +7 -6
  293. package/js/src/wazirx.js +72 -74
  294. package/js/src/whitebit.d.ts +12 -11
  295. package/js/src/whitebit.js +89 -91
  296. package/js/src/woo.d.ts +20 -19
  297. package/js/src/woo.js +76 -77
  298. package/js/src/yobit.d.ts +5 -5
  299. package/js/src/zaif.d.ts +6 -5
  300. package/js/src/zaif.js +58 -71
  301. package/js/src/zonda.d.ts +7 -6
  302. package/js/src/zonda.js +68 -70
  303. package/package.json +1 -1
  304. package/skip-tests.json +2 -18
  305. package/test.ts +0 -0
  306. package/dist/cjs/src/btctradeua.js +0 -571
  307. package/dist/cjs/src/coinfalcon.js +0 -1012
  308. package/js/src/abstract/bitstamp1.d.ts +0 -26
  309. package/js/src/abstract/bitstamp1.js +0 -11
  310. package/js/src/abstract/btctradeua.d.ts +0 -20
  311. package/js/src/abstract/btctradeua.js +0 -11
  312. package/js/src/abstract/coinfalcon.d.ts +0 -26
  313. package/js/src/abstract/coinfalcon.js +0 -11
  314. package/js/src/abstract/lbank2.d.ts +0 -64
  315. package/js/src/abstract/lbank2.js +0 -11
  316. package/js/src/btctradeua.d.ts +0 -30
  317. package/js/src/btctradeua.js +0 -572
  318. package/js/src/coinfalcon.d.ts +0 -53
  319. package/js/src/coinfalcon.js +0 -1013
@@ -301,71 +301,68 @@ class bitopro extends bitopro$1 {
301
301
  // ]
302
302
  // }
303
303
  //
304
- const result = [];
305
- for (let i = 0; i < markets.length; i++) {
306
- const market = markets[i];
307
- const active = !this.safeValue(market, 'maintain');
308
- const id = this.safeString(market, 'pair');
309
- const uppercaseId = id.toUpperCase();
310
- const baseId = this.safeString(market, 'base');
311
- const quoteId = this.safeString(market, 'quote');
312
- const base = this.safeCurrencyCode(baseId);
313
- const quote = this.safeCurrencyCode(quoteId);
314
- const symbol = base + '/' + quote;
315
- const limits = {
316
- 'amount': {
317
- 'min': this.safeNumber(market, 'minLimitBaseAmount'),
318
- 'max': this.safeNumber(market, 'maxLimitBaseAmount'),
319
- },
320
- 'price': {
321
- 'min': undefined,
322
- 'max': undefined,
323
- },
324
- 'cost': {
325
- 'min': undefined,
326
- 'max': undefined,
327
- },
328
- 'leverage': {
329
- 'min': undefined,
330
- 'max': undefined,
331
- },
332
- };
333
- result.push({
334
- 'id': id,
335
- 'uppercaseId': uppercaseId,
336
- 'symbol': symbol,
337
- 'base': base,
338
- 'quote': quote,
339
- 'baseId': base,
340
- 'quoteId': quote,
341
- 'settle': undefined,
342
- 'settleId': undefined,
343
- 'type': 'spot',
344
- 'spot': true,
345
- 'margin': false,
346
- 'swap': false,
347
- 'future': false,
348
- 'option': false,
349
- 'derivative': false,
350
- 'contract': false,
351
- 'linear': undefined,
352
- 'inverse': undefined,
353
- 'contractSize': undefined,
354
- 'expiry': undefined,
355
- 'expiryDatetime': undefined,
356
- 'strike': undefined,
357
- 'optionType': undefined,
358
- 'limits': limits,
359
- 'precision': {
360
- 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'quotePrecision'))),
361
- 'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'basePrecision'))),
362
- },
363
- 'active': active,
364
- 'created': undefined,
365
- 'info': market,
366
- });
367
- }
368
- return result;
304
+ return this.parseMarkets(markets);
305
+ }
306
+ parseMarket(market) {
307
+ const active = !this.safeValue(market, 'maintain');
308
+ const id = this.safeString(market, 'pair');
309
+ const uppercaseId = id.toUpperCase();
310
+ const baseId = this.safeString(market, 'base');
311
+ const quoteId = this.safeString(market, 'quote');
312
+ const base = this.safeCurrencyCode(baseId);
313
+ const quote = this.safeCurrencyCode(quoteId);
314
+ const symbol = base + '/' + quote;
315
+ const limits = {
316
+ 'amount': {
317
+ 'min': this.safeNumber(market, 'minLimitBaseAmount'),
318
+ 'max': this.safeNumber(market, 'maxLimitBaseAmount'),
319
+ },
320
+ 'price': {
321
+ 'min': undefined,
322
+ 'max': undefined,
323
+ },
324
+ 'cost': {
325
+ 'min': undefined,
326
+ 'max': undefined,
327
+ },
328
+ 'leverage': {
329
+ 'min': undefined,
330
+ 'max': undefined,
331
+ },
332
+ };
333
+ return {
334
+ 'id': id,
335
+ 'uppercaseId': uppercaseId,
336
+ 'symbol': symbol,
337
+ 'base': base,
338
+ 'quote': quote,
339
+ 'baseId': base,
340
+ 'quoteId': quote,
341
+ 'settle': undefined,
342
+ 'settleId': undefined,
343
+ 'type': 'spot',
344
+ 'spot': true,
345
+ 'margin': false,
346
+ 'swap': false,
347
+ 'future': false,
348
+ 'option': false,
349
+ 'contract': false,
350
+ 'linear': undefined,
351
+ 'inverse': undefined,
352
+ 'contractSize': undefined,
353
+ 'expiry': undefined,
354
+ 'expiryDatetime': undefined,
355
+ 'strike': undefined,
356
+ 'optionType': undefined,
357
+ 'limits': limits,
358
+ 'precision': {
359
+ 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'quotePrecision'))),
360
+ 'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'basePrecision'))),
361
+ },
362
+ 'active': active,
363
+ 'created': undefined,
364
+ 'info': market,
365
+ };
369
366
  }
370
367
  parseTicker(ticker, market = undefined) {
371
368
  //
@@ -1396,6 +1393,7 @@ class bitopro extends bitopro$1 {
1396
1393
  'tagTo': tag,
1397
1394
  'updated': undefined,
1398
1395
  'comment': undefined,
1396
+ 'internal': undefined,
1399
1397
  'fee': {
1400
1398
  'currency': code,
1401
1399
  'cost': this.safeNumber(transaction, 'fee'),
@@ -373,68 +373,66 @@ class bitpanda extends bitpanda$1 {
373
373
  // }
374
374
  // ]
375
375
  //
376
- const result = [];
377
- for (let i = 0; i < response.length; i++) {
378
- const market = response[i];
379
- const baseAsset = this.safeValue(market, 'base', {});
380
- const quoteAsset = this.safeValue(market, 'quote', {});
381
- const baseId = this.safeString(baseAsset, 'code');
382
- const quoteId = this.safeString(quoteAsset, 'code');
383
- const id = baseId + '_' + quoteId;
384
- const base = this.safeCurrencyCode(baseId);
385
- const quote = this.safeCurrencyCode(quoteId);
386
- const state = this.safeString(market, 'state');
387
- result.push({
388
- 'id': id,
389
- 'symbol': base + '/' + quote,
390
- 'base': base,
391
- 'quote': quote,
392
- 'settle': undefined,
393
- 'baseId': baseId,
394
- 'quoteId': quoteId,
395
- 'settleId': undefined,
396
- 'type': 'spot',
397
- 'spot': true,
398
- 'margin': false,
399
- 'swap': false,
400
- 'future': false,
401
- 'option': false,
402
- 'active': (state === 'ACTIVE'),
403
- 'contract': false,
404
- 'linear': undefined,
405
- 'inverse': undefined,
406
- 'contractSize': undefined,
407
- 'expiry': undefined,
408
- 'expiryDatetime': undefined,
409
- 'strike': undefined,
410
- 'optionType': undefined,
411
- 'precision': {
412
- 'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'amount_precision'))),
413
- 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'market_precision'))),
376
+ return this.parseMarkets(response);
377
+ }
378
+ parseMarket(market) {
379
+ const baseAsset = this.safeValue(market, 'base', {});
380
+ const quoteAsset = this.safeValue(market, 'quote', {});
381
+ const baseId = this.safeString(baseAsset, 'code');
382
+ const quoteId = this.safeString(quoteAsset, 'code');
383
+ const id = baseId + '_' + quoteId;
384
+ const base = this.safeCurrencyCode(baseId);
385
+ const quote = this.safeCurrencyCode(quoteId);
386
+ const state = this.safeString(market, 'state');
387
+ return {
388
+ 'id': id,
389
+ 'symbol': base + '/' + quote,
390
+ 'base': base,
391
+ 'quote': quote,
392
+ 'settle': undefined,
393
+ 'baseId': baseId,
394
+ 'quoteId': quoteId,
395
+ 'settleId': undefined,
396
+ 'type': 'spot',
397
+ 'spot': true,
398
+ 'margin': false,
399
+ 'swap': false,
400
+ 'future': false,
401
+ 'option': false,
402
+ 'active': (state === 'ACTIVE'),
403
+ 'contract': false,
404
+ 'linear': undefined,
405
+ 'inverse': undefined,
406
+ 'contractSize': undefined,
407
+ 'expiry': undefined,
408
+ 'expiryDatetime': undefined,
409
+ 'strike': undefined,
410
+ 'optionType': undefined,
411
+ 'precision': {
412
+ 'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'amount_precision'))),
413
+ 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'market_precision'))),
414
+ },
415
+ 'limits': {
416
+ 'leverage': {
417
+ 'min': undefined,
418
+ 'max': undefined,
414
419
  },
415
- 'limits': {
416
- 'leverage': {
417
- 'min': undefined,
418
- 'max': undefined,
419
- },
420
- 'amount': {
421
- 'min': undefined,
422
- 'max': undefined,
423
- },
424
- 'price': {
425
- 'min': undefined,
426
- 'max': undefined,
427
- },
428
- 'cost': {
429
- 'min': this.safeNumber(market, 'min_size'),
430
- 'max': undefined,
431
- },
420
+ 'amount': {
421
+ 'min': undefined,
422
+ 'max': undefined,
432
423
  },
433
- 'created': undefined,
434
- 'info': market,
435
- });
436
- }
437
- return result;
424
+ 'price': {
425
+ 'min': undefined,
426
+ 'max': undefined,
427
+ },
428
+ 'cost': {
429
+ 'min': this.safeNumber(market, 'min_size'),
430
+ 'max': undefined,
431
+ },
432
+ },
433
+ 'created': undefined,
434
+ 'info': market,
435
+ };
438
436
  }
439
437
  async fetchTradingFees(params = {}) {
440
438
  /**
@@ -1348,6 +1346,8 @@ class bitpanda extends bitpanda$1 {
1348
1346
  'type': undefined,
1349
1347
  'updated': undefined,
1350
1348
  'txid': this.safeString(transaction, 'blockchain_transaction_id'),
1349
+ 'comment': undefined,
1350
+ 'internal': undefined,
1351
1351
  'timestamp': timestamp,
1352
1352
  'datetime': this.iso8601(timestamp),
1353
1353
  'fee': fee,
@@ -635,79 +635,74 @@ class bitrue extends bitrue$1 {
635
635
  await this.loadTimeDifference();
636
636
  }
637
637
  const markets = this.safeValue(response, 'symbols', []);
638
- const result = [];
639
- for (let i = 0; i < markets.length; i++) {
640
- const market = markets[i];
641
- const id = this.safeString(market, 'symbol');
642
- const lowercaseId = this.safeStringLower(market, 'symbol');
643
- const baseId = this.safeString(market, 'baseAsset');
644
- const quoteId = this.safeString(market, 'quoteAsset');
645
- const base = this.safeCurrencyCode(baseId);
646
- const quote = this.safeCurrencyCode(quoteId);
647
- const filters = this.safeValue(market, 'filters', []);
648
- const filtersByType = this.indexBy(filters, 'filterType');
649
- const status = this.safeString(market, 'status');
650
- const priceFilter = this.safeValue(filtersByType, 'PRICE_FILTER', {});
651
- const amountFilter = this.safeValue(filtersByType, 'LOT_SIZE', {});
652
- const defaultPricePrecision = this.safeString(market, 'pricePrecision');
653
- const defaultAmountPrecision = this.safeString(market, 'quantityPrecision');
654
- const pricePrecision = this.safeString(priceFilter, 'priceScale', defaultPricePrecision);
655
- const amountPrecision = this.safeString(amountFilter, 'volumeScale', defaultAmountPrecision);
656
- const entry = {
657
- 'id': id,
658
- 'lowercaseId': lowercaseId,
659
- 'symbol': base + '/' + quote,
660
- 'base': base,
661
- 'quote': quote,
662
- 'settle': undefined,
663
- 'baseId': baseId,
664
- 'quoteId': quoteId,
665
- 'settleId': undefined,
666
- 'type': 'spot',
667
- 'spot': true,
668
- 'margin': false,
669
- 'swap': false,
670
- 'future': false,
671
- 'option': false,
672
- 'active': (status === 'TRADING'),
673
- 'contract': false,
674
- 'linear': undefined,
675
- 'inverse': undefined,
676
- 'contractSize': undefined,
677
- 'expiry': undefined,
678
- 'expiryDatetime': undefined,
679
- 'strike': undefined,
680
- 'optionType': undefined,
681
- 'precision': {
682
- 'amount': this.parseNumber(this.parsePrecision(amountPrecision)),
683
- 'price': this.parseNumber(this.parsePrecision(pricePrecision)),
684
- 'base': this.parseNumber(this.parsePrecision(this.safeString(market, 'baseAssetPrecision'))),
685
- 'quote': this.parseNumber(this.parsePrecision(this.safeString(market, 'quotePrecision'))),
638
+ return this.parseMarkets(markets);
639
+ }
640
+ parseMarket(market) {
641
+ const id = this.safeString(market, 'symbol');
642
+ const lowercaseId = this.safeStringLower(market, 'symbol');
643
+ const baseId = this.safeString(market, 'baseAsset');
644
+ const quoteId = this.safeString(market, 'quoteAsset');
645
+ const base = this.safeCurrencyCode(baseId);
646
+ const quote = this.safeCurrencyCode(quoteId);
647
+ const filters = this.safeValue(market, 'filters', []);
648
+ const filtersByType = this.indexBy(filters, 'filterType');
649
+ const status = this.safeString(market, 'status');
650
+ const priceFilter = this.safeValue(filtersByType, 'PRICE_FILTER', {});
651
+ const amountFilter = this.safeValue(filtersByType, 'LOT_SIZE', {});
652
+ const defaultPricePrecision = this.safeString(market, 'pricePrecision');
653
+ const defaultAmountPrecision = this.safeString(market, 'quantityPrecision');
654
+ const pricePrecision = this.safeString(priceFilter, 'priceScale', defaultPricePrecision);
655
+ const amountPrecision = this.safeString(amountFilter, 'volumeScale', defaultAmountPrecision);
656
+ return {
657
+ 'id': id,
658
+ 'lowercaseId': lowercaseId,
659
+ 'symbol': base + '/' + quote,
660
+ 'base': base,
661
+ 'quote': quote,
662
+ 'settle': undefined,
663
+ 'baseId': baseId,
664
+ 'quoteId': quoteId,
665
+ 'settleId': undefined,
666
+ 'type': 'spot',
667
+ 'spot': true,
668
+ 'margin': false,
669
+ 'swap': false,
670
+ 'future': false,
671
+ 'option': false,
672
+ 'active': (status === 'TRADING'),
673
+ 'contract': false,
674
+ 'linear': undefined,
675
+ 'inverse': undefined,
676
+ 'contractSize': undefined,
677
+ 'expiry': undefined,
678
+ 'expiryDatetime': undefined,
679
+ 'strike': undefined,
680
+ 'optionType': undefined,
681
+ 'precision': {
682
+ 'amount': this.parseNumber(this.parsePrecision(amountPrecision)),
683
+ 'price': this.parseNumber(this.parsePrecision(pricePrecision)),
684
+ },
685
+ 'limits': {
686
+ 'leverage': {
687
+ 'min': undefined,
688
+ 'max': undefined,
686
689
  },
687
- 'limits': {
688
- 'leverage': {
689
- 'min': undefined,
690
- 'max': undefined,
691
- },
692
- 'amount': {
693
- 'min': this.safeNumber(amountFilter, 'minQty'),
694
- 'max': this.safeNumber(amountFilter, 'maxQty'),
695
- },
696
- 'price': {
697
- 'min': this.safeNumber(priceFilter, 'minPrice'),
698
- 'max': this.safeNumber(priceFilter, 'maxPrice'),
699
- },
700
- 'cost': {
701
- 'min': this.safeNumber(amountFilter, 'minVal'),
702
- 'max': undefined,
703
- },
690
+ 'amount': {
691
+ 'min': this.safeNumber(amountFilter, 'minQty'),
692
+ 'max': this.safeNumber(amountFilter, 'maxQty'),
704
693
  },
705
- 'created': undefined,
706
- 'info': market,
707
- };
708
- result.push(entry);
709
- }
710
- return result;
694
+ 'price': {
695
+ 'min': this.safeNumber(priceFilter, 'minPrice'),
696
+ 'max': this.safeNumber(priceFilter, 'maxPrice'),
697
+ },
698
+ 'cost': {
699
+ 'min': this.safeNumber(amountFilter, 'minVal'),
700
+ 'max': undefined,
701
+ },
702
+ },
703
+ 'created': undefined,
704
+ 'info': market,
705
+ };
711
706
  }
712
707
  parseBalance(response) {
713
708
  const result = {
@@ -1830,6 +1825,7 @@ class bitrue extends bitrue$1 {
1830
1825
  'status': status,
1831
1826
  'updated': updated,
1832
1827
  'internal': false,
1828
+ 'comment': undefined,
1833
1829
  'fee': fee,
1834
1830
  };
1835
1831
  }
@@ -1670,6 +1670,7 @@ class bitso extends bitso$1 {
1670
1670
  'tag': undefined,
1671
1671
  'tagTo': undefined,
1672
1672
  'comment': undefined,
1673
+ 'internal': undefined,
1673
1674
  'fee': undefined,
1674
1675
  'info': transaction,
1675
1676
  };
@@ -1711,6 +1711,7 @@ class bitstamp extends bitstamp$1 {
1711
1711
  'tagTo': tag,
1712
1712
  'updated': undefined,
1713
1713
  'comment': undefined,
1714
+ 'internal': undefined,
1714
1715
  'fee': fee,
1715
1716
  };
1716
1717
  }
@@ -312,65 +312,63 @@ class bittrex extends bittrex$1 {
312
312
  // }
313
313
  // ]
314
314
  //
315
- const result = [];
316
- for (let i = 0; i < response.length; i++) {
317
- const market = response[i];
318
- const baseId = this.safeString(market, 'baseCurrencySymbol');
319
- const quoteId = this.safeString(market, 'quoteCurrencySymbol');
320
- const base = this.safeCurrencyCode(baseId);
321
- const quote = this.safeCurrencyCode(quoteId);
322
- const status = this.safeString(market, 'status');
323
- result.push({
324
- 'id': this.safeString(market, 'symbol'),
325
- 'symbol': base + '/' + quote,
326
- 'base': base,
327
- 'quote': quote,
328
- 'settle': undefined,
329
- 'baseId': baseId,
330
- 'quoteId': quoteId,
331
- 'settleId': undefined,
332
- 'type': 'spot',
333
- 'spot': true,
334
- 'margin': false,
335
- 'swap': false,
336
- 'future': false,
337
- 'option': false,
338
- 'active': (status === 'ONLINE'),
339
- 'contract': false,
340
- 'linear': undefined,
341
- 'inverse': undefined,
342
- 'contractSize': undefined,
343
- 'expiry': undefined,
344
- 'expiryDatetime': undefined,
345
- 'strike': undefined,
346
- 'optionType': undefined,
347
- 'precision': {
348
- 'amount': this.parseNumber('1e-8'),
349
- 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'precision'))),
315
+ return this.parseMarkets(response);
316
+ }
317
+ parseMarket(market) {
318
+ const baseId = this.safeString(market, 'baseCurrencySymbol');
319
+ const quoteId = this.safeString(market, 'quoteCurrencySymbol');
320
+ const base = this.safeCurrencyCode(baseId);
321
+ const quote = this.safeCurrencyCode(quoteId);
322
+ const status = this.safeString(market, 'status');
323
+ return {
324
+ 'id': this.safeString(market, 'symbol'),
325
+ 'symbol': base + '/' + quote,
326
+ 'base': base,
327
+ 'quote': quote,
328
+ 'settle': undefined,
329
+ 'baseId': baseId,
330
+ 'quoteId': quoteId,
331
+ 'settleId': undefined,
332
+ 'type': 'spot',
333
+ 'spot': true,
334
+ 'margin': false,
335
+ 'swap': false,
336
+ 'future': false,
337
+ 'option': false,
338
+ 'active': (status === 'ONLINE'),
339
+ 'contract': false,
340
+ 'linear': undefined,
341
+ 'inverse': undefined,
342
+ 'contractSize': undefined,
343
+ 'expiry': undefined,
344
+ 'expiryDatetime': undefined,
345
+ 'strike': undefined,
346
+ 'optionType': undefined,
347
+ 'precision': {
348
+ 'amount': this.parseNumber('1e-8'),
349
+ 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'precision'))),
350
+ },
351
+ 'limits': {
352
+ 'leverage': {
353
+ 'min': undefined,
354
+ 'max': undefined,
350
355
  },
351
- 'limits': {
352
- 'leverage': {
353
- 'min': undefined,
354
- 'max': undefined,
355
- },
356
- 'amount': {
357
- 'min': this.safeNumber(market, 'minTradeSize'),
358
- 'max': undefined,
359
- },
360
- 'price': {
361
- 'min': undefined,
362
- 'max': undefined,
363
- },
364
- 'cost': {
365
- 'min': undefined,
366
- 'max': undefined,
367
- },
356
+ 'amount': {
357
+ 'min': this.safeNumber(market, 'minTradeSize'),
358
+ 'max': undefined,
368
359
  },
369
- 'created': this.parse8601(this.safeString(market, 'createdAt')),
370
- 'info': market,
371
- });
372
- }
373
- return result;
360
+ 'price': {
361
+ 'min': undefined,
362
+ 'max': undefined,
363
+ },
364
+ 'cost': {
365
+ 'min': undefined,
366
+ 'max': undefined,
367
+ },
368
+ },
369
+ 'created': this.parse8601(this.safeString(market, 'createdAt')),
370
+ 'info': market,
371
+ };
374
372
  }
375
373
  parseBalance(response) {
376
374
  const result = { 'info': response };
@@ -1670,6 +1668,8 @@ class bittrex extends bittrex$1 {
1670
1668
  'txid': txid,
1671
1669
  'timestamp': timestamp,
1672
1670
  'datetime': this.iso8601(timestamp),
1671
+ 'comment': undefined,
1672
+ 'internal': undefined,
1673
1673
  'fee': {
1674
1674
  'currency': code,
1675
1675
  'cost': feeCost,
@@ -20,7 +20,7 @@ class bitvavo extends bitvavo$1 {
20
20
  'countries': ['NL'],
21
21
  'rateLimit': 60,
22
22
  'version': 'v2',
23
- 'certified': true,
23
+ 'certified': false,
24
24
  'pro': true,
25
25
  'has': {
26
26
  'CORS': undefined,
@@ -312,7 +312,10 @@ class bitvavo extends bitvavo$1 {
312
312
  * @returns {object[]} an array of objects representing market data
313
313
  */
314
314
  const response = await this.publicGetMarkets(params);
315
- const currencies = await this.fetchCurrencies();
315
+ let currencies = this.currencies;
316
+ if (this.currencies === undefined) {
317
+ currencies = await this.fetchCurrencies();
318
+ }
316
319
  const currenciesById = this.indexBy(currencies, 'id');
317
320
  //
318
321
  // [
@@ -329,6 +332,7 @@ class bitvavo extends bitvavo$1 {
329
332
  // ]
330
333
  //
331
334
  const result = [];
335
+ const fees = this.fees;
332
336
  for (let i = 0; i < response.length; i++) {
333
337
  const market = response[i];
334
338
  const id = this.safeString(market, 'market');
@@ -363,6 +367,8 @@ class bitvavo extends bitvavo$1 {
363
367
  'expiryDatetime': undefined,
364
368
  'strike': undefined,
365
369
  'optionType': undefined,
370
+ 'taker': fees['trading']['taker'],
371
+ 'maker': fees['trading']['maker'],
366
372
  'precision': {
367
373
  'amount': this.safeInteger(baseCurrency, 'decimals', basePrecision),
368
374
  'price': this.safeInteger(market, 'pricePrecision'),
@@ -1769,6 +1775,8 @@ class bitvavo extends bitvavo$1 {
1769
1775
  'updated': undefined,
1770
1776
  'fee': fee,
1771
1777
  'network': undefined,
1778
+ 'comment': undefined,
1779
+ 'internal': undefined,
1772
1780
  };
1773
1781
  }
1774
1782
  parseDepositWithdrawFee(fee, currency = undefined) {