ccxt 4.5.26 → 4.5.27

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 (984) hide show
  1. package/README.md +6 -5
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +4 -1
  4. package/dist/cjs/src/abstract/alpaca.js +1 -1
  5. package/dist/cjs/src/abstract/apex.js +1 -1
  6. package/dist/cjs/src/abstract/arkham.js +1 -1
  7. package/dist/cjs/src/abstract/ascendex.js +1 -1
  8. package/dist/cjs/src/abstract/backpack.js +1 -1
  9. package/dist/cjs/src/abstract/bigone.js +1 -1
  10. package/dist/cjs/src/abstract/binance.js +1 -1
  11. package/dist/cjs/src/abstract/bingx.js +1 -1
  12. package/dist/cjs/src/abstract/bit2c.js +1 -1
  13. package/dist/cjs/src/abstract/bitbank.js +1 -1
  14. package/dist/cjs/src/abstract/bitbns.js +1 -1
  15. package/dist/cjs/src/abstract/bitfinex.js +1 -1
  16. package/dist/cjs/src/abstract/bitflyer.js +1 -1
  17. package/dist/cjs/src/abstract/bitget.js +1 -1
  18. package/dist/cjs/src/abstract/bithumb.js +1 -1
  19. package/dist/cjs/src/abstract/bitmart.js +1 -1
  20. package/dist/cjs/src/abstract/bitmex.js +1 -1
  21. package/dist/cjs/src/abstract/bitopro.js +1 -1
  22. package/dist/cjs/src/abstract/bitrue.js +1 -1
  23. package/dist/cjs/src/abstract/bitso.js +1 -1
  24. package/dist/cjs/src/abstract/bitstamp.js +1 -1
  25. package/dist/cjs/src/abstract/bitteam.js +1 -1
  26. package/dist/cjs/src/abstract/bittrade.js +1 -1
  27. package/dist/cjs/src/abstract/bitvavo.js +1 -1
  28. package/dist/cjs/src/abstract/blockchaincom.js +1 -1
  29. package/dist/cjs/src/abstract/blofin.js +1 -1
  30. package/dist/cjs/src/abstract/btcalpha.js +1 -1
  31. package/dist/cjs/src/abstract/btcbox.js +1 -1
  32. package/dist/cjs/src/abstract/btcmarkets.js +1 -1
  33. package/dist/cjs/src/abstract/btcturk.js +1 -1
  34. package/dist/cjs/src/abstract/bullish.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 +1 -1
  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 +1 -1
  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/zebpay.js +11 -0
  103. package/dist/cjs/src/abstract/zonda.js +1 -1
  104. package/dist/cjs/src/alpaca.js +1 -1
  105. package/dist/cjs/src/apex.js +1 -1
  106. package/dist/cjs/src/arkham.js +1 -1
  107. package/dist/cjs/src/ascendex.js +1 -1
  108. package/dist/cjs/src/backpack.js +1 -1
  109. package/dist/cjs/src/base/Exchange.js +2 -2
  110. package/dist/cjs/src/base/Precise.js +0 -6
  111. package/dist/cjs/src/base/errors.js +0 -6
  112. package/dist/cjs/src/base/functions/crypto.js +1 -1
  113. package/dist/cjs/src/base/functions/encode.js +1 -1
  114. package/dist/cjs/src/base/functions/misc.js +0 -1
  115. package/dist/cjs/src/base/functions/number.js +0 -6
  116. package/dist/cjs/src/base/functions/platform.js +0 -6
  117. package/dist/cjs/src/base/functions/rsa.js +0 -1
  118. package/dist/cjs/src/base/functions/string.js +0 -6
  119. package/dist/cjs/src/base/functions/throttle.js +1 -1
  120. package/dist/cjs/src/base/functions/time.js +0 -6
  121. package/dist/cjs/src/base/functions/totp.js +0 -1
  122. package/dist/cjs/src/base/functions/type.js +0 -6
  123. package/dist/cjs/src/base/functions.js +1 -1
  124. package/dist/cjs/src/base/ws/Cache.js +0 -6
  125. package/dist/cjs/src/base/ws/Client.js +0 -1
  126. package/dist/cjs/src/base/ws/Future.js +1 -1
  127. package/dist/cjs/src/base/ws/OrderBook.js +1 -1
  128. package/dist/cjs/src/base/ws/OrderBookSide.js +0 -6
  129. package/dist/cjs/src/base/ws/WsClient.js +1 -1
  130. package/dist/cjs/src/bequant.js +1 -1
  131. package/dist/cjs/src/bigone.js +1 -1
  132. package/dist/cjs/src/binance.js +16 -7
  133. package/dist/cjs/src/binancecoinm.js +1 -1
  134. package/dist/cjs/src/binanceus.js +1 -1
  135. package/dist/cjs/src/binanceusdm.js +1 -1
  136. package/dist/cjs/src/bingx.js +1 -1
  137. package/dist/cjs/src/bit2c.js +1 -1
  138. package/dist/cjs/src/bitbank.js +1 -1
  139. package/dist/cjs/src/bitbns.js +1 -1
  140. package/dist/cjs/src/bitfinex.js +1 -1
  141. package/dist/cjs/src/bitflyer.js +1 -1
  142. package/dist/cjs/src/bitget.js +2 -1
  143. package/dist/cjs/src/bithumb.js +1 -1
  144. package/dist/cjs/src/bitmart.js +1 -1
  145. package/dist/cjs/src/bitmex.js +1 -1
  146. package/dist/cjs/src/bitopro.js +1 -1
  147. package/dist/cjs/src/bitrue.js +1 -1
  148. package/dist/cjs/src/bitso.js +1 -1
  149. package/dist/cjs/src/bitstamp.js +1 -1
  150. package/dist/cjs/src/bitteam.js +1 -1
  151. package/dist/cjs/src/bittrade.js +1 -1
  152. package/dist/cjs/src/blockchaincom.js +1 -1
  153. package/dist/cjs/src/blofin.js +1 -1
  154. package/dist/cjs/src/btcalpha.js +1 -1
  155. package/dist/cjs/src/btcbox.js +1 -1
  156. package/dist/cjs/src/btcmarkets.js +1 -1
  157. package/dist/cjs/src/btcturk.js +1 -1
  158. package/dist/cjs/src/bullish.js +1 -1
  159. package/dist/cjs/src/bybit.js +58 -29
  160. package/dist/cjs/src/cex.js +1 -1
  161. package/dist/cjs/src/coinbaseadvanced.js +1 -1
  162. package/dist/cjs/src/coincatch.js +2 -2
  163. package/dist/cjs/src/coincheck.js +1 -1
  164. package/dist/cjs/src/coinex.js +17 -1
  165. package/dist/cjs/src/coinmate.js +21 -1
  166. package/dist/cjs/src/coinmetro.js +1 -1
  167. package/dist/cjs/src/coinone.js +1 -1
  168. package/dist/cjs/src/coinsph.js +23 -1
  169. package/dist/cjs/src/coinspot.js +1 -1
  170. package/dist/cjs/src/cryptocom.js +8 -1
  171. package/dist/cjs/src/cryptomus.js +1 -1
  172. package/dist/cjs/src/deepcoin.js +1 -1
  173. package/dist/cjs/src/defx.js +1 -1
  174. package/dist/cjs/src/delta.js +1 -1
  175. package/dist/cjs/src/deribit.js +1 -1
  176. package/dist/cjs/src/derive.js +1 -1
  177. package/dist/cjs/src/digifinex.js +1 -1
  178. package/dist/cjs/src/dydx.js +1 -1
  179. package/dist/cjs/src/exmo.js +1 -1
  180. package/dist/cjs/src/fmfwio.js +1 -1
  181. package/dist/cjs/src/foxbit.js +1 -1
  182. package/dist/cjs/src/gate.js +3 -1
  183. package/dist/cjs/src/gateio.js +1 -1
  184. package/dist/cjs/src/gemini.js +1 -1
  185. package/dist/cjs/src/hashkey.js +1 -1
  186. package/dist/cjs/src/hibachi.js +1 -1
  187. package/dist/cjs/src/hitbtc.js +0 -1
  188. package/dist/cjs/src/hollaex.js +1 -1
  189. package/dist/cjs/src/htx.js +1 -1
  190. package/dist/cjs/src/huobi.js +1 -1
  191. package/dist/cjs/src/hyperliquid.js +13 -16
  192. package/dist/cjs/src/independentreserve.js +1 -1
  193. package/dist/cjs/src/indodax.js +1 -1
  194. package/dist/cjs/src/kraken.js +1 -1
  195. package/dist/cjs/src/krakenfutures.js +1 -1
  196. package/dist/cjs/src/kucoin.js +1 -1
  197. package/dist/cjs/src/kucoinfutures.js +1 -1
  198. package/dist/cjs/src/latoken.js +1 -1
  199. package/dist/cjs/src/lbank.js +1 -1
  200. package/dist/cjs/src/luno.js +1 -1
  201. package/dist/cjs/src/mercado.js +1 -1
  202. package/dist/cjs/src/mexc.js +1 -1
  203. package/dist/cjs/src/modetrade.js +1 -1
  204. package/dist/cjs/src/myokx.js +1 -1
  205. package/dist/cjs/src/ndax.js +1 -1
  206. package/dist/cjs/src/novadax.js +1 -1
  207. package/dist/cjs/src/oceanex.js +1 -1
  208. package/dist/cjs/src/okx.js +1 -1
  209. package/dist/cjs/src/okxus.js +1 -1
  210. package/dist/cjs/src/onetrading.js +1 -1
  211. package/dist/cjs/src/oxfun.js +1 -1
  212. package/dist/cjs/src/p2b.js +1 -1
  213. package/dist/cjs/src/paradex.js +1 -1
  214. package/dist/cjs/src/paymium.js +1 -1
  215. package/dist/cjs/src/poloniex.js +1 -1
  216. package/dist/cjs/src/pro/alpaca.js +1 -1
  217. package/dist/cjs/src/pro/apex.js +1 -1
  218. package/dist/cjs/src/pro/arkham.js +1 -1
  219. package/dist/cjs/src/pro/ascendex.js +1 -1
  220. package/dist/cjs/src/pro/backpack.js +1 -1
  221. package/dist/cjs/src/pro/bequant.js +1 -1
  222. package/dist/cjs/src/pro/binance.js +1 -1
  223. package/dist/cjs/src/pro/binancecoinm.js +1 -1
  224. package/dist/cjs/src/pro/binanceus.js +1 -1
  225. package/dist/cjs/src/pro/binanceusdm.js +1 -1
  226. package/dist/cjs/src/pro/bingx.js +1 -1
  227. package/dist/cjs/src/pro/bitfinex.js +1 -1
  228. package/dist/cjs/src/pro/bitget.js +1 -1
  229. package/dist/cjs/src/pro/bithumb.js +1 -1
  230. package/dist/cjs/src/pro/bitmart.js +1 -1
  231. package/dist/cjs/src/pro/bitmex.js +1 -1
  232. package/dist/cjs/src/pro/bitrue.js +1 -1
  233. package/dist/cjs/src/pro/bitstamp.js +1 -1
  234. package/dist/cjs/src/pro/bitvavo.js +1 -1
  235. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  236. package/dist/cjs/src/pro/blofin.js +1 -1
  237. package/dist/cjs/src/pro/bullish.js +1 -1
  238. package/dist/cjs/src/pro/bybit.js +2 -2
  239. package/dist/cjs/src/pro/cex.js +1 -1
  240. package/dist/cjs/src/pro/coinbase.js +1 -1
  241. package/dist/cjs/src/pro/coinbaseadvanced.js +1 -1
  242. package/dist/cjs/src/pro/coinbaseexchange.js +1 -1
  243. package/dist/cjs/src/pro/coinbaseinternational.js +1 -1
  244. package/dist/cjs/src/pro/coincatch.js +1 -1
  245. package/dist/cjs/src/pro/coincheck.js +1 -1
  246. package/dist/cjs/src/pro/coinex.js +1 -1
  247. package/dist/cjs/src/pro/coinone.js +1 -1
  248. package/dist/cjs/src/pro/cryptocom.js +1 -1
  249. package/dist/cjs/src/pro/deepcoin.js +1 -1
  250. package/dist/cjs/src/pro/defx.js +1 -1
  251. package/dist/cjs/src/pro/deribit.js +1 -1
  252. package/dist/cjs/src/pro/dydx.js +1 -1
  253. package/dist/cjs/src/pro/exmo.js +1 -1
  254. package/dist/cjs/src/pro/gate.js +1 -1
  255. package/dist/cjs/src/pro/gateio.js +1 -1
  256. package/dist/cjs/src/pro/gemini.js +1 -1
  257. package/dist/cjs/src/pro/hashkey.js +1 -1
  258. package/dist/cjs/src/pro/hitbtc.js +1 -1
  259. package/dist/cjs/src/pro/hollaex.js +1 -1
  260. package/dist/cjs/src/pro/htx.js +1 -1
  261. package/dist/cjs/src/pro/huobi.js +1 -1
  262. package/dist/cjs/src/pro/hyperliquid.js +1 -1
  263. package/dist/cjs/src/pro/independentreserve.js +1 -1
  264. package/dist/cjs/src/pro/kraken.js +1 -1
  265. package/dist/cjs/src/pro/krakenfutures.js +1 -1
  266. package/dist/cjs/src/pro/kucoin.js +1 -1
  267. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  268. package/dist/cjs/src/pro/lbank.js +0 -1
  269. package/dist/cjs/src/pro/luno.js +1 -1
  270. package/dist/cjs/src/pro/mexc.js +1 -1
  271. package/dist/cjs/src/pro/myokx.js +1 -1
  272. package/dist/cjs/src/pro/ndax.js +1 -1
  273. package/dist/cjs/src/pro/okx.js +1 -1
  274. package/dist/cjs/src/pro/okxus.js +1 -1
  275. package/dist/cjs/src/pro/onetrading.js +1 -1
  276. package/dist/cjs/src/pro/oxfun.js +1 -1
  277. package/dist/cjs/src/pro/p2b.js +1 -1
  278. package/dist/cjs/src/pro/paradex.js +1 -1
  279. package/dist/cjs/src/pro/phemex.js +1 -1
  280. package/dist/cjs/src/pro/poloniex.js +1 -1
  281. package/dist/cjs/src/pro/probit.js +1 -1
  282. package/dist/cjs/src/pro/toobit.js +1 -1
  283. package/dist/cjs/src/pro/upbit.js +1 -1
  284. package/dist/cjs/src/pro/whitebit.js +1 -1
  285. package/dist/cjs/src/pro/xt.js +1 -1
  286. package/dist/cjs/src/probit.js +1 -1
  287. package/dist/cjs/src/protobuf/mexc/compiled.cjs.js +1 -0
  288. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +0 -1
  289. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +0 -1
  290. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +0 -1
  291. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +0 -1
  292. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +0 -1
  293. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +0 -1
  294. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +0 -1
  295. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +0 -1
  296. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +0 -1
  297. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +0 -1
  298. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +0 -1
  299. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +0 -1
  300. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +0 -1
  301. package/dist/cjs/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +0 -1
  302. package/dist/cjs/src/static_dependencies/dydx-v4-client/helpers.js +0 -6
  303. package/dist/cjs/src/static_dependencies/dydx-v4-client/onboarding.js +0 -1
  304. package/dist/cjs/src/static_dependencies/dydx-v4-client/registry.js +0 -1
  305. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +0 -6
  306. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
  307. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
  308. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +0 -1
  309. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +0 -1
  310. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +0 -1
  311. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +0 -1
  312. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +0 -1
  313. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -1
  314. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +0 -1
  315. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +0 -1
  316. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +0 -1
  317. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +0 -1
  318. package/dist/cjs/src/static_dependencies/ethers/fragments.js +0 -6
  319. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +0 -6
  320. package/dist/cjs/src/static_dependencies/ethers/index.js +10 -1
  321. package/dist/cjs/src/static_dependencies/ethers/interface.js +0 -6
  322. package/dist/cjs/src/static_dependencies/ethers/typed.js +0 -6
  323. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +13 -1
  324. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +6 -1
  325. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +9 -1
  326. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +0 -6
  327. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
  328. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +7 -1
  329. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +5 -1
  330. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +0 -6
  331. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +8 -1
  332. package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
  333. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -1
  334. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -1
  335. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
  336. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
  337. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
  338. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
  339. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -1
  340. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
  341. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
  342. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
  343. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
  344. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
  345. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
  346. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
  347. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +0 -6
  348. package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
  349. package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
  350. package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
  351. package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -1
  352. package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
  353. package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
  354. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
  355. package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
  356. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  357. package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
  358. package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
  359. package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
  360. package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +0 -6
  361. package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +0 -1
  362. package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +0 -6
  363. package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +0 -6
  364. package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +0 -1
  365. package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +0 -1
  366. package/dist/cjs/src/static_dependencies/noble-hashes/pbkdf2.js +0 -1
  367. package/dist/cjs/src/static_dependencies/noble-hashes/ripemd160.js +0 -1
  368. package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +0 -1
  369. package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +0 -1
  370. package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +0 -1
  371. package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +0 -1
  372. package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
  373. package/dist/cjs/src/static_dependencies/node-fetch/body.js +5 -1
  374. package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +0 -1
  375. package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +0 -6
  376. package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -1
  377. package/dist/cjs/src/static_dependencies/node-fetch/headers.js +5 -1
  378. package/dist/cjs/src/static_dependencies/node-fetch/index.js +7 -1
  379. package/dist/cjs/src/static_dependencies/node-fetch/request.js +7 -1
  380. package/dist/cjs/src/static_dependencies/node-fetch/response.js +5 -1
  381. package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
  382. package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
  383. package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +0 -6
  384. package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +0 -1
  385. package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +0 -1
  386. package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -1
  387. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -1
  388. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
  389. package/dist/cjs/src/static_dependencies/qs/formats.js +0 -6
  390. package/dist/cjs/src/static_dependencies/qs/index.js +0 -1
  391. package/dist/cjs/src/static_dependencies/qs/parse.js +0 -1
  392. package/dist/cjs/src/static_dependencies/qs/stringify.js +0 -1
  393. package/dist/cjs/src/static_dependencies/qs/utils.js +0 -6
  394. package/dist/cjs/src/static_dependencies/scure-base/index.js +0 -6
  395. package/dist/cjs/src/static_dependencies/scure-bip32/index.js +19 -1
  396. package/dist/cjs/src/static_dependencies/scure-bip39/index.js +1 -1
  397. package/dist/cjs/src/static_dependencies/scure-bip39/wordlists/english.js +0 -6
  398. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
  399. package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
  400. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +0 -6
  401. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
  402. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
  403. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +0 -6
  404. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +0 -6
  405. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +0 -6
  406. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
  407. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
  408. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
  409. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -1
  410. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -1
  411. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
  412. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
  413. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
  414. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -1
  415. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
  416. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -1
  417. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -1
  418. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
  419. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -1
  420. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -1
  421. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -1
  422. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
  423. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +4 -1
  424. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +0 -1
  425. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +3 -1
  426. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +0 -1
  427. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +0 -1
  428. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +0 -1
  429. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +0 -1
  430. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
  431. package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +0 -6
  432. package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
  433. package/dist/cjs/src/timex.js +0 -1
  434. package/dist/cjs/src/tokocrypto.js +1 -1
  435. package/dist/cjs/src/toobit.js +1 -1
  436. package/dist/cjs/src/upbit.js +1 -1
  437. package/dist/cjs/src/wavesexchange.js +1 -1
  438. package/dist/cjs/src/whitebit.js +5 -3
  439. package/dist/cjs/src/woo.js +1 -1
  440. package/dist/cjs/src/woofipro.js +1 -1
  441. package/dist/cjs/src/xt.js +1 -1
  442. package/dist/cjs/src/yobit.js +1 -1
  443. package/dist/cjs/src/zaif.js +1 -1
  444. package/dist/cjs/src/zebpay.js +1908 -0
  445. package/dist/cjs/src/zonda.js +1 -1
  446. package/js/ccxt.d.ts +5 -2
  447. package/js/ccxt.js +4 -8
  448. package/js/src/abstract/alpaca.js +0 -6
  449. package/js/src/abstract/apex.js +0 -6
  450. package/js/src/abstract/arkham.js +0 -6
  451. package/js/src/abstract/ascendex.js +0 -6
  452. package/js/src/abstract/backpack.js +0 -6
  453. package/js/src/abstract/bequant.js +0 -6
  454. package/js/src/abstract/bigone.js +0 -6
  455. package/js/src/abstract/binance.js +0 -6
  456. package/js/src/abstract/binancecoinm.js +0 -6
  457. package/js/src/abstract/binanceus.js +0 -6
  458. package/js/src/abstract/binanceusdm.js +0 -6
  459. package/js/src/abstract/bingx.js +0 -6
  460. package/js/src/abstract/bit2c.js +0 -6
  461. package/js/src/abstract/bitbank.js +0 -6
  462. package/js/src/abstract/bitbns.js +0 -6
  463. package/js/src/abstract/bitfinex.js +0 -6
  464. package/js/src/abstract/bitflyer.js +0 -6
  465. package/js/src/abstract/bitget.js +0 -6
  466. package/js/src/abstract/bithumb.js +0 -6
  467. package/js/src/abstract/bitmart.js +0 -6
  468. package/js/src/abstract/bitmex.js +0 -6
  469. package/js/src/abstract/bitopro.js +0 -6
  470. package/js/src/abstract/bitrue.js +0 -6
  471. package/js/src/abstract/bitso.js +0 -6
  472. package/js/src/abstract/bitstamp.js +0 -6
  473. package/js/src/abstract/bitteam.js +0 -6
  474. package/js/src/abstract/bittrade.js +0 -6
  475. package/js/src/abstract/bitvavo.js +0 -6
  476. package/js/src/abstract/blockchaincom.js +0 -6
  477. package/js/src/abstract/blofin.js +0 -6
  478. package/js/src/abstract/btcalpha.js +0 -6
  479. package/js/src/abstract/btcbox.js +0 -6
  480. package/js/src/abstract/btcmarkets.js +0 -6
  481. package/js/src/abstract/btcturk.js +0 -6
  482. package/js/src/abstract/bullish.js +0 -6
  483. package/js/src/abstract/bybit.js +0 -6
  484. package/js/src/abstract/cex.js +0 -6
  485. package/js/src/abstract/coinbase.js +0 -6
  486. package/js/src/abstract/coinbaseadvanced.js +0 -6
  487. package/js/src/abstract/coinbaseexchange.js +0 -6
  488. package/js/src/abstract/coinbaseinternational.js +0 -6
  489. package/js/src/abstract/coincatch.js +0 -6
  490. package/js/src/abstract/coincheck.js +0 -6
  491. package/js/src/abstract/coinex.d.ts +16 -0
  492. package/js/src/abstract/coinex.js +0 -6
  493. package/js/src/abstract/coinmate.d.ts +3 -0
  494. package/js/src/abstract/coinmate.js +0 -6
  495. package/js/src/abstract/coinmetro.js +0 -6
  496. package/js/src/abstract/coinone.js +0 -6
  497. package/js/src/abstract/coinsph.d.ts +21 -0
  498. package/js/src/abstract/coinsph.js +0 -6
  499. package/js/src/abstract/coinspot.js +0 -6
  500. package/js/src/abstract/cryptocom.d.ts +7 -0
  501. package/js/src/abstract/cryptocom.js +0 -6
  502. package/js/src/abstract/cryptomus.js +0 -6
  503. package/js/src/abstract/deepcoin.js +0 -6
  504. package/js/src/abstract/defx.js +0 -6
  505. package/js/src/abstract/delta.js +0 -6
  506. package/js/src/abstract/deribit.js +0 -6
  507. package/js/src/abstract/derive.js +0 -6
  508. package/js/src/abstract/digifinex.js +0 -6
  509. package/js/src/abstract/dydx.js +0 -6
  510. package/js/src/abstract/exmo.js +0 -6
  511. package/js/src/abstract/fmfwio.js +0 -6
  512. package/js/src/abstract/foxbit.js +0 -6
  513. package/js/src/abstract/gate.d.ts +2 -0
  514. package/js/src/abstract/gate.js +0 -6
  515. package/js/src/abstract/gateio.d.ts +2 -0
  516. package/js/src/abstract/gateio.js +0 -6
  517. package/js/src/abstract/gemini.js +0 -6
  518. package/js/src/abstract/hashkey.js +0 -6
  519. package/js/src/abstract/hibachi.js +0 -6
  520. package/js/src/abstract/hitbtc.js +0 -6
  521. package/js/src/abstract/hollaex.js +0 -6
  522. package/js/src/abstract/htx.js +0 -6
  523. package/js/src/abstract/huobi.js +0 -6
  524. package/js/src/abstract/hyperliquid.js +0 -6
  525. package/js/src/abstract/independentreserve.js +0 -6
  526. package/js/src/abstract/indodax.js +0 -6
  527. package/js/src/abstract/kraken.js +0 -6
  528. package/js/src/abstract/krakenfutures.js +0 -6
  529. package/js/src/abstract/kucoin.js +0 -6
  530. package/js/src/abstract/kucoinfutures.js +0 -6
  531. package/js/src/abstract/latoken.js +0 -6
  532. package/js/src/abstract/lbank.js +0 -6
  533. package/js/src/abstract/luno.js +0 -6
  534. package/js/src/abstract/mercado.js +0 -6
  535. package/js/src/abstract/mexc.js +0 -6
  536. package/js/src/abstract/modetrade.js +0 -6
  537. package/js/src/abstract/myokx.js +0 -6
  538. package/js/src/abstract/ndax.js +0 -6
  539. package/js/src/abstract/novadax.js +0 -6
  540. package/js/src/abstract/oceanex.js +0 -6
  541. package/js/src/abstract/okx.js +0 -6
  542. package/js/src/abstract/okxus.js +0 -6
  543. package/js/src/abstract/onetrading.js +0 -6
  544. package/js/src/abstract/oxfun.js +0 -6
  545. package/js/src/abstract/p2b.js +0 -6
  546. package/js/src/abstract/paradex.js +0 -6
  547. package/js/src/abstract/paymium.js +0 -6
  548. package/js/src/abstract/phemex.js +0 -6
  549. package/js/src/abstract/poloniex.js +0 -6
  550. package/js/src/abstract/probit.js +0 -6
  551. package/js/src/abstract/timex.js +0 -6
  552. package/js/src/abstract/tokocrypto.js +0 -6
  553. package/js/src/abstract/toobit.js +0 -6
  554. package/js/src/abstract/upbit.js +0 -6
  555. package/js/src/abstract/wavesexchange.js +0 -6
  556. package/js/src/abstract/whitebit.js +0 -6
  557. package/js/src/abstract/woo.js +0 -6
  558. package/js/src/abstract/woofipro.js +0 -6
  559. package/js/src/abstract/xt.js +0 -6
  560. package/js/src/abstract/yobit.js +0 -6
  561. package/js/src/abstract/zaif.js +0 -6
  562. package/js/src/abstract/zebpay.d.ts +49 -0
  563. package/js/src/abstract/zebpay.js +5 -0
  564. package/js/src/abstract/zonda.js +0 -6
  565. package/js/src/alpaca.js +0 -6
  566. package/js/src/apex.js +0 -6
  567. package/js/src/arkham.js +0 -6
  568. package/js/src/ascendex.js +0 -6
  569. package/js/src/backpack.js +0 -6
  570. package/js/src/base/Exchange.js +2 -8
  571. package/js/src/base/Precise.js +0 -6
  572. package/js/src/base/errorHierarchy.js +0 -6
  573. package/js/src/base/errors.js +0 -6
  574. package/js/src/base/functions/crypto.js +0 -6
  575. package/js/src/base/functions/encode.js +0 -6
  576. package/js/src/base/functions/generic.js +0 -6
  577. package/js/src/base/functions/misc.js +0 -6
  578. package/js/src/base/functions/number.js +0 -6
  579. package/js/src/base/functions/platform.js +0 -6
  580. package/js/src/base/functions/rsa.js +0 -6
  581. package/js/src/base/functions/string.js +0 -6
  582. package/js/src/base/functions/throttle.js +0 -6
  583. package/js/src/base/functions/time.js +0 -6
  584. package/js/src/base/functions/totp.js +0 -6
  585. package/js/src/base/functions/type.js +0 -6
  586. package/js/src/base/functions.js +0 -6
  587. package/js/src/base/types.js +0 -6
  588. package/js/src/base/ws/Cache.js +0 -6
  589. package/js/src/base/ws/Client.js +0 -6
  590. package/js/src/base/ws/Future.js +0 -6
  591. package/js/src/base/ws/OrderBook.js +0 -6
  592. package/js/src/base/ws/OrderBookSide.js +0 -6
  593. package/js/src/base/ws/WsClient.js +0 -6
  594. package/js/src/base/ws/functions.js +0 -6
  595. package/js/src/bequant.js +0 -6
  596. package/js/src/bigone.js +0 -6
  597. package/js/src/binance.d.ts +1 -0
  598. package/js/src/binance.js +15 -12
  599. package/js/src/binancecoinm.js +0 -6
  600. package/js/src/binanceus.js +0 -6
  601. package/js/src/binanceusdm.js +0 -6
  602. package/js/src/bingx.js +0 -6
  603. package/js/src/bit2c.js +0 -6
  604. package/js/src/bitbank.js +0 -6
  605. package/js/src/bitbns.js +0 -6
  606. package/js/src/bitfinex.js +0 -6
  607. package/js/src/bitflyer.js +0 -6
  608. package/js/src/bitget.js +2 -7
  609. package/js/src/bithumb.js +0 -6
  610. package/js/src/bitmart.js +0 -6
  611. package/js/src/bitmex.js +0 -6
  612. package/js/src/bitopro.js +0 -6
  613. package/js/src/bitrue.js +0 -6
  614. package/js/src/bitso.js +0 -6
  615. package/js/src/bitstamp.js +0 -6
  616. package/js/src/bitteam.js +0 -6
  617. package/js/src/bittrade.js +0 -6
  618. package/js/src/bitvavo.js +0 -6
  619. package/js/src/blockchaincom.js +0 -6
  620. package/js/src/blofin.js +0 -6
  621. package/js/src/btcalpha.js +0 -6
  622. package/js/src/btcbox.js +0 -6
  623. package/js/src/btcmarkets.js +0 -6
  624. package/js/src/btcturk.js +0 -6
  625. package/js/src/bullish.js +0 -6
  626. package/js/src/bybit.d.ts +3 -0
  627. package/js/src/bybit.js +57 -34
  628. package/js/src/cex.js +0 -6
  629. package/js/src/coinbase.js +0 -6
  630. package/js/src/coinbaseadvanced.js +0 -6
  631. package/js/src/coinbaseexchange.js +0 -6
  632. package/js/src/coinbaseinternational.js +0 -6
  633. package/js/src/coincatch.js +1 -7
  634. package/js/src/coincheck.js +0 -6
  635. package/js/src/coinex.js +16 -6
  636. package/js/src/coinmate.d.ts +9 -0
  637. package/js/src/coinmate.js +20 -6
  638. package/js/src/coinmetro.js +0 -6
  639. package/js/src/coinone.js +0 -6
  640. package/js/src/coinsph.js +23 -6
  641. package/js/src/coinspot.js +0 -6
  642. package/js/src/cryptocom.js +7 -6
  643. package/js/src/cryptomus.js +0 -6
  644. package/js/src/deepcoin.js +0 -6
  645. package/js/src/defx.js +0 -6
  646. package/js/src/delta.js +0 -6
  647. package/js/src/deribit.js +0 -6
  648. package/js/src/derive.js +0 -6
  649. package/js/src/digifinex.js +0 -6
  650. package/js/src/dydx.js +0 -6
  651. package/js/src/exmo.js +0 -6
  652. package/js/src/fmfwio.js +0 -6
  653. package/js/src/foxbit.js +0 -6
  654. package/js/src/gate.js +2 -6
  655. package/js/src/gateio.js +0 -6
  656. package/js/src/gemini.js +0 -6
  657. package/js/src/hashkey.js +0 -6
  658. package/js/src/hibachi.js +0 -6
  659. package/js/src/hitbtc.js +0 -6
  660. package/js/src/hollaex.js +0 -6
  661. package/js/src/htx.js +0 -6
  662. package/js/src/huobi.js +0 -6
  663. package/js/src/hyperliquid.js +12 -21
  664. package/js/src/independentreserve.js +0 -6
  665. package/js/src/indodax.js +0 -6
  666. package/js/src/kraken.js +0 -6
  667. package/js/src/krakenfutures.js +0 -6
  668. package/js/src/kucoin.js +0 -6
  669. package/js/src/kucoinfutures.js +0 -6
  670. package/js/src/latoken.js +0 -6
  671. package/js/src/lbank.js +0 -6
  672. package/js/src/luno.js +0 -6
  673. package/js/src/mercado.js +0 -6
  674. package/js/src/mexc.js +0 -6
  675. package/js/src/modetrade.js +0 -6
  676. package/js/src/myokx.js +0 -6
  677. package/js/src/ndax.js +0 -6
  678. package/js/src/novadax.js +0 -6
  679. package/js/src/oceanex.js +0 -6
  680. package/js/src/okx.js +0 -6
  681. package/js/src/okxus.js +0 -6
  682. package/js/src/onetrading.js +0 -6
  683. package/js/src/oxfun.js +0 -6
  684. package/js/src/p2b.js +0 -6
  685. package/js/src/paradex.js +0 -6
  686. package/js/src/paymium.js +0 -6
  687. package/js/src/phemex.js +0 -6
  688. package/js/src/poloniex.js +0 -6
  689. package/js/src/pro/alpaca.js +0 -6
  690. package/js/src/pro/apex.js +0 -6
  691. package/js/src/pro/arkham.js +0 -6
  692. package/js/src/pro/ascendex.js +0 -6
  693. package/js/src/pro/backpack.js +0 -6
  694. package/js/src/pro/bequant.js +0 -6
  695. package/js/src/pro/binance.js +1 -7
  696. package/js/src/pro/binancecoinm.js +0 -6
  697. package/js/src/pro/binanceus.js +0 -6
  698. package/js/src/pro/binanceusdm.js +0 -6
  699. package/js/src/pro/bingx.js +0 -6
  700. package/js/src/pro/bitfinex.js +0 -6
  701. package/js/src/pro/bitget.js +0 -6
  702. package/js/src/pro/bithumb.js +0 -6
  703. package/js/src/pro/bitmart.js +0 -6
  704. package/js/src/pro/bitmex.js +0 -6
  705. package/js/src/pro/bitopro.js +0 -6
  706. package/js/src/pro/bitrue.js +0 -6
  707. package/js/src/pro/bitstamp.js +0 -6
  708. package/js/src/pro/bittrade.js +0 -6
  709. package/js/src/pro/bitvavo.js +0 -6
  710. package/js/src/pro/blockchaincom.js +0 -6
  711. package/js/src/pro/blofin.js +0 -6
  712. package/js/src/pro/bullish.js +0 -6
  713. package/js/src/pro/bybit.js +1 -7
  714. package/js/src/pro/cex.js +0 -6
  715. package/js/src/pro/coinbase.js +0 -6
  716. package/js/src/pro/coinbaseadvanced.js +0 -6
  717. package/js/src/pro/coinbaseexchange.js +0 -6
  718. package/js/src/pro/coinbaseinternational.js +0 -6
  719. package/js/src/pro/coincatch.js +0 -6
  720. package/js/src/pro/coincheck.js +0 -6
  721. package/js/src/pro/coinex.js +0 -6
  722. package/js/src/pro/coinone.js +0 -6
  723. package/js/src/pro/cryptocom.js +0 -6
  724. package/js/src/pro/deepcoin.js +0 -6
  725. package/js/src/pro/defx.js +0 -6
  726. package/js/src/pro/deribit.js +0 -6
  727. package/js/src/pro/derive.js +0 -6
  728. package/js/src/pro/dydx.js +0 -6
  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 +0 -6
  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.js +0 -6
  765. package/js/src/probit.js +0 -6
  766. package/js/src/protobuf/mexc/compiled.cjs +0 -6
  767. package/js/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +0 -6
  768. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/keys.js +0 -6
  769. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +0 -6
  770. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +0 -6
  771. package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +0 -6
  772. package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +0 -6
  773. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +0 -6
  774. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/block_rate_limit_config.js +0 -6
  775. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +0 -6
  776. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/equity_tier_limit_config.js +0 -6
  777. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/finalize_block.js +0 -6
  778. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations.js +0 -6
  779. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations_config.js +0 -6
  780. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/matches.js +0 -6
  781. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +0 -6
  782. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +0 -6
  783. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +0 -6
  784. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +0 -6
  785. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +0 -6
  786. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/asset_position.js +0 -6
  787. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/perpetual_position.js +0 -6
  788. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +0 -6
  789. package/js/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +0 -6
  790. package/js/src/static_dependencies/dydx-v4-client/helpers.js +0 -6
  791. package/js/src/static_dependencies/dydx-v4-client/long/index.cjs +0 -6
  792. package/js/src/static_dependencies/dydx-v4-client/onboarding.js +0 -6
  793. package/js/src/static_dependencies/dydx-v4-client/registry.js +0 -6
  794. package/js/src/static_dependencies/ethers/abi-coder.js +0 -6
  795. package/js/src/static_dependencies/ethers/address/address.js +0 -6
  796. package/js/src/static_dependencies/ethers/address/checks.js +0 -6
  797. package/js/src/static_dependencies/ethers/address/contract-address.js +0 -6
  798. package/js/src/static_dependencies/ethers/address/index.js +0 -6
  799. package/js/src/static_dependencies/ethers/bytes32.js +0 -6
  800. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
  801. package/js/src/static_dependencies/ethers/coders/address.js +0 -6
  802. package/js/src/static_dependencies/ethers/coders/anonymous.js +0 -6
  803. package/js/src/static_dependencies/ethers/coders/array.js +0 -6
  804. package/js/src/static_dependencies/ethers/coders/boolean.js +0 -6
  805. package/js/src/static_dependencies/ethers/coders/bytes.js +0 -6
  806. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -6
  807. package/js/src/static_dependencies/ethers/coders/null.js +0 -6
  808. package/js/src/static_dependencies/ethers/coders/number.js +0 -6
  809. package/js/src/static_dependencies/ethers/coders/string.js +0 -6
  810. package/js/src/static_dependencies/ethers/coders/tuple.js +0 -6
  811. package/js/src/static_dependencies/ethers/fragments.js +0 -6
  812. package/js/src/static_dependencies/ethers/hash/index.js +0 -6
  813. package/js/src/static_dependencies/ethers/hash/solidity.js +0 -6
  814. package/js/src/static_dependencies/ethers/hash/typed-data.js +0 -6
  815. package/js/src/static_dependencies/ethers/index.js +0 -6
  816. package/js/src/static_dependencies/ethers/interface.js +0 -6
  817. package/js/src/static_dependencies/ethers/typed.js +0 -6
  818. package/js/src/static_dependencies/ethers/utils/base58.js +0 -6
  819. package/js/src/static_dependencies/ethers/utils/base64-browser.js +0 -6
  820. package/js/src/static_dependencies/ethers/utils/base64.js +0 -6
  821. package/js/src/static_dependencies/ethers/utils/data.js +0 -6
  822. package/js/src/static_dependencies/ethers/utils/errors.js +0 -6
  823. package/js/src/static_dependencies/ethers/utils/events.js +0 -6
  824. package/js/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
  825. package/js/src/static_dependencies/ethers/utils/index.js +0 -6
  826. package/js/src/static_dependencies/ethers/utils/maths.js +0 -6
  827. package/js/src/static_dependencies/ethers/utils/properties.js +0 -6
  828. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +0 -6
  829. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +0 -6
  830. package/js/src/static_dependencies/ethers/utils/rlp.js +0 -6
  831. package/js/src/static_dependencies/ethers/utils/units.js +0 -6
  832. package/js/src/static_dependencies/ethers/utils/utf8.js +0 -6
  833. package/js/src/static_dependencies/ethers/utils/uuid.js +0 -6
  834. package/js/src/static_dependencies/fflake/browser.js +0 -6
  835. package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -6
  836. package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -6
  837. package/js/src/static_dependencies/jsencrypt/index.js +0 -6
  838. package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -6
  839. package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
  840. package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
  841. package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
  842. package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +0 -6
  843. package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -6
  844. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -6
  845. package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
  846. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -6
  847. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -6
  848. package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
  849. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -6
  850. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
  851. package/js/src/static_dependencies/messagepack/msgpack.js +0 -6
  852. package/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -6
  853. package/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -6
  854. package/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -6
  855. package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -6
  856. package/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -6
  857. package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -6
  858. package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +0 -6
  859. package/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
  860. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -6
  861. package/js/src/static_dependencies/noble-curves/bn.js +0 -6
  862. package/js/src/static_dependencies/noble-curves/ed25519.js +0 -6
  863. package/js/src/static_dependencies/noble-curves/ed448.js +0 -6
  864. package/js/src/static_dependencies/noble-curves/index.js +0 -6
  865. package/js/src/static_dependencies/noble-curves/jubjub.js +0 -6
  866. package/js/src/static_dependencies/noble-curves/p256.js +0 -6
  867. package/js/src/static_dependencies/noble-curves/p384.js +0 -6
  868. package/js/src/static_dependencies/noble-curves/p521.js +0 -6
  869. package/js/src/static_dependencies/noble-curves/pasta.js +0 -6
  870. package/js/src/static_dependencies/noble-curves/secp256k1.js +0 -6
  871. package/js/src/static_dependencies/noble-hashes/_assert.js +0 -6
  872. package/js/src/static_dependencies/noble-hashes/_blake2.js +0 -6
  873. package/js/src/static_dependencies/noble-hashes/_sha2.js +0 -6
  874. package/js/src/static_dependencies/noble-hashes/_u64.js +0 -6
  875. package/js/src/static_dependencies/noble-hashes/argon2.js +0 -6
  876. package/js/src/static_dependencies/noble-hashes/blake2b.js +0 -6
  877. package/js/src/static_dependencies/noble-hashes/blake2s.js +0 -6
  878. package/js/src/static_dependencies/noble-hashes/blake3.js +0 -6
  879. package/js/src/static_dependencies/noble-hashes/crypto.js +0 -6
  880. package/js/src/static_dependencies/noble-hashes/cryptoNode.js +0 -6
  881. package/js/src/static_dependencies/noble-hashes/eskdf.js +0 -6
  882. package/js/src/static_dependencies/noble-hashes/hkdf.js +0 -6
  883. package/js/src/static_dependencies/noble-hashes/hmac.js +0 -6
  884. package/js/src/static_dependencies/noble-hashes/index.js +0 -6
  885. package/js/src/static_dependencies/noble-hashes/md5.js +0 -6
  886. package/js/src/static_dependencies/noble-hashes/pbkdf2.js +0 -6
  887. package/js/src/static_dependencies/noble-hashes/ripemd160.js +0 -6
  888. package/js/src/static_dependencies/noble-hashes/scrypt.js +0 -6
  889. package/js/src/static_dependencies/noble-hashes/sha1.js +0 -6
  890. package/js/src/static_dependencies/noble-hashes/sha256.js +0 -6
  891. package/js/src/static_dependencies/noble-hashes/sha3-addons.js +0 -6
  892. package/js/src/static_dependencies/noble-hashes/sha3.js +0 -6
  893. package/js/src/static_dependencies/noble-hashes/sha512.js +0 -6
  894. package/js/src/static_dependencies/noble-hashes/utils.js +0 -6
  895. package/js/src/static_dependencies/node-fetch/body.js +0 -6
  896. package/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -6
  897. package/js/src/static_dependencies/node-fetch/errors/base.js +0 -6
  898. package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -6
  899. package/js/src/static_dependencies/node-fetch/headers.js +0 -6
  900. package/js/src/static_dependencies/node-fetch/index.js +0 -6
  901. package/js/src/static_dependencies/node-fetch/request.js +0 -6
  902. package/js/src/static_dependencies/node-fetch/response.js +0 -6
  903. package/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
  904. package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
  905. package/js/src/static_dependencies/node-fetch/utils/is.js +0 -6
  906. package/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -6
  907. package/js/src/static_dependencies/proxies/agent-base/helpers.js +0 -6
  908. package/js/src/static_dependencies/proxies/agent-base/index.js +0 -6
  909. package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -6
  910. package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -6
  911. package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
  912. package/js/src/static_dependencies/qs/formats.js +0 -6
  913. package/js/src/static_dependencies/qs/index.js +0 -6
  914. package/js/src/static_dependencies/qs/parse.js +0 -6
  915. package/js/src/static_dependencies/qs/stringify.js +0 -6
  916. package/js/src/static_dependencies/qs/utils.js +0 -6
  917. package/js/src/static_dependencies/scure-base/index.js +0 -6
  918. package/js/src/static_dependencies/scure-bip32/index.js +0 -6
  919. package/js/src/static_dependencies/scure-bip39/index.js +0 -6
  920. package/js/src/static_dependencies/scure-bip39/wordlists/english.js +0 -6
  921. package/js/src/static_dependencies/scure-starknet/index.js +0 -6
  922. package/js/src/static_dependencies/starknet/constants.js +0 -6
  923. package/js/src/static_dependencies/starknet/index.js +0 -6
  924. package/js/src/static_dependencies/starknet/types/cairoEnum.js +0 -6
  925. package/js/src/static_dependencies/starknet/types/calldata.js +0 -6
  926. package/js/src/static_dependencies/starknet/types/index.js +0 -6
  927. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
  928. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
  929. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +0 -6
  930. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +0 -6
  931. package/js/src/static_dependencies/starknet/types/lib/index.js +0 -6
  932. package/js/src/static_dependencies/starknet/types/typedData.js +0 -6
  933. package/js/src/static_dependencies/starknet/utils/address.js +0 -6
  934. package/js/src/static_dependencies/starknet/utils/assert.js +0 -6
  935. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +0 -6
  936. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +0 -6
  937. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +0 -6
  938. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -6
  939. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -6
  940. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
  941. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
  942. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
  943. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +0 -6
  944. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -6
  945. package/js/src/static_dependencies/starknet/utils/calldata/index.js +0 -6
  946. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -6
  947. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +0 -6
  948. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -6
  949. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
  950. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -6
  951. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -6
  952. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -6
  953. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +0 -6
  954. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +0 -6
  955. package/js/src/static_dependencies/starknet/utils/encode.js +0 -6
  956. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +0 -6
  957. package/js/src/static_dependencies/starknet/utils/hash/index.js +0 -6
  958. package/js/src/static_dependencies/starknet/utils/merkle.js +0 -6
  959. package/js/src/static_dependencies/starknet/utils/num.js +0 -6
  960. package/js/src/static_dependencies/starknet/utils/selector.js +0 -6
  961. package/js/src/static_dependencies/starknet/utils/shortString.js +0 -6
  962. package/js/src/static_dependencies/starknet/utils/starknetId.js +0 -6
  963. package/js/src/static_dependencies/starknet/utils/typedData.js +0 -6
  964. package/js/src/static_dependencies/starknet/utils/uint256.js +0 -6
  965. package/js/src/static_dependencies/starknet/utils/url.js +0 -6
  966. package/js/src/static_dependencies/watchable/src/index.js +0 -6
  967. package/js/src/static_dependencies/watchable/src/types.js +0 -6
  968. package/js/src/static_dependencies/watchable/src/unpromise.js +0 -6
  969. package/js/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
  970. package/js/src/timex.js +0 -6
  971. package/js/src/tokocrypto.js +0 -6
  972. package/js/src/toobit.js +0 -6
  973. package/js/src/upbit.js +0 -6
  974. package/js/src/wavesexchange.js +0 -6
  975. package/js/src/whitebit.js +4 -8
  976. package/js/src/woo.js +0 -6
  977. package/js/src/woofipro.js +0 -6
  978. package/js/src/xt.js +0 -6
  979. package/js/src/yobit.js +0 -6
  980. package/js/src/zaif.js +0 -6
  981. package/js/src/zebpay.d.ts +361 -0
  982. package/js/src/zebpay.js +1901 -0
  983. package/js/src/zonda.js +0 -6
  984. package/package.json +1 -1
@@ -0,0 +1,1901 @@
1
+ // ---------------------------------------------------------------------------
2
+ import Exchange from './abstract/zebpay.js';
3
+ import { TICK_SIZE } from './base/functions/number.js';
4
+ import { BadRequest, AuthenticationError, NotSupported, RateLimitExceeded, ExchangeNotAvailable, ExchangeError, ArgumentsRequired, InvalidOrder, OrderNotFound, InsufficientFunds } from './base/errors.js';
5
+ import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
6
+ import { Precise } from './base/Precise.js';
7
+ // ---------------------------------------------------------------------------
8
+ /**
9
+ * @class
10
+ * @augments Exchange
11
+ */
12
+ export default class zebpay extends Exchange {
13
+ describe() {
14
+ return this.deepExtend(super.describe(), {
15
+ 'id': 'zebpay',
16
+ 'name': 'Zebpay',
17
+ 'countries': ['IN'],
18
+ 'rateLimit': 50,
19
+ 'version': 'v1',
20
+ 'certified': false,
21
+ 'pro': false,
22
+ 'has': {
23
+ 'CORS': undefined,
24
+ 'spot': true,
25
+ 'margin': false,
26
+ 'swap': true,
27
+ 'future': false,
28
+ 'option': undefined,
29
+ 'addMargin': true,
30
+ 'cancelAllOrders': true,
31
+ 'cancelOrder': true,
32
+ 'cancelOrders': false,
33
+ 'closePosition': true,
34
+ 'createOrder': true,
35
+ 'fetchBalance': true,
36
+ 'fetchCurrencies': true,
37
+ 'fetchLeverage': true,
38
+ 'fetchLeverages': true,
39
+ 'fetchMarkets': true,
40
+ 'fetchMyTrades': true,
41
+ 'fetchOHLCV': true,
42
+ 'fetchOpenOrders': true,
43
+ 'fetchOrder': true,
44
+ 'fetchOrderBook': true,
45
+ 'fetchOrderTrades': true,
46
+ 'fetchPositions': true,
47
+ 'fetchTicker': true,
48
+ 'fetchTickers': true,
49
+ 'fetchTrades': true,
50
+ 'fetchTradingFee': true,
51
+ 'reduceMargin': true,
52
+ 'setLeverage': true,
53
+ },
54
+ 'timeframes': {
55
+ '1m': 1,
56
+ '5m': 5,
57
+ '15m': 15,
58
+ '30m': 30,
59
+ '1h': 60,
60
+ '2h': 120,
61
+ '4h': 480,
62
+ '12h': 720,
63
+ '1d': 1440,
64
+ '1w': 10080,
65
+ },
66
+ 'urls': {
67
+ 'logo': 'https://github.com/user-attachments/assets/8094e7be-55a7-46f4-a087-0ca31b48ecad',
68
+ 'api': {
69
+ 'spot': 'https://sapi.zebpay.com',
70
+ 'swap': 'https://futuresbe.zebpay.com',
71
+ },
72
+ 'test': {
73
+ 'spot': 'https://www.zebstage.com',
74
+ 'swap': 'https://dev-futuresbe.zebstage.com',
75
+ },
76
+ 'www': 'https://www.zebpay.com',
77
+ 'doc': 'https://github.com/zebpay/zebpay-api-references',
78
+ 'fees': 'https://zebpay.com/in/features/pricing',
79
+ },
80
+ 'api': {
81
+ 'public': {
82
+ 'spot': {
83
+ 'get': {
84
+ 'v2/system/time': 10,
85
+ 'v2/system/status': 10,
86
+ 'v2/market/orderbook': 10,
87
+ 'v2/market/trades': 10,
88
+ 'v2/market/ticker': 10,
89
+ 'v2/market/allTickers': 10,
90
+ 'v2/ex/exchangeInfo': 10,
91
+ 'v2/ex/currencies': 10,
92
+ 'v2/market/klines': 10,
93
+ 'v2/ex/tradefees': 10,
94
+ },
95
+ },
96
+ 'swap': {
97
+ 'get': {
98
+ 'v1/system/time': 10,
99
+ 'v1/system/status': 10,
100
+ 'v1/exchange/tradefee': 10,
101
+ 'v1/exchange/tradefees': 10,
102
+ 'v1/market/orderBook': 10,
103
+ 'v1/market/ticker24Hr': 10,
104
+ 'v1/market/markets': 10,
105
+ 'v1/market/aggTrade': 10,
106
+ },
107
+ 'post': {
108
+ 'v1/market/klines': 10,
109
+ },
110
+ },
111
+ },
112
+ 'private': {
113
+ 'spot': {
114
+ 'post': {
115
+ 'v2/ex/orders': 10,
116
+ },
117
+ 'get': {
118
+ 'v2/ex/orders': 10,
119
+ 'v2/account/balance': 10,
120
+ 'v2/ex/tradefee': 10,
121
+ 'v2/ex/order': 10,
122
+ 'v2/ex/order/fills': 10,
123
+ },
124
+ 'delete': {
125
+ 'v2/ex/order': 10,
126
+ 'v2/ex/orders': 10,
127
+ 'v2/ex/orders/cancelAll': 10,
128
+ },
129
+ },
130
+ 'swap': {
131
+ 'get': {
132
+ 'v1/wallet/balance': 10,
133
+ 'v1/trade/order': 10,
134
+ 'v1/trade/order/open-orders': 10,
135
+ 'v1/trade/userLeverages': 10,
136
+ 'v1/trade/userLeverage': 10,
137
+ 'v1/trade/positions': 10,
138
+ 'v1/trade/history': 10,
139
+ },
140
+ 'post': {
141
+ 'v1/trade/order': 10,
142
+ 'v1/trade/order/addTPSL': 10,
143
+ 'v1/trade/addMargin': 10,
144
+ 'v1/trade/reduceMargin': 10,
145
+ 'v1/trade/position/close': 10,
146
+ 'v1/trade/update/userLeverage': 10,
147
+ },
148
+ 'delete': {
149
+ 'v1/trade/order': 10,
150
+ },
151
+ },
152
+ },
153
+ },
154
+ 'precisionMode': TICK_SIZE,
155
+ 'fees': {},
156
+ 'commonCurrencies': {},
157
+ 'requiredCredentials': {
158
+ 'apiKey': true,
159
+ 'secret': true,
160
+ },
161
+ 'options': {
162
+ 'fetchMarkets': {
163
+ 'types': ['spot', 'swap'],
164
+ },
165
+ 'defaultType': 'spot', // 'spot', 'swap'
166
+ },
167
+ 'features': {
168
+ 'default': {
169
+ 'fetchOHLCV': {
170
+ 'limit': 100,
171
+ },
172
+ },
173
+ },
174
+ 'exceptions': {
175
+ 'exact': {
176
+ '77': InvalidOrder,
177
+ '400': BadRequest,
178
+ '401': AuthenticationError,
179
+ '403': NotSupported,
180
+ '404': NotSupported,
181
+ '429': RateLimitExceeded,
182
+ '500': ExchangeNotAvailable,
183
+ '503': ExchangeNotAvailable,
184
+ '3013': OrderNotFound,
185
+ 'Order quantity is out of range': InvalidOrder,
186
+ 'Invalid trade order type': InvalidOrder,
187
+ 'Insufficient margin': InsufficientFunds,
188
+ 'insufficient balance': InsufficientFunds,
189
+ 'leverage must be in [1,8]': BadRequest,
190
+ 'the request you sent is invalid': BadRequest,
191
+ },
192
+ 'broad': {
193
+ 'InvalidOrder': InvalidOrder, // Rate should be in the range of
194
+ },
195
+ },
196
+ });
197
+ }
198
+ /**
199
+ * @method
200
+ * @name zebpay#fetchStatus
201
+ * @description the latest known information on the availability of the exchange API
202
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/public-endpoints.md#system-status
203
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/public-endpoints/system.md#get-system-status
204
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
205
+ * @returns {object} a [status structure]{@link https://docs.ccxt.com/#/?id=exchange-status-structure}
206
+ */
207
+ async fetchStatus(params = {}) {
208
+ let type = undefined;
209
+ [type, params] = this.handleMarketTypeAndParams('fetchStatus', undefined, params);
210
+ const isSpot = (type === 'spot');
211
+ let response = undefined;
212
+ let data = {};
213
+ if (isSpot) {
214
+ response = await this.publicSpotGetV2SystemStatus(params);
215
+ data = response;
216
+ }
217
+ else {
218
+ response = await this.publicSwapGetV1SystemStatus(params);
219
+ data = this.safeDict(response, 'data', {});
220
+ }
221
+ //
222
+ // {
223
+ // "statusDescription": "OK",
224
+ // "data":
225
+ // {
226
+ // "systemStatus": "ok"
227
+ // }
228
+ // "statusCode": 200,
229
+ // "customMessage": ["OK"]
230
+ // }
231
+ //
232
+ const status = this.safeString2(data, 'systemStatus', 'status');
233
+ return {
234
+ 'status': status,
235
+ 'updated': undefined,
236
+ 'eta': undefined,
237
+ 'url': undefined,
238
+ 'info': response,
239
+ };
240
+ }
241
+ /**
242
+ * @method
243
+ * @name zebpayfutures#fetchTime
244
+ * @description fetches the current integer timestamp in milliseconds from the poloniexfutures server
245
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/public-endpoints.md#get-server-time
246
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/public-endpoints/system.md#get-system-time
247
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
248
+ * @returns {int} the current integer timestamp in milliseconds from the poloniexfutures server
249
+ */
250
+ async fetchTime(params = {}) {
251
+ let type = undefined;
252
+ [type, params] = this.handleMarketTypeAndParams('fetchTime', undefined, params);
253
+ const isSpot = (type === 'spot');
254
+ let response = undefined;
255
+ let data = {};
256
+ if (isSpot) {
257
+ response = await this.publicSpotGetV2SystemTime(params);
258
+ data = response;
259
+ }
260
+ else {
261
+ response = await this.publicSwapGetV1SystemTime(params);
262
+ data = this.safeDict(response, 'data', {});
263
+ }
264
+ //
265
+ // {
266
+ // "statusDescription": "OK",
267
+ // "data":
268
+ // {
269
+ // "timestamp": 1546837113087
270
+ // }
271
+ // "statusCode": 200,
272
+ // "customMessage": ["OK"]
273
+ // }
274
+ //
275
+ const time = this.safeInteger(data, 'timestamp');
276
+ return time;
277
+ }
278
+ /**
279
+ * @method
280
+ * @name zebpay#fetchMarkets
281
+ * @description retrieves data on all markets for zebpay
282
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/public-endpoints.md#get-trading-pairs
283
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/public-endpoints/market.md#fetch-markets
284
+ * @param {object} [params] extra parameters specific to the exchange api endpoint
285
+ * @returns {object[]} an array of objects representing market data
286
+ */
287
+ async fetchMarkets(params = {}) {
288
+ const promisesUnresolved = [];
289
+ const fetchMarketsOptions = this.safeDict(this.options, 'fetchMarkets');
290
+ const defaultMarkets = ['spot', 'swap'];
291
+ const types = this.safeList(fetchMarketsOptions, 'types', defaultMarkets);
292
+ for (let i = 0; i < types.length; i++) {
293
+ const type = types[i];
294
+ if (type === 'spot') {
295
+ promisesUnresolved.push(this.fetchSpotMarkets(params));
296
+ }
297
+ else if (type === 'swap') {
298
+ promisesUnresolved.push(this.fetchSwapMarkets(params));
299
+ }
300
+ else {
301
+ throw new ExchangeError(this.id + ' fetchMarkets() this.options fetchMarkets "' + type + '" is not a supported market type');
302
+ }
303
+ }
304
+ const promises = await Promise.all(promisesUnresolved);
305
+ const spotMarkets = this.safeList(promises, 0, []);
306
+ const futureMarkets = this.safeList(promises, 1, []);
307
+ return this.arrayConcat(spotMarkets, futureMarkets);
308
+ }
309
+ /**
310
+ * @method
311
+ * @name zebpay#fetchCurrencies
312
+ * @description fetches all available currencies on an exchange
313
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/public-endpoints.md#get-coin-settings
314
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
315
+ * @returns {object} an associative dictionary of currencies
316
+ */
317
+ async fetchCurrencies(params = {}) {
318
+ const response = await this.publicSpotGetV2ExCurrencies(params);
319
+ //
320
+ // {
321
+ // "data": [
322
+ // {
323
+ // "currency": "BTC",
324
+ // "name": "BTC",
325
+ // "fullName": "150",
326
+ // "precision": "0.2",
327
+ // "type": "fiat",
328
+ // "isDebitEnabled": false,
329
+ // "chains": [
330
+ // {
331
+ // "chainName": "Bitcoin",
332
+ // "withdrawalMinSize": "0.000482",
333
+ // "depositMinSize": "0.00000001",
334
+ // "withdrawalFee": "0.00040000",
335
+ // "isWithdrawEnabled": "true",
336
+ // "isDepositEnabled": "true",
337
+ // "contractAddress": "0x095418A82BC2439703b69fbE1210824F2247D77c",
338
+ // "withdrawPrecision": "8",
339
+ // "maxWithdraw": "2.43090487000000",
340
+ // "maxDeposit": "100.00000000",
341
+ // "needTag": "false",
342
+ // "chainId": "bitcoin",
343
+ // "AddressRegex": "^tb1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{39,59}|m[a-zA-Z0-9]{25,34}|n[a-zA-Z0-9]{25,34}|^2[a-zA-Z0-9]{25,34}$"
344
+ // }
345
+ // ]
346
+ // }
347
+ // ]
348
+ // }
349
+ //
350
+ const rows = this.safeList(response, 'data', []);
351
+ const result = {};
352
+ for (let i = 0; i < rows.length; i++) {
353
+ const currency = rows[i];
354
+ const currencyId = this.safeString(currency, 'currency');
355
+ const code = this.safeCurrencyCode(currencyId);
356
+ const name = this.safeString(currency, 'name');
357
+ const precision = this.parseNumber(this.parsePrecision(this.safeString(currency, 'precision')));
358
+ const chains = this.safeList(currency, 'chains', []);
359
+ const networks = {};
360
+ let minWithdrawFeeString = undefined;
361
+ let minWithdrawString = undefined;
362
+ let minDepositString = undefined;
363
+ let deposit = false;
364
+ let withdraw = false;
365
+ for (let j = 0; j < chains.length; j++) {
366
+ const chain = chains[j];
367
+ const networkId = this.safeString(chain, 'chainId');
368
+ const networkCode = this.networkIdToCode(networkId);
369
+ const depositAllowed = this.safeBool(chain, 'isDepositEnabled') === true;
370
+ deposit = (depositAllowed) ? depositAllowed : deposit;
371
+ const withdrawAllowed = this.safeBool(chain, 'isWithdrawEnabled') === true;
372
+ withdraw = (withdrawAllowed) ? withdrawAllowed : withdraw;
373
+ const withdrawFeeString = this.safeString(chain, 'withdrawalFee');
374
+ if (withdrawFeeString !== undefined) {
375
+ minWithdrawFeeString = (minWithdrawFeeString === undefined) ? withdrawFeeString : Precise.stringMin(withdrawFeeString, minWithdrawFeeString);
376
+ }
377
+ const minNetworkWithdrawString = this.safeString(chain, 'withdrawalMinSize');
378
+ if (minNetworkWithdrawString !== undefined) {
379
+ minWithdrawString = (minWithdrawString === undefined) ? minNetworkWithdrawString : Precise.stringMin(minNetworkWithdrawString, minWithdrawString);
380
+ }
381
+ const minNetworkDepositString = this.safeString(chain, 'depositMinSize');
382
+ if (minNetworkDepositString !== undefined) {
383
+ minDepositString = (minDepositString === undefined) ? minNetworkDepositString : Precise.stringMin(minNetworkDepositString, minDepositString);
384
+ }
385
+ networks[networkCode] = {
386
+ 'info': chain,
387
+ 'id': networkId,
388
+ 'network': networkCode,
389
+ 'active': depositAllowed && withdrawAllowed,
390
+ 'deposit': depositAllowed,
391
+ 'withdraw': withdrawAllowed,
392
+ 'fee': this.parseNumber(withdrawFeeString),
393
+ 'precision': precision,
394
+ 'limits': {
395
+ 'withdraw': {
396
+ 'min': this.parseNumber(minNetworkWithdrawString),
397
+ 'max': undefined,
398
+ },
399
+ 'deposit': {
400
+ 'min': this.parseNumber(minNetworkDepositString),
401
+ 'max': undefined,
402
+ },
403
+ },
404
+ };
405
+ }
406
+ result[code] = this.safeCurrencyStructure({
407
+ 'info': currency,
408
+ 'code': code,
409
+ 'id': currencyId,
410
+ 'name': name,
411
+ 'active': deposit && withdraw,
412
+ 'deposit': deposit,
413
+ 'withdraw': withdraw,
414
+ 'fee': this.parseNumber(minWithdrawFeeString),
415
+ 'precision': precision,
416
+ 'limits': {
417
+ 'amount': {
418
+ 'min': undefined,
419
+ 'max': undefined,
420
+ },
421
+ 'withdraw': {
422
+ 'min': this.parseNumber(minWithdrawString),
423
+ 'max': undefined,
424
+ },
425
+ 'deposit': {
426
+ 'min': this.parseNumber(minDepositString),
427
+ 'max': undefined,
428
+ },
429
+ },
430
+ 'networks': networks,
431
+ });
432
+ }
433
+ return result;
434
+ }
435
+ /**
436
+ * @method
437
+ * @name zebpay#fetchTradingFee
438
+ * @description fetch the trading fees for a market
439
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/private-endpoints.md#get-exchange-fee
440
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/public-endpoints/exchange.md#get-trade-fee-single-symbol
441
+ * @param {string} symbol unified symbol of the market to fetch the order book for
442
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
443
+ * @param {object} [params.side] side to fetch trading fee
444
+ * @returns {object} a [status structure]{@link https://docs.ccxt.com/#/?id=exchange-status-structure}
445
+ */
446
+ async fetchTradingFee(symbol, params = {}) {
447
+ await this.loadMarkets();
448
+ const market = this.market(symbol);
449
+ let response = undefined;
450
+ let data;
451
+ const request = {
452
+ 'symbol': market['id'],
453
+ };
454
+ if (market['spot']) {
455
+ response = await this.privateSpotGetV2ExTradefee(this.extend(request, params));
456
+ //
457
+ // {
458
+ // "statusDescription": "Success",
459
+ // "data":
460
+ // {
461
+ // "symbol": "BTCINR",
462
+ // "takerFeeRate": "0.01",
463
+ // "makerFeeRate": "0.05",
464
+ // "percentage": true
465
+ // } ,
466
+ // "statusCode": 200,
467
+ // }
468
+ data = this.safeDict(response, 'data', {});
469
+ }
470
+ else {
471
+ response = await this.publicSwapGetV1ExchangeTradefee(this.extend(request, params));
472
+ //
473
+ // {
474
+ // "statusDescription": "OK",
475
+ // "data":
476
+ // [
477
+ // {
478
+ // "symbol": "BTCINR",
479
+ // "takerFee": "0.01",
480
+ // "makerFee": "0.05"
481
+ // }
482
+ // ] ,
483
+ // "statusCode": 200,
484
+ // "customMessage": ["OK"]
485
+ // }
486
+ //
487
+ const responseData = this.safeList(response, 'data', []);
488
+ data = this.safeDict(responseData, 0);
489
+ }
490
+ return this.parseTradingFee(data, market);
491
+ }
492
+ /**
493
+ * @method
494
+ * @name zebpay(futures)#fetchTradingFees
495
+ * @description fetch the trading fees for multiple markets
496
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/public-endpoints/exchange.md#get-trade-fees-all-symbols
497
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
498
+ * @returns {object} a [status structure]{@link https://docs.ccxt.com/#/?id=exchange-status-structure}
499
+ */
500
+ async fetchTradingFees(params = {}) {
501
+ let type = undefined;
502
+ [type, params] = this.handleMarketTypeAndParams('fetchTradingFees', undefined, params);
503
+ let response = undefined;
504
+ if (type === 'spot') {
505
+ response = await this.publicSpotGetV2ExTradefees(params);
506
+ }
507
+ else {
508
+ response = await this.publicSwapGetV1ExchangeTradefees(params);
509
+ }
510
+ //
511
+ // {
512
+ // "statusDescription": "OK",
513
+ // "data": [
514
+ // {
515
+ // "symbol": "BTCINR",
516
+ // "takerFee": "0.01",
517
+ // "makerFee": "0.05"
518
+ // }
519
+ // ],
520
+ // "statusCode": 200,
521
+ // "customMessage": ["OK"]
522
+ // }
523
+ //
524
+ const fees = this.safeList(response, 'data', []);
525
+ const result = {};
526
+ for (let i = 0; i < fees.length; i++) {
527
+ const fee = this.parseTradingFee(fees[i]);
528
+ const symbol = fee['symbol'];
529
+ result[symbol] = fee;
530
+ }
531
+ return result;
532
+ }
533
+ /**
534
+ * @method
535
+ * @name zebpay#fetchOrderBook
536
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
537
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/public-endpoints.md#get-order-book
538
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/public-endpoints/market.md#get-order-book
539
+ * @param {string} symbol unified symbol of the market to fetch the order book for
540
+ * @param {int} [limit] the maximum amount of order book entries to return
541
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
542
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
543
+ */
544
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
545
+ await this.loadMarkets();
546
+ const market = this.market(symbol);
547
+ const request = {
548
+ 'symbol': market['id'],
549
+ };
550
+ let response = undefined;
551
+ if (market['spot']) {
552
+ if (limit !== undefined) {
553
+ request['limit'] = limit;
554
+ }
555
+ //
556
+ // {
557
+ // "asks": [
558
+ // [5000, 1000], //Price, quantity
559
+ // [6000, 1983] //Price, quantity
560
+ // ],
561
+ // "bids": [
562
+ // [3200, 800], //Price, quantity
563
+ // [3100, 100] //Price, quantity
564
+ // ],
565
+ // }
566
+ // }
567
+ response = await this.publicSpotGetV2MarketOrderbook(this.extend(request, params));
568
+ }
569
+ else {
570
+ response = await this.publicSwapGetV1MarketOrderBook(this.extend(request, params));
571
+ }
572
+ const bookData = this.safeDict(response, 'data', {});
573
+ const orderbook = this.parseOrderBook(bookData, market['symbol'], undefined, 'bids', 'asks', 0, 1);
574
+ orderbook['nonce'] = this.safeInteger(bookData, 'nonce');
575
+ return orderbook;
576
+ }
577
+ /**
578
+ * @method
579
+ * @name zebpay#fetchTicker
580
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
581
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/public-endpoints.md#get-ticker
582
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/public-endpoints/market.md#get-24hr-ticker
583
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
584
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
585
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
586
+ */
587
+ async fetchTicker(symbol, params = {}) {
588
+ await this.loadMarkets();
589
+ const market = this.market(symbol);
590
+ const request = {
591
+ 'symbol': market['id'],
592
+ };
593
+ let response = undefined;
594
+ if (market['spot']) {
595
+ response = await this.publicSpotGetV2MarketTicker(this.extend(request, params));
596
+ //
597
+ // [
598
+ // {
599
+ // "symbol": "BTC-INR",
600
+ // "bestBid": "4900000",
601
+ // "bestBidQty": "0.00014938",
602
+ // "bestAsk": "",
603
+ // "bestAskQty": "0",
604
+ // "priceChange": "-98134.56",
605
+ // "priceChangePercent": "-1.84",
606
+ // "high": "5433400",
607
+ // "low": "5333400",
608
+ // "vol": "0.0002",
609
+ // "volValue": "1066.68",
610
+ // "last": "5333400"
611
+ // }
612
+ // ]
613
+ //
614
+ }
615
+ else {
616
+ response = await this.publicSwapGetV1MarketTicker24Hr(this.extend(request, params));
617
+ }
618
+ const data = this.safeDict(response, 'data', {});
619
+ return this.parseTicker(data, market);
620
+ }
621
+ /**
622
+ * @method
623
+ * @name zebpay#fetchTickers
624
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
625
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/public-endpoints.md#get-all-tickers
626
+ * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
627
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
628
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
629
+ */
630
+ async fetchTickers(symbols = undefined, params = {}) {
631
+ let type = undefined;
632
+ [type, params] = this.handleMarketTypeAndParams('fetchTickers', undefined, params);
633
+ if (type !== 'spot') {
634
+ throw new NotSupported(this.id + ' fetchTickers() does not support ' + type + ' markets');
635
+ }
636
+ await this.loadMarkets();
637
+ symbols = this.marketSymbols(symbols);
638
+ const response = await this.publicSpotGetV2MarketAllTickers(params);
639
+ //
640
+ // [
641
+ // {
642
+ // "symbol": "BTC-INR",
643
+ // "bestBid": "4900000",
644
+ // "bestBidQty": "0.00014938",
645
+ // "bestAsk": "",
646
+ // "bestAskQty": "0",
647
+ // "priceChange": "-98134.56",
648
+ // "priceChangePercent": "-1.84",
649
+ // "high": "5433400",
650
+ // "low": "5333400",
651
+ // "vol": "0.0002",
652
+ // "volValue": "1066.68",
653
+ // "last": "5333400"
654
+ // }
655
+ // ]
656
+ //
657
+ const tickerList = this.safeList(response, 'data', []);
658
+ return this.parseTickers(tickerList, symbols);
659
+ }
660
+ /**
661
+ * @method
662
+ * @name zebpay#fetchOHLCV
663
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
664
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/public-endpoints.md#get-klinescandlesticks
665
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/public-endpoints/market.md#-get-k-lines-ohlcv-data
666
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
667
+ * @param {string} timeframe the length of time each candle represents
668
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
669
+ * @param {int} [limit] the maximum amount of candles to fetch
670
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
671
+ * @param {int} [params.endtime] the latest time in ms to fetch orders for
672
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
673
+ */
674
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
675
+ await this.loadMarkets();
676
+ const market = this.market(symbol);
677
+ if (limit === undefined) {
678
+ limit = 100; // default is 200
679
+ }
680
+ const request = {
681
+ 'symbol': market['id'],
682
+ };
683
+ if (market['spot']) {
684
+ request['interval'] = this.safeString(this.timeframes, timeframe, timeframe);
685
+ }
686
+ else {
687
+ request['interval'] = timeframe;
688
+ }
689
+ if (market['contract'] && (limit !== undefined)) {
690
+ request['limit'] = limit;
691
+ }
692
+ if (since !== undefined) {
693
+ if (market['spot']) {
694
+ request['startTime'] = since;
695
+ }
696
+ else {
697
+ request['since'] = since;
698
+ }
699
+ }
700
+ const until = this.safeInteger2(params, 'until', 'endtime');
701
+ if (until !== undefined) {
702
+ request['endTime'] = until;
703
+ params = this.omit(params, ['endtime', 'until']);
704
+ }
705
+ let response = undefined;
706
+ if (market['spot']) {
707
+ if (until === undefined || since === undefined) {
708
+ throw new ArgumentsRequired(this.id + ' fetchOHLCV() requires a both a since and until/endtime parameter for spot markets');
709
+ }
710
+ response = await this.publicSpotGetV2MarketKlines(this.extend(request, params));
711
+ }
712
+ else {
713
+ response = await this.publicSwapPostV1MarketKlines(this.extend(request, params));
714
+ }
715
+ //
716
+ // [
717
+ // [
718
+ // "1670608800000",
719
+ // "17071",
720
+ // "17073",
721
+ // "17027",
722
+ // "17055.5",
723
+ // "268611",
724
+ // "15.74462667"
725
+ // ],
726
+ // [
727
+ // "1670605200000",
728
+ // "17071.5",
729
+ // "17071.5",
730
+ // "17061",
731
+ // "17071",
732
+ // "4177",
733
+ // "0.24469757"
734
+ // ],
735
+ // [
736
+ // "1670601600000",
737
+ // "17086.5",
738
+ // "17088",
739
+ // "16978",
740
+ // "17071.5",
741
+ // "6356",
742
+ // "0.37288112"
743
+ // ]
744
+ // ]
745
+ //
746
+ const data = this.safeList(response, 'data', []);
747
+ return this.parseOHLCVs(data, market, timeframe, since, limit);
748
+ }
749
+ /**
750
+ * @method
751
+ * @name zebpay#fetchTrades
752
+ * @description get the list of most recent trades for a particular symbol
753
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/public-endpoints.md#get-recent-trades
754
+ * @see https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/public-endpoints/market.md#get-aggregate-trades
755
+ * @param {string} symbol unified symbol of the market to fetch trades for
756
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
757
+ * @param {int} [limit] the maximum amount of trades to fetch
758
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
759
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
760
+ */
761
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
762
+ await this.loadMarkets();
763
+ const market = this.market(symbol);
764
+ const request = {
765
+ 'symbol': market['id'],
766
+ };
767
+ if (market['spot'] && limit !== undefined) {
768
+ request['limit'] = limit;
769
+ }
770
+ let response = undefined;
771
+ if (market['spot']) {
772
+ response = await this.publicSpotGetV2MarketTrades(this.extend(request, params));
773
+ }
774
+ else {
775
+ response = await this.publicSwapGetV1MarketAggTrade(this.extend(request, params));
776
+ }
777
+ //
778
+ // [
779
+ // {
780
+ // "id" : "60014521",
781
+ // "price" : "23162.94",
782
+ // "qty" : "0.00009",
783
+ // "side" : "SELL",
784
+ // "time" : 1659684602042,
785
+ // "isBuyerMaker" : 1659684602036
786
+ // }
787
+ // ]
788
+ //
789
+ const data = this.safeList(response, 'data', []);
790
+ return this.parseTrades(data, market, since, limit);
791
+ }
792
+ /**
793
+ * @method
794
+ * @name zebpay#fetchMyTrades
795
+ * @description get the list of most recent trades for a particular symbol
796
+ * @see https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/private-endpoints/trade.md#-get-trade-history
797
+ * @param {string} symbol unified symbol of the market to fetch trades for
798
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
799
+ * @param {int} [limit] the maximum amount of trades to fetch
800
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
801
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
802
+ */
803
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
804
+ await this.loadMarkets();
805
+ let market = undefined;
806
+ if (symbol !== undefined) {
807
+ market = this.market(symbol);
808
+ }
809
+ let type = undefined;
810
+ [type, params] = this.handleMarketTypeAndParams('fetchMyTrades', market, params);
811
+ let response = undefined;
812
+ if (type === 'spot') {
813
+ throw new NotSupported(this.id + ' fetchMyTrades() does not support spot markets');
814
+ }
815
+ else {
816
+ response = await this.privateSwapGetV1TradeHistory(params);
817
+ }
818
+ const data = this.safeDict(response, 'data', {});
819
+ const items = this.safeList(data, 'items', []);
820
+ return this.parseTrades(items, market, since, limit);
821
+ }
822
+ /**
823
+ * @method
824
+ * @name zebpatspot#fetchOrderTrades
825
+ * @description fetch all the trades made from a single order
826
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/private-endpoints.md#get-order-fills
827
+ * @param {string} id order id
828
+ * @param {string} symbol unified market symbol
829
+ * @param {int} [since] the earliest time in ms to fetch trades for
830
+ * @param {int} [limit] the maximum number of trades to retrieve
831
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
832
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
833
+ */
834
+ async fetchOrderTrades(id, symbol = undefined, since = undefined, limit = undefined, params = {}) {
835
+ let type = undefined;
836
+ [type, params] = this.handleMarketTypeAndParams('fetchOrderTrades', undefined, params);
837
+ if (type !== 'spot') {
838
+ throw new NotSupported(this.id + ' fetchOrderTrades() does not support ' + type + ' markets');
839
+ }
840
+ await this.loadMarkets();
841
+ const request = {
842
+ 'orderId': id,
843
+ };
844
+ const response = await this.privateSpotGetV2ExOrderFills(this.extend(request, params));
845
+ //
846
+ // {
847
+ // "orderId": "456789",
848
+ // "symbol": "LINK_USDT",
849
+ // "origQty": "1.5",
850
+ // "orderId": "30249408733945856",
851
+ // "side": "BUY",
852
+ // "type": "LIMIT",
853
+ // "matchRole": "MAKER",
854
+ // "createTime": 1648200366864,
855
+ // "price": "3.1",
856
+ // "avgExecutedPrice": "2.3456"
857
+ // "openQty": "1",
858
+ // "filledQty": "0",
859
+ // "fees": "0.00145",
860
+ // }
861
+ //
862
+ const data = this.safeDict(response, 'data', {});
863
+ const trades = [data];
864
+ return this.parseTrades(trades);
865
+ }
866
+ parseTrade(trade, market = undefined) {
867
+ //
868
+ // fetchMyTrades
869
+ //
870
+ // {
871
+ // "id": "32164924331503616",
872
+ // "symbol": "LINK_USDT",
873
+ // "accountType": "SPOT",
874
+ // "orderId": "32164923987566592",
875
+ // "side": "SELL",
876
+ // "type": "MARKET",
877
+ // "matchRole": "TAKER",
878
+ // "createTime": 1648635115525,
879
+ // "price": "11",
880
+ // "quantity": "0.5",
881
+ // "amount": "5.5",
882
+ // "feeCurrency": "USDT",
883
+ // "feeAmount": "0.007975",
884
+ // "pageId": "32164924331503616",
885
+ // "clientOrderId": "myOwnId-321"
886
+ // }
887
+ // {
888
+ // aggregateTradeId: '2659115835',
889
+ // symbol: 'ETHINR',
890
+ // price: '292848',
891
+ // quantity: '0.147',
892
+ // firstTradeId: '7018766077',
893
+ // lastTradeId: '7018766081',
894
+ // tradeTime: '1765381971447',
895
+ // isBuyerMarketMaker: true
896
+ // }
897
+ //
898
+ //
899
+ const id = this.safeString2(trade, 'id', 'aggregateTradeId');
900
+ const orderId = this.safeString2(trade, 'id', 'order');
901
+ const timestamp = this.safeInteger2(trade, 'timestamp', 'tradeTime');
902
+ const marketId = this.safeString(trade, 'symbol');
903
+ market = this.safeMarket(marketId, market, '_');
904
+ const symbol = market['symbol'];
905
+ const side = this.safeStringLower(trade, 'side');
906
+ const priceString = this.safeString(trade, 'price');
907
+ const amountString = this.safeString2(trade, 'amount', 'quantity');
908
+ return this.safeTrade({
909
+ 'id': id,
910
+ 'info': trade,
911
+ 'timestamp': timestamp,
912
+ 'datetime': this.iso8601(timestamp),
913
+ 'symbol': symbol,
914
+ 'order': orderId,
915
+ 'type': this.safeStringLower(trade, 'type'),
916
+ 'side': side,
917
+ 'takerOrMaker': undefined,
918
+ 'price': priceString,
919
+ 'amount': amountString,
920
+ 'cost': this.safeString(trade, 'cost'),
921
+ 'fee': this.safeDict(trade, 'fee'),
922
+ }, market);
923
+ }
924
+ /**
925
+ * @method
926
+ * @name zebpay#fetchBalance
927
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
928
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/private-endpoints.md#get-account-balance
929
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/private-endpoints/wallet.md#get-wallet-balance
930
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
931
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
932
+ */
933
+ async fetchBalance(params = {}) {
934
+ await this.loadMarkets();
935
+ let type = undefined;
936
+ [type, params] = this.handleMarketTypeAndParams('fetchBalance', undefined, params);
937
+ const isSpot = (type === 'spot');
938
+ let response = undefined;
939
+ if (isSpot) {
940
+ response = await this.privateSpotGetV2AccountBalance(params);
941
+ }
942
+ else {
943
+ response = await this.privateSwapGetV1WalletBalance(params);
944
+ }
945
+ //
946
+ // {
947
+ // "data": [
948
+ // {
949
+ // "free": 200,
950
+ // "used": 100,
951
+ // "total": 300,
952
+ // "currency": "INR"
953
+ // },
954
+ // {
955
+ // "free": 0,
956
+ // "used": 0,
957
+ // "total": 0,
958
+ // "currency": "USDT"
959
+ // }
960
+ // ]
961
+ // }
962
+ //
963
+ return this.parseBalance(response);
964
+ }
965
+ /**
966
+ * @method
967
+ * @name zebpay#createOrder
968
+ * @description Create an order on the exchange
969
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/private-endpoints.md#place-new-order
970
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/private-endpoints/trade.md#--create-order
971
+ * @param {string} symbol Unified CCXT market symbol
972
+ * @param {string} type 'limit' or 'market'
973
+ * @param {string} side 'buy' or 'sell'
974
+ * @param {float} amount the amount of currency to trade
975
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
976
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
977
+ * @param {string} [params.formType] The price at which a trigger order is triggered at
978
+ * @param {string} [params.marginAsset] The asset the order creates, default is INR.
979
+ * @param {boolean} [params.takeProfit] Takeprofit flag for the order.
980
+ * @param {boolean} [params.stopLoss] Stop loss flag for the order.
981
+ * @param {string} [params.positionId] PositionId of the order.
982
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
983
+ */
984
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
985
+ await this.loadMarkets();
986
+ const market = this.market(symbol);
987
+ const upperCaseType = type.toUpperCase();
988
+ const takeProfitPrice = this.safeString(params, 'takeProfitPrice');
989
+ const stopLossPrice = this.safeString(params, 'stopLossPrice');
990
+ params = this.omit(params, ['marginAsset', 'takeProfitPrice', 'takeProfitPrice']);
991
+ let request = {
992
+ 'symbol': market['id'],
993
+ 'side': side.toUpperCase(),
994
+ };
995
+ let response = undefined;
996
+ if (market['spot']) {
997
+ [request, params] = this.orderRequest(symbol, type, amount, request, price, params);
998
+ response = await this.privateSpotPostV2ExOrders(this.extend(request, params));
999
+ }
1000
+ else {
1001
+ const marginAsset = this.safeString(params, 'marginAsset', 'INR');
1002
+ const formType = this.safeStringUpper(params, 'formType', 'ORDER_FORM');
1003
+ request['formType'] = formType;
1004
+ request['amount'] = this.parseToNumeric(this.amountToPrecision(market['id'], amount));
1005
+ request['marginAsset'] = marginAsset;
1006
+ const hasTP = takeProfitPrice !== undefined;
1007
+ const hasSL = stopLossPrice !== undefined;
1008
+ if (hasTP || hasSL) {
1009
+ if (hasTP) {
1010
+ request['takeProfitPrice'] = this.parseToNumeric(this.priceToPrecision(symbol, takeProfitPrice));
1011
+ }
1012
+ if (hasSL) {
1013
+ request['stopLossPrice'] = this.parseToNumeric(this.priceToPrecision(symbol, stopLossPrice));
1014
+ }
1015
+ response = await this.privateSwapPostV1TradeOrderAddTPSL(this.extend(request, params));
1016
+ }
1017
+ else {
1018
+ request['type'] = upperCaseType;
1019
+ if (type === 'limit') {
1020
+ if (price === undefined) {
1021
+ throw new ArgumentsRequired(this.id + ' createOrder() requires a price argument for limit orders');
1022
+ }
1023
+ request['price'] = this.parseToNumeric(this.priceToPrecision(symbol, price));
1024
+ }
1025
+ response = await this.privateSwapPostV1TradeOrder(this.extend(request, params));
1026
+ }
1027
+ }
1028
+ //
1029
+ // {
1030
+ // "data": {
1031
+ // "clientOrderId": "619717484f1d010001510cde",
1032
+ // },
1033
+ // }
1034
+ //
1035
+ const data = this.safeDict(response, 'data', {});
1036
+ return this.parseOrder(data, market);
1037
+ }
1038
+ orderRequest(symbol, type, amount, request, price = undefined, params = {}) {
1039
+ const upperCaseType = type.toUpperCase();
1040
+ const triggerPrice = this.safeString(params, 'stopLossPrice', undefined);
1041
+ const quoteOrderQty = this.safeString2(params, 'quoteOrderQty', 'cost', undefined);
1042
+ const timeInForce = this.safeString(params, 'timeInForce', 'GTC');
1043
+ const clientOrderId = this.safeString(params, 'clientOrderId', this.uuid());
1044
+ params = this.omit(params, ['stopLossPrice', 'cost', 'timeInForce', 'clientOrderId']);
1045
+ request['type'] = upperCaseType;
1046
+ request['clientOrderId'] = clientOrderId;
1047
+ request['timeInForce'] = timeInForce;
1048
+ if (upperCaseType === 'MARKET') {
1049
+ if (quoteOrderQty === undefined) {
1050
+ throw new ExchangeError(this.id + ' spot market orders require cost in params');
1051
+ }
1052
+ request['quoteOrderAmount'] = this.costToPrecision(symbol, quoteOrderQty);
1053
+ }
1054
+ else {
1055
+ if (triggerPrice !== undefined) {
1056
+ request['stopLossPrice'] = this.priceToPrecision(symbol, triggerPrice);
1057
+ }
1058
+ request['amount'] = this.amountToPrecision(symbol, amount);
1059
+ request['price'] = this.priceToPrecision(symbol, price);
1060
+ }
1061
+ return [request, params];
1062
+ }
1063
+ /**
1064
+ * @method
1065
+ * @name zebpay#cancelOrder
1066
+ * @description cancels an open order
1067
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/private-endpoints.md#cancel-order
1068
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/private-endpoints/trade.md#-cancel-order
1069
+ * @param {string} id order id
1070
+ * @param {string} symbol unified symbol of the market the order was made in
1071
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1072
+ * @param {object} [params.timestamp] extra parameters specific to the exchange API endpoint
1073
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1074
+ */
1075
+ async cancelOrder(id, symbol = undefined, params = {}) {
1076
+ await this.loadMarkets();
1077
+ const market = this.market(symbol);
1078
+ let response = undefined;
1079
+ const request = {};
1080
+ if (market['spot']) {
1081
+ request['orderId'] = id;
1082
+ response = await this.privateSpotDeleteV2ExOrder(this.extend(request, params));
1083
+ }
1084
+ else {
1085
+ const clientOrderId = this.safeString(params, 'clientOrderId');
1086
+ if (clientOrderId === undefined) {
1087
+ throw new ArgumentsRequired(this.id + ' cancelOrder() requires a clientOrderId parameter for swap orders');
1088
+ }
1089
+ request['clientOrderId'] = clientOrderId;
1090
+ request['symbol'] = market['id'];
1091
+ response = await this.privateSwapDeleteV1TradeOrder(this.extend(request, params));
1092
+ }
1093
+ //
1094
+ // {
1095
+ // "data": {
1096
+ // "clientOrderId": "619714b8b6353000014c505a",
1097
+ // "status": "canceled"
1098
+ // },
1099
+ // }
1100
+ //
1101
+ return this.parseOrder(this.safeDict(response, 'data'));
1102
+ }
1103
+ /**
1104
+ * @method
1105
+ * @name zebpay#cancelOrders
1106
+ * @description cancels all open orders
1107
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/private-endpoints.md#cancel-all-orders
1108
+ * @param {string} symbol unified symbol of the market the order was made in
1109
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1110
+ * @param {object} [params.timestamp] extra parameters specific to the exchange API endpoint
1111
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1112
+ */
1113
+ async cancelAllOrders(symbol = undefined, params = {}) {
1114
+ let type = undefined;
1115
+ [type, params] = this.handleMarketTypeAndParams('cancelAllOrders', undefined, params);
1116
+ if (type !== 'spot') {
1117
+ throw new NotSupported(this.id + ' cancelAllOrders() does not support ' + type + ' markets');
1118
+ }
1119
+ await this.loadMarkets();
1120
+ const response = await this.privateSpotDeleteV2ExOrdersCancelAll(params);
1121
+ //
1122
+ // {
1123
+ // "data": {
1124
+ // "orderId": "12345",
1125
+ // "symbol": 'BTC-INR
1126
+ // },
1127
+ // }
1128
+ //
1129
+ const data = this.safeDict(response, 'data', {});
1130
+ const parsedOrder = this.parseOrder(data);
1131
+ return [parsedOrder];
1132
+ }
1133
+ /**
1134
+ * @method
1135
+ * @name zebpay#fetchOpenOrders
1136
+ * @description fetches information on multiple open orders made by the user
1137
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/private-endpoints.md#get-orders
1138
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/private-endpoints/trade.md#-get-open-orders
1139
+ * @param {string} symbol unified market symbol of the market orders were made in
1140
+ * @param {int} [since] the earliest time in ms to fetch orders for
1141
+ * @param {int} [limit] the maximum number of order structures to retrieve
1142
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1143
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1144
+ */
1145
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1146
+ await this.loadMarkets();
1147
+ const market = this.market(symbol);
1148
+ const request = {
1149
+ 'symbol': market['id'],
1150
+ };
1151
+ let response = undefined;
1152
+ let orders = [];
1153
+ if (market['spot']) {
1154
+ request['currentPage'] = 1;
1155
+ if (limit !== undefined) {
1156
+ request['pageSize'] = limit;
1157
+ }
1158
+ response = await this.privateSpotGetV2ExOrders(this.extend(request, params));
1159
+ const responseData = this.safeDict(response, 'data', {});
1160
+ orders = this.safeList(responseData, 'items', []);
1161
+ }
1162
+ else {
1163
+ if (since !== undefined) {
1164
+ request['since'] = since;
1165
+ }
1166
+ if (limit !== undefined) {
1167
+ request['limit'] = limit;
1168
+ }
1169
+ response = await this.privateSwapGetV1TradeOrderOpenOrders(this.extend(request, params));
1170
+ const responseData = this.safeDict(response, 'data', {});
1171
+ orders = this.safeList(responseData, 'data', []);
1172
+ }
1173
+ //
1174
+ // {
1175
+ // "data": {
1176
+ // "nextTimeStamp": null,
1177
+ // "totalCount": 100,
1178
+ // "data": [
1179
+ // {
1180
+ // "clientOrderId": "64507d02921f1c0001ff6892-123-zeb",
1181
+ // "datetime": "2025-03-14T14:34:34.4567",
1182
+ // "timestamp": 1741962557553,
1183
+ // "status": "open",
1184
+ // "symbol": "BTCINR",
1185
+ // "type": "market",
1186
+ // "timeInForce": "GTC",
1187
+ // "side": "buy",
1188
+ // "price": 700000,
1189
+ // "amount": 0.002,
1190
+ // "filled": null,
1191
+ // "remaining": 0.002,
1192
+ // "trades": []
1193
+ // }
1194
+ // ]
1195
+ // }
1196
+ // }
1197
+ //
1198
+ return this.parseOrders(orders, market, undefined, limit);
1199
+ }
1200
+ /**
1201
+ * @method
1202
+ * @name zebpay#fetchOrder
1203
+ * @description fetches information on an order made by the user
1204
+ * @see [Spot] https://github.com/zebpay/zebpay-api-references/blob/main/spot/api-reference/private-endpoints.md#get-order-details
1205
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/private-endpoints/trade.md#-get-order-details
1206
+ * @param {string} id order id
1207
+ * @param {string} symbol unified symbol of the market the order was made in
1208
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1209
+ * @param {string} [params.clientOrderId] cancel order by client order id
1210
+ * @param {string} [params.timestamp] cancel order by client order id
1211
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1212
+ */
1213
+ async fetchOrder(id, symbol = undefined, params = {}) {
1214
+ await this.loadMarkets();
1215
+ const market = this.market(symbol);
1216
+ const request = {};
1217
+ let response = undefined;
1218
+ if (market['spot']) {
1219
+ request['orderId'] = id;
1220
+ response = await this.privateSpotGetV2ExOrder(this.extend(request, params));
1221
+ }
1222
+ else {
1223
+ request['id'] = id;
1224
+ response = await this.privateSwapGetV1TradeOrder(this.extend(request, params));
1225
+ }
1226
+ //
1227
+ // {
1228
+ // "data": {
1229
+ // "nextTimeStamp": null,
1230
+ // "totalCount": 100,
1231
+ // "data": [
1232
+ // {
1233
+ // "clientOrderId": "64507d02921f1c0001ff6892-123-zeb",
1234
+ // "datetime": "2025-03-14T14:34:34.4567",
1235
+ // "timestamp": 1741962557553,
1236
+ // "status": "open",
1237
+ // "symbol": "BTCINR",
1238
+ // "type": "market",
1239
+ // "timeInForce": "GTC",
1240
+ // "side": "buy",
1241
+ // "price": 700000,
1242
+ // "amount": 0.002,
1243
+ // "filled": null,
1244
+ // "remaining": 0.002,
1245
+ // "trades": []
1246
+ // }
1247
+ // ]
1248
+ // }
1249
+ // }
1250
+ //
1251
+ const responseData = this.safeDict(response, 'data');
1252
+ return this.parseOrder(responseData, market);
1253
+ }
1254
+ parseOrder(order, market = undefined) {
1255
+ //
1256
+ // {
1257
+ // "clientOrderId": "64507d02921f1c0001ff6892-123-zeb",
1258
+ // "datetime": "2025-03-14T14:34:34.4567",
1259
+ // "timestamp": 1741962557553,
1260
+ // "status": "open",
1261
+ // "symbol": "BTCINR",
1262
+ // "type": "market",
1263
+ // "timeInForce": "GTC",
1264
+ // "side": "buy",
1265
+ // "price": 700000,
1266
+ // "amount": 0.002,
1267
+ // "filled": null,
1268
+ // "remaining": 0.002,
1269
+ // "trades": []
1270
+ // }
1271
+ //
1272
+ const marketId = this.safeString(order, 'symbol');
1273
+ market = this.safeMarket(marketId, market);
1274
+ const symbol = market['symbol'];
1275
+ const type = this.safeString(order, 'type');
1276
+ const timestamp = this.safeNumber(order, 'timestamp');
1277
+ const datetime = this.iso8601(timestamp);
1278
+ const price = this.safeString(order, 'price');
1279
+ const side = this.safeString(order, 'side');
1280
+ const amount = this.safeString(order, 'amount');
1281
+ const clientOrderId = this.safeString(order, 'clientOrderId');
1282
+ const timeInForce = this.safeString(order, 'timeInForce');
1283
+ const status = this.safeStringLower(order, 'status');
1284
+ const orderId = this.safeString(order, 'orderId', undefined);
1285
+ const parsedOrder = this.safeOrder({
1286
+ 'id': orderId,
1287
+ 'clientOrderId': clientOrderId,
1288
+ 'symbol': symbol,
1289
+ 'type': type,
1290
+ 'timeInForce': timeInForce,
1291
+ 'postOnly': undefined,
1292
+ 'reduceOnly': undefined,
1293
+ 'side': side,
1294
+ 'amount': amount,
1295
+ 'price': price,
1296
+ 'triggerPrice': undefined,
1297
+ 'cost': undefined,
1298
+ 'filled': undefined,
1299
+ 'remaining': undefined,
1300
+ 'timestamp': timestamp,
1301
+ 'datetime': datetime,
1302
+ 'fee': undefined,
1303
+ 'status': status,
1304
+ 'info': order,
1305
+ 'lastTradeTimestamp': undefined,
1306
+ 'lastUpdateTimestamp': undefined,
1307
+ 'average': undefined,
1308
+ 'trades': undefined,
1309
+ }, market);
1310
+ return parsedOrder;
1311
+ }
1312
+ /**
1313
+ * @method
1314
+ * @name zebpay#closePosition
1315
+ * @description closes open positions for a market
1316
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/private-endpoints/trade.md#-close-position
1317
+ * @param {string} symbol Unified CCXT market symbol
1318
+ * @param {string} side not used by kucoinfutures closePositions
1319
+ * @param {object} [params] extra parameters specific to the okx api endpoint
1320
+ * @param {string} [params.positionId] client order id of the order
1321
+ * @returns {object[]} [A list of position structures]{@link https://docs.ccxt.com/#/?id=position-structure}
1322
+ */
1323
+ async closePosition(symbol, side = undefined, params = {}) {
1324
+ await this.loadMarkets();
1325
+ const market = this.market(symbol);
1326
+ const request = {
1327
+ 'symbol': market['id'],
1328
+ };
1329
+ const response = await this.privateSwapPostV1TradePositionClose(this.extend(request, params));
1330
+ const data = this.safeDict(response, 'data', {});
1331
+ return this.parseOrder(data, market);
1332
+ }
1333
+ /**
1334
+ * @method
1335
+ * @name zebpay#fetchLeverages
1336
+ * @description fetch the set leverage for all contract and margin markets
1337
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/private-endpoints/trade.md#-get-all-user-leverages
1338
+ * @param {string[]} [symbols] a list of unified market symbols
1339
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1340
+ * @returns {object} a list of [leverage structures]{@link https://docs.ccxt.com/#/?id=leverage-structure}
1341
+ */
1342
+ async fetchLeverages(symbols = undefined, params = {}) {
1343
+ await this.loadMarkets();
1344
+ const response = await this.privateSwapGetV1TradeUserLeverages(params);
1345
+ //
1346
+ // {
1347
+ // "leveragePreferences": [
1348
+ // {
1349
+ // "symbol": "ETHINR",
1350
+ // "shortLeverage": 1,
1351
+ // "longLeverage": 10,
1352
+ // "marginMode": "isolated"
1353
+ // },
1354
+ // ]
1355
+ // }
1356
+ //
1357
+ const leveragePreferences = this.safeList(response, 'data', []);
1358
+ return this.parseLeverages(leveragePreferences, symbols, 'symbol');
1359
+ }
1360
+ /**
1361
+ * @method
1362
+ * @name zebpay#fetchLeverage
1363
+ * @description fetch the set leverage for a market
1364
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/private-endpoints/trade.md#get-user-leverage-single-symbol
1365
+ * @param {string} symbol unified market symbol
1366
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1367
+ * @returns {object} a [leverage structure]{@link https://docs.ccxt.com/#/?id=leverage-structure}
1368
+ */
1369
+ async fetchLeverage(symbol, params = {}) {
1370
+ await this.loadMarkets();
1371
+ const market = this.market(symbol);
1372
+ const request = {
1373
+ 'symbol': market['id'].toUpperCase(),
1374
+ };
1375
+ const response = await this.privateSwapGetV1TradeUserLeverage(this.extend(request, params));
1376
+ //
1377
+ // {
1378
+ // "data": { symbol: "ETHINR", longLeverage: 1, shortLeverage: 1, marginMode: "isolated" }
1379
+ // }
1380
+ //
1381
+ const data = this.safeDict(response, 'data', {});
1382
+ return this.parseLeverage(data, market);
1383
+ }
1384
+ /**
1385
+ * @method
1386
+ * @name zebpay#setLeverage
1387
+ * @description set the level of leverage for a market
1388
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/private-endpoints/trade.md#-update-user-leverage
1389
+ * @param {float} leverage the rate of leverage
1390
+ * @param {string} symbol unified market symbol
1391
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1392
+ * @returns {object} response from the exchange
1393
+ */
1394
+ async setLeverage(leverage, symbol = undefined, params = {}) {
1395
+ if (symbol === undefined) {
1396
+ throw new ArgumentsRequired(this.id + ' setLeverage() requires a symbol argument');
1397
+ }
1398
+ await this.loadMarkets();
1399
+ const market = this.market(symbol);
1400
+ const request = {
1401
+ 'leverage': leverage,
1402
+ 'symbol': market['id'],
1403
+ };
1404
+ //
1405
+ // { data: { "symbol", "longLeverage": 10, "shortLeverage": 1, "marginMode": "isolated" }
1406
+ //
1407
+ const response = await this.privateSwapPostV1TradeUpdateUserLeverage(this.extend(request, params));
1408
+ return response;
1409
+ }
1410
+ /**
1411
+ * @method
1412
+ * @name zebpay#fetchPositions
1413
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/private-endpoints/trade.md#--get-positions
1414
+ * @description Fetches current contract trading positions
1415
+ * @param {string[]} symbols List of unified symbols
1416
+ * @param {object} [params] Not used by krakenfutures
1417
+ * @returns Parsed exchange response for positions
1418
+ */
1419
+ async fetchPositions(symbols = undefined, params = {}) {
1420
+ await this.loadMarkets();
1421
+ const request = {};
1422
+ if (symbols !== undefined) {
1423
+ request['symbols'] = this.marketIds(symbols);
1424
+ }
1425
+ const response = await this.privateSwapGetV1TradePositions(this.extend(request, params));
1426
+ //
1427
+ // {
1428
+ // "data": [
1429
+ // {
1430
+ // "id": "31998678-6056-413f-9d0d-fc3678641650",
1431
+ // "symbol": "ETHINR",
1432
+ // "entryPrice": "0.7533",
1433
+ // "datetime": "2022-03-03T22:51:16.566Z",
1434
+ // "contractSize": "230"
1435
+ // }
1436
+ // ],
1437
+ // }
1438
+ //
1439
+ const positions = this.safeList(response, 'data', []);
1440
+ const result = this.parsePositions(positions);
1441
+ return this.filterByArrayPositions(result, 'symbol', symbols, false);
1442
+ }
1443
+ /**
1444
+ * @method
1445
+ * @name zebpayfutures#addMargin
1446
+ * @description add margin
1447
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/private-endpoints/trade.md#-add-margin-to-position
1448
+ * @param {string} symbol unified market symbol
1449
+ * @param {float} amount amount of margin to add
1450
+ * @param {object} [params] extra parameters specific to the exchange API endpoint.
1451
+ * @param {string} [params.positionId] PositionId of the order to add margin.
1452
+ * @param {string} [params.timestamp] Tiemstamp.
1453
+ * @returns {object} a [margin structure]{@link https://docs.ccxt.com/#/?id=add-margin-structure}
1454
+ */
1455
+ async addMargin(symbol, amount, params = {}) {
1456
+ await this.loadMarkets();
1457
+ const market = this.market(symbol);
1458
+ const request = {
1459
+ 'symbol': market['id'],
1460
+ 'amount': amount,
1461
+ };
1462
+ const response = await this.privateSwapPostV1TradeAddMargin(this.extend(request, params));
1463
+ //
1464
+ // {
1465
+ // "code": "200000",
1466
+ // "data": {
1467
+ // "symbol": "BTCINR",
1468
+ // "type": "add",
1469
+ // "amount": 1000,
1470
+ // "code": "INR",
1471
+ // "status": "ok"
1472
+ // }
1473
+ // }
1474
+ //
1475
+ //
1476
+ // {
1477
+ // "code":"200000",
1478
+ // "msg":"Position does not exist"
1479
+ // }
1480
+ //
1481
+ const data = this.safeDict(response, 'data', {});
1482
+ return this.extend(this.parseMarginModification(data, market), {
1483
+ 'amount': amount,
1484
+ 'direction': 'in',
1485
+ });
1486
+ }
1487
+ /**
1488
+ * @method
1489
+ * @name zebpayfutures#reduceMargin
1490
+ * @description add margin
1491
+ * @see [Swap] https://github.com/zebpay/zebpay-api-references/blob/main/futures/api-reference/private-endpoints/trade.md#-reduce-margin-from-position
1492
+ * @param {string} symbol unified market symbol.
1493
+ * @param {float} amount amount of margin to add.
1494
+ * @param {object} [params] extra parameters specific to the exchange API endpoint.
1495
+ * @param {string} [params.positionId] PositionId of the order to add margin.
1496
+ * @param {string} [params.timestamp] Tiemstamp.
1497
+ * @returns {object} a [margin structure]{@link https://docs.ccxt.com/#/?id=add-margin-structure}
1498
+ */
1499
+ async reduceMargin(symbol, amount, params = {}) {
1500
+ await this.loadMarkets();
1501
+ const market = this.market(symbol);
1502
+ const request = {
1503
+ 'symbol': market['id'],
1504
+ 'amount': amount,
1505
+ };
1506
+ const response = await this.privateSwapPostV1TradeReduceMargin(this.extend(request, params));
1507
+ //
1508
+ // {
1509
+ // "code": "200000",
1510
+ // "data": {
1511
+ // "symbol": "BTCINR",
1512
+ // "type": "reduce",
1513
+ // "amount": 1000,
1514
+ // "code": "INR",
1515
+ // "status": "ok"
1516
+ // }
1517
+ // }
1518
+ //
1519
+ const data = this.safeDict(response, 'data', {});
1520
+ return this.extend(this.parseMarginModification(data, market), {
1521
+ 'amount': amount,
1522
+ 'direction': 'out',
1523
+ });
1524
+ }
1525
+ async fetchSpotMarkets(params = {}) {
1526
+ const response = await this.publicSpotGetV2ExExchangeInfo(params);
1527
+ //
1528
+ // {
1529
+ // "data": {
1530
+ // "symbol": "ETH-INR",
1531
+ // "name": "ETH-INR",
1532
+ // "baseCurrency": "ETH",
1533
+ // "quoteCurrency": "INR",
1534
+ // "feeCurrency": "INR",
1535
+ // "baseMinSize": "",
1536
+ // "quoteMinSize": "100",
1537
+ // "baseMaxSize": "",
1538
+ // "quoteMaxSize": "2000",
1539
+ // "baseIncrement": "0.00001"
1540
+ // "quoteIncrement": "0.00001",
1541
+ // "enableTrading": true
1542
+ // }
1543
+ // }
1544
+ //
1545
+ const result = [];
1546
+ const data = this.safeDict(response, 'data', {});
1547
+ const markets = this.safeList(data, 'symbols', []);
1548
+ for (let i = 0; i < markets.length; i++) {
1549
+ const market = markets[i];
1550
+ const id = this.safeString(market, 'symbol');
1551
+ const baseId = this.safeString(market, 'baseAsset');
1552
+ const quoteId = this.safeString(market, 'quoteAsset');
1553
+ const base = this.safeCurrencyCode(baseId);
1554
+ const quote = this.safeCurrencyCode(quoteId);
1555
+ const symbol = base + '/' + quote;
1556
+ result.push({
1557
+ 'id': id,
1558
+ 'symbol': symbol,
1559
+ 'base': base,
1560
+ 'quote': quote,
1561
+ 'baseId': baseId,
1562
+ 'quoteId': quoteId,
1563
+ 'type': 'spot',
1564
+ 'spot': true,
1565
+ 'swap': false,
1566
+ 'margin': false,
1567
+ 'future': false,
1568
+ 'option': false,
1569
+ 'active': undefined,
1570
+ 'contract': undefined,
1571
+ 'taker': this.safeNumber(market, 'takerFee'),
1572
+ 'maker': this.safeNumber(market, 'makerFee'),
1573
+ 'strike': undefined,
1574
+ 'optionType': undefined,
1575
+ 'precision': {
1576
+ 'amount': this.safeNumber(market, 'lotSz'),
1577
+ 'price': this.safeNumber(market, 'tickSz'),
1578
+ },
1579
+ 'limits': {
1580
+ 'amount': {
1581
+ 'min': undefined,
1582
+ 'max': undefined,
1583
+ },
1584
+ 'price': {
1585
+ 'min': undefined,
1586
+ 'max': undefined,
1587
+ },
1588
+ 'cost': {
1589
+ 'min': undefined,
1590
+ 'max': undefined,
1591
+ },
1592
+ },
1593
+ 'info': market,
1594
+ });
1595
+ }
1596
+ return result;
1597
+ }
1598
+ async fetchSwapMarkets(params = {}) {
1599
+ const response = await this.publicSwapGetV1MarketMarkets(params);
1600
+ //
1601
+ // {
1602
+ // "data": {
1603
+ // "symbol": "ETHUSDT",
1604
+ // "status": "TRADING",
1605
+ // "mainMarginPercent": "10",
1606
+ // "baseAsset": "ETH",
1607
+ // "quoteAsset": "USDT",
1608
+ // "pricePrecision": 1,
1609
+ // "quantityPrecision": 0.05,
1610
+ // "baseAssetPrecision": 0,
1611
+ // "quotePrecision": 0,
1612
+ // "orderType": ["LIMIT", "MARKET" ]
1613
+ // "timeInForce": ["GTC"],
1614
+ // "makerFee": "0.01",
1615
+ // "takerFee": "0.01",
1616
+ // "minLeverage": "1",
1617
+ // "maxLeverage": "20"
1618
+ // "tickSz": "0.1",
1619
+ // "lotSz": "0.1"
1620
+ // }
1621
+ // }
1622
+ //
1623
+ const result = [];
1624
+ const data = this.safeDict(response, 'data', {});
1625
+ const markets = this.safeList(data, 'symbols', []);
1626
+ for (let i = 0; i < markets.length; i++) {
1627
+ const market = markets[i];
1628
+ const id = this.safeString(market, 'symbol');
1629
+ const baseId = this.safeString(market, 'baseAsset');
1630
+ const quoteId = this.safeString(market, 'quoteAsset');
1631
+ const base = this.safeCurrencyCode(baseId);
1632
+ const quote = this.safeCurrencyCode(quoteId);
1633
+ const settle = this.safeCurrencyCode(quoteId);
1634
+ const status = this.safeString(market, 'status');
1635
+ const symbol = base + '/' + quote;
1636
+ result.push(this.safeMarketStructure({
1637
+ 'id': id,
1638
+ 'symbol': symbol + ':' + settle,
1639
+ 'base': base,
1640
+ 'quote': quote,
1641
+ 'baseId': baseId,
1642
+ 'quoteId': quoteId,
1643
+ 'spot': false,
1644
+ 'margin': false,
1645
+ 'swap': true,
1646
+ 'future': false,
1647
+ 'type': 'swap',
1648
+ 'option': false,
1649
+ 'active': (status === 'Open'),
1650
+ 'contract': true,
1651
+ 'taker': this.safeNumber(market, 'takerFee'),
1652
+ 'maker': this.safeNumber(market, 'makerFee'),
1653
+ 'strike': undefined,
1654
+ 'optionType': undefined,
1655
+ 'precision': {
1656
+ 'amount': this.safeNumber(market, 'lotSz'),
1657
+ 'price': this.safeNumber(market, 'tickSz'),
1658
+ },
1659
+ 'limits': {
1660
+ 'leverage': {
1661
+ 'min': this.safeNumber(market, 'minLeverage'),
1662
+ 'max': this.safeNumber(market, 'maxLeverage'),
1663
+ },
1664
+ },
1665
+ 'info': market,
1666
+ }));
1667
+ }
1668
+ return result;
1669
+ }
1670
+ parseBalance(response) {
1671
+ const result = {
1672
+ 'info': response,
1673
+ 'timestamp': undefined,
1674
+ 'datetime': undefined,
1675
+ };
1676
+ const currencyList = this.safeList(response, 'data', []);
1677
+ for (let i = 0; i < currencyList.length; i++) {
1678
+ const entry = currencyList[i];
1679
+ const account = this.account();
1680
+ account['total'] = this.safeString(entry, 'total');
1681
+ account['free'] = this.safeString(entry, 'free');
1682
+ account['used'] = this.safeString(entry, 'used');
1683
+ const currencyId = this.safeString(entry, 'currency');
1684
+ const code = this.safeCurrencyCode(currencyId);
1685
+ result[code] = account;
1686
+ }
1687
+ return this.safeBalance(result);
1688
+ }
1689
+ parsePosition(position, market = undefined) {
1690
+ //
1691
+ // isolated
1692
+ // {
1693
+ // "id":"long",
1694
+ // "symbol":"pf_ftmusd",
1695
+ // "entryPrice":"0.4921",
1696
+ // "datetime":"2023-02-22T11:37:16.685Z",
1697
+ // "contractSize":"1",
1698
+ // "leverage":"1.0"
1699
+ // }
1700
+ //
1701
+ const leverage = this.safeNumber(position, 'leverage');
1702
+ const datetime = this.safeString(position, 'datetime');
1703
+ const marketId = this.safeString(position, 'symbol');
1704
+ market = this.safeMarket(marketId, market);
1705
+ return {
1706
+ 'info': position,
1707
+ 'symbol': marketId,
1708
+ 'timestamp': this.parse8601(datetime),
1709
+ 'datetime': datetime,
1710
+ 'initialMargin': this.safeNumber(position, 'initialMargin'),
1711
+ 'initialMarginPercentage': undefined,
1712
+ 'maintenanceMargin': undefined,
1713
+ 'maintenanceMarginPercentage': undefined,
1714
+ 'entryPrice': this.safeNumber(position, 'entryPrice'),
1715
+ 'notional': this.safeNumber(position, 'notional'),
1716
+ 'leverage': leverage,
1717
+ 'unrealizedPnl': undefined,
1718
+ 'contracts': this.safeNumber(position, 'contracts'),
1719
+ 'contractSize': this.safeNumber(market, 'contractSize'),
1720
+ 'marginRatio': undefined,
1721
+ 'liquidationPrice': this.safeNumber(position, 'liquidationPrice'),
1722
+ 'markPrice': undefined,
1723
+ 'collateral': undefined,
1724
+ 'marginType': 'isolated',
1725
+ 'side': this.safeString(position, 'side'),
1726
+ 'percentage': undefined,
1727
+ };
1728
+ }
1729
+ parseLeverage(leverage, market = undefined) {
1730
+ const marketId = this.safeString(leverage, 'symbol');
1731
+ const info = this.safeDict(leverage, 'info');
1732
+ const leverageValue = this.safeInteger(leverage, 'longLeverage');
1733
+ const leverageValueShort = this.safeInteger(leverage, 'shortLeverage');
1734
+ const marginMode = this.safeString(leverage, 'marginMode');
1735
+ return {
1736
+ 'info': info,
1737
+ 'symbol': marketId,
1738
+ 'marginMode': marginMode,
1739
+ 'longLeverage': leverageValue,
1740
+ 'shortLeverage': leverageValueShort,
1741
+ };
1742
+ }
1743
+ parseTradingFee(fee, market = undefined) {
1744
+ const marketId = this.safeString(fee, 'symbol');
1745
+ const symbol = this.safeSymbol(marketId, market);
1746
+ return {
1747
+ 'info': fee,
1748
+ 'symbol': symbol,
1749
+ 'maker': this.safeNumber2(fee, 'makerFeeRate', 'makerFee'),
1750
+ 'taker': this.safeNumber2(fee, 'takerFeeRate', 'takerFee'),
1751
+ 'percentage': undefined,
1752
+ 'tierBased': undefined,
1753
+ };
1754
+ }
1755
+ parseTicker(ticker, market = undefined) {
1756
+ //
1757
+ // [
1758
+ // {
1759
+ // "symbol": "BTC-INR",
1760
+ // "bestBid": "4900000",
1761
+ // "bestBidQty": "0.00014938",
1762
+ // "bestAsk": "",
1763
+ // "bestAskQty": "0",
1764
+ // "priceChange": "-98134.56",
1765
+ // "priceChangePercent": "-1.84",
1766
+ // "high": "5433400",
1767
+ // "low": "5333400",
1768
+ // "vol": "0.0002",
1769
+ // "volValue": "1066.68",
1770
+ // "last": "5333400"
1771
+ // }
1772
+ // ]
1773
+ //
1774
+ const timestamp = this.safeInteger2(ticker, 'timestamp', 'ts', undefined);
1775
+ const marketId = this.safeString(ticker, 'symbol');
1776
+ market = this.safeMarket(marketId);
1777
+ const close = this.safeString(ticker, 'close', undefined);
1778
+ const last = this.safeString(ticker, 'last', undefined);
1779
+ const percentage = this.safeString(ticker, 'percentage');
1780
+ const bidVolume = this.safeString(ticker, 'bidVolume');
1781
+ const askVolume = this.safeString(ticker, 'askVolume');
1782
+ return this.safeTicker({
1783
+ 'id': marketId,
1784
+ 'symbol': market['symbol'],
1785
+ 'timestamp': timestamp,
1786
+ 'datetime': this.iso8601(timestamp),
1787
+ 'high': this.safeString(ticker, 'high'),
1788
+ 'low': this.safeString(ticker, 'low'),
1789
+ 'bid': this.safeString(ticker, 'bid'),
1790
+ 'bidVolume': bidVolume,
1791
+ 'ask': this.safeString(ticker, 'ask'),
1792
+ 'askVolume': askVolume,
1793
+ 'vwap': undefined,
1794
+ 'open': undefined,
1795
+ 'close': close,
1796
+ 'last': last,
1797
+ 'previousClose': this.safeString(ticker, 'previousClose'),
1798
+ 'change': this.safeString(ticker, 'change'),
1799
+ 'percentage': percentage,
1800
+ 'average': this.safeString(ticker, 'average'),
1801
+ 'baseVolume': this.safeString(ticker, 'baseVolume'),
1802
+ 'quoteVolume': this.safeString(ticker, 'quoteVolume'),
1803
+ 'markPrice': undefined,
1804
+ 'info': ticker,
1805
+ }, market);
1806
+ }
1807
+ parseMarginModification(info, market = undefined) {
1808
+ //
1809
+ // {
1810
+ // "symbol": "BTCINR",
1811
+ // "type": "reduce",
1812
+ // "amount": 1000,
1813
+ // "code": "INR",
1814
+ // "status": "ok"
1815
+ // }
1816
+ //
1817
+ const timestamp = this.milliseconds();
1818
+ return {
1819
+ 'info': info,
1820
+ 'symbol': market['id'],
1821
+ 'type': undefined,
1822
+ 'marginMode': undefined,
1823
+ 'amount': this.safeNumber(info, 'amount'),
1824
+ 'total': undefined,
1825
+ 'code': this.safeString(info, 'code'),
1826
+ 'status': this.safeString(info, 'status'),
1827
+ 'timestamp': timestamp,
1828
+ 'datetime': this.iso8601(timestamp),
1829
+ };
1830
+ }
1831
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
1832
+ params = this.omit(params, 'defaultType');
1833
+ const isV1 = path.indexOf('v1/') > -1;
1834
+ const marketType = isV1 ? 'swap' : 'spot';
1835
+ let url = this.urls['api'][marketType];
1836
+ const tail = '/api/' + this.implodeParams(path, params);
1837
+ url += tail;
1838
+ const timestamp = this.milliseconds().toString();
1839
+ let signature = '';
1840
+ const query = this.omit(params, this.extractParams(path));
1841
+ const queryLength = Object.keys(query).length;
1842
+ const access = this.safeString(api, 0, 'public');
1843
+ if (access === 'public') {
1844
+ if (method === 'GET' || method === 'DELETE') {
1845
+ if (queryLength) {
1846
+ url += '?' + this.urlencode(query);
1847
+ }
1848
+ }
1849
+ else {
1850
+ body = JSON.stringify(params);
1851
+ headers = {
1852
+ 'Referrer': 'ccxt',
1853
+ 'Content-Type': 'application/json',
1854
+ };
1855
+ }
1856
+ }
1857
+ else {
1858
+ this.checkRequiredCredentials();
1859
+ const isSpot = marketType === 'spot';
1860
+ params['timestamp'] = timestamp;
1861
+ if (method === 'GET' || (method === 'DELETE' && isSpot)) {
1862
+ // For GET/DELETE: Append params to URL and sign the query string
1863
+ const queryString = this.urlencode(params);
1864
+ signature = this.hmac(this.encode(queryString), this.encode(this.secret), sha256, 'hex');
1865
+ url += '?' + queryString;
1866
+ }
1867
+ else {
1868
+ // For POST/PUT: Convert body to JSON and sign the stringified payload
1869
+ body = this.json(params);
1870
+ signature = this.hmac(this.encode(body), this.encode(this.secret), sha256, 'hex');
1871
+ }
1872
+ headers = {
1873
+ 'Referrer': 'ccxt',
1874
+ 'X-AUTH-APIKEY': this.apiKey,
1875
+ 'X-AUTH-SIGNATURE': signature,
1876
+ };
1877
+ headers['Content-Type'] = 'application/json';
1878
+ }
1879
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
1880
+ }
1881
+ handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
1882
+ if (!response) {
1883
+ this.throwBroadlyMatchedException(this.exceptions['broad'], body, body);
1884
+ return undefined;
1885
+ }
1886
+ //
1887
+ // bad
1888
+ // { "code": "400100", "msg": "validation.createOrder.clientOidIsRequired" }
1889
+ // good
1890
+ // { code: "200000", data: { ... }}
1891
+ // {"statusDescription":"Order quantity is out of range","data":{},"statusCode":400,"customMessage":["Order quantity is out of range"]}
1892
+ //
1893
+ const errorCode = this.safeString2(response, 'code', 'statusCode');
1894
+ const message = this.safeString2(response, 'msg', 'statusDescription');
1895
+ const feedback = this.id + ' ' + message;
1896
+ this.throwBroadlyMatchedException(this.exceptions['broad'], message, feedback);
1897
+ this.throwExactlyMatchedException(this.exceptions['exact'], message, feedback);
1898
+ this.throwExactlyMatchedException(this.exceptions['exact'], errorCode, feedback);
1899
+ return undefined;
1900
+ }
1901
+ }