ccxt 4.4.98 → 4.4.100

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 (1035) hide show
  1. package/README.md +7 -6
  2. package/dist/373.ccxt.browser.js +7630 -0
  3. package/dist/373.ccxt.browser.min.js +1 -0
  4. package/dist/ccxt.browser.min.js +8 -8
  5. package/dist/cjs/ccxt.js +289 -286
  6. package/dist/cjs/src/abstract/alpaca.js +4 -2
  7. package/dist/cjs/src/abstract/apex.js +4 -2
  8. package/dist/cjs/src/abstract/ascendex.js +4 -2
  9. package/dist/cjs/src/abstract/bigone.js +4 -2
  10. package/dist/cjs/src/abstract/binance.js +4 -2
  11. package/dist/cjs/src/abstract/bingx.js +4 -2
  12. package/dist/cjs/src/abstract/bit2c.js +4 -2
  13. package/dist/cjs/src/abstract/bitbank.js +4 -2
  14. package/dist/cjs/src/abstract/bitbns.js +4 -2
  15. package/dist/cjs/src/abstract/bitfinex.js +4 -2
  16. package/dist/cjs/src/abstract/bitflyer.js +4 -2
  17. package/dist/cjs/src/abstract/bitget.js +4 -2
  18. package/dist/cjs/src/abstract/bithumb.js +4 -2
  19. package/dist/cjs/src/abstract/bitmart.js +4 -2
  20. package/dist/cjs/src/abstract/bitmex.js +4 -2
  21. package/dist/cjs/src/abstract/bitopro.js +4 -2
  22. package/dist/cjs/src/abstract/bitrue.js +4 -2
  23. package/dist/cjs/src/abstract/bitso.js +4 -2
  24. package/dist/cjs/src/abstract/bitstamp.js +4 -2
  25. package/dist/cjs/src/abstract/bitteam.js +4 -2
  26. package/dist/cjs/src/abstract/bittrade.js +4 -2
  27. package/dist/cjs/src/abstract/bitvavo.js +4 -2
  28. package/dist/cjs/src/abstract/blockchaincom.js +4 -2
  29. package/dist/cjs/src/abstract/blofin.js +4 -2
  30. package/dist/cjs/src/abstract/btcalpha.js +4 -2
  31. package/dist/cjs/src/abstract/btcbox.js +4 -2
  32. package/dist/cjs/src/abstract/btcmarkets.js +4 -2
  33. package/dist/cjs/src/abstract/btcturk.js +4 -2
  34. package/dist/cjs/src/abstract/bybit.js +4 -2
  35. package/dist/cjs/src/abstract/cex.js +4 -2
  36. package/dist/cjs/src/abstract/coinbase.js +4 -2
  37. package/dist/cjs/src/abstract/coinbaseexchange.js +4 -2
  38. package/dist/cjs/src/abstract/coinbaseinternational.js +4 -2
  39. package/dist/cjs/src/abstract/coincatch.js +4 -2
  40. package/dist/cjs/src/abstract/coincheck.js +4 -2
  41. package/dist/cjs/src/abstract/coinex.js +4 -2
  42. package/dist/cjs/src/abstract/coinmate.js +4 -2
  43. package/dist/cjs/src/abstract/coinmetro.js +4 -2
  44. package/dist/cjs/src/abstract/coinone.js +4 -2
  45. package/dist/cjs/src/abstract/coinsph.js +4 -2
  46. package/dist/cjs/src/abstract/coinspot.js +4 -2
  47. package/dist/cjs/src/abstract/cryptocom.js +4 -2
  48. package/dist/cjs/src/abstract/cryptomus.js +4 -2
  49. package/dist/cjs/src/abstract/defx.js +4 -2
  50. package/dist/cjs/src/abstract/delta.js +4 -2
  51. package/dist/cjs/src/abstract/deribit.js +4 -2
  52. package/dist/cjs/src/abstract/derive.js +4 -2
  53. package/dist/cjs/src/abstract/digifinex.js +4 -2
  54. package/dist/cjs/src/abstract/ellipx.js +4 -2
  55. package/dist/cjs/src/abstract/exmo.js +4 -2
  56. package/dist/cjs/src/abstract/foxbit.js +4 -2
  57. package/dist/cjs/src/abstract/gate.js +4 -2
  58. package/dist/cjs/src/abstract/gemini.js +4 -2
  59. package/dist/cjs/src/abstract/hashkey.js +4 -2
  60. package/dist/cjs/src/abstract/hibachi.js +11 -0
  61. package/dist/cjs/src/abstract/hitbtc.js +4 -2
  62. package/dist/cjs/src/abstract/hollaex.js +4 -2
  63. package/dist/cjs/src/abstract/htx.js +4 -2
  64. package/dist/cjs/src/abstract/hyperliquid.js +4 -2
  65. package/dist/cjs/src/abstract/independentreserve.js +4 -2
  66. package/dist/cjs/src/abstract/indodax.js +4 -2
  67. package/dist/cjs/src/abstract/kraken.js +4 -2
  68. package/dist/cjs/src/abstract/krakenfutures.js +4 -2
  69. package/dist/cjs/src/abstract/kucoin.js +4 -2
  70. package/dist/cjs/src/abstract/kucoinfutures.js +5 -3
  71. package/dist/cjs/src/abstract/latoken.js +4 -2
  72. package/dist/cjs/src/abstract/lbank.js +4 -2
  73. package/dist/cjs/src/abstract/luno.js +4 -2
  74. package/dist/cjs/src/abstract/mercado.js +4 -2
  75. package/dist/cjs/src/abstract/mexc.js +4 -2
  76. package/dist/cjs/src/abstract/modetrade.js +4 -2
  77. package/dist/cjs/src/abstract/ndax.js +4 -2
  78. package/dist/cjs/src/abstract/novadax.js +4 -2
  79. package/dist/cjs/src/abstract/oceanex.js +4 -2
  80. package/dist/cjs/src/abstract/okcoin.js +4 -2
  81. package/dist/cjs/src/abstract/okx.js +4 -2
  82. package/dist/cjs/src/abstract/onetrading.js +4 -2
  83. package/dist/cjs/src/abstract/oxfun.js +4 -2
  84. package/dist/cjs/src/abstract/p2b.js +4 -2
  85. package/dist/cjs/src/abstract/paradex.js +4 -2
  86. package/dist/cjs/src/abstract/paymium.js +4 -2
  87. package/dist/cjs/src/abstract/phemex.js +4 -2
  88. package/dist/cjs/src/abstract/poloniex.js +4 -2
  89. package/dist/cjs/src/abstract/probit.js +4 -2
  90. package/dist/cjs/src/abstract/timex.js +4 -2
  91. package/dist/cjs/src/abstract/tokocrypto.js +4 -2
  92. package/dist/cjs/src/abstract/tradeogre.js +4 -2
  93. package/dist/cjs/src/abstract/upbit.js +4 -2
  94. package/dist/cjs/src/abstract/vertex.js +4 -2
  95. package/dist/cjs/src/abstract/wavesexchange.js +4 -2
  96. package/dist/cjs/src/abstract/whitebit.js +4 -2
  97. package/dist/cjs/src/abstract/woo.js +4 -2
  98. package/dist/cjs/src/abstract/woofipro.js +4 -2
  99. package/dist/cjs/src/abstract/xt.js +4 -2
  100. package/dist/cjs/src/abstract/yobit.js +4 -2
  101. package/dist/cjs/src/abstract/zaif.js +4 -2
  102. package/dist/cjs/src/abstract/zonda.js +4 -2
  103. package/dist/cjs/src/alpaca.js +5 -3
  104. package/dist/cjs/src/apex.js +5 -3
  105. package/dist/cjs/src/ascendex.js +5 -3
  106. package/dist/cjs/src/base/Exchange.js +51 -11
  107. package/dist/cjs/src/base/Precise.js +0 -6
  108. package/dist/cjs/src/base/errors.js +0 -6
  109. package/dist/cjs/src/base/functions/crypto.js +1 -1
  110. package/dist/cjs/src/base/functions/encode.js +3 -3
  111. package/dist/cjs/src/base/functions/misc.js +0 -1
  112. package/dist/cjs/src/base/functions/number.js +0 -6
  113. package/dist/cjs/src/base/functions/platform.js +0 -6
  114. package/dist/cjs/src/base/functions/rsa.js +0 -1
  115. package/dist/cjs/src/base/functions/string.js +0 -6
  116. package/dist/cjs/src/base/functions/throttle.js +1 -1
  117. package/dist/cjs/src/base/functions/time.js +0 -6
  118. package/dist/cjs/src/base/functions/totp.js +0 -1
  119. package/dist/cjs/src/base/functions/type.js +0 -6
  120. package/dist/cjs/src/base/functions.js +1 -1
  121. package/dist/cjs/src/base/ws/Cache.js +0 -6
  122. package/dist/cjs/src/base/ws/Client.js +8 -3
  123. package/dist/cjs/src/base/ws/Future.js +1 -1
  124. package/dist/cjs/src/base/ws/OrderBook.js +1 -1
  125. package/dist/cjs/src/base/ws/OrderBookSide.js +0 -6
  126. package/dist/cjs/src/base/ws/WsClient.js +5 -3
  127. package/dist/cjs/src/bequant.js +5 -3
  128. package/dist/cjs/src/bigone.js +5 -3
  129. package/dist/cjs/src/binance.js +14 -9
  130. package/dist/cjs/src/binancecoinm.js +5 -3
  131. package/dist/cjs/src/binanceus.js +5 -3
  132. package/dist/cjs/src/binanceusdm.js +5 -3
  133. package/dist/cjs/src/bingx.js +37 -5
  134. package/dist/cjs/src/bit2c.js +5 -3
  135. package/dist/cjs/src/bitbank.js +5 -3
  136. package/dist/cjs/src/bitbns.js +5 -3
  137. package/dist/cjs/src/bitfinex.js +8 -3
  138. package/dist/cjs/src/bitflyer.js +5 -3
  139. package/dist/cjs/src/bitget.js +2177 -552
  140. package/dist/cjs/src/bithumb.js +5 -3
  141. package/dist/cjs/src/bitmart.js +5 -3
  142. package/dist/cjs/src/bitmex.js +6 -3
  143. package/dist/cjs/src/bitopro.js +5 -3
  144. package/dist/cjs/src/bitrue.js +5 -3
  145. package/dist/cjs/src/bitso.js +5 -3
  146. package/dist/cjs/src/bitstamp.js +5 -3
  147. package/dist/cjs/src/bitteam.js +5 -3
  148. package/dist/cjs/src/bittrade.js +5 -3
  149. package/dist/cjs/src/bitvavo.js +4 -2
  150. package/dist/cjs/src/blockchaincom.js +5 -3
  151. package/dist/cjs/src/blofin.js +5 -3
  152. package/dist/cjs/src/btcalpha.js +5 -3
  153. package/dist/cjs/src/btcbox.js +5 -3
  154. package/dist/cjs/src/btcmarkets.js +5 -3
  155. package/dist/cjs/src/btcturk.js +5 -3
  156. package/dist/cjs/src/bybit.js +11 -4
  157. package/dist/cjs/src/cex.js +5 -3
  158. package/dist/cjs/src/coinbase.js +4 -2
  159. package/dist/cjs/src/coinbaseadvanced.js +5 -3
  160. package/dist/cjs/src/coinbaseexchange.js +4 -2
  161. package/dist/cjs/src/coinbaseinternational.js +4 -2
  162. package/dist/cjs/src/coincatch.js +5 -3
  163. package/dist/cjs/src/coincheck.js +5 -3
  164. package/dist/cjs/src/coinex.js +73 -7
  165. package/dist/cjs/src/coinmate.js +5 -3
  166. package/dist/cjs/src/coinmetro.js +5 -3
  167. package/dist/cjs/src/coinone.js +5 -3
  168. package/dist/cjs/src/coinsph.js +4 -3
  169. package/dist/cjs/src/coinspot.js +5 -3
  170. package/dist/cjs/src/cryptocom.js +6 -4
  171. package/dist/cjs/src/cryptomus.js +5 -3
  172. package/dist/cjs/src/defx.js +5 -3
  173. package/dist/cjs/src/delta.js +5 -3
  174. package/dist/cjs/src/deribit.js +5 -3
  175. package/dist/cjs/src/derive.js +5 -3
  176. package/dist/cjs/src/digifinex.js +5 -3
  177. package/dist/cjs/src/ellipx.js +5 -3
  178. package/dist/cjs/src/exmo.js +5 -3
  179. package/dist/cjs/src/fmfwio.js +5 -3
  180. package/dist/cjs/src/foxbit.js +8 -7
  181. package/dist/cjs/src/gate.js +27 -5
  182. package/dist/cjs/src/gateio.js +5 -3
  183. package/dist/cjs/src/gemini.js +5 -3
  184. package/dist/cjs/src/hashkey.js +5 -3
  185. package/dist/cjs/src/hibachi.js +2138 -0
  186. package/dist/cjs/src/hitbtc.js +4 -3
  187. package/dist/cjs/src/hollaex.js +5 -3
  188. package/dist/cjs/src/htx.js +6 -3
  189. package/dist/cjs/src/huobi.js +5 -3
  190. package/dist/cjs/src/hyperliquid.js +84 -31
  191. package/dist/cjs/src/independentreserve.js +5 -3
  192. package/dist/cjs/src/indodax.js +5 -3
  193. package/dist/cjs/src/kraken.js +5 -3
  194. package/dist/cjs/src/krakenfutures.js +6 -3
  195. package/dist/cjs/src/kucoin.js +5 -3
  196. package/dist/cjs/src/kucoinfutures.js +6 -3
  197. package/dist/cjs/src/latoken.js +5 -3
  198. package/dist/cjs/src/lbank.js +6 -4
  199. package/dist/cjs/src/luno.js +5 -3
  200. package/dist/cjs/src/mercado.js +5 -3
  201. package/dist/cjs/src/mexc.js +12 -3
  202. package/dist/cjs/src/modetrade.js +101 -3
  203. package/dist/cjs/src/myokx.js +5 -3
  204. package/dist/cjs/src/ndax.js +5 -3
  205. package/dist/cjs/src/novadax.js +39 -3
  206. package/dist/cjs/src/oceanex.js +5 -3
  207. package/dist/cjs/src/okcoin.js +5 -3
  208. package/dist/cjs/src/okx.js +5 -3
  209. package/dist/cjs/src/okxus.js +5 -3
  210. package/dist/cjs/src/onetrading.js +38 -3
  211. package/dist/cjs/src/oxfun.js +5 -3
  212. package/dist/cjs/src/p2b.js +37 -3
  213. package/dist/cjs/src/paradex.js +6 -3
  214. package/dist/cjs/src/paymium.js +5 -3
  215. package/dist/cjs/src/phemex.js +4 -2
  216. package/dist/cjs/src/poloniex.js +5 -3
  217. package/dist/cjs/src/pro/alpaca.js +5 -3
  218. package/dist/cjs/src/pro/apex.js +5 -3
  219. package/dist/cjs/src/pro/ascendex.js +5 -3
  220. package/dist/cjs/src/pro/bequant.js +6 -4
  221. package/dist/cjs/src/pro/binance.js +8 -8
  222. package/dist/cjs/src/pro/binancecoinm.js +6 -4
  223. package/dist/cjs/src/pro/binanceus.js +6 -4
  224. package/dist/cjs/src/pro/binanceusdm.js +5 -3
  225. package/dist/cjs/src/pro/bingx.js +5 -3
  226. package/dist/cjs/src/pro/bitfinex.js +5 -3
  227. package/dist/cjs/src/pro/bitget.js +6 -4
  228. package/dist/cjs/src/pro/bithumb.js +5 -3
  229. package/dist/cjs/src/pro/bitmart.js +5 -3
  230. package/dist/cjs/src/pro/bitmex.js +6 -4
  231. package/dist/cjs/src/pro/bitopro.js +4 -2
  232. package/dist/cjs/src/pro/bitrue.js +5 -3
  233. package/dist/cjs/src/pro/bitstamp.js +6 -4
  234. package/dist/cjs/src/pro/bittrade.js +4 -2
  235. package/dist/cjs/src/pro/bitvavo.js +8 -4
  236. package/dist/cjs/src/pro/blockchaincom.js +5 -3
  237. package/dist/cjs/src/pro/blofin.js +5 -3
  238. package/dist/cjs/src/pro/bybit.js +6 -3
  239. package/dist/cjs/src/pro/cex.js +6 -3
  240. package/dist/cjs/src/pro/coinbase.js +5 -3
  241. package/dist/cjs/src/pro/coinbaseadvanced.js +5 -3
  242. package/dist/cjs/src/pro/coinbaseexchange.js +7 -5
  243. package/dist/cjs/src/pro/coinbaseinternational.js +5 -3
  244. package/dist/cjs/src/pro/coincatch.js +5 -3
  245. package/dist/cjs/src/pro/coincheck.js +5 -3
  246. package/dist/cjs/src/pro/coinex.js +6 -4
  247. package/dist/cjs/src/pro/coinone.js +5 -3
  248. package/dist/cjs/src/pro/cryptocom.js +5 -3
  249. package/dist/cjs/src/pro/defx.js +5 -3
  250. package/dist/cjs/src/pro/deribit.js +5 -3
  251. package/dist/cjs/src/pro/derive.js +4 -2
  252. package/dist/cjs/src/pro/exmo.js +5 -3
  253. package/dist/cjs/src/pro/gate.js +6 -4
  254. package/dist/cjs/src/pro/gateio.js +5 -3
  255. package/dist/cjs/src/pro/gemini.js +5 -3
  256. package/dist/cjs/src/pro/hashkey.js +5 -3
  257. package/dist/cjs/src/pro/hitbtc.js +5 -3
  258. package/dist/cjs/src/pro/hollaex.js +5 -3
  259. package/dist/cjs/src/pro/htx.js +6 -4
  260. package/dist/cjs/src/pro/huobi.js +5 -3
  261. package/dist/cjs/src/pro/hyperliquid.js +108 -15
  262. package/dist/cjs/src/pro/independentreserve.js +5 -3
  263. package/dist/cjs/src/pro/kraken.js +5 -3
  264. package/dist/cjs/src/pro/krakenfutures.js +7 -4
  265. package/dist/cjs/src/pro/kucoin.js +7 -4
  266. package/dist/cjs/src/pro/kucoinfutures.js +7 -4
  267. package/dist/cjs/src/pro/lbank.js +4 -3
  268. package/dist/cjs/src/pro/luno.js +5 -3
  269. package/dist/cjs/src/pro/mexc.js +343 -160
  270. package/dist/cjs/src/pro/modetrade.js +4 -2
  271. package/dist/cjs/src/pro/myokx.js +5 -3
  272. package/dist/cjs/src/pro/ndax.js +5 -3
  273. package/dist/cjs/src/pro/okcoin.js +5 -3
  274. package/dist/cjs/src/pro/okx.js +10 -7
  275. package/dist/cjs/src/pro/okxus.js +5 -3
  276. package/dist/cjs/src/pro/onetrading.js +5 -3
  277. package/dist/cjs/src/pro/oxfun.js +6 -4
  278. package/dist/cjs/src/pro/p2b.js +5 -3
  279. package/dist/cjs/src/pro/paradex.js +5 -3
  280. package/dist/cjs/src/pro/phemex.js +5 -3
  281. package/dist/cjs/src/pro/poloniex.js +5 -3
  282. package/dist/cjs/src/pro/probit.js +5 -3
  283. package/dist/cjs/src/pro/tradeogre.js +5 -3
  284. package/dist/cjs/src/pro/upbit.js +5 -3
  285. package/dist/cjs/src/pro/vertex.js +4 -2
  286. package/dist/cjs/src/pro/whitebit.js +5 -3
  287. package/dist/cjs/src/pro/woo.js +4 -2
  288. package/dist/cjs/src/pro/woofipro.js +4 -2
  289. package/dist/cjs/src/pro/xt.js +5 -3
  290. package/dist/cjs/src/probit.js +40 -3
  291. package/dist/cjs/src/protobuf/mexc/compiled.cjs.js +7180 -0
  292. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +1 -7
  293. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
  294. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +2 -8
  295. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +0 -1
  296. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +0 -1
  297. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +0 -1
  298. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +0 -1
  299. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +0 -1
  300. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -1
  301. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +0 -1
  302. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +0 -1
  303. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +0 -1
  304. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +0 -1
  305. package/dist/cjs/src/static_dependencies/ethers/fragments.js +2 -8
  306. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +2 -8
  307. package/dist/cjs/src/static_dependencies/ethers/index.js +10 -1
  308. package/dist/cjs/src/static_dependencies/ethers/interface.js +2 -8
  309. package/dist/cjs/src/static_dependencies/ethers/typed.js +2 -8
  310. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +13 -1
  311. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +6 -1
  312. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +9 -1
  313. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +2 -8
  314. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +2 -8
  315. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +7 -1
  316. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +5 -1
  317. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +0 -6
  318. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +8 -1
  319. package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
  320. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -1
  321. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -1
  322. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
  323. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
  324. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
  325. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
  326. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -1
  327. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
  328. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
  329. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
  330. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
  331. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
  332. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
  333. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
  334. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +0 -6
  335. package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
  336. package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
  337. package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
  338. package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -1
  339. package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
  340. package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
  341. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
  342. package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
  343. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  344. package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
  345. package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
  346. package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
  347. package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +0 -6
  348. package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +0 -1
  349. package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +0 -6
  350. package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +0 -6
  351. package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +0 -1
  352. package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +0 -1
  353. package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +0 -1
  354. package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +0 -1
  355. package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +0 -1
  356. package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +0 -1
  357. package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
  358. package/dist/cjs/src/static_dependencies/node-fetch/body.js +5 -1
  359. package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +0 -1
  360. package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +0 -6
  361. package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -1
  362. package/dist/cjs/src/static_dependencies/node-fetch/headers.js +5 -1
  363. package/dist/cjs/src/static_dependencies/node-fetch/index.js +14 -8
  364. package/dist/cjs/src/static_dependencies/node-fetch/request.js +7 -1
  365. package/dist/cjs/src/static_dependencies/node-fetch/response.js +8 -2
  366. package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
  367. package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
  368. package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +0 -6
  369. package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +0 -1
  370. package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +0 -1
  371. package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -1
  372. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -1
  373. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
  374. package/dist/cjs/src/static_dependencies/qs/index.cjs.js +3 -1
  375. package/dist/cjs/src/static_dependencies/scure-base/index.js +0 -6
  376. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
  377. package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
  378. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +0 -6
  379. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
  380. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
  381. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +0 -6
  382. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +0 -6
  383. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +2 -6
  384. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
  385. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
  386. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
  387. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -1
  388. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -1
  389. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
  390. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
  391. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
  392. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +3 -2
  393. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +8 -8
  394. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -1
  395. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -1
  396. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
  397. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +4 -3
  398. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +1 -2
  399. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +4 -3
  400. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +4 -2
  401. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +32 -27
  402. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +0 -1
  403. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +3 -1
  404. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +0 -1
  405. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +0 -1
  406. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +0 -1
  407. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +0 -1
  408. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +3 -3
  409. package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +0 -6
  410. package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
  411. package/dist/cjs/src/timex.js +4 -3
  412. package/dist/cjs/src/tokocrypto.js +5 -3
  413. package/dist/cjs/src/tradeogre.js +5 -3
  414. package/dist/cjs/src/upbit.js +5 -3
  415. package/dist/cjs/src/vertex.js +5 -3
  416. package/dist/cjs/src/wavesexchange.js +5 -3
  417. package/dist/cjs/src/whitebit.js +5 -3
  418. package/dist/cjs/src/woo.js +5 -3
  419. package/dist/cjs/src/woofipro.js +101 -3
  420. package/dist/cjs/src/xt.js +5 -3
  421. package/dist/cjs/src/yobit.js +5 -3
  422. package/dist/cjs/src/zaif.js +5 -3
  423. package/dist/cjs/src/zonda.js +5 -3
  424. package/js/ccxt.d.ts +5 -2
  425. package/js/ccxt.js +4 -8
  426. package/js/src/abstract/alpaca.js +0 -6
  427. package/js/src/abstract/apex.js +0 -6
  428. package/js/src/abstract/ascendex.js +0 -6
  429. package/js/src/abstract/bequant.js +0 -6
  430. package/js/src/abstract/bigone.js +0 -6
  431. package/js/src/abstract/binance.js +0 -6
  432. package/js/src/abstract/binancecoinm.js +0 -6
  433. package/js/src/abstract/binanceus.js +0 -6
  434. package/js/src/abstract/binanceusdm.js +0 -6
  435. package/js/src/abstract/bingx.d.ts +1 -0
  436. package/js/src/abstract/bingx.js +0 -6
  437. package/js/src/abstract/bit2c.js +0 -6
  438. package/js/src/abstract/bitbank.js +0 -6
  439. package/js/src/abstract/bitbns.js +0 -6
  440. package/js/src/abstract/bitfinex.js +0 -6
  441. package/js/src/abstract/bitflyer.js +0 -6
  442. package/js/src/abstract/bitget.d.ts +6 -0
  443. package/js/src/abstract/bitget.js +0 -6
  444. package/js/src/abstract/bithumb.js +0 -6
  445. package/js/src/abstract/bitmart.js +0 -6
  446. package/js/src/abstract/bitmex.js +0 -6
  447. package/js/src/abstract/bitopro.js +0 -6
  448. package/js/src/abstract/bitrue.js +0 -6
  449. package/js/src/abstract/bitso.js +0 -6
  450. package/js/src/abstract/bitstamp.js +0 -6
  451. package/js/src/abstract/bitteam.js +0 -6
  452. package/js/src/abstract/bittrade.js +0 -6
  453. package/js/src/abstract/bitvavo.js +0 -6
  454. package/js/src/abstract/blockchaincom.js +0 -6
  455. package/js/src/abstract/blofin.js +0 -6
  456. package/js/src/abstract/btcalpha.js +0 -6
  457. package/js/src/abstract/btcbox.js +0 -6
  458. package/js/src/abstract/btcmarkets.js +0 -6
  459. package/js/src/abstract/btcturk.js +0 -6
  460. package/js/src/abstract/bybit.js +0 -6
  461. package/js/src/abstract/cex.js +0 -6
  462. package/js/src/abstract/coinbase.js +0 -6
  463. package/js/src/abstract/coinbaseadvanced.js +0 -6
  464. package/js/src/abstract/coinbaseexchange.js +0 -6
  465. package/js/src/abstract/coinbaseinternational.js +0 -6
  466. package/js/src/abstract/coincatch.js +0 -6
  467. package/js/src/abstract/coincheck.js +0 -6
  468. package/js/src/abstract/coinex.js +0 -6
  469. package/js/src/abstract/coinmate.js +0 -6
  470. package/js/src/abstract/coinmetro.js +0 -6
  471. package/js/src/abstract/coinone.js +0 -6
  472. package/js/src/abstract/coinsph.js +0 -6
  473. package/js/src/abstract/coinspot.js +0 -6
  474. package/js/src/abstract/cryptocom.js +0 -6
  475. package/js/src/abstract/cryptomus.js +0 -6
  476. package/js/src/abstract/defx.js +0 -6
  477. package/js/src/abstract/delta.js +0 -6
  478. package/js/src/abstract/deribit.js +0 -6
  479. package/js/src/abstract/derive.js +0 -6
  480. package/js/src/abstract/digifinex.js +0 -6
  481. package/js/src/abstract/ellipx.js +0 -6
  482. package/js/src/abstract/exmo.js +0 -6
  483. package/js/src/abstract/fmfwio.js +0 -6
  484. package/js/src/abstract/foxbit.js +0 -6
  485. package/js/src/abstract/gate.js +0 -6
  486. package/js/src/abstract/gateio.js +0 -6
  487. package/js/src/abstract/gemini.js +0 -6
  488. package/js/src/abstract/hashkey.js +0 -6
  489. package/js/src/abstract/hibachi.d.ts +29 -0
  490. package/js/src/abstract/hibachi.js +5 -0
  491. package/js/src/abstract/hitbtc.js +0 -6
  492. package/js/src/abstract/hollaex.js +0 -6
  493. package/js/src/abstract/htx.js +0 -6
  494. package/js/src/abstract/huobi.js +0 -6
  495. package/js/src/abstract/hyperliquid.js +0 -6
  496. package/js/src/abstract/independentreserve.js +0 -6
  497. package/js/src/abstract/indodax.js +0 -6
  498. package/js/src/abstract/kraken.js +0 -6
  499. package/js/src/abstract/krakenfutures.js +0 -6
  500. package/js/src/abstract/kucoin.js +0 -6
  501. package/js/src/abstract/kucoinfutures.js +0 -6
  502. package/js/src/abstract/latoken.js +0 -6
  503. package/js/src/abstract/lbank.js +0 -6
  504. package/js/src/abstract/luno.js +0 -6
  505. package/js/src/abstract/mercado.js +0 -6
  506. package/js/src/abstract/mexc.js +0 -6
  507. package/js/src/abstract/modetrade.js +0 -6
  508. package/js/src/abstract/myokx.js +0 -6
  509. package/js/src/abstract/ndax.js +0 -6
  510. package/js/src/abstract/novadax.js +0 -6
  511. package/js/src/abstract/oceanex.js +0 -6
  512. package/js/src/abstract/okcoin.js +0 -6
  513. package/js/src/abstract/okx.js +0 -6
  514. package/js/src/abstract/okxus.js +0 -6
  515. package/js/src/abstract/onetrading.js +0 -6
  516. package/js/src/abstract/oxfun.js +0 -6
  517. package/js/src/abstract/p2b.js +0 -6
  518. package/js/src/abstract/paradex.js +0 -6
  519. package/js/src/abstract/paymium.js +0 -6
  520. package/js/src/abstract/phemex.js +0 -6
  521. package/js/src/abstract/poloniex.js +0 -6
  522. package/js/src/abstract/probit.js +0 -6
  523. package/js/src/abstract/timex.js +0 -6
  524. package/js/src/abstract/tokocrypto.js +0 -6
  525. package/js/src/abstract/tradeogre.js +0 -6
  526. package/js/src/abstract/upbit.js +0 -6
  527. package/js/src/abstract/vertex.js +0 -6
  528. package/js/src/abstract/wavesexchange.js +0 -6
  529. package/js/src/abstract/whitebit.js +0 -6
  530. package/js/src/abstract/woo.js +0 -6
  531. package/js/src/abstract/woofipro.js +0 -6
  532. package/js/src/abstract/xt.js +0 -6
  533. package/js/src/abstract/yobit.js +0 -6
  534. package/js/src/abstract/zaif.js +0 -6
  535. package/js/src/abstract/zonda.js +0 -6
  536. package/js/src/alpaca.d.ts +1 -1
  537. package/js/src/alpaca.js +0 -6
  538. package/js/src/apex.d.ts +1 -1
  539. package/js/src/apex.js +0 -6
  540. package/js/src/ascendex.d.ts +1 -1
  541. package/js/src/ascendex.js +0 -6
  542. package/js/src/base/Exchange.d.ts +9 -7
  543. package/js/src/base/Exchange.js +50 -16
  544. package/js/src/base/Precise.js +0 -6
  545. package/js/src/base/errorHierarchy.js +0 -6
  546. package/js/src/base/errors.js +0 -6
  547. package/js/src/base/functions/crypto.js +0 -6
  548. package/js/src/base/functions/encode.js +0 -6
  549. package/js/src/base/functions/generic.js +0 -6
  550. package/js/src/base/functions/misc.js +0 -6
  551. package/js/src/base/functions/number.js +0 -6
  552. package/js/src/base/functions/platform.js +0 -6
  553. package/js/src/base/functions/rsa.js +0 -6
  554. package/js/src/base/functions/string.js +0 -6
  555. package/js/src/base/functions/throttle.js +0 -6
  556. package/js/src/base/functions/time.js +0 -6
  557. package/js/src/base/functions/totp.js +0 -6
  558. package/js/src/base/functions/type.js +0 -6
  559. package/js/src/base/functions.js +0 -6
  560. package/js/src/base/types.d.ts +2 -1
  561. package/js/src/base/types.js +0 -6
  562. package/js/src/base/ws/Cache.js +0 -6
  563. package/js/src/base/ws/Client.d.ts +1 -0
  564. package/js/src/base/ws/Client.js +5 -7
  565. package/js/src/base/ws/Future.js +0 -6
  566. package/js/src/base/ws/OrderBook.js +0 -6
  567. package/js/src/base/ws/OrderBookSide.js +0 -6
  568. package/js/src/base/ws/WsClient.js +0 -6
  569. package/js/src/base/ws/functions.js +0 -6
  570. package/js/src/bequant.js +0 -6
  571. package/js/src/bigone.d.ts +1 -1
  572. package/js/src/bigone.js +0 -6
  573. package/js/src/binance.d.ts +2 -2
  574. package/js/src/binance.js +9 -12
  575. package/js/src/binancecoinm.js +0 -6
  576. package/js/src/binanceus.js +0 -6
  577. package/js/src/binanceusdm.js +0 -6
  578. package/js/src/bingx.d.ts +3 -2
  579. package/js/src/bingx.js +32 -8
  580. package/js/src/bit2c.js +0 -6
  581. package/js/src/bitbank.d.ts +1 -1
  582. package/js/src/bitbank.js +0 -6
  583. package/js/src/bitbns.js +0 -6
  584. package/js/src/bitfinex.d.ts +1 -1
  585. package/js/src/bitfinex.js +3 -6
  586. package/js/src/bitflyer.d.ts +1 -1
  587. package/js/src/bitflyer.js +0 -6
  588. package/js/src/bitget.d.ts +77 -9
  589. package/js/src/bitget.js +2172 -555
  590. package/js/src/bithumb.d.ts +1 -1
  591. package/js/src/bithumb.js +0 -6
  592. package/js/src/bitmart.d.ts +2 -2
  593. package/js/src/bitmart.js +0 -6
  594. package/js/src/bitmex.d.ts +2 -2
  595. package/js/src/bitmex.js +1 -6
  596. package/js/src/bitopro.d.ts +1 -1
  597. package/js/src/bitopro.js +0 -6
  598. package/js/src/bitrue.d.ts +2 -2
  599. package/js/src/bitrue.js +0 -6
  600. package/js/src/bitso.d.ts +1 -1
  601. package/js/src/bitso.js +0 -6
  602. package/js/src/bitstamp.d.ts +1 -1
  603. package/js/src/bitstamp.js +0 -6
  604. package/js/src/bitteam.js +0 -6
  605. package/js/src/bittrade.d.ts +1 -1
  606. package/js/src/bittrade.js +0 -6
  607. package/js/src/bitvavo.d.ts +1 -1
  608. package/js/src/bitvavo.js +0 -6
  609. package/js/src/blockchaincom.d.ts +1 -1
  610. package/js/src/blockchaincom.js +0 -6
  611. package/js/src/blofin.d.ts +1 -1
  612. package/js/src/blofin.js +0 -6
  613. package/js/src/btcalpha.js +0 -6
  614. package/js/src/btcbox.js +0 -6
  615. package/js/src/btcmarkets.d.ts +1 -1
  616. package/js/src/btcmarkets.js +0 -6
  617. package/js/src/btcturk.js +0 -6
  618. package/js/src/bybit.d.ts +2 -2
  619. package/js/src/bybit.js +6 -7
  620. package/js/src/cex.js +0 -6
  621. package/js/src/coinbase.d.ts +1 -1
  622. package/js/src/coinbase.js +0 -6
  623. package/js/src/coinbaseadvanced.js +0 -6
  624. package/js/src/coinbaseexchange.d.ts +1 -1
  625. package/js/src/coinbaseexchange.js +0 -6
  626. package/js/src/coinbaseinternational.d.ts +1 -1
  627. package/js/src/coinbaseinternational.js +0 -6
  628. package/js/src/coincatch.d.ts +2 -2
  629. package/js/src/coincatch.js +0 -6
  630. package/js/src/coincheck.js +0 -6
  631. package/js/src/coinex.d.ts +13 -3
  632. package/js/src/coinex.js +68 -10
  633. package/js/src/coinmate.d.ts +1 -1
  634. package/js/src/coinmate.js +0 -6
  635. package/js/src/coinmetro.js +0 -6
  636. package/js/src/coinone.js +0 -6
  637. package/js/src/coinsph.d.ts +1 -1
  638. package/js/src/coinsph.js +0 -6
  639. package/js/src/coinspot.js +0 -6
  640. package/js/src/cryptocom.d.ts +1 -1
  641. package/js/src/cryptocom.js +1 -7
  642. package/js/src/cryptomus.js +0 -6
  643. package/js/src/defx.d.ts +2 -2
  644. package/js/src/defx.js +0 -6
  645. package/js/src/delta.d.ts +1 -1
  646. package/js/src/delta.js +0 -6
  647. package/js/src/deribit.d.ts +1 -1
  648. package/js/src/deribit.js +0 -6
  649. package/js/src/derive.js +0 -6
  650. package/js/src/digifinex.d.ts +2 -2
  651. package/js/src/digifinex.js +0 -6
  652. package/js/src/ellipx.d.ts +1 -1
  653. package/js/src/ellipx.js +0 -6
  654. package/js/src/exmo.d.ts +1 -1
  655. package/js/src/exmo.js +0 -6
  656. package/js/src/fmfwio.js +0 -6
  657. package/js/src/foxbit.d.ts +1 -1
  658. package/js/src/foxbit.js +3 -9
  659. package/js/src/gate.d.ts +2 -2
  660. package/js/src/gate.js +22 -8
  661. package/js/src/gateio.js +0 -6
  662. package/js/src/gemini.d.ts +1 -1
  663. package/js/src/gemini.js +0 -6
  664. package/js/src/hashkey.d.ts +3 -3
  665. package/js/src/hashkey.js +0 -6
  666. package/js/src/hibachi.d.ts +346 -0
  667. package/js/src/hibachi.js +2131 -0
  668. package/js/src/hitbtc.d.ts +2 -2
  669. package/js/src/hitbtc.js +0 -6
  670. package/js/src/hollaex.d.ts +1 -1
  671. package/js/src/hollaex.js +0 -6
  672. package/js/src/htx.d.ts +3 -3
  673. package/js/src/htx.js +1 -6
  674. package/js/src/huobi.js +0 -6
  675. package/js/src/hyperliquid.d.ts +12 -2
  676. package/js/src/hyperliquid.js +79 -34
  677. package/js/src/independentreserve.d.ts +1 -1
  678. package/js/src/independentreserve.js +0 -6
  679. package/js/src/indodax.d.ts +1 -1
  680. package/js/src/indodax.js +0 -6
  681. package/js/src/kraken.d.ts +1 -1
  682. package/js/src/kraken.js +0 -6
  683. package/js/src/krakenfutures.d.ts +1 -1
  684. package/js/src/krakenfutures.js +1 -6
  685. package/js/src/kucoin.d.ts +2 -2
  686. package/js/src/kucoin.js +0 -6
  687. package/js/src/kucoinfutures.d.ts +3 -2
  688. package/js/src/kucoinfutures.js +1 -6
  689. package/js/src/latoken.js +0 -6
  690. package/js/src/lbank.d.ts +1 -1
  691. package/js/src/lbank.js +1 -7
  692. package/js/src/luno.js +0 -6
  693. package/js/src/mercado.d.ts +1 -1
  694. package/js/src/mercado.js +0 -6
  695. package/js/src/mexc.d.ts +2 -2
  696. package/js/src/mexc.js +7 -6
  697. package/js/src/modetrade.d.ts +26 -3
  698. package/js/src/modetrade.js +96 -6
  699. package/js/src/myokx.js +0 -6
  700. package/js/src/ndax.d.ts +1 -1
  701. package/js/src/ndax.js +0 -6
  702. package/js/src/novadax.d.ts +1 -1
  703. package/js/src/novadax.js +34 -6
  704. package/js/src/oceanex.js +0 -6
  705. package/js/src/okcoin.d.ts +1 -1
  706. package/js/src/okcoin.js +0 -6
  707. package/js/src/okx.d.ts +2 -2
  708. package/js/src/okx.js +0 -6
  709. package/js/src/okxus.js +0 -6
  710. package/js/src/onetrading.js +33 -6
  711. package/js/src/oxfun.d.ts +1 -1
  712. package/js/src/oxfun.js +0 -6
  713. package/js/src/p2b.js +32 -6
  714. package/js/src/paradex.d.ts +1 -1
  715. package/js/src/paradex.js +1 -6
  716. package/js/src/paymium.js +0 -6
  717. package/js/src/phemex.d.ts +2 -2
  718. package/js/src/phemex.js +0 -6
  719. package/js/src/poloniex.d.ts +2 -2
  720. package/js/src/poloniex.js +0 -6
  721. package/js/src/pro/alpaca.d.ts +2 -2
  722. package/js/src/pro/alpaca.js +0 -6
  723. package/js/src/pro/apex.d.ts +2 -2
  724. package/js/src/pro/apex.js +0 -6
  725. package/js/src/pro/ascendex.d.ts +2 -2
  726. package/js/src/pro/ascendex.js +0 -6
  727. package/js/src/pro/bequant.js +0 -6
  728. package/js/src/pro/binance.d.ts +2 -2
  729. package/js/src/pro/binance.js +4 -12
  730. package/js/src/pro/binancecoinm.js +0 -6
  731. package/js/src/pro/binanceus.js +0 -6
  732. package/js/src/pro/binanceusdm.js +0 -6
  733. package/js/src/pro/bingx.js +0 -6
  734. package/js/src/pro/bitfinex.js +0 -6
  735. package/js/src/pro/bitget.d.ts +2 -2
  736. package/js/src/pro/bitget.js +1 -7
  737. package/js/src/pro/bithumb.d.ts +2 -2
  738. package/js/src/pro/bithumb.js +0 -6
  739. package/js/src/pro/bitmart.d.ts +2 -2
  740. package/js/src/pro/bitmart.js +0 -6
  741. package/js/src/pro/bitmex.d.ts +3 -3
  742. package/js/src/pro/bitmex.js +1 -7
  743. package/js/src/pro/bitopro.js +0 -6
  744. package/js/src/pro/bitrue.js +0 -6
  745. package/js/src/pro/bitstamp.d.ts +2 -2
  746. package/js/src/pro/bitstamp.js +1 -7
  747. package/js/src/pro/bittrade.d.ts +2 -2
  748. package/js/src/pro/bittrade.js +0 -6
  749. package/js/src/pro/bitvavo.d.ts +2 -2
  750. package/js/src/pro/bitvavo.js +3 -7
  751. package/js/src/pro/blockchaincom.js +0 -6
  752. package/js/src/pro/blofin.js +0 -6
  753. package/js/src/pro/bybit.d.ts +4 -4
  754. package/js/src/pro/bybit.js +1 -6
  755. package/js/src/pro/cex.d.ts +2 -2
  756. package/js/src/pro/cex.js +1 -6
  757. package/js/src/pro/coinbase.js +0 -6
  758. package/js/src/pro/coinbaseadvanced.js +0 -6
  759. package/js/src/pro/coinbaseexchange.d.ts +4 -4
  760. package/js/src/pro/coinbaseexchange.js +2 -8
  761. package/js/src/pro/coinbaseinternational.d.ts +2 -2
  762. package/js/src/pro/coinbaseinternational.js +0 -6
  763. package/js/src/pro/coincatch.d.ts +2 -2
  764. package/js/src/pro/coincatch.js +0 -6
  765. package/js/src/pro/coincheck.js +0 -6
  766. package/js/src/pro/coinex.js +1 -7
  767. package/js/src/pro/coinone.d.ts +2 -2
  768. package/js/src/pro/coinone.js +0 -6
  769. package/js/src/pro/cryptocom.d.ts +2 -2
  770. package/js/src/pro/cryptocom.js +0 -6
  771. package/js/src/pro/defx.js +0 -6
  772. package/js/src/pro/deribit.js +0 -6
  773. package/js/src/pro/derive.d.ts +2 -2
  774. package/js/src/pro/derive.js +0 -6
  775. package/js/src/pro/exmo.js +0 -6
  776. package/js/src/pro/gate.d.ts +3 -3
  777. package/js/src/pro/gate.js +1 -7
  778. package/js/src/pro/gateio.js +0 -6
  779. package/js/src/pro/gemini.js +0 -6
  780. package/js/src/pro/hashkey.js +0 -6
  781. package/js/src/pro/hitbtc.js +0 -6
  782. package/js/src/pro/hollaex.d.ts +2 -2
  783. package/js/src/pro/hollaex.js +0 -6
  784. package/js/src/pro/htx.d.ts +2 -2
  785. package/js/src/pro/htx.js +1 -7
  786. package/js/src/pro/huobi.js +0 -6
  787. package/js/src/pro/hyperliquid.d.ts +28 -2
  788. package/js/src/pro/hyperliquid.js +103 -18
  789. package/js/src/pro/independentreserve.js +0 -6
  790. package/js/src/pro/kraken.d.ts +2 -2
  791. package/js/src/pro/kraken.js +0 -6
  792. package/js/src/pro/krakenfutures.d.ts +3 -3
  793. package/js/src/pro/krakenfutures.js +2 -7
  794. package/js/src/pro/kucoin.d.ts +2 -2
  795. package/js/src/pro/kucoin.js +2 -7
  796. package/js/src/pro/kucoinfutures.d.ts +2 -2
  797. package/js/src/pro/kucoinfutures.js +2 -7
  798. package/js/src/pro/lbank.js +0 -6
  799. package/js/src/pro/luno.js +0 -6
  800. package/js/src/pro/mexc.d.ts +9 -6
  801. package/js/src/pro/mexc.js +338 -163
  802. package/js/src/pro/modetrade.d.ts +2 -2
  803. package/js/src/pro/modetrade.js +0 -6
  804. package/js/src/pro/myokx.js +0 -6
  805. package/js/src/pro/ndax.js +0 -6
  806. package/js/src/pro/okcoin.d.ts +2 -2
  807. package/js/src/pro/okcoin.js +0 -6
  808. package/js/src/pro/okx.d.ts +4 -4
  809. package/js/src/pro/okx.js +5 -10
  810. package/js/src/pro/okxus.js +0 -6
  811. package/js/src/pro/onetrading.d.ts +2 -2
  812. package/js/src/pro/onetrading.js +0 -6
  813. package/js/src/pro/oxfun.js +1 -7
  814. package/js/src/pro/p2b.d.ts +2 -2
  815. package/js/src/pro/p2b.js +0 -6
  816. package/js/src/pro/paradex.d.ts +2 -2
  817. package/js/src/pro/paradex.js +0 -6
  818. package/js/src/pro/phemex.js +0 -6
  819. package/js/src/pro/poloniex.d.ts +2 -2
  820. package/js/src/pro/poloniex.js +0 -6
  821. package/js/src/pro/probit.d.ts +2 -2
  822. package/js/src/pro/probit.js +0 -6
  823. package/js/src/pro/tradeogre.js +0 -6
  824. package/js/src/pro/upbit.js +0 -6
  825. package/js/src/pro/vertex.d.ts +2 -2
  826. package/js/src/pro/vertex.js +0 -6
  827. package/js/src/pro/whitebit.d.ts +2 -2
  828. package/js/src/pro/whitebit.js +0 -6
  829. package/js/src/pro/woo.d.ts +2 -2
  830. package/js/src/pro/woo.js +0 -6
  831. package/js/src/pro/woofipro.d.ts +2 -2
  832. package/js/src/pro/woofipro.js +0 -6
  833. package/js/src/pro/xt.js +0 -6
  834. package/js/src/probit.d.ts +1 -1
  835. package/js/src/probit.js +35 -6
  836. package/js/src/protobuf/mexc/compiled.cjs +7180 -0
  837. package/js/src/protobuf/mexc/compiled.d.cts +2 -0
  838. package/js/src/static_dependencies/ethers/abi-coder.js +0 -6
  839. package/js/src/static_dependencies/ethers/address/address.js +0 -6
  840. package/js/src/static_dependencies/ethers/address/checks.js +0 -6
  841. package/js/src/static_dependencies/ethers/address/contract-address.js +0 -6
  842. package/js/src/static_dependencies/ethers/address/index.js +0 -6
  843. package/js/src/static_dependencies/ethers/bytes32.js +0 -6
  844. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
  845. package/js/src/static_dependencies/ethers/coders/address.js +0 -6
  846. package/js/src/static_dependencies/ethers/coders/anonymous.js +0 -6
  847. package/js/src/static_dependencies/ethers/coders/array.js +0 -6
  848. package/js/src/static_dependencies/ethers/coders/boolean.js +0 -6
  849. package/js/src/static_dependencies/ethers/coders/bytes.js +0 -6
  850. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -6
  851. package/js/src/static_dependencies/ethers/coders/null.js +0 -6
  852. package/js/src/static_dependencies/ethers/coders/number.js +0 -6
  853. package/js/src/static_dependencies/ethers/coders/string.js +0 -6
  854. package/js/src/static_dependencies/ethers/coders/tuple.js +0 -6
  855. package/js/src/static_dependencies/ethers/fragments.js +0 -6
  856. package/js/src/static_dependencies/ethers/hash/index.js +0 -6
  857. package/js/src/static_dependencies/ethers/hash/solidity.js +0 -6
  858. package/js/src/static_dependencies/ethers/hash/typed-data.js +0 -6
  859. package/js/src/static_dependencies/ethers/index.js +0 -6
  860. package/js/src/static_dependencies/ethers/interface.js +0 -6
  861. package/js/src/static_dependencies/ethers/typed.js +0 -6
  862. package/js/src/static_dependencies/ethers/utils/base58.js +0 -6
  863. package/js/src/static_dependencies/ethers/utils/base64-browser.js +0 -6
  864. package/js/src/static_dependencies/ethers/utils/base64.js +0 -6
  865. package/js/src/static_dependencies/ethers/utils/data.js +0 -6
  866. package/js/src/static_dependencies/ethers/utils/errors.js +0 -6
  867. package/js/src/static_dependencies/ethers/utils/events.js +0 -6
  868. package/js/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
  869. package/js/src/static_dependencies/ethers/utils/index.js +0 -6
  870. package/js/src/static_dependencies/ethers/utils/maths.js +0 -6
  871. package/js/src/static_dependencies/ethers/utils/properties.js +0 -6
  872. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +0 -6
  873. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +0 -6
  874. package/js/src/static_dependencies/ethers/utils/rlp.js +0 -6
  875. package/js/src/static_dependencies/ethers/utils/units.js +0 -6
  876. package/js/src/static_dependencies/ethers/utils/utf8.js +0 -6
  877. package/js/src/static_dependencies/ethers/utils/uuid.js +0 -6
  878. package/js/src/static_dependencies/fflake/browser.js +0 -6
  879. package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -6
  880. package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -6
  881. package/js/src/static_dependencies/jsencrypt/index.js +0 -6
  882. package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -6
  883. package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
  884. package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
  885. package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
  886. package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +0 -6
  887. package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -6
  888. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -6
  889. package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
  890. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -6
  891. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -6
  892. package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
  893. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -6
  894. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
  895. package/js/src/static_dependencies/messagepack/msgpack.js +0 -6
  896. package/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -6
  897. package/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -6
  898. package/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -6
  899. package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -6
  900. package/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -6
  901. package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -6
  902. package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +0 -6
  903. package/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
  904. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -6
  905. package/js/src/static_dependencies/noble-curves/bn.js +0 -6
  906. package/js/src/static_dependencies/noble-curves/ed25519.js +0 -6
  907. package/js/src/static_dependencies/noble-curves/ed448.js +0 -6
  908. package/js/src/static_dependencies/noble-curves/index.js +0 -6
  909. package/js/src/static_dependencies/noble-curves/jubjub.js +0 -6
  910. package/js/src/static_dependencies/noble-curves/p256.js +0 -6
  911. package/js/src/static_dependencies/noble-curves/p384.js +0 -6
  912. package/js/src/static_dependencies/noble-curves/p521.js +0 -6
  913. package/js/src/static_dependencies/noble-curves/pasta.js +0 -6
  914. package/js/src/static_dependencies/noble-curves/secp256k1.js +0 -6
  915. package/js/src/static_dependencies/noble-hashes/_assert.js +0 -6
  916. package/js/src/static_dependencies/noble-hashes/_blake2.js +0 -6
  917. package/js/src/static_dependencies/noble-hashes/_sha2.js +0 -6
  918. package/js/src/static_dependencies/noble-hashes/_u64.js +0 -6
  919. package/js/src/static_dependencies/noble-hashes/argon2.js +0 -6
  920. package/js/src/static_dependencies/noble-hashes/blake2b.js +0 -6
  921. package/js/src/static_dependencies/noble-hashes/blake2s.js +0 -6
  922. package/js/src/static_dependencies/noble-hashes/blake3.js +0 -6
  923. package/js/src/static_dependencies/noble-hashes/crypto.js +0 -6
  924. package/js/src/static_dependencies/noble-hashes/cryptoNode.js +0 -6
  925. package/js/src/static_dependencies/noble-hashes/eskdf.js +0 -6
  926. package/js/src/static_dependencies/noble-hashes/hkdf.js +0 -6
  927. package/js/src/static_dependencies/noble-hashes/hmac.js +0 -6
  928. package/js/src/static_dependencies/noble-hashes/index.js +0 -6
  929. package/js/src/static_dependencies/noble-hashes/md5.js +0 -6
  930. package/js/src/static_dependencies/noble-hashes/pbkdf2.js +0 -6
  931. package/js/src/static_dependencies/noble-hashes/ripemd160.js +0 -6
  932. package/js/src/static_dependencies/noble-hashes/scrypt.js +0 -6
  933. package/js/src/static_dependencies/noble-hashes/sha1.js +0 -6
  934. package/js/src/static_dependencies/noble-hashes/sha256.js +0 -6
  935. package/js/src/static_dependencies/noble-hashes/sha3-addons.js +0 -6
  936. package/js/src/static_dependencies/noble-hashes/sha3.js +0 -6
  937. package/js/src/static_dependencies/noble-hashes/sha512.js +0 -6
  938. package/js/src/static_dependencies/noble-hashes/utils.js +0 -6
  939. package/js/src/static_dependencies/node-fetch/body.js +0 -6
  940. package/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -6
  941. package/js/src/static_dependencies/node-fetch/errors/base.js +0 -6
  942. package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -6
  943. package/js/src/static_dependencies/node-fetch/headers.js +0 -6
  944. package/js/src/static_dependencies/node-fetch/index.js +0 -6
  945. package/js/src/static_dependencies/node-fetch/request.js +0 -6
  946. package/js/src/static_dependencies/node-fetch/response.js +0 -6
  947. package/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
  948. package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
  949. package/js/src/static_dependencies/node-fetch/utils/is.js +0 -6
  950. package/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -6
  951. package/js/src/static_dependencies/proxies/agent-base/helpers.js +0 -6
  952. package/js/src/static_dependencies/proxies/agent-base/index.js +0 -6
  953. package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -6
  954. package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -6
  955. package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
  956. package/js/src/static_dependencies/qs/formats.cjs +0 -6
  957. package/js/src/static_dependencies/qs/index.cjs +0 -6
  958. package/js/src/static_dependencies/qs/parse.cjs +0 -6
  959. package/js/src/static_dependencies/qs/stringify.cjs +0 -6
  960. package/js/src/static_dependencies/qs/utils.cjs +0 -6
  961. package/js/src/static_dependencies/scure-base/index.js +0 -6
  962. package/js/src/static_dependencies/scure-starknet/index.js +0 -6
  963. package/js/src/static_dependencies/starknet/constants.js +0 -6
  964. package/js/src/static_dependencies/starknet/index.js +0 -6
  965. package/js/src/static_dependencies/starknet/types/cairoEnum.js +0 -6
  966. package/js/src/static_dependencies/starknet/types/calldata.js +0 -6
  967. package/js/src/static_dependencies/starknet/types/index.js +0 -6
  968. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
  969. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
  970. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +0 -6
  971. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +0 -6
  972. package/js/src/static_dependencies/starknet/types/lib/index.js +0 -6
  973. package/js/src/static_dependencies/starknet/types/typedData.js +0 -6
  974. package/js/src/static_dependencies/starknet/utils/address.js +0 -6
  975. package/js/src/static_dependencies/starknet/utils/assert.js +0 -6
  976. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +0 -6
  977. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +0 -6
  978. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +0 -6
  979. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -6
  980. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -6
  981. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
  982. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
  983. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
  984. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +0 -6
  985. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -6
  986. package/js/src/static_dependencies/starknet/utils/calldata/index.js +0 -6
  987. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -6
  988. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +0 -6
  989. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -6
  990. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
  991. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -6
  992. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -6
  993. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -6
  994. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +0 -6
  995. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +0 -6
  996. package/js/src/static_dependencies/starknet/utils/encode.js +0 -6
  997. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +0 -6
  998. package/js/src/static_dependencies/starknet/utils/hash/index.js +0 -6
  999. package/js/src/static_dependencies/starknet/utils/merkle.js +0 -6
  1000. package/js/src/static_dependencies/starknet/utils/num.js +0 -6
  1001. package/js/src/static_dependencies/starknet/utils/selector.js +0 -6
  1002. package/js/src/static_dependencies/starknet/utils/shortString.js +0 -6
  1003. package/js/src/static_dependencies/starknet/utils/starknetId.js +0 -6
  1004. package/js/src/static_dependencies/starknet/utils/typedData.js +0 -6
  1005. package/js/src/static_dependencies/starknet/utils/uint256.js +0 -6
  1006. package/js/src/static_dependencies/starknet/utils/url.js +0 -6
  1007. package/js/src/static_dependencies/watchable/src/index.js +0 -6
  1008. package/js/src/static_dependencies/watchable/src/types.js +0 -6
  1009. package/js/src/static_dependencies/watchable/src/unpromise.js +0 -6
  1010. package/js/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
  1011. package/js/src/timex.js +0 -6
  1012. package/js/src/tokocrypto.d.ts +1 -1
  1013. package/js/src/tokocrypto.js +0 -6
  1014. package/js/src/tradeogre.js +0 -6
  1015. package/js/src/upbit.d.ts +1 -1
  1016. package/js/src/upbit.js +0 -6
  1017. package/js/src/vertex.d.ts +1 -1
  1018. package/js/src/vertex.js +0 -6
  1019. package/js/src/wavesexchange.d.ts +1 -1
  1020. package/js/src/wavesexchange.js +0 -6
  1021. package/js/src/whitebit.d.ts +2 -2
  1022. package/js/src/whitebit.js +0 -6
  1023. package/js/src/woo.d.ts +4 -4
  1024. package/js/src/woo.js +0 -6
  1025. package/js/src/woofipro.d.ts +26 -3
  1026. package/js/src/woofipro.js +96 -6
  1027. package/js/src/xt.d.ts +3 -3
  1028. package/js/src/xt.js +0 -6
  1029. package/js/src/yobit.d.ts +1 -1
  1030. package/js/src/yobit.js +0 -6
  1031. package/js/src/zaif.d.ts +1 -1
  1032. package/js/src/zaif.js +0 -6
  1033. package/js/src/zonda.d.ts +1 -1
  1034. package/js/src/zonda.js +0 -6
  1035. package/package.json +4 -3
@@ -1,18 +1,20 @@
1
1
  'use strict';
2
2
 
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
3
5
  var bitget$1 = require('./abstract/bitget.js');
4
6
  var errors = require('./base/errors.js');
5
7
  var Precise = require('./base/Precise.js');
6
8
  var number = require('./base/functions/number.js');
7
9
  var sha256 = require('./static_dependencies/noble-hashes/sha256.js');
8
10
 
9
- // ----------------------------------------------------------------------------
11
+ // ---------------------------------------------------------------------------
10
12
  // ---------------------------------------------------------------------------
11
13
  /**
12
14
  * @class bitget
13
15
  * @augments Exchange
14
16
  */
15
- class bitget extends bitget$1 {
17
+ class bitget extends bitget$1["default"] {
16
18
  describe() {
17
19
  return this.deepExtend(super.describe(), {
18
20
  'id': 'bitget',
@@ -805,6 +807,7 @@ class bitget extends bitget$1 {
805
807
  'get': {
806
808
  'v3/account/assets': 1,
807
809
  'v3/account/settings': 1,
810
+ 'v3/account/deposit-records': 2,
808
811
  'v3/account/financial-records': 1,
809
812
  'v3/account/repayable-coins': 2,
810
813
  'v3/account/payment-coins': 2,
@@ -823,7 +826,9 @@ class bitget extends bitget$1 {
823
826
  'v3/position/history-position': 1,
824
827
  'v3/trade/order-info': 1,
825
828
  'v3/trade/unfilled-orders': 1,
829
+ 'v3/trade/unfilled-strategy-orders': 1,
826
830
  'v3/trade/history-orders': 1,
831
+ 'v3/trade/history-strategy-orders': 1,
827
832
  'v3/trade/fills': 1,
828
833
  'v3/user/sub-list': 2,
829
834
  'v3/user/sub-api-list': 2,
@@ -837,8 +842,11 @@ class bitget extends bitget$1 {
837
842
  'v3/account/max-open-available': 4,
838
843
  'v3/ins-loan/bind-uid': 6.6667,
839
844
  'v3/trade/place-order': 2,
845
+ 'v3/trade/place-strategy-order': 2,
840
846
  'v3/trade/modify-order': 2,
847
+ 'v3/trade/modify-strategy-order': 2,
841
848
  'v3/trade/cancel-order': 2,
849
+ 'v3/trade/cancel-strategy-order': 2,
842
850
  'v3/trade/place-batch': 4,
843
851
  'v3/trade/batch-modify-order': 2,
844
852
  'v3/trade/cancel-batch': 4,
@@ -884,6 +892,7 @@ class bitget extends bitget$1 {
884
892
  // '0': ExchangeError, // 200 successful,when the order placement / cancellation / operation is successful
885
893
  '4001': errors.ExchangeError,
886
894
  '4002': errors.ExchangeError,
895
+ '40020': errors.BadRequest,
887
896
  // --------------------------------------------------------
888
897
  '30001': errors.AuthenticationError,
889
898
  '30002': errors.AuthenticationError,
@@ -1428,6 +1437,19 @@ class bitget extends bitget$1 {
1428
1437
  '1w': '1Wutc',
1429
1438
  '1M': '1Mutc',
1430
1439
  },
1440
+ 'uta': {
1441
+ '1m': '1m',
1442
+ '3m': '3m',
1443
+ '5m': '5m',
1444
+ '15m': '15m',
1445
+ '30m': '30m',
1446
+ '1h': '1H',
1447
+ '2h': '2H',
1448
+ '4h': '4H',
1449
+ '6h': '6H',
1450
+ '12h': '12H',
1451
+ '1d': '1D',
1452
+ },
1431
1453
  },
1432
1454
  'fetchMarkets': {
1433
1455
  'types': ['spot', 'swap'], // there is future markets but they use the same endpoints as swap
@@ -1517,7 +1539,6 @@ class bitget extends bitget$1 {
1517
1539
  'ERC20': 'ERC20',
1518
1540
  'BEP20': 'BSC',
1519
1541
  // 'BEP20': 'BEP20', // different for BEP20
1520
- 'BSC': 'BEP20',
1521
1542
  'ATOM': 'ATOM',
1522
1543
  'ACA': 'AcalaToken',
1523
1544
  'APT': 'Aptos',
@@ -1771,10 +1792,20 @@ class bitget extends bitget$1 {
1771
1792
  defaultProductType = (subType === 'linear') ? 'USDT-FUTURES' : 'COIN-FUTURES';
1772
1793
  // }
1773
1794
  }
1774
- let productType = this.safeString(params, 'productType', defaultProductType);
1795
+ let productType = this.safeString2(params, 'productType', 'category', defaultProductType);
1775
1796
  if ((productType === undefined) && (market !== undefined)) {
1776
1797
  const settle = market['settle'];
1777
- if (settle === 'USDT') {
1798
+ if (market['spot']) {
1799
+ let marginMode = undefined;
1800
+ [marginMode, params] = this.handleMarginModeAndParams('handleProductTypeAndParams', params);
1801
+ if (marginMode !== undefined) {
1802
+ productType = 'MARGIN';
1803
+ }
1804
+ else {
1805
+ productType = 'SPOT';
1806
+ }
1807
+ }
1808
+ else if (settle === 'USDT') {
1778
1809
  productType = 'USDT-FUTURES';
1779
1810
  }
1780
1811
  else if (settle === 'USDC') {
@@ -1794,9 +1825,9 @@ class bitget extends bitget$1 {
1794
1825
  }
1795
1826
  }
1796
1827
  if (productType === undefined) {
1797
- throw new errors.ArgumentsRequired(this.id + ' requires a productType param, one of "USDT-FUTURES", "USDC-FUTURES", "COIN-FUTURES", "SUSDT-FUTURES", "SUSDC-FUTURES" or "SCOIN-FUTURES"');
1828
+ throw new errors.ArgumentsRequired(this.id + ' requires a productType param, one of "USDT-FUTURES", "USDC-FUTURES", "COIN-FUTURES", "SUSDT-FUTURES", "SUSDC-FUTURES", "SCOIN-FUTURES" or for uta only "SPOT"');
1798
1829
  }
1799
- params = this.omit(params, 'productType');
1830
+ params = this.omit(params, ['productType', 'category']);
1800
1831
  return [productType, params];
1801
1832
  }
1802
1833
  /**
@@ -1829,9 +1860,9 @@ class bitget extends bitget$1 {
1829
1860
  * @see https://www.bitget.com/api-doc/spot/market/Get-Symbols
1830
1861
  * @see https://www.bitget.com/api-doc/contract/market/Get-All-Symbols-Contracts
1831
1862
  * @see https://www.bitget.com/api-doc/margin/common/support-currencies
1832
- * @see https://www.bitget.bike/api-doc/uta/public/Instruments
1863
+ * @see https://www.bitget.com/api-doc/uta/public/Instruments
1833
1864
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1834
- * @param {string} [params.uta] set to true to fetch markets for the unified trading account (uta), defaults to false
1865
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
1835
1866
  * @returns {object[]} an array of objects representing market data
1836
1867
  */
1837
1868
  async fetchMarkets(params = {}) {
@@ -2477,11 +2508,13 @@ class bitget extends bitget$1 {
2477
2508
  * @see https://www.bitget.com/api-doc/contract/position/Get-Query-Position-Lever
2478
2509
  * @see https://www.bitget.com/api-doc/margin/cross/account/Cross-Tier-Data
2479
2510
  * @see https://www.bitget.com/api-doc/margin/isolated/account/Isolated-Tier-Data
2511
+ * @see https://www.bitget.com/api-doc/uta/public/Get-Position-Tier-Data
2480
2512
  * @param {string} symbol unified market symbol
2481
2513
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2482
2514
  * @param {string} [params.marginMode] for spot margin 'cross' or 'isolated', default is 'isolated'
2483
2515
  * @param {string} [params.code] required for cross spot margin
2484
- * @param {string} [params.productType] *contract only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
2516
+ * @param {string} [params.productType] *contract and uta only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
2517
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
2485
2518
  * @returns {object} a [leverage tiers structure]{@link https://docs.ccxt.com/#/?id=leverage-tiers-structure}
2486
2519
  */
2487
2520
  async fetchMarketLeverageTiers(symbol, params = {}) {
@@ -2490,10 +2523,22 @@ class bitget extends bitget$1 {
2490
2523
  const request = {};
2491
2524
  let response = undefined;
2492
2525
  let marginMode = undefined;
2526
+ let productType = undefined;
2527
+ let uta = undefined;
2493
2528
  [marginMode, params] = this.handleMarginModeAndParams('fetchMarketLeverageTiers', params, 'isolated');
2494
- if ((market['swap']) || (market['future'])) {
2495
- let productType = undefined;
2496
- [productType, params] = this.handleProductTypeAndParams(market, params);
2529
+ [productType, params] = this.handleProductTypeAndParams(market, params);
2530
+ [uta, params] = this.handleOptionAndParams(params, 'fetchMarketLeverageTiers', 'uta', false);
2531
+ if (uta) {
2532
+ if (productType === 'SPOT') {
2533
+ if (marginMode !== undefined) {
2534
+ productType = 'MARGIN';
2535
+ }
2536
+ }
2537
+ request['symbol'] = market['id'];
2538
+ request['category'] = productType;
2539
+ response = await this.publicUtaGetV3MarketPositionTier(this.extend(request, params));
2540
+ }
2541
+ else if ((market['swap']) || (market['future'])) {
2497
2542
  request['productType'] = productType;
2498
2543
  request['symbol'] = market['id'];
2499
2544
  response = await this.publicMixGetV2MixMarketQueryPositionLever(this.extend(request, params));
@@ -2572,6 +2617,23 @@ class bitget extends bitget$1 {
2572
2617
  // ]
2573
2618
  // }
2574
2619
  //
2620
+ // uta
2621
+ //
2622
+ // {
2623
+ // "code": "00000",
2624
+ // "msg": "success",
2625
+ // "requestTime": 1752735673127,
2626
+ // "data": [
2627
+ // {
2628
+ // "tier": "1",
2629
+ // "minTierValue": "0",
2630
+ // "maxTierValue": "150000",
2631
+ // "leverage": "125",
2632
+ // "mmr": "0.004"
2633
+ // },
2634
+ // ]
2635
+ // }
2636
+ //
2575
2637
  const result = this.safeValue(response, 'data', []);
2576
2638
  return this.parseMarketLeverageTiers(result, market);
2577
2639
  }
@@ -2612,15 +2674,25 @@ class bitget extends bitget$1 {
2612
2674
  // "maintainMarginRate": "0.1"
2613
2675
  // }
2614
2676
  //
2677
+ // uta
2678
+ //
2679
+ // {
2680
+ // "tier": "1",
2681
+ // "minTierValue": "0",
2682
+ // "maxTierValue": "150000",
2683
+ // "leverage": "125",
2684
+ // "mmr": "0.004"
2685
+ // }
2686
+ //
2615
2687
  const tiers = [];
2616
2688
  let minNotional = 0;
2617
2689
  for (let i = 0; i < info.length; i++) {
2618
2690
  const item = info[i];
2619
- const minimumNotional = this.safeNumber(item, 'startUnit');
2691
+ const minimumNotional = this.safeNumber2(item, 'startUnit', 'minTierValue');
2620
2692
  if (minimumNotional !== undefined) {
2621
2693
  minNotional = minimumNotional;
2622
2694
  }
2623
- const maxNotional = this.safeNumberN(item, ['endUnit', 'maxBorrowableAmount', 'baseMaxBorrowableAmount']);
2695
+ const maxNotional = this.safeNumberN(item, ['endUnit', 'maxBorrowableAmount', 'baseMaxBorrowableAmount', 'maxTierValue']);
2624
2696
  const marginCurrency = this.safeString2(item, 'coin', 'baseCoin');
2625
2697
  const currencyId = (marginCurrency !== undefined) ? marginCurrency : market['base'];
2626
2698
  const marketId = this.safeString(item, 'symbol');
@@ -2630,7 +2702,7 @@ class bitget extends bitget$1 {
2630
2702
  'currency': this.safeCurrencyCode(currencyId),
2631
2703
  'minNotional': minNotional,
2632
2704
  'maxNotional': maxNotional,
2633
- 'maintenanceMarginRate': this.safeNumber2(item, 'keepMarginRate', 'maintainMarginRate'),
2705
+ 'maintenanceMarginRate': this.safeNumberN(item, ['keepMarginRate', 'maintainMarginRate', 'mmr']),
2634
2706
  'maxLeverage': this.safeNumber(item, 'leverage'),
2635
2707
  'info': item,
2636
2708
  });
@@ -2989,9 +3061,11 @@ class bitget extends bitget$1 {
2989
3061
  * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
2990
3062
  * @see https://www.bitget.com/api-doc/spot/market/Get-Orderbook
2991
3063
  * @see https://www.bitget.com/api-doc/contract/market/Get-Merge-Depth
3064
+ * @see https://www.bitget.com/api-doc/uta/public/OrderBook
2992
3065
  * @param {string} symbol unified symbol of the market to fetch the order book for
2993
3066
  * @param {int} [limit] the maximum amount of order book entries to return
2994
3067
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3068
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
2995
3069
  * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
2996
3070
  */
2997
3071
  async fetchOrderBook(symbol, limit = undefined, params = {}) {
@@ -3003,13 +3077,19 @@ class bitget extends bitget$1 {
3003
3077
  if (limit !== undefined) {
3004
3078
  request['limit'] = limit;
3005
3079
  }
3080
+ let productType = undefined;
3081
+ [productType, params] = this.handleProductTypeAndParams(market, params);
3006
3082
  let response = undefined;
3007
- if (market['spot']) {
3083
+ let uta = undefined;
3084
+ [uta, params] = this.handleOptionAndParams(params, 'fetchOrderBook', 'uta', false);
3085
+ if (uta) {
3086
+ request['category'] = productType;
3087
+ response = await this.publicUtaGetV3MarketOrderbook(this.extend(request, params));
3088
+ }
3089
+ else if (market['spot']) {
3008
3090
  response = await this.publicSpotGetV2SpotMarketOrderbook(this.extend(request, params));
3009
3091
  }
3010
3092
  else {
3011
- let productType = undefined;
3012
- [productType, params] = this.handleProductTypeAndParams(market, params);
3013
3093
  request['productType'] = productType;
3014
3094
  response = await this.publicMixGetV2MixMarketMergeDepth(this.extend(request, params));
3015
3095
  }
@@ -3025,9 +3105,24 @@ class bitget extends bitget$1 {
3025
3105
  // }
3026
3106
  // }
3027
3107
  //
3108
+ // uta
3109
+ //
3110
+ // {
3111
+ // "code": "00000",
3112
+ // "msg": "success",
3113
+ // "requestTime": 1750329437753,
3114
+ // "data": {
3115
+ // "a": [ [ 104992.60, 0.018411 ] ],
3116
+ // "b":[ [104927.40, 0.229914 ] ],
3117
+ // "ts": "1750329437763"
3118
+ // }
3119
+ // }
3120
+ //
3028
3121
  const data = this.safeValue(response, 'data', {});
3122
+ const bidsKey = uta ? 'b' : 'bids';
3123
+ const asksKey = uta ? 'a' : 'asks';
3029
3124
  const timestamp = this.safeInteger(data, 'ts');
3030
- return this.parseOrderBook(data, market['symbol'], timestamp);
3125
+ return this.parseOrderBook(data, market['symbol'], timestamp, bidsKey, asksKey);
3031
3126
  }
3032
3127
  parseTicker(ticker, market = undefined) {
3033
3128
  //
@@ -3039,7 +3134,7 @@ class bitget extends bitget$1 {
3039
3134
  // "ts": "1695793390482"
3040
3135
  // }
3041
3136
  //
3042
- // spot: fetchTicker, fetchTickers
3137
+ // spot
3043
3138
  //
3044
3139
  // {
3045
3140
  // "open": "37202.46",
@@ -3060,92 +3155,118 @@ class bitget extends bitget$1 {
3060
3155
  // "change24h": "0.00321"
3061
3156
  // }
3062
3157
  //
3063
- // swap and future: fetchTicker
3158
+ // swap and future
3064
3159
  //
3065
3160
  // {
3066
3161
  // "symbol": "BTCUSDT",
3067
- // "lastPr": "37577.2",
3068
- // "askPr": "37577.3",
3069
- // "bidPr": "37577.2",
3070
- // "bidSz": "3.679",
3071
- // "askSz": "0.02",
3072
- // "high24h": "37765",
3073
- // "low24h": "36628.9",
3074
- // "ts": "1700533070359",
3075
- // "change24h": "0.00288",
3076
- // "baseVolume": "108606.181",
3077
- // "quoteVolume": "4051316303.9608",
3078
- // "usdtVolume": "4051316303.9608",
3079
- // "openUtc": "37451.5",
3080
- // "changeUtc24h": "0.00336",
3081
- // "indexPrice": "37574.489253",
3082
- // "fundingRate": "0.0001",
3083
- // "holdingAmount": "53464.529",
3162
+ // "lastPr": "104823.8",
3163
+ // "askPr": "104823.8",
3164
+ // "bidPr": "104823.5",
3165
+ // "bidSz": "0.703",
3166
+ // "askSz": "13.894",
3167
+ // "high24h": "105289.3",
3168
+ // "low24h": "103447.9",
3169
+ // "ts": "1750332210370",
3170
+ // "change24h": "0.00471",
3171
+ // "baseVolume": "79089.5675",
3172
+ // "quoteVolume": "8274870921.80485",
3173
+ // "usdtVolume": "8274870921.80485",
3174
+ // "openUtc": "104833",
3175
+ // "changeUtc24h": "-0.00009",
3176
+ // "indexPrice": "104881.953125",
3177
+ // "fundingRate": "-0.000014",
3178
+ // "holdingAmount": "7452.6421",
3084
3179
  // "deliveryStartTime": null,
3085
3180
  // "deliveryTime": null,
3086
3181
  // "deliveryStatus": "",
3087
- // "open24h": "37235.7"
3182
+ // "open24h": "104332.3",
3183
+ // "markPrice": "104824.2"
3184
+ // }
3185
+ //
3186
+ // spot uta
3187
+ //
3188
+ // {
3189
+ // "category": "SPOT",
3190
+ // "symbol": "BTCUSDT",
3191
+ // "ts": "1750330651972",
3192
+ // "lastPrice": "104900.2",
3193
+ // "openPrice24h": "104321.2",
3194
+ // "highPrice24h": "107956.8",
3195
+ // "lowPrice24h": "103600.1",
3196
+ // "ask1Price": "104945.8",
3197
+ // "bid1Price": "104880.6",
3198
+ // "bid1Size": "0.266534",
3199
+ // "ask1Size": "0.014001",
3200
+ // "price24hPcnt": "0.00555",
3201
+ // "volume24h": "355.941109",
3202
+ // "turnover24h": "37302936.008134"
3088
3203
  // }
3089
3204
  //
3090
- // swap and future: fetchTickers
3205
+ // swap and future uta
3091
3206
  //
3092
3207
  // {
3093
- // "open": "14.9776",
3094
- // "symbol": "LINKUSDT",
3095
- // "high24h": "15.3942",
3096
- // "low24h": "14.3457",
3097
- // "lastPr": "14.3748",
3098
- // "quoteVolume": "7008612.4299",
3099
- // "baseVolume": "469908.8523",
3100
- // "usdtVolume": "7008612.42986561",
3101
- // "ts": "1700533772309",
3102
- // "bidPr": "14.375",
3103
- // "askPr": "14.3769",
3104
- // "bidSz": "50.004",
3105
- // "askSz": "0.7647",
3106
- // "openUtc": "14.478",
3107
- // "changeUtc24h": "-0.00713",
3108
- // "change24h": "-0.04978"
3208
+ // "category": "USDT-FUTURES",
3209
+ // "symbol": "BTCUSDT",
3210
+ // "ts": "1750332730472",
3211
+ // "lastPrice": "104738",
3212
+ // "openPrice24h": "104374",
3213
+ // "highPrice24h": "105289.3",
3214
+ // "lowPrice24h": "103447.9",
3215
+ // "ask1Price": "104738",
3216
+ // "bid1Price": "104737.7",
3217
+ // "bid1Size": "2.036",
3218
+ // "ask1Size": "8.094",
3219
+ // "price24hPcnt": "0.00349",
3220
+ // "volume24h": "79101.6477",
3221
+ // "turnover24h": "8276293391.45973",
3222
+ // "indexPrice": "104785.956168",
3223
+ // "markPrice": "104738",
3224
+ // "fundingRate": "-0.000007",
3225
+ // "openInterest": "7465.5938",
3226
+ // "deliveryStartTime": "",
3227
+ // "deliveryTime": "",
3228
+ // "deliveryStatus": ""
3109
3229
  // }
3110
3230
  //
3111
3231
  const marketId = this.safeString(ticker, 'symbol');
3112
- const close = this.safeString(ticker, 'lastPr');
3232
+ const close = this.safeString2(ticker, 'lastPr', 'lastPrice');
3113
3233
  const timestamp = this.safeIntegerOmitZero(ticker, 'ts'); // exchange bitget provided 0
3114
3234
  const change = this.safeString(ticker, 'change24h');
3115
- const open24 = this.safeString2(ticker, 'open24', 'open24h');
3116
- const open = this.safeString(ticker, 'open');
3117
- let symbol;
3118
- let openValue;
3119
- if (open === undefined) {
3120
- symbol = this.safeSymbol(marketId, market, undefined, 'contract');
3121
- openValue = open24;
3235
+ const category = this.safeString(ticker, 'category');
3236
+ const markPrice = this.safeString(ticker, 'markPrice');
3237
+ let marketType;
3238
+ if ((markPrice !== undefined) && (category !== 'SPOT')) {
3239
+ marketType = 'contract';
3122
3240
  }
3123
3241
  else {
3124
- symbol = this.safeSymbol(marketId, market, undefined, 'spot');
3125
- openValue = open;
3242
+ marketType = 'spot';
3243
+ }
3244
+ let percentage = this.safeString(ticker, 'price24hPcnt');
3245
+ if (percentage === undefined) {
3246
+ percentage = Precise["default"].stringMul(change, '100');
3126
3247
  }
3127
3248
  return this.safeTicker({
3128
- 'symbol': symbol,
3249
+ 'symbol': this.safeSymbol(marketId, market, undefined, marketType),
3129
3250
  'timestamp': timestamp,
3130
3251
  'datetime': this.iso8601(timestamp),
3131
- 'high': this.safeString(ticker, 'high24h'),
3132
- 'low': this.safeString(ticker, 'low24h'),
3133
- 'bid': this.safeString(ticker, 'bidPr'),
3134
- 'bidVolume': this.safeString(ticker, 'bidSz'),
3135
- 'ask': this.safeString(ticker, 'askPr'),
3136
- 'askVolume': this.safeString(ticker, 'askSz'),
3252
+ 'high': this.safeString2(ticker, 'high24h', 'highPrice24h'),
3253
+ 'low': this.safeString2(ticker, 'low24h', 'lowPrice24h'),
3254
+ 'bid': this.safeString2(ticker, 'bidPr', 'bid1Price'),
3255
+ 'bidVolume': this.safeString2(ticker, 'bidSz', 'bid1Size'),
3256
+ 'ask': this.safeString2(ticker, 'askPr', 'ask1Price'),
3257
+ 'askVolume': this.safeString2(ticker, 'askSz', 'ask1Size'),
3137
3258
  'vwap': undefined,
3138
- 'open': openValue,
3259
+ 'open': this.safeStringN(ticker, ['open', 'open24h', 'openPrice24h']),
3139
3260
  'close': close,
3140
3261
  'last': close,
3141
3262
  'previousClose': undefined,
3142
3263
  'change': change,
3143
- 'percentage': Precise["default"].stringMul(change, '100'),
3264
+ 'percentage': percentage,
3144
3265
  'average': undefined,
3145
- 'baseVolume': this.safeString(ticker, 'baseVolume'),
3146
- 'quoteVolume': this.safeString(ticker, 'quoteVolume'),
3266
+ 'baseVolume': this.safeString2(ticker, 'baseVolume', 'volume24h'),
3267
+ 'quoteVolume': this.safeString2(ticker, 'quoteVolume', 'turnover24h'),
3147
3268
  'indexPrice': this.safeString(ticker, 'indexPrice'),
3148
- 'markPrice': this.safeString(ticker, 'markPrice'),
3269
+ 'markPrice': markPrice,
3149
3270
  'info': ticker,
3150
3271
  }, market);
3151
3272
  }
@@ -3155,8 +3276,10 @@ class bitget extends bitget$1 {
3155
3276
  * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
3156
3277
  * @see https://www.bitget.com/api-doc/spot/market/Get-Tickers
3157
3278
  * @see https://www.bitget.com/api-doc/contract/market/Get-Ticker
3279
+ * @see https://www.bitget.com/api-doc/uta/public/Tickers
3158
3280
  * @param {string} symbol unified symbol of the market to fetch the ticker for
3159
3281
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3282
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
3160
3283
  * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
3161
3284
  */
3162
3285
  async fetchTicker(symbol, params = {}) {
@@ -3165,13 +3288,19 @@ class bitget extends bitget$1 {
3165
3288
  const request = {
3166
3289
  'symbol': market['id'],
3167
3290
  };
3291
+ let productType = undefined;
3292
+ [productType, params] = this.handleProductTypeAndParams(market, params);
3168
3293
  let response = undefined;
3169
- if (market['spot']) {
3294
+ let uta = undefined;
3295
+ [uta, params] = this.handleOptionAndParams(params, 'fetchTicker', 'uta', false);
3296
+ if (uta) {
3297
+ request['category'] = productType;
3298
+ response = await this.publicUtaGetV3MarketTickers(this.extend(request, params));
3299
+ }
3300
+ else if (market['spot']) {
3170
3301
  response = await this.publicSpotGetV2SpotMarketTickers(this.extend(request, params));
3171
3302
  }
3172
3303
  else {
3173
- let productType = undefined;
3174
- [productType, params] = this.handleProductTypeAndParams(market, params);
3175
3304
  request['productType'] = productType;
3176
3305
  response = await this.publicMixGetV2MixMarketTicker(this.extend(request, params));
3177
3306
  }
@@ -3206,34 +3335,94 @@ class bitget extends bitget$1 {
3206
3335
  //
3207
3336
  // swap and future
3208
3337
  //
3209
- // {
3338
+ // {
3210
3339
  // "code": "00000",
3211
3340
  // "msg": "success",
3212
- // "requestTime": 1700533070357,
3341
+ // "requestTime": 1750332210369,
3213
3342
  // "data": [
3214
3343
  // {
3215
3344
  // "symbol": "BTCUSDT",
3216
- // "lastPr": "37577.2",
3217
- // "askPr": "37577.3",
3218
- // "bidPr": "37577.2",
3219
- // "bidSz": "3.679",
3220
- // "askSz": "0.02",
3221
- // "high24h": "37765",
3222
- // "low24h": "36628.9",
3223
- // "ts": "1700533070359",
3224
- // "change24h": "0.00288",
3225
- // "baseVolume": "108606.181",
3226
- // "quoteVolume": "4051316303.9608",
3227
- // "usdtVolume": "4051316303.9608",
3228
- // "openUtc": "37451.5",
3229
- // "changeUtc24h": "0.00336",
3230
- // "indexPrice": "37574.489253",
3231
- // "fundingRate": "0.0001",
3232
- // "holdingAmount": "53464.529",
3345
+ // "lastPr": "104823.8",
3346
+ // "askPr": "104823.8",
3347
+ // "bidPr": "104823.5",
3348
+ // "bidSz": "0.703",
3349
+ // "askSz": "13.894",
3350
+ // "high24h": "105289.3",
3351
+ // "low24h": "103447.9",
3352
+ // "ts": "1750332210370",
3353
+ // "change24h": "0.00471",
3354
+ // "baseVolume": "79089.5675",
3355
+ // "quoteVolume": "8274870921.80485",
3356
+ // "usdtVolume": "8274870921.80485",
3357
+ // "openUtc": "104833",
3358
+ // "changeUtc24h": "-0.00009",
3359
+ // "indexPrice": "104881.953125",
3360
+ // "fundingRate": "-0.000014",
3361
+ // "holdingAmount": "7452.6421",
3233
3362
  // "deliveryStartTime": null,
3234
3363
  // "deliveryTime": null,
3235
3364
  // "deliveryStatus": "",
3236
- // "open24h": "37235.7"
3365
+ // "open24h": "104332.3",
3366
+ // "markPrice": "104824.2"
3367
+ // }
3368
+ // ]
3369
+ // }
3370
+ //
3371
+ // spot uta
3372
+ //
3373
+ // {
3374
+ // "code": "00000",
3375
+ // "msg": "success",
3376
+ // "requestTime": 1750330653575,
3377
+ // "data": [
3378
+ // {
3379
+ // "category": "SPOT",
3380
+ // "symbol": "BTCUSDT",
3381
+ // "ts": "1750330651972",
3382
+ // "lastPrice": "104900.2",
3383
+ // "openPrice24h": "104321.2",
3384
+ // "highPrice24h": "107956.8",
3385
+ // "lowPrice24h": "103600.1",
3386
+ // "ask1Price": "104945.8",
3387
+ // "bid1Price": "104880.6",
3388
+ // "bid1Size": "0.266534",
3389
+ // "ask1Size": "0.014001",
3390
+ // "price24hPcnt": "0.00555",
3391
+ // "volume24h": "355.941109",
3392
+ // "turnover24h": "37302936.008134"
3393
+ // }
3394
+ // ]
3395
+ // }
3396
+ //
3397
+ // swap and future uta
3398
+ //
3399
+ // {
3400
+ // "code": "00000",
3401
+ // "msg": "success",
3402
+ // "requestTime": 1750332731203,
3403
+ // "data": [
3404
+ // {
3405
+ // "category": "USDT-FUTURES",
3406
+ // "symbol": "BTCUSDT",
3407
+ // "ts": "1750332730472",
3408
+ // "lastPrice": "104738",
3409
+ // "openPrice24h": "104374",
3410
+ // "highPrice24h": "105289.3",
3411
+ // "lowPrice24h": "103447.9",
3412
+ // "ask1Price": "104738",
3413
+ // "bid1Price": "104737.7",
3414
+ // "bid1Size": "2.036",
3415
+ // "ask1Size": "8.094",
3416
+ // "price24hPcnt": "0.00349",
3417
+ // "volume24h": "79101.6477",
3418
+ // "turnover24h": "8276293391.45973",
3419
+ // "indexPrice": "104785.956168",
3420
+ // "markPrice": "104738",
3421
+ // "fundingRate": "-0.000007",
3422
+ // "openInterest": "7465.5938",
3423
+ // "deliveryStartTime": "",
3424
+ // "deliveryTime": "",
3425
+ // "deliveryStatus": ""
3237
3426
  // }
3238
3427
  // ]
3239
3428
  // }
@@ -3275,8 +3464,10 @@ class bitget extends bitget$1 {
3275
3464
  * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
3276
3465
  * @see https://www.bitget.com/api-doc/spot/market/Get-Tickers
3277
3466
  * @see https://www.bitget.com/api-doc/contract/market/Get-All-Symbol-Ticker
3467
+ * @see https://www.bitget.com/api-doc/uta/public/Tickers
3278
3468
  * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
3279
3469
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3470
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
3280
3471
  * @param {string} [params.subType] *contract only* 'linear', 'inverse'
3281
3472
  * @param {string} [params.productType] *contract only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
3282
3473
  * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
@@ -3299,7 +3490,17 @@ class bitget extends bitget$1 {
3299
3490
  let productType = undefined;
3300
3491
  [productType, params] = this.handleProductTypeAndParams(market, params);
3301
3492
  // only if passedSubType && productType is undefined, then use spot
3302
- if (type === 'spot' && passedSubType === undefined) {
3493
+ let uta = undefined;
3494
+ [uta, params] = this.handleOptionAndParams(params, 'fetchTickers', 'uta', false);
3495
+ if (uta) {
3496
+ const symbolsLength = symbols.length;
3497
+ if ((symbols !== undefined) && (symbolsLength === 1)) {
3498
+ request['symbol'] = market['id'];
3499
+ }
3500
+ request['category'] = productType;
3501
+ response = await this.publicUtaGetV3MarketTickers(this.extend(request, params));
3502
+ }
3503
+ else if (type === 'spot' && passedSubType === undefined) {
3303
3504
  response = await this.publicSpotGetV2SpotMarketTickers(this.extend(request, params));
3304
3505
  }
3305
3506
  else {
@@ -3363,6 +3564,65 @@ class bitget extends bitget$1 {
3363
3564
  // ]
3364
3565
  // }
3365
3566
  //
3567
+ // spot uta
3568
+ //
3569
+ // {
3570
+ // "code": "00000",
3571
+ // "msg": "success",
3572
+ // "requestTime": 1750330653575,
3573
+ // "data": [
3574
+ // {
3575
+ // "category": "SPOT",
3576
+ // "symbol": "BTCUSDT",
3577
+ // "ts": "1750330651972",
3578
+ // "lastPrice": "104900.2",
3579
+ // "openPrice24h": "104321.2",
3580
+ // "highPrice24h": "107956.8",
3581
+ // "lowPrice24h": "103600.1",
3582
+ // "ask1Price": "104945.8",
3583
+ // "bid1Price": "104880.6",
3584
+ // "bid1Size": "0.266534",
3585
+ // "ask1Size": "0.014001",
3586
+ // "price24hPcnt": "0.00555",
3587
+ // "volume24h": "355.941109",
3588
+ // "turnover24h": "37302936.008134"
3589
+ // }
3590
+ // ]
3591
+ // }
3592
+ //
3593
+ // swap and future uta
3594
+ //
3595
+ // {
3596
+ // "code": "00000",
3597
+ // "msg": "success",
3598
+ // "requestTime": 1750332731203,
3599
+ // "data": [
3600
+ // {
3601
+ // "category": "USDT-FUTURES",
3602
+ // "symbol": "BTCUSDT",
3603
+ // "ts": "1750332730472",
3604
+ // "lastPrice": "104738",
3605
+ // "openPrice24h": "104374",
3606
+ // "highPrice24h": "105289.3",
3607
+ // "lowPrice24h": "103447.9",
3608
+ // "ask1Price": "104738",
3609
+ // "bid1Price": "104737.7",
3610
+ // "bid1Size": "2.036",
3611
+ // "ask1Size": "8.094",
3612
+ // "price24hPcnt": "0.00349",
3613
+ // "volume24h": "79101.6477",
3614
+ // "turnover24h": "8276293391.45973",
3615
+ // "indexPrice": "104785.956168",
3616
+ // "markPrice": "104738",
3617
+ // "fundingRate": "-0.000007",
3618
+ // "openInterest": "7465.5938",
3619
+ // "deliveryStartTime": "",
3620
+ // "deliveryTime": "",
3621
+ // "deliveryStatus": ""
3622
+ // }
3623
+ // ]
3624
+ // }
3625
+ //
3366
3626
  const data = this.safeList(response, 'data', []);
3367
3627
  return this.parseTickers(data, symbols);
3368
3628
  }
@@ -3449,19 +3709,53 @@ class bitget extends bitget$1 {
3449
3709
  // "cTime": "1700720700342"
3450
3710
  // }
3451
3711
  //
3712
+ // uta fetchTrades
3713
+ //
3714
+ // {
3715
+ // "execId": "1319896716324937729",
3716
+ // "price": "105909.1",
3717
+ // "size": "6.3090",
3718
+ // "side": "sell",
3719
+ // "ts": "1750413820344"
3720
+ // }
3721
+ //
3722
+ // uta fetchMyTrades
3723
+ //
3724
+ // {
3725
+ // "execId": "1322441401010528257",
3726
+ // "orderId": "1322441400976261120",
3727
+ // "category": "USDT-FUTURES",
3728
+ // "symbol": "BTCUSDT",
3729
+ // "orderType": "market",
3730
+ // "side": "sell",
3731
+ // "execPrice": "107005.4",
3732
+ // "execQty": "0.0001",
3733
+ // "execValue": "10.7005",
3734
+ // "tradeScope": "taker",
3735
+ // "feeDetail": [{
3736
+ // "feeCoin": "USDT",
3737
+ // "fee":"0.00642032"
3738
+ // }],
3739
+ // "createdTime": "1751020520451",
3740
+ // "updatedTime": "1751020520458",
3741
+ // "execPnl": "0.00017"
3742
+ // }
3743
+ //
3452
3744
  const marketId = this.safeString(trade, 'symbol');
3453
3745
  const symbol = this.safeSymbol(marketId, market);
3454
- const timestamp = this.safeInteger2(trade, 'cTime', 'ts');
3746
+ const timestamp = this.safeIntegerN(trade, ['cTime', 'ts', 'createdTime']);
3455
3747
  let fee = undefined;
3456
3748
  const feeDetail = this.safeValue(trade, 'feeDetail');
3457
3749
  const posMode = this.safeString(trade, 'posMode');
3458
- const feeStructure = (posMode !== undefined) ? feeDetail[0] : feeDetail;
3750
+ const category = this.safeString(trade, 'category');
3751
+ const isFeeStructure = (posMode !== undefined) || (category !== undefined);
3752
+ const feeStructure = isFeeStructure ? feeDetail[0] : feeDetail;
3459
3753
  if (feeStructure !== undefined) {
3460
3754
  const currencyCode = this.safeCurrencyCode(this.safeString(feeStructure, 'feeCoin'));
3461
3755
  fee = {
3462
3756
  'currency': currencyCode,
3463
3757
  };
3464
- const feeCostString = this.safeString(feeStructure, 'totalFee');
3758
+ const feeCostString = this.safeString2(feeStructure, 'totalFee', 'fee');
3465
3759
  const deduction = this.safeString(feeStructure, 'deduction') === 'yes' ? true : false;
3466
3760
  if (deduction) {
3467
3761
  fee['cost'] = feeCostString;
@@ -3472,15 +3766,15 @@ class bitget extends bitget$1 {
3472
3766
  }
3473
3767
  return this.safeTrade({
3474
3768
  'info': trade,
3475
- 'id': this.safeString(trade, 'tradeId'),
3769
+ 'id': this.safeString2(trade, 'tradeId', 'execId'),
3476
3770
  'order': this.safeString(trade, 'orderId'),
3477
3771
  'symbol': symbol,
3478
3772
  'side': this.safeStringLower(trade, 'side'),
3479
3773
  'type': this.safeString(trade, 'orderType'),
3480
3774
  'takerOrMaker': this.safeString(trade, 'tradeScope'),
3481
- 'price': this.safeString2(trade, 'priceAvg', 'price'),
3482
- 'amount': this.safeString2(trade, 'baseVolume', 'size'),
3483
- 'cost': this.safeString2(trade, 'quoteVolume', 'amount'),
3775
+ 'price': this.safeStringN(trade, ['priceAvg', 'price', 'execPrice']),
3776
+ 'amount': this.safeStringN(trade, ['baseVolume', 'size', 'execQty']),
3777
+ 'cost': this.safeStringN(trade, ['quoteVolume', 'amount', 'execValue']),
3484
3778
  'timestamp': timestamp,
3485
3779
  'datetime': this.iso8601(timestamp),
3486
3780
  'fee': fee,
@@ -3494,10 +3788,12 @@ class bitget extends bitget$1 {
3494
3788
  * @see https://www.bitget.com/api-doc/spot/market/Get-Market-Trades
3495
3789
  * @see https://www.bitget.com/api-doc/contract/market/Get-Recent-Fills
3496
3790
  * @see https://www.bitget.com/api-doc/contract/market/Get-Fills-History
3791
+ * @see https://www.bitget.com/api-doc/uta/public/Fills
3497
3792
  * @param {string} symbol unified symbol of the market to fetch trades for
3498
3793
  * @param {int} [since] timestamp in ms of the earliest trade to fetch
3499
3794
  * @param {int} [limit] the maximum amount of trades to fetch
3500
3795
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3796
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
3501
3797
  * @param {int} [params.until] *only applies to publicSpotGetV2SpotMarketFillsHistory and publicMixGetV2MixMarketFillsHistory* the latest time in ms to fetch trades for
3502
3798
  * @param {boolean} [params.paginate] *only applies to publicSpotGetV2SpotMarketFillsHistory and publicMixGetV2MixMarketFillsHistory* default false, when true will automatically paginate by calling this endpoint multiple times
3503
3799
  * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
@@ -3513,8 +3809,13 @@ class bitget extends bitget$1 {
3513
3809
  let request = {
3514
3810
  'symbol': market['id'],
3515
3811
  };
3812
+ let uta = undefined;
3813
+ [uta, params] = this.handleOptionAndParams(params, 'fetchTrades', 'uta', false);
3516
3814
  if (limit !== undefined) {
3517
- if (market['contract']) {
3815
+ if (uta) {
3816
+ request['limit'] = Math.min(limit, 100);
3817
+ }
3818
+ else if (market['contract']) {
3518
3819
  request['limit'] = Math.min(limit, 1000);
3519
3820
  }
3520
3821
  else {
@@ -3523,7 +3824,20 @@ class bitget extends bitget$1 {
3523
3824
  }
3524
3825
  const options = this.safeValue(this.options, 'fetchTrades', {});
3525
3826
  let response = undefined;
3526
- if (market['spot']) {
3827
+ let productType = undefined;
3828
+ [productType, params] = this.handleProductTypeAndParams(market, params);
3829
+ if (uta) {
3830
+ if (productType === 'SPOT') {
3831
+ let marginMode = undefined;
3832
+ [marginMode, params] = this.handleMarginModeAndParams('fetchTrades', params);
3833
+ if (marginMode !== undefined) {
3834
+ productType = 'MARGIN';
3835
+ }
3836
+ }
3837
+ request['category'] = productType;
3838
+ response = await this.publicUtaGetV3MarketFills(this.extend(request, params));
3839
+ }
3840
+ else if (market['spot']) {
3527
3841
  const spotOptions = this.safeValue(options, 'spot', {});
3528
3842
  const defaultSpotMethod = this.safeString(spotOptions, 'method', 'publicSpotGetV2SpotMarketFillsHistory');
3529
3843
  const spotMethod = this.safeString(params, 'method', defaultSpotMethod);
@@ -3544,8 +3858,6 @@ class bitget extends bitget$1 {
3544
3858
  const defaultSwapMethod = this.safeString(swapOptions, 'method', 'publicMixGetV2MixMarketFillsHistory');
3545
3859
  const swapMethod = this.safeString(params, 'method', defaultSwapMethod);
3546
3860
  params = this.omit(params, 'method');
3547
- let productType = undefined;
3548
- [productType, params] = this.handleProductTypeAndParams(market, params);
3549
3861
  request['productType'] = productType;
3550
3862
  if (swapMethod === 'publicMixGetV2MixMarketFillsHistory') {
3551
3863
  [request, params] = this.handleUntilOption('endTime', request, params);
@@ -3595,6 +3907,23 @@ class bitget extends bitget$1 {
3595
3907
  // ]
3596
3908
  // }
3597
3909
  //
3910
+ // uta
3911
+ //
3912
+ // {
3913
+ // "code": "00000",
3914
+ // "msg": "success",
3915
+ // "requestTime": 1750413823980,
3916
+ // "data": [
3917
+ // {
3918
+ // "execId": "1319896716324937729",
3919
+ // "price": "105909.1",
3920
+ // "size": "6.3090",
3921
+ // "side": "sell",
3922
+ // "ts": "1750413820344"
3923
+ // }
3924
+ // ]
3925
+ // }
3926
+ //
3598
3927
  const data = this.safeList(response, 'data', []);
3599
3928
  return this.parseTrades(data, market, since, limit);
3600
3929
  }
@@ -3786,13 +4115,15 @@ class bitget extends bitget$1 {
3786
4115
  // "1399132.341"
3787
4116
  // ]
3788
4117
  //
4118
+ const inverse = this.safeBool(market, 'inverse');
4119
+ const volumeIndex = inverse ? 6 : 5;
3789
4120
  return [
3790
4121
  this.safeInteger(ohlcv, 0),
3791
4122
  this.safeNumber(ohlcv, 1),
3792
4123
  this.safeNumber(ohlcv, 2),
3793
4124
  this.safeNumber(ohlcv, 3),
3794
4125
  this.safeNumber(ohlcv, 4),
3795
- this.safeNumber(ohlcv, 5),
4126
+ this.safeNumber(ohlcv, volumeIndex),
3796
4127
  ];
3797
4128
  }
3798
4129
  /**
@@ -3805,11 +4136,13 @@ class bitget extends bitget$1 {
3805
4136
  * @see https://www.bitget.com/api-doc/contract/market/Get-History-Candle-Data
3806
4137
  * @see https://www.bitget.com/api-doc/contract/market/Get-History-Index-Candle-Data
3807
4138
  * @see https://www.bitget.com/api-doc/contract/market/Get-History-Mark-Candle-Data
4139
+ * @see https://www.bitget.com/api-doc/uta/public/Get-Candle-Data
3808
4140
  * @param {string} symbol unified symbol of the market to fetch OHLCV data for
3809
4141
  * @param {string} timeframe the length of time each candle represents
3810
4142
  * @param {int} [since] timestamp in ms of the earliest candle to fetch
3811
4143
  * @param {int} [limit] the maximum amount of candles to fetch
3812
4144
  * @param {object} [params] extra parameters specific to the exchange API endpoint
4145
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
3813
4146
  * @param {int} [params.until] timestamp in ms of the latest candle to fetch
3814
4147
  * @param {boolean} [params.useHistoryEndpoint] whether to force to use historical endpoint (it has max limit of 200)
3815
4148
  * @param {boolean} [params.useHistoryEndpointForPagination] whether to force to use historical endpoint for pagination (default true)
@@ -3831,12 +4164,22 @@ class bitget extends bitget$1 {
3831
4164
  return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, limitForPagination);
3832
4165
  }
3833
4166
  const market = this.market(symbol);
3834
- const marketType = market['spot'] ? 'spot' : 'swap';
3835
- const timeframes = this.options['timeframes'][marketType];
3836
4167
  const request = {
3837
4168
  'symbol': market['id'],
3838
- 'granularity': this.safeString(timeframes, timeframe, timeframe),
3839
4169
  };
4170
+ let marketType = undefined;
4171
+ let timeframes = undefined;
4172
+ let uta = undefined;
4173
+ [uta, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'uta', false);
4174
+ if (uta) {
4175
+ timeframes = this.options['timeframes']['uta'];
4176
+ request['interval'] = this.safeString(timeframes, timeframe, timeframe);
4177
+ }
4178
+ else {
4179
+ marketType = market['spot'] ? 'spot' : 'swap';
4180
+ timeframes = this.options['timeframes'][marketType];
4181
+ request['granularity'] = this.safeString(timeframes, timeframe, timeframe);
4182
+ }
3840
4183
  const msInDay = 86400000;
3841
4184
  const now = this.milliseconds();
3842
4185
  const duration = this.parseTimeframe(timeframe) * 1000;
@@ -3906,7 +4249,23 @@ class bitget extends bitget$1 {
3906
4249
  request['limit'] = limit;
3907
4250
  // make request
3908
4251
  let response = undefined;
3909
- if (market['spot']) {
4252
+ let productType = undefined;
4253
+ let priceType = undefined;
4254
+ [priceType, params] = this.handleParamString(params, 'price');
4255
+ [productType, params] = this.handleProductTypeAndParams(market, params);
4256
+ if (uta) {
4257
+ if (priceType !== undefined) {
4258
+ if (priceType === 'mark') {
4259
+ request['type'] = 'MARK';
4260
+ }
4261
+ else if (priceType === 'index') {
4262
+ request['type'] = 'INDEX';
4263
+ }
4264
+ }
4265
+ request['category'] = productType;
4266
+ response = await this.publicUtaGetV3MarketCandles(this.extend(request, params));
4267
+ }
4268
+ else if (market['spot']) {
3910
4269
  // checks if we need history endpoint
3911
4270
  if (historicalEndpointNeeded) {
3912
4271
  response = await this.publicSpotGetV2SpotMarketHistoryCandles(this.extend(request, params));
@@ -3920,10 +4279,6 @@ class bitget extends bitget$1 {
3920
4279
  }
3921
4280
  }
3922
4281
  else {
3923
- let priceType = undefined;
3924
- [priceType, params] = this.handleParamString(params, 'price');
3925
- let productType = undefined;
3926
- [productType, params] = this.handleProductTypeAndParams(market, params);
3927
4282
  request['productType'] = productType;
3928
4283
  const extended = this.extend(request, params);
3929
4284
  if (!historicalEndpointNeeded && (priceType === 'mark' || priceType === 'index')) {
@@ -3971,8 +4326,10 @@ class bitget extends bitget$1 {
3971
4326
  * @see https://www.bitget.com/api-doc/margin/isolated/account/Get-Isolated-Assets
3972
4327
  * @see https://bitgetlimited.github.io/apidoc/en/margin/#get-cross-assets
3973
4328
  * @see https://bitgetlimited.github.io/apidoc/en/margin/#get-isolated-assets
4329
+ * @see https://www.bitget.com/api-doc/uta/account/Get-Account
3974
4330
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3975
4331
  * @param {string} [params.productType] *contract only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
4332
+ * @param {string} [params.uta] set to true for the unified trading account (uta), defaults to false
3976
4333
  * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
3977
4334
  */
3978
4335
  async fetchBalance(params = {}) {
@@ -3981,9 +4338,17 @@ class bitget extends bitget$1 {
3981
4338
  let marketType = undefined;
3982
4339
  let marginMode = undefined;
3983
4340
  let response = undefined;
4341
+ let uta = undefined;
4342
+ [uta, params] = this.handleOptionAndParams(params, 'fetchBalance', 'uta', false);
3984
4343
  [marketType, params] = this.handleMarketTypeAndParams('fetchBalance', undefined, params);
3985
4344
  [marginMode, params] = this.handleMarginModeAndParams('fetchBalance', params);
3986
- if ((marketType === 'swap') || (marketType === 'future')) {
4345
+ if (uta) {
4346
+ response = await this.privateUtaGetV3AccountAssets(this.extend(request, params));
4347
+ const results = this.safeDict(response, 'data', {});
4348
+ const assets = this.safeList(results, 'assets', []);
4349
+ return this.parseUtaBalance(assets);
4350
+ }
4351
+ else if ((marketType === 'swap') || (marketType === 'future')) {
3987
4352
  let productType = undefined;
3988
4353
  [productType, params] = this.handleProductTypeAndParams(undefined, params);
3989
4354
  request['productType'] = productType;
@@ -4088,9 +4453,67 @@ class bitget extends bitget$1 {
4088
4453
  // ]
4089
4454
  // }
4090
4455
  //
4456
+ // uta
4457
+ //
4458
+ // {
4459
+ // "code": "00000",
4460
+ // "msg": "success",
4461
+ // "requestTime": 1749980065089,
4462
+ // "data": {
4463
+ // "accountEquity": "11.13919278",
4464
+ // "usdtEquity": "11.13921165",
4465
+ // "btcEquity": "0.00011256",
4466
+ // "unrealisedPnl": "0",
4467
+ // "usdtUnrealisedPnl": "0",
4468
+ // "btcUnrealizedPnl": "0",
4469
+ // "effEquity": "6.19299777",
4470
+ // "mmr": "0",
4471
+ // "imr": "0",
4472
+ // "mgnRatio": "0",
4473
+ // "positionMgnRatio": "0",
4474
+ // "assets": [
4475
+ // {
4476
+ // "coin": "USDT",
4477
+ // "equity": "6.19300826",
4478
+ // "usdValue": "6.19299777",
4479
+ // "balance": "6.19300826",
4480
+ // "available": "6.19300826",
4481
+ // "debt": "0",
4482
+ // "locked": "0"
4483
+ // }
4484
+ // ]
4485
+ // }
4486
+ // }
4487
+ //
4091
4488
  const data = this.safeValue(response, 'data', []);
4092
4489
  return this.parseBalance(data);
4093
4490
  }
4491
+ parseUtaBalance(balance) {
4492
+ const result = { 'info': balance };
4493
+ //
4494
+ // {
4495
+ // "coin": "USDT",
4496
+ // "equity": "6.19300826",
4497
+ // "usdValue": "6.19299777",
4498
+ // "balance": "6.19300826",
4499
+ // "available": "6.19300826",
4500
+ // "debt": "0",
4501
+ // "locked": "0"
4502
+ // }
4503
+ //
4504
+ for (let i = 0; i < balance.length; i++) {
4505
+ const entry = balance[i];
4506
+ const account = this.account();
4507
+ const currencyId = this.safeString(entry, 'coin');
4508
+ const code = this.safeCurrencyCode(currencyId);
4509
+ account['debt'] = this.safeString(entry, 'debt');
4510
+ account['used'] = this.safeString(entry, 'locked');
4511
+ account['free'] = this.safeString(entry, 'available');
4512
+ account['total'] = this.safeString(entry, 'balance');
4513
+ result[code] = account;
4514
+ }
4515
+ return this.safeBalance(result);
4516
+ }
4094
4517
  parseBalance(balance) {
4095
4518
  const result = { 'info': balance };
4096
4519
  //
@@ -4229,7 +4652,7 @@ class bitget extends bitget$1 {
4229
4652
  // },
4230
4653
  // ]
4231
4654
  //
4232
- // spot, swap, future and spot margin: cancelOrder, cancelOrders
4655
+ // spot, swap, future, spot margin and uta: cancelOrder, cancelOrders, cancelAllOrders
4233
4656
  //
4234
4657
  // {
4235
4658
  // "orderId": "1098758604547850241",
@@ -4358,6 +4781,66 @@ class bitget extends bitget$1 {
4358
4781
  // "stopLossTriggerType": "fill_price",
4359
4782
  // }
4360
4783
  //
4784
+ // uta: fetchOrder, fetchOpenOrders, fetchCanceledAndClosedOrders
4785
+ //
4786
+ // {
4787
+ // "orderId": "1320244799629316096",
4788
+ // "clientOid": "1320244799633510400",
4789
+ // "category": "USDT-FUTURES",
4790
+ // "symbol": "BTCUSDT",
4791
+ // "orderType": "limit",
4792
+ // "side": "buy",
4793
+ // "price": "50000",
4794
+ // "qty": "0.001",
4795
+ // "amount": "0",
4796
+ // "cumExecQty": "0",
4797
+ // "cumExecValue": "0",
4798
+ // "avgPrice": "0",
4799
+ // "timeInForce": "gtc",
4800
+ // "orderStatus": "live",
4801
+ // "posSide": "long",
4802
+ // "holdMode": "hedge_mode",
4803
+ // "reduceOnly": "NO",
4804
+ // "feeDetail": [{
4805
+ // "feeCoin": "",
4806
+ // "fee": ""
4807
+ // }],
4808
+ // "createdTime": "1750496809871",
4809
+ // "updatedTime": "1750496809886",
4810
+ // "cancelReason": "",
4811
+ // "execType": "normal",
4812
+ // "stpMode": "none",
4813
+ // "tpTriggerBy": null,
4814
+ // "slTriggerBy": null,
4815
+ // "takeProfit": null,
4816
+ // "stopLoss": null,
4817
+ // "tpOrderType": null,
4818
+ // "slOrderType": null,
4819
+ // "tpLimitPrice": null,
4820
+ // "slLimitPrice": null
4821
+ // }
4822
+ //
4823
+ // uta trigger: fetchClosedOrders, fetchCanceledOrders
4824
+ //
4825
+ // {
4826
+ // "orderId": "1330984742276198400",
4827
+ // "clientOid": "1330984742276198400",
4828
+ // "symbol": "BTCUSDT",
4829
+ // "category": "USDT-FUTURES",
4830
+ // "qty": "0.001",
4831
+ // "posSide": "long",
4832
+ // "tpTriggerBy": "market",
4833
+ // "slTriggerBy": "mark",
4834
+ // "takeProfit": "",
4835
+ // "stopLoss": "112000",
4836
+ // "tpOrderType": "market",
4837
+ // "slOrderType": "limit",
4838
+ // "tpLimitPrice": "",
4839
+ // "slLimitPrice": "111000",
4840
+ // "createdTime": "1753057411736",
4841
+ // "updatedTime": "1753058267412"
4842
+ // }
4843
+ //
4361
4844
  const errorMessage = this.safeString(order, 'errorMsg');
4362
4845
  if (errorMessage !== undefined) {
4363
4846
  return this.safeOrder({
@@ -4367,17 +4850,17 @@ class bitget extends bitget$1 {
4367
4850
  'status': 'rejected',
4368
4851
  }, market);
4369
4852
  }
4370
- const isContractOrder = ('posSide' in order);
4853
+ const posSide = this.safeString(order, 'posSide');
4854
+ const isContractOrder = (posSide !== undefined);
4371
4855
  let marketType = isContractOrder ? 'contract' : 'spot';
4372
4856
  if (market !== undefined) {
4373
4857
  marketType = market['type'];
4374
4858
  }
4375
4859
  const marketId = this.safeString(order, 'symbol');
4376
4860
  market = this.safeMarket(marketId, market, undefined, marketType);
4377
- const timestamp = this.safeInteger2(order, 'cTime', 'ctime');
4378
- const updateTimestamp = this.safeInteger(order, 'uTime');
4379
- let rawStatus = this.safeString2(order, 'status', 'state');
4380
- rawStatus = this.safeString(order, 'planStatus', rawStatus);
4861
+ const timestamp = this.safeIntegerN(order, ['cTime', 'ctime', 'createdTime']);
4862
+ const updateTimestamp = this.safeInteger2(order, 'uTime', 'updatedTime');
4863
+ const rawStatus = this.safeStringN(order, ['status', 'state', 'orderStatus', 'planStatus']);
4381
4864
  let fee = undefined;
4382
4865
  const feeCostString = this.safeString(order, 'fee');
4383
4866
  if (feeCostString !== undefined) {
@@ -4388,26 +4871,37 @@ class bitget extends bitget$1 {
4388
4871
  };
4389
4872
  }
4390
4873
  const feeDetail = this.safeValue(order, 'feeDetail');
4391
- if (feeDetail !== undefined) {
4392
- const parsedFeeDetail = JSON.parse(feeDetail);
4393
- const feeValues = Object.values(parsedFeeDetail);
4394
- let feeObject = undefined;
4395
- for (let i = 0; i < feeValues.length; i++) {
4396
- const feeValue = feeValues[i];
4397
- if (this.safeValue(feeValue, 'feeCoinCode') !== undefined) {
4398
- feeObject = feeValue;
4399
- break;
4400
- }
4401
- }
4874
+ const uta = this.safeString(order, 'category') !== undefined;
4875
+ if (uta) {
4876
+ const feeResult = this.safeDict(feeDetail, 0, {});
4877
+ const utaFee = this.safeString(feeResult, 'fee');
4402
4878
  fee = {
4403
- 'cost': this.parseNumber(Precise["default"].stringNeg(this.safeString(feeObject, 'totalFee'))),
4404
- 'currency': this.safeCurrencyCode(this.safeString(feeObject, 'feeCoinCode')),
4879
+ 'cost': this.parseNumber(Precise["default"].stringNeg(utaFee)),
4880
+ 'currency': market['settle'],
4405
4881
  };
4406
4882
  }
4407
- let postOnly = undefined;
4408
- let timeInForce = this.safeStringUpper(order, 'force');
4409
- if (timeInForce === 'POST_ONLY') {
4410
- postOnly = true;
4883
+ else {
4884
+ if (feeDetail !== undefined) {
4885
+ const parsedFeeDetail = JSON.parse(feeDetail);
4886
+ const feeValues = Object.values(parsedFeeDetail);
4887
+ let feeObject = undefined;
4888
+ for (let i = 0; i < feeValues.length; i++) {
4889
+ const feeValue = feeValues[i];
4890
+ if (this.safeValue(feeValue, 'feeCoinCode') !== undefined) {
4891
+ feeObject = feeValue;
4892
+ break;
4893
+ }
4894
+ }
4895
+ fee = {
4896
+ 'cost': this.parseNumber(Precise["default"].stringNeg(this.safeString(feeObject, 'totalFee'))),
4897
+ 'currency': this.safeCurrencyCode(this.safeString(feeObject, 'feeCoinCode')),
4898
+ };
4899
+ }
4900
+ }
4901
+ let postOnly = undefined;
4902
+ let timeInForce = this.safeStringUpper2(order, 'force', 'timeInForce');
4903
+ if (timeInForce === 'POST_ONLY') {
4904
+ postOnly = true;
4411
4905
  timeInForce = 'PO';
4412
4906
  }
4413
4907
  let reduceOnly = undefined;
@@ -4424,7 +4918,7 @@ class bitget extends bitget$1 {
4424
4918
  average = this.safeString(order, 'basePrice');
4425
4919
  }
4426
4920
  else {
4427
- price = this.safeString2(order, 'price', 'executePrice');
4921
+ price = this.safeStringN(order, ['price', 'executePrice', 'slLimitPrice', 'tpLimitPrice']);
4428
4922
  average = this.safeString(order, 'priceAvg');
4429
4923
  }
4430
4924
  let size = undefined;
@@ -4436,8 +4930,8 @@ class bitget extends bitget$1 {
4436
4930
  filled = this.safeString(order, 'size');
4437
4931
  }
4438
4932
  else {
4439
- size = this.safeString(order, 'size');
4440
- filled = this.safeString(order, 'baseVolume');
4933
+ size = this.safeString2(order, 'size', 'qty');
4934
+ filled = this.safeString2(order, 'baseVolume', 'cumExecQty');
4441
4935
  }
4442
4936
  let side = this.safeString(order, 'side');
4443
4937
  const posMode = this.safeString(order, 'posMode');
@@ -4473,8 +4967,8 @@ class bitget extends bitget$1 {
4473
4967
  'postOnly': postOnly,
4474
4968
  'reduceOnly': reduceOnly,
4475
4969
  'triggerPrice': this.safeNumber(order, 'triggerPrice'),
4476
- 'takeProfitPrice': this.safeNumber2(order, 'presetStopSurplusPrice', 'stopSurplusTriggerPrice'),
4477
- 'stopLossPrice': this.safeNumber2(order, 'presetStopLossPrice', 'stopLossTriggerPrice'),
4970
+ 'takeProfitPrice': this.safeNumberN(order, ['presetStopSurplusPrice', 'stopSurplusTriggerPrice', 'takeProfit']),
4971
+ 'stopLossPrice': this.safeNumberN(order, ['presetStopLossPrice', 'stopLossTriggerPrice', 'stopLoss']),
4478
4972
  'status': this.parseOrderStatus(rawStatus),
4479
4973
  'fee': fee,
4480
4974
  'trades': undefined,
@@ -4514,6 +5008,8 @@ class bitget extends bitget$1 {
4514
5008
  * @see https://www.bitget.com/api-doc/contract/plan/Place-Plan-Order
4515
5009
  * @see https://www.bitget.com/api-doc/margin/cross/trade/Cross-Place-Order
4516
5010
  * @see https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Place-Order
5011
+ * @see https://www.bitget.com/api-doc/uta/trade/Place-Order
5012
+ * @see https://www.bitget.com/api-doc/uta/strategy/Place-Strategy-Order
4517
5013
  * @param {string} symbol unified symbol of the market to create an order in
4518
5014
  * @param {string} type 'market' or 'limit'
4519
5015
  * @param {string} side 'buy' or 'sell'
@@ -4542,6 +5038,8 @@ class bitget extends bitget$1 {
4542
5038
  * @param {boolean} [params.oneWayMode] *swap and future only* required to set this to true in one_way_mode and you can leave this as undefined in hedge_mode, can adjust the mode using the setPositionMode() method
4543
5039
  * @param {bool} [params.hedged] *swap and future only* true for hedged mode, false for one way mode, default is false
4544
5040
  * @param {bool} [params.reduceOnly] true or false whether the order is reduce-only
5041
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
5042
+ * @param {string} [params.posSide] *uta only* hedged two-way position side, long or short
4545
5043
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
4546
5044
  */
4547
5045
  async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
@@ -4558,31 +5056,44 @@ class bitget extends bitget$1 {
4558
5056
  const isStopLossTriggerOrder = stopLossTriggerPrice !== undefined;
4559
5057
  const isTakeProfitTriggerOrder = takeProfitTriggerPrice !== undefined;
4560
5058
  const isStopLossOrTakeProfitTrigger = isStopLossTriggerOrder || isTakeProfitTriggerOrder;
4561
- const request = this.createOrderRequest(symbol, type, side, amount, price, params);
4562
5059
  let response = undefined;
4563
- if (market['spot']) {
4564
- if (isTriggerOrder) {
4565
- response = await this.privateSpotPostV2SpotTradePlacePlanOrder(request);
4566
- }
4567
- else if (marginMode === 'isolated') {
4568
- response = await this.privateMarginPostV2MarginIsolatedPlaceOrder(request);
4569
- }
4570
- else if (marginMode === 'cross') {
4571
- response = await this.privateMarginPostV2MarginCrossedPlaceOrder(request);
5060
+ let uta = undefined;
5061
+ [uta, params] = this.handleOptionAndParams(params, 'createOrder', 'uta', false);
5062
+ if (uta) {
5063
+ const request = this.createUtaOrderRequest(symbol, type, side, amount, price, params);
5064
+ if (isStopLossOrTakeProfitTrigger) {
5065
+ response = await this.privateUtaPostV3TradePlaceStrategyOrder(request);
4572
5066
  }
4573
5067
  else {
4574
- response = await this.privateSpotPostV2SpotTradePlaceOrder(request);
5068
+ response = await this.privateUtaPostV3TradePlaceOrder(request);
4575
5069
  }
4576
5070
  }
4577
5071
  else {
4578
- if (isTriggerOrder || isTrailingPercentOrder) {
4579
- response = await this.privateMixPostV2MixOrderPlacePlanOrder(request);
4580
- }
4581
- else if (isStopLossOrTakeProfitTrigger) {
4582
- response = await this.privateMixPostV2MixOrderPlaceTpslOrder(request);
5072
+ const request = this.createOrderRequest(symbol, type, side, amount, price, params);
5073
+ if (market['spot']) {
5074
+ if (isTriggerOrder) {
5075
+ response = await this.privateSpotPostV2SpotTradePlacePlanOrder(request);
5076
+ }
5077
+ else if (marginMode === 'isolated') {
5078
+ response = await this.privateMarginPostV2MarginIsolatedPlaceOrder(request);
5079
+ }
5080
+ else if (marginMode === 'cross') {
5081
+ response = await this.privateMarginPostV2MarginCrossedPlaceOrder(request);
5082
+ }
5083
+ else {
5084
+ response = await this.privateSpotPostV2SpotTradePlaceOrder(request);
5085
+ }
4583
5086
  }
4584
5087
  else {
4585
- response = await this.privateMixPostV2MixOrderPlaceOrder(request);
5088
+ if (isTriggerOrder || isTrailingPercentOrder) {
5089
+ response = await this.privateMixPostV2MixOrderPlacePlanOrder(request);
5090
+ }
5091
+ else if (isStopLossOrTakeProfitTrigger) {
5092
+ response = await this.privateMixPostV2MixOrderPlaceTpslOrder(request);
5093
+ }
5094
+ else {
5095
+ response = await this.privateMixPostV2MixOrderPlaceOrder(request);
5096
+ }
4586
5097
  }
4587
5098
  }
4588
5099
  //
@@ -4599,6 +5110,133 @@ class bitget extends bitget$1 {
4599
5110
  const data = this.safeDict(response, 'data', {});
4600
5111
  return this.parseOrder(data, market);
4601
5112
  }
5113
+ createUtaOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
5114
+ const market = this.market(symbol);
5115
+ let productType = undefined;
5116
+ [productType, params] = this.handleProductTypeAndParams(market, params);
5117
+ if (productType === 'SPOT') {
5118
+ let marginMode = undefined;
5119
+ [marginMode, params] = this.handleMarginModeAndParams('createOrder', params);
5120
+ if (marginMode !== undefined) {
5121
+ productType = 'MARGIN';
5122
+ }
5123
+ }
5124
+ const request = {
5125
+ 'category': productType,
5126
+ 'symbol': market['id'],
5127
+ 'qty': this.amountToPrecision(symbol, amount),
5128
+ 'side': side,
5129
+ };
5130
+ const clientOrderId = this.safeString2(params, 'clientOid', 'clientOrderId');
5131
+ if (clientOrderId !== undefined) {
5132
+ request['clientOid'] = clientOrderId;
5133
+ params = this.omit(params, 'clientOrderId');
5134
+ }
5135
+ const stopLossTriggerPrice = this.safeNumber(params, 'stopLossPrice');
5136
+ const takeProfitTriggerPrice = this.safeNumber(params, 'takeProfitPrice');
5137
+ const stopLoss = this.safeValue(params, 'stopLoss');
5138
+ const takeProfit = this.safeValue(params, 'takeProfit');
5139
+ const isStopLoss = stopLoss !== undefined;
5140
+ const isTakeProfit = takeProfit !== undefined;
5141
+ const isStopLossTrigger = stopLossTriggerPrice !== undefined;
5142
+ const isTakeProfitTrigger = takeProfitTriggerPrice !== undefined;
5143
+ const isStopLossOrTakeProfitTrigger = isStopLossTrigger || isTakeProfitTrigger;
5144
+ if (isStopLossOrTakeProfitTrigger) {
5145
+ if (isStopLossTrigger) {
5146
+ const slType = this.safeString(params, 'slTriggerBy', 'mark');
5147
+ request['slTriggerBy'] = slType;
5148
+ request['stopLoss'] = this.priceToPrecision(symbol, stopLossTriggerPrice);
5149
+ if (price !== undefined) {
5150
+ request['slLimitPrice'] = this.priceToPrecision(symbol, price);
5151
+ request['slOrderType'] = this.safeString(params, 'slOrderType', 'limit');
5152
+ }
5153
+ else {
5154
+ request['slOrderType'] = this.safeString(params, 'slOrderType', 'market');
5155
+ }
5156
+ }
5157
+ else if (isTakeProfitTrigger) {
5158
+ const tpType = this.safeString(params, 'tpTriggerBy', 'mark');
5159
+ request['tpTriggerBy'] = tpType;
5160
+ request['takeProfit'] = this.priceToPrecision(symbol, takeProfitTriggerPrice);
5161
+ if (price !== undefined) {
5162
+ request['tpLimitPrice'] = this.priceToPrecision(symbol, price);
5163
+ request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'limit');
5164
+ }
5165
+ else {
5166
+ request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'market');
5167
+ }
5168
+ }
5169
+ params = this.omit(params, ['stopLossPrice', 'takeProfitPrice']);
5170
+ }
5171
+ else {
5172
+ if (isStopLoss) {
5173
+ const slTriggerPrice = this.safeNumber2(stopLoss, 'triggerPrice', 'stopPrice');
5174
+ const slLimitPrice = this.safeNumber(stopLoss, 'price');
5175
+ request['stopLoss'] = this.priceToPrecision(symbol, slTriggerPrice);
5176
+ if (slLimitPrice !== undefined) {
5177
+ request['slLimitPrice'] = this.priceToPrecision(symbol, slLimitPrice);
5178
+ request['slOrderType'] = this.safeString(params, 'slOrderType', 'limit');
5179
+ }
5180
+ else {
5181
+ request['slOrderType'] = this.safeString(params, 'slOrderType', 'market');
5182
+ }
5183
+ }
5184
+ if (isTakeProfit) {
5185
+ const tpTriggerPrice = this.safeNumber2(takeProfit, 'triggerPrice', 'stopPrice');
5186
+ const tpLimitPrice = this.safeNumber(takeProfit, 'price');
5187
+ request['takeProfit'] = this.priceToPrecision(symbol, tpTriggerPrice);
5188
+ if (tpLimitPrice !== undefined) {
5189
+ request['tpLimitPrice'] = this.priceToPrecision(symbol, tpLimitPrice);
5190
+ request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'limit');
5191
+ }
5192
+ else {
5193
+ request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'market');
5194
+ }
5195
+ }
5196
+ const isMarketOrder = type === 'market';
5197
+ if (!isMarketOrder) {
5198
+ request['price'] = this.priceToPrecision(symbol, price);
5199
+ }
5200
+ request['orderType'] = type;
5201
+ const exchangeSpecificTifParam = this.safeString(params, 'timeInForce');
5202
+ let postOnly = undefined;
5203
+ [postOnly, params] = this.handlePostOnly(isMarketOrder, exchangeSpecificTifParam === 'post_only', params);
5204
+ const defaultTimeInForce = this.safeStringUpper(this.options, 'defaultTimeInForce');
5205
+ const timeInForce = this.safeStringUpper(params, 'timeInForce', defaultTimeInForce);
5206
+ if (postOnly) {
5207
+ request['timeInForce'] = 'post_only';
5208
+ }
5209
+ else if (timeInForce === 'GTC') {
5210
+ request['timeInForce'] = 'gtc';
5211
+ }
5212
+ else if (timeInForce === 'FOK') {
5213
+ request['timeInForce'] = 'fok';
5214
+ }
5215
+ else if (timeInForce === 'IOC') {
5216
+ request['timeInForce'] = 'ioc';
5217
+ }
5218
+ }
5219
+ const reduceOnly = this.safeBool(params, 'reduceOnly', false);
5220
+ let hedged = undefined;
5221
+ [hedged, params] = this.handleParamBool(params, 'hedged', false);
5222
+ if (reduceOnly) {
5223
+ if (hedged || isStopLossOrTakeProfitTrigger) {
5224
+ const reduceOnlyPosSide = (side === 'sell') ? 'long' : 'short';
5225
+ request['posSide'] = reduceOnlyPosSide;
5226
+ }
5227
+ else if (!isStopLossOrTakeProfitTrigger) {
5228
+ request['reduceOnly'] = 'yes';
5229
+ }
5230
+ }
5231
+ else {
5232
+ if (hedged) {
5233
+ const posSide = (side === 'buy') ? 'long' : 'short';
5234
+ request['posSide'] = posSide;
5235
+ }
5236
+ }
5237
+ params = this.omit(params, ['stopLoss', 'takeProfit', 'postOnly', 'reduceOnly', 'hedged']);
5238
+ return this.extend(request, params);
5239
+ }
4602
5240
  createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
4603
5241
  const market = this.market(symbol);
4604
5242
  let marketType = undefined;
@@ -4682,17 +5320,17 @@ class bitget extends bitget$1 {
4682
5320
  request['executePrice'] = this.priceToPrecision(symbol, price);
4683
5321
  }
4684
5322
  if (isStopLoss) {
4685
- const slTriggerPrice = this.safeNumber2(stopLoss, 'triggerPrice', 'stopPrice');
5323
+ const slTriggerPrice = this.safeString2(stopLoss, 'triggerPrice', 'stopPrice');
4686
5324
  request['stopLossTriggerPrice'] = this.priceToPrecision(symbol, slTriggerPrice);
4687
- const slPrice = this.safeNumber(stopLoss, 'price');
5325
+ const slPrice = this.safeString(stopLoss, 'price');
4688
5326
  request['stopLossExecutePrice'] = this.priceToPrecision(symbol, slPrice);
4689
5327
  const slType = this.safeString(stopLoss, 'type', 'mark_price');
4690
5328
  request['stopLossTriggerType'] = slType;
4691
5329
  }
4692
5330
  if (isTakeProfit) {
4693
- const tpTriggerPrice = this.safeNumber2(takeProfit, 'triggerPrice', 'stopPrice');
5331
+ const tpTriggerPrice = this.safeString2(takeProfit, 'triggerPrice', 'stopPrice');
4694
5332
  request['stopSurplusTriggerPrice'] = this.priceToPrecision(symbol, tpTriggerPrice);
4695
- const tpPrice = this.safeNumber(takeProfit, 'price');
5333
+ const tpPrice = this.safeString(takeProfit, 'price');
4696
5334
  request['stopSurplusExecutePrice'] = this.priceToPrecision(symbol, tpPrice);
4697
5335
  const tpType = this.safeString(takeProfit, 'type', 'mark_price');
4698
5336
  request['stopSurplusTriggerType'] = tpType;
@@ -4821,6 +5459,60 @@ class bitget extends bitget$1 {
4821
5459
  }
4822
5460
  return this.extend(request, params);
4823
5461
  }
5462
+ async createUtaOrders(orders, params = {}) {
5463
+ await this.loadMarkets();
5464
+ const ordersRequests = [];
5465
+ let symbol = undefined;
5466
+ let marginMode = undefined;
5467
+ for (let i = 0; i < orders.length; i++) {
5468
+ const rawOrder = orders[i];
5469
+ const marketId = this.safeString(rawOrder, 'symbol');
5470
+ if (symbol === undefined) {
5471
+ symbol = marketId;
5472
+ }
5473
+ else {
5474
+ if (symbol !== marketId) {
5475
+ throw new errors.BadRequest(this.id + ' createOrders() requires all orders to have the same symbol');
5476
+ }
5477
+ }
5478
+ const type = this.safeString(rawOrder, 'type');
5479
+ const side = this.safeString(rawOrder, 'side');
5480
+ const amount = this.safeValue(rawOrder, 'amount');
5481
+ const price = this.safeValue(rawOrder, 'price');
5482
+ const orderParams = this.safeValue(rawOrder, 'params', {});
5483
+ const marginResult = this.handleMarginModeAndParams('createOrders', orderParams);
5484
+ const currentMarginMode = marginResult[0];
5485
+ if (currentMarginMode !== undefined) {
5486
+ if (marginMode === undefined) {
5487
+ marginMode = currentMarginMode;
5488
+ }
5489
+ else {
5490
+ if (marginMode !== currentMarginMode) {
5491
+ throw new errors.BadRequest(this.id + ' createOrders() requires all orders to have the same margin mode (isolated or cross)');
5492
+ }
5493
+ }
5494
+ }
5495
+ const orderRequest = this.createUtaOrderRequest(marketId, type, side, amount, price, orderParams);
5496
+ ordersRequests.push(orderRequest);
5497
+ }
5498
+ const market = this.market(symbol);
5499
+ const response = await this.privateUtaPostV3TradePlaceBatch(ordersRequests);
5500
+ //
5501
+ // {
5502
+ // "code": "00000",
5503
+ // "msg": "success",
5504
+ // "requestTime": 1752810184560,
5505
+ // "data": [
5506
+ // {
5507
+ // "orderId": "1329947796441513984",
5508
+ // "clientOid": "1329947796483457024"
5509
+ // },
5510
+ // ]
5511
+ // }
5512
+ //
5513
+ const data = this.safeList(response, 'data', []);
5514
+ return this.parseOrders(data, market);
5515
+ }
4824
5516
  /**
4825
5517
  * @method
4826
5518
  * @name bitget#createOrders
@@ -4829,12 +5521,19 @@ class bitget extends bitget$1 {
4829
5521
  * @see https://www.bitget.com/api-doc/contract/trade/Batch-Order
4830
5522
  * @see https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Batch-Order
4831
5523
  * @see https://www.bitget.com/api-doc/margin/cross/trade/Cross-Batch-Order
5524
+ * @see https://www.bitget.com/api-doc/uta/trade/Place-Batch
4832
5525
  * @param {Array} orders list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params
4833
5526
  * @param {object} [params] extra parameters specific to the api endpoint
5527
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
4834
5528
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
4835
5529
  */
4836
5530
  async createOrders(orders, params = {}) {
4837
5531
  await this.loadMarkets();
5532
+ let uta = undefined;
5533
+ [uta, params] = this.handleOptionAndParams(params, 'createOrders', 'uta', false);
5534
+ if (uta) {
5535
+ return await this.createUtaOrders(orders, params);
5536
+ }
4838
5537
  const ordersRequests = [];
4839
5538
  let symbol = undefined;
4840
5539
  let marginMode = undefined;
@@ -4933,6 +5632,8 @@ class bitget extends bitget$1 {
4933
5632
  * @see https://www.bitget.com/api-doc/contract/trade/Modify-Order
4934
5633
  * @see https://www.bitget.com/api-doc/contract/plan/Modify-Tpsl-Order
4935
5634
  * @see https://www.bitget.com/api-doc/contract/plan/Modify-Plan-Order
5635
+ * @see https://www.bitget.com/api-doc/uta/trade/Modify-Order
5636
+ * @see https://www.bitget.com/api-doc/uta/strategy/Modify-Strategy-Order
4936
5637
  * @param {string} id cancel order id
4937
5638
  * @param {string} symbol unified symbol of the market to create an order in
4938
5639
  * @param {string} type 'market' or 'limit'
@@ -4954,6 +5655,7 @@ class bitget extends bitget$1 {
4954
5655
  * @param {string} [params.trailingPercent] *swap and future only* the percent to trail away from the current market price, rate can not be greater than 10
4955
5656
  * @param {string} [params.trailingTriggerPrice] *swap and future only* the price to trigger a trailing stop order, default uses the price argument
4956
5657
  * @param {string} [params.newTriggerType] *swap and future only* 'fill_price', 'mark_price' or 'index_price'
5658
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
4957
5659
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
4958
5660
  */
4959
5661
  async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
@@ -4985,7 +5687,50 @@ class bitget extends bitget$1 {
4985
5687
  }
4986
5688
  params = this.omit(params, ['stopPrice', 'triggerType', 'stopLossPrice', 'takeProfitPrice', 'stopLoss', 'takeProfit', 'clientOrderId', 'trailingTriggerPrice', 'trailingPercent']);
4987
5689
  let response = undefined;
4988
- if (market['spot']) {
5690
+ let productType = undefined;
5691
+ let uta = undefined;
5692
+ [productType, params] = this.handleProductTypeAndParams(market, params);
5693
+ [uta, params] = this.handleOptionAndParams(params, 'editOrder', 'uta', false);
5694
+ if (uta) {
5695
+ if (amount !== undefined) {
5696
+ request['qty'] = this.amountToPrecision(symbol, amount);
5697
+ }
5698
+ if (isStopLossOrder || isTakeProfitOrder) {
5699
+ if (isStopLossOrder) {
5700
+ const slType = this.safeString(params, 'slTriggerBy', 'mark');
5701
+ request['slTriggerBy'] = slType;
5702
+ request['stopLoss'] = this.priceToPrecision(symbol, stopLossPrice);
5703
+ if (price !== undefined) {
5704
+ request['slLimitPrice'] = this.priceToPrecision(symbol, price);
5705
+ request['slOrderType'] = this.safeString(params, 'slOrderType', 'limit');
5706
+ }
5707
+ else {
5708
+ request['slOrderType'] = this.safeString(params, 'slOrderType', 'market');
5709
+ }
5710
+ }
5711
+ else if (isTakeProfitOrder) {
5712
+ const tpType = this.safeString(params, 'tpTriggerBy', 'mark');
5713
+ request['tpTriggerBy'] = tpType;
5714
+ request['takeProfit'] = this.priceToPrecision(symbol, takeProfitPrice);
5715
+ if (price !== undefined) {
5716
+ request['tpLimitPrice'] = this.priceToPrecision(symbol, price);
5717
+ request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'limit');
5718
+ }
5719
+ else {
5720
+ request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'market');
5721
+ }
5722
+ }
5723
+ params = this.omit(params, ['stopLossPrice', 'takeProfitPrice']);
5724
+ response = await this.privateUtaPostV3TradeModifyStrategyOrder(this.extend(request, params));
5725
+ }
5726
+ else {
5727
+ if (price !== undefined) {
5728
+ request['price'] = this.priceToPrecision(symbol, price);
5729
+ }
5730
+ response = await this.privateUtaPostV3TradeModifyOrder(this.extend(request, params));
5731
+ }
5732
+ }
5733
+ else if (market['spot']) {
4989
5734
  if (triggerPrice === undefined) {
4990
5735
  throw new errors.NotSupported(this.id + ' editOrder() only supports plan/trigger spot orders');
4991
5736
  }
@@ -5014,8 +5759,6 @@ class bitget extends bitget$1 {
5014
5759
  throw new errors.NotSupported(this.id + ' editOrder() does not support ' + market['type'] + ' orders');
5015
5760
  }
5016
5761
  request['symbol'] = market['id'];
5017
- let productType = undefined;
5018
- [productType, params] = this.handleProductTypeAndParams(market, params);
5019
5762
  request['productType'] = productType;
5020
5763
  if (!isTakeProfitOrder && !isStopLossOrder) {
5021
5764
  request['newSize'] = this.amountToPrecision(symbol, amount);
@@ -5107,6 +5850,8 @@ class bitget extends bitget$1 {
5107
5850
  * @see https://www.bitget.com/api-doc/contract/plan/Cancel-Plan-Order
5108
5851
  * @see https://www.bitget.com/api-doc/margin/cross/trade/Cross-Cancel-Order
5109
5852
  * @see https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Cancel-Order
5853
+ * @see https://www.bitget.com/api-doc/uta/trade/Cancel-Order
5854
+ * @see https://www.bitget.com/api-doc/uta/strategy/Cancel-Strategy-Order
5110
5855
  * @param {string} id order id
5111
5856
  * @param {string} symbol unified symbol of the market the order was made in
5112
5857
  * @param {object} [params] extra parameters specific to the exchange API endpoint
@@ -5114,6 +5859,8 @@ class bitget extends bitget$1 {
5114
5859
  * @param {boolean} [params.trigger] set to true for canceling trigger orders
5115
5860
  * @param {string} [params.planType] *swap only* either profit_plan, loss_plan, normal_plan, pos_profit, pos_loss, moving_plan or track_plan
5116
5861
  * @param {boolean} [params.trailing] set to true if you want to cancel a trailing order
5862
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
5863
+ * @param {string} [params.clientOrderId] the clientOrderId of the order, id does not need to be provided if clientOrderId is provided
5117
5864
  * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
5118
5865
  */
5119
5866
  async cancelOrder(id, symbol = undefined, params = {}) {
@@ -5132,21 +5879,46 @@ class bitget extends bitget$1 {
5132
5879
  if (!(market['spot'] && trigger)) {
5133
5880
  request['symbol'] = market['id'];
5134
5881
  }
5135
- if (!((market['swap'] || market['future']) && trigger)) {
5136
- request['orderId'] = id;
5882
+ let uta = undefined;
5883
+ [uta, params] = this.handleOptionAndParams(params, 'cancelOrder', 'uta', false);
5884
+ const isPlanOrder = trigger || trailing;
5885
+ const isContract = market['swap'] || market['future'];
5886
+ const isContractTriggerEndpoint = isContract && isPlanOrder && !uta;
5887
+ const clientOrderId = this.safeString2(params, 'clientOrderId', 'clientOid');
5888
+ if (isContractTriggerEndpoint) {
5889
+ const orderIdList = [];
5890
+ const orderId = {};
5891
+ if (clientOrderId !== undefined) {
5892
+ params = this.omit(params, 'clientOrderId');
5893
+ orderId['clientOid'] = clientOrderId;
5894
+ }
5895
+ else {
5896
+ orderId['orderId'] = id;
5897
+ }
5898
+ orderIdList.push(orderId);
5899
+ request['orderIdList'] = orderIdList;
5137
5900
  }
5138
- if ((market['swap']) || (market['future'])) {
5901
+ else {
5902
+ if (clientOrderId !== undefined) {
5903
+ params = this.omit(params, 'clientOrderId');
5904
+ request['clientOid'] = clientOrderId;
5905
+ }
5906
+ else {
5907
+ request['orderId'] = id;
5908
+ }
5909
+ }
5910
+ if (uta) {
5911
+ if (trigger) {
5912
+ response = await this.privateUtaPostV3TradeCancelStrategyOrder(this.extend(request, params));
5913
+ }
5914
+ else {
5915
+ response = await this.privateUtaPostV3TradeCancelOrder(this.extend(request, params));
5916
+ }
5917
+ }
5918
+ else if ((market['swap']) || (market['future'])) {
5139
5919
  let productType = undefined;
5140
5920
  [productType, params] = this.handleProductTypeAndParams(market, params);
5141
5921
  request['productType'] = productType;
5142
- if (trigger || trailing) {
5143
- const orderIdList = [];
5144
- const orderId = {
5145
- 'orderId': id,
5146
- };
5147
- orderIdList.push(orderId);
5148
- request['orderIdList'] = orderIdList;
5149
- }
5150
5922
  if (trailing) {
5151
5923
  const planType = this.safeString(params, 'planType', 'track_plan');
5152
5924
  request['planType'] = planType;
@@ -5221,17 +5993,66 @@ class bitget extends bitget$1 {
5221
5993
  // }
5222
5994
  // }
5223
5995
  //
5996
+ // uta trigger
5997
+ //
5998
+ // {
5999
+ // "code": "00000",
6000
+ // "msg": "success",
6001
+ // "requestTime": "1753058267399",
6002
+ // "data": null
6003
+ // }
6004
+ //
5224
6005
  const data = this.safeValue(response, 'data', {});
5225
6006
  let order = undefined;
5226
- if ((market['swap'] || market['future']) && trigger) {
6007
+ if (isContractTriggerEndpoint) {
5227
6008
  const orderInfo = this.safeValue(data, 'successList', []);
5228
6009
  order = orderInfo[0];
5229
6010
  }
5230
6011
  else {
5231
- order = data;
6012
+ if (uta && trigger) {
6013
+ order = response;
6014
+ }
6015
+ else {
6016
+ order = data;
6017
+ }
5232
6018
  }
5233
6019
  return this.parseOrder(order, market);
5234
6020
  }
6021
+ async cancelUtaOrders(ids, symbol = undefined, params = {}) {
6022
+ if (symbol === undefined) {
6023
+ throw new errors.ArgumentsRequired(this.id + ' cancelOrders() requires a symbol argument');
6024
+ }
6025
+ await this.loadMarkets();
6026
+ const market = this.market(symbol);
6027
+ let productType = undefined;
6028
+ [productType, params] = this.handleProductTypeAndParams(market, params);
6029
+ const requestList = [];
6030
+ for (let i = 0; i < ids.length; i++) {
6031
+ const individualId = ids[i];
6032
+ const order = {
6033
+ 'orderId': individualId,
6034
+ 'symbol': market['id'],
6035
+ 'category': productType,
6036
+ };
6037
+ requestList.push(order);
6038
+ }
6039
+ const response = await this.privateUtaPostV3TradeCancelBatch(requestList);
6040
+ //
6041
+ // {
6042
+ // "code": "00000",
6043
+ // "msg": "success",
6044
+ // "requestTime": 1752813731517,
6045
+ // "data": [
6046
+ // {
6047
+ // "orderId": "1329948909442023424",
6048
+ // "clientOid": "1329948909446217728"
6049
+ // },
6050
+ // ]
6051
+ // }
6052
+ //
6053
+ const data = this.safeList(response, 'data', []);
6054
+ return this.parseOrders(data, market);
6055
+ }
5235
6056
  /**
5236
6057
  * @method
5237
6058
  * @name bitget#cancelOrders
@@ -5241,11 +6062,13 @@ class bitget extends bitget$1 {
5241
6062
  * @see https://www.bitget.com/api-doc/contract/plan/Cancel-Plan-Order
5242
6063
  * @see https://www.bitget.com/api-doc/margin/cross/trade/Cross-Batch-Cancel-Order
5243
6064
  * @see https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Batch-Cancel-Orders
6065
+ * @see https://www.bitget.com/api-doc/uta/trade/Cancel-Batch
5244
6066
  * @param {string[]} ids order ids
5245
6067
  * @param {string} symbol unified market symbol, default is undefined
5246
6068
  * @param {object} [params] extra parameters specific to the exchange API endpoint
5247
6069
  * @param {string} [params.marginMode] 'isolated' or 'cross' for spot margin trading
5248
6070
  * @param {boolean} [params.trigger] *contract only* set to true for canceling trigger orders
6071
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
5249
6072
  * @returns {object} an array of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
5250
6073
  */
5251
6074
  async cancelOrders(ids, symbol = undefined, params = {}) {
@@ -5254,6 +6077,11 @@ class bitget extends bitget$1 {
5254
6077
  }
5255
6078
  await this.loadMarkets();
5256
6079
  const market = this.market(symbol);
6080
+ let uta = undefined;
6081
+ [uta, params] = this.handleOptionAndParams(params, 'cancelOrders', 'uta', false);
6082
+ if (uta) {
6083
+ return await this.cancelUtaOrders(ids, symbol, params);
6084
+ }
5257
6085
  let marginMode = undefined;
5258
6086
  [marginMode, params] = this.handleMarginModeAndParams('cancelOrders', params);
5259
6087
  const trigger = this.safeValue2(params, 'stop', 'trigger');
@@ -5329,10 +6157,12 @@ class bitget extends bitget$1 {
5329
6157
  * @see https://www.bitget.com/api-doc/contract/trade/Batch-Cancel-Orders
5330
6158
  * @see https://bitgetlimited.github.io/apidoc/en/margin/#isolated-batch-cancel-orders
5331
6159
  * @see https://bitgetlimited.github.io/apidoc/en/margin/#cross-batch-cancel-order
6160
+ * @see https://www.bitget.com/api-doc/uta/trade/Cancel-All-Order
5332
6161
  * @param {string} symbol unified market symbol
5333
6162
  * @param {object} [params] extra parameters specific to the exchange API endpoint
5334
6163
  * @param {string} [params.marginMode] 'isolated' or 'cross' for spot margin trading
5335
6164
  * @param {boolean} [params.trigger] *contract only* set to true for canceling trigger orders
6165
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
5336
6166
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
5337
6167
  */
5338
6168
  async cancelAllOrders(symbol = undefined, params = {}) {
@@ -5343,13 +6173,41 @@ class bitget extends bitget$1 {
5343
6173
  const market = this.market(symbol);
5344
6174
  let marginMode = undefined;
5345
6175
  [marginMode, params] = this.handleMarginModeAndParams('cancelAllOrders', params);
6176
+ let productType = undefined;
6177
+ [productType, params] = this.handleProductTypeAndParams(market, params);
5346
6178
  const request = {
5347
6179
  'symbol': market['id'],
5348
6180
  };
5349
6181
  const trigger = this.safeBool2(params, 'stop', 'trigger');
5350
6182
  params = this.omit(params, ['stop', 'trigger']);
5351
6183
  let response = undefined;
5352
- if (market['spot']) {
6184
+ let uta = undefined;
6185
+ [uta, params] = this.handleOptionAndParams(params, 'cancelAllOrders', 'uta', false);
6186
+ if (uta) {
6187
+ if (productType === 'SPOT') {
6188
+ if (marginMode !== undefined) {
6189
+ productType = 'MARGIN';
6190
+ }
6191
+ }
6192
+ request['category'] = productType;
6193
+ response = await this.privateUtaPostV3TradeCancelSymbolOrder(this.extend(request, params));
6194
+ //
6195
+ // {
6196
+ // "code": "00000",
6197
+ // "msg": "success",
6198
+ // "requestTime": 1750751578138,
6199
+ // "data": {
6200
+ // "list": [
6201
+ // {
6202
+ // "orderId": "1321313242969427968",
6203
+ // "clientOid": "1321313242969427969"
6204
+ // }
6205
+ // ]
6206
+ // }
6207
+ // }
6208
+ //
6209
+ }
6210
+ else if (market['spot']) {
5353
6211
  if (marginMode !== undefined) {
5354
6212
  if (marginMode === 'cross') {
5355
6213
  response = await this.privateMarginPostMarginV1CrossOrderBatchCancelOrder(this.extend(request, params));
@@ -5408,8 +6266,6 @@ class bitget extends bitget$1 {
5408
6266
  }
5409
6267
  }
5410
6268
  else {
5411
- let productType = undefined;
5412
- [productType, params] = this.handleProductTypeAndParams(market, params);
5413
6269
  request['productType'] = productType;
5414
6270
  if (trigger) {
5415
6271
  response = await this.privateMixPostV2MixOrderCancelPlanOrder(this.extend(request, params));
@@ -5433,9 +6289,15 @@ class bitget extends bitget$1 {
5433
6289
  // }
5434
6290
  }
5435
6291
  const data = this.safeDict(response, 'data');
5436
- const resultList = this.safeList2(data, 'resultList', 'successList');
6292
+ const resultList = this.safeListN(data, ['resultList', 'successList', 'list']);
5437
6293
  const failureList = this.safeList2(data, 'failure', 'failureList');
5438
- const responseList = this.arrayConcat(resultList, failureList);
6294
+ let responseList = undefined;
6295
+ if ((resultList !== undefined) && (failureList !== undefined)) {
6296
+ responseList = this.arrayConcat(resultList, failureList);
6297
+ }
6298
+ else {
6299
+ responseList = resultList;
6300
+ }
5439
6301
  return this.parseOrders(responseList);
5440
6302
  }
5441
6303
  /**
@@ -5444,9 +6306,12 @@ class bitget extends bitget$1 {
5444
6306
  * @description fetches information on an order made by the user
5445
6307
  * @see https://www.bitget.com/api-doc/spot/trade/Get-Order-Info
5446
6308
  * @see https://www.bitget.com/api-doc/contract/trade/Get-Order-Details
6309
+ * @see https://www.bitget.com/api-doc/uta/trade/Get-Order-Details
5447
6310
  * @param {string} id the order id
5448
6311
  * @param {string} symbol unified symbol of the market the order was made in
5449
6312
  * @param {object} [params] extra parameters specific to the exchange API endpoint
6313
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
6314
+ * @param {string} [params.clientOrderId] the clientOrderId of the order, id does not need to be provided if clientOrderId is provided
5450
6315
  * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
5451
6316
  */
5452
6317
  async fetchOrder(id, symbol = undefined, params = {}) {
@@ -5456,14 +6321,27 @@ class bitget extends bitget$1 {
5456
6321
  await this.loadMarkets();
5457
6322
  const market = this.market(symbol);
5458
6323
  const request = {
5459
- 'orderId': id,
6324
+ // 'orderId': id,
5460
6325
  };
5461
- let response = undefined;
5462
- if (market['spot']) {
5463
- response = await this.privateSpotGetV2SpotTradeOrderInfo(this.extend(request, params));
6326
+ const clientOrderId = this.safeString2(params, 'clientOrderId', 'clientOid');
6327
+ if (clientOrderId !== undefined) {
6328
+ params = this.omit(params, ['clientOrderId']);
6329
+ request['clientOid'] = clientOrderId;
5464
6330
  }
5465
- else if (market['swap'] || market['future']) {
5466
- request['symbol'] = market['id'];
6331
+ else {
6332
+ request['orderId'] = id;
6333
+ }
6334
+ let response = undefined;
6335
+ let uta = undefined;
6336
+ [uta, params] = this.handleOptionAndParams(params, 'fetchOrder', 'uta', false);
6337
+ if (uta) {
6338
+ response = await this.privateUtaGetV3TradeOrderInfo(this.extend(request, params));
6339
+ }
6340
+ else if (market['spot']) {
6341
+ response = await this.privateSpotGetV2SpotTradeOrderInfo(this.extend(request, params));
6342
+ }
6343
+ else if (market['swap'] || market['future']) {
6344
+ request['symbol'] = market['id'];
5467
6345
  let productType = undefined;
5468
6346
  [productType, params] = this.handleProductTypeAndParams(market, params);
5469
6347
  request['productType'] = productType;
@@ -5539,7 +6417,51 @@ class bitget extends bitget$1 {
5539
6417
  // }
5540
6418
  // }
5541
6419
  //
5542
- if (typeof response === 'string') {
6420
+ // uta
6421
+ //
6422
+ // {
6423
+ // "code": "00000",
6424
+ // "msg": "success",
6425
+ // "requestTime": 1750496858333,
6426
+ // "data": {
6427
+ // "orderId": "1320244799629316096",
6428
+ // "clientOid": "1320244799633510400",
6429
+ // "category": "USDT-FUTURES",
6430
+ // "symbol": "BTCUSDT",
6431
+ // "orderType": "limit",
6432
+ // "side": "buy",
6433
+ // "price": "50000",
6434
+ // "qty": "0.001",
6435
+ // "amount": "0",
6436
+ // "cumExecQty": "0",
6437
+ // "cumExecValue": "0",
6438
+ // "avgPrice": "0",
6439
+ // "timeInForce": "gtc",
6440
+ // "orderStatus": "live",
6441
+ // "posSide": "long",
6442
+ // "holdMode": "hedge_mode",
6443
+ // "reduceOnly": "NO",
6444
+ // "feeDetail": [{
6445
+ // "feeCoin": "",
6446
+ // "fee": ""
6447
+ // }],
6448
+ // "createdTime": "1750496809871",
6449
+ // "updatedTime": "1750496809886",
6450
+ // "cancelReason": "",
6451
+ // "execType": "normal",
6452
+ // "stpMode": "none",
6453
+ // "tpTriggerBy": null,
6454
+ // "slTriggerBy": null,
6455
+ // "takeProfit": null,
6456
+ // "stopLoss": null,
6457
+ // "tpOrderType": null,
6458
+ // "slOrderType": null,
6459
+ // "tpLimitPrice": null,
6460
+ // "slLimitPrice": null
6461
+ // }
6462
+ // }
6463
+ //
6464
+ if (!uta && (typeof response === 'string')) {
5543
6465
  response = JSON.parse(response);
5544
6466
  }
5545
6467
  const data = this.safeDict(response, 'data');
@@ -5549,6 +6471,10 @@ class bitget extends bitget$1 {
5549
6471
  }
5550
6472
  }
5551
6473
  const dataList = this.safeList(response, 'data', []);
6474
+ const dataListLength = dataList.length;
6475
+ if (dataListLength === 0) {
6476
+ throw new errors.OrderNotFound(this.id + ' fetchOrder() could not find order id ' + id + ' in ' + this.json(response));
6477
+ }
5552
6478
  const first = this.safeDict(dataList, 0, {});
5553
6479
  return this.parseOrder(first, market);
5554
6480
  // const first = this.safeDict (data, 0, data);
@@ -5564,6 +6490,7 @@ class bitget extends bitget$1 {
5564
6490
  * @see https://www.bitget.com/api-doc/contract/plan/get-orders-plan-pending
5565
6491
  * @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Open-Orders
5566
6492
  * @see https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Open-Orders
6493
+ * @see https://www.bitget.com/api-doc/uta/strategy/Get-Unfilled-Strategy-Orders
5567
6494
  * @param {string} symbol unified market symbol
5568
6495
  * @param {int} [since] the earliest time in ms to fetch open orders for
5569
6496
  * @param {int} [limit] the maximum number of open order structures to retrieve
@@ -5574,6 +6501,7 @@ class bitget extends bitget$1 {
5574
6501
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
5575
6502
  * @param {string} [params.isPlan] *swap only* 'plan' for stop orders and 'profit_loss' for tp/sl orders, default is 'plan'
5576
6503
  * @param {boolean} [params.trailing] set to true if you want to fetch trailing orders
6504
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
5577
6505
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
5578
6506
  */
5579
6507
  async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -5583,6 +6511,8 @@ class bitget extends bitget$1 {
5583
6511
  let request = {};
5584
6512
  let marginMode = undefined;
5585
6513
  [marginMode, params] = this.handleMarginModeAndParams('fetchOpenOrders', params);
6514
+ let uta = undefined;
6515
+ [uta, params] = this.handleOptionAndParams(params, 'fetchOpenOrders', 'uta', false);
5586
6516
  if (symbol !== undefined) {
5587
6517
  market = this.market(symbol);
5588
6518
  request['symbol'] = market['id'];
@@ -5598,22 +6528,28 @@ class bitget extends bitget$1 {
5598
6528
  [paginate, params] = this.handleOptionAndParams(params, 'fetchOpenOrders', 'paginate');
5599
6529
  if (paginate) {
5600
6530
  let cursorReceived = undefined;
5601
- if (type === 'spot') {
6531
+ let cursorSent = undefined;
6532
+ if (uta) {
6533
+ cursorReceived = 'cursor';
6534
+ cursorSent = 'cursor';
6535
+ }
6536
+ else if (type === 'spot') {
5602
6537
  if (marginMode !== undefined) {
5603
6538
  cursorReceived = 'minId';
6539
+ cursorSent = 'idLessThan';
5604
6540
  }
5605
6541
  }
5606
6542
  else {
5607
6543
  cursorReceived = 'endId';
6544
+ cursorSent = 'idLessThan';
5608
6545
  }
5609
- return await this.fetchPaginatedCallCursor('fetchOpenOrders', symbol, since, limit, params, cursorReceived, 'idLessThan');
6546
+ return await this.fetchPaginatedCallCursor('fetchOpenOrders', symbol, since, limit, params, cursorReceived, cursorSent);
5610
6547
  }
5611
6548
  let response = undefined;
5612
6549
  const trailing = this.safeBool(params, 'trailing');
5613
6550
  const trigger = this.safeBool2(params, 'stop', 'trigger');
5614
6551
  const planTypeDefined = this.safeString(params, 'planType') !== undefined;
5615
6552
  const isTrigger = (trigger || planTypeDefined);
5616
- params = this.omit(params, ['stop', 'trigger', 'trailing']);
5617
6553
  [request, params] = this.handleUntilOption('endTime', request, params);
5618
6554
  if (since !== undefined) {
5619
6555
  request['startTime'] = since;
@@ -5621,53 +6557,66 @@ class bitget extends bitget$1 {
5621
6557
  if (limit !== undefined) {
5622
6558
  request['limit'] = limit;
5623
6559
  }
5624
- if ((type === 'swap') || (type === 'future') || (marginMode !== undefined)) {
6560
+ if (!uta && ((type === 'swap') || (type === 'future') || (marginMode !== undefined))) {
5625
6561
  const clientOrderId = this.safeString2(params, 'clientOid', 'clientOrderId');
5626
6562
  params = this.omit(params, 'clientOrderId');
5627
6563
  if (clientOrderId !== undefined) {
5628
6564
  request['clientOid'] = clientOrderId;
5629
6565
  }
5630
6566
  }
5631
- let query = undefined;
5632
- query = this.omit(params, ['type']);
5633
- if (type === 'spot') {
6567
+ let productType = undefined;
6568
+ [productType, params] = this.handleProductTypeAndParams(market, params);
6569
+ params = this.omit(params, ['type', 'stop', 'trigger', 'trailing']);
6570
+ if (uta) {
6571
+ if (type === 'spot') {
6572
+ if (marginMode !== undefined) {
6573
+ productType = 'MARGIN';
6574
+ }
6575
+ }
6576
+ request['category'] = productType;
6577
+ if (trigger) {
6578
+ response = await this.privateUtaGetV3TradeUnfilledStrategyOrders(this.extend(request, params));
6579
+ }
6580
+ else {
6581
+ response = await this.privateUtaGetV3TradeUnfilledOrders(this.extend(request, params));
6582
+ }
6583
+ }
6584
+ else if (type === 'spot') {
5634
6585
  if (marginMode !== undefined) {
5635
6586
  if (since === undefined) {
5636
6587
  since = this.milliseconds() - 7776000000;
5637
6588
  request['startTime'] = since;
5638
6589
  }
5639
6590
  if (marginMode === 'isolated') {
5640
- response = await this.privateMarginGetV2MarginIsolatedOpenOrders(this.extend(request, query));
6591
+ response = await this.privateMarginGetV2MarginIsolatedOpenOrders(this.extend(request, params));
5641
6592
  }
5642
6593
  else if (marginMode === 'cross') {
5643
- response = await this.privateMarginGetV2MarginCrossedOpenOrders(this.extend(request, query));
6594
+ response = await this.privateMarginGetV2MarginCrossedOpenOrders(this.extend(request, params));
5644
6595
  }
5645
6596
  }
5646
6597
  else {
5647
6598
  if (trigger) {
5648
- response = await this.privateSpotGetV2SpotTradeCurrentPlanOrder(this.extend(request, query));
6599
+ response = await this.privateSpotGetV2SpotTradeCurrentPlanOrder(this.extend(request, params));
5649
6600
  }
5650
6601
  else {
5651
- response = await this.privateSpotGetV2SpotTradeUnfilledOrders(this.extend(request, query));
6602
+ response = await this.privateSpotGetV2SpotTradeUnfilledOrders(this.extend(request, params));
5652
6603
  }
5653
6604
  }
5654
6605
  }
5655
6606
  else {
5656
- let productType = undefined;
5657
- [productType, query] = this.handleProductTypeAndParams(market, query);
5658
6607
  request['productType'] = productType;
5659
6608
  if (trailing) {
5660
6609
  const planType = this.safeString(params, 'planType', 'track_plan');
5661
6610
  request['planType'] = planType;
5662
- response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request, query));
6611
+ response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request, params));
5663
6612
  }
5664
6613
  else if (isTrigger) {
5665
- const planType = this.safeString(query, 'planType', 'normal_plan');
6614
+ const planType = this.safeString(params, 'planType', 'normal_plan');
5666
6615
  request['planType'] = planType;
5667
- response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request, query));
6616
+ response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request, params));
5668
6617
  }
5669
6618
  else {
5670
- response = await this.privateMixGetV2MixOrderOrdersPending(this.extend(request, query));
6619
+ response = await this.privateMixGetV2MixOrderOrdersPending(this.extend(request, params));
5671
6620
  }
5672
6621
  }
5673
6622
  //
@@ -5845,8 +6794,95 @@ class bitget extends bitget$1 {
5845
6794
  // }
5846
6795
  // }
5847
6796
  //
6797
+ // uta
6798
+ //
6799
+ // {
6800
+ // "code": "00000",
6801
+ // "msg": "success",
6802
+ // "requestTime": 1750753395850,
6803
+ // "data": {
6804
+ // "list": [
6805
+ // {
6806
+ // "orderId": "1321320757371228160",
6807
+ // "clientOid": "1321320757371228161",
6808
+ // "category": "USDT-FUTURES",
6809
+ // "symbol": "BTCUSDT",
6810
+ // "orderType": "limit",
6811
+ // "side": "buy",
6812
+ // "price": "50000",
6813
+ // "qty": "0.001",
6814
+ // "amount": "0",
6815
+ // "cumExecQty": "0",
6816
+ // "cumExecValue": "0",
6817
+ // "avgPrice": "0",
6818
+ // "timeInForce": "gtc",
6819
+ // "orderStatus": "live",
6820
+ // "posSide": "long",
6821
+ // "holdMode": "hedge_mode",
6822
+ // "reduceOnly": "NO",
6823
+ // "feeDetail": [
6824
+ // {
6825
+ // "feeCoin": "",
6826
+ // "fee": ""
6827
+ // }
6828
+ // ],
6829
+ // "createdTime": "1750753338186",
6830
+ // "updatedTime": "1750753338203",
6831
+ // "stpMode": "none",
6832
+ // "tpTriggerBy": null,
6833
+ // "slTriggerBy": null,
6834
+ // "takeProfit": null,
6835
+ // "stopLoss": null,
6836
+ // "tpOrderType": null,
6837
+ // "slOrderType": null,
6838
+ // "tpLimitPrice": null,
6839
+ // "slLimitPrice": null
6840
+ // }
6841
+ // ],
6842
+ // "cursor": "1321320757371228160"
6843
+ // }
6844
+ // }
6845
+ //
6846
+ // uta trigger
6847
+ //
6848
+ // {
6849
+ // "code": "00000",
6850
+ // "msg": "success",
6851
+ // "requestTime": 1753057527060,
6852
+ // "data": [
6853
+ // {
6854
+ // "orderId": "1330984742276198400",
6855
+ // "clientOid": "1330984742276198400",
6856
+ // "symbol": "BTCUSDT",
6857
+ // "category": "USDT-FUTURES",
6858
+ // "qty": "0.001",
6859
+ // "posSide": "long",
6860
+ // "tpTriggerBy": "market",
6861
+ // "slTriggerBy": "mark",
6862
+ // "takeProfit": "",
6863
+ // "stopLoss":"114000",
6864
+ // "tpOrderType": "market",
6865
+ // "slOrderType": "limit",
6866
+ // "tpLimitPrice": "",
6867
+ // "slLimitPrice": "113000",
6868
+ // "createdTime": "1753057411736",
6869
+ // "updatedTime": "1753057411747"
6870
+ // }
6871
+ // ]
6872
+ // }
6873
+ //
5848
6874
  const data = this.safeValue(response, 'data');
5849
- if (type === 'spot') {
6875
+ if (uta) {
6876
+ let result = undefined;
6877
+ if (trigger) {
6878
+ result = this.safeList(response, 'data', []);
6879
+ }
6880
+ else {
6881
+ result = this.safeList(data, 'list', []);
6882
+ }
6883
+ return this.parseOrders(result, market, since, limit);
6884
+ }
6885
+ else if (type === 'spot') {
5850
6886
  if ((marginMode !== undefined) || trigger) {
5851
6887
  const resultList = this.safeList(data, 'orderList', []);
5852
6888
  return this.parseOrders(resultList, market, since, limit);
@@ -5868,6 +6904,7 @@ class bitget extends bitget$1 {
5868
6904
  * @see https://www.bitget.com/api-doc/contract/plan/orders-plan-history
5869
6905
  * @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Order-History
5870
6906
  * @see https://www.bitget.com/api-doc/margin/isolated/trade/Get-Isolated-Order-History
6907
+ * @see https://www.bitget.com/api-doc/uta/trade/Get-Order-History
5871
6908
  * @param {string} symbol unified market symbol of the closed orders
5872
6909
  * @param {int} [since] timestamp in ms of the earliest order
5873
6910
  * @param {int} [limit] the max number of closed orders to return
@@ -5895,6 +6932,7 @@ class bitget extends bitget$1 {
5895
6932
  * @see https://www.bitget.com/api-doc/contract/plan/orders-plan-history
5896
6933
  * @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Order-History
5897
6934
  * @see https://www.bitget.com/api-doc/margin/isolated/trade/Get-Isolated-Order-History
6935
+ * @see https://www.bitget.com/api-doc/uta/trade/Get-Order-History
5898
6936
  * @param {string} symbol unified market symbol of the canceled orders
5899
6937
  * @param {int} [since] timestamp in ms of the earliest order
5900
6938
  * @param {int} [limit] the max number of canceled orders to return
@@ -5921,6 +6959,8 @@ class bitget extends bitget$1 {
5921
6959
  * @see https://www.bitget.com/api-doc/contract/plan/orders-plan-history
5922
6960
  * @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Order-History
5923
6961
  * @see https://www.bitget.com/api-doc/margin/isolated/trade/Get-Isolated-Order-History
6962
+ * @see https://www.bitget.com/api-doc/uta/trade/Get-Order-History
6963
+ * @see https://www.bitget.com/api-doc/uta/strategy/Get-History-Strategy-Orders
5924
6964
  * @description fetches information on multiple canceled and closed orders made by the user
5925
6965
  * @param {string} symbol unified market symbol of the market orders were made in
5926
6966
  * @param {int} [since] the earliest time in ms to fetch orders for
@@ -5932,9 +6972,15 @@ class bitget extends bitget$1 {
5932
6972
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
5933
6973
  * @param {string} [params.isPlan] *swap only* 'plan' for stop orders and 'profit_loss' for tp/sl orders, default is 'plan'
5934
6974
  * @param {boolean} [params.trailing] set to true if you want to fetch trailing orders
6975
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
5935
6976
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
5936
6977
  */
5937
6978
  async fetchCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
6979
+ let uta = undefined;
6980
+ [uta, params] = this.handleOptionAndParams(params, 'fetchCanceledAndClosedOrders', 'uta', false);
6981
+ if (uta) {
6982
+ return await this.fetchUtaCanceledAndClosedOrders(symbol, since, limit, params);
6983
+ }
5938
6984
  await this.loadMarkets();
5939
6985
  let market = undefined;
5940
6986
  let request = {};
@@ -6223,6 +7269,132 @@ class bitget extends bitget$1 {
6223
7269
  const orders = this.safeList(response, 'data', []);
6224
7270
  return this.parseOrders(orders, market, since, limit);
6225
7271
  }
7272
+ async fetchUtaCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
7273
+ await this.loadMarkets();
7274
+ let market = undefined;
7275
+ if (symbol !== undefined) {
7276
+ market = this.market(symbol);
7277
+ }
7278
+ let productType = undefined;
7279
+ [productType, params] = this.handleProductTypeAndParams(market, params);
7280
+ if (productType === 'SPOT') {
7281
+ let marginMode = undefined;
7282
+ [marginMode, params] = this.handleMarginModeAndParams('fetchCanceledAndClosedOrders', params);
7283
+ if (marginMode !== undefined) {
7284
+ productType = 'MARGIN';
7285
+ }
7286
+ }
7287
+ let request = {
7288
+ 'category': productType,
7289
+ };
7290
+ let paginate = false;
7291
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchCanceledAndClosedOrders', 'paginate');
7292
+ if (paginate) {
7293
+ return await this.fetchPaginatedCallCursor('fetchCanceledAndClosedOrders', symbol, since, limit, params, 'cursor', 'cursor');
7294
+ }
7295
+ [request, params] = this.handleUntilOption('endTime', request, params);
7296
+ if (since !== undefined) {
7297
+ request['startTime'] = since;
7298
+ }
7299
+ if (limit !== undefined) {
7300
+ request['limit'] = limit;
7301
+ }
7302
+ let response = undefined;
7303
+ const trigger = this.safeBool2(params, 'stop', 'trigger');
7304
+ params = this.omit(params, ['stop', 'trigger']);
7305
+ if (trigger) {
7306
+ response = await this.privateUtaGetV3TradeHistoryStrategyOrders(this.extend(request, params));
7307
+ }
7308
+ else {
7309
+ response = await this.privateUtaGetV3TradeHistoryOrders(this.extend(request, params));
7310
+ }
7311
+ //
7312
+ // uta
7313
+ //
7314
+ // {
7315
+ // "code": "00000",
7316
+ // "msg": "success",
7317
+ // "requestTime": 1752531592855,
7318
+ // "data": {
7319
+ // "list": [
7320
+ // {
7321
+ // "orderId": "1322441400976261120",
7322
+ // "clientOid": "1322441400976261121",
7323
+ // "category": "USDT-FUTURES",
7324
+ // "symbol": "BTCUSDT",
7325
+ // "orderType": "market",
7326
+ // "side": "sell",
7327
+ // "price": "0",
7328
+ // "qty": "0.0001",
7329
+ // "amount": "0",
7330
+ // "cumExecQty": "0.0001",
7331
+ // "cumExecValue": "10.7005",
7332
+ // "avgPrice": "107005.4",
7333
+ // "timeInForce": "gtc",
7334
+ // "orderStatus": "filled",
7335
+ // "posSide": "long",
7336
+ // "holdMode": "hedge_mode",
7337
+ // "reduceOnly": "NO",
7338
+ // "feeDetail": [
7339
+ // {
7340
+ // "feeCoin": "USDT",
7341
+ // "fee": "0.00642032"
7342
+ // }
7343
+ // ],
7344
+ // "createdTime": "1751020520442",
7345
+ // "updatedTime": "1751020520457",
7346
+ // "cancelReason": "",
7347
+ // "execType": "normal",
7348
+ // "stpMode": "none",
7349
+ // "tpTriggerBy": null,
7350
+ // "slTriggerBy": null,
7351
+ // "takeProfit": null,
7352
+ // "stopLoss": null,
7353
+ // "tpOrderType": null,
7354
+ // "slOrderType": null,
7355
+ // "tpLimitPrice": null,
7356
+ // "slLimitPrice": null
7357
+ // },
7358
+ // ],
7359
+ // "cursor": "1322441328637100035"
7360
+ // }
7361
+ // }
7362
+ //
7363
+ // uta trigger
7364
+ //
7365
+ // {
7366
+ // "code": "00000",
7367
+ // "msg": "success",
7368
+ // "requestTime": 1753058447920,
7369
+ // "data": {
7370
+ // "list": [
7371
+ // {
7372
+ // "orderId": "1330984742276198400",
7373
+ // "clientOid": "1330984742276198400",
7374
+ // "symbol": "BTCUSDT",
7375
+ // "category": "USDT-FUTURES",
7376
+ // "qty": "0.001",
7377
+ // "posSide": "long",
7378
+ // "tpTriggerBy": "market",
7379
+ // "slTriggerBy": "mark",
7380
+ // "takeProfit": "",
7381
+ // "stopLoss": "112000",
7382
+ // "tpOrderType": "market",
7383
+ // "slOrderType": "limit",
7384
+ // "tpLimitPrice": "",
7385
+ // "slLimitPrice": "111000",
7386
+ // "createdTime": "1753057411736",
7387
+ // "updatedTime": "1753058267412"
7388
+ // },
7389
+ // ],
7390
+ // "cursor": 1330960754317619202
7391
+ // }
7392
+ // }
7393
+ //
7394
+ const data = this.safeDict(response, 'data', {});
7395
+ const orders = this.safeList(data, 'list', []);
7396
+ return this.parseOrders(orders, market, since, limit);
7397
+ }
6226
7398
  /**
6227
7399
  * @method
6228
7400
  * @name bitget#fetchLedger
@@ -6449,69 +7621,84 @@ class bitget extends bitget$1 {
6449
7621
  * @see https://www.bitget.com/api-doc/contract/trade/Get-Order-Fills
6450
7622
  * @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Order-Fills
6451
7623
  * @see https://www.bitget.com/api-doc/margin/isolated/trade/Get-Isolated-Transaction-Details
7624
+ * @see https://www.bitget.com/api-doc/uta/trade/Get-Order-Fills
6452
7625
  * @param {string} symbol unified market symbol
6453
7626
  * @param {int} [since] the earliest time in ms to fetch trades for
6454
7627
  * @param {int} [limit] the maximum number of trades structures to retrieve
6455
7628
  * @param {object} [params] extra parameters specific to the exchange API endpoint
6456
7629
  * @param {int} [params.until] the latest time in ms to fetch trades for
7630
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
6457
7631
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
6458
7632
  * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
6459
7633
  */
6460
7634
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
6461
- if (symbol === undefined) {
7635
+ let uta = undefined;
7636
+ [uta, params] = this.handleOptionAndParams(params, 'fetchMyTrades', 'uta', false);
7637
+ if (!uta && (symbol === undefined)) {
6462
7638
  throw new errors.ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
6463
7639
  }
6464
7640
  await this.loadMarkets();
6465
7641
  const market = this.market(symbol);
6466
- let marginMode = undefined;
6467
- [marginMode, params] = this.handleMarginModeAndParams('fetchMyTrades', params);
7642
+ let request = {};
7643
+ [request, params] = this.handleUntilOption('endTime', request, params);
7644
+ if (since !== undefined) {
7645
+ request['startTime'] = since;
7646
+ }
7647
+ if (limit !== undefined) {
7648
+ request['limit'] = limit;
7649
+ }
6468
7650
  let paginate = false;
7651
+ let marginMode = undefined;
6469
7652
  [paginate, params] = this.handleOptionAndParams(params, 'fetchMyTrades', 'paginate');
7653
+ [marginMode, params] = this.handleMarginModeAndParams('fetchMyTrades', params);
6470
7654
  if (paginate) {
6471
7655
  let cursorReceived = undefined;
6472
- if (market['spot']) {
7656
+ let cursorSent = undefined;
7657
+ if (uta) {
7658
+ cursorReceived = 'cursor';
7659
+ cursorSent = 'cursor';
7660
+ }
7661
+ else if (market['spot']) {
6473
7662
  if (marginMode !== undefined) {
6474
7663
  cursorReceived = 'minId';
7664
+ cursorSent = 'idLessThan';
6475
7665
  }
6476
7666
  }
6477
7667
  else {
6478
7668
  cursorReceived = 'endId';
7669
+ cursorSent = 'idLessThan';
6479
7670
  }
6480
- return await this.fetchPaginatedCallCursor('fetchMyTrades', symbol, since, limit, params, cursorReceived, 'idLessThan');
7671
+ return await this.fetchPaginatedCallCursor('fetchMyTrades', symbol, since, limit, params, cursorReceived, cursorSent);
6481
7672
  }
6482
7673
  let response = undefined;
6483
- let request = {
6484
- 'symbol': market['id'],
6485
- };
6486
- [request, params] = this.handleUntilOption('endTime', request, params);
6487
- if (since !== undefined) {
6488
- request['startTime'] = since;
6489
- }
6490
- if (limit !== undefined) {
6491
- request['limit'] = limit;
7674
+ if (uta) {
7675
+ response = await this.privateUtaGetV3TradeFills(this.extend(request, params));
6492
7676
  }
6493
- if (market['spot']) {
6494
- if (marginMode !== undefined) {
6495
- if (since === undefined) {
6496
- request['startTime'] = this.milliseconds() - 7776000000;
6497
- }
6498
- if (marginMode === 'isolated') {
6499
- response = await this.privateMarginGetV2MarginIsolatedFills(this.extend(request, params));
7677
+ else {
7678
+ request['symbol'] = market['id'];
7679
+ if (market['spot']) {
7680
+ if (marginMode !== undefined) {
7681
+ if (since === undefined) {
7682
+ request['startTime'] = this.milliseconds() - 7776000000;
7683
+ }
7684
+ if (marginMode === 'isolated') {
7685
+ response = await this.privateMarginGetV2MarginIsolatedFills(this.extend(request, params));
7686
+ }
7687
+ else if (marginMode === 'cross') {
7688
+ response = await this.privateMarginGetV2MarginCrossedFills(this.extend(request, params));
7689
+ }
6500
7690
  }
6501
- else if (marginMode === 'cross') {
6502
- response = await this.privateMarginGetV2MarginCrossedFills(this.extend(request, params));
7691
+ else {
7692
+ response = await this.privateSpotGetV2SpotTradeFills(this.extend(request, params));
6503
7693
  }
6504
7694
  }
6505
7695
  else {
6506
- response = await this.privateSpotGetV2SpotTradeFills(this.extend(request, params));
7696
+ let productType = undefined;
7697
+ [productType, params] = this.handleProductTypeAndParams(market, params);
7698
+ request['productType'] = productType;
7699
+ response = await this.privateMixGetV2MixOrderFills(this.extend(request, params));
6507
7700
  }
6508
7701
  }
6509
- else {
6510
- let productType = undefined;
6511
- [productType, params] = this.handleProductTypeAndParams(market, params);
6512
- request['productType'] = productType;
6513
- response = await this.privateMixGetV2MixOrderFills(this.extend(request, params));
6514
- }
6515
7702
  //
6516
7703
  // spot
6517
7704
  //
@@ -6611,10 +7798,46 @@ class bitget extends bitget$1 {
6611
7798
  // }
6612
7799
  // }
6613
7800
  //
7801
+ // uta
7802
+ //
7803
+ // {
7804
+ // "code": "00000",
7805
+ // "msg": "success",
7806
+ // "requestTime": 1751099666579,
7807
+ // "data": {
7808
+ // "list": [
7809
+ // {
7810
+ // "execId": "1322441401010528257",
7811
+ // "orderId": "1322441400976261120",
7812
+ // "category": "USDT-FUTURES",
7813
+ // "symbol": "BTCUSDT",
7814
+ // "orderType": "market",
7815
+ // "side": "sell",
7816
+ // "execPrice": "107005.4",
7817
+ // "execQty": "0.0001",
7818
+ // "execValue": "10.7005",
7819
+ // "tradeScope": "taker",
7820
+ // "feeDetail": [{
7821
+ // "feeCoin": "USDT",
7822
+ // "fee":"0.00642032"
7823
+ // }],
7824
+ // "createdTime": "1751020520451",
7825
+ // "updatedTime": "1751020520458",
7826
+ // "execPnl": "0.00017"
7827
+ // },
7828
+ // ],
7829
+ // "cursor": "1322061241878880257"
7830
+ // }
7831
+ // }
7832
+ //
6614
7833
  const data = this.safeValue(response, 'data');
6615
- if ((market['swap']) || (market['future'])) {
6616
- const fillList = this.safeList(data, 'fillList', []);
6617
- return this.parseTrades(fillList, market, since, limit);
7834
+ if (uta) {
7835
+ const fills = this.safeList(data, 'list', []);
7836
+ return this.parseTrades(fills, market, since, limit);
7837
+ }
7838
+ else if ((market['swap'] || (market['future']))) {
7839
+ const fills = this.safeList(data, 'fillList', []);
7840
+ return this.parseTrades(fills, market, since, limit);
6618
7841
  }
6619
7842
  else if (marginMode !== undefined) {
6620
7843
  const fills = this.safeList(data, 'fills', []);
@@ -6627,8 +7850,10 @@ class bitget extends bitget$1 {
6627
7850
  * @name bitget#fetchPosition
6628
7851
  * @description fetch data on a single open contract trade position
6629
7852
  * @see https://www.bitget.com/api-doc/contract/position/get-single-position
7853
+ * @see https://www.bitget.com/api-doc/uta/trade/Get-Position
6630
7854
  * @param {string} symbol unified market symbol of the market the position is held in
6631
7855
  * @param {object} [params] extra parameters specific to the exchange API endpoint
7856
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
6632
7857
  * @returns {object} a [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
6633
7858
  */
6634
7859
  async fetchPosition(symbol, params = {}) {
@@ -6638,42 +7863,92 @@ class bitget extends bitget$1 {
6638
7863
  [productType, params] = this.handleProductTypeAndParams(market, params);
6639
7864
  const request = {
6640
7865
  'symbol': market['id'],
6641
- 'marginCoin': market['settleId'],
6642
- 'productType': productType,
6643
7866
  };
6644
- const response = await this.privateMixGetV2MixPositionSinglePosition(this.extend(request, params));
6645
- //
6646
- // {
6647
- // "code": "00000",
6648
- // "msg": "success",
6649
- // "requestTime": 1700807531673,
6650
- // "data": [
6651
- // {
6652
- // "marginCoin": "USDT",
6653
- // "symbol": "BTCUSDT",
6654
- // "holdSide": "long",
6655
- // "openDelegateSize": "0",
6656
- // "marginSize": "3.73555",
6657
- // "available": "0.002",
6658
- // "locked": "0",
6659
- // "total": "0.002",
6660
- // "leverage": "20",
6661
- // "achievedProfits": "0",
6662
- // "openPriceAvg": "37355.5",
6663
- // "marginMode": "crossed",
6664
- // "posMode": "hedge_mode",
6665
- // "unrealizedPL": "0.007",
6666
- // "liquidationPrice": "31724.970702417",
6667
- // "keepMarginRate": "0.004",
6668
- // "markPrice": "37359",
6669
- // "marginRatio": "0.029599540355",
6670
- // "cTime": "1700807507275"
6671
- // }
6672
- // ]
6673
- // }
6674
- //
6675
- const data = this.safeList(response, 'data', []);
6676
- const first = this.safeDict(data, 0, {});
7867
+ let response = undefined;
7868
+ let uta = undefined;
7869
+ let result = undefined;
7870
+ [uta, params] = this.handleOptionAndParams(params, 'fetchPosition', 'uta', false);
7871
+ if (uta) {
7872
+ request['category'] = productType;
7873
+ response = await this.privateUtaGetV3PositionCurrentPosition(this.extend(request, params));
7874
+ //
7875
+ // {
7876
+ // "code": "00000",
7877
+ // "msg": "success",
7878
+ // "requestTime": 1750929905423,
7879
+ // "data": {
7880
+ // "list": [
7881
+ // {
7882
+ // "category": "USDT-FUTURES",
7883
+ // "symbol": "BTCUSDT",
7884
+ // "marginCoin": "USDT",
7885
+ // "holdMode": "hedge_mode",
7886
+ // "posSide": "long",
7887
+ // "marginMode": "crossed",
7888
+ // "positionBalance": "5.435199",
7889
+ // "available": "0.001",
7890
+ // "frozen": "0",
7891
+ // "total": "0.001",
7892
+ // "leverage": "20",
7893
+ // "curRealisedPnl": "0",
7894
+ // "avgPrice": "107410.3",
7895
+ // "positionStatus": "normal",
7896
+ // "unrealisedPnl": "0.0047",
7897
+ // "liquidationPrice": "0",
7898
+ // "mmr": "0.004",
7899
+ // "profitRate": "0.0008647337475591",
7900
+ // "markPrice": "107415.3",
7901
+ // "breakEvenPrice": "107539.2",
7902
+ // "totalFunding": "0",
7903
+ // "openFeeTotal": "-0.06444618",
7904
+ // "closeFeeTotal": "0",
7905
+ // "createdTime": "1750495670699",
7906
+ // "updatedTime": "1750929883465"
7907
+ // }
7908
+ // ]
7909
+ // }
7910
+ // }
7911
+ //
7912
+ const data = this.safeDict(response, 'data', {});
7913
+ result = this.safeList(data, 'list', []);
7914
+ }
7915
+ else {
7916
+ request['marginCoin'] = market['settleId'];
7917
+ request['productType'] = productType;
7918
+ response = await this.privateMixGetV2MixPositionSinglePosition(this.extend(request, params));
7919
+ //
7920
+ // {
7921
+ // "code": "00000",
7922
+ // "msg": "success",
7923
+ // "requestTime": 1700807531673,
7924
+ // "data": [
7925
+ // {
7926
+ // "marginCoin": "USDT",
7927
+ // "symbol": "BTCUSDT",
7928
+ // "holdSide": "long",
7929
+ // "openDelegateSize": "0",
7930
+ // "marginSize": "3.73555",
7931
+ // "available": "0.002",
7932
+ // "locked": "0",
7933
+ // "total": "0.002",
7934
+ // "leverage": "20",
7935
+ // "achievedProfits": "0",
7936
+ // "openPriceAvg": "37355.5",
7937
+ // "marginMode": "crossed",
7938
+ // "posMode": "hedge_mode",
7939
+ // "unrealizedPL": "0.007",
7940
+ // "liquidationPrice": "31724.970702417",
7941
+ // "keepMarginRate": "0.004",
7942
+ // "markPrice": "37359",
7943
+ // "marginRatio": "0.029599540355",
7944
+ // "cTime": "1700807507275"
7945
+ // }
7946
+ // ]
7947
+ // }
7948
+ //
7949
+ result = this.safeList(response, 'data', []);
7950
+ }
7951
+ const first = this.safeDict(result, 0, {});
6677
7952
  return this.parsePosition(first, market);
6678
7953
  }
6679
7954
  /**
@@ -6853,6 +8128,36 @@ class bitget extends bitget$1 {
6853
8128
  // "cTime": "1700807507275"
6854
8129
  // }
6855
8130
  //
8131
+ // uta: fetchPosition
8132
+ //
8133
+ // {
8134
+ // "category": "USDT-FUTURES",
8135
+ // "symbol": "BTCUSDT",
8136
+ // "marginCoin": "USDT",
8137
+ // "holdMode": "hedge_mode",
8138
+ // "posSide": "long",
8139
+ // "marginMode": "crossed",
8140
+ // "positionBalance": "5.435199",
8141
+ // "available": "0.001",
8142
+ // "frozen": "0",
8143
+ // "total": "0.001",
8144
+ // "leverage": "20",
8145
+ // "curRealisedPnl": "0",
8146
+ // "avgPrice": "107410.3",
8147
+ // "positionStatus": "normal",
8148
+ // "unrealisedPnl": "0.0047",
8149
+ // "liquidationPrice": "0",
8150
+ // "mmr": "0.004",
8151
+ // "profitRate": "0.0008647337475591",
8152
+ // "markPrice": "107415.3",
8153
+ // "breakEvenPrice": "107539.2",
8154
+ // "totalFunding": "0",
8155
+ // "openFeeTotal": "-0.06444618",
8156
+ // "closeFeeTotal": "0",
8157
+ // "createdTime": "1750495670699",
8158
+ // "updatedTime": "1750929883465"
8159
+ // }
8160
+ //
6856
8161
  // fetchPositions: privateMixGetV2MixPositionAllPosition
6857
8162
  //
6858
8163
  // {
@@ -6904,15 +8209,38 @@ class bitget extends bitget$1 {
6904
8209
  // "clientOid": "1120923953904893956"
6905
8210
  // }
6906
8211
  //
8212
+ // uta: fetchPositionsHistory
8213
+ //
8214
+ // {
8215
+ // "positionId": "1322441328637100049",
8216
+ // "category": "USDT-FUTURES",
8217
+ // "symbol": "BTCUSDT",
8218
+ // "marginCoin": "USDT",
8219
+ // "holdMode": "hedge_mode",
8220
+ // "posSide": "long",
8221
+ // "marginMode": "crossed",
8222
+ // "openPriceAvg": "107003.7",
8223
+ // "closePriceAvg": "107005.4",
8224
+ // "openTotalPos": "0.0001",
8225
+ // "closeTotalPos": "0.0001",
8226
+ // "cumRealisedPnl": "0.00017",
8227
+ // "netProfit": "-0.01267055",
8228
+ // "totalFunding": "0",
8229
+ // "openFeeTotal": "-0.00642022",
8230
+ // "closeFeeTotal": "-0.00642032",
8231
+ // "createdTime": "1751020503195",
8232
+ // "updatedTime": "1751020520458"
8233
+ // }
8234
+ //
6907
8235
  const marketId = this.safeString(position, 'symbol');
6908
8236
  market = this.safeMarket(marketId, market, undefined, 'contract');
6909
8237
  const symbol = market['symbol'];
6910
- const timestamp = this.safeInteger2(position, 'cTime', 'ctime');
8238
+ const timestamp = this.safeIntegerN(position, ['cTime', 'ctime', 'createdTime']);
6911
8239
  let marginMode = this.safeString(position, 'marginMode');
6912
8240
  let collateral = undefined;
6913
8241
  let initialMargin = undefined;
6914
- const unrealizedPnl = this.safeString(position, 'unrealizedPL');
6915
- const rawCollateral = this.safeString(position, 'marginSize');
8242
+ const unrealizedPnl = this.safeString2(position, 'unrealizedPL', 'unrealisedPnl');
8243
+ const rawCollateral = this.safeString2(position, 'marginSize', 'positionBalance');
6916
8244
  if (marginMode === 'isolated') {
6917
8245
  collateral = Precise["default"].stringAdd(rawCollateral, unrealizedPnl);
6918
8246
  }
@@ -6920,7 +8248,7 @@ class bitget extends bitget$1 {
6920
8248
  marginMode = 'cross';
6921
8249
  initialMargin = rawCollateral;
6922
8250
  }
6923
- const holdMode = this.safeString(position, 'posMode');
8251
+ const holdMode = this.safeString2(position, 'posMode', 'holdMode');
6924
8252
  let hedged = undefined;
6925
8253
  if (holdMode === 'hedge_mode') {
6926
8254
  hedged = true;
@@ -6928,12 +8256,12 @@ class bitget extends bitget$1 {
6928
8256
  else if (holdMode === 'one_way_mode') {
6929
8257
  hedged = false;
6930
8258
  }
6931
- const side = this.safeString(position, 'holdSide');
8259
+ const side = this.safeString2(position, 'holdSide', 'posSide');
6932
8260
  const leverage = this.safeString(position, 'leverage');
6933
8261
  const contractSizeNumber = this.safeValue(market, 'contractSize');
6934
8262
  const contractSize = this.numberToString(contractSizeNumber);
6935
- const baseAmount = this.safeString(position, 'total');
6936
- const entryPrice = this.safeString2(position, 'openPriceAvg', 'openAvgPrice');
8263
+ const baseAmount = this.safeString2(position, 'total', 'openTotalPos');
8264
+ const entryPrice = this.safeStringN(position, ['openPriceAvg', 'openAvgPrice', 'avgPrice']);
6937
8265
  const maintenanceMarginPercentage = this.safeString(position, 'keepMarginRate');
6938
8266
  const openNotional = Precise["default"].stringMul(entryPrice, baseAmount);
6939
8267
  if (initialMargin === undefined) {
@@ -6971,31 +8299,31 @@ class bitget extends bitget$1 {
6971
8299
  const percentage = Precise["default"].stringMul(Precise["default"].stringDiv(unrealizedPnl, initialMargin, 4), '100');
6972
8300
  return this.safePosition({
6973
8301
  'info': position,
6974
- 'id': this.safeString(position, 'orderId'),
8302
+ 'id': this.safeString2(position, 'orderId', 'positionId'),
6975
8303
  'symbol': symbol,
6976
8304
  'notional': this.parseNumber(notional),
6977
8305
  'marginMode': marginMode,
6978
8306
  'liquidationPrice': liquidationPrice,
6979
8307
  'entryPrice': this.parseNumber(entryPrice),
6980
8308
  'unrealizedPnl': this.parseNumber(unrealizedPnl),
6981
- 'realizedPnl': this.safeNumber(position, 'pnl'),
8309
+ 'realizedPnl': this.safeNumberN(position, ['pnl', 'curRealisedPnl', 'cumRealisedPnl']),
6982
8310
  'percentage': this.parseNumber(percentage),
6983
8311
  'contracts': contracts,
6984
8312
  'contractSize': contractSizeNumber,
6985
8313
  'markPrice': this.parseNumber(markPrice),
6986
- 'lastPrice': this.safeNumber(position, 'closeAvgPrice'),
8314
+ 'lastPrice': this.safeNumber2(position, 'closeAvgPrice', 'closePriceAvg'),
6987
8315
  'side': side,
6988
8316
  'hedged': hedged,
6989
8317
  'timestamp': timestamp,
6990
8318
  'datetime': this.iso8601(timestamp),
6991
- 'lastUpdateTimestamp': this.safeInteger(position, 'utime'),
8319
+ 'lastUpdateTimestamp': this.safeInteger2(position, 'utime', 'updatedTime'),
6992
8320
  'maintenanceMargin': this.parseNumber(maintenanceMargin),
6993
8321
  'maintenanceMarginPercentage': this.parseNumber(maintenanceMarginPercentage),
6994
8322
  'collateral': this.parseNumber(collateral),
6995
8323
  'initialMargin': this.parseNumber(initialMargin),
6996
8324
  'initialMarginPercentage': this.parseNumber(initialMarginPercentage),
6997
8325
  'leverage': this.parseNumber(leverage),
6998
- 'marginRatio': this.safeNumber(position, 'marginRatio'),
8326
+ 'marginRatio': this.safeNumber2(position, 'marginRatio', 'mmr'),
6999
8327
  'stopLossPrice': undefined,
7000
8328
  'takeProfitPrice': undefined,
7001
8329
  });
@@ -7005,10 +8333,12 @@ class bitget extends bitget$1 {
7005
8333
  * @name bitget#fetchFundingRateHistory
7006
8334
  * @description fetches historical funding rate prices
7007
8335
  * @see https://www.bitget.com/api-doc/contract/market/Get-History-Funding-Rate
8336
+ * @see https://www.bitget.com/api-doc/uta/public/Get-History-Funding-Rate
7008
8337
  * @param {string} symbol unified symbol of the market to fetch the funding rate history for
7009
8338
  * @param {int} [since] timestamp in ms of the earliest funding rate to fetch
7010
8339
  * @param {int} [limit] the maximum amount of funding rate structures to fetch
7011
8340
  * @param {object} [params] extra parameters specific to the exchange API endpoint
8341
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
7012
8342
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
7013
8343
  * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure}
7014
8344
  */
@@ -7017,45 +8347,74 @@ class bitget extends bitget$1 {
7017
8347
  throw new errors.ArgumentsRequired(this.id + ' fetchFundingRateHistory() requires a symbol argument');
7018
8348
  }
7019
8349
  await this.loadMarkets();
7020
- let paginate = false;
7021
- [paginate, params] = this.handleOptionAndParams(params, 'fetchFundingRateHistory', 'paginate');
7022
- if (paginate) {
7023
- return await this.fetchPaginatedCallIncremental('fetchFundingRateHistory', symbol, since, limit, params, 'pageNo', 100);
7024
- }
7025
8350
  const market = this.market(symbol);
7026
- let productType = undefined;
7027
- [productType, params] = this.handleProductTypeAndParams(market, params);
7028
8351
  const request = {
7029
8352
  'symbol': market['id'],
7030
- 'productType': productType,
7031
- // 'pageSize': limit, // default 20
7032
- // 'pageNo': 1,
7033
8353
  };
7034
- if (limit !== undefined) {
7035
- request['pageSize'] = limit;
8354
+ let productType = undefined;
8355
+ let uta = undefined;
8356
+ let response = undefined;
8357
+ let result = undefined;
8358
+ [productType, params] = this.handleProductTypeAndParams(market, params);
8359
+ [uta, params] = this.handleOptionAndParams(params, 'fetchFundingRateHistory', 'uta', false);
8360
+ if (uta) {
8361
+ if (limit !== undefined) {
8362
+ request['limit'] = limit;
8363
+ }
8364
+ request['category'] = productType;
8365
+ response = await this.publicUtaGetV3MarketHistoryFundRate(this.extend(request, params));
8366
+ //
8367
+ // {
8368
+ // "code": "00000",
8369
+ // "msg": "success",
8370
+ // "requestTime": 1750435113658,
8371
+ // "data": {
8372
+ // "resultList": [
8373
+ // {
8374
+ // "symbol": "BTCUSDT",
8375
+ // "fundingRate": "-0.000017",
8376
+ // "fundingRateTimestamp": "1750431600000"
8377
+ // },
8378
+ // ]
8379
+ // }
8380
+ // }
8381
+ //
8382
+ const data = this.safeDict(response, 'data', {});
8383
+ result = this.safeList(data, 'resultList', []);
8384
+ }
8385
+ else {
8386
+ let paginate = false;
8387
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchFundingRateHistory', 'paginate');
8388
+ if (paginate) {
8389
+ return await this.fetchPaginatedCallIncremental('fetchFundingRateHistory', symbol, since, limit, params, 'pageNo', 100);
8390
+ }
8391
+ if (limit !== undefined) {
8392
+ request['pageSize'] = limit;
8393
+ }
8394
+ request['productType'] = productType;
8395
+ response = await this.publicMixGetV2MixMarketHistoryFundRate(this.extend(request, params));
8396
+ //
8397
+ // {
8398
+ // "code": "00000",
8399
+ // "msg": "success",
8400
+ // "requestTime": 1652406728393,
8401
+ // "data": [
8402
+ // {
8403
+ // "symbol": "BTCUSDT",
8404
+ // "fundingRate": "-0.0003",
8405
+ // "fundingTime": "1652396400000"
8406
+ // },
8407
+ // ]
8408
+ // }
8409
+ //
8410
+ result = this.safeList(response, 'data', []);
7036
8411
  }
7037
- const response = await this.publicMixGetV2MixMarketHistoryFundRate(this.extend(request, params));
7038
- //
7039
- // {
7040
- // "code": "00000",
7041
- // "msg": "success",
7042
- // "requestTime": 1652406728393,
7043
- // "data": [
7044
- // {
7045
- // "symbol": "BTCUSDT",
7046
- // "fundingRate": "-0.0003",
7047
- // "fundingTime": "1652396400000"
7048
- // },
7049
- // ]
7050
- // }
7051
- //
7052
- const data = this.safeValue(response, 'data', []);
7053
8412
  const rates = [];
7054
- for (let i = 0; i < data.length; i++) {
7055
- const entry = data[i];
8413
+ for (let i = 0; i < result.length; i++) {
8414
+ const entry = result[i];
7056
8415
  const marketId = this.safeString(entry, 'symbol');
7057
8416
  const symbolInner = this.safeSymbol(marketId, market);
7058
- const timestamp = this.safeInteger(entry, 'fundingTime');
8417
+ const timestamp = this.safeInteger2(entry, 'fundingTime', 'fundingRateTimestamp');
7059
8418
  rates.push({
7060
8419
  'info': entry,
7061
8420
  'symbol': symbolInner,
@@ -7073,8 +8432,10 @@ class bitget extends bitget$1 {
7073
8432
  * @description fetch the current funding rate
7074
8433
  * @see https://www.bitget.com/api-doc/contract/market/Get-Current-Funding-Rate
7075
8434
  * @see https://www.bitget.com/api-doc/contract/market/Get-Symbol-Next-Funding-Time
8435
+ * @see https://www.bitget.com/api-doc/uta/public/Get-Current-Funding-Rate
7076
8436
  * @param {string} symbol unified market symbol
7077
8437
  * @param {object} [params] extra parameters specific to the exchange API endpoint
8438
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
7078
8439
  * @param {string} [params.method] either (default) 'publicMixGetV2MixMarketCurrentFundRate' or 'publicMixGetV2MixMarketFundingTime'
7079
8440
  * @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
7080
8441
  */
@@ -7088,24 +8449,23 @@ class bitget extends bitget$1 {
7088
8449
  [productType, params] = this.handleProductTypeAndParams(market, params);
7089
8450
  const request = {
7090
8451
  'symbol': market['id'],
7091
- 'productType': productType,
7092
8452
  };
7093
- let method = undefined;
7094
- [method, params] = this.handleOptionAndParams(params, 'fetchFundingRate', 'method', 'publicMixGetV2MixMarketCurrentFundRate');
8453
+ let uta = undefined;
7095
8454
  let response = undefined;
7096
- if (method === 'publicMixGetV2MixMarketCurrentFundRate') {
7097
- response = await this.publicMixGetV2MixMarketCurrentFundRate(this.extend(request, params));
8455
+ [uta, params] = this.handleOptionAndParams(params, 'fetchFundingRate', 'uta', false);
8456
+ if (uta) {
8457
+ response = await this.publicUtaGetV3MarketCurrentFundRate(this.extend(request, params));
7098
8458
  //
7099
8459
  // {
7100
8460
  // "code": "00000",
7101
8461
  // "msg": "success",
7102
- // "requestTime": 1745500709429,
8462
+ // "requestTime": 1750897372153,
7103
8463
  // "data": [
7104
8464
  // {
7105
8465
  // "symbol": "BTCUSDT",
7106
- // "fundingRate": "-0.000013",
8466
+ // "fundingRate": "0.00001",
7107
8467
  // "fundingRateInterval": "8",
7108
- // "nextUpdate": "1745510400000",
8468
+ // "nextUpdate": "1750924800000",
7109
8469
  // "minFundingRate": "-0.003",
7110
8470
  // "maxFundingRate": "0.003"
7111
8471
  // }
@@ -7113,22 +8473,47 @@ class bitget extends bitget$1 {
7113
8473
  // }
7114
8474
  //
7115
8475
  }
7116
- else if (method === 'publicMixGetV2MixMarketFundingTime') {
7117
- response = await this.publicMixGetV2MixMarketFundingTime(this.extend(request, params));
7118
- //
7119
- // {
7120
- // "code": "00000",
7121
- // "msg": "success",
7122
- // "requestTime": 1745402092428,
7123
- // "data": [
7124
- // {
7125
- // "symbol": "BTCUSDT",
7126
- // "nextFundingTime": "1745424000000",
7127
- // "ratePeriod": "8"
7128
- // }
7129
- // ]
7130
- // }
7131
- //
8476
+ else {
8477
+ request['productType'] = productType;
8478
+ let method = undefined;
8479
+ [method, params] = this.handleOptionAndParams(params, 'fetchFundingRate', 'method', 'publicMixGetV2MixMarketCurrentFundRate');
8480
+ if (method === 'publicMixGetV2MixMarketCurrentFundRate') {
8481
+ response = await this.publicMixGetV2MixMarketCurrentFundRate(this.extend(request, params));
8482
+ //
8483
+ // {
8484
+ // "code": "00000",
8485
+ // "msg": "success",
8486
+ // "requestTime": 1745500709429,
8487
+ // "data": [
8488
+ // {
8489
+ // "symbol": "BTCUSDT",
8490
+ // "fundingRate": "-0.000013",
8491
+ // "fundingRateInterval": "8",
8492
+ // "nextUpdate": "1745510400000",
8493
+ // "minFundingRate": "-0.003",
8494
+ // "maxFundingRate": "0.003"
8495
+ // }
8496
+ // ]
8497
+ // }
8498
+ //
8499
+ }
8500
+ else if (method === 'publicMixGetV2MixMarketFundingTime') {
8501
+ response = await this.publicMixGetV2MixMarketFundingTime(this.extend(request, params));
8502
+ //
8503
+ // {
8504
+ // "code": "00000",
8505
+ // "msg": "success",
8506
+ // "requestTime": 1745402092428,
8507
+ // "data": [
8508
+ // {
8509
+ // "symbol": "BTCUSDT",
8510
+ // "nextFundingTime": "1745424000000",
8511
+ // "ratePeriod": "8"
8512
+ // }
8513
+ // ]
8514
+ // }
8515
+ //
8516
+ }
7132
8517
  }
7133
8518
  const data = this.safeList(response, 'data', []);
7134
8519
  return this.parseFundingRate(data[0], market);
@@ -7194,7 +8579,7 @@ class bitget extends bitget$1 {
7194
8579
  }
7195
8580
  parseFundingRate(contract, market = undefined) {
7196
8581
  //
7197
- // fetchFundingRate: publicMixGetV2MixMarketCurrentFundRate
8582
+ // fetchFundingRate: publicMixGetV2MixMarketCurrentFundRate, publicUtaGetV3MarketCurrentFundRate
7198
8583
  //
7199
8584
  // {
7200
8585
  // "symbol": "BTCUSDT",
@@ -7552,10 +8937,13 @@ class bitget extends bitget$1 {
7552
8937
  * @name bitget#setLeverage
7553
8938
  * @description set the level of leverage for a market
7554
8939
  * @see https://www.bitget.com/api-doc/contract/account/Change-Leverage
8940
+ * @see https://www.bitget.com/api-doc/uta/account/Change-Leverage
7555
8941
  * @param {int} leverage the rate of leverage
7556
8942
  * @param {string} symbol unified market symbol
7557
8943
  * @param {object} [params] extra parameters specific to the exchange API endpoint
7558
8944
  * @param {string} [params.holdSide] *isolated only* position direction, 'long' or 'short'
8945
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
8946
+ * @param {boolean} [params.posSide] required for uta isolated margin, long or short
7559
8947
  * @returns {object} response from the exchange
7560
8948
  */
7561
8949
  async setLeverage(leverage, symbol = undefined, params = {}) {
@@ -7568,27 +8956,51 @@ class bitget extends bitget$1 {
7568
8956
  [productType, params] = this.handleProductTypeAndParams(market, params);
7569
8957
  const request = {
7570
8958
  'symbol': market['id'],
7571
- 'marginCoin': market['settleId'],
7572
8959
  'leverage': this.numberToString(leverage),
7573
- 'productType': productType,
7574
- // 'holdSide': 'long',
7575
8960
  };
7576
- const response = await this.privateMixPostV2MixAccountSetLeverage(this.extend(request, params));
7577
- //
7578
- // {
7579
- // "code": "00000",
7580
- // "msg": "success",
7581
- // "requestTime": 1700864711517,
7582
- // "data": {
7583
- // "symbol": "BTCUSDT",
7584
- // "marginCoin": "USDT",
7585
- // "longLeverage": "25",
7586
- // "shortLeverage": "25",
7587
- // "crossMarginLeverage": "25",
7588
- // "marginMode": "crossed"
7589
- // }
7590
- // }
7591
- //
8961
+ let uta = undefined;
8962
+ let response = undefined;
8963
+ [uta, params] = this.handleOptionAndParams(params, 'setLeverage', 'uta', false);
8964
+ if (uta) {
8965
+ if (productType === 'SPOT') {
8966
+ let marginMode = undefined;
8967
+ [marginMode, params] = this.handleMarginModeAndParams('fetchTrades', params);
8968
+ if (marginMode !== undefined) {
8969
+ productType = 'MARGIN';
8970
+ }
8971
+ }
8972
+ request['coin'] = market['settleId'];
8973
+ request['category'] = productType;
8974
+ response = await this.privateUtaPostV3AccountSetLeverage(this.extend(request, params));
8975
+ //
8976
+ // {
8977
+ // "code": "00000",
8978
+ // "msg": "success",
8979
+ // "requestTime": 1752815940833,
8980
+ // "data": "success"
8981
+ // }
8982
+ //
8983
+ }
8984
+ else {
8985
+ request['marginCoin'] = market['settleId'];
8986
+ request['productType'] = productType;
8987
+ response = await this.privateMixPostV2MixAccountSetLeverage(this.extend(request, params));
8988
+ //
8989
+ // {
8990
+ // "code": "00000",
8991
+ // "msg": "success",
8992
+ // "requestTime": 1700864711517,
8993
+ // "data": {
8994
+ // "symbol": "BTCUSDT",
8995
+ // "marginCoin": "USDT",
8996
+ // "longLeverage": "25",
8997
+ // "shortLeverage": "25",
8998
+ // "crossMarginLeverage": "25",
8999
+ // "marginMode": "crossed"
9000
+ // }
9001
+ // }
9002
+ //
9003
+ }
7592
9004
  return response;
7593
9005
  }
7594
9006
  /**
@@ -7644,36 +9056,54 @@ class bitget extends bitget$1 {
7644
9056
  * @name bitget#setPositionMode
7645
9057
  * @description set hedged to true or false for a market
7646
9058
  * @see https://www.bitget.com/api-doc/contract/account/Change-Hold-Mode
9059
+ * @see https://www.bitget.com/api-doc/uta/account/Change-Position-Mode
7647
9060
  * @param {bool} hedged set to true to use dualSidePosition
7648
9061
  * @param {string} symbol not used by bitget setPositionMode ()
7649
9062
  * @param {object} [params] extra parameters specific to the exchange API endpoint
7650
- * @param {string} [params.productType] required if symbol is undefined: 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
9063
+ * @param {string} [params.productType] required if not uta and symbol is undefined: 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
9064
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
7651
9065
  * @returns {object} response from the exchange
7652
9066
  */
7653
9067
  async setPositionMode(hedged, symbol = undefined, params = {}) {
7654
9068
  await this.loadMarkets();
7655
9069
  const posMode = hedged ? 'hedge_mode' : 'one_way_mode';
9070
+ const request = {};
7656
9071
  let market = undefined;
7657
9072
  if (symbol !== undefined) {
7658
9073
  market = this.market(symbol);
7659
9074
  }
7660
9075
  let productType = undefined;
9076
+ let uta = undefined;
9077
+ let response = undefined;
7661
9078
  [productType, params] = this.handleProductTypeAndParams(market, params);
7662
- const request = {
7663
- 'posMode': posMode,
7664
- 'productType': productType,
7665
- };
7666
- const response = await this.privateMixPostV2MixAccountSetPositionMode(this.extend(request, params));
7667
- //
7668
- // {
7669
- // "code": "00000",
7670
- // "msg": "success",
7671
- // "requestTime": 1700865608009,
7672
- // "data": {
7673
- // "posMode": "hedge_mode"
7674
- // }
7675
- // }
7676
- //
9079
+ [uta, params] = this.handleOptionAndParams(params, 'setPositionMode', 'uta', false);
9080
+ if (uta) {
9081
+ request['holdMode'] = posMode;
9082
+ response = await this.privateUtaPostV3AccountSetHoldMode(this.extend(request, params));
9083
+ //
9084
+ // {
9085
+ // "code": "00000",
9086
+ // "msg": "success",
9087
+ // "requestTime": 1752816734592,
9088
+ // "data": "success"
9089
+ // }
9090
+ //
9091
+ }
9092
+ else {
9093
+ request['posMode'] = posMode;
9094
+ request['productType'] = productType;
9095
+ response = await this.privateMixPostV2MixAccountSetPositionMode(this.extend(request, params));
9096
+ //
9097
+ // {
9098
+ // "code": "00000",
9099
+ // "msg": "success",
9100
+ // "requestTime": 1700865608009,
9101
+ // "data": {
9102
+ // "posMode": "hedge_mode"
9103
+ // }
9104
+ // }
9105
+ //
9106
+ }
7677
9107
  return response;
7678
9108
  }
7679
9109
  /**
@@ -7681,8 +9111,10 @@ class bitget extends bitget$1 {
7681
9111
  * @name bitget#fetchOpenInterest
7682
9112
  * @description retrieves the open interest of a contract trading pair
7683
9113
  * @see https://www.bitget.com/api-doc/contract/market/Get-Open-Interest
9114
+ * @see https://www.bitget.com/api-doc/uta/public/Get-Open-Interest
7684
9115
  * @param {string} symbol unified CCXT market symbol
7685
9116
  * @param {object} [params] exchange specific parameters
9117
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
7686
9118
  * @returns {object} an open interest structure{@link https://docs.ccxt.com/#/?id=open-interest-structure}
7687
9119
  */
7688
9120
  async fetchOpenInterest(symbol, params = {}) {
@@ -7691,33 +9123,60 @@ class bitget extends bitget$1 {
7691
9123
  if (!market['contract']) {
7692
9124
  throw new errors.BadRequest(this.id + ' fetchOpenInterest() supports contract markets only');
7693
9125
  }
7694
- let productType = undefined;
7695
- [productType, params] = this.handleProductTypeAndParams(market, params);
7696
- const request = {
7697
- 'symbol': market['id'],
7698
- 'productType': productType,
7699
- };
7700
- const response = await this.publicMixGetV2MixMarketOpenInterest(this.extend(request, params));
7701
- //
7702
- // {
7703
- // "code": "00000",
7704
- // "msg": "success",
7705
- // "requestTime": 1700866041022,
7706
- // "data": {
7707
- // "openInterestList": [
7708
- // {
7709
- // "symbol": "BTCUSDT",
7710
- // "size": "52234.134"
7711
- // }
7712
- // ],
7713
- // "ts": "1700866041023"
7714
- // }
7715
- // }
7716
- //
9126
+ let productType = undefined;
9127
+ [productType, params] = this.handleProductTypeAndParams(market, params);
9128
+ const request = {
9129
+ 'symbol': market['id'],
9130
+ };
9131
+ let uta = undefined;
9132
+ let response = undefined;
9133
+ [uta, params] = this.handleOptionAndParams(params, 'fetchOpenInterest', 'uta', false);
9134
+ if (uta) {
9135
+ request['category'] = productType;
9136
+ response = await this.publicUtaGetV3MarketOpenInterest(this.extend(request, params));
9137
+ //
9138
+ // {
9139
+ // "code": "00000",
9140
+ // "msg": "success",
9141
+ // "requestTime": 1751101221545,
9142
+ // "data": {
9143
+ // "list": [
9144
+ // {
9145
+ // "symbol": "BTCUSDT",
9146
+ // "openInterest": "18166.3583"
9147
+ // }
9148
+ // ],
9149
+ // "ts": "1751101220993"
9150
+ // }
9151
+ // }
9152
+ //
9153
+ }
9154
+ else {
9155
+ request['productType'] = productType;
9156
+ response = await this.publicMixGetV2MixMarketOpenInterest(this.extend(request, params));
9157
+ //
9158
+ // {
9159
+ // "code": "00000",
9160
+ // "msg": "success",
9161
+ // "requestTime": 1700866041022,
9162
+ // "data": {
9163
+ // "openInterestList": [
9164
+ // {
9165
+ // "symbol": "BTCUSDT",
9166
+ // "size": "52234.134"
9167
+ // }
9168
+ // ],
9169
+ // "ts": "1700866041023"
9170
+ // }
9171
+ // }
9172
+ //
9173
+ }
7717
9174
  const data = this.safeDict(response, 'data', {});
7718
9175
  return this.parseOpenInterest(data, market);
7719
9176
  }
7720
9177
  parseOpenInterest(interest, market = undefined) {
9178
+ //
9179
+ // default
7721
9180
  //
7722
9181
  // {
7723
9182
  // "openInterestList": [
@@ -7729,12 +9188,24 @@ class bitget extends bitget$1 {
7729
9188
  // "ts": "1700866041023"
7730
9189
  // }
7731
9190
  //
7732
- const data = this.safeValue(interest, 'openInterestList', []);
9191
+ // uta
9192
+ //
9193
+ // {
9194
+ // "list": [
9195
+ // {
9196
+ // "symbol": "BTCUSDT",
9197
+ // "openInterest": "18166.3583"
9198
+ // }
9199
+ // ],
9200
+ // "ts": "1751101220993"
9201
+ // }
9202
+ //
9203
+ const data = this.safeList2(interest, 'openInterestList', 'list', []);
7733
9204
  const timestamp = this.safeInteger(interest, 'ts');
7734
9205
  const marketId = this.safeString(data[0], 'symbol');
7735
9206
  return this.safeOpenInterest({
7736
9207
  'symbol': this.safeSymbol(marketId, market, undefined, 'contract'),
7737
- 'openInterestAmount': this.safeNumber(data[0], 'size'),
9208
+ 'openInterestAmount': this.safeNumber2(data[0], 'size', 'openInterest'),
7738
9209
  'openInterestValue': undefined,
7739
9210
  'timestamp': timestamp,
7740
9211
  'datetime': this.iso8601(timestamp),
@@ -8473,9 +9944,10 @@ class bitget extends bitget$1 {
8473
9944
  * @name bitget#fetchCrossBorrowRate
8474
9945
  * @description fetch the rate of interest to borrow a currency for margin trading
8475
9946
  * @see https://www.bitget.com/api-doc/margin/cross/account/Get-Cross-Margin-Interest-Rate-And-Borrowable
9947
+ * @see https://www.bitget.com/api-doc/uta/public/Get-Margin-Loans
8476
9948
  * @param {string} code unified currency code
8477
9949
  * @param {object} [params] extra parameters specific to the exchange API endpoint
8478
- * @param {string} [params.symbol] required for isolated margin
9950
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
8479
9951
  * @returns {object} a [borrow rate structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#borrow-rate-structure}
8480
9952
  */
8481
9953
  async fetchCrossBorrowRate(code, params = {}) {
@@ -8484,40 +9956,64 @@ class bitget extends bitget$1 {
8484
9956
  const request = {
8485
9957
  'coin': currency['id'],
8486
9958
  };
8487
- const response = await this.privateMarginGetV2MarginCrossedInterestRateAndLimit(this.extend(request, params));
8488
- //
8489
- // {
8490
- // "code": "00000",
8491
- // "msg": "success",
8492
- // "requestTime": 1700879047861,
8493
- // "data": [
8494
- // {
8495
- // "coin": "BTC",
8496
- // "leverage": "3",
8497
- // "transferable": true,
8498
- // "borrowable": true,
8499
- // "dailyInterestRate": "0.00007",
8500
- // "annualInterestRate": "0.02555",
8501
- // "maxBorrowableAmount": "26",
8502
- // "vipList": [
8503
- // {"level":"0","limit":"26","dailyInterestRate":"0.00007","annualInterestRate":"0.02555","discountRate":"1"},
8504
- // {"level":"1","limit":"26.78","dailyInterestRate":"0.0000679","annualInterestRate":"0.0247835","discountRate":"0.97"},
8505
- // {"level":"2","limit":"28.08","dailyInterestRate":"0.0000644","annualInterestRate":"0.023506","discountRate":"0.92"},
8506
- // {"level":"3","limit":"30.16","dailyInterestRate":"0.0000602","annualInterestRate":"0.021973","discountRate":"0.86"},
8507
- // {"level":"4","limit":"34.58","dailyInterestRate":"0.0000525","annualInterestRate":"0.0191625","discountRate":"0.75"},
8508
- // {"level":"5","limit":"43.16","dailyInterestRate":"0.000042","annualInterestRate":"0.01533","discountRate":"0.6"}
8509
- // ]
8510
- // }
8511
- // ]
8512
- // }
8513
- //
9959
+ let uta = undefined;
9960
+ let response = undefined;
9961
+ let result = undefined;
9962
+ [uta, params] = this.handleOptionAndParams(params, 'fetchCrossBorrowRate', 'uta', false);
9963
+ if (uta) {
9964
+ response = await this.publicUtaGetV3MarketMarginLoans(this.extend(request, params));
9965
+ //
9966
+ // {
9967
+ // "code": "00000",
9968
+ // "msg": "success",
9969
+ // "requestTime": 1752817798893,
9970
+ // "data": {
9971
+ // "dailyInterest": "0.00100008",
9972
+ // "annualInterest": "0.3650292",
9973
+ // "limit": "100"
9974
+ // }
9975
+ // }
9976
+ //
9977
+ result = this.safeDict(response, 'data', {});
9978
+ }
9979
+ else {
9980
+ response = await this.privateMarginGetV2MarginCrossedInterestRateAndLimit(this.extend(request, params));
9981
+ //
9982
+ // {
9983
+ // "code": "00000",
9984
+ // "msg": "success",
9985
+ // "requestTime": 1700879047861,
9986
+ // "data": [
9987
+ // {
9988
+ // "coin": "BTC",
9989
+ // "leverage": "3",
9990
+ // "transferable": true,
9991
+ // "borrowable": true,
9992
+ // "dailyInterestRate": "0.00007",
9993
+ // "annualInterestRate": "0.02555",
9994
+ // "maxBorrowableAmount": "26",
9995
+ // "vipList": [
9996
+ // {"level":"0","limit":"26","dailyInterestRate":"0.00007","annualInterestRate":"0.02555","discountRate":"1"},
9997
+ // {"level":"1","limit":"26.78","dailyInterestRate":"0.0000679","annualInterestRate":"0.0247835","discountRate":"0.97"},
9998
+ // {"level":"2","limit":"28.08","dailyInterestRate":"0.0000644","annualInterestRate":"0.023506","discountRate":"0.92"},
9999
+ // {"level":"3","limit":"30.16","dailyInterestRate":"0.0000602","annualInterestRate":"0.021973","discountRate":"0.86"},
10000
+ // {"level":"4","limit":"34.58","dailyInterestRate":"0.0000525","annualInterestRate":"0.0191625","discountRate":"0.75"},
10001
+ // {"level":"5","limit":"43.16","dailyInterestRate":"0.000042","annualInterestRate":"0.01533","discountRate":"0.6"}
10002
+ // ]
10003
+ // }
10004
+ // ]
10005
+ // }
10006
+ //
10007
+ const data = this.safeValue(response, 'data', []);
10008
+ result = this.safeValue(data, 0, {});
10009
+ }
8514
10010
  const timestamp = this.safeInteger(response, 'requestTime');
8515
- const data = this.safeValue(response, 'data', []);
8516
- const first = this.safeValue(data, 0, {});
8517
- first['timestamp'] = timestamp;
8518
- return this.parseBorrowRate(first, currency);
10011
+ result['timestamp'] = timestamp;
10012
+ return this.parseBorrowRate(result, currency);
8519
10013
  }
8520
10014
  parseBorrowRate(info, currency = undefined) {
10015
+ //
10016
+ // default
8521
10017
  //
8522
10018
  // {
8523
10019
  // "coin": "BTC",
@@ -8537,11 +10033,19 @@ class bitget extends bitget$1 {
8537
10033
  // ]
8538
10034
  // }
8539
10035
  //
10036
+ // uta
10037
+ //
10038
+ // {
10039
+ // "dailyInterest": "0.00100008",
10040
+ // "annualInterest": "0.3650292",
10041
+ // "limit": "100"
10042
+ // }
10043
+ //
8540
10044
  const currencyId = this.safeString(info, 'coin');
8541
10045
  const timestamp = this.safeInteger(info, 'timestamp');
8542
10046
  return {
8543
10047
  'currency': this.safeCurrencyCode(currencyId, currency),
8544
- 'rate': this.safeNumber(info, 'dailyInterestRate'),
10048
+ 'rate': this.safeNumber2(info, 'dailyInterestRate', 'dailyInterest'),
8545
10049
  'period': 86400000,
8546
10050
  'timestamp': timestamp,
8547
10051
  'datetime': this.iso8601(timestamp),
@@ -8706,43 +10210,72 @@ class bitget extends bitget$1 {
8706
10210
  * @name bitget#closePosition
8707
10211
  * @description closes an open position for a market
8708
10212
  * @see https://www.bitget.com/api-doc/contract/trade/Flash-Close-Position
10213
+ * @see https://www.bitget.com/api-doc/uta/trade/Close-All-Positions
8709
10214
  * @param {string} symbol unified CCXT market symbol
8710
10215
  * @param {string} [side] one-way mode: 'buy' or 'sell', hedge-mode: 'long' or 'short'
8711
10216
  * @param {object} [params] extra parameters specific to the exchange API endpoint
10217
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
8712
10218
  * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
8713
10219
  */
8714
10220
  async closePosition(symbol, side = undefined, params = {}) {
8715
10221
  await this.loadMarkets();
8716
10222
  const market = this.market(symbol);
8717
- let productType = undefined;
8718
- [productType, params] = this.handleProductTypeAndParams(market, params);
8719
10223
  const request = {
8720
10224
  'symbol': market['id'],
8721
- 'productType': productType,
8722
10225
  };
8723
- if (side !== undefined) {
8724
- request['holdSide'] = side;
10226
+ let productType = undefined;
10227
+ let uta = undefined;
10228
+ let response = undefined;
10229
+ [productType, params] = this.handleProductTypeAndParams(market, params);
10230
+ [uta, params] = this.handleOptionAndParams(params, 'closePosition', 'uta', false);
10231
+ if (uta) {
10232
+ if (side !== undefined) {
10233
+ request['posSide'] = side;
10234
+ }
10235
+ request['category'] = productType;
10236
+ response = await this.privateUtaPostV3TradeClosePositions(this.extend(request, params));
10237
+ //
10238
+ // {
10239
+ // "code": "00000",
10240
+ // "msg": "success",
10241
+ // "requestTime": 1751020218384,
10242
+ // "data": {
10243
+ // "list": [
10244
+ // {
10245
+ // "orderId": "1322440134099320832",
10246
+ // "clientOid": "1322440134099320833"
10247
+ // }
10248
+ // ]
10249
+ // }
10250
+ // }
10251
+ //
10252
+ }
10253
+ else {
10254
+ if (side !== undefined) {
10255
+ request['holdSide'] = side;
10256
+ }
10257
+ request['productType'] = productType;
10258
+ response = await this.privateMixPostV2MixOrderClosePositions(this.extend(request, params));
10259
+ //
10260
+ // {
10261
+ // "code": "00000",
10262
+ // "msg": "success",
10263
+ // "requestTime": 1702975017017,
10264
+ // "data": {
10265
+ // "successList": [
10266
+ // {
10267
+ // "orderId": "1120923953904893955",
10268
+ // "clientOid": "1120923953904893956"
10269
+ // }
10270
+ // ],
10271
+ // "failureList": [],
10272
+ // "result": false
10273
+ // }
10274
+ // }
10275
+ //
8725
10276
  }
8726
- const response = await this.privateMixPostV2MixOrderClosePositions(this.extend(request, params));
8727
- //
8728
- // {
8729
- // "code": "00000",
8730
- // "msg": "success",
8731
- // "requestTime": 1702975017017,
8732
- // "data": {
8733
- // "successList": [
8734
- // {
8735
- // "orderId": "1120923953904893955",
8736
- // "clientOid": "1120923953904893956"
8737
- // }
8738
- // ],
8739
- // "failureList": [],
8740
- // "result": false
8741
- // }
8742
- // }
8743
- //
8744
10277
  const data = this.safeValue(response, 'data', {});
8745
- const order = this.safeList(data, 'successList', []);
10278
+ const order = this.safeList2(data, 'successList', 'list', []);
8746
10279
  return this.parseOrder(order[0], market);
8747
10280
  }
8748
10281
  /**
@@ -8750,37 +10283,62 @@ class bitget extends bitget$1 {
8750
10283
  * @name bitget#closeAllPositions
8751
10284
  * @description closes all open positions for a market type
8752
10285
  * @see https://www.bitget.com/api-doc/contract/trade/Flash-Close-Position
10286
+ * @see https://www.bitget.com/api-doc/uta/trade/Close-All-Positions
8753
10287
  * @param {object} [params] extra parameters specific to the exchange API endpoint
8754
10288
  * @param {string} [params.productType] 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
10289
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
8755
10290
  * @returns {object[]} A list of [position structures]{@link https://docs.ccxt.com/#/?id=position-structure}
8756
10291
  */
8757
10292
  async closeAllPositions(params = {}) {
8758
10293
  await this.loadMarkets();
10294
+ const request = {};
8759
10295
  let productType = undefined;
10296
+ let uta = undefined;
10297
+ let response = undefined;
8760
10298
  [productType, params] = this.handleProductTypeAndParams(undefined, params);
8761
- const request = {
8762
- 'productType': productType,
8763
- };
8764
- const response = await this.privateMixPostV2MixOrderClosePositions(this.extend(request, params));
8765
- //
8766
- // {
8767
- // "code": "00000",
8768
- // "msg": "success",
8769
- // "requestTime": 1702975017017,
8770
- // "data": {
8771
- // "successList": [
8772
- // {
8773
- // "orderId": "1120923953904893955",
8774
- // "clientOid": "1120923953904893956"
8775
- // }
8776
- // ],
8777
- // "failureList": [],
8778
- // "result": false
8779
- // }
8780
- // }
8781
- //
10299
+ [uta, params] = this.handleOptionAndParams(params, 'closeAllPositions', 'uta', false);
10300
+ if (uta) {
10301
+ request['category'] = productType;
10302
+ response = await this.privateUtaPostV3TradeClosePositions(this.extend(request, params));
10303
+ //
10304
+ // {
10305
+ // "code": "00000",
10306
+ // "msg": "success",
10307
+ // "requestTime": 1751020218384,
10308
+ // "data": {
10309
+ // "list": [
10310
+ // {
10311
+ // "orderId": "1322440134099320832",
10312
+ // "clientOid": "1322440134099320833"
10313
+ // }
10314
+ // ]
10315
+ // }
10316
+ // }
10317
+ //
10318
+ }
10319
+ else {
10320
+ request['productType'] = productType;
10321
+ response = await this.privateMixPostV2MixOrderClosePositions(this.extend(request, params));
10322
+ //
10323
+ // {
10324
+ // "code": "00000",
10325
+ // "msg": "success",
10326
+ // "requestTime": 1702975017017,
10327
+ // "data": {
10328
+ // "successList": [
10329
+ // {
10330
+ // "orderId": "1120923953904893955",
10331
+ // "clientOid": "1120923953904893956"
10332
+ // }
10333
+ // ],
10334
+ // "failureList": [],
10335
+ // "result": false
10336
+ // }
10337
+ // }
10338
+ //
10339
+ }
8782
10340
  const data = this.safeValue(response, 'data', {});
8783
- const orderInfo = this.safeList(data, 'successList', []);
10341
+ const orderInfo = this.safeList2(data, 'successList', 'list', []);
8784
10342
  return this.parsePositions(orderInfo, undefined, params);
8785
10343
  }
8786
10344
  /**
@@ -8848,25 +10406,27 @@ class bitget extends bitget$1 {
8848
10406
  * @name bitget#fetchPositionsHistory
8849
10407
  * @description fetches historical positions
8850
10408
  * @see https://www.bitget.com/api-doc/contract/position/Get-History-Position
10409
+ * @see https://www.bitget.com/api-doc/uta/trade/Get-Position-History
8851
10410
  * @param {string[]} [symbols] unified contract symbols
8852
10411
  * @param {int} [since] timestamp in ms of the earliest position to fetch, default=3 months ago, max range for params["until"] - since is 3 months
8853
10412
  * @param {int} [limit] the maximum amount of records to fetch, default=20, max=100
8854
10413
  * @param {object} params extra parameters specific to the exchange api endpoint
8855
10414
  * @param {int} [params.until] timestamp in ms of the latest position to fetch, max range for params["until"] - since is 3 months
8856
- *
8857
- * EXCHANGE SPECIFIC PARAMETERS
8858
10415
  * @param {string} [params.productType] USDT-FUTURES (default), COIN-FUTURES, USDC-FUTURES, SUSDT-FUTURES, SCOIN-FUTURES, or SUSDC-FUTURES
10416
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
8859
10417
  * @returns {object[]} a list of [position structures]{@link https://docs.ccxt.com/#/?id=position-structure}
8860
10418
  */
8861
10419
  async fetchPositionsHistory(symbols = undefined, since = undefined, limit = undefined, params = {}) {
8862
10420
  await this.loadMarkets();
8863
- const until = this.safeInteger(params, 'until');
8864
- params = this.omit(params, 'until');
8865
- const request = {};
10421
+ let request = {};
10422
+ let market = undefined;
10423
+ let productType = undefined;
10424
+ let uta = undefined;
10425
+ let response = undefined;
8866
10426
  if (symbols !== undefined) {
8867
10427
  const symbolsLength = symbols.length;
8868
10428
  if (symbolsLength > 0) {
8869
- const market = this.market(symbols[0]);
10429
+ market = this.market(symbols[0]);
8870
10430
  request['symbol'] = market['id'];
8871
10431
  }
8872
10432
  }
@@ -8876,41 +10436,79 @@ class bitget extends bitget$1 {
8876
10436
  if (limit !== undefined) {
8877
10437
  request['limit'] = limit;
8878
10438
  }
8879
- if (until !== undefined) {
8880
- request['endTime'] = until;
10439
+ [request, params] = this.handleUntilOption('endTime', request, params);
10440
+ [productType, params] = this.handleProductTypeAndParams(market, params);
10441
+ [uta, params] = this.handleOptionAndParams(params, 'fetchPositionsHistory', 'uta', false);
10442
+ if (uta) {
10443
+ request['category'] = productType;
10444
+ response = await this.privateUtaGetV3PositionHistoryPosition(this.extend(request, params));
10445
+ //
10446
+ // {
10447
+ // "code": "00000",
10448
+ // "msg": "success",
10449
+ // "requestTime": 1751020950427,
10450
+ // "data": {
10451
+ // "list": [
10452
+ // {
10453
+ // "positionId": "1322441328637100049",
10454
+ // "category": "USDT-FUTURES",
10455
+ // "symbol": "BTCUSDT",
10456
+ // "marginCoin": "USDT",
10457
+ // "holdMode": "hedge_mode",
10458
+ // "posSide": "long",
10459
+ // "marginMode": "crossed",
10460
+ // "openPriceAvg": "107003.7",
10461
+ // "closePriceAvg": "107005.4",
10462
+ // "openTotalPos": "0.0001",
10463
+ // "closeTotalPos": "0.0001",
10464
+ // "cumRealisedPnl": "0.00017",
10465
+ // "netProfit": "-0.01267055",
10466
+ // "totalFunding": "0",
10467
+ // "openFeeTotal": "-0.00642022",
10468
+ // "closeFeeTotal": "-0.00642032",
10469
+ // "createdTime": "1751020503195",
10470
+ // "updatedTime": "1751020520458"
10471
+ // },
10472
+ // ],
10473
+ // "cursor": "1322440134158041089"
10474
+ // }
10475
+ // }
10476
+ //
10477
+ }
10478
+ else {
10479
+ response = await this.privateMixGetV2MixPositionHistoryPosition(this.extend(request, params));
10480
+ //
10481
+ // {
10482
+ // code: '00000',
10483
+ // msg: 'success',
10484
+ // requestTime: '1712794148791',
10485
+ // data: {
10486
+ // list: [
10487
+ // {
10488
+ // symbol: 'XRPUSDT',
10489
+ // marginCoin: 'USDT',
10490
+ // holdSide: 'long',
10491
+ // openAvgPrice: '0.64967',
10492
+ // closeAvgPrice: '0.58799',
10493
+ // marginMode: 'isolated',
10494
+ // openTotalPos: '10',
10495
+ // closeTotalPos: '10',
10496
+ // pnl: '-0.62976205',
10497
+ // netProfit: '-0.65356802',
10498
+ // totalFunding: '-0.01638',
10499
+ // openFee: '-0.00389802',
10500
+ // closeFee: '-0.00352794',
10501
+ // ctime: '1709590322199',
10502
+ // utime: '1709667583395'
10503
+ // },
10504
+ // ...
10505
+ // ]
10506
+ // }
10507
+ // }
10508
+ //
8881
10509
  }
8882
- const response = await this.privateMixGetV2MixPositionHistoryPosition(this.extend(request, params));
8883
- //
8884
- // {
8885
- // code: '00000',
8886
- // msg: 'success',
8887
- // requestTime: '1712794148791',
8888
- // data: {
8889
- // list: [
8890
- // {
8891
- // symbol: 'XRPUSDT',
8892
- // marginCoin: 'USDT',
8893
- // holdSide: 'long',
8894
- // openAvgPrice: '0.64967',
8895
- // closeAvgPrice: '0.58799',
8896
- // marginMode: 'isolated',
8897
- // openTotalPos: '10',
8898
- // closeTotalPos: '10',
8899
- // pnl: '-0.62976205',
8900
- // netProfit: '-0.65356802',
8901
- // totalFunding: '-0.01638',
8902
- // openFee: '-0.00389802',
8903
- // closeFee: '-0.00352794',
8904
- // ctime: '1709590322199',
8905
- // utime: '1709667583395'
8906
- // },
8907
- // ...
8908
- // ]
8909
- // }
8910
- // }
8911
- //
8912
- const data = this.safeDict(response, 'data');
8913
- const responseList = this.safeList(data, 'list');
10510
+ const data = this.safeDict(response, 'data', {});
10511
+ const responseList = this.safeList(data, 'list', []);
8914
10512
  const positions = this.parsePositions(responseList, symbols, params);
8915
10513
  return this.filterBySinceLimit(positions, since, limit);
8916
10514
  }
@@ -9190,8 +10788,10 @@ class bitget extends bitget$1 {
9190
10788
  * @name bitget#fetchFundingInterval
9191
10789
  * @description fetch the current funding rate interval
9192
10790
  * @see https://www.bitget.com/api-doc/contract/market/Get-Symbol-Next-Funding-Time
10791
+ * @see https://www.bitget.com/api-doc/uta/public/Get-Current-Funding-Rate
9193
10792
  * @param {string} symbol unified market symbol
9194
10793
  * @param {object} [params] extra parameters specific to the exchange API endpoint
10794
+ * @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
9195
10795
  * @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
9196
10796
  */
9197
10797
  async fetchFundingInterval(symbol, params = {}) {
@@ -9201,23 +10801,48 @@ class bitget extends bitget$1 {
9201
10801
  [productType, params] = this.handleProductTypeAndParams(market, params);
9202
10802
  const request = {
9203
10803
  'symbol': market['id'],
9204
- 'productType': productType,
9205
10804
  };
9206
- const response = await this.publicMixGetV2MixMarketFundingTime(this.extend(request, params));
9207
- //
9208
- // {
9209
- // "code": "00000",
9210
- // "msg": "success",
9211
- // "requestTime": 1727930153888,
9212
- // "data": [
9213
- // {
9214
- // "symbol": "BTCUSDT",
9215
- // "nextFundingTime": "1727942400000",
9216
- // "ratePeriod": "8"
9217
- // }
9218
- // ]
9219
- // }
9220
- //
10805
+ let response = undefined;
10806
+ let uta = undefined;
10807
+ [uta, params] = this.handleOptionAndParams(params, 'fetchFundingInterval', 'uta', false);
10808
+ if (uta) {
10809
+ response = await this.publicUtaGetV3MarketCurrentFundRate(this.extend(request, params));
10810
+ //
10811
+ // {
10812
+ // "code": "00000",
10813
+ // "msg": "success",
10814
+ // "requestTime": 1752880157959,
10815
+ // "data": [
10816
+ // {
10817
+ // "symbol": "BTCUSDT",
10818
+ // "fundingRate": "0.0001",
10819
+ // "fundingRateInterval": "8",
10820
+ // "nextUpdate": "1752883200000",
10821
+ // "minFundingRate": "-0.003",
10822
+ // "maxFundingRate": "0.003"
10823
+ // }
10824
+ // ]
10825
+ // }
10826
+ //
10827
+ }
10828
+ else {
10829
+ request['productType'] = productType;
10830
+ response = await this.publicMixGetV2MixMarketFundingTime(this.extend(request, params));
10831
+ //
10832
+ // {
10833
+ // "code": "00000",
10834
+ // "msg": "success",
10835
+ // "requestTime": 1727930153888,
10836
+ // "data": [
10837
+ // {
10838
+ // "symbol": "BTCUSDT",
10839
+ // "nextFundingTime": "1727942400000",
10840
+ // "ratePeriod": "8"
10841
+ // }
10842
+ // ]
10843
+ // }
10844
+ //
10845
+ }
9221
10846
  const data = this.safeList(response, 'data', []);
9222
10847
  const first = this.safeDict(data, 0, {});
9223
10848
  return this.parseFundingRate(first, market);
@@ -9392,7 +11017,7 @@ class bitget extends bitget$1 {
9392
11017
  }
9393
11018
  }
9394
11019
  const sandboxMode = this.safeBool2(this.options, 'sandboxMode', 'sandbox', false);
9395
- if (sandboxMode && (path !== 'v2/public/time')) {
11020
+ if (sandboxMode && (path !== 'v2/public/time') && (path !== 'v3/market/current-fund-rate')) {
9396
11021
  // https://github.com/ccxt/ccxt/issues/25252#issuecomment-2662742336
9397
11022
  if (headers === undefined) {
9398
11023
  headers = {};
@@ -9406,4 +11031,4 @@ class bitget extends bitget$1 {
9406
11031
  }
9407
11032
  }
9408
11033
 
9409
- module.exports = bitget;
11034
+ exports["default"] = bitget;