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
package/js/src/arkham.js DELETED
@@ -1,2478 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- import Exchange from './abstract/arkham.js';
3
- import { Precise } from './base/Precise.js';
4
- import { ExchangeError, BadRequest, ArgumentsRequired, InvalidAddress, OperationRejected, BadSymbol, OperationFailed, AuthenticationError, RateLimitExceeded, PermissionDenied, InvalidOrder, InsufficientFunds, OrderNotFound } from './base/errors.js';
5
- import { TICK_SIZE } from './base/functions/number.js';
6
- import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
7
- /**
8
- * @class arkham
9
- * @augments Exchange
10
- */
11
- export default class arkham extends Exchange {
12
- describe() {
13
- return this.deepExtend(super.describe(), {
14
- 'id': 'arkham',
15
- 'name': 'ARKHAM',
16
- 'countries': ['US'],
17
- 'version': 'v1',
18
- 'rateLimit': 20 / 3,
19
- 'certified': false,
20
- 'pro': true,
21
- 'has': {
22
- 'CORS': false,
23
- 'spot': true,
24
- 'margin': false,
25
- 'swap': true,
26
- 'future': false,
27
- 'option': false,
28
- 'borrowCrossMargin': false,
29
- 'borrowIsolatedMargin': false,
30
- 'borrowMargin': false,
31
- 'cancelAllOrders': true,
32
- 'cancelOrder': true,
33
- 'createDepositAddress': true,
34
- 'createOrder': true,
35
- 'fetchAccounts': true,
36
- 'fetchAllGreeks': false,
37
- 'fetchBalance': true,
38
- 'fetchBorrowInterest': false,
39
- 'fetchBorrowRate': false,
40
- 'fetchBorrowRateHistories': false,
41
- 'fetchBorrowRateHistory': false,
42
- 'fetchBorrowRates': false,
43
- 'fetchBorrowRatesPerSymbol': false,
44
- 'fetchClosedOrders': true,
45
- 'fetchCrossBorrowRate': false,
46
- 'fetchCrossBorrowRates': false,
47
- 'fetchCurrencies': true,
48
- 'fetchDepositAddress': false,
49
- 'fetchDepositAddressesByNetwork': true,
50
- 'fetchDeposits': true,
51
- 'fetchFundingHistory': true,
52
- 'fetchGreeks': false,
53
- 'fetchIsolatedBorrowRate': false,
54
- 'fetchIsolatedBorrowRates': false,
55
- 'fetchLeverage': true,
56
- 'fetchLeverageTiers': true,
57
- 'fetchMyTrades': true,
58
- 'fetchOHLCV': true,
59
- 'fetchOpenOrders': true,
60
- 'fetchOption': false,
61
- 'fetchOptionChain': false,
62
- 'fetchOrder': true,
63
- 'fetchOrderBook': true,
64
- 'fetchPositions': true,
65
- 'fetchTicker': true,
66
- 'fetchTickers': true,
67
- 'fetchTime': true,
68
- 'fetchTrades': true,
69
- 'fetchTradingFees': true,
70
- 'fetchVolatilityHistory': false,
71
- 'fetchWithdrawals': true,
72
- 'repayCrossMargin': false,
73
- 'repayIsolatedMargin': false,
74
- 'sandbox': false,
75
- 'setLeverage': true,
76
- 'withdraw': true,
77
- },
78
- 'timeframes': {
79
- // enums are wrong in DOCS, these string values need to be in request
80
- '1m': '1m',
81
- '5m': '5m',
82
- '15m': '15m',
83
- '30m': '30m',
84
- '1h': '1h',
85
- '6h': '6h',
86
- '1d': '24h',
87
- },
88
- 'urls': {
89
- 'logo': 'https://github.com/user-attachments/assets/5cefdcfb-2c10-445b-835c-fa21317bf5ac',
90
- 'api': {
91
- 'v1': 'https://arkm.com/api',
92
- },
93
- 'www': 'https://arkm.com/',
94
- 'referral': {
95
- 'url': 'https://arkm.com/register?ref=ccxt',
96
- 'discount': 0,
97
- },
98
- 'doc': [
99
- 'https://arkm.com/limits-api',
100
- 'https://info.arkm.com/api-platform',
101
- ],
102
- 'fees': 'https://arkm.com/fees',
103
- },
104
- 'api': {
105
- 'v1': {
106
- 'public': {
107
- 'get': {
108
- 'alerts': 1,
109
- 'announcements': 1,
110
- 'assets': 1,
111
- 'book': 1,
112
- 'candles': 1,
113
- 'chains': 1,
114
- 'contracts': 1,
115
- 'index-price': 1,
116
- 'index-prices': 1,
117
- 'margin-schedules': 1,
118
- 'marketcapchart': 1,
119
- 'marketcaps': 1,
120
- 'pair': 1,
121
- 'pairs': 1,
122
- 'server-time': 1,
123
- 'ticker': 1,
124
- 'tickers': 1,
125
- 'trades': 1,
126
- },
127
- },
128
- 'private': {
129
- // for orders: spot 20/s, todo: perp 40/s
130
- 'get': {
131
- 'user': 7.5,
132
- 'orders': 7.5,
133
- 'orders/by-client-order-id': 7.5,
134
- 'orders/history': 7.5,
135
- 'orders/history/by-client-order-id': 7.5,
136
- 'orders/history_offset': 7.5,
137
- 'orders/{id}': 7.5,
138
- 'trades': 7.5,
139
- 'trades/history': 7.5,
140
- 'trades/time': 7.5,
141
- 'trigger-orders': 7.5,
142
- 'account/airdrops': 7.5,
143
- 'account/balance-updates': 7.5,
144
- 'account/balances': 7.5,
145
- 'account/balances/ll': 7.5,
146
- 'account/balances/history': 7.5,
147
- 'account/balances/commissions': 7.5,
148
- 'account/deposit/addresses': 7.5,
149
- 'account/deposits': 7.5,
150
- 'account/fees': 7.5,
151
- 'account/funding-rate-payments': 7.5,
152
- 'account/leverage': 7.5,
153
- 'account/lsp-assignments': 7.5,
154
- 'account/margin': 7.5,
155
- 'account/margin/all': 7.5,
156
- 'account/notifications': 7.5,
157
- 'account/position-updates': 7.5,
158
- 'account/positions': 7.5,
159
- 'account/realized-pnl': 7.5,
160
- 'account/rebates': 7.5,
161
- 'account/referral-links': 7.5,
162
- 'account/sessions': 7.5,
163
- 'account/settings': 7.5,
164
- 'account/settings/price-alert': 7.5,
165
- 'account/transfers': 7.5,
166
- 'account/unsubscribe': 7.5,
167
- 'account/watchlist': 7.5,
168
- 'account/withdrawal/addresses': 7.5,
169
- 'account/withdrawal/addresses/{id}': 7.5,
170
- 'account/withdrawals': 7.5,
171
- 'subaccounts': 7.5,
172
- 'airdrop': 7.5,
173
- 'airdrop/claim': 7.5,
174
- 'affiliate-dashboard/commission-earned': 7.5,
175
- 'affiliate-dashboard/min-arkm-last-30d': 7.5,
176
- 'affiliate-dashboard/points': 7.5,
177
- 'affiliate-dashboard/points-season-1': 7.5,
178
- 'affiliate-dashboard/points-season-2': 7.5,
179
- 'affiliate-dashboard/realized-pnl': 7.5,
180
- 'affiliate-dashboard/rebate-balance': 7.5,
181
- 'affiliate-dashboard/referral-count': 7.5,
182
- 'affiliate-dashboard/referrals-season-1': 7.5,
183
- 'affiliate-dashboard/referrals-season-2': 7.5,
184
- 'affiliate-dashboard/trading-volume-stats': 7.5,
185
- 'affiliate-dashboard/volume-season-1': 7.5,
186
- 'affiliate-dashboard/volume-season-2': 7.5,
187
- 'affiliate-dashboard/api-key': 7.5,
188
- 'competitions/opt-in-status': 7.5,
189
- 'rewards/info': 7.5,
190
- 'rewards/vouchers': 7.5,
191
- },
192
- 'post': {
193
- 'orders/new': 7.5,
194
- 'trigger-orders/new': 7.5,
195
- 'orders/cancel': 7.5,
196
- 'trigger-orders/cancel': 7.5,
197
- 'orders/cancel/all': 7.5,
198
- 'trigger-orders/cancel/all': 7.5,
199
- 'orders/new/simple': 7.5,
200
- 'account/deposit/addresses/new': 7.5,
201
- 'account/leverage': 7.5,
202
- 'account/notifications/read': 7.5,
203
- 'account/referral-links': 7.5,
204
- 'account/sessions/delete': 7.5,
205
- 'account/sessions/terminate-all': 7.5,
206
- 'account/settings/update': 7.5,
207
- 'account/watchlist/add': 7.5,
208
- 'account/watchlist/remove': 7.5,
209
- 'account/withdraw': 7.5,
210
- 'account/withdrawal/addresses/confirm': 7.5,
211
- 'subaccounts': 7.5,
212
- 'subaccounts/transfer': 7.5,
213
- 'subaccounts/perp-transfer': 7.5,
214
- 'subaccounts/update-settings': 7.5,
215
- 'airdrop': 7.5,
216
- 'api-key/create': 7.5,
217
- 'authenticate': 7.5,
218
- 'competitions/opt-in': 7.5,
219
- 'rewards/vouchers/claim': 7.5,
220
- },
221
- 'put': {
222
- 'account/referral-links/{id}/slug': 7.5,
223
- 'account/settings/price-alert': 7.5,
224
- 'account/withdrawal/addresses/{id}': 7.5,
225
- 'subaccounts': 7.5,
226
- 'api-key/update/{id}': 7.5,
227
- },
228
- 'delete': {
229
- 'account/settings/price-alert': 7.5,
230
- 'account/withdrawal/addresses/{id}': 7.5,
231
- 'subaccounts/{subaccountId}': 7.5,
232
- 'api-key/{id}': 7.5,
233
- },
234
- },
235
- },
236
- },
237
- 'options': {
238
- 'networks': {
239
- 'ETH': 'ETH',
240
- 'ERC20': 'ETH',
241
- 'BTC': 'BTC',
242
- 'SOL': 'SOL',
243
- 'TON': 'TON',
244
- 'DOGE': 'DOGE',
245
- 'SUI': 'SUI',
246
- 'XRP': 'XRP',
247
- 'OP': 'OP',
248
- 'AVAXC': 'AVAX',
249
- 'ARBONE': 'ARB',
250
- },
251
- 'networksById': {
252
- 'ETH': 'ERC20',
253
- 'ERC20': 'ERC20',
254
- },
255
- 'requestExpiration': 5000,
256
- 'timeframeDurations': {
257
- '1m': 60000000,
258
- '5m': 300000000,
259
- '15m': 900000000,
260
- '30m': 1800000000,
261
- '1h': 3600000000,
262
- '6h': 21600000000,
263
- '1d': 86400000000,
264
- },
265
- },
266
- 'features': {
267
- 'default': {
268
- 'sandbox': false,
269
- 'createOrder': {
270
- 'marginMode': false,
271
- 'triggerPrice': true,
272
- 'triggerPriceType': {
273
- 'mark': true,
274
- 'index': true,
275
- 'last': true,
276
- },
277
- 'triggerDirection': true,
278
- 'stopLossPrice': true,
279
- 'takeProfitPrice': true,
280
- 'attachedStopLossTakeProfit': undefined,
281
- 'timeInForce': {
282
- 'IOC': true,
283
- 'FOK': true,
284
- 'PO': true,
285
- 'GTD': false,
286
- },
287
- 'hedged': false,
288
- 'selfTradePrevention': false,
289
- 'trailing': false,
290
- 'iceberg': false,
291
- 'leverage': false,
292
- 'marketBuyByCost': false,
293
- 'marketBuyRequiresPrice': false,
294
- },
295
- 'createOrders': undefined,
296
- 'fetchMyTrades': {
297
- 'marginMode': false,
298
- 'limit': 100,
299
- 'daysBack': undefined,
300
- 'untilDays': 1,
301
- 'symbolRequired': false,
302
- },
303
- 'fetchOrder': {
304
- 'marginMode': false,
305
- 'trigger': false,
306
- 'trailing': false,
307
- 'symbolRequired': false,
308
- },
309
- 'fetchOpenOrders': {
310
- 'marginMode': true,
311
- 'limit': undefined,
312
- 'trigger': false,
313
- 'trailing': false,
314
- 'symbolRequired': false,
315
- },
316
- 'fetchOrders': undefined,
317
- 'fetchClosedOrders': {
318
- 'marginMode': false,
319
- 'limit': 100,
320
- 'daysBack': undefined,
321
- 'daysBackCanceled': undefined,
322
- 'untilDays': undefined,
323
- 'trigger': false,
324
- 'trailing': false,
325
- 'symbolRequired': false,
326
- },
327
- 'fetchOHLCV': {
328
- 'limit': 365,
329
- },
330
- },
331
- 'spot': {
332
- 'extends': 'default',
333
- },
334
- 'swap': {
335
- 'linear': {
336
- 'extends': 'default',
337
- },
338
- 'inverse': undefined,
339
- },
340
- 'future': {
341
- 'linear': {
342
- 'extends': 'default',
343
- },
344
- 'inverse': undefined,
345
- },
346
- },
347
- 'precisionMode': TICK_SIZE,
348
- 'exceptions': {
349
- 'exact': {
350
- // 1XXXX General Errors
351
- // These errors can occur for a variety of reasons and may be returned by the API or Websocket on any endpoint.
352
- '10000': OperationFailed,
353
- '10001': BadRequest,
354
- '10002': AuthenticationError,
355
- '10003': BadSymbol,
356
- '10004': ArgumentsRequired,
357
- '10005': RateLimitExceeded,
358
- '10006': PermissionDenied,
359
- '10007': PermissionDenied,
360
- '10008': RateLimitExceeded,
361
- '10009': PermissionDenied,
362
- '10010': PermissionDenied,
363
- '10011': AuthenticationError,
364
- '10012': PermissionDenied,
365
- '10013': PermissionDenied,
366
- '10014': AuthenticationError,
367
- '10015': PermissionDenied,
368
- '10016': PermissionDenied,
369
- '10017': PermissionDenied,
370
- '10018': AuthenticationError,
371
- '10019': AuthenticationError,
372
- '10020': PermissionDenied,
373
- '10021': PermissionDenied,
374
- '10022': ExchangeError,
375
- '10023': BadRequest,
376
- '10024': ExchangeError,
377
- '10025': BadRequest,
378
- // #2XXXX General Websocket Errors
379
- '20001': BadRequest,
380
- '20002': ArgumentsRequired,
381
- '20003': BadRequest,
382
- '20004': ArgumentsRequired,
383
- '20005': BadRequest,
384
- // #3XXXX Trading Errors
385
- '30001': InvalidOrder,
386
- '30002': InvalidOrder,
387
- '30003': InvalidOrder,
388
- '30004': InvalidOrder,
389
- '30005': InvalidOrder,
390
- '30006': InvalidOrder,
391
- '30007': BadSymbol,
392
- '30008': OperationRejected,
393
- '30009': OperationRejected,
394
- '30010': InsufficientFunds,
395
- '30011': BadSymbol,
396
- '30012': OperationRejected,
397
- '30013': OperationRejected,
398
- '30014': InvalidOrder,
399
- '30015': OrderNotFound,
400
- '30016': InvalidOrder,
401
- '30017': InvalidOrder,
402
- '30018': InvalidOrder,
403
- '30019': OperationRejected,
404
- '30020': InvalidOrder,
405
- '30021': InvalidOrder,
406
- '30022': InvalidOrder,
407
- '30023': InvalidOrder,
408
- '30024': InvalidOrder,
409
- '30025': BadRequest,
410
- '30026': PermissionDenied,
411
- '30027': PermissionDenied,
412
- '30028': OrderNotFound,
413
- // #4XXXX Funding Errors
414
- '40001': OperationRejected,
415
- '40002': BadRequest,
416
- '40003': InvalidAddress,
417
- '40004': OperationRejected,
418
- '40005': BadRequest,
419
- '40006': PermissionDenied,
420
- '40007': OperationRejected,
421
- '40008': OperationRejected,
422
- '40009': OperationRejected,
423
- '40010': BadRequest,
424
- '40011': OperationRejected,
425
- '40012': BadRequest,
426
- '40013': BadRequest,
427
- // #9XXXX Other Errors
428
- '90001': BadRequest,
429
- '90002': BadRequest,
430
- '90003': OperationRejected,
431
- '90004': BadRequest,
432
- '90005': BadRequest,
433
- '90006': RateLimitExceeded,
434
- '90007': AuthenticationError,
435
- '90008': RateLimitExceeded,
436
- '90009': PermissionDenied,
437
- '90010': BadRequest,
438
- '90011': RateLimitExceeded,
439
- },
440
- 'broad': {
441
- 'less than min withdrawal ': OperationRejected, // {"message":"amount 1 less than min withdrawal 5"}
442
- },
443
- },
444
- });
445
- }
446
- /**
447
- * @method
448
- * @name arkham#fetchCurrencies
449
- * @description fetches all available currencies on an exchange
450
- * @see https://arkm.com/docs#get/public/assets
451
- * @param {object} [params] extra parameters specific to the exchange API endpoint
452
- * @returns {object} an associative dictionary of currencies
453
- */
454
- async fetchCurrencies(params = {}) {
455
- const response = await this.v1PublicGetAssets(params);
456
- //
457
- // [
458
- // {
459
- // "symbol": "USDT",
460
- // "name": "Tether",
461
- // "imageUrl": "https://static.arkhamintelligence.com/tokens/tether.png",
462
- // "stablecoin": true,
463
- // "featuredPair": "BTC_USDT",
464
- // "chains": [
465
- // {
466
- // "symbol": "ETH",
467
- // "assetSymbol": "ETH",
468
- // "name": "Ethereum",
469
- // "type": "1",
470
- // "confirmations": "6",
471
- // "blockTime": "12000000"
472
- // }
473
- // ],
474
- // "status": "listed",
475
- // "minDeposit": "5",
476
- // "minWithdrawal": "5",
477
- // "withdrawalFee": "2"
478
- // },
479
- // ...
480
- //
481
- const result = {};
482
- for (let i = 0; i < response.length; i++) {
483
- const currency = response[i];
484
- const id = this.safeString(currency, 'symbol');
485
- const code = this.safeCurrencyCode(id);
486
- const networks = {};
487
- const chains = this.safeList(currency, 'chains', []);
488
- for (let j = 0; j < chains.length; j++) {
489
- const chain = chains[j];
490
- const networkId = this.safeString(chain, 'symbol');
491
- const network = this.networkIdToCode(networkId);
492
- networks[network] = {
493
- 'info': chain,
494
- 'id': networkId,
495
- 'network': network,
496
- 'title': this.safeString(chain, 'name'),
497
- 'active': undefined,
498
- 'deposit': undefined,
499
- 'withdraw': undefined,
500
- 'fee': undefined,
501
- 'precision': undefined,
502
- 'limits': {
503
- 'withdraw': {
504
- 'min': undefined,
505
- 'max': undefined,
506
- },
507
- },
508
- };
509
- }
510
- result[code] = this.safeCurrencyStructure({
511
- 'info': currency,
512
- 'id': id,
513
- 'code': code,
514
- 'name': this.safeString(currency, 'name'),
515
- 'active': this.safeString(currency, 'status') === 'listed',
516
- 'deposit': undefined,
517
- 'withdraw': undefined,
518
- 'fee': this.safeNumber(currency, 'withdrawalFee'),
519
- 'precision': undefined,
520
- 'limits': {
521
- 'amount': {
522
- 'min': undefined,
523
- 'max': undefined,
524
- },
525
- 'withdraw': {
526
- 'min': this.safeNumber(currency, 'minWithdrawal'),
527
- 'max': undefined,
528
- },
529
- 'deposit': {
530
- 'min': this.safeNumber(currency, 'minDeposit'),
531
- 'max': undefined,
532
- },
533
- },
534
- 'type': 'crypto',
535
- 'networks': networks,
536
- });
537
- }
538
- return result;
539
- }
540
- /**
541
- * @method
542
- * @name arkham#fetchMarkets
543
- * @see https://arkm.com/docs#get/public/pairs
544
- * @description retrieves data on all markets for arkm
545
- * @param {object} [params] extra parameters specific to the exchange API endpoint
546
- * @returns {object[]} an array of objects representing market data
547
- */
548
- async fetchMarkets(params = {}) {
549
- const response = await this.v1PublicGetPairs(params);
550
- //
551
- // [
552
- // {
553
- // "symbol": "BTC_USDT",
554
- // "baseSymbol": "BTC",
555
- // "baseImageUrl": "https://static.arkhamintelligence.com/tokens/bitcoin.png",
556
- // "baseIsStablecoin": false,
557
- // "baseName": "Bitcoin",
558
- // "quoteSymbol": "USDT",
559
- // "quoteImageUrl": "https://static.arkhamintelligence.com/tokens/tether.png",
560
- // "quoteIsStablecoin": true,
561
- // "quoteName": "Tether",
562
- // "minTickPrice": "0.01",
563
- // "minLotSize": "0.00001",
564
- // "minSize": "0.00001",
565
- // "maxSize": "9000",
566
- // "minPrice": "0.01",
567
- // "maxPrice": "1000000",
568
- // "minNotional": "5",
569
- // "maxPriceScalarUp": "1.8",
570
- // "maxPriceScalarDown": "0.2",
571
- // "pairType": "spot", // atm, always 'spot' value
572
- // "maxLeverage": "0",
573
- // "status": "listed"
574
- // },
575
- // {
576
- // "symbol": "BTC_USDT_PERP",
577
- // "baseSymbol": "BTC.P",
578
- // "baseImageUrl": "https://static.arkhamintelligence.com/tokens/bitcoin.png",
579
- // "baseIsStablecoin": false,
580
- // "baseName": "Bitcoin Perpetual",
581
- // "quoteSymbol": "USDT",
582
- // "quoteImageUrl": "https://static.arkhamintelligence.com/tokens/tether.png",
583
- // "quoteIsStablecoin": true,
584
- // "quoteName": "Tether",
585
- // "minTickPrice": "0.01",
586
- // "minLotSize": "0.00001",
587
- // "minSize": "0.00001",
588
- // "maxSize": "9000",
589
- // "minPrice": "0.01",
590
- // "maxPrice": "1000000",
591
- // "minNotional": "5",
592
- // "maxPriceScalarUp": "1.5",
593
- // "maxPriceScalarDown": "0.5",
594
- // "pairType": "perpetual",
595
- // "marginSchedule": "C",
596
- // "maxLeverage": "25",
597
- // "status": "listed"
598
- // },
599
- // ...
600
- //
601
- const result = [];
602
- for (let i = 0; i < response.length; i++) {
603
- const market = response[i];
604
- const id = this.safeString(market, 'symbol');
605
- const baseId = this.safeString(market, 'baseSymbol');
606
- const quoteId = this.safeString(market, 'quoteSymbol');
607
- let base = this.safeCurrencyCode(baseId);
608
- const quote = this.safeCurrencyCode(quoteId);
609
- let marketType = undefined;
610
- let symbol = undefined;
611
- const pairType = this.safeString(market, 'pairType');
612
- const isSpot = pairType === 'spot';
613
- const isPerpetual = pairType === 'perpetual';
614
- let settle = undefined;
615
- let settleId = undefined;
616
- if (isSpot) {
617
- marketType = 'spot';
618
- symbol = base + '/' + quote;
619
- }
620
- else if (isPerpetual) {
621
- marketType = 'swap';
622
- base = base.replace('.P', '');
623
- settle = quote;
624
- settleId = quoteId;
625
- symbol = base + '/' + quote + ':' + settle;
626
- }
627
- result.push({
628
- 'id': id,
629
- 'symbol': symbol,
630
- 'base': base,
631
- 'quote': quote,
632
- 'settle': settle,
633
- 'baseId': baseId,
634
- 'quoteId': quoteId,
635
- 'settleId': settleId,
636
- 'type': marketType,
637
- 'spot': isSpot,
638
- 'margin': undefined,
639
- 'swap': isPerpetual,
640
- 'future': false,
641
- 'option': false,
642
- 'active': this.safeString(market, 'status') === 'listed',
643
- 'contract': isPerpetual,
644
- 'linear': isPerpetual ? true : undefined,
645
- 'inverse': isPerpetual ? false : undefined,
646
- 'contractSize': isSpot ? undefined : 1,
647
- 'expiry': undefined,
648
- 'expiryDatetime': undefined,
649
- 'strike': undefined,
650
- 'optionType': undefined,
651
- 'precision': {
652
- 'price': this.safeNumber(market, 'minTickPrice'),
653
- 'amount': this.safeNumber(market, 'minLotSize'),
654
- },
655
- 'limits': {
656
- 'leverage': {
657
- 'min': undefined,
658
- 'max': undefined,
659
- },
660
- 'amount': {
661
- 'min': this.safeNumber(market, 'minSize'),
662
- 'max': this.safeNumber(market, 'maxSize'),
663
- },
664
- 'price': {
665
- 'min': this.safeNumber(market, 'minPrice'),
666
- 'max': this.safeNumber(market, 'maxPrice'),
667
- },
668
- 'cost': {
669
- 'min': this.safeNumber(market, 'minNotional'),
670
- 'max': undefined,
671
- },
672
- },
673
- 'created': undefined,
674
- 'info': market,
675
- });
676
- }
677
- return result;
678
- }
679
- /**
680
- * @method
681
- * @name arkham#fetchTime
682
- * @description fetches the current integer timestamp in milliseconds from the exchange server
683
- * @see https://arkm.com/docs#get/public/server-time
684
- * @param {object} [params] extra parameters specific to the exchange API endpoint
685
- * @returns {int} the current integer timestamp in milliseconds from the exchange server
686
- */
687
- async fetchTime(params = {}) {
688
- const response = await this.v1PublicGetServerTime(params);
689
- //
690
- // {
691
- // "serverTime": "1753465832770820"
692
- // }
693
- //
694
- return this.safeIntegerProduct(response, 'serverTime', 0.001);
695
- }
696
- /**
697
- * @method
698
- * @name arkham#fetchOrderBook
699
- * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
700
- * @see https://arkm.com/docs#get/public/book
701
- * @param {string} symbol unified symbol of the market to fetch the order book for
702
- * @param {int} [limit] the number of order book entries to return, max 50
703
- * @param {object} [params] extra parameters specific to the exchange API endpoint
704
- * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/?id=order-book-structure} indexed by market symbols
705
- */
706
- async fetchOrderBook(symbol, limit = undefined, params = {}) {
707
- await this.loadMarkets();
708
- const market = this.market(symbol);
709
- const request = {
710
- 'symbol': market['id'],
711
- };
712
- if (limit !== undefined) {
713
- request['limit'] = limit;
714
- }
715
- const response = await this.v1PublicGetBook(this.extend(request, params));
716
- //
717
- // {
718
- // "symbol": "BTC_USDT",
719
- // "group": "0.01",
720
- // "asks": [
721
- // {
722
- // "price": "122900.43",
723
- // "size": "0.0243"
724
- // },
725
- // {
726
- // "price": "121885.53",
727
- // "size": "0.00116"
728
- // },
729
- // ...
730
- // ],
731
- // "bids": [
732
- // {
733
- // "price": "20400",
734
- // "size": "0.00316"
735
- // },
736
- // {
737
- // "price": "30000",
738
- // "size": "0.00116"
739
- // },
740
- // ...
741
- // ],
742
- // "lastTime": "1753419275604353"
743
- // }
744
- //
745
- const timestamp = this.safeIntegerProduct(response, 'lastTime', 0.001);
746
- const marketId = this.safeString(response, 'symbol');
747
- return this.parseOrderBook(response, this.safeSymbol(marketId, market), timestamp, 'bids', 'asks', 'price', 'size');
748
- }
749
- /**
750
- * @method
751
- * @name arkham#fetchOHLCV
752
- * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
753
- * @see https://arkm.com/docs#get/public/candles
754
- * @param {string} symbol unified symbol of the market to fetch OHLCV data for
755
- * @param {string} timeframe the length of time each candle represents
756
- * @param {int} [since] timestamp in ms of the earliest candle to fetch
757
- * @param {int} [limit] the maximum amount of candles to fetch
758
- * @param {object} [params] extra parameters specific to the exchange API endpoint
759
- * @param {int} [params.until] timestamp in ms for the ending date filter, default is the current time
760
- * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
761
- * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
762
- */
763
- async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
764
- const maxLimit = 365;
765
- await this.loadMarkets();
766
- let paginate = false;
767
- [paginate, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'paginate', false);
768
- if (paginate) {
769
- return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, maxLimit);
770
- }
771
- const market = this.market(symbol);
772
- const request = {
773
- 'symbol': market['id'],
774
- 'duration': this.safeString(this.timeframes, timeframe, timeframe),
775
- };
776
- const durationMs = this.parseTimeframe(timeframe) * 1000;
777
- const until = this.safeInteger(params, 'until');
778
- params = this.omit(params, ['until']);
779
- const selectedLimit = (limit !== undefined) ? Math.min(limit, maxLimit) : maxLimit;
780
- if (since !== undefined) {
781
- request['start'] = since;
782
- request['end'] = this.sum(since, selectedLimit * durationMs);
783
- }
784
- else {
785
- const now = this.milliseconds();
786
- request['end'] = (until !== undefined) ? until : now;
787
- request['start'] = request['end'] - selectedLimit * durationMs;
788
- }
789
- // exchange needs microseconds
790
- request['start'] = request['start'] * 1000;
791
- request['end'] = request['end'] * 1000;
792
- const response = await this.v1PublicGetCandles(this.extend(request, params));
793
- //
794
- // [
795
- // {
796
- // "symbol": "BTC_USDT_PERP",
797
- // "time": "1753464720000000",
798
- // "duration": "60000000",
799
- // "open": "116051.35",
800
- // "high": "116060.27",
801
- // "low": "116051.35",
802
- // "close": "116060.27",
803
- // "volume": "0.0257",
804
- // "quoteVolume": "2982.6724054"
805
- // },
806
- // ...
807
- // ]
808
- //
809
- return this.parseOHLCVs(response, market, timeframe, since, limit);
810
- }
811
- parseOHLCV(ohlcv, market = undefined) {
812
- //
813
- // {
814
- // "symbol": "BTC_USDT_PERP",
815
- // "time": "1753464720000000",
816
- // "duration": "60000000",
817
- // "open": "116051.35",
818
- // "high": "116060.27",
819
- // "low": "116051.35",
820
- // "close": "116060.27",
821
- // "volume": "0.0257",
822
- // "quoteVolume": "2982.6724054"
823
- // }
824
- //
825
- return [
826
- this.safeIntegerProduct(ohlcv, 'time', 0.001),
827
- this.safeNumber(ohlcv, 'open'),
828
- this.safeNumber(ohlcv, 'high'),
829
- this.safeNumber(ohlcv, 'low'),
830
- this.safeNumber(ohlcv, 'close'),
831
- this.safeNumber(ohlcv, 'volume'),
832
- ];
833
- }
834
- async fetchTickers(symbols = undefined, params = {}) {
835
- const response = await this.v1PublicGetTickers(params);
836
- //
837
- // [
838
- // {
839
- // "symbol": "BTC_USDT_PERP",
840
- // "baseSymbol": "BTC.P",
841
- // "quoteSymbol": "USDT",
842
- // "indexCurrency": "USDT",
843
- // "price": "118806.89",
844
- // "price24hAgo": "118212.29",
845
- // "high24h": "119468.05",
846
- // "low24h": "117104.44",
847
- // "volume24h": "180.99438",
848
- // "quoteVolume24h": "21430157.5928827",
849
- // "markPrice": "118814.71",
850
- // "indexPrice": "118804.222610343",
851
- // "fundingRate": "0.000007",
852
- // "nextFundingRate": "0.000006",
853
- // "nextFundingTime": "1753390800000000",
854
- // "productType": "perpetual",
855
- // "openInterest": "2.55847",
856
- // "usdVolume24h": "21430157.5928827",
857
- // "openInterestUSD": "303963.8638583"
858
- // },
859
- // ...
860
- //
861
- return this.parseTickers(response, symbols);
862
- }
863
- /**
864
- * @method
865
- * @name arkham#fetchTicker
866
- * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
867
- * @param {string} symbol unified symbol of the market to fetch the ticker for
868
- * @param {object} [params] extra parameters specific to the exchange API endpoint
869
- * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/?id=ticker-structure}
870
- */
871
- async fetchTicker(symbol, params = {}) {
872
- await this.loadMarkets();
873
- const market = this.market(symbol);
874
- const request = {
875
- 'symbol': market['id'],
876
- };
877
- const response = await this.v1PublicGetTicker(this.extend(request, params));
878
- //
879
- // {
880
- // "symbol": "BTC_USDT_PERP",
881
- // "baseSymbol": "BTC.P",
882
- // "quoteSymbol": "USDT",
883
- // "indexCurrency": "USDT",
884
- // "price": "118806.89",
885
- // "price24hAgo": "118212.29",
886
- // "high24h": "119468.05",
887
- // "low24h": "117104.44",
888
- // "volume24h": "180.99438",
889
- // "quoteVolume24h": "21430157.5928827",
890
- // "markPrice": "118814.71",
891
- // "indexPrice": "118804.222610343",
892
- // "fundingRate": "0.000007",
893
- // "nextFundingRate": "0.000006",
894
- // "nextFundingTime": "1753390800000000",
895
- // "productType": "perpetual",
896
- // "openInterest": "2.55847",
897
- // "usdVolume24h": "21430157.5928827",
898
- // "openInterestUSD": "303963.8638583"
899
- // }
900
- //
901
- return this.parseTicker(response, market);
902
- }
903
- parseTicker(ticker, market = undefined) {
904
- const marketId = this.safeString(ticker, 'symbol');
905
- market = this.safeMarket(marketId, market);
906
- return this.safeTicker({
907
- 'info': ticker,
908
- 'symbol': this.safeSymbol(marketId, market),
909
- 'high': this.safeNumber(ticker, 'high24h'),
910
- 'low': this.safeNumber(ticker, 'low24h'),
911
- 'bid': this.safeNumber(ticker, 'bid'),
912
- 'last': this.safeNumber(ticker, 'price'),
913
- 'open': this.safeNumber(ticker, 'price24hAgo'),
914
- 'change': this.safeNumber(ticker, 'priceChange'),
915
- 'percentage': this.safeNumber(ticker, 'priceChangePercent'),
916
- 'baseVolume': this.safeNumber(ticker, 'volume24h'),
917
- 'quoteVolume': this.safeNumber(ticker, 'usdVolume24h'),
918
- 'markPrice': this.safeNumber(ticker, 'markPrice'),
919
- 'indexPrice': this.safeNumber(ticker, 'indexPrice'),
920
- 'vwap': undefined,
921
- 'average': undefined,
922
- 'previousClose': undefined,
923
- 'askVolume': undefined,
924
- 'bidVolume': undefined,
925
- });
926
- }
927
- /**
928
- * @method
929
- * @name arkham#fetchTrades
930
- * @description get the list of most recent trades for a particular symbol
931
- * @see https://arkm.com/docs#get/public/trades
932
- * @param {string} symbol unified symbol of the market to fetch trades for
933
- * @param {int} [since] timestamp in ms of the earliest trade to fetch
934
- * @param {int} [limit] the maximum amount of trades to fetch
935
- * @param {object} [params] extra parameters specific to the exchange API endpoint
936
- * @param {string} [params.loc] crypto location, default: us
937
- * @param {string} [params.method] method, default: marketPublicGetV1beta3CryptoLocTrades
938
- * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/?id=public-trades}
939
- */
940
- async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
941
- await this.loadMarkets();
942
- const market = this.market(symbol);
943
- const marketId = market['id'];
944
- const request = {
945
- 'symbol': marketId,
946
- };
947
- if (limit !== undefined) {
948
- request['limit'] = limit;
949
- }
950
- const response = await this.v1PublicGetTrades(this.extend(request, params));
951
- //
952
- // [
953
- // {
954
- // "symbol": "BTC_USDT_PERP",
955
- // "revisionId": "1130514101",
956
- // "size": "0.01668",
957
- // "price": "116309.57",
958
- // "takerSide": "sell",
959
- // "time": "1753439710374047"
960
- // },
961
- // ...
962
- // ]
963
- //
964
- return this.parseTrades(response, market, since, limit);
965
- }
966
- parseTrade(trade, market = undefined) {
967
- //
968
- // fetchTrades
969
- //
970
- // {
971
- // "symbol": "BTC_USDT_PERP",
972
- // "revisionId": "1130514101",
973
- // "size": "0.01668",
974
- // "price": "116309.57",
975
- // "takerSide": "sell",
976
- // "time": "1753439710374047"
977
- // }
978
- //
979
- // fetchMyTrades
980
- //
981
- // {
982
- // "symbol": "SOL_USDT",
983
- // "revisionId": "891839406",
984
- // "size": "0.042",
985
- // "price": "185.06",
986
- // "takerSide": "sell",
987
- // "time": "1753773952039342",
988
- // "orderId": "3717304929194",
989
- // "userSide": "sell",
990
- // "quoteFee": "0.00777252",
991
- // "arkmFee": "0",
992
- // "clientOrderId": ""
993
- // }
994
- //
995
- const marketId = this.safeString(trade, 'symbol');
996
- market = this.safeMarket(marketId, market);
997
- const timestamp = this.safeIntegerProduct(trade, 'time', 0.001);
998
- const quoteFee = this.safeNumber(trade, 'quoteFee');
999
- const arkmFee = this.safeNumber(trade, 'arkmFee');
1000
- let fee = undefined;
1001
- if (quoteFee !== undefined) {
1002
- fee = {
1003
- 'cost': quoteFee,
1004
- 'currency': market['quote'],
1005
- };
1006
- }
1007
- else if (arkmFee !== undefined) {
1008
- fee = {
1009
- 'cost': arkmFee,
1010
- 'currency': 'ARKM',
1011
- };
1012
- }
1013
- return this.safeTrade({
1014
- 'info': trade,
1015
- 'id': this.safeString(trade, 'revisionId'),
1016
- 'timestamp': timestamp,
1017
- 'datetime': this.iso8601(timestamp),
1018
- 'symbol': market['symbol'],
1019
- 'type': undefined,
1020
- 'side': this.safeString2(trade, 'userSide', 'takerSide'),
1021
- 'takerOrMaker': undefined,
1022
- 'price': this.safeString(trade, 'price'),
1023
- 'amount': this.safeString(trade, 'size'),
1024
- 'cost': undefined,
1025
- 'fee': fee,
1026
- 'order': this.safeString(trade, 'orderId'),
1027
- }, market);
1028
- }
1029
- /**
1030
- * @method
1031
- * @name arkmm#fetchOrder
1032
- * @description fetches information on an order made by the user
1033
- * @see https://arkm.com/docs#get/orders/by-client-order-id
1034
- * @param {string} id the order id
1035
- * @param {string} symbol unified symbol of the market the order was made in
1036
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1037
- * @param {string} [params.clientOrderId] a unique id for the order
1038
- * @returns {object} An [order structure]{@link https://docs.ccxt.com/?id=order-structure}
1039
- */
1040
- async fetchOrder(id, symbol = undefined, params = {}) {
1041
- const request = {
1042
- 'id': parseInt(id),
1043
- };
1044
- const response = await this.v1PrivateGetOrdersId(this.extend(request, params));
1045
- //
1046
- // {
1047
- // "orderId": "3690478767430",
1048
- // "userId": "2959123",
1049
- // "subaccountId": "0",
1050
- // "symbol": "SOL_USDT",
1051
- // "time": "1753696843913970",
1052
- // "side": "sell",
1053
- // "type": "limitGtc",
1054
- // "size": "0.066",
1055
- // "price": "293.2",
1056
- // "postOnly": false,
1057
- // "reduceOnly": false,
1058
- // "executedSize": "0",
1059
- // "status": "booked",
1060
- // "avgPrice": "0",
1061
- // "executedNotional": "0",
1062
- // "creditFeePaid": "0",
1063
- // "marginBonusFeePaid": "0",
1064
- // "quoteFeePaid": "0",
1065
- // "arkmFeePaid": "0",
1066
- // "revisionId": "887956326",
1067
- // "lastTime": "1753696843914830",
1068
- // "clientOrderId": "",
1069
- // "lastSize": "0",
1070
- // "lastPrice": "0",
1071
- // "lastCreditFee": "0",
1072
- // "lastMarginBonusFee": "0",
1073
- // "lastQuoteFee": "0",
1074
- // "lastArkmFee": "0"
1075
- // }
1076
- //
1077
- return this.parseOrder(response);
1078
- }
1079
- /**
1080
- * @method
1081
- * @name arkham#fetchClosedOrders
1082
- * @description fetches information on multiple closed orders made by the user
1083
- * @see https://arkm.com/docs#get/orders/history
1084
- * @param {string} symbol unified market symbol of the market orders were made in
1085
- * @param {int} [since] the earliest time in ms to fetch orders for
1086
- * @param {int} [limit] the maximum number of order structures to retrieve
1087
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1088
- * @param {int} [params.until] the latest time in ms to fetch orders for
1089
- * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/?id=order-structure}
1090
- */
1091
- async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1092
- await this.loadMarkets();
1093
- const request = {};
1094
- let market = undefined;
1095
- if (symbol !== undefined) {
1096
- market = this.market(symbol);
1097
- request['symbol'] = market['id'];
1098
- }
1099
- if (limit !== undefined) {
1100
- request['limit'] = limit; // note, API does not work for this param
1101
- }
1102
- const response = await this.v1PrivateGetOrdersHistory(this.extend(request, params));
1103
- //
1104
- // [
1105
- // {
1106
- // "orderId": "3690478767430",
1107
- // "userId": "2959123",
1108
- // "subaccountId": "0",
1109
- // "symbol": "SOL_USDT",
1110
- // "time": "1753696843913970",
1111
- // "side": "sell",
1112
- // "type": "limitGtc",
1113
- // "size": "0.066",
1114
- // "price": "293.2",
1115
- // "postOnly": false,
1116
- // "reduceOnly": false,
1117
- // "executedSize": "0",
1118
- // "status": "closed",
1119
- // "avgPrice": "0",
1120
- // "executedNotional": "0",
1121
- // "creditFeePaid": "0",
1122
- // "marginBonusFeePaid": "0",
1123
- // "quoteFeePaid": "0",
1124
- // "arkmFeePaid": "0",
1125
- // "revisionId": "888084076",
1126
- // "lastTime": "1753701350088305",
1127
- // "clientOrderId": "",
1128
- // "lastSize": "0",
1129
- // "lastPrice": "0",
1130
- // "lastCreditFee": "0",
1131
- // "lastMarginBonusFee": "0",
1132
- // "lastQuoteFee": "0",
1133
- // "lastArkmFee": "0"
1134
- // }
1135
- // ]
1136
- //
1137
- return this.parseOrders(response, market, since, limit);
1138
- }
1139
- /**
1140
- * @method
1141
- * @name arkham#fetchOpenOrders
1142
- * @description fetch all unfilled currently open orders
1143
- * @see https://arkm.com/docs#get/orders
1144
- * @param {string} symbol unified market symbol of the market orders were made in
1145
- * @param {int} [since] the earliest time in ms to fetch orders for
1146
- * @param {int} [limit] the maximum number of order structures to retrieve
1147
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1148
- * @param {int} [params.until] the latest time in ms to fetch orders for
1149
- * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/?id=order-structure}
1150
- */
1151
- async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1152
- await this.loadMarkets();
1153
- let market = undefined;
1154
- if (symbol !== undefined) {
1155
- market = this.market(symbol);
1156
- }
1157
- const isTriggerOrder = this.safeBool(params, 'trigger');
1158
- params = this.omit(params, 'trigger');
1159
- let response = undefined;
1160
- if (isTriggerOrder) {
1161
- response = await this.v1PrivateGetTriggerOrders(this.extend({}, params));
1162
- //
1163
- // [
1164
- // {
1165
- // "subaccountId": "0",
1166
- // "symbol": "SOL_USDT",
1167
- // "side": "sell",
1168
- // "type": "market",
1169
- // "size": "0.045",
1170
- // "price": "99.9",
1171
- // "postOnly": false,
1172
- // "reduceOnly": false,
1173
- // "time": "1753768103780063",
1174
- // "triggerOrderId": "3715847222127",
1175
- // "triggerType": "stopLoss",
1176
- // "triggerPriceType": "last",
1177
- // "triggerPrice": "111",
1178
- // "clientOrderId": "",
1179
- // "status": "staged"
1180
- // },
1181
- // ]
1182
- //
1183
- }
1184
- else {
1185
- response = await this.v1PrivateGetOrders(this.extend({}, params));
1186
- //
1187
- // [
1188
- // {
1189
- // "orderId": "3690478767430",
1190
- // "userId": "2959123",
1191
- // "subaccountId": "0",
1192
- // "symbol": "SOL_USDT",
1193
- // "time": "1753696843913970",
1194
- // "side": "sell",
1195
- // "type": "limitGtc",
1196
- // "size": "0.066",
1197
- // "price": "293.2",
1198
- // "postOnly": false,
1199
- // "reduceOnly": false,
1200
- // "executedSize": "0",
1201
- // "status": "booked",
1202
- // "avgPrice": "0",
1203
- // "executedNotional": "0",
1204
- // "creditFeePaid": "0",
1205
- // "marginBonusFeePaid": "0",
1206
- // "quoteFeePaid": "0",
1207
- // "arkmFeePaid": "0",
1208
- // "revisionId": "887956326",
1209
- // "lastTime": "1753696843914830",
1210
- // "clientOrderId": "",
1211
- // "lastSize": "0",
1212
- // "lastPrice": "0",
1213
- // "lastCreditFee": "0",
1214
- // "lastMarginBonusFee": "0",
1215
- // "lastQuoteFee": "0",
1216
- // "lastArkmFee": "0"
1217
- // }
1218
- // ]
1219
- //
1220
- }
1221
- return this.parseOrders(response, market, since, limit);
1222
- }
1223
- /**
1224
- * @method
1225
- * @name arkham#cancelOrder
1226
- * @description cancels an open order
1227
- * @see https://arkm.com/docs#post/orders/cancel
1228
- * @param {string} id order id
1229
- * @param {string} symbol unified symbol of the market the order was made in
1230
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1231
- * @returns {object} An [order structure]{@link https://docs.ccxt.com/?id=order-structure}
1232
- */
1233
- async cancelOrder(id, symbol = undefined, params = {}) {
1234
- const isTriggerOrder = this.safeBool(params, 'trigger');
1235
- params = this.omit(params, 'trigger');
1236
- let response = undefined;
1237
- const request = {};
1238
- const clientOrderId = this.safeInteger(params, 'clientOrderId');
1239
- if (clientOrderId !== undefined) {
1240
- params = this.omit(params, 'clientOrderId');
1241
- request['clientOrderId'] = clientOrderId;
1242
- }
1243
- else {
1244
- if (isTriggerOrder) {
1245
- request['triggerOrderId'] = parseInt(id);
1246
- }
1247
- else {
1248
- request['orderId'] = parseInt(id);
1249
- }
1250
- }
1251
- if (isTriggerOrder) {
1252
- if (symbol === undefined) {
1253
- throw new ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument for trigger orders');
1254
- }
1255
- const market = this.market(symbol);
1256
- request['symbol'] = market['id'];
1257
- response = await this.v1PrivatePostTriggerOrdersCancel(this.extend(request, params));
1258
- }
1259
- else {
1260
- response = await this.v1PrivatePostOrdersCancel(this.extend(request, params));
1261
- }
1262
- //
1263
- // {"orderId":3691703758327}
1264
- //
1265
- return this.parseOrder(response);
1266
- }
1267
- /**
1268
- * @method
1269
- * @name arkham#cancelAllOrders
1270
- * @description cancel all open orders in a market
1271
- * @see https://arkm.com/docs#post/orders/cancel/all
1272
- * @param {string} symbol cancel alls open orders
1273
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1274
- * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/?id=order-structure}
1275
- */
1276
- async cancelAllOrders(symbol = undefined, params = {}) {
1277
- if (symbol !== undefined) {
1278
- throw new BadRequest(this.id + ' cancelAllOrders() does not support a symbol argument, use cancelOrder() or fetchOpenOrders() instead');
1279
- }
1280
- const isTriggerOrder = this.safeBool(params, 'trigger');
1281
- params = this.omit(params, 'trigger');
1282
- let response = undefined;
1283
- if (isTriggerOrder) {
1284
- response = await this.v1PrivatePostTriggerOrdersCancelAll(params);
1285
- }
1286
- else {
1287
- response = await this.v1PrivatePostOrdersCancelAll(params);
1288
- }
1289
- //
1290
- // [] returns an empty array, even when successfully cancels orders
1291
- //
1292
- return this.parseOrders(response);
1293
- }
1294
- /**
1295
- * @method
1296
- * @name arkham#createOrder
1297
- * @description create a trade order on the exchange
1298
- * @see https://arkm.com/docs#post/orders/new
1299
- * @param {string} symbol unified CCXT market symbol
1300
- * @param {string} type "limit" or "market"
1301
- * @param {string} side "buy" or "sell"
1302
- * @param {float} amount the amount of currency to trade
1303
- * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1304
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1305
- * @param {string} [params.timeInForce] "GTC", "IOC", "FOK", or "PO"
1306
- * @param {float} [params.triggerPrice] price for a trigger (conditional) order
1307
- * @param {float} [params.stopLossPrice] price for a stoploss order
1308
- * @param {float} [params.takeProfitPrice] price for a takeprofit order
1309
- * @param {string} [params.triggerDirection] the direction for trigger orders, 'ascending' or 'descending'
1310
- * @param {string} [params.triggerPriceType] mark, index or last
1311
- * @param {bool} [params.postOnly] true or false whether the order is post-only
1312
- * @param {bool} [params.reduceOnly] true or false whether the order is reduce-only
1313
- * @returns [An order structure]{@link https://docs.ccxt.com/?id=order-structure}
1314
- */
1315
- async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1316
- await this.loadMarkets();
1317
- const market = this.market(symbol);
1318
- const isTriggerOrder = this.safeNumberN(params, ['triggerPrice', 'stopLossPrice', 'takeProfitPrice']) !== undefined;
1319
- const request = this.createOrderRequest(symbol, type, side, amount, price, params);
1320
- let response = undefined;
1321
- if (isTriggerOrder) {
1322
- response = await this.v1PrivatePostTriggerOrdersNew(request);
1323
- //
1324
- // {
1325
- // "triggerOrderId": "3716436645573",
1326
- // "symbol": "SOL_USDT_PERP",
1327
- // "side": "buy",
1328
- // "type": "limitGtc",
1329
- // "size": "0.05",
1330
- // "price": "150"
1331
- // }
1332
- //
1333
- }
1334
- else {
1335
- response = await this.v1PrivatePostOrdersNew(request);
1336
- //
1337
- // {
1338
- // "orderId": "3694872060678",
1339
- // "clientOrderId": "test123",
1340
- // "symbol": "SOL_USDT",
1341
- // "subaccountId": "0",
1342
- // "side": "buy",
1343
- // "type": "limitGtc",
1344
- // "size": "0.05",
1345
- // "price": "170",
1346
- // "time": "1753710501474043"
1347
- // }
1348
- //
1349
- }
1350
- return this.parseOrder(response, market);
1351
- }
1352
- createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
1353
- const market = this.market(symbol);
1354
- symbol = market['symbol'];
1355
- const request = {
1356
- 'symbol': market['id'],
1357
- 'side': side,
1358
- 'size': this.amountToPrecision(symbol, amount),
1359
- };
1360
- const isBuy = (side === 'buy');
1361
- const stopLossPrice = this.safeNumber(params, 'stopLossPrice');
1362
- const takeProfitPrice = this.safeNumber(params, 'takeProfitPrice');
1363
- const triggerPriceAny = this.safeStringN(params, ['triggerPrice', 'stopLossPrice', 'takeProfitPrice']);
1364
- if (triggerPriceAny !== undefined) {
1365
- request['triggerPrice'] = this.priceToPrecision(symbol, triggerPriceAny);
1366
- if (stopLossPrice !== undefined) {
1367
- request['triggerType'] = isBuy ? 'stopLoss' : 'takeProfit';
1368
- }
1369
- else if (takeProfitPrice !== undefined) {
1370
- request['triggerType'] = isBuy ? 'takeProfit' : 'stopLoss';
1371
- }
1372
- else {
1373
- const triggerDirection = this.safeString(params, 'triggerDirection');
1374
- if (triggerDirection === undefined) {
1375
- throw new ArgumentsRequired(this.id + ' createOrder() requires a triggerDirection parameter when triggerPrice is specified, must be "ascending" or "descending"');
1376
- }
1377
- if (triggerDirection !== undefined) {
1378
- if (triggerDirection === 'ascending') {
1379
- request['triggerType'] = isBuy ? 'stopLoss' : 'takeProfit';
1380
- }
1381
- else if (triggerDirection === 'descending') {
1382
- request['triggerType'] = isBuy ? 'takeProfit' : 'stopLoss';
1383
- }
1384
- }
1385
- }
1386
- // mandatory triggerPriceType
1387
- if (this.safeString(params, 'triggerPriceType') === undefined) {
1388
- request['triggerPriceType'] = 'last'; // default
1389
- }
1390
- }
1391
- const isMarketOrder = (type === 'market');
1392
- const isLimitOrder = (type === 'limit');
1393
- const isLimitExchangeSpecific = this.inArray(type, ['limitGtc', 'limitIoc', 'limitFok']);
1394
- const postOnly = this.isPostOnly(isMarketOrder, false, params);
1395
- const timeInForce = this.safeString(params, 'timeInForce');
1396
- params = this.omit(params, ['postOnly', 'timeInForce', 'triggerPrice', 'stopLossPrice', 'takeProfitPrice', 'triggerDirection']);
1397
- if (postOnly) {
1398
- request['postOnly'] = true;
1399
- }
1400
- if (isLimitOrder || isLimitExchangeSpecific) {
1401
- request['price'] = this.priceToPrecision(symbol, price);
1402
- //
1403
- if (timeInForce === 'IOC') {
1404
- request['type'] = 'limitIoc';
1405
- }
1406
- else if (timeInForce === 'FOK') {
1407
- request['type'] = 'limitFok';
1408
- }
1409
- else {
1410
- request['type'] = 'limitGtc';
1411
- }
1412
- }
1413
- else if (isMarketOrder) {
1414
- request['type'] = 'market';
1415
- }
1416
- // we don't need to manually handle `reduceOnly`, `clientOrderId`, `triggerPriceType` here as exchange-specific keyname & values matches
1417
- return this.extend(request, params);
1418
- }
1419
- parseOrder(order, market = undefined) {
1420
- //
1421
- // createOrder
1422
- //
1423
- // {
1424
- // "orderId": "3694872060678",
1425
- // "clientOrderId": "test123",
1426
- // "symbol": "SOL_USDT",
1427
- // "subaccountId": "0",
1428
- // "side": "buy",
1429
- // "type": "limitGtc",
1430
- // "size": "0.05",
1431
- // "price": "170",
1432
- // "time": "1753710501474043"
1433
- // }
1434
- //
1435
- // fetchOrder, fetchOpenOrders, fetchClosedOrders
1436
- //
1437
- // {
1438
- // "orderId": "3690478767430",
1439
- // "userId": "2959123",
1440
- // "subaccountId": "0",
1441
- // "symbol": "SOL_USDT",
1442
- // "time": "1753696843913970",
1443
- // "side": "sell",
1444
- // "type": "limitGtc",
1445
- // "size": "0.066",
1446
- // "price": "293.2",
1447
- // "postOnly": false,
1448
- // "reduceOnly": false,
1449
- // "executedSize": "0",
1450
- // "status": "booked",
1451
- // "avgPrice": "0",
1452
- // "executedNotional": "0",
1453
- // "creditFeePaid": "0",
1454
- // "marginBonusFeePaid": "0",
1455
- // "quoteFeePaid": "0",
1456
- // "arkmFeePaid": "0",
1457
- // "revisionId": "887956326",
1458
- // "lastTime": "1753696843914830",
1459
- // "clientOrderId": "",
1460
- // "lastSize": "0",
1461
- // "lastPrice": "0",
1462
- // "lastCreditFee": "0",
1463
- // "lastMarginBonusFee": "0",
1464
- // "lastQuoteFee": "0",
1465
- // "lastArkmFee": "0"
1466
- // }
1467
- //
1468
- // trigger-orders: createOrder
1469
- //
1470
- // {
1471
- // "triggerOrderId": "3716436645573",
1472
- // "symbol": "SOL_USDT_PERP",
1473
- // "side": "buy",
1474
- // "type": "limitGtc",
1475
- // "size": "0.05",
1476
- // "price": "150"
1477
- // }
1478
- //
1479
- // trigger-orders: fetchOpenOrders
1480
- //
1481
- // {
1482
- // "subaccountId": "0",
1483
- // "symbol": "SOL_USDT",
1484
- // "side": "sell",
1485
- // "type": "market",
1486
- // "size": "0.045",
1487
- // "price": "99.9",
1488
- // "postOnly": false,
1489
- // "reduceOnly": false,
1490
- // "time": "1753768103780063",
1491
- // "triggerOrderId": "3715847222127",
1492
- // "triggerType": "stopLoss",
1493
- // "triggerPriceType": "last",
1494
- // "triggerPrice": "111",
1495
- // "clientOrderId": "",
1496
- // "status": "staged"
1497
- // }
1498
- //
1499
- const marketId = this.safeString(order, 'symbol');
1500
- market = this.safeMarket(marketId, market);
1501
- const isPostOnly = this.safeBool(order, 'postOnly');
1502
- const typeRaw = this.safeString(order, 'type');
1503
- const orderType = isPostOnly ? 'limit' : this.parseOrderType(typeRaw);
1504
- const timeInForce = isPostOnly ? 'PO' : this.parseTimeInForce(typeRaw);
1505
- const quoteFeePaid = this.safeString(order, 'quoteFeePaid');
1506
- const arkmFeePaid = this.safeString(order, 'arkmFeePaid');
1507
- const fees = [];
1508
- if (quoteFeePaid !== undefined) {
1509
- fees.push({
1510
- 'cost': quoteFeePaid,
1511
- 'currency': this.safeString(market, 'quote'),
1512
- });
1513
- }
1514
- if (arkmFeePaid !== undefined) {
1515
- fees.push({
1516
- 'cost': arkmFeePaid,
1517
- 'currency': 'ARKM',
1518
- });
1519
- }
1520
- const timestamp = this.safeIntegerProduct(order, 'time', 0.001);
1521
- return this.safeOrder({
1522
- 'id': this.safeString2(order, 'orderId', 'triggerOrderId'),
1523
- 'clientOrderId': this.safeString(order, 'clientOrderId'),
1524
- 'timestamp': timestamp,
1525
- 'datetime': this.iso8601(timestamp),
1526
- 'lastTradeTimeStamp': undefined,
1527
- 'lastUpdateTimestamp': this.safeIntegerProduct(order, 'lastTime', 0.001),
1528
- 'status': this.parseOrderStatus(this.safeString(order, 'status')),
1529
- 'symbol': market['symbol'],
1530
- 'type': orderType,
1531
- 'timeInForce': timeInForce,
1532
- 'postOnly': undefined,
1533
- 'side': this.safeString(order, 'side'),
1534
- 'price': this.safeNumber(order, 'price'),
1535
- 'triggerPrice': undefined,
1536
- 'cost': this.safeNumber(order, 'executedNotional'),
1537
- 'average': this.safeNumberOmitZero(order, 'avgPrice'),
1538
- 'amount': this.safeNumber(order, 'size'),
1539
- 'filled': this.safeNumber(order, ''),
1540
- 'remaining': undefined,
1541
- 'trades': undefined,
1542
- 'fees': fees,
1543
- 'reduceOnly': this.safeBool(order, 'reduceOnly'),
1544
- 'info': order,
1545
- }, market);
1546
- }
1547
- parseOrderType(type) {
1548
- const types = {
1549
- 'limitGtc': 'limit',
1550
- 'limitIoc': 'limit',
1551
- 'limitFok': 'limit',
1552
- 'market': 'market',
1553
- };
1554
- return this.safeStringUpper(types, type, type);
1555
- }
1556
- parseTimeInForce(type) {
1557
- const types = {
1558
- 'limitGtc': 'GTC',
1559
- 'limitIoc': 'IOC',
1560
- 'limitFok': 'FOK',
1561
- 'market': 'IOC',
1562
- };
1563
- return this.safeStringUpper(types, type, type);
1564
- }
1565
- parseOrderStatus(status) {
1566
- const statuses = {
1567
- 'new': 'pending',
1568
- 'staged': 'open',
1569
- 'booked': 'open',
1570
- 'taker': 'closed',
1571
- 'maker': 'closed',
1572
- 'cancelled': 'canceled',
1573
- 'closed': 'closed',
1574
- };
1575
- return this.safeString(statuses, status, status);
1576
- }
1577
- /**
1578
- * @method
1579
- * @name arkham#fetchMyTrades
1580
- * @description fetch all trades made by the user
1581
- * @see https://arkm.com/docs#get/trades/time
1582
- * @param {string} [symbol] unified market symbol
1583
- * @param {int} [since] the earliest time in ms to fetch trades for
1584
- * @param {int} [limit] the maximum number of trade structures to retrieve
1585
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1586
- * @param {int} [params.until] the latest time in ms to fetch trades for
1587
- * @param {string} [params.page_token] page_token - used for paging
1588
- * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/?id=trade-structure}
1589
- */
1590
- async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1591
- await this.loadMarkets();
1592
- let request = {};
1593
- if (limit !== undefined) {
1594
- request['limit'] = limit;
1595
- }
1596
- // exchange needs to obtain some `from & to` values, otherwise it does not return any result
1597
- const defaultRange = 24 * 60 * 60 * 1000; // default to last 24 hours
1598
- if (since !== undefined) {
1599
- request['from'] = since * 1000; // convert ms to microseconds
1600
- }
1601
- else {
1602
- request['from'] = (this.milliseconds() - defaultRange) * 1000; // default to last 24 hours
1603
- }
1604
- const until = this.safeInteger(params, 'until');
1605
- if (until !== undefined) {
1606
- params = this.omit(params, 'until');
1607
- request['to'] = until * 1000; // convert ms to microseconds
1608
- }
1609
- else {
1610
- request['to'] = this.sum(request['from'], defaultRange * 1000);
1611
- }
1612
- [request, params] = this.handleUntilOption('until', request, params);
1613
- const response = await this.v1PrivateGetTradesTime(this.extend(request, params));
1614
- //
1615
- // [
1616
- // {
1617
- // "symbol": "SOL_USDT",
1618
- // "revisionId": "891839406",
1619
- // "size": "0.042",
1620
- // "price": "185.06",
1621
- // "takerSide": "sell",
1622
- // "time": "1753773952039342",
1623
- // "orderId": "3717304929194",
1624
- // "userSide": "sell",
1625
- // "quoteFee": "0.00777252",
1626
- // "arkmFee": "0",
1627
- // "clientOrderId": ""
1628
- // },
1629
- // ...
1630
- //
1631
- return this.parseTrades(response, undefined, since, limit);
1632
- }
1633
- /**
1634
- * @method
1635
- * @name arkham#fetchAccounts
1636
- * @description fetch all the accounts associated with a profile
1637
- * @see https://arkm.com/docs#get/user
1638
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1639
- * @returns {object} a dictionary of [account structures]{@link https://docs.ccxt.com/?id=account-structure} indexed by the account type
1640
- */
1641
- async fetchAccounts(params = {}) {
1642
- await this.loadMarkets();
1643
- const request = {};
1644
- let accountId = undefined;
1645
- [accountId, params] = this.handleOptionAndParams(params, 'fetchAccounts', 'accountId');
1646
- if (accountId !== undefined) {
1647
- request['subAccountId'] = accountId;
1648
- }
1649
- const response = await this.v1PrivateGetUser(this.extend(request, params));
1650
- //
1651
- // {
1652
- // "id": "2959123",
1653
- // "email": "xyz@gmail.com",
1654
- // "username": "t.123",
1655
- // "requireMFA": true,
1656
- // "kycVerifiedAt": "1753434515850673",
1657
- // "pmm": false,
1658
- // "dmm": false,
1659
- // "becameVipAt": "0",
1660
- // "subaccounts": [
1661
- // {
1662
- // "id": "0",
1663
- // "name": "Primary",
1664
- // "pinned": true,
1665
- // "isLsp": false,
1666
- // "futuresEnabled": true,
1667
- // "payFeesInArkm": false,
1668
- // "lspSettings": []
1669
- // }
1670
- // ],
1671
- // "settings": {
1672
- // "autogenDepositAddresses": false,
1673
- // "hideBalances": false,
1674
- // "confirmBeforePlaceOrder": false,
1675
- // "tickerTapeScroll": true,
1676
- // "updatesFlash": true,
1677
- // "notifyOrderFills": false,
1678
- // "notifyAnnouncements": false,
1679
- // "notifyMarginUsage": false,
1680
- // "marginUsageThreshold": "0.5",
1681
- // "notifyWithdrawals": true,
1682
- // "notifyDeposits": true,
1683
- // "notifySendEmail": true,
1684
- // "notifyRebates": true,
1685
- // "notifyCommissions": true,
1686
- // "allowSequenceEmails": true,
1687
- // "language": "en"
1688
- // },
1689
- // "airdropKycAt": null
1690
- // }
1691
- //
1692
- const subAccounts = this.safeList(response, 'subaccounts', []);
1693
- return this.parseAccounts(subAccounts, params);
1694
- }
1695
- parseAccount(account) {
1696
- //
1697
- // {
1698
- // "id": "0",
1699
- // "name": "Primary",
1700
- // "pinned": true,
1701
- // "isLsp": false,
1702
- // "futuresEnabled": true,
1703
- // "payFeesInArkm": false,
1704
- // "lspSettings": []
1705
- // }
1706
- //
1707
- return {
1708
- 'id': this.safeString(account, 'id'),
1709
- 'type': undefined,
1710
- 'code': undefined,
1711
- 'info': account,
1712
- };
1713
- }
1714
- /**
1715
- * @method
1716
- * @name arkham#fetchBalance
1717
- * @description query for account info
1718
- * @see https://arkm.com/docs#get/account/balances
1719
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1720
- * @returns {object} a [balance structure]{@link https://docs.ccxt.com/?id=balance-structure}
1721
- */
1722
- async fetchBalance(params = {}) {
1723
- await this.loadMarkets();
1724
- const response = await this.v1PrivateGetAccountBalances(params);
1725
- //
1726
- // [
1727
- // {
1728
- // "subaccountId": "0",
1729
- // "symbol": "USDT",
1730
- // "balance": "19.66494694",
1731
- // "free": "19.66494694",
1732
- // "priceUSDT": "1",
1733
- // "balanceUSDT": "19.66494694",
1734
- // "freeUSDT": "19.66494694",
1735
- // "lastUpdateReason": "orderFill",
1736
- // "lastUpdateTime": "1753773952039342",
1737
- // "lastUpdateId": "248507437",
1738
- // "lastUpdateAmount": "7.77252"
1739
- // },
1740
- // {
1741
- // "subaccountId": "0",
1742
- // "symbol": "SOL",
1743
- // "balance": "0",
1744
- // "free": "0",
1745
- // "priceUSDT": "186.025584673",
1746
- // "balanceUSDT": "0",
1747
- // "freeUSDT": "0",
1748
- // "lastUpdateReason": "orderFill",
1749
- // "lastUpdateTime": "1753773952039342",
1750
- // "lastUpdateId": "248507435",
1751
- // "lastUpdateAmount": "-0.042"
1752
- // }
1753
- // ]
1754
- //
1755
- return this.parseBalance(response);
1756
- }
1757
- parseBalance(response) {
1758
- const timestamp = this.safeIntegerProduct(response, 'lastUpdateTime', 0.001);
1759
- const result = {
1760
- 'info': response,
1761
- 'timestamp': timestamp,
1762
- 'datetime': this.iso8601(timestamp),
1763
- };
1764
- for (let i = 0; i < response.length; i++) {
1765
- const balance = response[i];
1766
- const symbol = this.safeString(balance, 'symbol');
1767
- const code = this.safeCurrencyCode(symbol);
1768
- const account = this.account();
1769
- account['total'] = this.safeString(balance, 'balance');
1770
- account['free'] = this.safeString(balance, 'free');
1771
- result[code] = account;
1772
- }
1773
- return this.safeBalance(result);
1774
- }
1775
- /**
1776
- * @method
1777
- * @name arkham#createDepositAddress
1778
- * @description create a currency deposit address
1779
- * @see https://arkm.com/docs#post/account/deposit/addresses/new
1780
- * @param {string} code unified currency code of the currency for the deposit address
1781
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1782
- * @returns {object} an [address structure]{@link https://docs.ccxt.com/?id=address-structure}
1783
- */
1784
- async createDepositAddress(code, params = {}) {
1785
- await this.loadMarkets();
1786
- let networkCode = undefined;
1787
- [networkCode, params] = this.handleNetworkCodeAndParams(params);
1788
- if (networkCode === undefined) {
1789
- throw new ArgumentsRequired(this.id + ' createDepositAddress() requires a "network" param');
1790
- }
1791
- const request = {
1792
- 'chain': networkCode,
1793
- };
1794
- const response = await this.v1PrivatePostAccountDepositAddressesNew(this.extend(request, params));
1795
- //
1796
- // {
1797
- // "addresses": "12NauJ26TUT9aYkpId7YdePJJDRMGbAsEMVoTVUvBErV"
1798
- // }
1799
- //
1800
- const address = this.safeString(response, 'addresses');
1801
- return this.parseDepositAddress(address, this.currency(code));
1802
- }
1803
- /**
1804
- * @method
1805
- * @name arkham#fetchDepositAddressesByNetwork
1806
- * @description fetch the deposit addresses for a currency associated with this account
1807
- * @see https://arkm.com/docs#get/account/deposit/addresses
1808
- * @param {string} code unified currency code
1809
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1810
- * @returns {object} a dictionary [address structures]{@link https://docs.ccxt.com/?id=address-structure}, indexed by the network
1811
- */
1812
- async fetchDepositAddressesByNetwork(code, params = {}) {
1813
- await this.loadMarkets();
1814
- let networkCode = undefined;
1815
- [networkCode, params] = this.handleNetworkCodeAndParams(params);
1816
- if (networkCode === undefined) {
1817
- throw new ArgumentsRequired(this.id + ' fetchDepositAddressesByNetwork() requires a "network" param');
1818
- }
1819
- const request = {
1820
- 'chain': this.networkCodeToId(networkCode),
1821
- };
1822
- const response = await this.v1PrivateGetAccountDepositAddresses(this.extend(request, params));
1823
- //
1824
- // {
1825
- // "addresses": [
1826
- // "12NauJ26TUT9aYkpId7YdePJJDRMGbAsEMVoTVUvBErV"
1827
- // ]
1828
- // }
1829
- //
1830
- const data = this.safeList(response, 'addresses');
1831
- const networkCodeUnified = networkCode; // java req
1832
- const parsed = this.parseDepositAddresses(data, undefined, false, { 'network': networkCodeUnified });
1833
- return this.indexBy(parsed, 'network');
1834
- }
1835
- parseDepositAddress(entry, currency = undefined) {
1836
- //
1837
- // "12NauJ26TUT9aYkpId7YdePJJDRMGbAsEMVoTVUvBErV"
1838
- //
1839
- return {
1840
- 'info': entry,
1841
- 'currency': this.safeString(currency, 'code'),
1842
- 'network': undefined,
1843
- 'address': entry,
1844
- 'tag': undefined,
1845
- };
1846
- }
1847
- /**
1848
- * @method
1849
- * @name arkham#fetchDepositAddress
1850
- * @description fetch the deposit address for a currency associated with this account
1851
- * @see https://arkm.com/docs#get/account/deposit/addresses
1852
- * @param {string} code unified currency code
1853
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1854
- * @returns {object} an [address structure]{@link https://docs.ccxt.com/?id=address-structure}
1855
- */
1856
- async fetchDepositAddress(code, params = {}) {
1857
- await this.loadMarkets();
1858
- const currency = this.currency(code);
1859
- const networkCodeAndParams = this.handleNetworkCodeAndParams(params);
1860
- const networkCode = networkCodeAndParams[0];
1861
- const indexedAddresses = await this.fetchDepositAddressesByNetwork(code, params);
1862
- const selectedNetworkCode = this.selectNetworkCodeFromUnifiedNetworks(currency['code'], networkCode, indexedAddresses);
1863
- const address = this.safeDict(indexedAddresses, selectedNetworkCode);
1864
- if (address === undefined) {
1865
- throw new InvalidAddress(this.id + ' fetchDepositAddress() could not find a deposit address for ' + code);
1866
- }
1867
- return address;
1868
- }
1869
- /**
1870
- * @method
1871
- * @name arkham#fetchDeposits
1872
- * @description fetch all deposits made to an account
1873
- * @see https://arkm.com/docs#get/account/deposits
1874
- * @param {string} code unified currency code
1875
- * @param {int} [since] the earliest time in ms to fetch deposits for
1876
- * @param {int} [limit] the maximum number of deposits structures to retrieve
1877
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1878
- * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/?id=transaction-structure}
1879
- */
1880
- async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
1881
- await this.loadMarkets();
1882
- const request = {};
1883
- if (limit !== undefined) {
1884
- request['limit'] = limit;
1885
- }
1886
- const response = await this.v1PrivateGetAccountDeposits(this.extend(request, params));
1887
- //
1888
- // [
1889
- // {
1890
- // "id": "238644",
1891
- // "symbol": "SOL",
1892
- // "amount": "0.104",
1893
- // "time": "1753436404000000",
1894
- // "confirmed": true,
1895
- // "transactionHash": "1DRxbbyePTsMuB82SDf2fG5gLXH5iYnY8TQDstDPLULpLtjMJtF1ug1T4Mf8B6DSb8fp2sb5YtdbyqieZ2tkE1Ve",
1896
- // "chain": "Solana",
1897
- // "depositAddress": "12NauJ26TUT9aYkpId7YdePJJDRMGbAsEMVoTVUvBErV",
1898
- // "price": "180.322010164"
1899
- // }
1900
- // ]
1901
- //
1902
- let currency = undefined;
1903
- if (code !== undefined) {
1904
- currency = this.currency(code);
1905
- }
1906
- return this.parseTransactions(response, currency, since, limit);
1907
- }
1908
- parseTransaction(transaction, currency = undefined) {
1909
- //
1910
- // {
1911
- // "id": "238644",
1912
- // "symbol": "SOL",
1913
- // "amount": "0.104",
1914
- // "time": "1753436404000000",
1915
- // "confirmed": true,
1916
- // "transactionHash": "1DRxbbyePTsMuB82SDf2fG5gLXH5iYnY8TQDstDPLULpLtjMJtF1ug1T4Mf8B6DSb8fp2sb5YtdbyqieZ2tkE1Ve",
1917
- // "chain": "Solana",
1918
- // "depositAddress": "12NauJ26TUT9aYkpId7YdePJJDRMGbAsEMVoTVUvBErV",
1919
- // "price": "180.322010164"
1920
- // }
1921
- //
1922
- const address = this.safeString(transaction, 'depositAddress');
1923
- const timestamp = this.safeIntegerProduct(transaction, 'time', 0.001);
1924
- const confirmd = this.safeBool(transaction, 'confirmed');
1925
- let status = undefined;
1926
- if (confirmd) {
1927
- status = 'ok';
1928
- }
1929
- const currencyId = this.safeString(transaction, 'symbol');
1930
- const code = this.safeCurrencyCode(currencyId, currency);
1931
- return {
1932
- 'info': transaction,
1933
- 'id': this.safeString(transaction, 'id'),
1934
- 'txid': this.safeString(transaction, 'transactionHash'),
1935
- 'type': undefined,
1936
- 'currency': code,
1937
- 'network': this.networkIdToCode(this.safeString(transaction, 'chain')),
1938
- 'amount': this.safeNumber(transaction, 'amount'),
1939
- 'status': status,
1940
- 'timestamp': timestamp,
1941
- 'datetime': this.iso8601(timestamp),
1942
- 'address': address,
1943
- 'addressFrom': undefined,
1944
- 'addressTo': address,
1945
- 'tag': undefined,
1946
- 'tagFrom': undefined,
1947
- 'tagTo': undefined,
1948
- 'updated': undefined,
1949
- 'comment': undefined,
1950
- 'fee': undefined,
1951
- 'internal': false,
1952
- };
1953
- }
1954
- /**
1955
- * @method
1956
- * @name arkham#fetchTradingFees
1957
- * @description fetch the trading fees for multiple markets
1958
- * @see https://arkm.com/docs#get/account/fees
1959
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1960
- * @param {string} [params.subType] "linear" or "inverse"
1961
- * @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/?id=fee-structure} indexed by market symbols
1962
- */
1963
- async fetchTradingFees(params = {}) {
1964
- await this.loadMarkets();
1965
- const response = await this.v1PrivateGetAccountFees(params);
1966
- //
1967
- // {
1968
- // "perpMakerFee": "1.23",
1969
- // "perpTakerFee": "1.23",
1970
- // "spotMakerFee": "1.23",
1971
- // "spotTakerFee": "1.23"
1972
- // }
1973
- //
1974
- const symbols = Object.keys(this.markets);
1975
- const result = {};
1976
- const spotMaker = this.safeNumber(response, 'spotMakerFee');
1977
- const spotTaker = this.safeNumber(response, 'spotTakerFee');
1978
- const perpMaker = this.safeNumber(response, 'perpMakerFee');
1979
- const perpTaker = this.safeNumber(response, 'perpTakerFee');
1980
- for (let i = 0; i < symbols.length; i++) {
1981
- const symbol = symbols[i];
1982
- const market = this.markets[symbol];
1983
- result[symbol] = {
1984
- 'info': response,
1985
- 'symbol': symbol,
1986
- };
1987
- if (market['spot']) {
1988
- result[symbol]['maker'] = spotMaker;
1989
- result[symbol]['taker'] = spotTaker;
1990
- }
1991
- else if (market['swap'] || market['future']) {
1992
- result[symbol]['maker'] = perpMaker;
1993
- result[symbol]['taker'] = perpTaker;
1994
- }
1995
- }
1996
- return result;
1997
- }
1998
- /**
1999
- * @method
2000
- * @name arkham#fetchFundingHistory
2001
- * @description fetch the history of funding payments paid and received on this account
2002
- * @see https://arkm.com/docs#get/account/funding-rate-payments
2003
- * @param {string} [symbol] unified market symbol
2004
- * @param {int} [since] the earliest time in ms to fetch funding history for
2005
- * @param {int} [limit] the maximum number of funding history structures to retrieve
2006
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2007
- * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
2008
- * @returns {object} a [funding history structure]{@link https://docs.ccxt.com/?id=funding-history-structure}
2009
- */
2010
- async fetchFundingHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2011
- await this.loadMarkets();
2012
- let market = undefined;
2013
- if (symbol !== undefined) {
2014
- market = this.market(symbol);
2015
- }
2016
- const request = {};
2017
- if (limit !== undefined) {
2018
- request['limit'] = limit;
2019
- }
2020
- const response = await this.v1PrivateGetAccountFundingRatePayments(this.extend(request, params));
2021
- //
2022
- // [
2023
- // {
2024
- // "amount": "20.1",
2025
- // "assetSymbol": "BTC",
2026
- // "indexPrice": "1.23",
2027
- // "pairSymbol": "BTC_USDT",
2028
- // "time": 1704067200000000,
2029
- // "id": 1,
2030
- // "subaccountId": 1,
2031
- // "userId": 1
2032
- // },
2033
- // ...
2034
- // ]
2035
- //
2036
- return this.parseIncomes(response, market, since, limit);
2037
- }
2038
- parseIncome(income, market = undefined) {
2039
- //
2040
- // {
2041
- // "amount": "20.1",
2042
- // "assetSymbol": "BTC",
2043
- // "indexPrice": "1.23",
2044
- // "pairSymbol": "BTC_USDT",
2045
- // "time": 1704067200000000,
2046
- // "id": 1,
2047
- // "subaccountId": 1,
2048
- // "userId": 1
2049
- // }
2050
- //
2051
- const marketId = this.safeString(income, 'pairSymbol');
2052
- const currencyId = this.safeString(income, 'assetSymbol');
2053
- const timestamp = this.safeIntegerProduct(income, 'time', 0.001);
2054
- return {
2055
- 'info': income,
2056
- 'symbol': this.safeSymbol(marketId, market),
2057
- 'code': this.safeCurrencyCode(currencyId),
2058
- 'timestamp': timestamp,
2059
- 'datetime': this.iso8601(timestamp),
2060
- 'id': this.safeString(income, 'id'),
2061
- 'amount': this.safeNumber(income, 'amount'),
2062
- };
2063
- }
2064
- /**
2065
- * @method
2066
- * @name arkham#fetchLeverage
2067
- * @description fetch the set leverage for a market
2068
- * @see https://arkm.com/docs#get/account/leverage
2069
- * @param {string} symbol unified market symbol
2070
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2071
- * @returns {object} a [leverage structure]{@link https://docs.ccxt.com/?id=leverage-structure}
2072
- */
2073
- async fetchLeverage(symbol, params = {}) {
2074
- await this.loadMarkets();
2075
- const market = this.market(symbol);
2076
- const marketId = this.safeString(market, 'id');
2077
- const request = {
2078
- 'symbol': marketId,
2079
- };
2080
- const response = await this.v1PrivateGetAccountLeverage(this.extend(request, params));
2081
- //
2082
- // might be empty if not changed from default value (which is 1x)
2083
- //
2084
- // [
2085
- // {
2086
- // "symbol": "BTC_USDT_PERP",
2087
- // "leverage": "7"
2088
- // },
2089
- // {
2090
- // "symbol": "ETH_USDT_PERP",
2091
- // "leverage": "5"
2092
- // }
2093
- // ]
2094
- //
2095
- const indexed = this.indexBy(response, 'symbol');
2096
- const data = this.safeDict(indexed, marketId, {});
2097
- return this.parseLeverage(data, market);
2098
- }
2099
- parseLeverage(leverage, market = undefined) {
2100
- //
2101
- // {
2102
- // "symbol": "ETH_USDT_PERP",
2103
- // "leverage": "5"
2104
- // }
2105
- //
2106
- const marketId = this.safeString(leverage, 'symbol');
2107
- const leverageNum = this.safeNumber(leverage, 'leverage'); // default leverage is 1 typically
2108
- return {
2109
- 'info': leverage,
2110
- 'symbol': this.safeSymbol(marketId, market),
2111
- 'marginMode': undefined,
2112
- 'longLeverage': leverageNum,
2113
- 'shortLeverage': leverageNum,
2114
- };
2115
- }
2116
- /**
2117
- * @method
2118
- * @name arkham#setLeverage
2119
- * @description set the level of leverage for a market
2120
- * @see https://arkm.com/docs#post/account/leverage
2121
- * @param {float} leverage the rate of leverage
2122
- * @param {string} symbol unified market symbol
2123
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2124
- * @returns {object} response from the exchange
2125
- */
2126
- async setLeverage(leverage, symbol = undefined, params = {}) {
2127
- if (symbol === undefined) {
2128
- throw new ArgumentsRequired(this.id + ' setLeverage() requires a symbol argument');
2129
- }
2130
- await this.loadMarkets();
2131
- const market = this.market(symbol);
2132
- const leverageString = this.numberToString(leverage);
2133
- const marketId = this.safeString(market, 'id');
2134
- const request = {
2135
- 'symbol': marketId,
2136
- 'leverage': leverageString,
2137
- };
2138
- const response = await this.v1PrivatePostAccountLeverage(this.extend(request, params));
2139
- //
2140
- // response is just empty string
2141
- //
2142
- return this.parseLeverage(response, market);
2143
- }
2144
- /**
2145
- * @method
2146
- * @name arkkm#fetchPositions
2147
- * @description fetch all open positions
2148
- * @see https://arkm.com/docs#get/account/positions
2149
- * @param {string[]|undefined} symbols list of unified market symbols
2150
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2151
- * @param {boolean} [params.standard] whether to fetch standard contract positions
2152
- * @returns {object[]} a list of [position structures]{@link https://docs.ccxt.com/?id=position-structure}
2153
- */
2154
- async fetchPositions(symbols = undefined, params = {}) {
2155
- await this.loadMarkets();
2156
- symbols = this.marketSymbols(symbols);
2157
- const response = await this.v1PrivateGetAccountPositions(params);
2158
- //
2159
- // [
2160
- // {
2161
- // "subaccountId": "0",
2162
- // "symbol": "SOL_USDT_PERP",
2163
- // "base": "0.037",
2164
- // "quote": "-6.44614",
2165
- // "openBuySize": "0",
2166
- // "openSellSize": "0",
2167
- // "openBuyNotional": "0",
2168
- // "openSellNotional": "0",
2169
- // "lastUpdateReason": "orderFill",
2170
- // "lastUpdateTime": "1753903829389966",
2171
- // "lastUpdateId": "250434684",
2172
- // "lastUpdateBaseDelta": "0.037",
2173
- // "lastUpdateQuoteDelta": "-6.44614",
2174
- // "breakEvenPrice": "174.22",
2175
- // "markPrice": "174.33",
2176
- // "value": "6.45021",
2177
- // "pnl": "0.00407",
2178
- // "initialMargin": "0.645021",
2179
- // "maintenanceMargin": "0.3870126",
2180
- // "averageEntryPrice": "174.22"
2181
- // }
2182
- // ]
2183
- //
2184
- return this.parsePositions(response, symbols);
2185
- }
2186
- parsePosition(position, market = undefined) {
2187
- //
2188
- // {
2189
- // "subaccountId": "0",
2190
- // "symbol": "SOL_USDT_PERP",
2191
- // "base": "0.037", // negative for short position
2192
- // "quote": "-6.44614", // negative for long position
2193
- // "openBuySize": "0",
2194
- // "openSellSize": "0",
2195
- // "openBuyNotional": "0",
2196
- // "openSellNotional": "0",
2197
- // "lastUpdateReason": "orderFill",
2198
- // "lastUpdateTime": "1753903829389966",
2199
- // "lastUpdateId": "250434684",
2200
- // "lastUpdateBaseDelta": "0.037",
2201
- // "lastUpdateQuoteDelta": "-6.44614",
2202
- // "breakEvenPrice": "174.22",
2203
- // "markPrice": "174.33",
2204
- // "value": "6.45021",
2205
- // "pnl": "0.00407",
2206
- // "initialMargin": "0.645021",
2207
- // "maintenanceMargin": "0.3870126",
2208
- // "averageEntryPrice": "174.22"
2209
- // }
2210
- //
2211
- const base = this.safeString(position, 'base');
2212
- const baseAbs = Precise.stringAbs(base);
2213
- const isLong = Precise.stringGe(base, '0');
2214
- const side = isLong ? 'long' : 'short';
2215
- const marketId = this.safeString(position, 'symbol');
2216
- const notional = this.safeString(position, 'value');
2217
- return this.safePosition({
2218
- 'info': position,
2219
- 'id': undefined,
2220
- 'symbol': this.safeSymbol(marketId, market),
2221
- 'notional': this.parseNumber(Precise.stringAbs(notional)),
2222
- 'marginMode': undefined,
2223
- 'liquidationPrice': undefined,
2224
- 'entryPrice': this.safeNumber(position, 'averageEntryPrice'),
2225
- 'unrealizedPnl': this.safeNumber(position, 'pnl'),
2226
- 'realizedPnl': undefined,
2227
- 'percentage': undefined,
2228
- 'contracts': this.parseNumber(baseAbs),
2229
- 'contractSize': undefined,
2230
- 'markPrice': this.safeNumber(position, 'markPrice'),
2231
- 'lastPrice': undefined,
2232
- 'side': side,
2233
- 'hedged': undefined,
2234
- 'timestamp': undefined,
2235
- 'datetime': undefined,
2236
- 'lastUpdateTimestamp': this.safeInteger(position, 'lastUpdateTime'),
2237
- 'maintenanceMargin': this.safeNumber(position, 'maintenanceMargin'),
2238
- 'maintenanceMarginPercentage': undefined,
2239
- 'collateral': undefined,
2240
- 'initialMargin': this.safeNumber(position, 'initialMargin'),
2241
- 'initialMarginPercentage': undefined,
2242
- 'leverage': undefined,
2243
- 'marginRatio': undefined,
2244
- 'stopLossPrice': undefined,
2245
- 'takeProfitPrice': undefined,
2246
- });
2247
- }
2248
- /**
2249
- * @method
2250
- * @name arkkm#withdraw
2251
- * @description make a withdrawal
2252
- * @see https://arkm.com/docs#post/account/withdraw
2253
- * @see https://arkm.com/docs#get/account/withdrawal/addresses
2254
- * @param {string} code unified currency code
2255
- * @param {float} amount the amount to withdraw
2256
- * @param {string} address the address to withdraw to
2257
- * @param {string} tag
2258
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2259
- * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/?id=transaction-structure}
2260
- */
2261
- async withdraw(code, amount, address, tag = undefined, params = {}) {
2262
- [tag, params] = this.handleWithdrawTagAndParams(tag, params);
2263
- await this.loadMarkets();
2264
- const withdrawalAddresses = await this.v1PrivateGetAccountWithdrawalAddresses();
2265
- //
2266
- // [
2267
- // {
2268
- // "id": "12345",
2269
- // "chain": "ETH",
2270
- // "address": "0x743f79D65EA07AA222F4a83c10dee4210A920a6e",
2271
- // "label": "my_binance",
2272
- // "createdAt": "1753905200074355",
2273
- // "updatedAt": "1753905213464278",
2274
- // "confirmed": true
2275
- // }
2276
- // ]
2277
- //
2278
- const currency = this.currency(code);
2279
- const request = {
2280
- 'symbol': currency['id'],
2281
- 'amount': this.currencyToPrecision(code, amount),
2282
- 'subaccountId': this.safeInteger(params, 'subAccountId', 0),
2283
- };
2284
- let networkCode = undefined;
2285
- [networkCode, params] = this.handleNetworkCodeAndParams(params);
2286
- if (networkCode === undefined) {
2287
- throw new ArgumentsRequired(this.id + ' withdraw() requires a "network" param');
2288
- }
2289
- const indexedList = this.groupBy(withdrawalAddresses, 'address');
2290
- if (!(address in indexedList)) {
2291
- throw new InvalidAddress(this.id + ' withdraw() requires an address that has been previously added to the whitelisted addresses');
2292
- }
2293
- const withdrawalObjects = indexedList[address];
2294
- let foundWithdrawalObject = undefined;
2295
- for (let i = 0; i < withdrawalObjects.length; i++) {
2296
- const withdrawalObject = withdrawalObjects[i];
2297
- if (withdrawalObject['chain'] === networkCode) {
2298
- foundWithdrawalObject = withdrawalObject;
2299
- break;
2300
- }
2301
- }
2302
- if (foundWithdrawalObject === undefined) {
2303
- throw new InvalidAddress(this.id + ' withdraw() can not find whitelisted withdrawal address for ' + address + ' with network ' + networkCode);
2304
- }
2305
- request['addressId'] = this.safeInteger(foundWithdrawalObject, 'id');
2306
- const response = await this.v1PrivatePostAccountWithdraw(this.extend(request, params));
2307
- //
2308
- // response is a weird string like:
2309
- //
2310
- // "1234709779980\\n"
2311
- //
2312
- const responseString = response.replace('\n', '');
2313
- const data = { 'id': responseString };
2314
- return this.parseTransaction(data, currency);
2315
- }
2316
- /**
2317
- * @method
2318
- * @name arkham#fetchLeverageTiers
2319
- * @description retrieve information on the maximum leverage, and maintenance margin for trades of varying trade sizes
2320
- * @see https://arkm.com/docs#get/public/margin-schedules
2321
- * @param {string[]|undefined} symbols list of unified market symbols
2322
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2323
- * @returns {object} a dictionary of [leverage tiers structures]{@link https://docs.ccxt.com/?id=leverage-tiers-structure}, indexed by market symbols
2324
- */
2325
- async fetchLeverageTiers(symbols = undefined, params = {}) {
2326
- await this.loadMarkets();
2327
- if (symbols === undefined) {
2328
- throw new ArgumentsRequired(this.id + ' fetchLeverageTiers() requires a symbols argument');
2329
- }
2330
- symbols = this.marketSymbols(symbols);
2331
- const response = await this.v1PublicGetMarginSchedules(params);
2332
- //
2333
- // [
2334
- // {
2335
- // "name": "A",
2336
- // "bands": [
2337
- // {
2338
- // "positionLimit": "1000000",
2339
- // "leverageRate": "50",
2340
- // "marginRate": "0.02",
2341
- // "rebate": "0"
2342
- // },
2343
- // {
2344
- // "positionLimit": "2000000",
2345
- // "leverageRate": "25",
2346
- // "marginRate": "0.04",
2347
- // "rebate": "20000"
2348
- // },
2349
- // {
2350
- // "positionLimit": "5000000",
2351
- // "leverageRate": "20",
2352
- // "marginRate": "0.05",
2353
- // "rebate": "40000"
2354
- // }
2355
- // ]
2356
- // },
2357
- // {
2358
- // "name": "B",
2359
- // ...
2360
- //
2361
- return this.parseLeverageTiers(response, symbols);
2362
- }
2363
- parseLeverageTiers(response, symbols = undefined, marketIdKey = undefined) {
2364
- // overloaded method
2365
- const indexed = this.indexBy(response, 'name');
2366
- symbols = this.marketSymbols(symbols);
2367
- const tiers = {};
2368
- for (let i = 0; i < symbols.length; i++) {
2369
- const symbol = symbols[i];
2370
- const market = this.market(symbol);
2371
- const marginSchedule = this.safeString(market['info'], 'marginSchedule');
2372
- if (marginSchedule === undefined) {
2373
- throw new BadSymbol(this.id + ' fetchLeverageTiers() could not find marginSchedule for ' + symbol);
2374
- }
2375
- const selectedDict = this.safeDict(indexed, marginSchedule, {});
2376
- const bands = this.safeList(selectedDict, 'bands', []);
2377
- tiers[symbol] = this.parseMarketLeverageTiers(bands, market);
2378
- }
2379
- return tiers;
2380
- }
2381
- parseMarketLeverageTiers(info, market = undefined) {
2382
- const tiers = [];
2383
- const brackets = info;
2384
- let minNotional = 0;
2385
- for (let i = 0; i < brackets.length; i++) {
2386
- const tier = brackets[i];
2387
- const marketId = this.safeString(info, 'market');
2388
- market = this.safeMarket(marketId, market, undefined, 'swap');
2389
- const maxNotional = this.safeNumber(tier, 'positionLimit');
2390
- const curr = market['linear'] ? market['base'] : market['quote'];
2391
- const notional = minNotional;
2392
- tiers.push({
2393
- 'tier': this.sum(i, 1),
2394
- 'symbol': this.safeSymbol(marketId, market, undefined, 'swap'),
2395
- 'currency': curr,
2396
- 'minNotional': notional,
2397
- 'maxNotional': maxNotional,
2398
- 'maintenanceMarginRate': this.safeNumber(tier, 'marginRate'),
2399
- 'maxLeverage': this.safeInteger(tier, 'leverageRate'),
2400
- 'info': tier,
2401
- });
2402
- minNotional = maxNotional;
2403
- }
2404
- return tiers;
2405
- }
2406
- findTimeframeByDuration(duration) {
2407
- // this method is used to find the timeframe by duration in seconds
2408
- const timeframes = this.safeDict(this.options, 'timeframeDurations', {});
2409
- const keys = Object.keys(timeframes);
2410
- for (let i = 0; i < keys.length; i++) {
2411
- const timeframe = keys[i];
2412
- const durationInMicroseconds = this.safeInteger(timeframes, timeframe);
2413
- if (durationInMicroseconds === duration) {
2414
- return timeframe;
2415
- }
2416
- }
2417
- return undefined;
2418
- }
2419
- sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
2420
- const type = this.safeString(api, 0);
2421
- const access = this.safeString(api, 1);
2422
- const accessPart = (access === 'public') ? access + '/' : '';
2423
- const query = this.omit(params, this.extractParams(path));
2424
- path = this.implodeParams(path, params);
2425
- let url = this.urls['api'][type] + '/' + accessPart + path;
2426
- let queryString = '';
2427
- if (method === 'GET') {
2428
- if (Object.keys(query).length) {
2429
- queryString = this.urlencode(query);
2430
- url += '?' + queryString;
2431
- }
2432
- }
2433
- if (access === 'private') {
2434
- this.checkRequiredCredentials();
2435
- const expires = (this.milliseconds() + this.safeInteger(this.options, 'requestExpiration', 5000)) * 1000; // need macroseconds
2436
- if (method === 'POST') {
2437
- body = this.json(params);
2438
- }
2439
- if (queryString !== '') {
2440
- path = path + '?' + queryString;
2441
- }
2442
- const bodyStr = (body !== undefined) ? body : '';
2443
- const payload = this.apiKey + expires.toString() + method.toUpperCase() + '/' + path + bodyStr;
2444
- const decodedSecret = this.base64ToBinary(this.secret);
2445
- const signature = this.hmac(this.encode(payload), decodedSecret, sha256, 'base64');
2446
- headers = {
2447
- 'Content-Type': 'application/json',
2448
- 'Accept': 'application/json',
2449
- 'Arkham-Api-Key': this.apiKey,
2450
- 'Arkham-Expires': expires.toString(),
2451
- 'Arkham-Signature': signature,
2452
- 'Arkham-Broker-Id': '1001',
2453
- };
2454
- }
2455
- return { 'url': url, 'method': method, 'body': body, 'headers': headers };
2456
- }
2457
- handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
2458
- //
2459
- // error example:
2460
- //
2461
- // {
2462
- // "id": "30005",
2463
- // "name": "InvalidNotional",
2464
- // "message": "order validation failed: invalid notional: notional 0.25 is less than min notional 1"
2465
- // }
2466
- //
2467
- const message = this.safeString(response, 'message');
2468
- if (message !== undefined) {
2469
- const errorCode = this.safeString(response, 'id');
2470
- const feedback = this.id + ' ' + body;
2471
- this.throwExactlyMatchedException(this.exceptions['exact'], errorCode, feedback);
2472
- this.throwExactlyMatchedException(this.exceptions['exact'], message, feedback);
2473
- this.throwBroadlyMatchedException(this.exceptions['broad'], message, feedback);
2474
- throw new ExchangeError(this.id + ' ' + body);
2475
- }
2476
- return undefined;
2477
- }
2478
- }