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