ccxt 4.1.95 → 4.1.97

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 (198) hide show
  1. package/README.md +3 -3
  2. package/build.sh +16 -16
  3. package/dist/ccxt.browser.js +1570 -1401
  4. package/dist/ccxt.browser.min.js +3 -3
  5. package/dist/cjs/ccxt.js +1 -1
  6. package/dist/cjs/src/ace.js +1 -1
  7. package/dist/cjs/src/ascendex.js +1 -1
  8. package/dist/cjs/src/base/Exchange.js +6 -5
  9. package/dist/cjs/src/base/errors.js +8 -1
  10. package/dist/cjs/src/bigone.js +2 -2
  11. package/dist/cjs/src/binance.js +145 -135
  12. package/dist/cjs/src/bingx.js +50 -8
  13. package/dist/cjs/src/bit2c.js +2 -3
  14. package/dist/cjs/src/bitfinex.js +1 -1
  15. package/dist/cjs/src/bitfinex2.js +3 -4
  16. package/dist/cjs/src/bitflyer.js +2 -2
  17. package/dist/cjs/src/bitmart.js +2 -2
  18. package/dist/cjs/src/bitmex.js +2 -2
  19. package/dist/cjs/src/bitopro.js +1 -1
  20. package/dist/cjs/src/bitpanda.js +1 -1
  21. package/dist/cjs/src/bitvavo.js +1 -1
  22. package/dist/cjs/src/blockchaincom.js +1 -1
  23. package/dist/cjs/src/btcalpha.js +2 -2
  24. package/dist/cjs/src/btcbox.js +3 -4
  25. package/dist/cjs/src/btcmarkets.js +2 -2
  26. package/dist/cjs/src/btcturk.js +1 -1
  27. package/dist/cjs/src/bybit.js +2 -2
  28. package/dist/cjs/src/cex.js +1 -1
  29. package/dist/cjs/src/coinbase.js +11 -5
  30. package/dist/cjs/src/coinbasepro.js +2 -2
  31. package/dist/cjs/src/coinex.js +1 -1
  32. package/dist/cjs/src/coinlist.js +1 -1
  33. package/dist/cjs/src/cryptocom.js +2 -1
  34. package/dist/cjs/src/delta.js +25 -0
  35. package/dist/cjs/src/deribit.js +1 -1
  36. package/dist/cjs/src/digifinex.js +1 -1
  37. package/dist/cjs/src/gate.js +3 -3
  38. package/dist/cjs/src/hitbtc.js +1 -1
  39. package/dist/cjs/src/hollaex.js +2 -2
  40. package/dist/cjs/src/htx.js +1 -1
  41. package/dist/cjs/src/huobijp.js +2 -2
  42. package/dist/cjs/src/idex.js +1 -1
  43. package/dist/cjs/src/independentreserve.js +1 -1
  44. package/dist/cjs/src/kraken.js +47 -46
  45. package/dist/cjs/src/krakenfutures.js +53 -26
  46. package/dist/cjs/src/kucoin.js +74 -4
  47. package/dist/cjs/src/kucoinfutures.js +2 -2
  48. package/dist/cjs/src/kuna.js +1 -1
  49. package/dist/cjs/src/latoken.js +1 -1
  50. package/dist/cjs/src/luno.js +2 -2
  51. package/dist/cjs/src/lykke.js +1 -1
  52. package/dist/cjs/src/mexc.js +2 -2
  53. package/dist/cjs/src/ndax.js +1 -1
  54. package/dist/cjs/src/novadax.js +2 -2
  55. package/dist/cjs/src/oceanex.js +1 -1
  56. package/dist/cjs/src/okcoin.js +1 -1
  57. package/dist/cjs/src/okx.js +1 -1
  58. package/dist/cjs/src/poloniexfutures.js +1 -1
  59. package/dist/cjs/src/pro/alpaca.js +1 -1
  60. package/dist/cjs/src/pro/ascendex.js +1 -1
  61. package/dist/cjs/src/pro/binance.js +4 -5
  62. package/dist/cjs/src/pro/bingx.js +6 -3
  63. package/dist/cjs/src/pro/bitfinex.js +3 -4
  64. package/dist/cjs/src/pro/bitfinex2.js +1 -1
  65. package/dist/cjs/src/pro/bitmex.js +1 -1
  66. package/dist/cjs/src/pro/bitpanda.js +1 -1
  67. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  68. package/dist/cjs/src/pro/bybit.js +2 -2
  69. package/dist/cjs/src/pro/cex.js +1 -1
  70. package/dist/cjs/src/pro/coinbase.js +1 -1
  71. package/dist/cjs/src/pro/coinbasepro.js +1 -1
  72. package/dist/cjs/src/pro/deribit.js +1 -1
  73. package/dist/cjs/src/pro/gate.js +3 -3
  74. package/dist/cjs/src/pro/gemini.js +1 -1
  75. package/dist/cjs/src/pro/hollaex.js +1 -1
  76. package/dist/cjs/src/pro/htx.js +1 -1
  77. package/dist/cjs/src/pro/idex.js +1 -1
  78. package/dist/cjs/src/pro/kraken.js +3 -4
  79. package/dist/cjs/src/pro/krakenfutures.js +1 -1
  80. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  81. package/dist/cjs/src/pro/mexc.js +1 -1
  82. package/dist/cjs/src/pro/okcoin.js +1 -1
  83. package/dist/cjs/src/pro/okx.js +2 -2
  84. package/dist/cjs/src/pro/phemex.js +1 -1
  85. package/dist/cjs/src/pro/poloniexfutures.js +1 -1
  86. package/dist/cjs/src/pro/woo.js +2 -3
  87. package/dist/cjs/src/probit.js +1 -1
  88. package/dist/cjs/src/timex.js +1 -1
  89. package/dist/cjs/src/tokocrypto.js +1 -1
  90. package/dist/cjs/src/upbit.js +1 -1
  91. package/dist/cjs/src/wavesexchange.js +1 -1
  92. package/dist/cjs/src/whitebit.js +1 -1
  93. package/dist/cjs/src/woo.js +1 -1
  94. package/dist/cjs/src/zaif.js +1 -1
  95. package/js/ccxt.d.ts +1 -1
  96. package/js/ccxt.js +1 -1
  97. package/js/src/abstract/bingx.d.ts +2 -0
  98. package/js/src/abstract/kucoin.d.ts +12 -0
  99. package/js/src/abstract/kucoinfutures.d.ts +12 -1
  100. package/js/src/ace.js +1 -1
  101. package/js/src/ascendex.js +1 -1
  102. package/js/src/base/Exchange.d.ts +1 -1
  103. package/js/src/base/Exchange.js +7 -6
  104. package/js/src/base/errorHierarchy.d.ts +1 -0
  105. package/js/src/base/errorHierarchy.js +1 -0
  106. package/js/src/base/errors.d.ts +5 -1
  107. package/js/src/base/errors.js +8 -2
  108. package/js/src/bigone.js +2 -2
  109. package/js/src/binance.js +145 -135
  110. package/js/src/bingx.d.ts +1 -0
  111. package/js/src/bingx.js +50 -8
  112. package/js/src/bit2c.js +2 -3
  113. package/js/src/bitfinex.js +1 -1
  114. package/js/src/bitfinex2.js +3 -4
  115. package/js/src/bitflyer.js +2 -2
  116. package/js/src/bitmart.js +2 -2
  117. package/js/src/bitmex.js +2 -2
  118. package/js/src/bitopro.js +1 -1
  119. package/js/src/bitpanda.js +1 -1
  120. package/js/src/bitso.d.ts +1 -1
  121. package/js/src/bitvavo.js +1 -1
  122. package/js/src/blockchaincom.js +1 -1
  123. package/js/src/btcalpha.js +2 -2
  124. package/js/src/btcbox.js +3 -4
  125. package/js/src/btcmarkets.js +2 -2
  126. package/js/src/btcturk.js +1 -1
  127. package/js/src/bybit.js +2 -2
  128. package/js/src/cex.js +1 -1
  129. package/js/src/coinbase.js +11 -5
  130. package/js/src/coinbasepro.js +2 -2
  131. package/js/src/coinex.js +1 -1
  132. package/js/src/coinlist.js +1 -1
  133. package/js/src/cryptocom.js +2 -1
  134. package/js/src/delta.d.ts +5 -4
  135. package/js/src/delta.js +25 -0
  136. package/js/src/deribit.js +1 -1
  137. package/js/src/digifinex.js +1 -1
  138. package/js/src/gate.js +3 -3
  139. package/js/src/hitbtc.js +1 -1
  140. package/js/src/hollaex.js +2 -2
  141. package/js/src/htx.js +1 -1
  142. package/js/src/huobijp.js +2 -2
  143. package/js/src/idex.js +1 -1
  144. package/js/src/independentreserve.js +1 -1
  145. package/js/src/kraken.js +47 -46
  146. package/js/src/krakenfutures.js +53 -26
  147. package/js/src/kucoin.d.ts +3 -0
  148. package/js/src/kucoin.js +74 -4
  149. package/js/src/kucoinfutures.js +2 -2
  150. package/js/src/kuna.js +1 -1
  151. package/js/src/latoken.js +1 -1
  152. package/js/src/luno.js +2 -2
  153. package/js/src/lykke.js +1 -1
  154. package/js/src/mexc.js +2 -2
  155. package/js/src/ndax.js +1 -1
  156. package/js/src/novadax.js +2 -2
  157. package/js/src/oceanex.js +1 -1
  158. package/js/src/okcoin.js +1 -1
  159. package/js/src/okx.js +1 -1
  160. package/js/src/poloniexfutures.js +1 -1
  161. package/js/src/pro/alpaca.js +1 -1
  162. package/js/src/pro/ascendex.js +1 -1
  163. package/js/src/pro/binance.js +4 -5
  164. package/js/src/pro/bingx.js +6 -3
  165. package/js/src/pro/bitfinex.js +3 -4
  166. package/js/src/pro/bitfinex2.js +1 -1
  167. package/js/src/pro/bitmex.js +1 -1
  168. package/js/src/pro/bitpanda.js +1 -1
  169. package/js/src/pro/blockchaincom.js +1 -1
  170. package/js/src/pro/bybit.js +2 -2
  171. package/js/src/pro/cex.js +1 -1
  172. package/js/src/pro/coinbase.js +1 -1
  173. package/js/src/pro/coinbasepro.js +1 -1
  174. package/js/src/pro/deribit.js +1 -1
  175. package/js/src/pro/gate.js +3 -3
  176. package/js/src/pro/gemini.js +1 -1
  177. package/js/src/pro/hollaex.js +1 -1
  178. package/js/src/pro/htx.js +1 -1
  179. package/js/src/pro/idex.js +1 -1
  180. package/js/src/pro/kraken.js +3 -4
  181. package/js/src/pro/krakenfutures.js +1 -1
  182. package/js/src/pro/kucoinfutures.js +1 -1
  183. package/js/src/pro/mexc.js +1 -1
  184. package/js/src/pro/okcoin.js +1 -1
  185. package/js/src/pro/okx.js +2 -2
  186. package/js/src/pro/phemex.js +1 -1
  187. package/js/src/pro/poloniexfutures.js +1 -1
  188. package/js/src/pro/woo.js +2 -3
  189. package/js/src/probit.js +1 -1
  190. package/js/src/timex.js +1 -1
  191. package/js/src/tokocrypto.js +1 -1
  192. package/js/src/upbit.js +1 -1
  193. package/js/src/wavesexchange.js +1 -1
  194. package/js/src/whitebit.js +1 -1
  195. package/js/src/woo.js +1 -1
  196. package/js/src/zaif.js +1 -1
  197. package/package.json +2 -2
  198. package/skip-tests.json +1 -0
package/dist/cjs/ccxt.js CHANGED
@@ -168,7 +168,7 @@ var woo$1 = require('./src/pro/woo.js');
168
168
 
169
169
  //-----------------------------------------------------------------------------
170
170
  // this is updated by vss.js when building
171
- const version = '4.1.95';
171
+ const version = '4.1.97';
172
172
  Exchange["default"].ccxtVersion = version;
173
173
  const exchanges = {
174
174
  'ace': ace,
@@ -697,7 +697,7 @@ class ace extends ace$1 {
697
697
  * @see https://github.com/ace-exchange/ace-official-api-docs/blob/master/api_v2.md#open-api---order-list
698
698
  * @param {string} symbol unified market symbol of the market orders were made in
699
699
  * @param {int} [since] the earliest time in ms to fetch orders for
700
- * @param {int} [limit] the maximum number of orde structures to retrieve
700
+ * @param {int} [limit] the maximum number of order structures to retrieve
701
701
  * @param {object} [params] extra parameters specific to the exchange API endpoint
702
702
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
703
703
  */
@@ -1989,7 +1989,7 @@ class ascendex extends ascendex$1 {
1989
1989
  * @see https://ascendex.github.io/ascendex-futures-pro-api-v2/#list-current-history-orders
1990
1990
  * @param {string} symbol unified market symbol of the market orders were made in
1991
1991
  * @param {int} [since] the earliest time in ms to fetch orders for
1992
- * @param {int} [limit] the maximum number of orde structures to retrieve
1992
+ * @param {int} [limit] the maximum number of order structures to retrieve
1993
1993
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1994
1994
  * @param {int} [params.until] the latest time in ms to fetch orders for
1995
1995
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -1382,7 +1382,7 @@ class Exchange {
1382
1382
  const length = usedProxies.length;
1383
1383
  if (length > 1) {
1384
1384
  const joinedProxyNames = usedProxies.join(',');
1385
- throw new errors.ExchangeError(this.id + ' you have multiple conflicting proxy_url settings (' + joinedProxyNames + '), please use only one from : proxyUrl, proxy_url, proxyUrlCallback, proxy_url_callback');
1385
+ throw new errors.ProxyError(this.id + ' you have multiple conflicting proxy settings (' + joinedProxyNames + '), please use only one from : proxyUrl, proxy_url, proxyUrlCallback, proxy_url_callback');
1386
1386
  }
1387
1387
  return proxyUrl;
1388
1388
  }
@@ -1446,7 +1446,7 @@ class Exchange {
1446
1446
  const length = usedProxies.length;
1447
1447
  if (length > 1) {
1448
1448
  const joinedProxyNames = usedProxies.join(',');
1449
- throw new errors.ExchangeError(this.id + ' you have multiple conflicting settings (' + joinedProxyNames + '), please use only one from: httpProxy, httpsProxy, httpProxyCallback, httpsProxyCallback, socksProxy, socksProxyCallback');
1449
+ throw new errors.ProxyError(this.id + ' you have multiple conflicting proxy settings (' + joinedProxyNames + '), please use only one from: httpProxy, httpsProxy, httpProxyCallback, httpsProxyCallback, socksProxy, socksProxyCallback');
1450
1450
  }
1451
1451
  return [httpProxy, httpsProxy, socksProxy];
1452
1452
  }
@@ -1486,13 +1486,13 @@ class Exchange {
1486
1486
  const length = usedProxies.length;
1487
1487
  if (length > 1) {
1488
1488
  const joinedProxyNames = usedProxies.join(',');
1489
- throw new errors.ExchangeError(this.id + ' you have multiple conflicting settings (' + joinedProxyNames + '), please use only one from: wsProxy, wssProxy, wsSocksProxy');
1489
+ throw new errors.ProxyError(this.id + ' you have multiple conflicting proxy settings (' + joinedProxyNames + '), please use only one from: wsProxy, wssProxy, wsSocksProxy');
1490
1490
  }
1491
1491
  return [wsProxy, wssProxy, wsSocksProxy];
1492
1492
  }
1493
1493
  checkConflictingProxies(proxyAgentSet, proxyUrlSet) {
1494
1494
  if (proxyAgentSet && proxyUrlSet) {
1495
- throw new errors.ExchangeError(this.id + ' you have multiple conflicting proxy settings, please use only one from : proxyUrl, httpProxy, httpsProxy, socksProxy');
1495
+ throw new errors.ProxyError(this.id + ' you have multiple conflicting proxy settings, please use only one from : proxyUrl, httpProxy, httpsProxy, socksProxy');
1496
1496
  }
1497
1497
  }
1498
1498
  findMessageHashes(client, element) {
@@ -1809,6 +1809,7 @@ class Exchange {
1809
1809
  fee['cost'] = this.safeNumber(fee, 'cost');
1810
1810
  }
1811
1811
  const timestamp = this.safeInteger(entry, 'timestamp');
1812
+ const info = this.safeValue(entry, 'info', {});
1812
1813
  return {
1813
1814
  'id': this.safeString(entry, 'id'),
1814
1815
  'timestamp': timestamp,
@@ -1824,7 +1825,7 @@ class Exchange {
1824
1825
  'after': this.parseNumber(after),
1825
1826
  'status': this.safeString(entry, 'status'),
1826
1827
  'fee': fee,
1827
- 'info': entry,
1828
+ 'info': info,
1828
1829
  };
1829
1830
  }
1830
1831
  safeCurrencyStructure(currency) {
@@ -196,6 +196,12 @@ class OperationFailed extends BaseError {
196
196
  this.name = 'OperationFailed';
197
197
  }
198
198
  }
199
+ class ProxyError extends ExchangeError {
200
+ constructor(message) {
201
+ super(message);
202
+ this.name = 'OperationFailed';
203
+ }
204
+ }
199
205
  // Network error
200
206
  class NetworkError extends OperationFailed {
201
207
  constructor(message) {
@@ -246,7 +252,7 @@ class RequestTimeout extends NetworkError {
246
252
  // // Derived class hierarchy
247
253
  // errorHierarchy
248
254
  // )
249
- const errors = { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, ContractUnavailable, NoChange, OperationRejected, OperationFailed };
255
+ const errors = { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, ContractUnavailable, NoChange, OperationRejected, OperationFailed, ProxyError };
250
256
 
251
257
  exports.AccountNotEnabled = AccountNotEnabled;
252
258
  exports.AccountSuspended = AccountSuspended;
@@ -280,6 +286,7 @@ exports.OrderNotCached = OrderNotCached;
280
286
  exports.OrderNotFillable = OrderNotFillable;
281
287
  exports.OrderNotFound = OrderNotFound;
282
288
  exports.PermissionDenied = PermissionDenied;
289
+ exports.ProxyError = ProxyError;
283
290
  exports.RateLimitExceeded = RateLimitExceeded;
284
291
  exports.RequestTimeout = RequestTimeout;
285
292
  exports["default"] = errors;
@@ -1363,7 +1363,7 @@ class bigone extends bigone$1 {
1363
1363
  * @description fetches information on multiple orders made by the user
1364
1364
  * @param {string} symbol unified market symbol of the market orders were made in
1365
1365
  * @param {int} [since] the earliest time in ms to fetch orders for
1366
- * @param {int} [limit] the maximum number of orde structures to retrieve
1366
+ * @param {int} [limit] the maximum number of order structures to retrieve
1367
1367
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1368
1368
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1369
1369
  */
@@ -1498,7 +1498,7 @@ class bigone extends bigone$1 {
1498
1498
  * @description fetches information on multiple closed orders made by the user
1499
1499
  * @param {string} symbol unified market symbol of the market orders were made in
1500
1500
  * @param {int} [since] the earliest time in ms to fetch orders for
1501
- * @param {int} [limit] the maximum number of orde structures to retrieve
1501
+ * @param {int} [limit] the maximum number of order structures to retrieve
1502
1502
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1503
1503
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1504
1504
  */
@@ -2565,24 +2565,23 @@ class binance extends binance$1 {
2565
2565
  let type = this.safeString(params, 'type', defaultType);
2566
2566
  let subType = undefined;
2567
2567
  [subType, params] = this.handleSubTypeAndParams('fetchBalance', undefined, params);
2568
- const [marginMode, query] = this.handleMarginModeAndParams('fetchBalance', params);
2569
- let method = 'privateGetAccount';
2568
+ let marginMode = undefined;
2569
+ let query = undefined;
2570
+ [marginMode, query] = this.handleMarginModeAndParams('fetchBalance', params);
2571
+ query = this.omit(query, 'type');
2572
+ let response = undefined;
2570
2573
  const request = {};
2571
2574
  if (this.isLinear(type, subType)) {
2572
- const options = this.safeValue(this.options, type, {});
2573
- const fetchBalanceOptions = this.safeValue(options, 'fetchBalance', {});
2574
- method = this.safeString(fetchBalanceOptions, 'method', 'fapiPrivateV2GetAccount');
2575
2575
  type = 'linear';
2576
+ response = await this.fapiPrivateV2GetAccount(this.extend(request, query));
2576
2577
  }
2577
2578
  else if (this.isInverse(type, subType)) {
2578
- const options = this.safeValue(this.options, type, {});
2579
- const fetchBalanceOptions = this.safeValue(options, 'fetchBalance', {});
2580
- method = this.safeString(fetchBalanceOptions, 'method', 'dapiPrivateGetAccount');
2581
2579
  type = 'inverse';
2580
+ response = await this.dapiPrivateGetAccount(this.extend(request, query));
2582
2581
  }
2583
2582
  else if (marginMode === 'isolated') {
2584
- method = 'sapiGetMarginIsolatedAccount';
2585
2583
  const paramSymbols = this.safeValue(params, 'symbols');
2584
+ query = this.omit(query, 'symbols');
2586
2585
  if (paramSymbols !== undefined) {
2587
2586
  let symbols = '';
2588
2587
  if (Array.isArray(paramSymbols)) {
@@ -2598,18 +2597,20 @@ class binance extends binance$1 {
2598
2597
  }
2599
2598
  request['symbols'] = symbols;
2600
2599
  }
2600
+ response = await this.sapiGetMarginIsolatedAccount(this.extend(request, query));
2601
2601
  }
2602
2602
  else if ((type === 'margin') || (marginMode === 'cross')) {
2603
- method = 'sapiGetMarginAccount';
2603
+ response = await this.sapiGetMarginAccount(this.extend(request, query));
2604
2604
  }
2605
2605
  else if (type === 'savings') {
2606
- method = 'sapiGetLendingUnionAccount';
2606
+ response = await this.sapiGetLendingUnionAccount(this.extend(request, query));
2607
2607
  }
2608
2608
  else if (type === 'funding') {
2609
- method = 'sapiPostAssetGetFundingAsset';
2609
+ response = await this.sapiPostAssetGetFundingAsset(this.extend(request, query));
2610
+ }
2611
+ else {
2612
+ response = await this.privateGetAccount(this.extend(request, query));
2610
2613
  }
2611
- const requestParams = this.omit(query, ['type', 'symbols']);
2612
- const response = await this[method](this.extend(request, requestParams));
2613
2614
  //
2614
2615
  // spot
2615
2616
  //
@@ -3301,33 +3302,35 @@ class binance extends binance$1 {
3301
3302
  if (until !== undefined) {
3302
3303
  request['endTime'] = until;
3303
3304
  }
3304
- let method = 'publicGetKlines';
3305
+ let response = undefined;
3305
3306
  if (market['option']) {
3306
- method = 'eapiPublicGetKlines';
3307
+ response = await this.eapiPublicGetKlines(this.extend(request, params));
3307
3308
  }
3308
3309
  else if (price === 'mark') {
3309
3310
  if (market['inverse']) {
3310
- method = 'dapiPublicGetMarkPriceKlines';
3311
+ response = await this.dapiPublicGetMarkPriceKlines(this.extend(request, params));
3311
3312
  }
3312
3313
  else {
3313
- method = 'fapiPublicGetMarkPriceKlines';
3314
+ response = await this.fapiPublicGetMarkPriceKlines(this.extend(request, params));
3314
3315
  }
3315
3316
  }
3316
3317
  else if (price === 'index') {
3317
3318
  if (market['inverse']) {
3318
- method = 'dapiPublicGetIndexPriceKlines';
3319
+ response = await this.dapiPublicGetIndexPriceKlines(this.extend(request, params));
3319
3320
  }
3320
3321
  else {
3321
- method = 'fapiPublicGetIndexPriceKlines';
3322
+ response = await this.fapiPublicGetIndexPriceKlines(this.extend(request, params));
3322
3323
  }
3323
3324
  }
3324
3325
  else if (market['linear']) {
3325
- method = 'fapiPublicGetKlines';
3326
+ response = await this.fapiPublicGetKlines(this.extend(request, params));
3326
3327
  }
3327
3328
  else if (market['inverse']) {
3328
- method = 'dapiPublicGetKlines';
3329
+ response = await this.dapiPublicGetKlines(this.extend(request, params));
3330
+ }
3331
+ else {
3332
+ response = await this.publicGetKlines(this.extend(request, params));
3329
3333
  }
3330
- const response = await this[method](this.extend(request, params));
3331
3334
  //
3332
3335
  // [
3333
3336
  // [1591478520000,"0.02501300","0.02501800","0.02500000","0.02500000","22.19000000",1591478579999,"0.55490906",40,"10.92900000","0.27336462","0"],
@@ -4743,22 +4746,6 @@ class binance extends binance$1 {
4743
4746
  const request = {
4744
4747
  'symbol': market['id'],
4745
4748
  };
4746
- let method = 'privateGetOrder';
4747
- if (market['option']) {
4748
- method = 'eapiPrivateGetOrder';
4749
- }
4750
- else if (market['linear']) {
4751
- method = 'fapiPrivateGetOrder';
4752
- }
4753
- else if (market['inverse']) {
4754
- method = 'dapiPrivateGetOrder';
4755
- }
4756
- else if (type === 'margin' || marginMode !== undefined) {
4757
- method = 'sapiGetMarginOrder';
4758
- if (marginMode === 'isolated') {
4759
- request['isIsolated'] = true;
4760
- }
4761
- }
4762
4749
  const clientOrderId = this.safeValue2(params, 'origClientOrderId', 'clientOrderId');
4763
4750
  if (clientOrderId !== undefined) {
4764
4751
  if (market['option']) {
@@ -4772,7 +4759,25 @@ class binance extends binance$1 {
4772
4759
  request['orderId'] = id;
4773
4760
  }
4774
4761
  const requestParams = this.omit(query, ['type', 'clientOrderId', 'origClientOrderId']);
4775
- const response = await this[method](this.extend(request, requestParams));
4762
+ let response = undefined;
4763
+ if (market['option']) {
4764
+ response = await this.eapiPrivateGetOrder(this.extend(request, requestParams));
4765
+ }
4766
+ else if (market['linear']) {
4767
+ response = await this.fapiPrivateGetOrder(this.extend(request, requestParams));
4768
+ }
4769
+ else if (market['inverse']) {
4770
+ response = await this.dapiPrivateGetOrder(this.extend(request, requestParams));
4771
+ }
4772
+ else if (type === 'margin' || marginMode !== undefined) {
4773
+ if (marginMode === 'isolated') {
4774
+ request['isIsolated'] = true;
4775
+ }
4776
+ response = await this.sapiGetMarginOrder(this.extend(request, requestParams));
4777
+ }
4778
+ else {
4779
+ response = await this.privateGetOrder(this.extend(request, requestParams));
4780
+ }
4776
4781
  return this.parseOrder(response, market);
4777
4782
  }
4778
4783
  async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -4810,34 +4815,36 @@ class binance extends binance$1 {
4810
4815
  const request = {
4811
4816
  'symbol': market['id'],
4812
4817
  };
4813
- let method = 'privateGetAllOrders';
4818
+ const until = this.safeInteger(params, 'until');
4819
+ if (until !== undefined) {
4820
+ params = this.omit(params, 'until');
4821
+ request['endTime'] = until;
4822
+ }
4823
+ if (since !== undefined) {
4824
+ request['startTime'] = since;
4825
+ }
4826
+ if (limit !== undefined) {
4827
+ request['limit'] = limit;
4828
+ }
4829
+ let response = undefined;
4814
4830
  if (market['option']) {
4815
- method = 'eapiPrivateGetHistoryOrders';
4831
+ response = await this.eapiPrivateGetHistoryOrders(this.extend(request, query));
4816
4832
  }
4817
4833
  else if (market['linear']) {
4818
- method = 'fapiPrivateGetAllOrders';
4834
+ response = await this.fapiPrivateGetAllOrders(this.extend(request, query));
4819
4835
  }
4820
4836
  else if (market['inverse']) {
4821
- method = 'dapiPrivateGetAllOrders';
4837
+ response = await this.dapiPrivateGetAllOrders(this.extend(request, query));
4822
4838
  }
4823
4839
  else if (type === 'margin' || marginMode !== undefined) {
4824
- method = 'sapiGetMarginAllOrders';
4825
4840
  if (marginMode === 'isolated') {
4826
4841
  request['isIsolated'] = true;
4827
4842
  }
4843
+ response = await this.sapiGetMarginAllOrders(this.extend(request, query));
4828
4844
  }
4829
- const until = this.safeInteger(params, 'until');
4830
- if (until !== undefined) {
4831
- params = this.omit(params, 'until');
4832
- request['endTime'] = until;
4833
- }
4834
- if (since !== undefined) {
4835
- request['startTime'] = since;
4836
- }
4837
- if (limit !== undefined) {
4838
- request['limit'] = limit;
4845
+ else {
4846
+ response = await this.privateGetAllOrders(this.extend(request, query));
4839
4847
  }
4840
- const response = await this[method](this.extend(request, query));
4841
4848
  //
4842
4849
  // spot
4843
4850
  //
@@ -4962,32 +4969,34 @@ class binance extends binance$1 {
4962
4969
  let subType = undefined;
4963
4970
  [subType, query] = this.handleSubTypeAndParams('fetchOpenOrders', market, query);
4964
4971
  const requestParams = this.omit(query, 'type');
4965
- let method = 'privateGetOpenOrders';
4972
+ let response = undefined;
4966
4973
  if (type === 'option') {
4967
- method = 'eapiPrivateGetOpenOrders';
4968
4974
  if (since !== undefined) {
4969
4975
  request['startTime'] = since;
4970
4976
  }
4971
4977
  if (limit !== undefined) {
4972
4978
  request['limit'] = limit;
4973
4979
  }
4980
+ response = await this.eapiPrivateGetOpenOrders(this.extend(request, requestParams));
4974
4981
  }
4975
4982
  else if (this.isLinear(type, subType)) {
4976
- method = 'fapiPrivateGetOpenOrders';
4983
+ response = await this.fapiPrivateGetOpenOrders(this.extend(request, requestParams));
4977
4984
  }
4978
4985
  else if (this.isInverse(type, subType)) {
4979
- method = 'dapiPrivateGetOpenOrders';
4986
+ response = await this.dapiPrivateGetOpenOrders(this.extend(request, requestParams));
4980
4987
  }
4981
4988
  else if (type === 'margin' || marginMode !== undefined) {
4982
- method = 'sapiGetMarginOpenOrders';
4983
4989
  if (marginMode === 'isolated') {
4984
4990
  request['isIsolated'] = true;
4985
4991
  if (symbol === undefined) {
4986
4992
  throw new errors.ArgumentsRequired(this.id + ' fetchOpenOrders() requires a symbol argument for isolated markets');
4987
4993
  }
4988
4994
  }
4995
+ response = await this.sapiGetMarginOpenOrders(this.extend(request, requestParams));
4996
+ }
4997
+ else {
4998
+ response = await this.privateGetOpenOrders(this.extend(request, requestParams));
4989
4999
  }
4990
- const response = await this[method](this.extend(request, requestParams));
4991
5000
  return this.parseOrders(response, market, since, limit);
4992
5001
  }
4993
5002
  async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -5078,24 +5087,26 @@ class binance extends binance$1 {
5078
5087
  else {
5079
5088
  request['orderId'] = id;
5080
5089
  }
5081
- let method = 'privateDeleteOrder';
5090
+ const requestParams = this.omit(query, ['type', 'origClientOrderId', 'clientOrderId']);
5091
+ let response = undefined;
5082
5092
  if (market['option']) {
5083
- method = 'eapiPrivateDeleteOrder';
5093
+ response = await this.eapiPrivateDeleteOrder(this.extend(request, requestParams));
5084
5094
  }
5085
5095
  else if (market['linear']) {
5086
- method = 'fapiPrivateDeleteOrder';
5096
+ response = await this.fapiPrivateDeleteOrder(this.extend(request, requestParams));
5087
5097
  }
5088
5098
  else if (market['inverse']) {
5089
- method = 'dapiPrivateDeleteOrder';
5099
+ response = await this.dapiPrivateDeleteOrder(this.extend(request, requestParams));
5090
5100
  }
5091
5101
  else if (type === 'margin' || marginMode !== undefined) {
5092
- method = 'sapiDeleteMarginOrder';
5093
5102
  if (marginMode === 'isolated') {
5094
5103
  request['isIsolated'] = true;
5095
5104
  }
5105
+ response = await this.sapiDeleteMarginOrder(this.extend(request, requestParams));
5106
+ }
5107
+ else {
5108
+ response = await this.privateDeleteOrder(this.extend(request, requestParams));
5096
5109
  }
5097
- const requestParams = this.omit(query, ['type', 'origClientOrderId', 'clientOrderId']);
5098
- const response = await this[method](this.extend(request, requestParams));
5099
5110
  return this.parseOrder(response, market);
5100
5111
  }
5101
5112
  async cancelAllOrders(symbol = undefined, params = {}) {
@@ -5124,23 +5135,25 @@ class binance extends binance$1 {
5124
5135
  const type = this.safeString(params, 'type', market['type']);
5125
5136
  params = this.omit(params, ['type']);
5126
5137
  const [marginMode, query] = this.handleMarginModeAndParams('cancelAllOrders', params);
5127
- let method = 'privateDeleteOpenOrders';
5138
+ let response = undefined;
5128
5139
  if (market['option']) {
5129
- method = 'eapiPrivateDeleteAllOpenOrders';
5140
+ response = await this.eapiPrivateDeleteAllOpenOrders(this.extend(request, query));
5130
5141
  }
5131
5142
  else if (market['linear']) {
5132
- method = 'fapiPrivateDeleteAllOpenOrders';
5143
+ response = await this.fapiPrivateDeleteAllOpenOrders(this.extend(request, query));
5133
5144
  }
5134
5145
  else if (market['inverse']) {
5135
- method = 'dapiPrivateDeleteAllOpenOrders';
5146
+ response = await this.dapiPrivateDeleteAllOpenOrders(this.extend(request, query));
5136
5147
  }
5137
5148
  else if ((type === 'margin') || (marginMode !== undefined)) {
5138
- method = 'sapiDeleteMarginOpenOrders';
5139
5149
  if (marginMode === 'isolated') {
5140
5150
  request['isIsolated'] = true;
5141
5151
  }
5152
+ response = await this.sapiDeleteMarginOpenOrders(this.extend(request, query));
5153
+ }
5154
+ else {
5155
+ response = await this.privateDeleteOpenOrders(this.extend(request, query));
5142
5156
  }
5143
- const response = await this[method](this.extend(request, query));
5144
5157
  if (Array.isArray(response)) {
5145
5158
  return this.parseOrders(response, market);
5146
5159
  }
@@ -5277,37 +5290,12 @@ class binance extends binance$1 {
5277
5290
  const request = {};
5278
5291
  let market = undefined;
5279
5292
  let type = undefined;
5280
- let method = undefined;
5281
5293
  let marginMode = undefined;
5282
5294
  if (symbol !== undefined) {
5283
5295
  market = this.market(symbol);
5284
5296
  request['symbol'] = market['id'];
5285
5297
  }
5286
5298
  [type, params] = this.handleMarketTypeAndParams('fetchMyTrades', market, params);
5287
- if (type === 'option') {
5288
- method = 'eapiPrivateGetUserTrades';
5289
- }
5290
- else {
5291
- if (symbol === undefined) {
5292
- throw new errors.ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
5293
- }
5294
- [marginMode, params] = this.handleMarginModeAndParams('fetchMyTrades', params);
5295
- if (type === 'spot' || type === 'margin') {
5296
- method = 'privateGetMyTrades';
5297
- if ((type === 'margin') || (marginMode !== undefined)) {
5298
- method = 'sapiGetMarginMyTrades';
5299
- if (marginMode === 'isolated') {
5300
- request['isIsolated'] = true;
5301
- }
5302
- }
5303
- }
5304
- else if (market['linear']) {
5305
- method = 'fapiPrivateGetUserTrades';
5306
- }
5307
- else if (market['inverse']) {
5308
- method = 'dapiPrivateGetUserTrades';
5309
- }
5310
- }
5311
5299
  let endTime = this.safeInteger2(params, 'until', 'endTime');
5312
5300
  if (since !== undefined) {
5313
5301
  const startTime = since;
@@ -5335,7 +5323,33 @@ class binance extends binance$1 {
5335
5323
  }
5336
5324
  request['limit'] = limit;
5337
5325
  }
5338
- const response = await this[method](this.extend(request, params));
5326
+ let response = undefined;
5327
+ if (type === 'option') {
5328
+ response = await this.eapiPrivateGetUserTrades(this.extend(request, params));
5329
+ }
5330
+ else {
5331
+ if (symbol === undefined) {
5332
+ throw new errors.ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
5333
+ }
5334
+ [marginMode, params] = this.handleMarginModeAndParams('fetchMyTrades', params);
5335
+ if (type === 'spot' || type === 'margin') {
5336
+ if ((type === 'margin') || (marginMode !== undefined)) {
5337
+ if (marginMode === 'isolated') {
5338
+ request['isIsolated'] = true;
5339
+ }
5340
+ response = await this.sapiGetMarginMyTrades(this.extend(request, params));
5341
+ }
5342
+ else {
5343
+ response = await this.privateGetMyTrades(this.extend(request, params));
5344
+ }
5345
+ }
5346
+ else if (market['linear']) {
5347
+ response = await this.fapiPrivateGetUserTrades(this.extend(request, params));
5348
+ }
5349
+ else if (market['inverse']) {
5350
+ response = await this.dapiPrivateGetUserTrades(this.extend(request, params));
5351
+ }
5352
+ }
5339
5353
  //
5340
5354
  // spot trade
5341
5355
  //
@@ -6665,7 +6679,6 @@ class binance extends binance$1 {
6665
6679
  * @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
6666
6680
  */
6667
6681
  await this.loadMarkets();
6668
- let method = undefined;
6669
6682
  let type = undefined;
6670
6683
  [type, params] = this.handleMarketTypeAndParams('fetchTradingFees', undefined, params);
6671
6684
  let subType = undefined;
@@ -6673,16 +6686,16 @@ class binance extends binance$1 {
6673
6686
  const isSpotOrMargin = (type === 'spot') || (type === 'margin');
6674
6687
  const isLinear = this.isLinear(type, subType);
6675
6688
  const isInverse = this.isInverse(type, subType);
6689
+ let response = undefined;
6676
6690
  if (isSpotOrMargin) {
6677
- method = 'sapiGetAssetTradeFee';
6691
+ response = await this.sapiGetAssetTradeFee(params);
6678
6692
  }
6679
6693
  else if (isLinear) {
6680
- method = 'fapiPrivateV2GetAccount';
6694
+ response = await this.fapiPrivateV2GetAccount(params);
6681
6695
  }
6682
6696
  else if (isInverse) {
6683
- method = 'dapiPrivateGetAccount';
6697
+ response = await this.dapiPrivateGetAccount(params);
6684
6698
  }
6685
- const response = await this[method](params);
6686
6699
  //
6687
6700
  // sapi / spot
6688
6701
  //
@@ -6880,17 +6893,16 @@ class binance extends binance$1 {
6880
6893
  const request = {
6881
6894
  'symbol': market['id'],
6882
6895
  };
6883
- let method = undefined;
6896
+ let response = undefined;
6884
6897
  if (market['linear']) {
6885
- method = 'fapiPublicGetPremiumIndex';
6898
+ response = await this.fapiPublicGetPremiumIndex(this.extend(request, params));
6886
6899
  }
6887
6900
  else if (market['inverse']) {
6888
- method = 'dapiPublicGetPremiumIndex';
6901
+ response = await this.dapiPublicGetPremiumIndex(this.extend(request, params));
6889
6902
  }
6890
6903
  else {
6891
6904
  throw new errors.NotSupported(this.id + ' fetchFundingRate() supports linear and inverse contracts only');
6892
6905
  }
6893
- let response = await this[method](this.extend(request, params));
6894
6906
  if (market['inverse']) {
6895
6907
  response = response[0];
6896
6908
  }
@@ -7528,20 +7540,20 @@ class binance extends binance$1 {
7528
7540
  * @returns {object} a dictionary of [leverage tiers structures]{@link https://docs.ccxt.com/#/?id=leverage-tiers-structure}, indexed by market symbols
7529
7541
  */
7530
7542
  await this.loadMarkets();
7531
- const [type, query] = this.handleMarketTypeAndParams('fetchLeverageTiers', undefined, params);
7543
+ let type = undefined;
7544
+ [type, params] = this.handleMarketTypeAndParams('fetchLeverageTiers', undefined, params);
7532
7545
  let subType = undefined;
7533
- [subType, params] = this.handleSubTypeAndParams('fetchLeverageTiers', undefined, query, 'linear');
7534
- let method = undefined;
7546
+ [subType, params] = this.handleSubTypeAndParams('fetchLeverageTiers', undefined, params, 'linear');
7547
+ let response = undefined;
7535
7548
  if (this.isLinear(type, subType)) {
7536
- method = 'fapiPrivateGetLeverageBracket';
7549
+ response = await this.fapiPrivateGetLeverageBracket(params);
7537
7550
  }
7538
7551
  else if (this.isInverse(type, subType)) {
7539
- method = 'dapiPrivateV2GetLeverageBracket';
7552
+ response = await this.dapiPrivateV2GetLeverageBracket(params);
7540
7553
  }
7541
7554
  else {
7542
7555
  throw new errors.NotSupported(this.id + ' fetchLeverageTiers() supports linear and inverse contracts only');
7543
7556
  }
7544
- const response = await this[method](query);
7545
7557
  //
7546
7558
  // usdm
7547
7559
  //
@@ -8015,21 +8027,21 @@ class binance extends binance$1 {
8015
8027
  }
8016
8028
  await this.loadMarkets();
8017
8029
  const market = this.market(symbol);
8018
- let method;
8030
+ const request = {
8031
+ 'symbol': market['id'],
8032
+ 'leverage': leverage,
8033
+ };
8034
+ let response = undefined;
8019
8035
  if (market['linear']) {
8020
- method = 'fapiPrivatePostLeverage';
8036
+ response = await this.fapiPrivatePostLeverage(this.extend(request, params));
8021
8037
  }
8022
8038
  else if (market['inverse']) {
8023
- method = 'dapiPrivatePostLeverage';
8039
+ response = await this.dapiPrivatePostLeverage(this.extend(request, params));
8024
8040
  }
8025
8041
  else {
8026
8042
  throw new errors.NotSupported(this.id + ' setLeverage() supports linear and inverse contracts only');
8027
8043
  }
8028
- const request = {
8029
- 'symbol': market['id'],
8030
- 'leverage': leverage,
8031
- };
8032
- return await this[method](this.extend(request, params));
8044
+ return response;
8033
8045
  }
8034
8046
  async setMarginMode(marginMode, symbol = undefined, params = {}) {
8035
8047
  /**
@@ -8062,23 +8074,21 @@ class binance extends binance$1 {
8062
8074
  }
8063
8075
  await this.loadMarkets();
8064
8076
  const market = this.market(symbol);
8065
- let method = undefined;
8066
- if (market['linear']) {
8067
- method = 'fapiPrivatePostMarginType';
8068
- }
8069
- else if (market['inverse']) {
8070
- method = 'dapiPrivatePostMarginType';
8071
- }
8072
- else {
8073
- throw new errors.NotSupported(this.id + ' setMarginMode() supports linear and inverse contracts only');
8074
- }
8075
8077
  const request = {
8076
8078
  'symbol': market['id'],
8077
8079
  'marginType': marginMode,
8078
8080
  };
8079
8081
  let response = undefined;
8080
8082
  try {
8081
- response = await this[method](this.extend(request, params));
8083
+ if (market['linear']) {
8084
+ response = await this.fapiPrivatePostMarginType(this.extend(request, params));
8085
+ }
8086
+ else if (market['inverse']) {
8087
+ response = await this.dapiPrivatePostMarginType(this.extend(request, params));
8088
+ }
8089
+ else {
8090
+ throw new errors.NotSupported(this.id + ' setMarginMode() supports linear and inverse contracts only');
8091
+ }
8082
8092
  }
8083
8093
  catch (e) {
8084
8094
  // not an error