ccxt 4.2.84 → 4.2.86

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 (168) hide show
  1. package/README.md +5 -5
  2. package/dist/ccxt.browser.js +1226 -1104
  3. package/dist/ccxt.browser.min.js +4 -4
  4. package/dist/cjs/ccxt.js +1 -1
  5. package/dist/cjs/src/ace.js +5 -5
  6. package/dist/cjs/src/ascendex.js +8 -8
  7. package/dist/cjs/src/base/Exchange.js +76 -14
  8. package/dist/cjs/src/bigone.js +12 -12
  9. package/dist/cjs/src/binance.js +23 -35
  10. package/dist/cjs/src/bingx.js +47 -28
  11. package/dist/cjs/src/bit2c.js +1 -1
  12. package/dist/cjs/src/bitbank.js +27 -31
  13. package/dist/cjs/src/bitbns.js +5 -5
  14. package/dist/cjs/src/bitfinex.js +1 -1
  15. package/dist/cjs/src/bitfinex2.js +1 -1
  16. package/dist/cjs/src/bitget.js +30 -24
  17. package/dist/cjs/src/bithumb.js +5 -5
  18. package/dist/cjs/src/bitmart.js +16 -16
  19. package/dist/cjs/src/bitopro.js +1 -1
  20. package/dist/cjs/src/bitrue.js +4 -4
  21. package/dist/cjs/src/bitso.js +5 -5
  22. package/dist/cjs/src/bitstamp.js +1 -1
  23. package/dist/cjs/src/bitteam.js +8 -8
  24. package/dist/cjs/src/bl3p.js +1 -1
  25. package/dist/cjs/src/btcturk.js +6 -6
  26. package/dist/cjs/src/bybit.js +31 -95
  27. package/dist/cjs/src/coincheck.js +4 -4
  28. package/dist/cjs/src/coinex.js +408 -262
  29. package/dist/cjs/src/coinlist.js +7 -7
  30. package/dist/cjs/src/coinmate.js +4 -4
  31. package/dist/cjs/src/coinmetro.js +3 -3
  32. package/dist/cjs/src/coinone.js +5 -5
  33. package/dist/cjs/src/coinspot.js +2 -2
  34. package/dist/cjs/src/cryptocom.js +17 -17
  35. package/dist/cjs/src/currencycom.js +1 -1
  36. package/dist/cjs/src/delta.js +0 -8
  37. package/dist/cjs/src/deribit.js +16 -92
  38. package/dist/cjs/src/digifinex.js +8 -8
  39. package/dist/cjs/src/exmo.js +8 -8
  40. package/dist/cjs/src/gate.js +0 -8
  41. package/dist/cjs/src/hitbtc.js +5 -4
  42. package/dist/cjs/src/hollaex.js +7 -7
  43. package/dist/cjs/src/htx.js +7 -7
  44. package/dist/cjs/src/huobijp.js +3 -3
  45. package/dist/cjs/src/idex.js +12 -13
  46. package/dist/cjs/src/independentreserve.js +2 -2
  47. package/dist/cjs/src/indodax.js +2 -2
  48. package/dist/cjs/src/kraken.js +8 -8
  49. package/dist/cjs/src/krakenfutures.js +6 -6
  50. package/dist/cjs/src/kucoin.js +5 -1
  51. package/dist/cjs/src/kucoinfutures.js +8 -8
  52. package/dist/cjs/src/kuna.js +16 -16
  53. package/dist/cjs/src/latoken.js +2 -2
  54. package/dist/cjs/src/lbank.js +10 -10
  55. package/dist/cjs/src/luno.js +4 -4
  56. package/dist/cjs/src/mercado.js +5 -5
  57. package/dist/cjs/src/mexc.js +6 -6
  58. package/dist/cjs/src/ndax.js +1 -1
  59. package/dist/cjs/src/novadax.js +9 -9
  60. package/dist/cjs/src/oceanex.js +7 -7
  61. package/dist/cjs/src/okcoin.js +16 -14
  62. package/dist/cjs/src/okx.js +23 -31
  63. package/dist/cjs/src/onetrading.js +4 -4
  64. package/dist/cjs/src/p2b.js +7 -7
  65. package/dist/cjs/src/phemex.js +12 -12
  66. package/dist/cjs/src/poloniexfutures.js +5 -5
  67. package/dist/cjs/src/pro/binance.js +167 -121
  68. package/dist/cjs/src/pro/bitget.js +1 -0
  69. package/dist/cjs/src/pro/kucoin.js +6 -7
  70. package/dist/cjs/src/pro/okx.js +19 -2
  71. package/dist/cjs/src/probit.js +11 -11
  72. package/dist/cjs/src/timex.js +7 -7
  73. package/dist/cjs/src/tokocrypto.js +9 -9
  74. package/dist/cjs/src/wavesexchange.js +3 -3
  75. package/dist/cjs/src/whitebit.js +5 -5
  76. package/dist/cjs/src/woo.js +1 -1
  77. package/dist/cjs/src/zaif.js +1 -1
  78. package/dist/cjs/src/zonda.js +7 -7
  79. package/examples/js/cli.js +0 -1
  80. package/examples/ts/cli.ts +0 -1
  81. package/js/ccxt.d.ts +1 -1
  82. package/js/ccxt.js +1 -1
  83. package/js/src/abstract/coinex.d.ts +232 -123
  84. package/js/src/ace.js +5 -5
  85. package/js/src/ascendex.js +8 -8
  86. package/js/src/base/Exchange.d.ts +13 -12
  87. package/js/src/base/Exchange.js +76 -14
  88. package/js/src/bigone.js +12 -12
  89. package/js/src/binance.d.ts +0 -1
  90. package/js/src/binance.js +23 -35
  91. package/js/src/bingx.js +47 -28
  92. package/js/src/bit2c.js +1 -1
  93. package/js/src/bitbank.js +27 -31
  94. package/js/src/bitbns.js +5 -5
  95. package/js/src/bitfinex.js +1 -1
  96. package/js/src/bitfinex2.js +1 -1
  97. package/js/src/bitget.js +30 -24
  98. package/js/src/bithumb.js +5 -5
  99. package/js/src/bitmart.js +16 -16
  100. package/js/src/bitopro.js +1 -1
  101. package/js/src/bitrue.js +4 -4
  102. package/js/src/bitso.js +5 -5
  103. package/js/src/bitstamp.js +1 -1
  104. package/js/src/bitteam.js +8 -8
  105. package/js/src/bl3p.js +1 -1
  106. package/js/src/btcturk.js +6 -6
  107. package/js/src/bybit.d.ts +0 -3
  108. package/js/src/bybit.js +31 -95
  109. package/js/src/coincheck.js +4 -4
  110. package/js/src/coinex.d.ts +1 -1
  111. package/js/src/coinex.js +408 -262
  112. package/js/src/coinlist.js +7 -7
  113. package/js/src/coinmate.js +4 -4
  114. package/js/src/coinmetro.js +3 -3
  115. package/js/src/coinone.js +5 -5
  116. package/js/src/coinspot.js +2 -2
  117. package/js/src/cryptocom.js +17 -17
  118. package/js/src/currencycom.js +1 -1
  119. package/js/src/delta.d.ts +0 -1
  120. package/js/src/delta.js +0 -8
  121. package/js/src/deribit.d.ts +0 -3
  122. package/js/src/deribit.js +16 -92
  123. package/js/src/digifinex.js +8 -8
  124. package/js/src/exmo.js +8 -8
  125. package/js/src/gate.d.ts +0 -1
  126. package/js/src/gate.js +0 -8
  127. package/js/src/hitbtc.js +5 -4
  128. package/js/src/hollaex.js +7 -7
  129. package/js/src/htx.js +7 -7
  130. package/js/src/huobijp.js +3 -3
  131. package/js/src/idex.js +12 -13
  132. package/js/src/independentreserve.js +2 -2
  133. package/js/src/indodax.js +2 -2
  134. package/js/src/kraken.js +8 -8
  135. package/js/src/krakenfutures.js +6 -6
  136. package/js/src/kucoin.js +5 -1
  137. package/js/src/kucoinfutures.js +8 -8
  138. package/js/src/kuna.js +16 -16
  139. package/js/src/latoken.js +2 -2
  140. package/js/src/lbank.js +10 -10
  141. package/js/src/luno.js +4 -4
  142. package/js/src/mercado.js +5 -5
  143. package/js/src/mexc.js +6 -6
  144. package/js/src/ndax.js +1 -1
  145. package/js/src/novadax.js +9 -9
  146. package/js/src/oceanex.js +7 -7
  147. package/js/src/okcoin.js +16 -14
  148. package/js/src/okx.d.ts +0 -1
  149. package/js/src/okx.js +23 -31
  150. package/js/src/onetrading.js +4 -4
  151. package/js/src/p2b.js +7 -7
  152. package/js/src/phemex.js +12 -12
  153. package/js/src/poloniexfutures.js +5 -5
  154. package/js/src/pro/binance.d.ts +5 -1
  155. package/js/src/pro/binance.js +168 -122
  156. package/js/src/pro/bitget.js +1 -0
  157. package/js/src/pro/kucoin.js +6 -7
  158. package/js/src/pro/okx.js +19 -2
  159. package/js/src/probit.js +11 -11
  160. package/js/src/timex.js +7 -7
  161. package/js/src/tokocrypto.js +9 -9
  162. package/js/src/wavesexchange.js +3 -3
  163. package/js/src/whitebit.js +5 -5
  164. package/js/src/woo.js +1 -1
  165. package/js/src/zaif.js +1 -1
  166. package/js/src/zonda.js +7 -7
  167. package/package.json +1 -1
  168. package/skip-tests.json +4 -0
package/js/src/bitso.js CHANGED
@@ -690,7 +690,7 @@ export default class bitso extends Exchange {
690
690
  // ]
691
691
  // }
692
692
  //
693
- const payload = this.safeValue(response, 'payload', []);
693
+ const payload = this.safeList(response, 'payload', []);
694
694
  return this.parseOHLCVs(payload, market, timeframe, since, limit);
695
695
  }
696
696
  parseOHLCV(ohlcv, market = undefined) {
@@ -1249,7 +1249,7 @@ export default class bitso extends Exchange {
1249
1249
  // }
1250
1250
  //
1251
1251
  const transactions = this.safeValue(response, 'payload', []);
1252
- const first = this.safeValue(transactions, 0, {});
1252
+ const first = this.safeDict(transactions, 0, {});
1253
1253
  return this.parseTransaction(first);
1254
1254
  }
1255
1255
  async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1293,7 +1293,7 @@ export default class bitso extends Exchange {
1293
1293
  // }]
1294
1294
  // }
1295
1295
  //
1296
- const transactions = this.safeValue(response, 'payload', []);
1296
+ const transactions = this.safeList(response, 'payload', []);
1297
1297
  return this.parseTransactions(transactions, currency, since, limit, params);
1298
1298
  }
1299
1299
  async fetchDepositAddress(code, params = {}) {
@@ -1476,7 +1476,7 @@ export default class bitso extends Exchange {
1476
1476
  // }
1477
1477
  // }
1478
1478
  //
1479
- const payload = this.safeValue(response, 'payload', {});
1479
+ const payload = this.safeList(response, 'payload', []);
1480
1480
  return this.parseDepositWithdrawFees(payload, codes);
1481
1481
  }
1482
1482
  parseDepositWithdrawFees(response, codes = undefined, currencyIdKey = undefined) {
@@ -1612,7 +1612,7 @@ export default class bitso extends Exchange {
1612
1612
  // }
1613
1613
  //
1614
1614
  const payload = this.safeValue(response, 'payload', []);
1615
- const first = this.safeValue(payload, 0);
1615
+ const first = this.safeDict(payload, 0);
1616
1616
  return this.parseTransaction(first, currency);
1617
1617
  }
1618
1618
  safeNetwork(networkId) {
@@ -1113,7 +1113,7 @@ export default class bitstamp extends Exchange {
1113
1113
  // }
1114
1114
  //
1115
1115
  const data = this.safeValue(response, 'data', {});
1116
- const ohlc = this.safeValue(data, 'ohlc', []);
1116
+ const ohlc = this.safeList(data, 'ohlc', []);
1117
1117
  return this.parseOHLCVs(ohlc, market, timeframe, since, limit);
1118
1118
  }
1119
1119
  parseBalance(response) {
package/js/src/bitteam.js CHANGED
@@ -674,7 +674,7 @@ export default class bitteam extends Exchange {
674
674
  // }
675
675
  //
676
676
  const result = this.safeValue(response, 'result', {});
677
- const data = this.safeValue(result, 'data', []);
677
+ const data = this.safeList(result, 'data', []);
678
678
  return this.parseOHLCVs(data, market, timeframe, since, limit);
679
679
  }
680
680
  parseOHLCV(ohlcv, market = undefined) {
@@ -855,7 +855,7 @@ export default class bitteam extends Exchange {
855
855
  // }
856
856
  //
857
857
  const result = this.safeValue(response, 'result', {});
858
- const orders = this.safeValue(result, 'orders', []);
858
+ const orders = this.safeList(result, 'orders', []);
859
859
  return this.parseOrders(orders, market, since, limit);
860
860
  }
861
861
  async fetchOrder(id, symbol = undefined, params = {}) {
@@ -915,7 +915,7 @@ export default class bitteam extends Exchange {
915
915
  // }
916
916
  // }
917
917
  //
918
- const result = this.safeValue(response, 'result');
918
+ const result = this.safeDict(response, 'result');
919
919
  return this.parseOrder(result, market);
920
920
  }
921
921
  async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1026,7 +1026,7 @@ export default class bitteam extends Exchange {
1026
1026
  // }
1027
1027
  // }
1028
1028
  //
1029
- const order = this.safeValue(response, 'result', {});
1029
+ const order = this.safeDict(response, 'result', {});
1030
1030
  return this.parseOrder(order, market);
1031
1031
  }
1032
1032
  async cancelOrder(id, symbol = undefined, params = {}) {
@@ -1053,7 +1053,7 @@ export default class bitteam extends Exchange {
1053
1053
  // }
1054
1054
  // }
1055
1055
  //
1056
- const result = this.safeValue(response, 'result', {});
1056
+ const result = this.safeDict(response, 'result', {});
1057
1057
  return this.parseOrder(result);
1058
1058
  }
1059
1059
  async cancelAllOrders(symbol = undefined, params = {}) {
@@ -1516,7 +1516,7 @@ export default class bitteam extends Exchange {
1516
1516
  // }
1517
1517
  //
1518
1518
  const result = this.safeValue(response, 'result', {});
1519
- const pair = this.safeValue(result, 'pair', {});
1519
+ const pair = this.safeDict(result, 'pair', {});
1520
1520
  return this.parseTicker(pair, market);
1521
1521
  }
1522
1522
  parseTicker(ticker, market = undefined) {
@@ -1845,7 +1845,7 @@ export default class bitteam extends Exchange {
1845
1845
  // }
1846
1846
  //
1847
1847
  const result = this.safeValue(response, 'result', {});
1848
- const trades = this.safeValue(result, 'trades', []);
1848
+ const trades = this.safeList(result, 'trades', []);
1849
1849
  return this.parseTrades(trades, market, since, limit);
1850
1850
  }
1851
1851
  parseTrade(trade, market = undefined) {
@@ -2148,7 +2148,7 @@ export default class bitteam extends Exchange {
2148
2148
  // }
2149
2149
  //
2150
2150
  const result = this.safeValue(response, 'result', {});
2151
- const transactions = this.safeValue(result, 'transactions', []);
2151
+ const transactions = this.safeList(result, 'transactions', []);
2152
2152
  return this.parseTransactions(transactions, currency, since, limit);
2153
2153
  }
2154
2154
  parseTransaction(transaction, currency = undefined) {
package/js/src/bl3p.js CHANGED
@@ -178,7 +178,7 @@ export default class bl3p extends Exchange {
178
178
  'market': market['id'],
179
179
  };
180
180
  const response = await this.publicGetMarketOrderbook(this.extend(request, params));
181
- const orderbook = this.safeValue(response, 'data');
181
+ const orderbook = this.safeDict(response, 'data');
182
182
  return this.parseOrderBook(orderbook, market['symbol'], undefined, 'bids', 'asks', 'price_int', 'amount_int');
183
183
  }
184
184
  parseTicker(ticker, market = undefined) {
package/js/src/btcturk.js CHANGED
@@ -418,7 +418,7 @@ export default class btcturk extends Exchange {
418
418
  */
419
419
  await this.loadMarkets();
420
420
  const response = await this.publicGetTicker(params);
421
- const tickers = this.safeValue(response, 'data');
421
+ const tickers = this.safeList(response, 'data');
422
422
  return this.parseTickers(tickers, symbols);
423
423
  }
424
424
  async fetchTicker(symbol, params = {}) {
@@ -536,7 +536,7 @@ export default class btcturk extends Exchange {
536
536
  // ]
537
537
  // }
538
538
  //
539
- const data = this.safeValue(response, 'data');
539
+ const data = this.safeList(response, 'data');
540
540
  return this.parseTrades(data, market, since, limit);
541
541
  }
542
542
  parseOHLCV(ohlcv, market = undefined) {
@@ -693,7 +693,7 @@ export default class btcturk extends Exchange {
693
693
  request['newClientOrderId'] = this.uuid();
694
694
  }
695
695
  const response = await this.privatePostOrder(this.extend(request, params));
696
- const data = this.safeValue(response, 'data');
696
+ const data = this.safeDict(response, 'data');
697
697
  return this.parseOrder(data, market);
698
698
  }
699
699
  async cancelOrder(id, symbol = undefined, params = {}) {
@@ -734,7 +734,7 @@ export default class btcturk extends Exchange {
734
734
  const response = await this.privateGetOpenOrders(this.extend(request, params));
735
735
  const data = this.safeValue(response, 'data');
736
736
  const bids = this.safeValue(data, 'bids', []);
737
- const asks = this.safeValue(data, 'asks', []);
737
+ const asks = this.safeList(data, 'asks', []);
738
738
  return this.parseOrders(this.arrayConcat(bids, asks), market, since, limit);
739
739
  }
740
740
  async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -782,7 +782,7 @@ export default class btcturk extends Exchange {
782
782
  // }
783
783
  // ]
784
784
  // }
785
- const data = this.safeValue(response, 'data');
785
+ const data = this.safeList(response, 'data');
786
786
  return this.parseOrders(data, market, since, limit);
787
787
  }
788
788
  parseOrderStatus(status) {
@@ -899,7 +899,7 @@ export default class btcturk extends Exchange {
899
899
  // "code": "0"
900
900
  // }
901
901
  //
902
- const data = this.safeValue(response, 'data');
902
+ const data = this.safeList(response, 'data');
903
903
  return this.parseTrades(data, market, since, limit);
904
904
  }
905
905
  nonce() {
package/js/src/bybit.d.ts CHANGED
@@ -10,9 +10,6 @@ export default class bybit extends Exchange {
10
10
  addPaginationCursorToResult(response: any): any;
11
11
  isUnifiedEnabled(params?: {}): Promise<any[]>;
12
12
  upgradeUnifiedTradeAccount(params?: {}): Promise<any>;
13
- convertExpireDate(date: any): string;
14
- convertExpireDateToMarketIdDate(date: any): any;
15
- convertMarketIdExpireDate(date: any): string;
16
13
  createExpiredOptionMarket(symbol: string): MarketInterface;
17
14
  safeMarket(marketId?: Str, market?: Market, delimiter?: Str, marketType?: Str): MarketInterface;
18
15
  getBybitType(method: any, market: any, params?: {}): any[];
package/js/src/bybit.js CHANGED
@@ -1123,82 +1123,6 @@ export default class bybit extends Exchange {
1123
1123
  async upgradeUnifiedTradeAccount(params = {}) {
1124
1124
  return await this.privatePostV5AccountUpgradeToUta(params);
1125
1125
  }
1126
- convertExpireDate(date) {
1127
- // parse YYMMDD to timestamp
1128
- const year = date.slice(0, 2);
1129
- const month = date.slice(2, 4);
1130
- const day = date.slice(4, 6);
1131
- const reconstructedDate = '20' + year + '-' + month + '-' + day + 'T00:00:00Z';
1132
- return reconstructedDate;
1133
- }
1134
- convertExpireDateToMarketIdDate(date) {
1135
- // parse 231229 to 29DEC23
1136
- const year = date.slice(0, 2);
1137
- const monthRaw = date.slice(2, 4);
1138
- let month = undefined;
1139
- const day = date.slice(4, 6);
1140
- if (monthRaw === '01') {
1141
- month = 'JAN';
1142
- }
1143
- else if (monthRaw === '02') {
1144
- month = 'FEB';
1145
- }
1146
- else if (monthRaw === '03') {
1147
- month = 'MAR';
1148
- }
1149
- else if (monthRaw === '04') {
1150
- month = 'APR';
1151
- }
1152
- else if (monthRaw === '05') {
1153
- month = 'MAY';
1154
- }
1155
- else if (monthRaw === '06') {
1156
- month = 'JUN';
1157
- }
1158
- else if (monthRaw === '07') {
1159
- month = 'JUL';
1160
- }
1161
- else if (monthRaw === '08') {
1162
- month = 'AUG';
1163
- }
1164
- else if (monthRaw === '09') {
1165
- month = 'SEP';
1166
- }
1167
- else if (monthRaw === '10') {
1168
- month = 'OCT';
1169
- }
1170
- else if (monthRaw === '11') {
1171
- month = 'NOV';
1172
- }
1173
- else if (monthRaw === '12') {
1174
- month = 'DEC';
1175
- }
1176
- const reconstructedDate = day + month + year;
1177
- return reconstructedDate;
1178
- }
1179
- convertMarketIdExpireDate(date) {
1180
- // parse 22JAN23 to 230122
1181
- const monthMappping = {
1182
- 'JAN': '01',
1183
- 'FEB': '02',
1184
- 'MAR': '03',
1185
- 'APR': '04',
1186
- 'MAY': '05',
1187
- 'JUN': '06',
1188
- 'JUL': '07',
1189
- 'AUG': '08',
1190
- 'SEP': '09',
1191
- 'OCT': '10',
1192
- 'NOV': '11',
1193
- 'DEC': '12',
1194
- };
1195
- const year = date.slice(0, 2);
1196
- const monthName = date.slice(2, 5);
1197
- const month = this.safeString(monthMappping, monthName);
1198
- const day = date.slice(5, 7);
1199
- const reconstructedDate = day + month + year;
1200
- return reconstructedDate;
1201
- }
1202
1126
  createExpiredOptionMarket(symbol) {
1203
1127
  // support expired option contracts
1204
1128
  const quote = 'USD';
@@ -2093,7 +2017,7 @@ export default class bybit extends Exchange {
2093
2017
  //
2094
2018
  const result = this.safeValue(response, 'result', []);
2095
2019
  const tickers = this.safeValue(result, 'list', []);
2096
- const rawTicker = this.safeValue(tickers, 0);
2020
+ const rawTicker = this.safeDict(tickers, 0);
2097
2021
  return this.parseTicker(rawTicker, market);
2098
2022
  }
2099
2023
  async fetchTickers(symbols = undefined, params = {}) {
@@ -2104,6 +2028,7 @@ export default class bybit extends Exchange {
2104
2028
  * @see https://bybit-exchange.github.io/docs/v5/market/tickers
2105
2029
  * @param {string[]} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
2106
2030
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2031
+ * @param {string} [params.subType] *contract only* 'linear', 'inverse'
2107
2032
  * @returns {object} an array of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
2108
2033
  */
2109
2034
  await this.loadMarkets();
@@ -2142,12 +2067,17 @@ export default class bybit extends Exchange {
2142
2067
  };
2143
2068
  let type = undefined;
2144
2069
  [type, params] = this.handleMarketTypeAndParams('fetchTickers', market, params);
2145
- if (type === 'spot') {
2070
+ // Calls like `.fetchTickers (undefined, {subType:'inverse'})` should be supported for this exchange, so
2071
+ // as "options.defaultSubType" is also set in exchange options, we should consider `params.subType`
2072
+ // with higher priority and only default to spot, if `subType` is not set in params
2073
+ const passedSubType = this.safeString(params, 'subType');
2074
+ let subType = undefined;
2075
+ [subType, params] = this.handleSubTypeAndParams('fetchTickers', market, params, 'linear');
2076
+ // only if passedSubType is undefined, then use spot
2077
+ if (type === 'spot' && passedSubType === undefined) {
2146
2078
  request['category'] = 'spot';
2147
2079
  }
2148
- else if (type === 'swap' || type === 'future') {
2149
- let subType = undefined;
2150
- [subType, params] = this.handleSubTypeAndParams('fetchTickers', market, params, 'linear');
2080
+ else if (type === 'swap' || type === 'future' || subType !== undefined) {
2151
2081
  request['category'] = subType;
2152
2082
  }
2153
2083
  else if (type === 'option') {
@@ -2193,7 +2123,7 @@ export default class bybit extends Exchange {
2193
2123
  // }
2194
2124
  //
2195
2125
  const result = this.safeValue(response, 'result', {});
2196
- const tickerList = this.safeValue(result, 'list', []);
2126
+ const tickerList = this.safeList(result, 'list', []);
2197
2127
  return this.parseTickers(tickerList, parsedSymbols);
2198
2128
  }
2199
2129
  parseOHLCV(ohlcv, market = undefined) {
@@ -2332,7 +2262,7 @@ export default class bybit extends Exchange {
2332
2262
  // }
2333
2263
  //
2334
2264
  const result = this.safeValue(response, 'result', {});
2335
- const ohlcvs = this.safeValue(result, 'list', []);
2265
+ const ohlcvs = this.safeList(result, 'list', []);
2336
2266
  return this.parseOHLCVs(ohlcvs, market, timeframe, since, limit);
2337
2267
  }
2338
2268
  parseFundingRate(ticker, market = undefined) {
@@ -2809,7 +2739,7 @@ export default class bybit extends Exchange {
2809
2739
  // }
2810
2740
  //
2811
2741
  const result = this.safeValue(response, 'result', {});
2812
- const trades = this.safeValue(result, 'list', []);
2742
+ const trades = this.safeList(result, 'list', []);
2813
2743
  return this.parseTrades(trades, market, since, limit);
2814
2744
  }
2815
2745
  async fetchOrderBook(symbol, limit = undefined, params = {}) {
@@ -3561,7 +3491,7 @@ export default class bybit extends Exchange {
3561
3491
  // "time": 1672211918471
3562
3492
  // }
3563
3493
  //
3564
- const order = this.safeValue(response, 'result', {});
3494
+ const order = this.safeDict(response, 'result', {});
3565
3495
  return this.parseOrder(order, market);
3566
3496
  }
3567
3497
  createOrderRequest(symbol, type, side, amount, price = undefined, params = {}, isUTA = true) {
@@ -4015,7 +3945,7 @@ export default class bybit extends Exchange {
4015
3945
  // "tpTriggerBy":"UNKNOWN"
4016
3946
  // }
4017
3947
  //
4018
- const order = this.safeValue(response, 'result', {});
3948
+ const order = this.safeDict(response, 'result', {});
4019
3949
  return this.parseOrder(order, market);
4020
3950
  }
4021
3951
  async editUsdcOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
@@ -4071,7 +4001,7 @@ export default class bybit extends Exchange {
4071
4001
  // "retExtMap": {}
4072
4002
  // }
4073
4003
  //
4074
- const result = this.safeValue(response, 'result', {});
4004
+ const result = this.safeDict(response, 'result', {});
4075
4005
  return this.parseOrder(result, market);
4076
4006
  }
4077
4007
  async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
@@ -4241,7 +4171,7 @@ export default class bybit extends Exchange {
4241
4171
  // "retExtMap": {}
4242
4172
  // }
4243
4173
  //
4244
- const result = this.safeValue(response, 'result', {});
4174
+ const result = this.safeDict(response, 'result', {});
4245
4175
  return this.parseOrder(result, market);
4246
4176
  }
4247
4177
  async cancelOrder(id, symbol = undefined, params = {}) {
@@ -4309,7 +4239,7 @@ export default class bybit extends Exchange {
4309
4239
  // "time": 1672217377164
4310
4240
  // }
4311
4241
  //
4312
- const result = this.safeValue(response, 'result', {});
4242
+ const result = this.safeDict(response, 'result', {});
4313
4243
  return this.parseOrder(result, market);
4314
4244
  }
4315
4245
  async cancelOrders(ids, symbol = undefined, params = {}) {
@@ -4606,7 +4536,7 @@ export default class bybit extends Exchange {
4606
4536
  // }
4607
4537
  //
4608
4538
  const result = this.safeValue(response, 'result', {});
4609
- const data = this.safeValue(result, 'dataList', []);
4539
+ const data = this.safeList(result, 'dataList', []);
4610
4540
  return this.parseOrders(data, market, since, limit);
4611
4541
  }
4612
4542
  async fetchOrderClassic(id, symbol = undefined, params = {}) {
@@ -5234,7 +5164,7 @@ export default class bybit extends Exchange {
5234
5164
  // }
5235
5165
  //
5236
5166
  const result = this.safeValue(response, 'result', {});
5237
- const dataList = this.safeValue(result, 'dataList', []);
5167
+ const dataList = this.safeList(result, 'dataList', []);
5238
5168
  return this.parseTrades(dataList, market, since, limit);
5239
5169
  }
5240
5170
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -5437,7 +5367,7 @@ export default class bybit extends Exchange {
5437
5367
  const chains = this.safeValue(result, 'chains', []);
5438
5368
  const chainsIndexedById = this.indexBy(chains, 'chain');
5439
5369
  const selectedNetworkId = this.selectNetworkIdFromRawNetworks(code, networkCode, chainsIndexedById);
5440
- const addressObject = this.safeValue(chainsIndexedById, selectedNetworkId, {});
5370
+ const addressObject = this.safeDict(chainsIndexedById, selectedNetworkId, {});
5441
5371
  return this.parseDepositAddress(addressObject, currency);
5442
5372
  }
5443
5373
  async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
@@ -5996,7 +5926,7 @@ export default class bybit extends Exchange {
5996
5926
  // "time": "1666892894902"
5997
5927
  // }
5998
5928
  //
5999
- const result = this.safeValue(response, 'result', {});
5929
+ const result = this.safeDict(response, 'result', {});
6000
5930
  return this.parseTransaction(result, currency);
6001
5931
  }
6002
5932
  async fetchPosition(symbol, params = {}) {
@@ -6405,6 +6335,12 @@ export default class bybit extends Exchange {
6405
6335
  if (timestamp === undefined) {
6406
6336
  timestamp = this.safeIntegerN(position, ['updatedTime', 'updatedAt']);
6407
6337
  }
6338
+ const tradeMode = this.safeInteger(position, 'tradeMode', 0);
6339
+ let marginMode = undefined;
6340
+ if ((!this.options['enableUnifiedAccount']) || (this.options['enableUnifiedAccount'] && market['inverse'])) {
6341
+ // tradeMode would work for classic and UTA(inverse)
6342
+ marginMode = (tradeMode === 1) ? 'isolated' : 'cross';
6343
+ }
6408
6344
  let collateralString = this.safeString(position, 'positionBalance');
6409
6345
  const entryPrice = this.omitZero(this.safeString2(position, 'entryPrice', 'avgPrice'));
6410
6346
  const liquidationPrice = this.omitZero(this.safeString(position, 'liqPrice'));
@@ -6468,7 +6404,7 @@ export default class bybit extends Exchange {
6468
6404
  'markPrice': this.safeNumber(position, 'markPrice'),
6469
6405
  'lastPrice': undefined,
6470
6406
  'collateral': this.parseNumber(collateralString),
6471
- 'marginMode': undefined,
6407
+ 'marginMode': marginMode,
6472
6408
  'side': side,
6473
6409
  'percentage': undefined,
6474
6410
  'stopLossPrice': this.safeNumber2(position, 'stop_loss', 'stopLoss'),
@@ -7530,7 +7466,7 @@ export default class bybit extends Exchange {
7530
7466
  // }
7531
7467
  //
7532
7468
  const data = this.safeValue(response, 'result', {});
7533
- const rows = this.safeValue(data, 'rows', []);
7469
+ const rows = this.safeList(data, 'rows', []);
7534
7470
  return this.parseDepositWithdrawFees(rows, codes, 'coin');
7535
7471
  }
7536
7472
  async fetchSettlementHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -488,7 +488,7 @@ export default class coincheck extends Exchange {
488
488
  // ]
489
489
  // }
490
490
  //
491
- const transactions = this.safeValue(response, 'data', []);
491
+ const transactions = this.safeList(response, 'data', []);
492
492
  return this.parseTrades(transactions, market, since, limit);
493
493
  }
494
494
  async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
@@ -522,7 +522,7 @@ export default class coincheck extends Exchange {
522
522
  // "created_at": "2021-12-08T14:10:33.000Z"
523
523
  // }
524
524
  //
525
- const data = this.safeValue(response, 'data', []);
525
+ const data = this.safeList(response, 'data', []);
526
526
  return this.parseTrades(data, market, since, limit);
527
527
  }
528
528
  async fetchTradingFees(params = {}) {
@@ -671,7 +671,7 @@ export default class coincheck extends Exchange {
671
671
  // }
672
672
  // ]
673
673
  // }
674
- const data = this.safeValue(response, 'deposits', []);
674
+ const data = this.safeList(response, 'deposits', []);
675
675
  return this.parseTransactions(data, currency, since, limit, { 'type': 'deposit' });
676
676
  }
677
677
  async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
@@ -717,7 +717,7 @@ export default class coincheck extends Exchange {
717
717
  // }
718
718
  // ]
719
719
  // }
720
- const data = this.safeValue(response, 'data', []);
720
+ const data = this.safeList(response, 'data', []);
721
721
  return this.parseTransactions(data, currency, since, limit, { 'type': 'withdrawal' });
722
722
  }
723
723
  parseTransactionStatus(status) {
@@ -211,7 +211,7 @@ export default class coinex extends Exchange {
211
211
  parseLeverage(leverage: any, market?: any): Leverage;
212
212
  handleMarginModeAndParams(methodName: any, params?: {}, defaultValue?: any): any[];
213
213
  nonce(): number;
214
- sign(path: any, api?: string, method?: string, params?: {}, headers?: any, body?: any): {
214
+ sign(path: any, api?: any[], method?: string, params?: {}, headers?: any, body?: any): {
215
215
  url: string;
216
216
  method: string;
217
217
  body: any;