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.
- package/README.md +3 -3
- package/build.sh +2 -2
- package/dist/ccxt.browser.js +565 -178
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +12 -0
- package/dist/cjs/src/binance.js +33 -12
- package/dist/cjs/src/bingx.js +58 -49
- package/dist/cjs/src/bitget.js +69 -1
- package/dist/cjs/src/bitmex.js +3 -1
- package/dist/cjs/src/blofin.js +46 -11
- package/dist/cjs/src/btcmarkets.js +12 -0
- package/dist/cjs/src/bybit.js +100 -7
- package/dist/cjs/src/coinbase.js +12 -2
- package/dist/cjs/src/delta.js +95 -1
- package/dist/cjs/src/gemini.js +9 -4
- package/dist/cjs/src/hitbtc.js +1 -1
- package/dist/cjs/src/krakenfutures.js +1 -0
- package/dist/cjs/src/kucoin.js +87 -62
- package/dist/cjs/src/pro/bitget.js +5 -5
- package/dist/cjs/src/pro/coinex.js +4 -4
- package/dist/cjs/src/pro/currencycom.js +1 -1
- package/dist/cjs/src/pro/lbank.js +1 -1
- package/dist/cjs/src/yobit.js +15 -15
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/blofin.d.ts +1 -0
- package/js/src/abstract/krakenfutures.d.ts +1 -0
- package/js/src/abstract/kucoin.d.ts +10 -0
- package/js/src/abstract/kucoinfutures.d.ts +10 -0
- package/js/src/base/Exchange.js +12 -0
- package/js/src/binance.d.ts +1 -1
- package/js/src/binance.js +33 -12
- package/js/src/bingx.js +58 -49
- package/js/src/bitget.d.ts +3 -1
- package/js/src/bitget.js +69 -1
- package/js/src/bitmex.js +3 -1
- package/js/src/blofin.d.ts +3 -1
- package/js/src/blofin.js +46 -11
- package/js/src/btcmarkets.js +12 -0
- package/js/src/bybit.d.ts +1 -0
- package/js/src/bybit.js +100 -7
- package/js/src/coinbase.js +12 -2
- package/js/src/delta.d.ts +3 -1
- package/js/src/delta.js +95 -1
- package/js/src/gate.d.ts +1 -1
- package/js/src/gemini.js +9 -4
- package/js/src/hitbtc.js +1 -1
- package/js/src/krakenfutures.js +1 -0
- package/js/src/kucoin.js +87 -62
- package/js/src/okx.d.ts +1 -1
- package/js/src/pro/bitget.js +5 -5
- package/js/src/pro/coinex.js +4 -4
- package/js/src/pro/currencycom.d.ts +1 -1
- package/js/src/pro/currencycom.js +1 -1
- package/js/src/pro/lbank.js +1 -1
- package/js/src/woo.d.ts +1 -1
- package/js/src/yobit.js +15 -15
- package/package.json +2 -2
- package/skip-tests.json +47 -22
package/dist/cjs/src/kucoin.js
CHANGED
|
@@ -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,
|
|
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.
|
|
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.
|
|
942
|
-
const options = this.
|
|
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.
|
|
977
|
-
const tickers = this.
|
|
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.
|
|
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.
|
|
1023
|
+
'margin': this.safeBool(market, 'isMarginEnabled'),
|
|
1004
1024
|
'swap': false,
|
|
1005
1025
|
'future': false,
|
|
1006
1026
|
'option': false,
|
|
1007
|
-
'active': this.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
1528
|
-
const tickers = this.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
2085
|
-
data = this.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
3082
|
-
const first = this.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
3564
|
-
const quote = this.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
3988
|
-
const apiVersions = this.
|
|
3989
|
-
const methodVersions = this.
|
|
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.
|
|
4134
|
-
const assets = (marginMode === 'isolated') ? this.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
4416
|
-
const apiVersions = this.
|
|
4417
|
-
const methodVersions = this.
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
1308
|
-
if (market['spot'] && (rawStatus !== 'live')) {
|
|
1309
|
-
|
|
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
|
}
|