ccxt 4.2.63 → 4.2.65

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 (60) hide show
  1. package/README.md +3 -3
  2. package/build.sh +2 -2
  3. package/dist/ccxt.browser.js +565 -178
  4. package/dist/ccxt.browser.min.js +3 -3
  5. package/dist/cjs/ccxt.js +1 -1
  6. package/dist/cjs/src/base/Exchange.js +12 -0
  7. package/dist/cjs/src/binance.js +33 -12
  8. package/dist/cjs/src/bingx.js +58 -49
  9. package/dist/cjs/src/bitget.js +69 -1
  10. package/dist/cjs/src/bitmex.js +3 -1
  11. package/dist/cjs/src/blofin.js +46 -11
  12. package/dist/cjs/src/btcmarkets.js +12 -0
  13. package/dist/cjs/src/bybit.js +100 -7
  14. package/dist/cjs/src/coinbase.js +12 -2
  15. package/dist/cjs/src/delta.js +95 -1
  16. package/dist/cjs/src/gemini.js +9 -4
  17. package/dist/cjs/src/hitbtc.js +1 -1
  18. package/dist/cjs/src/krakenfutures.js +1 -0
  19. package/dist/cjs/src/kucoin.js +87 -62
  20. package/dist/cjs/src/pro/bitget.js +5 -5
  21. package/dist/cjs/src/pro/coinex.js +4 -4
  22. package/dist/cjs/src/pro/currencycom.js +1 -1
  23. package/dist/cjs/src/pro/lbank.js +1 -1
  24. package/dist/cjs/src/yobit.js +15 -15
  25. package/js/ccxt.d.ts +1 -1
  26. package/js/ccxt.js +1 -1
  27. package/js/src/abstract/blofin.d.ts +1 -0
  28. package/js/src/abstract/krakenfutures.d.ts +1 -0
  29. package/js/src/abstract/kucoin.d.ts +10 -0
  30. package/js/src/abstract/kucoinfutures.d.ts +10 -0
  31. package/js/src/base/Exchange.js +12 -0
  32. package/js/src/binance.d.ts +1 -1
  33. package/js/src/binance.js +33 -12
  34. package/js/src/bingx.js +58 -49
  35. package/js/src/bitget.d.ts +3 -1
  36. package/js/src/bitget.js +69 -1
  37. package/js/src/bitmex.js +3 -1
  38. package/js/src/blofin.d.ts +3 -1
  39. package/js/src/blofin.js +46 -11
  40. package/js/src/btcmarkets.js +12 -0
  41. package/js/src/bybit.d.ts +1 -0
  42. package/js/src/bybit.js +100 -7
  43. package/js/src/coinbase.js +12 -2
  44. package/js/src/delta.d.ts +3 -1
  45. package/js/src/delta.js +95 -1
  46. package/js/src/gate.d.ts +1 -1
  47. package/js/src/gemini.js +9 -4
  48. package/js/src/hitbtc.js +1 -1
  49. package/js/src/krakenfutures.js +1 -0
  50. package/js/src/kucoin.js +87 -62
  51. package/js/src/okx.d.ts +1 -1
  52. package/js/src/pro/bitget.js +5 -5
  53. package/js/src/pro/coinex.js +4 -4
  54. package/js/src/pro/currencycom.d.ts +1 -1
  55. package/js/src/pro/currencycom.js +1 -1
  56. package/js/src/pro/lbank.js +1 -1
  57. package/js/src/woo.d.ts +1 -1
  58. package/js/src/yobit.js +15 -15
  59. package/package.json +2 -2
  60. package/skip-tests.json +47 -22
@@ -117,6 +117,7 @@ class kucoin extends kucoin$1 {
117
117
  'futuresPrivate': 'https://api-futures.kucoin.com',
118
118
  'futuresPublic': 'https://api-futures.kucoin.com',
119
119
  'webExchange': 'https://kucoin.com/_api',
120
+ 'broker': 'https://api-broker.kucoin.com',
120
121
  },
121
122
  'www': 'https://www.kucoin.com',
122
123
  'doc': [
@@ -229,7 +230,9 @@ class kucoin extends kucoin$1 {
229
230
  'project/list': 10,
230
231
  'project/marketInterestRate': 7.5,
231
232
  'redeem/orders': 10,
232
- 'purchase/orders': 10, // 10SW
233
+ 'purchase/orders': 10,
234
+ // broker
235
+ 'broker/api/rebase/download': 3,
233
236
  },
234
237
  'post': {
235
238
  // account
@@ -375,6 +378,23 @@ class kucoin extends kucoin$1 {
375
378
  'currency/currency/chain-info': 1, // this is temporary from webApi
376
379
  },
377
380
  },
381
+ 'broker': {
382
+ 'get': {
383
+ 'broker/nd/info': 2,
384
+ 'broker/nd/account': 2,
385
+ 'broker/nd/account/apikey': 2,
386
+ 'broker/nd/rebase/download': 3,
387
+ },
388
+ 'post': {
389
+ 'broker/nd/transfer': 1,
390
+ 'broker/nd/account': 3,
391
+ 'broker/nd/account/apikey': 3,
392
+ 'broker/nd/account/update-apikey': 3,
393
+ },
394
+ 'delete': {
395
+ 'broker/nd/account/apikey': 3,
396
+ },
397
+ },
378
398
  },
379
399
  'timeframes': {
380
400
  '1m': '1min',
@@ -892,7 +912,7 @@ class kucoin extends kucoin$1 {
892
912
  // }
893
913
  // }
894
914
  //
895
- const data = this.safeValue(response, 'data', {});
915
+ const data = this.safeDict(response, 'data', {});
896
916
  const status = this.safeString(data, 'status');
897
917
  return {
898
918
  'status': (status === 'open') ? 'ok' : 'maintenance',
@@ -938,8 +958,8 @@ class kucoin extends kucoin$1 {
938
958
  // ]
939
959
  // }
940
960
  //
941
- const data = this.safeValue(response, 'data');
942
- const options = this.safeValue(this.options, 'fetchMarkets', {});
961
+ const data = this.safeList(response, 'data');
962
+ const options = this.safeDict(this.options, 'fetchMarkets', {});
943
963
  const fetchTickersFees = this.safeBool(options, 'fetchTickersFees', true);
944
964
  let tickersResponse = {};
945
965
  if (fetchTickersFees) {
@@ -973,8 +993,8 @@ class kucoin extends kucoin$1 {
973
993
  // }
974
994
  // }
975
995
  //
976
- const tickersData = this.safeValue(tickersResponse, 'data', {});
977
- const tickers = this.safeValue(tickersData, 'ticker', []);
996
+ const tickersData = this.safeDict(tickersResponse, 'data', {});
997
+ const tickers = this.safeList(tickersData, 'ticker', []);
978
998
  const tickersByMarketId = this.indexBy(tickers, 'symbol');
979
999
  const result = [];
980
1000
  for (let i = 0; i < data.length; i++) {
@@ -984,7 +1004,7 @@ class kucoin extends kucoin$1 {
984
1004
  const base = this.safeCurrencyCode(baseId);
985
1005
  const quote = this.safeCurrencyCode(quoteId);
986
1006
  // const quoteIncrement = this.safeNumber (market, 'quoteIncrement');
987
- const ticker = this.safeValue(tickersByMarketId, id, {});
1007
+ const ticker = this.safeDict(tickersByMarketId, id, {});
988
1008
  const makerFeeRate = this.safeString(ticker, 'makerFeeRate');
989
1009
  const takerFeeRate = this.safeString(ticker, 'takerFeeRate');
990
1010
  const makerCoefficient = this.safeString(ticker, 'makerCoefficient');
@@ -1000,11 +1020,11 @@ class kucoin extends kucoin$1 {
1000
1020
  'settleId': undefined,
1001
1021
  'type': 'spot',
1002
1022
  'spot': true,
1003
- 'margin': this.safeValue(market, 'isMarginEnabled'),
1023
+ 'margin': this.safeBool(market, 'isMarginEnabled'),
1004
1024
  'swap': false,
1005
1025
  'future': false,
1006
1026
  'option': false,
1007
- 'active': this.safeValue(market, 'enableTrading'),
1027
+ 'active': this.safeBool(market, 'enableTrading'),
1008
1028
  'contract': false,
1009
1029
  'linear': undefined,
1010
1030
  'inverse': undefined,
@@ -1134,7 +1154,7 @@ class kucoin extends kucoin$1 {
1134
1154
  let isWithdrawEnabled = undefined;
1135
1155
  let isDepositEnabled = undefined;
1136
1156
  const networks = {};
1137
- const chains = this.safeValue(entry, 'chains', []);
1157
+ const chains = this.safeList(entry, 'chains', []);
1138
1158
  const extraChainsData = this.indexBy(this.safeValue(additionalDataGrouped, id, []), 'chain');
1139
1159
  const rawPrecision = this.safeString(entry, 'precision');
1140
1160
  const precision = this.parseNumber(this.parsePrecision(rawPrecision));
@@ -1162,7 +1182,7 @@ class kucoin extends kucoin$1 {
1162
1182
  else {
1163
1183
  isDepositEnabled = isDepositEnabled || chainDepositEnabled;
1164
1184
  }
1165
- const chainExtraData = this.safeValue(extraChainsData, chainId, {});
1185
+ const chainExtraData = this.safeDict(extraChainsData, chainId, {});
1166
1186
  networks[networkCode] = {
1167
1187
  'info': chain,
1168
1188
  'id': chainId,
@@ -1237,7 +1257,7 @@ class kucoin extends kucoin$1 {
1237
1257
  // ]
1238
1258
  // }
1239
1259
  //
1240
- const data = this.safeValue(response, 'data', []);
1260
+ const data = this.safeList(response, 'data', []);
1241
1261
  const result = [];
1242
1262
  for (let i = 0; i < data.length; i++) {
1243
1263
  const account = data[i];
@@ -1325,7 +1345,7 @@ class kucoin extends kucoin$1 {
1325
1345
  // }
1326
1346
  // }
1327
1347
  //
1328
- const data = this.safeValue(response, 'data');
1348
+ const data = this.safeDict(response, 'data');
1329
1349
  return this.parseDepositWithdrawFee(data, currency);
1330
1350
  }
1331
1351
  parseDepositWithdrawFee(fee, currency = undefined) {
@@ -1356,7 +1376,7 @@ class kucoin extends kucoin$1 {
1356
1376
  },
1357
1377
  'networks': {},
1358
1378
  };
1359
- const isWithdrawEnabled = this.safeValue(fee, 'isWithdrawEnabled');
1379
+ const isWithdrawEnabled = this.safeBool(fee, 'isWithdrawEnabled');
1360
1380
  if (isWithdrawEnabled) {
1361
1381
  result['withdraw']['fee'] = this.safeNumber2(fee, 'withdrawalMinFee', 'withdrawMinFee');
1362
1382
  result['withdraw']['percentage'] = false;
@@ -1383,7 +1403,7 @@ class kucoin extends kucoin$1 {
1383
1403
  //
1384
1404
  const defaultType = this.safeString2(this.options, methodName, 'defaultType', 'trade');
1385
1405
  const requestedType = this.safeString(params, 'type', defaultType);
1386
- const accountsByType = this.safeValue(this.options, 'accountsByType');
1406
+ const accountsByType = this.safeDict(this.options, 'accountsByType');
1387
1407
  const type = this.safeString(accountsByType, requestedType);
1388
1408
  if (type === undefined) {
1389
1409
  const keys = Object.keys(accountsByType);
@@ -1524,8 +1544,8 @@ class kucoin extends kucoin$1 {
1524
1544
  // }
1525
1545
  // }
1526
1546
  //
1527
- const data = this.safeValue(response, 'data', {});
1528
- const tickers = this.safeValue(data, 'ticker', []);
1547
+ const data = this.safeDict(response, 'data', {});
1548
+ const tickers = this.safeList(data, 'ticker', []);
1529
1549
  const time = this.safeInteger(data, 'time');
1530
1550
  const result = {};
1531
1551
  for (let i = 0; i < tickers.length; i++) {
@@ -1655,7 +1675,7 @@ class kucoin extends kucoin$1 {
1655
1675
  // ]
1656
1676
  // }
1657
1677
  //
1658
- const data = this.safeValue(response, 'data', []);
1678
+ const data = this.safeList(response, 'data', []);
1659
1679
  return this.parseOHLCVs(data, market, timeframe, since, limit);
1660
1680
  }
1661
1681
  async createDepositAddress(code, params = {}) {
@@ -1683,7 +1703,7 @@ class kucoin extends kucoin$1 {
1683
1703
  // {"code":"260000","msg":"Deposit address already exists."}
1684
1704
  // BCH {"code":"200000","data":{"address":"bitcoincash:qza3m4nj9rx7l9r0cdadfqxts6f92shvhvr5ls4q7z","memo":""}}
1685
1705
  // BTC {"code":"200000","data":{"address":"36SjucKqQpQSvsak9A7h6qzFjrVXpRNZhE","memo":""}}
1686
- const data = this.safeValue(response, 'data', {});
1706
+ const data = this.safeDict(response, 'data', {});
1687
1707
  return this.parseDepositAddress(data, currency);
1688
1708
  }
1689
1709
  async fetchDepositAddress(code, params = {}) {
@@ -1778,7 +1798,7 @@ class kucoin extends kucoin$1 {
1778
1798
  // }
1779
1799
  //
1780
1800
  this.options['versions']['private']['GET']['deposit-addresses'] = version;
1781
- const chains = this.safeValue(response, 'data', []);
1801
+ const chains = this.safeList(response, 'data', []);
1782
1802
  const parsed = this.parseDepositAddresses(chains, [currency['code']], false, {
1783
1803
  'currency': currency['id'],
1784
1804
  });
@@ -1851,7 +1871,7 @@ class kucoin extends kucoin$1 {
1851
1871
  // ]
1852
1872
  // }
1853
1873
  //
1854
- const data = this.safeValue(response, 'data', {});
1874
+ const data = this.safeDict(response, 'data', {});
1855
1875
  const timestamp = this.safeInteger(data, 'time');
1856
1876
  const orderbook = this.parseOrderBook(data, market['symbol'], timestamp, 'bids', 'asks', level - 2, level - 1);
1857
1877
  orderbook['nonce'] = this.safeInteger(data, 'sequence');
@@ -1953,7 +1973,7 @@ class kucoin extends kucoin$1 {
1953
1973
  // }
1954
1974
  // }
1955
1975
  //
1956
- const data = this.safeValue(response, 'data', {});
1976
+ const data = this.safeDict(response, 'data', {});
1957
1977
  return this.parseOrder(data, market);
1958
1978
  }
1959
1979
  async createMarketOrderWithCost(symbol, side, cost, params = {}) {
@@ -2081,8 +2101,8 @@ class kucoin extends kucoin$1 {
2081
2101
  // },
2082
2102
  // }
2083
2103
  //
2084
- let data = this.safeValue(response, 'data', {});
2085
- data = this.safeValue(data, 'data', []);
2104
+ let data = this.safeDict(response, 'data', {});
2105
+ data = this.safeList(data, 'data', []);
2086
2106
  return this.parseOrders(data);
2087
2107
  }
2088
2108
  createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
@@ -2199,7 +2219,7 @@ class kucoin extends kucoin$1 {
2199
2219
  // }
2200
2220
  // }
2201
2221
  //
2202
- const data = this.safeValue(response, 'data', {});
2222
+ const data = this.safeDict(response, 'data', {});
2203
2223
  return this.parseOrder(data, market);
2204
2224
  }
2205
2225
  async cancelOrder(id, symbol = undefined, params = {}) {
@@ -2223,7 +2243,7 @@ class kucoin extends kucoin$1 {
2223
2243
  await this.loadMarkets();
2224
2244
  const request = {};
2225
2245
  const clientOrderId = this.safeString2(params, 'clientOid', 'clientOrderId');
2226
- const stop = this.safeValue2(params, 'stop', 'trigger', false);
2246
+ const stop = this.safeBool2(params, 'stop', 'trigger', false);
2227
2247
  const hf = this.safeBool(params, 'hf', false);
2228
2248
  if (hf) {
2229
2249
  if (symbol === undefined) {
@@ -2423,7 +2443,7 @@ class kucoin extends kucoin$1 {
2423
2443
  // ]
2424
2444
  // }
2425
2445
  // }
2426
- const responseData = this.safeValue(response, 'data', {});
2446
+ const responseData = this.safeDict(response, 'data', {});
2427
2447
  const orders = this.safeValue(responseData, 'items', responseData);
2428
2448
  return this.parseOrders(orders, market, since, limit);
2429
2449
  }
@@ -2559,7 +2579,7 @@ class kucoin extends kucoin$1 {
2559
2579
  response = await this.privateGetOrdersOrderId(this.extend(request, params));
2560
2580
  }
2561
2581
  }
2562
- let responseData = this.safeValue(response, 'data', {});
2582
+ let responseData = this.safeDict(response, 'data', {});
2563
2583
  if (Array.isArray(responseData)) {
2564
2584
  responseData = this.safeValue(responseData, 0);
2565
2585
  }
@@ -2694,7 +2714,7 @@ class kucoin extends kucoin$1 {
2694
2714
  const responseStop = this.safeString(order, 'stop');
2695
2715
  const stop = responseStop !== undefined;
2696
2716
  const stopTriggered = this.safeBool(order, 'stopTriggered', false);
2697
- const isActive = this.safeValue2(order, 'isActive', 'active');
2717
+ const isActive = this.safeBool2(order, 'isActive', 'active');
2698
2718
  const responseStatus = this.safeString(order, 'status');
2699
2719
  let status = undefined;
2700
2720
  if (isActive !== undefined) {
@@ -2727,7 +2747,7 @@ class kucoin extends kucoin$1 {
2727
2747
  'symbol': this.safeSymbol(marketId, market, '-'),
2728
2748
  'type': this.safeString(order, 'type'),
2729
2749
  'timeInForce': this.safeString(order, 'timeInForce'),
2730
- 'postOnly': this.safeValue(order, 'postOnly'),
2750
+ 'postOnly': this.safeBool(order, 'postOnly'),
2731
2751
  'side': this.safeString(order, 'side'),
2732
2752
  'amount': this.safeString(order, 'size'),
2733
2753
  'price': this.safeString(order, 'price'),
@@ -2867,13 +2887,13 @@ class kucoin extends kucoin$1 {
2867
2887
  // ]
2868
2888
  // }
2869
2889
  //
2870
- const data = this.safeValue(response, 'data', {});
2890
+ const data = this.safeDict(response, 'data', {});
2871
2891
  let trades = undefined;
2872
2892
  if (parseResponseData) {
2873
2893
  trades = data;
2874
2894
  }
2875
2895
  else {
2876
- trades = this.safeValue(data, 'items', []);
2896
+ trades = this.safeList(data, 'items', []);
2877
2897
  }
2878
2898
  return this.parseTrades(trades, market, since, limit);
2879
2899
  }
@@ -2916,7 +2936,7 @@ class kucoin extends kucoin$1 {
2916
2936
  // ]
2917
2937
  // }
2918
2938
  //
2919
- const trades = this.safeValue(response, 'data', []);
2939
+ const trades = this.safeList(response, 'data', []);
2920
2940
  return this.parseTrades(trades, market, since, limit);
2921
2941
  }
2922
2942
  parseTrade(trade, market = undefined) {
@@ -3078,8 +3098,8 @@ class kucoin extends kucoin$1 {
3078
3098
  // ]
3079
3099
  // }
3080
3100
  //
3081
- const data = this.safeValue(response, 'data', []);
3082
- const first = this.safeValue(data, 0);
3101
+ const data = this.safeList(response, 'data', []);
3102
+ const first = this.safeDict(data, 0);
3083
3103
  const marketId = this.safeString(first, 'symbol');
3084
3104
  return {
3085
3105
  'info': response,
@@ -3140,7 +3160,7 @@ class kucoin extends kucoin$1 {
3140
3160
  // }
3141
3161
  // }
3142
3162
  //
3143
- const data = this.safeValue(response, 'data', {});
3163
+ const data = this.safeDict(response, 'data', {});
3144
3164
  return this.parseTransaction(data, currency);
3145
3165
  }
3146
3166
  parseTransactionStatus(status) {
@@ -3240,7 +3260,7 @@ class kucoin extends kucoin$1 {
3240
3260
  updated = updated * 1000;
3241
3261
  }
3242
3262
  }
3243
- const internal = this.safeValue(transaction, 'isInner');
3263
+ const internal = this.safeBool(transaction, 'isInner');
3244
3264
  const tag = this.safeString(transaction, 'memo');
3245
3265
  return {
3246
3266
  'info': transaction,
@@ -3466,7 +3486,7 @@ class kucoin extends kucoin$1 {
3466
3486
  }
3467
3487
  const defaultType = this.safeString2(this.options, 'fetchBalance', 'defaultType', 'spot');
3468
3488
  const requestedType = this.safeString(params, 'type', defaultType);
3469
- const accountsByType = this.safeValue(this.options, 'accountsByType');
3489
+ const accountsByType = this.safeDict(this.options, 'accountsByType');
3470
3490
  let type = this.safeString(accountsByType, requestedType, requestedType);
3471
3491
  params = this.omit(params, 'type');
3472
3492
  const isHf = this.safeBool(params, 'hf', false);
@@ -3548,7 +3568,7 @@ class kucoin extends kucoin$1 {
3548
3568
  // }
3549
3569
  // }
3550
3570
  //
3551
- const data = this.safeValue(response, 'data', []);
3571
+ const data = this.safeList(response, 'data', []);
3552
3572
  const result = {
3553
3573
  'info': response,
3554
3574
  'timestamp': undefined,
@@ -3560,8 +3580,8 @@ class kucoin extends kucoin$1 {
3560
3580
  const entry = assets[i];
3561
3581
  const marketId = this.safeString(entry, 'symbol');
3562
3582
  const symbol = this.safeSymbol(marketId, undefined, '_');
3563
- const base = this.safeValue(entry, 'baseAsset', {});
3564
- const quote = this.safeValue(entry, 'quoteAsset', {});
3583
+ const base = this.safeDict(entry, 'baseAsset', {});
3584
+ const quote = this.safeDict(entry, 'quoteAsset', {});
3565
3585
  const baseCode = this.safeCurrencyCode(this.safeString(base, 'currency'));
3566
3586
  const quoteCode = this.safeCurrencyCode(this.safeString(quote, 'currency'));
3567
3587
  const subResult = {};
@@ -3571,7 +3591,7 @@ class kucoin extends kucoin$1 {
3571
3591
  }
3572
3592
  }
3573
3593
  else if (cross) {
3574
- const accounts = this.safeValue(data, 'accounts', []);
3594
+ const accounts = this.safeList(data, 'accounts', []);
3575
3595
  for (let i = 0; i < accounts.length; i++) {
3576
3596
  const balance = accounts[i];
3577
3597
  const currencyId = this.safeString(balance, 'currency');
@@ -3656,7 +3676,7 @@ class kucoin extends kucoin$1 {
3656
3676
  // }
3657
3677
  // }
3658
3678
  //
3659
- const data = this.safeValue(response, 'data');
3679
+ const data = this.safeDict(response, 'data');
3660
3680
  return this.parseTransfer(data, currency);
3661
3681
  }
3662
3682
  else {
@@ -3688,7 +3708,7 @@ class kucoin extends kucoin$1 {
3688
3708
  // }
3689
3709
  // }
3690
3710
  //
3691
- const data = this.safeValue(response, 'data');
3711
+ const data = this.safeDict(response, 'data');
3692
3712
  return this.parseTransfer(data, currency);
3693
3713
  }
3694
3714
  }
@@ -3732,7 +3752,7 @@ class kucoin extends kucoin$1 {
3732
3752
  const rawStatus = this.safeString(transfer, 'status');
3733
3753
  const accountFromRaw = this.safeStringLower(transfer, 'payAccountType');
3734
3754
  const accountToRaw = this.safeStringLower(transfer, 'recAccountType');
3735
- const accountsByType = this.safeValue(this.options, 'accountsByType');
3755
+ const accountsByType = this.safeDict(this.options, 'accountsByType');
3736
3756
  const accountFrom = this.safeString(accountsByType, accountFromRaw, accountFromRaw);
3737
3757
  const accountTo = this.safeString(accountsByType, accountToRaw, accountToRaw);
3738
3758
  return {
@@ -3902,7 +3922,7 @@ class kucoin extends kucoin$1 {
3902
3922
  await this.loadAccounts();
3903
3923
  let paginate = false;
3904
3924
  [paginate, params] = this.handleOptionAndParams(params, 'fetchLedger', 'paginate');
3905
- const isHf = this.safeValue(params, 'hf');
3925
+ const isHf = this.safeBool(params, 'hf');
3906
3926
  params = this.omit(params, 'hf');
3907
3927
  if (paginate) {
3908
3928
  return await this.fetchPaginatedCallDynamic('fetchLedger', code, since, limit, params);
@@ -3984,9 +4004,9 @@ class kucoin extends kucoin$1 {
3984
4004
  return this.parseLedger(items, currency, since, limit);
3985
4005
  }
3986
4006
  calculateRateLimiterCost(api, method, path, params, config = {}) {
3987
- const versions = this.safeValue(this.options, 'versions', {});
3988
- const apiVersions = this.safeValue(versions, api, {});
3989
- const methodVersions = this.safeValue(apiVersions, method, {});
4007
+ const versions = this.safeDict(this.options, 'versions', {});
4008
+ const apiVersions = this.safeDict(versions, api, {});
4009
+ const methodVersions = this.safeDict(apiVersions, method, {});
3990
4010
  const defaultVersion = this.safeString(methodVersions, path, this.options['version']);
3991
4011
  const version = this.safeString(params, 'version', defaultVersion);
3992
4012
  if (version === 'v3' && ('v3' in config)) {
@@ -4130,8 +4150,8 @@ class kucoin extends kucoin$1 {
4130
4150
  // }
4131
4151
  // }
4132
4152
  //
4133
- const data = this.safeValue(response, 'data', {});
4134
- const assets = (marginMode === 'isolated') ? this.safeValue(data, 'assets', []) : this.safeValue(data, 'accounts', []);
4153
+ const data = this.safeDict(response, 'data', {});
4154
+ const assets = (marginMode === 'isolated') ? this.safeList(data, 'assets', []) : this.safeList(data, 'accounts', []);
4135
4155
  return this.parseBorrowInterests(assets, undefined);
4136
4156
  }
4137
4157
  parseBorrowInterest(info, market = undefined) {
@@ -4184,7 +4204,7 @@ class kucoin extends kucoin$1 {
4184
4204
  market = this.safeMarket(marketId, market);
4185
4205
  const symbol = this.safeString(market, 'symbol');
4186
4206
  const timestamp = this.safeInteger(info, 'createdAt');
4187
- const isolatedBase = this.safeValue(info, 'baseAsset', {});
4207
+ const isolatedBase = this.safeDict(info, 'baseAsset', {});
4188
4208
  let amountBorrowed = undefined;
4189
4209
  let interest = undefined;
4190
4210
  let currencyId = undefined;
@@ -4242,7 +4262,7 @@ class kucoin extends kucoin$1 {
4242
4262
  // }
4243
4263
  // }
4244
4264
  //
4245
- const data = this.safeValue(response, 'data', {});
4265
+ const data = this.safeDict(response, 'data', {});
4246
4266
  return this.parseMarginLoan(data, currency);
4247
4267
  }
4248
4268
  async borrowIsolatedMargin(symbol, code, amount, params = {}) {
@@ -4281,7 +4301,7 @@ class kucoin extends kucoin$1 {
4281
4301
  // }
4282
4302
  // }
4283
4303
  //
4284
- const data = this.safeValue(response, 'data', {});
4304
+ const data = this.safeDict(response, 'data', {});
4285
4305
  return this.parseMarginLoan(data, currency);
4286
4306
  }
4287
4307
  async repayCrossMargin(code, amount, params = {}) {
@@ -4314,7 +4334,7 @@ class kucoin extends kucoin$1 {
4314
4334
  // }
4315
4335
  // }
4316
4336
  //
4317
- const data = this.safeValue(response, 'data', {});
4337
+ const data = this.safeDict(response, 'data', {});
4318
4338
  return this.parseMarginLoan(data, currency);
4319
4339
  }
4320
4340
  async repayIsolatedMargin(symbol, code, amount, params = {}) {
@@ -4351,7 +4371,7 @@ class kucoin extends kucoin$1 {
4351
4371
  // }
4352
4372
  // }
4353
4373
  //
4354
- const data = this.safeValue(response, 'data', {});
4374
+ const data = this.safeDict(response, 'data', {});
4355
4375
  return this.parseMarginLoan(data, currency);
4356
4376
  }
4357
4377
  parseMarginLoan(info, currency = undefined) {
@@ -4403,7 +4423,7 @@ class kucoin extends kucoin$1 {
4403
4423
  // },
4404
4424
  // ]
4405
4425
  //
4406
- const data = this.safeValue(response, 'data', []);
4426
+ const data = this.safeList(response, 'data', []);
4407
4427
  return this.parseDepositWithdrawFees(data, codes, 'currency');
4408
4428
  }
4409
4429
  sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
@@ -4412,9 +4432,9 @@ class kucoin extends kucoin$1 {
4412
4432
  // ↑ ↑
4413
4433
  // ↑ ↑
4414
4434
  //
4415
- const versions = this.safeValue(this.options, 'versions', {});
4416
- const apiVersions = this.safeValue(versions, api, {});
4417
- const methodVersions = this.safeValue(apiVersions, method, {});
4435
+ const versions = this.safeDict(this.options, 'versions', {});
4436
+ const apiVersions = this.safeDict(versions, api, {});
4437
+ const methodVersions = this.safeDict(apiVersions, method, {});
4418
4438
  const defaultVersion = this.safeString(methodVersions, path, this.options['version']);
4419
4439
  const version = this.safeString(params, 'version', defaultVersion);
4420
4440
  params = this.omit(params, 'version');
@@ -4439,7 +4459,8 @@ class kucoin extends kucoin$1 {
4439
4459
  url = url + endpoint;
4440
4460
  const isFuturePrivate = (api === 'futuresPrivate');
4441
4461
  const isPrivate = (api === 'private');
4442
- if (isPrivate || isFuturePrivate) {
4462
+ const isBroker = (api === 'private');
4463
+ if (isPrivate || isFuturePrivate || isBroker) {
4443
4464
  this.checkRequiredCredentials();
4444
4465
  const timestamp = this.nonce().toString();
4445
4466
  headers = this.extend({
@@ -4458,7 +4479,7 @@ class kucoin extends kucoin$1 {
4458
4479
  const payload = timestamp + method + endpoint + endpart;
4459
4480
  const signature = this.hmac(this.encode(payload), this.encode(this.secret), sha256.sha256, 'base64');
4460
4481
  headers['KC-API-SIGN'] = signature;
4461
- let partner = this.safeValue(this.options, 'partner', {});
4482
+ let partner = this.safeDict(this.options, 'partner', {});
4462
4483
  partner = isFuturePrivate ? this.safeValue(partner, 'future', partner) : this.safeValue(partner, 'spot', partner);
4463
4484
  const partnerId = this.safeString(partner, 'id');
4464
4485
  const partnerSecret = this.safeString2(partner, 'secret', 'key');
@@ -4468,6 +4489,10 @@ class kucoin extends kucoin$1 {
4468
4489
  headers['KC-API-PARTNER-SIGN'] = partnerSignature;
4469
4490
  headers['KC-API-PARTNER'] = partnerId;
4470
4491
  }
4492
+ if (isBroker) {
4493
+ const brokerName = this.safeString(partner, 'name');
4494
+ headers['KC-BROKER-NAME'] = brokerName;
4495
+ }
4471
4496
  }
4472
4497
  return { 'url': url, 'method': method, 'body': body, 'headers': headers };
4473
4498
  }
@@ -1291,7 +1291,7 @@ class bitget extends bitget$1 {
1291
1291
  if (feeAmount !== undefined) {
1292
1292
  const feeCurrency = this.safeString(fee, 'feeCoin');
1293
1293
  feeObject = {
1294
- 'cost': Precise["default"].stringAbs(feeAmount),
1294
+ 'cost': this.parseNumber(Precise["default"].stringAbs(feeAmount)),
1295
1295
  'currency': this.safeCurrencyCode(feeCurrency),
1296
1296
  };
1297
1297
  }
@@ -1304,10 +1304,10 @@ class bitget extends bitget$1 {
1304
1304
  if (side === 'buy' && market['spot'] && (type === 'market')) {
1305
1305
  cost = this.safeString(order, 'newSize', cost);
1306
1306
  }
1307
- let filled = this.safeString2(order, 'accBaseVolume', 'baseVolume');
1308
- if (market['spot'] && (rawStatus !== 'live')) {
1309
- filled = Precise["default"].stringDiv(cost, avgPrice);
1310
- }
1307
+ const filled = this.safeString2(order, 'accBaseVolume', 'baseVolume');
1308
+ // if (market['spot'] && (rawStatus !== 'live')) {
1309
+ // filled = Precise.stringDiv (cost, avgPrice);
1310
+ // }
1311
1311
  let amount = this.safeString(order, 'baseVolume');
1312
1312
  if (!market['spot'] || !(side === 'buy' && type === 'market')) {
1313
1313
  amount = this.safeString(order, 'newSize', amount);
@@ -1046,7 +1046,7 @@ class coinex extends coinex$1 {
1046
1046
  const messageHash = 'authenticated:spot';
1047
1047
  let future = this.safeValue(client.subscriptions, messageHash);
1048
1048
  if (future !== undefined) {
1049
- return future;
1049
+ return await future;
1050
1050
  }
1051
1051
  const requestId = this.requestId();
1052
1052
  const subscribe = {
@@ -1066,13 +1066,13 @@ class coinex extends coinex$1 {
1066
1066
  };
1067
1067
  future = this.watch(url, messageHash, request, requestId, subscribe);
1068
1068
  client.subscriptions[messageHash] = future;
1069
- return future;
1069
+ return await future;
1070
1070
  }
1071
1071
  else {
1072
1072
  const messageHash = 'authenticated:swap';
1073
1073
  let future = this.safeValue(client.subscriptions, messageHash);
1074
1074
  if (future !== undefined) {
1075
- return future;
1075
+ return await future;
1076
1076
  }
1077
1077
  const requestId = this.requestId();
1078
1078
  const subscribe = {
@@ -1092,7 +1092,7 @@ class coinex extends coinex$1 {
1092
1092
  };
1093
1093
  future = this.watch(url, messageHash, request, requestId, subscribe);
1094
1094
  client.subscriptions[messageHash] = future;
1095
- return future;
1095
+ return await future;
1096
1096
  }
1097
1097
  }
1098
1098
  }
@@ -191,7 +191,7 @@ class currencycom extends currencycom$1 {
191
191
  'fee': undefined,
192
192
  };
193
193
  }
194
- handleTrades(client, message, subscription) {
194
+ handleTrades(client, message) {
195
195
  //
196
196
  // {
197
197
  // "status": "OK",
@@ -172,7 +172,7 @@ class lbank extends lbank$1 {
172
172
  // },
173
173
  // type: 'kbar',
174
174
  // pair: 'btc_usdt',
175
- // TS: '2022-10-02T12:44:15.864'
175
+ // TS: '2022-10-02T12:44:15.865'
176
176
  // }
177
177
  //
178
178
  const marketId = this.safeString(message, 'pair');