ccxt 4.4.71 → 4.4.73

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 (928) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +1 -6
  4. package/dist/cjs/src/abstract/ace.js +1 -1
  5. package/dist/cjs/src/abstract/alpaca.js +1 -1
  6. package/dist/cjs/src/abstract/ascendex.js +1 -1
  7. package/dist/cjs/src/abstract/bigone.js +1 -1
  8. package/dist/cjs/src/abstract/binance.js +1 -1
  9. package/dist/cjs/src/abstract/bingx.js +1 -1
  10. package/dist/cjs/src/abstract/bit2c.js +1 -1
  11. package/dist/cjs/src/abstract/bitbank.js +1 -1
  12. package/dist/cjs/src/abstract/bitbns.js +1 -1
  13. package/dist/cjs/src/abstract/bitfinex.js +1 -1
  14. package/dist/cjs/src/abstract/bitfinex1.js +1 -1
  15. package/dist/cjs/src/abstract/bitflyer.js +1 -1
  16. package/dist/cjs/src/abstract/bitget.js +1 -1
  17. package/dist/cjs/src/abstract/bithumb.js +1 -1
  18. package/dist/cjs/src/abstract/bitmart.js +1 -1
  19. package/dist/cjs/src/abstract/bitmex.js +1 -1
  20. package/dist/cjs/src/abstract/bitopro.js +1 -1
  21. package/dist/cjs/src/abstract/bitrue.js +1 -1
  22. package/dist/cjs/src/abstract/bitso.js +1 -1
  23. package/dist/cjs/src/abstract/bitstamp.js +1 -1
  24. package/dist/cjs/src/abstract/bitteam.js +1 -1
  25. package/dist/cjs/src/abstract/bitvavo.js +1 -1
  26. package/dist/cjs/src/abstract/bl3p.js +1 -1
  27. package/dist/cjs/src/abstract/blockchaincom.js +1 -1
  28. package/dist/cjs/src/abstract/blofin.js +1 -1
  29. package/dist/cjs/src/abstract/btcalpha.js +1 -1
  30. package/dist/cjs/src/abstract/btcbox.js +1 -1
  31. package/dist/cjs/src/abstract/btcmarkets.js +1 -1
  32. package/dist/cjs/src/abstract/btcturk.js +1 -1
  33. package/dist/cjs/src/abstract/bybit.js +1 -1
  34. package/dist/cjs/src/abstract/cex.js +1 -1
  35. package/dist/cjs/src/abstract/coinbase.js +1 -1
  36. package/dist/cjs/src/abstract/coinbaseexchange.js +1 -1
  37. package/dist/cjs/src/abstract/coinbaseinternational.js +1 -1
  38. package/dist/cjs/src/abstract/coincatch.js +1 -1
  39. package/dist/cjs/src/abstract/coincheck.js +1 -1
  40. package/dist/cjs/src/abstract/coinex.js +1 -1
  41. package/dist/cjs/src/abstract/coinlist.js +1 -1
  42. package/dist/cjs/src/abstract/coinmate.js +1 -1
  43. package/dist/cjs/src/abstract/coinmetro.js +1 -1
  44. package/dist/cjs/src/abstract/coinone.js +1 -1
  45. package/dist/cjs/src/abstract/coinsph.js +1 -1
  46. package/dist/cjs/src/abstract/coinspot.js +1 -1
  47. package/dist/cjs/src/abstract/cryptocom.js +1 -1
  48. package/dist/cjs/src/abstract/cryptomus.js +1 -1
  49. package/dist/cjs/src/abstract/defx.js +1 -1
  50. package/dist/cjs/src/abstract/delta.js +1 -1
  51. package/dist/cjs/src/abstract/deribit.js +1 -1
  52. package/dist/cjs/src/abstract/derive.js +1 -1
  53. package/dist/cjs/src/abstract/digifinex.js +1 -1
  54. package/dist/cjs/src/abstract/ellipx.js +1 -1
  55. package/dist/cjs/src/abstract/exmo.js +1 -1
  56. package/dist/cjs/src/abstract/gate.js +1 -1
  57. package/dist/cjs/src/abstract/gemini.js +1 -1
  58. package/dist/cjs/src/abstract/hashkey.js +1 -1
  59. package/dist/cjs/src/abstract/hitbtc.js +1 -1
  60. package/dist/cjs/src/abstract/hollaex.js +1 -1
  61. package/dist/cjs/src/abstract/htx.js +1 -1
  62. package/dist/cjs/src/abstract/huobijp.js +1 -1
  63. package/dist/cjs/src/abstract/hyperliquid.js +1 -1
  64. package/dist/cjs/src/abstract/idex.js +1 -1
  65. package/dist/cjs/src/abstract/independentreserve.js +1 -1
  66. package/dist/cjs/src/abstract/indodax.js +1 -1
  67. package/dist/cjs/src/abstract/kraken.js +1 -1
  68. package/dist/cjs/src/abstract/krakenfutures.js +1 -1
  69. package/dist/cjs/src/abstract/kucoin.js +1 -1
  70. package/dist/cjs/src/abstract/kucoinfutures.js +1 -1
  71. package/dist/cjs/src/abstract/kuna.js +1 -1
  72. package/dist/cjs/src/abstract/latoken.js +1 -1
  73. package/dist/cjs/src/abstract/lbank.js +1 -1
  74. package/dist/cjs/src/abstract/luno.js +1 -1
  75. package/dist/cjs/src/abstract/mercado.js +1 -1
  76. package/dist/cjs/src/abstract/mexc.js +1 -1
  77. package/dist/cjs/src/abstract/ndax.js +1 -1
  78. package/dist/cjs/src/abstract/novadax.js +1 -1
  79. package/dist/cjs/src/abstract/oceanex.js +1 -1
  80. package/dist/cjs/src/abstract/okcoin.js +1 -1
  81. package/dist/cjs/src/abstract/okx.js +1 -1
  82. package/dist/cjs/src/abstract/onetrading.js +1 -1
  83. package/dist/cjs/src/abstract/oxfun.js +1 -1
  84. package/dist/cjs/src/abstract/p2b.js +1 -1
  85. package/dist/cjs/src/abstract/paradex.js +1 -1
  86. package/dist/cjs/src/abstract/paymium.js +1 -1
  87. package/dist/cjs/src/abstract/phemex.js +1 -1
  88. package/dist/cjs/src/abstract/poloniex.js +1 -1
  89. package/dist/cjs/src/abstract/probit.js +1 -1
  90. package/dist/cjs/src/abstract/timex.js +1 -1
  91. package/dist/cjs/src/abstract/tokocrypto.js +1 -1
  92. package/dist/cjs/src/abstract/tradeogre.js +1 -1
  93. package/dist/cjs/src/abstract/upbit.js +1 -1
  94. package/dist/cjs/src/abstract/vertex.js +1 -1
  95. package/dist/cjs/src/abstract/wavesexchange.js +1 -1
  96. package/dist/cjs/src/abstract/whitebit.js +1 -1
  97. package/dist/cjs/src/abstract/woo.js +1 -1
  98. package/dist/cjs/src/abstract/woofipro.js +1 -1
  99. package/dist/cjs/src/abstract/xt.js +1 -1
  100. package/dist/cjs/src/abstract/yobit.js +1 -1
  101. package/dist/cjs/src/abstract/zaif.js +1 -1
  102. package/dist/cjs/src/abstract/zonda.js +1 -1
  103. package/dist/cjs/src/ace.js +43 -8
  104. package/dist/cjs/src/alpaca.js +47 -1
  105. package/dist/cjs/src/ascendex.js +3 -3
  106. package/dist/cjs/src/base/Exchange.js +17 -17
  107. package/dist/cjs/src/base/Precise.js +6 -0
  108. package/dist/cjs/src/base/errors.js +6 -0
  109. package/dist/cjs/src/base/functions/crypto.js +1 -1
  110. package/dist/cjs/src/base/functions/encode.js +1 -1
  111. package/dist/cjs/src/base/functions/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 +1 -1
  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 +1 -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 +22 -17
  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 +3 -3
  134. package/dist/cjs/src/bit2c.js +12 -1
  135. package/dist/cjs/src/bitbank.js +1 -1
  136. package/dist/cjs/src/bitbns.js +1 -1
  137. package/dist/cjs/src/bitcoincom.js +1 -1
  138. package/dist/cjs/src/bitfinex.js +1 -1
  139. package/dist/cjs/src/bitfinex1.js +1 -1
  140. package/dist/cjs/src/bitflyer.js +1 -1
  141. package/dist/cjs/src/bitget.js +8 -6
  142. package/dist/cjs/src/bithumb.js +1 -1
  143. package/dist/cjs/src/bitmart.js +1 -1
  144. package/dist/cjs/src/bitmex.js +1 -1
  145. package/dist/cjs/src/bitopro.js +1 -1
  146. package/dist/cjs/src/bitpanda.js +1 -1
  147. package/dist/cjs/src/bitrue.js +2 -2
  148. package/dist/cjs/src/bitso.js +1 -1
  149. package/dist/cjs/src/bitstamp.js +1 -1
  150. package/dist/cjs/src/bitteam.js +1 -1
  151. package/dist/cjs/src/bl3p.js +1 -1
  152. package/dist/cjs/src/blockchaincom.js +1 -1
  153. package/dist/cjs/src/blofin.js +1 -1
  154. package/dist/cjs/src/btcalpha.js +1 -1
  155. package/dist/cjs/src/btcbox.js +1 -1
  156. package/dist/cjs/src/btcmarkets.js +1 -1
  157. package/dist/cjs/src/btcturk.js +1 -1
  158. package/dist/cjs/src/bybit.js +10 -1
  159. package/dist/cjs/src/cex.js +2 -1
  160. package/dist/cjs/src/coinbase.js +2 -1
  161. package/dist/cjs/src/coinbaseadvanced.js +1 -1
  162. package/dist/cjs/src/coinbaseexchange.js +1 -0
  163. package/dist/cjs/src/coinbaseinternational.js +1 -0
  164. package/dist/cjs/src/coincatch.js +1 -1
  165. package/dist/cjs/src/coincheck.js +1 -1
  166. package/dist/cjs/src/coinex.js +1 -1
  167. package/dist/cjs/src/coinlist.js +1 -0
  168. package/dist/cjs/src/coinmate.js +1 -1
  169. package/dist/cjs/src/coinmetro.js +1 -1
  170. package/dist/cjs/src/coinone.js +1 -1
  171. package/dist/cjs/src/coinsph.js +1 -0
  172. package/dist/cjs/src/coinspot.js +1 -1
  173. package/dist/cjs/src/cryptocom.js +1 -1
  174. package/dist/cjs/src/cryptomus.js +1 -1
  175. package/dist/cjs/src/defx.js +2 -2
  176. package/dist/cjs/src/delta.js +1 -1
  177. package/dist/cjs/src/deribit.js +2 -1
  178. package/dist/cjs/src/derive.js +16 -8
  179. package/dist/cjs/src/digifinex.js +1 -1
  180. package/dist/cjs/src/ellipx.js +1 -1
  181. package/dist/cjs/src/exmo.js +1 -1
  182. package/dist/cjs/src/fmfwio.js +1 -1
  183. package/dist/cjs/src/gate.js +5 -1
  184. package/dist/cjs/src/gateio.js +1 -1
  185. package/dist/cjs/src/gemini.js +2 -1
  186. package/dist/cjs/src/hashkey.js +1 -1
  187. package/dist/cjs/src/hitbtc.js +1 -0
  188. package/dist/cjs/src/hollaex.js +1 -1
  189. package/dist/cjs/src/htx.js +1 -1
  190. package/dist/cjs/src/huobi.js +1 -1
  191. package/dist/cjs/src/huobijp.js +1 -1
  192. package/dist/cjs/src/hyperliquid.js +41 -1
  193. package/dist/cjs/src/idex.js +1 -1
  194. package/dist/cjs/src/independentreserve.js +1 -1
  195. package/dist/cjs/src/indodax.js +1 -1
  196. package/dist/cjs/src/kraken.js +1 -1
  197. package/dist/cjs/src/krakenfutures.js +5 -1
  198. package/dist/cjs/src/kucoin.js +1 -1
  199. package/dist/cjs/src/kucoinfutures.js +1 -1
  200. package/dist/cjs/src/kuna.js +1 -1
  201. package/dist/cjs/src/latoken.js +1 -1
  202. package/dist/cjs/src/lbank.js +1 -1
  203. package/dist/cjs/src/luno.js +1 -1
  204. package/dist/cjs/src/mercado.js +1 -1
  205. package/dist/cjs/src/mexc.js +1 -1
  206. package/dist/cjs/src/myokx.js +1 -1
  207. package/dist/cjs/src/ndax.js +1 -1
  208. package/dist/cjs/src/novadax.js +1 -1
  209. package/dist/cjs/src/oceanex.js +1 -1
  210. package/dist/cjs/src/okcoin.js +5 -1
  211. package/dist/cjs/src/okx.js +23 -33
  212. package/dist/cjs/src/onetrading.js +1 -1
  213. package/dist/cjs/src/oxfun.js +1 -1
  214. package/dist/cjs/src/p2b.js +1 -1
  215. package/dist/cjs/src/paradex.js +70 -10
  216. package/dist/cjs/src/paymium.js +1 -1
  217. package/dist/cjs/src/poloniex.js +2 -1
  218. package/dist/cjs/src/pro/alpaca.js +1 -1
  219. package/dist/cjs/src/pro/ascendex.js +1 -1
  220. package/dist/cjs/src/pro/bequant.js +1 -1
  221. package/dist/cjs/src/pro/binancecoinm.js +1 -1
  222. package/dist/cjs/src/pro/binanceus.js +1 -1
  223. package/dist/cjs/src/pro/binanceusdm.js +1 -1
  224. package/dist/cjs/src/pro/bingx.js +1 -1
  225. package/dist/cjs/src/pro/bitcoincom.js +1 -1
  226. package/dist/cjs/src/pro/bitfinex.js +1 -1
  227. package/dist/cjs/src/pro/bitfinex1.js +1 -1
  228. package/dist/cjs/src/pro/bitget.js +2 -2
  229. package/dist/cjs/src/pro/bithumb.js +1 -1
  230. package/dist/cjs/src/pro/bitmart.js +20 -8
  231. package/dist/cjs/src/pro/bitmex.js +1 -1
  232. package/dist/cjs/src/pro/bitpanda.js +1 -1
  233. package/dist/cjs/src/pro/bitrue.js +1 -1
  234. package/dist/cjs/src/pro/bitstamp.js +1 -1
  235. package/dist/cjs/src/pro/bitvavo.js +1 -1
  236. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  237. package/dist/cjs/src/pro/blofin.js +1 -1
  238. package/dist/cjs/src/pro/bybit.js +1 -1
  239. package/dist/cjs/src/pro/cex.js +1 -1
  240. package/dist/cjs/src/pro/coinbase.js +1 -1
  241. package/dist/cjs/src/pro/coinbaseadvanced.js +1 -1
  242. package/dist/cjs/src/pro/coinbaseexchange.js +1 -1
  243. package/dist/cjs/src/pro/coinbaseinternational.js +1 -1
  244. package/dist/cjs/src/pro/coincatch.js +1 -1
  245. package/dist/cjs/src/pro/coincheck.js +1 -1
  246. package/dist/cjs/src/pro/coinex.js +1 -1
  247. package/dist/cjs/src/pro/coinone.js +1 -1
  248. package/dist/cjs/src/pro/cryptocom.js +1 -1
  249. package/dist/cjs/src/pro/defx.js +1 -1
  250. package/dist/cjs/src/pro/deribit.js +1 -1
  251. package/dist/cjs/src/pro/derive.js +2 -2
  252. package/dist/cjs/src/pro/exmo.js +1 -1
  253. package/dist/cjs/src/pro/gate.js +1 -1
  254. package/dist/cjs/src/pro/gateio.js +1 -1
  255. package/dist/cjs/src/pro/gemini.js +1 -1
  256. package/dist/cjs/src/pro/hashkey.js +1 -1
  257. package/dist/cjs/src/pro/hitbtc.js +1 -1
  258. package/dist/cjs/src/pro/hollaex.js +1 -1
  259. package/dist/cjs/src/pro/htx.js +1 -1
  260. package/dist/cjs/src/pro/huobi.js +1 -1
  261. package/dist/cjs/src/pro/hyperliquid.js +1 -1
  262. package/dist/cjs/src/pro/idex.js +1 -1
  263. package/dist/cjs/src/pro/independentreserve.js +1 -1
  264. package/dist/cjs/src/pro/kraken.js +1 -1
  265. package/dist/cjs/src/pro/krakenfutures.js +2 -2
  266. package/dist/cjs/src/pro/kucoin.js +1 -1
  267. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  268. package/dist/cjs/src/pro/lbank.js +1 -0
  269. package/dist/cjs/src/pro/luno.js +1 -1
  270. package/dist/cjs/src/pro/mexc.js +1 -1
  271. package/dist/cjs/src/pro/myokx.js +1 -1
  272. package/dist/cjs/src/pro/ndax.js +1 -1
  273. package/dist/cjs/src/pro/okcoin.js +1 -1
  274. package/dist/cjs/src/pro/okx.js +1 -1
  275. package/dist/cjs/src/pro/onetrading.js +1 -1
  276. package/dist/cjs/src/pro/oxfun.js +1 -1
  277. package/dist/cjs/src/pro/p2b.js +1 -1
  278. package/dist/cjs/src/pro/paradex.js +1 -1
  279. package/dist/cjs/src/pro/phemex.js +1 -1
  280. package/dist/cjs/src/pro/poloniex.js +1 -1
  281. package/dist/cjs/src/pro/probit.js +1 -1
  282. package/dist/cjs/src/pro/upbit.js +1 -1
  283. package/dist/cjs/src/pro/whitebit.js +1 -1
  284. package/dist/cjs/src/pro/xt.js +1 -1
  285. package/dist/cjs/src/probit.js +1 -1
  286. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +6 -0
  287. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
  288. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
  289. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +1 -0
  290. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +1 -0
  291. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +1 -0
  292. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +1 -0
  293. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +1 -0
  294. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +1 -0
  295. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +1 -0
  296. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +1 -0
  297. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +1 -0
  298. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +1 -0
  299. package/dist/cjs/src/static_dependencies/ethers/fragments.js +6 -0
  300. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +6 -0
  301. package/dist/cjs/src/static_dependencies/ethers/index.js +1 -10
  302. package/dist/cjs/src/static_dependencies/ethers/interface.js +6 -0
  303. package/dist/cjs/src/static_dependencies/ethers/typed.js +6 -0
  304. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +1 -13
  305. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +1 -6
  306. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +1 -9
  307. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +6 -0
  308. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
  309. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +1 -7
  310. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +1 -5
  311. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +6 -0
  312. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +1 -8
  313. package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
  314. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +1 -0
  315. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +1 -0
  316. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
  317. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
  318. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
  319. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
  320. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +1 -0
  321. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
  322. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
  323. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
  324. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
  325. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
  326. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
  327. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
  328. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +6 -0
  329. package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
  330. package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
  331. package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
  332. package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +1 -0
  333. package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
  334. package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
  335. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
  336. package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
  337. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  338. package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
  339. package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
  340. package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
  341. package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +6 -0
  342. package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +1 -0
  343. package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +6 -0
  344. package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +6 -0
  345. package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +1 -0
  346. package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +1 -0
  347. package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +1 -0
  348. package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +1 -0
  349. package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +1 -0
  350. package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +1 -0
  351. package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
  352. package/dist/cjs/src/static_dependencies/node-fetch/body.js +1 -5
  353. package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +1 -0
  354. package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +6 -0
  355. package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +1 -0
  356. package/dist/cjs/src/static_dependencies/node-fetch/headers.js +1 -5
  357. package/dist/cjs/src/static_dependencies/node-fetch/index.js +1 -7
  358. package/dist/cjs/src/static_dependencies/node-fetch/request.js +1 -7
  359. package/dist/cjs/src/static_dependencies/node-fetch/response.js +1 -5
  360. package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
  361. package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
  362. package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +6 -0
  363. package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +1 -0
  364. package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +1 -0
  365. package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +1 -0
  366. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +1 -0
  367. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
  368. package/dist/cjs/src/static_dependencies/scure-base/index.js +6 -0
  369. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
  370. package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
  371. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +6 -0
  372. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
  373. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
  374. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +6 -0
  375. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +6 -0
  376. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +6 -0
  377. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
  378. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
  379. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
  380. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +1 -0
  381. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +1 -0
  382. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
  383. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
  384. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
  385. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +1 -0
  386. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
  387. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +1 -0
  388. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +1 -0
  389. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
  390. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +1 -0
  391. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +1 -0
  392. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +1 -0
  393. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
  394. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +1 -4
  395. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +1 -0
  396. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +1 -3
  397. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +1 -0
  398. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +1 -0
  399. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +1 -0
  400. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +1 -0
  401. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
  402. package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +6 -0
  403. package/dist/cjs/src/timex.js +1 -0
  404. package/dist/cjs/src/tokocrypto.js +1 -1
  405. package/dist/cjs/src/tradeogre.js +1 -1
  406. package/dist/cjs/src/upbit.js +1 -1
  407. package/dist/cjs/src/vertex.js +1 -1
  408. package/dist/cjs/src/wavesexchange.js +1 -1
  409. package/dist/cjs/src/whitebit.js +98 -2
  410. package/dist/cjs/src/woo.js +4 -2
  411. package/dist/cjs/src/woofipro.js +2 -2
  412. package/dist/cjs/src/xt.js +1 -1
  413. package/dist/cjs/src/yobit.js +2 -1
  414. package/dist/cjs/src/zaif.js +1 -1
  415. package/dist/cjs/src/zonda.js +1 -1
  416. package/js/ccxt.d.ts +3 -9
  417. package/js/ccxt.js +8 -6
  418. package/js/src/abstract/ace.js +6 -0
  419. package/js/src/abstract/alpaca.js +6 -0
  420. package/js/src/abstract/ascendex.js +6 -0
  421. package/js/src/abstract/bequant.js +6 -0
  422. package/js/src/abstract/bigone.js +6 -0
  423. package/js/src/abstract/binance.js +6 -0
  424. package/js/src/abstract/binancecoinm.js +6 -0
  425. package/js/src/abstract/binanceus.js +6 -0
  426. package/js/src/abstract/binanceusdm.js +6 -0
  427. package/js/src/abstract/bingx.d.ts +1 -1
  428. package/js/src/abstract/bingx.js +6 -0
  429. package/js/src/abstract/bit2c.js +6 -0
  430. package/js/src/abstract/bitbank.js +6 -0
  431. package/js/src/abstract/bitbns.js +6 -0
  432. package/js/src/abstract/bitcoincom.js +6 -0
  433. package/js/src/abstract/bitfinex.js +6 -0
  434. package/js/src/abstract/bitfinex1.js +6 -0
  435. package/js/src/abstract/bitflyer.js +6 -0
  436. package/js/src/abstract/bitget.js +6 -0
  437. package/js/src/abstract/bithumb.js +6 -0
  438. package/js/src/abstract/bitmart.js +6 -0
  439. package/js/src/abstract/bitmex.js +6 -0
  440. package/js/src/abstract/bitopro.js +6 -0
  441. package/js/src/abstract/bitpanda.js +6 -0
  442. package/js/src/abstract/bitrue.js +6 -0
  443. package/js/src/abstract/bitso.js +6 -0
  444. package/js/src/abstract/bitstamp.js +6 -0
  445. package/js/src/abstract/bitteam.js +6 -0
  446. package/js/src/abstract/bitvavo.js +6 -0
  447. package/js/src/abstract/bl3p.js +6 -0
  448. package/js/src/abstract/blockchaincom.js +6 -0
  449. package/js/src/abstract/blofin.js +6 -0
  450. package/js/src/abstract/btcalpha.js +6 -0
  451. package/js/src/abstract/btcbox.js +6 -0
  452. package/js/src/abstract/btcmarkets.js +6 -0
  453. package/js/src/abstract/btcturk.js +6 -0
  454. package/js/src/abstract/bybit.js +6 -0
  455. package/js/src/abstract/cex.js +6 -0
  456. package/js/src/abstract/coinbase.js +6 -0
  457. package/js/src/abstract/coinbaseadvanced.js +6 -0
  458. package/js/src/abstract/coinbaseexchange.js +6 -0
  459. package/js/src/abstract/coinbaseinternational.js +6 -0
  460. package/js/src/abstract/coincatch.js +6 -0
  461. package/js/src/abstract/coincheck.js +6 -0
  462. package/js/src/abstract/coinex.js +6 -0
  463. package/js/src/abstract/coinlist.js +6 -0
  464. package/js/src/abstract/coinmate.js +6 -0
  465. package/js/src/abstract/coinmetro.js +6 -0
  466. package/js/src/abstract/coinone.js +6 -0
  467. package/js/src/abstract/coinsph.js +6 -0
  468. package/js/src/abstract/coinspot.js +6 -0
  469. package/js/src/abstract/cryptocom.js +6 -0
  470. package/js/src/abstract/cryptomus.js +6 -0
  471. package/js/src/abstract/defx.js +6 -0
  472. package/js/src/abstract/delta.js +6 -0
  473. package/js/src/abstract/deribit.js +6 -0
  474. package/js/src/abstract/derive.js +6 -0
  475. package/js/src/abstract/digifinex.js +6 -0
  476. package/js/src/abstract/ellipx.js +6 -0
  477. package/js/src/abstract/exmo.js +6 -0
  478. package/js/src/abstract/fmfwio.js +6 -0
  479. package/js/src/abstract/gate.js +6 -0
  480. package/js/src/abstract/gateio.js +6 -0
  481. package/js/src/abstract/gemini.js +6 -0
  482. package/js/src/abstract/hashkey.js +6 -0
  483. package/js/src/abstract/hitbtc.js +6 -0
  484. package/js/src/abstract/hollaex.js +6 -0
  485. package/js/src/abstract/htx.js +6 -0
  486. package/js/src/abstract/huobi.js +6 -0
  487. package/js/src/abstract/huobijp.js +6 -0
  488. package/js/src/abstract/hyperliquid.js +6 -0
  489. package/js/src/abstract/idex.js +6 -0
  490. package/js/src/abstract/independentreserve.js +6 -0
  491. package/js/src/abstract/indodax.js +6 -0
  492. package/js/src/abstract/kraken.js +6 -0
  493. package/js/src/abstract/krakenfutures.js +6 -0
  494. package/js/src/abstract/kucoin.js +6 -0
  495. package/js/src/abstract/kucoinfutures.js +6 -0
  496. package/js/src/abstract/kuna.js +6 -0
  497. package/js/src/abstract/latoken.js +6 -0
  498. package/js/src/abstract/lbank.js +6 -0
  499. package/js/src/abstract/luno.js +6 -0
  500. package/js/src/abstract/mercado.js +6 -0
  501. package/js/src/abstract/mexc.js +6 -0
  502. package/js/src/abstract/myokx.js +6 -0
  503. package/js/src/abstract/ndax.js +6 -0
  504. package/js/src/abstract/novadax.js +6 -0
  505. package/js/src/abstract/oceanex.js +6 -0
  506. package/js/src/abstract/okcoin.js +6 -0
  507. package/js/src/abstract/okx.js +6 -0
  508. package/js/src/abstract/onetrading.js +6 -0
  509. package/js/src/abstract/oxfun.js +6 -0
  510. package/js/src/abstract/p2b.js +6 -0
  511. package/js/src/abstract/paradex.js +6 -0
  512. package/js/src/abstract/paymium.js +6 -0
  513. package/js/src/abstract/phemex.js +6 -0
  514. package/js/src/abstract/poloniex.js +6 -0
  515. package/js/src/abstract/probit.js +6 -0
  516. package/js/src/abstract/timex.js +6 -0
  517. package/js/src/abstract/tokocrypto.js +6 -0
  518. package/js/src/abstract/tradeogre.js +6 -0
  519. package/js/src/abstract/upbit.js +6 -0
  520. package/js/src/abstract/vertex.js +6 -0
  521. package/js/src/abstract/wavesexchange.js +6 -0
  522. package/js/src/abstract/whitebit.js +6 -0
  523. package/js/src/abstract/woo.js +6 -0
  524. package/js/src/abstract/woofipro.js +6 -0
  525. package/js/src/abstract/xt.js +6 -0
  526. package/js/src/abstract/yobit.js +6 -0
  527. package/js/src/abstract/zaif.js +6 -0
  528. package/js/src/abstract/zonda.js +6 -0
  529. package/js/src/ace.js +48 -7
  530. package/js/src/alpaca.js +52 -0
  531. package/js/src/ascendex.js +8 -2
  532. package/js/src/base/Exchange.d.ts +5 -5
  533. package/js/src/base/Exchange.js +23 -17
  534. package/js/src/base/Precise.js +6 -0
  535. package/js/src/base/errorHierarchy.js +6 -0
  536. package/js/src/base/errors.js +6 -0
  537. package/js/src/base/functions/crypto.js +6 -0
  538. package/js/src/base/functions/encode.js +6 -0
  539. package/js/src/base/functions/generic.js +6 -0
  540. package/js/src/base/functions/misc.js +6 -0
  541. package/js/src/base/functions/number.js +6 -0
  542. package/js/src/base/functions/platform.js +6 -0
  543. package/js/src/base/functions/rsa.js +6 -0
  544. package/js/src/base/functions/string.js +6 -0
  545. package/js/src/base/functions/throttle.js +6 -0
  546. package/js/src/base/functions/time.js +6 -0
  547. package/js/src/base/functions/totp.js +6 -0
  548. package/js/src/base/functions/type.js +6 -0
  549. package/js/src/base/functions.js +6 -0
  550. package/js/src/base/types.d.ts +0 -6
  551. package/js/src/base/types.js +6 -0
  552. package/js/src/base/ws/Cache.js +6 -0
  553. package/js/src/base/ws/Client.js +6 -0
  554. package/js/src/base/ws/Future.js +6 -0
  555. package/js/src/base/ws/OrderBook.js +6 -0
  556. package/js/src/base/ws/OrderBookSide.js +6 -0
  557. package/js/src/base/ws/WsClient.js +6 -0
  558. package/js/src/base/ws/functions.js +6 -0
  559. package/js/src/bequant.js +6 -0
  560. package/js/src/bigone.js +6 -0
  561. package/js/src/binance.js +27 -16
  562. package/js/src/binancecoinm.js +6 -0
  563. package/js/src/binanceus.js +6 -0
  564. package/js/src/binanceusdm.js +6 -0
  565. package/js/src/bingx.js +8 -2
  566. package/js/src/bit2c.js +17 -0
  567. package/js/src/bitbank.js +6 -0
  568. package/js/src/bitbns.js +6 -0
  569. package/js/src/bitcoincom.js +6 -0
  570. package/js/src/bitfinex.js +6 -0
  571. package/js/src/bitflyer.js +6 -0
  572. package/js/src/bitget.js +13 -5
  573. package/js/src/bithumb.js +6 -0
  574. package/js/src/bitmart.js +6 -0
  575. package/js/src/bitmex.js +6 -0
  576. package/js/src/bitopro.js +6 -0
  577. package/js/src/bitpanda.js +6 -0
  578. package/js/src/bitrue.js +7 -1
  579. package/js/src/bitso.js +6 -0
  580. package/js/src/bitstamp.js +6 -0
  581. package/js/src/bitteam.js +6 -0
  582. package/js/src/bitvavo.js +6 -0
  583. package/js/src/bl3p.d.ts +2 -8
  584. package/js/src/bl3p.js +6 -0
  585. package/js/src/blockchaincom.js +6 -0
  586. package/js/src/blofin.js +6 -0
  587. package/js/src/btcalpha.js +6 -0
  588. package/js/src/btcbox.js +6 -0
  589. package/js/src/btcmarkets.js +6 -0
  590. package/js/src/btcturk.js +6 -0
  591. package/js/src/bybit.d.ts +4 -20
  592. package/js/src/bybit.js +15 -0
  593. package/js/src/cex.js +7 -0
  594. package/js/src/coinbase.d.ts +1 -6
  595. package/js/src/coinbase.js +8 -1
  596. package/js/src/coinbaseadvanced.js +6 -0
  597. package/js/src/coinbaseexchange.d.ts +2 -7
  598. package/js/src/coinbaseexchange.js +7 -0
  599. package/js/src/coinbaseinternational.d.ts +2 -7
  600. package/js/src/coinbaseinternational.js +7 -0
  601. package/js/src/coincatch.js +6 -0
  602. package/js/src/coincheck.js +6 -0
  603. package/js/src/coinex.js +6 -0
  604. package/js/src/coinlist.js +6 -0
  605. package/js/src/coinmate.js +6 -0
  606. package/js/src/coinmetro.js +6 -0
  607. package/js/src/coinone.js +6 -0
  608. package/js/src/coinsph.js +6 -0
  609. package/js/src/coinspot.js +6 -0
  610. package/js/src/cryptocom.js +6 -0
  611. package/js/src/cryptomus.js +6 -0
  612. package/js/src/defx.js +7 -1
  613. package/js/src/delta.js +6 -0
  614. package/js/src/deribit.d.ts +1 -6
  615. package/js/src/deribit.js +7 -0
  616. package/js/src/derive.js +21 -7
  617. package/js/src/digifinex.js +6 -0
  618. package/js/src/ellipx.js +6 -0
  619. package/js/src/exmo.js +6 -0
  620. package/js/src/fmfwio.js +6 -0
  621. package/js/src/gate.js +10 -0
  622. package/js/src/gateio.js +6 -0
  623. package/js/src/gemini.d.ts +1 -6
  624. package/js/src/gemini.js +7 -0
  625. package/js/src/hashkey.js +6 -0
  626. package/js/src/hitbtc.d.ts +1 -7
  627. package/js/src/hitbtc.js +6 -0
  628. package/js/src/hollaex.js +6 -0
  629. package/js/src/htx.js +6 -0
  630. package/js/src/huobi.js +6 -0
  631. package/js/src/huobijp.js +6 -0
  632. package/js/src/hyperliquid.d.ts +11 -0
  633. package/js/src/hyperliquid.js +46 -0
  634. package/js/src/idex.js +6 -0
  635. package/js/src/independentreserve.js +6 -0
  636. package/js/src/indodax.js +6 -0
  637. package/js/src/kraken.js +6 -0
  638. package/js/src/krakenfutures.js +10 -0
  639. package/js/src/kucoin.js +6 -0
  640. package/js/src/kucoinfutures.js +6 -0
  641. package/js/src/kuna.js +6 -0
  642. package/js/src/latoken.js +6 -0
  643. package/js/src/lbank.js +6 -0
  644. package/js/src/luno.js +6 -0
  645. package/js/src/mercado.js +6 -0
  646. package/js/src/mexc.js +6 -0
  647. package/js/src/myokx.js +6 -0
  648. package/js/src/ndax.js +6 -0
  649. package/js/src/novadax.js +6 -0
  650. package/js/src/oceanex.js +6 -0
  651. package/js/src/okcoin.js +10 -0
  652. package/js/src/okx.js +28 -32
  653. package/js/src/onetrading.js +6 -0
  654. package/js/src/oxfun.js +6 -0
  655. package/js/src/p2b.js +6 -0
  656. package/js/src/paradex.js +75 -9
  657. package/js/src/paymium.js +6 -0
  658. package/js/src/phemex.js +6 -0
  659. package/js/src/poloniex.d.ts +1 -7
  660. package/js/src/poloniex.js +7 -0
  661. package/js/src/pro/alpaca.js +6 -0
  662. package/js/src/pro/ascendex.js +6 -0
  663. package/js/src/pro/bequant.js +6 -0
  664. package/js/src/pro/binance.js +6 -0
  665. package/js/src/pro/binancecoinm.js +6 -0
  666. package/js/src/pro/binanceus.js +6 -0
  667. package/js/src/pro/binanceusdm.js +6 -0
  668. package/js/src/pro/bingx.js +6 -0
  669. package/js/src/pro/bitcoincom.js +6 -0
  670. package/js/src/pro/bitfinex.js +6 -0
  671. package/js/src/pro/bitget.d.ts +1 -1
  672. package/js/src/pro/bitget.js +7 -1
  673. package/js/src/pro/bithumb.js +6 -0
  674. package/js/src/pro/bitmart.js +25 -7
  675. package/js/src/pro/bitmex.js +6 -0
  676. package/js/src/pro/bitopro.js +6 -0
  677. package/js/src/pro/bitpanda.js +6 -0
  678. package/js/src/pro/bitrue.js +6 -0
  679. package/js/src/pro/bitstamp.js +6 -0
  680. package/js/src/pro/bitvavo.js +6 -0
  681. package/js/src/pro/blockchaincom.js +6 -0
  682. package/js/src/pro/blofin.js +6 -0
  683. package/js/src/pro/bybit.js +6 -0
  684. package/js/src/pro/cex.js +6 -0
  685. package/js/src/pro/coinbase.js +6 -0
  686. package/js/src/pro/coinbaseadvanced.js +6 -0
  687. package/js/src/pro/coinbaseexchange.js +6 -0
  688. package/js/src/pro/coinbaseinternational.js +6 -0
  689. package/js/src/pro/coincatch.js +6 -0
  690. package/js/src/pro/coincheck.js +6 -0
  691. package/js/src/pro/coinex.js +6 -0
  692. package/js/src/pro/coinone.js +6 -0
  693. package/js/src/pro/cryptocom.js +6 -0
  694. package/js/src/pro/defx.js +6 -0
  695. package/js/src/pro/deribit.js +6 -0
  696. package/js/src/pro/derive.js +8 -2
  697. package/js/src/pro/exmo.js +6 -0
  698. package/js/src/pro/gate.js +6 -0
  699. package/js/src/pro/gateio.js +6 -0
  700. package/js/src/pro/gemini.js +6 -0
  701. package/js/src/pro/hashkey.js +6 -0
  702. package/js/src/pro/hitbtc.js +6 -0
  703. package/js/src/pro/hollaex.js +6 -0
  704. package/js/src/pro/htx.js +6 -0
  705. package/js/src/pro/huobi.js +6 -0
  706. package/js/src/pro/huobijp.js +6 -0
  707. package/js/src/pro/hyperliquid.js +6 -0
  708. package/js/src/pro/idex.js +6 -0
  709. package/js/src/pro/independentreserve.js +6 -0
  710. package/js/src/pro/kraken.js +6 -0
  711. package/js/src/pro/krakenfutures.js +7 -1
  712. package/js/src/pro/kucoin.js +6 -0
  713. package/js/src/pro/kucoinfutures.js +6 -0
  714. package/js/src/pro/lbank.js +6 -0
  715. package/js/src/pro/luno.js +6 -0
  716. package/js/src/pro/mexc.js +6 -0
  717. package/js/src/pro/myokx.js +6 -0
  718. package/js/src/pro/ndax.js +6 -0
  719. package/js/src/pro/okcoin.js +6 -0
  720. package/js/src/pro/okx.js +6 -0
  721. package/js/src/pro/onetrading.js +6 -0
  722. package/js/src/pro/oxfun.js +6 -0
  723. package/js/src/pro/p2b.js +6 -0
  724. package/js/src/pro/paradex.js +6 -0
  725. package/js/src/pro/phemex.js +6 -0
  726. package/js/src/pro/poloniex.js +6 -0
  727. package/js/src/pro/probit.js +6 -0
  728. package/js/src/pro/upbit.js +6 -0
  729. package/js/src/pro/vertex.js +6 -0
  730. package/js/src/pro/whitebit.js +6 -0
  731. package/js/src/pro/woo.js +6 -0
  732. package/js/src/pro/woofipro.js +6 -0
  733. package/js/src/pro/xt.js +6 -0
  734. package/js/src/probit.js +6 -0
  735. package/js/src/static_dependencies/ethers/abi-coder.js +6 -0
  736. package/js/src/static_dependencies/ethers/address/address.js +6 -0
  737. package/js/src/static_dependencies/ethers/address/checks.js +6 -0
  738. package/js/src/static_dependencies/ethers/address/contract-address.js +6 -0
  739. package/js/src/static_dependencies/ethers/address/index.js +6 -0
  740. package/js/src/static_dependencies/ethers/bytes32.js +6 -0
  741. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
  742. package/js/src/static_dependencies/ethers/coders/address.js +6 -0
  743. package/js/src/static_dependencies/ethers/coders/anonymous.js +6 -0
  744. package/js/src/static_dependencies/ethers/coders/array.js +6 -0
  745. package/js/src/static_dependencies/ethers/coders/boolean.js +6 -0
  746. package/js/src/static_dependencies/ethers/coders/bytes.js +6 -0
  747. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +6 -0
  748. package/js/src/static_dependencies/ethers/coders/null.js +6 -0
  749. package/js/src/static_dependencies/ethers/coders/number.js +6 -0
  750. package/js/src/static_dependencies/ethers/coders/string.js +6 -0
  751. package/js/src/static_dependencies/ethers/coders/tuple.js +6 -0
  752. package/js/src/static_dependencies/ethers/fragments.js +6 -0
  753. package/js/src/static_dependencies/ethers/hash/index.js +6 -0
  754. package/js/src/static_dependencies/ethers/hash/solidity.js +6 -0
  755. package/js/src/static_dependencies/ethers/hash/typed-data.js +6 -0
  756. package/js/src/static_dependencies/ethers/index.js +6 -0
  757. package/js/src/static_dependencies/ethers/interface.js +6 -0
  758. package/js/src/static_dependencies/ethers/typed.js +6 -0
  759. package/js/src/static_dependencies/ethers/utils/base58.js +6 -0
  760. package/js/src/static_dependencies/ethers/utils/base64-browser.js +6 -0
  761. package/js/src/static_dependencies/ethers/utils/base64.js +6 -0
  762. package/js/src/static_dependencies/ethers/utils/data.js +6 -0
  763. package/js/src/static_dependencies/ethers/utils/errors.js +6 -0
  764. package/js/src/static_dependencies/ethers/utils/events.js +6 -0
  765. package/js/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
  766. package/js/src/static_dependencies/ethers/utils/index.js +6 -0
  767. package/js/src/static_dependencies/ethers/utils/maths.js +6 -0
  768. package/js/src/static_dependencies/ethers/utils/properties.js +6 -0
  769. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +6 -0
  770. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +6 -0
  771. package/js/src/static_dependencies/ethers/utils/rlp.js +6 -0
  772. package/js/src/static_dependencies/ethers/utils/units.js +6 -0
  773. package/js/src/static_dependencies/ethers/utils/utf8.js +6 -0
  774. package/js/src/static_dependencies/ethers/utils/uuid.js +6 -0
  775. package/js/src/static_dependencies/fflake/browser.js +6 -0
  776. package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +6 -0
  777. package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +6 -0
  778. package/js/src/static_dependencies/jsencrypt/index.js +6 -0
  779. package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +6 -0
  780. package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
  781. package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
  782. package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
  783. package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +6 -0
  784. package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +6 -0
  785. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +6 -0
  786. package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
  787. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +6 -0
  788. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +6 -0
  789. package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
  790. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +6 -0
  791. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
  792. package/js/src/static_dependencies/messagepack/msgpack.js +6 -0
  793. package/js/src/static_dependencies/noble-curves/_shortw_utils.js +6 -0
  794. package/js/src/static_dependencies/noble-curves/abstract/curve.js +6 -0
  795. package/js/src/static_dependencies/noble-curves/abstract/edwards.js +6 -0
  796. package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +6 -0
  797. package/js/src/static_dependencies/noble-curves/abstract/modular.js +6 -0
  798. package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +6 -0
  799. package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +6 -0
  800. package/js/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
  801. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +6 -0
  802. package/js/src/static_dependencies/noble-curves/bn.js +6 -0
  803. package/js/src/static_dependencies/noble-curves/ed25519.js +6 -0
  804. package/js/src/static_dependencies/noble-curves/ed448.js +6 -0
  805. package/js/src/static_dependencies/noble-curves/index.js +6 -0
  806. package/js/src/static_dependencies/noble-curves/jubjub.js +6 -0
  807. package/js/src/static_dependencies/noble-curves/p256.js +6 -0
  808. package/js/src/static_dependencies/noble-curves/p384.js +6 -0
  809. package/js/src/static_dependencies/noble-curves/p521.js +6 -0
  810. package/js/src/static_dependencies/noble-curves/pasta.js +6 -0
  811. package/js/src/static_dependencies/noble-curves/secp256k1.js +6 -0
  812. package/js/src/static_dependencies/noble-hashes/_assert.js +6 -0
  813. package/js/src/static_dependencies/noble-hashes/_blake2.js +6 -0
  814. package/js/src/static_dependencies/noble-hashes/_sha2.js +6 -0
  815. package/js/src/static_dependencies/noble-hashes/_u64.js +6 -0
  816. package/js/src/static_dependencies/noble-hashes/argon2.js +6 -0
  817. package/js/src/static_dependencies/noble-hashes/blake2b.js +6 -0
  818. package/js/src/static_dependencies/noble-hashes/blake2s.js +6 -0
  819. package/js/src/static_dependencies/noble-hashes/blake3.js +6 -0
  820. package/js/src/static_dependencies/noble-hashes/crypto.js +6 -0
  821. package/js/src/static_dependencies/noble-hashes/cryptoNode.js +6 -0
  822. package/js/src/static_dependencies/noble-hashes/eskdf.js +6 -0
  823. package/js/src/static_dependencies/noble-hashes/hkdf.js +6 -0
  824. package/js/src/static_dependencies/noble-hashes/hmac.js +6 -0
  825. package/js/src/static_dependencies/noble-hashes/index.js +6 -0
  826. package/js/src/static_dependencies/noble-hashes/md5.js +6 -0
  827. package/js/src/static_dependencies/noble-hashes/pbkdf2.js +6 -0
  828. package/js/src/static_dependencies/noble-hashes/ripemd160.js +6 -0
  829. package/js/src/static_dependencies/noble-hashes/scrypt.js +6 -0
  830. package/js/src/static_dependencies/noble-hashes/sha1.js +6 -0
  831. package/js/src/static_dependencies/noble-hashes/sha256.js +6 -0
  832. package/js/src/static_dependencies/noble-hashes/sha3-addons.js +6 -0
  833. package/js/src/static_dependencies/noble-hashes/sha3.js +6 -0
  834. package/js/src/static_dependencies/noble-hashes/sha512.js +6 -0
  835. package/js/src/static_dependencies/noble-hashes/utils.js +6 -0
  836. package/js/src/static_dependencies/node-fetch/body.js +6 -0
  837. package/js/src/static_dependencies/node-fetch/errors/abort-error.js +6 -0
  838. package/js/src/static_dependencies/node-fetch/errors/base.js +6 -0
  839. package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +6 -0
  840. package/js/src/static_dependencies/node-fetch/headers.js +6 -0
  841. package/js/src/static_dependencies/node-fetch/index.js +6 -0
  842. package/js/src/static_dependencies/node-fetch/request.js +6 -0
  843. package/js/src/static_dependencies/node-fetch/response.js +6 -0
  844. package/js/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
  845. package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
  846. package/js/src/static_dependencies/node-fetch/utils/is.js +6 -0
  847. package/js/src/static_dependencies/node-fetch/utils/referrer.js +6 -0
  848. package/js/src/static_dependencies/proxies/agent-base/helpers.js +6 -0
  849. package/js/src/static_dependencies/proxies/agent-base/index.js +6 -0
  850. package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +6 -0
  851. package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +6 -0
  852. package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
  853. package/js/src/static_dependencies/qs/formats.cjs +6 -0
  854. package/js/src/static_dependencies/qs/index.cjs +6 -0
  855. package/js/src/static_dependencies/qs/parse.cjs +6 -0
  856. package/js/src/static_dependencies/qs/stringify.cjs +6 -0
  857. package/js/src/static_dependencies/qs/utils.cjs +6 -0
  858. package/js/src/static_dependencies/scure-base/index.js +6 -0
  859. package/js/src/static_dependencies/scure-starknet/index.js +6 -0
  860. package/js/src/static_dependencies/starknet/constants.js +6 -0
  861. package/js/src/static_dependencies/starknet/index.js +6 -0
  862. package/js/src/static_dependencies/starknet/types/cairoEnum.js +6 -0
  863. package/js/src/static_dependencies/starknet/types/calldata.js +6 -0
  864. package/js/src/static_dependencies/starknet/types/index.js +6 -0
  865. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
  866. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
  867. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +6 -0
  868. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +6 -0
  869. package/js/src/static_dependencies/starknet/types/lib/index.js +6 -0
  870. package/js/src/static_dependencies/starknet/types/typedData.js +6 -0
  871. package/js/src/static_dependencies/starknet/utils/address.js +6 -0
  872. package/js/src/static_dependencies/starknet/utils/assert.js +6 -0
  873. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +6 -0
  874. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +6 -0
  875. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +6 -0
  876. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +6 -0
  877. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +6 -0
  878. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
  879. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
  880. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
  881. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +6 -0
  882. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +6 -0
  883. package/js/src/static_dependencies/starknet/utils/calldata/index.js +6 -0
  884. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +6 -0
  885. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +6 -0
  886. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +6 -0
  887. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
  888. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +6 -0
  889. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +6 -0
  890. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +6 -0
  891. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +6 -0
  892. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +6 -0
  893. package/js/src/static_dependencies/starknet/utils/encode.js +6 -0
  894. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +6 -0
  895. package/js/src/static_dependencies/starknet/utils/hash/index.js +6 -0
  896. package/js/src/static_dependencies/starknet/utils/merkle.js +6 -0
  897. package/js/src/static_dependencies/starknet/utils/num.js +6 -0
  898. package/js/src/static_dependencies/starknet/utils/selector.js +6 -0
  899. package/js/src/static_dependencies/starknet/utils/shortString.js +6 -0
  900. package/js/src/static_dependencies/starknet/utils/starknetId.js +6 -0
  901. package/js/src/static_dependencies/starknet/utils/typedData.js +6 -0
  902. package/js/src/static_dependencies/starknet/utils/uint256.js +6 -0
  903. package/js/src/static_dependencies/starknet/utils/url.js +6 -0
  904. package/js/src/static_dependencies/watchable/src/index.js +6 -0
  905. package/js/src/static_dependencies/watchable/src/types.js +6 -0
  906. package/js/src/static_dependencies/watchable/src/unpromise.js +6 -0
  907. package/js/src/timex.js +6 -0
  908. package/js/src/tokocrypto.js +6 -0
  909. package/js/src/tradeogre.js +6 -0
  910. package/js/src/upbit.js +6 -0
  911. package/js/src/vertex.js +6 -0
  912. package/js/src/wavesexchange.js +6 -0
  913. package/js/src/whitebit.d.ts +36 -1
  914. package/js/src/whitebit.js +103 -1
  915. package/js/src/woo.js +9 -1
  916. package/js/src/woofipro.js +7 -1
  917. package/js/src/xt.js +6 -0
  918. package/js/src/yobit.d.ts +1 -6
  919. package/js/src/yobit.js +7 -0
  920. package/js/src/zaif.js +6 -0
  921. package/js/src/zonda.js +6 -0
  922. package/package.json +1 -1
  923. package/js/src/bitfinex1.d.ts +0 -297
  924. package/js/src/bitfinex1.js +0 -1764
  925. package/js/src/pro/bitfinex1.d.ts +0 -67
  926. package/js/src/pro/bitfinex1.js +0 -670
  927. package/js/src/pro/bitfinex2.d.ts +0 -99
  928. package/js/src/pro/bitfinex2.js +0 -1165
@@ -1,1764 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- import Exchange from './abstract/bitfinex1.js';
3
- import { NotSupported, RateLimitExceeded, AuthenticationError, PermissionDenied, ArgumentsRequired, ExchangeError, ExchangeNotAvailable, InsufficientFunds, InvalidOrder, OrderNotFound, InvalidNonce, BadSymbol } from './base/errors.js';
4
- import { Precise } from './base/Precise.js';
5
- import { SIGNIFICANT_DIGITS, DECIMAL_PLACES, TRUNCATE, ROUND } from './base/functions/number.js';
6
- import { sha384 } from './static_dependencies/noble-hashes/sha512.js';
7
- // ---------------------------------------------------------------------------
8
- /**
9
- * @class bitfinex1
10
- * @augments Exchange
11
- */
12
- export default class bitfinex1 extends Exchange {
13
- describe() {
14
- return this.deepExtend(super.describe(), {
15
- 'id': 'bitfinex1',
16
- 'name': 'Bitfinex',
17
- 'countries': ['VG'],
18
- 'version': 'v1',
19
- // cheapest is 90 requests a minute = 1.5 requests per second on average => ( 1000ms / 1.5) = 666.666 ms between requests on average
20
- 'rateLimit': 666.666,
21
- 'pro': true,
22
- // new metainfo interface
23
- 'has': {
24
- 'CORS': undefined,
25
- 'spot': true,
26
- 'margin': undefined,
27
- 'swap': undefined,
28
- 'future': undefined,
29
- 'option': undefined,
30
- 'cancelAllOrders': true,
31
- 'cancelOrder': true,
32
- 'createDepositAddress': true,
33
- 'createOrder': true,
34
- 'editOrder': true,
35
- 'fetchBalance': true,
36
- 'fetchClosedOrders': true,
37
- 'fetchDepositAddress': true,
38
- 'fetchDepositAddresses': false,
39
- 'fetchDepositAddressesByNetwork': false,
40
- 'fetchDeposits': false,
41
- 'fetchDepositsWithdrawals': true,
42
- 'fetchDepositWithdrawFee': 'emulated',
43
- 'fetchDepositWithdrawFees': true,
44
- 'fetchFundingHistory': false,
45
- 'fetchFundingRate': false,
46
- 'fetchFundingRateHistory': false,
47
- 'fetchFundingRates': false,
48
- 'fetchIndexOHLCV': false,
49
- 'fetchLeverageTiers': false,
50
- 'fetchMarginMode': false,
51
- 'fetchMarkets': true,
52
- 'fetchMarkOHLCV': false,
53
- 'fetchMyTrades': true,
54
- 'fetchOHLCV': true,
55
- 'fetchOpenOrders': true,
56
- 'fetchOrder': true,
57
- 'fetchOrderBook': true,
58
- 'fetchPositionMode': false,
59
- 'fetchPositions': true,
60
- 'fetchPremiumIndexOHLCV': false,
61
- 'fetchTicker': true,
62
- 'fetchTickers': true,
63
- 'fetchTime': false,
64
- 'fetchTrades': true,
65
- 'fetchTradingFee': false,
66
- 'fetchTradingFees': true,
67
- 'fetchTransactionFees': true,
68
- 'fetchTransactions': 'emulated',
69
- 'transfer': true,
70
- 'withdraw': true,
71
- },
72
- 'timeframes': {
73
- '1m': '1m',
74
- '5m': '5m',
75
- '15m': '15m',
76
- '30m': '30m',
77
- '1h': '1h',
78
- '3h': '3h',
79
- '4h': '4h',
80
- '6h': '6h',
81
- '12h': '12h',
82
- '1d': '1D',
83
- '1w': '7D',
84
- '2w': '14D',
85
- '1M': '1M',
86
- },
87
- 'urls': {
88
- 'logo': 'https://github.com/user-attachments/assets/9147c6c5-7197-481e-827b-7483672bb0e9',
89
- 'api': {
90
- 'v2': 'https://api-pub.bitfinex.com',
91
- 'public': 'https://api.bitfinex.com',
92
- 'private': 'https://api.bitfinex.com',
93
- },
94
- 'www': 'https://www.bitfinex.com',
95
- 'referral': 'https://www.bitfinex.com/?refcode=P61eYxFL',
96
- 'doc': [
97
- 'https://docs.bitfinex.com/v1/docs',
98
- 'https://github.com/bitfinexcom/bitfinex-api-node',
99
- ],
100
- },
101
- 'api': {
102
- // v2 symbol ids require a 't' prefix
103
- // just the public part of it (use bitfinex2 for everything else)
104
- 'v2': {
105
- 'get': {
106
- 'platform/status': 3,
107
- 'tickers': 1,
108
- 'ticker/{symbol}': 1,
109
- 'tickers/hist': 1,
110
- 'trades/{symbol}/hist': 1,
111
- 'book/{symbol}/{precision}': 0.375,
112
- 'book/{symbol}/P0': 0.375,
113
- 'book/{symbol}/P1': 0.375,
114
- 'book/{symbol}/P2': 0.375,
115
- 'book/{symbol}/P3': 0.375,
116
- 'book/{symbol}/R0': 0.375,
117
- 'stats1/{key}:{size}:{symbol}:{side}/{section}': 1,
118
- 'stats1/{key}:{size}:{symbol}/{section}': 1,
119
- 'stats1/{key}:{size}:{symbol}:long/last': 1,
120
- 'stats1/{key}:{size}:{symbol}:long/hist': 1,
121
- 'stats1/{key}:{size}:{symbol}:short/last': 1,
122
- 'stats1/{key}:{size}:{symbol}:short/hist': 1,
123
- 'candles/trade:{timeframe}:{symbol}/{section}': 1,
124
- 'candles/trade:{timeframe}:{symbol}/last': 1,
125
- 'candles/trade:{timeframe}:{symbol}/hist': 1,
126
- },
127
- },
128
- 'public': {
129
- 'get': {
130
- 'book/{symbol}': 1,
131
- // 'candles/{symbol}':0,
132
- 'lendbook/{currency}': 6,
133
- 'lends/{currency}': 3,
134
- 'pubticker/{symbol}': 3,
135
- 'stats/{symbol}': 6,
136
- 'symbols': 18,
137
- 'symbols_details': 18,
138
- 'tickers': 1,
139
- 'trades/{symbol}': 3, // 60 requests a minute = 1 request per second => (1000ms / rateLimit) / 1 = 1.5 ... but only works if set to 3
140
- },
141
- },
142
- 'private': {
143
- 'post': {
144
- 'account_fees': 18,
145
- 'account_infos': 6,
146
- 'balances': 9.036,
147
- 'basket_manage': 6,
148
- 'credits': 6,
149
- 'deposit/new': 18,
150
- 'funding/close': 6,
151
- 'history': 6,
152
- 'history/movements': 6,
153
- 'key_info': 6,
154
- 'margin_infos': 3,
155
- 'mytrades': 3,
156
- 'mytrades_funding': 6,
157
- 'offer/cancel': 6,
158
- 'offer/new': 6,
159
- 'offer/status': 6,
160
- 'offers': 6,
161
- 'offers/hist': 90.03,
162
- 'order/cancel': 0.2,
163
- 'order/cancel/all': 0.2,
164
- 'order/cancel/multi': 0.2,
165
- 'order/cancel/replace': 0.2,
166
- 'order/new': 0.2,
167
- 'order/new/multi': 0.2,
168
- 'order/status': 0.2,
169
- 'orders': 0.2,
170
- 'orders/hist': 90.03,
171
- 'position/claim': 18,
172
- 'position/close': 18,
173
- 'positions': 18,
174
- 'summary': 18,
175
- 'taken_funds': 6,
176
- 'total_taken_funds': 6,
177
- 'transfer': 18,
178
- 'unused_taken_funds': 6,
179
- 'withdraw': 18,
180
- },
181
- },
182
- },
183
- 'fees': {
184
- 'trading': {
185
- 'feeSide': 'get',
186
- 'tierBased': true,
187
- 'percentage': true,
188
- 'maker': this.parseNumber('0.001'),
189
- 'taker': this.parseNumber('0.002'),
190
- 'tiers': {
191
- 'taker': [
192
- [this.parseNumber('0'), this.parseNumber('0.002')],
193
- [this.parseNumber('500000'), this.parseNumber('0.002')],
194
- [this.parseNumber('1000000'), this.parseNumber('0.002')],
195
- [this.parseNumber('2500000'), this.parseNumber('0.002')],
196
- [this.parseNumber('5000000'), this.parseNumber('0.002')],
197
- [this.parseNumber('7500000'), this.parseNumber('0.002')],
198
- [this.parseNumber('10000000'), this.parseNumber('0.0018')],
199
- [this.parseNumber('15000000'), this.parseNumber('0.0016')],
200
- [this.parseNumber('20000000'), this.parseNumber('0.0014')],
201
- [this.parseNumber('25000000'), this.parseNumber('0.0012')],
202
- [this.parseNumber('30000000'), this.parseNumber('0.001')],
203
- ],
204
- 'maker': [
205
- [this.parseNumber('0'), this.parseNumber('0.001')],
206
- [this.parseNumber('500000'), this.parseNumber('0.0008')],
207
- [this.parseNumber('1000000'), this.parseNumber('0.0006')],
208
- [this.parseNumber('2500000'), this.parseNumber('0.0004')],
209
- [this.parseNumber('5000000'), this.parseNumber('0.0002')],
210
- [this.parseNumber('7500000'), this.parseNumber('0')],
211
- [this.parseNumber('10000000'), this.parseNumber('0')],
212
- [this.parseNumber('15000000'), this.parseNumber('0')],
213
- [this.parseNumber('20000000'), this.parseNumber('0')],
214
- [this.parseNumber('25000000'), this.parseNumber('0')],
215
- [this.parseNumber('30000000'), this.parseNumber('0')],
216
- ],
217
- },
218
- },
219
- 'funding': {
220
- 'tierBased': false,
221
- 'percentage': false,
222
- // Actually deposit fees are free for larger deposits (> $1000 USD equivalent)
223
- // these values below are deprecated, we should not hardcode fees and limits anymore
224
- // to be reimplemented with bitfinex funding fees from their API or web endpoints
225
- 'deposit': {},
226
- 'withdraw': {},
227
- },
228
- },
229
- // todo rewrite for https://api-pub.bitfinex.com//v2/conf/pub:map:tx:method
230
- 'commonCurrencies': {
231
- 'ALG': 'ALGO',
232
- 'AMP': 'AMPL',
233
- 'ATO': 'ATOM',
234
- 'BCHABC': 'XEC',
235
- 'BCHN': 'BCH',
236
- 'DAT': 'DATA',
237
- 'DOG': 'MDOGE',
238
- 'DSH': 'DASH',
239
- // https://github.com/ccxt/ccxt/issues/7399
240
- // https://coinmarketcap.com/currencies/pnetwork/
241
- // https://en.cryptonomist.ch/blog/eidoo/the-edo-to-pnt-upgrade-what-you-need-to-know-updated/
242
- 'EDO': 'PNT',
243
- 'EUS': 'EURS',
244
- 'EUT': 'EURT',
245
- 'IDX': 'ID',
246
- 'IOT': 'IOTA',
247
- 'IQX': 'IQ',
248
- 'LUNA': 'LUNC',
249
- 'LUNA2': 'LUNA',
250
- 'MNA': 'MANA',
251
- 'ORS': 'ORS Group',
252
- 'PAS': 'PASS',
253
- 'QSH': 'QASH',
254
- 'QTM': 'QTUM',
255
- 'RBT': 'RBTC',
256
- 'SNG': 'SNGLS',
257
- 'STJ': 'STORJ',
258
- 'TERRAUST': 'USTC',
259
- 'TSD': 'TUSD',
260
- 'YGG': 'YEED',
261
- 'YYW': 'YOYOW',
262
- 'UDC': 'USDC',
263
- 'UST': 'USDT',
264
- 'VSY': 'VSYS',
265
- 'WAX': 'WAXP',
266
- 'XCH': 'XCHF',
267
- 'ZBT': 'ZB',
268
- },
269
- 'exceptions': {
270
- 'exact': {
271
- 'temporarily_unavailable': ExchangeNotAvailable,
272
- 'Order could not be cancelled.': OrderNotFound,
273
- 'No such order found.': OrderNotFound,
274
- 'Order price must be positive.': InvalidOrder,
275
- 'Could not find a key matching the given X-BFX-APIKEY.': AuthenticationError,
276
- 'Key price should be a decimal number, e.g. "123.456"': InvalidOrder,
277
- 'Key amount should be a decimal number, e.g. "123.456"': InvalidOrder,
278
- 'ERR_RATE_LIMIT': RateLimitExceeded,
279
- 'Ratelimit': RateLimitExceeded,
280
- 'Nonce is too small.': InvalidNonce,
281
- 'No summary found.': ExchangeError,
282
- 'Cannot evaluate your available balance, please try again': ExchangeNotAvailable,
283
- 'Unknown symbol': BadSymbol,
284
- 'Cannot complete transfer. Exchange balance insufficient.': InsufficientFunds,
285
- 'Momentary balance check. Please wait few seconds and try the transfer again.': ExchangeError,
286
- },
287
- 'broad': {
288
- 'Invalid X-BFX-SIGNATURE': AuthenticationError,
289
- 'This API key does not have permission': PermissionDenied,
290
- 'not enough exchange balance for ': InsufficientFunds,
291
- 'minimum size for ': InvalidOrder,
292
- 'Invalid order': InvalidOrder,
293
- 'The available balance is only': InsufficientFunds, // {"status":"error","message":"Cannot withdraw 1.0027 ETH from your exchange wallet. The available balance is only 0.0 ETH. If you have limit orders, open positions, unused or active margin funding, this will decrease your available balance. To increase it, you can cancel limit orders or reduce/close your positions.","withdrawal_id":0,"fees":"0.0027"}
294
- },
295
- },
296
- 'precisionMode': SIGNIFICANT_DIGITS,
297
- 'options': {
298
- 'currencyNames': {
299
- 'AGI': 'agi',
300
- 'AID': 'aid',
301
- 'AIO': 'aio',
302
- 'ANT': 'ant',
303
- 'AVT': 'aventus',
304
- 'BAT': 'bat',
305
- // https://github.com/ccxt/ccxt/issues/5833
306
- 'BCH': 'bab',
307
- // 'BCH': 'bcash', // undocumented
308
- 'BCI': 'bci',
309
- 'BFT': 'bft',
310
- 'BSV': 'bsv',
311
- 'BTC': 'bitcoin',
312
- 'BTG': 'bgold',
313
- 'CFI': 'cfi',
314
- 'COMP': 'comp',
315
- 'DAI': 'dai',
316
- 'DADI': 'dad',
317
- 'DASH': 'dash',
318
- 'DATA': 'datacoin',
319
- 'DTH': 'dth',
320
- 'EDO': 'eidoo',
321
- 'ELF': 'elf',
322
- 'EOS': 'eos',
323
- 'ETC': 'ethereumc',
324
- 'ETH': 'ethereum',
325
- 'ETP': 'metaverse',
326
- 'FUN': 'fun',
327
- 'GNT': 'golem',
328
- 'IOST': 'ios',
329
- 'IOTA': 'iota',
330
- // https://github.com/ccxt/ccxt/issues/5833
331
- 'LEO': 'let',
332
- // 'LEO': 'les', // EOS chain
333
- 'LINK': 'link',
334
- 'LRC': 'lrc',
335
- 'LTC': 'litecoin',
336
- 'LYM': 'lym',
337
- 'MANA': 'mna',
338
- 'MIT': 'mit',
339
- 'MKR': 'mkr',
340
- 'MTN': 'mtn',
341
- 'NEO': 'neo',
342
- 'ODE': 'ode',
343
- 'OMG': 'omisego',
344
- 'OMNI': 'mastercoin',
345
- 'QASH': 'qash',
346
- 'QTUM': 'qtum',
347
- 'RCN': 'rcn',
348
- 'RDN': 'rdn',
349
- 'REP': 'rep',
350
- 'REQ': 'req',
351
- 'RLC': 'rlc',
352
- 'SAN': 'santiment',
353
- 'SNGLS': 'sng',
354
- 'SNT': 'status',
355
- 'SPANK': 'spk',
356
- 'STORJ': 'stj',
357
- 'TNB': 'tnb',
358
- 'TRX': 'trx',
359
- 'TUSD': 'tsd',
360
- 'USD': 'wire',
361
- 'USDC': 'udc',
362
- 'UTK': 'utk',
363
- 'USDT': 'tetheruso',
364
- // 'USDT': 'tetheruse', // Tether on ERC20
365
- // 'USDT': 'tetherusl', // Tether on Liquid
366
- // 'USDT': 'tetherusx', // Tether on Tron
367
- // 'USDT': 'tetheruss', // Tether on EOS
368
- 'VEE': 'vee',
369
- 'WAX': 'wax',
370
- 'XLM': 'xlm',
371
- 'XMR': 'monero',
372
- 'XRP': 'ripple',
373
- 'XVG': 'xvg',
374
- 'YOYOW': 'yoyow',
375
- 'ZEC': 'zcash',
376
- 'ZRX': 'zrx',
377
- 'XTZ': 'xtz',
378
- },
379
- 'orderTypes': {
380
- 'limit': 'exchange limit',
381
- 'market': 'exchange market',
382
- },
383
- 'fiat': {
384
- 'USD': 'USD',
385
- 'EUR': 'EUR',
386
- 'JPY': 'JPY',
387
- 'GBP': 'GBP',
388
- 'CNH': 'CNH',
389
- },
390
- 'accountsByType': {
391
- 'spot': 'exchange',
392
- 'margin': 'trading',
393
- 'funding': 'deposit',
394
- 'swap': 'trading',
395
- },
396
- },
397
- });
398
- }
399
- /**
400
- * @method
401
- * @name bitfinex1#fetchTransactionFees
402
- * @deprecated
403
- * @description please use fetchDepositWithdrawFees instead
404
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-fees
405
- * @param {string[]|undefined} codes list of unified currency codes
406
- * @param {object} [params] extra parameters specific to the exchange API endpoint
407
- * @returns {object[]} a list of [fees structures]{@link https://docs.ccxt.com/#/?id=fee-structure}
408
- */
409
- async fetchTransactionFees(codes = undefined, params = {}) {
410
- await this.loadMarkets();
411
- const result = {};
412
- const response = await this.privatePostAccountFees(params);
413
- //
414
- // {
415
- // "withdraw": {
416
- // "BTC": "0.0004",
417
- // }
418
- // }
419
- //
420
- const fees = this.safeDict(response, 'withdraw', {});
421
- const ids = Object.keys(fees);
422
- for (let i = 0; i < ids.length; i++) {
423
- const id = ids[i];
424
- const code = this.safeCurrencyCode(id);
425
- if ((codes !== undefined) && !this.inArray(code, codes)) {
426
- continue;
427
- }
428
- result[code] = {
429
- 'withdraw': this.safeNumber(fees, id),
430
- 'deposit': {},
431
- 'info': this.safeNumber(fees, id),
432
- };
433
- }
434
- return result;
435
- }
436
- /**
437
- * @method
438
- * @name bitfinex1#fetchDepositWithdrawFees
439
- * @description fetch deposit and withdraw fees
440
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-fees
441
- * @param {string[]|undefined} codes list of unified currency codes
442
- * @param {object} [params] extra parameters specific to the exchange API endpoint
443
- * @returns {object[]} a list of [fees structures]{@link https://docs.ccxt.com/#/?id=fee-structure}
444
- */
445
- async fetchDepositWithdrawFees(codes = undefined, params = {}) {
446
- await this.loadMarkets();
447
- const response = await this.privatePostAccountFees(params);
448
- //
449
- // {
450
- // "withdraw": {
451
- // "BTC": "0.0004",
452
- // ...
453
- // }
454
- // }
455
- //
456
- const withdraw = this.safeList(response, 'withdraw');
457
- return this.parseDepositWithdrawFees(withdraw, codes);
458
- }
459
- parseDepositWithdrawFee(fee, currency = undefined) {
460
- //
461
- // '0.0004'
462
- //
463
- return {
464
- 'withdraw': {
465
- 'fee': this.parseNumber(fee),
466
- 'percentage': undefined,
467
- },
468
- 'deposit': {
469
- 'fee': undefined,
470
- 'percentage': undefined,
471
- },
472
- 'networks': {},
473
- 'info': fee,
474
- };
475
- }
476
- /**
477
- * @method
478
- * @name bitfinex1#fetchTradingFees
479
- * @description fetch the trading fees for multiple markets
480
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-summary
481
- * @param {object} [params] extra parameters specific to the exchange API endpoint
482
- * @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
483
- */
484
- async fetchTradingFees(params = {}) {
485
- await this.loadMarkets();
486
- const response = await this.privatePostSummary(params);
487
- //
488
- // {
489
- // "time": "2022-02-23T16:05:47.659000Z",
490
- // "status": { resid_hint: null, login_last: "2022-02-23T16:05:48Z" },
491
- // "is_locked": false,
492
- // "leo_lev": "0",
493
- // "leo_amount_avg": "0.0",
494
- // "trade_vol_30d": [
495
- // {
496
- // "curr": "Total (USD)",
497
- // "vol": "0.0",
498
- // "vol_safe": "0.0",
499
- // "vol_maker": "0.0",
500
- // "vol_BFX": "0.0",
501
- // "vol_BFX_safe": "0.0",
502
- // "vol_BFX_maker": "0.0"
503
- // }
504
- // ],
505
- // "fees_funding_30d": {},
506
- // "fees_funding_total_30d": "0",
507
- // "fees_trading_30d": {},
508
- // "fees_trading_total_30d": "0",
509
- // "rebates_trading_30d": {},
510
- // "rebates_trading_total_30d": "0",
511
- // "maker_fee": "0.001",
512
- // "taker_fee": "0.002",
513
- // "maker_fee_2crypto": "0.001",
514
- // "maker_fee_2stablecoin": "0.001",
515
- // "maker_fee_2fiat": "0.001",
516
- // "maker_fee_2deriv": "0.0002",
517
- // "taker_fee_2crypto": "0.002",
518
- // "taker_fee_2stablecoin": "0.002",
519
- // "taker_fee_2fiat": "0.002",
520
- // "taker_fee_2deriv": "0.00065",
521
- // "deriv_maker_rebate": "0.0002",
522
- // "deriv_taker_fee": "0.00065",
523
- // "trade_last": null
524
- // }
525
- //
526
- const result = {};
527
- const fiat = this.safeDict(this.options, 'fiat', {});
528
- const makerFee = this.safeNumber(response, 'maker_fee');
529
- const takerFee = this.safeNumber(response, 'taker_fee');
530
- const makerFee2Fiat = this.safeNumber(response, 'maker_fee_2fiat');
531
- const takerFee2Fiat = this.safeNumber(response, 'taker_fee_2fiat');
532
- const makerFee2Deriv = this.safeNumber(response, 'maker_fee_2deriv');
533
- const takerFee2Deriv = this.safeNumber(response, 'taker_fee_2deriv');
534
- for (let i = 0; i < this.symbols.length; i++) {
535
- const symbol = this.symbols[i];
536
- const market = this.market(symbol);
537
- const fee = {
538
- 'info': response,
539
- 'symbol': symbol,
540
- 'percentage': true,
541
- 'tierBased': true,
542
- };
543
- if (market['quote'] in fiat) {
544
- fee['maker'] = makerFee2Fiat;
545
- fee['taker'] = takerFee2Fiat;
546
- }
547
- else if (market['contract']) {
548
- fee['maker'] = makerFee2Deriv;
549
- fee['taker'] = takerFee2Deriv;
550
- }
551
- else {
552
- fee['maker'] = makerFee;
553
- fee['taker'] = takerFee;
554
- }
555
- result[symbol] = fee;
556
- }
557
- return result;
558
- }
559
- /**
560
- * @method
561
- * @name bitfinex1#fetchMarkets
562
- * @description retrieves data on all markets for bitfinex
563
- * @see https://docs.bitfinex.com/v1/reference/rest-public-symbols
564
- * @see https://docs.bitfinex.com/v1/reference/rest-public-symbol-details
565
- * @param {object} [params] extra parameters specific to the exchange API endpoint
566
- * @returns {object[]} an array of objects representing market data
567
- */
568
- async fetchMarkets(params = {}) {
569
- const idsPromise = this.publicGetSymbols();
570
- //
571
- // [ "btcusd", "ltcusd", "ltcbtc" ]
572
- //
573
- const detailsPromise = this.publicGetSymbolsDetails();
574
- //
575
- // [
576
- // {
577
- // "pair":"btcusd",
578
- // "price_precision":5,
579
- // "initial_margin":"10.0",
580
- // "minimum_margin":"5.0",
581
- // "maximum_order_size":"2000.0",
582
- // "minimum_order_size":"0.0002",
583
- // "expiration":"NA",
584
- // "margin":true
585
- // },
586
- // ]
587
- //
588
- const [ids, details] = await Promise.all([idsPromise, detailsPromise]);
589
- const result = [];
590
- for (let i = 0; i < details.length; i++) {
591
- const market = details[i];
592
- let id = this.safeString(market, 'pair');
593
- if (!this.inArray(id, ids)) {
594
- continue;
595
- }
596
- id = id.toUpperCase();
597
- let baseId = undefined;
598
- let quoteId = undefined;
599
- if (id.indexOf(':') >= 0) {
600
- const parts = id.split(':');
601
- baseId = parts[0];
602
- quoteId = parts[1];
603
- }
604
- else {
605
- baseId = id.slice(0, 3);
606
- quoteId = id.slice(3, 6);
607
- }
608
- const base = this.safeCurrencyCode(baseId);
609
- const quote = this.safeCurrencyCode(quoteId);
610
- const symbol = base + '/' + quote;
611
- let type = 'spot';
612
- if (id.indexOf('F0') > -1) {
613
- type = 'swap';
614
- }
615
- result.push({
616
- 'id': id,
617
- 'symbol': symbol,
618
- 'base': base,
619
- 'quote': quote,
620
- 'settle': undefined,
621
- 'baseId': baseId,
622
- 'quoteId': quoteId,
623
- 'settleId': undefined,
624
- 'type': type,
625
- 'spot': (type === 'spot'),
626
- 'margin': this.safeBool(market, 'margin'),
627
- 'swap': (type === 'swap'),
628
- 'future': false,
629
- 'option': false,
630
- 'active': true,
631
- 'contract': (type === 'swap'),
632
- 'linear': undefined,
633
- 'inverse': undefined,
634
- 'contractSize': undefined,
635
- 'expiry': undefined,
636
- 'expiryDatetime': undefined,
637
- 'strike': undefined,
638
- 'optionType': undefined,
639
- 'precision': {
640
- // https://docs.bitfinex.com/docs/introduction#amount-precision
641
- // The amount field allows up to 8 decimals.
642
- // Anything exceeding this will be rounded to the 8th decimal.
643
- 'amount': parseInt('8'),
644
- 'price': this.safeInteger(market, 'price_precision'),
645
- },
646
- 'limits': {
647
- 'leverage': {
648
- 'min': undefined,
649
- 'max': undefined,
650
- },
651
- 'amount': {
652
- 'min': this.safeNumber(market, 'minimum_order_size'),
653
- 'max': this.safeNumber(market, 'maximum_order_size'),
654
- },
655
- 'price': {
656
- 'min': this.parseNumber('1e-8'),
657
- 'max': undefined,
658
- },
659
- 'cost': {
660
- 'min': undefined,
661
- 'max': undefined,
662
- },
663
- },
664
- 'created': undefined,
665
- 'info': market,
666
- });
667
- }
668
- return result;
669
- }
670
- amountToPrecision(symbol, amount) {
671
- // https://docs.bitfinex.com/docs/introduction#amount-precision
672
- // The amount field allows up to 8 decimals.
673
- // Anything exceeding this will be rounded to the 8th decimal.
674
- symbol = this.safeSymbol(symbol);
675
- return this.decimalToPrecision(amount, TRUNCATE, this.markets[symbol]['precision']['amount'], DECIMAL_PLACES);
676
- }
677
- priceToPrecision(symbol, price) {
678
- symbol = this.safeSymbol(symbol);
679
- price = this.decimalToPrecision(price, ROUND, this.markets[symbol]['precision']['price'], this.precisionMode);
680
- // https://docs.bitfinex.com/docs/introduction#price-precision
681
- // The precision level of all trading prices is based on significant figures.
682
- // All pairs on Bitfinex use up to 5 significant digits and up to 8 decimals (e.g. 1.2345, 123.45, 1234.5, 0.00012345).
683
- // Prices submit with a precision larger than 5 will be cut by the API.
684
- return this.decimalToPrecision(price, TRUNCATE, 8, DECIMAL_PLACES);
685
- }
686
- /**
687
- * @method
688
- * @name bitfinex1#fetchBalance
689
- * @description query for balance and get the amount of funds available for trading or funds locked in orders
690
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-wallet-balances
691
- * @param {object} [params] extra parameters specific to the exchange API endpoint
692
- * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
693
- */
694
- async fetchBalance(params = {}) {
695
- await this.loadMarkets();
696
- const accountsByType = this.safeDict(this.options, 'accountsByType', {});
697
- const requestedType = this.safeString(params, 'type', 'exchange');
698
- const accountType = this.safeString(accountsByType, requestedType, requestedType);
699
- if (accountType === undefined) {
700
- const keys = Object.keys(accountsByType);
701
- throw new ExchangeError(this.id + ' fetchBalance() type parameter must be one of ' + keys.join(', '));
702
- }
703
- const query = this.omit(params, 'type');
704
- const response = await this.privatePostBalances(query);
705
- // [ { type: "deposit",
706
- // "currency": "btc",
707
- // "amount": "0.00116721",
708
- // "available": "0.00116721" },
709
- // { type: "exchange",
710
- // "currency": "ust",
711
- // "amount": "0.0000002",
712
- // "available": "0.0000002" },
713
- // { type: "trading",
714
- // "currency": "btc",
715
- // "amount": "0.0005",
716
- // "available": "0.0005" } ],
717
- const result = { 'info': response };
718
- const isDerivative = requestedType === 'derivatives';
719
- for (let i = 0; i < response.length; i++) {
720
- const balance = response[i];
721
- const type = this.safeString(balance, 'type');
722
- const currencyId = this.safeStringLower(balance, 'currency', '');
723
- const start = currencyId.length - 2;
724
- const isDerivativeCode = currencyId.slice(start) === 'f0';
725
- // this will only filter the derivative codes if the requestedType is 'derivatives'
726
- const derivativeCondition = (!isDerivative || isDerivativeCode);
727
- if ((accountType === type) && derivativeCondition) {
728
- const code = this.safeCurrencyCode(currencyId);
729
- // bitfinex had BCH previously, now it's BAB, but the old
730
- // BCH symbol is kept for backward-compatibility
731
- // we need a workaround here so that the old BCH balance
732
- // would not override the new BAB balance (BAB is unified to BCH)
733
- // https://github.com/ccxt/ccxt/issues/4989
734
- if (!(code in result)) {
735
- const account = this.account();
736
- account['free'] = this.safeString(balance, 'available');
737
- account['total'] = this.safeString(balance, 'amount');
738
- result[code] = account;
739
- }
740
- }
741
- }
742
- return this.safeBalance(result);
743
- }
744
- /**
745
- * @method
746
- * @name bitfinex1#transfer
747
- * @description transfer currency internally between wallets on the same account
748
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-transfer-between-wallets
749
- * @param {string} code unified currency code
750
- * @param {float} amount amount to transfer
751
- * @param {string} fromAccount account to transfer from
752
- * @param {string} toAccount account to transfer to
753
- * @param {object} [params] extra parameters specific to the exchange API endpoint
754
- * @returns {object} a [transfer structure]{@link https://docs.ccxt.com/#/?id=transfer-structure}
755
- */
756
- async transfer(code, amount, fromAccount, toAccount, params = {}) {
757
- // transferring between derivatives wallet and regular wallet is not documented in their API
758
- // however we support it in CCXT (from just looking at web inspector)
759
- await this.loadMarkets();
760
- const accountsByType = this.safeDict(this.options, 'accountsByType', {});
761
- const fromId = this.safeString(accountsByType, fromAccount, fromAccount);
762
- const toId = this.safeString(accountsByType, toAccount, toAccount);
763
- const currency = this.currency(code);
764
- const fromCurrencyId = this.convertDerivativesId(currency['id'], fromAccount);
765
- const toCurrencyId = this.convertDerivativesId(currency['id'], toAccount);
766
- const requestedAmount = this.currencyToPrecision(code, amount);
767
- const request = {
768
- 'amount': requestedAmount,
769
- 'currency': fromCurrencyId,
770
- 'currency_to': toCurrencyId,
771
- 'walletfrom': fromId,
772
- 'walletto': toId,
773
- };
774
- const response = await this.privatePostTransfer(this.extend(request, params));
775
- //
776
- // [
777
- // {
778
- // "status": "success",
779
- // "message": "0.0001 Bitcoin transfered from Margin to Exchange"
780
- // }
781
- // ]
782
- //
783
- const result = this.safeValue(response, 0);
784
- const message = this.safeString(result, 'message');
785
- if (message === undefined) {
786
- throw new ExchangeError(this.id + ' transfer failed');
787
- }
788
- return this.extend(this.parseTransfer(result, currency), {
789
- 'fromAccount': fromAccount,
790
- 'toAccount': toAccount,
791
- 'amount': this.parseNumber(requestedAmount),
792
- });
793
- }
794
- parseTransfer(transfer, currency = undefined) {
795
- //
796
- // {
797
- // "status": "success",
798
- // "message": "0.0001 Bitcoin transfered from Margin to Exchange"
799
- // }
800
- //
801
- return {
802
- 'info': transfer,
803
- 'id': undefined,
804
- 'timestamp': undefined,
805
- 'datetime': undefined,
806
- 'currency': this.safeCurrencyCode(undefined, currency),
807
- 'amount': undefined,
808
- 'fromAccount': undefined,
809
- 'toAccount': undefined,
810
- 'status': this.parseTransferStatus(this.safeString(transfer, 'status')),
811
- };
812
- }
813
- parseTransferStatus(status) {
814
- const statuses = {
815
- 'SUCCESS': 'ok',
816
- };
817
- return this.safeString(statuses, status, status);
818
- }
819
- convertDerivativesId(currencyId, type) {
820
- const start = currencyId.length - 2;
821
- const isDerivativeCode = currencyId.slice(start) === 'F0';
822
- if ((type !== 'derivatives' && type !== 'trading' && type !== 'margin') && isDerivativeCode) {
823
- currencyId = currencyId.slice(0, start);
824
- }
825
- else if (type === 'derivatives' && !isDerivativeCode) {
826
- currencyId = currencyId + 'F0';
827
- }
828
- return currencyId;
829
- }
830
- /**
831
- * @method
832
- * @name bitfinex1#fetchOrderBook
833
- * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
834
- * @see https://docs.bitfinex.com/v1/reference/rest-public-orderbook
835
- * @param {string} symbol unified symbol of the market to fetch the order book for
836
- * @param {int} [limit] the maximum amount of order book entries to return
837
- * @param {object} [params] extra parameters specific to the exchange API endpoint
838
- * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
839
- */
840
- async fetchOrderBook(symbol, limit = undefined, params = {}) {
841
- await this.loadMarkets();
842
- const market = this.market(symbol);
843
- const request = {
844
- 'symbol': market['id'],
845
- };
846
- if (limit !== undefined) {
847
- request['limit_bids'] = limit;
848
- request['limit_asks'] = limit;
849
- }
850
- const response = await this.publicGetBookSymbol(this.extend(request, params));
851
- return this.parseOrderBook(response, market['symbol'], undefined, 'bids', 'asks', 'price', 'amount');
852
- }
853
- /**
854
- * @method
855
- * @name bitfinex1#fetchTickers
856
- * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
857
- * @param {string[]} [symbols] unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
858
- * @param {object} [params] extra parameters specific to the exchange API endpoint
859
- * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
860
- */
861
- async fetchTickers(symbols = undefined, params = {}) {
862
- await this.loadMarkets();
863
- symbols = this.marketSymbols(symbols);
864
- const response = await this.publicGetTickers(params);
865
- const result = {};
866
- for (let i = 0; i < response.length; i++) {
867
- const ticker = this.parseTicker(response[i]);
868
- const symbol = ticker['symbol'];
869
- result[symbol] = ticker;
870
- }
871
- return this.filterByArrayTickers(result, 'symbol', symbols);
872
- }
873
- /**
874
- * @method
875
- * @name bitfinex1#fetchTicker
876
- * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
877
- * @see https://docs.bitfinex.com/v1/reference/rest-public-ticker
878
- * @param {string} symbol unified symbol of the market to fetch the ticker for
879
- * @param {object} [params] extra parameters specific to the exchange API endpoint
880
- * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
881
- */
882
- async fetchTicker(symbol, params = {}) {
883
- await this.loadMarkets();
884
- const market = this.market(symbol);
885
- const request = {
886
- 'symbol': market['id'],
887
- };
888
- const ticker = await this.publicGetPubtickerSymbol(this.extend(request, params));
889
- //
890
- // {
891
- // mid: '63560.5',
892
- // bid: '63560.0',
893
- // ask: '63561.0',
894
- // last_price: '63547.0',
895
- // low: '62812.0',
896
- // high: '64480.0',
897
- // volume: '517.25634977',
898
- // timestamp: '1715102384.9849467'
899
- // }
900
- //
901
- return this.parseTicker(ticker, market);
902
- }
903
- parseTicker(ticker, market = undefined) {
904
- //
905
- // {
906
- // mid: '63560.5',
907
- // bid: '63560.0',
908
- // ask: '63561.0',
909
- // last_price: '63547.0',
910
- // low: '62812.0',
911
- // high: '64480.0',
912
- // volume: '517.25634977',
913
- // timestamp: '1715102384.9849467'
914
- // }
915
- //
916
- const timestamp = this.safeTimestamp(ticker, 'timestamp');
917
- const marketId = this.safeString(ticker, 'pair');
918
- market = this.safeMarket(marketId, market);
919
- const symbol = market['symbol'];
920
- const last = this.safeString(ticker, 'last_price');
921
- return this.safeTicker({
922
- 'symbol': symbol,
923
- 'timestamp': timestamp,
924
- 'datetime': this.iso8601(timestamp),
925
- 'high': this.safeString(ticker, 'high'),
926
- 'low': this.safeString(ticker, 'low'),
927
- 'bid': this.safeString(ticker, 'bid'),
928
- 'bidVolume': undefined,
929
- 'ask': this.safeString(ticker, 'ask'),
930
- 'askVolume': undefined,
931
- 'vwap': undefined,
932
- 'open': undefined,
933
- 'close': last,
934
- 'last': last,
935
- 'previousClose': undefined,
936
- 'change': undefined,
937
- 'percentage': undefined,
938
- 'average': this.safeString(ticker, 'mid'),
939
- 'baseVolume': this.safeString(ticker, 'volume'),
940
- 'quoteVolume': undefined,
941
- 'info': ticker,
942
- }, market);
943
- }
944
- parseTrade(trade, market = undefined) {
945
- //
946
- // fetchTrades (public) v1
947
- //
948
- // {
949
- // "timestamp":1637258380,
950
- // "tid":894452833,
951
- // "price":"0.99941",
952
- // "amount":"261.38",
953
- // "exchange":"bitfinex",
954
- // "type":"sell"
955
- // }
956
- //
957
- // fetchMyTrades (private) v1
958
- //
959
- // {
960
- // "price":"0.99941",
961
- // "amount":"261.38",
962
- // "timestamp":"1637258380.0",
963
- // "type":"Sell",
964
- // "fee_currency":"UST",
965
- // "fee_amount":"-0.52245157",
966
- // "tid":894452833,
967
- // "order_id":78819731373
968
- // }
969
- //
970
- // {
971
- // "price":"0.99958",
972
- // "amount":"261.90514",
973
- // "timestamp":"1637258238.0",
974
- // "type":"Buy",
975
- // "fee_currency":"UDC",
976
- // "fee_amount":"-0.52381028",
977
- // "tid":894452800,
978
- // "order_id":78819504838
979
- // }
980
- //
981
- const id = this.safeString(trade, 'tid');
982
- const timestamp = this.safeTimestamp(trade, 'timestamp');
983
- const type = undefined;
984
- const side = this.safeStringLower(trade, 'type');
985
- const orderId = this.safeString(trade, 'order_id');
986
- const priceString = this.safeString(trade, 'price');
987
- const amountString = this.safeString(trade, 'amount');
988
- let fee = undefined;
989
- if ('fee_amount' in trade) {
990
- const feeCostString = Precise.stringNeg(this.safeString(trade, 'fee_amount'));
991
- const feeCurrencyId = this.safeString(trade, 'fee_currency');
992
- const feeCurrencyCode = this.safeCurrencyCode(feeCurrencyId);
993
- fee = {
994
- 'cost': feeCostString,
995
- 'currency': feeCurrencyCode,
996
- };
997
- }
998
- return this.safeTrade({
999
- 'id': id,
1000
- 'info': trade,
1001
- 'timestamp': timestamp,
1002
- 'datetime': this.iso8601(timestamp),
1003
- 'symbol': market['symbol'],
1004
- 'type': type,
1005
- 'order': orderId,
1006
- 'side': side,
1007
- 'takerOrMaker': undefined,
1008
- 'price': priceString,
1009
- 'amount': amountString,
1010
- 'cost': undefined,
1011
- 'fee': fee,
1012
- }, market);
1013
- }
1014
- /**
1015
- * @method
1016
- * @name bitfinex1#fetchTrades
1017
- * @description get the list of most recent trades for a particular symbol
1018
- * @see https://docs.bitfinex.com/v1/reference/rest-public-trades
1019
- * @param {string} symbol unified symbol of the market to fetch trades for
1020
- * @param {int} [since] timestamp in ms of the earliest trade to fetch
1021
- * @param {int} [limit] the maximum amount of trades to fetch
1022
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1023
- * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
1024
- */
1025
- async fetchTrades(symbol, since = undefined, limit = 50, params = {}) {
1026
- await this.loadMarkets();
1027
- const market = this.market(symbol);
1028
- const request = {
1029
- 'symbol': market['id'],
1030
- 'limit_trades': limit,
1031
- };
1032
- if (since !== undefined) {
1033
- request['timestamp'] = this.parseToInt(since / 1000);
1034
- }
1035
- const response = await this.publicGetTradesSymbol(this.extend(request, params));
1036
- //
1037
- // [
1038
- // {
1039
- // "timestamp": "1694284565",
1040
- // "tid": "1415415034",
1041
- // "price": "25862.0",
1042
- // "amount": "0.00020685",
1043
- // "exchange": "bitfinex",
1044
- // "type": "buy"
1045
- // },
1046
- // ]
1047
- //
1048
- return this.parseTrades(response, market, since, limit);
1049
- }
1050
- /**
1051
- * @method
1052
- * @name bitfinex1#fetchMyTrades
1053
- * @description fetch all trades made by the user
1054
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-past-trades
1055
- * @param {string} symbol unified market symbol
1056
- * @param {int} [since] the earliest time in ms to fetch trades for
1057
- * @param {int} [limit] the maximum number of trades structures to retrieve
1058
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1059
- * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
1060
- */
1061
- async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1062
- if (symbol === undefined) {
1063
- throw new ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
1064
- }
1065
- await this.loadMarkets();
1066
- const market = this.market(symbol);
1067
- const request = {
1068
- 'symbol': market['id'],
1069
- };
1070
- if (limit !== undefined) {
1071
- request['limit_trades'] = limit;
1072
- }
1073
- if (since !== undefined) {
1074
- request['timestamp'] = this.parseToInt(since / 1000);
1075
- }
1076
- const response = await this.privatePostMytrades(this.extend(request, params));
1077
- return this.parseTrades(response, market, since, limit);
1078
- }
1079
- /**
1080
- * @method
1081
- * @name bitfinex1#createOrder
1082
- * @description create a trade order
1083
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-new-order
1084
- * @param {string} symbol unified symbol of the market to create an order in
1085
- * @param {string} type 'market' or 'limit'
1086
- * @param {string} side 'buy' or 'sell'
1087
- * @param {float} amount how much of currency you want to trade in units of base currency
1088
- * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1089
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1090
- * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1091
- */
1092
- async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1093
- await this.loadMarkets();
1094
- const market = this.market(symbol);
1095
- const postOnly = this.safeBool(params, 'postOnly', false);
1096
- type = type.toLowerCase();
1097
- params = this.omit(params, ['postOnly']);
1098
- if (market['spot']) {
1099
- // although they claim that type needs to be 'exchange limit' or 'exchange market'
1100
- // in fact that's not the case for swap markets
1101
- type = this.safeStringLower(this.options['orderTypes'], type, type);
1102
- }
1103
- const request = {
1104
- 'symbol': market['id'],
1105
- 'side': side,
1106
- 'amount': this.amountToPrecision(symbol, amount),
1107
- 'type': type,
1108
- 'ocoorder': false,
1109
- 'buy_price_oco': 0,
1110
- 'sell_price_oco': 0,
1111
- };
1112
- if (type.indexOf('market') > -1) {
1113
- request['price'] = this.nonce().toString();
1114
- }
1115
- else {
1116
- request['price'] = this.priceToPrecision(symbol, price);
1117
- }
1118
- if (postOnly) {
1119
- request['is_postonly'] = true;
1120
- }
1121
- const response = await this.privatePostOrderNew(this.extend(request, params));
1122
- return this.parseOrder(response, market);
1123
- }
1124
- async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
1125
- await this.loadMarkets();
1126
- const order = {
1127
- 'order_id': parseInt(id),
1128
- };
1129
- if (price !== undefined) {
1130
- order['price'] = this.priceToPrecision(symbol, price);
1131
- }
1132
- if (amount !== undefined) {
1133
- order['amount'] = this.numberToString(amount);
1134
- }
1135
- if (symbol !== undefined) {
1136
- order['symbol'] = this.marketId(symbol);
1137
- }
1138
- if (side !== undefined) {
1139
- order['side'] = side;
1140
- }
1141
- if (type !== undefined) {
1142
- order['type'] = this.safeString(this.options['orderTypes'], type, type);
1143
- }
1144
- const response = await this.privatePostOrderCancelReplace(this.extend(order, params));
1145
- return this.parseOrder(response);
1146
- }
1147
- /**
1148
- * @method
1149
- * @name bitfinex1#cancelOrder
1150
- * @description cancels an open order
1151
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-cancel-order
1152
- * @param {string} id order id
1153
- * @param {string} symbol not used by bitfinex cancelOrder ()
1154
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1155
- * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1156
- */
1157
- async cancelOrder(id, symbol = undefined, params = {}) {
1158
- await this.loadMarkets();
1159
- const request = {
1160
- 'order_id': parseInt(id),
1161
- };
1162
- const response = await this.privatePostOrderCancel(this.extend(request, params));
1163
- //
1164
- // {
1165
- // id: '161236928925',
1166
- // cid: '1720172026812',
1167
- // cid_date: '2024-07-05',
1168
- // gid: null,
1169
- // symbol: 'adaust',
1170
- // exchange: 'bitfinex',
1171
- // price: '0.33',
1172
- // avg_execution_price: '0.0',
1173
- // side: 'buy',
1174
- // type: 'exchange limit',
1175
- // timestamp: '1720172026.813',
1176
- // is_live: true,
1177
- // is_cancelled: false,
1178
- // is_hidden: false,
1179
- // oco_order: null,
1180
- // was_forced: false,
1181
- // original_amount: '10.0',
1182
- // remaining_amount: '10.0',
1183
- // executed_amount: '0.0',
1184
- // src: 'api',
1185
- // meta: {}
1186
- // }
1187
- //
1188
- return this.parseOrder(response);
1189
- }
1190
- /**
1191
- * @method
1192
- * @name bitfinex1#cancelAllOrders
1193
- * @description cancel all open orders
1194
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-cancel-all-orders
1195
- * @param {string} symbol not used by bitfinex cancelAllOrders
1196
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1197
- * @returns {object} response from exchange
1198
- */
1199
- async cancelAllOrders(symbol = undefined, params = {}) {
1200
- const response = await this.privatePostOrderCancelAll(params);
1201
- //
1202
- // { result: 'Submitting 1 order cancellations.' }
1203
- //
1204
- return [
1205
- this.safeOrder({
1206
- 'info': response,
1207
- }),
1208
- ];
1209
- }
1210
- parseOrder(order, market = undefined) {
1211
- //
1212
- // {
1213
- // "id": 57334010955,
1214
- // "cid": 1611584840966,
1215
- // "cid_date": null,
1216
- // "gid": null,
1217
- // "symbol": "ltcbtc",
1218
- // "exchange": null,
1219
- // "price": "0.0042125",
1220
- // "avg_execution_price": "0.0042097",
1221
- // "side": "sell",
1222
- // "type": "exchange market",
1223
- // "timestamp": "1611584841.0",
1224
- // "is_live": false,
1225
- // "is_cancelled": false,
1226
- // "is_hidden": 0,
1227
- // "oco_order": 0,
1228
- // "was_forced": false,
1229
- // "original_amount": "0.205176",
1230
- // "remaining_amount": "0.0",
1231
- // "executed_amount": "0.205176",
1232
- // "src": "web"
1233
- // }
1234
- //
1235
- const side = this.safeString(order, 'side');
1236
- const open = this.safeBool(order, 'is_live');
1237
- const canceled = this.safeBool(order, 'is_cancelled');
1238
- let status = undefined;
1239
- if (open) {
1240
- status = 'open';
1241
- }
1242
- else if (canceled) {
1243
- status = 'canceled';
1244
- }
1245
- else {
1246
- status = 'closed';
1247
- }
1248
- const marketId = this.safeStringUpper(order, 'symbol');
1249
- const symbol = this.safeSymbol(marketId, market);
1250
- let orderType = this.safeString(order, 'type', '');
1251
- const exchange = orderType.indexOf('exchange ') >= 0;
1252
- if (exchange) {
1253
- const parts = order['type'].split(' ');
1254
- orderType = parts[1];
1255
- }
1256
- const timestamp = this.safeTimestamp(order, 'timestamp');
1257
- const id = this.safeString(order, 'id');
1258
- return this.safeOrder({
1259
- 'info': order,
1260
- 'id': id,
1261
- 'clientOrderId': undefined,
1262
- 'timestamp': timestamp,
1263
- 'datetime': this.iso8601(timestamp),
1264
- 'lastTradeTimestamp': undefined,
1265
- 'symbol': symbol,
1266
- 'type': orderType,
1267
- 'timeInForce': undefined,
1268
- 'postOnly': undefined,
1269
- 'side': side,
1270
- 'price': this.safeString(order, 'price'),
1271
- 'triggerPrice': undefined,
1272
- 'average': this.safeString(order, 'avg_execution_price'),
1273
- 'amount': this.safeString(order, 'original_amount'),
1274
- 'remaining': this.safeString(order, 'remaining_amount'),
1275
- 'filled': this.safeString(order, 'executed_amount'),
1276
- 'status': status,
1277
- 'fee': undefined,
1278
- 'cost': undefined,
1279
- 'trades': undefined,
1280
- }, market);
1281
- }
1282
- /**
1283
- * @method
1284
- * @name bitfinex1#fetchOpenOrders
1285
- * @description fetch all unfilled currently open orders
1286
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-active-orders
1287
- * @param {string} symbol unified market symbol
1288
- * @param {int} [since] the earliest time in ms to fetch open orders for
1289
- * @param {int} [limit] the maximum number of open orders structures to retrieve
1290
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1291
- * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1292
- */
1293
- async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1294
- await this.loadMarkets();
1295
- if (symbol !== undefined) {
1296
- if (!(symbol in this.markets)) {
1297
- throw new ExchangeError(this.id + ' has no symbol ' + symbol);
1298
- }
1299
- }
1300
- const response = await this.privatePostOrders(params);
1301
- let orders = this.parseOrders(response, undefined, since, limit);
1302
- if (symbol !== undefined) {
1303
- orders = this.filterBy(orders, 'symbol', symbol);
1304
- }
1305
- return orders;
1306
- }
1307
- /**
1308
- * @method
1309
- * @name bitfinex1#fetchClosedOrders
1310
- * @description fetches information on multiple closed orders made by the user
1311
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-orders-history
1312
- * @param {string} symbol unified market symbol of the market orders were made in
1313
- * @param {int} [since] the earliest time in ms to fetch orders for
1314
- * @param {int} [limit] the maximum number of order structures to retrieve
1315
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1316
- * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1317
- */
1318
- async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1319
- await this.loadMarkets();
1320
- symbol = this.symbol(symbol);
1321
- const request = {};
1322
- if (limit !== undefined) {
1323
- request['limit'] = limit;
1324
- }
1325
- const response = await this.privatePostOrdersHist(this.extend(request, params));
1326
- let orders = this.parseOrders(response, undefined, since, limit);
1327
- if (symbol !== undefined) {
1328
- orders = this.filterBy(orders, 'symbol', symbol);
1329
- }
1330
- orders = this.filterByArray(orders, 'status', ['closed', 'canceled'], false);
1331
- return orders;
1332
- }
1333
- /**
1334
- * @method
1335
- * @name bitfinex1#fetchOrder
1336
- * @description fetches information on an order made by the user
1337
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-order-status
1338
- * @param {string} id the order id
1339
- * @param {string} symbol not used by bitfinex fetchOrder
1340
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1341
- * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1342
- */
1343
- async fetchOrder(id, symbol = undefined, params = {}) {
1344
- await this.loadMarkets();
1345
- const request = {
1346
- 'order_id': parseInt(id),
1347
- };
1348
- const response = await this.privatePostOrderStatus(this.extend(request, params));
1349
- return this.parseOrder(response);
1350
- }
1351
- parseOHLCV(ohlcv, market = undefined) {
1352
- //
1353
- // [
1354
- // 1457539800000,
1355
- // 0.02594,
1356
- // 0.02594,
1357
- // 0.02594,
1358
- // 0.02594,
1359
- // 0.1
1360
- // ]
1361
- //
1362
- return [
1363
- this.safeInteger(ohlcv, 0),
1364
- this.safeNumber(ohlcv, 1),
1365
- this.safeNumber(ohlcv, 3),
1366
- this.safeNumber(ohlcv, 4),
1367
- this.safeNumber(ohlcv, 2),
1368
- this.safeNumber(ohlcv, 5),
1369
- ];
1370
- }
1371
- /**
1372
- * @method
1373
- * @name bitfinex1#fetchOHLCV
1374
- * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1375
- * @see https://docs.bitfinex.com/reference/rest-public-candles#aggregate-funding-currency-candles
1376
- * @param {string} symbol unified symbol of the market to fetch OHLCV data for
1377
- * @param {string} timeframe the length of time each candle represents
1378
- * @param {int} [since] timestamp in ms of the earliest candle to fetch
1379
- * @param {int} [limit] the maximum amount of candles to fetch
1380
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1381
- * @param {int} [params.until] timestamp in ms of the latest candle to fetch
1382
- * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
1383
- */
1384
- async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
1385
- await this.loadMarkets();
1386
- if (limit === undefined) {
1387
- limit = 100;
1388
- }
1389
- else {
1390
- limit = Math.min(limit, 10000);
1391
- }
1392
- const market = this.market(symbol);
1393
- const v2id = 't' + market['id'];
1394
- const request = {
1395
- 'symbol': v2id,
1396
- 'timeframe': this.safeString(this.timeframes, timeframe, timeframe),
1397
- 'sort': 1,
1398
- 'limit': limit,
1399
- };
1400
- const until = this.safeInteger(params, 'until');
1401
- if (since !== undefined) {
1402
- request['start'] = since;
1403
- }
1404
- else if (until !== undefined) {
1405
- const duration = this.parseTimeframe(timeframe);
1406
- request['start'] = until - ((limit - 1) * duration * 1000);
1407
- }
1408
- if (until !== undefined) {
1409
- request['end'] = until;
1410
- }
1411
- params = this.omit(params, 'until');
1412
- const response = await this.v2GetCandlesTradeTimeframeSymbolHist(this.extend(request, params));
1413
- //
1414
- // [
1415
- // [1457539800000,0.02594,0.02594,0.02594,0.02594,0.1],
1416
- // [1457547300000,0.02577,0.02577,0.02577,0.02577,0.01],
1417
- // [1457550240000,0.0255,0.0253,0.0255,0.0252,3.2640000000000002],
1418
- // ]
1419
- //
1420
- return this.parseOHLCVs(response, market, timeframe, since, limit);
1421
- }
1422
- getCurrencyName(code) {
1423
- // todo rewrite for https://api-pub.bitfinex.com//v2/conf/pub:map:tx:method
1424
- if (code in this.options['currencyNames']) {
1425
- return this.options['currencyNames'][code];
1426
- }
1427
- throw new NotSupported(this.id + ' ' + code + ' not supported for withdrawal');
1428
- }
1429
- /**
1430
- * @method
1431
- * @name bitfinex1#createDepositAddress
1432
- * @description create a currency deposit address
1433
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-deposit
1434
- * @param {string} code unified currency code of the currency for the deposit address
1435
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1436
- * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
1437
- */
1438
- async createDepositAddress(code, params = {}) {
1439
- await this.loadMarkets();
1440
- const request = {
1441
- 'renew': 1,
1442
- };
1443
- return await this.fetchDepositAddress(code, this.extend(request, params));
1444
- }
1445
- /**
1446
- * @method
1447
- * @name bitfinex1#fetchDepositAddress
1448
- * @description fetch the deposit address for a currency associated with this account
1449
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-deposit
1450
- * @param {string} code unified currency code
1451
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1452
- * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
1453
- */
1454
- async fetchDepositAddress(code, params = {}) {
1455
- await this.loadMarkets();
1456
- // todo rewrite for https://api-pub.bitfinex.com//v2/conf/pub:map:tx:method
1457
- const name = this.getCurrencyName(code);
1458
- const request = {
1459
- 'method': name,
1460
- 'wallet_name': 'exchange',
1461
- 'renew': 0, // a value of 1 will generate a new address
1462
- };
1463
- const response = await this.privatePostDepositNew(this.extend(request, params));
1464
- let address = this.safeValue(response, 'address');
1465
- let tag = undefined;
1466
- if ('address_pool' in response) {
1467
- tag = address;
1468
- address = response['address_pool'];
1469
- }
1470
- this.checkAddress(address);
1471
- return {
1472
- 'currency': code,
1473
- 'address': address,
1474
- 'tag': tag,
1475
- 'network': undefined,
1476
- 'info': response,
1477
- };
1478
- }
1479
- /**
1480
- * @method
1481
- * @name bitfinex1#fetchDepositsWithdrawals
1482
- * @description fetch history of deposits and withdrawals
1483
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-deposit-withdrawal-history
1484
- * @param {string} code unified currency code for the currency of the deposit/withdrawals
1485
- * @param {int} [since] timestamp in ms of the earliest deposit/withdrawal, default is undefined
1486
- * @param {int} [limit] max number of deposit/withdrawals to return, default is undefined
1487
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1488
- * @returns {object} a list of [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1489
- */
1490
- async fetchDepositsWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1491
- await this.loadMarkets();
1492
- let currencyId = this.safeString(params, 'currency');
1493
- const query = this.omit(params, 'currency');
1494
- let currency = undefined;
1495
- if (currencyId === undefined) {
1496
- if (code === undefined) {
1497
- throw new ArgumentsRequired(this.id + ' fetchDepositsWithdrawals() requires a currency `code` argument or a `currency` parameter');
1498
- }
1499
- else {
1500
- currency = this.currency(code);
1501
- currencyId = currency['id'];
1502
- }
1503
- }
1504
- query['currency'] = currencyId;
1505
- if (since !== undefined) {
1506
- query['since'] = this.parseToInt(since / 1000);
1507
- }
1508
- const response = await this.privatePostHistoryMovements(this.extend(query, params));
1509
- //
1510
- // [
1511
- // {
1512
- // "id": 581183,
1513
- // "txid": 123456,
1514
- // "currency": "BTC",
1515
- // "method": "BITCOIN",
1516
- // "type": "WITHDRAWAL",
1517
- // "amount": ".01",
1518
- // "description": "3QXYWgRGX2BPYBpUDBssGbeWEa5zq6snBZ, offchain transfer ",
1519
- // "address": "3QXYWgRGX2BPYBpUDBssGbeWEa5zq6snBZ",
1520
- // "status": "COMPLETED",
1521
- // "timestamp": "1443833327.0",
1522
- // "timestamp_created": "1443833327.1",
1523
- // "fee": 0.1,
1524
- // }
1525
- // ]
1526
- //
1527
- return this.parseTransactions(response, currency, since, limit);
1528
- }
1529
- parseTransaction(transaction, currency = undefined) {
1530
- //
1531
- // crypto
1532
- //
1533
- // {
1534
- // "id": 12042490,
1535
- // "fee": "-0.02",
1536
- // "txid": "EA5B5A66000B66855865EFF2494D7C8D1921FCBE996482157EBD749F2C85E13D",
1537
- // "type": "DEPOSIT",
1538
- // "amount": "2099.849999",
1539
- // "method": "RIPPLE",
1540
- // "status": "COMPLETED",
1541
- // "address": "2505189261",
1542
- // "currency": "XRP",
1543
- // "timestamp": "1551730524.0",
1544
- // "description": "EA5B5A66000B66855865EFF2494D7C8D1921FCBE996482157EBD749F2C85E13D",
1545
- // "timestamp_created": "1551730523.0"
1546
- // }
1547
- //
1548
- // fiat
1549
- //
1550
- // {
1551
- // "id": 12725095,
1552
- // "fee": "-60.0",
1553
- // "txid": null,
1554
- // "type": "WITHDRAWAL",
1555
- // "amount": "9943.0",
1556
- // "method": "WIRE",
1557
- // "status": "SENDING",
1558
- // "address": null,
1559
- // "currency": "EUR",
1560
- // "timestamp": "1561802484.0",
1561
- // "description": "Name: bob, AccountAddress: some address, Account: someaccountno, Bank: bank address, SWIFT: foo, Country: UK, Details of Payment: withdrawal name, Intermediary Bank Name: , Intermediary Bank Address: , Intermediary Bank City: , Intermediary Bank Country: , Intermediary Bank Account: , Intermediary Bank SWIFT: , Fee: -60.0",
1562
- // "timestamp_created": "1561716066.0"
1563
- // }
1564
- //
1565
- // withdraw
1566
- //
1567
- // {
1568
- // "status": "success",
1569
- // "message": "Your withdrawal request has been successfully submitted.",
1570
- // "withdrawal_id": 586829
1571
- // }
1572
- //
1573
- const timestamp = this.safeTimestamp(transaction, 'timestamp_created');
1574
- const currencyId = this.safeString(transaction, 'currency');
1575
- const code = this.safeCurrencyCode(currencyId, currency);
1576
- let feeCost = this.safeString(transaction, 'fee');
1577
- if (feeCost !== undefined) {
1578
- feeCost = Precise.stringAbs(feeCost);
1579
- }
1580
- return {
1581
- 'info': transaction,
1582
- 'id': this.safeString2(transaction, 'id', 'withdrawal_id'),
1583
- 'txid': this.safeString(transaction, 'txid'),
1584
- 'type': this.safeStringLower(transaction, 'type'),
1585
- 'currency': code,
1586
- 'network': undefined,
1587
- 'amount': this.safeNumber(transaction, 'amount'),
1588
- 'status': this.parseTransactionStatus(this.safeString(transaction, 'status')),
1589
- 'timestamp': timestamp,
1590
- 'datetime': this.iso8601(timestamp),
1591
- 'address': this.safeString(transaction, 'address'),
1592
- 'addressFrom': undefined,
1593
- 'addressTo': undefined,
1594
- 'tag': this.safeString(transaction, 'description'),
1595
- 'tagFrom': undefined,
1596
- 'tagTo': undefined,
1597
- 'updated': this.safeTimestamp(transaction, 'timestamp'),
1598
- 'comment': undefined,
1599
- 'internal': undefined,
1600
- 'fee': {
1601
- 'currency': code,
1602
- 'cost': this.parseNumber(feeCost),
1603
- 'rate': undefined,
1604
- },
1605
- };
1606
- }
1607
- parseTransactionStatus(status) {
1608
- const statuses = {
1609
- 'SENDING': 'pending',
1610
- 'CANCELED': 'canceled',
1611
- 'ZEROCONFIRMED': 'failed',
1612
- 'COMPLETED': 'ok',
1613
- };
1614
- return this.safeString(statuses, status, status);
1615
- }
1616
- /**
1617
- * @method
1618
- * @name bitfinex1#withdraw
1619
- * @description make a withdrawal
1620
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-withdrawal
1621
- * @param {string} code unified currency code
1622
- * @param {float} amount the amount to withdraw
1623
- * @param {string} address the address to withdraw to
1624
- * @param {string} tag
1625
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1626
- * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1627
- */
1628
- async withdraw(code, amount, address, tag = undefined, params = {}) {
1629
- [tag, params] = this.handleWithdrawTagAndParams(tag, params);
1630
- this.checkAddress(address);
1631
- await this.loadMarkets();
1632
- // todo rewrite for https://api-pub.bitfinex.com//v2/conf/pub:map:tx:method
1633
- const name = this.getCurrencyName(code);
1634
- const currency = this.currency(code);
1635
- const request = {
1636
- 'withdraw_type': name,
1637
- 'walletselected': 'exchange',
1638
- 'amount': this.numberToString(amount),
1639
- 'address': address,
1640
- };
1641
- if (tag !== undefined) {
1642
- request['payment_id'] = tag;
1643
- }
1644
- const responses = await this.privatePostWithdraw(this.extend(request, params));
1645
- //
1646
- // [
1647
- // {
1648
- // "status":"success",
1649
- // "message":"Your withdrawal request has been successfully submitted.",
1650
- // "withdrawal_id":586829
1651
- // }
1652
- // ]
1653
- //
1654
- const response = this.safeDict(responses, 0, {});
1655
- const id = this.safeInteger(response, 'withdrawal_id');
1656
- const message = this.safeString(response, 'message');
1657
- const errorMessage = this.findBroadlyMatchedKey(this.exceptions['broad'], message);
1658
- if (id === 0) {
1659
- if (errorMessage !== undefined) {
1660
- const ExceptionClass = this.exceptions['broad'][errorMessage];
1661
- throw new ExceptionClass(this.id + ' ' + message);
1662
- }
1663
- throw new ExchangeError(this.id + ' withdraw returned an id of zero: ' + this.json(response));
1664
- }
1665
- return this.parseTransaction(response, currency);
1666
- }
1667
- /**
1668
- * @method
1669
- * @name bitfinex1#fetchPositions
1670
- * @description fetch all open positions
1671
- * @see https://docs.bitfinex.com/v1/reference/rest-auth-active-positions
1672
- * @param {string[]|undefined} symbols list of unified market symbols
1673
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1674
- * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
1675
- */
1676
- async fetchPositions(symbols = undefined, params = {}) {
1677
- await this.loadMarkets();
1678
- const response = await this.privatePostPositions(params);
1679
- //
1680
- // [
1681
- // {
1682
- // "id":943715,
1683
- // "symbol":"btcusd",
1684
- // "status":"ACTIVE",
1685
- // "base":"246.94",
1686
- // "amount":"1.0",
1687
- // "timestamp":"1444141857.0",
1688
- // "swap":"0.0",
1689
- // "pl":"-2.22042"
1690
- // }
1691
- // ]
1692
- //
1693
- // todo unify parsePosition/parsePositions
1694
- return response;
1695
- }
1696
- nonce() {
1697
- return this.microseconds();
1698
- }
1699
- sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
1700
- let request = '/' + this.implodeParams(path, params);
1701
- if (api === 'v2') {
1702
- request = '/' + api + request;
1703
- }
1704
- else {
1705
- request = '/' + this.version + request;
1706
- }
1707
- let query = this.omit(params, this.extractParams(path));
1708
- let url = this.urls['api'][api] + request;
1709
- if ((api === 'public') || (path.indexOf('/hist') >= 0)) {
1710
- if (Object.keys(query).length) {
1711
- const suffix = '?' + this.urlencode(query);
1712
- url += suffix;
1713
- request += suffix;
1714
- }
1715
- }
1716
- if (api === 'private') {
1717
- this.checkRequiredCredentials();
1718
- const nonce = this.nonce();
1719
- query = this.extend({
1720
- 'nonce': nonce.toString(),
1721
- 'request': request,
1722
- }, query);
1723
- body = this.json(query);
1724
- const payload = this.stringToBase64(body);
1725
- const secret = this.encode(this.secret);
1726
- const signature = this.hmac(this.encode(payload), secret, sha384);
1727
- headers = {
1728
- 'X-BFX-APIKEY': this.apiKey,
1729
- 'X-BFX-PAYLOAD': payload,
1730
- 'X-BFX-SIGNATURE': signature,
1731
- 'Content-Type': 'application/json',
1732
- };
1733
- }
1734
- return { 'url': url, 'method': method, 'body': body, 'headers': headers };
1735
- }
1736
- handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
1737
- if (response === undefined) {
1738
- return undefined;
1739
- }
1740
- let throwError = false;
1741
- if (code >= 400) {
1742
- if (body[0] === '{') {
1743
- throwError = true;
1744
- }
1745
- }
1746
- else {
1747
- // json response with error, i.e:
1748
- // [{"status":"error","message":"Momentary balance check. Please wait few seconds and try the transfer again."}]
1749
- const responseObject = this.safeDict(response, 0, {});
1750
- const status = this.safeString(responseObject, 'status', '');
1751
- if (status === 'error') {
1752
- throwError = true;
1753
- }
1754
- }
1755
- if (throwError) {
1756
- const feedback = this.id + ' ' + body;
1757
- const message = this.safeString2(response, 'message', 'error');
1758
- this.throwExactlyMatchedException(this.exceptions['exact'], message, feedback);
1759
- this.throwBroadlyMatchedException(this.exceptions['broad'], message, feedback);
1760
- throw new ExchangeError(feedback); // unknown message
1761
- }
1762
- return undefined;
1763
- }
1764
- }