ccxt 4.3.89 → 4.3.91

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 (69) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +1 -1
  4. package/dist/cjs/src/alpaca.js +2 -2
  5. package/dist/cjs/src/ascendex.js +95 -97
  6. package/dist/cjs/src/binance.js +1 -1
  7. package/dist/cjs/src/bingx.js +31 -17
  8. package/dist/cjs/src/bitfinex2.js +21 -22
  9. package/dist/cjs/src/bitget.js +2 -2
  10. package/dist/cjs/src/bitmart.js +6 -9
  11. package/dist/cjs/src/coinbaseinternational.js +2 -1
  12. package/dist/cjs/src/coinex.js +1 -17
  13. package/dist/cjs/src/hitbtc.js +2 -0
  14. package/dist/cjs/src/htx.js +49 -49
  15. package/dist/cjs/src/huobijp.js +0 -9
  16. package/dist/cjs/src/kucoin.js +59 -21
  17. package/dist/cjs/src/kucoinfutures.js +26 -2
  18. package/dist/cjs/src/latoken.js +1 -0
  19. package/dist/cjs/src/okx.js +1 -8
  20. package/dist/cjs/src/pro/binance.js +323 -0
  21. package/dist/cjs/src/pro/bingx.js +263 -91
  22. package/dist/cjs/src/pro/bithumb.js +5 -1
  23. package/dist/cjs/src/pro/bybit.js +1 -1
  24. package/dist/cjs/src/pro/coinex.js +994 -679
  25. package/dist/cjs/src/pro/lbank.js +2 -3
  26. package/dist/cjs/src/pro/okx.js +159 -3
  27. package/dist/cjs/src/whitebit.js +5 -3
  28. package/dist/cjs/src/woo.js +1 -1
  29. package/js/ccxt.d.ts +1 -1
  30. package/js/ccxt.js +1 -1
  31. package/js/src/abstract/kucoin.d.ts +1 -0
  32. package/js/src/abstract/kucoinfutures.d.ts +1 -0
  33. package/js/src/alpaca.js +2 -2
  34. package/js/src/ascendex.js +95 -97
  35. package/js/src/binance.js +1 -1
  36. package/js/src/bingx.js +31 -17
  37. package/js/src/bitfinex2.d.ts +0 -1
  38. package/js/src/bitfinex2.js +21 -22
  39. package/js/src/bitget.js +2 -2
  40. package/js/src/bitmart.d.ts +0 -1
  41. package/js/src/bitmart.js +6 -9
  42. package/js/src/coinbaseinternational.js +2 -1
  43. package/js/src/coinex.d.ts +0 -2
  44. package/js/src/coinex.js +1 -17
  45. package/js/src/hitbtc.js +2 -0
  46. package/js/src/htx.js +49 -49
  47. package/js/src/huobijp.d.ts +0 -1
  48. package/js/src/huobijp.js +0 -9
  49. package/js/src/kucoin.d.ts +3 -1
  50. package/js/src/kucoin.js +59 -21
  51. package/js/src/kucoinfutures.d.ts +1 -0
  52. package/js/src/kucoinfutures.js +26 -2
  53. package/js/src/latoken.js +1 -0
  54. package/js/src/okx.d.ts +0 -1
  55. package/js/src/okx.js +1 -8
  56. package/js/src/pro/binance.d.ts +9 -1
  57. package/js/src/pro/binance.js +327 -1
  58. package/js/src/pro/bingx.d.ts +2 -2
  59. package/js/src/pro/bingx.js +263 -91
  60. package/js/src/pro/bithumb.js +5 -1
  61. package/js/src/pro/bybit.js +1 -1
  62. package/js/src/pro/coinex.d.ts +12 -6
  63. package/js/src/pro/coinex.js +996 -681
  64. package/js/src/pro/lbank.js +2 -3
  65. package/js/src/pro/okx.d.ts +7 -0
  66. package/js/src/pro/okx.js +162 -4
  67. package/js/src/whitebit.js +5 -3
  68. package/js/src/woo.js +1 -1
  69. package/package.json +1 -1
package/js/src/bingx.js CHANGED
@@ -1062,8 +1062,7 @@ export default class bingx extends Exchange {
1062
1062
  }
1063
1063
  parseTrade(trade, market = undefined) {
1064
1064
  //
1065
- // spot
1066
- // fetchTrades
1065
+ // spot fetchTrades
1067
1066
  //
1068
1067
  // {
1069
1068
  // "id": 43148253,
@@ -1073,8 +1072,8 @@ export default class bingx extends Exchange {
1073
1072
  // "buyerMaker": false
1074
1073
  // }
1075
1074
  //
1076
- // spot
1077
- // fetchMyTrades
1075
+ // spot fetchMyTrades
1076
+ //
1078
1077
  // {
1079
1078
  // "symbol": "LTC-USDT",
1080
1079
  // "id": 36237072,
@@ -1089,8 +1088,7 @@ export default class bingx extends Exchange {
1089
1088
  // "isMaker": false
1090
1089
  // }
1091
1090
  //
1092
- // swap
1093
- // fetchTrades
1091
+ // swap fetchTrades
1094
1092
  //
1095
1093
  // {
1096
1094
  // "time": 1672025549368,
@@ -1100,8 +1098,7 @@ export default class bingx extends Exchange {
1100
1098
  // "quoteQty": "55723.87"
1101
1099
  // }
1102
1100
  //
1103
- // swap
1104
- // fetchMyTrades
1101
+ // swap fetchMyTrades
1105
1102
  //
1106
1103
  // {
1107
1104
  // "volume": "0.1",
@@ -1115,10 +1112,7 @@ export default class bingx extends Exchange {
1115
1112
  // "filledTime": "2023-07-04T20:56:01.000+0800"
1116
1113
  // }
1117
1114
  //
1118
- //
1119
- // ws
1120
- //
1121
- // spot
1115
+ // ws spot
1122
1116
  //
1123
1117
  // {
1124
1118
  // "E": 1690214529432,
@@ -1131,7 +1125,7 @@ export default class bingx extends Exchange {
1131
1125
  // "t": "57903921"
1132
1126
  // }
1133
1127
  //
1134
- // swap
1128
+ // ws linear swap
1135
1129
  //
1136
1130
  // {
1137
1131
  // "q": "0.0421",
@@ -1141,6 +1135,19 @@ export default class bingx extends Exchange {
1141
1135
  // "s": "BTC-USDT"
1142
1136
  // }
1143
1137
  //
1138
+ // ws inverse swap
1139
+ //
1140
+ // {
1141
+ // "e": "trade",
1142
+ // "E": 1722920589665,
1143
+ // "s": "BTC-USD",
1144
+ // "t": "39125001",
1145
+ // "p": "55360.0",
1146
+ // "q": "1",
1147
+ // "T": 1722920589582,
1148
+ // "m": false
1149
+ // }
1150
+ //
1144
1151
  // inverse swap fetchMyTrades
1145
1152
  //
1146
1153
  // {
@@ -2550,16 +2557,22 @@ export default class bingx extends Exchange {
2550
2557
  }
2551
2558
  }
2552
2559
  let positionSide = undefined;
2553
- if (reduceOnly) {
2554
- positionSide = (side === 'buy') ? 'SHORT' : 'LONG';
2560
+ const hedged = this.safeBool(params, 'hedged', false);
2561
+ if (hedged) {
2562
+ if (reduceOnly) {
2563
+ positionSide = (side === 'buy') ? 'SHORT' : 'LONG';
2564
+ }
2565
+ else {
2566
+ positionSide = (side === 'buy') ? 'LONG' : 'SHORT';
2567
+ }
2555
2568
  }
2556
2569
  else {
2557
- positionSide = (side === 'buy') ? 'LONG' : 'SHORT';
2570
+ positionSide = 'BOTH';
2558
2571
  }
2559
2572
  request['positionSide'] = positionSide;
2560
2573
  request['quantity'] = (market['inverse']) ? amount : this.parseToNumeric(this.amountToPrecision(symbol, amount)); // precision not available for inverse contracts
2561
2574
  }
2562
- params = this.omit(params, ['reduceOnly', 'triggerPrice', 'stopLossPrice', 'takeProfitPrice', 'trailingAmount', 'trailingPercent', 'trailingType', 'takeProfit', 'stopLoss', 'clientOrderId']);
2575
+ params = this.omit(params, ['hedged', 'reduceOnly', 'triggerPrice', 'stopLossPrice', 'takeProfitPrice', 'trailingAmount', 'trailingPercent', 'trailingType', 'takeProfit', 'stopLoss', 'clientOrderId']);
2563
2576
  return this.extend(request, params);
2564
2577
  }
2565
2578
  async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
@@ -2591,6 +2604,7 @@ export default class bingx extends Exchange {
2591
2604
  * @param {object} [params.stopLoss] *stopLoss object in params* containing the triggerPrice at which the attached stop loss order will be triggered
2592
2605
  * @param {float} [params.stopLoss.triggerPrice] stop loss trigger price
2593
2606
  * @param {boolean} [params.test] *swap only* whether to use the test endpoint or not, default is false
2607
+ * @param {boolean} [params.hedged] *swap only* whether the order is in hedged mode or one way mode
2594
2608
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
2595
2609
  */
2596
2610
  await this.loadMarkets();
@@ -20,7 +20,6 @@ export default class bitfinex2 extends Exchange {
20
20
  }>;
21
21
  fetchMarkets(params?: {}): Promise<Market[]>;
22
22
  fetchCurrencies(params?: {}): Promise<Currencies>;
23
- safeNetwork(networkId: any): string;
24
23
  fetchBalance(params?: {}): Promise<Balances>;
25
24
  transfer(code: string, amount: number, fromAccount: string, toAccount: string, params?: {}): Promise<TransferEntry>;
26
25
  parseTransfer(transfer: Dict, currency?: Currency): TransferEntry;
@@ -381,6 +381,25 @@ export default class bitfinex2 extends Exchange {
381
381
  'withdraw': {
382
382
  'includeFee': false,
383
383
  },
384
+ 'networks': {
385
+ 'BTC': 'BITCOIN',
386
+ 'LTC': 'LITECOIN',
387
+ 'ERC20': 'ETHEREUM',
388
+ 'OMNI': 'TETHERUSO',
389
+ 'LIQUID': 'TETHERUSL',
390
+ 'TRC20': 'TETHERUSX',
391
+ 'EOS': 'TETHERUSS',
392
+ 'AVAX': 'TETHERUSDTAVAX',
393
+ 'SOL': 'TETHERUSDTSOL',
394
+ 'ALGO': 'TETHERUSDTALG',
395
+ 'BCH': 'TETHERUSDTBCH',
396
+ 'KSM': 'TETHERUSDTKSM',
397
+ 'DVF': 'TETHERUSDTDVF',
398
+ 'OMG': 'TETHERUSDTOMG',
399
+ },
400
+ 'networksById': {
401
+ 'TETHERUSE': 'ERC20',
402
+ },
384
403
  },
385
404
  'exceptions': {
386
405
  'exact': {
@@ -789,7 +808,7 @@ export default class bitfinex2 extends Exchange {
789
808
  const networkId = this.safeString(pair, 0);
790
809
  const currencyId = this.safeString(this.safeValue(pair, 1, []), 0);
791
810
  if (currencyId === cleanId) {
792
- const network = this.safeNetwork(networkId);
811
+ const network = this.networkIdToCode(networkId);
793
812
  networks[network] = {
794
813
  'info': networkId,
795
814
  'id': networkId.toLowerCase(),
@@ -816,26 +835,6 @@ export default class bitfinex2 extends Exchange {
816
835
  }
817
836
  return result;
818
837
  }
819
- safeNetwork(networkId) {
820
- const networksById = {
821
- 'BITCOIN': 'BTC',
822
- 'LITECOIN': 'LTC',
823
- 'ETHEREUM': 'ERC20',
824
- 'TETHERUSE': 'ERC20',
825
- 'TETHERUSO': 'OMNI',
826
- 'TETHERUSL': 'LIQUID',
827
- 'TETHERUSX': 'TRC20',
828
- 'TETHERUSS': 'EOS',
829
- 'TETHERUSDTAVAX': 'AVAX',
830
- 'TETHERUSDTSOL': 'SOL',
831
- 'TETHERUSDTALG': 'ALGO',
832
- 'TETHERUSDTBCH': 'BCH',
833
- 'TETHERUSDTKSM': 'KSM',
834
- 'TETHERUSDTDVF': 'DVF',
835
- 'TETHERUSDTOMG': 'OMG',
836
- };
837
- return this.safeString(networksById, networkId, networkId);
838
- }
839
838
  async fetchBalance(params = {}) {
840
839
  /**
841
840
  * @method
@@ -2374,7 +2373,7 @@ export default class bitfinex2 extends Exchange {
2374
2373
  const currencyId = this.safeString(transaction, 1);
2375
2374
  code = this.safeCurrencyCode(currencyId, currency);
2376
2375
  const networkId = this.safeString(transaction, 2);
2377
- network = this.safeNetwork(networkId);
2376
+ network = this.networkIdToCode(networkId);
2378
2377
  timestamp = this.safeInteger(transaction, 5);
2379
2378
  updated = this.safeInteger(transaction, 6);
2380
2379
  status = this.parseTransactionStatus(this.safeString(transaction, 9));
package/js/src/bitget.js CHANGED
@@ -4004,7 +4004,7 @@ export default class bitget extends Exchange {
4004
4004
  if (feeCostString !== undefined) {
4005
4005
  // swap
4006
4006
  fee = {
4007
- 'cost': this.parseNumber(Precise.stringAbs(feeCostString)),
4007
+ 'cost': this.parseNumber(Precise.stringNeg(feeCostString)),
4008
4008
  'currency': market['settle'],
4009
4009
  };
4010
4010
  }
@@ -4021,7 +4021,7 @@ export default class bitget extends Exchange {
4021
4021
  }
4022
4022
  }
4023
4023
  fee = {
4024
- 'cost': this.parseNumber(Precise.stringAbs(this.safeString(feeObject, 'totalFee'))),
4024
+ 'cost': this.parseNumber(Precise.stringNeg(this.safeString(feeObject, 'totalFee'))),
4025
4025
  'currency': this.safeCurrencyCode(this.safeString(feeObject, 'feeCoinCode')),
4026
4026
  };
4027
4027
  }
@@ -81,7 +81,6 @@ export default class bitmart extends Exchange {
81
81
  tag: string;
82
82
  network: any;
83
83
  };
84
- safeNetworkCode(networkId: any, currency?: any): string;
85
84
  withdraw(code: string, amount: number, address: string, tag?: any, params?: {}): Promise<any>;
86
85
  fetchTransactionsByType(type: any, code?: Str, since?: Int, limit?: Int, params?: {}): Promise<Transaction[]>;
87
86
  fetchDeposit(id: string, code?: Str, params?: {}): Promise<Transaction>;
package/js/src/bitmart.js CHANGED
@@ -3438,7 +3438,12 @@ export default class bitmart extends Exchange {
3438
3438
  const parts = chain.split('-');
3439
3439
  const partsLength = parts.length;
3440
3440
  const networkId = this.safeString(parts, partsLength - 1);
3441
- network = this.safeNetworkCode(networkId, currency);
3441
+ if (networkId === this.safeString(currency, 'name')) {
3442
+ network = this.safeString(currency, 'code');
3443
+ }
3444
+ else {
3445
+ network = this.networkIdToCode(networkId);
3446
+ }
3442
3447
  }
3443
3448
  this.checkAddress(address);
3444
3449
  return {
@@ -3449,14 +3454,6 @@ export default class bitmart extends Exchange {
3449
3454
  'network': network,
3450
3455
  };
3451
3456
  }
3452
- safeNetworkCode(networkId, currency = undefined) {
3453
- const name = this.safeString(currency, 'name');
3454
- if (networkId === name) {
3455
- const code = this.safeString(currency, 'code');
3456
- return code;
3457
- }
3458
- return this.networkIdToCode(networkId);
3459
- }
3460
3457
  async withdraw(code, amount, address, tag = undefined, params = {}) {
3461
3458
  /**
3462
3459
  * @method
@@ -805,11 +805,12 @@ export default class coinbaseinternational extends Exchange {
805
805
  const currencyId = this.safeString(network, 'asset_name');
806
806
  const currencyCode = this.safeCurrencyCode(currencyId);
807
807
  const networkId = this.safeString(network, 'network_arn_id');
808
+ const networkIdForCode = this.safeStringN(network, ['network_name', 'display_name', 'network_arn_id'], '');
808
809
  return this.safeNetwork({
809
810
  'info': network,
810
811
  'id': networkId,
811
812
  'name': this.safeString(network, 'display_name'),
812
- 'network': this.networkIdToCode(this.safeStringN(network, ['network_name', 'display_name', 'network_arn_id'], ''), currencyCode),
813
+ 'network': this.networkIdToCode(networkIdForCode, currencyCode),
813
814
  'active': undefined,
814
815
  'deposit': undefined,
815
816
  'withdraw': undefined,
@@ -55,8 +55,6 @@ export default class coinex extends Exchange {
55
55
  tag: any;
56
56
  network: any;
57
57
  }>;
58
- safeNetwork(networkId: any, currency?: Currency): any;
59
- safeNetworkCode(networkId: any, currency?: Currency): any;
60
58
  parseDepositAddress(depositAddress: any, currency?: Currency): {
61
59
  info: any;
62
60
  currency: string;
package/js/src/coinex.js CHANGED
@@ -3769,26 +3769,10 @@ export default class coinex extends Exchange {
3769
3769
  const options = this.safeDict(this.options, 'fetchDepositAddress', {});
3770
3770
  const fillResponseFromRequest = this.safeBool(options, 'fillResponseFromRequest', true);
3771
3771
  if (fillResponseFromRequest) {
3772
- depositAddress['network'] = this.safeNetworkCode(network, currency);
3772
+ depositAddress['network'] = this.networkIdToCode(network, currency).toUpperCase();
3773
3773
  }
3774
3774
  return depositAddress;
3775
3775
  }
3776
- safeNetwork(networkId, currency = undefined) {
3777
- const networks = this.safeValue(currency, 'networks', {});
3778
- const networksCodes = Object.keys(networks);
3779
- const networksCodesLength = networksCodes.length;
3780
- if (networkId === undefined && networksCodesLength === 1) {
3781
- return networks[networksCodes[0]];
3782
- }
3783
- return {
3784
- 'id': networkId,
3785
- 'network': (networkId === undefined) ? undefined : networkId.toUpperCase(),
3786
- };
3787
- }
3788
- safeNetworkCode(networkId, currency = undefined) {
3789
- const network = this.safeNetwork(networkId, currency);
3790
- return network['network'];
3791
- }
3792
3776
  parseDepositAddress(depositAddress, currency = undefined) {
3793
3777
  //
3794
3778
  // {
package/js/src/hitbtc.js CHANGED
@@ -1418,8 +1418,10 @@ export default class hitbtc extends Exchange {
1418
1418
  }
1419
1419
  parseTransactionStatus(status) {
1420
1420
  const statuses = {
1421
+ 'CREATED': 'pending',
1421
1422
  'PENDING': 'pending',
1422
1423
  'FAILED': 'failed',
1424
+ 'ROLLED_BACK': 'failed',
1423
1425
  'SUCCESS': 'ok',
1424
1426
  };
1425
1427
  return this.safeString(statuses, status, status);