ccxt 4.4.77 → 4.4.80

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 (154) hide show
  1. package/README.md +8 -10
  2. package/dist/ccxt.browser.min.js +7 -7
  3. package/dist/cjs/ccxt.js +8 -4
  4. package/dist/cjs/src/abstract/ace.js +1 -1
  5. package/dist/cjs/src/abstract/apex.js +9 -0
  6. package/dist/cjs/src/ace.js +1 -1
  7. package/dist/cjs/src/apex.js +1949 -0
  8. package/dist/cjs/src/ascendex.js +25 -4
  9. package/dist/cjs/src/base/Exchange.js +42 -2
  10. package/dist/cjs/src/binance.js +9 -1
  11. package/dist/cjs/src/bingx.js +3 -3
  12. package/dist/cjs/src/bitfinex.js +64 -36
  13. package/dist/cjs/src/bitget.js +191 -138
  14. package/dist/cjs/src/bitmart.js +7 -2
  15. package/dist/cjs/src/bitmex.js +16 -8
  16. package/dist/cjs/src/bitopro.js +5 -1
  17. package/dist/cjs/src/bitrue.js +2 -1
  18. package/dist/cjs/src/bitso.js +1 -1
  19. package/dist/cjs/src/bitteam.js +2 -0
  20. package/dist/cjs/src/bitvavo.js +28 -10
  21. package/dist/cjs/src/btcalpha.js +1 -1
  22. package/dist/cjs/src/btcmarkets.js +1 -1
  23. package/dist/cjs/src/btcturk.js +1 -1
  24. package/dist/cjs/src/bybit.js +32 -16
  25. package/dist/cjs/src/cex.js +1 -1
  26. package/dist/cjs/src/coinbase.js +18 -2
  27. package/dist/cjs/src/coincatch.js +68 -0
  28. package/dist/cjs/src/coinex.js +1 -0
  29. package/dist/cjs/src/coinlist.js +1 -0
  30. package/dist/cjs/src/coinone.js +1 -0
  31. package/dist/cjs/src/delta.js +4 -0
  32. package/dist/cjs/src/deribit.js +1 -0
  33. package/dist/cjs/src/hitbtc.js +3 -0
  34. package/dist/cjs/src/hollaex.js +1 -0
  35. package/dist/cjs/src/htx.js +7 -3
  36. package/dist/cjs/src/huobijp.js +1 -0
  37. package/dist/cjs/src/hyperliquid.js +14 -4
  38. package/dist/cjs/src/kraken.js +2 -0
  39. package/dist/cjs/src/mexc.js +50 -57
  40. package/dist/cjs/src/okx.js +1 -1
  41. package/dist/cjs/src/phemex.js +2 -1
  42. package/dist/cjs/src/poloniex.js +2 -1
  43. package/dist/cjs/src/pro/apex.js +1043 -0
  44. package/dist/cjs/src/pro/binance.js +3 -3
  45. package/dist/cjs/src/pro/coinbase.js +45 -68
  46. package/dist/cjs/src/pro/gate.js +27 -2
  47. package/dist/cjs/src/pro/hollaex.js +2 -2
  48. package/dist/cjs/src/pro/p2b.js +2 -2
  49. package/dist/cjs/src/pro/tradeogre.js +283 -0
  50. package/dist/cjs/src/pro/upbit.js +43 -0
  51. package/dist/cjs/src/probit.js +1 -0
  52. package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +2639 -0
  53. package/dist/cjs/src/timex.js +2 -2
  54. package/dist/cjs/src/tradeogre.js +2 -1
  55. package/dist/cjs/src/upbit.js +277 -67
  56. package/dist/cjs/src/whitebit.js +66 -12
  57. package/dist/cjs/src/woo.js +3 -1
  58. package/dist/cjs/src/xt.js +9 -0
  59. package/js/ccxt.d.ts +11 -5
  60. package/js/ccxt.js +8 -4
  61. package/js/src/abstract/apex.d.ts +34 -0
  62. package/js/src/abstract/bitmart.d.ts +1 -0
  63. package/js/src/apex.d.ts +333 -0
  64. package/js/src/apex.js +1945 -0
  65. package/js/src/ascendex.d.ts +3 -3
  66. package/js/src/ascendex.js +25 -4
  67. package/js/src/base/Exchange.d.ts +2 -0
  68. package/js/src/base/Exchange.js +42 -1
  69. package/js/src/binance.d.ts +7 -7
  70. package/js/src/binance.js +9 -1
  71. package/js/src/bingx.js +3 -3
  72. package/js/src/bitfinex.d.ts +3 -3
  73. package/js/src/bitfinex.js +64 -36
  74. package/js/src/bitflyer.d.ts +2 -2
  75. package/js/src/bitget.d.ts +2 -0
  76. package/js/src/bitget.js +191 -138
  77. package/js/src/bitmart.d.ts +5 -4
  78. package/js/src/bitmart.js +7 -2
  79. package/js/src/bitmex.d.ts +3 -3
  80. package/js/src/bitmex.js +16 -8
  81. package/js/src/bitopro.js +5 -1
  82. package/js/src/bitrue.js +2 -1
  83. package/js/src/bitso.js +1 -1
  84. package/js/src/bitteam.js +2 -0
  85. package/js/src/bitvavo.js +28 -10
  86. package/js/src/btcalpha.js +1 -1
  87. package/js/src/btcmarkets.js +1 -1
  88. package/js/src/btcturk.js +1 -1
  89. package/js/src/bybit.js +32 -16
  90. package/js/src/cex.js +1 -1
  91. package/js/src/coinbase.d.ts +4 -4
  92. package/js/src/coinbase.js +18 -2
  93. package/js/src/coinbaseexchange.d.ts +1 -1
  94. package/js/src/coincatch.d.ts +11 -0
  95. package/js/src/coincatch.js +68 -0
  96. package/js/src/coinex.js +1 -0
  97. package/js/src/coinlist.js +1 -0
  98. package/js/src/coinone.js +1 -0
  99. package/js/src/cryptocom.d.ts +4 -4
  100. package/js/src/delta.js +4 -0
  101. package/js/src/deribit.d.ts +4 -4
  102. package/js/src/deribit.js +1 -0
  103. package/js/src/derive.d.ts +3 -3
  104. package/js/src/digifinex.d.ts +4 -4
  105. package/js/src/hitbtc.js +3 -0
  106. package/js/src/hollaex.js +1 -0
  107. package/js/src/htx.d.ts +4 -4
  108. package/js/src/htx.js +7 -3
  109. package/js/src/huobijp.js +1 -0
  110. package/js/src/hyperliquid.d.ts +1 -0
  111. package/js/src/hyperliquid.js +14 -4
  112. package/js/src/kraken.d.ts +3 -3
  113. package/js/src/kraken.js +2 -0
  114. package/js/src/krakenfutures.d.ts +2 -2
  115. package/js/src/kucoinfutures.d.ts +5 -5
  116. package/js/src/mexc.d.ts +1 -0
  117. package/js/src/mexc.js +50 -57
  118. package/js/src/okx.js +1 -1
  119. package/js/src/oxfun.d.ts +3 -3
  120. package/js/src/phemex.d.ts +3 -3
  121. package/js/src/phemex.js +2 -1
  122. package/js/src/poloniex.d.ts +3 -3
  123. package/js/src/poloniex.js +2 -1
  124. package/js/src/pro/apex.d.ts +160 -0
  125. package/js/src/pro/apex.js +1038 -0
  126. package/js/src/pro/binance.js +3 -3
  127. package/js/src/pro/coinbase.d.ts +4 -3
  128. package/js/src/pro/coinbase.js +45 -66
  129. package/js/src/pro/gate.js +27 -2
  130. package/js/src/pro/hollaex.js +2 -2
  131. package/js/src/pro/p2b.js +2 -2
  132. package/js/src/pro/tradeogre.d.ts +49 -0
  133. package/js/src/pro/tradeogre.js +278 -0
  134. package/js/src/pro/upbit.d.ts +16 -1
  135. package/js/src/pro/upbit.js +43 -0
  136. package/js/src/probit.js +1 -0
  137. package/js/src/static_dependencies/zklink/zklink-sdk-web.d.ts +1279 -0
  138. package/js/src/static_dependencies/zklink/zklink-sdk-web.js +4276 -0
  139. package/js/src/timex.js +2 -2
  140. package/js/src/tradeogre.js +2 -1
  141. package/js/src/upbit.d.ts +75 -23
  142. package/js/src/upbit.js +277 -67
  143. package/js/src/vertex.d.ts +3 -3
  144. package/js/src/whitebit.js +66 -12
  145. package/js/src/woo.d.ts +4 -4
  146. package/js/src/woo.js +3 -1
  147. package/js/src/woofipro.d.ts +4 -4
  148. package/js/src/xt.d.ts +4 -4
  149. package/js/src/xt.js +9 -0
  150. package/package.json +2 -2
  151. package/js/src/abstract/ace.d.ts +0 -18
  152. package/js/src/ace.d.ts +0 -158
  153. package/js/src/ace.js +0 -1175
  154. /package/js/src/abstract/{ace.js → apex.js} +0 -0
@@ -858,12 +858,14 @@ class kraken extends kraken$1 {
858
858
  const precision = this.parseNumber(this.parsePrecision(this.safeString(currency, 'decimals')));
859
859
  // assumes all currencies are active except those listed above
860
860
  const active = this.safeString(currency, 'status') === 'enabled';
861
+ const isFiat = code.indexOf('.HOLD') >= 0;
861
862
  result[code] = {
862
863
  'id': id,
863
864
  'code': code,
864
865
  'info': currency,
865
866
  'name': this.safeString(currency, 'altname'),
866
867
  'active': active,
868
+ 'type': isFiat ? 'fiat' : 'crypto',
867
869
  'deposit': undefined,
868
870
  'withdraw': undefined,
869
871
  'fee': undefined,
@@ -1088,87 +1088,48 @@ class mexc extends mexc$1 {
1088
1088
  const id = this.safeString(currency, 'coin');
1089
1089
  const code = this.safeCurrencyCode(id);
1090
1090
  const name = this.safeString(currency, 'name');
1091
- let currencyActive = false;
1092
- let currencyFee = undefined;
1093
- let currencyWithdrawMin = undefined;
1094
- let currencyWithdrawMax = undefined;
1095
- let depositEnabled = false;
1096
- let withdrawEnabled = false;
1097
1091
  const networks = {};
1098
1092
  const chains = this.safeValue(currency, 'networkList', []);
1099
1093
  for (let j = 0; j < chains.length; j++) {
1100
1094
  const chain = chains[j];
1101
1095
  const networkId = this.safeString2(chain, 'netWork', 'network');
1102
1096
  const network = this.networkIdToCode(networkId);
1103
- const isDepositEnabled = this.safeBool(chain, 'depositEnable', false);
1104
- const isWithdrawEnabled = this.safeBool(chain, 'withdrawEnable', false);
1105
- const active = (isDepositEnabled && isWithdrawEnabled);
1106
- currencyActive = active || currencyActive;
1107
- const withdrawMin = this.safeString(chain, 'withdrawMin');
1108
- const withdrawMax = this.safeString(chain, 'withdrawMax');
1109
- currencyWithdrawMin = (currencyWithdrawMin === undefined) ? withdrawMin : currencyWithdrawMin;
1110
- currencyWithdrawMax = (currencyWithdrawMax === undefined) ? withdrawMax : currencyWithdrawMax;
1111
- const fee = this.safeNumber(chain, 'withdrawFee');
1112
- currencyFee = (currencyFee === undefined) ? fee : currencyFee;
1113
- if (Precise["default"].stringGt(currencyWithdrawMin, withdrawMin)) {
1114
- currencyWithdrawMin = withdrawMin;
1115
- }
1116
- if (Precise["default"].stringLt(currencyWithdrawMax, withdrawMax)) {
1117
- currencyWithdrawMax = withdrawMax;
1118
- }
1119
- if (isDepositEnabled) {
1120
- depositEnabled = true;
1121
- }
1122
- if (isWithdrawEnabled) {
1123
- withdrawEnabled = true;
1124
- }
1125
1097
  networks[network] = {
1126
1098
  'info': chain,
1127
1099
  'id': networkId,
1128
1100
  'network': network,
1129
- 'active': active,
1130
- 'deposit': isDepositEnabled,
1131
- 'withdraw': isWithdrawEnabled,
1132
- 'fee': fee,
1101
+ 'active': undefined,
1102
+ 'deposit': this.safeBool(chain, 'depositEnable', false),
1103
+ 'withdraw': this.safeBool(chain, 'withdrawEnable', false),
1104
+ 'fee': this.safeNumber(chain, 'withdrawFee'),
1133
1105
  'precision': undefined,
1134
1106
  'limits': {
1135
1107
  'withdraw': {
1136
- 'min': withdrawMin,
1137
- 'max': withdrawMax,
1108
+ 'min': this.safeString(chain, 'withdrawMin'),
1109
+ 'max': this.safeString(chain, 'withdrawMax'),
1138
1110
  },
1139
1111
  },
1140
1112
  };
1141
1113
  }
1142
- const networkKeys = Object.keys(networks);
1143
- const networkKeysLength = networkKeys.length;
1144
- if ((networkKeysLength === 1) || ('NONE' in networks)) {
1145
- const defaultNetwork = this.safeValue2(networks, 'NONE', networkKeysLength - 1);
1146
- if (defaultNetwork !== undefined) {
1147
- currencyFee = defaultNetwork['fee'];
1148
- }
1149
- }
1150
- result[code] = {
1114
+ result[code] = this.safeCurrencyStructure({
1151
1115
  'info': currency,
1152
1116
  'id': id,
1153
1117
  'code': code,
1154
1118
  'name': name,
1155
- 'active': currencyActive,
1156
- 'deposit': depositEnabled,
1157
- 'withdraw': withdrawEnabled,
1158
- 'fee': currencyFee,
1119
+ 'active': undefined,
1120
+ 'deposit': undefined,
1121
+ 'withdraw': undefined,
1122
+ 'fee': undefined,
1159
1123
  'precision': undefined,
1160
1124
  'limits': {
1161
1125
  'amount': {
1162
1126
  'min': undefined,
1163
1127
  'max': undefined,
1164
1128
  },
1165
- 'withdraw': {
1166
- 'min': currencyWithdrawMin,
1167
- 'max': currencyWithdrawMax,
1168
- },
1169
1129
  },
1130
+ 'type': 'crypto',
1170
1131
  'networks': networks,
1171
- };
1132
+ });
1172
1133
  }
1173
1134
  return result;
1174
1135
  }
@@ -3425,13 +3386,27 @@ class mexc extends mexc$1 {
3425
3386
  }
3426
3387
  parseOrder(order, market = undefined) {
3427
3388
  //
3428
- // spot: createOrder
3389
+ // spot
3390
+ // createOrder
3429
3391
  //
3430
- // {
3392
+ // {
3393
+ // "symbol": "FARTCOINUSDT",
3394
+ // "orderId": "C02__342252993005723644225",
3395
+ // "orderListId": "-1",
3396
+ // "price": "1.1",
3397
+ // "origQty": "6.3",
3398
+ // "type": "IMMEDIATE_OR_CANCEL",
3399
+ // "side": "SELL",
3400
+ // "transactTime": "1745852205223"
3401
+ // }
3402
+ //
3403
+ // unknown endpoint on spot
3404
+ //
3405
+ // {
3431
3406
  // "symbol": "BTCUSDT",
3432
3407
  // "orderId": "123738410679123456",
3433
3408
  // "orderListId": -1
3434
- // }
3409
+ // }
3435
3410
  //
3436
3411
  // margin: createOrder
3437
3412
  //
@@ -3596,6 +3571,11 @@ class mexc extends mexc$1 {
3596
3571
  else {
3597
3572
  id = this.safeString2(order, 'orderId', 'id');
3598
3573
  }
3574
+ let timeInForce = this.parseOrderTimeInForce(this.safeString(order, 'timeInForce'));
3575
+ const typeRaw = this.safeString(order, 'type');
3576
+ if (timeInForce === undefined) {
3577
+ timeInForce = this.getTifFromRawOrderType(typeRaw);
3578
+ }
3599
3579
  const marketId = this.safeString(order, 'symbol');
3600
3580
  market = this.safeMarket(marketId, market);
3601
3581
  const timestamp = this.safeIntegerN(order, ['time', 'createTime', 'transactTime']);
@@ -3618,8 +3598,8 @@ class mexc extends mexc$1 {
3618
3598
  'lastTradeTimestamp': undefined,
3619
3599
  'status': this.parseOrderStatus(this.safeString2(order, 'status', 'state')),
3620
3600
  'symbol': market['symbol'],
3621
- 'type': this.parseOrderType(this.safeString(order, 'type')),
3622
- 'timeInForce': this.parseOrderTimeInForce(this.safeString(order, 'timeInForce')),
3601
+ 'type': this.parseOrderType(typeRaw),
3602
+ 'timeInForce': timeInForce,
3623
3603
  'side': this.parseOrderSide(this.safeString(order, 'side')),
3624
3604
  'price': this.safeNumber(order, 'price'),
3625
3605
  'triggerPrice': this.safeNumber2(order, 'stopPrice', 'triggerPrice'),
@@ -3648,6 +3628,9 @@ class mexc extends mexc$1 {
3648
3628
  'MARKET': 'market',
3649
3629
  'LIMIT': 'limit',
3650
3630
  'LIMIT_MAKER': 'limit',
3631
+ // on spot, during submission below types are used only accepted as limit order
3632
+ 'IMMEDIATE_OR_CANCEL': 'limit',
3633
+ 'FILL_OR_KILL': 'limit',
3651
3634
  };
3652
3635
  return this.safeString(statuses, status, status);
3653
3636
  }
@@ -3675,6 +3658,16 @@ class mexc extends mexc$1 {
3675
3658
  };
3676
3659
  return this.safeString(statuses, status, status);
3677
3660
  }
3661
+ getTifFromRawOrderType(orderType = undefined) {
3662
+ const statuses = {
3663
+ 'LIMIT': 'GTC',
3664
+ 'LIMIT_MAKER': 'POST_ONLY',
3665
+ 'IMMEDIATE_OR_CANCEL': 'IOC',
3666
+ 'FILL_OR_KILL': 'FOK',
3667
+ 'MARKET': 'IOC',
3668
+ };
3669
+ return this.safeString(statuses, orderType, orderType);
3670
+ }
3678
3671
  async fetchAccountHelper(type, params) {
3679
3672
  if (type === 'spot') {
3680
3673
  return await this.spotPrivateGetAccount(params);
@@ -5075,7 +5075,7 @@ class okx extends okx$1 {
5075
5075
  */
5076
5076
  async fetchDepositAddress(code, params = {}) {
5077
5077
  await this.loadMarkets();
5078
- const rawNetwork = this.safeStringUpper(params, 'network');
5078
+ const rawNetwork = this.safeString(params, 'network'); // some networks are like "Dora Vota Mainnet"
5079
5079
  params = this.omit(params, 'network');
5080
5080
  code = this.safeCurrencyCode(code);
5081
5081
  const network = this.networkIdToCode(rawNetwork, code);
@@ -1162,7 +1162,8 @@ class phemex extends phemex$1 {
1162
1162
  },
1163
1163
  },
1164
1164
  'valueScale': valueScale,
1165
- 'networks': {},
1165
+ 'networks': undefined,
1166
+ 'type': 'crypto',
1166
1167
  };
1167
1168
  }
1168
1169
  return result;
@@ -1204,6 +1204,7 @@ class poloniex extends poloniex$1 {
1204
1204
  'withdraw': withdrawEnabled,
1205
1205
  'fee': this.parseNumber(feeString),
1206
1206
  'precision': undefined,
1207
+ 'type': 'crypto',
1207
1208
  'limits': {
1208
1209
  'amount': {
1209
1210
  'min': undefined,
@@ -1852,7 +1853,7 @@ class poloniex extends poloniex$1 {
1852
1853
  const isTrigger = this.safeValue2(params, 'trigger', 'stop');
1853
1854
  params = this.omit(params, ['trigger', 'stop']);
1854
1855
  let response = undefined;
1855
- if (!market['spot']) {
1856
+ if (marketType !== 'spot') {
1856
1857
  const raw = await this.swapPrivateGetV3TradeOrderOpens(this.extend(request, params));
1857
1858
  //
1858
1859
  // {