ccxt 4.1.34 → 4.1.36

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 (51) hide show
  1. package/README.md +8 -3
  2. package/build.sh +4 -0
  3. package/dist/ccxt.browser.js +739 -437
  4. package/dist/ccxt.browser.min.js +2 -2
  5. package/dist/cjs/ccxt.js +1 -1
  6. package/dist/cjs/src/base/Exchange.js +12 -0
  7. package/dist/cjs/src/base/errors.js +15 -1
  8. package/dist/cjs/src/binance.js +1 -0
  9. package/dist/cjs/src/bingx.js +19 -18
  10. package/dist/cjs/src/bitget.js +1 -0
  11. package/dist/cjs/src/bitopro.js +1 -0
  12. package/dist/cjs/src/bitstamp.js +12 -0
  13. package/dist/cjs/src/bybit.js +112 -109
  14. package/dist/cjs/src/digifinex.js +109 -3
  15. package/dist/cjs/src/huobi.js +206 -39
  16. package/dist/cjs/src/kraken.js +15 -8
  17. package/dist/cjs/src/kucoin.js +233 -257
  18. package/dist/cjs/src/phemex.js +1 -0
  19. package/dist/cjs/src/pro/okx.js +1 -1
  20. package/examples2md.js +79 -0
  21. package/js/ccxt.d.ts +1 -1
  22. package/js/ccxt.js +1 -1
  23. package/js/src/abstract/binance.d.ts +1 -0
  24. package/js/src/abstract/binancecoinm.d.ts +1 -0
  25. package/js/src/abstract/binanceus.d.ts +1 -0
  26. package/js/src/abstract/binanceusdm.d.ts +1 -0
  27. package/js/src/abstract/bitopro.d.ts +1 -0
  28. package/js/src/abstract/bitstamp.d.ts +10 -0
  29. package/js/src/abstract/kucoin.d.ts +81 -83
  30. package/js/src/abstract/kucoinfutures.d.ts +90 -86
  31. package/js/src/base/Exchange.d.ts +4 -0
  32. package/js/src/base/Exchange.js +12 -0
  33. package/js/src/base/errorHierarchy.d.ts +1 -1
  34. package/js/src/base/errorHierarchy.js +1 -1
  35. package/js/src/base/errors.d.ts +9 -1
  36. package/js/src/base/errors.js +14 -2
  37. package/js/src/binance.js +1 -0
  38. package/js/src/bingx.js +19 -18
  39. package/js/src/bitget.js +1 -0
  40. package/js/src/bitopro.js +1 -0
  41. package/js/src/bitstamp.js +12 -0
  42. package/js/src/bybit.js +112 -109
  43. package/js/src/digifinex.d.ts +13 -0
  44. package/js/src/digifinex.js +109 -3
  45. package/js/src/huobi.js +206 -39
  46. package/js/src/kraken.js +15 -8
  47. package/js/src/kucoin.d.ts +0 -1
  48. package/js/src/kucoin.js +233 -257
  49. package/js/src/phemex.js +1 -0
  50. package/js/src/pro/okx.js +1 -1
  51. package/package.json +8 -4
@@ -943,41 +943,195 @@ class huobi extends huobi$1 {
943
943
  },
944
944
  'networks': {
945
945
  // by displaynames
946
- 'ALGO': 'ALGO',
947
- 'ALGORAND': 'ALGO',
948
- 'BEP20': 'BEP20',
949
- 'BSC': 'BEP20',
950
- 'ERC20': 'ERC20',
951
- 'ETH': 'ERC20',
952
- 'AVALANCHE': 'AVAXCCHAIN',
953
- 'AVAX': 'AVAXCCHAIN',
954
- 'HRC20': 'HECO',
955
- 'HECO': 'HECO',
956
- // 'HT': 'HECO', // HT is not acceptable networkcode for unification
957
- 'TRC20': 'TRC20',
958
- 'TRX': 'TRC20',
959
- 'BTC': 'BTC',
960
- 'BITCOIN': 'BTC',
961
- 'ARBITRUM': 'ARB',
962
- 'ARB': 'ARB',
963
- 'SOLANA': 'SOL',
964
- 'SOL': 'SOL',
965
- 'SPL': 'SOL',
966
- 'PRC20': 'PRC20',
967
- 'POLYGON': 'PRC20',
968
- 'MATIC': 'PRC20',
969
- },
970
- 'networksById': {
971
- 'ALGO': 'ALGO',
972
- 'BEP20': 'BEP20',
973
- 'ERC20': 'ERC20',
974
- 'AVAXCCHAIN': 'AVALANCHE',
975
- 'HECO': 'HRC20',
976
- 'TRC20': 'TRC20',
946
+ 'TRC20': 'TRX',
977
947
  'BTC': 'BTC',
978
- 'ARB': 'ARBITRUM',
948
+ 'ERC20': 'ETH',
979
949
  'SOL': 'SOLANA',
980
- 'PRC20': 'POLYGON',
950
+ 'HRC20': 'HECO',
951
+ 'BEP20': 'BSC',
952
+ 'XMR': 'XMR',
953
+ 'LTC': 'LTC',
954
+ 'XRP': 'XRP',
955
+ 'XLM': 'XLM',
956
+ 'CRONOS': 'CRO',
957
+ 'CRO': 'CRO',
958
+ 'GLMR': 'GLMR',
959
+ 'POLYGON': 'MATIC',
960
+ 'MATIC': 'MATIC',
961
+ 'BTT': 'BTT',
962
+ 'CUBE': 'CUBE',
963
+ 'IOST': 'IOST',
964
+ 'NEO': 'NEO',
965
+ 'KLAY': 'KLAY',
966
+ 'EOS': 'EOS',
967
+ 'THETA': 'THETA',
968
+ 'NAS': 'NAS',
969
+ 'NULS': 'NULS',
970
+ 'QTUM': 'QTUM',
971
+ 'FTM': 'FTM',
972
+ 'CELO': 'CELO',
973
+ 'DOGE': 'DOGE',
974
+ 'DOGECHAIN': 'DOGECHAIN',
975
+ 'NEAR': 'NEAR',
976
+ 'STEP': 'STEP',
977
+ 'BITCI': 'BITCI',
978
+ 'CARDANO': 'ADA',
979
+ 'ADA': 'ADA',
980
+ 'ETC': 'ETC',
981
+ 'LUK': 'LUK',
982
+ 'MINEPLEX': 'MINEPLEX',
983
+ 'DASH': 'DASH',
984
+ 'ZEC': 'ZEC',
985
+ 'IOTA': 'IOTA',
986
+ 'NEON3': 'NEON3',
987
+ 'XEM': 'XEM',
988
+ 'HC': 'HC',
989
+ 'LSK': 'LSK',
990
+ 'DCR': 'DCR',
991
+ 'BTG': 'BTG',
992
+ 'STEEM': 'STEEM',
993
+ 'BTS': 'BTS',
994
+ 'ICX': 'ICX',
995
+ 'WAVES': 'WAVES',
996
+ 'CMT': 'CMT',
997
+ 'BTM': 'BTM',
998
+ 'VET': 'VET',
999
+ 'XZC': 'XZC',
1000
+ 'ACT': 'ACT',
1001
+ 'SMT': 'SMT',
1002
+ 'BCD': 'BCD',
1003
+ 'WAX': 'WAX1',
1004
+ 'WICC': 'WICC',
1005
+ 'ELF': 'ELF',
1006
+ 'ZIL': 'ZIL',
1007
+ 'ELA': 'ELA',
1008
+ 'BCX': 'BCX',
1009
+ 'SBTC': 'SBTC',
1010
+ 'BIFI': 'BIFI',
1011
+ 'CTXC': 'CTXC',
1012
+ 'WAN': 'WAN',
1013
+ 'POLYX': 'POLYX',
1014
+ 'PAI': 'PAI',
1015
+ 'WTC': 'WTC',
1016
+ 'DGB': 'DGB',
1017
+ 'XVG': 'XVG',
1018
+ 'AAC': 'AAC',
1019
+ 'AE': 'AE',
1020
+ 'SEELE': 'SEELE',
1021
+ 'BCV': 'BCV',
1022
+ 'GRS': 'GRS',
1023
+ 'ARDR': 'ARDR',
1024
+ 'NANO': 'NANO',
1025
+ 'ZEN': 'ZEN',
1026
+ 'RBTC': 'RBTC',
1027
+ 'BSV': 'BSV',
1028
+ 'GAS': 'GAS',
1029
+ 'XTZ': 'XTZ',
1030
+ 'LAMB': 'LAMB',
1031
+ 'CVNT1': 'CVNT1',
1032
+ 'DOCK': 'DOCK',
1033
+ 'SC': 'SC',
1034
+ 'KMD': 'KMD',
1035
+ 'ETN': 'ETN',
1036
+ 'TOP': 'TOP',
1037
+ 'IRIS': 'IRIS',
1038
+ 'UGAS': 'UGAS',
1039
+ 'TT': 'TT',
1040
+ 'NEWTON': 'NEWTON',
1041
+ 'VSYS': 'VSYS',
1042
+ 'FSN': 'FSN',
1043
+ 'BHD': 'BHD',
1044
+ 'ONE': 'ONE',
1045
+ 'EM': 'EM',
1046
+ 'CKB': 'CKB',
1047
+ 'EOSS': 'EOSS',
1048
+ 'HIVE': 'HIVE',
1049
+ 'RVN': 'RVN',
1050
+ 'DOT': 'DOT',
1051
+ 'KSM': 'KSM',
1052
+ 'BAND': 'BAND',
1053
+ 'OEP4': 'OEP4',
1054
+ 'NBS': 'NBS',
1055
+ 'FIS': 'FIS',
1056
+ 'AR': 'AR',
1057
+ 'HBAR': 'HBAR',
1058
+ 'FIL': 'FIL',
1059
+ 'MASS': 'MASS',
1060
+ 'KAVA': 'KAVA',
1061
+ 'XYM': 'XYM',
1062
+ 'ENJ': 'ENJ',
1063
+ 'CRUST': 'CRUST',
1064
+ 'ICP': 'ICP',
1065
+ 'CSPR': 'CSPR',
1066
+ 'FLOW': 'FLOW',
1067
+ 'IOTX': 'IOTX',
1068
+ 'LAT': 'LAT',
1069
+ 'APT': 'APT',
1070
+ 'XCH': 'XCH',
1071
+ 'MINA': 'MINA',
1072
+ 'XEC': 'ECASH',
1073
+ 'XPRT': 'XPRT',
1074
+ 'CCA': 'ACA',
1075
+ 'AOTI': 'COTI',
1076
+ 'AKT': 'AKT',
1077
+ 'ARS': 'ARS',
1078
+ 'ASTR': 'ASTR',
1079
+ 'AZERO': 'AZERO',
1080
+ 'BLD': 'BLD',
1081
+ 'BRISE': 'BRISE',
1082
+ 'CORE': 'CORE',
1083
+ 'DESO': 'DESO',
1084
+ 'DFI': 'DFI',
1085
+ 'EGLD': 'EGLD',
1086
+ 'ERG': 'ERG',
1087
+ 'ETHF': 'ETHFAIR',
1088
+ 'ETHW': 'ETHW',
1089
+ 'EVMOS': 'EVMOS',
1090
+ 'FIO': 'FIO',
1091
+ 'FLR': 'FLR',
1092
+ 'FINSCHIA': 'FINSCHIA',
1093
+ 'KMA': 'KMA',
1094
+ 'KYVE': 'KYVE',
1095
+ 'MEV': 'MEV',
1096
+ 'MOVR': 'MOVR',
1097
+ 'NODL': 'NODL',
1098
+ 'OAS': 'OAS',
1099
+ 'OSMO': 'OSMO',
1100
+ 'PAYCOIN': 'PAYCOIN',
1101
+ 'POKT': 'POKT',
1102
+ 'PYG': 'PYG',
1103
+ 'REI': 'REI',
1104
+ 'SCRT': 'SCRT',
1105
+ 'SDN': 'SDN',
1106
+ 'SEI': 'SEI',
1107
+ 'SGB': 'SGB',
1108
+ 'SUI': 'SUI',
1109
+ 'SXP': 'SOLAR',
1110
+ 'SYS': 'SYS',
1111
+ 'TENET': 'TENET',
1112
+ 'TON': 'TON',
1113
+ 'UNQ': 'UNQ',
1114
+ 'UYU': 'UYU',
1115
+ 'WEMIX': 'WEMIX',
1116
+ 'XDC': 'XDC',
1117
+ 'XPLA': 'XPLA',
1118
+ // todo: below
1119
+ // 'LUNC': 'LUNC',
1120
+ // 'TERRA': 'TERRA', // tbd
1121
+ // 'LUNA': 'LUNA', tbd
1122
+ // 'FCT2': 'FCT2',
1123
+ // FIL-0X ?
1124
+ // 'COSMOS': 'ATOM1',
1125
+ // 'ATOM': 'ATOM1',
1126
+ // 'CRO': 'CRO',
1127
+ // 'OP': [ 'OPTIMISM', 'OPTIMISMETH' ]
1128
+ // 'ARB': ['ARB', 'ARBITRUMETH']
1129
+ // 'CHZ': [ 'CHZ', 'CZH' ],
1130
+ // todo: AVAXCCHAIN CCHAIN AVAX
1131
+ // 'ALGO': ['ALGO', 'ALGOUSDT']
1132
+ // 'ONT': [ 'ONT', 'ONTOLOGY' ],
1133
+ // 'BCC': 'BCC', BCH's somewhat chain
1134
+ // 'DBC1': 'DBC1',
981
1135
  },
982
1136
  // https://github.com/ccxt/ccxt/issues/5376
983
1137
  'fetchOrdersByStatesMethod': 'spot_private_get_v1_order_orders',
@@ -2928,10 +3082,10 @@ class huobi extends huobi$1 {
2928
3082
  for (let j = 0; j < chains.length; j++) {
2929
3083
  const chainEntry = chains[j];
2930
3084
  const uniqueChainId = this.safeString(chainEntry, 'chain'); // i.e. usdterc20, trc20usdt ...
2931
- const title = this.safeString(chainEntry, 'displayName');
3085
+ const title = this.safeString2(chainEntry, 'baseChain', 'displayName'); // baseChain and baseChainProtocol are together existent or inexistent in entries, but baseChain is preferred. when they are both inexistent, then we use generic displayName
2932
3086
  this.options['networkChainIdsByNames'][code][title] = uniqueChainId;
2933
3087
  this.options['networkNamesByChainIds'][uniqueChainId] = title;
2934
- const networkCode = this.networkIdToCode(title, code);
3088
+ const networkCode = this.networkIdToCode(uniqueChainId);
2935
3089
  minWithdraw = this.safeNumber(chainEntry, 'minWithdrawAmt');
2936
3090
  maxWithdraw = this.safeNumber(chainEntry, 'maxWithdrawAmt');
2937
3091
  const withdrawStatus = this.safeString(chainEntry, 'withdrawStatus');
@@ -2951,6 +3105,10 @@ class huobi extends huobi$1 {
2951
3105
  'id': uniqueChainId,
2952
3106
  'network': networkCode,
2953
3107
  'limits': {
3108
+ 'deposit': {
3109
+ 'min': undefined,
3110
+ 'max': undefined,
3111
+ },
2954
3112
  'withdraw': {
2955
3113
  'min': minWithdraw,
2956
3114
  'max': maxWithdraw,
@@ -2981,6 +3139,10 @@ class huobi extends huobi$1 {
2981
3139
  'min': minWithdraw,
2982
3140
  'max': maxWithdraw,
2983
3141
  },
3142
+ 'deposit': {
3143
+ 'min': undefined,
3144
+ 'max': undefined,
3145
+ },
2984
3146
  },
2985
3147
  'precision': this.parseNumber(minPrecision),
2986
3148
  'networks': networks,
@@ -3008,8 +3170,13 @@ class huobi extends huobi$1 {
3008
3170
  throw new errors.ExchangeError(this.id + ' networkCodeToId() - markets need to be loaded at first');
3009
3171
  }
3010
3172
  const uniqueNetworkIds = this.safeValue(this.options['networkChainIdsByNames'], currencyCode, {});
3011
- const networkTitle = super.networkCodeToId(networkCode);
3012
- return this.safeValue(uniqueNetworkIds, networkTitle, networkTitle);
3173
+ if (networkCode in uniqueNetworkIds) {
3174
+ return uniqueNetworkIds[networkCode];
3175
+ }
3176
+ else {
3177
+ const networkTitle = super.networkCodeToId(networkCode);
3178
+ return this.safeValue(uniqueNetworkIds, networkTitle, networkTitle);
3179
+ }
3013
3180
  }
3014
3181
  async fetchBalance(params = {}) {
3015
3182
  /**
@@ -5448,7 +5615,7 @@ class huobi extends huobi$1 {
5448
5615
  'currency': code,
5449
5616
  'address': address,
5450
5617
  'tag': tag,
5451
- 'network': this.networkIdToCode(networkId, code),
5618
+ 'network': this.networkIdToCode(networkId),
5452
5619
  'note': note,
5453
5620
  'info': depositAddress,
5454
5621
  };
@@ -5723,7 +5890,7 @@ class huobi extends huobi$1 {
5723
5890
  'txid': txHash,
5724
5891
  'timestamp': timestamp,
5725
5892
  'datetime': this.iso8601(timestamp),
5726
- 'network': this.networkIdToCode(networkId, code),
5893
+ 'network': this.networkIdToCode(networkId),
5727
5894
  'address': this.safeString(transaction, 'address'),
5728
5895
  'addressTo': undefined,
5729
5896
  'addressFrom': undefined,
@@ -1224,8 +1224,10 @@ class kraken extends kraken$1 {
1224
1224
  for (let i = 0; i < currencyIds.length; i++) {
1225
1225
  const currencyId = currencyIds[i];
1226
1226
  const code = this.safeCurrencyCode(currencyId);
1227
+ const balance = this.safeValue(balances, currencyId, {});
1227
1228
  const account = this.account();
1228
- account['total'] = this.safeString(balances, currencyId);
1229
+ account['used'] = this.safeString(balance, 'hold_trade');
1230
+ account['total'] = this.safeString(balance, 'balance');
1229
1231
  result[code] = account;
1230
1232
  }
1231
1233
  return this.safeBalance(result);
@@ -1235,19 +1237,24 @@ class kraken extends kraken$1 {
1235
1237
  * @method
1236
1238
  * @name kraken#fetchBalance
1237
1239
  * @description query for balance and get the amount of funds available for trading or funds locked in orders
1238
- * @see https://docs.kraken.com/rest/#tag/Account-Data/operation/getAccountBalance
1240
+ * @see https://docs.kraken.com/rest/#tag/Account-Data/operation/getExtendedBalance
1239
1241
  * @param {object} [params] extra parameters specific to the kraken api endpoint
1240
1242
  * @returns {object} a [balance structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#balance-structure}
1241
1243
  */
1242
1244
  await this.loadMarkets();
1243
- const response = await this.privatePostBalance(params);
1245
+ const response = await this.privatePostBalanceEx(params);
1244
1246
  //
1245
1247
  // {
1246
- // "error":[],
1247
- // "result":{
1248
- // "ZUSD":"58.8649",
1249
- // "KFEE":"4399.43",
1250
- // "XXBT":"0.0000034506",
1248
+ // "error": [],
1249
+ // "result": {
1250
+ // "ZUSD": {
1251
+ // "balance": 25435.21,
1252
+ // "hold_trade": 8249.76
1253
+ // },
1254
+ // "XXBT": {
1255
+ // "balance": 1.2435,
1256
+ // "hold_trade": 0.8423
1257
+ // }
1251
1258
  // }
1252
1259
  // }
1253
1260
  //