ccxt 4.2.100 → 4.3.2

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 (330) hide show
  1. package/README.md +6 -5
  2. package/dist/cjs/ccxt.js +1 -1
  3. package/dist/cjs/src/base/Exchange.js +3 -0
  4. package/dist/cjs/src/binance.js +56 -0
  5. package/dist/cjs/src/bingx.js +2 -2
  6. package/dist/cjs/src/bitget.js +69 -5
  7. package/dist/cjs/src/bybit.js +1 -1
  8. package/dist/cjs/src/coinbase.js +2 -1
  9. package/dist/cjs/src/coinbasepro.js +1 -1
  10. package/dist/cjs/src/coinex.js +164 -206
  11. package/dist/cjs/src/cryptocom.js +5 -5
  12. package/dist/cjs/src/hyperliquid.js +74 -0
  13. package/dist/cjs/src/kraken.js +8 -3
  14. package/dist/cjs/src/kucoin.js +13 -11
  15. package/dist/cjs/src/okx.js +76 -5
  16. package/dist/cjs/src/pro/kraken.js +2 -2
  17. package/dist/cjs/src/woo.js +40 -0
  18. package/js/ccxt.d.ts +1 -1
  19. package/js/ccxt.js +1 -1
  20. package/js/src/base/Exchange.d.ts +2 -1
  21. package/js/src/base/Exchange.js +3 -0
  22. package/js/src/base/types.d.ts +5 -0
  23. package/js/src/binance.d.ts +3 -1
  24. package/js/src/binance.js +56 -0
  25. package/js/src/bingx.js +3 -3
  26. package/js/src/bitget.d.ts +1 -0
  27. package/js/src/bitget.js +69 -5
  28. package/js/src/bybit.js +1 -1
  29. package/js/src/coinbase.js +2 -1
  30. package/js/src/coinbasepro.d.ts +1 -1
  31. package/js/src/coinbasepro.js +1 -1
  32. package/js/src/coinex.js +164 -206
  33. package/js/src/cryptocom.js +5 -5
  34. package/js/src/hyperliquid.d.ts +2 -1
  35. package/js/src/hyperliquid.js +75 -1
  36. package/js/src/kraken.js +8 -3
  37. package/js/src/kucoin.js +13 -11
  38. package/js/src/okx.d.ts +1 -0
  39. package/js/src/okx.js +76 -5
  40. package/js/src/pro/kraken.js +2 -2
  41. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
  42. package/js/src/woo.d.ts +1 -0
  43. package/js/src/woo.js +40 -0
  44. package/package.json +2 -1
  45. package/.dockerignore +0 -6
  46. package/.eslintignore +0 -1
  47. package/.git-templates/hooks/pre-push +0 -55
  48. package/.gitattributes +0 -7
  49. package/CHANGELOG.md +0 -6003
  50. package/CODEOWNERS +0 -1
  51. package/CONTRIBUTING.md +0 -1099
  52. package/build.sh +0 -217
  53. package/change.sh +0 -18
  54. package/cleanup.sh +0 -18
  55. package/composer-install.sh +0 -20
  56. package/dist/ccxt.browser.js +0 -327256
  57. package/dist/ccxt.browser.min.js +0 -30
  58. package/dist/ccxt.browser.min.js.LICENSE.txt +0 -12
  59. package/doc/FAQ.rst +0 -1
  60. package/doc/Makefile +0 -20
  61. package/doc/_static/css/dark.css +0 -101
  62. package/doc/_static/css/index.css +0 -128
  63. package/doc/_static/favicon.ico +0 -0
  64. package/doc/_static/javascript/binance-portal.min.js +0 -2369
  65. package/doc/_static/javascript/index.js +0 -195
  66. package/doc/_static/javascript/jquery-ui.min.js +0 -6
  67. package/doc/ccxt.pro.install.rst +0 -1
  68. package/doc/ccxt.pro.manual.rst +0 -1665
  69. package/doc/exchange-markets-by-country.rst +0 -1423
  70. package/doc/exchange-markets.rst +0 -1441
  71. package/doc/index.rst +0 -35
  72. package/doc/install.rst +0 -1
  73. package/doc/make.bat +0 -36
  74. package/doc/manual.rst +0 -7471
  75. package/doc/readme.rst +0 -2191
  76. package/doc/requirements.txt +0 -6
  77. package/examples/ccxt.pro/html/watchTicker.html +0 -51
  78. package/examples/ccxt.pro/js/binance-fetch-balance-snapshot-watch-balance-updates.js +0 -55
  79. package/examples/ccxt.pro/js/binance-https-proxy.js +0 -48
  80. package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols-continuously.js +0 -38
  81. package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols.js +0 -64
  82. package/examples/ccxt.pro/js/binance-watch-ticker-many-symbols.js +0 -62
  83. package/examples/ccxt.pro/js/build-ohlcv-many-symbols.js +0 -68
  84. package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades-warmup.js +0 -82
  85. package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades.js +0 -59
  86. package/examples/ccxt.pro/js/exchange-capabitities.js +0 -72
  87. package/examples/ccxt.pro/js/exchange-close.js +0 -46
  88. package/examples/ccxt.pro/js/gateio-swap-watch-many-orderbooks.js +0 -30
  89. package/examples/ccxt.pro/js/gateio-watch-balance.js +0 -23
  90. package/examples/ccxt.pro/js/gateio-watch-order-book.js +0 -71
  91. package/examples/ccxt.pro/js/graceful-shutdown.js +0 -43
  92. package/examples/ccxt.pro/js/many-exchanges-many-streams.js +0 -37
  93. package/examples/ccxt.pro/js/okex-create-futures-order.js +0 -48
  94. package/examples/ccxt.pro/js/okex-watch-balance-and-create-order.js +0 -54
  95. package/examples/ccxt.pro/js/okx-watch-tickers.js +0 -31
  96. package/examples/ccxt.pro/js/one-exchange-many-different-streams.js +0 -46
  97. package/examples/ccxt.pro/js/one-exchange-many-streams-2.js +0 -26
  98. package/examples/ccxt.pro/js/one-exchange-many-streams.js +0 -28
  99. package/examples/ccxt.pro/js/socks-binance-watch-orderbook.js +0 -30
  100. package/examples/ccxt.pro/js/watch-fetch-many-exchanges-many-ordersbooks.js +0 -40
  101. package/examples/ccxt.pro/js/watch-many-exchanges-many-ordersbooks.js +0 -38
  102. package/examples/ccxt.pro/js/watch-many-exchanges-many-symbols.js +0 -40
  103. package/examples/ccxt.pro/js/watch-many-orderbooks.js +0 -27
  104. package/examples/ccxt.pro/js/watch-new-trades-only.js +0 -43
  105. package/examples/ccxt.pro/js/watch-new-trades.js +0 -42
  106. package/examples/ccxt.pro/js/watch-trades-many-symbols.js +0 -29
  107. package/examples/ccxt.pro/js/watch-vs-fetch.js +0 -29
  108. package/examples/cs/Examples.sln +0 -22
  109. package/examples/cs/c#.csproj +0 -19
  110. package/examples/html/basic-cors-proxy.html +0 -46
  111. package/examples/html/basic-inheritance.html +0 -47
  112. package/examples/html/basic-poller.html +0 -52
  113. package/examples/html/basic-rate-limiting.html +0 -49
  114. package/examples/html/basic.html +0 -43
  115. package/examples/html/binance-cors-proxy.html +0 -28
  116. package/examples/html/bitmex-browser-cors-proxy.js +0 -7
  117. package/examples/html/bitmex-cors.html +0 -46
  118. package/examples/html/tradingview-charts.html +0 -61
  119. package/examples/html/webworker/index.html +0 -97
  120. package/examples/html/webworker/worker.js +0 -43
  121. package/examples/js/advanced-error-handling.js +0 -39
  122. package/examples/js/aggregate-orderbook.js +0 -54
  123. package/examples/js/arbitrage-pairs.js +0 -130
  124. package/examples/js/basic-chart.js +0 -29
  125. package/examples/js/basic-orderbook-polling.js +0 -13
  126. package/examples/js/bcc-vs-bch.js +0 -115
  127. package/examples/js/benchmark.js +0 -104
  128. package/examples/js/binance-fetch-all-deposits.js +0 -45
  129. package/examples/js/binance-fetch-ohlcv-many-symbols-async-await.js +0 -34
  130. package/examples/js/binance-fetch-ohlcv-many-symbols-promise-then-callbacks.js +0 -33
  131. package/examples/js/binance-fetchTicker-delivery-vs-future.js +0 -31
  132. package/examples/js/binance-futures-transfer-from-sub-account-to-master.js +0 -41
  133. package/examples/js/binance-margin-stop-order.js +0 -39
  134. package/examples/js/binance-server-time.js +0 -34
  135. package/examples/js/binance-universal-transfer.js +0 -16
  136. package/examples/js/bitfinex-fetch-trades.js +0 -35
  137. package/examples/js/bitfinex2-fetch-trades.js +0 -35
  138. package/examples/js/bitmex-browser-cors-proxy.js +0 -7
  139. package/examples/js/bitpanda-fetchMyTrades-reduce.js +0 -36
  140. package/examples/js/bitrue-fetch-balance.js +0 -28
  141. package/examples/js/bitstamp-private-api.js +0 -115
  142. package/examples/js/bitstamp-public-api.js +0 -39
  143. package/examples/js/bittrex-balance.js +0 -50
  144. package/examples/js/bittrex-fetch-closed-orders-history.js +0 -69
  145. package/examples/js/blockchaincom-withdrawal.js +0 -59
  146. package/examples/js/build-ohlcv-bars.js +0 -48
  147. package/examples/js/builtin-rate-limiting-rest-poller.js +0 -25
  148. package/examples/js/bybit-trailing.js +0 -62
  149. package/examples/js/bybit-updated.cjs +0 -154
  150. package/examples/js/coinbase-fetch-all-balances.js +0 -36
  151. package/examples/js/coinex-fetch-all-deposit-addresses-using-fetchDepositAddress.js +0 -47
  152. package/examples/js/coinex-futures.js +0 -75
  153. package/examples/js/coinone-fetch-tickers.js +0 -54
  154. package/examples/js/coinone-markets.js +0 -16
  155. package/examples/js/compare-two-exchanges-capabilities.js +0 -36
  156. package/examples/js/cors-proxy.js +0 -5
  157. package/examples/js/create-order-handle-errors.js +0 -55
  158. package/examples/js/create-order-position-with-takeprofit-stoploss.js +0 -71
  159. package/examples/js/create-order-with-retry.js +0 -65
  160. package/examples/js/create-order-ws-example.js +0 -25
  161. package/examples/js/create-orders-example.js +0 -17
  162. package/examples/js/create-trailing-amount-order.js +0 -36
  163. package/examples/js/create-trailing-percent-order.js +0 -36
  164. package/examples/js/credentials.json +0 -5
  165. package/examples/js/custom-proxy-agent-for-js.js +0 -10
  166. package/examples/js/custom-proxy-url.js +0 -23
  167. package/examples/js/delta-maintenance-margin-rate-max-leverage.js +0 -60
  168. package/examples/js/env-variables.js +0 -26
  169. package/examples/js/error-handling.js +0 -89
  170. package/examples/js/exchange-capabilities.js +0 -135
  171. package/examples/js/exchanges-by-volume.js +0 -60
  172. package/examples/js/exchanges.js +0 -40
  173. package/examples/js/fetch-all-balances.js +0 -219
  174. package/examples/js/fetch-all-tickers-to-files-2.js +0 -53
  175. package/examples/js/fetch-all-tickers-to-files.js +0 -77
  176. package/examples/js/fetch-balance.js +0 -28
  177. package/examples/js/fetch-create-deposit-address.js +0 -101
  178. package/examples/js/fetch-from-many-exchanges-simultaneously.js +0 -21
  179. package/examples/js/fetch-funding-rate-history.js +0 -25
  180. package/examples/js/fetch-futures/prettier.config.js +0 -5
  181. package/examples/js/fetch-futures/src/index.js +0 -25
  182. package/examples/js/fetch-ohlcv-from-to-mark-index-premium.js +0 -72
  183. package/examples/js/fetch-ohlcv-many-exchanges-continuosly.js +0 -39
  184. package/examples/js/fetch-ohlcv.js +0 -16
  185. package/examples/js/fetch-okex-futures.js +0 -22
  186. package/examples/js/fetch-orders.js +0 -27
  187. package/examples/js/fetch-ticker-from-multiple-exchanges.js +0 -35
  188. package/examples/js/fetch-ticker-where-available.js +0 -75
  189. package/examples/js/fetch-tickers/build/index.js +0 -19
  190. package/examples/js/fetch-tickers/prettier.config.js +0 -5
  191. package/examples/js/fetch-tickers/src/index.js +0 -17
  192. package/examples/js/gateio-create-batch-order.js +0 -43
  193. package/examples/js/gateio-futures.js +0 -49
  194. package/examples/js/gateio-open-close-contract.js +0 -49
  195. package/examples/js/gateio-swaps.js +0 -74
  196. package/examples/js/gdax-fetch-trades-pagination.js +0 -29
  197. package/examples/js/hitbtc2-withdraw.js +0 -61
  198. package/examples/js/how-to-import-one-exchange-esm.js +0 -10
  199. package/examples/js/huobi-futures.js +0 -71
  200. package/examples/js/huobi-open-close-contract.js +0 -63
  201. package/examples/js/huobi-swaps.js +0 -70
  202. package/examples/js/huobipro-market-buy-sell-fetch-trading-limits.js +0 -98
  203. package/examples/js/hybridCJSExample.cjs +0 -19
  204. package/examples/js/hybridESMExample.js +0 -19
  205. package/examples/js/idex-fetch-balance.js +0 -13
  206. package/examples/js/instantiate-all-at-once.js +0 -46
  207. package/examples/js/instantiate-all-from-json.js +0 -31
  208. package/examples/js/kraken-create-and-close-position.js +0 -54
  209. package/examples/js/kraken-fetch-order-trades.js +0 -33
  210. package/examples/js/kraken-margin-trading.js +0 -89
  211. package/examples/js/kucoin-rate-limit.js +0 -38
  212. package/examples/js/latoken-example.js +0 -108
  213. package/examples/js/live-orderbook.js +0 -106
  214. package/examples/js/live-ticker.js +0 -80
  215. package/examples/js/live-tickers.js +0 -74
  216. package/examples/js/load-all-contracts.js +0 -41
  217. package/examples/js/load-all-symbols-at-once.js +0 -69
  218. package/examples/js/load-all-tickers-at-once.js +0 -91
  219. package/examples/js/load-markets-to-files.js +0 -57
  220. package/examples/js/looping-over-all-symbols-of-specific-exchanges.js +0 -61
  221. package/examples/js/looping-over-specific-symbols-of-all-exchanges.js +0 -91
  222. package/examples/js/margin-loan-borrow-buy-sell-repay.js +0 -70
  223. package/examples/js/market-status-and-currency-status.js +0 -29
  224. package/examples/js/ohlcv-console-chart.js +0 -29
  225. package/examples/js/okex-fetch-closed-orders-archive.js +0 -31
  226. package/examples/js/okex-transfer.js +0 -51
  227. package/examples/js/okx-poll-fetch-my-trades.js +0 -37
  228. package/examples/js/okx-poll-rate-limit.js +0 -48
  229. package/examples/js/order-book-extra-level-depth-param.js +0 -20
  230. package/examples/js/phemex-create-order-position-with-takeprofit-stoploss.js +0 -49
  231. package/examples/js/poll-ohlcv.js +0 -43
  232. package/examples/js/poloniex-fetch-order-books.js +0 -35
  233. package/examples/js/poloniex-limits-amount-min.js +0 -62
  234. package/examples/js/proxy-round-robin.js +0 -98
  235. package/examples/js/proxy-usage.js +0 -32
  236. package/examples/js/sample-local-proxy-server-with-cors.js +0 -12
  237. package/examples/js/search-all-exchanges.js +0 -159
  238. package/examples/js/shared-load-markets.js +0 -80
  239. package/examples/js/sort-swap-markets-by-hourly-price-change.js +0 -55
  240. package/examples/js/symbols.js +0 -110
  241. package/examples/js/theocean.js +0 -41
  242. package/examples/js/tickers.js +0 -106
  243. package/examples/js/validate-paginated-data.js +0 -61
  244. package/examples/js/watch-OHLCV-For-Symbols.js +0 -15
  245. package/examples/js/watch-OHLCV.js +0 -12
  246. package/examples/js/watch-OrderBook-For-Symbols.js +0 -11
  247. package/examples/js/watch-Trades-For-Symbols.js +0 -11
  248. package/examples/js/watch-tickers.js +0 -11
  249. package/examples/js/watchOHLCVForSymbols.js +0 -15
  250. package/examples/js/watchOrderBookForSymbols.js +0 -11
  251. package/examples/js/watchPositions-many-exchanges-continuosly.d.ts +0 -2
  252. package/examples/js/watchPositions-many-exchanges-continuosly.d.ts.map +0 -1
  253. package/examples/js/watchPositions-many-exchanges-continuosly.js +0 -49
  254. package/examples/js/watchPositions.d.ts +0 -2
  255. package/examples/js/watchPositions.d.ts.map +0 -1
  256. package/examples/js/watchPositions.js +0 -13
  257. package/examples/js/watchPositionsForSymbols.d.ts +0 -2
  258. package/examples/js/watchPositionsForSymbols.d.ts.map +0 -1
  259. package/examples/js/watchPositionsForSymbols.js +0 -14
  260. package/examples/js/watchTradesForSymbols.js +0 -11
  261. package/examples/js/withdraw-from-one-exchange-to-another.js +0 -50
  262. package/examples/php/README.md +0 -7
  263. package/examples/py/README.md +0 -15
  264. package/examples/py/playing_with_ccxt_example.ipynb +0 -222
  265. package/examples/ts/.eslintrc +0 -111
  266. package/examples/ts/benchmark.ts +0 -134
  267. package/examples/ts/build-ohlcv-bars.ts +0 -53
  268. package/examples/ts/cli.ts +0 -397
  269. package/examples/ts/compare-two-exchanges-capabilities.ts +0 -36
  270. package/examples/ts/create-order-position-with-takeprofit-stoploss.ts +0 -89
  271. package/examples/ts/create-order-ws-example.ts +0 -33
  272. package/examples/ts/create-orders-example.ts +0 -21
  273. package/examples/ts/create-trailing-amount-order.ts +0 -37
  274. package/examples/ts/create-trailing-percent-order.ts +0 -37
  275. package/examples/ts/custom-proxy-agent-for-js.ts +0 -14
  276. package/examples/ts/fetch-futures/package-lock.json +0 -116
  277. package/examples/ts/fetch-futures/package.json +0 -34
  278. package/examples/ts/fetch-futures/prettier.config.js +0 -4
  279. package/examples/ts/fetch-futures/src/index.ts +0 -28
  280. package/examples/ts/fetch-futures/tsconfig.json +0 -28
  281. package/examples/ts/fetch-ohlcv-many-exchanges-continuosly.ts +0 -44
  282. package/examples/ts/fetch-ohlcv.ts +0 -17
  283. package/examples/ts/fetch-tickers/package-lock.json +0 -116
  284. package/examples/ts/fetch-tickers/package.json +0 -34
  285. package/examples/ts/fetch-tickers/prettier.config.js +0 -4
  286. package/examples/ts/fetch-tickers/src/index.ts +0 -21
  287. package/examples/ts/fetch-tickers/tsconfig.json +0 -28
  288. package/examples/ts/how-to-import-one-exchange-esm.ts +0 -11
  289. package/examples/ts/kraken-create-and-close-position.ts +0 -69
  290. package/examples/ts/margin-loan-borrow-buy-sell-repay.ts +0 -72
  291. package/examples/ts/nextjs-page-router/.eslintrc.json +0 -3
  292. package/examples/ts/nextjs-page-router/README.md +0 -43
  293. package/examples/ts/nextjs-page-router/next.config.js +0 -6
  294. package/examples/ts/nextjs-page-router/package-lock.json +0 -7425
  295. package/examples/ts/nextjs-page-router/package.json +0 -28
  296. package/examples/ts/nextjs-page-router/postcss.config.js +0 -6
  297. package/examples/ts/nextjs-page-router/public/favicon.ico +0 -0
  298. package/examples/ts/nextjs-page-router/src/pages/_app.tsx +0 -6
  299. package/examples/ts/nextjs-page-router/src/pages/_document.tsx +0 -13
  300. package/examples/ts/nextjs-page-router/src/pages/balance.tsx +0 -46
  301. package/examples/ts/nextjs-page-router/src/pages/index.tsx +0 -8
  302. package/examples/ts/nextjs-page-router/src/pages/tickers.tsx +0 -61
  303. package/examples/ts/nextjs-page-router/src/styles/globals.css +0 -27
  304. package/examples/ts/nextjs-page-router/tailwind.config.ts +0 -20
  305. package/examples/ts/nextjs-page-router/tsconfig.json +0 -22
  306. package/examples/ts/phemex-create-order-position-with-takeprofit-stoploss.ts +0 -62
  307. package/examples/ts/proxy-usage.ts +0 -41
  308. package/examples/ts/sample-local-proxy-server-with-cors.ts +0 -15
  309. package/examples/ts/watch-OHLCV-For-Symbols.ts +0 -17
  310. package/examples/ts/watch-OHLCV.ts +0 -14
  311. package/examples/ts/watch-OrderBook-For-Symbols.ts +0 -13
  312. package/examples/ts/watch-Trades-For-Symbols.ts +0 -13
  313. package/examples/ts/watch-tickers.ts +0 -13
  314. package/examples/ts/watchPositions-many-exchanges-continuosly.ts +0 -53
  315. package/examples/ts/watchPositions.ts +0 -15
  316. package/examples/ts/watchPositionsForSymbols.ts +0 -16
  317. package/examples/tsconfig.json +0 -27
  318. package/examples2md.js +0 -79
  319. package/gource.sh +0 -3
  320. package/index.html +0 -7
  321. package/jsdoc2md.js +0 -122
  322. package/multilang.sh +0 -164
  323. package/pro-tests.json +0 -57
  324. package/pyproject.toml +0 -8
  325. package/rollup.config.js +0 -60
  326. package/skip-tests.json +0 -1653
  327. package/test-commonjs.cjs +0 -65
  328. package/tests-manager.sh +0 -96
  329. package/tsconfig.json +0 -111
  330. package/webpack.config.js +0 -46
@@ -37,6 +37,7 @@ class hyperliquid extends hyperliquid$1 {
37
37
  'cancelAllOrders': false,
38
38
  'cancelOrder': true,
39
39
  'cancelOrders': true,
40
+ 'cancelOrdersForSymbols': true,
40
41
  'closeAllPositions': false,
41
42
  'closePosition': false,
42
43
  'createMarketBuyOrderWithCost': false,
@@ -1219,6 +1220,79 @@ class hyperliquid extends hyperliquid$1 {
1219
1220
  //
1220
1221
  return response;
1221
1222
  }
1223
+ async cancelOrdersForSymbols(orders, params = {}) {
1224
+ /**
1225
+ * @method
1226
+ * @name hyperliquid#cancelOrdersForSymbols
1227
+ * @description cancel multiple orders for multiple symbols
1228
+ * @see https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint#cancel-order-s
1229
+ * @see https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint#cancel-order-s-by-cloid
1230
+ * @param {CancellationRequest[]} orders each order should contain the parameters required by cancelOrder namely id and symbol
1231
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1232
+ * @param {string} [params.vaultAddress] the vault address
1233
+ * @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1234
+ */
1235
+ this.checkRequiredCredentials();
1236
+ await this.loadMarkets();
1237
+ const nonce = this.milliseconds();
1238
+ const request = {
1239
+ 'nonce': nonce,
1240
+ // 'vaultAddress': vaultAddress,
1241
+ };
1242
+ const cancelReq = [];
1243
+ const cancelAction = {
1244
+ 'type': '',
1245
+ 'cancels': [],
1246
+ };
1247
+ let cancelByCloid = false;
1248
+ for (let i = 0; i < orders.length; i++) {
1249
+ const order = orders[i];
1250
+ const clientOrderId = this.safeString(order, 'clientOrderId');
1251
+ if (clientOrderId !== undefined) {
1252
+ cancelByCloid = true;
1253
+ }
1254
+ const id = this.safeString(order, 'id');
1255
+ const symbol = this.safeString(order, 'symbol');
1256
+ if (symbol === undefined) {
1257
+ throw new errors.ArgumentsRequired(this.id + ' cancelOrdersForSymbols() requires a symbol argument in each order');
1258
+ }
1259
+ if (id !== undefined && cancelByCloid) {
1260
+ throw new errors.BadRequest(this.id + ' cancelOrdersForSymbols() all orders must have either id or clientOrderId');
1261
+ }
1262
+ const assetKey = cancelByCloid ? 'asset' : 'a';
1263
+ const idKey = cancelByCloid ? 'cloid' : 'o';
1264
+ const market = this.market(symbol);
1265
+ const cancelObj = {};
1266
+ cancelObj[assetKey] = this.parseToNumeric(market['baseId']);
1267
+ cancelObj[idKey] = cancelByCloid ? clientOrderId : this.parseToNumeric(id);
1268
+ cancelReq.push(cancelObj);
1269
+ }
1270
+ cancelAction['type'] = cancelByCloid ? 'cancelByCloid' : 'cancel';
1271
+ cancelAction['cancels'] = cancelReq;
1272
+ const vaultAddress = this.formatVaultAddress(this.safeString(params, 'vaultAddress'));
1273
+ const signature = this.signL1Action(cancelAction, nonce, vaultAddress);
1274
+ request['action'] = cancelAction;
1275
+ request['signature'] = signature;
1276
+ if (vaultAddress !== undefined) {
1277
+ params = this.omit(params, 'vaultAddress');
1278
+ request['vaultAddress'] = vaultAddress;
1279
+ }
1280
+ const response = await this.privatePostExchange(this.extend(request, params));
1281
+ //
1282
+ // {
1283
+ // "status":"ok",
1284
+ // "response":{
1285
+ // "type":"cancel",
1286
+ // "data":{
1287
+ // "statuses":[
1288
+ // "success"
1289
+ // ]
1290
+ // }
1291
+ // }
1292
+ // }
1293
+ //
1294
+ return response;
1295
+ }
1222
1296
  async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
1223
1297
  /**
1224
1298
  * @method
@@ -1377,7 +1377,7 @@ class kraken extends kraken$1 {
1377
1377
  'ordertype': type,
1378
1378
  'volume': this.amountToPrecision(symbol, amount),
1379
1379
  };
1380
- const orderRequest = this.orderRequest('createOrder()', symbol, type, request, price, params);
1380
+ const orderRequest = this.orderRequest('createOrder', symbol, type, request, price, params);
1381
1381
  const response = await this.privatePostAddOrder(this.extend(orderRequest[0], orderRequest[1]));
1382
1382
  //
1383
1383
  // {
@@ -1742,7 +1742,12 @@ class kraken extends kraken$1 {
1742
1742
  }
1743
1743
  }
1744
1744
  if (reduceOnly) {
1745
- request['reduce_only'] = 'true'; // not using boolean in this case, because the urlencodedNested transforms it into 'True' string
1745
+ if (method === 'createOrderWs') {
1746
+ request['reduce_only'] = true; // ws request can't have stringified bool
1747
+ }
1748
+ else {
1749
+ request['reduce_only'] = 'true'; // not using boolean in this case, because the urlencodedNested transforms it into 'True' string
1750
+ }
1746
1751
  }
1747
1752
  let close = this.safeValue(params, 'close');
1748
1753
  if (close !== undefined) {
@@ -1803,7 +1808,7 @@ class kraken extends kraken$1 {
1803
1808
  if (amount !== undefined) {
1804
1809
  request['volume'] = this.amountToPrecision(symbol, amount);
1805
1810
  }
1806
- const orderRequest = this.orderRequest('editOrder()', symbol, type, request, price, params);
1811
+ const orderRequest = this.orderRequest('editOrder', symbol, type, request, price, params);
1807
1812
  const response = await this.privatePostEditOrder(this.extend(orderRequest[0], orderRequest[1]));
1808
1813
  //
1809
1814
  // {
@@ -587,6 +587,8 @@ class kucoin extends kucoin$1 {
587
587
  'BIFI': 'BIFIF',
588
588
  'VAI': 'VAIOT',
589
589
  'WAX': 'WAXP',
590
+ 'ALT': 'APTOSLAUNCHTOKEN',
591
+ 'KALT': 'ALT', // ALTLAYER
590
592
  },
591
593
  'options': {
592
594
  'version': 'v1',
@@ -1807,7 +1809,7 @@ class kucoin extends kucoin$1 {
1807
1809
  }
1808
1810
  let code = undefined;
1809
1811
  if (currency !== undefined) {
1810
- code = currency['id'];
1812
+ code = this.safeCurrencyCode(currency['id']);
1811
1813
  if (code !== 'NIM') {
1812
1814
  // contains spaces
1813
1815
  this.checkAddress(address);
@@ -1857,7 +1859,7 @@ class kucoin extends kucoin$1 {
1857
1859
  this.options['versions']['private']['GET']['deposit-addresses'] = version;
1858
1860
  const chains = this.safeList(response, 'data', []);
1859
1861
  const parsed = this.parseDepositAddresses(chains, [currency['code']], false, {
1860
- 'currency': currency['id'],
1862
+ 'currency': currency['code'],
1861
1863
  });
1862
1864
  return this.indexBy(parsed, 'network');
1863
1865
  }
@@ -2971,7 +2973,7 @@ class kucoin extends kucoin$1 {
2971
2973
  * @method
2972
2974
  * @name kucoin#fetchTrades
2973
2975
  * @description get the list of most recent trades for a particular symbol
2974
- * @see https://docs.kucoin.com/#get-trade-histories
2976
+ * @see https://www.kucoin.com/docs/rest/spot-trading/market-data/get-trade-histories
2975
2977
  * @param {string} symbol unified symbol of the market to fetch trades for
2976
2978
  * @param {int} [since] timestamp in ms of the earliest trade to fetch
2977
2979
  * @param {int} [limit] the maximum amount of trades to fetch
@@ -3144,7 +3146,7 @@ class kucoin extends kucoin$1 {
3144
3146
  * @method
3145
3147
  * @name kucoin#fetchTradingFee
3146
3148
  * @description fetch the trading fees for a market
3147
- * @see https://docs.kucoin.com/#actual-fee-rate-of-the-trading-pair
3149
+ * @see https://www.kucoin.com/docs/rest/funding/trade-fee/trading-pair-actual-fee-spot-margin-trade_hf
3148
3150
  * @param {string} symbol unified market symbol
3149
3151
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3150
3152
  * @returns {object} a [fee structure]{@link https://docs.ccxt.com/#/?id=fee-structure}
@@ -3184,7 +3186,7 @@ class kucoin extends kucoin$1 {
3184
3186
  * @method
3185
3187
  * @name kucoin#withdraw
3186
3188
  * @description make a withdrawal
3187
- * @see https://docs.kucoin.com/#apply-withdraw-2
3189
+ * @see https://www.kucoin.com/docs/rest/funding/withdrawals/apply-withdraw
3188
3190
  * @param {string} code unified currency code
3189
3191
  * @param {float} amount the amount to withdraw
3190
3192
  * @param {string} address the address to withdraw to
@@ -3359,8 +3361,8 @@ class kucoin extends kucoin$1 {
3359
3361
  * @method
3360
3362
  * @name kucoin#fetchDeposits
3361
3363
  * @description fetch all deposits made to an account
3362
- * @see https://docs.kucoin.com/#get-deposit-list
3363
- * @see https://docs.kucoin.com/#get-v1-historical-deposits-list
3364
+ * @see https://www.kucoin.com/docs/rest/funding/deposit/get-deposit-list
3365
+ * @see https://www.kucoin.com/docs/rest/funding/deposit/get-v1-historical-deposits-list
3364
3366
  * @param {string} code unified currency code
3365
3367
  * @param {int} [since] the earliest time in ms to fetch deposits for
3366
3368
  * @param {int} [limit] the maximum number of deposits structures to retrieve
@@ -3443,8 +3445,8 @@ class kucoin extends kucoin$1 {
3443
3445
  * @method
3444
3446
  * @name kucoin#fetchWithdrawals
3445
3447
  * @description fetch all withdrawals made from an account
3446
- * @see https://docs.kucoin.com/#get-withdrawals-list
3447
- * @see https://docs.kucoin.com/#get-v1-historical-withdrawals-list
3448
+ * @see https://www.kucoin.com/docs/rest/funding/withdrawals/get-withdrawals-list
3449
+ * @see https://www.kucoin.com/docs/rest/funding/withdrawals/get-v1-historical-withdrawals-list
3448
3450
  * @param {string} code unified currency code
3449
3451
  * @param {int} [since] the earliest time in ms to fetch withdrawals for
3450
3452
  * @param {int} [limit] the maximum number of withdrawals structures to retrieve
@@ -3718,7 +3720,7 @@ class kucoin extends kucoin$1 {
3718
3720
  * @method
3719
3721
  * @name kucoin#transfer
3720
3722
  * @description transfer currency internally between wallets on the same account
3721
- * @see https://docs.kucoin.com/#inner-transfer
3723
+ * @see https://www.kucoin.com/docs/rest/funding/transfer/inner-transfer
3722
3724
  * @see https://docs.kucoin.com/futures/#transfer-funds-to-kucoin-main-account-2
3723
3725
  * @see https://docs.kucoin.com/spot-hf/#internal-funds-transfers-in-high-frequency-trading-accounts
3724
3726
  * @param {string} code unified currency code
@@ -4001,7 +4003,7 @@ class kucoin extends kucoin$1 {
4001
4003
  /**
4002
4004
  * @method
4003
4005
  * @name kucoin#fetchLedger
4004
- * @see https://docs.kucoin.com/#get-account-ledgers
4006
+ * @see https://www.kucoin.com/docs/rest/account/basic-info/get-account-ledgers-spot-margin
4005
4007
  * @see https://www.kucoin.com/docs/rest/account/basic-info/get-account-ledgers-trade_hf
4006
4008
  * @see https://www.kucoin.com/docs/rest/account/basic-info/get-account-ledgers-margin_hf
4007
4009
  * @description fetch the history of changes, actions done by the user or operations that altered balance of the user
@@ -35,6 +35,7 @@ class okx extends okx$1 {
35
35
  'cancelOrders': true,
36
36
  'closeAllPositions': false,
37
37
  'closePosition': true,
38
+ 'createConvertTrade': true,
38
39
  'createDepositAddress': false,
39
40
  'createMarketBuyOrderWithCost': true,
40
41
  'createMarketSellOrderWithCost': true,
@@ -7658,6 +7659,59 @@ class okx extends okx$1 {
7658
7659
  const toCurrency = this.currency(toCurrencyId);
7659
7660
  return this.parseConversion(result, fromCurrency, toCurrency);
7660
7661
  }
7662
+ async createConvertTrade(id, fromCode, toCode, amount = undefined, params = {}) {
7663
+ /**
7664
+ * @method
7665
+ * @name okx#createConvertTrade
7666
+ * @description convert from one currency to another
7667
+ * @see https://www.okx.com/docs-v5/en/#funding-account-rest-api-convert-trade
7668
+ * @param {string} id the id of the trade that you want to make
7669
+ * @param {string} fromCode the currency that you want to sell and convert from
7670
+ * @param {string} toCode the currency that you want to buy and convert into
7671
+ * @param {float} [amount] how much you want to trade in units of the from currency
7672
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
7673
+ * @returns {object} a [conversion structure]{@link https://docs.ccxt.com/#/?id=conversion-structure}
7674
+ */
7675
+ await this.loadMarkets();
7676
+ const request = {
7677
+ 'quoteId': id,
7678
+ 'baseCcy': fromCode,
7679
+ 'quoteCcy': toCode,
7680
+ 'szCcy': fromCode,
7681
+ 'sz': this.numberToString(amount),
7682
+ 'side': 'sell',
7683
+ };
7684
+ const response = await this.privatePostAssetConvertTrade(this.extend(request, params));
7685
+ //
7686
+ // {
7687
+ // "code": "0",
7688
+ // "data": [
7689
+ // {
7690
+ // "baseCcy": "ETH",
7691
+ // "clTReqId": "",
7692
+ // "fillBaseSz": "0.01023052",
7693
+ // "fillPx": "2932.40104429",
7694
+ // "fillQuoteSz": "30",
7695
+ // "instId": "ETH-USDT",
7696
+ // "quoteCcy": "USDT",
7697
+ // "quoteId": "quoterETH-USDT16461885104612381",
7698
+ // "side": "buy",
7699
+ // "state": "fullyFilled",
7700
+ // "tradeId": "trader16461885203381437",
7701
+ // "ts": "1646188520338"
7702
+ // }
7703
+ // ],
7704
+ // "msg": ""
7705
+ // }
7706
+ //
7707
+ const data = this.safeList(response, 'data', []);
7708
+ const result = this.safeDict(data, 0, {});
7709
+ const fromCurrencyId = this.safeString(result, 'baseCcy', fromCode);
7710
+ const fromCurrency = this.currency(fromCurrencyId);
7711
+ const toCurrencyId = this.safeString(result, 'quoteCcy', toCode);
7712
+ const toCurrency = this.currency(toCurrencyId);
7713
+ return this.parseConversion(result, fromCurrency, toCurrency);
7714
+ }
7661
7715
  parseConversion(conversion, fromCurrency = undefined, toCurrency = undefined) {
7662
7716
  //
7663
7717
  // fetchConvertQuote
@@ -7678,7 +7732,24 @@ class okx extends okx$1 {
7678
7732
  // "ttlMs": "10000"
7679
7733
  // }
7680
7734
  //
7681
- const timestamp = this.safeInteger(conversion, 'quoteTime');
7735
+ // createConvertTrade
7736
+ //
7737
+ // {
7738
+ // "baseCcy": "ETH",
7739
+ // "clTReqId": "",
7740
+ // "fillBaseSz": "0.01023052",
7741
+ // "fillPx": "2932.40104429",
7742
+ // "fillQuoteSz": "30",
7743
+ // "instId": "ETH-USDT",
7744
+ // "quoteCcy": "USDT",
7745
+ // "quoteId": "quoterETH-USDT16461885104612381",
7746
+ // "side": "buy",
7747
+ // "state": "fullyFilled",
7748
+ // "tradeId": "trader16461885203381437",
7749
+ // "ts": "1646188520338"
7750
+ // }
7751
+ //
7752
+ const timestamp = this.safeInteger2(conversion, 'quoteTime', 'ts');
7682
7753
  const fromCoin = this.safeString(conversion, 'baseCcy');
7683
7754
  const fromCode = this.safeCurrencyCode(fromCoin, fromCurrency);
7684
7755
  const to = this.safeString(conversion, 'quoteCcy');
@@ -7687,12 +7758,12 @@ class okx extends okx$1 {
7687
7758
  'info': conversion,
7688
7759
  'timestamp': timestamp,
7689
7760
  'datetime': this.iso8601(timestamp),
7690
- 'id': this.safeString(conversion, 'clQReqId'),
7761
+ 'id': this.safeStringN(conversion, ['clQReqId', 'tradeId', 'quoteId']),
7691
7762
  'fromCurrency': fromCode,
7692
- 'fromAmount': this.safeNumber(conversion, 'baseSz'),
7763
+ 'fromAmount': this.safeNumber2(conversion, 'baseSz', 'fillBaseSz'),
7693
7764
  'toCurrency': toCode,
7694
- 'toAmount': this.safeNumber(conversion, 'quoteSz'),
7695
- 'price': this.safeNumber(conversion, 'cnvtPx'),
7765
+ 'toAmount': this.safeNumber2(conversion, 'quoteSz', 'fillQuoteSz'),
7766
+ 'price': this.safeNumber2(conversion, 'cnvtPx', 'fillPx'),
7696
7767
  'fee': undefined,
7697
7768
  };
7698
7769
  }
@@ -134,7 +134,7 @@ class kraken extends kraken$1 {
134
134
  'pair': market['wsId'],
135
135
  'volume': this.amountToPrecision(symbol, amount),
136
136
  };
137
- [request, params] = this.orderRequest('createOrderWs()', symbol, type, request, price, params);
137
+ [request, params] = this.orderRequest('createOrderWs', symbol, type, request, price, params);
138
138
  return await this.watch(url, messageHash, this.extend(request, params), messageHash);
139
139
  }
140
140
  handleCreateEditOrder(client, message) {
@@ -190,7 +190,7 @@ class kraken extends kraken$1 {
190
190
  'pair': market['wsId'],
191
191
  'volume': this.amountToPrecision(symbol, amount),
192
192
  };
193
- [request, params] = this.orderRequest('editOrderWs()', symbol, type, request, price, params);
193
+ [request, params] = this.orderRequest('editOrderWs', symbol, type, request, price, params);
194
194
  return await this.watch(url, messageHash, this.extend(request, params), messageHash);
195
195
  }
196
196
  async cancelOrdersWs(ids, symbol = undefined, params = {}) {
@@ -36,6 +36,7 @@ class woo extends woo$1 {
36
36
  'cancelWithdraw': false,
37
37
  'closeAllPositions': false,
38
38
  'closePosition': false,
39
+ 'createConvertTrade': true,
39
40
  'createDepositAddress': false,
40
41
  'createMarketBuyOrderWithCost': true,
41
42
  'createMarketOrder': false,
@@ -3029,6 +3030,37 @@ class woo extends woo$1 {
3029
3030
  const toCurrency = this.currency(toCurrencyId);
3030
3031
  return this.parseConversion(data, fromCurrency, toCurrency);
3031
3032
  }
3033
+ async createConvertTrade(id, fromCode, toCode, amount = undefined, params = {}) {
3034
+ /**
3035
+ * @method
3036
+ * @name woo#createConvertTrade
3037
+ * @description convert from one currency to another
3038
+ * @see https://docs.woo.org/#send-quote-rft
3039
+ * @param {string} id the id of the trade that you want to make
3040
+ * @param {string} fromCode the currency that you want to sell and convert from
3041
+ * @param {string} toCode the currency that you want to buy and convert into
3042
+ * @param {float} [amount] how much you want to trade in units of the from currency
3043
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3044
+ * @returns {object} a [conversion structure]{@link https://docs.ccxt.com/#/?id=conversion-structure}
3045
+ */
3046
+ await this.loadMarkets();
3047
+ const request = {
3048
+ 'quoteId': id,
3049
+ };
3050
+ const response = await this.v3PrivatePostConvertRft(this.extend(request, params));
3051
+ //
3052
+ // {
3053
+ // "success": true,
3054
+ // "data": {
3055
+ // "quoteId": 123123123,
3056
+ // "counterPartyId": "",
3057
+ // "rftAccepted": 1 // 1 -> success; 2 -> processing; 3 -> fail
3058
+ // }
3059
+ // }
3060
+ //
3061
+ const data = this.safeDict(response, 'data', {});
3062
+ return this.parseConversion(data);
3063
+ }
3032
3064
  parseConversion(conversion, fromCurrency = undefined, toCurrency = undefined) {
3033
3065
  //
3034
3066
  // fetchConvertQuote
@@ -3045,6 +3077,14 @@ class woo extends woo$1 {
3045
3077
  // "message": 1659084466000
3046
3078
  // }
3047
3079
  //
3080
+ // createConvertTrade
3081
+ //
3082
+ // {
3083
+ // "quoteId": 123123123,
3084
+ // "counterPartyId": "",
3085
+ // "rftAccepted": 1 // 1 -> success; 2 -> processing; 3 -> fail
3086
+ // }
3087
+ //
3048
3088
  const timestamp = this.safeInteger(conversion, 'expireTimestamp');
3049
3089
  const fromCoin = this.safeString(conversion, 'sellToken');
3050
3090
  const fromCode = this.safeCurrencyCode(fromCoin, fromCurrency);
package/js/ccxt.d.ts CHANGED
@@ -4,7 +4,7 @@ import * as functions from './src/base/functions.js';
4
4
  import * as errors from './src/base/errors.js';
5
5
  import type { Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks, Leverage, Leverages, Option, OptionChain, Conversion } from './src/base/types.js';
6
6
  import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout } from './src/base/errors.js';
7
- declare const version = "4.2.99";
7
+ declare const version = "4.3.1";
8
8
  import ace from './src/ace.js';
9
9
  import alpaca from './src/alpaca.js';
10
10
  import ascendex from './src/ascendex.js';
package/js/ccxt.js CHANGED
@@ -38,7 +38,7 @@ import * as errors from './src/base/errors.js';
38
38
  import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout } from './src/base/errors.js';
39
39
  //-----------------------------------------------------------------------------
40
40
  // this is updated by vss.js when building
41
- const version = '4.2.100';
41
+ const version = '4.3.2';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
44
  import ace from './src/ace.js';
@@ -3,7 +3,7 @@ import { // eslint-disable-line object-curly-newline
3
3
  ExchangeError, AuthenticationError, DDoSProtection, RequestTimeout, ExchangeNotAvailable, RateLimitExceeded } from "./errors.js";
4
4
  import WsClient from './ws/WsClient.js';
5
5
  import { OrderBook as WsOrderBook, IndexedOrderBook, CountedOrderBook } from './ws/OrderBook.js';
6
- import type { Market, Trade, Ticker, OHLCV, OHLCVC, Order, OrderBook, Balance, Balances, Dictionary, Transaction, DepositAddressResponse, Currency, MinMax, IndexType, Int, OrderType, OrderSide, Position, FundingRate, DepositWithdrawFeeNetwork, LedgerEntry, BorrowInterest, OpenInterest, LeverageTier, TransferEntry, FundingRateHistory, Liquidation, FundingHistory, OrderRequest, MarginMode, Tickers, Greeks, Option, OptionChain, Str, Num, MarketInterface, CurrencyInterface, BalanceAccount, MarginModes, MarketType, Leverage, Leverages, LastPrice, LastPrices, Account, Strings, MarginModification, TradingFeeInterface, Currencies, TradingFees, Conversion } from './types.js';
6
+ import type { Market, Trade, Ticker, OHLCV, OHLCVC, Order, OrderBook, Balance, Balances, Dictionary, Transaction, DepositAddressResponse, Currency, MinMax, IndexType, Int, OrderType, OrderSide, Position, FundingRate, DepositWithdrawFeeNetwork, LedgerEntry, BorrowInterest, OpenInterest, LeverageTier, TransferEntry, FundingRateHistory, Liquidation, FundingHistory, OrderRequest, MarginMode, Tickers, Greeks, Option, OptionChain, Str, Num, MarketInterface, CurrencyInterface, BalanceAccount, MarginModes, MarketType, Leverage, Leverages, LastPrice, LastPrices, Account, Strings, MarginModification, TradingFeeInterface, Currencies, TradingFees, Conversion, CancellationRequest } from './types.js';
7
7
  export type { Market, Trade, Fee, Ticker, OHLCV, OHLCVC, Order, OrderBook, Balance, Balances, Dictionary, Transaction, DepositAddressResponse, Currency, MinMax, IndexType, Int, OrderType, OrderSide, Position, LedgerEntry, BorrowInterest, OpenInterest, LeverageTier, TransferEntry, BorrowRate, FundingRateHistory, Liquidation, FundingHistory, OrderRequest, MarginMode, Tickers, Greeks, Option, OptionChain, Str, Num, MarketInterface, CurrencyInterface, BalanceAccount, MarginModes, MarketType, Leverage, Leverages, LastPrice, LastPrices, Account, Strings, Conversion } from './types.js';
8
8
  import { ArrayCache, ArrayCacheByTimestamp } from './ws/Cache.js';
9
9
  import { OrderBook as Ob } from './ws/OrderBook.js';
@@ -894,6 +894,7 @@ export default class Exchange {
894
894
  cancelOrderWs(id: string, symbol?: Str, params?: {}): Promise<{}>;
895
895
  cancelOrdersWs(ids: string[], symbol?: Str, params?: {}): Promise<{}>;
896
896
  cancelAllOrders(symbol?: Str, params?: {}): Promise<{}>;
897
+ cancelOrdersForSymbols(orders: CancellationRequest[], params?: {}): Promise<{}>;
897
898
  cancelAllOrdersWs(symbol?: Str, params?: {}): Promise<{}>;
898
899
  cancelUnifiedOrder(order: any, params?: {}): Promise<{}>;
899
900
  fetchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
@@ -4464,6 +4464,9 @@ export default class Exchange {
4464
4464
  async cancelAllOrders(symbol = undefined, params = {}) {
4465
4465
  throw new NotSupported(this.id + ' cancelAllOrders() is not supported yet');
4466
4466
  }
4467
+ async cancelOrdersForSymbols(orders, params = {}) {
4468
+ throw new NotSupported(this.id + ' cancelOrdersForSymbols() is not supported yet');
4469
+ }
4467
4470
  async cancelAllOrdersWs(symbol = undefined, params = {}) {
4468
4471
  throw new NotSupported(this.id + ' cancelAllOrdersWs() is not supported yet');
4469
4472
  }
@@ -393,6 +393,11 @@ export interface OrderRequest {
393
393
  price?: number | undefined;
394
394
  params?: any;
395
395
  }
396
+ export interface CancellationRequest {
397
+ id: string;
398
+ clientOrderId?: string;
399
+ symbol: string;
400
+ }
396
401
  export interface FundingHistory {
397
402
  info: any;
398
403
  symbol: string;
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/binance.js';
2
- import type { TransferEntry, Int, OrderSide, Balances, OrderType, Trade, OHLCV, Order, FundingRateHistory, OpenInterest, Liquidation, OrderRequest, Str, Transaction, Ticker, OrderBook, Tickers, Market, Greeks, Strings, Currency, MarketInterface, MarginMode, MarginModes, Leverage, Leverages, Num, Option, MarginModification, TradingFeeInterface, Currencies, TradingFees } from './base/types.js';
2
+ import type { TransferEntry, Int, OrderSide, Balances, OrderType, Trade, OHLCV, Order, FundingRateHistory, OpenInterest, Liquidation, OrderRequest, Str, Transaction, Ticker, OrderBook, Tickers, Market, Greeks, Strings, Currency, MarketInterface, MarginMode, MarginModes, Leverage, Leverages, Num, Option, MarginModification, TradingFeeInterface, Currencies, TradingFees, Conversion } from './base/types.js';
3
3
  /**
4
4
  * @class binance
5
5
  * @augments Exchange
@@ -440,4 +440,6 @@ export default class binance extends Exchange {
440
440
  };
441
441
  fetchMarginAdjustmentHistory(symbol?: Str, type?: Str, since?: Num, limit?: Num, params?: {}): Promise<MarginModification[]>;
442
442
  fetchConvertCurrencies(params?: {}): Promise<Currencies>;
443
+ createConvertTrade(id: string, fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
444
+ parseConversion(conversion: any, fromCurrency?: Currency, toCurrency?: Currency): Conversion;
443
445
  }
package/js/src/binance.js CHANGED
@@ -43,6 +43,7 @@ export default class binance extends Exchange {
43
43
  'cancelOrders': true,
44
44
  'closeAllPositions': false,
45
45
  'closePosition': false,
46
+ 'createConvertTrade': true,
46
47
  'createDepositAddress': false,
47
48
  'createLimitBuyOrder': true,
48
49
  'createLimitSellOrder': true,
@@ -12649,4 +12650,59 @@ export default class binance extends Exchange {
12649
12650
  }
12650
12651
  return result;
12651
12652
  }
12653
+ async createConvertTrade(id, fromCode, toCode, amount = undefined, params = {}) {
12654
+ /**
12655
+ * @method
12656
+ * @name binance#createConvertTrade
12657
+ * @description convert from one currency to another
12658
+ * @see https://binance-docs.github.io/apidocs/spot/en/#busd-convert-trade
12659
+ * @param {string} id the id of the trade that you want to make
12660
+ * @param {string} fromCode the currency that you want to sell and convert from
12661
+ * @param {string} toCode the currency that you want to buy and convert into
12662
+ * @param {float} [amount] how much you want to trade in units of the from currency
12663
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
12664
+ * @returns {object} a [conversion structure]{@link https://docs.ccxt.com/#/?id=conversion-structure}
12665
+ */
12666
+ await this.loadMarkets();
12667
+ const request = {
12668
+ 'clientTranId': id,
12669
+ 'asset': fromCode,
12670
+ 'targetAsset': toCode,
12671
+ 'amount': amount,
12672
+ };
12673
+ const response = await this.sapiPostAssetConvertTransfer(this.extend(request, params));
12674
+ //
12675
+ // {
12676
+ // "tranId": 118263407119,
12677
+ // "status": "S"
12678
+ // }
12679
+ //
12680
+ const fromCurrency = this.currency(fromCode);
12681
+ const toCurrency = this.currency(toCode);
12682
+ return this.parseConversion(response, fromCurrency, toCurrency);
12683
+ }
12684
+ parseConversion(conversion, fromCurrency = undefined, toCurrency = undefined) {
12685
+ //
12686
+ // createConvertTrade
12687
+ //
12688
+ // {
12689
+ // "tranId": 118263407119,
12690
+ // "status": "S"
12691
+ // }
12692
+ //
12693
+ const fromCode = this.safeCurrencyCode(undefined, fromCurrency);
12694
+ const toCode = this.safeCurrencyCode(undefined, toCurrency);
12695
+ return {
12696
+ 'info': conversion,
12697
+ 'timestamp': undefined,
12698
+ 'datetime': undefined,
12699
+ 'id': this.safeString(conversion, 'tranId'),
12700
+ 'fromCurrency': fromCode,
12701
+ 'fromAmount': undefined,
12702
+ 'toCurrency': toCode,
12703
+ 'toAmount': undefined,
12704
+ 'price': undefined,
12705
+ 'fee': undefined,
12706
+ };
12707
+ }
12652
12708
  }
package/js/src/bingx.js CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  // ---------------------------------------------------------------------------
8
8
  import Exchange from './abstract/bingx.js';
9
- import { AuthenticationError, PermissionDenied, AccountSuspended, ExchangeError, InsufficientFunds, BadRequest, OrderNotFound, DDoSProtection, BadSymbol, ArgumentsRequired, NotSupported } from './base/errors.js';
9
+ import { AuthenticationError, PermissionDenied, AccountSuspended, ExchangeError, InsufficientFunds, BadRequest, OrderNotFound, DDoSProtection, BadSymbol, ArgumentsRequired, NotSupported, ExchangeNotAvailable } from './base/errors.js';
10
10
  import { Precise } from './base/Precise.js';
11
11
  import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
12
12
  import { DECIMAL_PLACES } from './base/functions/number.js';
@@ -387,7 +387,7 @@ export default class bingx extends Exchange {
387
387
  '100400': BadRequest,
388
388
  '100421': BadSymbol,
389
389
  '100440': ExchangeError,
390
- '100500': ExchangeError,
390
+ '100500': ExchangeNotAvailable,
391
391
  '100503': ExchangeError,
392
392
  '80001': BadRequest,
393
393
  '80012': InsufficientFunds,
@@ -3979,7 +3979,7 @@ export default class bingx extends Exchange {
3979
3979
  let market = undefined;
3980
3980
  if (symbol !== undefined) {
3981
3981
  market = this.market(symbol);
3982
- request['symbol'] = symbol;
3982
+ request['symbol'] = market['id'];
3983
3983
  }
3984
3984
  if (since !== undefined) {
3985
3985
  request['startTime'] = since;
@@ -283,6 +283,7 @@ export default class bitget extends Exchange {
283
283
  fetchMarginMode(symbol: string, params?: {}): Promise<MarginMode>;
284
284
  parseMarginMode(marginMode: any, market?: any): MarginMode;
285
285
  fetchConvertQuote(fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
286
+ createConvertTrade(id: string, fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
286
287
  parseConversion(conversion: any, fromCurrency?: Currency, toCurrency?: Currency): Conversion;
287
288
  fetchConvertCurrencies(params?: {}): Promise<Currencies>;
288
289
  handleErrors(code: any, reason: any, url: any, method: any, headers: any, body: any, response: any, requestHeaders: any, requestBody: any): any;