ccxt 4.5.56 → 4.5.58

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 (1055) hide show
  1. package/README.md +11 -13
  2. package/dist/ccxt.browser.min.js +34 -14
  3. package/dist/cjs/ccxt.js +6 -22
  4. package/dist/cjs/src/abstract/aftermath.js +1 -1
  5. package/dist/cjs/src/abstract/alpaca.js +1 -1
  6. package/dist/cjs/src/abstract/apex.js +1 -1
  7. package/dist/cjs/src/abstract/ascendex.js +1 -1
  8. package/dist/cjs/src/abstract/aster.js +1 -1
  9. package/dist/cjs/src/abstract/backpack.js +1 -1
  10. package/dist/cjs/src/abstract/bigone.js +1 -1
  11. package/dist/cjs/src/abstract/binance.js +1 -1
  12. package/dist/cjs/src/abstract/bingx.js +1 -1
  13. package/dist/cjs/src/abstract/bit2c.js +1 -1
  14. package/dist/cjs/src/abstract/bitbank.js +1 -1
  15. package/dist/cjs/src/abstract/bitbns.js +1 -1
  16. package/dist/cjs/src/abstract/bitfinex.js +1 -1
  17. package/dist/cjs/src/abstract/bitflyer.js +1 -1
  18. package/dist/cjs/src/abstract/bitget.js +1 -1
  19. package/dist/cjs/src/abstract/bithumb.js +1 -1
  20. package/dist/cjs/src/abstract/bitmart.js +1 -1
  21. package/dist/cjs/src/abstract/bitmex.js +1 -1
  22. package/dist/cjs/src/abstract/bitopro.js +1 -1
  23. package/dist/cjs/src/abstract/bitrue.js +1 -1
  24. package/dist/cjs/src/abstract/bitso.js +1 -1
  25. package/dist/cjs/src/abstract/bitstamp.js +1 -1
  26. package/dist/cjs/src/abstract/bitteam.js +1 -1
  27. package/dist/cjs/src/abstract/bittrade.js +1 -1
  28. package/dist/cjs/src/abstract/bitvavo.js +1 -1
  29. package/dist/cjs/src/abstract/blockchaincom.js +1 -1
  30. package/dist/cjs/src/abstract/blofin.js +1 -1
  31. package/dist/cjs/src/abstract/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/bydfi.js +1 -1
  37. package/dist/cjs/src/abstract/cex.js +1 -1
  38. package/dist/cjs/src/abstract/coinbase.js +1 -1
  39. package/dist/cjs/src/abstract/coinbaseexchange.js +1 -1
  40. package/dist/cjs/src/abstract/coinbaseinternational.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/delta.js +1 -1
  52. package/dist/cjs/src/abstract/deribit.js +1 -1
  53. package/dist/cjs/src/abstract/derive.js +1 -1
  54. package/dist/cjs/src/abstract/digifinex.js +1 -1
  55. package/dist/cjs/src/abstract/dydx.js +1 -1
  56. package/dist/cjs/src/abstract/exmo.js +1 -1
  57. package/dist/cjs/src/abstract/{arkham.js → extended.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/grvt.js +1 -1
  62. package/dist/cjs/src/abstract/hashkey.js +1 -1
  63. package/dist/cjs/src/abstract/hibachi.js +1 -1
  64. package/dist/cjs/src/abstract/hitbtc.js +1 -1
  65. package/dist/cjs/src/abstract/hollaex.js +1 -1
  66. package/dist/cjs/src/abstract/htx.js +1 -1
  67. package/dist/cjs/src/abstract/hyperliquid.js +1 -1
  68. package/dist/cjs/src/abstract/independentreserve.js +1 -1
  69. package/dist/cjs/src/abstract/indodax.js +1 -1
  70. package/dist/cjs/src/abstract/kraken.js +1 -1
  71. package/dist/cjs/src/abstract/krakenfutures.js +1 -1
  72. package/dist/cjs/src/abstract/kucoin.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/lighter.js +1 -1
  76. package/dist/cjs/src/abstract/luno.js +1 -1
  77. package/dist/cjs/src/abstract/mercado.js +1 -1
  78. package/dist/cjs/src/abstract/mexc.js +1 -1
  79. package/dist/cjs/src/abstract/modetrade.js +1 -1
  80. package/dist/cjs/src/abstract/ndax.js +1 -1
  81. package/dist/cjs/src/abstract/novadax.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/p2b.js +1 -1
  85. package/dist/cjs/src/abstract/pacifica.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/tokocrypto.js +1 -1
  91. package/dist/cjs/src/abstract/toobit.js +1 -1
  92. package/dist/cjs/src/abstract/upbit.js +1 -1
  93. package/dist/cjs/src/abstract/weex.js +1 -1
  94. package/dist/cjs/src/abstract/whitebit.js +1 -1
  95. package/dist/cjs/src/abstract/woo.js +1 -1
  96. package/dist/cjs/src/abstract/woofipro.js +1 -1
  97. package/dist/cjs/src/abstract/xt.js +1 -1
  98. package/dist/cjs/src/abstract/zaif.js +1 -1
  99. package/dist/cjs/src/abstract/zebpay.js +1 -1
  100. package/dist/cjs/src/aftermath.js +1 -0
  101. package/dist/cjs/src/alpaca.js +1 -1
  102. package/dist/cjs/src/apex.js +2 -2
  103. package/dist/cjs/src/ascendex.js +3 -3
  104. package/dist/cjs/src/aster.js +8 -5
  105. package/dist/cjs/src/backpack.js +15 -7
  106. package/dist/cjs/src/base/Exchange.js +69 -32
  107. package/dist/cjs/src/base/Precise.js +7 -7
  108. package/dist/cjs/src/base/errors.js +6 -0
  109. package/dist/cjs/src/base/functions/crypto.js +1 -1
  110. package/dist/cjs/src/base/functions/encode.js +1 -1
  111. package/dist/cjs/src/base/functions/io.js +26 -1
  112. package/dist/cjs/src/base/functions/misc.js +1 -0
  113. package/dist/cjs/src/base/functions/number.js +6 -0
  114. package/dist/cjs/src/base/functions/platform.js +6 -0
  115. package/dist/cjs/src/base/functions/rsa.js +1 -0
  116. package/dist/cjs/src/base/functions/string.js +6 -0
  117. package/dist/cjs/src/base/functions/throttle.js +1 -1
  118. package/dist/cjs/src/base/functions/time.js +6 -0
  119. package/dist/cjs/src/base/functions/totp.js +1 -0
  120. package/dist/cjs/src/base/functions/type.js +6 -0
  121. package/dist/cjs/src/base/functions.js +2 -1
  122. package/dist/cjs/src/base/ws/Cache.js +6 -0
  123. package/dist/cjs/src/base/ws/Client.js +1 -0
  124. package/dist/cjs/src/base/ws/Future.js +3 -7
  125. package/dist/cjs/src/base/ws/OrderBook.js +1 -1
  126. package/dist/cjs/src/base/ws/OrderBookSide.js +6 -0
  127. package/dist/cjs/src/base/ws/WsClient.js +5 -1
  128. package/dist/cjs/src/bequant.js +1 -1
  129. package/dist/cjs/src/bigone.js +4 -4
  130. package/dist/cjs/src/binance.js +193 -195
  131. package/dist/cjs/src/binancecoinm.js +1 -1
  132. package/dist/cjs/src/binanceus.js +1 -1
  133. package/dist/cjs/src/binanceusdm.js +1 -1
  134. package/dist/cjs/src/bingx.js +4 -4
  135. package/dist/cjs/src/bit2c.js +1 -1
  136. package/dist/cjs/src/bitbank.js +1 -1
  137. package/dist/cjs/src/bitbns.js +1 -1
  138. package/dist/cjs/src/bitfinex.js +72 -59
  139. package/dist/cjs/src/bitflyer.js +1 -1
  140. package/dist/cjs/src/bitget.js +3 -3
  141. package/dist/cjs/src/bithumb.js +1 -1
  142. package/dist/cjs/src/bitmart.js +14 -7
  143. package/dist/cjs/src/bitmex.js +2 -2
  144. package/dist/cjs/src/bitopro.js +2 -2
  145. package/dist/cjs/src/bitrue.js +3 -3
  146. package/dist/cjs/src/bitso.js +2 -2
  147. package/dist/cjs/src/bitstamp.js +3 -2
  148. package/dist/cjs/src/bitteam.js +2 -2
  149. package/dist/cjs/src/bittrade.js +1 -2
  150. package/dist/cjs/src/bitvavo.js +457 -34
  151. package/dist/cjs/src/blockchaincom.js +1 -1
  152. package/dist/cjs/src/blofin.js +27 -4
  153. package/dist/cjs/src/btcbox.js +2 -2
  154. package/dist/cjs/src/btcmarkets.js +1 -1
  155. package/dist/cjs/src/btcturk.js +1 -1
  156. package/dist/cjs/src/bullish.js +7 -6
  157. package/dist/cjs/src/bybit.js +1 -1
  158. package/dist/cjs/src/bybiteu.js +1 -1
  159. package/dist/cjs/src/bydfi.js +2 -2
  160. package/dist/cjs/src/cex.js +4 -4
  161. package/dist/cjs/src/coinbase.js +75 -65
  162. package/dist/cjs/src/coinbaseadvanced.js +1 -1
  163. package/dist/cjs/src/coinbaseexchange.js +2 -2
  164. package/dist/cjs/src/coinbaseinternational.js +2 -1
  165. package/dist/cjs/src/coincheck.js +1 -1
  166. package/dist/cjs/src/coinex.js +75 -75
  167. package/dist/cjs/src/coinmate.js +1 -1
  168. package/dist/cjs/src/coinmetro.js +2 -2
  169. package/dist/cjs/src/coinone.js +1 -1
  170. package/dist/cjs/src/coinsph.js +2 -1
  171. package/dist/cjs/src/coinspot.js +1 -1
  172. package/dist/cjs/src/cryptocom.js +47 -49
  173. package/dist/cjs/src/cryptomus.js +44 -40
  174. package/dist/cjs/src/deepcoin.js +5 -4
  175. package/dist/cjs/src/delta.js +52 -53
  176. package/dist/cjs/src/deribit.js +32 -34
  177. package/dist/cjs/src/derive.js +27 -29
  178. package/dist/cjs/src/digifinex.js +44 -45
  179. package/dist/cjs/src/dydx.js +1 -1
  180. package/dist/cjs/src/exmo.js +93 -84
  181. package/dist/cjs/src/extended.js +3497 -0
  182. package/dist/cjs/src/fmfwio.js +1 -1
  183. package/dist/cjs/src/foxbit.js +72 -76
  184. package/dist/cjs/src/gate.js +54 -54
  185. package/dist/cjs/src/gemini.js +42 -44
  186. package/dist/cjs/src/grvt.js +5 -5
  187. package/dist/cjs/src/hashkey.js +53 -55
  188. package/dist/cjs/src/hibachi.js +1 -1
  189. package/dist/cjs/src/hitbtc.js +4 -13
  190. package/dist/cjs/src/hollaex.js +52 -55
  191. package/dist/cjs/src/htx.js +76 -68
  192. package/dist/cjs/src/huobi.js +1 -1
  193. package/dist/cjs/src/hyperliquid.js +42 -43
  194. package/dist/cjs/src/independentreserve.js +1 -1
  195. package/dist/cjs/src/indodax.js +3 -3
  196. package/dist/cjs/src/kraken.js +58 -59
  197. package/dist/cjs/src/krakenfutures.js +1 -1
  198. package/dist/cjs/src/kucoin.js +4 -3
  199. package/dist/cjs/src/kucoinfutures.js +1 -1
  200. package/dist/cjs/src/latoken.js +31 -33
  201. package/dist/cjs/src/lbank.js +57 -57
  202. package/dist/cjs/src/lighter.js +42 -42
  203. package/dist/cjs/src/luno.js +36 -44
  204. package/dist/cjs/src/mercado.js +1 -1
  205. package/dist/cjs/src/mexc.js +49 -50
  206. package/dist/cjs/src/modetrade.js +51 -53
  207. package/dist/cjs/src/myokx.js +1 -1
  208. package/dist/cjs/src/ndax.js +36 -38
  209. package/dist/cjs/src/novadax.js +1 -1
  210. package/dist/cjs/src/okx.js +18 -3
  211. package/dist/cjs/src/okxus.js +1 -1
  212. package/dist/cjs/src/onetrading.js +22 -24
  213. package/dist/cjs/src/p2b.js +1 -1
  214. package/dist/cjs/src/pacifica.js +1 -1
  215. package/dist/cjs/src/paradex.js +1 -1
  216. package/dist/cjs/src/paymium.js +1 -1
  217. package/dist/cjs/src/phemex.js +43 -45
  218. package/dist/cjs/src/poloniex.js +18 -13
  219. package/dist/cjs/src/pro/alpaca.js +2 -2
  220. package/dist/cjs/src/pro/apex.js +2 -2
  221. package/dist/cjs/src/pro/ascendex.js +1 -1
  222. package/dist/cjs/src/pro/aster.js +1 -1
  223. package/dist/cjs/src/pro/backpack.js +2 -2
  224. package/dist/cjs/src/pro/bequant.js +1 -1
  225. package/dist/cjs/src/pro/binance.js +3 -3
  226. package/dist/cjs/src/pro/binancecoinm.js +1 -1
  227. package/dist/cjs/src/pro/binanceus.js +1 -1
  228. package/dist/cjs/src/pro/binanceusdm.js +1 -1
  229. package/dist/cjs/src/pro/bingx.js +1 -1
  230. package/dist/cjs/src/pro/bitfinex.js +1 -1
  231. package/dist/cjs/src/pro/bitget.js +2 -2
  232. package/dist/cjs/src/pro/bithumb.js +2 -2
  233. package/dist/cjs/src/pro/bitmart.js +1 -1
  234. package/dist/cjs/src/pro/bitmex.js +1 -1
  235. package/dist/cjs/src/pro/bitrue.js +1 -1
  236. package/dist/cjs/src/pro/bitstamp.js +2 -2
  237. package/dist/cjs/src/pro/bittrade.js +1 -1
  238. package/dist/cjs/src/pro/bitvavo.js +1 -1
  239. package/dist/cjs/src/pro/blockchaincom.js +2 -2
  240. package/dist/cjs/src/pro/blofin.js +1 -1
  241. package/dist/cjs/src/pro/bullish.js +1 -1
  242. package/dist/cjs/src/pro/bybit.js +2 -2
  243. package/dist/cjs/src/pro/bybiteu.js +1 -1
  244. package/dist/cjs/src/pro/bydfi.js +1 -1
  245. package/dist/cjs/src/pro/cex.js +2 -2
  246. package/dist/cjs/src/pro/coinbase.js +1 -1
  247. package/dist/cjs/src/pro/coinbaseadvanced.js +1 -1
  248. package/dist/cjs/src/pro/coinbaseexchange.js +1 -1
  249. package/dist/cjs/src/pro/coinbaseinternational.js +1 -1
  250. package/dist/cjs/src/pro/coincheck.js +1 -1
  251. package/dist/cjs/src/pro/coinex.js +2 -2
  252. package/dist/cjs/src/pro/coinone.js +2 -2
  253. package/dist/cjs/src/pro/cryptocom.js +4 -2
  254. package/dist/cjs/src/pro/deepcoin.js +1 -1
  255. package/dist/cjs/src/pro/deribit.js +1 -1
  256. package/dist/cjs/src/pro/dydx.js +2 -2
  257. package/dist/cjs/src/pro/exmo.js +2 -2
  258. package/dist/cjs/src/pro/extended.js +865 -0
  259. package/dist/cjs/src/pro/gate.js +2 -2
  260. package/dist/cjs/src/pro/gemini.js +1 -1
  261. package/dist/cjs/src/pro/grvt.js +1 -1
  262. package/dist/cjs/src/pro/hashkey.js +8 -7
  263. package/dist/cjs/src/pro/hitbtc.js +1 -1
  264. package/dist/cjs/src/pro/hollaex.js +2 -2
  265. package/dist/cjs/src/pro/htx.js +1 -1
  266. package/dist/cjs/src/pro/huobi.js +1 -1
  267. package/dist/cjs/src/pro/hyperliquid.js +1 -1
  268. package/dist/cjs/src/pro/independentreserve.js +2 -2
  269. package/dist/cjs/src/pro/kraken.js +1 -1
  270. package/dist/cjs/src/pro/krakenfutures.js +1 -1
  271. package/dist/cjs/src/pro/kucoin.js +2 -2
  272. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  273. package/dist/cjs/src/pro/lbank.js +1 -0
  274. package/dist/cjs/src/pro/lighter.js +1 -1
  275. package/dist/cjs/src/pro/luno.js +4 -4
  276. package/dist/cjs/src/pro/mexc.js +1 -1
  277. package/dist/cjs/src/pro/myokx.js +1 -1
  278. package/dist/cjs/src/pro/ndax.js +1 -1
  279. package/dist/cjs/src/pro/okx.js +1 -1
  280. package/dist/cjs/src/pro/okxus.js +1 -1
  281. package/dist/cjs/src/pro/onetrading.js +2 -2
  282. package/dist/cjs/src/pro/p2b.js +1 -1
  283. package/dist/cjs/src/pro/pacifica.js +1 -1
  284. package/dist/cjs/src/pro/paradex.js +1 -1
  285. package/dist/cjs/src/pro/phemex.js +1 -1
  286. package/dist/cjs/src/pro/poloniex.js +1 -1
  287. package/dist/cjs/src/pro/toobit.js +2 -2
  288. package/dist/cjs/src/pro/upbit.js +1 -1
  289. package/dist/cjs/src/pro/weex.js +2 -2
  290. package/dist/cjs/src/pro/whitebit.js +2 -2
  291. package/dist/cjs/src/pro/xt.js +1 -1
  292. package/dist/cjs/src/protobuf/mexc/compiled.cjs.js +0 -1
  293. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +1 -0
  294. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +1 -0
  295. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +1 -0
  296. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +1 -0
  297. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +1 -0
  298. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +1 -0
  299. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +1 -0
  300. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +1 -0
  301. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +1 -0
  302. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +1 -0
  303. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +1 -0
  304. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +1 -0
  305. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +1 -0
  306. package/dist/cjs/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +1 -0
  307. package/dist/cjs/src/static_dependencies/dydx-v4-client/helpers.js +6 -0
  308. package/dist/cjs/src/static_dependencies/dydx-v4-client/onboarding.js +1 -0
  309. package/dist/cjs/src/static_dependencies/dydx-v4-client/registry.js +1 -0
  310. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +6 -0
  311. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
  312. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
  313. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +1 -0
  314. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +1 -0
  315. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +1 -0
  316. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +1 -0
  317. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +1 -0
  318. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +1 -0
  319. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +1 -0
  320. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +1 -0
  321. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +1 -0
  322. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +1 -0
  323. package/dist/cjs/src/static_dependencies/ethers/fragments.js +6 -0
  324. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +6 -0
  325. package/dist/cjs/src/static_dependencies/ethers/index.js +1 -10
  326. package/dist/cjs/src/static_dependencies/ethers/interface.js +6 -0
  327. package/dist/cjs/src/static_dependencies/ethers/typed.js +6 -0
  328. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +1 -13
  329. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +1 -6
  330. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +1 -9
  331. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +6 -0
  332. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
  333. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +1 -7
  334. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +1 -5
  335. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +6 -0
  336. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +1 -8
  337. package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
  338. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +1 -0
  339. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +1 -0
  340. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
  341. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
  342. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
  343. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
  344. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +1 -0
  345. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
  346. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
  347. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
  348. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
  349. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
  350. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
  351. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
  352. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +6 -0
  353. package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
  354. package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
  355. package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
  356. package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +1 -0
  357. package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
  358. package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
  359. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
  360. package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
  361. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  362. package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
  363. package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
  364. package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
  365. package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +6 -0
  366. package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +1 -0
  367. package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +6 -0
  368. package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +6 -0
  369. package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +1 -0
  370. package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +1 -0
  371. package/dist/cjs/src/static_dependencies/noble-hashes/pbkdf2.js +1 -0
  372. package/dist/cjs/src/static_dependencies/noble-hashes/ripemd160.js +1 -0
  373. package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +1 -0
  374. package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +1 -0
  375. package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +1 -0
  376. package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +1 -0
  377. package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
  378. package/dist/cjs/src/static_dependencies/node-fetch/body.js +1 -5
  379. package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +1 -0
  380. package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +6 -0
  381. package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +1 -0
  382. package/dist/cjs/src/static_dependencies/node-fetch/headers.js +1 -5
  383. package/dist/cjs/src/static_dependencies/node-fetch/index.js +1 -7
  384. package/dist/cjs/src/static_dependencies/node-fetch/request.js +1 -7
  385. package/dist/cjs/src/static_dependencies/node-fetch/response.js +1 -5
  386. package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
  387. package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
  388. package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +6 -0
  389. package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +1 -0
  390. package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +1 -0
  391. package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +1 -0
  392. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +1 -0
  393. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
  394. package/dist/cjs/src/static_dependencies/qs/formats.js +6 -0
  395. package/dist/cjs/src/static_dependencies/qs/index.js +1 -0
  396. package/dist/cjs/src/static_dependencies/qs/parse.js +1 -0
  397. package/dist/cjs/src/static_dependencies/qs/stringify.js +1 -0
  398. package/dist/cjs/src/static_dependencies/qs/utils.js +6 -0
  399. package/dist/cjs/src/static_dependencies/scure-base/index.js +6 -0
  400. package/dist/cjs/src/static_dependencies/scure-bip32/index.js +1 -19
  401. package/dist/cjs/src/static_dependencies/scure-bip39/index.js +1 -1
  402. package/dist/cjs/src/static_dependencies/scure-bip39/wordlists/english.js +6 -0
  403. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
  404. package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
  405. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +6 -0
  406. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
  407. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
  408. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +6 -0
  409. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +6 -0
  410. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +6 -0
  411. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
  412. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
  413. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
  414. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +1 -0
  415. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +1 -0
  416. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
  417. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
  418. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
  419. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +1 -0
  420. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
  421. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +1 -0
  422. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +1 -0
  423. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
  424. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +1 -0
  425. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +1 -0
  426. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +1 -0
  427. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
  428. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +1 -4
  429. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +1 -0
  430. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +8 -10
  431. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +1 -0
  432. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +1 -0
  433. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +1 -0
  434. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +1 -0
  435. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
  436. package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +6 -0
  437. package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +6 -0
  438. package/dist/cjs/src/tokocrypto.js +2 -2
  439. package/dist/cjs/src/toobit.js +3 -3
  440. package/dist/cjs/src/upbit.js +4 -4
  441. package/dist/cjs/src/weex.js +65 -63
  442. package/dist/cjs/src/whitebit.js +62 -64
  443. package/dist/cjs/src/woo.js +66 -55
  444. package/dist/cjs/src/woofipro.js +54 -48
  445. package/dist/cjs/src/xt.js +2 -3
  446. package/dist/cjs/src/zaif.js +1 -1
  447. package/dist/cjs/src/zebpay.js +71 -73
  448. package/js/ccxt.d.ts +8 -26
  449. package/js/ccxt.js +12 -18
  450. package/js/src/abstract/aftermath.js +6 -0
  451. package/js/src/abstract/alpaca.js +6 -0
  452. package/js/src/abstract/apex.js +6 -0
  453. package/js/src/abstract/ascendex.js +6 -0
  454. package/js/src/abstract/aster.js +6 -0
  455. package/js/src/abstract/backpack.js +6 -0
  456. package/js/src/abstract/bequant.js +6 -0
  457. package/js/src/abstract/bigone.js +6 -0
  458. package/js/src/abstract/binance.js +6 -0
  459. package/js/src/abstract/binancecoinm.js +6 -0
  460. package/js/src/abstract/binanceus.js +6 -0
  461. package/js/src/abstract/binanceusdm.js +6 -0
  462. package/js/src/abstract/bingx.js +6 -0
  463. package/js/src/abstract/bit2c.js +6 -0
  464. package/js/src/abstract/bitbank.js +6 -0
  465. package/js/src/abstract/bitbns.js +6 -0
  466. package/js/src/abstract/bitfinex.js +6 -0
  467. package/js/src/abstract/bitflyer.js +6 -0
  468. package/js/src/abstract/bitget.js +6 -0
  469. package/js/src/abstract/bithumb.js +6 -0
  470. package/js/src/abstract/bitmart.js +6 -0
  471. package/js/src/abstract/bitmex.js +6 -0
  472. package/js/src/abstract/bitopro.js +6 -0
  473. package/js/src/abstract/bitrue.js +6 -0
  474. package/js/src/abstract/bitso.js +6 -0
  475. package/js/src/abstract/bitstamp.js +6 -0
  476. package/js/src/abstract/bitteam.js +6 -0
  477. package/js/src/abstract/bittrade.js +6 -0
  478. package/js/src/abstract/bitvavo.d.ts +15 -7
  479. package/js/src/abstract/bitvavo.js +6 -0
  480. package/js/src/abstract/blockchaincom.js +6 -0
  481. package/js/src/abstract/blofin.js +6 -0
  482. package/js/src/abstract/btcbox.js +6 -0
  483. package/js/src/abstract/btcmarkets.js +6 -0
  484. package/js/src/abstract/btcturk.js +6 -0
  485. package/js/src/abstract/bullish.js +6 -0
  486. package/js/src/abstract/bybit.js +6 -0
  487. package/js/src/abstract/bybiteu.js +6 -0
  488. package/js/src/abstract/bydfi.js +6 -0
  489. package/js/src/abstract/cex.js +6 -0
  490. package/js/src/abstract/coinbase.js +6 -0
  491. package/js/src/abstract/coinbaseadvanced.js +6 -0
  492. package/js/src/abstract/coinbaseexchange.js +6 -0
  493. package/js/src/abstract/coinbaseinternational.js +6 -0
  494. package/js/src/abstract/coincheck.js +6 -0
  495. package/js/src/abstract/coinex.js +6 -0
  496. package/js/src/abstract/coinmate.js +6 -0
  497. package/js/src/abstract/coinmetro.js +6 -0
  498. package/js/src/abstract/coinone.js +6 -0
  499. package/js/src/abstract/coinsph.js +6 -0
  500. package/js/src/abstract/coinspot.js +6 -0
  501. package/js/src/abstract/cryptocom.js +6 -0
  502. package/js/src/abstract/cryptomus.js +6 -0
  503. package/js/src/abstract/deepcoin.js +6 -0
  504. package/js/src/abstract/delta.js +6 -0
  505. package/js/src/abstract/deribit.js +6 -0
  506. package/js/src/abstract/derive.js +6 -0
  507. package/js/src/abstract/digifinex.js +6 -0
  508. package/js/src/abstract/dydx.js +6 -0
  509. package/js/src/abstract/exmo.js +6 -0
  510. package/js/src/abstract/extended.d.ts +58 -0
  511. package/js/src/abstract/extended.js +11 -0
  512. package/js/src/abstract/fmfwio.js +6 -0
  513. package/js/src/abstract/foxbit.js +6 -0
  514. package/js/src/abstract/gate.js +6 -0
  515. package/js/src/abstract/gemini.js +6 -0
  516. package/js/src/abstract/grvt.js +6 -0
  517. package/js/src/abstract/hashkey.js +6 -0
  518. package/js/src/abstract/hibachi.js +6 -0
  519. package/js/src/abstract/hitbtc.js +6 -0
  520. package/js/src/abstract/hollaex.js +6 -0
  521. package/js/src/abstract/htx.js +6 -0
  522. package/js/src/abstract/huobi.js +6 -0
  523. package/js/src/abstract/hyperliquid.js +6 -0
  524. package/js/src/abstract/independentreserve.js +6 -0
  525. package/js/src/abstract/indodax.js +6 -0
  526. package/js/src/abstract/kraken.js +6 -0
  527. package/js/src/abstract/krakenfutures.js +6 -0
  528. package/js/src/abstract/kucoin.js +6 -0
  529. package/js/src/abstract/kucoinfutures.js +6 -0
  530. package/js/src/abstract/latoken.js +6 -0
  531. package/js/src/abstract/lbank.js +6 -0
  532. package/js/src/abstract/lighter.js +6 -0
  533. package/js/src/abstract/luno.js +6 -0
  534. package/js/src/abstract/mercado.js +6 -0
  535. package/js/src/abstract/mexc.js +6 -0
  536. package/js/src/abstract/modetrade.js +6 -0
  537. package/js/src/abstract/myokx.js +6 -0
  538. package/js/src/abstract/ndax.js +6 -0
  539. package/js/src/abstract/novadax.js +6 -0
  540. package/js/src/abstract/okx.js +6 -0
  541. package/js/src/abstract/okxus.js +6 -0
  542. package/js/src/abstract/onetrading.js +6 -0
  543. package/js/src/abstract/p2b.js +6 -0
  544. package/js/src/abstract/pacifica.js +6 -0
  545. package/js/src/abstract/paradex.js +6 -0
  546. package/js/src/abstract/paymium.js +6 -0
  547. package/js/src/abstract/phemex.js +6 -0
  548. package/js/src/abstract/poloniex.js +6 -0
  549. package/js/src/abstract/tokocrypto.js +6 -0
  550. package/js/src/abstract/toobit.js +6 -0
  551. package/js/src/abstract/upbit.js +6 -0
  552. package/js/src/abstract/weex.js +6 -0
  553. package/js/src/abstract/whitebit.js +6 -0
  554. package/js/src/abstract/woo.js +6 -0
  555. package/js/src/abstract/woofipro.js +6 -0
  556. package/js/src/abstract/xt.js +6 -0
  557. package/js/src/abstract/zaif.js +6 -0
  558. package/js/src/abstract/zebpay.js +6 -0
  559. package/js/src/aftermath.js +6 -0
  560. package/js/src/alpaca.js +6 -0
  561. package/js/src/apex.js +7 -1
  562. package/js/src/ascendex.js +8 -2
  563. package/js/src/aster.js +13 -4
  564. package/js/src/backpack.js +20 -6
  565. package/js/src/base/Exchange.d.ts +10 -6
  566. package/js/src/base/Exchange.js +75 -32
  567. package/js/src/base/Precise.js +7 -7
  568. package/js/src/base/errorHierarchy.js +6 -0
  569. package/js/src/base/errors.js +6 -0
  570. package/js/src/base/functions/crypto.js +6 -0
  571. package/js/src/base/functions/encode.js +6 -0
  572. package/js/src/base/functions/generic.js +6 -0
  573. package/js/src/base/functions/io.d.ts +7 -0
  574. package/js/src/base/functions/io.js +30 -0
  575. package/js/src/base/functions/misc.js +6 -0
  576. package/js/src/base/functions/number.js +6 -0
  577. package/js/src/base/functions/platform.js +6 -0
  578. package/js/src/base/functions/rsa.js +6 -0
  579. package/js/src/base/functions/string.js +6 -0
  580. package/js/src/base/functions/throttle.js +6 -0
  581. package/js/src/base/functions/time.js +6 -0
  582. package/js/src/base/functions/totp.js +6 -0
  583. package/js/src/base/functions/type.js +6 -0
  584. package/js/src/base/functions.js +6 -0
  585. package/js/src/base/types.js +6 -0
  586. package/js/src/base/ws/Cache.js +6 -0
  587. package/js/src/base/ws/Client.js +6 -0
  588. package/js/src/base/ws/Future.js +8 -6
  589. package/js/src/base/ws/OrderBook.js +6 -0
  590. package/js/src/base/ws/OrderBookSide.js +6 -0
  591. package/js/src/base/ws/WsClient.js +10 -0
  592. package/js/src/base/ws/functions.js +6 -0
  593. package/js/src/bequant.js +6 -0
  594. package/js/src/bigone.js +9 -3
  595. package/js/src/binance.d.ts +2 -0
  596. package/js/src/binance.js +202 -198
  597. package/js/src/binancecoinm.js +6 -0
  598. package/js/src/binanceus.js +6 -0
  599. package/js/src/binanceusdm.js +6 -0
  600. package/js/src/bingx.js +9 -3
  601. package/js/src/bit2c.js +6 -0
  602. package/js/src/bitbank.js +6 -0
  603. package/js/src/bitbns.js +6 -0
  604. package/js/src/bitfinex.d.ts +2 -0
  605. package/js/src/bitfinex.js +77 -58
  606. package/js/src/bitflyer.js +6 -0
  607. package/js/src/bitget.js +8 -2
  608. package/js/src/bithumb.js +6 -0
  609. package/js/src/bitmart.js +19 -6
  610. package/js/src/bitmex.js +7 -1
  611. package/js/src/bitopro.js +7 -1
  612. package/js/src/bitrue.js +8 -2
  613. package/js/src/bitso.js +7 -1
  614. package/js/src/bitstamp.js +8 -1
  615. package/js/src/bitteam.js +7 -1
  616. package/js/src/bittrade.js +6 -1
  617. package/js/src/bitvavo.d.ts +114 -21
  618. package/js/src/bitvavo.js +463 -34
  619. package/js/src/blockchaincom.js +6 -0
  620. package/js/src/blofin.d.ts +1 -0
  621. package/js/src/blofin.js +32 -3
  622. package/js/src/btcbox.js +7 -1
  623. package/js/src/btcmarkets.js +6 -0
  624. package/js/src/btcturk.js +6 -0
  625. package/js/src/bullish.js +12 -5
  626. package/js/src/bybit.js +6 -0
  627. package/js/src/bybiteu.js +6 -0
  628. package/js/src/bydfi.js +7 -1
  629. package/js/src/cex.js +9 -3
  630. package/js/src/coinbase.d.ts +63 -56
  631. package/js/src/coinbase.js +81 -65
  632. package/js/src/coinbaseadvanced.js +6 -0
  633. package/js/src/coinbaseexchange.js +8 -2
  634. package/js/src/coinbaseinternational.js +8 -1
  635. package/js/src/coincheck.js +6 -0
  636. package/js/src/coinex.d.ts +1 -0
  637. package/js/src/coinex.js +80 -74
  638. package/js/src/coinmate.js +6 -0
  639. package/js/src/coinmetro.d.ts +1 -1
  640. package/js/src/coinmetro.js +7 -1
  641. package/js/src/coinone.js +6 -0
  642. package/js/src/coinsph.js +7 -1
  643. package/js/src/coinspot.js +6 -0
  644. package/js/src/cryptocom.d.ts +1 -0
  645. package/js/src/cryptocom.js +52 -48
  646. package/js/src/cryptomus.d.ts +2 -1
  647. package/js/src/cryptomus.js +49 -39
  648. package/js/src/deepcoin.js +10 -3
  649. package/js/src/delta.d.ts +1 -0
  650. package/js/src/delta.js +57 -52
  651. package/js/src/deribit.d.ts +1 -0
  652. package/js/src/deribit.js +37 -33
  653. package/js/src/derive.d.ts +1 -0
  654. package/js/src/derive.js +32 -28
  655. package/js/src/digifinex.d.ts +1 -0
  656. package/js/src/digifinex.js +49 -44
  657. package/js/src/dydx.js +6 -0
  658. package/js/src/exmo.d.ts +1 -0
  659. package/js/src/exmo.js +98 -83
  660. package/js/src/extended.d.ts +554 -0
  661. package/js/src/extended.js +3496 -0
  662. package/js/src/fmfwio.js +6 -0
  663. package/js/src/foxbit.d.ts +1 -0
  664. package/js/src/foxbit.js +77 -75
  665. package/js/src/gate.d.ts +1 -0
  666. package/js/src/gate.js +59 -53
  667. package/js/src/gemini.d.ts +2 -1
  668. package/js/src/gemini.js +47 -43
  669. package/js/src/grvt.js +10 -4
  670. package/js/src/hashkey.d.ts +1 -0
  671. package/js/src/hashkey.js +58 -54
  672. package/js/src/hibachi.js +6 -0
  673. package/js/src/hitbtc.d.ts +0 -1
  674. package/js/src/hitbtc.js +9 -13
  675. package/js/src/hollaex.d.ts +1 -0
  676. package/js/src/hollaex.js +57 -54
  677. package/js/src/htx.d.ts +1 -0
  678. package/js/src/htx.js +81 -67
  679. package/js/src/huobi.js +6 -0
  680. package/js/src/hyperliquid.d.ts +1 -0
  681. package/js/src/hyperliquid.js +47 -42
  682. package/js/src/independentreserve.js +6 -0
  683. package/js/src/indodax.js +8 -2
  684. package/js/src/kraken.d.ts +2 -1
  685. package/js/src/kraken.js +63 -58
  686. package/js/src/krakenfutures.js +6 -0
  687. package/js/src/kucoin.js +9 -2
  688. package/js/src/kucoinfutures.js +6 -0
  689. package/js/src/latoken.d.ts +1 -0
  690. package/js/src/latoken.js +36 -32
  691. package/js/src/lbank.d.ts +1 -0
  692. package/js/src/lbank.js +62 -56
  693. package/js/src/lighter.d.ts +1 -0
  694. package/js/src/lighter.js +47 -41
  695. package/js/src/luno.d.ts +1 -0
  696. package/js/src/luno.js +41 -43
  697. package/js/src/mercado.js +6 -0
  698. package/js/src/mexc.d.ts +2 -1
  699. package/js/src/mexc.js +54 -49
  700. package/js/src/modetrade.d.ts +1 -0
  701. package/js/src/modetrade.js +56 -52
  702. package/js/src/myokx.js +6 -0
  703. package/js/src/ndax.d.ts +1 -0
  704. package/js/src/ndax.js +41 -37
  705. package/js/src/novadax.js +6 -0
  706. package/js/src/okx.js +23 -2
  707. package/js/src/okxus.js +6 -0
  708. package/js/src/onetrading.d.ts +2 -1
  709. package/js/src/onetrading.js +27 -23
  710. package/js/src/p2b.js +6 -0
  711. package/js/src/pacifica.js +6 -0
  712. package/js/src/paradex.js +6 -0
  713. package/js/src/paymium.js +6 -0
  714. package/js/src/phemex.d.ts +1 -0
  715. package/js/src/phemex.js +49 -45
  716. package/js/src/poloniex.js +23 -12
  717. package/js/src/pro/aftermath.js +6 -0
  718. package/js/src/pro/alpaca.js +7 -1
  719. package/js/src/pro/apex.js +7 -1
  720. package/js/src/pro/ascendex.js +6 -0
  721. package/js/src/pro/aster.js +6 -0
  722. package/js/src/pro/backpack.js +7 -1
  723. package/js/src/pro/bequant.js +6 -0
  724. package/js/src/pro/binance.js +9 -3
  725. package/js/src/pro/binancecoinm.js +6 -0
  726. package/js/src/pro/binanceus.js +6 -0
  727. package/js/src/pro/binanceusdm.js +6 -0
  728. package/js/src/pro/bingx.js +6 -0
  729. package/js/src/pro/bitfinex.js +6 -0
  730. package/js/src/pro/bitget.js +7 -1
  731. package/js/src/pro/bithumb.js +7 -1
  732. package/js/src/pro/bitmart.js +6 -0
  733. package/js/src/pro/bitmex.js +6 -0
  734. package/js/src/pro/bitopro.js +6 -0
  735. package/js/src/pro/bitrue.js +6 -0
  736. package/js/src/pro/bitstamp.js +7 -1
  737. package/js/src/pro/bittrade.js +7 -1
  738. package/js/src/pro/bitvavo.js +6 -0
  739. package/js/src/pro/blockchaincom.js +7 -1
  740. package/js/src/pro/blofin.js +6 -0
  741. package/js/src/pro/bullish.js +6 -0
  742. package/js/src/pro/bybit.js +7 -1
  743. package/js/src/pro/bybiteu.js +6 -0
  744. package/js/src/pro/bydfi.js +6 -0
  745. package/js/src/pro/cex.js +7 -1
  746. package/js/src/pro/coinbase.js +6 -0
  747. package/js/src/pro/coinbaseadvanced.js +6 -0
  748. package/js/src/pro/coinbaseexchange.js +6 -0
  749. package/js/src/pro/coinbaseinternational.js +6 -0
  750. package/js/src/pro/coincheck.js +6 -0
  751. package/js/src/pro/coinex.js +7 -1
  752. package/js/src/pro/coinone.js +7 -1
  753. package/js/src/pro/cryptocom.js +9 -1
  754. package/js/src/pro/deepcoin.js +6 -0
  755. package/js/src/pro/deribit.js +6 -0
  756. package/js/src/pro/derive.js +6 -0
  757. package/js/src/pro/dydx.js +7 -1
  758. package/js/src/pro/exmo.js +7 -1
  759. package/js/src/pro/extended.d.ts +126 -0
  760. package/js/src/pro/extended.js +864 -0
  761. package/js/src/pro/gate.js +7 -1
  762. package/js/src/pro/gemini.js +6 -0
  763. package/js/src/pro/grvt.js +6 -0
  764. package/js/src/pro/hashkey.js +13 -6
  765. package/js/src/pro/hitbtc.js +6 -0
  766. package/js/src/pro/hollaex.js +7 -1
  767. package/js/src/pro/htx.js +6 -0
  768. package/js/src/pro/huobi.js +6 -0
  769. package/js/src/pro/hyperliquid.js +6 -0
  770. package/js/src/pro/independentreserve.js +7 -1
  771. package/js/src/pro/kraken.js +6 -0
  772. package/js/src/pro/krakenfutures.js +6 -0
  773. package/js/src/pro/kucoin.js +7 -1
  774. package/js/src/pro/kucoinfutures.js +6 -0
  775. package/js/src/pro/lbank.js +6 -0
  776. package/js/src/pro/lighter.js +6 -0
  777. package/js/src/pro/luno.d.ts +1 -1
  778. package/js/src/pro/luno.js +9 -3
  779. package/js/src/pro/mexc.js +6 -0
  780. package/js/src/pro/modetrade.js +6 -0
  781. package/js/src/pro/myokx.js +6 -0
  782. package/js/src/pro/ndax.js +6 -0
  783. package/js/src/pro/okx.js +6 -0
  784. package/js/src/pro/okxus.js +6 -0
  785. package/js/src/pro/onetrading.js +7 -1
  786. package/js/src/pro/p2b.js +6 -0
  787. package/js/src/pro/pacifica.js +6 -0
  788. package/js/src/pro/paradex.js +6 -0
  789. package/js/src/pro/phemex.js +6 -0
  790. package/js/src/pro/poloniex.js +6 -0
  791. package/js/src/pro/toobit.js +7 -1
  792. package/js/src/pro/upbit.js +6 -0
  793. package/js/src/pro/weex.js +7 -1
  794. package/js/src/pro/whitebit.js +7 -1
  795. package/js/src/pro/woo.js +6 -0
  796. package/js/src/pro/woofipro.js +6 -0
  797. package/js/src/pro/xt.js +6 -0
  798. package/js/src/protobuf/mexc/compiled.cjs +6 -0
  799. package/js/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +6 -0
  800. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/keys.js +6 -0
  801. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +6 -0
  802. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +6 -0
  803. package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +6 -0
  804. package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +6 -0
  805. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +6 -0
  806. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/block_rate_limit_config.js +6 -0
  807. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +6 -0
  808. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/equity_tier_limit_config.js +6 -0
  809. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/finalize_block.js +6 -0
  810. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations.js +6 -0
  811. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations_config.js +6 -0
  812. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/matches.js +6 -0
  813. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +6 -0
  814. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +6 -0
  815. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +6 -0
  816. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +6 -0
  817. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +6 -0
  818. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/asset_position.js +6 -0
  819. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/perpetual_position.js +6 -0
  820. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +6 -0
  821. package/js/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +6 -0
  822. package/js/src/static_dependencies/dydx-v4-client/helpers.js +6 -0
  823. package/js/src/static_dependencies/dydx-v4-client/long/index.cjs +6 -0
  824. package/js/src/static_dependencies/dydx-v4-client/onboarding.js +6 -0
  825. package/js/src/static_dependencies/dydx-v4-client/registry.js +6 -0
  826. package/js/src/static_dependencies/ethers/abi-coder.js +6 -0
  827. package/js/src/static_dependencies/ethers/address/address.js +6 -0
  828. package/js/src/static_dependencies/ethers/address/checks.js +6 -0
  829. package/js/src/static_dependencies/ethers/address/contract-address.js +6 -0
  830. package/js/src/static_dependencies/ethers/address/index.js +6 -0
  831. package/js/src/static_dependencies/ethers/bytes32.js +6 -0
  832. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
  833. package/js/src/static_dependencies/ethers/coders/address.js +6 -0
  834. package/js/src/static_dependencies/ethers/coders/anonymous.js +6 -0
  835. package/js/src/static_dependencies/ethers/coders/array.js +6 -0
  836. package/js/src/static_dependencies/ethers/coders/boolean.js +6 -0
  837. package/js/src/static_dependencies/ethers/coders/bytes.js +6 -0
  838. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +6 -0
  839. package/js/src/static_dependencies/ethers/coders/null.js +6 -0
  840. package/js/src/static_dependencies/ethers/coders/number.js +6 -0
  841. package/js/src/static_dependencies/ethers/coders/string.js +6 -0
  842. package/js/src/static_dependencies/ethers/coders/tuple.js +6 -0
  843. package/js/src/static_dependencies/ethers/fragments.js +6 -0
  844. package/js/src/static_dependencies/ethers/hash/index.js +6 -0
  845. package/js/src/static_dependencies/ethers/hash/solidity.js +6 -0
  846. package/js/src/static_dependencies/ethers/hash/typed-data.js +6 -0
  847. package/js/src/static_dependencies/ethers/index.js +6 -0
  848. package/js/src/static_dependencies/ethers/interface.js +6 -0
  849. package/js/src/static_dependencies/ethers/typed.js +6 -0
  850. package/js/src/static_dependencies/ethers/utils/base58.js +6 -0
  851. package/js/src/static_dependencies/ethers/utils/base64-browser.js +6 -0
  852. package/js/src/static_dependencies/ethers/utils/base64.js +6 -0
  853. package/js/src/static_dependencies/ethers/utils/data.js +6 -0
  854. package/js/src/static_dependencies/ethers/utils/errors.js +6 -0
  855. package/js/src/static_dependencies/ethers/utils/events.js +6 -0
  856. package/js/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
  857. package/js/src/static_dependencies/ethers/utils/index.js +6 -0
  858. package/js/src/static_dependencies/ethers/utils/maths.js +6 -0
  859. package/js/src/static_dependencies/ethers/utils/properties.js +6 -0
  860. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +6 -0
  861. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +6 -0
  862. package/js/src/static_dependencies/ethers/utils/rlp.js +6 -0
  863. package/js/src/static_dependencies/ethers/utils/units.js +6 -0
  864. package/js/src/static_dependencies/ethers/utils/utf8.js +6 -0
  865. package/js/src/static_dependencies/ethers/utils/uuid.js +6 -0
  866. package/js/src/static_dependencies/fflake/browser.js +6 -0
  867. package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +6 -0
  868. package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +6 -0
  869. package/js/src/static_dependencies/jsencrypt/index.js +6 -0
  870. package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +6 -0
  871. package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
  872. package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
  873. package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
  874. package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +6 -0
  875. package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +6 -0
  876. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +6 -0
  877. package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
  878. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +6 -0
  879. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +6 -0
  880. package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
  881. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +6 -0
  882. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
  883. package/js/src/static_dependencies/messagepack/msgpack.js +6 -0
  884. package/js/src/static_dependencies/noble-curves/_shortw_utils.js +6 -0
  885. package/js/src/static_dependencies/noble-curves/abstract/curve.js +6 -0
  886. package/js/src/static_dependencies/noble-curves/abstract/edwards.js +6 -0
  887. package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +6 -0
  888. package/js/src/static_dependencies/noble-curves/abstract/modular.js +6 -0
  889. package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +6 -0
  890. package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +6 -0
  891. package/js/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
  892. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +1 -1
  893. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +6 -0
  894. package/js/src/static_dependencies/noble-curves/bn.js +6 -0
  895. package/js/src/static_dependencies/noble-curves/ed25519.js +6 -0
  896. package/js/src/static_dependencies/noble-curves/ed448.js +6 -0
  897. package/js/src/static_dependencies/noble-curves/index.js +6 -0
  898. package/js/src/static_dependencies/noble-curves/jubjub.js +6 -0
  899. package/js/src/static_dependencies/noble-curves/p256.js +6 -0
  900. package/js/src/static_dependencies/noble-curves/p384.js +6 -0
  901. package/js/src/static_dependencies/noble-curves/p521.js +6 -0
  902. package/js/src/static_dependencies/noble-curves/pasta.js +6 -0
  903. package/js/src/static_dependencies/noble-curves/secp256k1.js +6 -0
  904. package/js/src/static_dependencies/noble-hashes/_assert.js +6 -0
  905. package/js/src/static_dependencies/noble-hashes/_blake2.js +6 -0
  906. package/js/src/static_dependencies/noble-hashes/_sha2.js +6 -0
  907. package/js/src/static_dependencies/noble-hashes/_u64.js +6 -0
  908. package/js/src/static_dependencies/noble-hashes/argon2.js +6 -0
  909. package/js/src/static_dependencies/noble-hashes/blake2b.js +6 -0
  910. package/js/src/static_dependencies/noble-hashes/blake2s.js +6 -0
  911. package/js/src/static_dependencies/noble-hashes/blake3.js +6 -0
  912. package/js/src/static_dependencies/noble-hashes/crypto.js +6 -0
  913. package/js/src/static_dependencies/noble-hashes/cryptoNode.js +6 -0
  914. package/js/src/static_dependencies/noble-hashes/eskdf.js +6 -0
  915. package/js/src/static_dependencies/noble-hashes/hkdf.js +6 -0
  916. package/js/src/static_dependencies/noble-hashes/hmac.js +6 -0
  917. package/js/src/static_dependencies/noble-hashes/index.js +6 -0
  918. package/js/src/static_dependencies/noble-hashes/md5.js +6 -0
  919. package/js/src/static_dependencies/noble-hashes/pbkdf2.js +6 -0
  920. package/js/src/static_dependencies/noble-hashes/ripemd160.js +6 -0
  921. package/js/src/static_dependencies/noble-hashes/scrypt.js +6 -0
  922. package/js/src/static_dependencies/noble-hashes/sha1.js +6 -0
  923. package/js/src/static_dependencies/noble-hashes/sha256.js +6 -0
  924. package/js/src/static_dependencies/noble-hashes/sha3-addons.js +6 -0
  925. package/js/src/static_dependencies/noble-hashes/sha3.js +6 -0
  926. package/js/src/static_dependencies/noble-hashes/sha512.js +6 -0
  927. package/js/src/static_dependencies/noble-hashes/utils.js +6 -0
  928. package/js/src/static_dependencies/node-fetch/body.js +6 -0
  929. package/js/src/static_dependencies/node-fetch/errors/abort-error.js +6 -0
  930. package/js/src/static_dependencies/node-fetch/errors/base.js +6 -0
  931. package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +6 -0
  932. package/js/src/static_dependencies/node-fetch/headers.js +6 -0
  933. package/js/src/static_dependencies/node-fetch/index.js +6 -0
  934. package/js/src/static_dependencies/node-fetch/request.js +6 -0
  935. package/js/src/static_dependencies/node-fetch/response.js +6 -0
  936. package/js/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
  937. package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
  938. package/js/src/static_dependencies/node-fetch/utils/is.js +6 -0
  939. package/js/src/static_dependencies/node-fetch/utils/referrer.js +6 -0
  940. package/js/src/static_dependencies/proxies/agent-base/helpers.js +6 -0
  941. package/js/src/static_dependencies/proxies/agent-base/index.js +6 -0
  942. package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +6 -0
  943. package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +6 -0
  944. package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
  945. package/js/src/static_dependencies/qs/formats.js +6 -0
  946. package/js/src/static_dependencies/qs/index.js +6 -0
  947. package/js/src/static_dependencies/qs/parse.js +6 -0
  948. package/js/src/static_dependencies/qs/stringify.js +6 -0
  949. package/js/src/static_dependencies/qs/utils.js +6 -0
  950. package/js/src/static_dependencies/scure-base/index.js +6 -0
  951. package/js/src/static_dependencies/scure-bip32/index.js +6 -0
  952. package/js/src/static_dependencies/scure-bip39/index.js +6 -0
  953. package/js/src/static_dependencies/scure-bip39/wordlists/english.js +6 -0
  954. package/js/src/static_dependencies/scure-starknet/index.js +6 -0
  955. package/js/src/static_dependencies/starknet/constants.js +6 -0
  956. package/js/src/static_dependencies/starknet/index.js +6 -0
  957. package/js/src/static_dependencies/starknet/types/cairoEnum.js +6 -0
  958. package/js/src/static_dependencies/starknet/types/calldata.js +6 -0
  959. package/js/src/static_dependencies/starknet/types/index.js +6 -0
  960. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
  961. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
  962. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +6 -0
  963. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +6 -0
  964. package/js/src/static_dependencies/starknet/types/lib/index.js +6 -0
  965. package/js/src/static_dependencies/starknet/types/typedData.js +6 -0
  966. package/js/src/static_dependencies/starknet/utils/address.js +6 -0
  967. package/js/src/static_dependencies/starknet/utils/assert.js +6 -0
  968. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +6 -0
  969. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +6 -0
  970. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +6 -0
  971. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +6 -0
  972. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +6 -0
  973. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
  974. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
  975. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
  976. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +6 -0
  977. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +6 -0
  978. package/js/src/static_dependencies/starknet/utils/calldata/index.js +6 -0
  979. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +6 -0
  980. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +6 -0
  981. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +6 -0
  982. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
  983. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +6 -0
  984. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +6 -0
  985. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +6 -0
  986. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +6 -0
  987. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +6 -0
  988. package/js/src/static_dependencies/starknet/utils/encode.js +6 -0
  989. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +6 -0
  990. package/js/src/static_dependencies/starknet/utils/hash/index.js +6 -0
  991. package/js/src/static_dependencies/starknet/utils/merkle.js +6 -0
  992. package/js/src/static_dependencies/starknet/utils/num.js +6 -0
  993. package/js/src/static_dependencies/starknet/utils/selector.js +6 -0
  994. package/js/src/static_dependencies/starknet/utils/shortString.js +6 -0
  995. package/js/src/static_dependencies/starknet/utils/starknetId.js +6 -0
  996. package/js/src/static_dependencies/starknet/utils/typedData.js +6 -0
  997. package/js/src/static_dependencies/starknet/utils/uint256.js +6 -0
  998. package/js/src/static_dependencies/starknet/utils/url.js +6 -0
  999. package/js/src/static_dependencies/watchable/src/index.js +6 -0
  1000. package/js/src/static_dependencies/watchable/src/types.js +6 -0
  1001. package/js/src/static_dependencies/watchable/src/unpromise.js +6 -0
  1002. package/js/src/static_dependencies/zklink/zklink-sdk-web.js +6 -0
  1003. package/js/src/tokocrypto.js +7 -1
  1004. package/js/src/toobit.js +8 -2
  1005. package/js/src/upbit.js +9 -3
  1006. package/js/src/weex.d.ts +1 -0
  1007. package/js/src/weex.js +70 -62
  1008. package/js/src/whitebit.d.ts +1 -0
  1009. package/js/src/whitebit.js +67 -63
  1010. package/js/src/woo.d.ts +1 -0
  1011. package/js/src/woo.js +71 -54
  1012. package/js/src/woofipro.d.ts +1 -0
  1013. package/js/src/woofipro.js +59 -47
  1014. package/js/src/xt.js +7 -2
  1015. package/js/src/zaif.js +6 -0
  1016. package/js/src/zebpay.d.ts +2 -1
  1017. package/js/src/zebpay.js +76 -72
  1018. package/package.json +21 -9
  1019. package/dist/cjs/src/abstract/oxfun.js +0 -11
  1020. package/dist/cjs/src/abstract/wavesexchange.js +0 -11
  1021. package/dist/cjs/src/abstract/yobit.js +0 -11
  1022. package/dist/cjs/src/arkham.js +0 -2485
  1023. package/dist/cjs/src/gateio.js +0 -18
  1024. package/dist/cjs/src/oxfun.js +0 -2933
  1025. package/dist/cjs/src/pro/arkham.js +0 -715
  1026. package/dist/cjs/src/pro/gateio.js +0 -18
  1027. package/dist/cjs/src/pro/oxfun.js +0 -1113
  1028. package/dist/cjs/src/wavesexchange.js +0 -2783
  1029. package/dist/cjs/src/yobit.js +0 -1466
  1030. package/js/src/abstract/arkham.d.ts +0 -121
  1031. package/js/src/abstract/arkham.js +0 -5
  1032. package/js/src/abstract/gateio.d.ts +0 -346
  1033. package/js/src/abstract/gateio.js +0 -5
  1034. package/js/src/abstract/oxfun.d.ts +0 -37
  1035. package/js/src/abstract/oxfun.js +0 -5
  1036. package/js/src/abstract/wavesexchange.d.ts +0 -157
  1037. package/js/src/abstract/wavesexchange.js +0 -5
  1038. package/js/src/abstract/yobit.d.ts +0 -19
  1039. package/js/src/abstract/yobit.js +0 -5
  1040. package/js/src/arkham.d.ts +0 -358
  1041. package/js/src/arkham.js +0 -2478
  1042. package/js/src/gateio.d.ts +0 -4
  1043. package/js/src/gateio.js +0 -11
  1044. package/js/src/oxfun.d.ts +0 -442
  1045. package/js/src/oxfun.js +0 -2926
  1046. package/js/src/pro/arkham.d.ts +0 -105
  1047. package/js/src/pro/arkham.js +0 -708
  1048. package/js/src/pro/gateio.d.ts +0 -4
  1049. package/js/src/pro/gateio.js +0 -11
  1050. package/js/src/pro/oxfun.d.ts +0 -234
  1051. package/js/src/pro/oxfun.js +0 -1106
  1052. package/js/src/wavesexchange.d.ts +0 -244
  1053. package/js/src/wavesexchange.js +0 -2776
  1054. package/js/src/yobit.d.ts +0 -197
  1055. package/js/src/yobit.js +0 -1459
@@ -1,2933 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var oxfun$1 = require('./abstract/oxfun.js');
6
- var errors = require('./base/errors.js');
7
- var number = require('./base/functions/number.js');
8
- var sha256 = require('./static_dependencies/noble-hashes/sha256.js');
9
-
10
- // ---------------------------------------------------------------------------
11
- // ---------------------------------------------------------------------------
12
- /**
13
- * @class oxfun
14
- * @augments Exchange
15
- */
16
- class oxfun extends oxfun$1["default"] {
17
- describe() {
18
- return this.deepExtend(super.describe(), {
19
- 'id': 'oxfun',
20
- 'name': 'OXFUN',
21
- 'countries': ['PA'],
22
- 'version': 'v3',
23
- 'rateLimit': 120,
24
- 'pro': true,
25
- 'has': {
26
- 'CORS': undefined,
27
- 'spot': true,
28
- 'margin': false,
29
- 'swap': true,
30
- 'future': false,
31
- 'option': false,
32
- 'addMargin': false,
33
- 'cancelAllOrders': true,
34
- 'cancelOrder': true,
35
- 'cancelOrders': true,
36
- 'closeAllPositions': false,
37
- 'closePosition': false,
38
- 'createDepositAddress': false,
39
- 'createMarketBuyOrderWithCost': true,
40
- 'createMarketOrderWithCost': false,
41
- 'createMarketSellOrderWithCost': false,
42
- 'createOrder': true,
43
- 'createOrders': true,
44
- 'createPostOnlyOrder': true,
45
- 'createReduceOnlyOrder': false,
46
- 'createStopLimitOrder': true,
47
- 'createStopMarketOrder': true,
48
- 'createStopOrder': true,
49
- 'deposit': false,
50
- 'editOrder': false,
51
- 'fetchAccounts': true,
52
- 'fetchBalance': true,
53
- 'fetchBidsAsks': false,
54
- 'fetchBorrowInterest': false,
55
- 'fetchBorrowRateHistories': false,
56
- 'fetchBorrowRateHistory': false,
57
- 'fetchCanceledOrders': false,
58
- 'fetchClosedOrder': false,
59
- 'fetchClosedOrders': false,
60
- 'fetchCrossBorrowRate': false,
61
- 'fetchCrossBorrowRates': false,
62
- 'fetchCurrencies': true,
63
- 'fetchDeposit': false,
64
- 'fetchDepositAddress': true,
65
- 'fetchDepositAddresses': false,
66
- 'fetchDepositAddressesByNetwork': false,
67
- 'fetchDeposits': true,
68
- 'fetchDepositWithdrawFee': false,
69
- 'fetchDepositWithdrawFees': false,
70
- 'fetchFundingHistory': true,
71
- 'fetchFundingRate': true,
72
- 'fetchFundingRateHistory': true,
73
- 'fetchFundingRates': true,
74
- 'fetchIndexOHLCV': false,
75
- 'fetchIsolatedBorrowRate': false,
76
- 'fetchIsolatedBorrowRates': false,
77
- 'fetchL3OrderBook': false,
78
- 'fetchLedger': false,
79
- 'fetchLeverage': false,
80
- 'fetchLeverageTiers': true,
81
- 'fetchMarketLeverageTiers': 'emulated',
82
- 'fetchMarkets': true,
83
- 'fetchMarkOHLCV': false,
84
- 'fetchMyTrades': true,
85
- 'fetchOHLCV': true,
86
- 'fetchOpenInterestHistory': false,
87
- 'fetchOpenOrder': false,
88
- 'fetchOpenOrders': true,
89
- 'fetchOrder': true,
90
- 'fetchOrderBook': true,
91
- 'fetchOrderBooks': false,
92
- 'fetchOrders': false,
93
- 'fetchOrderTrades': false,
94
- 'fetchPosition': false,
95
- 'fetchPositionHistory': false,
96
- 'fetchPositionMode': false,
97
- 'fetchPositions': true,
98
- 'fetchPositionsForSymbol': false,
99
- 'fetchPositionsHistory': false,
100
- 'fetchPositionsRisk': false,
101
- 'fetchPremiumIndexOHLCV': false,
102
- 'fetchStatus': false,
103
- 'fetchTicker': true,
104
- 'fetchTickers': true,
105
- 'fetchTime': false,
106
- 'fetchTrades': true,
107
- 'fetchTradingFee': false,
108
- 'fetchTradingFees': false,
109
- 'fetchTradingLimits': false,
110
- 'fetchTransactionFee': false,
111
- 'fetchTransactionFees': false,
112
- 'fetchTransactions': false,
113
- 'fetchTransfers': true,
114
- 'fetchWithdrawal': false,
115
- 'fetchWithdrawals': true,
116
- 'fetchWithdrawalWhitelist': false,
117
- 'reduceMargin': false,
118
- 'repayCrossMargin': false,
119
- 'repayIsolatedMargin': false,
120
- 'sandbox': true,
121
- 'setLeverage': false,
122
- 'setMargin': false,
123
- 'setMarginMode': false,
124
- 'setPositionMode': false,
125
- 'signIn': false,
126
- 'transfer': true,
127
- 'withdraw': true,
128
- 'ws': true,
129
- },
130
- 'timeframes': {
131
- '1m': '60s',
132
- '5m': '300s',
133
- '15m': '900s',
134
- '30m': '1800s',
135
- '1h': '3600s',
136
- '2h': '7200s',
137
- '4h': '14400s',
138
- '1d': '86400s',
139
- },
140
- 'urls': {
141
- 'logo': 'https://github.com/ccxt/ccxt/assets/43336371/6a196124-c1ee-4fae-8573-962071b61a85',
142
- 'referral': 'https://ox.fun/register?shareAccountId=5ZUD4a7G',
143
- 'api': {
144
- 'public': 'https://api.ox.fun',
145
- 'private': 'https://api.ox.fun',
146
- },
147
- 'test': {
148
- 'public': 'https://stgapi.ox.fun',
149
- 'private': 'https://stgapi.ox.fun',
150
- },
151
- 'www': 'https://ox.fun/',
152
- 'doc': 'https://docs.ox.fun/',
153
- 'fees': 'https://support.ox.fun/en/articles/8819866-trading-fees',
154
- },
155
- 'api': {
156
- 'public': {
157
- 'get': {
158
- 'v3/markets': 1,
159
- 'v3/assets': 1,
160
- 'v3/tickers': 1,
161
- 'v3/funding/estimates': 1,
162
- 'v3/candles': 1,
163
- 'v3/depth': 1,
164
- 'v3/markets/operational': 1,
165
- 'v3/exchange-trades': 1,
166
- 'v3/funding/rates': 1,
167
- 'v3/leverage/tiers': 1,
168
- },
169
- },
170
- 'private': {
171
- 'get': {
172
- 'v3/account': 1,
173
- 'v3/account/names': 1,
174
- 'v3/wallet': 1,
175
- 'v3/transfer': 1,
176
- 'v3/balances': 1,
177
- 'v3/positions': 1,
178
- 'v3/funding': 1,
179
- 'v3/deposit-addresses': 1,
180
- 'v3/deposit': 1,
181
- 'v3/withdrawal-addresses': 1,
182
- 'v3/withdrawal': 1,
183
- 'v3/withdrawal-fees': 1,
184
- 'v3/orders/status': 1,
185
- 'v3/orders/working': 1,
186
- 'v3/trades': 1,
187
- },
188
- 'post': {
189
- 'v3/transfer': 1,
190
- 'v3/withdrawal': 1,
191
- 'v3/orders/place': 1,
192
- },
193
- 'delete': {
194
- 'v3/orders/cancel': 1,
195
- 'v3/orders/cancel-all': 1,
196
- },
197
- },
198
- },
199
- 'fees': {
200
- 'trading': {
201
- 'tierBased': true,
202
- 'percentage': true,
203
- 'maker': this.parseNumber('0.00020'),
204
- 'taker': this.parseNumber('0.00070'),
205
- 'tiers': {
206
- 'maker': [
207
- [this.parseNumber('0'), this.parseNumber('0.00020')],
208
- [this.parseNumber('2500000'), this.parseNumber('0.00010')],
209
- [this.parseNumber('25000000'), this.parseNumber('0')],
210
- ],
211
- 'taker': [
212
- [this.parseNumber('0'), this.parseNumber('0.00070')],
213
- [this.parseNumber('2500000'), this.parseNumber('0.00050')],
214
- [this.parseNumber('25000000'), this.parseNumber('0.00040')],
215
- ],
216
- },
217
- },
218
- },
219
- 'precisionMode': number.TICK_SIZE,
220
- // exchange-specific options
221
- 'options': {
222
- 'sandboxMode': false,
223
- 'networks': {
224
- 'BTC': 'Bitcoin',
225
- 'ERC20': 'Ethereum',
226
- 'AVAX': 'Avalanche',
227
- 'SOL': 'Solana',
228
- 'ARB': 'Arbitrum',
229
- 'MATIC': 'Polygon',
230
- 'FTM': 'Fantom',
231
- 'BNB': 'BNBSmartChain',
232
- 'OPTIMISM': 'Optimism',
233
- },
234
- 'networksById': {
235
- 'Bitcoin': 'BTC',
236
- 'Ethereum': 'ERC20',
237
- 'Avalanche': 'AVAX',
238
- 'Solana': 'SOL',
239
- 'Arbitrum': 'ARB',
240
- 'Polygon': 'MATIC',
241
- 'Fantom': 'FTM',
242
- 'Base': 'BASE',
243
- 'BNBSmartChain': 'BNB',
244
- 'Optimism': 'OPTIMISM',
245
- },
246
- },
247
- 'features': {
248
- 'default': {
249
- 'sandbox': true,
250
- 'createOrder': {
251
- 'marginMode': false,
252
- 'triggerPrice': true,
253
- 'triggerDirection': false,
254
- 'triggerPriceType': undefined,
255
- 'stopLossPrice': false,
256
- 'takeProfitPrice': false,
257
- 'attachedStopLossTakeProfit': undefined,
258
- 'timeInForce': {
259
- 'IOC': true,
260
- 'FOK': true,
261
- 'PO': true,
262
- 'GTD': false,
263
- },
264
- 'hedged': false,
265
- 'trailing': false,
266
- 'leverage': false,
267
- 'marketBuyByCost': true,
268
- 'marketBuyRequiresPrice': false,
269
- 'selfTradePrevention': {
270
- 'EXPIRE_MAKER': true,
271
- 'EXPIRE_TAKER': true,
272
- 'EXPIRE_BOTH': true,
273
- 'NONE': true,
274
- },
275
- 'iceberg': true, // todo
276
- },
277
- 'createOrders': {
278
- 'max': 10, // todo
279
- },
280
- 'fetchMyTrades': {
281
- 'marginMode': false,
282
- 'limit': 500,
283
- 'daysBack': 100000,
284
- 'untilDays': 7,
285
- 'symbolRequired': false,
286
- },
287
- 'fetchOrder': {
288
- 'marginMode': false,
289
- 'trigger': false,
290
- 'trailing': false,
291
- 'symbolRequired': false,
292
- },
293
- 'fetchOpenOrders': {
294
- 'marginMode': false,
295
- 'limit': undefined,
296
- 'trigger': false,
297
- 'trailing': false,
298
- 'symbolRequired': false,
299
- },
300
- 'fetchOrders': undefined,
301
- 'fetchClosedOrders': undefined,
302
- 'fetchOHLCV': {
303
- 'limit': 500,
304
- },
305
- },
306
- 'spot': {
307
- 'extends': 'default',
308
- },
309
- 'swap': {
310
- 'linear': {
311
- 'extends': 'default',
312
- },
313
- 'inverse': undefined,
314
- },
315
- 'future': {
316
- 'linear': undefined,
317
- 'inverse': undefined,
318
- },
319
- },
320
- 'exceptions': {
321
- 'exact': {
322
- '-0010': errors.OperationFailed,
323
- '-429': errors.RateLimitExceeded,
324
- '-05001': errors.AuthenticationError,
325
- '-10001': errors.ExchangeError,
326
- '-20000': errors.BadRequest,
327
- '-20001': errors.BadRequest,
328
- '-20002': errors.BadRequest,
329
- '-20003': errors.NotSupported,
330
- '-20005': errors.AuthenticationError,
331
- '-20006': errors.BadRequest,
332
- '-20007': errors.AuthenticationError,
333
- '-20008': errors.BadRequest,
334
- '-20009': errors.BadRequest,
335
- '-20010': errors.ArgumentsRequired,
336
- '-20011': errors.ArgumentsRequired,
337
- '-20012': errors.ArgumentsRequired,
338
- '-20013': errors.ArgumentsRequired,
339
- '-20014': errors.BadRequest,
340
- '-20015': errors.BadSymbol,
341
- '-20016': errors.BadRequest,
342
- '-20017': errors.BadRequest,
343
- '-20018': errors.BadRequest,
344
- '-20019': errors.BadRequest,
345
- '-20020': errors.BadRequest,
346
- '-20021': errors.BadRequest,
347
- '-20022': errors.ArgumentsRequired,
348
- '-20023': errors.ArgumentsRequired,
349
- '-20024': errors.ExchangeError,
350
- '-20025': errors.AuthenticationError,
351
- '-20026': errors.BadRequest,
352
- '-20027': errors.BadRequest,
353
- '-20028': errors.BadRequest,
354
- '-20029': errors.BadRequest,
355
- '-20030': errors.BadRequest,
356
- '-20031': errors.MarketClosed,
357
- '-20032': errors.NetworkError,
358
- '-20033': errors.BadRequest,
359
- '-20034': errors.BadRequest,
360
- '-20050': errors.ExchangeError,
361
- '-30001': errors.BadRequest,
362
- '-35034': errors.AuthenticationError,
363
- '-35046': errors.AuthenticationError,
364
- '-40001': errors.ExchangeError,
365
- '-50001': errors.ExchangeError,
366
- '-300001': errors.AccountNotEnabled,
367
- '-300011': errors.InvalidOrder,
368
- '-300012': errors.InvalidOrder,
369
- '-100005': errors.OrderNotFound,
370
- '-100006': errors.InvalidOrder,
371
- '-100008': errors.BadRequest,
372
- '-100015': errors.NetworkError,
373
- '-710001': errors.ExchangeError,
374
- '-710002': errors.BadRequest,
375
- '-710003': errors.BadRequest,
376
- '-710004': errors.BadRequest,
377
- '-710005': errors.InsufficientFunds,
378
- '-710006': errors.InsufficientFunds,
379
- '-710007': errors.InsufficientFunds,
380
- '-000101': errors.NetworkError,
381
- '-000201': errors.NetworkError, // Trade service is busy, try again later
382
- },
383
- 'broad': {
384
- '-20001': errors.OperationFailed,
385
- '-200050': errors.RequestTimeout, // The market is not active
386
- },
387
- },
388
- });
389
- }
390
- /**
391
- * @method
392
- * @name oxfun#fetchMarkets
393
- * @description retrieves data on all markets for bitmex
394
- * @see https://docs.ox.fun/?json#get-v3-markets
395
- * @param {object} [params] extra parameters specific to the exchange API endpoint
396
- * @returns {object[]} an array of objects representing market data
397
- */
398
- async fetchMarkets(params = {}) {
399
- const [responseFromMarkets, responseFromTickers] = await Promise.all([this.publicGetV3Markets(params), this.publicGetV3Tickers(params)]);
400
- const marketsFromMarkets = this.safeList(responseFromMarkets, 'data', []);
401
- //
402
- // {
403
- // success: true,
404
- // data: [
405
- // {
406
- // marketCode: 'OX-USD-SWAP-LIN',
407
- // name: 'OX/USD Perp',
408
- // referencePair: 'OX/USDT',
409
- // base: 'OX',
410
- // counter: 'USD',
411
- // type: 'FUTURE',
412
- // tickSize: '0.00001',
413
- // minSize: '1',
414
- // listedAt: '1704766320000',
415
- // upperPriceBound: '0.02122',
416
- // lowerPriceBound: '0.01142',
417
- // markPrice: '0.01632',
418
- // indexPrice: '0.01564',
419
- // lastUpdatedAt: '1714762235569'
420
- // },
421
- // {
422
- // marketCode: 'BTC-USD-SWAP-LIN',
423
- // name: 'BTC/USD Perp',
424
- // referencePair: 'BTC/USDT',
425
- // base: 'BTC',
426
- // counter: 'USD',
427
- // type: 'FUTURE',
428
- // tickSize: '1',
429
- // minSize: '0.0001',
430
- // listedAt: '1704686640000',
431
- // upperPriceBound: '67983',
432
- // lowerPriceBound: '55621',
433
- // markPrice: '61802',
434
- // indexPrice: '61813',
435
- // lastUpdatedAt: '1714762234765'
436
- // },
437
- // {
438
- // "marketCode": "MILK-OX",
439
- // "name": "MILK/OX",
440
- // "referencePair": "MILK/OX",
441
- // "base": "MILK",
442
- // "counter": "OX",
443
- // "type": "SPOT",
444
- // "tickSize": "0.0001",
445
- // "minSize": "1",
446
- // "listedAt": "1706608500000",
447
- // "upperPriceBound": "1.0000",
448
- // "lowerPriceBound": "-1.0000",
449
- // "markPrice": "0.0269",
450
- // "indexPrice": "0.0269",
451
- // "lastUpdatedAt": "1714757402185"
452
- // },
453
- // ...
454
- // ]
455
- // }
456
- //
457
- const marketsFromTickers = this.safeList(responseFromTickers, 'data', []);
458
- //
459
- // {
460
- // "success": true,
461
- // "data": [
462
- // {
463
- // "marketCode": "DYM-USD-SWAP-LIN",
464
- // "markPrice": "3.321",
465
- // "open24h": "3.315",
466
- // "high24h": "3.356",
467
- // "low24h": "3.255",
468
- // "volume24h": "0",
469
- // "currencyVolume24h": "0",
470
- // "openInterest": "1768.1",
471
- // "lastTradedPrice": "3.543",
472
- // "lastTradedQuantity": "1.0",
473
- // "lastUpdatedAt": "1714853388102"
474
- // },
475
- // ...
476
- // ]
477
- // }
478
- //
479
- const markets = this.arrayConcat(marketsFromMarkets, marketsFromTickers);
480
- return this.parseMarkets(markets);
481
- }
482
- parseMarkets(markets) {
483
- const marketIds = [];
484
- const result = [];
485
- for (let i = 0; i < markets.length; i++) {
486
- const market = markets[i];
487
- const marketId = this.safeString(market, 'marketCode');
488
- if (!(this.inArray(marketId, marketIds))) {
489
- marketIds.push(marketId);
490
- result.push(this.parseMarket(market));
491
- }
492
- }
493
- return result;
494
- }
495
- parseMarket(market) {
496
- const id = this.safeString(market, 'marketCode', '');
497
- const parts = id.split('-');
498
- const baseId = this.safeString(parts, 0);
499
- const quoteId = this.safeString(parts, 1);
500
- const base = this.safeCurrencyCode(baseId);
501
- const quote = this.safeCurrencyCode(quoteId);
502
- let symbol = base + '/' + quote;
503
- let type = this.safeStringLower(market, 'type', 'spot'); // markets from v3/tickers are spot and have no type
504
- let settleId = undefined;
505
- let settle = undefined;
506
- const isFuture = (type === 'future'); // the exchange has only perpetual futures
507
- if (isFuture) {
508
- type = 'swap';
509
- settleId = 'OX';
510
- settle = this.safeCurrencyCode('OX');
511
- symbol = symbol + ':' + settle;
512
- }
513
- const isSpot = type === 'spot';
514
- return this.safeMarketStructure({
515
- 'id': id,
516
- 'numericId': undefined,
517
- 'symbol': symbol,
518
- 'base': base,
519
- 'quote': quote,
520
- 'settle': settle,
521
- 'baseId': baseId,
522
- 'quoteId': quoteId,
523
- 'settleId': settleId,
524
- 'type': type,
525
- 'spot': isSpot,
526
- 'margin': false,
527
- 'swap': isFuture,
528
- 'future': false,
529
- 'option': false,
530
- 'active': true,
531
- 'contract': isFuture,
532
- 'linear': isFuture ? true : undefined,
533
- 'inverse': isFuture ? false : undefined,
534
- 'taker': this.fees['trading']['taker'],
535
- 'maker': this.fees['trading']['maker'],
536
- 'contractSize': isFuture ? 1 : undefined,
537
- 'expiry': undefined,
538
- 'expiryDatetime': undefined,
539
- 'strike': undefined,
540
- 'optionType': undefined,
541
- 'precision': {
542
- 'amount': undefined,
543
- 'price': this.safeNumber(market, 'tickSize'),
544
- },
545
- 'limits': {
546
- 'leverage': {
547
- 'min': undefined,
548
- 'max': undefined,
549
- },
550
- 'amount': {
551
- 'min': this.safeNumber(market, 'minSize'),
552
- 'max': undefined,
553
- },
554
- 'price': {
555
- 'min': undefined,
556
- 'max': undefined,
557
- },
558
- 'cost': {
559
- 'min': undefined,
560
- 'max': undefined,
561
- },
562
- },
563
- 'created': this.safeInteger(market, 'listedAt'),
564
- 'index': undefined,
565
- 'info': market,
566
- });
567
- }
568
- /**
569
- * @method
570
- * @name oxfun#fetchCurrencies
571
- * @description fetches all available currencies on an exchange
572
- * @see https://docs.ox.fun/?json#get-v3-assets
573
- * @param {dict} [params] extra parameters specific to the exchange API endpoint
574
- * @returns {dict} an associative dictionary of currencies
575
- */
576
- async fetchCurrencies(params = {}) {
577
- const response = await this.publicGetV3Assets(params);
578
- //
579
- // {
580
- // "success": true,
581
- // "data": [
582
- // {
583
- // "asset": "OX",
584
- // "isCollateral": true,
585
- // "loanToValue": "1.000000000",
586
- // "loanToValueFactor": "0.000000000",
587
- // "networkList": [
588
- // {
589
- // "network": "BNBSmartChain",
590
- // "tokenId": "0x78a0A62Fba6Fb21A83FE8a3433d44C73a4017A6f",
591
- // "transactionPrecision": "18",
592
- // "isWithdrawalFeeChargedToUser": true,
593
- // "canDeposit": true,
594
- // "canWithdraw": false,
595
- // "minDeposit": "0.00010",
596
- // "minWithdrawal": "0.00010"
597
- // },
598
- // {
599
- // "network": "Polygon",
600
- // "tokenId": "0x78a0A62Fba6Fb21A83FE8a3433d44C73a4017A6f",
601
- // "transactionPrecision": "18",
602
- // "isWithdrawalFeeChargedToUser": true,
603
- // "canDeposit": true,
604
- // "canWithdraw": false,
605
- // "minDeposit": "0.00010",
606
- // "minWithdrawal": "0.00010"
607
- // },
608
- // ...
609
- // ]
610
- // },
611
- // {
612
- // "asset": "BTC",
613
- // "isCollateral": true,
614
- // "loanToValue": "0.950000000",
615
- // "loanToValueFactor": "0.000000000",
616
- // "networkList": [
617
- // {
618
- // "network": "Bitcoin",
619
- // "transactionPrecision": "8",
620
- // "isWithdrawalFeeChargedToUser": true,
621
- // "canDeposit": true,
622
- // "canWithdraw": true,
623
- // "minDeposit": "0.00010",
624
- // "minWithdrawal": "0.00010"
625
- // }
626
- // ]
627
- // },
628
- // {
629
- // "asset": "USDT.ARB",
630
- // "isCollateral": true,
631
- // "loanToValue": "0.950000000",
632
- // "loanToValueFactor": "0.000000000",
633
- // "networkList": [
634
- // {
635
- // "network": "Arbitrum",
636
- // "tokenId": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
637
- // "transactionPrecision": "18",
638
- // "isWithdrawalFeeChargedToUser": true,
639
- // "canDeposit": true,
640
- // "canWithdraw": true,
641
- // "minDeposit": "0.00010",
642
- // "minWithdrawal": "0.00010"
643
- // }
644
- // ]
645
- // },
646
- // ...
647
- // ]
648
- // }
649
- //
650
- const data = this.safeList(response, 'data', []);
651
- const result = {};
652
- for (let i = 0; i < data.length; i++) {
653
- const currency = data[i];
654
- const fullId = this.safeString(currency, 'asset', '');
655
- const parts = fullId.split('.');
656
- const id = parts[0];
657
- const code = this.safeCurrencyCode(id);
658
- if (!(code in result)) {
659
- result[code] = {
660
- 'id': id,
661
- 'code': code,
662
- 'precision': undefined,
663
- 'type': undefined,
664
- 'name': undefined,
665
- 'active': undefined,
666
- 'deposit': undefined,
667
- 'withdraw': undefined,
668
- 'fee': undefined,
669
- 'limits': {
670
- 'withdraw': {
671
- 'min': undefined,
672
- 'max': undefined,
673
- },
674
- 'deposit': {
675
- 'min': undefined,
676
- 'max': undefined,
677
- },
678
- },
679
- 'networks': {},
680
- 'info': [],
681
- };
682
- }
683
- const chains = this.safeList(currency, 'networkList', []);
684
- for (let j = 0; j < chains.length; j++) {
685
- const chain = chains[j];
686
- const networkId = this.safeString(chain, 'network');
687
- const networkCode = this.networkIdToCode(networkId);
688
- result[code]['networks'][networkCode] = {
689
- 'id': networkId,
690
- 'network': networkCode,
691
- 'margin': undefined,
692
- 'deposit': this.safeBool(chain, 'canDeposit'),
693
- 'withdraw': this.safeBool(chain, 'canWithdraw'),
694
- 'active': undefined,
695
- 'fee': undefined,
696
- 'precision': this.parseNumber(this.parsePrecision(this.safeString(chain, 'transactionPrecision'))),
697
- 'limits': {
698
- 'deposit': {
699
- 'min': this.safeNumber(chain, 'minDeposit'),
700
- 'max': undefined,
701
- },
702
- 'withdraw': {
703
- 'min': this.safeNumber(chain, 'minWithdrawal'),
704
- 'max': undefined,
705
- },
706
- },
707
- 'info': chain,
708
- };
709
- }
710
- const infos = this.safeList(result[code], 'info', []);
711
- infos.push(currency);
712
- result[code]['info'] = infos;
713
- }
714
- // only after all entries are formed in currencies, restructure each entry
715
- const allKeys = Object.keys(result);
716
- for (let i = 0; i < allKeys.length; i++) {
717
- const code = allKeys[i];
718
- result[code] = this.safeCurrencyStructure(result[code]); // this is needed after adding network entry
719
- }
720
- return result;
721
- }
722
- /**
723
- * @method
724
- * @name oxfun#fetchTickers
725
- * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
726
- * @see https://docs.ox.fun/?json#get-v3-tickers
727
- * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
728
- * @param {object} [params] extra parameters specific to the exchange API endpoint
729
- * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/?id=ticker-structure}
730
- */
731
- async fetchTickers(symbols = undefined, params = {}) {
732
- await this.loadMarkets();
733
- symbols = this.marketSymbols(symbols);
734
- const response = await this.publicGetV3Tickers(params);
735
- //
736
- // {
737
- // "success": true,
738
- // "data": [
739
- // {
740
- // "marketCode": "NII-USDT",
741
- // "markPrice": "0",
742
- // "open24h": "0",
743
- // "high24h": "0",
744
- // "low24h": "0",
745
- // "volume24h": "0",
746
- // "currencyVolume24h": "0",
747
- // "openInterest": "0",
748
- // "lastTradedPrice": "0",
749
- // "lastTradedQuantity": "0",
750
- // "lastUpdatedAt": "1714853388621"
751
- // },
752
- // {
753
- // "marketCode": "GEC-USDT",
754
- // "markPrice": "0",
755
- // "open24h": "0",
756
- // "high24h": "0",
757
- // "low24h": "0",
758
- // "volume24h": "0",
759
- // "currencyVolume24h": "0",
760
- // "openInterest": "0",
761
- // "lastTradedPrice": "0",
762
- // "lastTradedQuantity": "0",
763
- // "lastUpdatedAt": "1714853388621"
764
- // },
765
- // {
766
- // "marketCode": "DYM-USD-SWAP-LIN",
767
- // "markPrice": "3.321",
768
- // "open24h": "3.315",
769
- // "high24h": "3.356",
770
- // "low24h": "3.255",
771
- // "volume24h": "0",
772
- // "currencyVolume24h": "0",
773
- // "openInterest": "1768.1",
774
- // "lastTradedPrice": "3.543",
775
- // "lastTradedQuantity": "1.0",
776
- // "lastUpdatedAt": "1714853388102"
777
- // },
778
- // ...
779
- // ]
780
- // }
781
- //
782
- const tickers = this.safeList(response, 'data', []);
783
- return this.parseTickers(tickers, symbols);
784
- }
785
- /**
786
- * @method
787
- * @name oxfun#fetchTicker
788
- * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
789
- * @see https://docs.ox.fun/?json#get-v3-tickers
790
- * @param {string} symbol unified symbol of the market to fetch the ticker for
791
- * @param {object} [params] extra parameters specific to the exchange API endpoint
792
- * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/?id=ticker-structure}
793
- */
794
- async fetchTicker(symbol, params = {}) {
795
- await this.loadMarkets();
796
- const market = this.market(symbol);
797
- const request = {
798
- 'marketCode': market['id'],
799
- };
800
- const response = await this.publicGetV3Tickers(this.extend(request, params));
801
- //
802
- // {
803
- // "success": true,
804
- // "data": [
805
- // {
806
- // "marketCode": "BTC-USD-SWAP-LIN",
807
- // "markPrice": "64276",
808
- // "open24h": "63674",
809
- // "high24h": "64607",
810
- // "low24h": "62933",
811
- // "volume24h": "306317655.80000",
812
- // "currencyVolume24h": "48.06810",
813
- // "openInterest": "72.39250",
814
- // "lastTradedPrice": "64300.0",
815
- // "lastTradedQuantity": "1.0",
816
- // "lastUpdatedAt": "1714925196034"
817
- // }
818
- // ]
819
- // }
820
- //
821
- const data = this.safeList(response, 'data', []);
822
- const ticker = this.safeDict(data, 0, {});
823
- return this.parseTicker(ticker, market);
824
- }
825
- parseTicker(ticker, market = undefined) {
826
- //
827
- // {
828
- // "marketCode": "BTC-USD-SWAP-LIN",
829
- // "markPrice": "64276",
830
- // "open24h": "63674",
831
- // "high24h": "64607",
832
- // "low24h": "62933",
833
- // "volume24h": "306317655.80000",
834
- // "currencyVolume24h": "48.06810",
835
- // "openInterest": "72.39250",
836
- // "lastTradedPrice": "64300.0",
837
- // "lastTradedQuantity": "1.0",
838
- // "lastUpdatedAt": "1714925196034"
839
- // }
840
- //
841
- const timestamp = this.safeInteger(ticker, 'lastUpdatedAt');
842
- const marketId = this.safeString(ticker, 'marketCode');
843
- market = this.safeMarket(marketId, market);
844
- const symbol = market['symbol'];
845
- const last = this.safeString(ticker, 'lastTradedPrice');
846
- return this.safeTicker({
847
- 'symbol': symbol,
848
- 'timestamp': timestamp,
849
- 'datetime': this.iso8601(timestamp),
850
- 'high': this.safeString(ticker, 'high24h'),
851
- 'low': this.safeString(ticker, 'low24h'),
852
- 'bid': undefined,
853
- 'bidVolume': undefined,
854
- 'ask': undefined,
855
- 'askVolume': undefined,
856
- 'vwap': undefined,
857
- 'open': this.safeString(ticker, 'open24h'),
858
- 'close': last,
859
- 'last': last,
860
- 'previousClose': undefined,
861
- 'change': undefined,
862
- 'percentage': undefined,
863
- 'average': undefined,
864
- 'baseVolume': this.safeString(ticker, 'currencyVolume24h'),
865
- 'quoteVolume': undefined,
866
- 'markPrice': this.safeString(ticker, 'markPrice'),
867
- 'info': ticker,
868
- }, market);
869
- }
870
- /**
871
- * @method
872
- * @name oxfun#fetchOHLCV
873
- * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
874
- * @see https://docs.ox.fun/?json#get-v3-candles
875
- * @param {string} symbol unified symbol of the market to fetch OHLCV data for
876
- * @param {string} timeframe the length of time each candle represents
877
- * @param {int} [since] timestamp in ms of the earliest candle to fetch (default 24 hours ago)
878
- * @param {int} [limit] the maximum amount of candles to fetch (default 200, max 500)
879
- * @param {object} [params] extra parameters specific to the exchange API endpoint
880
- * @param {int} [params.until] timestamp in ms of the latest candle to fetch (default now)
881
- * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
882
- */
883
- async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
884
- await this.loadMarkets();
885
- const market = this.market(symbol);
886
- timeframe = this.safeString(this.timeframes, timeframe, timeframe);
887
- const request = {
888
- 'marketCode': market['id'],
889
- 'timeframe': timeframe,
890
- };
891
- if (since !== undefined) {
892
- request['startTime'] = since; // startTime and endTime must be within 7 days of each other
893
- }
894
- if (limit !== undefined) {
895
- request['limit'] = limit;
896
- }
897
- const until = this.safeInteger(params, 'until');
898
- if (until !== undefined) {
899
- request['endTime'] = until;
900
- params = this.omit(params, 'until');
901
- }
902
- else if (since !== undefined) {
903
- request['endTime'] = this.sum(since, 7 * 24 * 60 * 60 * 1000); // for the exchange not to throw an exception if since is younger than 7 days
904
- }
905
- const response = await this.publicGetV3Candles(this.extend(request, params));
906
- //
907
- // {
908
- // "success": true,
909
- // "timeframe": "3600s",
910
- // "data": [
911
- // {
912
- // "open": "0.03240000",
913
- // "high": "0.03240000",
914
- // "low": "0.03240000",
915
- // "close": "0.03240000",
916
- // "volume": "0",
917
- // "currencyVolume": "0",
918
- // "openedAt": "1714906800000"
919
- // },
920
- // {
921
- // "open": "0.03240000",
922
- // "high": "0.03240000",
923
- // "low": "0.03240000",
924
- // "close": "0.03240000",
925
- // "volume": "0",
926
- // "currencyVolume": "0",
927
- // "openedAt": "1714903200000"
928
- // },
929
- // ...
930
- // ]
931
- // }
932
- //
933
- const result = this.safeList(response, 'data', []);
934
- return this.parseOHLCVs(result, market, timeframe, since, limit);
935
- }
936
- parseOHLCV(ohlcv, market = undefined) {
937
- //
938
- // {
939
- // "open": "0.03240000",
940
- // "high": "0.03240000",
941
- // "low": "0.03240000",
942
- // "close": "0.03240000",
943
- // "volume": "0",
944
- // "currencyVolume": "0",
945
- // "openedAt": "1714906800000"
946
- // }
947
- //
948
- return [
949
- this.safeInteger(ohlcv, 'openedAt'),
950
- this.safeNumber(ohlcv, 'open'),
951
- this.safeNumber(ohlcv, 'high'),
952
- this.safeNumber(ohlcv, 'low'),
953
- this.safeNumber(ohlcv, 'close'),
954
- this.safeNumber(ohlcv, 'currencyVolume'),
955
- ];
956
- }
957
- /**
958
- * @method
959
- * @name oxfun#fetchOrderBook
960
- * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
961
- * @see https://docs.ox.fun/?json#get-v3-depth
962
- * @param {string} symbol unified symbol of the market to fetch the order book for
963
- * @param {int} [limit] the maximum amount of order book entries to return (default 5, max 100)
964
- * @param {object} [params] extra parameters specific to the exchange API endpoint
965
- * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/?id=order-book-structure} indexed by market symbols
966
- */
967
- async fetchOrderBook(symbol, limit = undefined, params = {}) {
968
- await this.loadMarkets();
969
- const market = this.market(symbol);
970
- const request = {
971
- 'marketCode': market['id'],
972
- };
973
- if (limit !== undefined) {
974
- request['level'] = limit;
975
- }
976
- const response = await this.publicGetV3Depth(this.extend(request, params));
977
- //
978
- // {
979
- // "success": true,
980
- // "level": "5",
981
- // "data": {
982
- // "marketCode": "BTC-USD-SWAP-LIN",
983
- // "lastUpdatedAt": "1714933499266",
984
- // "asks": [
985
- // [ 64073.0, 8.4622 ],
986
- // [ 64092.0, 8.1912 ],
987
- // [ 64111.0, 8.0669 ],
988
- // [ 64130.0, 11.7195 ],
989
- // [ 64151.0, 10.1798 ]
990
- // ],
991
- // "bids": [
992
- // [ 64022.0, 10.1292 ],
993
- // [ 64003.0, 8.1619 ],
994
- // [ 64000.0, 1.0 ],
995
- // [ 63984.0, 12.7724 ],
996
- // [ 63963.0, 11.0073 ]
997
- // ]
998
- // }
999
- // }
1000
- //
1001
- const data = this.safeDict(response, 'data', {});
1002
- const timestamp = this.safeInteger(data, 'lastUpdatedAt');
1003
- return this.parseOrderBook(data, market['symbol'], timestamp);
1004
- }
1005
- /**
1006
- * @method
1007
- * @name oxfun#fetchFundingRates
1008
- * @description fetch the current funding rates for multiple markets
1009
- * @see https://docs.ox.fun/?json#get-v3-funding-estimates
1010
- * @param {string[]} symbols unified market symbols
1011
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1012
- * @returns {Order[]} an array of [funding rate structures]{@link https://docs.ccxt.com/?id=funding-rate-structure}
1013
- */
1014
- async fetchFundingRates(symbols = undefined, params = {}) {
1015
- await this.loadMarkets();
1016
- symbols = this.marketSymbols(symbols);
1017
- const response = await this.publicGetV3FundingEstimates(params);
1018
- //
1019
- // {
1020
- // "success": true,
1021
- // "data": [
1022
- // {
1023
- // "marketCode": "OX-USD-SWAP-LIN",
1024
- // "fundingAt": "1715515200000",
1025
- // "estFundingRate": "0.000200000"
1026
- // },
1027
- // {
1028
- // "marketCode": "BTC-USD-SWAP-LIN",
1029
- // "fundingAt": "1715515200000",
1030
- // "estFundingRate": "0.000003"
1031
- // },
1032
- // ...
1033
- // ]
1034
- // }
1035
- //
1036
- const data = this.safeList(response, 'data', []);
1037
- return this.parseFundingRates(data, symbols);
1038
- }
1039
- /**
1040
- * @method
1041
- * @name oxfun#fetchFundingRate
1042
- * @description fetch the current funding rates for a symbol
1043
- * @see https://docs.ox.fun/?json#get-v3-funding-estimates
1044
- * @param {string} symbol unified market symbols
1045
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1046
- * @returns {Order[]} an array of [funding rate structures]{@link https://docs.ccxt.com/?id=funding-rate-structure}
1047
- */
1048
- async fetchFundingRate(symbol, params = {}) {
1049
- await this.loadMarkets();
1050
- const request = {
1051
- 'marketCode': this.marketId(symbol),
1052
- };
1053
- const response = await this.publicGetV3FundingEstimates(this.extend(request, params));
1054
- //
1055
- const data = this.safeList(response, 'data', []);
1056
- const first = this.safeDict(data, 0, {});
1057
- return this.parseFundingRate(first, this.market(symbol));
1058
- }
1059
- parseFundingRate(fundingRate, market = undefined) {
1060
- //
1061
- // {
1062
- // "marketCode": "OX-USD-SWAP-LIN",
1063
- // "fundingAt": "1715515200000",
1064
- // "estFundingRate": "0.000200000"
1065
- // }
1066
- //
1067
- const symbol = this.safeString(fundingRate, 'marketCode');
1068
- market = this.market(symbol);
1069
- const estFundingRateTimestamp = this.safeInteger(fundingRate, 'fundingAt');
1070
- return {
1071
- 'info': fundingRate,
1072
- 'symbol': market['symbol'],
1073
- 'markPrice': undefined,
1074
- 'indexPrice': undefined,
1075
- 'interestRate': this.parseNumber('0'),
1076
- 'estimatedSettlePrice': undefined,
1077
- 'timestamp': estFundingRateTimestamp,
1078
- 'datetime': this.iso8601(estFundingRateTimestamp),
1079
- 'fundingRate': this.safeNumber(fundingRate, 'estFundingRate'),
1080
- 'fundingTimestamp': undefined,
1081
- 'fundingDatetime': undefined,
1082
- 'nextFundingRate': undefined,
1083
- 'nextFundingTimestamp': undefined,
1084
- 'nextFundingDatetime': undefined,
1085
- 'previousFundingRate': undefined,
1086
- 'previousFundingTimestamp': undefined,
1087
- 'previousFundingDatetime': undefined,
1088
- 'interval': undefined,
1089
- };
1090
- }
1091
- /**
1092
- * @method
1093
- * @name oxfun#fetchFundingRateHistory
1094
- * @description Fetches the history of funding rates
1095
- * @see https://docs.ox.fun/?json#get-v3-funding-rates
1096
- * @param {string} symbol unified symbol of the market to fetch trades for
1097
- * @param {int} [since] timestamp in ms of the earliest trade to fetch (default 24 hours ago)
1098
- * @param {int} [limit] the maximum amount of trades to fetch (default 200, max 500)
1099
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1100
- * @param {int} [params.until] timestamp in ms of the latest trade to fetch (default now)
1101
- * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/?id=public-trades}
1102
- */
1103
- async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1104
- await this.loadMarkets();
1105
- const market = this.market(symbol);
1106
- const request = {
1107
- 'marketCode': market['id'],
1108
- };
1109
- if (since !== undefined) {
1110
- request['startTime'] = since; // startTime and endTime must be within 7 days of each other
1111
- }
1112
- if (limit !== undefined) {
1113
- request['limit'] = limit;
1114
- }
1115
- const until = this.safeInteger(params, 'until');
1116
- if (until !== undefined) {
1117
- request['endTime'] = until;
1118
- params = this.omit(params, 'until');
1119
- }
1120
- const response = await this.publicGetV3FundingRates(this.extend(request, params));
1121
- //
1122
- // {
1123
- // success: true,
1124
- // data: [
1125
- // {
1126
- // marketCode: 'NEAR-USD-SWAP-LIN',
1127
- // fundingRate: '-0.000010000',
1128
- // createdAt: '1715428870755'
1129
- // },
1130
- // {
1131
- // marketCode: 'ENA-USD-SWAP-LIN',
1132
- // fundingRate: '0.000150000',
1133
- // createdAt: '1715428868616'
1134
- // },
1135
- // ...
1136
- // }
1137
- //
1138
- const data = this.safeList(response, 'data', []);
1139
- return this.parseFundingRateHistories(data, market, since, limit);
1140
- }
1141
- parseFundingRateHistory(info, market = undefined) {
1142
- //
1143
- // {
1144
- // success: true,
1145
- // data: [
1146
- // {
1147
- // marketCode: 'NEAR-USD-SWAP-LIN',
1148
- // fundingRate: '-0.000010000',
1149
- // createdAt: '1715428870755'
1150
- // },
1151
- // {
1152
- // marketCode: 'ENA-USD-SWAP-LIN',
1153
- // fundingRate: '0.000150000',
1154
- // createdAt: '1715428868616'
1155
- // },
1156
- // ...
1157
- // }
1158
- //
1159
- const marketId = this.safeString(info, 'marketCode');
1160
- market = this.safeMarket(marketId, market);
1161
- const symbol = market['symbol'];
1162
- const timestamp = this.safeInteger(info, 'createdAt');
1163
- return {
1164
- 'info': info,
1165
- 'symbol': symbol,
1166
- 'fundingRate': this.safeNumber(info, 'fundingRate'),
1167
- 'timestamp': timestamp,
1168
- 'datetime': this.iso8601(timestamp),
1169
- };
1170
- }
1171
- /**
1172
- * @method
1173
- * @name oxfun#fetchFundingHistory
1174
- * @description fetches the history of funding payments
1175
- * @see https://docs.ox.fun/?json#get-v3-funding
1176
- * @param {string} symbol unified symbol of the market to fetch trades for
1177
- * @param {int} [since] timestamp in ms of the earliest trade to fetch (default 24 hours ago)
1178
- * @param {int} [limit] the maximum amount of trades to fetch (default 200, max 500)
1179
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1180
- * @param {int} [params.until] timestamp in ms of the latest trade to fetch (default now)
1181
- * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/?id=public-trades}
1182
- */
1183
- async fetchFundingHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1184
- await this.loadMarkets();
1185
- const market = this.market(symbol);
1186
- const request = {
1187
- 'marketCode': market['id'],
1188
- };
1189
- if (since !== undefined) {
1190
- request['startTime'] = since; // startTime and endTime must be within 7 days of each other
1191
- }
1192
- if (limit !== undefined) {
1193
- request['limit'] = limit;
1194
- }
1195
- const until = this.safeInteger(params, 'until');
1196
- if (until !== undefined) {
1197
- request['endTime'] = until;
1198
- params = this.omit(params, 'until');
1199
- }
1200
- const response = await this.privateGetV3Funding(this.extend(request, params));
1201
- //
1202
- // {
1203
- // success: true,
1204
- // data: [
1205
- // {
1206
- // id: '966709913041305605',
1207
- // marketCode: 'ETH-USD-SWAP-LIN',
1208
- // payment: '-0.00430822',
1209
- // fundingRate: '0.000014',
1210
- // position: '0.001',
1211
- // indexPrice: '3077.3',
1212
- // createdAt: '1715086852890'
1213
- // },
1214
- // {
1215
- // id: '966698111997509637',
1216
- // marketCode: 'ETH-USD-SWAP-LIN',
1217
- // payment: '-0.0067419',
1218
- // fundingRate: '0.000022',
1219
- // position: '0.001',
1220
- // indexPrice: '3064.5',
1221
- // createdAt: '1715083251516'
1222
- // },
1223
- // ...
1224
- // ]
1225
- // }
1226
- //
1227
- const result = this.safeList(response, 'data', []);
1228
- return this.parseIncomes(result, market, since, limit);
1229
- }
1230
- parseIncome(income, market = undefined) {
1231
- //
1232
- // {
1233
- // id: '966709913041305605',
1234
- // marketCode: 'ETH-USD-SWAP-LIN',
1235
- // payment: '-0.00430822',
1236
- // fundingRate: '0.000014',
1237
- // position: '0.001',
1238
- // indexPrice: '3077.3',
1239
- // createdAt: '1715086852890'
1240
- // },
1241
- //
1242
- const marketId = this.safeString(income, 'marketCode');
1243
- const symbol = this.safeSymbol(marketId, market);
1244
- const amount = this.safeNumber(income, 'payment');
1245
- const code = this.safeCurrencyCode('OX');
1246
- const id = this.safeString(income, 'id');
1247
- const timestamp = this.safeTimestamp(income, 'createdAt');
1248
- const rate = this.safeNumber(income, 'fundingRate');
1249
- return {
1250
- 'info': income,
1251
- 'symbol': symbol,
1252
- 'code': code,
1253
- 'timestamp': timestamp,
1254
- 'datetime': this.iso8601(timestamp),
1255
- 'id': id,
1256
- 'amount': amount,
1257
- 'rate': rate,
1258
- };
1259
- }
1260
- /**
1261
- * @method
1262
- * @name oxfun#fetchLeverageTiers
1263
- * @description retrieve information on the maximum leverage, and maintenance margin for trades of varying trade sizes, if a market has a leverage tier of 0, then the leverage tiers cannot be obtained for this market
1264
- * @see https://docs.ox.fun/?json#get-v3-leverage-tiers
1265
- * @param {string[]} [symbols] list of unified market symbols
1266
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1267
- * @returns {object} a dictionary of [leverage tiers structures]{@link https://docs.ccxt.com/?id=leverage-tiers-structure}, indexed by market symbols
1268
- */
1269
- async fetchLeverageTiers(symbols = undefined, params = {}) {
1270
- await this.loadMarkets();
1271
- const response = await this.publicGetV3LeverageTiers(params);
1272
- //
1273
- // {
1274
- // success: true,
1275
- // data: [
1276
- // {
1277
- // marketCode: 'SOL-USD-SWAP-LIN',
1278
- // tiers: [
1279
- // {
1280
- // tier: '1',
1281
- // leverage: '10',
1282
- // positionFloor: '0',
1283
- // positionCap: '200000000',
1284
- // initialMargin: '0.1',
1285
- // maintenanceMargin: '0.05',
1286
- // maintenanceAmount: '0'
1287
- // },
1288
- // {
1289
- // tier: '2',
1290
- // leverage: '5',
1291
- // positionFloor: '200000000',
1292
- // positionCap: '280000000',
1293
- // initialMargin: '0.2',
1294
- // maintenanceMargin: '0.1',
1295
- // maintenanceAmount: '7000000'
1296
- // },
1297
- // {
1298
- // tier: '3',
1299
- // leverage: '4',
1300
- // positionFloor: '280000000',
1301
- // positionCap: '460000000',
1302
- // initialMargin: '0.25',
1303
- // maintenanceMargin: '0.125',
1304
- // maintenanceAmount: '14000000'
1305
- // },
1306
- // ...
1307
- // ]
1308
- // },
1309
- // ...
1310
- // ]
1311
- // }
1312
- //
1313
- const data = this.safeList(response, 'data', []);
1314
- return this.parseLeverageTiers(data, symbols, 'marketCode');
1315
- }
1316
- parseMarketLeverageTiers(info, market = undefined) {
1317
- //
1318
- // {
1319
- // marketCode: 'SOL-USD-SWAP-LIN',
1320
- // tiers: [
1321
- // {
1322
- // tier: '1',
1323
- // leverage: '10',
1324
- // positionFloor: '0',
1325
- // positionCap: '200000000',
1326
- // initialMargin: '0.1',
1327
- // maintenanceMargin: '0.05',
1328
- // maintenanceAmount: '0'
1329
- // ...
1330
- // ]
1331
- // },
1332
- //
1333
- const marketId = this.safeString(info, 'marketCode');
1334
- market = this.safeMarket(marketId, market);
1335
- const listOfTiers = this.safeList(info, 'tiers', []);
1336
- const tiers = [];
1337
- for (let j = 0; j < listOfTiers.length; j++) {
1338
- const tier = listOfTiers[j];
1339
- tiers.push({
1340
- 'tier': this.safeNumber(tier, 'tier'),
1341
- 'symbol': this.safeSymbol(marketId, market),
1342
- 'currency': market['settle'],
1343
- 'minNotional': this.safeNumber(tier, 'positionFloor'),
1344
- 'maxNotional': this.safeNumber(tier, 'positionCap'),
1345
- 'maintenanceMarginRate': this.safeNumber(tier, 'maintenanceMargin'),
1346
- 'maxLeverage': this.safeNumber(tier, 'leverage'),
1347
- 'info': tier,
1348
- });
1349
- }
1350
- return tiers;
1351
- }
1352
- /**
1353
- * @method
1354
- * @name oxfun#fetchTrades
1355
- * @description get the list of most recent trades for a particular symbol
1356
- * @see https://docs.ox.fun/?json#get-v3-exchange-trades
1357
- * @param {string} symbol unified symbol of the market to fetch trades for
1358
- * @param {int} [since] timestamp in ms of the earliest trade to fetch (default 24 hours ago)
1359
- * @param {int} [limit] the maximum amount of trades to fetch (default 200, max 500)
1360
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1361
- * @param {int} [params.until] timestamp in ms of the latest trade to fetch (default now)
1362
- * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/?id=public-trades}
1363
- */
1364
- async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
1365
- await this.loadMarkets();
1366
- const market = this.market(symbol);
1367
- const request = {
1368
- 'marketCode': market['id'],
1369
- };
1370
- if (since !== undefined) {
1371
- request['startTime'] = since; // startTime and endTime must be within 7 days of each other
1372
- }
1373
- if (limit !== undefined) {
1374
- request['limit'] = limit;
1375
- }
1376
- const until = this.safeInteger(params, 'until');
1377
- if (until !== undefined) {
1378
- request['endTime'] = until;
1379
- params = this.omit(params, 'until');
1380
- }
1381
- else if (since !== undefined) {
1382
- request['endTime'] = this.sum(since, 7 * 24 * 60 * 60 * 1000); // for the exchange not to throw an exception if since is younger than 7 days
1383
- }
1384
- const response = await this.publicGetV3ExchangeTrades(this.extend(request, params));
1385
- //
1386
- // {
1387
- // "success": true,
1388
- // "data": [
1389
- // {
1390
- // "marketCode": "BTC-USD-SWAP-LIN",
1391
- // "matchPrice": "63900",
1392
- // "matchQuantity": "1",
1393
- // "side": "SELL",
1394
- // "matchType": "TAKER",
1395
- // "matchedAt": "1714934112352"
1396
- // },
1397
- // ...
1398
- // ]
1399
- // }
1400
- //
1401
- const data = this.safeList(response, 'data', []);
1402
- return this.parseTrades(data, market, since, limit);
1403
- }
1404
- /**
1405
- * @method
1406
- * @name oxfun#fetchMyTrades
1407
- * @description fetch all trades made by the user
1408
- * @see https://docs.ox.fun/?json#get-v3-trades
1409
- * @param {string} symbol unified market symbol
1410
- * @param {int} [since] the earliest time in ms to fetch trades for
1411
- * @param {int} [limit] the maximum amount of trades to fetch (default 200, max 500)
1412
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1413
- * @param {int} [params.until] timestamp in ms of the latest trade to fetch (default now)
1414
- * @returns {Trade[]} a list of [trade structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#trade-structure}
1415
- */
1416
- async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1417
- await this.loadMarkets();
1418
- const request = {};
1419
- let market = undefined;
1420
- if (symbol !== undefined) {
1421
- market = this.market(symbol);
1422
- request['marketCode'] = market['id'];
1423
- }
1424
- if (since !== undefined) { // startTime and endTime must be within 7 days of each other
1425
- request['startTime'] = since;
1426
- }
1427
- if (limit !== undefined) {
1428
- request['limit'] = limit;
1429
- }
1430
- const until = this.safeInteger(params, 'until');
1431
- if (until !== undefined) {
1432
- request['endTime'] = until;
1433
- params = this.omit(params, 'until');
1434
- }
1435
- else if (since !== undefined) {
1436
- request['endTime'] = this.sum(since, 7 * 24 * 60 * 60 * 1000); // for the exchange not to throw an exception if since is younger than 7 days
1437
- }
1438
- const response = await this.privateGetV3Trades(this.extend(request, params));
1439
- //
1440
- // {
1441
- // "success": true,
1442
- // "data": [
1443
- // {
1444
- // "orderId": "1000104903698",
1445
- // "clientOrderId": "1715000260094",
1446
- // "matchId": "400017129522773178",
1447
- // "marketCode": "ETH-USD-SWAP-LIN",
1448
- // "side": "BUY",
1449
- // "matchedQuantity": "0.001",
1450
- // "matchPrice": "3100.2",
1451
- // "total": "310.02",
1452
- // "orderMatchType": "MAKER",
1453
- // "feeAsset": "OX",
1454
- // "fee": "0.062004",
1455
- // "source": "0",
1456
- // "matchedAt": "1715000267420"
1457
- // }
1458
- // ]
1459
- // }
1460
- //
1461
- const result = this.safeList(response, 'data', []);
1462
- return this.parseTrades(result, market, since, limit);
1463
- }
1464
- parseTrade(trade, market = undefined) {
1465
- //
1466
- // public fetchTrades
1467
- //
1468
- // {
1469
- // "marketCode": "BTC-USD-SWAP-LIN",
1470
- // "matchPrice": "63900",
1471
- // "matchQuantity": "1",
1472
- // "side": "SELL",
1473
- // "matchType": "TAKER",
1474
- // "matchedAt": "1714934112352"
1475
- // }
1476
- //
1477
- //
1478
- // private fetchMyTrades
1479
- //
1480
- // {
1481
- // "orderId": "1000104903698",
1482
- // "clientOrderId": "1715000260094",
1483
- // "matchId": "400017129522773178",
1484
- // "marketCode": "ETH-USD-SWAP-LIN",
1485
- // "side": "BUY",
1486
- // "matchedQuantity": "0.001",
1487
- // "matchPrice": "3100.2",
1488
- // "total": "310.02",
1489
- // "orderMatchType": "MAKER",
1490
- // "feeAsset": "OX",
1491
- // "fee": "0.062004",
1492
- // "source": "0",
1493
- // "matchedAt": "1715000267420"
1494
- // }
1495
- //
1496
- const marketId = this.safeString(trade, 'marketCode');
1497
- market = this.safeMarket(marketId, market);
1498
- const symbol = market['symbol'];
1499
- const timestamp = this.safeInteger(trade, 'matchedAt');
1500
- const fee = {
1501
- 'cost': this.safeString(trade, 'fee'),
1502
- 'currency': this.safeCurrencyCode(this.safeString(trade, 'feeAsset')),
1503
- };
1504
- return this.safeTrade({
1505
- 'id': this.safeString(trade, 'matchId'),
1506
- 'timestamp': timestamp,
1507
- 'datetime': this.iso8601(timestamp),
1508
- 'symbol': symbol,
1509
- 'type': undefined,
1510
- 'order': this.safeString(trade, 'orderId'),
1511
- 'side': this.safeStringLower(trade, 'side'),
1512
- 'takerOrMaker': this.safeStringLower2(trade, 'matchType', 'orderMatchType'),
1513
- 'price': this.safeString(trade, 'matchPrice'),
1514
- 'amount': this.safeString2(trade, 'matchQuantity', 'matchedQuantity'),
1515
- 'cost': undefined,
1516
- 'fee': fee,
1517
- 'info': trade,
1518
- }, market);
1519
- }
1520
- /**
1521
- * @method
1522
- * @name oxfun#fetchBalance
1523
- * @description query for balance and get the amount of funds available for trading or funds locked in orders
1524
- * @see https://docs.ox.fun/?json#get-v3-balances
1525
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1526
- * @param {string} [params.asset] currency id, if empty the exchange returns info about all currencies
1527
- * @param {string} [params.subAcc] Name of sub account. If no subAcc is given, then the response contains only the account linked to the API-Key.
1528
- * @returns {object} a [balance structure]{@link https://docs.ccxt.com/?id=balance-structure}
1529
- */
1530
- async fetchBalance(params = {}) {
1531
- await this.loadMarkets();
1532
- const response = await this.privateGetV3Balances(params);
1533
- //
1534
- // {
1535
- // "success": true,
1536
- // "data": [
1537
- // {
1538
- // "accountId": "106490",
1539
- // "name": "main",
1540
- // "balances": [
1541
- // {
1542
- // "asset": "OX",
1543
- // "total": "-7.55145065000",
1544
- // "available": "-71.16445065000",
1545
- // "reserved": "0",
1546
- // "lastUpdatedAt": "1715000448946"
1547
- // },
1548
- // {
1549
- // "asset": "ETH",
1550
- // "total": "0.01",
1551
- // "available": "0.01",
1552
- // "reserved": "0",
1553
- // "lastUpdatedAt": "1714914512750"
1554
- // },
1555
- // ...
1556
- // ]
1557
- // },
1558
- // ...
1559
- // ]
1560
- // }
1561
- //
1562
- const data = this.safeList(response, 'data', []);
1563
- let balance = data[0];
1564
- const subAcc = this.safeString(params, 'subAcc');
1565
- if (subAcc !== undefined) {
1566
- for (let i = 0; i < data.length; i++) {
1567
- const b = data[i];
1568
- const name = this.safeString(b, 'name');
1569
- if (name === subAcc) {
1570
- balance = b;
1571
- break;
1572
- }
1573
- }
1574
- }
1575
- return this.parseBalance(balance);
1576
- }
1577
- parseBalance(balance) {
1578
- //
1579
- // {
1580
- // "accountId": "106490",
1581
- // "name": "main",
1582
- // "balances": [
1583
- // {
1584
- // "asset": "OX",
1585
- // "total": "-7.55145065000",
1586
- // "available": "-71.16445065000",
1587
- // "reserved": "0",
1588
- // "lastUpdatedAt": "1715000448946"
1589
- // },
1590
- // {
1591
- // "asset": "ETH",
1592
- // "total": "0.01",
1593
- // "available": "0.01",
1594
- // "reserved": "0",
1595
- // "lastUpdatedAt": "1714914512750"
1596
- // },
1597
- // ...
1598
- // ]
1599
- // }
1600
- //
1601
- const result = {
1602
- 'info': balance,
1603
- };
1604
- const balances = this.safeList(balance, 'balances', []);
1605
- for (let i = 0; i < balances.length; i++) {
1606
- const balanceEntry = balances[i];
1607
- const currencyId = this.safeString(balanceEntry, 'asset');
1608
- const code = this.safeCurrencyCode(currencyId);
1609
- const account = this.account();
1610
- account['total'] = this.safeString(balanceEntry, 'total');
1611
- account['free'] = this.safeString(balanceEntry, 'available');
1612
- account['used'] = this.safeString(balanceEntry, 'reserved');
1613
- result[code] = account;
1614
- }
1615
- return this.safeBalance(result);
1616
- }
1617
- /**
1618
- * @method
1619
- * @name oxfun#fetchAccounts
1620
- * @description fetch subaccounts associated with a profile
1621
- * @see https://docs.ox.fun/?json#get-v3-account-names
1622
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1623
- * @returns {object} a dictionary of [account structures]{@link https://docs.ccxt.com/?id=account-structure} indexed by the account type
1624
- */
1625
- async fetchAccounts(params = {}) {
1626
- await this.loadMarkets();
1627
- // this endpoint can only be called using API keys paired with the parent account! Returns all active subaccounts.
1628
- const response = await this.privateGetV3AccountNames(params);
1629
- //
1630
- // {
1631
- // "success": true,
1632
- // "data": [
1633
- // {
1634
- // "accountId": "106526",
1635
- // "name": "testSubAccount"
1636
- // },
1637
- // ...
1638
- // ]
1639
- // }
1640
- //
1641
- const data = this.safeList(response, 'data', []);
1642
- return this.parseAccounts(data, params);
1643
- }
1644
- parseAccount(account) {
1645
- //
1646
- // {
1647
- // "accountId": "106526",
1648
- // "name": "testSubAccount"
1649
- // },
1650
- //
1651
- return {
1652
- 'id': this.safeString(account, 'accountId'),
1653
- 'type': undefined,
1654
- 'code': undefined,
1655
- 'info': account,
1656
- };
1657
- }
1658
- /**
1659
- * @method
1660
- * @name oxfun#transfer
1661
- * @description transfer currency internally between wallets on the same account
1662
- * @see https://docs.ox.fun/?json#post-v3-transfer
1663
- * @param {string} code unified currency code
1664
- * @param {float} amount amount to transfer
1665
- * @param {string} fromAccount account id to transfer from
1666
- * @param {string} toAccount account id to transfer to
1667
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1668
- * @returns {object} a [transfer structure]{@link https://docs.ccxt.com/?id=transfer-structure}
1669
- */
1670
- async transfer(code, amount, fromAccount, toAccount, params = {}) {
1671
- // transferring funds between sub-accounts is restricted to API keys linked to the parent account.
1672
- await this.loadMarkets();
1673
- const currency = this.currency(code);
1674
- const request = {
1675
- 'asset': currency['id'],
1676
- 'quantity': this.currencyToPrecision(code, amount),
1677
- 'fromAccount': fromAccount,
1678
- 'toAccount': toAccount,
1679
- };
1680
- const response = await this.privatePostV3Transfer(this.extend(request, params));
1681
- //
1682
- // {
1683
- // timestamp: 1715430036267,
1684
- // datetime: '2024-05-11T12:20:36.267Z',
1685
- // currency: 'OX',
1686
- // amount: 10,
1687
- // fromAccount: '106464',
1688
- // toAccount: '106570',
1689
- // info: {
1690
- // asset: 'OX',
1691
- // quantity: '10',
1692
- // fromAccount: '106464',
1693
- // toAccount: '106570',
1694
- // transferredAt: '1715430036267'
1695
- // }
1696
- // }
1697
- //
1698
- const data = this.safeDict(response, 'data', {});
1699
- return this.parseTransfer(data, currency);
1700
- }
1701
- /**
1702
- * @method
1703
- * @name oxfun#fetchTransfers
1704
- * @description fetch a history of internal transfers made on an account
1705
- * @see https://docs.ox.fun/?json#get-v3-transfer
1706
- * @param {string} code unified currency code of the currency transferred
1707
- * @param {int} [since] the earliest time in ms to fetch transfers for (default 24 hours ago)
1708
- * @param {int} [limit] the maximum number of transfer structures to retrieve (default 50, max 200)
1709
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1710
- * @param {int} [params.until] the latest time in ms to fetch transfers for (default time now)
1711
- * @returns {object[]} a list of [transfer structures]{@link https://docs.ccxt.com/?id=transfer-structure}
1712
- */
1713
- async fetchTransfers(code = undefined, since = undefined, limit = undefined, params = {}) {
1714
- // API keys linked to the parent account can get all account transfers, while API keys linked to a sub-account can only see transfers where the sub-account is either the "fromAccount" or "toAccount"
1715
- await this.loadMarkets();
1716
- const request = {};
1717
- let currency = undefined;
1718
- if (code !== undefined) {
1719
- currency = this.currency(code);
1720
- request['asset'] = currency['id'];
1721
- }
1722
- if (since !== undefined) {
1723
- request['startTime'] = since; // startTime and endTime must be within 7 days of each other
1724
- }
1725
- if (limit !== undefined) {
1726
- request['limit'] = limit;
1727
- }
1728
- const until = this.safeInteger(params, 'until');
1729
- if (until !== undefined) {
1730
- request['endTime'] = until;
1731
- params = this.omit(params, 'until');
1732
- }
1733
- else if (since !== undefined) {
1734
- request['endTime'] = this.sum(since, 7 * 24 * 60 * 60 * 1000); // for the exchange not to throw an exception if since is younger than 7 days
1735
- }
1736
- const response = await this.privateGetV3Transfer(this.extend(request, params));
1737
- //
1738
- // {
1739
- // "success": true,
1740
- // "data": [
1741
- // {
1742
- // "asset": "USDT",
1743
- // "quantity": "5",
1744
- // "fromAccount": "106490",
1745
- // "toAccount": "106526",
1746
- // "id": "966706320886267905",
1747
- // "status": "COMPLETED",
1748
- // "transferredAt": "1715085756708"
1749
- // },
1750
- // ...
1751
- // ]
1752
- // }
1753
- //
1754
- const data = this.safeList(response, 'data', []);
1755
- return this.parseTransfers(data, currency, since, limit);
1756
- }
1757
- parseTransfer(transfer, currency = undefined) {
1758
- //
1759
- // fetchTransfers
1760
- //
1761
- // {
1762
- // "asset": "USDT",
1763
- // "quantity": "5",
1764
- // "fromAccount": "106490",
1765
- // "toAccount": "106526",
1766
- // "id": "966706320886267905",
1767
- // "status": "COMPLETED",
1768
- // "transferredAt": "1715085756708"
1769
- // }
1770
- //
1771
- const timestamp = this.safeInteger(transfer, 'transferredAt');
1772
- const currencyId = this.safeString(transfer, 'asset');
1773
- return {
1774
- 'id': this.safeString(transfer, 'id'),
1775
- 'timestamp': timestamp,
1776
- 'datetime': this.iso8601(timestamp),
1777
- 'currency': this.safeCurrencyCode(currencyId, currency),
1778
- 'amount': this.safeNumber(transfer, 'quantity'),
1779
- 'fromAccount': this.safeString(transfer, 'fromAccount'),
1780
- 'toAccount': this.safeString(transfer, 'toAccount'),
1781
- 'status': this.parseTransferStatus(this.safeString(transfer, 'status')),
1782
- 'info': transfer,
1783
- };
1784
- }
1785
- parseTransferStatus(status) {
1786
- const statuses = {
1787
- 'COMPLETED': 'ok',
1788
- };
1789
- return this.safeString(statuses, status, status);
1790
- }
1791
- /**
1792
- * @method
1793
- * @name oxfun#fetchDepositAddress
1794
- * @description fetch the deposit address for a currency associated with this account
1795
- * @see https://docs.ox.fun/?json#get-v3-deposit-addresses
1796
- * @param {string} code unified currency code
1797
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1798
- * @param {string} [params.network] network for fetch deposit address
1799
- * @returns {object} an [address structure]{@link https://docs.ccxt.com/?id=address-structure}
1800
- */
1801
- async fetchDepositAddress(code, params = {}) {
1802
- const networkCode = this.safeString(params, 'network');
1803
- const networkId = this.networkCodeToId(networkCode, code);
1804
- if (networkId === undefined) {
1805
- throw new errors.BadRequest(this.id + ' fetchDepositAddress() require network parameter');
1806
- }
1807
- await this.loadMarkets();
1808
- const currency = this.currency(code);
1809
- const request = {
1810
- 'asset': currency['id'],
1811
- 'network': networkId,
1812
- };
1813
- params = this.omit(params, 'network');
1814
- const response = await this.privateGetV3DepositAddresses(this.extend(request, params));
1815
- //
1816
- // {"success":true,"data":{"address":"0x998dEc76151FB723963Bd8AFD517687b38D33dE8"}}
1817
- //
1818
- const data = this.safeDict(response, 'data', {});
1819
- return this.parseDepositAddress(data, currency);
1820
- }
1821
- parseDepositAddress(depositAddress, currency = undefined) {
1822
- //
1823
- // {"address":"0x998dEc76151FB723963Bd8AFD517687b38D33dE8"}
1824
- //
1825
- const address = this.safeString(depositAddress, 'address');
1826
- this.checkAddress(address);
1827
- return {
1828
- 'info': depositAddress,
1829
- 'currency': currency['code'],
1830
- 'network': undefined,
1831
- 'address': address,
1832
- 'tag': undefined,
1833
- };
1834
- }
1835
- /**
1836
- * @method
1837
- * @name oxfun#fetchDeposits
1838
- * @description fetch all deposits made to an account
1839
- * @see https://docs.ox.fun/?json#get-v3-deposit
1840
- * @param {string} code unified currency code of the currency transferred
1841
- * @param {int} [since] the earliest time in ms to fetch transfers for (default 24 hours ago)
1842
- * @param {int} [limit] the maximum number of transfer structures to retrieve (default 50, max 200)
1843
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1844
- * @param {int} [params.until] the latest time in ms to fetch transfers for (default time now)
1845
- * @returns {object[]} a list of [transfer structures]{@link https://docs.ccxt.com/?id=transfer-structure}
1846
- */
1847
- async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
1848
- await this.loadMarkets();
1849
- const request = {};
1850
- let currency = undefined;
1851
- if (code !== undefined) {
1852
- currency = this.currency(code);
1853
- request['asset'] = currency['id'];
1854
- }
1855
- if (since !== undefined) {
1856
- request['startTime'] = since; // startTime and endTime must be within 7 days of each other
1857
- }
1858
- if (limit !== undefined) {
1859
- request['limit'] = limit;
1860
- }
1861
- const until = this.safeInteger(params, 'until');
1862
- if (until !== undefined) {
1863
- request['endTime'] = until;
1864
- params = this.omit(params, 'until');
1865
- }
1866
- const response = await this.privateGetV3Deposit(this.extend(request, params));
1867
- //
1868
- // {
1869
- // "success": true,
1870
- // "data": [
1871
- // {
1872
- // "asset":"USDC",
1873
- // "network":"Ethereum",
1874
- // "address": "0x998dEc76151FB723963Bd8AFD517687b38D33dE8",
1875
- // "quantity":"50",
1876
- // "id":"5914",
1877
- // "status": "COMPLETED",
1878
- // "txId":"0xf5e79663830a0c6f94d46638dcfbc134566c12facf1832396f81ecb55d3c75dc",
1879
- // "creditedAt":"1714821645154"
1880
- // }
1881
- // ]
1882
- // }
1883
- //
1884
- const data = this.safeList(response, 'data', []);
1885
- for (let i = 0; i < data.length; i++) {
1886
- data[i]['type'] = 'deposit';
1887
- }
1888
- return this.parseTransactions(data, currency, since, limit);
1889
- }
1890
- /**
1891
- * @method
1892
- * @name oxfun#fetchWithdrawals
1893
- * @description fetch all withdrawals made from an account
1894
- * @see https://docs.ox.fun/?json#get-v3-withdrawal
1895
- * @param {string} code unified currency code of the currency transferred
1896
- * @param {int} [since] the earliest time in ms to fetch transfers for (default 24 hours ago)
1897
- * @param {int} [limit] the maximum number of transfer structures to retrieve (default 50, max 200)
1898
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1899
- * @param {int} [params.until] the latest time in ms to fetch transfers for (default time now)
1900
- * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/?id=transaction-structure}
1901
- */
1902
- async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1903
- await this.loadMarkets();
1904
- const request = {};
1905
- let currency = undefined;
1906
- if (code !== undefined) {
1907
- currency = this.currency(code);
1908
- request['asset'] = currency['id'];
1909
- }
1910
- if (since !== undefined) {
1911
- request['startTime'] = since; // startTime and endTime must be within 7 days of each other
1912
- }
1913
- if (limit !== undefined) {
1914
- request['limit'] = limit;
1915
- }
1916
- const until = this.safeInteger(params, 'until');
1917
- if (until !== undefined) {
1918
- request['endTime'] = until;
1919
- params = this.omit(params, 'until');
1920
- }
1921
- const response = await this.privateGetV3Withdrawal(this.extend(request, params));
1922
- //
1923
- // {
1924
- // success: true,
1925
- // data: [
1926
- // {
1927
- // id: '968163212989431811',
1928
- // asset: 'OX',
1929
- // network: 'Arbitrum',
1930
- // address: '0x90fc1fB49a4ED8f485dd02A2a1Cf576897f6Bfc9',
1931
- // quantity: '11.7444',
1932
- // fee: '1.744400000',
1933
- // status: 'COMPLETED',
1934
- // txId: '0xe96b2d128b737fdbca927edf355cff42202e65b0fb960e64ffb9bd68c121f69f',
1935
- // requestedAt: '1715530365450',
1936
- // completedAt: '1715530527000'
1937
- // }
1938
- // ]
1939
- // }
1940
- //
1941
- const data = this.safeList(response, 'data', []);
1942
- for (let i = 0; i < data.length; i++) {
1943
- data[i]['type'] = 'withdrawal';
1944
- }
1945
- return this.parseTransactions(data, currency, since, limit);
1946
- }
1947
- parseTransactions(transactions, currency = undefined, since = undefined, limit = undefined, params = {}) {
1948
- let result = [];
1949
- for (let i = 0; i < transactions.length; i++) {
1950
- transactions[i] = this.extend(transactions[i], params);
1951
- const transaction = this.parseTransaction(transactions[i], currency);
1952
- result.push(transaction);
1953
- }
1954
- result = this.sortBy(result, 'timestamp');
1955
- const code = (currency !== undefined) ? currency['code'] : undefined;
1956
- return this.filterByCurrencySinceLimit(result, code, since, limit);
1957
- }
1958
- parseTransaction(transaction, currency = undefined) {
1959
- //
1960
- // fetchDeposits
1961
- // {
1962
- // "asset":"USDC",
1963
- // "network":"Ethereum",
1964
- // "address": "0x998dEc76151FB723963Bd8AFD517687b38D33dE8",
1965
- // "quantity":"50",
1966
- // "id":"5914",
1967
- // "status": "COMPLETED",
1968
- // "txId":"0xf5e79663830a0c6f94d46638dcfbc134566c12facf1832396f81ecb55d3c75dc",
1969
- // "creditedAt":"1714821645154"
1970
- // }
1971
- //
1972
- // fetchWithdrawals
1973
- // {
1974
- // id: '968163212989431811',
1975
- // asset: 'OX',
1976
- // network: 'Arbitrum',
1977
- // address: '0x90fc1fB49a4ED8f485dd02A2a1Cf576897f6Bfc9',
1978
- // quantity: '11.7444',
1979
- // fee: '1.744400000',
1980
- // status: 'COMPLETED',
1981
- // txId: '0xe96b2d128b737fdbca927edf355cff42202e65b0fb960e64ffb9bd68c121f69f',
1982
- // requestedAt: '1715530365450',
1983
- // completedAt: '1715530527000'
1984
- // }
1985
- //
1986
- // withdraw
1987
- // {
1988
- // "id": "968364664449302529",
1989
- // "asset": "OX",
1990
- // "network": "Arbitrum",
1991
- // "address": "0x90fc1fB49a4ED8f485dd02A2a1Cf576897f6Bfc9",
1992
- // "quantity": "10",
1993
- // "externalFee": false,
1994
- // "fee": "1.6728",
1995
- // "status": "PENDING",
1996
- // "requestedAt": "1715591843616"
1997
- // }
1998
- //
1999
- const id = this.safeString(transaction, 'id');
2000
- const type = this.safeString(transaction, 'type');
2001
- transaction = this.omit(transaction, 'type');
2002
- let address = undefined;
2003
- let addressTo = undefined;
2004
- let status = undefined;
2005
- if (type === 'deposit') {
2006
- address = this.safeString(transaction, 'address');
2007
- status = this.parseDepositStatus(this.safeString(transaction, 'status'));
2008
- }
2009
- else if (type === 'withdrawal') {
2010
- addressTo = this.safeString(transaction, 'address');
2011
- status = this.parseWithdrawalStatus(this.safeString(transaction, 'status'));
2012
- }
2013
- const txid = this.safeString(transaction, 'txId');
2014
- const currencyId = this.safeString(transaction, 'asset');
2015
- const code = this.safeCurrencyCode(currencyId, currency);
2016
- const network = this.safeString(transaction, 'network');
2017
- const networkCode = this.networkIdToCode(network);
2018
- const timestamp = this.safeInteger2(transaction, 'creditedAt', 'requestedAt');
2019
- const amount = this.safeNumber(transaction, 'quantity');
2020
- const feeCost = this.safeNumber(transaction, 'fee');
2021
- let fee = undefined;
2022
- if (feeCost !== undefined) {
2023
- fee = {
2024
- 'cost': feeCost,
2025
- 'currency': code,
2026
- };
2027
- }
2028
- return {
2029
- 'info': transaction,
2030
- 'id': id,
2031
- 'txid': txid,
2032
- 'timestamp': timestamp,
2033
- 'datetime': this.iso8601(timestamp),
2034
- 'network': networkCode,
2035
- 'address': address,
2036
- 'addressTo': addressTo,
2037
- 'addressFrom': undefined,
2038
- 'tag': undefined,
2039
- 'tagTo': undefined,
2040
- 'tagFrom': undefined,
2041
- 'type': type,
2042
- 'amount': amount,
2043
- 'currency': code,
2044
- 'status': status,
2045
- 'updated': undefined,
2046
- 'internal': undefined,
2047
- 'comment': undefined,
2048
- 'fee': fee,
2049
- };
2050
- }
2051
- parseDepositStatus(status) {
2052
- const statuses = {
2053
- 'COMPLETED': 'ok',
2054
- };
2055
- return this.safeString(statuses, status, status);
2056
- }
2057
- parseWithdrawalStatus(status) {
2058
- const statuses = {
2059
- 'COMPLETED': 'ok',
2060
- 'PROCESSING': 'pending',
2061
- 'IN SWEEPING': 'pending',
2062
- 'PENDING': 'pending',
2063
- 'ON HOLD': 'pending',
2064
- 'CANCELED': 'canceled',
2065
- 'FAILED': 'failed',
2066
- };
2067
- return this.safeString(statuses, status, status);
2068
- }
2069
- /**
2070
- * @method
2071
- * @name oxfun#withdraw
2072
- * @description make a withdrawal
2073
- * @see https://docs.ox.fun/?json#post-v3-withdrawal
2074
- * @param {string} code unified currency code
2075
- * @param {float} amount the amount to withdraw
2076
- * @param {string} address the address to withdraw to
2077
- * @param {string} tag
2078
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2079
- * @param {string} [params.network] network for withdraw
2080
- * @param {bool} [params.externalFee] if false, then the fee is taken from the quantity, also with the burn fee for asset SOLO
2081
- *
2082
- * EXCHANGE SPECIFIC PARAMETERS
2083
- * @param {string} [params.tfaType] GOOGLE, or AUTHY_SECRET, or YUBIKEY, for 2FA
2084
- * @param {string} [params.code] 2FA code
2085
- * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/?id=transaction-structure}
2086
- */
2087
- async withdraw(code, amount, address, tag = undefined, params = {}) {
2088
- [tag, params] = this.handleWithdrawTagAndParams(tag, params);
2089
- await this.loadMarkets();
2090
- const currency = this.currency(code);
2091
- const stringAmount = this.currencyToPrecision(code, amount);
2092
- const request = {
2093
- 'asset': currency['id'],
2094
- 'address': address,
2095
- 'quantity': stringAmount,
2096
- };
2097
- if (tag !== undefined) {
2098
- request['memo'] = tag;
2099
- }
2100
- let networkCode = undefined;
2101
- [networkCode, params] = this.handleNetworkCodeAndParams(params);
2102
- if (networkCode !== undefined) {
2103
- request['network'] = this.networkCodeToId(networkCode);
2104
- }
2105
- request['externalFee'] = false;
2106
- const response = await this.privatePostV3Withdrawal(this.extend(request, params));
2107
- //
2108
- // {
2109
- // "success": true,
2110
- // "data": {
2111
- // "id": "968364664449302529",
2112
- // "asset": "OX",
2113
- // "network": "Arbitrum",
2114
- // "address": "0x90fc1fB49a4ED8f485dd02A2a1Cf576897f6Bfc9",
2115
- // "quantity": "10",
2116
- // "externalFee": false,
2117
- // "fee": "1.6728",
2118
- // "status": "PENDING",
2119
- // "requestedAt": "1715591843616"
2120
- // }
2121
- // }
2122
- //
2123
- const data = this.safeDict(response, 'data', {});
2124
- data['type'] = 'withdrawal';
2125
- return this.parseTransaction(data, currency);
2126
- }
2127
- /**
2128
- * @method
2129
- * @name oxfun#fetchPositions
2130
- * @description fetch all open positions
2131
- * @see https://docs.ox.fun/?json#get-v3-positions
2132
- * @param {string[]|undefined} symbols list of unified market symbols
2133
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2134
- * @param {boolean} [params.subAcc]
2135
- * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/?id=position-structure}
2136
- */
2137
- async fetchPositions(symbols = undefined, params = {}) {
2138
- // Calling this endpoint using an API key pair linked to the parent account with the parameter "subAcc"
2139
- // allows the caller to include positions of additional sub-accounts in the response.
2140
- // This feature does not work when using API key pairs linked to a sub-account
2141
- await this.loadMarkets();
2142
- symbols = this.marketSymbols(symbols);
2143
- const response = await this.privateGetV3Positions(params);
2144
- //
2145
- // {
2146
- // "success": true,
2147
- // "data": [
2148
- // {
2149
- // "accountId": "106490",
2150
- // "name": "main",
2151
- // "positions": [
2152
- // {
2153
- // "marketCode": "BTC-USD-SWAP-LIN",
2154
- // "baseAsset": "BTC",
2155
- // "counterAsset": "USD",
2156
- // "position": "0.00010",
2157
- // "entryPrice": "64300.0",
2158
- // "markPrice": "63278",
2159
- // "positionPnl": "-10.1900",
2160
- // "estLiquidationPrice": "0",
2161
- // "lastUpdatedAt": "1714915841448"
2162
- // },
2163
- // ...
2164
- // ]
2165
- // },
2166
- // {
2167
- // "accountId": "106526",
2168
- // "name": "testSubAccount",
2169
- // "positions": [
2170
- // {
2171
- // "marketCode": "ETH-USD-SWAP-LIN",
2172
- // "baseAsset": "ETH",
2173
- // "counterAsset": "USD",
2174
- // "position": "0.001",
2175
- // "entryPrice": "3080.5",
2176
- // "markPrice": "3062.0",
2177
- // "positionPnl": "-1.8500",
2178
- // "estLiquidationPrice": "0",
2179
- // "lastUpdatedAt": "1715089678013"
2180
- // },
2181
- // ...
2182
- // ]
2183
- // }
2184
- // ]
2185
- // }
2186
- //
2187
- const data = this.safeList(response, 'data', []);
2188
- let allPositions = [];
2189
- for (let i = 0; i < data.length; i++) {
2190
- const account = data[i];
2191
- const positions = this.safeList(account, 'positions', []);
2192
- allPositions = this.arrayConcat(allPositions, positions);
2193
- }
2194
- return this.parsePositions(allPositions, symbols);
2195
- }
2196
- parsePosition(position, market = undefined) {
2197
- //
2198
- // {
2199
- // "marketCode": "ETH-USD-SWAP-LIN",
2200
- // "baseAsset": "ETH",
2201
- // "counterAsset": "USD",
2202
- // "position": "0.001",
2203
- // "entryPrice": "3080.5",
2204
- // "markPrice": "3062.0",
2205
- // "positionPnl": "-1.8500",
2206
- // "estLiquidationPrice": "0",
2207
- // "lastUpdatedAt": "1715089678013"
2208
- // }
2209
- //
2210
- const marketId = this.safeString(position, 'marketCode');
2211
- market = this.safeMarket(marketId, market);
2212
- return this.safePosition({
2213
- 'info': position,
2214
- 'id': undefined,
2215
- 'symbol': market['symbol'],
2216
- 'notional': undefined,
2217
- 'marginMode': 'cross',
2218
- 'liquidationPrice': this.safeNumber(position, 'estLiquidationPrice'),
2219
- 'entryPrice': this.safeNumber(position, 'entryPrice'),
2220
- 'unrealizedPnl': this.safeNumber(position, 'positionPnl'),
2221
- 'realizedPnl': undefined,
2222
- 'percentage': undefined,
2223
- 'contracts': this.safeNumber(position, 'position'),
2224
- 'contractSize': undefined,
2225
- 'markPrice': this.safeNumber(position, 'markPrice'),
2226
- 'lastPrice': undefined,
2227
- 'side': undefined,
2228
- 'hedged': undefined,
2229
- 'timestamp': undefined,
2230
- 'datetime': undefined,
2231
- 'lastUpdateTimestamp': this.safeInteger(position, 'lastUpdatedAt'),
2232
- 'maintenanceMargin': undefined,
2233
- 'maintenanceMarginPercentage': undefined,
2234
- 'collateral': undefined,
2235
- 'initialMargin': undefined,
2236
- 'initialMarginPercentage': undefined,
2237
- 'leverage': undefined,
2238
- 'marginRatio': undefined,
2239
- 'stopLossPrice': undefined,
2240
- 'takeProfitPrice': undefined,
2241
- });
2242
- }
2243
- /**
2244
- * @method
2245
- * @name oxfun#createOrder
2246
- * @description create a trade order
2247
- * @see https://docs.ox.fun/?json#post-v3-orders-place
2248
- * @param {string} symbol unified symbol of the market to create an order in
2249
- * @param {string} type 'market', 'limit', 'STOP_LIMIT' or 'STOP_MARKET'
2250
- * @param {string} side 'buy' or 'sell'
2251
- * @param {float} amount how much of currency you want to trade in units of base currency
2252
- * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
2253
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2254
- * @param {int} [params.clientOrderId] a unique id for the order
2255
- * @param {int} [params.timestamp] in milliseconds. If an order reaches the matching engine and the current timestamp exceeds timestamp + recvWindow, then the order will be rejected.
2256
- * @param {int} [params.recvWindow] in milliseconds. If an order reaches the matching engine and the current timestamp exceeds timestamp + recvWindow, then the order will be rejected. If timestamp is provided without recvWindow, then a default recvWindow of 1000ms is used.
2257
- * @param {string} [params.responseType] FULL or ACK
2258
- * @param {float} [params.cost] the quote quantity that can be used as an alternative for the amount for market buy orders
2259
- * @param {float} [params.triggerPrice] The price at which a trigger order is triggered at
2260
- * @param {float} [params.limitPrice] Limit price for the STOP_LIMIT order
2261
- * @param {bool} [params.postOnly] if true, the order will only be posted if it will be a maker order
2262
- * @param {string} [params.timeInForce] GTC (default), IOC, FOK, PO, MAKER_ONLY or MAKER_ONLY_REPRICE (reprices order to the best maker only price if the specified price were to lead to a taker trade)
2263
- * @param {string} [params.selfTradePrevention] NONE, EXPIRE_MAKER, EXPIRE_TAKER or EXPIRE_BOTH for more info check here {@link https://docs.ox.fun/?json#self-trade-prevention-modes}
2264
- * @param {string} [params.displayQuantity] for an iceberg order, pass both quantity and displayQuantity fields in the order request
2265
- * @returns {object} an [order structure]{@link https://docs.ccxt.com/?id=order-structure}
2266
- */
2267
- async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
2268
- await this.loadMarkets();
2269
- const responseType = this.safeString(params, 'responseType', 'FULL');
2270
- const timestamp = this.safeInteger(params, 'timestamp', this.milliseconds());
2271
- const request = {
2272
- 'responseType': responseType,
2273
- 'timestamp': timestamp,
2274
- };
2275
- params = this.omit(params, ['responseType', 'timestamp']);
2276
- const recvWindow = this.safeInteger(params, 'recvWindow');
2277
- if (recvWindow !== undefined) {
2278
- request['recvWindow'] = recvWindow;
2279
- params = this.omit(params, 'recvWindow');
2280
- }
2281
- const orderRequest = this.createOrderRequest(symbol, type, side, amount, price, params);
2282
- request['orders'] = [orderRequest];
2283
- const response = await this.privatePostV3OrdersPlace(request);
2284
- //
2285
- // accepted market order responseType FULL
2286
- // {
2287
- // "success": true,
2288
- // "data": [
2289
- // {
2290
- // "notice": "OrderMatched",
2291
- // "accountId": "106490",
2292
- // "orderId": "1000109901865",
2293
- // "submitted": true,
2294
- // "clientOrderId": "0",
2295
- // "marketCode": "OX-USDT",
2296
- // "status": "FILLED",
2297
- // "side": "SELL",
2298
- // "isTriggered": false,
2299
- // "quantity": "150.0",
2300
- // "amount": "0.0",
2301
- // "remainQuantity": "0.0",
2302
- // "matchId": "100017047880451399",
2303
- // "matchPrice": "0.01465",
2304
- // "matchQuantity": "150.0",
2305
- // "feeInstrumentId": "USDT",
2306
- // "fees": "0.0015382500",
2307
- // "orderType": "MARKET",
2308
- // "createdAt": "1715592472236",
2309
- // "lastMatchedAt": "1715592472200",
2310
- // "displayQuantity": "150.0"
2311
- // }
2312
- // ]
2313
- // }
2314
- //
2315
- // accepted limit order responseType FULL
2316
- // {
2317
- // "success": true,
2318
- // "data": [
2319
- // {
2320
- // "notice": "OrderOpened",
2321
- // "accountId": "106490",
2322
- // "orderId": "1000111482406",
2323
- // "submitted": true,
2324
- // "clientOrderId": "0",
2325
- // "marketCode": "ETH-USD-SWAP-LIN",
2326
- // "status": "OPEN",
2327
- // "side": "SELL",
2328
- // "price": "4000.0",
2329
- // "isTriggered": false,
2330
- // "quantity": "0.01",
2331
- // "amount": "0.0",
2332
- // "orderType": "LIMIT",
2333
- // "timeInForce": "GTC",
2334
- // "createdAt": "1715763507682",
2335
- // "displayQuantity": "0.01"
2336
- // }
2337
- // ]
2338
- // }
2339
- //
2340
- // accepted order responseType ACK
2341
- // {
2342
- // "success": true,
2343
- // "data": [
2344
- // {
2345
- // "accountId": "106490",
2346
- // "orderId": "1000109892193",
2347
- // "submitted": true,
2348
- // "marketCode": "OX-USDT",
2349
- // "side": "BUY",
2350
- // "price": "0.01961",
2351
- // "isTriggered": false,
2352
- // "quantity": "100",
2353
- // "orderType": "MARKET",
2354
- // "timeInForce": "IOC",
2355
- // "createdAt": "1715591529057",
2356
- // "selfTradePreventionMode": "NONE"
2357
- // }
2358
- // ]
2359
- // }
2360
- //
2361
- // rejected order (balance insufficient)
2362
- // {
2363
- // "success": true,
2364
- // "data": [
2365
- // {
2366
- // "code": "710001",
2367
- // "message": "System failure, exception thrown -> null",
2368
- // "submitted": false,
2369
- // "marketCode": "OX-USDT",
2370
- // "side": "BUY",
2371
- // "price": "0.01961",
2372
- // "amount": "100",
2373
- // "orderType": "MARKET",
2374
- // "timeInForce": "IOC",
2375
- // "createdAt": "1715591678835",
2376
- // "source": 11,
2377
- // "selfTradePreventionMode": "NONE"
2378
- // }
2379
- // ]
2380
- // }
2381
- //
2382
- // rejected order (bad request)
2383
- // {
2384
- // "success": true,
2385
- // "data": [
2386
- // {
2387
- // "code": "20044",
2388
- // "message": "Amount is not supported for this order type",
2389
- // "submitted": false,
2390
- // "marketCode": "OX-USDT",
2391
- // "side": "SELL",
2392
- // "amount": "200",
2393
- // "orderType": "MARKET",
2394
- // "createdAt": "1715592079986",
2395
- // "source": 11
2396
- // }
2397
- // ]
2398
- // }
2399
- //
2400
- const data = this.safeList(response, 'data', []);
2401
- const order = this.safeDict(data, 0, {});
2402
- return this.parseOrder(order);
2403
- }
2404
- /**
2405
- * @method
2406
- * @name oxfun#createOrders
2407
- * @description create a list of trade orders
2408
- * @see https://docs.ox.fun/?json#post-v3-orders-place
2409
- * @param {Array} orders list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params
2410
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2411
- * @param {int} [params.timestamp] *for all orders* in milliseconds. If orders reach the matching engine and the current timestamp exceeds timestamp + recvWindow, then all orders will be rejected.
2412
- * @param {int} [params.recvWindow] *for all orders* in milliseconds. If orders reach the matching engine and the current timestamp exceeds timestamp + recvWindow, then all orders will be rejected. If timestamp is provided without recvWindow, then a default recvWindow of 1000ms is used.
2413
- * @param {string} [params.responseType] *for all orders* FULL or ACK
2414
- * @returns {object} an [order structure]{@link https://docs.ccxt.com/?id=order-structure}
2415
- */
2416
- async createOrders(orders, params = {}) {
2417
- await this.loadMarkets();
2418
- const ordersRequests = [];
2419
- for (let i = 0; i < orders.length; i++) {
2420
- const rawOrder = orders[i];
2421
- const symbol = this.safeString(rawOrder, 'symbol');
2422
- const type = this.safeString(rawOrder, 'type');
2423
- const side = this.safeString(rawOrder, 'side');
2424
- const amount = this.safeNumber(rawOrder, 'amount');
2425
- const price = this.safeNumber(rawOrder, 'price');
2426
- const orderParams = this.safeDict(rawOrder, 'params', {});
2427
- const orderRequest = this.createOrderRequest(symbol, type, side, amount, price, orderParams);
2428
- ordersRequests.push(orderRequest);
2429
- }
2430
- const request = {
2431
- 'responseType': 'FULL',
2432
- 'timestamp': this.milliseconds(),
2433
- 'orders': ordersRequests,
2434
- };
2435
- const response = await this.privatePostV3OrdersPlace(this.extend(request, params));
2436
- const data = this.safeList(response, 'data', []);
2437
- return this.parseOrders(data);
2438
- }
2439
- createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
2440
- /**
2441
- * @param {string} symbol unified symbol of the market to create an order in
2442
- * @param {string} type 'market', 'limit', 'STOP_LIMIT' or 'STOP_MARKET'
2443
- * @param {string} side 'buy' or 'sell'
2444
- * @param {float} amount how much of currency you want to trade in units of base currency
2445
- * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
2446
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2447
- * @param {int} [params.clientOrderId] a unique id for the order
2448
- * @param {float} [params.cost] the quote quantity that can be used as an alternative for the amount for market buy orders
2449
- * @param {float} [params.triggerPrice] The price at which a trigger order is triggered at
2450
- * @param {float} [params.limitPrice] Limit price for the STOP_LIMIT order
2451
- * @param {bool} [params.postOnly] if true, the order will only be posted if it will be a maker order
2452
- * @param {string} [params.timeInForce] GTC (default), IOC, FOK, PO, MAKER_ONLY or MAKER_ONLY_REPRICE (reprices order to the best maker only price if the specified price were to lead to a taker trade)
2453
- * @param {string} [params.selfTradePrevention] NONE, EXPIRE_MAKER, EXPIRE_TAKER or EXPIRE_BOTH for more info check here {@link https://docs.ox.fun/?json#self-trade-prevention-modes}
2454
- * @param {string} [params.displayQuantity] for an iceberg order, pass both quantity and displayQuantity fields in the order request
2455
- */
2456
- const market = this.market(symbol);
2457
- const request = {
2458
- 'marketCode': market['id'],
2459
- 'side': side.toUpperCase(),
2460
- 'source': 1000,
2461
- };
2462
- const cost = this.safeString2(params, 'cost', 'amount');
2463
- if (cost !== undefined) {
2464
- request['amount'] = cost; // todo costToPrecision
2465
- params = this.omit(params, ['cost', 'amount']);
2466
- }
2467
- else {
2468
- request['quantity'] = amount; // todo amountToPrecision
2469
- }
2470
- const triggerPrice = this.safeString2(params, 'triggerPrice', 'stopPrice');
2471
- let orderType = type.toUpperCase();
2472
- if (triggerPrice !== undefined) {
2473
- if (orderType === 'MARKET') {
2474
- orderType = 'STOP_MARKET';
2475
- }
2476
- else if (orderType === 'LIMIT') {
2477
- orderType = 'STOP_LIMIT';
2478
- }
2479
- request['stopPrice'] = triggerPrice; // todo priceToPrecision
2480
- params = this.omit(params, ['triggerPrice', 'stopPrice']);
2481
- }
2482
- request['orderType'] = orderType;
2483
- if (orderType === 'STOP_LIMIT') {
2484
- request['limitPrice'] = price; // todo priceToPrecision
2485
- }
2486
- else if (price !== undefined) {
2487
- request['price'] = price; // todo priceToPrecision
2488
- }
2489
- let postOnly = undefined;
2490
- const isMarketOrder = (orderType === 'MARKET') || (orderType === 'STOP_MARKET');
2491
- [postOnly, params] = this.handlePostOnly(isMarketOrder, false, params);
2492
- const timeInForce = this.safeStringUpper(params, 'timeInForce');
2493
- if (postOnly && (timeInForce !== 'MAKER_ONLY_REPRICE')) {
2494
- request['timeInForce'] = 'MAKER_ONLY';
2495
- }
2496
- let selfTradePrevention = undefined;
2497
- [selfTradePrevention, params] = this.handleOptionAndParams(params, 'createOrder', 'selfTradePrevention');
2498
- if (selfTradePrevention !== undefined) {
2499
- request['selfTradePreventionMode'] = selfTradePrevention.toUpperCase();
2500
- }
2501
- return this.extend(request, params);
2502
- }
2503
- /**
2504
- * @method
2505
- * @name oxfun#createMarketBuyOrderWithCost
2506
- * @description create a market buy order by providing the symbol and cost
2507
- * @see https://open.big.one/docs/spot_orders.html#create-order
2508
- * @param {string} symbol unified symbol of the market to create an order in
2509
- * @param {float} cost how much you want to trade in units of the quote currency
2510
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2511
- * @returns {object} an [order structure]{@link https://docs.ccxt.com/?id=order-structure}
2512
- */
2513
- async createMarketBuyOrderWithCost(symbol, cost, params = {}) {
2514
- await this.loadMarkets();
2515
- const market = this.market(symbol);
2516
- if (!market['spot']) {
2517
- throw new errors.NotSupported(this.id + ' createMarketBuyOrderWithCost() supports spot orders only');
2518
- }
2519
- const request = {
2520
- 'cost': cost,
2521
- };
2522
- return await this.createOrder(symbol, 'market', 'buy', undefined, undefined, this.extend(request, params));
2523
- }
2524
- /**
2525
- * @method
2526
- * @name oxfun#fetchOrder
2527
- * @see https://docs.ox.fun/?json#get-v3-orders-status
2528
- * @description fetches information on an order made by the user
2529
- * @param {string} id a unique id for the order
2530
- * @param {string} [symbol] not used by oxfun fetchOrder
2531
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2532
- * @param {int} [params.clientOrderId] the client order id of the order
2533
- * @returns {object} An [order structure]{@link https://docs.ccxt.com/?id=order-structure}
2534
- */
2535
- async fetchOrder(id, symbol = undefined, params = {}) {
2536
- await this.loadMarkets();
2537
- const request = {
2538
- 'orderId': id,
2539
- };
2540
- const response = await this.privateGetV3OrdersStatus(this.extend(request, params));
2541
- //
2542
- // {
2543
- // "success": true,
2544
- // "data": {
2545
- // "orderId": "1000111762980",
2546
- // "clientOrderId": "0",
2547
- // "marketCode": "ETH-USD-SWAP-LIN",
2548
- // "status": "OPEN",
2549
- // "side": "BUY",
2550
- // "price": "2700.0",
2551
- // "isTriggered": false,
2552
- // "remainQuantity": "0.01",
2553
- // "totalQuantity": "0.01",
2554
- // "amount": "0",
2555
- // "displayQuantity": "0.01",
2556
- // "cumulativeMatchedQuantity": "0",
2557
- // "orderType": "STOP_LIMIT",
2558
- // "timeInForce": "GTC",
2559
- // "source": "11",
2560
- // "createdAt": "1715794191277"
2561
- // }
2562
- // }
2563
- //
2564
- const data = this.safeDict(response, 'data', {});
2565
- return this.parseOrder(data);
2566
- }
2567
- /**
2568
- * @method
2569
- * @name oxfun#fetchOpenOrders
2570
- * @description fetch all unfilled currently open orders
2571
- * @see https://docs.ox.fun/?json#get-v3-orders-working
2572
- * @param {string} symbol unified market symbol
2573
- * @param {int} [since] the earliest time in ms to fetch open orders for
2574
- * @param {int} [limit] the maximum number of open orders structures to retrieve
2575
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2576
- * @param {int} [params.orderId] a unique id for the order
2577
- * @param {int} [params.clientOrderId] the client order id of the order
2578
- * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/?id=order-structure}
2579
- */
2580
- async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2581
- await this.loadMarkets();
2582
- const request = {};
2583
- let market = undefined;
2584
- if (symbol !== undefined) {
2585
- market = this.market(symbol);
2586
- }
2587
- const response = await this.privateGetV3OrdersWorking(this.extend(request, params));
2588
- const data = this.safeList(response, 'data', []);
2589
- return this.parseOrders(data, market, since, limit);
2590
- }
2591
- /**
2592
- * @method
2593
- * @name oxfun#cancelOrder
2594
- * @description cancels an open order
2595
- * @see https://docs.ox.fun/?json#delete-v3-orders-cancel
2596
- * @param {string} id order id
2597
- * @param {string} symbol unified symbol of the market the order was made in
2598
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2599
- * @param {int} [params.clientOrderId] a unique id for the order
2600
- * @param {int} [params.timestamp] in milliseconds
2601
- * @param {int} [params.recvWindow] in milliseconds
2602
- * @param {string} [params.responseType] 'FULL' or 'ACK'
2603
- * @returns {object} An [order structure]{@link https://docs.ccxt.com/?id=order-structure}
2604
- */
2605
- async cancelOrder(id, symbol = undefined, params = {}) {
2606
- if (symbol === undefined) {
2607
- throw new errors.ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument');
2608
- }
2609
- const market = this.market(symbol);
2610
- const marketId = market['id'];
2611
- const request = {
2612
- 'timestamp': this.milliseconds(),
2613
- 'responseType': 'FULL',
2614
- };
2615
- const orderRequest = {
2616
- 'marketCode': marketId,
2617
- 'orderId': id,
2618
- };
2619
- const clientOrderId = this.safeInteger(params, 'clientOrderId');
2620
- if (clientOrderId !== undefined) {
2621
- orderRequest['clientOrderId'] = clientOrderId;
2622
- }
2623
- request['orders'] = [orderRequest];
2624
- const response = await this.privateDeleteV3OrdersCancel(this.extend(request, params));
2625
- const data = this.safeList(response, 'data', []);
2626
- const order = this.safeDict(data, 0, {});
2627
- return this.parseOrder(order);
2628
- }
2629
- /**
2630
- * @method
2631
- * @name oxfun#cancelAllOrders
2632
- * @description cancel all open orders
2633
- * @see https://docs.ox.fun/?json#delete-v3-orders-cancel-all
2634
- * @param {string} symbol unified market symbol, only orders in the market of this symbol are cancelled when symbol is not undefined
2635
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2636
- * @returns {object} response from exchange
2637
- */
2638
- async cancelAllOrders(symbol = undefined, params = {}) {
2639
- const request = {};
2640
- if (symbol !== undefined) {
2641
- const market = this.market(symbol);
2642
- request['marketCode'] = market['id'];
2643
- }
2644
- //
2645
- // {
2646
- // "success": true,
2647
- // "data": { "notice": "Orders queued for cancelation" }
2648
- // }
2649
- //
2650
- // {
2651
- // "success": true,
2652
- // "data": { "notice": "No working orders found" }
2653
- // }
2654
- //
2655
- const response = await this.privateDeleteV3OrdersCancelAll(this.extend(request, params));
2656
- return [this.safeOrder({ 'info': response })];
2657
- }
2658
- /**
2659
- * @method
2660
- * @name oxfun#cancelOrders
2661
- * @description cancel multiple orders
2662
- * @see https://docs.ox.fun/?json#delete-v3-orders-cancel
2663
- * @param {string[]} ids order ids
2664
- * @param {string} [symbol] unified market symbol
2665
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2666
- * @param {int} [params.timestamp] in milliseconds
2667
- * @param {int} [params.recvWindow] in milliseconds
2668
- * @param {string} [params.responseType] 'FULL' or 'ACK'
2669
- * @returns {object} an list of [order structures]{@link https://docs.ccxt.com/?id=order-structure}
2670
- */
2671
- async cancelOrders(ids, symbol = undefined, params = {}) {
2672
- if (symbol === undefined) {
2673
- throw new errors.ArgumentsRequired(this.id + ' cancelOrders() requires a symbol argument');
2674
- }
2675
- await this.loadMarkets();
2676
- const market = this.market(symbol);
2677
- const marketId = market['id'];
2678
- const request = {
2679
- 'timestamp': this.milliseconds(),
2680
- 'responseType': 'FULL',
2681
- };
2682
- const orders = [];
2683
- for (let i = 0; i < ids.length; i++) {
2684
- const order = {
2685
- 'marketCode': marketId,
2686
- 'orderId': ids[i],
2687
- };
2688
- orders.push(order);
2689
- }
2690
- request['orders'] = orders;
2691
- const response = await this.privateDeleteV3OrdersCancel(this.extend(request, params));
2692
- const data = this.safeList(response, 'data', []);
2693
- return this.parseOrders(data, market);
2694
- }
2695
- parseOrder(order, market = undefined) {
2696
- //
2697
- // accepted market order responseType FULL
2698
- // {
2699
- // "notice": "OrderMatched",
2700
- // "accountId": "106490",
2701
- // "orderId": "1000109901865",
2702
- // "submitted": true,
2703
- // "clientOrderId": "0",
2704
- // "marketCode": "OX-USDT",
2705
- // "status": "FILLED",
2706
- // "side": "SELL",
2707
- // "isTriggered": false,
2708
- // "quantity": "150.0",
2709
- // "amount": "0.0",
2710
- // "remainQuantity": "0.0",
2711
- // "matchId": "100017047880451399",
2712
- // "matchPrice": "0.01465",
2713
- // "matchQuantity": "150.0",
2714
- // "feeInstrumentId": "USDT",
2715
- // "fees": "0.0015382500",
2716
- // "orderType": "MARKET",
2717
- // "createdAt": "1715592472236",
2718
- // "lastMatchedAt": "1715592472200",
2719
- // "displayQuantity": "150.0"
2720
- // }
2721
- //
2722
- // accepted limit order responseType FULL
2723
- // {
2724
- // "notice": "OrderOpened",
2725
- // "accountId": "106490",
2726
- // "orderId": "1000111482406",
2727
- // "submitted": true,
2728
- // "clientOrderId": "0",
2729
- // "marketCode": "ETH-USD-SWAP-LIN",
2730
- // "status": "OPEN",
2731
- // "side": "SELL",
2732
- // "price": "4000.0",
2733
- // "isTriggered": false,
2734
- // "quantity": "0.01",
2735
- // "amount": "0.0",
2736
- // "orderType": "LIMIT",
2737
- // "timeInForce": "GTC",
2738
- // "createdAt": "1715763507682",
2739
- // "displayQuantity": "0.01"
2740
- // }
2741
- //
2742
- // accepted order responseType ACK
2743
- // {
2744
- // "accountId": "106490",
2745
- // "orderId": "1000109892193",
2746
- // "submitted": true,
2747
- // "marketCode": "OX-USDT",
2748
- // "side": "BUY",
2749
- // "price": "0.01961",
2750
- // "isTriggered": false,
2751
- // "quantity": "100",
2752
- // "orderType": "MARKET",
2753
- // "timeInForce": "IOC",
2754
- // "createdAt": "1715591529057",
2755
- // "selfTradePreventionMode": "NONE"
2756
- // }
2757
- //
2758
- // rejected order (balance insufficient)
2759
- // {
2760
- // "code": "710001",
2761
- // "message": "System failure, exception thrown -> null",
2762
- // "submitted": false,
2763
- // "marketCode": "OX-USDT",
2764
- // "side": "BUY",
2765
- // "price": "0.01961",
2766
- // "amount": "100",
2767
- // "orderType": "MARKET",
2768
- // "timeInForce": "IOC",
2769
- // "createdAt": "1715591678835",
2770
- // "source": 11,
2771
- // "selfTradePreventionMode": "NONE"
2772
- // }
2773
- //
2774
- // rejected order (bad request)
2775
- // {
2776
- // "code": "20044",
2777
- // "message": "Amount is not supported for this order type",
2778
- // "submitted": false,
2779
- // "marketCode": "OX-USDT",
2780
- // "side": "SELL",
2781
- // "amount": "200",
2782
- // "orderType": "MARKET",
2783
- // "createdAt": "1715592079986",
2784
- // "source": 11
2785
- // }
2786
- //
2787
- // fetchOrder
2788
- // {
2789
- // "orderId": "1000111762980",
2790
- // "clientOrderId": "0",
2791
- // "marketCode": "ETH-USD-SWAP-LIN",
2792
- // "status": "OPEN",
2793
- // "side": "BUY",
2794
- // "price": "2700.0",
2795
- // "isTriggered": false,
2796
- // "remainQuantity": "0.01",
2797
- // "totalQuantity": "0.01",
2798
- // "amount": "0",
2799
- // "displayQuantity": "0.01",
2800
- // "cumulativeMatchedQuantity": "0",
2801
- // "orderType": "STOP_LIMIT",
2802
- // "timeInForce": "GTC",
2803
- // "source": "11",
2804
- // "createdAt": "1715794191277"
2805
- // }
2806
- //
2807
- const marketId = this.safeString(order, 'marketCode');
2808
- market = this.safeMarket(marketId, market);
2809
- const timestamp = this.safeInteger(order, 'createdAt');
2810
- let fee = undefined;
2811
- const feeCurrency = this.safeString(order, 'feeInstrumentId');
2812
- if (feeCurrency !== undefined) {
2813
- fee = {
2814
- 'currency': this.safeCurrencyCode(feeCurrency),
2815
- 'cost': this.safeNumber(order, 'fees'),
2816
- };
2817
- }
2818
- let status = this.safeString(order, 'status');
2819
- const code = this.safeInteger(order, 'code'); // rejected orders have code of the error
2820
- if (code !== undefined) {
2821
- status = 'rejected';
2822
- }
2823
- const triggerPrice = this.safeString(order, 'stopPrice');
2824
- return this.safeOrder({
2825
- 'id': this.safeString(order, 'orderId'),
2826
- 'clientOrderId': this.safeString(order, 'clientOrderId'),
2827
- 'timestamp': timestamp,
2828
- 'datetime': this.iso8601(timestamp),
2829
- 'lastTradeTimestamp': this.safeInteger(order, 'lastMatchedAt'),
2830
- 'lastUpdateTimestamp': this.safeInteger(order, 'lastModifiedAt'),
2831
- 'status': this.parseOrderStatus(status),
2832
- 'symbol': market['symbol'],
2833
- 'type': this.parseOrderType(this.safeString(order, 'orderType')),
2834
- 'timeInForce': this.parseOrderTimeInForce(this.safeString(order, 'timeInForce')),
2835
- 'side': this.safeStringLower(order, 'side'),
2836
- 'price': this.safeStringN(order, ['price', 'matchPrice', 'limitPrice']),
2837
- 'average': undefined,
2838
- 'amount': this.safeString2(order, 'totalQuantity', 'quantity'),
2839
- 'filled': this.safeString2(order, 'cumulativeMatchedQuantity', 'matchQuantity'),
2840
- 'remaining': this.safeString(order, 'remainQuantity'),
2841
- 'triggerPrice': triggerPrice,
2842
- 'stopLossPrice': triggerPrice,
2843
- 'cost': this.omitZero(this.safeString(order, 'amount')),
2844
- 'trades': undefined,
2845
- 'fee': fee,
2846
- 'info': order,
2847
- }, market);
2848
- }
2849
- parseOrderStatus(status) {
2850
- const statuses = {
2851
- 'OPEN': 'open',
2852
- 'PARTIALLY_FILLED': 'open',
2853
- 'PARTIAL_FILL': 'open',
2854
- 'FILLED': 'closed',
2855
- 'CANCELED': 'canceled',
2856
- 'CANCELED_BY_USER': 'canceled',
2857
- 'CANCELED_BY_MAKER_ONLY': 'rejected',
2858
- 'CANCELED_BY_FOK': 'rejected',
2859
- 'CANCELED_ALL_BY_IOC': 'rejected',
2860
- 'CANCELED_PARTIAL_BY_IOC': 'canceled',
2861
- 'CANCELED_BY_SELF_TRADE_PROTECTION': 'rejected',
2862
- };
2863
- return this.safeString(statuses, status, status);
2864
- }
2865
- parseOrderType(type) {
2866
- const types = {
2867
- 'LIMIT': 'limit',
2868
- 'STOP_LIMIT': 'limit',
2869
- 'MARKET': 'market',
2870
- 'STOP_MARKET': 'market',
2871
- };
2872
- return this.safeString(types, type, type);
2873
- }
2874
- parseOrderTimeInForce(type) {
2875
- const types = {
2876
- 'GTC': 'GTC',
2877
- 'IOC': 'IOC',
2878
- 'FOK': 'FOK',
2879
- 'MAKER_ONLY': 'PO',
2880
- 'MAKER_ONLY_REPRICE': 'PO',
2881
- };
2882
- return this.safeString(types, type, type);
2883
- }
2884
- sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
2885
- const baseUrl = this.urls['api'][api];
2886
- let url = baseUrl + '/' + path;
2887
- let queryString = '';
2888
- if (method === 'GET') {
2889
- queryString = this.urlencode(params);
2890
- if (queryString.length !== 0) {
2891
- url += '?' + queryString;
2892
- }
2893
- }
2894
- if (api === 'private') {
2895
- this.checkRequiredCredentials();
2896
- const timestamp = this.milliseconds();
2897
- const isoDatetime = this.iso8601(timestamp);
2898
- const datetimeParts = isoDatetime.split('.');
2899
- const datetime = datetimeParts[0];
2900
- const nonce = this.nonce();
2901
- const urlParts = baseUrl.split('//');
2902
- if ((method === 'POST') || (method === 'DELETE')) {
2903
- body = this.json(params);
2904
- queryString = body;
2905
- }
2906
- const msgString = datetime + '\n' + nonce.toString() + '\n' + method + '\n' + urlParts[1] + '\n/' + path + '\n' + queryString;
2907
- const signature = this.hmac(this.encode(msgString), this.encode(this.secret), sha256.sha256, 'base64');
2908
- headers = {
2909
- 'Content-Type': 'application/json',
2910
- 'AccessKey': this.apiKey,
2911
- 'Timestamp': datetime,
2912
- 'Signature': signature,
2913
- 'Nonce': nonce.toString(),
2914
- };
2915
- }
2916
- return { 'url': url, 'method': method, 'body': body, 'headers': headers };
2917
- }
2918
- handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
2919
- if (response === undefined) {
2920
- return undefined;
2921
- }
2922
- if (code !== 200) {
2923
- const responseCode = this.safeString(response, 'code');
2924
- const feedback = this.id + ' ' + body;
2925
- this.throwBroadlyMatchedException(this.exceptions['broad'], body, feedback);
2926
- this.throwExactlyMatchedException(this.exceptions['exact'], responseCode, feedback);
2927
- throw new errors.ExchangeError(feedback);
2928
- }
2929
- return undefined;
2930
- }
2931
- }
2932
-
2933
- exports["default"] = oxfun;