ccxt 4.2.83 → 4.2.85

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 (166) hide show
  1. package/README.md +3 -3
  2. package/build.sh +1 -1
  3. package/dist/ccxt.browser.js +896 -941
  4. package/dist/ccxt.browser.min.js +4 -4
  5. package/dist/cjs/ccxt.js +1 -1
  6. package/dist/cjs/src/ace.js +5 -5
  7. package/dist/cjs/src/ascendex.js +8 -8
  8. package/dist/cjs/src/base/Exchange.js +76 -14
  9. package/dist/cjs/src/bigone.js +12 -12
  10. package/dist/cjs/src/binance.js +23 -35
  11. package/dist/cjs/src/bingx.js +13 -9
  12. package/dist/cjs/src/bit2c.js +1 -1
  13. package/dist/cjs/src/bitbank.js +8 -8
  14. package/dist/cjs/src/bitbns.js +5 -5
  15. package/dist/cjs/src/bitfinex.js +1 -1
  16. package/dist/cjs/src/bitfinex2.js +1 -1
  17. package/dist/cjs/src/bitget.js +40 -28
  18. package/dist/cjs/src/bithumb.js +5 -5
  19. package/dist/cjs/src/bitmart.js +16 -16
  20. package/dist/cjs/src/bitopro.js +1 -1
  21. package/dist/cjs/src/bitrue.js +4 -4
  22. package/dist/cjs/src/bitso.js +5 -5
  23. package/dist/cjs/src/bitstamp.js +1 -1
  24. package/dist/cjs/src/bitteam.js +8 -8
  25. package/dist/cjs/src/bl3p.js +1 -1
  26. package/dist/cjs/src/btcturk.js +6 -6
  27. package/dist/cjs/src/bybit.js +34 -98
  28. package/dist/cjs/src/coincheck.js +4 -4
  29. package/dist/cjs/src/coinex.js +12 -13
  30. package/dist/cjs/src/coinlist.js +7 -7
  31. package/dist/cjs/src/coinmate.js +4 -4
  32. package/dist/cjs/src/coinmetro.js +3 -3
  33. package/dist/cjs/src/coinone.js +5 -5
  34. package/dist/cjs/src/coinspot.js +2 -2
  35. package/dist/cjs/src/cryptocom.js +17 -17
  36. package/dist/cjs/src/currencycom.js +1 -1
  37. package/dist/cjs/src/delta.js +0 -8
  38. package/dist/cjs/src/deribit.js +16 -92
  39. package/dist/cjs/src/digifinex.js +8 -8
  40. package/dist/cjs/src/exmo.js +8 -8
  41. package/dist/cjs/src/gate.js +0 -8
  42. package/dist/cjs/src/hitbtc.js +5 -4
  43. package/dist/cjs/src/hollaex.js +7 -7
  44. package/dist/cjs/src/htx.js +12 -34
  45. package/dist/cjs/src/huobijp.js +3 -3
  46. package/dist/cjs/src/idex.js +2 -2
  47. package/dist/cjs/src/independentreserve.js +2 -2
  48. package/dist/cjs/src/indodax.js +2 -2
  49. package/dist/cjs/src/kraken.js +8 -8
  50. package/dist/cjs/src/krakenfutures.js +6 -6
  51. package/dist/cjs/src/kucoin.js +15 -2
  52. package/dist/cjs/src/kucoinfutures.js +8 -8
  53. package/dist/cjs/src/kuna.js +16 -16
  54. package/dist/cjs/src/latoken.js +2 -2
  55. package/dist/cjs/src/lbank.js +10 -10
  56. package/dist/cjs/src/luno.js +4 -4
  57. package/dist/cjs/src/mercado.js +5 -5
  58. package/dist/cjs/src/mexc.js +6 -6
  59. package/dist/cjs/src/ndax.js +1 -1
  60. package/dist/cjs/src/novadax.js +9 -9
  61. package/dist/cjs/src/oceanex.js +7 -7
  62. package/dist/cjs/src/okcoin.js +13 -13
  63. package/dist/cjs/src/okx.js +23 -31
  64. package/dist/cjs/src/onetrading.js +4 -4
  65. package/dist/cjs/src/p2b.js +7 -7
  66. package/dist/cjs/src/phemex.js +12 -12
  67. package/dist/cjs/src/poloniexfutures.js +5 -5
  68. package/dist/cjs/src/pro/binance.js +167 -121
  69. package/dist/cjs/src/pro/kucoin.js +6 -7
  70. package/dist/cjs/src/pro/okx.js +19 -2
  71. package/dist/cjs/src/probit.js +11 -11
  72. package/dist/cjs/src/timex.js +7 -7
  73. package/dist/cjs/src/tokocrypto.js +9 -9
  74. package/dist/cjs/src/wavesexchange.js +3 -3
  75. package/dist/cjs/src/whitebit.js +5 -5
  76. package/dist/cjs/src/woo.js +1 -1
  77. package/dist/cjs/src/zaif.js +1 -1
  78. package/dist/cjs/src/zonda.js +7 -7
  79. package/examples/js/cli.js +0 -1
  80. package/examples/ts/cli.ts +0 -1
  81. package/js/ccxt.d.ts +1 -1
  82. package/js/ccxt.js +1 -1
  83. package/js/src/ace.js +5 -5
  84. package/js/src/ascendex.js +8 -8
  85. package/js/src/base/Exchange.d.ts +4 -3
  86. package/js/src/base/Exchange.js +76 -14
  87. package/js/src/bigone.js +12 -12
  88. package/js/src/binance.d.ts +0 -1
  89. package/js/src/binance.js +23 -35
  90. package/js/src/bingx.js +13 -9
  91. package/js/src/bit2c.js +1 -1
  92. package/js/src/bitbank.js +8 -8
  93. package/js/src/bitbns.js +5 -5
  94. package/js/src/bitfinex.js +1 -1
  95. package/js/src/bitfinex2.js +1 -1
  96. package/js/src/bitget.js +40 -28
  97. package/js/src/bithumb.js +5 -5
  98. package/js/src/bitmart.js +16 -16
  99. package/js/src/bitopro.js +1 -1
  100. package/js/src/bitrue.js +4 -4
  101. package/js/src/bitso.js +5 -5
  102. package/js/src/bitstamp.js +1 -1
  103. package/js/src/bitteam.js +8 -8
  104. package/js/src/bl3p.js +1 -1
  105. package/js/src/btcturk.js +6 -6
  106. package/js/src/bybit.d.ts +0 -3
  107. package/js/src/bybit.js +34 -98
  108. package/js/src/coincheck.js +4 -4
  109. package/js/src/coinex.js +12 -13
  110. package/js/src/coinlist.js +7 -7
  111. package/js/src/coinmate.js +4 -4
  112. package/js/src/coinmetro.js +3 -3
  113. package/js/src/coinone.js +5 -5
  114. package/js/src/coinspot.js +2 -2
  115. package/js/src/cryptocom.js +17 -17
  116. package/js/src/currencycom.js +1 -1
  117. package/js/src/delta.d.ts +0 -1
  118. package/js/src/delta.js +0 -8
  119. package/js/src/deribit.d.ts +0 -3
  120. package/js/src/deribit.js +16 -92
  121. package/js/src/digifinex.js +8 -8
  122. package/js/src/exmo.js +8 -8
  123. package/js/src/gate.d.ts +0 -1
  124. package/js/src/gate.js +0 -8
  125. package/js/src/hitbtc.js +5 -4
  126. package/js/src/hollaex.js +7 -7
  127. package/js/src/htx.js +12 -34
  128. package/js/src/huobijp.js +3 -3
  129. package/js/src/idex.js +2 -2
  130. package/js/src/independentreserve.js +2 -2
  131. package/js/src/indodax.js +2 -2
  132. package/js/src/kraken.js +8 -8
  133. package/js/src/krakenfutures.js +6 -6
  134. package/js/src/kucoin.d.ts +1 -0
  135. package/js/src/kucoin.js +16 -3
  136. package/js/src/kucoinfutures.js +8 -8
  137. package/js/src/kuna.js +16 -16
  138. package/js/src/latoken.js +2 -2
  139. package/js/src/lbank.js +10 -10
  140. package/js/src/luno.js +4 -4
  141. package/js/src/mercado.js +5 -5
  142. package/js/src/mexc.js +6 -6
  143. package/js/src/ndax.js +1 -1
  144. package/js/src/novadax.js +9 -9
  145. package/js/src/oceanex.js +7 -7
  146. package/js/src/okcoin.js +13 -13
  147. package/js/src/okx.d.ts +0 -1
  148. package/js/src/okx.js +23 -31
  149. package/js/src/onetrading.js +4 -4
  150. package/js/src/p2b.js +7 -7
  151. package/js/src/phemex.js +12 -12
  152. package/js/src/poloniexfutures.js +5 -5
  153. package/js/src/pro/binance.d.ts +5 -1
  154. package/js/src/pro/binance.js +168 -122
  155. package/js/src/pro/kucoin.js +6 -7
  156. package/js/src/pro/okx.js +19 -2
  157. package/js/src/probit.js +11 -11
  158. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
  159. package/js/src/timex.js +7 -7
  160. package/js/src/tokocrypto.js +9 -9
  161. package/js/src/wavesexchange.js +3 -3
  162. package/js/src/whitebit.js +5 -5
  163. package/js/src/woo.js +1 -1
  164. package/js/src/zaif.js +1 -1
  165. package/js/src/zonda.js +7 -7
  166. package/package.json +1 -1
@@ -2199,7 +2199,7 @@ class htx extends htx$1 {
2199
2199
  // "ts":1639547261293
2200
2200
  // }
2201
2201
  //
2202
- // inverse swaps, linear swaps, inverse futures
2202
+ // linear swap, linear future, inverse swap, inverse future
2203
2203
  //
2204
2204
  // {
2205
2205
  // "status":"ok",
@@ -2216,37 +2216,15 @@ class htx extends htx$1 {
2216
2216
  // "high":"0.10725",
2217
2217
  // "amount":"2340267.415144052378486261756692535687481566",
2218
2218
  // "count":882,
2219
- // "vol":"24706"
2219
+ // "vol":"24706",
2220
+ // "trade_turnover":"840726.5048", // only in linear futures
2221
+ // "business_type":"futures", // only in linear futures
2222
+ // "contract_code":"BTC-USDT-CW", // only in linear futures, instead of 'symbol'
2220
2223
  // }
2221
2224
  // ],
2222
2225
  // "ts":1637504679376
2223
2226
  // }
2224
2227
  //
2225
- // linear futures
2226
- //
2227
- // {
2228
- // "status":"ok",
2229
- // "ticks":[
2230
- // {
2231
- // "id":1640745627,
2232
- // "ts":1640745627957,
2233
- // "ask":[48079.1,20],
2234
- // "bid":[47713.8,125],
2235
- // "business_type":"futures",
2236
- // "contract_code":"BTC-USDT-CW",
2237
- // "open":"49011.8",
2238
- // "close":"47934",
2239
- // "low":"47292.3",
2240
- // "high":"49011.8",
2241
- // "amount":"17.398",
2242
- // "count":1515,
2243
- // "vol":"17398",
2244
- // "trade_turnover":"840726.5048"
2245
- // }
2246
- // ],
2247
- // "ts":1640745627988
2248
- // }
2249
- //
2250
2228
  const tickers = this.safeValue2(response, 'data', 'ticks', []);
2251
2229
  const timestamp = this.safeInteger(response, 'ts');
2252
2230
  const result = {};
@@ -2386,7 +2364,7 @@ class htx extends htx$1 {
2386
2364
  throw new errors.NotSupported(this.id + ' fetchLastPrices() does not support ' + type + ' markets yet');
2387
2365
  }
2388
2366
  const tick = this.safeValue(response, 'tick', {});
2389
- const data = this.safeValue(tick, 'data', []);
2367
+ const data = this.safeList(tick, 'data', []);
2390
2368
  return this.parseLastPrices(data, symbols);
2391
2369
  }
2392
2370
  parseLastPrice(entry, market = undefined) {
@@ -3979,7 +3957,7 @@ class htx extends htx$1 {
3979
3957
  // ]
3980
3958
  // }
3981
3959
  //
3982
- const data = this.safeValue(response, 'data', []);
3960
+ const data = this.safeList(response, 'data', []);
3983
3961
  return this.parseOrders(data, market, since, limit);
3984
3962
  }
3985
3963
  async fetchSpotOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -7376,7 +7354,7 @@ class htx extends htx$1 {
7376
7354
  request['symbol'] = market['id'];
7377
7355
  response = await this.contractPrivatePostApiV3ContractFinancialRecordExact(this.extend(request, query));
7378
7356
  }
7379
- const data = this.safeValue(response, 'data', []);
7357
+ const data = this.safeList(response, 'data', []);
7380
7358
  return this.parseIncomes(data, market, since, limit);
7381
7359
  }
7382
7360
  async setLeverage(leverage, symbol = undefined, params = {}) {
@@ -8160,7 +8138,7 @@ class htx extends htx$1 {
8160
8138
  // ]
8161
8139
  // }
8162
8140
  //
8163
- const data = this.safeValue(response, 'data');
8141
+ const data = this.safeList(response, 'data');
8164
8142
  return this.parseLeverageTiers(data, symbols, 'contract_code');
8165
8143
  }
8166
8144
  async fetchMarketLeverageTiers(symbol, params = {}) {
@@ -8364,7 +8342,7 @@ class htx extends htx$1 {
8364
8342
  // }
8365
8343
  //
8366
8344
  const data = this.safeValue(response, 'data');
8367
- const tick = this.safeValue(data, 'tick');
8345
+ const tick = this.safeList(data, 'tick');
8368
8346
  return this.parseOpenInterests(tick, market, since, limit);
8369
8347
  }
8370
8348
  async fetchOpenInterest(symbol, params = {}) {
@@ -8872,7 +8850,7 @@ class htx extends htx$1 {
8872
8850
  // ]
8873
8851
  // }
8874
8852
  //
8875
- const data = this.safeValue(response, 'data');
8853
+ const data = this.safeList(response, 'data');
8876
8854
  return this.parseDepositWithdrawFees(data, codes, 'currency');
8877
8855
  }
8878
8856
  parseDepositWithdrawFee(fee, currency = undefined) {
@@ -9100,7 +9078,7 @@ class htx extends htx$1 {
9100
9078
  // "ts": 1604312615051
9101
9079
  // }
9102
9080
  //
9103
- const data = this.safeValue(response, 'data', []);
9081
+ const data = this.safeList(response, 'data', []);
9104
9082
  return this.parseLiquidations(data, market, since, limit);
9105
9083
  }
9106
9084
  parseLiquidation(liquidation, market = undefined) {
@@ -967,7 +967,7 @@ class huobijp extends huobijp$1 {
967
967
  // ]
968
968
  // }
969
969
  //
970
- const data = this.safeValue(response, 'data', []);
970
+ const data = this.safeList(response, 'data', []);
971
971
  return this.parseOHLCVs(data, market, timeframe, since, limit);
972
972
  }
973
973
  async fetchAccounts(params = {}) {
@@ -1166,7 +1166,7 @@ class huobijp extends huobijp$1 {
1166
1166
  'id': id,
1167
1167
  };
1168
1168
  const response = await this.privateGetOrderOrdersId(this.extend(request, params));
1169
- const order = this.safeValue(response, 'data');
1169
+ const order = this.safeDict(response, 'data');
1170
1170
  return this.parseOrder(order);
1171
1171
  }
1172
1172
  async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1264,7 +1264,7 @@ class huobijp extends huobijp$1 {
1264
1264
  // ]
1265
1265
  // }
1266
1266
  //
1267
- const data = this.safeValue(response, 'data', []);
1267
+ const data = this.safeList(response, 'data', []);
1268
1268
  return this.parseOrders(data, market, since, limit);
1269
1269
  }
1270
1270
  parseOrderStatus(status) {
@@ -358,7 +358,7 @@ class idex extends idex$1 {
358
358
  // }
359
359
  // ]
360
360
  const response = await this.publicGetTickers(this.extend(request, params));
361
- const ticker = this.safeValue(response, 0);
361
+ const ticker = this.safeDict(response, 0);
362
362
  return this.parseTicker(ticker, market);
363
363
  }
364
364
  async fetchTickers(symbols = undefined, params = {}) {
@@ -1488,7 +1488,7 @@ class idex extends idex$1 {
1488
1488
  };
1489
1489
  // [ { orderId: "688336f0-ec50-11ea-9842-b332f8a34d0e" } ]
1490
1490
  const response = await this.privateDeleteOrders(this.extend(request, params));
1491
- const canceledOrder = this.safeValue(response, 0);
1491
+ const canceledOrder = this.safeDict(response, 0);
1492
1492
  return this.parseOrder(canceledOrder, market);
1493
1493
  }
1494
1494
  handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
@@ -505,7 +505,7 @@ class independentreserve extends independentreserve$1 {
505
505
  request['pageIndex'] = 1;
506
506
  request['pageSize'] = limit;
507
507
  const response = await this.privatePostGetOpenOrders(this.extend(request, params));
508
- const data = this.safeValue(response, 'Data', []);
508
+ const data = this.safeList(response, 'Data', []);
509
509
  return this.parseOrders(data, market, since, limit);
510
510
  }
511
511
  async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -533,7 +533,7 @@ class independentreserve extends independentreserve$1 {
533
533
  request['pageIndex'] = 1;
534
534
  request['pageSize'] = limit;
535
535
  const response = await this.privatePostGetClosedOrders(this.extend(request, params));
536
- const data = this.safeValue(response, 'Data', []);
536
+ const data = this.safeList(response, 'Data', []);
537
537
  return this.parseOrders(data, market, since, limit);
538
538
  }
539
539
  async fetchMyTrades(symbol = undefined, since = undefined, limit = 50, params = {}) {
@@ -476,7 +476,7 @@ class indodax extends indodax$1 {
476
476
  // }
477
477
  // }
478
478
  //
479
- const ticker = this.safeValue(response, 'ticker', {});
479
+ const ticker = this.safeDict(response, 'ticker', {});
480
480
  return this.parseTicker(ticker, market);
481
481
  }
482
482
  async fetchTickers(symbols = undefined, params = {}) {
@@ -507,7 +507,7 @@ class indodax extends indodax$1 {
507
507
  // }
508
508
  //
509
509
  const response = await this.publicGetApiTickerAll(params);
510
- const tickers = this.safeValue(response, 'tickers');
510
+ const tickers = this.safeList(response, 'tickers');
511
511
  return this.parseTickers(tickers, symbols);
512
512
  }
513
513
  parseTrade(trade, market = undefined) {
@@ -997,7 +997,7 @@ class kraken extends kraken$1 {
997
997
  // }
998
998
  // }
999
999
  const result = this.safeValue(response, 'result', {});
1000
- const ohlcvs = this.safeValue(result, market['id'], []);
1000
+ const ohlcvs = this.safeList(result, market['id'], []);
1001
1001
  return this.parseOHLCVs(ohlcvs, market, timeframe, since, limit);
1002
1002
  }
1003
1003
  parseLedgerEntryType(type) {
@@ -1386,7 +1386,7 @@ class kraken extends kraken$1 {
1386
1386
  // }
1387
1387
  // }
1388
1388
  //
1389
- const result = this.safeValue(response, 'result');
1389
+ const result = this.safeDict(response, 'result');
1390
1390
  return this.parseOrder(result);
1391
1391
  }
1392
1392
  findMarketByAltnameOrId(id) {
@@ -1818,7 +1818,7 @@ class kraken extends kraken$1 {
1818
1818
  // }
1819
1819
  // }
1820
1820
  //
1821
- const data = this.safeValue(response, 'result', {});
1821
+ const data = this.safeDict(response, 'result', {});
1822
1822
  return this.parseOrder(data, market);
1823
1823
  }
1824
1824
  async fetchOrder(id, symbol = undefined, params = {}) {
@@ -2156,8 +2156,8 @@ class kraken extends kraken$1 {
2156
2156
  if (symbol !== undefined) {
2157
2157
  market = this.market(symbol);
2158
2158
  }
2159
- const result = this.safeValue(response, 'result', {});
2160
- const orders = this.safeValue(result, 'open', []);
2159
+ const result = this.safeDict(response, 'result', {});
2160
+ const orders = this.safeDict(result, 'open', {});
2161
2161
  return this.parseOrders(orders, market, since, limit);
2162
2162
  }
2163
2163
  async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -2229,8 +2229,8 @@ class kraken extends kraken$1 {
2229
2229
  if (symbol !== undefined) {
2230
2230
  market = this.market(symbol);
2231
2231
  }
2232
- const result = this.safeValue(response, 'result', {});
2233
- const orders = this.safeValue(result, 'closed', []);
2232
+ const result = this.safeDict(response, 'result', {});
2233
+ const orders = this.safeDict(result, 'closed', {});
2234
2234
  return this.parseOrders(orders, market, since, limit);
2235
2235
  }
2236
2236
  parseTransactionStatus(status) {
@@ -2690,7 +2690,7 @@ class kraken extends kraken$1 {
2690
2690
  // }
2691
2691
  // }
2692
2692
  //
2693
- const result = this.safeValue(response, 'result', {});
2693
+ const result = this.safeDict(response, 'result', {});
2694
2694
  return this.parseTransaction(result, currency);
2695
2695
  }
2696
2696
  throw new errors.ExchangeError(this.id + " withdraw() requires a 'key' parameter (withdrawal key name, as set up on your account)");
@@ -534,7 +534,7 @@ class krakenfutures extends krakenfutures$1 {
534
534
  // "serverTime": "2022-02-18T14:16:29.440Z"
535
535
  // }
536
536
  //
537
- const tickers = this.safeValue(response, 'tickers');
537
+ const tickers = this.safeList(response, 'tickers');
538
538
  return this.parseTickers(tickers, symbols);
539
539
  }
540
540
  parseTicker(ticker, market = undefined) {
@@ -672,7 +672,7 @@ class krakenfutures extends krakenfutures$1 {
672
672
  // "more_candles": true
673
673
  // }
674
674
  //
675
- const candles = this.safeValue(response, 'candles');
675
+ const candles = this.safeList(response, 'candles');
676
676
  return this.parseOHLCVs(candles, market, timeframe, since, limit);
677
677
  }
678
678
  parseOHLCV(ohlcv, market = undefined) {
@@ -1135,7 +1135,7 @@ class krakenfutures extends krakenfutures$1 {
1135
1135
  // ]
1136
1136
  // }
1137
1137
  //
1138
- const data = this.safeValue(response, 'batchStatus', []);
1138
+ const data = this.safeList(response, 'batchStatus', []);
1139
1139
  return this.parseOrders(data);
1140
1140
  }
1141
1141
  async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
@@ -1252,7 +1252,7 @@ class krakenfutures extends krakenfutures$1 {
1252
1252
  // }
1253
1253
  // ]
1254
1254
  // }
1255
- const batchStatus = this.safeValue(response, 'batchStatus', []);
1255
+ const batchStatus = this.safeList(response, 'batchStatus', []);
1256
1256
  return this.parseOrders(batchStatus);
1257
1257
  }
1258
1258
  async cancelAllOrders(symbol = undefined, params = {}) {
@@ -1290,7 +1290,7 @@ class krakenfutures extends krakenfutures$1 {
1290
1290
  market = this.market(symbol);
1291
1291
  }
1292
1292
  const response = await this.privateGetOpenorders(params);
1293
- const orders = this.safeValue(response, 'openOrders', []);
1293
+ const orders = this.safeList(response, 'openOrders', []);
1294
1294
  return this.parseOrders(orders, market, since, limit);
1295
1295
  }
1296
1296
  async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -2359,7 +2359,7 @@ class krakenfutures extends krakenfutures$1 {
2359
2359
  // "serverTime": "2018-07-19T11:32:39.433Z"
2360
2360
  // }
2361
2361
  //
2362
- const data = this.safeValue(response, 'instruments');
2362
+ const data = this.safeList(response, 'instruments');
2363
2363
  return this.parseLeverageTiers(data, symbols, 'symbol');
2364
2364
  }
2365
2365
  parseMarketLeverageTiers(info, market = undefined) {
@@ -423,6 +423,7 @@ class kucoin extends kucoin$1 {
423
423
  'Order size below the minimum requirement.': errors.InvalidOrder,
424
424
  'The withdrawal amount is below the minimum requirement.': errors.ExchangeError,
425
425
  'Unsuccessful! Exceeded the max. funds out-transfer limit': errors.InsufficientFunds,
426
+ 'The amount increment is invalid.': errors.BadRequest,
426
427
  '400': errors.BadRequest,
427
428
  '401': errors.AuthenticationError,
428
429
  '403': errors.NotSupported,
@@ -2160,6 +2161,14 @@ class kucoin extends kucoin$1 {
2160
2161
  data = this.safeList(data, 'data', []);
2161
2162
  return this.parseOrders(data);
2162
2163
  }
2164
+ marketOrderAmountToPrecision(symbol, amount) {
2165
+ const market = this.market(symbol);
2166
+ const result = this.decimalToPrecision(amount, number.TRUNCATE, market['info']['quoteIncrement'], this.precisionMode, this.paddingMode);
2167
+ if (result === '0') {
2168
+ throw new errors.InvalidOrder(this.id + ' amount of ' + market['symbol'] + ' must be greater than minimum amount precision of ' + this.numberToString(market['precision']['amount']));
2169
+ }
2170
+ return result;
2171
+ }
2163
2172
  createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
2164
2173
  const market = this.market(symbol);
2165
2174
  // required param, cannot be used twice
@@ -2180,7 +2189,7 @@ class kucoin extends kucoin$1 {
2180
2189
  if (quoteAmount !== undefined) {
2181
2190
  params = this.omit(params, ['cost', 'funds']);
2182
2191
  // kucoin uses base precision even for quote values
2183
- costString = this.amountToPrecision(symbol, quoteAmount);
2192
+ costString = this.marketOrderAmountToPrecision(symbol, quoteAmount);
2184
2193
  request['funds'] = costString;
2185
2194
  }
2186
2195
  else {
@@ -2498,8 +2507,12 @@ class kucoin extends kucoin$1 {
2498
2507
  // ]
2499
2508
  // }
2500
2509
  // }
2510
+ const listData = this.safeList(response, 'data');
2511
+ if (listData !== undefined) {
2512
+ return this.parseOrders(listData, market, since, limit);
2513
+ }
2501
2514
  const responseData = this.safeDict(response, 'data', {});
2502
- const orders = this.safeValue(responseData, 'items', responseData);
2515
+ const orders = this.safeList(responseData, 'items', []);
2503
2516
  return this.parseOrders(orders, market, since, limit);
2504
2517
  }
2505
2518
  async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -597,7 +597,7 @@ class kucoinfutures extends kucoinfutures$1 {
597
597
  // ]
598
598
  // }
599
599
  //
600
- const data = this.safeValue(response, 'data', []);
600
+ const data = this.safeList(response, 'data', []);
601
601
  return this.parseOHLCVs(data, market, timeframe, since, limit);
602
602
  }
603
603
  parseOHLCV(ohlcv, market = undefined) {
@@ -1070,7 +1070,7 @@ class kucoinfutures extends kucoinfutures$1 {
1070
1070
  // }
1071
1071
  // }
1072
1072
  //
1073
- const data = this.safeValue(response, 'data', {});
1073
+ const data = this.safeDict(response, 'data', {});
1074
1074
  return this.parsePosition(data, market);
1075
1075
  }
1076
1076
  async fetchPositions(symbols = undefined, params = {}) {
@@ -1131,7 +1131,7 @@ class kucoinfutures extends kucoinfutures$1 {
1131
1131
  // ]
1132
1132
  // }
1133
1133
  //
1134
- const data = this.safeValue(response, 'data');
1134
+ const data = this.safeList(response, 'data');
1135
1135
  return this.parsePositions(data, symbols);
1136
1136
  }
1137
1137
  parsePosition(position, market = undefined) {
@@ -1279,7 +1279,7 @@ class kucoinfutures extends kucoinfutures$1 {
1279
1279
  // },
1280
1280
  // }
1281
1281
  //
1282
- const data = this.safeValue(response, 'data', {});
1282
+ const data = this.safeDict(response, 'data', {});
1283
1283
  return this.parseOrder(data, market);
1284
1284
  }
1285
1285
  async createOrders(orders, params = {}) {
@@ -1328,7 +1328,7 @@ class kucoinfutures extends kucoinfutures$1 {
1328
1328
  // ]
1329
1329
  // }
1330
1330
  //
1331
- const data = this.safeValue(response, 'data', []);
1331
+ const data = this.safeList(response, 'data', []);
1332
1332
  return this.parseOrders(data);
1333
1333
  }
1334
1334
  createContractOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
@@ -1734,7 +1734,7 @@ class kucoinfutures extends kucoinfutures$1 {
1734
1734
  // }
1735
1735
  //
1736
1736
  const responseData = this.safeValue(response, 'data', {});
1737
- const orders = this.safeValue(responseData, 'items', []);
1737
+ const orders = this.safeList(responseData, 'items', []);
1738
1738
  return this.parseOrders(orders, market, since, limit);
1739
1739
  }
1740
1740
  async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1831,7 +1831,7 @@ class kucoinfutures extends kucoinfutures$1 {
1831
1831
  // }
1832
1832
  //
1833
1833
  const market = (symbol !== undefined) ? this.market(symbol) : undefined;
1834
- const responseData = this.safeValue(response, 'data');
1834
+ const responseData = this.safeDict(response, 'data');
1835
1835
  return this.parseOrder(responseData, market);
1836
1836
  }
1837
1837
  parseOrder(order, market = undefined) {
@@ -2249,7 +2249,7 @@ class kucoinfutures extends kucoinfutures$1 {
2249
2249
  // ]
2250
2250
  // }
2251
2251
  //
2252
- const trades = this.safeValue(response, 'data', []);
2252
+ const trades = this.safeList(response, 'data', []);
2253
2253
  return this.parseTrades(trades, market, since, limit);
2254
2254
  }
2255
2255
  parseTrade(trade, market = undefined) {
@@ -654,7 +654,7 @@ class kuna extends kuna$1 {
654
654
  // }
655
655
  // }
656
656
  //
657
- const data = this.safeValue(response, 'data', {});
657
+ const data = this.safeDict(response, 'data', {});
658
658
  return this.parseOrderBook(data, market['symbol'], undefined, 'bids', 'asks', 0, 1);
659
659
  }
660
660
  parseTicker(ticker, market = undefined) {
@@ -735,7 +735,7 @@ class kuna extends kuna$1 {
735
735
  // ]
736
736
  // }
737
737
  //
738
- const data = this.safeValue(response, 'data', []);
738
+ const data = this.safeList(response, 'data', []);
739
739
  return this.parseTickers(data, symbols, params);
740
740
  }
741
741
  async fetchTicker(symbol, params = {}) {
@@ -775,7 +775,7 @@ class kuna extends kuna$1 {
775
775
  // }
776
776
  //
777
777
  const data = this.safeValue(response, 'data', []);
778
- const ticker = this.safeValue(data, 0);
778
+ const ticker = this.safeDict(data, 0);
779
779
  return this.parseTicker(ticker, market);
780
780
  }
781
781
  async fetchL3OrderBook(symbol, limit = undefined, params = {}) {
@@ -992,7 +992,7 @@ class kuna extends kuna$1 {
992
992
  // }
993
993
  // }
994
994
  //
995
- const data = this.safeValue(response, 'data', {});
995
+ const data = this.safeDict(response, 'data', {});
996
996
  return this.parseOrder(data, market);
997
997
  }
998
998
  async cancelOrder(id, symbol = undefined, params = {}) {
@@ -1052,7 +1052,7 @@ class kuna extends kuna$1 {
1052
1052
  // ]
1053
1053
  // }
1054
1054
  //
1055
- const data = this.safeValue(response, 'data', []);
1055
+ const data = this.safeList(response, 'data', []);
1056
1056
  return this.parseOrders(data);
1057
1057
  }
1058
1058
  parseOrderStatus(status) {
@@ -1198,7 +1198,7 @@ class kuna extends kuna$1 {
1198
1198
  // }
1199
1199
  // }
1200
1200
  //
1201
- const data = this.safeValue(response, 'data', {});
1201
+ const data = this.safeDict(response, 'data', {});
1202
1202
  return this.parseOrder(data);
1203
1203
  }
1204
1204
  async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1257,7 +1257,7 @@ class kuna extends kuna$1 {
1257
1257
  // ]
1258
1258
  // }
1259
1259
  //
1260
- const data = this.safeValue(response, 'data', []);
1260
+ const data = this.safeList(response, 'data', []);
1261
1261
  return this.parseOrders(data, market, since, limit);
1262
1262
  }
1263
1263
  async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1341,7 +1341,7 @@ class kuna extends kuna$1 {
1341
1341
  // ]
1342
1342
  // }
1343
1343
  //
1344
- const data = this.safeValue(response, 'data', []);
1344
+ const data = this.safeList(response, 'data', []);
1345
1345
  return this.parseOrders(data, market, since, limit);
1346
1346
  }
1347
1347
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1387,7 +1387,7 @@ class kuna extends kuna$1 {
1387
1387
  // ]
1388
1388
  // }
1389
1389
  //
1390
- const data = this.safeValue(response, 'data');
1390
+ const data = this.safeList(response, 'data');
1391
1391
  return this.parseTrades(data, market, since, limit);
1392
1392
  }
1393
1393
  async withdraw(code, amount, address, tag = undefined, params = {}) {
@@ -1440,7 +1440,7 @@ class kuna extends kuna$1 {
1440
1440
  // }
1441
1441
  // }
1442
1442
  //
1443
- const data = this.safeValue(response, 'data', {});
1443
+ const data = this.safeDict(response, 'data', {});
1444
1444
  return this.parseTransaction(data, currency);
1445
1445
  }
1446
1446
  async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1508,7 +1508,7 @@ class kuna extends kuna$1 {
1508
1508
  // ]
1509
1509
  // }
1510
1510
  //
1511
- const data = this.safeValue(response, 'data', []);
1511
+ const data = this.safeList(response, 'data', []);
1512
1512
  return this.parseTransactions(data, currency);
1513
1513
  }
1514
1514
  async fetchWithdrawal(id, code = undefined, params = {}) {
@@ -1548,7 +1548,7 @@ class kuna extends kuna$1 {
1548
1548
  // }
1549
1549
  // }
1550
1550
  //
1551
- const data = this.safeValue(response, 'data', {});
1551
+ const data = this.safeDict(response, 'data', {});
1552
1552
  return this.parseTransaction(data);
1553
1553
  }
1554
1554
  async createDepositAddress(code, params = {}) {
@@ -1576,7 +1576,7 @@ class kuna extends kuna$1 {
1576
1576
  // }
1577
1577
  // }
1578
1578
  //
1579
- const data = this.safeValue(response, 'data', {});
1579
+ const data = this.safeDict(response, 'data', {});
1580
1580
  return this.parseDepositAddress(data, currency);
1581
1581
  }
1582
1582
  async fetchDepositAddress(code, params = {}) {
@@ -1604,7 +1604,7 @@ class kuna extends kuna$1 {
1604
1604
  // }
1605
1605
  // }
1606
1606
  //
1607
- const data = this.safeValue(response, 'data', {});
1607
+ const data = this.safeDict(response, 'data', {});
1608
1608
  return this.parseDepositAddress(data, currency);
1609
1609
  }
1610
1610
  parseDepositAddress(depositAddress, currency = undefined) {
@@ -1702,7 +1702,7 @@ class kuna extends kuna$1 {
1702
1702
  // ]
1703
1703
  // }
1704
1704
  //
1705
- const data = this.safeValue(response, 'data', []);
1705
+ const data = this.safeList(response, 'data', []);
1706
1706
  return this.parseTransactions(data, currency);
1707
1707
  }
1708
1708
  async fetchDeposit(id, code = undefined, params = {}) {
@@ -1746,7 +1746,7 @@ class kuna extends kuna$1 {
1746
1746
  // }
1747
1747
  // }
1748
1748
  //
1749
- const data = this.safeValue(response, 'data', {});
1749
+ const data = this.safeDict(response, 'data', {});
1750
1750
  return this.parseTransaction(data, currency);
1751
1751
  }
1752
1752
  parseTransaction(transaction, currency = undefined) {
@@ -1457,7 +1457,7 @@ class latoken extends latoken$1 {
1457
1457
  if (code !== undefined) {
1458
1458
  currency = this.currency(code);
1459
1459
  }
1460
- const content = this.safeValue(response, 'content', []);
1460
+ const content = this.safeList(response, 'content', []);
1461
1461
  return this.parseTransactions(content, currency, since, limit);
1462
1462
  }
1463
1463
  parseTransaction(transaction, currency = undefined) {
@@ -1584,7 +1584,7 @@ class latoken extends latoken$1 {
1584
1584
  // "hasContent": true
1585
1585
  // }
1586
1586
  //
1587
- const transfers = this.safeValue(response, 'content', []);
1587
+ const transfers = this.safeList(response, 'content', []);
1588
1588
  return this.parseTransfers(transfers, currency, since, limit);
1589
1589
  }
1590
1590
  async transfer(code, amount, fromAccount, toAccount, params = {}) {