ccxt 4.4.74 → 4.4.77

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 (65) 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/base/Exchange.js +16 -9
  5. package/dist/cjs/src/binance.js +43 -219
  6. package/dist/cjs/src/bitget.js +1 -1
  7. package/dist/cjs/src/bitopro.js +37 -0
  8. package/dist/cjs/src/bitrue.js +48 -0
  9. package/dist/cjs/src/coinex.js +3 -0
  10. package/dist/cjs/src/coinlist.js +90 -1
  11. package/dist/cjs/src/okx.js +47 -33
  12. package/dist/cjs/src/paradex.js +3 -12
  13. package/dist/cjs/src/pro/hyperliquid.js +1 -1
  14. package/dist/cjs/src/upbit.js +64 -46
  15. package/dist/cjs/src/xt.js +122 -4
  16. package/js/ccxt.d.ts +1 -1
  17. package/js/ccxt.js +1 -1
  18. package/js/src/abstract/coinlist.d.ts +3 -0
  19. package/js/src/abstract/myokx.d.ts +4 -0
  20. package/js/src/abstract/okx.d.ts +4 -0
  21. package/js/src/abstract/upbit.d.ts +15 -1
  22. package/js/src/abstract/xt.d.ts +3 -0
  23. package/js/src/base/Exchange.d.ts +1 -0
  24. package/js/src/base/Exchange.js +16 -9
  25. package/js/src/binance.d.ts +2 -0
  26. package/js/src/binance.js +43 -219
  27. package/js/src/bitget.js +1 -1
  28. package/js/src/bitopro.js +37 -0
  29. package/js/src/bitrue.js +48 -0
  30. package/js/src/coinex.js +3 -0
  31. package/js/src/coinlist.d.ts +12 -1
  32. package/js/src/coinlist.js +90 -1
  33. package/js/src/okx.js +47 -33
  34. package/js/src/paradex.js +3 -12
  35. package/js/src/pro/hyperliquid.js +1 -1
  36. package/js/src/upbit.js +64 -46
  37. package/js/src/xt.d.ts +19 -0
  38. package/js/src/xt.js +122 -4
  39. package/package.json +1 -1
  40. package/js/src/abstract/bitcoincom.d.ts +0 -118
  41. package/js/src/abstract/bitcoincom.js +0 -11
  42. package/js/src/abstract/bitfinex1.d.ts +0 -72
  43. package/js/src/abstract/bitfinex1.js +0 -11
  44. package/js/src/abstract/bitpanda.d.ts +0 -26
  45. package/js/src/abstract/bitpanda.js +0 -5
  46. package/js/src/abstract/poloniexfutures.d.ts +0 -51
  47. package/js/src/abstract/poloniexfutures.js +0 -11
  48. package/js/src/abstract/wazirx.d.ts +0 -33
  49. package/js/src/abstract/wazirx.js +0 -11
  50. package/js/src/bitcoincom.d.ts +0 -4
  51. package/js/src/bitcoincom.js +0 -18
  52. package/js/src/bitpanda.d.ts +0 -4
  53. package/js/src/bitpanda.js +0 -17
  54. package/js/src/poloniexfutures.d.ts +0 -321
  55. package/js/src/poloniexfutures.js +0 -1941
  56. package/js/src/pro/bitcoincom.d.ts +0 -4
  57. package/js/src/pro/bitcoincom.js +0 -34
  58. package/js/src/pro/bitpanda.d.ts +0 -4
  59. package/js/src/pro/bitpanda.js +0 -17
  60. package/js/src/pro/poloniexfutures.d.ts +0 -108
  61. package/js/src/pro/poloniexfutures.js +0 -1042
  62. package/js/src/pro/wazirx.d.ts +0 -102
  63. package/js/src/pro/wazirx.js +0 -784
  64. package/js/src/static_dependencies/starknet/utils/json.d.ts +0 -24
  65. package/js/src/static_dependencies/starknet/utils/json.js +0 -43
@@ -15,6 +15,7 @@ interface Exchange {
15
15
  publicGetV1Leaderboard(params?: {}): Promise<implicitReturnType>;
16
16
  publicGetV1AffiliateCompetitionCode(params?: {}): Promise<implicitReturnType>;
17
17
  publicGetV1CompetitionCompetitionId(params?: {}): Promise<implicitReturnType>;
18
+ publicGetV1SymbolsSymbolFunding(params?: {}): Promise<implicitReturnType>;
18
19
  privateGetV1Fees(params?: {}): Promise<implicitReturnType>;
19
20
  privateGetV1Accounts(params?: {}): Promise<implicitReturnType>;
20
21
  privateGetV1AccountsTraderId(params?: {}): Promise<implicitReturnType>;
@@ -34,6 +35,7 @@ interface Exchange {
34
35
  privateGetV1Credits(params?: {}): Promise<implicitReturnType>;
35
36
  privateGetV1Positions(params?: {}): Promise<implicitReturnType>;
36
37
  privateGetV1AccountsTraderIdCompetitions(params?: {}): Promise<implicitReturnType>;
38
+ privateGetV1ClosedPositions(params?: {}): Promise<implicitReturnType>;
37
39
  privatePostV1Keys(params?: {}): Promise<implicitReturnType>;
38
40
  privatePostV1Orders(params?: {}): Promise<implicitReturnType>;
39
41
  privatePostV1OrdersCancelAllAfter(params?: {}): Promise<implicitReturnType>;
@@ -47,6 +49,7 @@ interface Exchange {
47
49
  privatePostV1AccountsTraderIdCreateCompetition(params?: {}): Promise<implicitReturnType>;
48
50
  privatePatchV1OrdersOrderId(params?: {}): Promise<implicitReturnType>;
49
51
  privatePatchV1OrdersBulk(params?: {}): Promise<implicitReturnType>;
52
+ privatePutV1AccountsTraderIdAlias(params?: {}): Promise<implicitReturnType>;
50
53
  privateDeleteV1KeysKey(params?: {}): Promise<implicitReturnType>;
51
54
  privateDeleteV1Orders(params?: {}): Promise<implicitReturnType>;
52
55
  privateDeleteV1OrdersOrderId(params?: {}): Promise<implicitReturnType>;
@@ -168,6 +168,7 @@ interface okx {
168
168
  privateGetAssetSubaccountManagedSubaccountBills(params?: {}): Promise<implicitReturnType>;
169
169
  privateGetUsersEntrustSubaccountList(params?: {}): Promise<implicitReturnType>;
170
170
  privateGetAccountSubaccountInterestLimits(params?: {}): Promise<implicitReturnType>;
171
+ privateGetUsersSubaccountApikey(params?: {}): Promise<implicitReturnType>;
171
172
  privateGetTradingBotGridOrdersAlgoPending(params?: {}): Promise<implicitReturnType>;
172
173
  privateGetTradingBotGridOrdersAlgoHistory(params?: {}): Promise<implicitReturnType>;
173
174
  privateGetTradingBotGridOrdersAlgoDetails(params?: {}): Promise<implicitReturnType>;
@@ -286,6 +287,9 @@ interface okx {
286
287
  privatePostAssetSubaccountTransfer(params?: {}): Promise<implicitReturnType>;
287
288
  privatePostUsersSubaccountSetTransferOut(params?: {}): Promise<implicitReturnType>;
288
289
  privatePostAccountSubaccountSetLoanAllocation(params?: {}): Promise<implicitReturnType>;
290
+ privatePostUsersSubaccountCreateSubaccount(params?: {}): Promise<implicitReturnType>;
291
+ privatePostUsersSubaccountSubaccountApikey(params?: {}): Promise<implicitReturnType>;
292
+ privatePostUsersSubaccountDeleteApikey(params?: {}): Promise<implicitReturnType>;
289
293
  privatePostTradingBotGridOrderAlgo(params?: {}): Promise<implicitReturnType>;
290
294
  privatePostTradingBotGridAmendOrderAlgo(params?: {}): Promise<implicitReturnType>;
291
295
  privatePostTradingBotGridStopOrderAlgo(params?: {}): Promise<implicitReturnType>;
@@ -168,6 +168,7 @@ interface Exchange {
168
168
  privateGetAssetSubaccountManagedSubaccountBills(params?: {}): Promise<implicitReturnType>;
169
169
  privateGetUsersEntrustSubaccountList(params?: {}): Promise<implicitReturnType>;
170
170
  privateGetAccountSubaccountInterestLimits(params?: {}): Promise<implicitReturnType>;
171
+ privateGetUsersSubaccountApikey(params?: {}): Promise<implicitReturnType>;
171
172
  privateGetTradingBotGridOrdersAlgoPending(params?: {}): Promise<implicitReturnType>;
172
173
  privateGetTradingBotGridOrdersAlgoHistory(params?: {}): Promise<implicitReturnType>;
173
174
  privateGetTradingBotGridOrdersAlgoDetails(params?: {}): Promise<implicitReturnType>;
@@ -286,6 +287,9 @@ interface Exchange {
286
287
  privatePostAssetSubaccountTransfer(params?: {}): Promise<implicitReturnType>;
287
288
  privatePostUsersSubaccountSetTransferOut(params?: {}): Promise<implicitReturnType>;
288
289
  privatePostAccountSubaccountSetLoanAllocation(params?: {}): Promise<implicitReturnType>;
290
+ privatePostUsersSubaccountCreateSubaccount(params?: {}): Promise<implicitReturnType>;
291
+ privatePostUsersSubaccountSubaccountApikey(params?: {}): Promise<implicitReturnType>;
292
+ privatePostUsersSubaccountDeleteApikey(params?: {}): Promise<implicitReturnType>;
289
293
  privatePostTradingBotGridOrderAlgo(params?: {}): Promise<implicitReturnType>;
290
294
  privatePostTradingBotGridAmendOrderAlgo(params?: {}): Promise<implicitReturnType>;
291
295
  privatePostTradingBotGridStopOrderAlgo(params?: {}): Promise<implicitReturnType>;
@@ -4,6 +4,7 @@ interface Exchange {
4
4
  publicGetMarketAll(params?: {}): Promise<implicitReturnType>;
5
5
  publicGetCandlesTimeframe(params?: {}): Promise<implicitReturnType>;
6
6
  publicGetCandlesTimeframeUnit(params?: {}): Promise<implicitReturnType>;
7
+ publicGetCandlesSeconds(params?: {}): Promise<implicitReturnType>;
7
8
  publicGetCandlesMinutesUnit(params?: {}): Promise<implicitReturnType>;
8
9
  publicGetCandlesMinutes1(params?: {}): Promise<implicitReturnType>;
9
10
  publicGetCandlesMinutes3(params?: {}): Promise<implicitReturnType>;
@@ -16,28 +17,41 @@ interface Exchange {
16
17
  publicGetCandlesDays(params?: {}): Promise<implicitReturnType>;
17
18
  publicGetCandlesWeeks(params?: {}): Promise<implicitReturnType>;
18
19
  publicGetCandlesMonths(params?: {}): Promise<implicitReturnType>;
20
+ publicGetCandlesYears(params?: {}): Promise<implicitReturnType>;
19
21
  publicGetTradesTicks(params?: {}): Promise<implicitReturnType>;
20
22
  publicGetTicker(params?: {}): Promise<implicitReturnType>;
23
+ publicGetTickerAll(params?: {}): Promise<implicitReturnType>;
21
24
  publicGetOrderbook(params?: {}): Promise<implicitReturnType>;
25
+ publicGetOrderbookSupportedLevels(params?: {}): Promise<implicitReturnType>;
22
26
  privateGetAccounts(params?: {}): Promise<implicitReturnType>;
23
27
  privateGetOrdersChance(params?: {}): Promise<implicitReturnType>;
24
28
  privateGetOrder(params?: {}): Promise<implicitReturnType>;
25
- privateGetOrders(params?: {}): Promise<implicitReturnType>;
26
29
  privateGetOrdersClosed(params?: {}): Promise<implicitReturnType>;
27
30
  privateGetOrdersOpen(params?: {}): Promise<implicitReturnType>;
28
31
  privateGetOrdersUuids(params?: {}): Promise<implicitReturnType>;
29
32
  privateGetWithdraws(params?: {}): Promise<implicitReturnType>;
30
33
  privateGetWithdraw(params?: {}): Promise<implicitReturnType>;
31
34
  privateGetWithdrawsChance(params?: {}): Promise<implicitReturnType>;
35
+ privateGetWithdrawsCoinAddresses(params?: {}): Promise<implicitReturnType>;
32
36
  privateGetDeposits(params?: {}): Promise<implicitReturnType>;
37
+ privateGetDepositsChanceCoin(params?: {}): Promise<implicitReturnType>;
33
38
  privateGetDeposit(params?: {}): Promise<implicitReturnType>;
34
39
  privateGetDepositsCoinAddresses(params?: {}): Promise<implicitReturnType>;
35
40
  privateGetDepositsCoinAddress(params?: {}): Promise<implicitReturnType>;
41
+ privateGetTravelRuleVasps(params?: {}): Promise<implicitReturnType>;
42
+ privateGetStatusWallet(params?: {}): Promise<implicitReturnType>;
43
+ privateGetApiKeys(params?: {}): Promise<implicitReturnType>;
36
44
  privatePostOrders(params?: {}): Promise<implicitReturnType>;
45
+ privatePostOrdersCancelAndNew(params?: {}): Promise<implicitReturnType>;
37
46
  privatePostWithdrawsCoin(params?: {}): Promise<implicitReturnType>;
38
47
  privatePostWithdrawsKrw(params?: {}): Promise<implicitReturnType>;
48
+ privatePostDepositsKrw(params?: {}): Promise<implicitReturnType>;
39
49
  privatePostDepositsGenerateCoinAddress(params?: {}): Promise<implicitReturnType>;
50
+ privatePostTravelRuleDepositUuid(params?: {}): Promise<implicitReturnType>;
51
+ privatePostTravelRuleDepositTxid(params?: {}): Promise<implicitReturnType>;
40
52
  privateDeleteOrder(params?: {}): Promise<implicitReturnType>;
53
+ privateDeleteOrdersOpen(params?: {}): Promise<implicitReturnType>;
54
+ privateDeleteOrdersUuids(params?: {}): Promise<implicitReturnType>;
41
55
  }
42
56
  declare abstract class Exchange extends _Exchange {
43
57
  }
@@ -72,6 +72,7 @@ interface Exchange {
72
72
  privateSpotDeleteBatchOrder(params?: {}): Promise<implicitReturnType>;
73
73
  privateSpotDeleteOpenOrder(params?: {}): Promise<implicitReturnType>;
74
74
  privateSpotDeleteOrderOrderId(params?: {}): Promise<implicitReturnType>;
75
+ privateSpotPutOrderOrderId(params?: {}): Promise<implicitReturnType>;
75
76
  privateLinearGetFutureTradeV1EntrustPlanDetail(params?: {}): Promise<implicitReturnType>;
76
77
  privateLinearGetFutureTradeV1EntrustPlanList(params?: {}): Promise<implicitReturnType>;
77
78
  privateLinearGetFutureTradeV1EntrustPlanListHistory(params?: {}): Promise<implicitReturnType>;
@@ -101,6 +102,7 @@ interface Exchange {
101
102
  privateLinearPostFutureTradeV1OrderCancelAll(params?: {}): Promise<implicitReturnType>;
102
103
  privateLinearPostFutureTradeV1OrderCreate(params?: {}): Promise<implicitReturnType>;
103
104
  privateLinearPostFutureTradeV1OrderCreateBatch(params?: {}): Promise<implicitReturnType>;
105
+ privateLinearPostFutureTradeV1OrderUpdate(params?: {}): Promise<implicitReturnType>;
104
106
  privateLinearPostFutureUserV1AccountOpen(params?: {}): Promise<implicitReturnType>;
105
107
  privateLinearPostFutureUserV1PositionAdjustLeverage(params?: {}): Promise<implicitReturnType>;
106
108
  privateLinearPostFutureUserV1PositionAutoMargin(params?: {}): Promise<implicitReturnType>;
@@ -138,6 +140,7 @@ interface Exchange {
138
140
  privateInversePostFutureTradeV1OrderCancelAll(params?: {}): Promise<implicitReturnType>;
139
141
  privateInversePostFutureTradeV1OrderCreate(params?: {}): Promise<implicitReturnType>;
140
142
  privateInversePostFutureTradeV1OrderCreateBatch(params?: {}): Promise<implicitReturnType>;
143
+ privateInversePostFutureTradeV1OrderUpdate(params?: {}): Promise<implicitReturnType>;
141
144
  privateInversePostFutureUserV1AccountOpen(params?: {}): Promise<implicitReturnType>;
142
145
  privateInversePostFutureUserV1PositionAdjustLeverage(params?: {}): Promise<implicitReturnType>;
143
146
  privateInversePostFutureUserV1PositionAutoMargin(params?: {}): Promise<implicitReturnType>;
@@ -400,6 +400,7 @@ export default class Exchange {
400
400
  getCacheIndex(orderbook: any, deltas: any): number;
401
401
  findTimeframe(timeframe: any, timeframes?: any): string;
402
402
  checkProxyUrlSettings(url?: Str, method?: Str, headers?: any, body?: any): any;
403
+ urlEncoderForProxyUrl(targetUrl: string): string;
403
404
  checkProxySettings(url?: Str, method?: Str, headers?: any, body?: any): any[];
404
405
  checkWsProxySettings(): any[];
405
406
  checkConflictingProxies(proxyAgentSet: any, proxyUrlSet: any): void;
@@ -547,7 +547,7 @@ export default class Exchange {
547
547
  httpProxyAgent = this.httpAgent;
548
548
  }
549
549
  }
550
- url = proxyUrl + url;
550
+ url = proxyUrl + this.urlEncoderForProxyUrl(url);
551
551
  }
552
552
  // proxy agents
553
553
  const [httpProxy, httpsProxy, socksProxy] = this.checkProxySettings(url, method, headers, body);
@@ -1751,6 +1751,12 @@ export default class Exchange {
1751
1751
  }
1752
1752
  return proxyUrl;
1753
1753
  }
1754
+ urlEncoderForProxyUrl(targetUrl) {
1755
+ // to be overriden
1756
+ const includesQuery = targetUrl.indexOf('?') >= 0;
1757
+ const finalUrl = includesQuery ? this.encodeURIComponent(targetUrl) : targetUrl;
1758
+ return finalUrl;
1759
+ }
1754
1760
  checkProxySettings(url = undefined, method = undefined, headers = undefined, body = undefined) {
1755
1761
  const usedProxies = [];
1756
1762
  let httpProxy = undefined;
@@ -2499,9 +2505,6 @@ export default class Exchange {
2499
2505
  }
2500
2506
  safeCurrencyStructure(currency) {
2501
2507
  // derive data from networks: deposit, withdraw, active, fee, limits, precision
2502
- const currencyDeposit = this.safeBool(currency, 'deposit');
2503
- const currencyWithdraw = this.safeBool(currency, 'withdraw');
2504
- const currencyActive = this.safeBool(currency, 'active');
2505
2508
  const networks = this.safeDict(currency, 'networks', {});
2506
2509
  const keys = Object.keys(networks);
2507
2510
  const length = keys.length;
@@ -2510,19 +2513,18 @@ export default class Exchange {
2510
2513
  const key = keys[i];
2511
2514
  const network = networks[key];
2512
2515
  const deposit = this.safeBool(network, 'deposit');
2516
+ const currencyDeposit = this.safeBool(currency, 'deposit');
2513
2517
  if (currencyDeposit === undefined || deposit) {
2514
2518
  currency['deposit'] = deposit;
2515
2519
  }
2516
2520
  const withdraw = this.safeBool(network, 'withdraw');
2521
+ const currencyWithdraw = this.safeBool(currency, 'withdraw');
2517
2522
  if (currencyWithdraw === undefined || withdraw) {
2518
2523
  currency['withdraw'] = withdraw;
2519
2524
  }
2520
- const active = this.safeBool(network, 'active');
2521
- if (currencyActive === undefined || active) {
2522
- currency['active'] = active;
2523
- }
2524
2525
  // set network 'active' to false if D or W is disabled
2525
- if (this.safeBool(network, 'active') === undefined) {
2526
+ let active = this.safeBool(network, 'active');
2527
+ if (active === undefined) {
2526
2528
  if (deposit && withdraw) {
2527
2529
  currency['networks'][key]['active'] = true;
2528
2530
  }
@@ -2530,6 +2532,11 @@ export default class Exchange {
2530
2532
  currency['networks'][key]['active'] = false;
2531
2533
  }
2532
2534
  }
2535
+ active = this.safeBool(network, 'active');
2536
+ const currencyActive = this.safeBool(currency, 'active');
2537
+ if (currencyActive === undefined || active) {
2538
+ currency['active'] = active;
2539
+ }
2533
2540
  // find lowest fee (which is more desired)
2534
2541
  const fee = this.safeString(network, 'fee');
2535
2542
  const feeMain = this.safeString(currency, 'fee');
@@ -1193,6 +1193,8 @@ export default class binance extends Exchange {
1193
1193
  fetchLedger(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<LedgerEntry[]>;
1194
1194
  parseLedgerEntry(item: Dict, currency?: Currency): LedgerEntry;
1195
1195
  parseLedgerEntryType(type: any): string;
1196
+ getNetworkCodeByNetworkUrl(currencyCode: string, depositUrl?: Str): Str;
1197
+ getBaseDomainFromUrl(url: Str): Str;
1196
1198
  sign(path: any, api?: string, method?: string, params?: {}, headers?: any, body?: any): {
1197
1199
  url: any;
1198
1200
  method: string;
package/js/src/binance.js CHANGED
@@ -1330,195 +1330,8 @@ export default class binance extends Exchange {
1330
1330
  'SPL': 'SOL',
1331
1331
  'SOL': 'SOL', // we shouldn't rename SOL
1332
1332
  },
1333
- // keeping this object for backward-compatibility
1334
- 'reverseNetworks': {
1335
- 'tronscan.org': 'TRC20',
1336
- 'etherscan.io': 'ERC20',
1337
- 'bscscan.com': 'BSC',
1338
- 'explorer.binance.org': 'BEP2',
1339
- 'bithomp.com': 'XRP',
1340
- 'bloks.io': 'EOS',
1341
- 'stellar.expert': 'XLM',
1342
- 'blockchair.com/bitcoin': 'BTC',
1343
- 'blockchair.com/bitcoin-cash': 'BCH',
1344
- 'blockchair.com/ecash': 'XEC',
1345
- 'explorer.litecoin.net': 'LTC',
1346
- 'explorer.avax.network': 'AVAX',
1347
- 'solscan.io': 'SOL',
1348
- 'polkadot.subscan.io': 'DOT',
1349
- 'dashboard.internetcomputer.org': 'ICP',
1350
- 'explorer.chiliz.com': 'CHZ',
1351
- 'cardanoscan.io': 'ADA',
1352
- 'mainnet.theoan.com': 'AION',
1353
- 'algoexplorer.io': 'ALGO',
1354
- 'explorer.ambrosus.com': 'AMB',
1355
- 'viewblock.io/zilliqa': 'ZIL',
1356
- 'viewblock.io/arweave': 'AR',
1357
- 'explorer.ark.io': 'ARK',
1358
- 'atomscan.com': 'ATOM',
1359
- 'www.mintscan.io': 'CTK',
1360
- 'explorer.bitcoindiamond.org': 'BCD',
1361
- 'btgexplorer.com': 'BTG',
1362
- 'bts.ai': 'BTS',
1363
- 'explorer.celo.org': 'CELO',
1364
- 'explorer.nervos.org': 'CKB',
1365
- 'cerebro.cortexlabs.ai': 'CTXC',
1366
- 'chainz.cryptoid.info': 'VIA',
1367
- 'explorer.dcrdata.org': 'DCR',
1368
- 'digiexplorer.info': 'DGB',
1369
- 'dock.subscan.io': 'DOCK',
1370
- 'dogechain.info': 'DOGE',
1371
- 'explorer.elrond.com': 'EGLD',
1372
- 'blockscout.com': 'ETC',
1373
- 'explore-fetchhub.fetch.ai': 'FET',
1374
- 'filfox.info': 'FIL',
1375
- 'fio.bloks.io': 'FIO',
1376
- 'explorer.firo.org': 'FIRO',
1377
- 'neoscan.io': 'NEO',
1378
- 'ftmscan.com': 'FTM',
1379
- 'explorer.gochain.io': 'GO',
1380
- 'block.gxb.io': 'GXS',
1381
- 'hash-hash.info': 'HBAR',
1382
- 'www.hiveblockexplorer.com': 'HIVE',
1383
- 'explorer.helium.com': 'HNT',
1384
- 'tracker.icon.foundation': 'ICX',
1385
- 'www.iostabc.com': 'IOST',
1386
- 'explorer.iota.org': 'IOTA',
1387
- 'iotexscan.io': 'IOTX',
1388
- 'irishub.iobscan.io': 'IRIS',
1389
- 'kava.mintscan.io': 'KAVA',
1390
- 'scope.klaytn.com': 'KLAY',
1391
- 'kmdexplorer.io': 'KMD',
1392
- 'kusama.subscan.io': 'KSM',
1393
- 'explorer.lto.network': 'LTO',
1394
- 'polygonscan.com': 'POLYGON',
1395
- 'explorer.ont.io': 'ONT',
1396
- 'minaexplorer.com': 'MINA',
1397
- 'nanolooker.com': 'NANO',
1398
- 'explorer.nebulas.io': 'NAS',
1399
- 'explorer.nbs.plus': 'NBS',
1400
- 'explorer.nebl.io': 'NEBL',
1401
- 'nulscan.io': 'NULS',
1402
- 'nxscan.com': 'NXS',
1403
- 'explorer.harmony.one': 'ONE',
1404
- 'explorer.poa.network': 'POA',
1405
- 'qtum.info': 'QTUM',
1406
- 'explorer.rsk.co': 'RSK',
1407
- 'www.oasisscan.com': 'ROSE',
1408
- 'ravencoin.network': 'RVN',
1409
- 'sc.tokenview.com': 'SC',
1410
- 'secretnodes.com': 'SCRT',
1411
- 'explorer.skycoin.com': 'SKY',
1412
- 'steemscan.com': 'STEEM',
1413
- 'explorer.stacks.co': 'STX',
1414
- 'www.thetascan.io': 'THETA',
1415
- 'scan.tomochain.com': 'TOMO',
1416
- 'explore.vechain.org': 'VET',
1417
- 'explorer.vite.net': 'VITE',
1418
- 'www.wanscan.org': 'WAN',
1419
- 'wavesexplorer.com': 'WAVES',
1420
- 'wax.eosx.io': 'WAXP',
1421
- 'waltonchain.pro': 'WTC',
1422
- 'chain.nem.ninja': 'XEM',
1423
- 'verge-blockchain.info': 'XVG',
1424
- 'explorer.yoyow.org': 'YOYOW',
1425
- 'explorer.zcha.in': 'ZEC',
1426
- 'explorer.zensystem.io': 'ZEN',
1427
- },
1428
1333
  'networksById': {
1429
- 'SOL': 'SOL',
1430
- 'tronscan.org': 'TRC20',
1431
- 'etherscan.io': 'ERC20',
1432
- 'bscscan.com': 'BSC',
1433
- 'explorer.binance.org': 'BEP2',
1434
- 'bithomp.com': 'XRP',
1435
- 'bloks.io': 'EOS',
1436
- 'stellar.expert': 'XLM',
1437
- 'blockchair.com/bitcoin': 'BTC',
1438
- 'blockchair.com/bitcoin-cash': 'BCH',
1439
- 'blockchair.com/ecash': 'XEC',
1440
- 'explorer.litecoin.net': 'LTC',
1441
- 'explorer.avax.network': 'AVAX',
1442
- 'solscan.io': 'SOL',
1443
- 'polkadot.subscan.io': 'DOT',
1444
- 'dashboard.internetcomputer.org': 'ICP',
1445
- 'explorer.chiliz.com': 'CHZ',
1446
- 'cardanoscan.io': 'ADA',
1447
- 'mainnet.theoan.com': 'AION',
1448
- 'algoexplorer.io': 'ALGO',
1449
- 'explorer.ambrosus.com': 'AMB',
1450
- 'viewblock.io/zilliqa': 'ZIL',
1451
- 'viewblock.io/arweave': 'AR',
1452
- 'explorer.ark.io': 'ARK',
1453
- 'atomscan.com': 'ATOM',
1454
- 'www.mintscan.io': 'CTK',
1455
- 'explorer.bitcoindiamond.org': 'BCD',
1456
- 'btgexplorer.com': 'BTG',
1457
- 'bts.ai': 'BTS',
1458
- 'explorer.celo.org': 'CELO',
1459
- 'explorer.nervos.org': 'CKB',
1460
- 'cerebro.cortexlabs.ai': 'CTXC',
1461
- 'chainz.cryptoid.info': 'VIA',
1462
- 'explorer.dcrdata.org': 'DCR',
1463
- 'digiexplorer.info': 'DGB',
1464
- 'dock.subscan.io': 'DOCK',
1465
- 'dogechain.info': 'DOGE',
1466
- 'explorer.elrond.com': 'EGLD',
1467
- 'blockscout.com': 'ETC',
1468
- 'explore-fetchhub.fetch.ai': 'FET',
1469
- 'filfox.info': 'FIL',
1470
- 'fio.bloks.io': 'FIO',
1471
- 'explorer.firo.org': 'FIRO',
1472
- 'neoscan.io': 'NEO',
1473
- 'ftmscan.com': 'FTM',
1474
- 'explorer.gochain.io': 'GO',
1475
- 'block.gxb.io': 'GXS',
1476
- 'hash-hash.info': 'HBAR',
1477
- 'www.hiveblockexplorer.com': 'HIVE',
1478
- 'explorer.helium.com': 'HNT',
1479
- 'tracker.icon.foundation': 'ICX',
1480
- 'www.iostabc.com': 'IOST',
1481
- 'explorer.iota.org': 'IOTA',
1482
- 'iotexscan.io': 'IOTX',
1483
- 'irishub.iobscan.io': 'IRIS',
1484
- 'kava.mintscan.io': 'KAVA',
1485
- 'scope.klaytn.com': 'KLAY',
1486
- 'kmdexplorer.io': 'KMD',
1487
- 'kusama.subscan.io': 'KSM',
1488
- 'explorer.lto.network': 'LTO',
1489
- 'polygonscan.com': 'POLYGON',
1490
- 'explorer.ont.io': 'ONT',
1491
- 'minaexplorer.com': 'MINA',
1492
- 'nanolooker.com': 'NANO',
1493
- 'explorer.nebulas.io': 'NAS',
1494
- 'explorer.nbs.plus': 'NBS',
1495
- 'explorer.nebl.io': 'NEBL',
1496
- 'nulscan.io': 'NULS',
1497
- 'nxscan.com': 'NXS',
1498
- 'explorer.harmony.one': 'ONE',
1499
- 'explorer.poa.network': 'POA',
1500
- 'qtum.info': 'QTUM',
1501
- 'explorer.rsk.co': 'RSK',
1502
- 'www.oasisscan.com': 'ROSE',
1503
- 'ravencoin.network': 'RVN',
1504
- 'sc.tokenview.com': 'SC',
1505
- 'secretnodes.com': 'SCRT',
1506
- 'explorer.skycoin.com': 'SKY',
1507
- 'steemscan.com': 'STEEM',
1508
- 'explorer.stacks.co': 'STX',
1509
- 'www.thetascan.io': 'THETA',
1510
- 'scan.tomochain.com': 'TOMO',
1511
- 'explore.vechain.org': 'VET',
1512
- 'explorer.vite.net': 'VITE',
1513
- 'www.wanscan.org': 'WAN',
1514
- 'wavesexplorer.com': 'WAVES',
1515
- 'wax.eosx.io': 'WAXP',
1516
- 'waltonchain.pro': 'WTC',
1517
- 'chain.nem.ninja': 'XEM',
1518
- 'verge-blockchain.info': 'XVG',
1519
- 'explorer.yoyow.org': 'YOYOW',
1520
- 'explorer.zcha.in': 'ZEC',
1521
- 'explorer.zensystem.io': 'ZEN',
1334
+ 'SOL': 'SOL', // temporary fix for SPL definition
1522
1335
  },
1523
1336
  'impliedNetworks': {
1524
1337
  'ETH': { 'ERC20': 'ETH' },
@@ -9258,43 +9071,19 @@ export default class binance extends Exchange {
9258
9071
  parseDepositAddress(response, currency = undefined) {
9259
9072
  //
9260
9073
  // {
9261
- // "currency": "XRP",
9074
+ // "coin": "XRP",
9262
9075
  // "address": "rEb8TK3gBgk5auZkwc6sHnwrGVJH8DuaLh",
9263
9076
  // "tag": "108618262",
9264
- // "info": {
9265
- // "coin": "XRP",
9266
- // "address": "rEb8TK3gBgk5auZkwc6sHnwrGVJH8DuaLh",
9267
- // "tag": "108618262",
9268
- // "url": "https://bithomp.com/explorer/rEb8TK3gBgk5auZkwc6sHnwrGVJH8DuaLh"
9269
- // }
9077
+ // "url": "https://bithomp.com/explorer/rEb8TK3gBgk5auZkwc6sHnwrGVJH8DuaLh"
9270
9078
  // }
9271
9079
  //
9272
- const info = this.safeDict(response, 'info', {});
9273
- const url = this.safeString(info, 'url');
9080
+ const url = this.safeString(response, 'url');
9274
9081
  const address = this.safeString(response, 'address');
9275
9082
  const currencyId = this.safeString(response, 'currency');
9276
9083
  const code = this.safeCurrencyCode(currencyId, currency);
9277
- let impliedNetwork = undefined;
9278
- if (url !== undefined) {
9279
- const reverseNetworks = this.safeDict(this.options, 'reverseNetworks', {});
9280
- const parts = url.split('/');
9281
- let topLevel = this.safeString(parts, 2);
9282
- if ((topLevel === 'blockchair.com') || (topLevel === 'viewblock.io')) {
9283
- const subLevel = this.safeString(parts, 3);
9284
- if (subLevel !== undefined) {
9285
- topLevel = topLevel + '/' + subLevel;
9286
- }
9287
- }
9288
- impliedNetwork = this.safeString(reverseNetworks, topLevel);
9289
- const impliedNetworks = this.safeDict(this.options, 'impliedNetworks', {
9290
- 'ETH': { 'ERC20': 'ETH' },
9291
- 'TRX': { 'TRC20': 'TRX' },
9292
- });
9293
- if (code in impliedNetworks) {
9294
- const conversion = this.safeDict(impliedNetworks, code, {});
9295
- impliedNetwork = this.safeString(conversion, impliedNetwork, impliedNetwork);
9296
- }
9297
- }
9084
+ // deposit-address endpoint provides only network url (not network ID/CODE)
9085
+ // so we should map the url to network (their data is inside currencies)
9086
+ const networkCode = this.getNetworkCodeByNetworkUrl(code, url);
9298
9087
  let tag = this.safeString(response, 'tag', '');
9299
9088
  if (tag.length === 0) {
9300
9089
  tag = undefined;
@@ -9303,7 +9092,7 @@ export default class binance extends Exchange {
9303
9092
  return {
9304
9093
  'info': response,
9305
9094
  'currency': code,
9306
- 'network': impliedNetwork,
9095
+ 'network': networkCode,
9307
9096
  'address': address,
9308
9097
  'tag': tag,
9309
9098
  };
@@ -12073,6 +11862,41 @@ export default class binance extends Exchange {
12073
11862
  };
12074
11863
  return this.safeString(ledgerType, type, type);
12075
11864
  }
11865
+ getNetworkCodeByNetworkUrl(currencyCode, depositUrl = undefined) {
11866
+ // depositUrl is like : https://bscscan.com/address/0xEF238AB229342849..
11867
+ if (depositUrl === undefined) {
11868
+ return undefined;
11869
+ }
11870
+ let networkCode = undefined;
11871
+ const currency = this.currency(currencyCode);
11872
+ const networks = this.safeDict(currency, 'networks', {});
11873
+ const networkCodes = Object.keys(networks);
11874
+ for (let i = 0; i < networkCodes.length; i++) {
11875
+ const currentNetworkCode = networkCodes[i];
11876
+ const info = this.safeDict(networks[currentNetworkCode], 'info', {});
11877
+ const siteUrl = this.safeString(info, 'contractAddressUrl');
11878
+ // check if url matches the field's value
11879
+ if (siteUrl !== undefined && depositUrl.startsWith(this.getBaseDomainFromUrl(siteUrl))) {
11880
+ networkCode = currentNetworkCode;
11881
+ }
11882
+ }
11883
+ return networkCode;
11884
+ }
11885
+ getBaseDomainFromUrl(url) {
11886
+ if (url === undefined) {
11887
+ return undefined;
11888
+ }
11889
+ const urlParts = url.split('/');
11890
+ const scheme = this.safeString(urlParts, 0);
11891
+ if (scheme === undefined) {
11892
+ return undefined;
11893
+ }
11894
+ const domain = this.safeString(urlParts, 2);
11895
+ if (domain === undefined) {
11896
+ return undefined;
11897
+ }
11898
+ return scheme + '//' + domain + '/';
11899
+ }
12076
11900
  sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
12077
11901
  const urls = this.urls;
12078
11902
  if (!(api in urls['api'])) {
package/js/src/bitget.js CHANGED
@@ -3281,7 +3281,7 @@ export default class bitget extends Exchange {
3281
3281
  }
3282
3282
  }
3283
3283
  else {
3284
- request['businessType'] = 'contract';
3284
+ request['businessType'] = 'mix';
3285
3285
  }
3286
3286
  const response = await this.privateCommonGetV2CommonTradeRate(this.extend(request, params));
3287
3287
  //
package/js/src/bitopro.js CHANGED
@@ -25,19 +25,29 @@ export default class bitopro extends Exchange {
25
25
  'swap': false,
26
26
  'future': false,
27
27
  'option': false,
28
+ 'addMargin': false,
29
+ 'borrowCrossMargin': false,
30
+ 'borrowIsolatedMargin': false,
31
+ 'borrowMargin': false,
28
32
  'cancelAllOrders': true,
29
33
  'cancelOrder': true,
30
34
  'cancelOrders': true,
31
35
  'closeAllPositions': false,
32
36
  'closePosition': false,
33
37
  'createOrder': true,
38
+ 'createOrderWithTakeProfitAndStopLoss': false,
39
+ 'createOrderWithTakeProfitAndStopLossWs': false,
34
40
  'createReduceOnlyOrder': false,
35
41
  'createStopOrder': true,
36
42
  'createTriggerOrder': true,
37
43
  'editOrder': false,
38
44
  'fetchBalance': true,
45
+ 'fetchBorrowInterest': false,
46
+ 'fetchBorrowRate': false,
39
47
  'fetchBorrowRateHistories': false,
40
48
  'fetchBorrowRateHistory': false,
49
+ 'fetchBorrowRates': false,
50
+ 'fetchBorrowRatesPerSymbol': false,
41
51
  'fetchClosedOrders': true,
42
52
  'fetchCrossBorrowRate': false,
43
53
  'fetchCrossBorrowRates': false,
@@ -48,19 +58,39 @@ export default class bitopro extends Exchange {
48
58
  'fetchDepositWithdrawFee': 'emulated',
49
59
  'fetchDepositWithdrawFees': true,
50
60
  'fetchFundingHistory': false,
61
+ 'fetchFundingInterval': false,
62
+ 'fetchFundingIntervals': false,
51
63
  'fetchFundingRate': false,
52
64
  'fetchFundingRateHistory': false,
53
65
  'fetchFundingRates': false,
66
+ 'fetchGreeks': false,
54
67
  'fetchIndexOHLCV': false,
55
68
  'fetchIsolatedBorrowRate': false,
56
69
  'fetchIsolatedBorrowRates': false,
70
+ 'fetchIsolatedPositions': false,
71
+ 'fetchLeverage': false,
72
+ 'fetchLeverages': false,
73
+ 'fetchLeverageTiers': false,
74
+ 'fetchLiquidations': false,
75
+ 'fetchLongShortRatio': false,
76
+ 'fetchLongShortRatioHistory': false,
77
+ 'fetchMarginAdjustmentHistory': false,
57
78
  'fetchMarginMode': false,
79
+ 'fetchMarginModes': false,
80
+ 'fetchMarketLeverageTiers': false,
58
81
  'fetchMarkets': true,
59
82
  'fetchMarkOHLCV': false,
83
+ 'fetchMarkPrices': false,
84
+ 'fetchMyLiquidations': false,
85
+ 'fetchMySettlementHistory': false,
60
86
  'fetchMyTrades': true,
61
87
  'fetchOHLCV': true,
88
+ 'fetchOpenInterest': false,
62
89
  'fetchOpenInterestHistory': false,
90
+ 'fetchOpenInterests': false,
63
91
  'fetchOpenOrders': true,
92
+ 'fetchOption': false,
93
+ 'fetchOptionChain': false,
64
94
  'fetchOrder': true,
65
95
  'fetchOrderBook': true,
66
96
  'fetchOrders': false,
@@ -73,6 +103,7 @@ export default class bitopro extends Exchange {
73
103
  'fetchPositionsHistory': false,
74
104
  'fetchPositionsRisk': false,
75
105
  'fetchPremiumIndexOHLCV': false,
106
+ 'fetchSettlementHistory': false,
76
107
  'fetchTicker': true,
77
108
  'fetchTickers': true,
78
109
  'fetchTime': false,
@@ -83,10 +114,16 @@ export default class bitopro extends Exchange {
83
114
  'fetchTransactions': false,
84
115
  'fetchTransfer': false,
85
116
  'fetchTransfers': false,
117
+ 'fetchVolatilityHistory': false,
86
118
  'fetchWithdrawal': true,
87
119
  'fetchWithdrawals': true,
120
+ 'reduceMargin': false,
121
+ 'repayCrossMargin': false,
122
+ 'repayIsolatedMargin': false,
88
123
  'setLeverage': false,
124
+ 'setMargin': false,
89
125
  'setMarginMode': false,
126
+ 'setPositionMode': false,
90
127
  'transfer': false,
91
128
  'withdraw': true,
92
129
  },