ccxt 4.5.17 → 4.5.19

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 (1014) hide show
  1. package/README.md +10 -6
  2. package/dist/ccxt.browser.min.js +40 -16
  3. package/dist/cjs/_virtual/index.cjs.js +1459 -9
  4. package/dist/cjs/ccxt.js +13 -2
  5. package/dist/cjs/src/abstract/alpaca.js +1 -1
  6. package/dist/cjs/src/abstract/apex.js +1 -1
  7. package/dist/cjs/src/abstract/arkham.js +1 -1
  8. package/dist/cjs/src/abstract/ascendex.js +1 -1
  9. package/dist/cjs/src/abstract/backpack.js +1 -1
  10. package/dist/cjs/src/abstract/bigone.js +1 -1
  11. package/dist/cjs/src/abstract/binance.js +1 -1
  12. package/dist/cjs/src/abstract/bingx.js +1 -1
  13. package/dist/cjs/src/abstract/bit2c.js +1 -1
  14. package/dist/cjs/src/abstract/bitbank.js +1 -1
  15. package/dist/cjs/src/abstract/bitbns.js +1 -1
  16. package/dist/cjs/src/abstract/bitfinex.js +1 -1
  17. package/dist/cjs/src/abstract/bitflyer.js +1 -1
  18. package/dist/cjs/src/abstract/bitget.js +1 -1
  19. package/dist/cjs/src/abstract/bithumb.js +1 -1
  20. package/dist/cjs/src/abstract/bitmart.js +1 -1
  21. package/dist/cjs/src/abstract/bitmex.js +1 -1
  22. package/dist/cjs/src/abstract/bitopro.js +1 -1
  23. package/dist/cjs/src/abstract/bitrue.js +1 -1
  24. package/dist/cjs/src/abstract/bitso.js +1 -1
  25. package/dist/cjs/src/abstract/bitstamp.js +1 -1
  26. package/dist/cjs/src/abstract/bitteam.js +1 -1
  27. package/dist/cjs/src/abstract/bittrade.js +1 -1
  28. package/dist/cjs/src/abstract/bitvavo.js +1 -1
  29. package/dist/cjs/src/abstract/blockchaincom.js +1 -1
  30. package/dist/cjs/src/abstract/blofin.js +1 -1
  31. package/dist/cjs/src/abstract/btcalpha.js +1 -1
  32. package/dist/cjs/src/abstract/btcbox.js +1 -1
  33. package/dist/cjs/src/abstract/btcmarkets.js +1 -1
  34. package/dist/cjs/src/abstract/btcturk.js +1 -1
  35. package/dist/cjs/src/abstract/bybit.js +1 -1
  36. package/dist/cjs/src/abstract/cex.js +1 -1
  37. package/dist/cjs/src/abstract/coinbase.js +1 -1
  38. package/dist/cjs/src/abstract/coinbaseexchange.js +1 -1
  39. package/dist/cjs/src/abstract/coinbaseinternational.js +1 -1
  40. package/dist/cjs/src/abstract/coincatch.js +1 -1
  41. package/dist/cjs/src/abstract/coincheck.js +1 -1
  42. package/dist/cjs/src/abstract/coinex.js +1 -1
  43. package/dist/cjs/src/abstract/coinmate.js +1 -1
  44. package/dist/cjs/src/abstract/coinmetro.js +1 -1
  45. package/dist/cjs/src/abstract/coinone.js +1 -1
  46. package/dist/cjs/src/abstract/coinsph.js +1 -1
  47. package/dist/cjs/src/abstract/coinspot.js +1 -1
  48. package/dist/cjs/src/abstract/cryptocom.js +1 -1
  49. package/dist/cjs/src/abstract/cryptomus.js +1 -1
  50. package/dist/cjs/src/abstract/deepcoin.js +11 -0
  51. package/dist/cjs/src/abstract/defx.js +1 -1
  52. package/dist/cjs/src/abstract/delta.js +1 -1
  53. package/dist/cjs/src/abstract/deribit.js +1 -1
  54. package/dist/cjs/src/abstract/derive.js +1 -1
  55. package/dist/cjs/src/abstract/digifinex.js +1 -1
  56. package/dist/cjs/src/abstract/dydx.js +11 -0
  57. package/dist/cjs/src/abstract/exmo.js +1 -1
  58. package/dist/cjs/src/abstract/foxbit.js +1 -1
  59. package/dist/cjs/src/abstract/gate.js +1 -1
  60. package/dist/cjs/src/abstract/gemini.js +1 -1
  61. package/dist/cjs/src/abstract/hashkey.js +1 -1
  62. package/dist/cjs/src/abstract/hibachi.js +1 -1
  63. package/dist/cjs/src/abstract/hitbtc.js +1 -1
  64. package/dist/cjs/src/abstract/hollaex.js +1 -1
  65. package/dist/cjs/src/abstract/htx.js +1 -1
  66. package/dist/cjs/src/abstract/hyperliquid.js +1 -1
  67. package/dist/cjs/src/abstract/independentreserve.js +1 -1
  68. package/dist/cjs/src/abstract/indodax.js +1 -1
  69. package/dist/cjs/src/abstract/kraken.js +1 -1
  70. package/dist/cjs/src/abstract/krakenfutures.js +1 -1
  71. package/dist/cjs/src/abstract/kucoin.js +1 -1
  72. package/dist/cjs/src/abstract/kucoinfutures.js +1 -1
  73. package/dist/cjs/src/abstract/latoken.js +1 -1
  74. package/dist/cjs/src/abstract/lbank.js +1 -1
  75. package/dist/cjs/src/abstract/luno.js +1 -1
  76. package/dist/cjs/src/abstract/mercado.js +1 -1
  77. package/dist/cjs/src/abstract/mexc.js +1 -1
  78. package/dist/cjs/src/abstract/modetrade.js +1 -1
  79. package/dist/cjs/src/abstract/ndax.js +1 -1
  80. package/dist/cjs/src/abstract/novadax.js +1 -1
  81. package/dist/cjs/src/abstract/oceanex.js +1 -1
  82. package/dist/cjs/src/abstract/okx.js +1 -1
  83. package/dist/cjs/src/abstract/onetrading.js +1 -1
  84. package/dist/cjs/src/abstract/oxfun.js +1 -1
  85. package/dist/cjs/src/abstract/p2b.js +1 -1
  86. package/dist/cjs/src/abstract/paradex.js +1 -1
  87. package/dist/cjs/src/abstract/paymium.js +1 -1
  88. package/dist/cjs/src/abstract/phemex.js +1 -1
  89. package/dist/cjs/src/abstract/poloniex.js +1 -1
  90. package/dist/cjs/src/abstract/probit.js +1 -1
  91. package/dist/cjs/src/abstract/timex.js +1 -1
  92. package/dist/cjs/src/abstract/tokocrypto.js +1 -1
  93. package/dist/cjs/src/abstract/toobit.js +1 -1
  94. package/dist/cjs/src/abstract/upbit.js +1 -1
  95. package/dist/cjs/src/abstract/wavesexchange.js +1 -1
  96. package/dist/cjs/src/abstract/whitebit.js +1 -1
  97. package/dist/cjs/src/abstract/woo.js +1 -1
  98. package/dist/cjs/src/abstract/woofipro.js +1 -1
  99. package/dist/cjs/src/abstract/xt.js +1 -1
  100. package/dist/cjs/src/abstract/yobit.js +1 -1
  101. package/dist/cjs/src/abstract/zaif.js +1 -1
  102. package/dist/cjs/src/abstract/zonda.js +1 -1
  103. package/dist/cjs/src/alpaca.js +1 -1
  104. package/dist/cjs/src/apex.js +34 -16
  105. package/dist/cjs/src/arkham.js +1 -1
  106. package/dist/cjs/src/ascendex.js +1 -1
  107. package/dist/cjs/src/backpack.js +1 -1
  108. package/dist/cjs/src/base/Exchange.js +161 -4
  109. package/dist/cjs/src/base/Precise.js +0 -6
  110. package/dist/cjs/src/base/errors.js +0 -6
  111. package/dist/cjs/src/base/functions/crypto.js +1 -1
  112. package/dist/cjs/src/base/functions/encode.js +1 -1
  113. package/dist/cjs/src/base/functions/misc.js +0 -1
  114. package/dist/cjs/src/base/functions/number.js +0 -6
  115. package/dist/cjs/src/base/functions/platform.js +0 -6
  116. package/dist/cjs/src/base/functions/rsa.js +0 -1
  117. package/dist/cjs/src/base/functions/string.js +0 -6
  118. package/dist/cjs/src/base/functions/throttle.js +1 -1
  119. package/dist/cjs/src/base/functions/time.js +0 -6
  120. package/dist/cjs/src/base/functions/totp.js +0 -1
  121. package/dist/cjs/src/base/functions/type.js +0 -6
  122. package/dist/cjs/src/base/functions.js +1 -1
  123. package/dist/cjs/src/base/ws/Cache.js +0 -6
  124. package/dist/cjs/src/base/ws/Client.js +8 -8
  125. package/dist/cjs/src/base/ws/Future.js +1 -1
  126. package/dist/cjs/src/base/ws/OrderBook.js +1 -1
  127. package/dist/cjs/src/base/ws/OrderBookSide.js +0 -6
  128. package/dist/cjs/src/base/ws/WsClient.js +1 -1
  129. package/dist/cjs/src/bequant.js +1 -1
  130. package/dist/cjs/src/bigone.js +21 -1
  131. package/dist/cjs/src/binance.js +1 -1
  132. package/dist/cjs/src/binancecoinm.js +1 -1
  133. package/dist/cjs/src/binanceus.js +32 -2
  134. package/dist/cjs/src/binanceusdm.js +1 -1
  135. package/dist/cjs/src/bingx.js +21 -1
  136. package/dist/cjs/src/bit2c.js +1 -1
  137. package/dist/cjs/src/bitbank.js +1 -1
  138. package/dist/cjs/src/bitbns.js +1 -1
  139. package/dist/cjs/src/bitfinex.js +1 -1
  140. package/dist/cjs/src/bitflyer.js +1 -1
  141. package/dist/cjs/src/bitget.js +44 -42
  142. package/dist/cjs/src/bithumb.js +1 -1
  143. package/dist/cjs/src/bitmart.js +1 -1
  144. package/dist/cjs/src/bitmex.js +1 -1
  145. package/dist/cjs/src/bitopro.js +1 -1
  146. package/dist/cjs/src/bitrue.js +1 -1
  147. package/dist/cjs/src/bitso.js +1 -1
  148. package/dist/cjs/src/bitstamp.js +1 -1
  149. package/dist/cjs/src/bitteam.js +1 -1
  150. package/dist/cjs/src/bittrade.js +1 -1
  151. package/dist/cjs/src/blockchaincom.js +1 -1
  152. package/dist/cjs/src/blofin.js +5 -2
  153. package/dist/cjs/src/btcalpha.js +1 -1
  154. package/dist/cjs/src/btcbox.js +1 -1
  155. package/dist/cjs/src/btcmarkets.js +1 -1
  156. package/dist/cjs/src/btcturk.js +1 -1
  157. package/dist/cjs/src/bybit.js +4 -1
  158. package/dist/cjs/src/cex.js +1 -1
  159. package/dist/cjs/src/coinbaseadvanced.js +1 -1
  160. package/dist/cjs/src/coincatch.js +1 -1
  161. package/dist/cjs/src/coincheck.js +1 -1
  162. package/dist/cjs/src/coinex.js +1 -1
  163. package/dist/cjs/src/coinmate.js +1 -1
  164. package/dist/cjs/src/coinmetro.js +1 -1
  165. package/dist/cjs/src/coinone.js +1 -1
  166. package/dist/cjs/src/coinsph.js +0 -1
  167. package/dist/cjs/src/coinspot.js +1 -1
  168. package/dist/cjs/src/cryptocom.js +1 -1
  169. package/dist/cjs/src/cryptomus.js +1 -1
  170. package/dist/cjs/src/deepcoin.js +3024 -0
  171. package/dist/cjs/src/defx.js +1 -1
  172. package/dist/cjs/src/delta.js +1 -1
  173. package/dist/cjs/src/deribit.js +7 -1
  174. package/dist/cjs/src/derive.js +1 -1
  175. package/dist/cjs/src/digifinex.js +1 -1
  176. package/dist/cjs/src/dydx.js +2453 -0
  177. package/dist/cjs/src/exmo.js +1 -1
  178. package/dist/cjs/src/fmfwio.js +1 -1
  179. package/dist/cjs/src/foxbit.js +1 -1
  180. package/dist/cjs/src/gate.js +1 -1
  181. package/dist/cjs/src/gateio.js +1 -1
  182. package/dist/cjs/src/gemini.js +1 -1
  183. package/dist/cjs/src/hashkey.js +1 -1
  184. package/dist/cjs/src/hibachi.js +2 -2
  185. package/dist/cjs/src/hitbtc.js +0 -1
  186. package/dist/cjs/src/hollaex.js +1 -1
  187. package/dist/cjs/src/htx.js +1 -1
  188. package/dist/cjs/src/huobi.js +1 -1
  189. package/dist/cjs/src/hyperliquid.js +1 -1
  190. package/dist/cjs/src/independentreserve.js +1 -1
  191. package/dist/cjs/src/indodax.js +1 -1
  192. package/dist/cjs/src/kraken.js +1 -1
  193. package/dist/cjs/src/krakenfutures.js +1 -1
  194. package/dist/cjs/src/kucoin.js +712 -110
  195. package/dist/cjs/src/kucoinfutures.js +1 -1
  196. package/dist/cjs/src/latoken.js +1 -1
  197. package/dist/cjs/src/lbank.js +1 -1
  198. package/dist/cjs/src/luno.js +1 -1
  199. package/dist/cjs/src/mercado.js +1 -1
  200. package/dist/cjs/src/mexc.js +1 -1
  201. package/dist/cjs/src/modetrade.js +1 -1
  202. package/dist/cjs/src/myokx.js +1 -1
  203. package/dist/cjs/src/ndax.js +1 -1
  204. package/dist/cjs/src/novadax.js +1 -1
  205. package/dist/cjs/src/oceanex.js +1 -1
  206. package/dist/cjs/src/okx.js +1 -1
  207. package/dist/cjs/src/okxus.js +1 -1
  208. package/dist/cjs/src/onetrading.js +1 -1
  209. package/dist/cjs/src/oxfun.js +1 -1
  210. package/dist/cjs/src/p2b.js +1 -1
  211. package/dist/cjs/src/paradex.js +1 -1
  212. package/dist/cjs/src/paymium.js +1 -1
  213. package/dist/cjs/src/poloniex.js +1 -1
  214. package/dist/cjs/src/pro/alpaca.js +1 -1
  215. package/dist/cjs/src/pro/apex.js +1 -1
  216. package/dist/cjs/src/pro/arkham.js +1 -1
  217. package/dist/cjs/src/pro/ascendex.js +3 -3
  218. package/dist/cjs/src/pro/backpack.js +1 -1
  219. package/dist/cjs/src/pro/bequant.js +1 -1
  220. package/dist/cjs/src/pro/binance.js +99 -87
  221. package/dist/cjs/src/pro/binancecoinm.js +1 -1
  222. package/dist/cjs/src/pro/binanceus.js +20 -1
  223. package/dist/cjs/src/pro/binanceusdm.js +1 -1
  224. package/dist/cjs/src/pro/bingx.js +1 -1
  225. package/dist/cjs/src/pro/bitfinex.js +1 -1
  226. package/dist/cjs/src/pro/bitget.js +1 -1
  227. package/dist/cjs/src/pro/bithumb.js +1 -1
  228. package/dist/cjs/src/pro/bitmart.js +1 -1
  229. package/dist/cjs/src/pro/bitmex.js +1 -1
  230. package/dist/cjs/src/pro/bitrue.js +1 -1
  231. package/dist/cjs/src/pro/bitstamp.js +1 -1
  232. package/dist/cjs/src/pro/bitvavo.js +1 -1
  233. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  234. package/dist/cjs/src/pro/blofin.js +12 -3
  235. package/dist/cjs/src/pro/bybit.js +1 -1
  236. package/dist/cjs/src/pro/cex.js +1 -1
  237. package/dist/cjs/src/pro/coinbase.js +1 -1
  238. package/dist/cjs/src/pro/coinbaseadvanced.js +1 -1
  239. package/dist/cjs/src/pro/coinbaseexchange.js +1 -1
  240. package/dist/cjs/src/pro/coinbaseinternational.js +1 -1
  241. package/dist/cjs/src/pro/coincatch.js +1 -1
  242. package/dist/cjs/src/pro/coincheck.js +1 -1
  243. package/dist/cjs/src/pro/coinex.js +1 -1
  244. package/dist/cjs/src/pro/coinone.js +1 -1
  245. package/dist/cjs/src/pro/cryptocom.js +1 -1
  246. package/dist/cjs/src/pro/deepcoin.js +1225 -0
  247. package/dist/cjs/src/pro/defx.js +1 -1
  248. package/dist/cjs/src/pro/deribit.js +1 -1
  249. package/dist/cjs/src/pro/dydx.js +418 -0
  250. package/dist/cjs/src/pro/exmo.js +1 -1
  251. package/dist/cjs/src/pro/gate.js +1 -1
  252. package/dist/cjs/src/pro/gateio.js +1 -1
  253. package/dist/cjs/src/pro/gemini.js +1 -1
  254. package/dist/cjs/src/pro/hashkey.js +1 -1
  255. package/dist/cjs/src/pro/hitbtc.js +1 -1
  256. package/dist/cjs/src/pro/hollaex.js +1 -1
  257. package/dist/cjs/src/pro/htx.js +1 -1
  258. package/dist/cjs/src/pro/huobi.js +1 -1
  259. package/dist/cjs/src/pro/hyperliquid.js +1 -1
  260. package/dist/cjs/src/pro/independentreserve.js +1 -1
  261. package/dist/cjs/src/pro/kraken.js +10 -5
  262. package/dist/cjs/src/pro/krakenfutures.js +1 -1
  263. package/dist/cjs/src/pro/kucoin.js +1 -1
  264. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  265. package/dist/cjs/src/pro/lbank.js +0 -1
  266. package/dist/cjs/src/pro/luno.js +1 -1
  267. package/dist/cjs/src/pro/mexc.js +1 -1
  268. package/dist/cjs/src/pro/myokx.js +1 -1
  269. package/dist/cjs/src/pro/ndax.js +1 -1
  270. package/dist/cjs/src/pro/okx.js +1 -1
  271. package/dist/cjs/src/pro/okxus.js +1 -1
  272. package/dist/cjs/src/pro/onetrading.js +1 -1
  273. package/dist/cjs/src/pro/oxfun.js +1 -1
  274. package/dist/cjs/src/pro/p2b.js +1 -1
  275. package/dist/cjs/src/pro/paradex.js +1 -1
  276. package/dist/cjs/src/pro/phemex.js +1 -1
  277. package/dist/cjs/src/pro/poloniex.js +1 -1
  278. package/dist/cjs/src/pro/probit.js +1 -1
  279. package/dist/cjs/src/pro/toobit.js +1 -1
  280. package/dist/cjs/src/pro/upbit.js +1 -1
  281. package/dist/cjs/src/pro/whitebit.js +1 -1
  282. package/dist/cjs/src/pro/xt.js +218 -5
  283. package/dist/cjs/src/probit.js +1 -1
  284. package/dist/cjs/src/protobuf/mexc/compiled.cjs.js +2 -0
  285. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +55 -0
  286. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +55 -0
  287. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +47 -0
  288. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +342 -0
  289. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +716 -0
  290. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +59 -0
  291. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +44 -0
  292. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +379 -0
  293. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +71 -0
  294. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +210 -0
  295. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +194 -0
  296. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +48 -0
  297. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +56 -0
  298. package/dist/cjs/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +55 -0
  299. package/dist/cjs/src/static_dependencies/dydx-v4-client/helpers.js +37 -0
  300. package/dist/cjs/src/static_dependencies/dydx-v4-client/long/index.cjs.js +9 -0
  301. package/dist/cjs/src/static_dependencies/dydx-v4-client/onboarding.js +58 -0
  302. package/dist/cjs/src/static_dependencies/dydx-v4-client/registry.js +38 -0
  303. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +0 -6
  304. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
  305. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
  306. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +0 -1
  307. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +0 -1
  308. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +0 -1
  309. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +0 -1
  310. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +0 -1
  311. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -1
  312. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +0 -1
  313. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +0 -1
  314. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +0 -1
  315. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +0 -1
  316. package/dist/cjs/src/static_dependencies/ethers/fragments.js +0 -6
  317. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +0 -6
  318. package/dist/cjs/src/static_dependencies/ethers/index.js +10 -1
  319. package/dist/cjs/src/static_dependencies/ethers/interface.js +0 -6
  320. package/dist/cjs/src/static_dependencies/ethers/typed.js +0 -6
  321. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +13 -1
  322. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +6 -1
  323. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +9 -1
  324. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +0 -6
  325. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
  326. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +7 -1
  327. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +5 -1
  328. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +0 -6
  329. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +8 -1
  330. package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
  331. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -1
  332. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -1
  333. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
  334. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
  335. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
  336. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
  337. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -1
  338. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
  339. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
  340. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
  341. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
  342. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
  343. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
  344. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
  345. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +0 -6
  346. package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
  347. package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
  348. package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
  349. package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -1
  350. package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
  351. package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
  352. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
  353. package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
  354. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  355. package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
  356. package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
  357. package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
  358. package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +0 -6
  359. package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +0 -1
  360. package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +0 -6
  361. package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +0 -6
  362. package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +0 -1
  363. package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +0 -1
  364. package/dist/cjs/src/static_dependencies/noble-hashes/pbkdf2.js +68 -0
  365. package/dist/cjs/src/static_dependencies/noble-hashes/ripemd160.js +107 -0
  366. package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +0 -1
  367. package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +0 -1
  368. package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +0 -1
  369. package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +0 -1
  370. package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +51 -2
  371. package/dist/cjs/src/static_dependencies/node-fetch/body.js +5 -1
  372. package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +0 -1
  373. package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +0 -6
  374. package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -1
  375. package/dist/cjs/src/static_dependencies/node-fetch/headers.js +5 -1
  376. package/dist/cjs/src/static_dependencies/node-fetch/index.js +7 -1
  377. package/dist/cjs/src/static_dependencies/node-fetch/request.js +7 -1
  378. package/dist/cjs/src/static_dependencies/node-fetch/response.js +5 -1
  379. package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
  380. package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
  381. package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +0 -6
  382. package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +0 -1
  383. package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +0 -1
  384. package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -1
  385. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -1
  386. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
  387. package/dist/cjs/src/static_dependencies/qs/formats.js +0 -6
  388. package/dist/cjs/src/static_dependencies/qs/index.js +0 -1
  389. package/dist/cjs/src/static_dependencies/qs/parse.js +0 -1
  390. package/dist/cjs/src/static_dependencies/qs/stringify.js +0 -1
  391. package/dist/cjs/src/static_dependencies/qs/utils.js +0 -6
  392. package/dist/cjs/src/static_dependencies/scure-base/index.js +29 -6
  393. package/dist/cjs/src/static_dependencies/scure-bip32/index.js +296 -0
  394. package/dist/cjs/src/static_dependencies/scure-bip39/index.js +97 -0
  395. package/dist/cjs/src/static_dependencies/scure-bip39/wordlists/english.js +2054 -0
  396. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
  397. package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
  398. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +0 -6
  399. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
  400. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
  401. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +0 -6
  402. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +0 -6
  403. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +0 -6
  404. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
  405. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
  406. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
  407. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -1
  408. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -1
  409. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
  410. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
  411. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
  412. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -1
  413. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
  414. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -1
  415. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -1
  416. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
  417. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -1
  418. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -1
  419. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -1
  420. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
  421. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +4 -1
  422. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +0 -1
  423. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +3 -1
  424. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +0 -1
  425. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +0 -1
  426. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +0 -1
  427. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +0 -1
  428. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
  429. package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +0 -6
  430. package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +1 -5
  431. package/dist/cjs/src/timex.js +0 -1
  432. package/dist/cjs/src/tokocrypto.js +1 -1
  433. package/dist/cjs/src/toobit.js +3 -2
  434. package/dist/cjs/src/upbit.js +1 -1
  435. package/dist/cjs/src/wavesexchange.js +1 -1
  436. package/dist/cjs/src/whitebit.js +1 -1
  437. package/dist/cjs/src/woo.js +1 -1
  438. package/dist/cjs/src/woofipro.js +1 -1
  439. package/dist/cjs/src/xt.js +1 -1
  440. package/dist/cjs/src/yobit.js +1 -1
  441. package/dist/cjs/src/zaif.js +1 -1
  442. package/dist/cjs/src/zonda.js +1 -1
  443. package/js/ccxt.d.ts +14 -2
  444. package/js/ccxt.js +10 -8
  445. package/js/src/abstract/alpaca.js +0 -6
  446. package/js/src/abstract/apex.js +0 -6
  447. package/js/src/abstract/arkham.js +0 -6
  448. package/js/src/abstract/ascendex.js +0 -6
  449. package/js/src/abstract/backpack.js +0 -6
  450. package/js/src/abstract/bequant.js +0 -6
  451. package/js/src/abstract/bigone.js +0 -6
  452. package/js/src/abstract/binance.js +0 -6
  453. package/js/src/abstract/binancecoinm.js +0 -6
  454. package/js/src/abstract/binanceus.js +0 -6
  455. package/js/src/abstract/binanceusdm.js +0 -6
  456. package/js/src/abstract/bingx.js +0 -6
  457. package/js/src/abstract/bit2c.js +0 -6
  458. package/js/src/abstract/bitbank.js +0 -6
  459. package/js/src/abstract/bitbns.js +0 -6
  460. package/js/src/abstract/bitfinex.js +0 -6
  461. package/js/src/abstract/bitflyer.js +0 -6
  462. package/js/src/abstract/bitget.d.ts +1 -0
  463. package/js/src/abstract/bitget.js +0 -6
  464. package/js/src/abstract/bithumb.js +0 -6
  465. package/js/src/abstract/bitmart.js +0 -6
  466. package/js/src/abstract/bitmex.js +0 -6
  467. package/js/src/abstract/bitopro.js +0 -6
  468. package/js/src/abstract/bitrue.js +0 -6
  469. package/js/src/abstract/bitso.js +0 -6
  470. package/js/src/abstract/bitstamp.js +0 -6
  471. package/js/src/abstract/bitteam.js +0 -6
  472. package/js/src/abstract/bittrade.js +0 -6
  473. package/js/src/abstract/bitvavo.js +0 -6
  474. package/js/src/abstract/blockchaincom.js +0 -6
  475. package/js/src/abstract/blofin.js +0 -6
  476. package/js/src/abstract/btcalpha.js +0 -6
  477. package/js/src/abstract/btcbox.js +0 -6
  478. package/js/src/abstract/btcmarkets.js +0 -6
  479. package/js/src/abstract/btcturk.js +0 -6
  480. package/js/src/abstract/bybit.d.ts +3 -0
  481. package/js/src/abstract/bybit.js +0 -6
  482. package/js/src/abstract/cex.js +0 -6
  483. package/js/src/abstract/coinbase.js +0 -6
  484. package/js/src/abstract/coinbaseadvanced.js +0 -6
  485. package/js/src/abstract/coinbaseexchange.js +0 -6
  486. package/js/src/abstract/coinbaseinternational.js +0 -6
  487. package/js/src/abstract/coincatch.js +0 -6
  488. package/js/src/abstract/coincheck.js +0 -6
  489. package/js/src/abstract/coinex.js +0 -6
  490. package/js/src/abstract/coinmate.js +0 -6
  491. package/js/src/abstract/coinmetro.js +0 -6
  492. package/js/src/abstract/coinone.js +0 -6
  493. package/js/src/abstract/coinsph.js +0 -6
  494. package/js/src/abstract/coinspot.js +0 -6
  495. package/js/src/abstract/cryptocom.js +0 -6
  496. package/js/src/abstract/cryptomus.js +0 -6
  497. package/js/src/abstract/deepcoin.d.ts +60 -0
  498. package/js/src/abstract/deepcoin.js +5 -0
  499. package/js/src/abstract/defx.js +0 -6
  500. package/js/src/abstract/delta.js +0 -6
  501. package/js/src/abstract/deribit.js +0 -6
  502. package/js/src/abstract/derive.js +0 -6
  503. package/js/src/abstract/digifinex.js +0 -6
  504. package/js/src/abstract/dydx.d.ts +61 -0
  505. package/js/src/abstract/dydx.js +5 -0
  506. package/js/src/abstract/exmo.js +0 -6
  507. package/js/src/abstract/fmfwio.js +0 -6
  508. package/js/src/abstract/foxbit.js +0 -6
  509. package/js/src/abstract/gate.js +0 -6
  510. package/js/src/abstract/gateio.js +0 -6
  511. package/js/src/abstract/gemini.js +0 -6
  512. package/js/src/abstract/hashkey.js +0 -6
  513. package/js/src/abstract/hibachi.js +0 -6
  514. package/js/src/abstract/hitbtc.js +0 -6
  515. package/js/src/abstract/hollaex.js +0 -6
  516. package/js/src/abstract/htx.js +0 -6
  517. package/js/src/abstract/huobi.js +0 -6
  518. package/js/src/abstract/hyperliquid.js +0 -6
  519. package/js/src/abstract/independentreserve.js +0 -6
  520. package/js/src/abstract/indodax.js +0 -6
  521. package/js/src/abstract/kraken.js +0 -6
  522. package/js/src/abstract/krakenfutures.js +0 -6
  523. package/js/src/abstract/kucoin.d.ts +1 -1
  524. package/js/src/abstract/kucoin.js +0 -6
  525. package/js/src/abstract/kucoinfutures.d.ts +1 -1
  526. package/js/src/abstract/kucoinfutures.js +0 -6
  527. package/js/src/abstract/latoken.js +0 -6
  528. package/js/src/abstract/lbank.js +0 -6
  529. package/js/src/abstract/luno.js +0 -6
  530. package/js/src/abstract/mercado.js +0 -6
  531. package/js/src/abstract/mexc.js +0 -6
  532. package/js/src/abstract/modetrade.js +0 -6
  533. package/js/src/abstract/myokx.js +0 -6
  534. package/js/src/abstract/ndax.js +0 -6
  535. package/js/src/abstract/novadax.js +0 -6
  536. package/js/src/abstract/oceanex.js +0 -6
  537. package/js/src/abstract/okx.js +0 -6
  538. package/js/src/abstract/okxus.js +0 -6
  539. package/js/src/abstract/onetrading.js +0 -6
  540. package/js/src/abstract/oxfun.js +0 -6
  541. package/js/src/abstract/p2b.js +0 -6
  542. package/js/src/abstract/paradex.js +0 -6
  543. package/js/src/abstract/paymium.js +0 -6
  544. package/js/src/abstract/phemex.js +0 -6
  545. package/js/src/abstract/poloniex.js +0 -6
  546. package/js/src/abstract/probit.js +0 -6
  547. package/js/src/abstract/timex.js +0 -6
  548. package/js/src/abstract/tokocrypto.js +0 -6
  549. package/js/src/abstract/toobit.js +0 -6
  550. package/js/src/abstract/upbit.js +0 -6
  551. package/js/src/abstract/wavesexchange.js +0 -6
  552. package/js/src/abstract/whitebit.js +0 -6
  553. package/js/src/abstract/woo.js +0 -6
  554. package/js/src/abstract/woofipro.js +0 -6
  555. package/js/src/abstract/xt.js +0 -6
  556. package/js/src/abstract/yobit.js +0 -6
  557. package/js/src/abstract/zaif.js +0 -6
  558. package/js/src/abstract/zonda.js +0 -6
  559. package/js/src/alpaca.js +0 -6
  560. package/js/src/apex.d.ts +2 -0
  561. package/js/src/apex.js +33 -21
  562. package/js/src/arkham.js +0 -6
  563. package/js/src/ascendex.js +0 -6
  564. package/js/src/backpack.js +0 -6
  565. package/js/src/base/Exchange.d.ts +7 -0
  566. package/js/src/base/Exchange.js +160 -10
  567. package/js/src/base/Precise.js +0 -6
  568. package/js/src/base/errorHierarchy.js +0 -6
  569. package/js/src/base/errors.js +0 -6
  570. package/js/src/base/functions/crypto.js +0 -6
  571. package/js/src/base/functions/encode.js +0 -6
  572. package/js/src/base/functions/generic.js +0 -6
  573. package/js/src/base/functions/misc.js +0 -6
  574. package/js/src/base/functions/number.js +0 -6
  575. package/js/src/base/functions/platform.js +0 -6
  576. package/js/src/base/functions/rsa.js +0 -6
  577. package/js/src/base/functions/string.js +0 -6
  578. package/js/src/base/functions/throttle.js +0 -6
  579. package/js/src/base/functions/time.js +0 -6
  580. package/js/src/base/functions/totp.js +0 -6
  581. package/js/src/base/functions/type.js +0 -6
  582. package/js/src/base/functions.js +0 -6
  583. package/js/src/base/types.js +0 -6
  584. package/js/src/base/ws/Cache.js +0 -6
  585. package/js/src/base/ws/Client.js +8 -13
  586. package/js/src/base/ws/Future.js +0 -6
  587. package/js/src/base/ws/OrderBook.js +0 -6
  588. package/js/src/base/ws/OrderBookSide.js +0 -6
  589. package/js/src/base/ws/WsClient.js +0 -6
  590. package/js/src/base/ws/functions.js +0 -6
  591. package/js/src/bequant.js +0 -6
  592. package/js/src/bigone.js +20 -6
  593. package/js/src/binance.js +0 -6
  594. package/js/src/binancecoinm.js +0 -6
  595. package/js/src/binanceus.js +31 -7
  596. package/js/src/binanceusdm.js +0 -6
  597. package/js/src/bingx.js +20 -6
  598. package/js/src/bit2c.js +0 -6
  599. package/js/src/bitbank.js +0 -6
  600. package/js/src/bitbns.js +0 -6
  601. package/js/src/bitfinex.js +0 -6
  602. package/js/src/bitflyer.js +0 -6
  603. package/js/src/bitget.d.ts +3 -3
  604. package/js/src/bitget.js +43 -47
  605. package/js/src/bithumb.js +0 -6
  606. package/js/src/bitmart.js +0 -6
  607. package/js/src/bitmex.js +0 -6
  608. package/js/src/bitopro.js +0 -6
  609. package/js/src/bitrue.js +0 -6
  610. package/js/src/bitso.js +0 -6
  611. package/js/src/bitstamp.js +0 -6
  612. package/js/src/bitteam.js +0 -6
  613. package/js/src/bittrade.js +0 -6
  614. package/js/src/bitvavo.js +0 -6
  615. package/js/src/blockchaincom.js +0 -6
  616. package/js/src/blofin.js +4 -7
  617. package/js/src/btcalpha.js +0 -6
  618. package/js/src/btcbox.js +0 -6
  619. package/js/src/btcmarkets.js +0 -6
  620. package/js/src/btcturk.js +0 -6
  621. package/js/src/bybit.js +3 -6
  622. package/js/src/cex.js +0 -6
  623. package/js/src/coinbase.js +0 -6
  624. package/js/src/coinbaseadvanced.js +0 -6
  625. package/js/src/coinbaseexchange.js +0 -6
  626. package/js/src/coinbaseinternational.js +0 -6
  627. package/js/src/coincatch.js +0 -6
  628. package/js/src/coincheck.js +0 -6
  629. package/js/src/coinex.js +0 -6
  630. package/js/src/coinmate.js +0 -6
  631. package/js/src/coinmetro.js +0 -6
  632. package/js/src/coinone.js +0 -6
  633. package/js/src/coinsph.js +0 -6
  634. package/js/src/coinspot.js +0 -6
  635. package/js/src/cryptocom.js +0 -6
  636. package/js/src/cryptomus.js +0 -6
  637. package/js/src/deepcoin.d.ts +498 -0
  638. package/js/src/deepcoin.js +3016 -0
  639. package/js/src/defx.js +0 -6
  640. package/js/src/delta.js +0 -6
  641. package/js/src/deribit.js +6 -6
  642. package/js/src/derive.js +0 -6
  643. package/js/src/digifinex.js +0 -6
  644. package/js/src/dydx.d.ts +364 -0
  645. package/js/src/dydx.js +2446 -0
  646. package/js/src/exmo.js +0 -6
  647. package/js/src/fmfwio.js +0 -6
  648. package/js/src/foxbit.js +0 -6
  649. package/js/src/gate.js +0 -6
  650. package/js/src/gateio.js +0 -6
  651. package/js/src/gemini.js +0 -6
  652. package/js/src/hashkey.js +0 -6
  653. package/js/src/hibachi.js +1 -7
  654. package/js/src/hitbtc.js +0 -6
  655. package/js/src/hollaex.js +0 -6
  656. package/js/src/htx.js +0 -6
  657. package/js/src/huobi.js +0 -6
  658. package/js/src/hyperliquid.js +0 -6
  659. package/js/src/independentreserve.js +0 -6
  660. package/js/src/indodax.js +0 -6
  661. package/js/src/kraken.js +0 -6
  662. package/js/src/krakenfutures.js +0 -6
  663. package/js/src/kucoin.d.ts +48 -1
  664. package/js/src/kucoin.js +711 -115
  665. package/js/src/kucoinfutures.js +0 -6
  666. package/js/src/latoken.js +0 -6
  667. package/js/src/lbank.js +0 -6
  668. package/js/src/luno.js +0 -6
  669. package/js/src/mercado.js +0 -6
  670. package/js/src/mexc.js +0 -6
  671. package/js/src/modetrade.js +0 -6
  672. package/js/src/myokx.js +0 -6
  673. package/js/src/ndax.js +0 -6
  674. package/js/src/novadax.js +0 -6
  675. package/js/src/oceanex.js +0 -6
  676. package/js/src/okx.js +0 -6
  677. package/js/src/okxus.js +0 -6
  678. package/js/src/onetrading.js +0 -6
  679. package/js/src/oxfun.js +0 -6
  680. package/js/src/p2b.js +0 -6
  681. package/js/src/paradex.js +0 -6
  682. package/js/src/paymium.js +0 -6
  683. package/js/src/phemex.js +0 -6
  684. package/js/src/poloniex.js +0 -6
  685. package/js/src/pro/alpaca.js +0 -6
  686. package/js/src/pro/apex.js +0 -6
  687. package/js/src/pro/arkham.js +0 -6
  688. package/js/src/pro/ascendex.d.ts +1 -1
  689. package/js/src/pro/ascendex.js +2 -8
  690. package/js/src/pro/backpack.js +0 -6
  691. package/js/src/pro/bequant.js +0 -6
  692. package/js/src/pro/binance.d.ts +37 -3
  693. package/js/src/pro/binance.js +99 -96
  694. package/js/src/pro/binancecoinm.js +0 -6
  695. package/js/src/pro/binanceus.js +19 -6
  696. package/js/src/pro/binanceusdm.js +0 -6
  697. package/js/src/pro/bingx.js +0 -6
  698. package/js/src/pro/bitfinex.js +0 -6
  699. package/js/src/pro/bitget.js +0 -6
  700. package/js/src/pro/bithumb.js +0 -6
  701. package/js/src/pro/bitmart.js +0 -6
  702. package/js/src/pro/bitmex.js +0 -6
  703. package/js/src/pro/bitopro.js +0 -6
  704. package/js/src/pro/bitrue.js +0 -6
  705. package/js/src/pro/bitstamp.js +0 -6
  706. package/js/src/pro/bittrade.js +0 -6
  707. package/js/src/pro/bitvavo.js +0 -6
  708. package/js/src/pro/blockchaincom.js +0 -6
  709. package/js/src/pro/blofin.d.ts +5 -0
  710. package/js/src/pro/blofin.js +11 -8
  711. package/js/src/pro/bybit.js +0 -6
  712. package/js/src/pro/cex.js +0 -6
  713. package/js/src/pro/coinbase.js +0 -6
  714. package/js/src/pro/coinbaseadvanced.js +0 -6
  715. package/js/src/pro/coinbaseexchange.js +0 -6
  716. package/js/src/pro/coinbaseinternational.js +0 -6
  717. package/js/src/pro/coincatch.js +0 -6
  718. package/js/src/pro/coincheck.js +0 -6
  719. package/js/src/pro/coinex.js +0 -6
  720. package/js/src/pro/coinone.js +0 -6
  721. package/js/src/pro/cryptocom.js +0 -6
  722. package/js/src/pro/deepcoin.d.ts +169 -0
  723. package/js/src/pro/deepcoin.js +1218 -0
  724. package/js/src/pro/defx.js +0 -6
  725. package/js/src/pro/deribit.js +0 -6
  726. package/js/src/pro/derive.js +0 -6
  727. package/js/src/pro/dydx.d.ts +81 -0
  728. package/js/src/pro/dydx.js +411 -0
  729. package/js/src/pro/exmo.js +0 -6
  730. package/js/src/pro/gate.js +0 -6
  731. package/js/src/pro/gateio.js +0 -6
  732. package/js/src/pro/gemini.js +0 -6
  733. package/js/src/pro/hashkey.js +0 -6
  734. package/js/src/pro/hitbtc.js +0 -6
  735. package/js/src/pro/hollaex.js +0 -6
  736. package/js/src/pro/htx.js +0 -6
  737. package/js/src/pro/huobi.js +0 -6
  738. package/js/src/pro/hyperliquid.js +0 -6
  739. package/js/src/pro/independentreserve.js +0 -6
  740. package/js/src/pro/kraken.js +9 -10
  741. package/js/src/pro/krakenfutures.js +0 -6
  742. package/js/src/pro/kucoin.js +0 -6
  743. package/js/src/pro/kucoinfutures.js +0 -6
  744. package/js/src/pro/lbank.js +0 -6
  745. package/js/src/pro/luno.js +0 -6
  746. package/js/src/pro/mexc.js +0 -6
  747. package/js/src/pro/modetrade.js +0 -6
  748. package/js/src/pro/myokx.js +0 -6
  749. package/js/src/pro/ndax.js +0 -6
  750. package/js/src/pro/okx.js +0 -6
  751. package/js/src/pro/okxus.js +0 -6
  752. package/js/src/pro/onetrading.js +0 -6
  753. package/js/src/pro/oxfun.js +0 -6
  754. package/js/src/pro/p2b.js +0 -6
  755. package/js/src/pro/paradex.js +0 -6
  756. package/js/src/pro/phemex.js +0 -6
  757. package/js/src/pro/poloniex.js +0 -6
  758. package/js/src/pro/probit.js +0 -6
  759. package/js/src/pro/toobit.js +0 -6
  760. package/js/src/pro/upbit.js +0 -6
  761. package/js/src/pro/whitebit.js +0 -6
  762. package/js/src/pro/woo.js +0 -6
  763. package/js/src/pro/woofipro.js +0 -6
  764. package/js/src/pro/xt.d.ts +85 -2
  765. package/js/src/pro/xt.js +217 -10
  766. package/js/src/probit.js +0 -6
  767. package/js/src/protobuf/mexc/compiled.cjs +0 -6
  768. package/js/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.d.ts +90 -0
  769. package/js/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +157 -0
  770. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/keys.d.ts +26 -0
  771. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/keys.js +45 -0
  772. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.d.ts +48 -0
  773. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +79 -0
  774. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.d.ts +40 -0
  775. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +71 -0
  776. package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.d.ts +162 -0
  777. package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +323 -0
  778. package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.d.ts +460 -0
  779. package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +692 -0
  780. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.d.ts +127 -0
  781. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +280 -0
  782. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/block_rate_limit_config.d.ts +66 -0
  783. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/block_rate_limit_config.js +103 -0
  784. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.d.ts +127 -0
  785. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +251 -0
  786. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/equity_tier_limit_config.d.ts +48 -0
  787. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/equity_tier_limit_config.js +87 -0
  788. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/finalize_block.d.ts +23 -0
  789. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/finalize_block.js +37 -0
  790. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations.d.ts +92 -0
  791. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations.js +158 -0
  792. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations_config.d.ts +124 -0
  793. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations_config.js +190 -0
  794. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/matches.d.ts +159 -0
  795. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/matches.js +318 -0
  796. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.d.ts +546 -0
  797. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +866 -0
  798. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.d.ts +84 -0
  799. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +175 -0
  800. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.d.ts +397 -0
  801. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +751 -0
  802. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.d.ts +120 -0
  803. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +240 -0
  804. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.d.ts +79 -0
  805. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +141 -0
  806. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/asset_position.d.ts +32 -0
  807. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/asset_position.js +53 -0
  808. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/perpetual_position.d.ts +34 -0
  809. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/perpetual_position.js +60 -0
  810. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.d.ts +62 -0
  811. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +105 -0
  812. package/js/src/static_dependencies/dydx-v4-client/google/protobuf/any.d.ts +207 -0
  813. package/js/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +44 -0
  814. package/js/src/static_dependencies/dydx-v4-client/helpers.d.ts +82 -0
  815. package/js/src/static_dependencies/dydx-v4-client/helpers.js +144 -0
  816. package/js/src/static_dependencies/dydx-v4-client/long/index.cjs +1467 -0
  817. package/js/src/static_dependencies/dydx-v4-client/long/index.d.cts +2 -0
  818. package/js/src/static_dependencies/dydx-v4-client/onboarding.d.ts +35 -0
  819. package/js/src/static_dependencies/dydx-v4-client/onboarding.js +50 -0
  820. package/js/src/static_dependencies/dydx-v4-client/registry.d.ts +7 -0
  821. package/js/src/static_dependencies/dydx-v4-client/registry.js +30 -0
  822. package/js/src/static_dependencies/ethers/abi-coder.js +0 -6
  823. package/js/src/static_dependencies/ethers/address/address.js +0 -6
  824. package/js/src/static_dependencies/ethers/address/checks.js +0 -6
  825. package/js/src/static_dependencies/ethers/address/contract-address.js +0 -6
  826. package/js/src/static_dependencies/ethers/address/index.js +0 -6
  827. package/js/src/static_dependencies/ethers/bytes32.js +0 -6
  828. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
  829. package/js/src/static_dependencies/ethers/coders/address.js +0 -6
  830. package/js/src/static_dependencies/ethers/coders/anonymous.js +0 -6
  831. package/js/src/static_dependencies/ethers/coders/array.js +0 -6
  832. package/js/src/static_dependencies/ethers/coders/boolean.js +0 -6
  833. package/js/src/static_dependencies/ethers/coders/bytes.js +0 -6
  834. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -6
  835. package/js/src/static_dependencies/ethers/coders/null.js +0 -6
  836. package/js/src/static_dependencies/ethers/coders/number.js +0 -6
  837. package/js/src/static_dependencies/ethers/coders/string.js +0 -6
  838. package/js/src/static_dependencies/ethers/coders/tuple.js +0 -6
  839. package/js/src/static_dependencies/ethers/fragments.js +0 -6
  840. package/js/src/static_dependencies/ethers/hash/index.js +0 -6
  841. package/js/src/static_dependencies/ethers/hash/solidity.js +0 -6
  842. package/js/src/static_dependencies/ethers/hash/typed-data.js +0 -6
  843. package/js/src/static_dependencies/ethers/index.js +0 -6
  844. package/js/src/static_dependencies/ethers/interface.js +0 -6
  845. package/js/src/static_dependencies/ethers/typed.js +0 -6
  846. package/js/src/static_dependencies/ethers/utils/base58.js +0 -6
  847. package/js/src/static_dependencies/ethers/utils/base64-browser.js +0 -6
  848. package/js/src/static_dependencies/ethers/utils/base64.js +0 -6
  849. package/js/src/static_dependencies/ethers/utils/data.js +0 -6
  850. package/js/src/static_dependencies/ethers/utils/errors.js +0 -6
  851. package/js/src/static_dependencies/ethers/utils/events.js +0 -6
  852. package/js/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
  853. package/js/src/static_dependencies/ethers/utils/index.js +0 -6
  854. package/js/src/static_dependencies/ethers/utils/maths.js +0 -6
  855. package/js/src/static_dependencies/ethers/utils/properties.js +0 -6
  856. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +0 -6
  857. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +0 -6
  858. package/js/src/static_dependencies/ethers/utils/rlp.js +0 -6
  859. package/js/src/static_dependencies/ethers/utils/units.js +0 -6
  860. package/js/src/static_dependencies/ethers/utils/utf8.js +0 -6
  861. package/js/src/static_dependencies/ethers/utils/uuid.js +0 -6
  862. package/js/src/static_dependencies/fflake/browser.js +0 -6
  863. package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -6
  864. package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -6
  865. package/js/src/static_dependencies/jsencrypt/index.js +0 -6
  866. package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -6
  867. package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
  868. package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
  869. package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
  870. package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +0 -6
  871. package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -6
  872. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -6
  873. package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
  874. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -6
  875. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -6
  876. package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
  877. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -6
  878. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
  879. package/js/src/static_dependencies/messagepack/msgpack.js +0 -6
  880. package/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -6
  881. package/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -6
  882. package/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -6
  883. package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -6
  884. package/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -6
  885. package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -6
  886. package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +0 -6
  887. package/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
  888. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -6
  889. package/js/src/static_dependencies/noble-curves/bn.js +0 -6
  890. package/js/src/static_dependencies/noble-curves/ed25519.js +0 -6
  891. package/js/src/static_dependencies/noble-curves/ed448.js +0 -6
  892. package/js/src/static_dependencies/noble-curves/index.js +0 -6
  893. package/js/src/static_dependencies/noble-curves/jubjub.js +0 -6
  894. package/js/src/static_dependencies/noble-curves/p256.js +0 -6
  895. package/js/src/static_dependencies/noble-curves/p384.js +0 -6
  896. package/js/src/static_dependencies/noble-curves/p521.js +0 -6
  897. package/js/src/static_dependencies/noble-curves/pasta.js +0 -6
  898. package/js/src/static_dependencies/noble-curves/secp256k1.js +0 -6
  899. package/js/src/static_dependencies/noble-hashes/_assert.js +0 -6
  900. package/js/src/static_dependencies/noble-hashes/_blake2.js +0 -6
  901. package/js/src/static_dependencies/noble-hashes/_sha2.js +0 -6
  902. package/js/src/static_dependencies/noble-hashes/_u64.js +0 -6
  903. package/js/src/static_dependencies/noble-hashes/argon2.js +0 -6
  904. package/js/src/static_dependencies/noble-hashes/blake2b.js +0 -6
  905. package/js/src/static_dependencies/noble-hashes/blake2s.js +0 -6
  906. package/js/src/static_dependencies/noble-hashes/blake3.js +0 -6
  907. package/js/src/static_dependencies/noble-hashes/crypto.js +0 -6
  908. package/js/src/static_dependencies/noble-hashes/cryptoNode.js +0 -6
  909. package/js/src/static_dependencies/noble-hashes/eskdf.js +0 -6
  910. package/js/src/static_dependencies/noble-hashes/hkdf.js +0 -6
  911. package/js/src/static_dependencies/noble-hashes/hmac.js +0 -6
  912. package/js/src/static_dependencies/noble-hashes/index.js +0 -6
  913. package/js/src/static_dependencies/noble-hashes/md5.js +0 -6
  914. package/js/src/static_dependencies/noble-hashes/pbkdf2.js +0 -6
  915. package/js/src/static_dependencies/noble-hashes/ripemd160.js +0 -6
  916. package/js/src/static_dependencies/noble-hashes/scrypt.js +0 -6
  917. package/js/src/static_dependencies/noble-hashes/sha1.js +0 -6
  918. package/js/src/static_dependencies/noble-hashes/sha256.js +0 -6
  919. package/js/src/static_dependencies/noble-hashes/sha3-addons.js +0 -6
  920. package/js/src/static_dependencies/noble-hashes/sha3.js +0 -6
  921. package/js/src/static_dependencies/noble-hashes/sha512.js +0 -6
  922. package/js/src/static_dependencies/noble-hashes/utils.d.ts +1 -0
  923. package/js/src/static_dependencies/noble-hashes/utils.js +4 -6
  924. package/js/src/static_dependencies/node-fetch/body.js +0 -6
  925. package/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -6
  926. package/js/src/static_dependencies/node-fetch/errors/base.js +0 -6
  927. package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -6
  928. package/js/src/static_dependencies/node-fetch/headers.js +0 -6
  929. package/js/src/static_dependencies/node-fetch/index.js +0 -6
  930. package/js/src/static_dependencies/node-fetch/request.js +0 -6
  931. package/js/src/static_dependencies/node-fetch/response.js +0 -6
  932. package/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
  933. package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
  934. package/js/src/static_dependencies/node-fetch/utils/is.js +0 -6
  935. package/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -6
  936. package/js/src/static_dependencies/proxies/agent-base/helpers.js +0 -6
  937. package/js/src/static_dependencies/proxies/agent-base/index.js +0 -6
  938. package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -6
  939. package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -6
  940. package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
  941. package/js/src/static_dependencies/qs/formats.js +0 -6
  942. package/js/src/static_dependencies/qs/index.js +0 -6
  943. package/js/src/static_dependencies/qs/parse.js +0 -6
  944. package/js/src/static_dependencies/qs/stringify.js +0 -6
  945. package/js/src/static_dependencies/qs/utils.js +0 -6
  946. package/js/src/static_dependencies/scure-base/index.js +0 -6
  947. package/js/src/static_dependencies/scure-bip32/index.d.ts +49 -0
  948. package/js/src/static_dependencies/scure-bip32/index.js +289 -0
  949. package/js/src/static_dependencies/scure-bip39/index.d.ts +54 -0
  950. package/js/src/static_dependencies/scure-bip39/index.js +134 -0
  951. package/js/src/static_dependencies/scure-bip39/wordlists/english.d.ts +1 -0
  952. package/js/src/static_dependencies/scure-bip39/wordlists/english.js +2048 -0
  953. package/js/src/static_dependencies/scure-starknet/index.js +0 -6
  954. package/js/src/static_dependencies/starknet/constants.js +0 -6
  955. package/js/src/static_dependencies/starknet/index.js +0 -6
  956. package/js/src/static_dependencies/starknet/types/cairoEnum.js +0 -6
  957. package/js/src/static_dependencies/starknet/types/calldata.js +0 -6
  958. package/js/src/static_dependencies/starknet/types/index.js +0 -6
  959. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
  960. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
  961. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +0 -6
  962. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +0 -6
  963. package/js/src/static_dependencies/starknet/types/lib/index.js +0 -6
  964. package/js/src/static_dependencies/starknet/types/typedData.js +0 -6
  965. package/js/src/static_dependencies/starknet/utils/address.js +0 -6
  966. package/js/src/static_dependencies/starknet/utils/assert.js +0 -6
  967. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +0 -6
  968. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +0 -6
  969. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +0 -6
  970. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -6
  971. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -6
  972. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
  973. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
  974. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
  975. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +0 -6
  976. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -6
  977. package/js/src/static_dependencies/starknet/utils/calldata/index.js +0 -6
  978. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -6
  979. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +0 -6
  980. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -6
  981. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
  982. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -6
  983. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -6
  984. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -6
  985. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +0 -6
  986. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +0 -6
  987. package/js/src/static_dependencies/starknet/utils/encode.js +0 -6
  988. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +0 -6
  989. package/js/src/static_dependencies/starknet/utils/hash/index.js +0 -6
  990. package/js/src/static_dependencies/starknet/utils/merkle.js +0 -6
  991. package/js/src/static_dependencies/starknet/utils/num.js +0 -6
  992. package/js/src/static_dependencies/starknet/utils/selector.js +0 -6
  993. package/js/src/static_dependencies/starknet/utils/shortString.js +0 -6
  994. package/js/src/static_dependencies/starknet/utils/starknetId.js +0 -6
  995. package/js/src/static_dependencies/starknet/utils/typedData.js +0 -6
  996. package/js/src/static_dependencies/starknet/utils/uint256.js +0 -6
  997. package/js/src/static_dependencies/starknet/utils/url.js +0 -6
  998. package/js/src/static_dependencies/watchable/src/index.js +0 -6
  999. package/js/src/static_dependencies/watchable/src/types.js +0 -6
  1000. package/js/src/static_dependencies/watchable/src/unpromise.js +0 -6
  1001. package/js/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
  1002. package/js/src/timex.js +0 -6
  1003. package/js/src/tokocrypto.js +0 -6
  1004. package/js/src/toobit.js +2 -7
  1005. package/js/src/upbit.js +0 -6
  1006. package/js/src/wavesexchange.js +0 -6
  1007. package/js/src/whitebit.js +0 -6
  1008. package/js/src/woo.js +0 -6
  1009. package/js/src/woofipro.js +0 -6
  1010. package/js/src/xt.js +0 -6
  1011. package/js/src/yobit.js +0 -6
  1012. package/js/src/zaif.js +0 -6
  1013. package/js/src/zonda.js +0 -6
  1014. package/package.json +9 -3
@@ -0,0 +1,3016 @@
1
+ // ---------------------------------------------------------------------------
2
+ import Exchange from './abstract/deepcoin.js';
3
+ import { TICK_SIZE } from './base/functions/number.js';
4
+ import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
5
+ import { Precise } from './base/Precise.js';
6
+ import { ArgumentsRequired, BadRequest, ExchangeError, InsufficientFunds, InvalidOrder, OrderNotFound, NotSupported, NullResponse } from '../ccxt.js';
7
+ // ---------------------------------------------------------------------------
8
+ /**
9
+ * @class deepcoin
10
+ * @augments Exchange
11
+ */
12
+ export default class deepcoin extends Exchange {
13
+ describe() {
14
+ return this.deepExtend(super.describe(), {
15
+ 'id': 'deepcoin',
16
+ 'name': 'DeepCoin',
17
+ 'countries': ['SG'],
18
+ 'rateLimit': 200,
19
+ 'version': 'v1',
20
+ 'certified': false,
21
+ 'pro': true,
22
+ 'has': {
23
+ 'CORS': undefined,
24
+ 'spot': true,
25
+ 'margin': true,
26
+ 'swap': true,
27
+ 'future': false,
28
+ 'option': false,
29
+ 'addMargin': false,
30
+ 'cancelAllOrders': true,
31
+ 'cancelAllOrdersAfter': false,
32
+ 'cancelOrder': true,
33
+ 'cancelOrders': true,
34
+ 'cancelWithdraw': false,
35
+ 'closePosition': true,
36
+ 'createConvertTrade': false,
37
+ 'createDepositAddress': false,
38
+ 'createLimitBuyOrder': true,
39
+ 'createLimitOrder': true,
40
+ 'createLimitSellOrder': true,
41
+ 'createMarketBuyOrder': true,
42
+ 'createMarketBuyOrderWithCost': true,
43
+ 'createMarketOrder': true,
44
+ 'createMarketOrderWithCost': true,
45
+ 'createMarketSellOrder': true,
46
+ 'createMarketSellOrderWithCost': true,
47
+ 'createOrder': true,
48
+ 'createOrders': false,
49
+ 'createOrderWithTakeProfitAndStopLoss': true,
50
+ 'createPostOnlyOrder': true,
51
+ 'createReduceOnlyOrder': true,
52
+ 'createStopLossOrder': false,
53
+ 'createTakeProfitOrder': false,
54
+ 'createTrailingAmountOrder': false,
55
+ 'createTrailingPercentOrder': false,
56
+ 'createTriggerOrder': true,
57
+ 'editOrder': true,
58
+ 'fetchAccounts': false,
59
+ 'fetchBalance': true,
60
+ 'fetchCanceledAndClosedOrders': true,
61
+ 'fetchCanceledOrders': true,
62
+ 'fetchClosedOrder': true,
63
+ 'fetchClosedOrders': true,
64
+ 'fetchConvertCurrencies': false,
65
+ 'fetchConvertQuote': false,
66
+ 'fetchConvertTrade': false,
67
+ 'fetchConvertTradeHistory': false,
68
+ 'fetchCurrencies': false,
69
+ 'fetchDepositAddress': true,
70
+ 'fetchDepositAddresses': true,
71
+ 'fetchDeposits': true,
72
+ 'fetchDepositsWithdrawals': false,
73
+ 'fetchDepositWithdrawFees': false,
74
+ 'fetchFundingHistory': false,
75
+ 'fetchFundingRate': true,
76
+ 'fetchFundingRateHistory': true,
77
+ 'fetchFundingRates': true,
78
+ 'fetchIndexOHLCV': true,
79
+ 'fetchLedger': true,
80
+ 'fetchLeverage': false,
81
+ 'fetchLeverageTiers': false,
82
+ 'fetchMarginAdjustmentHistory': false,
83
+ 'fetchMarginMode': false,
84
+ 'fetchMarkets': true,
85
+ 'fetchMarkOHLCV': true,
86
+ 'fetchMyTrades': true,
87
+ 'fetchOHLCV': true,
88
+ 'fetchOpenInterest': false,
89
+ 'fetchOpenInterestHistory': false,
90
+ 'fetchOpenOrder': true,
91
+ 'fetchOpenOrders': true,
92
+ 'fetchOrder': false,
93
+ 'fetchOrderBook': true,
94
+ 'fetchOrders': false,
95
+ 'fetchOrderTrades': true,
96
+ 'fetchPosition': true,
97
+ 'fetchPositionHistory': false,
98
+ 'fetchPositionMode': false,
99
+ 'fetchPositions': true,
100
+ 'fetchPositionsForSymbol': true,
101
+ 'fetchPositionsHistory': true,
102
+ 'fetchPremiumIndexOHLCV': false,
103
+ 'fetchStatus': false,
104
+ 'fetchTicker': false,
105
+ 'fetchTickers': true,
106
+ 'fetchTime': false,
107
+ 'fetchTrades': true,
108
+ 'fetchTradingFee': false,
109
+ 'fetchTradingFees': false,
110
+ 'fetchTransactions': false,
111
+ 'fetchTransfers': false,
112
+ 'fetchWithdrawals': true,
113
+ 'reduceMargin': false,
114
+ 'sandbox': false,
115
+ 'setLeverage': true,
116
+ 'setMargin': false,
117
+ 'setMarginMode': false,
118
+ 'setPositionMode': false,
119
+ 'transfer': true,
120
+ 'withdraw': false,
121
+ },
122
+ 'timeframes': {
123
+ '1m': '1m',
124
+ '5m': '5m',
125
+ '15m': '15m',
126
+ '30m': '30m',
127
+ '1h': '1H',
128
+ '4h': '4H',
129
+ '12h': '12H',
130
+ '1d': '1D',
131
+ '1w': '1W',
132
+ '1M': '1M',
133
+ '1y': '1Y',
134
+ },
135
+ 'urls': {
136
+ 'logo': 'https://github.com/user-attachments/assets/671bd35c-770e-4935-9070-f8fb114f79c4',
137
+ 'api': {
138
+ 'public': 'https://api.deepcoin.com',
139
+ 'private': 'https://api.deepcoin.com',
140
+ },
141
+ 'www': 'https://www.deepcoin.com/',
142
+ 'doc': 'https://www.deepcoin.com/docs',
143
+ 'referral': {
144
+ 'url': 'https://s.deepcoin.com/UzkyODgy',
145
+ 'discount': 0.1,
146
+ },
147
+ },
148
+ 'api': {
149
+ 'public': {
150
+ 'get': {
151
+ 'deepcoin/market/books': 1,
152
+ 'deepcoin/market/candles': 1,
153
+ 'deepcoin/market/instruments': 1,
154
+ 'deepcoin/market/tickers': 1,
155
+ 'deepcoin/market/index-candles': 1,
156
+ 'deepcoin/market/trades': 1,
157
+ 'deepcoin/market/mark-price-candles': 1,
158
+ 'deepcoin/market/step-margin': 5,
159
+ },
160
+ },
161
+ 'private': {
162
+ 'get': {
163
+ 'deepcoin/account/balances': 5,
164
+ 'deepcoin/account/bills': 5,
165
+ 'deepcoin/account/positions': 5,
166
+ 'deepcoin/trade/fills': 5,
167
+ 'deepcoin/trade/orderByID': 5,
168
+ 'deepcoin/trade/finishOrderByID': 5,
169
+ 'deepcoin/trade/orders-history': 5,
170
+ 'deepcoin/trade/v2/orders-pending': 5,
171
+ 'deepcoin/trade/funding-rate': 5,
172
+ 'deepcoin/trade/fund-rate/current-funding-rate': 5,
173
+ 'deepcoin/trade/fund-rate/history': 5,
174
+ 'deepcoin/trade/trigger-orders-pending': 5,
175
+ 'deepcoin/trade/trigger-orders-history': 5,
176
+ 'deepcoin/copytrading/support-contracts': 5,
177
+ 'deepcoin/copytrading/leader-position': 5,
178
+ 'deepcoin/copytrading/estimate-profit': 5,
179
+ 'deepcoin/copytrading/history-profit': 5,
180
+ 'deepcoin/copytrading/follower-rank': 5,
181
+ 'deepcoin/internal-transfer/support': 5,
182
+ 'deepcoin/internal-transfer/history-order': 5,
183
+ 'deepcoin/rebate/config': 5,
184
+ 'deepcoin/agents/users': 5,
185
+ 'deepcoin/agents/users/rebate-list': 5,
186
+ 'deepcoin/agents/users/rebates': 5,
187
+ 'deepcoin/asset/deposit-list': 5,
188
+ 'deepcoin/asset/withdraw-list': 5,
189
+ 'deepcoin/asset/recharge-chain-list': 5,
190
+ 'deepcoin/listenkey/acquire': 5,
191
+ 'deepcoin/listenkey/extend': 5,
192
+ },
193
+ 'post': {
194
+ 'deepcoin/account/set-leverage': 5,
195
+ 'deepcoin/trade/order': 5,
196
+ 'deepcoin/trade/replace-order': 5,
197
+ 'deepcoin/trade/cancel-order': 5,
198
+ 'deepcoin/trade/batch-cancel-order': 5,
199
+ 'deepcoin/trade/cancel-trigger-order': 1 / 6,
200
+ 'deepcoin/trade/swap/cancel-all': 5,
201
+ 'deepcoin/trade/trigger-order': 5,
202
+ 'deepcoin/trade/batch-close-position': 5,
203
+ 'deepcoin/trade/replace-order-sltp': 5,
204
+ 'deepcoin/trade/close-position-by-ids': 5,
205
+ 'deepcoin/copytrading/leader-settings': 5,
206
+ 'deepcoin/copytrading/set-contracts': 5,
207
+ 'deepcoin/internal-transfer': 5,
208
+ 'deepcoin/rebate/config': 5,
209
+ 'deepcoin/asset/transfer': 5,
210
+ },
211
+ },
212
+ },
213
+ 'fees': {
214
+ 'trading': {
215
+ 'taker': this.parseNumber('0.0015'),
216
+ 'maker': this.parseNumber('0.0010'),
217
+ },
218
+ },
219
+ 'features': {
220
+ 'spot': {
221
+ 'sandbox': false,
222
+ 'createOrder': {
223
+ 'marginMode': true,
224
+ 'triggerPrice': true,
225
+ 'triggerPriceType': {
226
+ 'last': true,
227
+ 'mark': false,
228
+ 'index': false,
229
+ },
230
+ 'triggerDirection': false,
231
+ 'stopLossPrice': true,
232
+ 'takeProfitPrice': true,
233
+ 'attachedStopLossTakeProfit': {
234
+ 'triggerPriceType': {
235
+ 'last': false,
236
+ 'mark': false,
237
+ 'index': false,
238
+ },
239
+ 'price': true,
240
+ },
241
+ 'timeInForce': {
242
+ 'IOC': true,
243
+ 'FOK': true,
244
+ 'PO': true,
245
+ 'GTD': false,
246
+ },
247
+ 'hedged': true,
248
+ 'trailing': false,
249
+ 'marketBuyRequiresPrice': false,
250
+ },
251
+ 'createOrders': undefined,
252
+ 'fetchMyTrades': {
253
+ 'marginMode': false,
254
+ 'limit': 100,
255
+ 'daysBack': 60,
256
+ 'untilDays': undefined,
257
+ 'symbolRequired': true,
258
+ },
259
+ 'fetchOrder': undefined,
260
+ 'fetchOpenOrders': {
261
+ 'marginMode': false,
262
+ 'limit': 100,
263
+ 'trigger': true,
264
+ 'trailing': false,
265
+ 'symbolRequired': true,
266
+ },
267
+ 'fetchOrders': undefined,
268
+ 'fetchClosedOrders': {
269
+ 'marginMode': false,
270
+ 'limit': 100,
271
+ 'daysBack': undefined,
272
+ 'daysBackCanceled': undefined,
273
+ 'untilDays': undefined,
274
+ 'trigger': true,
275
+ 'trailing': false,
276
+ 'symbolRequired': true,
277
+ },
278
+ 'fetchOHLCV': {
279
+ 'limit': 300,
280
+ },
281
+ },
282
+ 'swap': {
283
+ 'linear': {
284
+ 'extends': 'spot',
285
+ },
286
+ 'inverse': {
287
+ 'extends': 'spot',
288
+ },
289
+ },
290
+ },
291
+ 'requiredCredentials': {
292
+ 'apiKey': true,
293
+ 'secret': true,
294
+ 'password': true,
295
+ },
296
+ 'precisionMode': TICK_SIZE,
297
+ 'options': {
298
+ 'recvWindow': 5000,
299
+ 'defaultNetworks': {
300
+ 'ETH': 'ERC20',
301
+ 'USDT': 'TRC20',
302
+ 'USDC': 'ERC20',
303
+ },
304
+ 'networks': {
305
+ 'ERC20': 'ERC20',
306
+ 'TRC20': 'TRC20',
307
+ 'ARB': 'ARBITRUM',
308
+ 'BSC': 'BSC(BEP20)',
309
+ 'SOL': 'SOL',
310
+ 'BTC': 'Bitcoin',
311
+ 'ADA': 'Cardano',
312
+ },
313
+ 'networksById': {},
314
+ 'fetchMarkets': {
315
+ 'types': ['spot', 'swap'], // spot, swap,
316
+ },
317
+ 'timeInForce': {
318
+ 'GTC': 'GTC',
319
+ 'IOC': 'IOC',
320
+ 'PO': 'PO', // Post Only
321
+ },
322
+ 'exchangeType': {
323
+ 'spot': 'SPOT',
324
+ 'swap': 'SWAP',
325
+ 'SPOT': 'SPOT',
326
+ 'SWAP': 'SWAP',
327
+ },
328
+ 'accountsByType': {
329
+ 'spot': 1,
330
+ 'fund': 2,
331
+ 'rebate': 3,
332
+ 'inverse': 5,
333
+ 'linear': 7,
334
+ 'demo': 10,
335
+ },
336
+ },
337
+ 'commonCurrencies': {},
338
+ 'exceptions': {
339
+ 'exact': {
340
+ '24': OrderNotFound,
341
+ '31': InsufficientFunds,
342
+ '36': InsufficientFunds,
343
+ '44': BadRequest,
344
+ '49': InvalidOrder,
345
+ '194': InvalidOrder,
346
+ '195': InvalidOrder,
347
+ '199': BadRequest,
348
+ '100010': InsufficientFunds,
349
+ 'unsupportedAction': BadRequest,
350
+ 'localIDNotExist': BadRequest,
351
+ },
352
+ 'broad': {
353
+ 'no available': NotSupported,
354
+ 'field is required': ArgumentsRequired,
355
+ 'not in acceptable range': BadRequest,
356
+ 'subscription cluster does not "exist"': BadRequest,
357
+ 'must be equal or lesser than': BadRequest, // {"code":"51","msg":"The Size value `100` must be equal or lesser than 50","data":null}
358
+ },
359
+ },
360
+ });
361
+ }
362
+ handleMarketTypeAndParams(methodName, market = undefined, params = {}, defaultValue = undefined) {
363
+ const instType = this.safeString(params, 'instType');
364
+ params = this.omit(params, 'instType');
365
+ const type = this.safeString(params, 'type');
366
+ if ((type === undefined) && (instType !== undefined)) {
367
+ params = this.extend(params, { 'type': instType });
368
+ }
369
+ return super.handleMarketTypeAndParams(methodName, market, params, defaultValue);
370
+ }
371
+ convertToInstrumentType(type) {
372
+ const exchangeTypes = this.safeDict(this.options, 'exchangeType', {});
373
+ return this.safeString(exchangeTypes, type, type);
374
+ }
375
+ /**
376
+ * @method
377
+ * @name deepcoin#fetchMarkets
378
+ * @see https://www.deepcoin.com/docs/DeepCoinMarket/getBaseInfo
379
+ * @description retrieves data on all markets for okcoin
380
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
381
+ * @returns {object[]} an array of objects representing market data
382
+ */
383
+ async fetchMarkets(params = {}) {
384
+ let types = ['spot', 'swap'];
385
+ const fetchMarketsOption = this.safeDict(this.options, 'fetchMarkets');
386
+ if (fetchMarketsOption !== undefined) {
387
+ types = this.safeList(fetchMarketsOption, 'types', types);
388
+ }
389
+ else {
390
+ types = this.safeList(this.options, 'fetchMarkets', types); // backward-support
391
+ }
392
+ let promises = [];
393
+ let result = [];
394
+ for (let i = 0; i < types.length; i++) {
395
+ promises.push(this.fetchMarketsByType(types[i], params));
396
+ }
397
+ promises = await Promise.all(promises);
398
+ for (let i = 0; i < promises.length; i++) {
399
+ result = this.arrayConcat(result, promises[i]);
400
+ }
401
+ return result;
402
+ }
403
+ async fetchMarketsByType(type, params = {}) {
404
+ const request = {
405
+ 'instType': this.convertToInstrumentType(type),
406
+ };
407
+ const response = await this.publicGetDeepcoinMarketInstruments(this.extend(request, params));
408
+ //
409
+ // spot
410
+ //
411
+ // {
412
+ // "code": "0",
413
+ // "msg": "",
414
+ // "data": [
415
+ // {
416
+ // "instType": "SPOT",
417
+ // "instId": "A-USDT",
418
+ // "uly": "",
419
+ // "baseCcy": "A",
420
+ // "quoteCcy": "USDT",
421
+ // "ctVal": "1",
422
+ // "ctValCcy": "",
423
+ // "listTime": "0",
424
+ // "lever": "1",
425
+ // "tickSz": "0.0001",
426
+ // "lotSz": "0.001",
427
+ // "minSz": "0.5",
428
+ // "ctType": "",
429
+ // "alias": "",
430
+ // "state": "live",
431
+ // "maxLmtSz": "7692307",
432
+ // "maxMktSz": "7692307"
433
+ // }
434
+ // ]
435
+ // }
436
+ //
437
+ const dataResponse = this.safeList(response, 'data', []);
438
+ return this.parseMarkets(dataResponse);
439
+ }
440
+ parseMarket(market) {
441
+ //
442
+ // spot markets
443
+ //
444
+ // {
445
+ // "instType": "SPOT",
446
+ // "instId": "A-USDT",
447
+ // "uly": "",
448
+ // "baseCcy": "A",
449
+ // "quoteCcy": "USDT",
450
+ // "ctVal": "1",
451
+ // "ctValCcy": "",
452
+ // "listTime": "0",
453
+ // "lever": "1",
454
+ // "tickSz": "0.0001",
455
+ // "lotSz": "0.001",
456
+ // "minSz": "0.5",
457
+ // "ctType": "",
458
+ // "alias": "",
459
+ // "state": "live",
460
+ // "maxLmtSz": "7692307",
461
+ // "maxMktSz": "7692307"
462
+ // }
463
+ //
464
+ // swap markets
465
+ //
466
+ // {
467
+ // "instType": "SWAP",
468
+ // "instId": "ZORA-USDT-SWAP",
469
+ // "uly": "",
470
+ // "baseCcy": "ZORA",
471
+ // "quoteCcy": "USDT",
472
+ // "ctVal": "1",
473
+ // "ctValCcy": "",
474
+ // "listTime": "0",
475
+ // "lever": "20",
476
+ // "tickSz": "0.00001",
477
+ // "lotSz": "1",
478
+ // "minSz": "1685",
479
+ // "ctType": "",
480
+ // "alias": "",
481
+ // "state": "live",
482
+ // "maxLmtSz": "10000000",
483
+ // "maxMktSz": "10000000"
484
+ // }
485
+ //
486
+ const id = this.safeString(market, 'instId');
487
+ const type = this.safeStringLower(market, 'instType');
488
+ const spot = (type === 'spot');
489
+ const swap = (type === 'swap');
490
+ const baseId = this.safeString(market, 'baseCcy');
491
+ const quoteId = this.safeString(market, 'quoteCcy', '');
492
+ let settleId = undefined;
493
+ let settle = undefined;
494
+ const base = this.safeCurrencyCode(baseId);
495
+ const quote = this.safeCurrencyCode(quoteId);
496
+ let symbol = base + '/' + quote;
497
+ let isLinear = undefined;
498
+ if (swap) {
499
+ isLinear = (quoteId !== 'USD');
500
+ settleId = isLinear ? quoteId : baseId;
501
+ settle = this.safeCurrencyCode(settleId);
502
+ symbol = symbol + ':' + settle;
503
+ }
504
+ const fees = this.safeDict2(this.fees, type, 'trading', {});
505
+ let maxLeverage = this.safeString(market, 'lever', '1');
506
+ maxLeverage = Precise.stringMax(maxLeverage, '1');
507
+ const maxMarketSize = this.safeString(market, 'maxMktSz');
508
+ const maxLimitSize = this.safeString(market, 'maxLmtSz');
509
+ const maxAmount = this.parseNumber(Precise.stringMax(maxMarketSize, maxLimitSize));
510
+ const state = this.safeString(market, 'state');
511
+ return this.extend(fees, {
512
+ 'id': id,
513
+ 'symbol': symbol,
514
+ 'base': base,
515
+ 'quote': quote,
516
+ 'settle': settle,
517
+ 'baseId': baseId,
518
+ 'quoteId': quoteId,
519
+ 'settleId': settleId,
520
+ 'type': type,
521
+ 'spot': spot,
522
+ 'margin': spot && (Precise.stringGt(maxLeverage, '1')),
523
+ 'swap': swap,
524
+ 'future': false,
525
+ 'option': false,
526
+ 'active': state === 'live',
527
+ 'contract': swap,
528
+ 'linear': isLinear,
529
+ 'inverse': swap ? (!isLinear) : undefined,
530
+ 'contractSize': swap ? this.safeNumber(market, 'ctVal') : undefined,
531
+ 'expiry': undefined,
532
+ 'expiryDatetime': undefined,
533
+ 'strike': undefined,
534
+ 'optionType': undefined,
535
+ 'created': undefined,
536
+ 'precision': {
537
+ 'amount': this.safeNumber(market, 'lotSz'),
538
+ 'price': this.safeNumber(market, 'tickSz'),
539
+ },
540
+ 'limits': {
541
+ 'leverage': {
542
+ 'min': this.parseNumber('1'),
543
+ 'max': this.parseNumber(maxLeverage),
544
+ },
545
+ 'amount': {
546
+ 'min': this.safeNumber(market, 'minSz'),
547
+ 'max': maxAmount,
548
+ },
549
+ 'price': {
550
+ 'min': undefined,
551
+ 'max': undefined,
552
+ },
553
+ 'cost': {
554
+ 'min': undefined,
555
+ 'max': undefined,
556
+ },
557
+ },
558
+ 'info': market,
559
+ });
560
+ }
561
+ setMarkets(markets, currencies = undefined) {
562
+ markets = super.setMarkets(markets, currencies);
563
+ const symbols = Object.keys(markets);
564
+ for (let i = 0; i < symbols.length; i++) {
565
+ const symbol = symbols[i];
566
+ const market = markets[symbol];
567
+ if (market['swap']) {
568
+ const additionalId = market['baseId'] + market['quoteId'];
569
+ this.markets_by_id[additionalId] = [market]; // some endpoints return swap market id as base+quote
570
+ }
571
+ }
572
+ return this.markets;
573
+ }
574
+ /**
575
+ * @method
576
+ * @name deepcoin#fetchOrderBook
577
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
578
+ * @see https://www.deepcoin.com/docs/DeepCoinMarket/marketBooks
579
+ * @param {string} symbol unified symbol of the market to fetch the order book for
580
+ * @param {int} [limit] the maximum amount of order book entries to return
581
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
582
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
583
+ */
584
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
585
+ await this.loadMarkets();
586
+ const market = this.market(symbol);
587
+ if (limit === undefined) {
588
+ limit = 400;
589
+ }
590
+ const request = {
591
+ 'instId': market['id'],
592
+ 'sz': limit,
593
+ };
594
+ const response = await this.publicGetDeepcoinMarketBooks(this.extend(request, params));
595
+ //
596
+ // {
597
+ // "code": "0",
598
+ // "msg": "",
599
+ // "data": {
600
+ // "bids": [
601
+ // ["3732.21", "99.6"],
602
+ // ["3732.2", "54.7"]
603
+ // ],
604
+ // "asks": [
605
+ // ["3732.22", "85.1"],
606
+ // ["3732.23", "49.4"]
607
+ // ]
608
+ // }
609
+ // }
610
+ //
611
+ const data = this.safeDict(response, 'data', {});
612
+ return this.parseOrderBook(data, symbol, undefined, 'bids', 'asks', 0, 1);
613
+ }
614
+ /**
615
+ * @method
616
+ * @name deepcoin#fetchOHLCV
617
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
618
+ * @see https://www.deepcoin.com/docs/DeepCoinMarket/getKlineData
619
+ * @see https://www.deepcoin.com/docs/DeepCoinMarket/getIndexKlineData
620
+ * @see https://www.deepcoin.com/docs/DeepCoinMarket/getMarkKlineData
621
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
622
+ * @param {string} timeframe the length of time each candle represents
623
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
624
+ * @param {int} [limit] the maximum amount of candles to fetch
625
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
626
+ * @param {int} [params.until] timestamp in ms of the latest candle to fetch
627
+ * @param {string} [params.price] "mark" or "index" for mark price and index price candles
628
+ * @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)
629
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
630
+ */
631
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
632
+ await this.loadMarkets();
633
+ const maxLimit = 300;
634
+ let paginate = false;
635
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'paginate', false);
636
+ if (paginate) {
637
+ params = this.extend(params, { 'calculateUntil': true });
638
+ return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, maxLimit);
639
+ }
640
+ const market = this.market(symbol);
641
+ const price = this.safeString(params, 'price');
642
+ params = this.omit(params, 'price');
643
+ const bar = this.safeString(this.timeframes, timeframe, timeframe);
644
+ const request = {
645
+ 'instId': market['id'],
646
+ 'bar': bar,
647
+ };
648
+ if (limit !== undefined) {
649
+ request['limit'] = limit;
650
+ }
651
+ const until = this.safeInteger(params, 'until');
652
+ if (until !== undefined) {
653
+ request['after'] = until;
654
+ params = this.omit(params, 'until');
655
+ }
656
+ const calculateUntil = this.safeBool(params, 'calculateUntil', false);
657
+ if (calculateUntil) {
658
+ params = this.omit(params, 'calculateUntil');
659
+ if (since !== undefined) {
660
+ // the exchange do not have a since param for this endpoint
661
+ // we canlculate until (after) for correct pagination
662
+ const duration = this.parseTimeframe(timeframe);
663
+ const numberOfCandles = (limit === undefined) ? maxLimit : limit;
664
+ let endTime = since + (duration * numberOfCandles) * 1000;
665
+ if (until !== undefined) {
666
+ endTime = Math.min(endTime, until);
667
+ }
668
+ const now = this.milliseconds();
669
+ request['after'] = Math.min(endTime, now);
670
+ }
671
+ }
672
+ let response = undefined;
673
+ if (price === 'mark') {
674
+ response = await this.publicGetDeepcoinMarketMarkPriceCandles(this.extend(request, params));
675
+ }
676
+ else if (price === 'index') {
677
+ response = await this.publicGetDeepcoinMarketIndexCandles(this.extend(request, params));
678
+ }
679
+ else {
680
+ response = await this.publicGetDeepcoinMarketCandles(this.extend(request, params));
681
+ }
682
+ //
683
+ // {
684
+ // "code": "0",
685
+ // "msg": "",
686
+ // "data":[
687
+ // [
688
+ // "1760221800000",
689
+ // "3739.08",
690
+ // "3741.95",
691
+ // "3737.75",
692
+ // "3740.1",
693
+ // "2849",
694
+ // "1065583.744"
695
+ // ],
696
+ // [
697
+ // "1760221740000",
698
+ // "3742.36",
699
+ // "3743.01",
700
+ // "3736.83",
701
+ // "3739.08",
702
+ // "2723",
703
+ // "1018290.723"
704
+ // ]
705
+ // ]
706
+ // }
707
+ //
708
+ const data = this.safeList(response, 'data', []);
709
+ return this.parseOHLCVs(data, market, timeframe, since, limit);
710
+ }
711
+ /**
712
+ * @method
713
+ * @name deepcoin#fetchTickers
714
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
715
+ * @see https://www.deepcoin.com/docs/DeepCoinMarket/getMarketTickers
716
+ * @param {string[]} [symbols] unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
717
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
718
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
719
+ */
720
+ async fetchTickers(symbols = undefined, params = {}) {
721
+ await this.loadMarkets();
722
+ symbols = this.marketSymbols(symbols);
723
+ const market = this.getMarketFromSymbols(symbols);
724
+ let marketType = undefined;
725
+ [marketType, params] = this.handleMarketTypeAndParams('fetchTickers', market, params);
726
+ const request = {
727
+ 'instType': this.convertToInstrumentType(marketType),
728
+ };
729
+ const response = await this.publicGetDeepcoinMarketTickers(this.extend(request, params));
730
+ const tickers = this.safeList(response, 'data', []);
731
+ return this.parseTickers(tickers, symbols);
732
+ }
733
+ parseTicker(ticker, market = undefined) {
734
+ //
735
+ // {
736
+ // "instType": "SWAP",
737
+ // "instId": "BTC-USD-SWAP",
738
+ // "last": "114113.3",
739
+ // "lastSz": "",
740
+ // "askPx": "114113.5",
741
+ // "askSz": "56280",
742
+ // "bidPx": "114113.2",
743
+ // "bidSz": "63220",
744
+ // "open24h": "113214.7",
745
+ // "high24h": "116039.2",
746
+ // "low24h": "113214.7",
747
+ // "volCcy24h": "73.31475724",
748
+ // "vol24h": "8406739",
749
+ // "sodUtc0": "",
750
+ // "sodUtc8": "",
751
+ // "ts": "1760367816000"
752
+ // }
753
+ //
754
+ const timestamp = this.safeInteger(ticker, 'ts');
755
+ const marketId = this.safeString(ticker, 'instId');
756
+ market = this.safeMarket(marketId, market, '-');
757
+ const symbol = market['symbol'];
758
+ const last = this.safeString(ticker, 'last');
759
+ const open = this.safeString(ticker, 'open24h');
760
+ let quoteVolume = this.safeString(ticker, 'volCcy24h');
761
+ let baseVolume = this.safeString(ticker, 'vol24h');
762
+ if (market['swap'] && market['inverse']) {
763
+ const temp = baseVolume;
764
+ baseVolume = quoteVolume;
765
+ quoteVolume = temp;
766
+ }
767
+ const high = this.safeString(ticker, 'high24h');
768
+ const low = this.safeString(ticker, 'low24h');
769
+ return this.safeTicker({
770
+ 'symbol': symbol,
771
+ 'timestamp': timestamp,
772
+ 'datetime': this.iso8601(timestamp),
773
+ 'high': high,
774
+ 'low': low,
775
+ 'bid': this.safeString(ticker, 'bidPx'),
776
+ 'bidVolume': this.safeString(ticker, 'bidSz'),
777
+ 'ask': this.safeString(ticker, 'askPx'),
778
+ 'askVolume': this.safeString(ticker, 'askSz'),
779
+ 'vwap': undefined,
780
+ 'open': open,
781
+ 'close': last,
782
+ 'last': last,
783
+ 'previousClose': undefined,
784
+ 'change': undefined,
785
+ 'percentage': undefined,
786
+ 'average': undefined,
787
+ 'baseVolume': baseVolume,
788
+ 'quoteVolume': quoteVolume,
789
+ 'markPrice': undefined,
790
+ 'indexPrice': undefined,
791
+ 'info': ticker,
792
+ }, market);
793
+ }
794
+ /**
795
+ * @method
796
+ * @name deepcoin#fetchTrades
797
+ * @description get the list of most recent trades for a particular symbol
798
+ * @see https://www.deepcoin.com/docs/DeepCoinMarket/getTrades
799
+ * @param {string} symbol unified symbol of the market to fetch trades for
800
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
801
+ * @param {int} [limit] the maximum amount of trades to fetch (default 100, max 500)
802
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
803
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
804
+ */
805
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
806
+ await this.loadMarkets();
807
+ const market = this.market(symbol);
808
+ const request = {
809
+ 'instId': market['id'],
810
+ };
811
+ if (limit !== undefined) {
812
+ request['limit'] = limit; // default 100, max 500
813
+ }
814
+ const productGroup = this.getProductGroupFromMarket(market);
815
+ request['productGroup'] = productGroup;
816
+ const response = await this.publicGetDeepcoinMarketTrades(this.extend(request, params));
817
+ const data = this.safeList(response, 'data', []);
818
+ return this.parseTrades(data, market, since, limit);
819
+ }
820
+ getProductGroupFromMarket(market) {
821
+ let productGroup = 'Spot';
822
+ if (market['swap']) {
823
+ if (market['linear']) {
824
+ productGroup = 'SwapU';
825
+ }
826
+ else {
827
+ productGroup = 'Swap';
828
+ }
829
+ }
830
+ return productGroup;
831
+ }
832
+ parseTrade(trade, market = undefined) {
833
+ //
834
+ // public fetchTrades
835
+ //
836
+ // {
837
+ // "instId": "ETH-USDT",
838
+ // "tradeId": "1001056388761321",
839
+ // "px": "4095.66",
840
+ // "sz": "0.01311251",
841
+ // "side": "sell",
842
+ // "ts": "1760367870000"
843
+ // }
844
+ //
845
+ // private fetchMyTrades
846
+ // {
847
+ // "instType": "SPOT",
848
+ // "instId": "ETH-USDT",
849
+ // "tradeId": "1001056429613610",
850
+ // "ordId": "1001435238208686",
851
+ // "clOrdId": "",
852
+ // "billId": "10010564296136101",
853
+ // "tag": "",
854
+ // "fillPx": "3791.15",
855
+ // "fillSz": "0.004",
856
+ // "side": "sell",
857
+ // "posSide": "",
858
+ // "execType": "",
859
+ // "feeCcy": "USDT",
860
+ // "fee": "0.0151646",
861
+ // "ts": "1760704540000"
862
+ // }
863
+ //
864
+ const marketId = this.safeString(trade, 'instId');
865
+ market = this.safeMarket(marketId, market);
866
+ const timestamp = this.safeInteger(trade, 'ts');
867
+ const side = this.safeString(trade, 'side');
868
+ const execType = this.safeString(trade, 'execType');
869
+ let fee = undefined;
870
+ const feeCost = this.safeString(trade, 'fee');
871
+ if (feeCost !== undefined) {
872
+ const feeCurrencyId = this.safeString(trade, 'feeCcy');
873
+ const feeCurrencyCode = this.safeCurrencyCode(feeCurrencyId);
874
+ fee = {
875
+ 'cost': feeCost,
876
+ 'currency': feeCurrencyCode,
877
+ };
878
+ }
879
+ return this.safeTrade({
880
+ 'info': trade,
881
+ 'timestamp': timestamp,
882
+ 'datetime': this.iso8601(timestamp),
883
+ 'symbol': market['symbol'],
884
+ 'id': this.safeString(trade, 'tradeId'),
885
+ 'order': this.safeString(trade, 'ordId'),
886
+ 'type': undefined,
887
+ 'takerOrMaker': this.parseTakerOrMaker(execType),
888
+ 'side': side,
889
+ 'price': this.safeString2(trade, 'fillPx', 'px'),
890
+ 'amount': this.safeString2(trade, 'fillSz', 'sz'),
891
+ 'cost': undefined,
892
+ 'fee': fee,
893
+ }, market);
894
+ }
895
+ parseTakerOrMaker(execType) {
896
+ const types = {
897
+ 'T': 'taker',
898
+ 'M': 'maker',
899
+ };
900
+ return this.safeString(types, execType, execType);
901
+ }
902
+ /**
903
+ * @method
904
+ * @name deepcoin#fetchBalance
905
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
906
+ * @see https://www.deepcoin.com/docs/DeepCoinAccount/getAccountBalance
907
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
908
+ * @param {string} [params.type] "spot" or "swap", the market type for the balance
909
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
910
+ */
911
+ async fetchBalance(params = {}) {
912
+ await this.loadMarkets();
913
+ let marketType = 'spot';
914
+ [marketType, params] = this.handleMarketTypeAndParams('fetchBalance', undefined, params, marketType);
915
+ const request = {
916
+ 'instType': this.convertToInstrumentType(marketType),
917
+ };
918
+ const response = await this.privateGetDeepcoinAccountBalances(this.extend(request, params));
919
+ return this.parseBalance(response);
920
+ }
921
+ parseBalance(response) {
922
+ //
923
+ // {
924
+ // "code": "0",
925
+ // "msg": "",
926
+ // "data": [
927
+ // {
928
+ // "ccy": "USDT",
929
+ // "bal": "74",
930
+ // "frozenBal": "0",
931
+ // "availBal": "74"
932
+ // }
933
+ // ]
934
+ // }
935
+ //
936
+ const result = {
937
+ 'info': response,
938
+ 'timestamp': undefined,
939
+ 'datetime': undefined,
940
+ };
941
+ const balances = this.safeList(response, 'data', []);
942
+ for (let i = 0; i < balances.length; i++) {
943
+ const balance = balances[i];
944
+ const symbol = this.safeString(balance, 'ccy');
945
+ const code = this.safeCurrencyCode(symbol);
946
+ const account = this.account();
947
+ account['total'] = this.safeString(balance, 'bal');
948
+ account['used'] = this.safeString(balance, 'frozenBal');
949
+ account['free'] = this.safeString(balance, 'availBal');
950
+ result[code] = account;
951
+ }
952
+ return this.safeBalance(result);
953
+ }
954
+ /**
955
+ * @method
956
+ * @name deepcoin#fetchDeposits
957
+ * @description fetch all deposits made to an account
958
+ * @see https://www.deepcoin.com/docs/assets/deposit
959
+ * @param {string} code unified currency code
960
+ * @param {int} [since] the earliest time in ms to fetch deposits for
961
+ * @param {int} [limit] the maximum number of deposits structures to retrieve
962
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
963
+ * @param {int} [params.until] the latest time in ms to fetch entries for
964
+ * @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)
965
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
966
+ */
967
+ async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
968
+ await this.loadMarkets();
969
+ let paginate = false;
970
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchDeposits', 'paginate', false);
971
+ if (paginate) {
972
+ return await this.fetchPaginatedCallCursor('fetchDeposits', code, since, limit, params, 'code', undefined, 1, 50);
973
+ }
974
+ const request = {};
975
+ let currency = undefined;
976
+ if (code !== undefined) {
977
+ currency = this.currency(code);
978
+ request['coin'] = currency['id'];
979
+ }
980
+ if (since !== undefined) {
981
+ request['startTime'] = since;
982
+ }
983
+ if (limit !== undefined) {
984
+ request['size'] = limit;
985
+ }
986
+ const until = this.safeInteger(params, 'until');
987
+ if (until !== undefined) {
988
+ request['endTime'] = until;
989
+ params = this.omit(params, 'until');
990
+ }
991
+ const response = await this.privateGetDeepcoinAssetDepositList(this.extend(request, params));
992
+ const data = this.safeDict(response, 'data', {});
993
+ const items = this.safeList(data, 'data', []);
994
+ const transactionParams = {
995
+ 'type': 'deposit',
996
+ };
997
+ return this.parseTransactions(items, currency, since, limit, transactionParams);
998
+ }
999
+ /**
1000
+ * @method
1001
+ * @name deepcoin#fetchWithdrawals
1002
+ * @description fetch all withdrawals made from an account
1003
+ * @see https://www.deepcoin.com/docs/assets/withdraw
1004
+ * @param {string} code unified currency code of the currency transferred
1005
+ * @param {int} [since] the earliest time in ms to fetch transfers for (default 24 hours ago)
1006
+ * @param {int} [limit] the maximum number of transfer structures to retrieve (default 50, max 200)
1007
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1008
+ * @param {int} [params.until] the latest time in ms to fetch transfers for (default time now)
1009
+ * @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)
1010
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1011
+ */
1012
+ async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1013
+ await this.loadMarkets();
1014
+ let paginate = false;
1015
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchDeposits', 'paginate', false);
1016
+ if (paginate) {
1017
+ return await this.fetchPaginatedCallCursor('fetchDeposits', code, since, limit, params, 'code', undefined, 1, 50);
1018
+ }
1019
+ const request = {};
1020
+ let currency = undefined;
1021
+ if (code !== undefined) {
1022
+ currency = this.currency(code);
1023
+ request['coin'] = currency['id'];
1024
+ }
1025
+ if (since !== undefined) {
1026
+ request['startTime'] = since;
1027
+ }
1028
+ if (limit !== undefined) {
1029
+ request['size'] = limit;
1030
+ }
1031
+ const until = this.safeInteger(params, 'until');
1032
+ if (until !== undefined) {
1033
+ request['endTime'] = until;
1034
+ params = this.omit(params, 'until');
1035
+ }
1036
+ const response = await this.privateGetDeepcoinAssetWithdrawList(this.extend(request, params));
1037
+ const data = this.safeDict(response, 'data', {});
1038
+ const items = this.safeList(data, 'data', []);
1039
+ const transactionParams = {
1040
+ 'type': 'withdrawal',
1041
+ };
1042
+ return this.parseTransactions(items, currency, since, limit, transactionParams);
1043
+ }
1044
+ parseTransaction(transaction, currency = undefined) {
1045
+ //
1046
+ // fetchDeposits
1047
+ // {
1048
+ // "createTime": 1760368656,
1049
+ // "txHash": "03fe3244d89e794586222413c61779380da9e9fe5baaa253c38d01a4199a3499",
1050
+ // "chainName": "TRC20",
1051
+ // "amount": "149",
1052
+ // "coin": "USDT",
1053
+ // "status": "succeed"
1054
+ // }
1055
+ //
1056
+ const txid = this.safeString(transaction, 'txHash');
1057
+ const currencyId = this.safeString(transaction, 'coin');
1058
+ const code = this.safeCurrencyCode(currencyId, currency);
1059
+ const amount = this.safeNumber(transaction, 'amount');
1060
+ const timestamp = this.safeTimestamp(transaction, 'createTime');
1061
+ const networkId = this.safeString(transaction, 'chainName');
1062
+ const network = this.networkIdToCode(networkId);
1063
+ const status = this.parseTransactionStatus(this.safeString(transaction, 'status'));
1064
+ return {
1065
+ 'info': transaction,
1066
+ 'id': undefined,
1067
+ 'currency': code,
1068
+ 'amount': amount,
1069
+ 'network': network,
1070
+ 'addressFrom': undefined,
1071
+ 'addressTo': undefined,
1072
+ 'address': this.safeString(transaction, 'address'),
1073
+ 'tagFrom': undefined,
1074
+ 'tagTo': undefined,
1075
+ 'tag': undefined,
1076
+ 'status': status,
1077
+ 'type': undefined,
1078
+ 'updated': undefined,
1079
+ 'txid': txid,
1080
+ 'timestamp': timestamp,
1081
+ 'datetime': this.iso8601(timestamp),
1082
+ 'internal': undefined,
1083
+ 'comment': undefined,
1084
+ 'fee': {
1085
+ 'currency': undefined,
1086
+ 'cost': undefined,
1087
+ },
1088
+ };
1089
+ }
1090
+ parseTransactionStatus(status) {
1091
+ const statuses = {
1092
+ 'confirming': 'pending',
1093
+ 'succeed': 'ok',
1094
+ };
1095
+ return this.safeString(statuses, status, status);
1096
+ }
1097
+ /**
1098
+ * @method
1099
+ * @name deepcoin#fetchDepositAddresses
1100
+ * @description fetch deposit addresses for multiple currencies and chain types
1101
+ * @see https://www.deepcoin.com/docs/assets/chainlist
1102
+ * @param {string[]|undefined} codes list of unified currency codes, default is undefined
1103
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1104
+ * @returns {object} a list of [address structures]{@link https://docs.ccxt.com/#/?id=address-structure}
1105
+ */
1106
+ async fetchDepositAddresses(codes = undefined, params = {}) {
1107
+ await this.loadMarkets();
1108
+ if (codes === undefined) {
1109
+ throw new ArgumentsRequired(this.id + ' fetchDepositAddresses requires a list with one currency code');
1110
+ }
1111
+ const length = codes.length;
1112
+ if (length !== 1) {
1113
+ throw new NotSupported(this.id + ' fetchDepositAddresses requires a list with one currency code');
1114
+ }
1115
+ const code = codes[0];
1116
+ const currency = this.currency(code);
1117
+ const request = {
1118
+ 'currency_id': currency['id'],
1119
+ 'lang': 'en',
1120
+ };
1121
+ const response = await this.privateGetDeepcoinAssetRechargeChainList(this.extend(request, params));
1122
+ //
1123
+ // {
1124
+ // "code": "0",
1125
+ // "msg": "",
1126
+ // "data": {
1127
+ // "list": [
1128
+ // {
1129
+ // "chain": "TRC20",
1130
+ // "state": 1,
1131
+ // "remind": "Only support deposits and withdrawals via TRC20 network. If you send it via other address by mistake, it will not be credited and will result in the permanent loss of your deposit.",
1132
+ // "inNotice": "",
1133
+ // "actLogo": "",
1134
+ // "address": "TNJYDW9Bk87VwfA6s7FtxURLEMHesQbYgF",
1135
+ // "hasMemo": false,
1136
+ // "memo": "",
1137
+ // "estimatedTime": 1,
1138
+ // "fastConfig": {
1139
+ // "fastLimitNum": 0,
1140
+ // "fastBlock": 10,
1141
+ // "realBlock": 1
1142
+ // }
1143
+ // }
1144
+ // ]
1145
+ // }
1146
+ // }
1147
+ //
1148
+ const data = this.safeDict(response, 'data', {});
1149
+ const list = this.safeList(data, 'list', []);
1150
+ const additionalParams = {
1151
+ 'currency': code,
1152
+ };
1153
+ return this.parseDepositAddresses(list, codes, false, additionalParams);
1154
+ }
1155
+ /**
1156
+ * @method
1157
+ * @name deepcoin#fetchDepositAddress
1158
+ * @description fetch the deposit address for a currency associated with this account
1159
+ * @see https://www.deepcoin.com/docs/assets/chainlist
1160
+ * @param {string} code unified currency code
1161
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1162
+ * @param {string} [params.network] unified network code for deposit chain
1163
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
1164
+ */
1165
+ async fetchDepositAddress(code, params = {}) {
1166
+ await this.loadMarkets();
1167
+ let network = this.safeString(params, 'network');
1168
+ const defaultNetworks = this.safeDict(this.options, 'defaultNetworks', {});
1169
+ const defaultNetwork = this.safeString(defaultNetworks, code);
1170
+ network = network ? network : defaultNetwork;
1171
+ if (network !== undefined) {
1172
+ params = this.omit(params, 'network');
1173
+ }
1174
+ const addressess = await this.fetchDepositAddresses([code], params);
1175
+ const length = addressess.length;
1176
+ let address = this.safeDict(addressess, 0, {});
1177
+ if ((network !== undefined) && (length > 1)) {
1178
+ for (let i = 0; i < length; i++) {
1179
+ const entry = addressess[i];
1180
+ if (entry['network'] === network) {
1181
+ address = entry;
1182
+ }
1183
+ }
1184
+ }
1185
+ return address;
1186
+ }
1187
+ parseDepositAddress(response, currency = undefined) {
1188
+ //
1189
+ // {
1190
+ // "chain": "TRC20",
1191
+ // "state": 1,
1192
+ // "remind": "Only support deposits and withdrawals via TRC20 network. If you send it via other address by mistake, it will not be credited and will result in the permanent loss of your deposit.",
1193
+ // "inNotice": "",
1194
+ // "actLogo": "",
1195
+ // "address": "TNJYDW9Bk87VwfA6s7FtxURLEMHesQbYgF",
1196
+ // "hasMemo": false,
1197
+ // "memo": "",
1198
+ // "estimatedTime": 1,
1199
+ // "fastConfig": {
1200
+ // "fastLimitNum": 0,
1201
+ // "fastBlock": 10,
1202
+ // "realBlock": 1
1203
+ // }
1204
+ // }
1205
+ //
1206
+ const chain = this.safeString(response, 'chain');
1207
+ const address = this.safeString(response, 'address');
1208
+ this.checkAddress(address);
1209
+ return {
1210
+ 'info': response,
1211
+ 'currency': undefined,
1212
+ 'network': this.networkIdToCode(chain),
1213
+ 'address': address,
1214
+ 'tag': this.safeString(response, 'memo'),
1215
+ };
1216
+ }
1217
+ /**
1218
+ * @method
1219
+ * @name deepcoin#fetchLedger
1220
+ * @description fetch the history of changes, actions done by the user or operations that altered the balance of the user
1221
+ * @see https://www.deepcoin.com/docs/DeepCoinAccount/getAccountBills
1222
+ * @param {string} [code] unified currency code
1223
+ * @param {int} [since] timestamp in ms of the earliest ledger entry
1224
+ * @param {int} [limit] max number of ledger entries to return
1225
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1226
+ * @param {int} [params.until] timestamp in ms of the latest ledger entry
1227
+ * @param {string} [params.type] 'spot' or 'swap', the market type for the ledger (default 'spot')
1228
+ * @returns {object[]} a list of [ledger structures]{@link https://docs.ccxt.com/#/?id=ledger}
1229
+ */
1230
+ async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
1231
+ await this.loadMarkets();
1232
+ let marketType = 'spot';
1233
+ [marketType, params] = this.handleMarketTypeAndParams('fetchLedger', undefined, params, marketType);
1234
+ const request = {
1235
+ 'instType': this.convertToInstrumentType(marketType),
1236
+ };
1237
+ let currency = undefined;
1238
+ if (code !== undefined) {
1239
+ currency = this.currency(code);
1240
+ request['ccy'] = currency['id'];
1241
+ }
1242
+ if (since !== undefined) {
1243
+ request['after'] = since;
1244
+ }
1245
+ if (limit !== undefined) {
1246
+ request['limit'] = limit;
1247
+ }
1248
+ const until = this.safeInteger(params, 'until');
1249
+ if (until !== undefined) {
1250
+ request['before'] = until;
1251
+ params = this.omit(params, 'until');
1252
+ }
1253
+ const response = await this.privateGetDeepcoinAccountBills(this.extend(request, params));
1254
+ //
1255
+ // {
1256
+ // "code": "0",
1257
+ // "msg": "",
1258
+ // "data": [
1259
+ // {
1260
+ // "billId": "1001044652247714",
1261
+ // "ccy": "USDT",
1262
+ // "clientId": "",
1263
+ // "balChg": "-0.03543537",
1264
+ // "bal": "72.41881427",
1265
+ // "type": "5",
1266
+ // "ts": "1761047448000"
1267
+ // },
1268
+ // {
1269
+ // "billId": "1001044652258368",
1270
+ // "ccy": "DOGE",
1271
+ // "clientId": "",
1272
+ // "balChg": "76",
1273
+ // "bal": "76",
1274
+ // "type": "2",
1275
+ // "ts": "1761051006000"
1276
+ // }
1277
+ // ]
1278
+ // }
1279
+ //
1280
+ const data = this.safeList(response, 'data', []);
1281
+ return this.parseLedger(data, currency, since, limit);
1282
+ }
1283
+ parseLedgerEntry(item, currency = undefined) {
1284
+ //
1285
+ // {
1286
+ // "billId": "1001044652247714",
1287
+ // "ccy": "USDT",
1288
+ // "clientId": "",
1289
+ // "balChg": "-0.03543537",
1290
+ // "bal": "72.41881427",
1291
+ // "type": "5",
1292
+ // "ts": "1761047448000"
1293
+ // }
1294
+ //
1295
+ const timestamp = this.safeInteger(item, 'ts');
1296
+ const change = this.safeString(item, 'balChg');
1297
+ const amount = Precise.stringAbs(change);
1298
+ const direction = Precise.stringLt(change, '0') ? 'out' : 'in';
1299
+ const currencyId = this.safeString(item, 'ccy');
1300
+ currency = this.safeCurrency(currencyId, currency);
1301
+ const type = this.safeString(item, 'type');
1302
+ return this.safeLedgerEntry({
1303
+ 'info': item,
1304
+ 'id': this.safeString(item, 'billId'),
1305
+ 'direction': direction,
1306
+ 'account': undefined,
1307
+ 'referenceAccount': undefined,
1308
+ 'referenceId': undefined,
1309
+ 'type': this.parseLedgerEntryType(type),
1310
+ 'currency': currency['code'],
1311
+ 'amount': amount,
1312
+ 'timestamp': timestamp,
1313
+ 'datetime': this.iso8601(timestamp),
1314
+ 'before': undefined,
1315
+ 'after': this.safeString(item, 'bal'),
1316
+ 'status': undefined,
1317
+ 'fee': undefined,
1318
+ }, currency);
1319
+ }
1320
+ parseLedgerEntryType(type) {
1321
+ const ledgerType = {
1322
+ '1': 'trade',
1323
+ '2': 'trade',
1324
+ '3': 'transfer',
1325
+ '4': 'transfer',
1326
+ '5': 'fee',
1327
+ };
1328
+ return this.safeString(ledgerType, type, type);
1329
+ }
1330
+ /**
1331
+ * @method
1332
+ * @name deepcoin#transfer
1333
+ * @description transfer currency internally between wallets on the same account
1334
+ * @see https://www.deepcoin.com/docs/assets/transfer
1335
+ * @param {string} code unified currency code
1336
+ * @param {float} amount amount to transfer
1337
+ * @param {string} fromAccount account to transfer from ('spot', 'inverse', 'linear', 'fund', 'rebate' or 'demo')
1338
+ * @param {string} toAccount account to transfer to ('spot', 'inverse', 'linear', 'fund', 'rebate' or 'demo')
1339
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1340
+ * @param {string} [params.userId] user id
1341
+ * @returns {object} a [transfer structure]{@link https://docs.ccxt.com/#/?id=transfer-structure}
1342
+ */
1343
+ async transfer(code, amount, fromAccount, toAccount, params = {}) {
1344
+ let userId = undefined;
1345
+ [userId, params] = this.handleOptionAndParams(params, 'transfer', 'userId');
1346
+ userId = userId ? userId : this.safeString(params, 'uid');
1347
+ if (userId === undefined) {
1348
+ throw new ArgumentsRequired(this.id + ' transfer() requires a userId parameter');
1349
+ }
1350
+ await this.loadMarkets();
1351
+ const currency = this.currency(code);
1352
+ const accountsByType = this.safeDict(this.options, 'accountsByType', {});
1353
+ const fromId = this.safeString(accountsByType, fromAccount, fromAccount);
1354
+ const toId = this.safeString(accountsByType, toAccount, toAccount);
1355
+ const request = {
1356
+ 'currency_id': currency['id'],
1357
+ 'amount': this.currencyToPrecision(code, amount),
1358
+ 'from_id': fromId,
1359
+ 'to_id': toId,
1360
+ 'uid': userId,
1361
+ };
1362
+ const response = await this.privatePostDeepcoinAssetTransfer(this.extend(request, params));
1363
+ //
1364
+ // {
1365
+ // "code": "0",
1366
+ // "msg": "",
1367
+ // "data": {
1368
+ // "retCode": 0,
1369
+ // "retMsg": "",
1370
+ // "retData": {}
1371
+ // }
1372
+ // }
1373
+ //
1374
+ const data = this.safeDict(response, 'data', {});
1375
+ const transfer = this.parseTransfer(data, currency);
1376
+ const transferOptions = this.safeDict(this.options, 'transfer', {});
1377
+ const fillResponseFromRequest = this.safeBool(transferOptions, 'fillResponseFromRequest', true);
1378
+ if (fillResponseFromRequest) {
1379
+ transfer['fromAccount'] = fromAccount;
1380
+ transfer['toAccount'] = toAccount;
1381
+ transfer['amount'] = amount;
1382
+ }
1383
+ return transfer;
1384
+ }
1385
+ parseTransfer(transfer, currency = undefined) {
1386
+ //
1387
+ // {
1388
+ // "retCode": 0,
1389
+ // "retMsg": "",
1390
+ // "retData": {}
1391
+ // }
1392
+ //
1393
+ const status = this.safeString(transfer, 'retCode');
1394
+ const currencyCode = this.safeCurrencyCode(undefined, currency);
1395
+ return {
1396
+ 'info': transfer,
1397
+ 'id': undefined,
1398
+ 'timestamp': undefined,
1399
+ 'datetime': undefined,
1400
+ 'currency': currencyCode,
1401
+ 'amount': undefined,
1402
+ 'fromAccount': undefined,
1403
+ 'toAccount': undefined,
1404
+ 'status': this.parseTransferStatus(status),
1405
+ };
1406
+ }
1407
+ parseTransferStatus(status) {
1408
+ if (status === '0') {
1409
+ return 'ok';
1410
+ }
1411
+ return 'failed';
1412
+ }
1413
+ /**
1414
+ * @method
1415
+ * @name deepcoin#createOrder
1416
+ * @description create a trade order
1417
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/order
1418
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/triggerOrder
1419
+ * @param {string} symbol unified symbol of the market to create an order in
1420
+ * @param {string} type 'market' or 'limit'
1421
+ * @param {string} side 'buy' or 'sell'
1422
+ * @param {float} amount how much of currency you want to trade in units of base currency
1423
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1424
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1425
+ * @param {string} [params.clientOrderId] a unique id for the order
1426
+ * @param {string} [params.timeInForce] *non trigger orders only* 'GTC' (Good Till Cancel), 'IOC' (Immediate Or Cancel) or 'PO' (Post Only)
1427
+ * @param {bool} [params.postOnly] *non trigger orders only* true to place a post only order
1428
+ * @param {bool} [params.reduceOnly] *non trigger orders only* a mark to reduce the position size for margin, swap and future orders
1429
+ * @param {float} [params.triggerPrice] the price a trigger order is triggered at
1430
+ * @param {float} [params.stopLoss.triggerPrice] the price that a stop loss order is triggered at
1431
+ * @param {float} [params.takeProfit.triggerPrice] the price that a take profit order is triggered at
1432
+ * @param {string} [params.positionSide] if position mode is one-way: set to 'net', if position mode is hedge-mode: set to 'long' or 'short'
1433
+ * @param {bool} [params.hedged] *swap only* true for hedged mode, false for one way mode
1434
+ * @param {string} [params.marginMode] *swap only*'cross' or 'isolated', the default is 'cash' for spot and 'cross' for swap
1435
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1436
+ */
1437
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1438
+ await this.loadMarkets();
1439
+ const market = this.market(symbol);
1440
+ const triggerPrice = this.safeString(params, 'triggerPrice');
1441
+ const request = this.createOrderRequest(symbol, type, side, amount, price, params);
1442
+ let response = undefined;
1443
+ if (triggerPrice !== undefined) {
1444
+ // trigger orders
1445
+ response = await this.privatePostDeepcoinTradeTriggerOrder(request);
1446
+ }
1447
+ else {
1448
+ // regular orders
1449
+ //
1450
+ // {
1451
+ // "code": "0",
1452
+ // "msg": "",
1453
+ // "data": {
1454
+ // "ordId": "1001434570213727",
1455
+ // "clOrdId": "",
1456
+ // "tag": "",
1457
+ // "sCode": "0",
1458
+ // "sMsg": ""
1459
+ // }
1460
+ // }
1461
+ //
1462
+ response = await this.privatePostDeepcoinTradeOrder(request);
1463
+ }
1464
+ const data = this.safeDict(response, 'data', {});
1465
+ return this.parseOrder(data, market);
1466
+ }
1467
+ createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
1468
+ /**
1469
+ * @method
1470
+ * @ignore
1471
+ * @name deepcoin#createOrderRequest
1472
+ * @description helper function to build request
1473
+ */
1474
+ const market = this.market(symbol);
1475
+ const triggerPrice = this.safeString(params, 'triggerPrice');
1476
+ // const isTriggerOrder = (triggerPrice !== undefined) || this.safeString2 (params, 'stopLossPrice', 'takeProfitPrice') !== undefined;
1477
+ const isTriggerOrder = (triggerPrice !== undefined);
1478
+ const cost = this.safeString(params, 'cost');
1479
+ if (cost !== undefined) {
1480
+ if (!market['spot'] || (triggerPrice !== undefined)) {
1481
+ throw new BadRequest(this.id + ' createOrder() accepts a cost parameter for spot non-trigger market orders only');
1482
+ }
1483
+ }
1484
+ if (isTriggerOrder) {
1485
+ return this.createTriggerOrderRequest(symbol, type, side, amount, price, params);
1486
+ }
1487
+ else {
1488
+ return this.createRegularOrderRequest(symbol, type, side, amount, price, params);
1489
+ }
1490
+ }
1491
+ createRegularOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
1492
+ /**
1493
+ * @method
1494
+ * @ignore
1495
+ * @name deepcoin#createRegularOrderRequest
1496
+ * @description helper function to build request
1497
+ * @param {string} symbol unified symbol of the market to create an order in
1498
+ * @param {string} type 'market' or 'limit'
1499
+ * @param {string} side 'buy' or 'sell'
1500
+ * @param {float} amount how much you want to trade in units of the base currency
1501
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1502
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1503
+ * @param {float} [params.cost] *spot only* the cost of the order in units of the quote currency, for market orders only
1504
+ * @param {string} [params.clientOrderId] a unique id for the order
1505
+ * @param {string} [params.timeInForce] 'GTC' (Good Till Cancel), 'IOC' (Immediate Or Cancel) or 'PO' (Post Only)
1506
+ * @param {bool} [params.postOnly] true to place a post only order
1507
+ * @param {bool} [params.reduceOnly] a mark to reduce the position size for margin and swap orders
1508
+ * @param {float} [params.stopLossPrice] the price that a stop loss order is triggered at
1509
+ * @param {float} [params.takeProfitPrice] the price that a take profit order is triggered at
1510
+ * @param {string} [params.marginMode] *swap only* 'cross' or 'isolated', the default is 'cash' for spot and 'cross' for swap
1511
+ * @param {string} [params.mrgPosition] *swap only* 'merge' or 'split', the default is 'merge'
1512
+ */
1513
+ const market = this.market(symbol);
1514
+ let orderType = type;
1515
+ [orderType, params] = this.handleTypePostOnlyAndTimeInForce(type, params);
1516
+ const request = {
1517
+ 'instId': market['id'],
1518
+ // 'tdMode': 'cash', // 'cash' for spot, 'cross' or 'isolated' for swap
1519
+ // 'ccy': currency['id'], // only applicable to cross MARGIN orders in single-currency margin
1520
+ // 'clOrdId': clientOrderId,
1521
+ 'side': side,
1522
+ 'ordType': orderType,
1523
+ // 'sz': amount or cost
1524
+ // 'px': price, // limit orders only
1525
+ // 'reduceOnly': false, // a mark to reduce the position size for margin and swap orders
1526
+ // 'tgtCcy': 'base_ccy', // spot only 'base_ccy' or 'quote_ccy', the default is 'base_ccy' for spot orders
1527
+ // 'tpTriggerPx': takeProfitPrice, // take profit trigger price
1528
+ // 'slTriggerPx': stopLossPrice, // stop loss trigger price
1529
+ // 'posSide': 'long', // swap only 'long' or 'short'
1530
+ // 'mrgPosition': 'merge', // swap only 'merge' or 'split'
1531
+ // 'closePosId': 'id', // swap only position ID to close, required in split mode
1532
+ };
1533
+ const clientOrderId = this.safeString(params, 'clientOrderId');
1534
+ if (clientOrderId !== undefined) {
1535
+ request['clOrdId'] = clientOrderId;
1536
+ params = this.omit(params, 'clientOrderId');
1537
+ }
1538
+ const stopLoss = this.safeDict(params, 'stopLoss', {});
1539
+ const stopLossPrice = this.safeString(stopLoss, 'triggerPrice');
1540
+ if (stopLossPrice !== undefined) {
1541
+ params = this.omit(params, ['stopLoss']);
1542
+ request['slTriggerPx'] = this.priceToPrecision(symbol, stopLossPrice);
1543
+ }
1544
+ const takeProfit = this.safeDict(params, 'takeProfit', {});
1545
+ const takeProfitPrice = this.safeString(takeProfit, 'triggerPrice');
1546
+ if (takeProfitPrice !== undefined) {
1547
+ params = this.omit(params, ['takeProfit']);
1548
+ request['tpTriggerPx'] = this.priceToPrecision(symbol, takeProfitPrice);
1549
+ }
1550
+ const isMarketOrder = (type === 'market');
1551
+ if (price !== undefined) {
1552
+ if (isMarketOrder) {
1553
+ throw new BadRequest(this.id + ' createOrder() does not require a price argument for market orders');
1554
+ }
1555
+ request['px'] = this.priceToPrecision(symbol, price);
1556
+ }
1557
+ else if (!isMarketOrder) {
1558
+ throw new BadRequest(this.id + ' createOrder() requires a price argument for limit orders');
1559
+ }
1560
+ if (market['spot']) {
1561
+ const cost = this.safeString(params, 'cost');
1562
+ if (cost !== undefined) {
1563
+ if (!isMarketOrder) {
1564
+ throw new BadRequest(this.id + ' createOrder() accepts a cost parameter for spot market orders only');
1565
+ }
1566
+ params = this.omit(params, 'cost');
1567
+ request['sz'] = this.costToPrecision(symbol, cost);
1568
+ request['tgtCcy'] = 'quote_ccy';
1569
+ }
1570
+ else {
1571
+ request['sz'] = this.amountToPrecision(symbol, amount);
1572
+ request['tgtCcy'] = 'base_ccy';
1573
+ }
1574
+ request['side'] = side;
1575
+ request['tdMode'] = 'cash';
1576
+ }
1577
+ else {
1578
+ request['sz'] = this.amountToPrecision(symbol, amount);
1579
+ let marginMode = 'cross';
1580
+ [marginMode, params] = this.handleMarginModeAndParams('createOrder', params, marginMode);
1581
+ request['tdMode'] = marginMode;
1582
+ let mrgPosition = 'merge';
1583
+ [mrgPosition, params] = this.handleOptionAndParams(params, 'createOrder', 'mrgPosition', mrgPosition);
1584
+ request['mrgPosition'] = mrgPosition;
1585
+ let posSide = undefined;
1586
+ const reduceOnly = this.safeBool(params, 'reduceOnly', false);
1587
+ if (reduceOnly) {
1588
+ if (side === 'buy') {
1589
+ posSide = 'short';
1590
+ }
1591
+ else if (side === 'sell') {
1592
+ posSide = 'long';
1593
+ }
1594
+ }
1595
+ else {
1596
+ if (side === 'buy') {
1597
+ posSide = 'long';
1598
+ }
1599
+ else if (side === 'sell') {
1600
+ posSide = 'short';
1601
+ }
1602
+ }
1603
+ request['posSide'] = posSide;
1604
+ }
1605
+ return this.extend(request, params);
1606
+ }
1607
+ createTriggerOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
1608
+ /**
1609
+ * @method
1610
+ * @ignore
1611
+ * @name deepcoin#createTriggerOrderRequest
1612
+ * @description helper function to build request
1613
+ * @param {string} symbol unified symbol of the market to create an order in
1614
+ * @param {string} type 'market' or 'limit'
1615
+ * @param {string} side 'buy' or 'sell'
1616
+ * @param {float} amount how much you want to trade in units of the base currency
1617
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1618
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1619
+ * @param {bool} [params.reduceOnly] a mark to reduce the position size for margin orders
1620
+ * @param {string} [params.marginMode] *swap only* 'cross' or 'isolated', the default is 'cash' for spot and 'cross' for swap
1621
+ */
1622
+ const market = this.market(symbol);
1623
+ const request = {
1624
+ 'instId': market['id'],
1625
+ 'productGroup': this.capitalize(market['type']),
1626
+ 'sz': this.amountToPrecision(symbol, amount),
1627
+ 'side': side,
1628
+ // 'posSide': 'long', // 'long' or 'short' - required when product type is SWAP
1629
+ // 'price': price,
1630
+ // 'isCrossMargin': 1, // 1 for cross margin, 0 for isolated margin
1631
+ 'orderType': type,
1632
+ // 'triggerPrice': triggerPrice,
1633
+ // 'mrgPosition': 'merge', // 'merge' or 'split', the default is 'merge' - required when product type is SWAP
1634
+ // 'tdMode': 'cash', // 'cash' for spot, 'cross' or 'isolated' for swap
1635
+ };
1636
+ const triggerPrice = this.safeString(params, 'triggerPrice');
1637
+ // const takeProfitPrice = this.safeString (params, 'takeProfitPrice');
1638
+ // const stopLossPrice = this.safeString (params, 'stopLossPrice');
1639
+ // const isTpOrSlOrder = (takeProfitPrice !== undefined) || (stopLossPrice !== undefined);
1640
+ // if (isTpOrSlOrder) {
1641
+ // if (takeProfitPrice !== undefined) {
1642
+ // request['triggerPrice'] = this.priceToPrecision (symbol, takeProfitPrice);
1643
+ // } else {
1644
+ // request['triggerPrice'] = this.priceToPrecision (symbol, stopLossPrice);
1645
+ // }
1646
+ // } else {
1647
+ request['triggerPrice'] = this.priceToPrecision(symbol, triggerPrice);
1648
+ // }
1649
+ if (price !== undefined) {
1650
+ request['price'] = this.priceToPrecision(symbol, price);
1651
+ }
1652
+ else if (type === 'limit') {
1653
+ throw new ArgumentsRequired(this.id + ' createOrder() requires a price argument for limit trigger orders');
1654
+ }
1655
+ let marginMode = 'cross';
1656
+ [marginMode, params] = this.handleMarginModeAndParams('createOrder', params, marginMode);
1657
+ let isCrossMargin = 1;
1658
+ if (marginMode === 'isolated') {
1659
+ isCrossMargin = 0;
1660
+ }
1661
+ const reduceOnly = this.safeBool(params, 'reduceOnly', false);
1662
+ params = this.omit(params, 'reduceOnly');
1663
+ request['isCrossMargin'] = isCrossMargin;
1664
+ request['tdMode'] = marginMode;
1665
+ if (market['swap']) {
1666
+ if (reduceOnly) {
1667
+ if (side === 'buy') {
1668
+ request['posSide'] = 'short';
1669
+ }
1670
+ else if (side === 'sell') {
1671
+ request['posSide'] = 'long';
1672
+ }
1673
+ }
1674
+ else {
1675
+ if (side === 'buy') {
1676
+ request['posSide'] = 'long';
1677
+ }
1678
+ else if (side === 'sell') {
1679
+ request['posSide'] = 'short';
1680
+ }
1681
+ }
1682
+ }
1683
+ let mrgPosition = 'merge';
1684
+ [mrgPosition, params] = this.handleOptionAndParams(params, 'createOrder', 'mrgPosition', mrgPosition);
1685
+ request['mrgPosition'] = mrgPosition;
1686
+ return this.extend(request, params);
1687
+ }
1688
+ handleTypePostOnlyAndTimeInForce(type, params) {
1689
+ let postOnly = false;
1690
+ [postOnly, params] = this.handlePostOnly(type === 'market', type === 'post_only', params);
1691
+ if (postOnly) {
1692
+ type = 'post_only';
1693
+ }
1694
+ const timeInForce = this.handleTimeInForce(params);
1695
+ params = this.omit(params, 'timeInForce');
1696
+ if ((timeInForce !== undefined) && (timeInForce === 'IOC')) {
1697
+ type = 'ioc';
1698
+ }
1699
+ return [type, params];
1700
+ }
1701
+ /**
1702
+ * @method
1703
+ * @name deepcoin#createMarketOrderWithCost
1704
+ * @description create a market order by providing the symbol, side and cost
1705
+ * @param {string} symbol unified symbol of the market to create an order in
1706
+ * @param {string} side 'buy' or 'sell'
1707
+ * @param {float} cost how much you want to trade in units of the quote currency
1708
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1709
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1710
+ */
1711
+ async createMarketOrderWithCost(symbol, side, cost, params = {}) {
1712
+ params = this.extend(params, { 'cost': cost });
1713
+ return await this.createOrder(symbol, 'market', side, 0, undefined, params);
1714
+ }
1715
+ /**
1716
+ * @method
1717
+ * @name deepcoin#createMarketBuyOrderWithCost
1718
+ * @description create a market buy order by providing the symbol and cost
1719
+ * @param {string} symbol unified symbol of the market to create an order in
1720
+ * @param {float} cost how much you want to trade in units of the quote currency
1721
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1722
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1723
+ */
1724
+ async createMarketBuyOrderWithCost(symbol, cost, params = {}) {
1725
+ params = this.extend(params, { 'cost': cost });
1726
+ return await this.createOrder(symbol, 'market', 'buy', 0, undefined, params);
1727
+ }
1728
+ /**
1729
+ * @method
1730
+ * @name deepcoin#createMarketSellOrderWithCost
1731
+ * @description create a market sell order by providing the symbol and cost
1732
+ * @param {string} symbol unified symbol of the market to create an order in
1733
+ * @param {float} cost how much you want to trade in units of the quote currency
1734
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1735
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1736
+ */
1737
+ async createMarketSellOrderWithCost(symbol, cost, params = {}) {
1738
+ params = this.extend(params, { 'cost': cost });
1739
+ return await this.createOrder(symbol, 'market', 'sell', 0, undefined, params);
1740
+ }
1741
+ /**
1742
+ * @method
1743
+ * @name deepcoin#fetchClosedOrder
1744
+ * @description fetches information on a closed order made by the user
1745
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/finishOrderByID
1746
+ * @param {string} id order id
1747
+ * @param {string} symbol unified symbol of the market the order was made in
1748
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1749
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1750
+ */
1751
+ async fetchClosedOrder(id, symbol = undefined, params = {}) {
1752
+ await this.loadMarkets();
1753
+ if (symbol === undefined) {
1754
+ throw new ArgumentsRequired(this.id + ' fetchClosedOrder() requires a symbol argument');
1755
+ }
1756
+ const market = this.market(symbol);
1757
+ const request = {
1758
+ 'instId': market['id'],
1759
+ 'ordId': id,
1760
+ };
1761
+ const response = await this.privateGetDeepcoinTradeFinishOrderByID(this.extend(request, params));
1762
+ //
1763
+ // {
1764
+ // "code": "0",
1765
+ // "msg": "",
1766
+ // "data": [
1767
+ // {
1768
+ // "instType": "SPOT",
1769
+ // "instId": "ETH-USDT",
1770
+ // "tgtCcy": "",
1771
+ // "ccy": "",
1772
+ // "ordId": "1001434573319675",
1773
+ // "clOrdId": "",
1774
+ // "tag": "",
1775
+ // "px": "4056.620000000000",
1776
+ // "sz": "0.004000",
1777
+ // "pnl": "0.000000",
1778
+ // "ordType": "market",
1779
+ // "side": "buy",
1780
+ // "posSide": "",
1781
+ // "tdMode": "cash",
1782
+ // "accFillSz": "0.004000",
1783
+ // "fillPx": "",
1784
+ // "tradeId": "",
1785
+ // "fillSz": "0.004000",
1786
+ // "fillTime": "1760619119000",
1787
+ // "avgPx": "",
1788
+ // "state": "filled",
1789
+ // "lever": "1.000000",
1790
+ // "tpTriggerPx": "",
1791
+ // "tpTriggerPxType": "",
1792
+ // "tpOrdPx": "",
1793
+ // "slTriggerPx": "",
1794
+ // "slTriggerPxType": "",
1795
+ // "slOrdPx": "",
1796
+ // "feeCcy": "USDT",
1797
+ // "fee": "0.000004",
1798
+ // "rebateCcy": "",
1799
+ // "source": "",
1800
+ // "rebate": "",
1801
+ // "category": "normal",
1802
+ // "uTime": "1760619119000",
1803
+ // "cTime": "1760619119000"
1804
+ // }
1805
+ // ]
1806
+ // }
1807
+ //
1808
+ const data = this.safeList(response, 'data', []);
1809
+ const entry = this.safeDict(data, 0, {});
1810
+ return this.parseOrder(entry, market);
1811
+ }
1812
+ /**
1813
+ * @method
1814
+ * @name deepcoin#fetchOpenOrder
1815
+ * @description fetch an open order by it's id
1816
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/orderByID
1817
+ * @param {string} id order id
1818
+ * @param {string} symbol unified market symbol, default is undefined
1819
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1820
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1821
+ */
1822
+ async fetchOpenOrder(id, symbol = undefined, params = {}) {
1823
+ await this.loadMarkets();
1824
+ if (symbol === undefined) {
1825
+ throw new ArgumentsRequired(this.id + ' fetchClosedOrder() requires a symbol argument');
1826
+ }
1827
+ const market = this.market(symbol);
1828
+ const request = {
1829
+ 'instId': market['id'],
1830
+ 'ordId': id,
1831
+ };
1832
+ const response = await this.privateGetDeepcoinTradeOrderByID(this.extend(request, params));
1833
+ const data = this.safeList(response, 'data', []);
1834
+ const length = data.length;
1835
+ if (length === 0) {
1836
+ return undefined;
1837
+ }
1838
+ const entry = this.safeDict(data, 0, {});
1839
+ return this.parseOrder(entry, market);
1840
+ }
1841
+ /**
1842
+ * @method
1843
+ * @name deepcoin#fetchCanceledAndClosedOrders
1844
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/ordersHistory
1845
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/triggerOrdersHistory
1846
+ * @description fetches information on multiple canceled and closed orders made by the user
1847
+ * @param {string} [symbol] unified market symbol of the market orders were made in
1848
+ * @param {int} [since] the earliest time in ms to fetch orders for
1849
+ * @param {int} [limit] the maximum number of order structures to retrieve
1850
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1851
+ * @param {bool} [params.trigger] whether to fetch trigger/algo orders (default false)
1852
+ * @param {string} [params.type] *non trigger orders only* 'spot' or 'swap', the market type for the orders
1853
+ * @param {string} [params.state] *non trigger orders only* 'canceled' or 'filled', the order state to filter by
1854
+ * @param {string} [params.OrderType] *trigger orders only* 'limit' or 'market'
1855
+ * @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)
1856
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1857
+ */
1858
+ async fetchCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1859
+ await this.loadMarkets();
1860
+ let paginate = false;
1861
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchCanceledAndClosedOrders', 'paginate');
1862
+ if (paginate) {
1863
+ return await this.fetchPaginatedCallDynamic('fetchCanceledAndClosedOrders', symbol, since, limit, params);
1864
+ }
1865
+ const trigger = this.safeBool(params, 'trigger', false);
1866
+ let methodName = 'fetchCanceledAndClosedOrders';
1867
+ [methodName, params] = this.handleParamString(params, 'methodName', methodName);
1868
+ let market = undefined;
1869
+ const request = {};
1870
+ if (symbol !== undefined) {
1871
+ market = this.market(symbol);
1872
+ request['instId'] = market['id'];
1873
+ }
1874
+ let marketType = 'spot';
1875
+ [marketType, params] = this.handleMarketTypeAndParams(methodName, market, params, marketType);
1876
+ request['instType'] = this.convertToInstrumentType(marketType);
1877
+ if (limit !== undefined) {
1878
+ request['limit'] = limit; // default 100
1879
+ }
1880
+ let response = undefined;
1881
+ if (trigger) {
1882
+ if (methodName !== 'fetchCanceledAndClosedOrders') {
1883
+ throw new BadRequest(this.id + ' ' + methodName + '() does not support trigger orders');
1884
+ }
1885
+ if (market === undefined) {
1886
+ throw new ArgumentsRequired(this.id + ' fetchCanceledAndClosedOrders() requires a symbol argument for trigger orders');
1887
+ }
1888
+ params = this.omit(params, 'trigger');
1889
+ //
1890
+ // {
1891
+ // "code": "0",
1892
+ // "msg": "",
1893
+ // "data": [
1894
+ // {
1895
+ // "instType": "SWAP",
1896
+ // "instId": "DOGE-USDT-SWAP",
1897
+ // "ordId": "1001110510915416",
1898
+ // "px": "0",
1899
+ // "sz": "76",
1900
+ // "triggerPx": "0",
1901
+ // "triggerPxType": "last",
1902
+ // "ordType": "TPSL",
1903
+ // "side": "sell",
1904
+ // "posSide": "long",
1905
+ // "tdMode": "cross",
1906
+ // "lever": "2",
1907
+ // "triggerTime": "0",
1908
+ // "uTime": "1761059366000",
1909
+ // "cTime": "1761059218",
1910
+ // "errorCode": "0",
1911
+ // "errorMsg": ""
1912
+ // }
1913
+ // ]
1914
+ // }
1915
+ //
1916
+ response = await this.privateGetDeepcoinTradeTriggerOrdersHistory(this.extend(request, params));
1917
+ }
1918
+ else {
1919
+ //
1920
+ // {
1921
+ // "code": "0",
1922
+ // "msg": "",
1923
+ // "data": [
1924
+ // {
1925
+ // "instType": "SPOT",
1926
+ // "instId": "ETH-USDT",
1927
+ // "tgtCcy": "",
1928
+ // "ccy": "",
1929
+ // "ordId": "1001434573319675",
1930
+ // "clOrdId": "",
1931
+ // "tag": "",
1932
+ // "px": "4056.620000000000",
1933
+ // "sz": "0.004000",
1934
+ // "pnl": "0.000000",
1935
+ // "ordType": "market",
1936
+ // "side": "buy",
1937
+ // "posSide": "",
1938
+ // "tdMode": "cash",
1939
+ // "accFillSz": "0.004000",
1940
+ // "fillPx": "",
1941
+ // "tradeId": "",
1942
+ // "fillSz": "0.004000",
1943
+ // "fillTime": "1760619119000",
1944
+ // "avgPx": "",
1945
+ // "state": "filled",
1946
+ // "lever": "1.000000",
1947
+ // "tpTriggerPx": "",
1948
+ // "tpTriggerPxType": "",
1949
+ // "tpOrdPx": "",
1950
+ // "slTriggerPx": "",
1951
+ // "slTriggerPxType": "",
1952
+ // "slOrdPx": "",
1953
+ // "feeCcy": "USDT",
1954
+ // "fee": "0.000004",
1955
+ // "rebateCcy": "",
1956
+ // "source": "",
1957
+ // "rebate": "",
1958
+ // "category": "normal",
1959
+ // "uTime": "1760619119000",
1960
+ // "cTime": "1760619119000"
1961
+ // }
1962
+ // ]
1963
+ // }
1964
+ //
1965
+ response = await this.privateGetDeepcoinTradeOrdersHistory(this.extend(request, params));
1966
+ }
1967
+ // todo handle with since, until and pagination
1968
+ const data = this.safeList(response, 'data', []);
1969
+ return this.parseOrders(data, market, since, limit);
1970
+ }
1971
+ /**
1972
+ * @method
1973
+ * @name deepcoin#fetchCanceledOrders
1974
+ * @description fetches information on multiple canceled orders made by the user
1975
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/ordersHistory
1976
+ * @param {string} symbol unified market symbol of the market the orders were made in
1977
+ * @param {int} [since] the earliest time in ms to fetch orders for
1978
+ * @param {int} [limit] the maximum number of order structures to retrieve
1979
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1980
+ * @param {string} [params.type] 'spot' or 'swap', the market type for the orders
1981
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1982
+ */
1983
+ async fetchCanceledOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1984
+ const methodName = 'fetchCanceledOrders';
1985
+ params = this.extend(params, { 'methodName': methodName });
1986
+ params = this.extend(params, { 'state': 'canceled' });
1987
+ return await this.fetchCanceledAndClosedOrders(symbol, since, limit, params);
1988
+ }
1989
+ /**
1990
+ * @method
1991
+ * @name deepcoin#fetchClosedOrders
1992
+ * @description fetches information on multiple closed orders made by the user
1993
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/ordersHistory
1994
+ * @param {string} symbol unified market symbol of the market the orders were made in
1995
+ * @param {int} [since] the earliest time in ms to fetch orders for
1996
+ * @param {int} [limit] the maximum number of order structures to retrieve
1997
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1998
+ * @param {string} [params.type] 'spot' or 'swap', the market type for the orders
1999
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2000
+ */
2001
+ async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2002
+ const methodName = 'fetchClosedOrders';
2003
+ params = this.extend(params, { 'methodName': methodName });
2004
+ params = this.extend(params, { 'state': 'filled' });
2005
+ return await this.fetchCanceledAndClosedOrders(symbol, since, limit, params);
2006
+ }
2007
+ /**
2008
+ * @method
2009
+ * @name deepcoin#fetchOpenOrders
2010
+ * @description fetch all unfilled currently open orders
2011
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/ordersPendingV2
2012
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/triggerOrdersPending
2013
+ * @param {string} symbol unified market symbol of the market orders were made in
2014
+ * @param {int} [since] the earliest time in ms to fetch orders for
2015
+ * @param {int} [limit] the maximum number of order structures to retrieve
2016
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2017
+ * @param {bool} [params.trigger] whether to fetch trigger/algo orders (default false)
2018
+ * @param {int} [params.index] *non trigger orders only* pagination index, default is 1
2019
+ * @param {string} [params.orderType] *trigger orders only* 'limit' or 'market'
2020
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2021
+ */
2022
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2023
+ await this.loadMarkets();
2024
+ if (symbol === undefined) {
2025
+ throw new ArgumentsRequired(this.id + ' fetchOpenOrders() requires a symbol argument');
2026
+ }
2027
+ const market = this.market(symbol);
2028
+ const index = this.safeInteger(params, 'index', 1); // todo add pagination handling
2029
+ const request = {
2030
+ 'instId': market['id'],
2031
+ };
2032
+ if (limit !== undefined) {
2033
+ request['limit'] = limit;
2034
+ }
2035
+ const trigger = this.safeBool(params, 'trigger', false);
2036
+ let response = undefined;
2037
+ if (trigger) {
2038
+ params = this.omit(params, 'trigger');
2039
+ request['instType'] = this.convertToInstrumentType(market['type']);
2040
+ //
2041
+ // {
2042
+ // "code": "0",
2043
+ // "msg": "",
2044
+ // "data": [
2045
+ // {
2046
+ // "instType": "SPOT",
2047
+ // "instId": "DOGE-USDT",
2048
+ // "ordId": "1001442305797142",
2049
+ // "triggerPx": "0.01",
2050
+ // "ordPx": "0.01",
2051
+ // "sz": "20",
2052
+ // "ordType": "",
2053
+ // "side": "buy",
2054
+ // "posSide": "",
2055
+ // "tdMode": "cash",
2056
+ // "triggerOrderType": "Conditional",
2057
+ // "triggerPxType": "last",
2058
+ // "lever": "",
2059
+ // "slPrice": "",
2060
+ // "slTriggerPrice": "",
2061
+ // "tpPrice": "",
2062
+ // "tpTriggerPrice": "",
2063
+ // "closeSLTriggerPrice": "",
2064
+ // "closeTPTriggerPrice": "",
2065
+ // "cTime": "1761814167000",
2066
+ // "uTime": "1761814167000"
2067
+ // }
2068
+ // ]
2069
+ // }
2070
+ //
2071
+ response = await this.privateGetDeepcoinTradeTriggerOrdersPending(this.extend(request, params));
2072
+ }
2073
+ else {
2074
+ request['index'] = index;
2075
+ //
2076
+ // {
2077
+ // "code": "0",
2078
+ // "msg": "",
2079
+ // "data": [
2080
+ // {
2081
+ // "instType": "SPOT",
2082
+ // "instId": "ETH-USDT",
2083
+ // "tgtCcy": "",
2084
+ // "ccy": "",
2085
+ // "ordId": "1001435158096314",
2086
+ // "clOrdId": "",
2087
+ // "tag": "",
2088
+ // "px": "1000.000000000000",
2089
+ // "sz": "0.004000",
2090
+ // "pnl": "0.000000",
2091
+ // "ordType": "limit",
2092
+ // "side": "buy",
2093
+ // "posSide": "",
2094
+ // "tdMode": "cash",
2095
+ // "accFillSz": "0.000000",
2096
+ // "fillPx": "",
2097
+ // "tradeId": "",
2098
+ // "fillSz": "0.000000",
2099
+ // "fillTime": "1760695267000",
2100
+ // "avgPx": "",
2101
+ // "state": "live",
2102
+ // "lever": "1",
2103
+ // "tpTriggerPx": "",
2104
+ // "tpTriggerPxType": "",
2105
+ // "tpOrdPx": "",
2106
+ // "slTriggerPx": "",
2107
+ // "slTriggerPxType": "",
2108
+ // "slOrdPx": "",
2109
+ // "feeCcy": "USDT",
2110
+ // "fee": "0.000000",
2111
+ // "rebateCcy": "",
2112
+ // "source": "",
2113
+ // "rebate": "",
2114
+ // "category": "normal",
2115
+ // "uTime": "1760695267000",
2116
+ // "cTime": "1760695267000"
2117
+ // }
2118
+ // ]
2119
+ // }
2120
+ //
2121
+ response = await this.privateGetDeepcoinTradeV2OrdersPending(this.extend(request, params));
2122
+ }
2123
+ const data = this.safeList(response, 'data', []);
2124
+ return this.parseOrders(data, market, since, limit, { 'status': 'open' });
2125
+ }
2126
+ /**
2127
+ * @method
2128
+ * @name deepcoin#cancelOrder
2129
+ * @description cancels an open order
2130
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/cancelOrder
2131
+ * @param {string} id order id
2132
+ * @param {string} symbol unified symbol of the market the order was made in
2133
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2134
+ * @param {bool} [params.trigger] whether the order is a trigger/algo order (default false)
2135
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
2136
+ */
2137
+ async cancelOrder(id, symbol = undefined, params = {}) {
2138
+ await this.loadMarkets();
2139
+ if (symbol === undefined) {
2140
+ throw new ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument');
2141
+ }
2142
+ const market = this.market(symbol);
2143
+ const request = {
2144
+ 'instId': market['id'],
2145
+ 'ordId': id,
2146
+ };
2147
+ let response = undefined;
2148
+ const trigger = this.safeBool(params, 'trigger', false);
2149
+ if (trigger) {
2150
+ params = this.omit(params, 'trigger');
2151
+ response = await this.privatePostDeepcoinTradeCancelTriggerOrder(this.extend(request, params));
2152
+ }
2153
+ else {
2154
+ response = await this.privatePostDeepcoinTradeCancelOrder(this.extend(request, params));
2155
+ }
2156
+ const data = this.safeDict(response, 'data', {});
2157
+ return this.parseOrder(data, market);
2158
+ }
2159
+ /**
2160
+ * @method
2161
+ * @name deepcoin#cancelAllOrders
2162
+ * @description cancel all open orders in a market
2163
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/cancelAllOrder
2164
+ * @param {string} symbol unified market symbol of the market to cancel orders in
2165
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2166
+ * @param {string} [params.marginMode] *swap only* 'cross' or 'isolated', the default is 'cash' for spot and 'cross' for swap
2167
+ * @param {bool} [params.merged] *swap only* true for merged positions, false for split positions (default true)
2168
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2169
+ */
2170
+ async cancelAllOrders(symbol = undefined, params = {}) {
2171
+ await this.loadMarkets();
2172
+ if (symbol === undefined) {
2173
+ throw new ArgumentsRequired(this.id + ' cancelAllOrders() requires a symbol argument');
2174
+ }
2175
+ const market = this.market(symbol);
2176
+ if (market['spot']) {
2177
+ throw new NotSupported(this.id + ' cancelAllOrders() is not supported for spot markets');
2178
+ }
2179
+ const productGroup = this.getProductGroupFromMarket(market);
2180
+ const marginMode = this.safeString(params, 'marginMode');
2181
+ let encodedMarginMode = 1;
2182
+ if (marginMode !== undefined) {
2183
+ params = this.omit(params, 'marginMode');
2184
+ if (marginMode === 'isolated') {
2185
+ encodedMarginMode = 0;
2186
+ }
2187
+ }
2188
+ let merged = true;
2189
+ [merged, params] = this.handleOptionAndParams(params, 'cancelAllOrders', 'merged', merged);
2190
+ const request = {
2191
+ 'InstrumentID': market['id'],
2192
+ 'ProductGroup': productGroup,
2193
+ 'IsCrossMargin': encodedMarginMode,
2194
+ 'IsMergeMode': merged ? 1 : 0,
2195
+ };
2196
+ const response = await this.privatePostDeepcoinTradeSwapCancelAll(this.extend(request, params));
2197
+ const data = this.safeList(response, 'data', []);
2198
+ return this.parseOrders(data, market);
2199
+ }
2200
+ /**
2201
+ * @method
2202
+ * @name deepcoin#editOrder
2203
+ * @description edit a trade order
2204
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/replaceOrder
2205
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/replaceTPSL
2206
+ * @param {string} id cancel order id
2207
+ * @param {string} [symbol] unified symbol of the market to create an order in (not used in deepcoin editOrder)
2208
+ * @param {string} [type] 'market' or 'limit' (not used in deepcoin editOrder)
2209
+ * @param {string} [side] 'buy' or 'sell' (not used in deepcoin editOrder)
2210
+ * @param {float} [amount] how much of currency you want to trade in units of base currency
2211
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
2212
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2213
+ * @param {float} [params.stopLossPrice] the price that a stop loss order is triggered at
2214
+ * @param {float} [params.takeProfitPrice] the price that a take profit order is triggered at
2215
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
2216
+ */
2217
+ async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
2218
+ await this.loadMarkets();
2219
+ const request = {
2220
+ 'OrderSysID': id,
2221
+ };
2222
+ let market = undefined;
2223
+ if (symbol !== undefined) {
2224
+ market = this.market(symbol);
2225
+ if (market['spot']) {
2226
+ throw new NotSupported(this.id + ' editOrder() is not supported for spot markets');
2227
+ }
2228
+ symbol = market['symbol'];
2229
+ }
2230
+ const stopLossPrice = this.safeNumber(params, 'stopLossPrice');
2231
+ const takeProfitPrice = this.safeNumber(params, 'takeProfitPrice');
2232
+ const isTPSL = (stopLossPrice !== undefined) || (takeProfitPrice !== undefined);
2233
+ let response = undefined;
2234
+ if (isTPSL) {
2235
+ if ((price !== undefined) || (amount !== undefined)) {
2236
+ throw new BadRequest(this.id + ' editOrder() with stopLossPrice or takeProfitPrice cannot have price or amount. Either use stopLossPrice/takeProfitPrice or price/amount to edit order.');
2237
+ }
2238
+ if (stopLossPrice !== undefined) {
2239
+ request['slTriggerPx'] = symbol ? this.priceToPrecision(symbol, stopLossPrice) : this.numberToString(stopLossPrice);
2240
+ }
2241
+ if (takeProfitPrice !== undefined) {
2242
+ request['tpTriggerPx'] = symbol ? this.priceToPrecision(symbol, takeProfitPrice) : this.numberToString(takeProfitPrice);
2243
+ }
2244
+ params = this.omit(params, ['stopLossPrice', 'takeProfitPrice']);
2245
+ response = await this.privatePostDeepcoinTradeReplaceOrderSltp(this.extend(request, params));
2246
+ }
2247
+ else {
2248
+ if (price !== undefined) {
2249
+ if (symbol !== undefined) {
2250
+ request['price'] = this.priceToPrecision(symbol, price);
2251
+ }
2252
+ else {
2253
+ request['price'] = this.numberToString(price);
2254
+ }
2255
+ }
2256
+ if (amount !== undefined) {
2257
+ if (symbol !== undefined) {
2258
+ request['volume'] = this.amountToPrecision(symbol, amount);
2259
+ }
2260
+ else {
2261
+ request['volume'] = this.numberToString(amount);
2262
+ }
2263
+ }
2264
+ response = await this.privatePostDeepcoinTradeReplaceOrder(this.extend(request, params));
2265
+ }
2266
+ const data = this.safeDict(response, 'data', {});
2267
+ return this.parseOrder(data);
2268
+ }
2269
+ /**
2270
+ * @method
2271
+ * @name deepcoin#cancelOrders
2272
+ * @description cancel multiple orders
2273
+ * @param {string[]} ids order ids
2274
+ * @param {string} [symbol] unified market symbol, default is undefined
2275
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2276
+ * @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2277
+ */
2278
+ async cancelOrders(ids, symbol = undefined, params = {}) {
2279
+ await this.loadMarkets();
2280
+ let market = undefined;
2281
+ if (symbol !== undefined) {
2282
+ market = this.market(symbol);
2283
+ if (market['spot']) {
2284
+ throw new NotSupported(this.id + ' cancelOrders() is not supported for spot markets');
2285
+ }
2286
+ }
2287
+ const request = {
2288
+ 'OrderSysIDs': ids,
2289
+ };
2290
+ const response = await this.privatePostDeepcoinTradeBatchCancelOrder(this.extend(request, params));
2291
+ const data = this.safeList(response, 'data', []);
2292
+ return this.parseOrders(data, market);
2293
+ }
2294
+ parseOrder(order, market = undefined) {
2295
+ //
2296
+ // regular order
2297
+ // {
2298
+ // "instType": "SPOT",
2299
+ // "instId": "ETH-USDT",
2300
+ // "tgtCcy": "",
2301
+ // "ccy": "",
2302
+ // "ordId": "1001434573319675",
2303
+ // "clOrdId": "",
2304
+ // "tag": "",
2305
+ // "px": "4056.620000000000",
2306
+ // "sz": "0.004000",
2307
+ // "pnl": "0.000000",
2308
+ // "ordType": "market",
2309
+ // "side": "buy",
2310
+ // "posSide": "",
2311
+ // "tdMode": "cash",
2312
+ // "accFillSz": "0.004000",
2313
+ // "fillPx": "",
2314
+ // "tradeId": "",
2315
+ // "fillSz": "0.004000",
2316
+ // "fillTime": "1760619119000",
2317
+ // "avgPx": "",
2318
+ // "state": "filled",
2319
+ // "lever": "1.000000",
2320
+ // "tpTriggerPx": "",
2321
+ // "tpTriggerPxType": "",
2322
+ // "tpOrdPx": "",
2323
+ // "slTriggerPx": "",
2324
+ // "slTriggerPxType": "",
2325
+ // "slOrdPx": "",
2326
+ // "feeCcy": "USDT",
2327
+ // "fee": "0.000004",
2328
+ // "rebateCcy": "",
2329
+ // "source": "",
2330
+ // "rebate": "",
2331
+ // "category": "normal",
2332
+ // "uTime": "1760619119000",
2333
+ // "cTime": "1760619119000"
2334
+ // }
2335
+ //
2336
+ // trigger order
2337
+ // {
2338
+ // "instType": "SPOT",
2339
+ // "instId": "DOGE-USDT",
2340
+ // "ordId": "1001442305797142",
2341
+ // "triggerPx": "0.01",
2342
+ // "ordPx": "0.01",
2343
+ // "sz": "20",
2344
+ // "ordType": "",
2345
+ // "side": "buy",
2346
+ // "posSide": "",
2347
+ // "tdMode": "cash",
2348
+ // "triggerOrderType": "Conditional",
2349
+ // "triggerPxType": "last",
2350
+ // "lever": "",
2351
+ // "slPrice": "",
2352
+ // "slTriggerPrice": "",
2353
+ // "tpPrice": "",
2354
+ // "tpTriggerPrice": "",
2355
+ // "closeSLTriggerPrice": "",
2356
+ // "closeTPTriggerPrice": "",
2357
+ // "cTime": "1761814167000",
2358
+ // "uTime": "1761814167000"
2359
+ // }
2360
+ //
2361
+ const marketId = this.safeString(order, 'instId');
2362
+ market = this.safeMarket(marketId, market);
2363
+ let timestamp = this.safeInteger(order, 'cTime');
2364
+ const timestampString = this.safeString(order, 'cTime', '');
2365
+ if (timestampString.length < 13) {
2366
+ timestamp = this.safeTimestamp(order, 'cTime');
2367
+ }
2368
+ const state = this.safeString(order, 'state');
2369
+ const orderType = this.safeString(order, 'ordType');
2370
+ let average = this.safeString(order, 'avgPx');
2371
+ if (average === '') {
2372
+ average = undefined;
2373
+ }
2374
+ const feeCurrencyId = this.safeString(order, 'feeCcy');
2375
+ let fee = undefined;
2376
+ if (feeCurrencyId !== undefined) {
2377
+ const feeCost = this.safeString(order, 'fee');
2378
+ fee = {
2379
+ 'cost': this.parseNumber(feeCost),
2380
+ 'currency': this.safeCurrencyCode(feeCurrencyId),
2381
+ };
2382
+ }
2383
+ return this.safeOrder({
2384
+ 'id': this.safeString(order, 'ordId'),
2385
+ 'clientOrderId': this.safeString(order, 'clOrdId'),
2386
+ 'datetime': this.iso8601(timestamp),
2387
+ 'timestamp': timestamp,
2388
+ 'lastTradeTimestamp': undefined,
2389
+ 'lastUpdateTimestamp': this.safeInteger(order, 'uTime'),
2390
+ 'status': this.parseOrderStatus(state),
2391
+ 'symbol': market['symbol'],
2392
+ 'type': this.parseOrderType(orderType),
2393
+ 'timeInForce': this.parseOrderTimeInForce(orderType),
2394
+ 'side': this.safeString(order, 'side'),
2395
+ 'price': this.safeString2(order, 'px', 'ordPx'),
2396
+ 'average': average,
2397
+ 'amount': this.safeString(order, 'sz'),
2398
+ 'filled': this.safeString(order, 'accFillSz'),
2399
+ 'remaining': undefined,
2400
+ 'triggerPrice': this.omitZero(this.safeString(order, 'triggerPx')),
2401
+ 'takeProfitPrice': this.safeString2(order, 'tpTriggerPx', 'tpTriggerPrice'),
2402
+ 'stopLossPrice': this.safeString2(order, 'slTriggerPx', 'slTriggerPrice'),
2403
+ 'cost': undefined,
2404
+ 'trades': undefined,
2405
+ 'fee': fee,
2406
+ 'reduceOnly': undefined,
2407
+ 'postOnly': orderType ? (orderType === 'post_only') : undefined,
2408
+ 'info': order,
2409
+ }, market);
2410
+ }
2411
+ parseOrderStatus(status) {
2412
+ const statuses = {
2413
+ 'live': 'open',
2414
+ 'filled': 'closed',
2415
+ 'canceled': 'canceled',
2416
+ 'partially_filled': 'open',
2417
+ };
2418
+ return this.safeString(statuses, status, status);
2419
+ }
2420
+ parseOrderType(type) {
2421
+ const types = {
2422
+ 'limit': 'limit',
2423
+ 'market': 'market',
2424
+ 'post_only': 'limit',
2425
+ 'ioc': 'market',
2426
+ 'TPSL': 'market',
2427
+ };
2428
+ return this.safeString(types, type, type);
2429
+ }
2430
+ parseOrderTimeInForce(type) {
2431
+ const timeInForces = {
2432
+ 'post_only': 'PO',
2433
+ 'ioc': 'IOC',
2434
+ 'limit': 'GTC',
2435
+ 'market': 'GTC',
2436
+ };
2437
+ return this.safeString(timeInForces, type, type);
2438
+ }
2439
+ /**
2440
+ * @method
2441
+ * @description fetch open positions for a single market
2442
+ * @name deepcoin#fetchPositionsForSymbol
2443
+ * @see https://www.deepcoin.com/docs/DeepCoinAccount/accountPositions
2444
+ * @description fetch all open positions for specific symbol
2445
+ * @param {string} symbol unified market symbol
2446
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2447
+ * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
2448
+ */
2449
+ async fetchPositionsForSymbol(symbol, params = {}) {
2450
+ await this.loadMarkets();
2451
+ const market = this.market(symbol);
2452
+ const instrumentType = this.convertToInstrumentType(market['type']);
2453
+ const request = {
2454
+ 'instType': instrumentType,
2455
+ 'instId': market['id'],
2456
+ };
2457
+ const response = await this.privateGetDeepcoinAccountPositions(this.extend(request, params));
2458
+ const data = this.safeList(response, 'data', []);
2459
+ return this.parsePositions(data, [market['symbol']]);
2460
+ }
2461
+ /**
2462
+ * @method
2463
+ * @name deepcoin#fetchPositions
2464
+ * @description fetch all open positions
2465
+ * @see https://www.deepcoin.com/docs/DeepCoinAccount/accountPositions
2466
+ * @param {string[]} [symbols] list of unified market symbols
2467
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2468
+ * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
2469
+ */
2470
+ async fetchPositions(symbols = undefined, params = {}) {
2471
+ await this.loadMarkets();
2472
+ symbols = this.marketSymbols(symbols, undefined, true, true);
2473
+ let marketType = 'swap';
2474
+ let market = undefined;
2475
+ if (symbols !== undefined) {
2476
+ const firstSymbol = this.safeString(symbols, 0);
2477
+ market = this.market(firstSymbol);
2478
+ }
2479
+ [marketType, params] = this.handleMarketTypeAndParams('fetchPositions', market, params, marketType);
2480
+ const instrumentType = this.convertToInstrumentType(marketType);
2481
+ const request = {
2482
+ 'instType': instrumentType,
2483
+ };
2484
+ const response = await this.privateGetDeepcoinAccountPositions(this.extend(request, params));
2485
+ //
2486
+ // {
2487
+ // "code": "0",
2488
+ // "msg": "",
2489
+ // "data": [
2490
+ // {
2491
+ // "instType": "SWAP",
2492
+ // "mgnMode": "cross",
2493
+ // "instId": "DOGE-USDT-SWAP",
2494
+ // "posId": "1001110099878275",
2495
+ // "posSide": "long",
2496
+ // "pos": "20",
2497
+ // "avgPx": "0.18408",
2498
+ // "lever": "75",
2499
+ // "liqPx": "0.00001",
2500
+ // "useMargin": "0.049088",
2501
+ // "mrgPosition": "merge",
2502
+ // "ccy": "USDT",
2503
+ // "uTime": "1760709419000",
2504
+ // "cTime": "1760709419000"
2505
+ // }
2506
+ // ]
2507
+ // }
2508
+ //
2509
+ const data = this.safeList(response, 'data', []);
2510
+ return this.parsePositions(data, symbols);
2511
+ }
2512
+ parsePosition(position, market = undefined) {
2513
+ //
2514
+ // {
2515
+ // "instType": "SWAP",
2516
+ // "mgnMode": "cross",
2517
+ // "instId": "DOGE-USDT-SWAP",
2518
+ // "posId": "1001110099878275",
2519
+ // "posSide": "long",
2520
+ // "pos": "20",
2521
+ // "avgPx": "0.18408",
2522
+ // "lever": "75",
2523
+ // "liqPx": "0.00001",
2524
+ // "useMargin": "0.049088",
2525
+ // "mrgPosition": "merge",
2526
+ // "ccy": "USDT",
2527
+ // "uTime": "1760709419000",
2528
+ // "cTime": "1760709419000"
2529
+ // }
2530
+ //
2531
+ const marketId = this.safeString(position, 'instId');
2532
+ market = this.safeMarket(marketId, market);
2533
+ const timestamp = this.safeInteger(position, 'cTime');
2534
+ return this.safePosition({
2535
+ 'symbol': market['symbol'],
2536
+ 'id': this.safeString(position, 'posId'),
2537
+ 'timestamp': timestamp,
2538
+ 'datetime': this.iso8601(timestamp),
2539
+ 'contracts': this.safeString(position, 'pos'),
2540
+ 'contractSize': undefined,
2541
+ 'side': this.safeString(position, 'posSide'),
2542
+ 'notional': undefined,
2543
+ 'leverage': this.omitZero(this.safeString(position, 'lever')),
2544
+ 'unrealizedPnl': undefined,
2545
+ 'realizedPnl': undefined,
2546
+ 'collateral': undefined,
2547
+ 'entryPrice': this.safeString(position, 'avgPx'),
2548
+ 'markPrice': undefined,
2549
+ 'liquidationPrice': this.safeString(position, 'liqPx'),
2550
+ 'marginMode': this.safeString(position, 'mgnMode'),
2551
+ 'hedged': true,
2552
+ 'maintenanceMargin': this.safeString(position, 'useMargin'),
2553
+ 'maintenanceMarginPercentage': undefined,
2554
+ 'initialMargin': undefined,
2555
+ 'initialMarginPercentage': undefined,
2556
+ 'marginRatio': undefined,
2557
+ 'lastUpdateTimestamp': this.safeInteger(position, 'uTime'),
2558
+ 'lastPrice': undefined,
2559
+ 'stopLossPrice': undefined,
2560
+ 'takeProfitPrice': undefined,
2561
+ 'percentage': undefined,
2562
+ 'info': position,
2563
+ });
2564
+ }
2565
+ /**
2566
+ * @method
2567
+ * @name deepcoin#setLeverage
2568
+ * @description set the level of leverage for a market
2569
+ * @see https://www.deepcoin.com/docs/DeepCoinAccount/accountSetLeverage
2570
+ * @param {float} leverage the rate of leverage
2571
+ * @param {string} symbol unified market symbol
2572
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2573
+ * @param {string} [params.marginMode] 'cross' or 'isolated' (default is cross)
2574
+ * @param {string} [params.mrgPosition] 'merge' or 'split', default is merge
2575
+ * @returns {object} response from the exchange
2576
+ */
2577
+ async setLeverage(leverage, symbol = undefined, params = {}) {
2578
+ if (symbol === undefined) {
2579
+ throw new ArgumentsRequired(this.id + ' setLeverage() requires a symbol argument');
2580
+ }
2581
+ // WARNING: THIS WILL INCREASE LIQUIDATION PRICE FOR OPEN ISOLATED LONG POSITIONS
2582
+ // AND DECREASE LIQUIDATION PRICE FOR OPEN ISOLATED SHORT POSITIONS
2583
+ if (leverage < 1) {
2584
+ throw new BadRequest(this.id + ' setLeverage() leverage should be minimum 1');
2585
+ }
2586
+ await this.loadMarkets();
2587
+ const market = this.market(symbol);
2588
+ let marginMode = 'cross';
2589
+ [marginMode, params] = this.handleMarginModeAndParams('setLeverage', params, marginMode);
2590
+ if ((marginMode !== 'cross') && (marginMode !== 'isolated')) {
2591
+ throw new BadRequest(this.id + ' setLeverage() requires a marginMode parameter that must be either cross or isolated');
2592
+ }
2593
+ let mrgPosition = 'merge';
2594
+ [mrgPosition, params] = this.handleOptionAndParams(params, 'setLeverage', 'mrgPosition', mrgPosition);
2595
+ if (mrgPosition !== 'merge' && mrgPosition !== 'split') {
2596
+ throw new BadRequest(this.id + ' setLeverage() mrgPosition parameter must be either merge or split');
2597
+ }
2598
+ const request = {
2599
+ 'lever': leverage,
2600
+ 'mgnMode': marginMode,
2601
+ 'instId': market['id'],
2602
+ 'mrgPosition': mrgPosition,
2603
+ };
2604
+ const response = await this.privatePostDeepcoinAccountSetLeverage(this.extend(request, params));
2605
+ //
2606
+ // {
2607
+ // code: '0',
2608
+ // msg: '',
2609
+ // data: {
2610
+ // instId: 'ETH-USDT-SWAP',
2611
+ // lever: '2',
2612
+ // mgnMode: 'cross',
2613
+ // mrgPosition: 'merge',
2614
+ // sCode: '0',
2615
+ // sMsg: ''
2616
+ // }
2617
+ // }
2618
+ //
2619
+ return response;
2620
+ }
2621
+ /**
2622
+ * @method
2623
+ * @name deepcoin#fetchFundingRates
2624
+ * @description fetch the funding rate for multiple markets
2625
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/currentFundRate
2626
+ * @param {string[]|undefined} symbols list of unified market symbols
2627
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2628
+ * @param {string} [params.subType] "linear" or "inverse"
2629
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexed by market symbols
2630
+ */
2631
+ async fetchFundingRates(symbols = undefined, params = {}) {
2632
+ await this.loadMarkets();
2633
+ symbols = this.marketSymbols(symbols, 'swap', true, true, true);
2634
+ let subType = 'linear';
2635
+ let firstMarket = undefined;
2636
+ if (symbols !== undefined) {
2637
+ const firstSymbol = this.safeString(symbols, 0);
2638
+ firstMarket = this.market(firstSymbol);
2639
+ }
2640
+ [subType, params] = this.handleSubTypeAndParams('fetchFundingRates', firstMarket, params, subType);
2641
+ let instType = 'SwapU';
2642
+ if (subType === 'inverse') {
2643
+ instType = 'Swap';
2644
+ }
2645
+ else if (subType !== 'linear') {
2646
+ throw new BadRequest(this.id + ' fetchFundingRates() subType parameter must be either linear or inverse');
2647
+ }
2648
+ const request = {
2649
+ 'instType': instType,
2650
+ };
2651
+ const response = await this.privateGetDeepcoinTradeFundRateCurrentFundingRate(this.extend(request, params));
2652
+ //
2653
+ // {
2654
+ // "code": "0",
2655
+ // "msg": "",
2656
+ // "data": {
2657
+ // "current_fund_rates": [
2658
+ // {
2659
+ // "instrumentId": "SPKUSDT",
2660
+ // "fundingRate": 0.00005
2661
+ // },
2662
+ // {
2663
+ // "instrumentId": "LAUNCHCOINUSDT",
2664
+ // "fundingRate": 0.00005
2665
+ // }
2666
+ // ]
2667
+ // }
2668
+ // }
2669
+ //
2670
+ const data = this.safeDict(response, 'data', {});
2671
+ const rates = this.safeList(data, 'current_fund_rates', []);
2672
+ return this.parseFundingRates(rates, symbols);
2673
+ }
2674
+ /**
2675
+ * @method
2676
+ * @name deepcoin#fetchFundingRate
2677
+ * @description fetch the current funding rate
2678
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/currentFundRate
2679
+ * @param {string} symbol unified market symbol
2680
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2681
+ * @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
2682
+ */
2683
+ async fetchFundingRate(symbol, params = {}) {
2684
+ await this.loadMarkets();
2685
+ const market = this.market(symbol);
2686
+ if (!market['swap']) {
2687
+ throw new ExchangeError(this.id + ' fetchFundingRate() is only valid for swap markets');
2688
+ }
2689
+ const request = {
2690
+ 'instId': market['id'],
2691
+ 'instType': this.getProductGroupFromMarket(market),
2692
+ };
2693
+ const response = await this.privateGetDeepcoinTradeFundRateCurrentFundingRate(this.extend(request, params));
2694
+ //
2695
+ // {
2696
+ // "code": "0",
2697
+ // "msg": "",
2698
+ // "data": {
2699
+ // "current_fund_rates": [
2700
+ // {
2701
+ // "instrumentId": "ETHUSDT",
2702
+ // "fundingRate": 0.0000402356250176
2703
+ // }
2704
+ // ]
2705
+ // }
2706
+ // }
2707
+ //
2708
+ const data = this.safeDict(response, 'data', {});
2709
+ const rates = this.safeList(data, 'current_fund_rates', []);
2710
+ const entry = this.safeDict(rates, 0, {});
2711
+ return this.parseFundingRate(entry, market);
2712
+ }
2713
+ parseFundingRate(contract, market = undefined) {
2714
+ //
2715
+ // {
2716
+ // "instrumentId": "ETHUSDT",
2717
+ // "fundingRate": 0.0000402356250176
2718
+ // }
2719
+ //
2720
+ const marketId = this.safeString2(contract, 'instrumentId', 'instrumentID');
2721
+ const symbol = this.safeSymbol(marketId, market);
2722
+ return {
2723
+ 'info': contract,
2724
+ 'symbol': symbol,
2725
+ 'markPrice': undefined,
2726
+ 'indexPrice': undefined,
2727
+ 'interestRate': undefined,
2728
+ 'estimatedSettlePrice': undefined,
2729
+ 'timestamp': undefined,
2730
+ 'datetime': undefined,
2731
+ 'fundingRate': this.safeNumber(contract, 'fundingRate'),
2732
+ 'fundingTimestamp': undefined,
2733
+ 'fundingDatetime': undefined,
2734
+ 'nextFundingRate': undefined,
2735
+ 'nextFundingTimestamp': undefined,
2736
+ 'nextFundingDatetime': undefined,
2737
+ 'previousFundingRate': undefined,
2738
+ 'previousFundingTimestamp': undefined,
2739
+ 'previousFundingDatetime': undefined,
2740
+ 'interval': undefined,
2741
+ };
2742
+ }
2743
+ /**
2744
+ * @method
2745
+ * @name deepcoin#fetchFundingRateHistory
2746
+ * @description fetches historical funding rate prices
2747
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/fundingRateHistory
2748
+ * @param {string} symbol unified symbol of the market to fetch the funding rate history for
2749
+ * @param {int} [since] timestamp in ms of the earliest funding rate to fetch
2750
+ * @param {int} [limit] the maximum amount of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure} to fetch
2751
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2752
+ * @param {int} [params.page] pagination page number
2753
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure}
2754
+ */
2755
+ async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2756
+ if (symbol === undefined) {
2757
+ throw new ArgumentsRequired(this.id + ' fetchFundingRateHistory() requires a symbol argument');
2758
+ }
2759
+ await this.loadMarkets();
2760
+ const market = this.market(symbol);
2761
+ const request = {
2762
+ 'instId': market['id'],
2763
+ };
2764
+ if (limit !== undefined) {
2765
+ request['size'] = limit; // default 20, max 100
2766
+ }
2767
+ const response = await this.privateGetDeepcoinTradeFundRateHistory(this.extend(request, params));
2768
+ //
2769
+ // {
2770
+ // "code": "0",
2771
+ // "msg": "",
2772
+ // "data": {
2773
+ // "rows": [
2774
+ // {
2775
+ // "instrumentID": "ETHUSD",
2776
+ // "rate": "0.00046493",
2777
+ // "CreateTime": 1760860800,
2778
+ // "ratePeriodSec": 0
2779
+ // },
2780
+ // {
2781
+ // "instrumentID": "ETHUSD",
2782
+ // "rate": "0.00047949",
2783
+ // "CreateTime": 1760832000,
2784
+ // "ratePeriodSec": 0
2785
+ // }
2786
+ // ]
2787
+ // }
2788
+ // }
2789
+ //
2790
+ const data = this.safeDict(response, 'data', {});
2791
+ const rows = this.safeList(data, 'rows', []);
2792
+ return this.parseFundingRateHistories(rows, market, since, limit);
2793
+ }
2794
+ parseFundingRateHistory(info, market = undefined) {
2795
+ //
2796
+ // {
2797
+ // "instrumentID": "ETHUSD",
2798
+ // "rate": "0.00047949",
2799
+ // "CreateTime": 1760832000,
2800
+ // "ratePeriodSec": 0
2801
+ // }
2802
+ //
2803
+ const timestamp = this.safeTimestamp(info, 'CreateTime');
2804
+ const instrumentID = this.safeString2(info, 'instrumentID', 'instrumentId');
2805
+ market = this.safeMarket(instrumentID, market, undefined, 'swap');
2806
+ return {
2807
+ 'info': info,
2808
+ 'symbol': market['symbol'],
2809
+ 'fundingRate': this.safeNumber(info, 'rate'),
2810
+ 'timestamp': timestamp,
2811
+ 'datetime': this.iso8601(timestamp),
2812
+ };
2813
+ }
2814
+ /**
2815
+ * @method
2816
+ * @name deepcoin#fetchMyTrades
2817
+ * @description fetch all trades made by the user
2818
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/tradeFills
2819
+ * @param {string} symbol unified market symbol
2820
+ * @param {int} [since] the earliest time in ms to fetch trades for
2821
+ * @param {int} [limit] the maximum number of trades structures to retrieve
2822
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2823
+ * @param {int} [params.until] timestamp in ms of the latest trade to fetch
2824
+ * @param {string} [params.type] 'spot' or 'swap', the market type for the trades (default is 'spot')
2825
+ * @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)
2826
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
2827
+ */
2828
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2829
+ await this.loadMarkets();
2830
+ let paginate = false;
2831
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchMyTrades', 'paginate');
2832
+ if (paginate) {
2833
+ return await this.fetchPaginatedCallDynamic('fetchMyTrades', symbol, since, limit, params);
2834
+ }
2835
+ let market = undefined;
2836
+ if (symbol !== undefined) {
2837
+ market = this.market(symbol);
2838
+ }
2839
+ let marketType = 'spot';
2840
+ [marketType, params] = this.handleMarketTypeAndParams('fetchMyTrades', market, params, marketType);
2841
+ const request = {
2842
+ 'instType': this.convertToInstrumentType(marketType),
2843
+ };
2844
+ if (market !== undefined) {
2845
+ request['instId'] = market['id'];
2846
+ }
2847
+ if (since !== undefined) {
2848
+ request['begin'] = since;
2849
+ }
2850
+ if (limit !== undefined) {
2851
+ request['limit'] = limit; // default 100, max 100
2852
+ }
2853
+ const until = this.safeInteger(params, 'until');
2854
+ if (until !== undefined) {
2855
+ params = this.omit(params, 'until');
2856
+ request['end'] = until;
2857
+ }
2858
+ const response = await this.privateGetDeepcoinTradeFills(this.extend(request, params));
2859
+ //
2860
+ // {
2861
+ // "code": "0",
2862
+ // "msg": "",
2863
+ // "data": [
2864
+ // {
2865
+ // "instType": "SPOT",
2866
+ // "instId": "ETH-USDT",
2867
+ // "tradeId": "1001056429613610",
2868
+ // "ordId": "1001435238208686",
2869
+ // "clOrdId": "",
2870
+ // "billId": "10010564296136101",
2871
+ // "tag": "",
2872
+ // "fillPx": "3791.15",
2873
+ // "fillSz": "0.004",
2874
+ // "side": "sell",
2875
+ // "posSide": "",
2876
+ // "execType": "",
2877
+ // "feeCcy": "USDT",
2878
+ // "fee": "0.0151646",
2879
+ // "ts": "1760704540000"
2880
+ // }
2881
+ // ]
2882
+ // }
2883
+ //
2884
+ const data = this.safeList(response, 'data', []);
2885
+ return this.parseTrades(data, market, since, limit);
2886
+ }
2887
+ /**
2888
+ * @method
2889
+ * @name deepcoin#fetchOrderTrades
2890
+ * @description fetch all the trades made from a single order
2891
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/tradeFills
2892
+ * @param {string} id order id
2893
+ * @param {string} symbol unified market symbol
2894
+ * @param {int} [since] the earliest time in ms to fetch trades for
2895
+ * @param {int} [limit] the maximum number of trades to retrieve
2896
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2897
+ * @param {string} [params.type] 'spot' or 'swap', the market type for the trades
2898
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
2899
+ */
2900
+ async fetchOrderTrades(id, symbol = undefined, since = undefined, limit = undefined, params = {}) {
2901
+ await this.loadMarkets();
2902
+ const marketType = this.safeString(params, 'type');
2903
+ if (symbol === undefined && marketType === undefined) {
2904
+ throw new ArgumentsRequired(this.id + ' fetchOrderTrades requires a symbol argument or a market type in the params');
2905
+ }
2906
+ params = this.extend({ 'ordId': id }, params);
2907
+ return await this.fetchMyTrades(symbol, since, limit, params);
2908
+ }
2909
+ /**
2910
+ * @method
2911
+ * @name deepcoin#closePosition
2912
+ * @description closes open positions for a market
2913
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/batchClosePosition
2914
+ * @see https://www.deepcoin.com/docs/DeepCoinTrade/closePositionByIds
2915
+ * @param {string} symbol Unified CCXT market symbol
2916
+ * @param {string} [side] not used by deepcoin
2917
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2918
+ * @param {string|undefined} [params.positionId] the id of the position you would like to close
2919
+ * @param {string[]|undefined} [params.positionIds] list of position ids to close (for batch closing)
2920
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
2921
+ */
2922
+ async closePosition(symbol, side = undefined, params = {}) {
2923
+ await this.loadMarkets();
2924
+ const market = this.market(symbol);
2925
+ const productGroup = this.getProductGroupFromMarket(market);
2926
+ const positionId = this.safeString(params, 'positionId');
2927
+ const positionIds = this.safeList(params, 'positionIds');
2928
+ const request = {
2929
+ 'instId': market['id'],
2930
+ 'productGroup': productGroup,
2931
+ };
2932
+ let response = undefined;
2933
+ if (positionId === undefined && positionIds === undefined) {
2934
+ response = await this.privatePostDeepcoinTradeBatchClosePosition(this.extend(request, params));
2935
+ }
2936
+ else {
2937
+ if (positionId !== undefined) {
2938
+ params = this.omit(params, 'positionId');
2939
+ request['positionIds'] = [positionId];
2940
+ }
2941
+ response = await this.privatePostDeepcoinTradeClosePositionByIds(this.extend(request, params));
2942
+ }
2943
+ const data = this.safeList(response, 'data', []);
2944
+ return this.parseOrder(data, market);
2945
+ }
2946
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
2947
+ let requestPath = path;
2948
+ if (method === 'GET') {
2949
+ const query = this.urlencode(params);
2950
+ if (query.length) {
2951
+ requestPath += '?' + query;
2952
+ }
2953
+ }
2954
+ const url = this.urls['api'][api] + '/' + requestPath;
2955
+ if (api === 'private') {
2956
+ this.checkRequiredCredentials();
2957
+ const timestamp = this.milliseconds();
2958
+ const dateTime = this.iso8601(timestamp);
2959
+ let payload = dateTime + method + '/' + requestPath;
2960
+ headers = {
2961
+ 'DC-ACCESS-KEY': this.apiKey,
2962
+ 'DC-ACCESS-TIMESTAMP': dateTime,
2963
+ 'DC-ACCESS-PASSPHRASE': this.password,
2964
+ 'appid': '200103',
2965
+ };
2966
+ if (method !== 'GET') {
2967
+ body = this.json(params);
2968
+ headers['Content-Type'] = 'application/json';
2969
+ payload += body;
2970
+ }
2971
+ const signature = this.hmac(this.encode(payload), this.encode(this.secret), sha256, 'base64');
2972
+ headers['DC-ACCESS-SIGN'] = signature;
2973
+ }
2974
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
2975
+ }
2976
+ handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
2977
+ const data = this.safeDict(response, 'data', {});
2978
+ let msg = this.safeString(response, 'msg');
2979
+ const messageCode = this.safeString(response, 'code');
2980
+ let sCode = this.safeString(data, 'sCode');
2981
+ const sMsg = this.safeString(data, 'sMsg');
2982
+ let errorCode = this.safeString(data, 'errorCode');
2983
+ if ((msg !== undefined) && (msg === '') && (sMsg !== undefined)) {
2984
+ msg = sMsg;
2985
+ }
2986
+ const errorList = this.safeList(data, 'errorList');
2987
+ if (errorList !== undefined) {
2988
+ for (let i = 0; i < errorList.length; i++) {
2989
+ const entry = this.safeDict(errorList, i, {});
2990
+ errorCode = this.safeString(entry, 'errorCode');
2991
+ }
2992
+ }
2993
+ const feedback = this.id + ' ' + body;
2994
+ if ((sCode === undefined) && (errorCode !== undefined)) {
2995
+ sCode = errorCode;
2996
+ }
2997
+ const retCode = this.safeString(data, 'retCode');
2998
+ if ((sCode === undefined) && (retCode !== undefined)) {
2999
+ sCode = retCode;
3000
+ }
3001
+ if ((code !== 200) || (messageCode !== '0') || (sCode !== undefined && sCode !== '0')) {
3002
+ this.throwExactlyMatchedException(this.exceptions['exact'], messageCode, feedback);
3003
+ this.throwExactlyMatchedException(this.exceptions['exact'], sCode, feedback);
3004
+ this.throwExactlyMatchedException(this.exceptions['exact'], msg, feedback);
3005
+ this.throwBroadlyMatchedException(this.exceptions['broad'], msg, feedback);
3006
+ throw new ExchangeError(feedback);
3007
+ }
3008
+ else {
3009
+ const list = this.safeList(data, 'list', []);
3010
+ if (('list' in data) && (list === undefined)) {
3011
+ throw new NullResponse(feedback);
3012
+ }
3013
+ }
3014
+ return undefined;
3015
+ }
3016
+ }